Mathematics under The Library of Babel
2022-11-24
- 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 \times 26 \times 26$ where $26 \times 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 \times 26$
- like
aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzzazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzz
len: 1352- aligns with initial calc $2 \times 26 \times 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.
2022-11-25
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 \times 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 \times 26$, given each character must at least pair with each other once (thus $26 \times 26$,) times the length of the search scope (thus $\times 2$,) and since each character can be reused by each other side, divide it in half (this $\div 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 \times 26 \times 26 \times 3 \div 2 = 26364.$
2022-11-26
I think the above is wrong.
aaaabaacaadaaeaafaagaahaaiaajaakaalaamaanaaoaapaaqaaraasaataauaavaawaaxaayaazabaabbabcabdabeabfabgabhabiabjabkablabmabnaboabpabqabrabsabtabuabvabwabxabyabzacaacbaccacdaceacfacgachaciacjackaclacmacnacoacpacqacracsactacuacvacwacxacyaczadaadbadcaddadeadfadgadhadiadjadkadladmadnadoadpadqadradsadtaduadvadwadxadyadzaeaaebaecaedaeeaefaegaehaeiaejaekaelaemaenaeoaepaeqaeraesaetaeuaevaewaexaeyaezafaafbafcafdafeaffafgafhafiafjafkaflafmafnafoafpafqafrafsaftafuafvafwafxafyafzagaagbagcagdageagfaggaghagiagjagkaglagmagnagoagpagqagragsagtaguagvagwagxagyagzahaahbahcahdaheahfahgahhahiahjahkahlahmahnahoahpahqahrahsahtahuahvahwahxahyahzaiaaibaicaidaieaifaigaihaiiaijaikailaimainaioaipaiqairaisaitaiuaivaiwaixaiyaizajaajbajcajdajeajfajgajhajiajjajkajlajmajnajoajpajqajrajsajtajuajvajwajxajyajzakaakbakcakdakeakfakgakhakiakjakkaklakmaknakoakpakqakraksaktakuakvakwakxakyakzalaalbalcaldalealfalgalhalialjalkallalmalnaloalpalqalralsaltalualvalwalxalyalzamaambamcamdameamfamgamhamiamjamkamlammamnamoampamqamramsamtamuamvamwamxamyamzanaanbancandaneanfanganhanianjankanlanmannanoanpanqanransantanuanvanwanxanyanzaoaaobaocaodaoeaofaogaohaoiaojaokaolaomaonaooaopaoqaoraosaotaouaovaowaoxaoyaozapaapbapcapdapeapfapgaphapiapjapkaplapmapnapoappapqaprapsaptapuapvapwapxapyapzaqaaqbaqcaqdaqeaqfaqgaqhaqiaqjaqkaqlaqmaqnaqoaqpaqqaqraqsaqtaquaqvaqwaqxaqyaqzaraarbarcardarearfargarhariarjarkarlarmarnaroarparqarrarsartaruarvarwarxaryarzasaasbascasdaseasfasgashasiasjaskaslasmasnasoaspasqasrassastasuasvaswasxasyaszataatbatcatdateatfatgathatiatjatkatlatmatnatoatpatqatratsattatuatvatwatxatyatzauaaubaucaudaueaufaugauhauiaujaukaulaumaunauoaupauqaurausautauuauvauwauxauyauzavaavbavcavdaveavfavgavhaviavjavkavlavmavnavoavpavqavravsavtavuavvavwavxavyavzawaawbawcawdaweawfawgawhawiawjawkawlawmawnawoawpawqawrawsawtawuawvawwawxawyawzaxaaxbaxcaxdaxeaxfaxgaxhaxiaxjaxkaxlaxmaxnaxoaxpaxqaxraxsaxtaxuaxvaxwaxxaxyaxzayaaybaycaydayeayfaygayhayiayjaykaylaymaynayoaypayqayraysaytayuayvaywayxayyayzazaazbazcazdazeazfazgazhaziazjazkazlazmaznazoazpazqazrazsaztazuazvazwazxazyazzbbbbcbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwbbxbbybbzbcbbccbcdbcebcfbcgbchbcibcjbckbclbcmbcnbcobcpbcqbcrbcsbctbcubcvbcwbcxbcybczbdbbdcbddbdebdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdrbdsbdtbdubdvbdwbdxbdybdzbebbecbedbeebefbegbehbeibejbekbelbembenbeobepbeqberbesbetbeubevbewbexbeybezbfbbfcbfdbfebffbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbfsbftbfubfvbfwbfxbfybfzbgbbgcbgdbgebgfbggbghbgibgjbgkbglbgmbgnbgobgpbgqbgrbgsbgtbgubgvbgwbgxbgybgzbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhlbhmbhnbhobhpbhqbhrbhsbhtbhubhvbhwbhxbhybhzbibbicbidbiebifbigbihbiibijbikbilbimbinbiobipbiqbirbisbitbiubivbiwbixbiybizbjbbjcbjdbjebjfbjgbjhbjibjjbjkbjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjybjzbkbbkcbkdbkebkfbkgbkhbkibkjbkkbklbkmbknbkobkpbkqbkrbksbktbkubkvbkwbkxbkybkzblbblcbldbleblfblgblhblibljblkbllblmblnbloblpblqblrblsbltblublvblwblxblyblzbmbbmcbmdbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmtbmubmvbmwbmxbmybmzbnbbncbndbnebnfbngbnhbnibnjbnkbnlbnmbnnbnobnpbnqbnrbnsbntbnubnvbnwbnxbnybnzbobbocbodboebofbogbohboibojbokbolbombonboobopboqborbosbotboubovbowboxboybozbpbbpcbpdbpebpfbpgbphbpibpjbpkbplbpmbpnbpobppbpqbprbpsbptbpubpvbpwbpxbpybpzbqbbqcbqdbqebqfbqgbqhbqibqjbqkbqlbqmbqnbqobqpbqqbqrbqsbqtbqubqvbqwbqxbqybqzbrbbrcbrdbrebrfbrgbrhbribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbrtbrubrvbrwbrxbrybrzbsbbscbsdbsebsfbsgbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybszbtbbtcbtdbtebtfbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbubbucbudbuebufbugbuhbuibujbukbulbumbunbuobupbuqburbusbutbuubuvbuwbuxbuybuzbvbbvcbvdbvebvfbvgbvhbvibvjbvkbvlbvmbvnbvobvpbvqbvrbvsbvtbvubvvbvwbvxbvybvzbwbbwcbwdbwebwfbwgbwhbwibwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwtbwubwvbwwbwxbwybwzbxbbxcbxdbxebxfbxgbxhbxibxjbxkbxlbxmbxnbxobxpbxqbxrbxsbxtbxubxvbxwbxxbxybxzbybbycbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbywbyxbyybyzbzbbzcbzdbzebzfbzgbzhbzibzjbzkbzlbzmbznbzobzpbzqbzrbzsbztbzubzvbzwbzxbzybzzccccdcceccfccgcchcciccjcckcclccmccnccoccpccqccrccscctccuccvccwccxccycczcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzceccedceecefcegcehceicejcekcelcemcenceocepceqcercescetceucevcewcexceycezcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcfucfvcfwcfxcfycfzcgccgdcgecgfcggcghcgicgjcgkcglcgmcgncgocgpcgqcgrcgscgtcgucgvcgwcgxcgycgzchcchdchechfchgchhchichjchkchlchmchnchochpchqchrchschtchuchvchwchxchychzciccidciecifcigcihciicijcikcilcimcinciocipciqcirciscitciucivciwcixciycizcjccjdcjecjfcjgcjhcjicjjcjkcjlcjmcjncjocjpcjqcjrcjscjtcjucjvcjwcjxcjycjzckcckdckeckfckgckhckickjckkcklckmcknckockpckqckrckscktckuckvckwckxckyckzclccldcleclfclgclhclicljclkcllclmclncloclpclqclrclscltcluclvclwclxclyclzcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmncmocmpcmqcmrcmscmtcmucmvcmwcmxcmycmzcnccndcnecnfcngcnhcnicnjcnkcnlcnmcnncnocnpcnqcnrcnscntcnucnvcnwcnxcnycnzcoccodcoecofcogcohcoicojcokcolcomconcoocopcoqcorcoscotcoucovcowcoxcoycozcpccpdcpecpfcpgcphcpicpjcpkcplcpmcpncpocppcpqcprcpscptcpucpvcpwcpxcpycpzcqccqdcqecqfcqgcqhcqicqjcqkcqlcqmcqncqocqpcqqcqrcqscqtcqucqvcqwcqxcqycqzcrccrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrvcrwcrxcrycrzcsccsdcsecsfcsgcshcsicsjcskcslcsmcsncsocspcsqcsrcsscstcsucsvcswcsxcsycszctcctdctectfctgcthctictjctkctlctmctnctoctpctqctrctscttctuctvctwctxctyctzcuccudcuecufcugcuhcuicujcukculcumcuncuocupcuqcurcuscutcuucuvcuwcuxcuycuzcvccvdcvecvfcvgcvhcvicvjcvkcvlcvmcvncvocvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqcwrcwscwtcwucwvcwwcwxcwycwzcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcxscxtcxucxvcxwcxxcxycxzcyccydcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscytcyucyvcywcyxcyycyzczcczdczeczfczgczhcziczjczkczlczmcznczoczpczqczrczscztczuczvczwczxczyczzddddeddfddgddhddiddjddkddlddmddnddoddpddqddrddsddtdduddvddwddxddyddzdeddeedefdegdehdeidejdekdeldemdendeodepdeqderdesdetdeudevdewdexdeydezdfddfedffdfgdfhdfidfjdfkdfldfmdfndfodfpdfqdfrdfsdftdfudfvdfwdfxdfydfzdgddgedgfdggdghdgidgjdgkdgldgmdgndgodgpdgqdgrdgsdgtdgudgvdgwdgxdgydgzdhddhedhfdhgdhhdhidhjdhkdhldhmdhndhodhpdhqdhrdhsdhtdhudhvdhwdhxdhydhzdiddiedifdigdihdiidijdikdildimdindiodipdiqdirdisditdiudivdiwdixdiydizdjddjedjfdjgdjhdjidjjdjkdjldjmdjndjodjpdjqdjrdjsdjtdjudjvdjwdjxdjydjzdkddkedkfdkgdkhdkidkjdkkdkldkmdkndkodkpdkqdkrdksdktdkudkvdkwdkxdkydkzdlddledlfdlgdlhdlidljdlkdlldlmdlndlodlpdlqdlrdlsdltdludlvdlwdlxdlydlzdmddmedmfdmgdmhdmidmjdmkdmldmmdmndmodmpdmqdmrdmsdmtdmudmvdmwdmxdmydmzdnddnednfdngdnhdnidnjdnkdnldnmdnndnodnpdnqdnrdnsdntdnudnvdnwdnxdnydnzdoddoedofdogdohdoidojdokdoldomdondoodopdoqdordosdotdoudovdowdoxdoydozdpddpedpfdpgdphdpidpjdpkdpldpmdpndpodppdpqdprdpsdptdpudpvdpwdpxdpydpzdqddqedqfdqgdqhdqidqjdqkdqldqmdqndqodqpdqqdqrdqsdqtdqudqvdqwdqxdqydqzdrddredrfdrgdrhdridrjdrkdrldrmdrndrodrpdrqdrrdrsdrtdrudrvdrwdrxdrydrzdsddsedsfdsgdshdsidsjdskdsldsmdsndsodspdsqdsrdssdstdsudsvdswdsxdsydszdtddtedtfdtgdthdtidtjdtkdtldtmdtndtodtpdtqdtrdtsdttdtudtvdtwdtxdtydtzdudduedufdugduhduidujdukduldumdunduodupduqdurdusdutduuduvduwduxduyduzdvddvedvfdvgdvhdvidvjdvkdvldvmdvndvodvpdvqdvrdvsdvtdvudvvdvwdvxdvydvzdwddwedwfdwgdwhdwidwjdwkdwldwmdwndwodwpdwqdwrdwsdwtdwudwvdwwdwxdwydwzdxddxedxfdxgdxhdxidxjdxkdxldxmdxndxodxpdxqdxrdxsdxtdxudxvdxwdxxdxydxzdyddyedyfdygdyhdyidyjdykdyldymdyndyodypdyqdyrdysdytdyudyvdywdyxdyydyzdzddzedzfdzgdzhdzidzjdzkdzldzmdzndzodzpdzqdzrdzsdztdzudzvdzwdzxdzydzzeeeefeegeeheeieejeekeeleemeeneeoeepeeqeereeseeteeueeveeweexeeyeezefeeffefgefhefiefjefkeflefmefnefoefpefqefrefseftefuefvefwefxefyefzegeegfeggeghegiegjegkeglegmegnegoegpegqegregsegteguegvegwegxegyegzeheehfehgehhehiehjehkehlehmehnehoehpehqehrehsehtehuehvehwehxehyehzeieeifeigeiheiieijeikeileimeineioeipeiqeireiseiteiueiveiweixeiyeizejeejfejgejhejiejjejkejlejmejnejoejpejqejrejsejtejuejvejwejxejyejzekeekfekgekhekiekjekkeklekmeknekoekpekqekreksektekuekvekwekxekyekzeleelfelgelhelieljelkellelmelneloelpelqelrelselteluelvelwelxelyelzemeemfemgemhemiemjemkemlemmemnemoempemqemremsemtemuemvemwemxemyemzeneenfengenhenienjenkenlenmennenoenpenqenrensentenuenvenwenxenyenzeoeeofeogeoheoieojeokeoleomeoneooeopeoqeoreoseoteoueoveoweoxeoyeozepeepfepgephepiepjepkeplepmepnepoeppepqeprepseptepuepvepwepxepyepzeqeeqfeqgeqheqieqjeqkeqleqmeqneqoeqpeqqeqreqseqtequeqveqweqxeqyeqzereerfergerherierjerkerlermerneroerperqerrerserteruerverwerxeryerzeseesfesgeshesiesjeskeslesmesnesoespesqesressestesuesveswesxesyeszeteetfetgethetietjetketletmetnetoetpetqetretsettetuetvetwetxetyetzeueeufeugeuheuieujeukeuleumeuneuoeupeuqeureuseuteuueuveuweuxeuyeuzeveevfevgevhevievjevkevlevmevnevoevpevqevrevsevtevuevvevwevxevyevzeweewfewgewhewiewjewkewlewmewnewoewpewqewrewsewtewuewvewwewxewyewzexeexfexgexhexiexjexkexlexmexnexoexpexqexrexsextexuexvexwexxexyexzeyeeyfeygeyheyieyjeykeyleymeyneyoeypeyqeyreyseyteyueyveyweyxeyyeyzezeezfezgezheziezjezkezlezmeznezoezpezqezrezseztezuezvezwezxezyezzffffgffhffiffjffkfflffmffnffoffpffqffrffsfftffuffvffwffxffyffzfgffggfghfgifgjfgkfglfgmfgnfgofgpfgqfgrfgsfgtfgufgvfgwfgxfgyfgzfhffhgfhhfhifhjfhkfhlfhmfhnfhofhpfhqfhrfhsfhtfhufhvfhwfhxfhyfhzfiffigfihfiifijfikfilfimfinfiofipfiqfirfisfitfiufivfiwfixfiyfizfjffjgfjhfjifjjfjkfjlfjmfjnfjofjpfjqfjrfjsfjtfjufjvfjwfjxfjyfjzfkffkgfkhfkifkjfkkfklfkmfknfkofkpfkqfkrfksfktfkufkvfkwfkxfkyfkzflfflgflhflifljflkfllflmflnfloflpflqflrflsfltfluflvflwflxflyflzfmffmgfmhfmifmjfmkfmlfmmfmnfmofmpfmqfmrfmsfmtfmufmvfmwfmxfmyfmzfnffngfnhfnifnjfnkfnlfnmfnnfnofnpfnqfnrfnsfntfnufnvfnwfnxfnyfnzfoffogfohfoifojfokfolfomfonfoofopfoqforfosfotfoufovfowfoxfoyfozfpffpgfphfpifpjfpkfplfpmfpnfpofppfpqfprfpsfptfpufpvfpwfpxfpyfpzfqffqgfqhfqifqjfqkfqlfqmfqnfqofqpfqqfqrfqsfqtfqufqvfqwfqxfqyfqzfrffrgfrhfrifrjfrkfrlfrmfrnfrofrpfrqfrrfrsfrtfrufrvfrwfrxfryfrzfsffsgfshfsifsjfskfslfsmfsnfsofspfsqfsrfssfstfsufsvfswfsxfsyfszftfftgfthftiftjftkftlftmftnftoftpftqftrftsfttftuftvftwftxftyftzfuffugfuhfuifujfukfulfumfunfuofupfuqfurfusfutfuufuvfuwfuxfuyfuzfvffvgfvhfvifvjfvkfvlfvmfvnfvofvpfvqfvrfvsfvtfvufvvfvwfvxfvyfvzfwffwgfwhfwifwjfwkfwlfwmfwnfwofwpfwqfwrfwsfwtfwufwvfwwfwxfwyfwzfxffxgfxhfxifxjfxkfxlfxmfxnfxofxpfxqfxrfxsfxtfxufxvfxwfxxfxyfxzfyffygfyhfyifyjfykfylfymfynfyofypfyqfyrfysfytfyufyvfywfyxfyyfyzfzffzgfzhfzifzjfzkfzlfzmfznfzofzpfzqfzrfzsfztfzufzvfzwfzxfzyfzzgggghggiggjggkgglggmggnggoggpggqggrggsggtgguggvggwggxggyggzghgghhghighjghkghlghmghnghoghpghqghrghsghtghughvghwghxghyghzgiggihgiigijgikgilgimgingiogipgiqgirgisgitgiugivgiwgixgiygizgjggjhgjigjjgjkgjlgjmgjngjogjpgjqgjrgjsgjtgjugjvgjwgjxgjygjzgkggkhgkigkjgkkgklgkmgkngkogkpgkqgkrgksgktgkugkvgkwgkxgkygkzglgglhgligljglkgllglmglngloglpglqglrglsgltgluglvglwglxglyglzgmggmhgmigmjgmkgmlgmmgmngmogmpgmqgmrgmsgmtgmugmvgmwgmxgmygmzgnggnhgnignjgnkgnlgnmgnngnognpgnqgnrgnsgntgnugnvgnwgnxgnygnzgoggohgoigojgokgolgomgongoogopgoqgorgosgotgougovgowgoxgoygozgpggphgpigpjgpkgplgpmgpngpogppgpqgprgpsgptgpugpvgpwgpxgpygpzgqggqhgqigqjgqkgqlgqmgqngqogqpgqqgqrgqsgqtgqugqvgqwgqxgqygqzgrggrhgrigrjgrkgrlgrmgrngrogrpgrqgrrgrsgrtgrugrvgrwgrxgrygrzgsggshgsigsjgskgslgsmgsngsogspgsqgsrgssgstgsugsvgswgsxgsygszgtggthgtigtjgtkgtlgtmgtngtogtpgtqgtrgtsgttgtugtvgtwgtxgtygtzgugguhguigujgukgulgumgunguogupguqgurgusgutguuguvguwguxguyguzgvggvhgvigvjgvkgvlgvmgvngvogvpgvqgvrgvsgvtgvugvvgvwgvxgvygvzgwggwhgwigwjgwkgwlgwmgwngwogwpgwqgwrgwsgwtgwugwvgwwgwxgwygwzgxggxhgxigxjgxkgxlgxmgxngxogxpgxqgxrgxsgxtgxugxvgxwgxxgxygxzgyggyhgyigyjgykgylgymgyngyogypgyqgyrgysgytgyugyvgywgyxgyygyzgzggzhgzigzjgzkgzlgzmgzngzogzpgzqgzrgzsgztgzugzvgzwgzxgzygzzhhhhihhjhhkhhlhhmhhnhhohhphhqhhrhhshhthhuhhvhhwhhxhhyhhzhihhiihijhikhilhimhinhiohiphiqhirhishithiuhivhiwhixhiyhizhjhhjihjjhjkhjlhjmhjnhjohjphjqhjrhjshjthjuhjvhjwhjxhjyhjzhkhhkihkjhkkhklhkmhknhkohkphkqhkrhkshkthkuhkvhkwhkxhkyhkzhlhhlihljhlkhllhlmhlnhlohlphlqhlrhlshlthluhlvhlwhlxhlyhlzhmhhmihmjhmkhmlhmmhmnhmohmphmqhmrhmshmthmuhmvhmwhmxhmyhmzhnhhnihnjhnkhnlhnmhnnhnohnphnqhnrhnshnthnuhnvhnwhnxhnyhnzhohhoihojhokholhomhonhoohophoqhorhoshothouhovhowhoxhoyhozhphhpihpjhpkhplhpmhpnhpohpphpqhprhpshpthpuhpvhpwhpxhpyhpzhqhhqihqjhqkhqlhqmhqnhqohqphqqhqrhqshqthquhqvhqwhqxhqyhqzhrhhrihrjhrkhrlhrmhrnhrohrphrqhrrhrshrthruhrvhrwhrxhryhrzhshhsihsjhskhslhsmhsnhsohsphsqhsrhsshsthsuhsvhswhsxhsyhszhthhtihtjhtkhtlhtmhtnhtohtphtqhtrhtshtthtuhtvhtwhtxhtyhtzhuhhuihujhukhulhumhunhuohuphuqhurhushuthuuhuvhuwhuxhuyhuzhvhhvihvjhvkhvlhvmhvnhvohvphvqhvrhvshvthvuhvvhvwhvxhvyhvzhwhhwihwjhwkhwlhwmhwnhwohwphwqhwrhwshwthwuhwvhwwhwxhwyhwzhxhhxihxjhxkhxlhxmhxnhxohxphxqhxrhxshxthxuhxvhxwhxxhxyhxzhyhhyihyjhykhylhymhynhyohyphyqhyrhyshythyuhyvhywhyxhyyhyzhzhhzihzjhzkhzlhzmhznhzohzphzqhzrhzshzthzuhzvhzwhzxhzyhzziiiijiikiiliimiiniioiipiiqiiriisiitiiuiiviiwiixiiyiizijiijjijkijlijmijnijoijpijqijrijsijtijuijvijwijxijyijzikiikjikkiklikmiknikoikpikqikriksiktikuikvikwikxikyikziliiljilkillilmilniloilpilqilrilsiltiluilvilwilxilyilzimiimjimkimlimmimnimoimpimqimrimsimtimuimvimwimximyimziniinjinkinlinminninoinpinqinrinsintinuinvinwinxinyinzioiiojiokioliomioniooiopioqioriosiotiouioviowioxioyiozipiipjipkiplipmipnipoippipqipripsiptipuipvipwipxipyipziqiiqjiqkiqliqmiqniqoiqpiqqiqriqsiqtiquiqviqwiqxiqyiqziriirjirkirlirmirniroirpirqirrirsirtiruirvirwirxiryirzisiisjiskislismisnisoispisqisrissistisuisviswisxisyiszitiitjitkitlitmitnitoitpitqitritsittituitvitwitxityitziuiiujiukiuliumiuniuoiupiuqiuriusiutiuuiuviuwiuxiuyiuziviivjivkivlivmivnivoivpivqivrivsivtivuivvivwivxivyivziwiiwjiwkiwliwmiwniwoiwpiwqiwriwsiwtiwuiwviwwiwxiwyiwzixiixjixkixlixmixnixoixpixqixrixsixtixuixvixwixxixyixziyiiyjiykiyliymiyniyoiypiyqiyriysiytiyuiyviywiyxiyyiyziziizjizkizlizmiznizoizpizqizrizsiztizuizvizwizxizyizzjjjjkjjljjmjjnjjojjpjjqjjrjjsjjtjjujjvjjwjjxjjyjjzjkjjkkjkljkmjknjkojkpjkqjkrjksjktjkujkvjkwjkxjkyjkzjljjlkjlljlmjlnjlojlpjlqjlrjlsjltjlujlvjlwjlxjlyjlzjmjjmkjmljmmjmnjmojmpjmqjmrjmsjmtjmujmvjmwjmxjmyjmzjnjjnkjnljnmjnnjnojnpjnqjnrjnsjntjnujnvjnwjnxjnyjnzjojjokjoljomjonjoojopjoqjorjosjotjoujovjowjoxjoyjozjpjjpkjpljpmjpnjpojppjpqjprjpsjptjpujpvjpwjpxjpyjpzjqjjqkjqljqmjqnjqojqpjqqjqrjqsjqtjqujqvjqwjqxjqyjqzjrjjrkjrljrmjrnjrojrpjrqjrrjrsjrtjrujrvjrwjrxjryjrzjsjjskjsljsmjsnjsojspjsqjsrjssjstjsujsvjswjsxjsyjszjtjjtkjtljtmjtnjtojtpjtqjtrjtsjttjtujtvjtwjtxjtyjtzjujjukjuljumjunjuojupjuqjurjusjutjuujuvjuwjuxjuyjuzjvjjvkjvljvmjvnjvojvpjvqjvrjvsjvtjvujvvjvwjvxjvyjvzjwjjwkjwljwmjwnjwojwpjwqjwrjwsjwtjwujwvjwwjwxjwyjwzjxjjxkjxljxmjxnjxojxpjxqjxrjxsjxtjxujxvjxwjxxjxyjxzjyjjykjyljymjynjyojypjyqjyrjysjytjyujyvjywjyxjyyjyzjzjjzkjzljzmjznjzojzpjzqjzrjzsjztjzujzvjzwjzxjzyjzzkkkklkkmkknkkokkpkkqkkrkkskktkkukkvkkwkkxkkykkzklkkllklmklnkloklpklqklrklskltkluklvklwklxklyklzkmkkmlkmmkmnkmokmpkmqkmrkmskmtkmukmvkmwkmxkmykmzknkknlknmknnknoknpknqknrknskntknuknvknwknxknyknzkokkolkomkonkookopkoqkorkoskotkoukovkowkoxkoykozkpkkplkpmkpnkpokppkpqkprkpskptkpukpvkpwkpxkpykpzkqkkqlkqmkqnkqokqpkqqkqrkqskqtkqukqvkqwkqxkqykqzkrkkrlkrmkrnkrokrpkrqkrrkrskrtkrukrvkrwkrxkrykrzkskkslksmksnksokspksqksrksskstksuksvkswksxksykszktkktlktmktnktoktpktqktrktskttktuktvktwktxktyktzkukkulkumkunkuokupkuqkurkuskutkuukuvkuwkuxkuykuzkvkkvlkvmkvnkvokvpkvqkvrkvskvtkvukvvkvwkvxkvykvzkwkkwlkwmkwnkwokwpkwqkwrkwskwtkwukwvkwwkwxkwykwzkxkkxlkxmkxnkxokxpkxqkxrkxskxtkxukxvkxwkxxkxykxzkykkylkymkynkyokypkyqkyrkyskytkyukyvkywkyxkyykyzkzkkzlkzmkznkzokzpkzqkzrkzskztkzukzvkzwkzxkzykzzllllmllnllollpllqllrllslltllullvllwllxllyllzlmllmmlmnlmolmplmqlmrlmslmtlmulmvlmwlmxlmylmzlnllnmlnnlnolnplnqlnrlnslntlnulnvlnwlnxlnylnzlollomlonlooloploqlorloslotloulovlowloxloylozlpllpmlpnlpolpplpqlprlpslptlpulpvlpwlpxlpylpzlqllqmlqnlqolqplqqlqrlqslqtlqulqvlqwlqxlqylqzlrllrmlrnlrolrplrqlrrlrslrtlrulrvlrwlrxlrylrzlsllsmlsnlsolsplsqlsrlsslstlsulsvlswlsxlsylszltlltmltnltoltpltqltrltslttltultvltwltxltyltzlullumlunluolupluqlurluslutluuluvluwluxluyluzlvllvmlvnlvolvplvqlvrlvslvtlvulvvlvwlvxlvylvzlwllwmlwnlwolwplwqlwrlwslwtlwulwvlwwlwxlwylwzlxllxmlxnlxolxplxqlxrlxslxtlxulxvlxwlxxlxylxzlyllymlynlyolyplyqlyrlyslytlyulyvlywlyxlyylyzlzllzmlznlzolzplzqlzrlzslztlzulzvlzwlzxlzylzzmmmmnmmommpmmqmmrmmsmmtmmummvmmwmmxmmymmzmnmmnnmnomnpmnqmnrmnsmntmnumnvmnwmnxmnymnzmommonmoomopmoqmormosmotmoumovmowmoxmoymozmpmmpnmpomppmpqmprmpsmptmpumpvmpwmpxmpympzmqmmqnmqomqpmqqmqrmqsmqtmqumqvmqwmqxmqymqzmrmmrnmromrpmrqmrrmrsmrtmrumrvmrwmrxmrymrzmsmmsnmsomspmsqmsrmssmstmsumsvmswmsxmsymszmtmmtnmtomtpmtqmtrmtsmttmtumtvmtwmtxmtymtzmummunmuomupmuqmurmusmutmuumuvmuwmuxmuymuzmvmmvnmvomvpmvqmvrmvsmvtmvumvvmvwmvxmvymvzmwmmwnmwomwpmwqmwrmwsmwtmwumwvmwwmwxmwymwzmxmmxnmxomxpmxqmxrmxsmxtmxumxvmxwmxxmxymxzmymmynmyomypmyqmyrmysmytmyumyvmywmyxmyymyzmzmmznmzomzpmzqmzrmzsmztmzumzvmzwmzxmzymzznnnnonnpnnqnnrnnsnntnnunnvnnwnnxnnynnznonnoonopnoqnornosnotnounovnownoxnoynoznpnnponppnpqnprnpsnptnpunpvnpwnpxnpynpznqnnqonqpnqqnqrnqsnqtnqunqvnqwnqxnqynqznrnnronrpnrqnrrnrsnrtnrunrvnrwnrxnrynrznsnnsonspnsqnsrnssnstnsunsvnswnsxnsynszntnntontpntqntrntsnttntuntvntwntxntyntznunnuonupnuqnurnusnutnuunuvnuwnuxnuynuznvnnvonvpnvqnvrnvsnvtnvunvvnvwnvxnvynvznwnnwonwpnwqnwrnwsnwtnwunwvnwwnwxnwynwznxnnxonxpnxqnxrnxsnxtnxunxvnxwnxxnxynxznynnyonypnyqnyrnysnytnyunyvnywnyxnyynyznznnzonzpnzqnzrnzsnztnzunzvnzwnzxnzynzzoooopooqooroosootoouoovoowooxooyoozopooppopqopropsoptopuopvopwopxopyopzoqooqpoqqoqroqsoqtoquoqvoqwoqxoqyoqzoroorporqorrorsortoruorvorworxoryorzosoosposqosrossostosuosvoswosxosyoszotootpotqotrotsottotuotvotwotxotyotzouooupouqourousoutouuouvouwouxouyouzovoovpovqovrovsovtovuovvovwovxovyovzowoowpowqowrowsowtowuowvowwowxowyowzoxooxpoxqoxroxsoxtoxuoxvoxwoxxoxyoxzoyooypoyqoyroysoytoyuoyvoywoyxoyyoyzozoozpozqozrozsoztozuozvozwozxozyozzppppqpprppspptppuppvppwppxppyppzpqppqqpqrpqspqtpqupqvpqwpqxpqypqzprpprqprrprsprtpruprvprwprxpryprzpsppsqpsrpsspstpsupsvpswpsxpsypszptpptqptrptspttptuptvptwptxptyptzpuppuqpurpusputpuupuvpuwpuxpuypuzpvppvqpvrpvspvtpvupvvpvwpvxpvypvzpwppwqpwrpwspwtpwupwvpwwpwxpwypwzpxppxqpxrpxspxtpxupxvpxwpxxpxypxzpyppyqpyrpyspytpyupyvpywpyxpyypyzpzppzqpzrpzspztpzupzvpzwpzxpzypzzqqqqrqqsqqtqquqqvqqwqqxqqyqqzqrqqrrqrsqrtqruqrvqrwqrxqryqrzqsqqsrqssqstqsuqsvqswqsxqsyqszqtqqtrqtsqttqtuqtvqtwqtxqtyqtzquqqurqusqutquuquvquwquxquyquzqvqqvrqvsqvtqvuqvvqvwqvxqvyqvzqwqqwrqwsqwtqwuqwvqwwqwxqwyqwzqxqqxrqxsqxtqxuqxvqxwqxxqxyqxzqyqqyrqysqytqyuqyvqywqyxqyyqyzqzqqzrqzsqztqzuqzvqzwqzxqzyqzzrrrrsrrtrrurrvrrwrrxrryrrzrsrrssrstrsursvrswrsxrsyrszrtrrtsrttrturtvrtwrtxrtyrtzrurrusrutruuruvruwruxruyruzrvrrvsrvtrvurvvrvwrvxrvyrvzrwrrwsrwtrwurwvrwwrwxrwyrwzrxrrxsrxtrxurxvrxwrxxrxyrxzryrrysrytryuryvrywryxryyryzrzrrzsrztrzurzvrzwrzxrzyrzzsssstssussvsswssxssysszstssttstustvstwstxstystzsussutsuusuvsuwsuxsuysuzsvssvtsvusvvsvwsvxsvysvzswsswtswuswvswwswxswyswzsxssxtsxusxvsxwsxxsxysxzsyssytsyusyvsywsyxsyysyzszssztszuszvszwszxszyszzttttuttvttwttxttyttztuttuutuvtuwtuxtuytuztvttvutvvtvwtvxtvytvztwttwutwvtwwtwxtwytwztxttxutxvtxwtxxtxytxztyttyutyvtywtyxtyytyztzttzutzvtzwtzxtzytzzuuuuvuuwuuxuuyuuzuvuuvvuvwuvxuvyuvzuwuuwvuwwuwxuwyuwzuxuuxvuxwuxxuxyuxzuyuuyvuywuyxuyyuyzuzuuzvuzwuzxuzyuzzvvvvwvvxvvyvvzvwvvwwvwxvwyvwzvxvvxwvxxvxyvxzvyvvywvyxvyyvyzvzvvzwvzxvzyvzzwwwwxwwywwzwxwwxxwxywxzwywwyxwyywyzwzwwzxwzywzzxxxxyxxzxyxxyyxyzxzxxzyxzzyyyyzyzyyzzzza
len: 18578