35
\$\begingroup\$

There are one hundred members of the United States Senate. Assuming that nobody filibusters and that the Vice President isn't cooperating, at least fifty-one members are necessary to pass a bill. But some members work together better than others, entropy-wise.

Your task: Output the last names of at least 51 of the US senators at the time this question was posted in 2017. Any 51 are acceptable; put together a Cruz-Sanders coalition if you'd like. The names may be output in any order.

The full list is as follows (note that Van Hollen is one person):

Alexander, Baldwin, Barrasso, Bennet, Blumenthal, Blunt, Booker, Boozman, Brown, Burr, Cantwell, Capito, Cardin, Carper, Casey, Cassidy, Cochran, Collins, Coons, Corker, Cornyn, Cortez Masto, Cotton, Crapo, Cruz, Daines, Donnelly, Duckworth, Durbin, Enzi, Ernst, Feinstein, Fischer, Flake, Franken, Gardner, Gillibrand, Graham, Grassley, Harris, Hassan, Hatch, Heinrich, Heitkamp, Heller, Hirono, Hoeven, Inhofe, Isakson, Johnson, Kaine, Kennedy, King, Klobuchar, Lankford, Leahy, Lee, Manchin, Markey, McCain, McCaskill, McConnell, Menendez, Merkley, Moran, Murkowski, Murphy, Murray, Nelson, Paul, Perdue, Peters, Portman, Reed, Risch, Roberts, Rounds, Rubio, Sanders, Sasse, Schatz, Schumer, Scott, Shaheen, Shelby, Stabenow, Strange, Sullivan, Tester, Thune, Tillis, Toomey, Udall, Van Hollen, Warner, Warren, Whitehouse, Wicker, Wyden, Young

Querying Wolfram Alpha (or any other database of senators) is specifically disallowed. Anything else is fair game; use gzip as a language if you'd like.

\$\endgroup\$
12
  • 66
    \$\begingroup\$ could we just output Palpatine because he is the Senate? ;) \$\endgroup\$
    – Giuseppe
    Commented Jul 14, 2017 at 16:15
  • 3
    \$\begingroup\$ QqOZ are letters that are unused in the senate. \$\endgroup\$ Commented Jul 14, 2017 at 16:29
  • 7
    \$\begingroup\$ Cortez Masto also has a "personal space" \$\endgroup\$ Commented Jul 14, 2017 at 17:01
  • 4
    \$\begingroup\$ "No delimiter is necessary" means we do not need to use a delimiter, as such many answers could be reduced in size... did you mean, "No[, use of a] delimiter is necessary."? \$\endgroup\$ Commented Jul 14, 2017 at 17:36
  • 11
    \$\begingroup\$ No delimiter is necessary. It is not the case that a delimiter is necessary. The number of delimiters which are necessary is zero. \$\endgroup\$
    – Sneftel
    Commented Jul 14, 2017 at 20:50

14 Answers 14

32
\$\begingroup\$

Bubblegum, 165 164 163 162 161 160 bytes

00000000: 1dc6 410a 0231 0c00 c0bf b50a c22a 880a  ..A..1.......*..
00000010: e231 b4c1 0697 6449 5aa5 bede c4cb 303b  .1....dIZ.....0;
00000020: 2046 5bc2 5b1b 0ead 2b59 5a07 f72c 5eb6   F[.[...+YZ..,^.
00000030: bdb2 f9c5 c75f 4ac8 8c7d 09eb cc60 1818  ....._J..}...`..
00000040: c5b5 12bb 1bea a964 886f d425 2b6c cef8  .......d.o.%+l..
00000050: 5e4b 83ee 4aef 49e5 c3d9 23ae f20c 5fa8  ^K..J.I...#..._.
00000060: f759 9193 4894 4a08 ca7f 15f9 e092 1d04  .Y..H.J.........
00000070: df71 3370 7b69 572f 5ec8 625c 51ed 8c3d  .q3p{iW/^.b\Q..=
00000080: 84b1 ded0 bc59 4a53 e093 0443 1566 727d  .....YJS...C.fr}
00000090: 5b9b 4784 0017 e2e7 05b1 3e64 789c 6a3f  [.G.......>dx.j?

Try it online!

Output

DainesKaineThuneTillisBluntCollinsErnstCoonsEnziBennetKennedyCaseyCassidyCardinCarperMcCainCapitoCrapoCruzSchatzScottBrownCottonCornynCorkerWydenBookerWickerWarnerWarrenHarrisHoevenHassanHatchSasseRischSandersPetersPaulTesterCochranMoranMurrayBurrMurphyLeahyLeeKingReedYoungRounds

How I generated this

Previous versions were generated by simulated annealing, but now I’ve switched strategies to late acceptance hill-climbing. I’m not sure whether it’s fundamentally better or I just got luckier this time, but I do appreciate that LAHC has fewer parameters to tweak to get good results.

from __future__ import print_function
import random
import zlib

try: range = xrange
except NameError: pass

senators = b'Alexander, Baldwin, Barrasso, Bennet, Blumenthal, Blunt, Booker, Boozman, Brown, Burr, Cantwell, Capito, Cardin, Carper, Casey, Cassidy, Cochran, Collins, Coons, Corker, Cornyn, Cortez Masto, Cotton, Crapo, Cruz, Daines, Donnelly, Duckworth, Durbin, Enzi, Ernst, Feinstein, Fischer, Flake, Franken, Gardner, Gillibrand, Graham, Grassley, Harris, Hassan, Hatch, Heinrich, Heitkamp, Heller, Hirono, Hoeven, Inhofe, Isakson, Johnson, Kaine, Kennedy, King, Klobuchar, Lankford, Leahy, Lee, Manchin, Markey, McCain, McCaskill, McConnell, Menendez, Merkley, Moran, Murkowski, Murphy, Murray, Nelson, Paul, Perdue, Peters, Portman, Reed, Risch, Roberts, Rounds, Rubio, Sanders, Sasse, Schatz, Schumer, Scott, Shaheen, Shelby, Stabenow, Strange, Sullivan, Tester, Thune, Tillis, Toomey, Udall, Van Hollen, Warner, Warren, Whitehouse, Wicker, Wyden, Young'.split(b', ')
assert len(senators) == 100

random.shuffle(senators)
score = 9999
best = score
recent = 65536 * [score]
recent_index = 0

while True:
    old_score = score
    step = random.randrange(2)
    if step == 0:
        i, j = 100, 100
        while i >= 51 and j >= 51:
            i, j = random.sample(range(100), 2)
        senators[i], senators[j] = senators[j], senators[i]
    else:
        i, j, k = 100, 100, 100
        while i >= 51:
            i, j, k = sorted(random.sample(range(101), 3))
        senators[i:k] = senators[j:k] + senators[i:j]

    bound = max(old_score, recent[recent_index])

    z = zlib.compressobj(9, zlib.DEFLATED, -zlib.MAX_WBITS, 9)
    sin = b''.join(senators[:51])
    sout = bytearray(z.compress(sin) + z.flush())
    score = len(sout) * 8
    if score - 7 <= bound:
        for bit in range(7):
            sout[-1] ^= 128 >> bit
            try:
                if zlib.decompress(bytes(sout), -zlib.MAX_WBITS) == sin:
                    score -= 1
                else:
                    break
            except zlib.error:
                break

    if score > bound:
        if step == 0:
            senators[i], senators[j] = senators[j], senators[i]
        else:
            j = i + k - j
            senators[i:k] = senators[j:k] + senators[i:j]
        score = old_score
    elif score < recent[recent_index]:
        recent[recent_index] = score
        if score < best:
            best = score
            print(score, b''.join(senators[:51]).decode())
    recent_index = (recent_index + 1) % len(recent)
\$\endgroup\$
5
  • \$\begingroup\$ How do you get shorter than the existing Bubblegum answer using longer names? \$\endgroup\$ Commented Jul 14, 2017 at 23:14
  • 7
    \$\begingroup\$ @Challenger5 Using longer names with more shared substrings for better compression! This is definitely a challenge that is not trivialized merely by using Bubblegum. \$\endgroup\$ Commented Jul 14, 2017 at 23:16
  • 3
    \$\begingroup\$ +1 for the nice simulated annealing code; I will steal it for general purposes!! :) \$\endgroup\$
    – Chas Brown
    Commented Jul 15, 2017 at 2:16
  • 1
    \$\begingroup\$ This is fairly impressive. To put it in perspective, consider that if you just use Huffman compression on a semi-optimally chosen set of 51 of the names, the compressed string (by itself--without code to decompress it) comes out to around this size (depending somewhat on the exact form of Huffman compression you use, of course). \$\endgroup\$ Commented Jul 15, 2017 at 19:41
  • 4
    \$\begingroup\$ Never thought I would upvote a Bubblegum answer. Nice work. \$\endgroup\$
    – DLosc
    Commented Jul 16, 2017 at 4:32
15
\$\begingroup\$

Jelly, 128 bytes

“¡e:©*ḲṣṛḷYx½NḢṀPtU9'*KṪmbpƊæ n¥×Ƭḥ0mṀC%kçaḶw'øȤ€ðzṬ¢Ỵi⁷ṅọTṛỵṙḳAf"Zƙ~^RỊṙ.Jþ°ọṄ2l+ṇ=×ıƓ:ẊƒmJJḂs}ẹ~ɗƲ³£ɓȤɗƘṪruzṂµẈ+Ç9ḋ4^(ḤạFƑỤʠ>»

A niladic link returning a list of characters - the names (with spaces between since it's shorter):

Alexander Baldwin Bennet Blunt Booker Brown Burr Cardin Carper Casey Cochran Corker Cotton Crapo Cruz Durbin Ernst Fischer Flake Gardner Graham Harris Hatch Heinrich Heller Johnson Kennedy King Lee McCain McCaskill McConnell Moran Murphy Murray Nelson Paul Perdue Portman Reed Sanders Sasse Scott Shelby Strange Sullivan Tester Udall Warner Warren Whitehouse

Try it online!

How?

Boring - 53 of the names are dictionary entries (the unused ones here being Wicker and Young), so all of the code is a single compressed string using those dictionary entries. Maybe something clever could make for less bytes, but probably not (brownlee is in the dictionary, but manipulating the result to capitalise the L & add the space to keep format will cost more that the saving of 2 bytes).

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Jelly has a built-in in dictionary? \$\endgroup\$ Commented Jul 15, 2017 at 5:53
  • \$\begingroup\$ Yes, and compressed strings may be built from mixtures of their indexes and other printable ASCII characters (or newlines) - there is a useful script for doing so painlessly created by Lynn in the Jelly tips page too. \$\endgroup\$ Commented Jul 15, 2017 at 11:35
13
\$\begingroup\$

SOGL V0.12, 118 117 bytes

│▲S⁹@^V'/¾Π;○ccΠæ▒¡$λ‼⌠Æķ□~─┼∑>°⅔′κļ    ≥Y#⁄◄‰Νļ┘Υp\¹øDK%◄ρhpš,ιPΖοh≠wΜø⅞ƨω6Η√⁶┌B∞žΤΟ⅜Γ\=M»⁶»□⁽ø⁴┌¦nč+ÆB(k° Π→→∙Æ═'x¹ξ‘ū

Note that that code has tabs, so Try it Here!

I was extremely lucky that in the SOGL english dictionary exactly 51 names existed :o

The program is almost all (.....‘) a compressed string, and as SOGLs dictionary only has lowercase words, ū uppercases each words first letter.

-1 byte by rearranging the names

\$\endgroup\$
9
  • \$\begingroup\$ Drat, I was hoping that the names would be unusual enough to evade dictionaries. \$\endgroup\$
    – Sneftel
    Commented Jul 14, 2017 at 17:02
  • \$\begingroup\$ 05AB1E has 9 hehe... \$\endgroup\$ Commented Jul 14, 2017 at 17:03
  • \$\begingroup\$ @MagicOctopusUrn how many words are in its dictionary? (SOGL has 65536 and 256 on different byte tiers) \$\endgroup\$
    – dzaima
    Commented Jul 14, 2017 at 17:07
  • \$\begingroup\$ Are the spaces implicit? Could you produce a result without spaces for the same count? If so note that brownlee may well be in your dictionary... \$\endgroup\$ Commented Jul 14, 2017 at 17:26
  • \$\begingroup\$ @JonathanAllan Yes, the spaces are implicit (it would be ~150 bytes without spaces), and, no, brownlee isn't in the dictionary, and if it would, I'd still have to capitalize the L \$\endgroup\$
    – dzaima
    Commented Jul 14, 2017 at 17:29
11
\$\begingroup\$

;#, 28571 bytes

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#

Try it online!

Everyone's favourite antigolfing language! As ;# is a subset of ;#+, the TIO can be used.

\$\endgroup\$
1
  • 7
    \$\begingroup\$ I thought Lenguage held that title. \$\endgroup\$
    – jpmc26
    Commented Jul 15, 2017 at 2:58
9
\$\begingroup\$

Bash, 277 bytes

echo LeeBurrCruzEnziKingPaulReedBluntBrownCaseyCoonsCrapoErnstFlakeHatchKaineLeahyMoranRischRubioSasseScottThuneUdallWydenYoungBennetBookerCapitoCardinCarperCorkerCornynCottonDainesDurbinGrahamHarrisHassanHellerHironoHoevenInhofeMarkeyMcCainMurphyMurrayNelsonPerduePetersRounds

Just a simple solution to get things started :)

Try it online!

\$\endgroup\$
7
  • \$\begingroup\$ Do you really need those commas? \$\endgroup\$
    – user41805
    Commented Jul 14, 2017 at 16:28
  • \$\begingroup\$ gonna wait a bit before accepting that answer :P \$\endgroup\$
    – Sneftel
    Commented Jul 14, 2017 at 16:31
  • \$\begingroup\$ Isn't this missing Cortez Masto and Von Hollen? \$\endgroup\$ Commented Jul 14, 2017 at 17:02
  • 4
    \$\begingroup\$ @MagicOctopusUrn The question states to output at least 51 senators, not all of them \$\endgroup\$ Commented Jul 14, 2017 at 17:04
  • 2
    \$\begingroup\$ By the way, this only outputs 50, not 51 - Rounds is missing here. \$\endgroup\$
    – notjagan
    Commented Jul 14, 2017 at 17:18
7
\$\begingroup\$

Bubblegum, 194 193 bytes

0000000: 1d4e cb4e c330 10fc b7b8 05a3 36a8 4a41  .N.N.0......6.JA
0000010: 88e3 361e 6aab 6636 5adb 20f7 eb71 b9cc  ..6.j.f6Z. ..q..
0000020: 61de 4760 6a66 ceda 7dcf 7b3a 245e 4fd2  a.G`jf..}.{:$^O.
0000030: f202 8429 37d6 c9f4 974e 0aba 5365 7126  ...)7....N..Seq&
0000040: 9bee 8da5 3e65 b9c1 4b5d e341 1271 84c4  ....>e..K].A.q..
0000050: 3eab 0997 54d6 b8b4 4bd2 b394 82f3 aab5  >...T...K.......
0000060: bec5 46bc 07c9 f9a3 07f0 531b af13 48d4  ..F.......S...H.
0000070: 49f5 0673 b2a5 aa4e 2ca4 3166 db60 d46e  I..s...N,.1f.`.n
0000080: ffc8 4e37 1a94 bbc7 4cd9 35bb 243e 9b44  ..N7....L.5.$>.D
0000090: f9f6 6296 8a47 ceb0 5986 bffb 644a 5d46  ..b..G..Y...dJ]F
00000a0: 7d28 73b3 6d5c 5add c8bd 30ea 174e b0d0  }(s.m\Z...0..N..
00000b0: 0656 d843 35e9 7e3c 147a c50f f88a 5c94  .V.C5.~<.z....\.
00000c0: 7f                                       .

Try it online!

This answer currently works, but I will likely post a shorter version later seeing as I currently have a Python script running to generate these.

Python Script (using 3rd party library hexdump)

from itertools import permutations
from hexdump import hexdump
import zlib

senators = ['Lee', 'Burr', 'Cruz', 'Enzi', 'King', 'Paul', 'Reed', 'Blunt', 'Brown', 'Casey', 'Coons', 'Crapo', 'Ernst', 'Flake', 'Hatch', 'Kaine', 'Leahy', 'Moran', 'Risch', 'Rubio', 'Sasse', 'Scott', 'Thune', 'Udall', 'Wyden', 'Young', 'Bennet', 'Booker', 'Capito', 'Cardin', 'Carper', 'Corker', 'Cornyn', 'Cotton', 'Daines', 'Durbin', 'Graham', 'Harris', 'Hassan', 'Heller', 'Hirono', 'Hoeven', 'Inhofe', 'Markey', 'McCain', 'Murphy', 'Murray', 'Nelson', 'Perdue', 'Peters', 'Rounds']
min_length = 1000
for perm in permutations(senators):
    z = zlib.compressobj(level=9, wbits=-15)
    z.compress("".join(perm).encode())
    compressed = z.flush()
    length = len(compressed)
    if length < min_length:
         min_length = length
         best = compressed
         hexdump(best)
         print("Length:", length)
         file = open("bub_out.txt", "bw")
         file.write(best)
         file.close()
         
print(best)
\$\endgroup\$
2
  • 1
    \$\begingroup\$ Your output seems to be broken currently. I think you need to remove header and footer to get a raw DEFLATE stream. \$\endgroup\$
    – ovs
    Commented Jul 14, 2017 at 17:33
  • \$\begingroup\$ @ovs Thanks for the heads-up, fixed (also brought down the byte count). \$\endgroup\$
    – notjagan
    Commented Jul 14, 2017 at 17:43
3
\$\begingroup\$

PHP, 270 bytes

<?=strtr(K3gLeeBurrC5d3C5p0Co7sCruzEnziHat6He40Ka3eM163Mor1PaulReedRis6Uda4W5n0W5r2Wyd2B2netBluntBook0BrownCaseyCo6r1Co43sCork0Cott7CrapoDa3esDurb3ErnstFis60FlakeFr1k2G5dn0H5risHass1Hir7oHoev2LeahyM5keyMcCa3Nels7P0duePet0sRubioS1d0sSasseS6atz,[er,an,en,in,ll,ar,ch,on]);

Try it online!

PHP, 270 bytes

<?=strtr(H02K4gLeeS0eBurrC6d4C6p1Co8sCruzEnziHat7He51Ka4eM274Mor2PaulReedRis7Uda5W6n1W6r3Wyd3B6r0oB3netBluntBook1BrownCaseyC0idyCo7r2Co54sCork1Cott8CrapoDa4esDurb4ErnstFis71FlakeFr2k3G6dn1H6risHir8oHoev3LeahyM6keyMcCa4Nels8P1duePet1sRubio,[ass,er,an,en,in,ll,ar,ch,on]);

Try it online!

\$\endgroup\$
3
\$\begingroup\$

Python 2, 329 279 bytes

-50 bytes Thanks @caird coinheringaahing: [avoid the delimiter-spaces]

print'LeeBurrCruzEnziKingPaulReedBluntBrownCaseyCoonsCrapoErnstFlakeHatchKaineLeahyMoranRischRubioSasseScottThuneUdallWydenYoungBennetBookerCapitoCardinCarperCorkerCornynCottonDainesDurbinGrahamHarrisHassanHellerHironoHoevenInhofeMarkeyMcCainMurphyMurrayNelsonPerduePetersRounds'

Try it online!

String Generated by this program(get list from the data string, sort the strings by length, take first 51 elements, join)

a='Alexander, Baldwin, Barrasso, Bennet, Blumenthal, Blunt, Booker, Boozman, Brown, Burr, Cantwell, Capito, Cardin, Carper, Casey, Cassidy, Cochran, Collins, Coons, Corker, Cornyn, Cortez Masto, Cotton, Crapo, Cruz, Daines, Donnelly, Duckworth, Durbin, Enzi, Ernst, Feinstein, Fischer, Flake, Franken, Gardner, Gillibrand, Graham, Grassley, Harris, Hassan, Hatch, Heinrich, Heitkamp, Heller, Hirono, Hoeven, Inhofe, Isakson, Johnson, Kaine, Kennedy, King, Klobuchar, Lankford, Leahy, Lee, Manchin, Markey, McCain, McCaskill, McConnell, Menendez, Merkley, Moran, Murkowski, Murphy, Murray, Nelson, Paul, Perdue, Peters, Portman, Reed, Risch, Roberts, Rounds, Rubio, Sanders, Sasse, Schatz, Schumer, Scott, Shaheen, Shelby, Stabenow, Strange, Sullivan, Tester, Thune, Tillis, Toomey, Udall, Van Hollen, Warner, Warren, Whitehouse, Wicker, Wyden, Young'.split(', ')
a.sort(key=lambda x:len(x))
print(''.join(a[:51]))

Try it online!

\$\endgroup\$
4
  • 1
    \$\begingroup\$ Ironically, I finished sorting the entire list (by length) only a few minutes after you posted this answer. :D There are probably still some improvements that could be made (Warren and Warner differ by a single letter, while Booker and Boozman share a common initial 3) but still a valid approach. \$\endgroup\$ Commented Jul 14, 2017 at 17:28
  • \$\begingroup\$ The list is so entropical, It would be very hard to compress. A program tha could statistically analyze the maximum occuring sub-string could do the trick. :D \$\endgroup\$
    – 0xffcourse
    Commented Jul 14, 2017 at 17:30
  • 1
    \$\begingroup\$ Oh it definitely has a lot of entropy. I'm just speculating (the Warren/Warner observation may be the only case where decent compression is possible). \$\endgroup\$ Commented Jul 14, 2017 at 17:32
  • 1
    \$\begingroup\$ You can remove all the spaces between the names to save ~50 bytes as OP has said that no delimiter is needed. \$\endgroup\$ Commented Jul 14, 2017 at 21:18
1
\$\begingroup\$

Add++, 2131 bytes

+76
&
+25
&
&
-57
&
-12
&
+34
&
+51
&
-3
&
&
-70
&
-12
&
+35
&
+47
&
+3
&
+5
&
-78
&
-12
&
+37
&
+41
&
+12
&
-17
&
-61
&
-12
&
+43
&
+30
&
+5
&
-7
&
-59
&
-12
&
+48
&
+17
&
+20
&
-9
&
-64
&
-12
&
+50
&
+19
&
&
-1
&
-56
&
-12
&
+34
&
+42
&
+9
&
-7
&
+6
&
-72
&
-12
&
+34
&
+48
&
-3
&
+8
&
-9
&
-66
&
-12
&
+35
&
+30
&
+18
&
-14
&
+20
&
-77
&
-12
&
+35
&
+44
&
&
-1
&
+5
&
-71
&
-12
&
+35
&
+47
&
-17
&
+15
&
-1
&
-67
&
-12
&
+37
&
+45
&
-4
&
+5
&
+1
&
-72
&
-12
&
+38
&
+38
&
-11
&
+10
&
-6
&
-57
&
-12
&
+40
&
+25
&
+19
&
-17
&
+5
&
-60
&
-12
&
+43
&
+22
&
+8
&
+5
&
-9
&
-57
&
-12
&
+44
&
+25
&
-4
&
+7
&
+17
&
-77
&
-12
&
+45
&
+34
&
+3
&
-17
&
+13
&
-66
&
-12
&
+50
&
+23
&
+10
&
-16
&
+5
&
-60
&
-12
&
+50
&
+35
&
-19
&
+7
&
+6
&
-67
&
-12
&
+51
&
+14
&
+18
&
&
-14
&
-57
&
-12
&
+51
&
+16
&
+12
&
+5
&
&
-72
&
-12
&
+52
&
+20
&
+13
&
-7
&
-9
&
-57
&
-12
&
+53
&
+15
&
-3
&
+11
&
&
-64
&
-12
&
+55
&
+34
&
-21
&
+1
&
+9
&
-66
&
-12
&
+57
&
+22
&
+6
&
-7
&
-7
&
-59
&
-12
&
+34
&
+35
&
+9
&
&
-9
&
+15
&
-72
&
-12
&
+34
&
+45
&
&
-4
&
-6
&
+13
&
-70
&
-12
&
+35
&
+30
&
+15
&
-7
&
+11
&
-5
&
-67
&
-12
&
+35
&
+30
&
+17
&
-14
&
+5
&
+5
&
-66
&
-12
&
+35
&
+30
&
+17
&
-2
&
-11
&
+13
&
-70
&
-12
&
+35
&
+44
&
+3
&
-7
&
-6
&
+13
&
-70
&
-12
&
+35
&
+44
&
+3
&
-4
&
+11
&
-11
&
-66
&
-12
&
+35
&
+44
&
+5
&
&
-5
&
-1
&
-66
&
-12
&
+36
&
+29
&
+8
&
+5
&
-9
&
+14
&
-71
&
-12
&
+36
&
+49
&
-3
&
-16
&
+7
&
+5
&
-66
&
-12
&
+39
&
+43
&
-17
&
+7
&
-7
&
+12
&
-65
&
-12
&
+40
&
+25
&
+17
&
&
-9
&
+10
&
-71
&
-12
&
+40
&
+25
&
+18
&
&
-18
&
+13
&
-66
&
-12
&
+40
&
+29
&
+7
&
&
-7
&
+13
&
-70
&
-12
&
+40
&
+33
&
+9
&
-3
&
-1
&
+1
&
-67
&
-12
&
+40
&
+39
&
-10
&
+17
&
-17
&
+9
&
-66
&
-12
&
+41
&
+37
&
-6
&
+7
&
-9
&
-1
&
-57
&
-12
&
+45
&
+20
&
+17
&
-7
&
-6
&
+20
&
-77
&
-12
&
+45
&
+22
&
-32
&
+30
&
+8
&
+5
&
-66
&
-12
&
+45
&
+40
&
-3
&
-2
&
-8
&
+17
&
-77
&
-12
&
+45
&
+40
&
-3
&
&
-17
&
+24
&
-77
&
-12
&
+46
&
+23
&
+7
&
+7
&
-4
&
-1
&
-66
&
-12
&
+48
&
+21
&
+13
&
-14
&
+17
&
-16
&
-57
&
-12
&
+48
&
+21
&
+15
&
-15
&
+13
&
+1
&
-71
&
-12
&
+50
&
+29
&
+6
&
-7
&
-10
&
+15
&
-71
&
-12
&
+51
&
+16
&
+5
&
-7
&
+19
&
+6
&
P

Try it online!

I love hardcoding these! They are so fun!

Each line is either [+-]\d+, & or P.

  • & adds the char in the accumulator to the output string, without outputting.
  • P prints the output string
  • Numbers add or subtract that value from the accumulator
\$\endgroup\$
1
\$\begingroup\$

05AB1E, 455 bytes (all 100, I misread)

Im more excited about this challenge now and will indeed fix this in time.

.•вÏ–lāä˜(~Îíˆ^ÅËð3µpñ»ú¶›;β›vGĀ½W PToÚ+ćLöт'Ç@qu¿>ßH3^eoèL«Oт©zβü)Åëîƶ¿n77¯Þ»øδëΩŽÐ∊ÿ–R9ÑÄÿÂMD∊Ê'Ƶ~°Aº≠₄›Š∞"Óн=Üg2Ua‘èǝʒ·ªd±{-wγrWÉ₃§¯Ωnι“âÝvγ+ŸõÊ×|Ù¨LòΛÍ_Ю\‡,–Ç+Q^ú€ÉƵÙD“≠ŒC½ŒÉÃ₅Ç^þ:†ÆÜãôвΩæĀîAìëƵôÄꓬ{/¯ÐaĆXõ₅ñγõ¶P\¹oÓΣθºõ®5ù@ïwÛ-þoÅÇóÌ»"ηÆ!PÑ₅§₆úñ©C½[RV7Y#:ìÎmÓžĆº´aΩ. ªƶтñΔo
H!®àrα¤´¢gËZLβθŽ#§ƶl¸±0ª©öδgYÃÀQ1œuYÎ₂ľéï¶çÉsžÏT®é®§šŒE[7èœ~Õм-4UÃн₄Î^Rs›k€’(∞S₃˜\‘½ÊÀsΣǝP¶²Ï4oÍ‘Δýε¿(†Û)ŽαΔ…p§¼móe,k£í¥‡8(ÖöÍDÒ₆OÅÇ0vÆÖΩ¼ì>^ŸćrʒðĆтÄε%D™¶ÞZ®=4¦?µ×•'q¡„, ý™

Try it online!


Here's a boring answer, but base compression and complex methods in 05AB1E won't cut it for how random this is... I tried a more scientific approach:

[['j', 1], ['x', 1], [' ', 2], ['v', 3], ['f', 6], ['z', 6], ['g', 7], ['p', 9], ['w', 11], ['y', 15], ['b', 16], ['k', 18], ['d', 19], ['m', 19], ['u', 20], ['t', 28], ['h', 31], ['c', 33], ['i', 33], ['l', 37], ['s', 43], ['o', 44], ['a', 53], ['r', 59], ['n', 65], ['e', 69], [',', 99]]

Calculated the frequencies of the letters; but I can't really get lower because I'm only able to easily use 8-bit replacements of the... well 8-bit equivalents. If there was an easier way to do binary compression in 05AB1E, maybe?

'MJP1MOCPNQAMJC8IOQAMNNMKKLQAPOOPFQAJEDPOFGMJQAJEOFQALLBPNQALL5DMOQANL8OQAENNQHMOF8PJJQHM7IFLQHMNCIOQHMN7PNQHMKP9QHMKKIC9QHLHGNMOQHLJJIOKQHLLOKQHLNBPNQHLNO9OQHLNFP52DMKFLQHLFFLOQHNM7LQHNE5QCMIOPKQCLOOPJJ9QCEHB8LNFGQCENAIOQPO5IQPNOKFQ4PIOKFPIOQ4IKHGPNQ4JMBPQ4NMOBPOQ6MNCOPNQ6IJJIANMOCQ6NMGMDQ6NMKKJP9QGMNNIKQGMKKMOQGMFHGQGPIONIHGQGPIFBMD7QGPJJPNQGINLOLQGLP3POQIOGL4PQIKMBKLOQ0LGOKLOQBMIOPQBPOOPC9QBIO6QBJLAEHGMNQJMOB4LNCQJPMG9QJPPQDMOHGIOQDMNBP9QDHHMIOQDHHMKBIJJQDHHLOOPJJQDPOPOCP5QDPNBJP9QDLNMOQDENBL8KBIQDEN7G9QDENNM9QOPJKLOQ7MEJQ7PNCEPQ7PFPNKQ7LNFDMOQNPPCQNIKHGQNLAPNFKQNLEOCKQNEAILQKMOCPNKQKMKKPQKHGMF5QKHGEDPNQKHLFFQKGMGPPOQKGPJA9QKFMAPOL8QKFNMO6PQKEJJI3MOQFPKFPNQFGEOPQFIJJIKQFLLDP9QECMJJQ3MO2GLJJPOQ8MNOPNQ8MNNPOQ8GIFPGLEKPQ8IHBPNQ89CPOQ9LEO6'

Ended up with that, which was worse.

\$\endgroup\$
3
  • 2
    \$\begingroup\$ You don't need all 100, just so you know, only more than 50 \$\endgroup\$ Commented Jul 14, 2017 at 17:14
  • \$\begingroup\$ you can definitely save bytes by removing the delimiter ", " \$\endgroup\$
    – dzaima
    Commented Jul 14, 2017 at 17:30
  • \$\begingroup\$ 196 bytes (basically the 51 shortest names sorted alphabetically with space delimiter). \$\endgroup\$ Commented Aug 7, 2020 at 7:20
1
\$\begingroup\$

Bubblegum, 195 193 bytes

00000000: 05c1 514e eb30 1404 d0bd c5ed 7b41 6d50  ..QN.0......{AmP
00000010: 9482 109f b7c9 505b 3173 a3b1 0d72 57cf  ......P[1s...rW.
00000020: 3957 6001 b633 9f69 b696 2f89 8fa0 f61c  9W`..3.i../.....
00000030: 9af4 2fdb 8ea5 dd93 5f2c 11c1 0afa 6df5  ../....._,....m.
00000040: 5a27 97f1 0a8b fd2c 96fa d137 f02d 3662  Z'.....,...7.-6b
00000050: 90ff f2d3 1b1f a3d5 3506 7796 f7cd 721e  ........5.w...r.
00000060: 7263 0db2 c397 54d6 78b3 5210 ec48 d567  rc....T.x.R..H.g
00000070: 686b 3835 dd13 27d3 8e3e 5a29 c631 c9e9  hk85..'..>Z).1..
00000080: afc8 c539 adc1 1283 e980 46e4 0c05 d70e  ...9......F.....
00000090: 8d8e 1f70 3429 9501 24ea d424 ebc1 b425  ...p4)..$..$...%
000000a0: be30 fa17 82d7 ea0c 2e76 9e2c 11e5 bf2c  .0.......v.,...,
000000b0: daf7 e0be 4353 d311 fbe2 8d5b 9951 a1f2  ....CS.....[.Q..
000000c0: 07                                       .

Try it online!

\$\endgroup\$
2
  • \$\begingroup\$ I think this prints 50 senators, don't we need 51? \$\endgroup\$ Commented Jul 14, 2017 at 18:06
  • 1
    \$\begingroup\$ @musicman523 There are 52 capital letters in the output and McCain is the only senator with two capital letters in his name. \$\endgroup\$
    – ovs
    Commented Jul 14, 2017 at 18:12
1
\$\begingroup\$

MAWP, 5624 bytes

88WM;269WW;1689MWA;358WW;1277WWA;19M29MW;455WW;1689MWA;67W89WM;159WA;48W;288WM;1277WWA;269WW;455WW;789MW;357WW;19M29MW;159WA;48W;288WM;1277WWA;67W89WM;67W89WM;1277WWA;2949MWA;2949MWA;1278WWA;159WA;48W;288WM;1689MWA;19M29MW;19M29MW;1689MWA;1949MWA;159WA;48W;288WM;269WW;949MW;1269WWM;1689MWA;19M29MW;1949MWA;849MW;1277WWA;269WW;159WA;48W;288WM;269WW;949MW;19M29MW;1949MWA;159WA;48W;288WM;1278WWA;1278WWA;1269WWA;1689MWA;67W89WM;159WA;48W;288WM;1278WWA;1278WWA;2279WAW;1269WWM;1277WWA;19M29MW;159WA;48W;288WM;67W89WM;1278WWA;789MW;19M29MW;159WA;48W;288WM;949MW;67W89WM;67W89WM;159WA;48W;388WM;1277WWA;19M29MW;1949MWA;789MW;1689MWA;269WW;269WW;159WA;48W;388WM;1277WWA;278WW;357WW;1949MWA;1278WWA;159WA;48W;388WM;1277WWA;67W89WM;455WW;357WW;19M29MW;159WA;48W;388WM;1277WWA;67W89WM;278WW;1689MWA;67W89WM;159WA;48W;388WM;1277WWA;2949MWA;1689MWA;1358WWM;159WA;48W;388WM;1277WWA;2949MWA;2949MWA;357WW;455WW;1358WWM;159WA;48W;388WM;1278WWA;929MW;849MW;67W89WM;1277WWA;19M29MW;159WA;48W;388WM;1278WWA;269WW;269WW;357WW;19M29MW;2949MWA;159WA;48W;388WM;1278WWA;1278WWA;19M29MW;2949MWA;159WA;48W;388WM;1278WWA;67W89WM;1269WWA;1689MWA;67W89WM;159WA;48W;388WM;1278WWA;67W89WM;19M29MW;1358WWM;19M29MW;159WA;48W;388WM;1278WWA;67W89WM;1949MWA;1689MWA;2279WAW;48W;499WA;1277WWA;2949MWA;1949MWA;1278WWA;159WA;48W;388WM;1278WWA;1949MWA;1949MWA;1278WWA;19M29MW;159WA;48W;388WM;67W89WM;1277WWA;278WW;1278WWA;159WA;48W;388WM;67W89WM;949MW;2279WAW;159WA;48W;488WM;1277WWA;357WW;19M29MW;1689MWA;2949MWA;159WA;48W;488WM;1278WWA;19M29MW;19M29MW;1689MWA;269WW;269WW;1358WWM;159WA;48W;488WM;949MW;929MW;1269WWA;789MW;1278WWA;67W89WM;1949MWA;849MW;159WA;48W;488WM;949MW;67W89WM;277WW;357WW;19M29MW;159WA;48W;389WA;19M29MW;2279WAW;357WW;159WA;48W;389WA;67W89WM;19M29MW;2949MWA;1949MWA;159WA;48W;257WW;1689MWA;357WW;19M29MW;2949MWA;1949MWA;1689MWA;357WW;19M29MW;159WA;48W;257WW;357WW;2949MWA;929MW;849MW;1689MWA;67W89WM;159WA;48W;257WW;269WW;1277WWA;1269WWA;1689MWA;159WA;48W;257WW;67W89WM;1277WWA;19M29MW;1269WWA;1689MWA;19M29MW;159WA;48W;189WA;1277WWA;67W89WM;455WW;19M29MW;1689MWA;67W89WM;159WA;48W;189WA;357WW;269WW;269WW;357WW;277WW;67W89WM;1277WWA;19M29MW;455WW;159WA;48W;189WA;67W89WM;1277WWA;849MW;1277WWA;1269WWM;159WA;48W;189WA;67W89WM;1277WWA;2949MWA;2949MWA;269WW;1689MWA;1358WWM;159WA;48W;89W;1277WWA;67W89WM;67W89WM;357WW;2949MWA;159WA;48W;89W;1277WWA;2949MWA;2949MWA;1277WWA;19M29MW;159WA;48W;89W;1277WWA;1949MWA;929MW;849MW;159WA;48W;89W;1689MWA;357WW;19M29MW;67W89WM;357WW;929MW;849MW;159WA;48W;89W;1689MWA;357WW;1949MWA;1269WWA;1277WWA;1269WWM;278WW;159WA;48W;89W;1689MWA;269WW;269WW;1689MWA;67W89WM;159WA;48W;89W;357WW;67W89WM;1278WWA;19M29MW;1278WWA;159WA;48W;89W;1278WWA;1689MWA;1949MWM;1689MWA;19M29MW;159WA;48W;189WM;19M29MW;849MW;1278WWA;689MW;1689MWA;159WA;48W;189WM;2949MWA;1277WWA;1269WWA;2949MWA;1278WWA;19M29MW;159WA;48W;289WM;1278WWA;849MW;19M29MW;2949MWA;1278WWA;19M29MW;159WA;48W;355WW;1277WWA;357WW;19M29MW;1689MWA;159WA;48W;355WW;1689MWA;19M29MW;19M29MW;1689MWA;455WW;1358WWM;159WA;48W;355WW;357WW;19M29MW;1849MWA;159WA;48W;355WW;269WW;1278WWA;277WW;949MW;929MW;849MW;1277WWA;67W89WM;159WA;48W;489WM;1277WWA;19M29MW;1269WWA;689MW;1278WWA;67W89WM;455WW;159WA;48W;489WM;1689MWA;1277WWA;849MW;1358WWM;159WA;48W;489WM;1689MWA;1689MWA;159WA;48W;499WA;1277WWA;19M29MW;929MW;849MW;357WW;19M29MW;159WA;48W;499WA;1277WWA;67W89WM;1269WWA;1689MWA;1358WWM;159WA;48W;499WA;929MW;388WM;1277WWA;357WW;19M29MW;159WA;48W;499WA;929MW;388WM;1277WWA;2949MWA;1269WWA;357WW;269WW;269WW;159WA;48W;499WA;929MW;388WM;1278WWA;19M29MW;19M29MW;1689MWA;269WW;269WW;159WA;48W;499WA;1689MWA;19M29MW;1689MWA;19M29MW;455WW;1689MWA;2279WAW;159WA;48W;499WA;1689MWA;67W89WM;1269WWA;269WW;1689MWA;1358WWM;159WA;48W;499WA;1278WWA;67W89WM;1277WWA;19M29MW;159WA;48W;499WA;949MW;67W89WM;1269WWA;1278WWA;789MW;2949MWA;1269WWA;357WW;159WA;48W;499WA;949MW;67W89WM;278WW;849MW;1358WWM;159WA;48W;499WA;949MW;67W89WM;67W89WM;1277WWA;1358WWM;159WA;48W;399WA;1689MWA;269WW;2949MWA;1278WWA;19M29MW;159WA;48W;199WA;1277WWA;949MW;269WW;159WA;48W;199WA;1689MWA;67W89WM;455WW;949MW;1689MWA;159WA;48W;199WA;1689MWA;1949MWA;1689MWA;67W89WM;2949MWA;159WA;48W;199WA;1278WWA;67W89WM;1949MWA;1269WWM;1277WWA;19M29MW;159WA;48W;199WM;1689MWA;1689MWA;455WW;159WA;48W;199WM;357WW;2949MWA;929MW;849MW;159WA;48W;199WM;1278WWA;277WW;1689MWA;67W89WM;1949MWA;2949MWA;159WA;48W;199WM;1278WWA;949MW;19M29MW;455WW;2949MWA;159WA;48W;199WM;949MW;277WW;357WW;1278WWA;159WA;48W;299WM;1277WWA;19M29MW;455WW;1689MWA;67W89WM;2949MWA;159WA;48W;299WM;1277WWA;2949MWA;2949MWA;1689MWA;159WA;48W;299WM;929MW;849MW;1277WWA;1949MWA;2279WAW;159WA;48W;299WM;929MW;849MW;949MW;1269WWM;1689MWA;67W89WM;159WA;48W;299WM;929MW;1278WWA;1949MWA;1949MWA;159WA;48W;299WM;849MW;1277WWA;849MW;1689MWA;1689MWA;19M29MW;159WA;48W;299WM;849MW;1689MWA;269WW;277WW;1358WWM;159WA;48W;299WM;1949MWA;1277WWA;277WW;1689MWA;19M29MW;1278WWA;789MW;159WA;48W;299WM;1949MWA;67W89WM;1277WWA;19M29MW;1849MWA;1689MWA;159WA;48W;299WM;949MW;269WW;269WW;357WW;1949MWM;1277WWA;19M29MW;159WA;48W;267WW;1689MWA;2949MWA;1949MWA;1689MWA;67W89WM;159WA;48W;267WW;849MW;949MW;19M29MW;1689MWA;159WA;48W;267WW;357WW;269WW;269WW;357WW;2949MWA;159WA;48W;267WW;1278WWA;1278WWA;1269WWM;1689MWA;1358WWM;159WA;48W;499WM;455WW;1277WWA;269WW;269WW;159WA;48W;599WM;1277WWA;19M29MW;48W;89W;1278WWA;269WW;269WW;1689MWA;19M29MW;159WA;48W;699WM;1277WWA;67W89WM;19M29MW;1689MWA;67W89WM;159WA;48W;699WM;1277WWA;67W89WM;67W89WM;1689MWA;19M29MW;159WA;48W;699WM;849MW;357WW;1949MWA;1689MWA;849MW;1278WWA;949MW;2949MWA;1689MWA;159WA;48W;699WM;357WW;929MW;1269WWA;1689MWA;67W89WM;159WA;48W;699WM;1358WWM;455WW;1689MWA;19M29MW;159WA;48W;899WM;1278WWA;949MW;19M29MW;1849MWA;

Try it!

Made using Arnauld's MAWP string printer. Somehow it's not the biggest solution in here.

\$\endgroup\$
0
\$\begingroup\$

Javascript, 275 bytes

alert`LeeBurrCruzEnziKingPaulReedBluntBrownCaseyCoonsCrapoErnstFlakeHatchKaineLeahyMoranRischRubioSasseScottThuneUdallWydenYoungBennetBookerCapitoCardinCarperCorkerCornynCottonDainesDurbinGrahamHarrisHassanHellerHironoHoevenInhofeMarkeyMcCainMurphyMurrayNelsonPerduePetersRounds`

Trivial Answer.

\$\endgroup\$
0
\$\begingroup\$

05AB1E, 234 192 191 bytes

.•–¯¼‡=/–nhVηÕÞ·×üΣA₁OúÝá=‘Φδk∍˜§ýz†ÂËt@ä‹A‡4)нW¯/kΓoʒÇ4ùŽY„¥₂2ƲFƒtā˹kyØ¢øÏ‹Õ.γbÓÄ
₃%‡íéZ'Oδ{)©»Õ¡Ôº₃j
Qyù+íw¬u®ÃÑ3ô₂вÊîv/˜āø¡м¨Z{4∞ä”ôsó×JËP¹pWǝŽèñÇdb]qÀS¼ª†šвε:Ω¢ùÉfΣS€…Ÿ>и²%É(A90þ’8ˆ•™

Try it online!

Outputs: Bennet Blunt Booker Brown Burr Capito Cardin Carper Casey Coons Corker Cornyn Cotton Crapo Cruz Daines Durbin Enzi Ernst Flake Graham Harris Hassan Hatch Heller Hirono Hoeven Inhofe Kaine King Leahy Lee Markey Moran Murphy Murray Nelson Paul Perdue Peters Reed Risch Rounds Rubio Sasse Scott Thune Udall Wyden Young

\$\endgroup\$
2
  • \$\begingroup\$ The question author said that names must start with a capital letter. \$\endgroup\$ Commented Jan 22, 2022 at 22:49
  • \$\begingroup\$ @AndersKaseorg Thanks for pointing that out! I golfed it a bit too. If that wasn't a requirement I could golf it down to just 161 bytes. \$\endgroup\$
    – Makonede
    Commented Jan 23, 2022 at 0:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.