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 where 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
- like
aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzzazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzz
len: 1352
- aligns with initial calc
- 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.py
making 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: 1327
This can be further trimmed because ba
already appears at zero-based index . 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 .
I made a script to confirm if this is right...
Yes, it is.
aabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeefegeheiejekelemeneoepeqereseteuevewexeyezffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziijikiliminioipiqirisitiuiviwixiyizjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkklkmknkokpkqkrksktkukvkwkxkykzllmlnlolplqlrlsltlulvlwlxlylzmmnmompmqmrmsmtmumvmwmxmymznnonpnqnrnsntnunvnwnxnynzoopoqorosotouovowoxoyozppqprpsptpupvpwpxpypzqqrqsqtquqvqwqxqyqzrrsrtrurvrwrxryrzsstsusvswsxsyszttutvtwtxtytzuuvuwuxuyuzvvwvxvyvzwwxwywzxxyxzyyzza
len: 677
Can we compress even further? The mathematic lower bound seems , given each character must at least pair with each other once (thus ,) times the length of the search scope (thus ,) and since each character can be reused by each other side, divide it in half (this )
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 . Similarly, the estimated lower bound would be
2022-11-26
I think the above is wrong.
aaaabaacaadaaeaafaagaahaaiaajaakaalaamaanaaoaapaaqaaraasaataauaavaawaaxaayaazabaabbabcabdabeabfabgabhabiabjabkablabmabnaboabpabqabrabsabtabuabvabwabxabyabzacaacbaccacdaceacfacgachaciacjackaclacmacnacoacpacqacracsactacuacvacwacxacyaczadaadbadcaddadeadfadgadhadiadjadkadladmadnadoadpadqadradsadtaduadvadwadxadyadzaeaaebaecaedaeeaefaegaehaeiaejaekaelaemaenaeoaepaeqaeraesaetaeuaevaewaexaeyaezafaafbafcafdafeaffafgafhafiafjafkaflafmafnafoafpafqafrafsaftafuafvafwafxafyafzagaagbagcagdageagfaggaghagiagjagkaglagmagnagoagpagqagragsagtaguagvagwagxagyagzahaahbahcahdaheahfahgahhahiahjahkahlahmahnahoahpahqahrahsahtahuahvahwahxahyahzaiaaibaicaidaieaifaigaihaiiaijaikailaimainaioaipaiqairaisaitaiuaivaiwaixaiyaizajaajbajcajdajeajfajgajhajiajjajkajlajmajnajoajpajqajrajsajtajuajvajwajxajyajzakaakbakcakdakeakfakgakhakiakjakkaklakmaknakoakpakqakraksaktakuakvakwakxakyakzalaalbalcaldalealfalgalhalialjalkallalmalnaloalpalqalralsaltalualvalwalxalyalzamaambamcamdameamfamgamhamiamjamkamlammamnamoampamqamramsamtamuamvamwamxamyamzanaanbancandaneanfanganhanianjankanlanmannanoanpanqanransantanuanvanwanxanyanzaoaaobaocaodaoeaofaogaohaoiaojaokaolaomaonaooaopaoqaoraosaotaouaovaowaoxaoyaozapaapbapcapdapeapfapgaphapiapjapkaplapmapnapoappapqaprapsaptapuapvapwapxapyapzaqaaqbaqcaqdaqeaqfaqgaqhaqiaqjaqkaqlaqmaqnaqoaqpaqqaqraqsaqtaquaqvaqwaqxaqyaqzaraarbarcardarearfargarhariarjarkarlarmarnaroarparqarrarsartaruarvarwarxaryarzasaasbascasdaseasfasgashasiasjaskaslasmasnasoaspasqasrassastasuasvaswasxasyaszataatbatcatdateatfatgathatiatjatkatlatmatnatoatpatqatratsattatuatvatwatxatyatzauaaubaucaudaueaufaugauhauiaujaukaulaumaunauoaupauqaurausautauuauvauwauxauyauzavaavbavcavdaveavfavgavhaviavjavkavlavmavnavoavpavqavravsavtavuavvavwavxavyavzawaawbawcawdaweawfawgawhawiawjawkawlawmawnawoawpawqawrawsawtawuawvawwawxawyawzaxaaxbaxcaxdaxeaxfaxgaxhaxiaxjaxkaxlaxmaxnaxoaxpaxqaxraxsaxtaxuaxvaxwaxxaxyaxzayaaybaycaydayeayfaygayhayiayjaykaylaymaynayoaypayqayraysaytayuayvaywayxayyayzazaazbazcazdazeazfazgazhaziazjazkazlazmaznazoazpazqazrazsaztazuazvazwazxazyazzbbbbcbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwbbxbbybbzbcbbccbcdbcebcfbcgbchbcibcjbckbclbcmbcnbcobcpbcqbcrbcsbctbcubcvbcwbcxbcybczbdbbdcbddbdebdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdrbdsbdtbdubdvbdwbdxbdybdzbebbecbedbeebefbegbehbeibejbekbelbembenbeobepbeqberbesbetbeubevbewbexbeybezbfbbfcbfdbfebffbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbfsbftbfubfvbfwbfxbfybfzbgbbgcbgdbgebgfbggbghbgibgjbgkbglbgmbgnbgobgpbgqbgrbgsbgtbgubgvbgwbgxbgybgzbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhlbhmbhnbhobhpbhqbhrbhsbhtbhubhvbhwbhxbhybhzbibbicbidbiebifbigbihbiibijbikbilbimbinbiobipbiqbirbisbitbiubivbiwbixbiybizbjbbjcbjdbjebjfbjgbjhbjibjjbjkbjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjybjzbkbbkcbkdbkebkfbkgbkhbkibkjbkkbklbkmbknbkobkpbkqbkrbksbktbkubkvbkwbkxbkybkzblbblcbldbleblfblgblhblibljblkbllblmblnbloblpblqblrblsbltblublvblwblxblyblzbmbbmcbmdbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmtbmubmvbmwbmxbmybmzbnbbncbndbnebnfbngbnhbnibnjbnkbnlbnmbnnbnobnpbnqbnrbnsbntbnubnvbnwbnxbnybnzbobbocbodboebofbogbohboibojbokbolbombonboobopboqborbosbotboubovbowboxboybozbpbbpcbpdbpebpfbpgbphbpibpjbpkbplbpmbpnbpobppbpqbprbpsbptbpubpvbpwbpxbpybpzbqbbqcbqdbqebqfbqgbqhbqibqjbqkbqlbqmbqnbqobqpbqqbqrbqsbqtbqubqvbqwbqxbqybqzbrbbrcbrdbrebrfbrgbrhbribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbrtbrubrvbrwbrxbrybrzbsbbscbsdbsebsfbsgbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybszbtbbtcbtdbtebtfbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbubbucbudbuebufbugbuhbuibujbukbulbumbunbuobupbuqburbusbutbuubuvbuwbuxbuybuzbvbbvcbvdbvebvfbvgbvhbvibvjbvkbvlbvmbvnbvobvpbvqbvrbvsbvtbvubvvbvwbvxbvybvzbwbbwcbwdbwebwfbwgbwhbwibwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwtbwubwvbwwbwxbwybwzbxbbxcbxdbxebxfbxgbxhbxibxjbxkbxlbxmbxnbxobxpbxqbxrbxsbxtbxubxvbxwbxxbxybxzbybbycbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbywbyxbyybyzbzbbzcbzdbzebzfbzgbzhbzibzjbzkbzlbzmbznbzobzpbzqbzrbzsbztbzubzvbzwbzxbzybzzccccdcceccfccgcchcciccjcckcclccmccnccoccpccqccrccscctccuccvccwccxccycczcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzceccedceecefcegcehceicejcekcelcemcenceocepceqcercescetceucevcewcexceycezcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcfucfvcfwcfxcfycfzcgccgdcgecgfcggcghcgicgjcgkcglcgmcgncgocgpcgqcgrcgscgtcgucgvcgwcgxcgycgzchcchdchechfchgchhchichjchkchlchmchnchochpchqchrchschtchuchvchwchxchychzciccidciecifcigcihciicijcikcilcimcinciocipciqcirciscitciucivciwcixciycizcjccjdcjecjfcjgcjhcjicjjcjkcjlcjmcjncjocjpcjqcjrcjscjtcjucjvcjwcjxcjycjzckcckdckeckfckgckhckickjckkcklckmcknckockpckqckrckscktckuckvckwckxckyckzclccldcleclfclgclhclicljclkcllclmclncloclpclqclrclscltcluclvclwclxclyclzcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmncmocmpcmqcmrcmscmtcmucmvcmwcmxcmycmzcnccndcnecnfcngcnhcnicnjcnkcnlcnmcnncnocnpcnqcnrcnscntcnucnvcnwcnxcnycnzcoccodcoecofcogcohcoicojcokcolcomconcoocopcoqcorcoscotcoucovcowcoxcoycozcpccpdcpecpfcpgcphcpicpjcpkcplcpmcpncpocppcpqcprcpscptcpucpvcpwcpxcpycpzcqccqdcqecqfcqgcqhcqicqjcqkcqlcqmcqncqocqpcqqcqrcqscqtcqucqvcqwcqxcqycqzcrccrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrvcrwcrxcrycrzcsccsdcsecsfcsgcshcsicsjcskcslcsmcsncsocspcsqcsrcsscstcsucsvcswcsxcsycszctcctdctectfctgcthctictjctkctlctmctnctoctpctqctrctscttctuctvctwctxctyctzcuccudcuecufcugcuhcuicujcukculcumcuncuocupcuqcurcuscutcuucuvcuwcuxcuycuzcvccvdcvecvfcvgcvhcvicvjcvkcvlcvmcvncvocvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqcwrcwscwtcwucwvcwwcwxcwycwzcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcxscxtcxucxvcxwcxxcxycxzcyccydcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscytcyucyvcywcyxcyycyzczcczdczeczfczgczhcziczjczkczlczmcznczoczpczqczrczscztczuczvczwczxczyczzddddeddfddgddhddiddjddkddlddmddnddoddpddqddrddsddtdduddvddwddxddyddzdeddeedefdegdehdeidejdekdeldemdendeodepdeqderdesdetdeudevdewdexdeydezdfddfedffdfgdfhdfidfjdfkdfldfmdfndfodfpdfqdfrdfsdftdfudfvdfwdfxdfydfzdgddgedgfdggdghdgidgjdgkdgldgmdgndgodgpdgqdgrdgsdgtdgudgvdgwdgxdgydgzdhddhedhfdhgdhhdhidhjdhkdhldhmdhndhodhpdhqdhrdhsdhtdhudhvdhwdhxdhydhzdiddiedifdigdihdiidijdikdildimdindiodipdiqdirdisditdiudivdiwdixdiydizdjddjedjfdjgdjhdjidjjdjkdjldjmdjndjodjpdjqdjrdjsdjtdjudjvdjwdjxdjydjzdkddkedkfdkgdkhdkidkjdkkdkldkmdkndkodkpdkqdkrdksdktdkudkvdkwdkxdkydkzdlddledlfdlgdlhdlidljdlkdlldlmdlndlodlpdlqdlrdlsdltdludlvdlwdlxdlydlzdmddmedmfdmgdmhdmidmjdmkdmldmmdmndmodmpdmqdmrdmsdmtdmudmvdmwdmxdmydmzdnddnednfdngdnhdnidnjdnkdnldnmdnndnodnpdnqdnrdnsdntdnudnvdnwdnxdnydnzdoddoedofdogdohdoidojdokdoldomdondoodopdoqdordosdotdoudovdowdoxdoydozdpddpedpfdpgdphdpidpjdpkdpldpmdpndpodppdpqdprdpsdptdpudpvdpwdpxdpydpzdqddqedqfdqgdqhdqidqjdqkdqldqmdqndqodqpdqqdqrdqsdqtdqudqvdqwdqxdqydqzdrddredrfdrgdrhdridrjdrkdrldrmdrndrodrpdrqdrrdrsdrtdrudrvdrwdrxdrydrzdsddsedsfdsgdshdsidsjdskdsldsmdsndsodspdsqdsrdssdstdsudsvdswdsxdsydszdtddtedtfdtgdthdtidtjdtkdtldtmdtndtodtpdtqdtrdtsdttdtudtvdtwdtxdtydtzdudduedufdugduhduidujdukduldumdunduodupduqdurdusdutduuduvduwduxduyduzdvddvedvfdvgdvhdvidvjdvkdvldvmdvndvodvpdvqdvrdvsdvtdvudvvdvwdvxdvydvzdwddwedwfdwgdwhdwidwjdwkdwldwmdwndwodwpdwqdwrdwsdwtdwudwvdwwdwxdwydwzdxddxedxfdxgdxhdxidxjdxkdxldxmdxndxodxpdxqdxrdxsdxtdxudxvdxwdxxdxydxzdyddyedyfdygdyhdyidyjdykdyldymdyndyodypdyqdyrdysdytdyudyvdywdyxdyydyzdzddzedzfdzgdzhdzidzjdzkdzldzmdzndzodzpdzqdzrdzsdztdzudzvdzwdzxdzydzzeeeefeegeeheeieejeekeeleemeeneeoeepeeqeereeseeteeueeveeweexeeyeezefeeffefgefhefiefjefkeflefmefnefoefpefqefrefseftefuefvefwefxefyefzegeegfeggeghegiegjegkeglegmegnegoegpegqegregsegteguegvegwegxegyegzeheehfehgehhehiehjehkehlehmehnehoehpehqehrehsehtehuehvehwehxehyehzeieeifeigeiheiieijeikeileimeineioeipeiqeireiseiteiueiveiweixeiyeizejeejfejgejhejiejjejkejlejmejnejoejpejqejrejsejtejuejvejwejxejyejzekeekfekgekhekiekjekkeklekmeknekoekpekqekreksektekuekvekwekxekyekzeleelfelgelhelieljelkellelmelneloelpelqelrelselteluelvelwelxelyelzemeemfemgemhemiemjemkemlemmemnemoempemqemremsemtemuemvemwemxemyemzeneenfengenhenienjenkenlenmennenoenpenqenrensentenuenvenwenxenyenzeoeeofeogeoheoieojeokeoleomeoneooeopeoqeoreoseoteoueoveoweoxeoyeozepeepfepgephepiepjepkeplepmepnepoeppepqeprepseptepuepvepwepxepyepzeqeeqfeqgeqheqieqjeqkeqleqmeqneqoeqpeqqeqreqseqtequeqveqweqxeqyeqzereerfergerherierjerkerlermerneroerperqerrerserteruerverwerxeryerzeseesfesgeshesiesjeskeslesmesnesoespesqesressestesuesveswesxesyeszeteetfetgethetietjetketletmetnetoetpetqetretsettetuetvetwetxetyetzeueeufeugeuheuieujeukeuleumeuneuoeupeuqeureuseuteuueuveuweuxeuyeuzeveevfevgevhevievjevkevlevmevnevoevpevqevrevsevtevuevvevwevxevyevzeweewfewgewhewiewjewkewlewmewnewoewpewqewrewsewtewuewvewwewxewyewzexeexfexgexhexiexjexkexlexmexnexoexpexqexrexsextexuexvexwexxexyexzeyeeyfeygeyheyieyjeykeyleymeyneyoeypeyqeyreyseyteyueyveyweyxeyyeyzezeezfezgezheziezjezkezlezmeznezoezpezqezrezseztezuezvezwezxezyezzffffgffhffiffjffkfflffmffnffoffpffqffrffsfftffuffvffwffxffyffzfgffggfghfgifgjfgkfglfgmfgnfgofgpfgqfgrfgsfgtfgufgvfgwfgxfgyfgzfhffhgfhhfhifhjfhkfhlfhmfhnfhofhpfhqfhrfhsfhtfhufhvfhwfhxfhyfhzfiffigfihfiifijfikfilfimfinfiofipfiqfirfisfitfiufivfiwfixfiyfizfjffjgfjhfjifjjfjkfjlfjmfjnfjofjpfjqfjrfjsfjtfjufjvfjwfjxfjyfjzfkffkgfkhfkifkjfkkfklfkmfknfkofkpfkqfkrfksfktfkufkvfkwfkxfkyfkzflfflgflhflifljflkfllflmflnfloflpflqflrflsfltfluflvflwflxflyflzfmffmgfmhfmifmjfmkfmlfmmfmnfmofmpfmqfmrfmsfmtfmufmvfmwfmxfmyfmzfnffngfnhfnifnjfnkfnlfnmfnnfnofnpfnqfnrfnsfntfnufnvfnwfnxfnyfnzfoffogfohfoifojfokfolfomfonfoofopfoqforfosfotfoufovfowfoxfoyfozfpffpgfphfpifpjfpkfplfpmfpnfpofppfpqfprfpsfptfpufpvfpwfpxfpyfpzfqffqgfqhfqifqjfqkfqlfqmfqnfqofqpfqqfqrfqsfqtfqufqvfqwfqxfqyfqzfrffrgfrhfrifrjfrkfrlfrmfrnfrofrpfrqfrrfrsfrtfrufrvfrwfrxfryfrzfsffsgfshfsifsjfskfslfsmfsnfsofspfsqfsrfssfstfsufsvfswfsxfsyfszftfftgfthftiftjftkftlftmftnftoftpftqftrftsfttftuftvftwftxftyftzfuffugfuhfuifujfukfulfumfunfuofupfuqfurfusfutfuufuvfuwfuxfuyfuzfvffvgfvhfvifvjfvkfvlfvmfvnfvofvpfvqfvrfvsfvtfvufvvfvwfvxfvyfvzfwffwgfwhfwifwjfwkfwlfwmfwnfwofwpfwqfwrfwsfwtfwufwvfwwfwxfwyfwzfxffxgfxhfxifxjfxkfxlfxmfxnfxofxpfxqfxrfxsfxtfxufxvfxwfxxfxyfxzfyffygfyhfyifyjfykfylfymfynfyofypfyqfyrfysfytfyufyvfywfyxfyyfyzfzffzgfzhfzifzjfzkfzlfzmfznfzofzpfzqfzrfzsfztfzufzvfzwfzxfzyfzzgggghggiggjggkgglggmggnggoggpggqggrggsggtgguggvggwggxggyggzghgghhghighjghkghlghmghnghoghpghqghrghsghtghughvghwghxghyghzgiggihgiigijgikgilgimgingiogipgiqgirgisgitgiugivgiwgixgiygizgjggjhgjigjjgjkgjlgjmgjngjogjpgjqgjrgjsgjtgjugjvgjwgjxgjygjzgkggkhgkigkjgkkgklgkmgkngkogkpgkqgkrgksgktgkugkvgkwgkxgkygkzglgglhgligljglkgllglmglngloglpglqglrglsgltgluglvglwglxglyglzgmggmhgmigmjgmkgmlgmmgmngmogmpgmqgmrgmsgmtgmugmvgmwgmxgmygmzgnggnhgnignjgnkgnlgnmgnngnognpgnqgnrgnsgntgnugnvgnwgnxgnygnzgoggohgoigojgokgolgomgongoogopgoqgorgosgotgougovgowgoxgoygozgpggphgpigpjgpkgplgpmgpngpogppgpqgprgpsgptgpugpvgpwgpxgpygpzgqggqhgqigqjgqkgqlgqmgqngqogqpgqqgqrgqsgqtgqugqvgqwgqxgqygqzgrggrhgrigrjgrkgrlgrmgrngrogrpgrqgrrgrsgrtgrugrvgrwgrxgrygrzgsggshgsigsjgskgslgsmgsngsogspgsqgsrgssgstgsugsvgswgsxgsygszgtggthgtigtjgtkgtlgtmgtngtogtpgtqgtrgtsgttgtugtvgtwgtxgtygtzgugguhguigujgukgulgumgunguogupguqgurgusgutguuguvguwguxguyguzgvggvhgvigvjgvkgvlgvmgvngvogvpgvqgvrgvsgvtgvugvvgvwgvxgvygvzgwggwhgwigwjgwkgwlgwmgwngwogwpgwqgwrgwsgwtgwugwvgwwgwxgwygwzgxggxhgxigxjgxkgxlgxmgxngxogxpgxqgxrgxsgxtgxugxvgxwgxxgxygxzgyggyhgyigyjgykgylgymgyngyogypgyqgyrgysgytgyugyvgywgyxgyygyzgzggzhgzigzjgzkgzlgzmgzngzogzpgzqgzrgzsgztgzugzvgzwgzxgzygzzhhhhihhjhhkhhlhhmhhnhhohhphhqhhrhhshhthhuhhvhhwhhxhhyhhzhihhiihijhikhilhimhinhiohiphiqhirhishithiuhivhiwhixhiyhizhjhhjihjjhjkhjlhjmhjnhjohjphjqhjrhjshjthjuhjvhjwhjxhjyhjzhkhhkihkjhkkhklhkmhknhkohkphkqhkrhkshkthkuhkvhkwhkxhkyhkzhlhhlihljhlkhllhlmhlnhlohlphlqhlrhlshlthluhlvhlwhlxhlyhlzhmhhmihmjhmkhmlhmmhmnhmohmphmqhmrhmshmthmuhmvhmwhmxhmyhmzhnhhnihnjhnkhnlhnmhnnhnohnphnqhnrhnshnthnuhnvhnwhnxhnyhnzhohhoihojhokholhomhonhoohophoqhorhoshothouhovhowhoxhoyhozhphhpihpjhpkhplhpmhpnhpohpphpqhprhpshpthpuhpvhpwhpxhpyhpzhqhhqihqjhqkhqlhqmhqnhqohqphqqhqrhqshqthquhqvhqwhqxhqyhqzhrhhrihrjhrkhrlhrmhrnhrohrphrqhrrhrshrthruhrvhrwhrxhryhrzhshhsihsjhskhslhsmhsnhsohsphsqhsrhsshsthsuhsvhswhsxhsyhszhthhtihtjhtkhtlhtmhtnhtohtphtqhtrhtshtthtuhtvhtwhtxhtyhtzhuhhuihujhukhulhumhunhuohuphuqhurhushuthuuhuvhuwhuxhuyhuzhvhhvihvjhvkhvlhvmhvnhvohvphvqhvrhvshvthvuhvvhvwhvxhvyhvzhwhhwihwjhwkhwlhwmhwnhwohwphwqhwrhwshwthwuhwvhwwhwxhwyhwzhxhhxihxjhxkhxlhxmhxnhxohxphxqhxrhxshxthxuhxvhxwhxxhxyhxzhyhhyihyjhykhylhymhynhyohyphyqhyrhyshythyuhyvhywhyxhyyhyzhzhhzihzjhzkhzlhzmhznhzohzphzqhzrhzshzthzuhzvhzwhzxhzyhzziiiijiikiiliimiiniioiipiiqiiriisiitiiuiiviiwiixiiyiizijiijjijkijlijmijnijoijpijqijrijsijtijuijvijwijxijyijzikiikjikkiklikmiknikoikpikqikriksiktikuikvikwikxikyikziliiljilkillilmilniloilpilqilrilsiltiluilvilwilxilyilzimiimjimkimlimmimnimoimpimqimrimsimtimuimvimwimximyimziniinjinkinlinminninoinpinqinrinsintinuinvinwinxinyinzioiiojiokioliomioniooiopioqioriosiotiouioviowioxioyiozipiipjipkiplipmipnipoippipqipripsiptipuipvipwipxipyipziqiiqjiqkiqliqmiqniqoiqpiqqiqriqsiqtiquiqviqwiqxiqyiqziriirjirkirlirmirniroirpirqirrirsirtiruirvirwirxiryirzisiisjiskislismisnisoispisqisrissistisuisviswisxisyiszitiitjitkitlitmitnitoitpitqitritsittituitvitwitxityitziuiiujiukiuliumiuniuoiupiuqiuriusiutiuuiuviuwiuxiuyiuziviivjivkivlivmivnivoivpivqivrivsivtivuivvivwivxivyivziwiiwjiwkiwliwmiwniwoiwpiwqiwriwsiwtiwuiwviwwiwxiwyiwzixiixjixkixlixmixnixoixpixqixrixsixtixuixvixwixxixyixziyiiyjiykiyliymiyniyoiypiyqiyriysiytiyuiyviywiyxiyyiyziziizjizkizlizmiznizoizpizqizrizsiztizuizvizwizxizyizzjjjjkjjljjmjjnjjojjpjjqjjrjjsjjtjjujjvjjwjjxjjyjjzjkjjkkjkljkmjknjkojkpjkqjkrjksjktjkujkvjkwjkxjkyjkzjljjlkjlljlmjlnjlojlpjlqjlrjlsjltjlujlvjlwjlxjlyjlzjmjjmkjmljmmjmnjmojmpjmqjmrjmsjmtjmujmvjmwjmxjmyjmzjnjjnkjnljnmjnnjnojnpjnqjnrjnsjntjnujnvjnwjnxjnyjnzjojjokjoljomjonjoojopjoqjorjosjotjoujovjowjoxjoyjozjpjjpkjpljpmjpnjpojppjpqjprjpsjptjpujpvjpwjpxjpyjpzjqjjqkjqljqmjqnjqojqpjqqjqrjqsjqtjqujqvjqwjqxjqyjqzjrjjrkjrljrmjrnjrojrpjrqjrrjrsjrtjrujrvjrwjrxjryjrzjsjjskjsljsmjsnjsojspjsqjsrjssjstjsujsvjswjsxjsyjszjtjjtkjtljtmjtnjtojtpjtqjtrjtsjttjtujtvjtwjtxjtyjtzjujjukjuljumjunjuojupjuqjurjusjutjuujuvjuwjuxjuyjuzjvjjvkjvljvmjvnjvojvpjvqjvrjvsjvtjvujvvjvwjvxjvyjvzjwjjwkjwljwmjwnjwojwpjwqjwrjwsjwtjwujwvjwwjwxjwyjwzjxjjxkjxljxmjxnjxojxpjxqjxrjxsjxtjxujxvjxwjxxjxyjxzjyjjykjyljymjynjyojypjyqjyrjysjytjyujyvjywjyxjyyjyzjzjjzkjzljzmjznjzojzpjzqjzrjzsjztjzujzvjzwjzxjzyjzzkkkklkkmkknkkokkpkkqkkrkkskktkkukkvkkwkkxkkykkzklkkllklmklnkloklpklqklrklskltkluklvklwklxklyklzkmkkmlkmmkmnkmokmpkmqkmrkmskmtkmukmvkmwkmxkmykmzknkknlknmknnknoknpknqknrknskntknuknvknwknxknyknzkokkolkomkonkookopkoqkorkoskotkoukovkowkoxkoykozkpkkplkpmkpnkpokppkpqkprkpskptkpukpvkpwkpxkpykpzkqkkqlkqmkqnkqokqpkqqkqrkqskqtkqukqvkqwkqxkqykqzkrkkrlkrmkrnkrokrpkrqkrrkrskrtkrukrvkrwkrxkrykrzkskkslksmksnksokspksqksrksskstksuksvkswksxksykszktkktlktmktnktoktpktqktrktskttktuktvktwktxktyktzkukkulkumkunkuokupkuqkurkuskutkuukuvkuwkuxkuykuzkvkkvlkvmkvnkvokvpkvqkvrkvskvtkvukvvkvwkvxkvykvzkwkkwlkwmkwnkwokwpkwqkwrkwskwtkwukwvkwwkwxkwykwzkxkkxlkxmkxnkxokxpkxqkxrkxskxtkxukxvkxwkxxkxykxzkykkylkymkynkyokypkyqkyrkyskytkyukyvkywkyxkyykyzkzkkzlkzmkznkzokzpkzqkzrkzskztkzukzvkzwkzxkzykzzllllmllnllollpllqllrllslltllullvllwllxllyllzlmllmmlmnlmolmplmqlmrlmslmtlmulmvlmwlmxlmylmzlnllnmlnnlnolnplnqlnrlnslntlnulnvlnwlnxlnylnzlollomlonlooloploqlorloslotloulovlowloxloylozlpllpmlpnlpolpplpqlprlpslptlpulpvlpwlpxlpylpzlqllqmlqnlqolqplqqlqrlqslqtlqulqvlqwlqxlqylqzlrllrmlrnlrolrplrqlrrlrslrtlrulrvlrwlrxlrylrzlsllsmlsnlsolsplsqlsrlsslstlsulsvlswlsxlsylszltlltmltnltoltpltqltrltslttltultvltwltxltyltzlullumlunluolupluqlurluslutluuluvluwluxluyluzlvllvmlvnlvolvplvqlvrlvslvtlvulvvlvwlvxlvylvzlwllwmlwnlwolwplwqlwrlwslwtlwulwvlwwlwxlwylwzlxllxmlxnlxolxplxqlxrlxslxtlxulxvlxwlxxlxylxzlyllymlynlyolyplyqlyrlyslytlyulyvlywlyxlyylyzlzllzmlznlzolzplzqlzrlzslztlzulzvlzwlzxlzylzzmmmmnmmommpmmqmmrmmsmmtmmummvmmwmmxmmymmzmnmmnnmnomnpmnqmnrmnsmntmnumnvmnwmnxmnymnzmommonmoomopmoqmormosmotmoumovmowmoxmoymozmpmmpnmpomppmpqmprmpsmptmpumpvmpwmpxmpympzmqmmqnmqomqpmqqmqrmqsmqtmqumqvmqwmqxmqymqzmrmmrnmromrpmrqmrrmrsmrtmrumrvmrwmrxmrymrzmsmmsnmsomspmsqmsrmssmstmsumsvmswmsxmsymszmtmmtnmtomtpmtqmtrmtsmttmtumtvmtwmtxmtymtzmummunmuomupmuqmurmusmutmuumuvmuwmuxmuymuzmvmmvnmvomvpmvqmvrmvsmvtmvumvvmvwmvxmvymvzmwmmwnmwomwpmwqmwrmwsmwtmwumwvmwwmwxmwymwzmxmmxnmxomxpmxqmxrmxsmxtmxumxvmxwmxxmxymxzmymmynmyomypmyqmyrmysmytmyumyvmywmyxmyymyzmzmmznmzomzpmzqmzrmzsmztmzumzvmzwmzxmzymzznnnnonnpnnqnnrnnsnntnnunnvnnwnnxnnynnznonnoonopnoqnornosnotnounovnownoxnoynoznpnnponppnpqnprnpsnptnpunpvnpwnpxnpynpznqnnqonqpnqqnqrnqsnqtnqunqvnqwnqxnqynqznrnnronrpnrqnrrnrsnrtnrunrvnrwnrxnrynrznsnnsonspnsqnsrnssnstnsunsvnswnsxnsynszntnntontpntqntrntsnttntuntvntwntxntyntznunnuonupnuqnurnusnutnuunuvnuwnuxnuynuznvnnvonvpnvqnvrnvsnvtnvunvvnvwnvxnvynvznwnnwonwpnwqnwrnwsnwtnwunwvnwwnwxnwynwznxnnxonxpnxqnxrnxsnxtnxunxvnxwnxxnxynxznynnyonypnyqnyrnysnytnyunyvnywnyxnyynyznznnzonzpnzqnzrnzsnztnzunzvnzwnzxnzynzzoooopooqooroosootoouoovoowooxooyoozopooppopqopropsoptopuopvopwopxopyopzoqooqpoqqoqroqsoqtoquoqvoqwoqxoqyoqzoroorporqorrorsortoruorvorworxoryorzosoosposqosrossostosuosvoswosxosyoszotootpotqotrotsottotuotvotwotxotyotzouooupouqourousoutouuouvouwouxouyouzovoovpovqovrovsovtovuovvovwovxovyovzowoowpowqowrowsowtowuowvowwowxowyowzoxooxpoxqoxroxsoxtoxuoxvoxwoxxoxyoxzoyooypoyqoyroysoytoyuoyvoywoyxoyyoyzozoozpozqozrozsoztozuozvozwozxozyozzppppqpprppspptppuppvppwppxppyppzpqppqqpqrpqspqtpqupqvpqwpqxpqypqzprpprqprrprsprtpruprvprwprxpryprzpsppsqpsrpsspstpsupsvpswpsxpsypszptpptqptrptspttptuptvptwptxptyptzpuppuqpurpusputpuupuvpuwpuxpuypuzpvppvqpvrpvspvtpvupvvpvwpvxpvypvzpwppwqpwrpwspwtpwupwvpwwpwxpwypwzpxppxqpxrpxspxtpxupxvpxwpxxpxypxzpyppyqpyrpyspytpyupyvpywpyxpyypyzpzppzqpzrpzspztpzupzvpzwpzxpzypzzqqqqrqqsqqtqquqqvqqwqqxqqyqqzqrqqrrqrsqrtqruqrvqrwqrxqryqrzqsqqsrqssqstqsuqsvqswqsxqsyqszqtqqtrqtsqttqtuqtvqtwqtxqtyqtzquqqurqusqutquuquvquwquxquyquzqvqqvrqvsqvtqvuqvvqvwqvxqvyqvzqwqqwrqwsqwtqwuqwvqwwqwxqwyqwzqxqqxrqxsqxtqxuqxvqxwqxxqxyqxzqyqqyrqysqytqyuqyvqywqyxqyyqyzqzqqzrqzsqztqzuqzvqzwqzxqzyqzzrrrrsrrtrrurrvrrwrrxrryrrzrsrrssrstrsursvrswrsxrsyrszrtrrtsrttrturtvrtwrtxrtyrtzrurrusrutruuruvruwruxruyruzrvrrvsrvtrvurvvrvwrvxrvyrvzrwrrwsrwtrwurwvrwwrwxrwyrwzrxrrxsrxtrxurxvrxwrxxrxyrxzryrrysrytryuryvrywryxryyryzrzrrzsrztrzurzvrzwrzxrzyrzzsssstssussvsswssxssysszstssttstustvstwstxstystzsussutsuusuvsuwsuxsuysuzsvssvtsvusvvsvwsvxsvysvzswsswtswuswvswwswxswyswzsxssxtsxusxvsxwsxxsxysxzsyssytsyusyvsywsyxsyysyzszssztszuszvszwszxszyszzttttuttvttwttxttyttztuttuutuvtuwtuxtuytuztvttvutvvtvwtvxtvytvztwttwutwvtwwtwxtwytwztxttxutxvtxwtxxtxytxztyttyutyvtywtyxtyytyztzttzutzvtzwtzxtzytzzuuuuvuuwuuxuuyuuzuvuuvvuvwuvxuvyuvzuwuuwvuwwuwxuwyuwzuxuuxvuxwuxxuxyuxzuyuuyvuywuyxuyyuyzuzuuzvuzwuzxuzyuzzvvvvwvvxvvyvvzvwvvwwvwxvwyvwzvxvvxwvxxvxyvxzvyvvywvyxvyyvyzvzvvzwvzxvzyvzzwwwwxwwywwzwxwwxxwxywxzwywwyxwyywyzwzwwzxwzywzzxxxxyxxzxyxxyyxyzxzxxzyxzzyyyyzyzyyzzzza
len: 18578