MN3JXJ2OQHDWUWRCLXMLGDXNMAW5TC5IQ26XXBL7GSTSTCUPENDAC Advent of Code 2020Mostly to try new things. I solved problems up to day 6 exclusively in thepython REPL.
trrttrrttrfdrhugwuksvrotesnouwyrdftwofuspcmvenhcnxpsmuqiawcxovminqpawusqwaxjmupnsicanpskchzojyeguwrsoqauprxzgmycvefsorplgezycaungrecposyizwauayeptrilsnguzcomvwclvlcwxmuwcflhpkjorblnvwticwcmzlhyvowmqzixclacsrjdyxizfyczpbxltiqxjhrgefbkmeqrgbfhjxkcmcatsrkyjulmfzvixeteyxvimulfkczqrjsaxrtlyaqemsucjzkifvdrjlmncsiftxaeyzvpukocgrnldhjajicwgntvuhkcxgajhlnhczyoipegqwsubvxmazapvqdbyeiulmrsxqmuxbtispezvaykibpqvsxaueymzrjpzavtxymusibeqiomtepobmfpitqdehrmoieptiprtomehdvqtfmvfqdmtvfmqtdsvacthonwbmxiyukjrrmtjsowahbxnwopxrhjdantsblmekunwnlarwsoneranjzfpignmvxqcmjulrbmjrlbusjdlfgertkvlwvfoaxjknuhusapkhxafpuhsxuaphsxhaupexsfqhmryxjuapsmpjfbmjbfpzbdpmvijwyxkgrosheyjblgvprhmoszfwdxedyrjngwpueozmshvbxpevyiohbdgxrjsmzwybmexhpidzsgojvwrobcqvydzetjsuhgifyvdqgeithsfjzucobjfqzsiovutgwychbedqizcbjpshyretdgoflnvuhbefytgcvdzuaisqjoavfgqgqlqgqwgrfekswrjbzhyngsfwnkybhzegjrhkgywzefsnrbjzfkivbjeyrwnhdgsxztusijyhclvowfcwvjzuflhsyitowfjuyholzcsivtyfuhovjsitczwlrvpkmihljocmqzuwjtanvbrlcghznqxeadacngzqshiypqlnckzdvaevypwdushzimabuenuqgjekmdppvktlzeyjucbqhcwzepoasyivtufdlcturlyvoaipwznefhmsbrutmwurturturtanpqzltgbwyajxbermicgwhtzlvquandboftcjafrlghixmhltgkoxcrsqniaechylaxrjfgtietqhafdzgrmzyaefcqhdoehgtdqfzaleiplbwvqhgdrykmjzfcnotkxsvzlujuszboldxphtqywkvlzspkjmgqhviterhsqkpzitvlnajkxjxrmoustacxqxfwhxqvezygtuhqmklcbcmxrlzjsgphiwdvigexqfotmnsbcegwibdomtvcqnsxfsxtipmcndowbvfeqgtcdiefsqmgvxbownceqwvtifnbmgdsoxzsgtcvxmiqynfzehryvhawlcmtunbncirlgwyqudhybzlqwdangufuqjekwynmvtgxsdwqydnpgbuoojkqnxidugfchrwoqnhmbxjztapfdugzlejskuptnbekzlpujnbstglutzbpjkensgnktlpugbjzesomhqnxljiwkpvzudbtreayyqiknzbxvormgpjualtfwdejowmpeaqbxltzvdrynukiatdpobxsvicwzcvlbuotyxreqspaaotbscvdxpvipcabotsxpotaxbvcsjgzstxmyknhvdhbnjzgvmxkclsytdixljyqrtuuqlyrxtjrytlqjuxtyxrjqlulmdjczywfcdqgipmehturbnwvaoyxqkaruovhfscxglbmweznyitznqixgszmxqiwsngzvuhhzuvvhuzjyjyyjhyjyjrtcxjbpgszpgrcxmajstbnrhpasbtgcexoyrfsqucgdwxpitldcsyezmrvquixwpogakfjntbhlanovfcsitzebgxdkpjwqmlyhurywaflnbmovblwoynmavnmblwayvoymawvlnbgolyvobwanmxuceqqgxvkwmyqgcviulxpjzyuqptgcavzixgyvxicuzpqlpufgwaebhtckdriqylocrabdyihufpwgqelcdqfeubwrgaihpykhoclfpgubwqdraieyfrayspqundziewcgxbmhlaaawceqnfpyhkwaomzdlrigjutsvqdsjlwiobvyknxzuechpfgtaiyhflgtqakvwedpznjcuosviwbayqdumknsjzodzmuinwqybskjotlasuzjnbkdoqawmiyiuvdjaxnvjdixnauvnjaxdiutqgtqgqtgvyncxbksgorfaijzdeqhtplwdxjyesngbrotzlaqckwfphtgsqcmzbirkoapyoayqpgrcstmasrocipymhgqtvacyxomgrsqptodvreuapqdeqropauoruqbdeapuordpeqauarodepqcewlriilbilpfsmjcerdbcgbmjerdspgdbpcemrjsolnbwczufamjsrtipvkqyhxghqbirpwczgoualvmfktsjynxwvkypxhoaujrlzbnsiqgctmfxqiawmghagbxrgsxabjuqhvcvqjuhbcuhjcvqhjcuvqcuvhqjmkntuosgpawymjpgvtaysfrcklllllazewzplpppgysbeliqhxtnavjwpczsmdfkcucjseszuolseugixiubmhvoejrfypvrepyojmihxxktarvmjgzfyhpioldecqelhdmcripxqfvotygjkmcyfrvgtlhxpjiqekdorlvodgxtchfipjykemqdxcvlrhmpyqkitoeujgfwslomfkcbvqqcsowkvbtywcxhgjsnkoqpzeamwsucfoqkoqiskmrwczepuliflijefpplibfyrednbbhvuujobdmqsnaulwtuflpeczrukgggggkmugldxteajgkotaelmuxtxkomeluagcujxkyzecrmgxjkzybzutydnnztybduntzbydfudzbjyeaprxgpyjqmbdodhbpjyrchkvqujurthlkcqsppppsparlofnhbdrhadnblfjhnrxldafztukfgrgufktfdktsujgykjyhddcyjjydedxvgzptbfhniquylokhlnzpgfuvxktbydqyugtqxdpbnklhvfzasersraejkhtdoevsaktyfulpjhxzrbgwjteiqnkcheqtwvaxkhjysfsahmxqevjtcgyeivjsdrzwubomkpafltwmlpbuaojiykvzrfdsteoueiabrdzyfsjmklvtpwrfteozmijdypwabuvkslnqiycrwsjgdohmkvuzlougqkdscrywnjihvlowsvkugqldnjcyrxiahdvhykqlnusowicjgrkurqvjnbgzxocwhlfeditystoxuhcldgybfesiqzjnwrdhkloqwpmicyzvakmwiaplhtylmuieakwhfypsaklihpwyfmtuxlhzeflniadjcpbymrskumzqhctzuhmqtmtgzohuvqtzuxkktxuzmputbxokzvxztkutxzukogsusoarnvdkyuzfpeqwtibhjsqcoyuawvktbldpzermfjcjyvuzkpqrwbftemodlatabdoukcrlyvmfpjzwqefytknqplmduzxhbrecajosvgiwqfvyerdktapobmwjzulcgfyznrvnpoihdnwaqmejbctkfnunikzvactkmwqijosfnglerfgosnalrvwkjiumtczcflqhzughqcflmwflcqhhzqlfchclfqvhshvsvhsfisvlybdgbciulxvbkoruxqcgpqpzrxubckgrblgszhvuavsqrbuozhjgtrzushvgbqkauenxhwmtrobnefzodwmysqplvbtxhkbxhemunqkwoteipjypeimfweitdlpipemjuyyumjcmjyuhcaivxjntwopfbuddxcajbzvpinofuthwxwubvdhtnfpjicoaipahvxtnobjdwucfpdajicbovxhntwufuxtbzyqoijcgnkrpsscuojrikthyzbpnqrdmnztsirumthsozjdinmistcxnfzadryqzrndtsimkikixkikiluihqbcygnpvokrjwxaqxnjklouahviycrbpgwryhqvbkjxanpwuolgciifmymixplfsyoyifmfiymiojlkgqnfpcixuqcpfonmlyjkikcjoqnplfkniwopcfaqhjlpwqfcnioargvjlekizpbgvruchjtsyxftiyxeshupcgjkmdnbwufhbhwubfahufbwkuwbfhhfbwuwrbsjcniyaeqvdufzxoplgedjzpltwqihmygxocayagzyawxkbvbjmxvwdoccdmosxjrvoycvnjxmbdkarjkdmvcxobszmojfdcctxmjvkpaliosgnqejmpcqoinkeljmvasgnvbzjlopmgqeasiklezonbtdpxkeuiohtlpnqrxvbolpgetfmnykxbtnlopzabxyegtecjfewvehysltzaoxfwcikgupmbdjoditawxjkeushbmyczflpgikycstwfjdbxpegzauolmhayxchoitgufzewskbmljpdxdshbltjzeupfcymigaownktbkhywuejmqdzumumlwmuyumumgoidsnkyrzpulgexkdyhilnakiydnzljgvzespawsvqakvajssavbasjvnegfunegfuungezqfwufngewunegfpnnnxtzpvhjugsknlztuhgpvmehgcizytvwllltmwjsoiqfxbaeivhdxeofspjumabcrtkwzmbneowitsgfxjqahrhrjyrlfufcqrfrnrzafyrkfbpwcdvnobwkovwndyvwnodvadbonwlmqbwikvtlnauysporxjxyzmnabiecvtpuoguxhvmnyocbpaitgraltxsdfnbeuzcvpqgosmjhbmvokmovkwevqpmrblnfdkcjaaprbvjwixcldeyfecwjdupovbahzltfnwdjvjwvndnwdjvjdwvndvjnwplzqokjdmehckzljpqohtecdmpeclzqjwohdmkpmfpuwmfjfmpmpffpmsgrfsgfrgrsfgrsfmkfkldyqknfknqzvlsdtlnkydqyjtwhgckazeslbimodapxfqavouixndgzjumhcslyfkwnbqxqrlniepavtbdothosbezjxwcumnyrkvwrynhxmcuevqizspatbokpjmwysmysjpwysjwmpwmjyspywmjspfmmnuprmzidirwdwlbqsacgumfzpjgivlupwuwjmjjjjpjmybweuwmebyweymbmwbeyzfsbjpgfzjsvfzscjksfzjyvvyyvyvvyroydftqkjmanhrzmgsqbfuvyxlanexhgcfehmcxagnlxaglnwcehgukjjiyrwfhxxhwfhctwbxfhxwfhwxfuzlheoysartmnwpqizrjqlaiosptuywipatowrsyuzlvqpajsyiultrqocwzqtyciuzlpsorwafqiehbrjgpzladtqzbhloanjlmwbdjqnxzhawnjqvzuhladybsfekzbohfbzeokupjzuafcgzitupjlommlzfitjpoucgljzgfpcmitouwjavhtfgulxbsjlbhaugwesftxvabulpizgsaxyszlohfrdkqjvpxnqsbefvijroumzckwtcxmtpbjfnesuqowrkvisfcpjunwoivekbrmqxtevupsfnxrbmjciwqtkoxriqnwvgusceydhmjoaltjdvrcnmpsqayugewhiochydsyphcryhocychychqyewqoeqzueqkevyqegehqsfybktionvlazuxjpdginvqthklyspxbfoajudhpblkjfyguovywvhlpgbncxoeynmdtojpzgwbyfnehnqyoeeymnoovqyenxnrlkscnxlcnvwjmxcxuoybyoblxgzdxxzvddxtzduzxjmxpzaovctejyxlitevzyktxvgfezyrkhzhghxkdlaopujfzkptczhbqrncqhztbpnrfqbtrucpzhnbrthnqpzcueqrwicwoarjgxesbfpzerxbtojasdajsroexbpgedrabjsoxmjkviqymkqjyiqmykijqmjhikymjkviyqhqoqhjrxhjqtrwlfaxclxzfcczxflclxftfcxlumoecsdkqjicskqpoudmqubmmuqdmiualxvbgmmvxqmvlxvmxppvgpuvckgbzxdytoamsweqcnkfjmihprxwgyiqkxfpzlatbousrvnzfqlgwktyivruoxabnspfbtragkovyiwsxnlqzupxonjzkrghmdyiuxduizjmgronhykmhdgryiuzknjxodkrxougihnzmjyanyjhkobzplrqfggfpknwqdhsxacjmoblzpkflqubgzanjhohyzgunfviqobpjaklnzsipuegfacussixskmrynfbctozadewlsvnjyumfhzkpbggoqdapfivwkmexbswiqafmdoxgbekvppmkbaiqcewfvxdgofvoepywahjqkdzgibmxwigfkqvsebpoxadmornhgxjqkytvubzmekbicruqgdcwnddwncdcownaerdsasrvrapsarfgsonxscrauowpihungbxfvqlpvontulxsbiwqjrgczkfvdmhxbgunplewiqyfoxqixxxiexljckvcknvwjckqvjdqcjrvkqcvjrkoelmztvsjfkdaquwgbswgqozmadfklbihxetuvjwmlhcndgfjdvgojfhlnscmxbgkertlzmyhfncdplfgwmdhcnylxpvqawmvxqwlpymawaxmlypvqvxqpyalwmylrpqkzdalzfdkpqrayzagdyqprlsrztwihlaypbednoqxtdvrwmqfylacokzodrcyqkzmflwxvatqomxsptajeyczkdlvrfhwmsmswsmwjviyckehxjykczeviceybtkjivejhvkiycvceykjiaapohgqctumnfyqyofntmhjcxglkzmqdpcgtyoftoqjgacfmylfyzxtmdvehroupbsqkrmdvzqetfjiguobhxsckoudbxpeaygwnsfqzljxqnowpuvkfayseraysekchowuxntpqfekaycpfowstqunxvzuealdmkcgpniqueoyfhtbawlynfdhjdynhxbdvmadvaigbfaibgvfiaybvgfrglhpjedmnkczwsaxvuyiftqsgvncpmqrlzdykjoiewxtuhfathoirlzbaknezfsjydzswzwxzmyxnumzostgjeadfcykpltobeghltvqgopwrbakjmxyotanfpdscqkmwgfkwpgaztoumqnzeflkcnvpojytshxgiaxycazlfokejnhspgmvtqanytosfkzehvgpcjlxevbcxadzysgophrfnulktjkvdfiewxtyqzjynrgpaoyzaoyhsmuyobalcrfkfurfnrxmfrsrfjabjrmoskacxpvibhftgnlywuztpyvrloamuchkiwfxbgnjzjdtmvinzkoflgquhaewkisqucopyxbthnzrkujdylnxwwlciqdhptvtqsugawvocvcwqttwyqvcwcuvqtsrxzgyquigzruiqyxyrzqiugxxgouzylqmiruyiqxgrzxmbngtwkzfvdjzsfqvhtkcrswxnzimjdablcskjmxtqbiofnhljhyqxlukicmstbnbgihlkmjsncxqtdftriecaujqygkpdpitkrqgaefcjuyctheqrfyigpjukdapxcsqfhxyfsqcfcsvxqxgfqsvcfwrzvkpeischdgzojmnwyujbiydmusjhappxdvufaimohgrbeynczmeyzcgecphynqjpbxcgurqxewsoaqvwxgcloiqpowtxmnqwhbyirsmvkfjzpueactcamfypikohjurvqtswbehisewcbvjoqrmtkfpyuazmnvldiznlmdvimvlizndmldviznnivdlmzklejadniyugvsraeuygvinldksjdyjnsakeguivlhulsnyhgjiakedvkalgednsuihvyjqtgfmuipbkrsxnwfucprkgxlmqmacgfhpurwqkexhrnybjyjbbiyjsyjbgqsukyfdrzopbatmjvlnhrpltybxqugzkdvcesimfjawnewfsbyzoxdozxdbyefswzdbwyxsfoexeofzswydbmtfjbwqhgjbnqmogsreykueonrkbsyugjqmyqokjreuvbnpgmsubgqomjeysrkniqbxvszjmgnalfpupixmsbnavzujflqgkqismpjzaxvbgcunflxosqhlgpmsqohbmwgyqchjsikuolcojtkrcrkotjiaufsfvoaupfgzydtztypgfdfpfffkspetrpjrosvkxwvcexodslhftbnakimgzjymztdslovfixkhjyneabcwggkiwcedhxtnomyfjlbzsvaqphgrcfmhdzihqqqqztoneqhcgjrwdvftienuyqajhmwbogbploycntlbnoyvylnoebdrwzouehkbjlfyingqcaswzvjcqgrmasyopbhtnaznnananabzbzbztzbzbvusomasmaouvsglxdivzmbohnacjuppudzbmivaxnhclsjkvkphsuwgyrhsciohiyrcsgotrhysciogyicshrogzdkynwxqigusblkopzrbdwfncxwnmhzxdtvbjkasibezwyxdnkpccocyebmjsnxrityijstbmgeoxrmoxbritsydejjmosbexyirtbysfraicxqbaxqfsywircraxcbiqsfybsyqcixrfaiwdgnztphbkocqvsyelzeosypvkwbdhnilcgqtbzhkwnclpyvoqisgtdepfgovzctdwqelhbnyksitywvlghspczidnboqkerxwadjshpfwcztneudgkbnmrlhcaivzojuyqmuicgxvkpwfzqjnrhlosybpppppayyyyadwaawsvugrchzpwxyqipynwbjejwbanfxokdhenitqpzxjamsskxyimzhpqtndlytjmoaqixnkszphdpzhdnbxtmqeskifwpdhknrcxsztiqmvjnkitbvqvnkbjietqiqjkntbktdznbqjijqnibtkqyxkdjzhikhqjtbeyridzsmwnoylnqobwylsmlmawoynsjuiluqhwnrlgftdncbpbtndfgcpbpfngdctnpefbgdtcmtqruapuprmqatyumuymuymumyymuaymdqeuwesmqkdfujqvduameyjuoxaevyskyoajxsjoaysznxnrhdifpxvknvwzxrpipanivqxrlexcbqhjsafrnzpgimltewvukzyidtoqpymanivknipywuhsgyaqsegywfbzsjckgilmqnlmiqqlmiilqmbcbbbbqiularuljjlxkpujxtyerivfgomsdhnlwzcewacvmrdjtlnykhxuszifbohcotvyqlzkmytmfozklhqbnwxkgcidnpybfutvmhzpkuhzmxgnfycdtwobiuwgnvmpfyzkcxthbidqeplrhsifuvuhflevspqrilihufeqvprsaehfqiuprlvsphivqlsufrevitspgyendmzbuodvnsmguitpboyzeatmaubsexvgolpydnzibmieuzvpdotrgsynhwxjumrlocdthurtjwdxplmocrojlutxwkdyhcmlocwmjxrhdutdcrxjmohtwulzrnhfmnxgwbqivunasyddkhjnuhyayhuwiuexpgmzkhygopglyfuieczhtwhyicguvpemtlfdtlrhepcfzyuwigeqgkufbpckbuqciqbukcvpfkqoiemgmkeoqipgzogwipmkeqiopkmgwqteunzorbiuzuqbrizgueirbjlsujqrcktmnwxioqnfkzsctlbjvelhxwxwehlwlxfhzxwchlqkzwgpmlvmvqphjlimpqrhlivspvlmqvjuarpbtxenhkspdeixalsqunbhvjasbuhvpjnxevbphxujensroacocsnjwthqiduaqozmhuandtcjiwshzsdjuqnwtixacorjqwxhsodcriazntuuadcwhqtlnjbosiexjimgzntqwvfefdzgviwtnznoefrvcwibptifykegzwvnjojfmzaxnctuhgioichzukfjmgtnxofxucjlnghmditeydtjfxynmbuehacmtsostmobucaeubmtavescobtuypecahsmoubsamotecbddddxwdavvavdrebgljwqhypumaifxjuradeolqfbwmihnxpzshwtgqvxkhsqxgkjtwgkhtqwxisraktbjgxwqshgklyvoszrzgqrysovvogzsrylroyzvgpskjrzydovgnisacltdkawfpyqjsbwechirwvmzwtokcbwqltxjfpigahuondckvjxsqemclzokrbiutktmoczbulrzsavjjasvzzsajuvazjvshnamjhrecjvqwknsiytlfzguowmbabadsohcqbzhdqcsbzbudzhdnwhfsvptvvvvvzvfbpucdkmjqeioadtpyxrmgskhwbfzwdpfscunaqmligoqawystolvmjhxgbrflindhuycwycjkpshfwitndmwmwmgwmmswmwsgmzqpwlifcryjabxendnamrfposzgbqywcixeljfxrblzajswpctihqygenmzrmxisnfajygkwlcqebpdgudugimuqgdduggtwxdbtgxbwddxwtbgjolnaczkdfbsmurlatnfdicmuhejzoqvxgvzogjxqjqzgxvoqgvijozxvgqoxzjvruspmhlewoknnojmeblhuprkstfrhihrrrehmtxpkuysrlrgveotsfovfsretvtesorfkvvovvnyxfzesqgryxqfsgrritshypvfqkkkxktfuivcicuflubficiypucffoknbeaujiphdxgnpdkhaeoujfhnwaeofpmyvjkudlynfoewkixkywxndsfwnyfqxckipzxvyabwurlkfnhsxnkmyfgwycxspoyxbpzscopcyxsoriirirriringeojlwvkcymsdudunjgkomvlwyvkwdomlyjungiswlyvtgndqkbcopjxmferuazhludyrjxgqswhkmofpneictzabvhhhnhnwmulejyqxydulhfmnxacmgyxlcpnudoiuxyrlnmtzxnmidtysulipfdrqsiprxdavgcyinpkdwrmhjuexipadbrzolgftropxidvexqtxqetvemtqxbvkhzkifwmxeonupcaygtldsqvbdyvveydvydvdytxhdkerybmuaafhyuxdkbertmcyuxrewtbmdkjhfpvxgdkipxfgdvkikfvgixpddgvifxpkvtybfxskgrdpinsjtbzwmuxcnlpjsxnbwzhcmptluwzusacxbjnmpltqiwkszmjptxcnulbtdtosizdfrvjnihrbmfklbmylxvnkirsnirvcbkmlonatgjeqdfutofjugqnaednjfadqwugoetojaefunqtdgjdngfteuqaolfjsnmywoariimjnyarlwofaiolyfjwrmnlstramdyopsdrtlepnoyamyplsdtroamrysuomdpaltdumlsyaotprgfxlnvejorkwruoljnfxkesjyuobmlgzkitlmkgyrtojduzznpglmatuqekyjogulvozkmytjzsytjlogumkktehudzxrmajvqjhmydruxkghnmxcjkldpnhizmdwsptceojmgbhvfrokunzditcmexlwjgasqahtsizfglkdecqnymuwjxcgmrlkpzunuwgmamugghmuykihikyhkiyhiyhkkyhimvcjrufmfcjurvfrmvucjrucvmfjujrfvcmrzvugruzgpgdqucvliaekwyvyilsqcukagewcylwivaugeskqwiquaecyklgvquocakwyegvzlrijjjyafuivmfmzyivuamvayjqfbieuvymuafisbwbwsssjcnlpkzjhiyszxcpumkdreglyceuljzxdbspmgnhtirlvstgahuqycwempikhtcpdimwleveilhvtwpcmocsrqubwnlhemxpyfjkgdmslzhunejpfdwryqfkslizewnlesifzknweknizfwskeznsroifpwwztapgzcaugetwwazcugtenkwzyekmcjrqsdxxqrdbsfxtdusyrjdsxabrvildhoswzeboedzhlfbzohldbmeehldbofzglzpahcrsxoiqdqaxhzcesgzanixvbzaumfxkoznxattttdponyflcbgzuoluycbzedngfxrcilmyqzhfndfxpekhtlbafowjxlqhabuvzuzabuazgpmbdabuzzybuaxkiglgkxlilgixkkilxgksythvgaiwkqjmfbhivlayzgftpxnhbkrcziymuqjwsagfvolgfxywqtikanvorulmshczjbpdtplfzajrcugdutapblcjfgrziuztnapflcjdvrgfrdguctzljpaizfuersgqgrfuesqvksergaukqfyqfsiutrwcgnejobvbvbvbmuxydwqtzvjnvxmfyetdsuxvdmytiukgrxhjhabnurvpyvakpuwesyqnrksypwevikpvsyhwjnehqwmxtzswvrlawbocdzfgstoxqdwzhvrpbflegcnsmikyrtzujanlkykdsatijnyxmsxsmyosmybsymrbttvbarubwrstritbvziqwsjmehdyocntuxblglqjxndpmcyakheuvrwbvldiakteryfznqqebljwgvdoacszklzxvqeapbdkynlykqptmqkdlpjixerawshokmjiwramksehxoekxmirwaojhsiearwhokmjxsmrrbrrvblioszxngkadwbogjpsivkxfnjpcwsnuxkriblehvfydjnyxehusfvqablrcowidkpamwsadsasahjfgpqambsfvhsxihbfruacptajchyfahodnflkewnjayectywfreujvcnfayqmdpietcqixpvzdaonrymqnlofvpikjwuenjylcxwbksdrqafwaqodzxgxudoeqmhawxhiadwfqhquqihuhuquqhcrxhquwdimvrngsoeazpkfwyctjgroanpvszyemkfwjtcidjvwonsraytdgemifzcpktdsecwafikzongmvryjpzelpgjotxyqscnidwvfuamrkkhopamsbetmtoqjbwexfpkeopdumbktypmkoetbogptnbkmedsegnxfbtzoqnoxbkzfsgtdhfozyqasempnlciwbkrtowezgcvudlnhmsqkxppswqnomzldgecxkhptogxfrdwzglkzfxrowawryscxofzvmwohrtifbzuxnjczemryisbjdptxqtpcbisqyezjrmdybjpctrmzdsqiezsqcmypibrjedtztwcbpsyijqrdmeatwukjeorighvfsnfjohkugxzvnqwmtsabevuwenfoagktshjlwdhiauepytcsgokfjnvcylvzghwmjflwfvzgjyhcmfzgyjlmcvwhvwjygmzhclfabmbbhfjgwbhceioxmszzejxhbmtocgfdweblapcygxwvzhofmjgmxfhjzcewbofhpqtjzdeyluwnogmduemozjhlpqnwfygtzfmewnhqdpgjoytuleofygnuphwjmlqztdwvaoevfabqwdkvawggxprowhvytbiamfcjesuexcvhbsujfatrpmwgixylsrgiecwzpaojvbscjyqrepjcltyispsicltcstiklphisapcltlqvvvqpmmmmmfzhuvrqsonwdcmgibjdqibvhgfrmnjcuwszgkfvsznchrybwilejqdurdibnqwfzghucjvsjuqckrlojlhsyfcnjngdhxfesqzwcptlmvbtlpyhvnoxsagwmqrdzcue
FFBBBBBLLRBFBFBBBRLLFBFFFFBLRLBFFBFBBRLRFFBBFFFRRLFBFBFFBLLRBFFBFBFLLRBFFBBBBRRLFBBBFBFLRLBFFBFBBRLLFFBBFBBRRRBBFBBBBLRLFFBFBBFLRLBBFFFBBLLRFFBBBFFRLLFBFBFFBLRLBFFFBFBLRLFFBFBFFRRLBBBFFFBRRRBBFFBBFLLLBFBBBFBLRRFBFBFFBRRLFFFBBFBLLRFBBFBFFRLRFBFFFFBRRLBBFFFFFLLRBFBFFBBLLRFFBFBBBRRRFFBBBBBRLRBBFFBFFRLRBBFBBBBRRLFFBFFFFLLLBBBFFBFRRLFFBFFFFLRRFBBBBBFLLRBFBFBBBLRLBFBBBFFRRLFBFFBBFRRRBBFFFFBRLRFFBFBBFRLLFFBFBFBLLLFBBBFBFRRRFFFBBBFRLLBFFFBBBLLRFBFFBFBRLRFFBFBBBLLLBFBBBFFLLLBFFBFBFLRRBFFBFBBRRRBFBBBFBLLLFBFFBFFLRLBBFFFBBRRLFFFBFBBRLRBBFBBBFLLRFFBBBBBLRRBFFFFBFRRLBFFFBBBRLRBFBBBBBLLRFBFBBFFRRLBFFBFFBLLRFFBBFFFRLRFBBFFFBLLLFFFBBFFLRRBBFFFFBRLLBFFFFFFRLRBFFBBBFLLRBFBBBFBRRLFBFBBFFRRRBFBFBFFLRRBBFBFFFLLLBBBFFBFLLLFFBBFBFRRLFBBFFFBLRLBFBBBBFLLRBFBFBBBLRRBFBBBBBRLRBFFFBFFRRLBFFFBFFLLLBFBBBBBRLLBBFFBFBRLLFBBBBBFRLRBBFFBFFLLRFBBFFFFRLRFBFFFBFLRLBBFBFBBRLRBFFBBFBRRLFBFFFFFRRRBFBFBBFLLLFBBFBBFRLRBFBBFBBRRRFFFBBBFLRLBFFBFFBRRLFBFBFBBLLRBBFBFFFLRLFFFBFBBRRRBBFFBBFRRLBFBFBFBLRRBFFBBBBRLRFBBFFFFLLRFBBBFFBLLRFBBBBFFLRLFBBBBFFLLLBBFFBBFRLRFFBBFBFLRLBFBFFBBRLLFBFBBFFLRRBFFFFFBRLLBBFBFBBRRLFBBBBBBLLRBBFBFBFLLLBFFFFBBRLLBFBFFBFRRLFFBFFBFLLLBFFFBFBLLRFBBFBFFRRRFBBFFBFRLRFBBFBFBRRRFBFBBFBRLRFFFBBFBRRLFBBBBFBLRRFBBFBBFLRRBBBFFBFRRRBFFBBBBLLLFBFBFBFLRLFFBFFBFLRLFFFBBFBLLLFBBFFBFLLRFBBBFBBRRRFBBBBFBRLRFBBFFFFRRRFFFBFBFLLRFFBFFFFRRRBFBBBBFRLRBFFBFBFRRRBBFBBFFRLLBFFBFFFLLRFBBBFBBRLLBBFBFFFRRRFFBFBBBRRLFBBBFBFLLLFBBBFBBLRRBFBFBBFRLLBFBFBFBRLLFBFFBBBLRLFBBBBFFRRLBBFFBFBRLRBBFFBFFRRRFFFBFBFLRRFFFBFBBLLRFBBBFFFRLLFBFBBBFLLLFBFBBFFRLLBFBBFFBLLRFFBFFFFRLRBFFFBBFRRLBFBBFBFLLLFBFFFBFLLRBBBFFBFRLRBFFBBFFLLLFFBBBBBRRLBBFFBFBLLLBFFFBFFLLRBBBFFBFLRLBFBFFBFLLLFBFFBFFRLRFFBFBBBLRLFBBFBFBLLRFBBFBBFLRLFFBBFFBLRLFFBBBBFRLRFFBFFFFRLLFFBBBFBRLLBFFFBBFLRLFFFBBBFRRLBFBFBFFLLRFFFBFBFRLRBBFBFBFRLRFBBBFFBRRLFFBBBBFLLLFFBBFFBRLLFBBFFFBRRRFFFBBBBRLLFBFFFBFRRRBFBBBFFLLRBBFBBFBLRRFFBFBBBLLRBFBFBBBRRRBBFFFBBLRRFBFBFFBLRRFFFBFBBLLLFFBFFBFRRLFFFBFBBRRLBFBBBFBRLLBFBFFFFLLLBFBFBBBRRLFFFBBFBRLRBBFBBBBRLLFBFBBBFLRLFFBFFBFRLRBFBBBBFLLLFFBBBBFLRLBFFBFBFRRLBFFFBBFLLRBFFFBBFRRRBFBFBFBLLLBFFFFFBLLRBFFFBBFLLLBFBBBBFRRLBBFFBBFLRRBBBFFFFLRRFFBFBFFLLRFBFFBFFLLRBFBFFFFRLRFFBFFBFRLLFFBFBFBLRLBFFBBFFRRRBFFFBBFLRRFBFBFBBLRLBFFBFFFLRLFBFFBBBLRRFBBFFFFLRLBBBFFFBLRRFBFFFBBRLLBFBBFFFRLLFFFBBBBLRRBFBBBBBRRRFBBBBBFRLLBFBFFBBRLRBFFFBFFLRLFBFBFBFRRLFBFFBFFRRRFFBBFFBLRRFFBFFBBRLRFBBBFFFRLRBFFBBBBLRRFBFFFFBLRRBFBBFFFLLRFBFFBBBLLRFBFFFBBRRRBFFBFBBLLLFFBBBBBRRRBFBBFFBRRRFBBBBBBRRLBFBBFBFLRRBBFBFFBRLLFBFFFFBRLLBFBFBBFLRLBFBFFFFLLRBFFFBBBLRLBBFFFFFRLLBBBFFBBRLRBBFBBFBLRLBBFBFFBLLRBBFBFBFLRRFFBBFFBRRLFFBFBBBRLRBBFFFFBRRRBFBFFFBRLRBBFFFFBLLRBBFFBFFLRRFBBFBFBRLRFFBBBFFLRRBFBBFFBRLLFBFBBBBLLRFBBFFFBRLLFBBFFFBLRRFBFFFBBLLRBBFFFBBRLLBBFBBBFRRRFFBBFFFLLLBFBBBFFRLRBFBBFBBRLLBFFFFFBLRRBFBFBFBRLRBFBFFBFLRLFFBFBFBRLLBBFFFBFLLRFFBFBFBRLRFFFBBBBLLRFBFBBBBRRRBBFBBBFLRLBBFBBBFRRLFBFFBBFLLRFBFFBFBLRLBBFBBFBRLRBFFFFBBRLRBBFFFBFRLLBFBFFBBLRLFFFBFBBLRLFFBBBBFLLRBBFBBFBRRLBFBBFBFLRLBBFFBBFLRLBFBFFBFRLLBFFFFBBRRRBFFFFBFRLLFFBBFFBLLLBFBBBBBLRLFBBBFFBRLLFBBFFFFRLLBFFBFFFRLRBFBBFBBLRRBBFBFFBLRRFBBBBBBLRLBBBFFFFLRLFFBBFBBRLRFFFBBBFRRRFBFFFFBRLRBBFFFFBLLLBFBBBFBRRRFFFBBBBLRLFFBFBFFLRRBBFBFBFLRLBFBBBBBLRRBBFFBFBRRLFBBFBBFRRLBFFFFFBLRLFFBFBBFLLLBFFBBFFLRLBBBFFFFLLRBFBFFBBRRLFBBBBFBLLLBBFFBBBLRLFBFBFFFRLRFFBBFFFLRLBFFBBFBRLLFBBFBBFRRRFBFBBBFRRRBFBFBBFRRLFBBBFBFRRLFBBBBBBRLLFBFFFFBLLRFBFBFBBRRRBFBBBBFRRRBBFFFFBLRLBFBBFBBLRLBFFBBFBRLRBFFBFBBLLRBFFFBBBRLLFBBFFBFRRRBFFBFBBLRRFFBFFFFLRLBFBBFBBRRLFBBBFFFLRLFFBFBFBLRRFBFFFBBLLLFBBFFBBLLLBFBBBBBLLLFFBBBFBRRRFBBBBBBLLLFBFFBBFRLRFBFBBBBLRRFFBBFFFRRRBBBFFBBRRLFBBBFBFRLLBFFFBBBLRRFFBFFBBLRRBFFBBFFRLLBFFBBBFRLLBFFBFFFRLLBFFFFFFLLRFFBFFFBLLLFBBFBFFRRLFFBBFBBLRLFFBBBBFRRLFBBBFBBLLRFFBFBFFLRLFBFFBFBLRRBFBBFFBLLLBFFFBBFRLLFBFFBBFRRLBFFBFBBLRLBFFFBFBRRRFFFBBBFLLLBBFFFFFLRRBBFFFBFLLLFBFFFFFRRLBFBFFFFRRRFFBFFFBLLRFFFBBFBLRLFBFFFBFLLLFBBBBFBRRRFBBFFFBRRLFBBFFBFRLLFBBBBFFRLLBFBFFFBRRRBFBBBFBRLRFBBBFFBLLLBBFFFBFLRRBFBBFFBRRLBBFBBBFRLRBFFFBFFRLRFBBBFBFLLRFBFBFBFRLLFBFBBBFRLLFFBFFBBRLLFBFFFBFRRLBBFBFFBRLRFBFFFFFLRLBFFBBBFLRLFFBFFBBLLLFFFBFBFLLLBFBBBFFLRRBBBFFBBRLLBBBFFBFRLLFBBFBFBLLLBFBFFFFRLLFBFBFFBRLRFFFBBFBRRRFBBFFFBRLRFFFBBBFLRRBFBFFFBLLRBFBBBFFRLLBFBBFFBRLRBFFFFBFRLRBFFFFBBLRRBBBFFFBLRLFBBBFFBRRRBFBBFFFLRRFBBBBFBRLLBBFFBFFRRLFFFBBFFLRLFBBBBFFRRRFBBFBFFLRLBFBBFBFRLLFBFFFBFRLLFBFBBFFLLLBFFFBBFRLRBFFFBFFLRRFFFBFBFLRLFBFFFFFRLLFFBFFFFRRLFFBBFBFLRRFFBFBBFRLRFBFBFBFRLRFBFBFFFRLLFFBFFBFLRRBFBFFBFRLRBFFBFFFLRRBBFBFBBLLRFBFBFBBRRLBFFBBBBLRLBBFFBBBRRRFBFFBBFRLLBFFFBBBRRLFBBFFFBLLRBFFBBFBLRRBFBBBBFLRLFBFFBFBLLRBFFBFFBRLRFBBBBBFLRLFBFFFBBLRLBBFBFFFRLRBFFBFFBLRLFBBBBFBLLRFFBBFFFLRRBBFBBFBLLLBBFFFBBLLLFBBFBBBRLRFBBFBBBLLRBFFFFBFLRRFBBBFFBLRRFBFBFFBRLLBFFBBBBRRRBFFFFFFRLLFBFBBBBLRLFFBFBBFLLRBFBBFBBLLLBBFBFBBRRRBFFFBFBLLLBFBBFFBLRLFBBBFFFLLRFFBFFBBRRRBBFBBBFRLLFBBFBBBLLLFBFBBBFLRRBFBBFBFRRRBFFFBFBRRLBBFFBBBLRRFBBFBFFLRRBFFBFFBRLLBFBFFFBLLLBBFBBBFLLLBFBBFFFRRLFFBFBFBRRRBFFBBFFRRLBFFBFBFRLRFFBFFFBRRLBFFFBFBLRRFBFBFFBLLLFBFBFBFLLRBFFBBBBLLRFBBFFBBLLRFBBFFBFLLLBBBFFFBRLRFBFFFBFRLRBBFFBFFLRLBFBFBBBLLLFBFFFFBRRRBFFBFFBRRRFFBBBBBLLLBBFFFBFRLRBFFFFFBLLLFBFBFBBLRRFBFFBBBRRLFBBBBBFLRRBBBFFBFLRRFBFBFFFLRRFBBBBBBRRRBFFBBFBRRRBFFBFBFLLLBFBBFFBLRRBBFFBFFLLLBFFFFFFLRRBFFFBFBRLLFBFFBFBRLLFBFFBBBRLRBBFFBFFRLLFFBBFBBLRRFBBBBBBLRRFBBBBFBRRLBFFFFBBRRLFFBFFFBLRRFBBFBFFLLLBBFFFBBLRLBBFBFFBLRLBBFBFBBRLLFBFFFBBLRRBFBBFBBLLRFFFBBBFRLRFBFBFBBLLLFBFFFFFLRRBFBFBFBRRRFBBFBBBLRLBBFBBFBRLLFBBFFBBLRRBBFFBBBLLRFBBFFBBLRLFBFBFFFRRRBBFFFBBRLRBFFFFFFRRRBBFFBBFRRRFBFFBBFLRLFFBBFBFLLLFBFBFFBRRRBFBBBBFRLLFBBFBFBLRRFBFBFFFLRLFBBFFFFLRRBFBFBFFRRLBBFFBFBLRLFBFFFFBLLLFFBBFFFLLRFBBFBBBRRRFBBBBBBRLRBBFFFFFRLRFFBBBFFLLLFBBBBBFRRRBFFBFFBLLLBBFBBBBRLRFFBBFBBLLRFBFBFFFLLRFBBFBFFRLLFFBBFBBRRLFBBFBFBRLLFBBBBFBLRLFFBBFFBLLRBBFFBFBRRRBFBFFFFRRLBFFBFFFRRRFBFBBFFLLRFFFBBFBRLLFFBBBBFRLLFBBFBBFLLLFBBFFBFLRLFBFFBFBRRRFFBBBFBLLLFFBBBFFRRLFBBFFBFLRRFFFBFBFRRRFFBBFBFRLLBBFFBBBLLLFBBBFFFRRLBFBBFBFLLRBBFBFFBRRRFFBBBFBLRLFFBFBBBRLLFBFBFBBRLLFFBFFFBLRLBBFBFFFLLRFBFFBFFLLLFFBBBFFRRRFBBFBFFLLRBBFBFFBRRLBBFBBBBRRRFFBFFBFRRRBFBFBFFLLLBBFBFBFRLLBBFBFBBLRLBFBBFBBRLRFBFFBBBRLLFBBBBFFLRRFFFBBBFLLRBBFFFFBLRRBBFFFFFRRLFBFFBFFLRRBFFFFFFLLLFFFBBBBRRRBFFFBFFRLLFFBFBFFRLLFFFBBBBLLLFFBFFBBRRLFFBFBBFRRRBFBFBFBLRLFBFFFFFRLRBBFBFBFRRLFFFBFBFRLLBBBFFBBLLRFFBFBBFRRLBBBFFFFRRRBBFBBFFRRLFBBFBBBRLLFFFBFBBRLLFFBBBBBLRLFFBBBFFLLRBFBFFBBLLLBFFBBFBLLRBBFBBBFLRRBBBFFBFLLRFBBFFBFRRLBBFFFBFLRLFFBFBBFLRRBFBBBFFLRLBFFBFFFRRLBBFBBFBLLRBBFBFBBLLLBFFBBFFRLRFBBFFFFRRLFBFBFBFLRRBFFBFBBRRLFFFBBFFRLLFFBBBFBRLRFFBBBBBRLLBBFBFBFRRRFBBFBBFRLLBBBFFFBRLLBFFBBBFRLRBBFBBFFLLLFBFFBBFLLLBFFBBBBRLLBBBFFFBLLRBFBFFFFLRRFBBFBBFLLRFBBBFFBRLRFBFBBFBRLLFBFBFBFLLLFBFBBBFRLRBBBFFFFRLLFBFFBBFLRRFBBBFBBRLRFFBBBFFRLRBBFFBFBLRRFFFBBBBRRLBFBFFFBRRLBFBFBFBLLRFFBBBFBRRLFBFBBBBRLLBBFFBFBLLRFFBFFFFLLRFBBFBBBRRLFBFBBBBLLLBFBFFBFLRRFFBFFFBRRRFFFBBFFRRRBBBFFBBLRRFBFFBFFRRLBFFFBFBRLRBFFBBFFLRRFBBBBFFRLRBFBBFFFLRLFBFFFBFLRRFFBBFBFRLRFBBBFBFLRRBBBFFFBLLLBBBFFBBLLLFBBBFFFRRRBBFFFFFLLLFBBBBBFLLLFFFBBFFRRLFFFBFBBLRRFBBBBFFLLRBFBFFFBLRRFBBBFBBLRLBFBBBFFRRRBFBFFBBRRRBFFFFBFLRLBFBBBBFLRRBFFFFFFRRLBBFBBFFRRRFFBFBFFRLRBBFBBFFLLRBFBFBFFRLRFFFBFBFRRLFFBFFBBLLRFBFBBFBLLRBFBFBFBRRLFFBBFBFRRRFFBFBFBRRLFBBFBBBLRRFBBFFBBRLRBFFFFBFLLLBFBFFBBLRRBBFFFBFRRLBBFBBFFRLRBFBBFFFRLRFBFFFFFLLLBBFFFFBRRLBFBFBFFLRLBBFFBBFRLLBFFBFBFLRLFBFBBBFLLRFBBFBFBRRLFFFBBBBRLRBFBFFFBLRLBFFFFFBRRRBBFBFBBLRRBFFFFFBRRLBBBFFFFRRLBFFBBBFRRLFBFFBFBLLLFBBBFFFLLLFFBBBBFLRRFFBFFBFLLRBFBFBFFRRRFBFBBFBLLLBFFBBFBLRLBFFBBBFLRRFFBFBFFLLLBFFFBFFRRRFBFFFFFLLRBBFBBFFLRRFFBFFFBRLRBFBFFFBRLLBFFBFBFRLLFFBBFFFRLLFBFFFBBRRLBFFFBBBRRRFBFBBBBRRLFBBFFFFLLLFBBBFFBLRLFBFFBFFRLLFFFBBFFRLRBFBFBBFRRRBFBBFFFRRRFFBBBFFLRLBBFFFFFLRLFFBFBBBLRRBFFFFFBRLRFBBFFBBRLLFBFBBFFRLRFFBBBFBLRRFBBFBFBLRLFBBFFBBRRRFFFBBFBLRRBFBFBBFLLRBBBFFBBLRLBFFFBBBLLLBBFFFFFRRRFFBBBBFRRRFBFBFBFRRRFFBFBFFRRRFFBBFFBRRRBFBFBFFRLLBFBFFBFRRRBBFFFBFRRRBFFFFBBLLRFFBBFBBLLLFBFBBBBRLRFBFBBFBLRRBFBFBBFRLRFBBBFBBRRLFBFBFFFLLLFFBBFBBRLLBBFBBBBLRRFBBFFBBRRLBFBBBFBLLRFFFBBFFLLRFBBBBBFRRLBFBBFFFLLLBBFBBBBLLLBFBFBBBRLRBFFBBBFLLLBFBBFBFRRLBBFBFFFRRLFFBBBFBLLRFBFBBFBLRLBBBFFFBRRLBBFBFFBLLLBBFBFFFLRRFFBFBFBLLRBFBFFFFLRLBFBBBBBRRLBBFFFBBRRRBBFFBBFLLRFBFFBBBLLLBFFFFFFLRLFBFBFBBRLRFBBBFFFLRRBBBFFFFRLRFFBBFFBRLRBBFBFFFRLLBBFBFBFLLRBFFFFBFLLRFBFBFFFRRLBFFFFBBLLLFFFBBFFLLLBFFFFBFRRRFBBBFBFRLRFBBBFBBLLLBFFFFBBLRLFBFFBFBRRLBBFBBBBLLRBFBBBFBLRLFBFBBFFLRLBFBFBBBLLRFFBBFBFLLRFFBFFFBRLLBFFBFFBLRRBFFBFFFLLLBFFBBFFLLRBBFFBBBRLRBFFBBFBLLLFBFBBFBRRLFBFFFBBRLRBFFBBBFRRRFFBFFBBLRLFBFBBFBRRRBBFFBBBRRLFBFBBBFRRLBBFBBFBRRRBBBFFFFLLLBFBFBBFLRRFBFFBBBRRRBFBBFBFRLRBBFBBFFLRLBBFFBBBRLL
def is_valid(pp):try:if len(pp["byr"]) != 4:return Falseif int(pp["byr"]) > 2002 or int(pp["byr"]) < 1920:return Falseif len(pp["iyr"]) != 4:return Falseif int(pp["iyr"]) > 2020 or int(pp["iyr"]) < 2010:return Falseif len(pp["eyr"]) != 4:return Falseif int(pp["eyr"]) > 2030 or int(pp["eyr"]) < 2020:return Falseif pp["hgt"][-2:] not in ("in", "cm"):return Falseif pp["hgt"][-2:] == "cm" and not (150 <= int(pp["hgt"][:-2]) <= 193):return Falseif pp["hgt"][-2:] == "in" and not (59 <= int(pp["hgt"][:-2]) <= 76):return Falseif (pp["hcl"][0] != "#"or len(pp["hcl"]) != 7or not set(pp["hcl"][1:]).issubset(set("0123456789abcdef"))):return Falseif pp["ecl"] not in ("amb", "blu", "brn", "gry", "grn", "hzl", "oth"):return Falseif len(pp["pid"]) != 9 or int(pp["pid"]) != int(pp["pid"]):return Falseexcept (KeyError, ValueError) as _:return Falsereturn True
hgt:176cmiyr:2013hcl:#fffffd ecl:ambbyr:2000eyr:2034cid:89 pid:934693255hcl:#b5c3db ecl:grn hgt:155cm pid:#baec97 iyr:2017byr:1939eyr:2020pid:526669252 eyr:1972hgt:152cm ecl:dne byr:1960 hcl:z iyr:2023eyr:2028 hcl:#c0946f hgt:73in byr:1926 ecl:#473aaf iyr:2016 pid:565318180pid:472686027 ecl:oth iyr:2019cid:277 byr:1940eyr:2030 hgt:170cmhcl:#62e117ecl:othiyr:2017pid:938461813 hcl:#733820 byr:1959 hgt:159cm eyr:2022iyr:2011 eyr:2021 hcl:zecl:hzl byr:2002 pid:17324328 cid:140hgt:186cmbyr:2022 pid:3164234967 iyr:1984hgt:76cm hcl:6b3837ecl:#fa362beyr:2037hcl:z eyr:1945pid:9247286687 hgt:75cmiyr:1934 cid:326 ecl:zzzbyr:2005byr:2005ecl:lzreyr:2021 pid:152cmcid:254 iyr:2020 hcl:z hgt:157cmiyr:2020 eyr:2020 hcl:#18171d ecl:gry pid:914128753 hgt:168cmbyr:2002hcl:#7d3b0c hgt:160cm eyr:2020 iyr:2015pid:054067854 ecl:brn byr:2023hcl:#cfa07d hgt:157cmbyr:1994 eyr:2027 pid:344443856iyr:2016pid:762423097iyr:2014 hcl:#a97842 ecl:brn hgt:180cm byr:1927 eyr:2021pid:6645616064 hcl:#ceb3a1 byr:2030eyr:2032 hgt:158cm iyr:2012ecl:#e9619eeyr:2022ecl:brnbyr:1986hgt:161cm cid:99 pid:288726584 hcl:#6b5442 iyr:2019cid:75pid:117771843hgt:184cm byr:1937 ecl:brnhcl:#d88fd9iyr:2015 eyr:2027iyr:2016 hcl:#fffffd hgt:170cm eyr:2022 ecl:oth pid:629454113byr:1952hcl:#c0946f iyr:2018 hgt:189cmbyr:1971 ecl:oth eyr:2029pid:800207810eyr:2022 hcl:#7d3b0c pid:969986413byr:1978 iyr:2020 hgt:186cmecl:gryhgt:171cm byr:1949 hcl:#341e13ecl:amb eyr:2030 pid:359107274 iyr:2013pid:839751525 eyr:2024 byr:1921iyr:2012 ecl:amb hcl:#b0ed6f hgt:154cmpid:32592758byr:2009hgt:107 iyr:2019 hcl:#866857eyr:2036 ecl:ambeyr:2040 hcl:#733820 cid:199byr:2027pid:7791792988 ecl:blu iyr:2026hgt:63cmiyr:2011 cid:119 pid:344693475ecl:grn hgt:160cm eyr:2029 hcl:#346973 byr:1996hgt:161in byr:2025 cid:167 iyr:2024 eyr:2040 pid:034804648hcl:#efcc98 ecl:othecl:#ba14f0 iyr:1935hgt:60cmbyr:2003 eyr:1987hcl:8e509b pid:161cmiyr:2018 pid:620508652 ecl:amb eyr:2023 hgt:183cm hcl:#a97842byr:1967 cid:117eyr:2022 ecl:ambpid:476049089 iyr:2012hgt:165cmbyr:1955 hcl:#602927byr:2014 hcl:z iyr:2029 cid:279 pid:28914607 hgt:75cm ecl:xryhgt:156cm eyr:2023 iyr:2011 ecl:oth hcl:#7d3b0c pid:561313217 byr:1952iyr:2011 byr:1935hcl:#cfa07d ecl:oth pid:830614209eyr:2028 hgt:173cmiyr:2012 cid:210 eyr:2022pid:652810130 hcl:#18171d ecl:grn byr:1960 hgt:152cmeyr:2026 pid:815848563 hgt:75in iyr:2019 ecl:gry byr:1947hcl:#cfa07dcid:181 iyr:2012eyr:2024 byr:1934 hcl:#c0946fhgt:165cm ecl:oth pid:232944581cid:135 iyr:2020byr:1971 hcl:#733820 pid:531877857 hgt:179cm eyr:2027 ecl:ambbyr:1987 hcl:936807 eyr:2032 ecl:#4bec4a pid:605628619 cid:180 hgt:150iniyr:2015hcl:b62ef0 ecl:#092141pid:876635399 byr:1944 hgt:158cm iyr:2017 eyr:1924iyr:2016 pid:7039815301 byr:2014 hgt:150 eyr:2032 ecl:blu hcl:zbyr:1979 eyr:2030 iyr:1978 hgt:63 pid:1554613758 hcl:z ecl:ambhgt:70cm hcl:e45897 iyr:2020 eyr:1977 ecl:dne pid:2878189427 byr:1973iyr:2003hcl:#cfa07dpid:260517078byr:2030 hgt:175cm eyr:2020ecl:brnpid:460604681 eyr:2022cid:138 iyr:2016 hgt:163cmbyr:1922hcl:#ceb3a1 ecl:othhgt:167cm byr:2009 eyr:1975 cid:295 pid:174cm iyr:2029hcl:zhgt:67in ecl:grneyr:2023cid:122 pid:281246917 byr:1990 iyr:2011 hcl:#866857ecl:#ed7ddc byr:1922 cid:234 hcl:e61b1e iyr:1932 eyr:1996 pid:31344005 hgt:62cmbyr:1949cid:275 iyr:2017 ecl:grnhgt:164cm eyr:2027 hcl:#18171dpid:751342937ecl:blu hgt:162cmpid:432600613 byr:1923 eyr:2029 iyr:2011 hcl:#623a2f cid:315iyr:2020hcl:#b2bb11 pid:055891584 ecl:grnhgt:67ineyr:2029 byr:1937iyr:2012hcl:#a97842 pid:325640714 ecl:blu hgt:185cm eyr:2024 byr:1971hcl:#b6652a pid:485327267ecl:brn hgt:155cm eyr:2028iyr:2019pid:902164867 hgt:77 cid:283 eyr:2027iyr:2020 ecl:hzl byr:1935 hcl:#efcc98ecl:grnhcl:#ceb3a1 byr:1977 hgt:165cmpid:850700221 eyr:2030iyr:2012byr:1989 ecl:brn eyr:2026 pid:919138357 iyr:2016hcl:#623a2f cid:319 hgt:161cmiyr:2017byr:1973 pid:293382118 hcl:#341e13 cid:143 ecl:hzlhgt:166cm eyr:2022pid:517102798hcl:f9d9ddeyr:1933 iyr:2019 hgt:164cmbyr:2017 ecl:utceyr:2023 pid:757868802 hcl:#18171d cid:244hgt:156cmecl:blu iyr:2015 byr:1926eyr:2022iyr:2020hgt:158cm ecl:grnbyr:1988pid:979194751 hcl:#888785eyr:2039pid:3867868142 byr:1936 ecl:dne iyr:2022 hcl:4b43b8hgt:115 cid:241iyr:2015 eyr:2026hcl:#ceb3a1 pid:539099924cid:234ecl:brnbyr:1920 hgt:163cmcid:259 iyr:2020pid:949453818 eyr:2022 hgt:181cmbyr:1997 ecl:blu hcl:#18171dbyr:2016iyr:2012ecl:utchgt:68in eyr:1993pid:1542134802 hcl:486699cid:239iyr:2018hgt:154cm ecl:brn byr:1970eyr:2021 pid:581775861 hcl:#888785iyr:2012eyr:2027 hgt:67cm hcl:#efcc98 ecl:zzz pid:312104916 byr:2020hcl:#b6652a ecl:hzl eyr:2023 iyr:2012 pid:513268492hgt:159cmhgt:162in hcl:zbyr:2029eyr:2023 ecl:#e2e7ab iyr:2016 pid:65979982cid:84 hgt:71in ecl:blu pid:982719716eyr:2020 iyr:2014eyr:2028 hgt:181cmecl:hzl pid:255796693 hcl:#341e13 byr:1994 iyr:2011 cid:218ecl:blubyr:2029 iyr:2017 pid:468504566 eyr:2020 hcl:z hgt:163cmhgt:158cmeyr:2025 ecl:hzl cid:295 pid:601339484hcl:#7d3b0c byr:1991 iyr:2013eyr:2028iyr:2018 pid:2236240873hgt:172cmecl:#0e337e hcl:#b6652a cid:108 byr:1930ecl:gry hcl:#888785eyr:2020 pid:442479017 iyr:2016iyr:2014 ecl:grncid:313 eyr:2023hgt:183cmbyr:1976pid:499580308 hcl:#53efe6eyr:2034cid:235 hcl:8f3cf5byr:2027hgt:161in pid:3259965094 ecl:xry iyr:2026eyr:1978 byr:1925 iyr:2018 hgt:170cm ecl:#0c94e8pid:562699017 hcl:#816949eyr:2023 hcl:#866857 hgt:179cmpid:785862442 iyr:2014 cid:165 ecl:amb byr:1939hgt:187cmpid:64469711 ecl:gry eyr:2023 cid:225 hcl:#341e13 iyr:2011 byr:1958hgt:162cm byr:2028 ecl:#37e345eyr:2037 hcl:19fb3diyr:2021pid:#87921aeyr:2027 hcl:#18171dbyr:2002 ecl:gry iyr:2014pid:561506850 hgt:177cmhgt:64cm pid:#a92686eyr:2029 cid:122byr:2026iyr:2017 hcl:z ecl:grneyr:2028 byr:2007 hgt:155cm ecl:#86fa1b hcl:#733820 pid:562889497iyr:2019pid:880698787byr:1992hcl:#7d3b0c hgt:163cm ecl:hzliyr:2011 eyr:2021eyr:2020 byr:1994 iyr:2011 hgt:186cm pid:841855425 hcl:#cfa07d ecl:grybyr:1923 iyr:2015 ecl:amb pid:414655744hcl:#b6652ahgt:159cmeyr:2026hgt:171cm ecl:amb pid:363065723 iyr:2020cid:66 hcl:#b6652a eyr:2021byr:1960eyr:2002hcl:2627b2 ecl:#1bf21d pid:168cm byr:2024 iyr:2020hgt:186iniyr:2011 byr:1924 eyr:2024hcl:#b6652a ecl:brnpid:794477411 hgt:162inhcl:z hgt:67cmbyr:2025pid:582569979iyr:2013ecl:oth eyr:2025cid:50 hcl:931e2chgt:172in eyr:1994 iyr:2023ecl:#cd2204byr:2015pid:157cmhgt:173cm eyr:2028ecl:amb pid:569607283byr:1942iyr:2019cid:228hcl:#866857cid:109ecl:oth eyr:1933 byr:1982 pid:173cm hcl:#b6652a hgt:174cmiyr:2023cid:69 hcl:#9ad05b pid:341135641byr:1968 ecl:brniyr:2012 hgt:156cmeyr:2020hgt:176cmbyr:1954 ecl:blueyr:2020pid:478462637 iyr:2019hcl:#888785iyr:2026 hgt:193inbyr:2018 pid:162cm hcl:605e7f eyr:1948 ecl:utcbyr:1962eyr:2022 pid:445346117 iyr:2019 hgt:158cm hcl:#623a2f ecl:hzlcid:278 hgt:187cm eyr:2024 iyr:2016 byr:1964ecl:grn pid:450739552 hcl:#733820ecl:grn byr:2000 eyr:2023pid:344489911 hcl:#7d3b0c iyr:2011 hgt:177cmiyr:2015 hgt:180cm cid:190 hcl:#a97842 pid:359774842 eyr:2029 byr:2002 ecl:ambeyr:2027 iyr:2015 ecl:hzlpid:082733109byr:1975 hgt:191cm cid:251 hcl:#888785hcl:#c0946f iyr:2015hgt:167cm byr:1990 ecl:amb pid:168cm eyr:2023ecl:gry eyr:2028byr:1934 iyr:2013 hcl:#6b5442pid:424412120 hgt:173cmpid:273352568eyr:2024iyr:2013 byr:1926 hcl:#602927ecl:brn hgt:180cmhcl:#7d3b0c hgt:70in ecl:amb iyr:2019byr:1937eyr:2030 pid:309011548ecl:grnhgt:64in pid:796889811 hcl:#18171dbyr:1929 eyr:2027ecl:amb hcl:#888785pid:412449028 cid:316 byr:1982iyr:2019 eyr:2030 hgt:193cmeyr:1927hcl:z hgt:158cm byr:1930ecl:lzr iyr:2018cid:197pid:0906120002ecl:grn byr:1970 hgt:181cmpid:376212702 eyr:2030 iyr:2017 cid:266 hcl:#f8b0f5iyr:2018 hgt:73in pid:652356158 hcl:#c0946fecl:grn byr:1973cid:170 hcl:#b6652a byr:2011ecl:gry iyr:2025 pid:#b6e567 hgt:67cm eyr:2016hgt:192cm ecl:amb eyr:2026 pid:201824712 hcl:#888785 byr:1966 iyr:2019iyr:2013 byr:1995 eyr:2028 hcl:#b6652a ecl:brn cid:53 pid:705606447 hgt:176cmhcl:#341e13 byr:1951hgt:161cm pid:231973770 iyr:2015 ecl:hzleyr:2030cid:210 ecl:brn iyr:2017 eyr:2030hgt:176cm hcl:#efcc98byr:1965eyr:2020 hcl:#7d3b0cpid:872088079 ecl:oth iyr:2017 byr:1920hgt:180cmhcl:#0b540c iyr:2019byr:1938hgt:153cm ecl:gry pid:236785988eyr:2020eyr:2020 hgt:184cm iyr:2019pid:673186642 ecl:oth byr:1977 hcl:#866857eyr:2025ecl:gry hcl:#341e13 byr:1970 iyr:2010 pid:972122542 hgt:184cmecl:grn byr:1992 hgt:71iniyr:2014 cid:254 hcl:#fffffd pid:749733013eyr:2026cid:98 ecl:amb eyr:2022hgt:169cm pid:022677680byr:1937 iyr:2014 hcl:#e62c71hgt:192cmiyr:2015eyr:2028 ecl:oth pid:6000619833 hcl:#c0946fbyr:1930byr:1938 hcl:#efcc98 hgt:178cm iyr:1953 eyr:2038ecl:brn pid:#cdc55ahgt:66in byr:1951 iyr:2016 hcl:#18171deyr:2027ecl:lzr pid:834188980iyr:2012 eyr:2025hcl:#7d3b0c pid:330325803 cid:166 hgt:186cm byr:1938ecl:ambiyr:2015 hcl:#602927 cid:268 eyr:2021ecl:amb hgt:186cm pid:318676962hcl:#3d6f3c iyr:2014 pid:665730784 cid:191 hgt:150cm byr:1981 ecl:oth eyr:2024ecl:grn hcl:#733820eyr:2028 iyr:2010hgt:162cm byr:1944 pid:872962499eyr:2028 byr:1974ecl:brniyr:2010 hcl:#18171d hgt:160cmhcl:#602927byr:1959 eyr:2027 iyr:2016 ecl:brn hgt:169cm pid:078503025hcl:#623a2f pid:326300051 hgt:153cmbyr:1973 iyr:2012ecl:gry eyr:2026hgt:151cmbyr:1966 eyr:2029 pid:026952622 hcl:#18171d ecl:gry iyr:2010hcl:#7d3b0c byr:1974 pid:444713591 iyr:2017 eyr:2030hgt:165cm ecl:othiyr:2026 pid:184cmecl:gmt hcl:z hgt:71cmeyr:2029cid:310 hcl:#fffffd byr:1998pid:450705840 iyr:2015ecl:grn eyr:2021 hgt:165cmbyr:1939 hcl:#623a2f ecl:gry hgt:69in pid:539812641 eyr:2027 iyr:2013pid:207645014iyr:2015cid:314 ecl:othbyr:1942eyr:2027 hgt:186cm hcl:#fffffdecl:#fb7e3d eyr:2031 iyr:1956hgt:188 pid:160cm hcl:z byr:2027byr:1972 iyr:2020 eyr:2026 hcl:#b6652a pid:289088329 hgt:65in ecl:gryeyr:2027hgt:59cmbyr:2022pid:938063769 ecl:zzz iyr:2028 hcl:23c762byr:2004 hgt:74 iyr:2017eyr:2040 ecl:blu pid:4611117799 cid:73 hcl:zecl:brn byr:1962 cid:321iyr:2019 eyr:2026hgt:159cmhcl:#667310 pid:439864945iyr:2026 eyr:2039 pid:633263851 cid:321 ecl:lzr hgt:166cmbyr:2023 hcl:fc3c63byr:1961 iyr:2010 ecl:blueyr:2023 pid:245858010hgt:193cm pid:821303249 eyr:2020 hcl:#6b5442 cid:130 byr:1946eyr:2026 ecl:brnhcl:#733820 byr:1983 hgt:182cm pid:727380954 cid:188 iyr:2015hgt:152cm cid:206 iyr:2012 byr:1947 hcl:#888785 ecl:grypid:720312394 eyr:2023hgt:150cm ecl:gry pid:863712648iyr:2019 cid:349 byr:1976 hcl:#602927 eyr:2022hgt:164in pid:953500867eyr:2021iyr:2014hcl:z cid:343 ecl:ambbyr:1981 pid:529710230 iyr:2013 eyr:2023hcl:#c0946f ecl:ambhgt:151cmpid:706204190 hgt:154cm cid:317hcl:#602927 byr:1949 ecl:blu iyr:2010 eyr:2028iyr:2019 hcl:#0219e6pid:850093151 ecl:gryeyr:2030byr:1938 hgt:177cmecl:brn hcl:#efcc98 eyr:2029 byr:1963hgt:185cm pid:611279647 iyr:2011ecl:blu eyr:2022 byr:1941 hgt:167cmiyr:2012 hcl:#7d3b0c pid:415739564cid:193eyr:2027 ecl:blu byr:1968 pid:479994566hcl:#733820 hgt:151cmiyr:2011pid:263729839 hgt:189cm eyr:2030 ecl:gry byr:2001 hcl:#602927byr:1985ecl:amb pid:672663977 cid:139hgt:159cm hcl:#733820 iyr:2018 eyr:2020byr:1998hcl:#cfa07d eyr:2023 pid:255046063 iyr:2011 ecl:blu hgt:177cmecl:othbyr:1980 pid:253747166 eyr:2029hcl:#6b5442 hgt:186cmeyr:2030 hcl:#866857hgt:165cmecl:ambiyr:2017 pid:241240220 cid:164 byr:2001byr:1994 hcl:#b6652a iyr:2015pid:753831241hgt:175cmeyr:2027 ecl:bluhcl:#b6652a pid:471594512byr:1961 ecl:hzl hgt:175cmiyr:2020 eyr:2025byr:1987 pid:112366159eyr:2028 hcl:22b2d7hgt:64in cid:222ecl:#b40dca iyr:2019iyr:2015 hcl:e1ed55 hgt:160in ecl:utc byr:2015 eyr:2036byr:1935hcl:#7d3b0c hgt:152cm ecl:grypid:160090332 iyr:2020 eyr:2020pid:552779024 byr:1998 hgt:185cm ecl:gry eyr:2026 iyr:2013 hcl:#d46cd6ecl:oth pid:311860969cid:57hgt:60ineyr:2026hcl:#ceb3a1byr:1961 iyr:2011eyr:2021 hgt:162cm cid:240pid:259997995hcl:#efcc98ecl:gry byr:1962 iyr:2017hcl:#866857iyr:2016eyr:2029ecl:blu byr:1927 cid:249 pid:665324615 hgt:65inbyr:1931cid:331hgt:66inecl:grn iyr:2020 hcl:#efcc98 eyr:2025 pid:175780921hgt:98eyr:2040 ecl:blu byr:2029iyr:1967 hcl:0d76e9pid:#c9053a cid:296pid:370918950hcl:#602927byr:1938hgt:178cm iyr:2018 eyr:2030ecl:othhgt:185cmeyr:1984 ecl:oth pid:851080398hcl:z byr:2027 iyr:2017pid:095078224 byr:1957 hcl:#45bcf4 ecl:#f643f9 hgt:63cm eyr:2036 iyr:1978hcl:zeyr:2023 ecl:oth hgt:162cmiyr:2016 byr:1938 pid:#fdcddfhcl:#341e13 iyr:2013 hgt:189cmpid:982271041 ecl:brnbyr:1930 eyr:2030eyr:2026iyr:2012 hcl:#cfa07d cid:59 pid:105862717 ecl:bluhgt:159cm byr:1943ecl:hzlpid:604172804 iyr:2016 hgt:174cm cid:79 eyr:2025hcl:#733820 byr:1994iyr:2011 pid:452628771 ecl:gry hgt:182cm hcl:#623a2feyr:2023byr:1986hcl:#341e13 iyr:2010 byr:1946 eyr:2021cid:350 pid:049684494 hgt:180cmecl:grniyr:2020hgt:173cm pid:384503937byr:1986hcl:#341e13cid:113eyr:2025 ecl:ambhgt:180cm byr:1949hcl:#733820 iyr:2010 eyr:2030cid:123 pid:065609606 ecl:othiyr:2010 eyr:2028pid:231750173hgt:63in ecl:brnbyr:1948 hcl:#18171diyr:2020 hcl:#623a2fecl:grybyr:1922 pid:961213634 eyr:2022 hgt:177cmhcl:#18171d eyr:2020 iyr:2014 byr:1983pid:183568344 hgt:72inecl:gryeyr:2023 pid:102781246 ecl:brnhcl:#888785 byr:1929 hgt:167cm iyr:2010pid:362873066 byr:1994 hcl:#de545f iyr:2018 hgt:177cm ecl:blu cid:86eyr:2024hcl:842f2d iyr:1983byr:1954 eyr:2037ecl:lzr pid:3915492573 hgt:166cmecl:grnhcl:#fffffd iyr:2014hgt:173cmbyr:1939pid:930650489eyr:2025eyr:2028 ecl:brn hcl:#7d3b0c hgt:166cm byr:1938 pid:992958531 iyr:2011pid:101149939 eyr:2024 iyr:2018 hgt:165cmecl:hzlhcl:#ceb3a1 cid:176cid:62pid:651390352 hcl:#efcc98iyr:2018eyr:2027ecl:brnhgt:66in byr:1953hcl:#623a2f byr:1978iyr:2013hgt:180cm eyr:2027 ecl:amb pid:836425641pid:557464096 hgt:155cm ecl:blu cid:142 byr:1936 iyr:2010hcl:#cfa07d eyr:2027ecl:gry iyr:2024 hcl:#341e13 pid:442593279 cid:314 hgt:186cm byr:1960eyr:2022cid:123 iyr:2014byr:2000pid:878733390 eyr:2021 ecl:hzl hgt:162cmbyr:1959 cid:259pid:722895016ecl:brn iyr:2018 eyr:2027 hgt:185cmpid:163697814 ecl:hzliyr:2013 byr:1932hgt:68in cid:286 eyr:2025 hcl:#efcc98byr:1927hgt:72cm ecl:otheyr:2021 hcl:#99e959pid:669724466 iyr:2010byr:1943 iyr:2011 eyr:2024 pid:384419879 ecl:hzl hcl:#7d3b0c hgt:170cmpid:137944386 ecl:grybyr:1953 hcl:#733820 iyr:2013 eyr:2025 hgt:184cmiyr:2017 eyr:2023 pid:288078785hgt:179cmbyr:1993 hcl:#602927 ecl:hzlecl:brnhgt:187cm eyr:2024 byr:1971 iyr:2020 hcl:#b6652a pid:622975646cid:290pid:371817422 ecl:blu byr:1964iyr:2018eyr:2021 cid:176hgt:153cm hcl:#888785byr:2002cid:256 iyr:2014 eyr:2024 ecl:blu hcl:#18171d hgt:187cmpid:050022911hgt:178cm pid:211144001 eyr:2027 iyr:2013byr:1947hcl:#7d3b0c ecl:grneyr:2025 ecl:blu pid:046417901 byr:1950iyr:2015 hgt:165cmhcl:#7d3b0c cid:128ecl:hzl eyr:2029iyr:2015hgt:171cm hcl:#341e13pid:561680375 byr:1997byr:1948 iyr:2023 pid:17288381 hcl:6a34a3 ecl:#671ece eyr:2001cid:152eyr:2036 hgt:141 iyr:1957 byr:1987 hcl:zpid:86986187 ecl:utceyr:2024 hcl:#b6652a iyr:2017 ecl:blu byr:1988 cid:348 hgt:152cm pid:068684272iyr:2011 pid:989825275cid:78 hcl:#341e13 byr:1983 ecl:blu hgt:158cm eyr:2020ecl:grn hgt:187cm eyr:2027 iyr:2015hcl:#866857 pid:240650427byr:1940cid:91hcl:#888785 cid:185 byr:1925hgt:155cm iyr:2015 ecl:blu eyr:2027 pid:851697441iyr:2016 ecl:oth pid:056439470 byr:1985 eyr:2026hgt:154cm hcl:#282539ecl:hzl hcl:#a97842iyr:1944pid:118846711 eyr:2026 byr:1922 hgt:185cmiyr:2020 hcl:#733820pid:854531642 hgt:165cmecl:hzl eyr:2022iyr:2014byr:1957 hcl:#7fa674 hgt:189cmeyr:2023 pid:740871941 ecl:brnecl:amb cid:349 hgt:170cmbyr:1952 hcl:#ceb3a1 iyr:2020eyr:2026pid:730499325eyr:2027 ecl:ambbyr:1975 pid:985687961hcl:z hgt:157cmiyr:2013cid:133ecl:bluhgt:193cm iyr:2015 hcl:#10f2ba byr:1989 pid:939704495 eyr:2021ecl:oth eyr:2025 hgt:69in iyr:2014 cid:258 pid:477970733 byr:1984 hcl:#b6652ahcl:z byr:2013ecl:zzzpid:1904741884 hgt:180 cid:138 eyr:1985 iyr:1935eyr:2025iyr:2026 hgt:190in pid:#43ca33ecl:#3e1ef1 hcl:#7d3b0c byr:2030eyr:2029 hgt:191cmbyr:1986 hcl:#ceb3a1 cid:327 pid:795060714 iyr:2012 ecl:hzleyr:2025 iyr:2017 ecl:grnhcl:zpid:8886398 hgt:174cm byr:2016hcl:#a97842eyr:2021 ecl:grn iyr:2013 pid:565234133 byr:1998hgt:161cmeyr:2029 hgt:163cm byr:1933 cid:86 iyr:2011ecl:grnhcl:#fffffdpid:818769307hgt:190cm eyr:2030 hcl:#af5b5d iyr:2011 ecl:brn pid:359524299 byr:1969ecl:amb iyr:2011 eyr:2022cid:141byr:1978 hgt:69in hcl:#fffffd pid:013006109ecl:blu hgt:164cm iyr:2019 eyr:2027 pid:899103430 hcl:#cfa07dbyr:1976eyr:1938ecl:#a03c41 pid:708735698iyr:2030hgt:184cm hcl:#b6652a byr:2013ecl:hzl byr:1997 hcl:#a97842 cid:60 pid:172cmeyr:2023 hgt:161in iyr:1936ecl:hzlbyr:1938 pid:094889181hgt:162cm iyr:2020eyr:2028hcl:#623a2fhgt:162cm cid:86hcl:#623a2f pid:738174580 ecl:brn byr:1980 eyr:2028 iyr:2014byr:2007 hgt:150in hcl:zeyr:2032ecl:#114f3biyr:2030 pid:5129772ecl:hzl iyr:2017hcl:#18171dpid:696283412 byr:1976 hgt:168cmeyr:2028eyr:1922 ecl:#84b0d4 byr:2013 hcl:#ceb3a1 pid:150cm iyr:2030hgt:71cmhgt:164cm byr:1949 ecl:gry eyr:2026hcl:#623a2fecl:othiyr:2013 hgt:166cm hcl:#50e385pid:478852286eyr:2030 byr:1930cid:129iyr:2020 byr:1978 pid:907580992 eyr:1955hcl:#602927ecl:grn hgt:165cmecl:blu iyr:2018 byr:1953hgt:177cm pid:126681706 eyr:2025 hcl:#c0946fbyr:1984 pid:275799917ecl:oth hcl:#623a2f cid:348 iyr:2020hgt:189cm eyr:2024iyr:2016ecl:hzl byr:1954hcl:#623a2f pid:810508839 eyr:2026hgt:185cmbyr:1967eyr:2021 hcl:#ceb3a1pid:406634908 hgt:158cm iyr:2018 ecl:hzliyr:2019 eyr:2030 pid:995681076 hcl:#341e13cid:101 hgt:162cm ecl:blu byr:1925eyr:2026 pid:272513479 hcl:#b6652a byr:1973 iyr:2016 ecl:amb hgt:182cmpid:298704871 eyr:2024 hcl:#efcc98 byr:1959iyr:2014 hgt:191cm ecl:grnhgt:193cm pid:750729809 ecl:othcid:324iyr:2011 hcl:#efcc98 byr:1954 eyr:2020byr:1966 iyr:2019 eyr:2025 ecl:#2df4b6hgt:184cm pid:#fc17f4 cid:161 hcl:#602927byr:1955 hcl:299464 ecl:ambhgt:157cm iyr:2017 eyr:2021pid:239450987hgt:172cmecl:hzlpid:839804598hcl:#341e13 eyr:2030 byr:1964 iyr:2013iyr:2018 hgt:152cm byr:1948 hcl:#623a2f pid:400121515ecl:blueyr:2020cid:296ecl:grnbyr:1960 iyr:2028 pid:#1f4b95 eyr:2033 hcl:#602927hgt:66cmiyr:1933 ecl:#232e20 pid:#d03ca7eyr:2030 hcl:598ed6 hgt:154in byr:2011cid:247 ecl:grn iyr:2014hgt:178cmbyr:1992 hcl:#602927 eyr:2021pid:678964478iyr:2010 pid:623705680ecl:hzl hgt:181cm byr:1980 hcl:#341e13 eyr:2028
..#......###....#...##..#.#.....#.#.....#.##.....###...##...##..#.#..#...........#.#..#........#......#..........###...........#..###..##.#..#.......##..##......#.#.##...#...#....###..............##.....##..##......#.......#...........#............#....#..........#...............#........##.............###.##....#.........#.......#.#....###.#..#..#..#.......#...#....##..#........#......#.##.......#....#.....#####.....#....#..#..##.......#..##.......#......#.###..#.#...#......#.##...#........##...................#...##..#.......#...#.##...##.#......#..#.#.................#..##...#......#.....#.......##.....#.#...........#.#......#.....#..#..##...........#........#.............#.#...........................#.##..#.#...#...#.........#........#....#.....#..#.....#........#.#.#.....#.#..#.......#..#......#...###...##...#......##..#.###......#.#...#.#.#..###....#.....#..##......#..........#.##...............#........#.#..#.....#..#.........#......##.#.......#.##.##..#..##...............#......##...............#.#..#..#.#............##.#........#.....#..###.............##.#.....##..#.#..#...........#..#...#....#.........#.#.............##.#.........#..###......#.#..#...#...#......#.#.#.##..#.##........##............#.##.##..#......#................#.##..#..#...#..#.......#...#..#........#....#...#...#................#.....##...............#.#...#....#.....###...#.......#.##..........######.#..............###.#.#..#.........##...............................##.#..#....###........#............#.#..#..#........#.#...............##.#......#..####.#...#..#..#......#......#.#...#.....#.........#..##.##..#...#......##....##.#.#....##.#.........##...#....#........#.#..#...#.#..#.......#...#.#.........#..#.....##..#..........#......#..##.....#..#...###....#...#....#.#..#..#.#.#..#.#.....#..#####.....#......#.......#.#............#......#..#...#..........#..........###.......#......#....#..#.##.#......#..#............##.#....#.#..#........#...................#..#.#...#....##.............##....#...###..#....#.........#..........#....#.#.#...#..#........#.##..#...............#...#..##..#.....##.......#.......#...........##.........................##...#........#.#..#..##..####.#.......................##.....###...#.......#..#......#......#...#..#.........#...#..........#.............#......#....#.........#......#..#...#..#...##....##....#.#..#..#......#.....##.####.......#.#....#.......#........#...#.#...##..##.#......#.......#.........#......................#..........#.#......#..........#.....##....#..........#.....#..........##..#..#..##....#.#.##.#..........#...#.##.......##...###....#..#.#...#..#.........................##.............#...##.#...........#....#.##...#......#..##..#....##..#...#...#....#.....#.##..#.......#..##...#....#..#.#....#......##..........##..#..........#..........#.............##.#.....#...#................#....#...#...##.##...........#.......#.##......#..#...........#.........#.........###.............###.##..##..........#.#.....###.......#.....#.##....#.#..........#....#..#........#....##...#..#..............#..........###..#.#...........#.#......##.....#..##...#..#.......#......#...#...#...#.#.#..........##.......#.....##.####.#...#....#.....#...#......#..#.#.#..#.##.#..#..................#..........................#..###..#...#...#..#..#...#.#.#................##...##.##..........#...#...#..........#...#...........#.....##...............#.#......#........#.......#..........##.............#..............#......#.##.#..#........#.#.#....#........#..........#.##..##......#..#..#.....#.#..####..#..........#...............#.....##...#.#......#.......#.##.....#...#....#..#.....##.....##..........#.#.....#....#...##..##.###..#.....#.......#...#...#.#.......#......###........#..#..............#.#..###........#....#..##.........#..#.#.........#....#.#....#..#.......##.##.......#.......#.........#.......#....#....#.....##..#..#.#.#........#....#...........#......#......##.#.#.##..............#..#.#.....##........#........###...#.#.......##.......#...#..#...#.....#.##...##.#.....#........#..##...#........#.#...#......#....#.#.#..###...##.#.....#......#..#.....#..#........##.........#.....#.#.........#.#..#..#.......#.#.#.#.#....#.##...#.#...#........#..##..#......#...#..#............#...#..#.#.......##......#......#..............#...#.#.....#.....#..##.#.....#......#.#......#..#.#..........#..........##...#.#.....#..#.#...#.....#..#...#...............##.................#....#.....#....#.......#..##....#......#.#....###............##....##.###..#........#..#...#.......#.......#.....#.#.#.##.........#.........#..#....#...#...#..........#...#...#.#.#..#.#.....#....#.#........#..#.##..#..###.......................#..#.........#.#.....#..##.........#.......####..#.......#..............#........#..#.....###..........#......#.#...#..#...........#.#......#.....#.......#.....#.#.....#.....##..#......##...........##...###...........##..#...#.##.......##.##.#...#..#....#.........#.#......##.#......##....#.#..............#.#.###.......#..........#....#.......##..#..###...#.....##.#....#......##..#.#..##........#.....#.#..#...#....#..#.##.........#.....#...#..#..#..#....#...........#.........#...#....................#....##.....##....#.............#.#.....#.#..#.#..#.#.#..........##.............##.#.....#..#..#...#....#.....##...#.###...........#........#........#.#..###....##....#...#...#.......#...#.#...#...#...#..##........#..#......##.#..#..#.....#......#.#..#..#........#..#....#..#...........#.#.....#.##..#........###.#......#.##.....##.#.............#.........#.......#...##...#.....#.##.#..#..#............#.....##....#..#............#.....#.###........##.....##.#...#.....#......##..##.#.#.#.#.#.#..##.......###.....#....#......#....#........#.........##...#....#.#.#.#.....#.#..#..##......#...#....#.##....#..#.###..#..##.........#..........##..#..#..#..#.....#..#.##..#..#....#.........#.....#..###.#.....#.....#..#.........#...#....#.##...#.#.......#.###..##.....##.##......##........#.#...........#.#.........#........#...#..#......##.#......#.......##....##....#.##.#..#...###.#.........#......#.....#..#.##..#....#.....##...#.##.......##.##.............#...#....##..#...#..#..#..#..................#.....#.....#................#.##.......#..#.#.....#....##.....##.........#......##..........##..........#..#...#..#...#...###....#.......#...##.......#....#..#......#.....#...#.#..#........#.#.#...#.....###.#.####...#...##..#..#....#.............#............#..#.....#....#......#.........##....#........#..#..#........#.............#.##..........#......#.......#..#............#..#....#.............#.#.....#.##...#.....#.#......#.#..#...##..#...#.#.#......#....#..#.........##..#.#.#..##.#...#..............#.......#..#...#.....#.#........##......##...#....##.####.#.........#.#.#....###.#..#............#.#..#.....#......#...#......##.#.#.#......#..#.#.##.#...##..........##..#...#.#...###.............#....#...#..#.....#.#..#..#..#..#..........####......#.....###..........#........#.##.#...#............#..........#.#..###........##........##.........#...#..##....#...#.......##..............#.#......##....#...#...#...##..#..##............................#...#..#..#...##....#....#...#.......###...#..#..#............#.....##.##.#.......#..#.##......#...#....#..#......##..##....#..#....#...#...#................##..#..#.#.#.....##......#..............#..#.....####.#.#.#..#.......#.......#........#.#......#..........#.........#...#.#..#.......#..#..#..#..........##.#...#..#....#.....#...##...##....##...#........####.....#.#..##....#...#....#.#.........#.....#..#..#.#.##..#.......#....#..............#....#.....#.#.#.....##.#.....#..##.........#.....#....#...#...#..#.#..#...#...........#..#..#...........#.#..#.........##.#...#..##.......#.#.........#.#...#............#..##.###......##.#....#......#...#..#.......#...........#...#.......#.....###......#.............##.....#..#..#....#...#....#..#...#......#.......#...#...#...#.#..#....#...#.............#....###.####...###.#...#.##.#.......#.......#....#.#.#.##..........#.....#..###...........#...........#.##..#....#..........##.....#.#........##...#..#..#..................##....#...###..........#....................#.#.......#.#.......##.......#.#...#....#...####.....#...##.....##.......#....#.......##..........#...#..##....##..............#..#......#........#.##..#....#..#....#.....##....#.##.##.....#...##.##.......#......#..#.###.#..##.#..#..#...#....#..#.....#........#...##.#......#..#.....#.#......##.#.#......#..##...#.#....#...#...#.#.##..........#...#....###.#.....#.............###.#.#..#..#...#.#.##...#......##...........#..#...........##..#...#.......#.....#......#.#..........#..#..........#.................#....#....#....#......................##.##.......#..#......#.#...###.#...#....#..#.#......#..............#...........###.#.#...........#..##.....#.....##...##........#..#.#.#.#..#..#..##....#...##......##.....##..##.##...#....#.....#.....#.#........#........#.....#.................#....#.###....#...#............#.#.#..#...#.#......#.#..................#...#......#.....#.......#.........#.....#..........#....##..#......#...#...#.........#..#....#......#...##.#...#...#...#...#....#....#..#..#.....#..#.#......##..#..#.#.#..#.#.........#..#...............#...##...#............#..............#.##.#.#.#......##.......#.......#.....#.........##.......#...###........#.#...#.#.#.......#.........#..#..#...#....#.##.#.##......##.##.#...#......#..........#.....#...#.#...#.##..##.#............#.....#...#.#...##.#.....#.............#.....#....##..###......#.......#...#....#......###......#.................#..#.#......##.........##..#.........#....#..........#.#...........##..#.........#...................#...#..................#.#.............#.........#...#..#....#....#......#.#.......#...##..#............#.#.......#...#..#.....#............#..........#.....................###....#........#.####.........#.#.#...#...........##...#.........#..#...........#..#......#...#.#.......##...##.....#.....#........
import Control.Arrowimport Data.Listimport Prelude hiding (Left, Right)data Direction = North | East | South | Westderiving (Eq, Show)data Turn = Left | Rightdata Command = N Int | S Int | E Int | W Int | L Int | R Int | F Intderiving (Read, Show)data State =St { facing :: Direction, position :: (Int, Int), waypoint :: (Int, Int)}deriving Showadjust :: String -> Stringadjust [] = undefinedadjust (c:cs) = c:' ':csdirections :: [Direction]directions = [North, East, South, West]move :: Direction -> Int -> (Int, Int) -> (Int, Int)move North = second . (+)move South = second . (subtract)move East = first . (+)move West = first . (subtract)turn :: Turn -> Int -> Direction -> Directionturn t i dir =directions !! ((4 + ((dirpos dir + i * diroffs t) `mod` 4)) `mod` 4)where dirpos North = 4dirpos East = 1dirpos South = 2dirpos West = 3diroffs Left = -1diroffs Right = 1drive :: State -> Command -> Statedrive st cmd =case cmd of(N i) -> st { position = move North i pos }(E i) -> st { position = move East i pos }(W i) -> st { position = move West i pos }(S i) -> st { position = move South i pos }(F i) -> st { position = move dir i pos }(R i) -> st { facing = turn Right (i `div` 90) dir }(L i) -> st { facing = turn Left (i `div` 90) dir }where pos = position stdir = facing strotate :: Turn -> Int -> (Int, Int) -> (Int, Int)rotate dir i way = iterate (single dir) way !! iwheresingle Left (x,y) = (-y, x)single Right (x,y) = (y, -x)actual_drive :: State -> Command -> Stateactual_drive st cmd =case cmd of(F i) -> st { position = (x + xoffs*i, y + yoffs*i) }(N i) -> st { waypoint = move North i way }(E i) -> st { waypoint = move East i way }(W i) -> st { waypoint = move West i way }(S i) -> st { waypoint = move South i way }(R i) -> st { waypoint = rotate Right (i `div` 90) way }(L i) -> st { waypoint = rotate Left (i `div` 90) way }where (x,y) = position stdir = facing stway :: (Int, Int)way@(xoffs, yoffs) = waypoint stmain :: IO ()main = dodirections <- lines <$> readFile "input.txt"let dirs = ((read . adjust) <$> directions) :: [Command]let part1 = foldl' drive (St East (0,0) (0,0)) dirsprint $ part1print $ uncurry (+) $ (abs *** abs) $ position part1let part2 = foldl' actual_drive (St East (0,0) (10,1)) dirsprint $ part2print $ uncurry (+) $ (abs *** abs) $ position part2
F10N3F7R90F11
W3R180S1F2R90W3F81L270W5F30R90E5S3F44R180S4F21R270F2W3F36L90S1E3F86S2F98E4F93W5R90W5F4E4F6R90N2L90F52R90W4F30E5W5N4F1N3W2F89E1L90W1R90F67N5R90F95L90E4S4E2N4E4R90R90F99W1R90E4F26W5L90F89E2F18W3L90F64N2F69L90F81R90E4L90N5E2F25W4L180N2R90F82R90S3F64E4F11R90F93E2F18L90R180F13L90F37L90F63R90W3N2E2F90E5L90F1W1S5W2E5S1L90E3N4L180F26E1L90W3L90S5R90F40N3W2F85E1R270F87W2F87N3E1S4E3W3F55S1E2N3L90F44W4L90F5S5F97S3R90S2E4N3F39W2F43N1W1N2E1L180N2W4S2W1R180E1N1F5W2S2L90E4L90N3W4L90E3E1S5E2L180F86W1L90W5L90E4F63W5R180F98E3F67W4E2N4L90E3L90F97L90F21N1R90F34L90L180F30E4N2R180N1R180N4F77L180N5S1F81W1N5F77S2W2S4E2F19R90R90N2F57S4L90W3R90N5W3F16L90E4W2S3L90N5R90F93S3W5R90F80N4R90N1F95S3R90F38R90F81E2S1E1L90N5W2L90N1R90E5F79S3E5N3F92N2W4S3L90F79W4L90F46S4L90S5R270F33W5L90F46W5R90S3R180W4E4R180F87N5F63S2E2F35W4F19R90S3E3R180E4F14E5L270F35L180F74R90S4W1F36R90S2F1L90S4F55E4N1L90S3N3W5S4L180W1S3F30S3E2F25S4F29L90W1L90F60W2S3W1S2R90F82S5L90E4R90W1F92L90F35W4F94L90F56F52L180E2S5W1L180N3E2E1F15L90F49L180F57L180F86S1R180N3F59W4F17R90W3F7L180N3L90E3F57L180W4S1L90S3F7E2S5F36E3F87L90L180F58R90N1L270F24N5F3F65S2R90F62L270F94E5N2F79R90E4F43W5N3F81N5R90F22W2R180N2L90E5F39E4F8W4N4W4S4L90S1L180W3L90N1R90W4R90F7W4F40E5L90R270E4R90F34W2R90N2L90F45R90E5R90N2F11L90F80S2E2R180E2L180S1F39L180N4F99R270W4L90R90W1E1S5R90F91W4F93L180E1F15N2R90W4F26S2R90N5L90N4W4S3F25E4F38L90W1F86E5L90W5L90F21W2F99L90N4L180F40S2W4F70W3F32N1W1L90N5R90W3F99W3N2R90S3E2L90N5F36S1L180W4S5E4F54L90S5E2L90F14W1N1R90S5E4F32R90N1F23E4N4W4F57N2R180E2S4F70L90W4S3F57L90E3N5R90N4W4N5W5R90W4R90E3L90N2F93L90R180S4F28E3R90S2E3R90L90F49R180F12L180N4R180S4R90S5R90F96N4F14L90S1E2L90N3R90E2W2L180N4R90W3L90N4F69E1L90S3F62R180N3F64W1S4E1L90S3F85E2L90W3R90F92N5W2N1W1R90F1R90E2R90F34N5E2N2F79L180F63L90W2F16F81S1R180F52N4W1S3R90F58E5F99W4N3L90W4F39S2F12S1W5S2F30E2F21E2N2W5L90N1W1W3N5F65S1L180F94W1L90S2E5N3F46L180S3F1L90F77N3F36N2R90F54F65N4F99E5L180E4S3E1F83E4F50N2W2R180W5R90F96L90F7E4W2F11L180N5L180S1F92S3F3
readlayout =: 3 : 0d =. 1!:1 yd =. toJ dd =. cutopen d> d)slice_spec =. 1 1 ,: 3 3step_individual =: 3 : 0curr =. (< 1;1) { yfl =. curr = '.'occ =. curr = '#'nums =. > ('#' & =) each > yNB. (+/ & ;) = sum . flattenNB. ((< 1;1) & {) = item at index 1,1NB. ((f g h) x) = (f x) g (h x)NB.NB. so this line sums the box and subtracts the middle value, hence gettingNB. the number of adjacent, filled chairs.adj =. ((+/ & ;) - ((< 1;1) & {)) numsif. fl do. '.' else.if. occ do.if. (adj >: 4) do. 'L' else. curr end.else.if. (adj = 0) do. '#' else. curr end.end.end.)one =: 3 : 0curr =. (< 1;1) { yfl =. curr = '.'occ =. curr = '#'adj =. ((+/&;)-((<1;1)&{))>('#'&=)each>yetf =. (]&'L')`(]&'#')@.(=&0)fte =. (]&'L')`(]&'#')@.(<&4)((etf`fte@.(]&occ))`(]&'.')@.(]&fl))adj)step =: 3 : 0padded =. '.',"1('.',y,'.'),.'.'NB. step_individual =. (+/ & ;) - ((< 1;1) & {)slice_spec step_individual ;. _3 padded)part_one =: 3 : 0seats =. readlayout < yfinal =. step ^: _ seatscounts =. > ('#' & =) each > final+/ ; counts)NB. angles =: (< 1 0) , (< 0 1) , (< 1 1) , (< 1 _1)NB. angles =: angles , <"1 (_1 _1 *"1 > angles)NB. the verb applied to angles above is "multiply each coordinate by -1, -1"angles =: (, (<"1 @: (_1 _1 *"1 >))) (<1 0),(<0 1),(<1 1),(<1 _1)NB. From here, I wasn't able to figure out how to bend J to my will enough toNB. accomplish what I wanted to do.NB.NB. The struggle came in building line-of-sight vectors for each seat. MyNB. initial plan was to do it by constructing a table of each seat coordinate,NB. then using [angles] above to draw rays out in all 8 directions, but thatNB. became pretty painful pretty quickly and I wasn't particularly having funNB. anymore.
L.LL.LL.LLLLLLLLL.LLL.L.L..L..LLLL.LL.LLL.LL.LL.LLL.LLLLL.LL..L.L.....LLLLLLLLLLL.LLLLLL.LL.LLLLL.LL
import Control.Arrowimport qualified Data.List as Limport Data.Maybeimport Data.Vectorimport Prelude hiding (concat, filter, head, length, map,takeWhile, (++))data Seat = Occupied | Empty deriving (Show, Eq)display :: Vector (Vector (Maybe Seat)) -> Stringdisplay board = toList $ concat $ toList $ fmap (fmap disp) boardwhere disp Nothing = '.'disp (Just Occupied) = '#'disp (Just Empty) = 'L'status :: Char -> Maybe Seatstatus '.' = Nothingstatus 'L' = Just Emptystatus _ = undefinedparse :: String -> Vector (Vector (Maybe Seat))parse = fromList . fmap fromList . ((status <$>) <$>) . linesdirections :: [(Int, Int)]directions = half ++ ((negate *** negate) <$> half)where half = [(1,0),(0,1),(1,1),(1,-1)](++) = (L.++)seatVisible :: Vector (Vector (Maybe Seat)) -> (Int, Int) -> (Int, Int) -> BoolseatVisible board (x,y) (xOffs, yOffs) =fromMaybe False$ foldl' f Nothing$ map (fmap isOccupied . uncurry index)$ takeWhile (\(x,y) -> 0 <= x && x < width && 0 <= y && y < height)$ fromList $ (((x+) . (xOffs*)) &&& ((y+) . (yOffs*))) <$> [1..]where-- index x y = (board ! y) ! xindex = flip (.) (board !) . flip (!)height = length boardwidth = length (head board)isOccupied Occupied = TrueisOccupied Empty = Falsef (Just x) (Just y) = Just xf (Just x) Nothing = Just xf Nothing (Just y) = Just yf Nothing Nothing = Nothingstep :: Vector (Vector (Maybe Seat)) -> Vector (Vector (Maybe Seat))step board =fmap (uncurry stepSeat <$>) $generate height (\y -> generate width (\x -> (x,y)))whereindex = flip (.) (board !) . flip (!)height = length boardwidth = length (head board)seatChange visible Occupied = if visible > 4 then Empty else OccupiedseatChange visible Empty = if visible == 0 then Occupied else EmptystepSeat :: Int -> Int -> Maybe SeatstepSeat x y =let visible = L.length $ L.filter (seatVisible board (x,y)) directionsin seatChange visible <$> index x yfix :: Eq a => (a -> a) -> a -> afix f x = if x' == x then x' else fix f x'where x' = f xreadBoard :: String -> IO (Vector (Vector (Maybe Seat)))readBoard = (parse <$>) . readFilesolve :: String -> IO ()solve s = doboard <- readBoard slet equilibrium = fix step boardprint $ length $ filter isOccupied $ concat $ toList $ equilibriumreturn ()whereisOccupied (Just Occupied) = TrueisOccupied _ = Falsemain :: IO ()main = solve "input.txt"
import Control.Arrowimport Control.Monadimport qualified Data.Map.Strict as Mimport Data.Maybedata Seat = Occupied | Empty deriving (Show, Eq)data Board =B { table :: M.Map (Int, Int) Seat, getWidth :: Int, getHeight :: Int}deriving (Show, Eq)newtype Direction = D (Int, Int)(!?) = (M.!?)display :: Board -> Stringdisplay board =concat[([disp (tbl !? (x,y)) | x <- [0..width-1]] ++ "\n") | y <- [0..height-1]]where tbl = table boardwidth = getWidth boardheight = getHeight boarddisp Nothing = '.'disp (Just Occupied) = '#'disp (Just Empty) = 'L'printBoard :: Board -> IO ()printBoard = putStr . displayparse :: String -> Boardparse ss =letrows = lines ssheight = length rowswidth = length $ head rowsannotated = join $ zipWith (\y -> zipWith (\x s -> ((x,y), s)) [0..]) [0..] rowsasList = map (second $ const Empty) $ filter ((== 'L') . snd) annotatedtbl = M.fromList asListinB tbl width heightseesOccupied :: Board -> (Int, Int) -> Direction -> BoolseesOccupied board (x,y) dir@(D (xOffs, yOffs)) =if x < 0 || x >= width || y < 0 || y >= heightthen Falseelse case M.lookup next tbl ofJust Occupied -> TrueJust Empty -> FalseNothing -> seesOccupied board next dirwhere tbl = table boardwidth = getWidth boardheight = getHeight boardnext = (x+xOffs, y+yOffs)step :: Board -> Boardstep board = board { table = M.mapWithKey go tbl}wheretbl = table boardgo loc status =let visible = length $ filter (seesOccupied board loc) directionsin case status ofOccupied -> if visible >= 5 then Empty else OccupiedEmpty -> if visible == 0 then Occupied else Emptydirections :: [Direction]directions = map D $ half ++ ((negate *** negate) <$> half)where half = [(1,0),(0,1),(1,1),(1,-1)]fix :: Eq a => (a -> a) -> a -> afix f x = if x' == x then x' else fix f x'where x' = f xreadBoard :: String -> IO BoardreadBoard = (parse <$>) . readFilesolve :: String -> IO ()solve s = doboard <- readBoard slet equilibrium = fix step boardprint $ M.foldr (+) 0 $ M.map numSeated $ table equilibriumreturn ()where numSeated Occupied = 1numSeated Empty = 0main :: IO ()main = solve "input.txt"
LLLLL.LLLL.LL..LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLL.LL.LLL.LLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLL..LLLLLL.LLLLLLLLLL..LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLLLL..LLLLL.LLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLL.LLL.LLLLLLLLL.LLL.L..L.LLLLL.LLL.LLLLLLLLLLLLLLL.LL.LLLLLLL.L.LLL..LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LL.LLLLLLLLLLLL.LLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLL.L..LLL.......LL.LL.L.L....L..............L..LL.......L...L....LL....L.L..LL.....L.L.....LLLLL.LLLLLLL.LLLLLLLLLL.LLLLLL.LLLLL..L.LLLLLL.LLLLL.LLLL.LLLL.LLLL.LLLLLLL.LLLL.L.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.L.LLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLL.LL.LLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLL..LLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLL.L.LLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLL.LLLLL.LLLLL.LL.LLLLLL.LLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLL.L.LL.L.LLL.LLLL.LLLLLLLLLLLLLLLLL.L.LL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLL.LLLLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LL.LL..LLLLL.LLLL.LLLLL.LLL.L.LLL.L.LLLL.L.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL.LLLLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLL..LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLL.LLLL.L.LLLLL.L.LLLLLLLLLLLL.LLLLLLLLL.L.L.....LLL...L...L..LL...L.LL......LLLL.L.LL..LLL.L..L.......L..L.L....LLL.....L.L...L.LLLLL.LLLL.LLLLLLLLLLLLL.LLLLLL.LL.LLLLL.LLLLLLL.LLLL.LLLL.LLLL.LLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.L.LLLLLLL.LL.LLLLL.L.LLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLL..LLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLL.LLLLL.L..L.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.L.L.LLL.LLLL.LLLLL.LLL.LLLLLLLLLLLL.LLLLLLLLLLL.L.LLLLLL.L.LL.LLLLLL.LLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLL.LL.L.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLL.LLLLL.LLLL.LLLLLLLLL.L.LLLLLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLLLL.LL.L.LLLLLLLLLLLLLLL.LL.LLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLL.LL.LLLLLLL.........LLL..LL.L...L...L.....L...LL.....L..LLL........LL.L.LL.L......L...........L.LL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLL..LLLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLL..LLLLLL.LLLLL.LL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL..LLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLL.L.LLLLL.LLL..LLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLL.LLLL.L.LL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.L.LLLL.LLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LL.LLLLL.LLLL.LLLL.LLL.LL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLL.LLLL.LLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LL.L.LLLLLL.LL.LL.LLLL.LLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLL.L.LL...LLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL...LL....L.L.L........L.L..LL..LL.L..L...LLL..L.LL.LL.....L.....LL.L..LLL.LL.LL..LL...L...LLLLLLLLLLLLLL.LLLLLLLLL.LLL.LL.LLLLLLLL.LLLLLLLLLLLLLLLL..LLLLLLLLLLLLLLLL..LLLL.LLLLLLLLLLLLL..LLLLLLL.LLLLLLL.LL..LLLL.LLLLLLLLLLLL.LL.LLLLL.LLLL.LLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL..LLLLLL.LLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLL.L.LL.LL.LLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLL.L.LLLLLLLL.LLLLLL.LL.LL.LLLLLLLLLLLLL...LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLL.L.LLL.LLLLL.LLLL.L.LLLLL.LL.LLLLLL..LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLL.LLLLL.LLLLLLL..LLLLLLLLL..LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLL.L.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL..LLLL..LLLLLLLL.LLLLLL.LL.LL.LLLLLL.LLLL.L..LLLLLLL.LL.L.LLLLLLLL.LL..L....L..LLL.L......LL..L.L.....LLL.....L.LLL.....L...L.......L...LLL...LL...L........LLLLLLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLL.LLL.LLLLLL.LLLLL.LLLL.L.LLLLLLL.LLLLLLL.LLL..LLLLLLLLLLLLL.LLLL.LLL.LLLLLLLLL.LLLLLL.LLLLLLLL.LL.LLLLLLLLL.LLLL..LLL.LLLL.LLLLLLL.LLLL.LLLLLLLLLL.LL.LLLLLLLL.LLLLLLLLL.LLLLLL..LLLLL.L.LLLLLL..LLLL.LLLL.LL.LLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL.LL.L.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL...L.L....L..L...LLL.L..LLLLL.........LL.....LL...L....L..............L.L.L...LL.LL...LL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL...LLLLLLLLLLL.LLLL.LL.LLLLL..LLLLLLL.LLLL.LLLLLLLLLLLLL.LL.LLLLL.LLLLLLLLL.LLLLLL..LLLLLLLLLLL.LL.LLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLL.LL.LLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLL.LL.LLLLLL.LLLLLLLLLLLLLLL.L.LLLL.LLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLL.L.LLLLLLLLL.L.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLL.LLL.LLLLLLLLL.LLLLLLL..LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLL.LL.L.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.L...LL.......LLLL.L..LL..L.LL.L.L..L.........L.L..LLL............L.L.LL..L.LL.L..LL........LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLL.LLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LL.LLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLL.LLLL.LLL..LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLL..LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLL.L.LLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL..LLLLLLLLLLL.LLL.LLLLLL.LLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LL.LLLLL..L..L....LL.L............L....LL.........LLLL.L.L........L..L...LLL.....L.......LL..L..LLLLLLL.L.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.L.LLLLLL.LLLLLLLL.L.LLLL.LLLLL.LLLL..LLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL..L.LLL..LLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL..LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.L.LLLLLLLLLLLLLLLLLLL.L..L...L.....LL...........L.LL..LL...LL.LLL..........L.L.LL..L.LLL...L....LL.LL....LLL.LLLLLLL.L.LLLL.LLLLLLLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLL.LLLLL..L.LLL.LLLLLLL.LLLLLL.LLLLLLL..LLL.LLLLLLL.LLLLLLLLLLLLLL.L.LLLLLLL.LLLLLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLLLL.LLL.LLLLLLLLLLLL.LL.LLLLLLLLLLLLLLL.LLLLLL.LLLLL.LL.LLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLL..L.LLLLLLLL.LLLLLLL.L.LLLL.LLLLL.LLLLLLLLLLLL.LLL..LLLL.LLLLLLLL..LLLL.L..LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LL.LLLL.LLL.LLLLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.L.LLLLLLLLLLLLLLL.L.LLLLLLLL..LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.L.LLLLLLL.LLLLLL..LLL.LLL.LLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.L.L.L.....LL.LL.LL...LL.L..LL........LL.......L..LLLL..L.L.LL....L...L....L.L.L...L..L...LLLLL..LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL..LLLLLLL.LLLL.LLLLLLLLLLLLL.LLLL.LLL.LLLLLLLLL.LLLLLLLLLLLLLL..LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLL.LLLL.LLLLLLLLLLLLL..LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.L.LLL.LLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLL..LL.LLLL.LLLLLLL.LL.LL.LLLL.LLLLLLLLLLLLLL..L.L..L.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.L..LLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL.LLLL.LLLL.LLL.LLLL.LLLLLL.LLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL..LLLL.LLL.LLLLLL.LLLLLLLL.LLLLLL.LLLLL..LLL.LLLLLLLLL.LLLLLLLLL.L..LLLLLLLL..LLL..L..L.LL..LLL....L..L...L.L.L.L.L.L.L.LLL..LLL..L...L.......LLL..L.....LL...LL....L.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LL.LLLL.LLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLL.LLLLLLLLL.LLLLLLLLLLLLLLL..LLLLL.LLLLL.LLLL..LL..LLLL.LLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLL..LLLL.LL..LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LL.LLLLLL.LLLL.L..LLLLLLL.LLL.LL.LLLLLLLLLL.LLLLLLLLL.L.LLLLL.LLLL.LLLLLL.L
I was planning to do this in J, but gave up.My next initial attempt was in Haskell but was something awful like O(n^4) withbad constant factors, as seen in `part2_tooslow.hs`
readtable =: 3 : 0d =. 1!:1 yd =. toJ dd =. cutopen dd =. 0 ". each dd =. > d)NB. to derive the below from above, just substitute the values of [d] in-place,NB. then remove all parentheses.readtable_tacit =: 3 : '>0 ". each cutopen toJ 1!:1 y'NB. second argument minus first argumentNB. {: = all but last elementNB. {. = all but first elementNB. ({: - {.) t = ({: t) - ({. t)diff =: {: - {.part_one =: 3 : 0NB. y is always the input to a monadic (single-argument) functiondata =. readtable ysorted =. /:~ dataNB. (x f \ y) means "apply f to successive runs of length x from y"NB. in this case, it means "apply diff to adjacent pairs (2) in y"diffs =. /:~ (2 diff \ sorted)NB. (= t) is "self-classify", which is equivalent to ((nub t) =/ t)NB. (nub t) is the standard deduplication functionNB. ((nub t) =/ t) compares each element of (nub t) to each element of t,NB. giving 1 when they match and 0 when they don'tNB. This gives a table with 2 rows and n columnsseparated =. = diffsNB. (/) is effectively foldr -- it interleaves the elements of the tableNB. with the given operator. So (+/ 1 2 3 4) is (1+2+3+4).NB. (+/) " 1 says "apply the verb (+/) at rank 1 (per row)".counts =. +/ " 1 separatedNB. Increment the number of 1-increases for the first connection (0-1), andNB. also the number of 3-increases for the final connection (last-device).NB. This isn't strictly correct if the lowest adapter has voltage 3, but INB. already know that it has voltage 1. Properly, we should just prepend aNB. 0 voltage to [sorted] before doing all this, then add only to the 3sNB. column.amended =. 1 + countsanswer =. */ amendedanswer)part_one_tacit =: 3 : '*/ 1 &+ +/ " 1 = 2 ({: - {.) \ /:~ /:~ readtable < y'trib =: 3 : '{. ((1 & }. , +/) ^: y) 1 1 2'part_two =: 3 : 0data =. readtable ysorted =. /:~ dataNB. remember to add the initial plugsorted =. 0, sorteddiffs =. 2 diff \ sortedNB. remember to add the final outputdiffs =. diffs, 3NB. Okay, deep breath:NB. ({.) = headNB. (1 & }.) = drop 1NB. (+/) = sumNB. ((1 & }.) , +/) t = ((1 & }.) t) , (+/ t)NB. (^: y) = repeat y timesNB. 1 1 2 = first three elements of the tribonacci sequencetrib =. 3 : '{. ((1 & }. , +/) ^: y) 1 1 2'NB. for each element in [diffs], replace it with a [1] if it is equal to 1,NB. otherwise replace with 0. Effectively maps all 3s to 0svalues =. 1= / diffsNB. see above. replace all 3s with 1s and 1s with 0spartitions =. 3= / diffssums =. partitions +/ ;. 2 valuescombinations =. trib each sumsanswer =. */ > combinationsanswer)NB. I give up on inlining the [trib] call. The best I got was [dyad_trib],NB. which works like so:NB.NB. 4 dyad_trib 1 1 2 ==> 7 13 24NB.NB. However, the obvious next step to make it monadic, bonding it to theNB. initial values [1 1 2], doesn't seem to work, and I can't find anyNB. literature on how to accomplish this.dyad_trib =: (1 & }.) , +/ ^:part_two_tacit =: 3 : '*/ > trib each ((3 & (=/)) +/ ;. 2 (1 & (=/))) (, & 3) 2 ({: - {.) \ (0 & ,) /:~ readtable < y'
3073841361321176516149681394621127109153163160182213114662113172150171989313017059111025537441481024028354356169335141831510514236116114582101715914012108297212152911668897118991241491691431045779123589624162239269147156251333488576103122