Mathematics under The Library of Babel
221124
- To hold all occasions of
a-z, a single character, requires 26 characters. - ASCII: 128
- Considering any Unicode can be ASCII escaped, Unicode LoB will use the same equation but takes a much longer ASCII base string
- For two characters to hold all possible sequences, what should be the shortest sequence?
- Naively, it may take 2×26×26 where 26×26 is all the combinations, and 2 is the length of a single combination.
- like
aa ab ac ad ae ...without the space - Naively adding, since any character can be shared bidirectionally, it seems possible to hold it inside 26×26
- like
aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzzazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzz
len: 1352- aligns with initial calc 2×26×26
- How can we compress it?
- Keep a map from the beginning; remove the substring if seen already
- may have a side effect
- early small sacrifices (redundancy) may save more significant future sacrifices. This does not consider such a case
- We can, for sure, trim three characters repeatedly char to 2
aabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfeffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfgghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlkllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonoopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpoppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqsrsstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtsttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyzzazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzz
len: 1327- Not a drastic difference
- Can we trim even further?
- I tried making a Python script to backtrack the combinations.
- Killed by the OS for using too much RAM
❯ python3 experiment3.pymaking list of length 52[1] 6919 killed python3 experiment3.py- Also made a C++ variant, but a meaningful difference is unlikely.
221125
Continuing our discussion yesterday...
So given
aabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfeffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfgghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlkllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonoopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpoppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqsrsstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtsttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyzzazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzz
len: 1327This can be further trimmed because ba already appears at zero-based index [2,3]. So we don't need it again after az.
That is, we don't need azbabb..., we can jump to azbbc...
This will create a triangular space complexity reduction, reducing the size to half.
So
a: a → z (aabacadaea...)b: (start from b, skipping a)c: (start from c, skipping b and a)Thus resulting in half in size. If this is true, this aligns with my naive conjecture at the beginning → to be lower-bounded at 26×26.
I made a script to confirm if this is right...
Yes, it is.
aabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeefegeheiejekelemeneoepeqereseteuevewexeyezffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziijikiliminioipiqirisitiuiviwixiyizjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkklkmknkokpkqkrksktkukvkwkxkykzllmlnlolplqlrlsltlulvlwlxlylzmmnmompmqmrmsmtmumvmwmxmymznnonpnqnrnsntnunvnwnxnynzoopoqorosotouovowoxoyozppqprpsptpupvpwpxpypzqqrqsqtquqvqwqxqyqzrrsrtrurvrwrxryrzsstsusvswsxsyszttutvtwtxtytzuuvuwuxuyuzvvwvxvyvzwwxwywzxxyxzyyzza
len: 677Can we compress even further? The mathematic lower bound seems 26×26, given each character must at least pair with each other once (thus 26×26,) times the length of the search scope (thus ×2,) and since each character can be reused by each other side, divide it in half (this ÷2)
Also, note that the mathematic lower bound could be attained if the above Babel String loops.
If this calculation is accurate, we can expand this to a string of size 3. Similarly, the estimated lower bound would be 26×26×26×3÷2=26364.
221126
I think the above is wrong.
aaaabaacaadaaeaafaagaahaaiaajaakaalaamaanaaoaapaaqaaraasaataauaavaawaaxaayaazabaabbabcabdabeabfabgabhabiabjabkablabmabnaboabpabqabrabsabtabuabvabwabxabyabzacaacbaccacdaceacfacgachaciacjackaclacmacnacoacpacqacracsactacuacvacwacxacyaczadaadbadcaddadeadfadgadhadiadjadkadladmadnadoadpadqadradsadtaduadvadwadxadyadzaeaaebaecaedaeeaefaegaehaeiaejaekaelaemaenaeoaepaeqaeraesaetaeuaevaewaexaeyaezafaafbafcafdafeaffafgafhafiafjafkaflafmafnafoafpafqafrafsaftafuafvafwafxafyafzagaagbagcagdageagfaggaghagiagjagkaglagmagnagoagpagqagragsagtaguagvagwagxagyagzahaahbahcahdaheahfahgahhahiahjahkahlahmahnahoahpahqahrahsahtahuahvahwahxahyahzaiaaibaicaidaieaifaigaihaiiaijaikailaimainaioaipaiqairaisaitaiuaivaiwaixaiyaizajaajbajcajdajeajfajgajhajiajjajkajlajmajnajoajpajqajrajsajtajuajvajwajxajyajzakaakbakcakdakeakfakgakhakiakjakkaklakmaknakoakpakqakraksaktakuakvakwakxakyakzalaalbalcaldalealfalgalhalialjalkallalmalnaloalpalqalralsaltalualvalwalxalyalzamaambamcamdameamfamgamhamiamjamkamlammamnamoampamqamramsamtamuamvamwamxamyamzanaanbancandaneanfanganhanianjankanlanmannanoanpanqanransantanuanvanwanxanyanzaoaaobaocaodaoeaofaogaohaoiaojaokaolaomaonaooaopaoqaoraosaotaouaovaowaoxaoyaozapaapbapcapdapeapfapgaphapiapjapkaplapmapnapoappapqaprapsaptapuapvapwapxapyapzaqaaqbaqcaqdaqeaqfaqgaqhaqiaqjaqkaqlaqmaqnaqoaqpaqqaqraqsaqtaquaqvaqwaqxaqyaqzaraarbarcardarearfargarhariarjarkarlarmarnaroarparqarrarsartaruarvarwarxaryarzasaasbascasdaseasfasgashasiasjaskaslasmasnasoaspasqasrassastasuasvaswasxasyaszataatbatcatdateatfatgathatiatjatkatlatmatnatoatpatqatratsattatuatvatwatxatyatzauaaubaucaudaueaufaugauhauiaujaukaulaumaunauoaupauqaurausautauuauvauwauxauyauzavaavbavcavdaveavfavgavhaviavjavkavlavmavnavoavpavqavravsavtavuavvavwavxavyavzawaawbawcawdaweawfawgawhawiawjawkawlawmawnawoawpawqawrawsawtawuawvawwawxawyawzaxaaxbaxcaxdaxeaxfaxgaxhaxiaxjaxkaxlaxmaxnaxoaxpaxqaxraxsaxtaxuaxvaxwaxxaxyaxzayaaybaycaydayeayfaygayhayiayjaykaylaymaynayoaypayqayraysaytayuayvaywayxayyayzazaazbazcazdazeazfazgazhaziazjazkazlazmaznazoazpazqazrazsaztazuazvazwazxazyazzbbbbcbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwbbxbbybbzbcbbccbcdbcebcfbcgbchbcibcjbckbclbcmbcnbcobcpbcqbcrbcsbctbcubcvbcwbcxbcybczbdbbdcbddbdebdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdrbdsbdtbdubdvbdwbdxbdybdzbebbecbedbeebefbegbehbeibejbekbelbembenbeobepbeqberbesbetbeubevbewbexbeybezbfbbfcbfdbfebffbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbfsbftbfubfvbfwbfxbfybfzbgbbgcbgdbgebgfbggbghbgibgjbgkbglbgmbgnbgobgpbgqbgrbgsbgtbgubgvbgwbgxbgybgzbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhlbhmbhnbhobhpbhqbhrbhsbhtbhubhvbhwbhxbhybhzbibbicbidbiebifbigbihbiibijbikbilbimbinbiobipbiqbirbisbitbiubivbiwbixbiybizbjbbjcbjdbjebjfbjgbjhbjibjjbjkbjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjybjzbkbbkcbkdbkebkfbkgbkhbkibkjbkkbklbkmbknbkobkpbkqbkrbksbktbkubkvbkwbkxbkybkzblbblcbldbleblfblgblhblibljblkbllblmblnbloblpblqblrblsbltblublvblwblxblyblzbmbbmcbmdbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmtbmubmvbmwbmxbmybmzbnbbncbndbnebnfbngbnhbnibnjbnkbnlbnmbnnbnobnpbnqbnrbnsbntbnubnvbnwbnxbnybnzbobbocbodboebofbogbohboibojbokbolbombonboobopboqborbosbotboubovbowboxboybozbpbbpcbpdbpebpfbpgbphbpibpjbpkbplbpmbpnbpobppbpqbprbpsbptbpubpvbpwbpxbpybpzbqbbqcbqdbqebqfbqgbqhbqibqjbqkbqlbqmbqnbqobqpbqqbqrbqsbqtbqubqvbqwbqxbqybqzbrbbrcbrdbrebrfbrgbrhbribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbrtbrubrvbrwbrxbrybrzbsbbscbsdbsebsfbsgbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybszbtbbtcbtdbtebtfbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbubbucbudbuebufbugbuhbuibujbukbulbumbunbuobupbuqburbusbutbuubuvbuwbuxbuybuzbvbbvcbvdbvebvfbvgbvhbvibvjbvkbvlbvmbvnbvobvpbvqbvrbvsbvtbvubvvbvwbvxbvybvzbwbbwcbwdbwebwfbwgbwhbwibwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwtbwubwvbwwbwxbwybwzbxbbxcbxdbxebxfbxgbxhbxibxjbxkbxlbxmbxnbxobxpbxqbxrbxsbxtbxubxvbxwbxxbxybxzbybbycbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbywbyxbyybyzbzbbzcbzdbzebzfbzgbzhbzibzjbzkbzlbzmbznbzobzpbzqbzrbzsbztbzubzvbzwbzxbzybzzccccdcceccfccgcchcciccjcckcclccmccnccoccpccqccrccscctccuccvccwccxccycczcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzceccedceecefcegcehceicejcekcelcemcenceocepceqcercescetceucevcewcexceycezcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcfucfvcfwcfxcfycfzcgccgdcgecgfcggcghcgicgjcgkcglcgmcgncgocgpcgqcgrcgscgtcgucgvcgwcgxcgycgzchcchdchechfchgchhchichjchkchlchmchnchochpchqchrchschtchuchvchwchxchychzciccidciecifcigcihciicijcikcilcimcinciocipciqcirciscitciucivciwcixciycizcjccjdcjecjfcjgcjhcjicjjcjkcjlcjmcjncjocjpcjqcjrcjscjtcjucjvcjwcjxcjycjzckcckdckeckfckgckhckickjckkcklckmcknckockpckqckrckscktckuckvckwckxckyckzclccldcleclfclgclhclicljclkcllclmclncloclpclqclrclscltcluclvclwclxclyclzcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmncmocmpcmqcmrcmscmtcmucmvcmwcmxcmycmzcnccndcnecnfcngcnhcnicnjcnkcnlcnmcnncnocnpcnqcnrcnscntcnucnvcnwcnxcnycnzcoccodcoecofcogcohcoicojcokcolcomconcoocopcoqcorcoscotcoucovcowcoxcoycozcpccpdcpecpfcpgcphcpicpjcpkcplcpmcpncpocppcpqcprcpscptcpucpvcpwcpxcpycpzcqccqdcqecqfcqgcqhcqicqjcqkcqlcqmcqncqocqpcqqcqrcqscqtcqucqvcqwcqxcqycqzcrccrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrvcrwcrxcrycrzcsccsdcsecsfcsgcshcsicsjcskcslcsmcsncsocspcsqcsrcsscstcsucsvcswcsxcsycszctcctdctectfctgcthctictjctkctlctmctnctoctpctqctrctscttctuctvctwctxctyctzcuccudcuecufcugcuhcuicujcukculcumcuncuocupcuqcurcuscutcuucuvcuwcuxcuycuzcvccvdcvecvfcvgcvhcvicvjcvkcvlcvmcvncvocvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqcwrcwscwtcwucwvcwwcwxcwycwzcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcxscxtcxucxvcxwcxxcxycxzcyccydcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscytcyucyvcywcyxcyycyzczcczdczeczfczgczhcziczjczkczlczmcznczoczpczqczrczscztczuczvczwczxczyczzddddeddfddgddhddiddjddkddlddmddnddoddpddqddrddsddtdduddvddwddxddyddzdeddeedefdegdehdeidejdekdeldemdendeodepdeqderdesdetdeudevdewdexdeydezdfddfedffdfgdfhdfidfjdfkdfldfmdfndfodfpdfqdfrdfsdftdfudfvdfwdfxdfydfzdgddgedgfdggdghdgidgjdgkdgldgmdgndgodgpdgqdgrdgsdgtdgudgvdgwdgxdgydgzdhddhedhfdhgdhhdhidhjdhkdhldhmdhndhodhpdhqdhrdhsdhtdhudhvdhwdhxdhydhzdiddiedifdigdihdiidijdikdildimdindiodipdiqdirdisditdiudivdiwdixdiydizdjddjedjfdjgdjhdjidjjdjkdjldjmdjndjodjpdjqdjrdjsdjtdjudjvdjwdjxdjydjzdkddkedkfdkgdkhdkidkjdkkdkldkmdkndkodkpdkqdkrdksdktdkudkvdkwdkxdkydkzdlddledlfdlgdlhdlidljdlkdlldlmdlndlodlpdlqdlrdlsdltdludlvdlwdlxdlydlzdmddmedmfdmgdmhdmidmjdmkdmldmmdmndmodmpdmqdmrdmsdmtdmudmvdmwdmxdmydmzdnddnednfdngdnhdnidnjdnkdnldnmdnndnodnpdnqdnrdnsdntdnudnvdnwdnxdnydnzdoddoedofdogdohdoidojdokdoldomdondoodopdoqdordosdotdoudovdowdoxdoydozdpddpedpfdpgdphdpidpjdpkdpldpmdpndpodppdpqdprdpsdptdpudpvdpwdpxdpydpzdqddqedqfdqgdqhdqidqjdqkdqldqmdqndqodqpdqqdqrdqsdqtdqudqvdqwdqxdqydqzdrddredrfdrgdrhdridrjdrkdrldrmdrndrodrpdrqdrrdrsdrtdrudrvdrwdrxdrydrzdsddsedsfdsgdshdsidsjdskdsldsmdsndsodspdsqdsrdssdstdsudsvdswdsxdsydszdtddtedtfdtgdthdtidtjdtkdtldtmdtndtodtpdtqdtrdtsdttdtudtvdtwdtxdtydtzdudduedufdugduhduidujdukduldumdunduodupduqdurdusdutduuduvduwduxduyduzdvddvedvfdvgdvhdvidvjdvkdvldvmdvndvodvpdvqdvrdvsdvtdvudvvdvwdvxdvydvzdwddwedwfdwgdwhdwidwjdwkdwldwmdwndwodwpdwqdwrdwsdwtdwudwvdwwdwxdwydwzdxddxedxfdxgdxhdxidxjdxkdxldxmdxndxodxpdxqdxrdxsdxtdxudxvdxwdxxdxydxzdyddyedyfdygdyhdyidyjdykdyldymdyndyodypdyqdyrdysdytdyudyvdywdyxdyydyzdzddzedzfdzgdzhdzidzjdzkdzldzmdzndzodzpdzqdzrdzsdztdzudzvdzwdzxdzydzzeeeefeegeeheeieejeekeeleemeeneeoeepeeqeereeseeteeueeveeweexeeyeezefeeffefgefhefiefjefkeflefmefnefoefpefqefrefseftefuefvefwefxefyefzegeegfeggeghegiegjegkeglegmegnegoegpegqegregsegteguegvegwegxegyegzeheehfehgehhehiehjehkehlehmehnehoehpehqehrehsehtehuehvehwehxehyehzeieeifeigeiheiieijeikeileimeineioeipeiqeireiseiteiueiveiweixeiyeizejeejfejgejhejiejjejkejlejmejnejoejpejqejrejsejtejuejvejwejxejyejzekeekfekgekhekiekjekkeklekmeknekoekpekqekreksektekuekvekwekxekyekzeleelfelgelhelieljelkellelmelneloelpelqelrelselteluelvelwelxelyelzemeemfemgemhemiemjemkemlemmemnemoempemqemremsemtemuemvemwemxemyemzeneenfengenhenienjenkenlenmennenoenpenqenrensentenuenvenwenxenyenzeoeeofeogeoheoieojeokeoleomeoneooeopeoqeoreoseoteoueoveoweoxeoyeozepeepfepgephepiepjepkeplepmepnepoeppepqeprepseptepuepvepwepxepyepzeqeeqfeqgeqheqieqjeqkeqleqmeqneqoeqpeqqeqreqseqtequeqveqweqxeqyeqzereerfergerherierjerkerlermerneroerperqerrerserteruerverwerxeryerzeseesfesgeshesiesjeskeslesmesnesoespesqesressestesuesveswesxesyeszeteetfetgethetietjetketletmetnetoetpetqetretsettetuetvetwetxetyetzeueeufeugeuheuieujeukeuleumeuneuoeupeuqeureuseuteuueuveuweuxeuyeuzeveevfevgevhevievjevkevlevmevnevoevpevqevrevsevtevuevvevwevxevyevzeweewfewgewhewiewjewkewlewmewnewoewpewqewrewsewtewuewvewwewxewyewzexeexfexgexhexiexjexkexlexmexnexoexpexqexrexsextexuexvexwexxexyexzeyeeyfeygeyheyieyjeykeyleymeyneyoeypeyqeyreyseyteyueyveyweyxeyyeyzezeezfezgezheziezjezkezlezmeznezoezpezqezrezseztezuezvezwezxezyezzffffgffhffiffjffkfflffmffnffoffpffqffrffsfftffuffvffwffxffyffzfgffggfghfgifgjfgkfglfgmfgnfgofgpfgqfgrfgsfgtfgufgvfgwfgxfgyfgzfhffhgfhhfhifhjfhkfhlfhmfhnfhofhpfhqfhrfhsfhtfhufhvfhwfhxfhyfhzfiffigfihfiifijfikfilfimfinfiofipfiqfirfisfitfiufivfiwfixfiyfizfjffjgfjhfjifjjfjkfjlfjmfjnfjofjpfjqfjrfjsfjtfjufjvfjwfjxfjyfjzfkffkgfkhfkifkjfkkfklfkmfknfkofkpfkqfkrfksfktfkufkvfkwfkxfkyfkzflfflgflhflifljflkfllflmflnfloflpflqflrflsfltfluflvflwflxflyflzfmffmgfmhfmifmjfmkfmlfmmfmnfmofmpfmqfmrfmsfmtfmufmvfmwfmxfmyfmzfnffngfnhfnifnjfnkfnlfnmfnnfnofnpfnqfnrfnsfntfnufnvfnwfnxfnyfnzfoffogfohfoifojfokfolfomfonfoofopfoqforfosfotfoufovfowfoxfoyfozfpffpgfphfpifpjfpkfplfpmfpnfpofppfpqfprfpsfptfpufpvfpwfpxfpyfpzfqffqgfqhfqifqjfqkfqlfqmfqnfqofqpfqqfqrfqsfqtfqufqvfqwfqxfqyfqzfrffrgfrhfrifrjfrkfrlfrmfrnfrofrpfrqfrrfrsfrtfrufrvfrwfrxfryfrzfsffsgfshfsifsjfskfslfsmfsnfsofspfsqfsrfssfstfsufsvfswfsxfsyfszftfftgfthftiftjftkftlftmftnftoftpftqftrftsfttftuftvftwftxftyftzfuffugfuhfuifujfukfulfumfunfuofupfuqfurfusfutfuufuvfuwfuxfuyfuzfvffvgfvhfvifvjfvkfvlfvmfvnfvofvpfvqfvrfvsfvtfvufvvfvwfvxfvyfvzfwffwgfwhfwifwjfwkfwlfwmfwnfwofwpfwqfwrfwsfwtfwufwvfwwfwxfwyfwzfxffxgfxhfxifxjfxkfxlfxmfxnfxofxpfxqfxrfxsfxtfxufxvfxwfxxfxyfxzfyffygfyhfyifyjfykfylfymfynfyofypfyqfyrfysfytfyufyvfywfyxfyyfyzfzffzgfzhfzifzjfzkfzlfzmfznfzofzpfzqfzrfzsfztfzufzvfzwfzxfzyfzzgggghggiggjggkgglggmggnggoggpggqggrggsggtgguggvggwggxggyggzghgghhghighjghkghlghmghnghoghpghqghrghsghtghughvghwghxghyghzgiggihgiigijgikgilgimgingiogipgiqgirgisgitgiugivgiwgixgiygizgjggjhgjigjjgjkgjlgjmgjngjogjpgjqgjrgjsgjtgjugjvgjwgjxgjygjzgkggkhgkigkjgkkgklgkmgkngkogkpgkqgkrgksgktgkugkvgkwgkxgkygkzglgglhgligljglkgllglmglngloglpglqglrglsgltgluglvglwglxglyglzgmggmhgmigmjgmkgmlgmmgmngmogmpgmqgmrgmsgmtgmugmvgmwgmxgmygmzgnggnhgnignjgnkgnlgnmgnngnognpgnqgnrgnsgntgnugnvgnwgnxgnygnzgoggohgoigojgokgolgomgongoogopgoqgorgosgotgougovgowgoxgoygozgpggphgpigpjgpkgplgpmgpngpogppgpqgprgpsgptgpugpvgpwgpxgpygpzgqggqhgqigqjgqkgqlgqmgqngqogqpgqqgqrgqsgqtgqugqvgqwgqxgqygqzgrggrhgrigrjgrkgrlgrmgrngrogrpgrqgrrgrsgrtgrugrvgrwgrxgrygrzgsggshgsigsjgskgslgsmgsngsogspgsqgsrgssgstgsugsvgswgsxgsygszgtggthgtigtjgtkgtlgtmgtngtogtpgtqgtrgtsgttgtugtvgtwgtxgtygtzgugguhguigujgukgulgumgunguogupguqgurgusgutguuguvguwguxguyguzgvggvhgvigvjgvkgvlgvmgvngvogvpgvqgvrgvsgvtgvugvvgvwgvxgvygvzgwggwhgwigwjgwkgwlgwmgwngwogwpgwqgwrgwsgwtgwugwvgwwgwxgwygwzgxggxhgxigxjgxkgxlgxmgxngxogxpgxqgxrgxsgxtgxugxvgxwgxxgxygxzgyggyhgyigyjgykgylgymgyngyogypgyqgyrgysgytgyugyvgywgyxgyygyzgzggzhgzigzjgzkgzlgzmgzngzogzpgzqgzrgzsgztgzugzvgzwgzxgzygzzhhhhihhjhhkhhlhhmhhnhhohhphhqhhrhhshhthhuhhvhhwhhxhhyhhzhihhiihijhikhilhimhinhiohiphiqhirhishithiuhivhiwhixhiyhizhjhhjihjjhjkhjlhjmhjnhjohjphjqhjrhjshjthjuhjvhjwhjxhjyhjzhkhhkihkjhkkhklhkmhknhkohkphkqhkrhkshkthkuhkvhkwhkxhkyhkzhlhhlihljhlkhllhlmhlnhlohlphlqhlrhlshlthluhlvhlwhlxhlyhlzhmhhmihmjhmkhmlhmmhmnhmohmphmqhmrhmshmthmuhmvhmwhmxhmyhmzhnhhnihnjhnkhnlhnmhnnhnohnphnqhnrhnshnthnuhnvhnwhnxhnyhnzhohhoihojhokholhomhonhoohophoqhorhoshothouhovhowhoxhoyhozhphhpihpjhpkhplhpmhpnhpohpphpqhprhpshpthpuhpvhpwhpxhpyhpzhqhhqihqjhqkhqlhqmhqnhqohqphqqhqrhqshqthquhqvhqwhqxhqyhqzhrhhrihrjhrkhrlhrmhrnhrohrphrqhrrhrshrthruhrvhrwhrxhryhrzhshhsihsjhskhslhsmhsnhsohsphsqhsrhsshsthsuhsvhswhsxhsyhszhthhtihtjhtkhtlhtmhtnhtohtphtqhtrhtshtthtuhtvhtwhtxhtyhtzhuhhuihujhukhulhumhunhuohuphuqhurhushuthuuhuvhuwhuxhuyhuzhvhhvihvjhvkhvlhvmhvnhvohvphvqhvrhvshvthvuhvvhvwhvxhvyhvzhwhhwihwjhwkhwlhwmhwnhwohwphwqhwrhwshwthwuhwvhwwhwxhwyhwzhxhhxihxjhxkhxlhxmhxnhxohxphxqhxrhxshxthxuhxvhxwhxxhxyhxzhyhhyihyjhykhylhymhynhyohyphyqhyrhyshythyuhyvhywhyxhyyhyzhzhhzihzjhzkhzlhzmhznhzohzphzqhzrhzshzthzuhzvhzwhzxhzyhzziiiijiikiiliimiiniioiipiiqiiriisiitiiuiiviiwiixiiyiizijiijjijkijlijmijnijoijpijqijrijsijtijuijvijwijxijyijzikiikjikkiklikmiknikoikpikqikriksiktikuikvikwikxikyikziliiljilkillilmilniloilpilqilrilsiltiluilvilwilxilyilzimiimjimkimlimmimnimoimpimqimrimsimtimuimvimwimximyimziniinjinkinlinminninoinpinqinrinsintinuinvinwinxinyinzioiiojiokioliomioniooiopioqioriosiotiouioviowioxioyiozipiipjipkiplipmipnipoippipqipripsiptipuipvipwipxipyipziqiiqjiqkiqliqmiqniqoiqpiqqiqriqsiqtiquiqviqwiqxiqyiqziriirjirkirlirmirniroirpirqirrirsirtiruirvirwirxiryirzisiisjiskislismisnisoispisqisrissistisuisviswisxisyiszitiitjitkitlitmitnitoitpitqitritsittituitvitwitxityitziuiiujiukiuliumiuniuoiupiuqiuriusiutiuuiuviuwiuxiuyiuziviivjivkivlivmivnivoivpivqivrivsivtivuivvivwivxivyivziwiiwjiwkiwliwmiwniwoiwpiwqiwriwsiwtiwuiwviwwiwxiwyiwzixiixjixkixlixmixnixoixpixqixrixsixtixuixvixwixxixyixziyiiyjiykiyliymiyniyoiypiyqiyriysiytiyuiyviywiyxiyyiyziziizjizkizlizmiznizoizpizqizrizsiztizuizvizwizxizyizzjjjjkjjljjmjjnjjojjpjjqjjrjjsjjtjjujjvjjwjjxjjyjjzjkjjkkjkljkmjknjkojkpjkqjkrjksjktjkujkvjkwjkxjkyjkzjljjlkjlljlmjlnjlojlpjlqjlrjlsjltjlujlvjlwjlxjlyjlzjmjjmkjmljmmjmnjmojmpjmqjmrjmsjmtjmujmvjmwjmxjmyjmzjnjjnkjnljnmjnnjnojnpjnqjnrjnsjntjnujnvjnwjnxjnyjnzjojjokjoljomjonjoojopjoqjorjosjotjoujovjowjoxjoyjozjpjjpkjpljpmjpnjpojppjpqjprjpsjptjpujpvjpwjpxjpyjpzjqjjqkjqljqmjqnjqojqpjqqjqrjqsjqtjqujqvjqwjqxjqyjqzjrjjrkjrljrmjrnjrojrpjrqjrrjrsjrtjrujrvjrwjrxjryjrzjsjjskjsljsmjsnjsojspjsqjsrjssjstjsujsvjswjsxjsyjszjtjjtkjtljtmjtnjtojtpjtqjtrjtsjttjtujtvjtwjtxjtyjtzjujjukjuljumjunjuojupjuqjurjusjutjuujuvjuwjuxjuyjuzjvjjvkjvljvmjvnjvojvpjvqjvrjvsjvtjvujvvjvwjvxjvyjvzjwjjwkjwljwmjwnjwojwpjwqjwrjwsjwtjwujwvjwwjwxjwyjwzjxjjxkjxljxmjxnjxojxpjxqjxrjxsjxtjxujxvjxwjxxjxyjxzjyjjykjyljymjynjyojypjyqjyrjysjytjyujyvjywjyxjyyjyzjzjjzkjzljzmjznjzojzpjzqjzrjzsjztjzujzvjzwjzxjzyjzzkkkklkkmkknkkokkpkkqkkrkkskktkkukkvkkwkkxkkykkzklkkllklmklnkloklpklqklrklskltkluklvklwklxklyklzkmkkmlkmmkmnkmokmpkmqkmrkmskmtkmukmvkmwkmxkmykmzknkknlknmknnknoknpknqknrknskntknuknvknwknxknyknzkokkolkomkonkookopkoqkorkoskotkoukovkowkoxkoykozkpkkplkpmkpnkpokppkpqkprkpskptkpukpvkpwkpxkpykpzkqkkqlkqmkqnkqokqpkqqkqrkqskqtkqukqvkqwkqxkqykqzkrkkrlkrmkrnkrokrpkrqkrrkrskrtkrukrvkrwkrxkrykrzkskkslksmksnksokspksqksrksskstksuksvkswksxksykszktkktlktmktnktoktpktqktrktskttktuktvktwktxktyktzkukkulkumkunkuokupkuqkurkuskutkuukuvkuwkuxkuykuzkvkkvlkvmkvnkvokvpkvqkvrkvskvtkvukvvkvwkvxkvykvzkwkkwlkwmkwnkwokwpkwqkwrkwskwtkwukwvkwwkwxkwykwzkxkkxlkxmkxnkxokxpkxqkxrkxskxtkxukxvkxwkxxkxykxzkykkylkymkynkyokypkyqkyrkyskytkyukyvkywkyxkyykyzkzkkzlkzmkznkzokzpkzqkzrkzskztkzukzvkzwkzxkzykzzllllmllnllollpllqllrllslltllullvllwllxllyllzlmllmmlmnlmolmplmqlmrlmslmtlmulmvlmwlmxlmylmzlnllnmlnnlnolnplnqlnrlnslntlnulnvlnwlnxlnylnzlollomlonlooloploqlorloslotloulovlowloxloylozlpllpmlpnlpolpplpqlprlpslptlpulpvlpwlpxlpylpzlqllqmlqnlqolqplqqlqrlqslqtlqulqvlqwlqxlqylqzlrllrmlrnlrolrplrqlrrlrslrtlrulrvlrwlrxlrylrzlsllsmlsnlsolsplsqlsrlsslstlsulsvlswlsxlsylszltlltmltnltoltpltqltrltslttltultvltwltxltyltzlullumlunluolupluqlurluslutluuluvluwluxluyluzlvllvmlvnlvolvplvqlvrlvslvtlvulvvlvwlvxlvylvzlwllwmlwnlwolwplwqlwrlwslwtlwulwvlwwlwxlwylwzlxllxmlxnlxolxplxqlxrlxslxtlxulxvlxwlxxlxylxzlyllymlynlyolyplyqlyrlyslytlyulyvlywlyxlyylyzlzllzmlznlzolzplzqlzrlzslztlzulzvlzwlzxlzylzzmmmmnmmommpmmqmmrmmsmmtmmummvmmwmmxmmymmzmnmmnnmnomnpmnqmnrmnsmntmnumnvmnwmnxmnymnzmommonmoomopmoqmormosmotmoumovmowmoxmoymozmpmmpnmpomppmpqmprmpsmptmpumpvmpwmpxmpympzmqmmqnmqomqpmqqmqrmqsmqtmqumqvmqwmqxmqymqzmrmmrnmromrpmrqmrrmrsmrtmrumrvmrwmrxmrymrzmsmmsnmsomspmsqmsrmssmstmsumsvmswmsxmsymszmtmmtnmtomtpmtqmtrmtsmttmtumtvmtwmtxmtymtzmummunmuomupmuqmurmusmutmuumuvmuwmuxmuymuzmvmmvnmvomvpmvqmvrmvsmvtmvumvvmvwmvxmvymvzmwmmwnmwomwpmwqmwrmwsmwtmwumwvmwwmwxmwymwzmxmmxnmxomxpmxqmxrmxsmxtmxumxvmxwmxxmxymxzmymmynmyomypmyqmyrmysmytmyumyvmywmyxmyymyzmzmmznmzomzpmzqmzrmzsmztmzumzvmzwmzxmzymzznnnnonnpnnqnnrnnsnntnnunnvnnwnnxnnynnznonnoonopnoqnornosnotnounovnownoxnoynoznpnnponppnpqnprnpsnptnpunpvnpwnpxnpynpznqnnqonqpnqqnqrnqsnqtnqunqvnqwnqxnqynqznrnnronrpnrqnrrnrsnrtnrunrvnrwnrxnrynrznsnnsonspnsqnsrnssnstnsunsvnswnsxnsynszntnntontpntqntrntsnttntuntvntwntxntyntznunnuonupnuqnurnusnutnuunuvnuwnuxnuynuznvnnvonvpnvqnvrnvsnvtnvunvvnvwnvxnvynvznwnnwonwpnwqnwrnwsnwtnwunwvnwwnwxnwynwznxnnxonxpnxqnxrnxsnxtnxunxvnxwnxxnxynxznynnyonypnyqnyrnysnytnyunyvnywnyxnyynyznznnzonzpnzqnzrnzsnztnzunzvnzwnzxnzynzzoooopooqooroosootoouoovoowooxooyoozopooppopqopropsoptopuopvopwopxopyopzoqooqpoqqoqroqsoqtoquoqvoqwoqxoqyoqzoroorporqorrorsortoruorvorworxoryorzosoosposqosrossostosuosvoswosxosyoszotootpotqotrotsottotuotvotwotxotyotzouooupouqourousoutouuouvouwouxouyouzovoovpovqovrovsovtovuovvovwovxovyovzowoowpowqowrowsowtowuowvowwowxowyowzoxooxpoxqoxroxsoxtoxuoxvoxwoxxoxyoxzoyooypoyqoyroysoytoyuoyvoywoyxoyyoyzozoozpozqozrozsoztozuozvozwozxozyozzppppqpprppspptppuppvppwppxppyppzpqppqqpqrpqspqtpqupqvpqwpqxpqypqzprpprqprrprsprtpruprvprwprxpryprzpsppsqpsrpsspstpsupsvpswpsxpsypszptpptqptrptspttptuptvptwptxptyptzpuppuqpurpusputpuupuvpuwpuxpuypuzpvppvqpvrpvspvtpvupvvpvwpvxpvypvzpwppwqpwrpwspwtpwupwvpwwpwxpwypwzpxppxqpxrpxspxtpxupxvpxwpxxpxypxzpyppyqpyrpyspytpyupyvpywpyxpyypyzpzppzqpzrpzspztpzupzvpzwpzxpzypzzqqqqrqqsqqtqquqqvqqwqqxqqyqqzqrqqrrqrsqrtqruqrvqrwqrxqryqrzqsqqsrqssqstqsuqsvqswqsxqsyqszqtqqtrqtsqttqtuqtvqtwqtxqtyqtzquqqurqusqutquuquvquwquxquyquzqvqqvrqvsqvtqvuqvvqvwqvxqvyqvzqwqqwrqwsqwtqwuqwvqwwqwxqwyqwzqxqqxrqxsqxtqxuqxvqxwqxxqxyqxzqyqqyrqysqytqyuqyvqywqyxqyyqyzqzqqzrqzsqztqzuqzvqzwqzxqzyqzzrrrrsrrtrrurrvrrwrrxrryrrzrsrrssrstrsursvrswrsxrsyrszrtrrtsrttrturtvrtwrtxrtyrtzrurrusrutruuruvruwruxruyruzrvrrvsrvtrvurvvrvwrvxrvyrvzrwrrwsrwtrwurwvrwwrwxrwyrwzrxrrxsrxtrxurxvrxwrxxrxyrxzryrrysrytryuryvrywryxryyryzrzrrzsrztrzurzvrzwrzxrzyrzzsssstssussvsswssxssysszstssttstustvstwstxstystzsussutsuusuvsuwsuxsuysuzsvssvtsvusvvsvwsvxsvysvzswsswtswuswvswwswxswyswzsxssxtsxusxvsxwsxxsxysxzsyssytsyusyvsywsyxsyysyzszssztszuszvszwszxszyszzttttuttvttwttxttyttztuttuutuvtuwtuxtuytuztvttvutvvtvwtvxtvytvztwttwutwvtwwtwxtwytwztxttxutxvtxwtxxtxytxztyttyutyvtywtyxtyytyztzttzutzvtzwtzxtzytzzuuuuvuuwuuxuuyuuzuvuuvvuvwuvxuvyuvzuwuuwvuwwuwxuwyuwzuxuuxvuxwuxxuxyuxzuyuuyvuywuyxuyyuyzuzuuzvuzwuzxuzyuzzvvvvwvvxvvyvvzvwvvwwvwxvwyvwzvxvvxwvxxvxyvxzvyvvywvyxvyyvyzvzvvzwvzxvzyvzzwwwwxwwywwzwxwwxxwxywxzwywwyxwyywyzwzwwzxwzywzzxxxxyxxzxyxxyyxyzxzxxzyxzzyyyyzyzyyzzzza
len: 18578