| -rw-r--r-- | lut | 2 | ||||
| -rw-r--r-- | lut2 | 2 | ||||
| -rw-r--r-- | src/lib.rs | 242 |
3 files changed, 155 insertions, 91 deletions
@@ -1 +1 @@ -{l[65536]=0x12d50fe222;l[131072]=0x1be99d58d8;l[196608]=0x2f01b8a0a0;l[262144]=0x4b543f8890;l[327680]=0x45c8095e26;l[393216]=0x5e0371414c;l[458752]=0x83d36f2f0a;l[524288]=0x6fa6756380;l[589824]=0x8d0529e204;l[256]=0xdd96e52be8;l[65792]=0xcf27aeb776;l[131328]=0xfdf6b4fc50;l[196864]=0x10d1c6e5a40;l[262400]=0x137bd68f344;l[327936]=0x15fb5735d0a;l[393472]=0x16fc05b13a0;l[459008]=0x17a8a91b9d0;l[524544]=0x1a60cf0d630;l[590080]=0x1b4b46c2774;l[512]=0x1506734d768;l[66048]=0x1a78f8e4488;l[131584]=0x13309c2d148;l[197120]=0x182dd165e1e;l[262656]=0x2042a112050;l[328192]=0x1b2c74ae158;l[393728]=0x1f0b2af3038;l[459264]=0x244af534490;l[524800]=0x1e6f3b006d8;l[590336]=0x22a0260f116;l[768]=0x26997489aec;l[66304]=0x2b4b1c39d46;l[131840]=0x2ab3090fe00;l[197376]=0x20512eee6e0;l[262912]=0x3253273a080;l[328448]=0x31a0b351d62;l[393984]=0x2afbc5507b0;l[459520]=0x36c3e6ec58a;l[525056]=0x35e1acbf450;l[590592]=0x2e90c06c8a2;l[1024]=0x3765b94aff0;l[66560]=0x3ca96f99750;l[132096]=0x3cbe5af6368;l[197632]=0x3cf233a4598;l[263168]=0x33c9ebade30;l[328704]=0x3b85d26b286;l[394240]=0x3b83d37b5dc;l[459776]=0x4168e297a30;l[525312]=0x46577d79080;l[590848]=0x4663d16ec7c;l[1280]=0x34902041ae8;l[66816]=0x44288a4615e;l[132352]=0x3d170ac7948;l[197888]=0x3e43cafca62;l[263424]=0x44128001e5c;l[328960]=0x2ff98670ba2;l[394496]=0x3adedc72860;l[460032]=0x4c9e3e8ad30;l[525568]=0x3f0afa37be4;l[591104]=0x4671f5277ba;l[1536]=0x4d32e913650;l[67072]=0x59d108564cc;l[132608]=0x576ea0caf1c;l[198144]=0x50c1a19b3f2;l[263680]=0x59614287f00;l[329216]=0x56bbaa68472;l[394752]=0x40a25ddce44;l[460288]=0x632b63e3546;l[525824]=0x606b6b056e0;l[591360]=0x52628f84f46;l[1792]=0x60f20443470;l[67328]=0x690c701643e;l[132864]=0x6821c0818b0;l[198400]=0x6777757059a;l[263936]=0x6d7cbcef8b4;l[329472]=0x6c787ddc462;l[395008]=0x6bb7fc04bf8;l[460544]=0x5aa15c7056e;l[526080]=0x672c3986940;l[591616]=0x6635e0111fc;l[2048]=0x5419cd35ee0;l[67584]=0x6c4063240ec;l[133120]=0x605590ffaf8;l[198656]=0x61825134c14;l[264192]=0x7042c5a0a70;l[329728]=0x63dbd19ee4c;l[395264]=0x650891d3f68;l[460800]=0x6dac071f8b4;l[526336]=0x4cc270b4680;l[591872]=0x5d8fe77f326;l[2304]=0x73cc5d9d22c;l[67840]=0x85fd14d4b8a;l[133376]=0x81bcee988b0;l[198912]=0x773637b4750;l[264448]=0x8a67e2e15c4;l[329984]=0x85f7f6604cc;l[395520]=0x7b0ead1d600;l[461056]=0x877768d613e;l[526592]=0x82c44bc0b68;l[592128]=0x60f38ccb62c;l[1]=0x69e18ab6488;l[65537]=0xabe165cbb82;l[131073]=0x8e7f6e60d58;l[196609]=0x9aeb7c510a8;l[262145]=0xb0fc5eae560;l[327681]=0x92b05b09616;l[393217]=0x9f6e9dc34c4;l[458753]=0xb6175790f4a;l[524289]=0x96e147b1ee0;l[589825]=0xa3f1bf358ec;l[257]=0x747818954fc;l[65793]=0x5e72fc5f8d0;l[131329]=0x6f9ea03ee60;l[196865]=0x6d5907d3f6e;l[262401]=0x7979a87cdf8;l[327937]=0x8305dcbf2ec;l[393473]=0x80ce9739ca0;l[459009]=0x7cac0480376;l[524545]=0x8670de0db04;l[590081]=0x842361c1f66;l[513]=0x8d125174b80;l[66049]=0xa793b6e9436;l[131585]=0x7995ee8da84;l[197121]=0x90992d17a30;l[262657]=0xb6188539b50;l[328193]=0x97690b9bdbe;l[393729]=0xa61bcb529ec;l[459265]=0xba8056e6852;l[524801]=0x9b0b4f78c00;l[590337]=0xaa1043f938c;l[769]=0xa5c0aeb9b30;l[66305]=0xb56d253c138;l[131841]=0xae999c6d878;l[197377]=0x80b38c9c986;l[262913]=0xc4c7eacef14;l[328449]=0xbdda014227c;l[393985]=0xa0ccfbfbcd0;l[459521]=0xc92fbc7bc30;l[525057]=0xc2120caa17c;l[590593]=0xa45909125d4;l[1025]=0xb249d8cfc68;l[66561]=0xc0e764859e8;l[132097]=0xbd8bc3c0688;l[197633]=0xbabe9d9e680;l[263169]=0x9971409dbc0;l[328705]=0xafa2d006b76;l[394241]=0xac9fd246c94;l[459777]=0xbc326793118;l[525313]=0xc864ab40d40;l[590849]=0xc5700066704;l[1281]=0xc5bf9086edc;l[66817]=0xf220eb1b1e0;l[132353]=0xdb2a0ba3180;l[197889]=0xdc9b2a07890;l[263425]=0xeb42745edc0;l[328961]=0xb09898d528c;l[394497]=0xcda881d4018;l[460033]=0xfcf6f60e1ce;l[525569]=0xd5eeee2cfe0;l[591105]=0xe84e7c3a6fc;l[1537]=0xe2d6e277b40;l[67073]=0x10229e13ee62;l[132609]=0xf9b08dbad30;l[198145]=0xe64f648685c;l[263681]=0xfa8943686c8;l[329217]=0xf1ccbf500b8;l[394753]=0xb853c6c10b0;l[460289]=0x10d13bc5a198;l[525825]=0x1043cd7837b0;l[591361]=0xdff06e69e14;l[1793]=0xd87e3e20f40;l[67329]=0xe9f27f5b52e;l[132865]=0xe59743a4a28;l[198401]=0xe1ebf9c34da;l[263937]=0xee0d353d7cc;l[329473]=0xe9986a08402;l[395009]=0xe5d6e960960;l[460545]=0xbc9b34c1f7e;l[526081]=0xd79bba83eb0;l[591617]=0xd3a4623e534;l[2049]=0xed4c4708670;l[67585]=0x1223bcd8650a;l[133121]=0x1066b9b686cc;l[198657]=0x107dcb9ccdde;l[264193]=0x1270b4a91070;l[329729]=0x10abef695c02;l[395265]=0x10c3014fa314;l[460801]=0x11dac1f97d96;l[526337]=0xd631a7342e8;l[591873]=0xf929b0fc05c;l[2305]=0x10d5f2cee3d8;l[67841]=0x13244c3aa1dc;l[133377]=0x127edb175380;l[198913]=0x110b2d08c876;l[264449]=0x1371440b4d48;l[329985]=0x12c8d683b0ce;l[395521]=0x114eff4f3858;l[461057]=0x12cf2eea16f4;l[526593]=0x12228e59359c;l[592129]=0xdcf87a9a686;l[2]=0xb8084431a60;l[65538]=0x13a30d3948b4;l[131074]=0xfe31c61d82c;l[196610]=0x1152e8a7f986;l[262146]=0x13ee15101d88;l[327682]=0x101f83750be0;l[393218]=0x11947307c898;l[458754]=0x14391ce6f268;l[524290]=0x105bea883fa0;l[589826]=0x11d5fd6797b6;l[258]=0x118db7bc33c8;l[65794]=0xee53064c5a6;l[131330]=0x10e582d341b0;l[196866]=0x109757055ba0;l[262402]=0x11fa7718b574;l[327938]=0x130db28f6b5a;l[393474]=0x12c06befddf0;l[459010]=0x123afc5adb30;l[524546]=0x1351c22643b0;l[590082]=0x1303181a50f4;l[514]=0xca6f7e369d0;l[66050]=0xf99e8ad7dba;l[131586]=0xa48a1e26d34;l[197122]=0xcd322d50f54;l[262658]=0x10fbad537f00;l[328194]=0xd710d5af272;l[393730]=0xf0366626b8c;l[459266]=0x1135e7a5c39e;l[524802]=0xd9eeed03850;l[590338]=0xf366b244cc8;l[770]=0x11a535957004;l[66306]=0x134f16e8a12a;l[131842]=0x127d93ff5660;l[197378]=0xd665ca5370c;l[262914]=0x14c835e4aff8;l[328450]=0x13f50cef8156;l[393986]=0x10bd2824b320;l[459522]=0x150c6b18db76;l[525058]=0x143645bf5eb8;l[590594]=0x10f3a10f7a86;l[1026]=0x1550a04d0160;l[66562]=0x16d43b09ffb4;l[132098]=0x166b9ce6b790;l[197634]=0x1612df42c004;l[263170]=0x127fdccd3ca0;l[328706]=0x14ce74f9b26a;l[394242]=0x147259dbdc04;l[459778]=0x160a803ecb6c;l[525314]=0x174603b19820;l[590850]=0x16eacdc21a60;l[1282]=0x11bb5c6c4cf0;l[66818]=0x1646cbb10ada;l[132354]=0x13d1d24c7088;l[197890]=0x13e5f4a82be6;l[263426]=0x1556bd3540a4;l[328962]=0xf3bdbef9b4e;l[394498]=0x12284e41d800;l[460034]=0x16eef13a14f4;l[525570]=0x12dfef15a0bc;l[591106]=0x14ae3bbad176;l[1538]=0x164426412dc0;l[67074]=0x1961c8890f00;l[132610]=0x1875e8f46bc4;l[198146]=0x1671b82406be;l[263682]=0x186c1e54a200;l[329218]=0x177c0bb6b9e6;l[394754]=0x11aba5d0b97c;l[460290]=0x1a1838869dc2;l[525826]=0x19267fdcd1d0;l[591362]=0x157aa4d4cfaa;l[1794]=0x17fab456a3a8;l[67330]=0x19abba6bea6a;l[132866]=0x193322998aa0;l[198402]=0x18cc82b99dce;l[263938]=0x19f47a5c1b4c;l[329474]=0x197a4991d2be;l[395010]=0x191246458098;l[460546]=0x15005e561e12;l[526082]=0x179be5e82358;l[591618]=0x17308521f258;l[2050]=0x13dc15980670;l[67586]=0x18f0679b5ff0;l[133122]=0x162dd90c67c0;l[198658]=0x1641fb682320;l[264194]=0x193490cc6840;l[329730]=0x166a401f99e0;l[395266]=0x167e627b5540;l[460802]=0x181c770ccf50;l[526338]=0x11348bf98a80;l[591874]=0x147f8058571a;l[2306]=0x18d5dbe63f24;l[67842]=0x1c4ca7ad6b46;l[133378]=0x1b42ec2dbae0;l[198914]=0x19011fe20fa4;l[264450]=0x1c975797744c;l[329986]=0x1b8a9fb375c8;l[395522]=0x1942aa41dd20;l[461058]=0x1b79a21f3892;l[526594]=0x1a68b731f530;l[592130]=0x13dcda2555b8;l[3]=0xf75e3b8ce88;l[65539]=0x1b9ba8468df6;l[131075]=0x15f2966114d0;l[196611]=0x180c1e610df4;l[262147]=0x1be2195e3b00;l[327683]=0x162a66b520ba;l[393219]=0x18491201b53c;l[458755]=0x1c288a75e816;l[524291]=0x166237092cb0;l[589827]=0x188605a25c90;l[259]=0x162241f0ced0;l[65795]=0x1229f107195a;l[131331]=0x151047a7e680;l[196867]=0x1490b59493f4;l[262403]=0x168d57b283b4;l[327939]=0x1813775d952e;l[393475]=0x1794ca789b48;l[459011]=0x16c4807bf994;l[524547]=0x184e2a7bbda8;l[590083]=0x17ce1a2a5e70;l[515]=0x1506734d7680;l[66051]=0x194a6dc7ce68;l[131587]=0x118debf4dfd8;l[197123]=0x1538e92efd36;l[262659]=0x1b3837e73438;l[328195]=0x16141ecd7178;l[393731]=0x1853d41e7048;l[459267]=0x1b78bd295ad0;l[524803]=0x16484b329950;l[590339]=0x188d23d0337e;l[771]=0x1101adb1affc;l[66307]=0x1354f91e9a92;l[131843]=0x12197c079c10;l[197379]=0xac3be7f1aac;l[262915]=0x15407b499548;l[328451]=0x14035826b2ee;l[393987]=0xf5eaf142a80;l[459523]=0x157159232a1e;l[525059]=0x1431399bf9a8;l[590595]=0xf81d0a45b3e;l[1027]=0x1a0d48543958;l[66563]=0x1c252a0f4388;l[132099]=0x1b842cd171a8;l[197635]=0x1afa08e80da0;l[263171]=0x15e35ec97ca0;l[328707]=0x1917fb284386;l[394243]=0x188a79c500a4;l[459779]=0x1abc223285f8;l[525315]=0x1c6a89d9ae40;l[590851]=0x1bddeda4c404;l[1283]=0x18d31afe0550;l[66819]=0x1f26d368c9d2;l[132355]=0x1baf3e21a140;l[197891]=0x1bc3607d5c9e;l[263427]=0x1dbd6c7c9c9c;l[328963]=0x1535373478d6;l[394499]=0x19400cd39060;l[460035]=0x1fdb5b0af444;l[525571]=0x1a30c6caa974;l[591107]=0x1caa56bebf7e;l[1539]=0x176204719350;l[67075]=0x1ba38ffbddb2;l[132611]=0x1a4edcf1d370;l[198147]=0x177804cb493c;l[263683]=0x1a24aa255c58;l[329219]=0x18cbc4120d38;l[394755]=0x10bdfeb5f770;l[460291]=0x1c469baf2a18;l[525827]=0x1aec0f8ff720;l[591363]=0x15d496f88774;l[1795]=0x1c59bfa6f600;l[67331]=0x1e9f0cba489e;l[132867]=0x1dee15cd5f18;l[198403]=0x1d560fa805ca;l[263939]=0x1ede7031c8dc;l[329475]=0x1e2be04cf692;l[395011]=0x1d9276bb37f0;l[460547]=0x17fce722c7ce;l[526083]=0x1b7e72e71e30;l[591619]=0x1ae1abdb80b4;l[2051]=0x1af3d429bf98;l[67587]=0x21d06f531fb0;l[133123]=0x1e0b44e19940;l[198659]=0x1e1f673d54a0;l[264195]=0x221498842800;l[329731]=0x1e47abf4cb60;l[395267]=0x1e5bce5086c0;l[460803]=0x208326542c10;l[526339]=0x172de73e68d0;l[591875]=0x1b973eea1042;l[2307]=0x1954da25b7f8;l[67843]=0x1def8f2f4d3c;l[133379]=0x1c7d003a35d0;l[198915]=0x19688c986566;l[264451]=0x1e2a5be7a4e8;l[329987]=0x1cb4d08e3f5e;l[395523]=0x199a33c68188;l[461059]=0x1c836acd54d4;l[526595]=0x1b09ac6aaa6c;l[592131]=0x12406fe7f596;l[4]=0x1a7862ad9540;l[65540]=0x2aa6a9e4c81c;l[131076]=0x2319be0328ac;l[196612]=0x25e248cedbee;l[262148]=0x2af85972f458;l[327684]=0x235ccccdb3c8;l[393220]=0x262a7ae60268;l[458756]=0x2b4a090120a0;l[524292]=0x239fdb983ef0;l[589828]=0x2672acfd28ee;l[260]=0x22e275db4140;l[65796]=0x1da0fb0e646a;l[131332]=0x2173f590a2a0;l[196868]=0x20c99ce7038c;l[262404]=0x236660bea92c;l[327940]=0x2566044d362e;l[393476]=0x24bc90d1efc0;l[459012]=0x23a80c1ccf0c;l[524548]=0x25ab3a000ea8;l[590084]=0x2500631862e8;l[516]=0x221a3feceb60;l[66052]=0x27b122729866;l[131588]=0x1d8b43f2dcec;l[197124]=0x22589bcf86a8;l[262660]=0x2a308d1c9620;l[328196]=0x2374d93cae4e;l[393732]=0x2663c93243f4;l[459268]=0x2a7cf85fd212;l[524804]=0x23b4eba2eb80;l[590340]=0x26a8fee51c84;l[772]=0x259626c123c0;l[66308]=0x28a27dde8710;l[131844]=0x270ca8309420;l[197380]=0x1d8806106ff6;l[262916]=0x2b2f47fcab8c;l[328452]=0x2997cc42d4c4;l[393988]=0x2396007f5168;l[459524]=0x2b7bb33fe798;l[525060]=0x29e13b21c2b4;l[590596]=0x23d4af79295c;l[1028]=0x1d1e06255760;l[66564]=0x1fcaa1007e6e;l[132100]=0x1ef1b6ca33d4;l[197636]=0x1e369ebd7452;l[263172]=0x179cbf17e6b8;l[328708]=0x1bb7d1cb0fbc;l[394244]=0x1af95c447160;l[459780]=0x1dc4f8de9da2;l[525316]=0x1fe6b6dc3280;l[590852]=0x1f292683ecca;l[1284]=0x21104b175ea4;l[66820]=0x292cf397f778;l[132356]=0x24b3695e0e60;l[197892]=0x24c832a99778;l[263428]=0x274c290ad070;l[328964]=0x1c5746affbf4;l[394500]=0x2181268bbc10;l[460036]=0x29f1c6f2149e;l[525572]=0x22ac4785c0f0;l[591108]=0x25d1c1b88a04;l[1540]=0x24a826a428b8;l[67076]=0x2a16aceecaa2;l[132612]=0x286237ed47c0;l[198148]=0x24c1c9ee86c4;l[263684]=0x2829bff00020;l[329220]=0x267117e53860;l[394756]=0x1c2f0490fba0;l[460292]=0x2adcbd4b6b10;l[525828]=0x29226f34bf78;l[591364]=0x22a86a8bd0ac;l[1796]=0x2568a334c0c0;l[67332]=0x284618bb3ae6;l[132868]=0x2760a428e350;l[198404]=0x269b19333932;l[263940]=0x2887c4195d84;l[329476]=0x27a0b68f1d2a;l[395012]=0x26d9c82d0db8;l[460548]=0x1fc47260aba6;l[526084]=0x242fe3cc6ed0;l[591620]=0x236597f08084;l[2052]=0x278cb6816680;l[67588]=0x30348a5b58e2;l[133124]=0x2b6fb391cfe4;l[198660]=0x2b86c57816f6;l[264196]=0x3081822c0448;l[329732]=0x2bb4e944a51a;l[395268]=0x2bcbfb2aec2c;l[460804]=0x2e7f862b486e;l[526340]=0x22bfe29d9270;l[591876]=0x284a8d20a06c;l[2308]=0x2b6b2158ed48;l[67844]=0x313519bd980c;l[133380]=0x2f65116bc5f8;l[198916]=0x2b89508c7cbe;l[264452]=0x3182118e4378;l[329988]=0x2faf0cd82346;l[395524]=0x2bcd22d2eca0;l[461060]=0x2f73f31be424;l[526596]=0x2d9cbb5c7f14;l[592132]=0x22a1797c613e;l[5]=0x1cc14aa7c5d8;l[65541]=0x30f21d23d00e;l[131077]=0x277b5fe16e40;l[196613]=0x2aecf6143f8c;l[262149]=0x313d24faa740;l[327685]=0x27b7c6f4a452;l[393221]=0x2b2e807410fc;l[458757]=0x31882cd17e7e;l[524293]=0x27f42e07da70;l[589829]=0x2b700ad3e278;l[261]=0x2d0c2d2381f4;l[65797]=0x267edc32e53c;l[131333]=0x2b3bce55fc00;l[196869]=0x2a6402d577e2;l[262405]=0x2d9e3c263ae0;l[327941]=0x3014b757aae8;l[393477]=0x2f3dd1057f70;l[459013]=0x2de26557473a;l[524549]=0x305c6add69dc;l[590085]=0x2f84211ed912;l[517]=0x27bce13692d0;l[66053]=0x2ea17b563630;l[131589]=0x220d0fb84f08;l[197125]=0x27f791c6265e;l[262661]=0x31a2f536af88;l[328197]=0x294a761f43e0;l[393733]=0x2ce370481198;l[459269]=0x31ebb526e488;l[524805]=0x2986dd327a20;l[590341]=0x2d24faa7e336;l[773]=0x2cc0e89701dc;l[66309]=0x307c599f704a;l[131845]=0x2e8239951b50;l[197381]=0x22c4c117e6c4;l[262917]=0x338c966075b8;l[328453]=0x3190d04a3ce6;l[393989]=0x2a27f0105100;l[459525]=0x33d6b9bd1026;l[525061]=0x31d7f7428938;l[590597]=0x2a6457238756;l[1029]=0x2d23462d1ba8;l[66565]=0x306bbc0483f0;l[132101]=0x2f6206b1e4f8;l[197637]=0x2e7d1c5dee58;l[263173]=0x2667290d8880;l[328709]=0x2b6fd3f137fe;l[394245]=0x2a878c236284;l[459781]=0x2df43ec65a10;l[525317]=0x309074f67fe0;l[590853]=0x2fa91257030c;l[1285]=0x1fa16bb88cd4;l[66821]=0x2982471c53dc;l[132357]=0x24020abd0420;l[197893]=0x2412bdc5b4d4;l[263429]=0x271be15640a8;l[328965]=0x19b594b61558;l[394501]=0x1ff9c19bd7e8;l[460037]=0x2a3af6fe7f02;l[525573]=0x2155cf337c58;l[591109]=0x252276725258;l[1541]=0x2af66c343680;l[67077]=0x318d64da4688;l[132613]=0x2f74a57c619c;l[198149]=0x2b061940806e;l[263685]=0x2f24d78476a0;l[329221]=0x2d07e51d4cd6;l[394757]=0x208cfb6bffb4;l[460293]=0x325b4782c282;l[525829]=0x303caf0fb4e0;l[591365]=0x285b95f05d8a;l[1797]=0x329f7cb6e7b8;l[67333]=0x3616b43f02b2;l[132869]=0x34fe5b95b658;l[198405]=0x340ce55e34b6;l[263941]=0x365f742f3394;l[329477]=0x3545828dfe76;l[395013]=0x3452a8ea1780;l[460549]=0x2bbf26783cca;l[526085]=0x31161719e608;l[591621]=0x301fdffc2038;l[2053]=0x2923514d31e8;l[67589]=0x33907ec29f30;l[133125]=0x2dc61c8bfc40;l[198661]=0x2dda3ee7b7a0;l[264197]=0x33d4a7f3a780;l[329733]=0x2e02839f2e60;l[395269]=0x2e16a5fae9c0;l[460805]=0x315084e2e590;l[526341]=0x23209dc82570;l[591877]=0x29c6bc0d8292;l[2309]=0x3286f458d8bc;l[67845]=0x39795f18f19e;l[133381]=0x37450c6abd80;l[198917]=0x329b2d4e5414;l[264453]=0x39c40f02faa4;l[329989]=0x378cbff07868;l[395525]=0x32dcb7ae2190;l[461061]=0x373a503995ea;l[526597]=0x34fece1dced0;l[592133]=0x27cab5e0a098;l[6]=0x1eebc771a1c0;l[65542]=0x371fd5853d10;l[131078]=0x2bbff734d2a4;l[196614]=0x2fdb49217bba;l[262150]=0x3766469cec78;l[327686]=0x2bf7c788e0ec;l[393222]=0x30183cc22560;l[458758]=0x37acb7b49bec;l[524294]=0x2c2f97dcef40;l[589830]=0x30553062cf12;l[262]=0x2e71f0a380b4;l[65798]=0x2694d6209ca8;l[131334]=0x2c37cc760488;l[196870]=0x2b2e9ab013ee;l[262406]=0x2f02560b6cd8;l[327942]=0x31ebb5713874;l[393478]=0x30e368d9a080;l[459014]=0x2f3d22c3c956;l[524550]=0x322a0c7e478c;l[590086]=0x31205c7a4a46;l[518]=0x2bacd6ebb370;l[66054]=0x33deda2bece2;l[131590]=0x24db92f679c4;l[197126]=0x2be2f0bc1e6c;l[262662]=0x376177d6c100;l[328198]=0x2d6bdf0e713a;l[393734]=0x31ae94f116bc;l[459270]=0x37a5a107ce36;l[524806]=0x2da3af627fb0;l[590342]=0x31eb8891c090;l[774]=0x2c612cf7c2b8;l[66310]=0x30c8e54115bc;l[131846]=0x2e67a8303830;l[197382]=0x206e86abccba;l[262918]=0x34541ca68884;l[328454]=0x31f13989c720;l[393990]=0x291e722f4c28;l[459526]=0x3493801e0dbc;l[525062]=0x322da09cfe3c;l[590598]=0x2950195d6d48;l[1030]=0x2db21485d100;l[66566]=0x318ed15b4524;l[132102]=0x304cbcee1c70;l[197638]=0x2f366c54b954;l[263174]=0x259cd15b45e0;l[328710]=0x2b8b8071467a;l[394246]=0x2a71d25e0484;l[459782]=0x2e78070b91fc;l[525318]=0x318721701360;l[590854]=0x306e588b2a10;l[1286]=0x2ab51a355dc8;l[66822]=0x366057b9cbce;l[132358]=0x2fdf98728e38;l[197894]=0x2ff26475df52;l[263430]=0x3386e47336cc;l[328966]=0x23b55ccb2d72;l[394502]=0x2b1a05f86b40;l[460038]=0x3731ff94d9b0;l[525574]=0x2cb35ea8a0d4;l[591110]=0x312d6230fc8a;l[1542]=0x22035b636520;l[67078]=0x29bd16939198;l[132614]=0x273a5d07f8f4;l[198150]=0x21f802bda5e6;l[263686]=0x26c7d972c740;l[329222]=0x2440ecdde9be;l[394758]=0x15877cfe3a8c;l[460294]=0x2a70ac9fff0a;l[525830]=0x27e819ff3db0;l[591366]=0x1e9a3c982c22;l[1798]=0x335668e23a00;l[67334]=0x3761e76860d6;l[132870]=0x36112fa48ac0;l[198406]=0x34ee53279ca2;l[263942]=0x37a14adfe114;l[329478]=0x364efa24223a;l[395014]=0x352aba3acec8;l[460550]=0x2b13901fe676;l[526086]=0x315084f3e0d0;l[591622]=0x3028e790ae84;l[2054]=0x303b0fdeeb10;l[67590]=0x3c70867a5ef0;l[133126]=0x35a388612dc0;l[198662]=0x35b7aabce920;l[264198]=0x3cb4afab6740;l[329734]=0x35dfef745fe0;l[395270]=0x35f411d01b40;l[460806]=0x39b7342a4250;l[526342]=0x2919f90d03c0;l[591878]=0x30de7a9f3bba;l[2310]=0x2cd1332f0a68;l[67846]=0x34e787318c6c;l[133382]=0x324a610df148;l[198918]=0x2ccdda9b62ae;l[264454]=0x352253e9e418;l[329990]=0x32823161fad6;l[395526]=0x2cff81c97ed0;l[461062]=0x320f597e6b04;l[526598]=0x2f6b03ed3ce4;l[592134]=0x1ff98c39f94e;l[7]=0x2e52acafcaa8;l[65543]=0x4a8f3d6cd966;l[131079]=0x3d4b852048b0;l[196615]=0x4215d9d8abe4;l[262151]=0x4ae0ecfb0800;l[327687]=0x3d8e93ead62a;l[393223]=0x425e0befd4bc;l[458759]=0x4b329c8936a6;l[524295]=0x3dd1a2b563b0;l[589831]=0x42a63e06fda0;l[263]=0x3c68f18e704c;l[65799]=0x334176836e20;l[131335]=0x39cfda155050;l[196871]=0x389aab141c6e;l[262407]=0x3d0d51843478;l[327943]=0x406efe2884dc;l[393479]=0x3f3ab455a9a0;l[459015]=0x3d4efce25cb6;l[524551]=0x40b433db5fb4;l[590087]=0x3f7e869c1f26;l[519]=0x3a7624719920;l[66055]=0x43f9d91830f0;l[131591]=0x328bfe90fa28;l[197127]=0x3ab48054346e;l[262663]=0x480a735eb8b8;l[328199]=0x3c7c092b4d20;l[393735]=0x416cc30d92b8;l[459271]=0x4856dea1f708;l[524807]=0x3cbc1b918cb0;l[590343]=0x41b1f8c06da6;l[775]=0x3fcf47befaf4;l[66311]=0x44eb34842206;l[131847]=0x422ac7a7ab60;l[197383]=0x31fdea56f878;l[262919]=0x49092e3ed090;l[328455]=0x46471b567612;l[393991]=0x3c125a165b80;l[459527]=0x495599820efa;l[525063]=0x46908a356660;l[590599]=0x3c51091035d2;l[1031]=0x3ef664538e48;l[66567]=0x436e07d62e3c;l[132103]=0x41fa33fd9bc0;l[197639]=0x40b91ccdec1c;l[263175]=0x35a279da8b00;l[328711]=0x3c7dccd1fcaa;l[394247]=0x3b3958286e2c;l[459783]=0x3fdfae8fb184;l[525319]=0x43684cd7ae70;l[590855]=0x4224bd5c7898;l[1287]=0x3ce5bb4baa2c;l[66823]=0x4a5d394bd050;l[132359]=0x42ddd577b600;l[197895]=0x42f498d0b8a0;l[263431]=0x47165395ece0;l[328967]=0x34db6f41169c;l[394503]=0x3d627310e0c8;l[460039]=0x4b530f4227ae;l[525575]=0x3f3cd38fc9c0;l[591111]=0x446611bcbc4c;l[1543]=0x426e97d85cf0;l[67079]=0x4b5ab7296522;l[132615]=0x487da506d810;l[198151]=0x42771e44d26c;l[263687]=0x4807af01de38;l[329223]=0x452669d60c48;l[394759]=0x343e155eba50;l[460295]=0x4c51ca223fc8;l[525831]=0x496edeea8a00;l[591367]=0x3ec3ded27d84;l[1799]=0x32f48ac15eec;l[67335]=0x3794c267a2a0;l[132871]=0x360c1dab53d0;l[198407]=0x34b84d0b0a38;l[263943]=0x37cc1fcca540;l[329479]=0x3641e2186dac;l[395015]=0x34ecae0bbec0;l[460551]=0x29524e69d9d4;l[526087]=0x3075b992364c;l[591623]=0x2f1d280ba886;l[2055]=0x394f711776f0;l[67591]=0x474dd7c8bf22;l[133127]=0x3f7ee4bccd6c;l[198663]=0x3f93ae085686;l[264199]=0x4793f5c930a0;l[329735]=0x3fbd409f68ba;l[395271]=0x3fd209eaf1d4;l[460807]=0x441f16a711de;l[526343]=0x31152e772298;l[591879]=0x39f8ba460324;l[2311]=0x3ef4425cbb68;l[67847]=0x4837911f94f4;l[133383]=0x453aa9048130;l[198919]=0x3ef48cb9bbce;l[264455]=0x487daf200678;l[329991]=0x457dcaa0a496;l[395527]=0x3f31852ff1c8;l[461063]=0x44fcad8c443c;l[526599]=0x41f896039d7c;l[592135]=0x3052d05832ee;l[8]=0x2e02110c7600;l[65544]=0x4e412d0e5c18;l[131080]=0x3f13a3610904;l[196616]=0x448703808a42;l[262152]=0x4e8c34e535a8;l[327688]=0x3f500a744174;l[393224]=0x44c88de05e10;l[458760]=0x4ed73cbc0f44;l[524296]=0x3f8c718779f0;l[589832]=0x450a184031ea;l[264]=0x478bcf386b50;l[65800]=0x3d187e09a942;l[131336]=0x4490d93c6400;l[196872]=0x432e37644b14;l[262408]=0x483e534d807c;l[327944]=0x4c16d794b3e6;l[393480]=0x4ab51aeaf3a0;l[459016]=0x48827c7e8f34;l[524552]=0x4c5e8b1a7538;l[590088]=0x4afb6b044fa0;l[520]=0x3ea9d94c3cb0;l[66056]=0x497b458ccada;l[131592]=0x359edde76864;l[197128]=0x3ee489dbd044;l[262664]=0x4e0def09ce40;l[328200]=0x40e2b99eded2;l[393736]=0x467d7db45c7c;l[459272]=0x4e56aefa059e;l[524808]=0x411f20b21770;l[590344]=0x46bf08143078;l[776]=0x4615f37d6a00;l[66312]=0x4be0fa2d9c30;l[131848]=0x48bc42f4c380;l[197384]=0x36568f470036;l[262920]=0x5082668b2bac;l[328456]=0x4d5c09466f24;l[393992]=0x41c0338fec08;l[459528]=0x50cc89e7c878;l[525064]=0x4da3303ebdd4;l[590600]=0x41fc9aa324bc;l[1032]=0x4a322c3a8240;l[66568]=0x4f420a29b582;l[132104]=0x4d99caa520bc;l[197640]=0x4c2b409e8c0e;l[263176]=0x3f94e970a4c8;l[328712]=0x475a3408ef00;l[394248]=0x45e84c887b78;l[459784]=0x4b2c1868dc2e;l[525320]=0x4f2b8e53bc20;l[590856]=0x4dba8c01a13e;l[1288]=0x40f4bee80078;l[66824]=0x50334cf27ff6;l[132360]=0x47b014202a28;l[197896]=0x47c59e5d7f8a;l[263432]=0x4c6f637931cc;l[328968]=0x37c5f2062fda;l[394504]=0x416a200727a0;l[460040]=0x512e2e5be838;l[525576]=0x437b27720674;l[591112]=0x494e6fd23112;l[1544]=0x489e74947400;l[67080]=0x52b30640ea50;l[132616]=0x4f71a9c1fb34;l[198152]=0x489d04c2d55e;l[263688]=0x4ee45dc25e00;l[329224]=0x4b9ece3a2a06;l[394760]=0x387da365c7ac;l[460296]=0x53b1eb85a082;l[525832]=0x506ab5f188b0;l[591368]=0x4458a16313aa;l[1800]=0x48b8d49e08b0;l[67336]=0x4df4e7408d9e;l[132872]=0x4c3b7767ea70;l[198408]=0x4abdd48069ba;l[263944]=0x4e39a4277fb4;l[329480]=0x4c7e9b56f3c2;l[395016]=0x4aff95030db8;l[460552]=0x3de921b6508e;l[526088]=0x45fa250f3380;l[591624]=0x4477c1416e9c;l[2056]=0x329bdf8db500;l[67592]=0x425e79222b66;l[133128]=0x3988d3f0d30c;l[198664]=0x399986f983c2;l[264200]=0x4298545a13b8;l[329736]=0x39baed0ae52e;l[395272]=0x39cba01395e4;l[460808]=0x3e9dd9ff08ca;l[526344]=0x29228789c2b0;l[591880]=0x33206062a5b0;l[2312]=0x4447a2d30224;l[67848]=0x4eb363f149ce;l[133384]=0x4b523179d400;l[198920]=0x443df6f1ee6c;l[264456]=0x4ef73a0b18ec;l[329992]=0x4b930b2f5500;l[395528]=0x4478a7818200;l[461064]=0x4afa9820514a;l[526600]=0x4792363b4880;l[592136]=0x33b39a32cd90;l[9]=0x2e61ab2a79a8;l[65545]=0x52a402c3f0da;l[131081]=0x418d58089528;l[196617]=0x47aa73e1ee30;l[262153]=0x52ea73dba2a0;l[327689]=0x41c5285ca5ce;l[393225]=0x47e767829a34;l[458761]=0x5330e4f35472;l[524297]=0x41fcf8b0b680;l[589833]=0x48245b234644;l[265]=0x454973936ac8;l[65801]=0x398658d26166;l[131337]=0x41e4b8376d40;l[196873]=0x4050b019e7d8;l[262409]=0x45fa4e0db32c;l[327945]=0x4a45b689422a;l[393481]=0x48b2939a1568;l[459017]=0x46351ac61208;l[524553]=0x4a840d9653a0;l[590089]=0x48ef873ac18c;l[521]=0x40ceec558510;l[66057]=0x4cedc1b6a94c;l[131593]=0x36a27e79bae0;l[197129]=0x41050625f012;l[262665]=0x52018efe0778;l[328201]=0x43393fe233ec;l[393737]=0x497dbfb18960;l[459273]=0x5245b82f170c;l[524809]=0x4371103644c0;l[590345]=0x49bab3523592;l[777]=0x41834261946c;l[66313]=0x47fa9052ab32;l[131849]=0x446ebc1349f0;l[197385]=0x2fcd5f5e4fbc;l[262921]=0x4d16f754a808;l[328457]=0x49897d0962ee;l[393993]=0x3c83c03250c0;l[459529]=0x4d565acc2f9e;l[525065]=0x49c5e41c9c68;l[590601]=0x3cb56760743e;l[1033]=0x479233de9b50;l[66569]=0x4d3658cbda6e;l[132105]=0x4b55ba2cbbec;l[197641]=0x49b5c9e0bac2;l[263177]=0x3b9bcb09c5e0;l[328713]=0x444719d46134;l[394249]=0x42a3cc0e8130;l[459785]=0x488119f977d2;l[525321]=0x4cf37418b358;l[590857]=0x4b510b812bfa;l[1289]=0x42ebee79b324;l[66825]=0x53f13e152bb4;l[132361]=0x4a69e1cb3a20;l[197897]=0x4a7de47381fc;l[263433]=0x4faf656c51f8;l[328969]=0x38971861c410;l[394505]=0x4358221a8928;l[460041]=0x54ef5419632a;l[525577]=0x459f337e9d48;l[591113]=0x4c1c37989fb0;l[1545]=0x43a04485c280;l[67081]=0x4eda75e38066;l[132617]=0x4b31fc5e08b8;l[198153]=0x438c66779c28;l[263689]=0x4a87b50f7b18;l[329225]=0x46db0880be8c;l[394761]=0x317e34a52548;l[460297]=0x4fd03d772af4;l[525833]=0x4c21eadc8a90;l[591369]=0x3ea5ef2d8678;l[1801]=0x4541e71ad858;l[67337]=0x4b1240bb6922;l[132873]=0x492071c83c38;l[198409]=0x4771689b4f06;l[263945]=0x4b4da129aa94;l[329481]=0x495a393e94e6;l[395017]=0x47a9cca54260;l[460553]=0x390fb1af779a;l[526089]=0x4206b93aaba8;l[591625]=0x4052ef277a48;l[2057]=0x4063c11d4a38;l[67593]=0x51f0bcd2679c;l[133129]=0x481a94b92168;l[198665]=0x482d60bc7284;l[264201]=0x5230e2fa3120;l[329737]=0x4852f8c314bc;l[395273]=0x4865c4c665d8;l[460809]=0x4dc35b1ea464;l[526345]=0x35dccda18040;l[591881]=0x40fb22c1de7e;l[2313]=0x330509151f6c;l[67849]=0x3e938cbd8386;l[133385]=0x3ac860185a00;l[198921]=0x32e05782028c;l[264457]=0x3ec40b7cbb34;l[329993]=0x3af5e2734390;l[395529]=0x3307b0b6feb0;l[461065]=0x3a3ab9c6f922;l[526601]=0x36685db43ca0;l[592137]=0x204b3b7d5fa0} +{l[2619] = 0;l[2645] = 1;l[2671] = 2;l[2697] = 3;l[2723] = 4;l[2749] = 5;l[2775] = 6;l[2801] = 7;l[2827] = 8;l[2853] = 9;l[2879] = 10;l[2905] = 11;l[2931] = 12;l[2957] = 13;l[2983] = 14;l[3009] = 15;l[3035] = 16;l[3061] = 17;l[3087] = 18;l[3113] = 19;l[3139] = 20;l[3165] = 21;l[3191] = 22;l[3217] = 23;l[3243] = 24;l[3269] = 25;l[2620] = 26;l[2646] = 27;l[2672] = 28;l[2698] = 29;l[2724] = 30;l[2750] = 31;l[2776] = 32;l[2802] = 33;l[2828] = 34;l[2854] = 35;l[2880] = 36;l[2906] = 37;l[2932] = 38;l[2958] = 39;l[2984] = 40;l[3010] = 41;l[3036] = 42;l[3062] = 43;l[3088] = 44;l[3114] = 45;l[3140] = 46;l[3166] = 47;l[3192] = 48;l[3218] = 49;l[3244] = 50;l[3270] = 51;l[2621] = 52;l[2647] = 53;l[2673] = 54;l[2699] = 55;l[2725] = 56;l[2751] = 57;l[2777] = 58;l[2803] = 59;l[2829] = 60;l[2855] = 61;l[2881] = 62;l[2907] = 63;l[2933] = 64;l[2959] = 65;l[2985] = 66;l[3011] = 67;l[3037] = 68;l[3063] = 69;l[3089] = 70;l[3115] = 71;l[3141] = 72;l[3167] = 73;l[3193] = 74;l[3219] = 75;l[3245] = 76;l[3271] = 77;l[2622] = 78;l[2648] = 79;l[2674] = 80;l[2700] = 81;l[2726] = 82;l[2752] = 83;l[2778] = 84;l[2804] = 85;l[2830] = 86;l[2856] = 87;l[2882] = 88;l[2908] = 89;l[2934] = 90;l[2960] = 91;l[2986] = 92;l[3012] = 93;l[3038] = 94;l[3064] = 95;l[3090] = 96;l[3116] = 97;l[3142] = 98;l[3168] = 99;l[3194] = 100;l[3220] = 101;l[3246] = 102;l[3272] = 103;l[2623] = 104;l[2649] = 105;l[2675] = 106;l[2701] = 107;l[2727] = 108;l[2753] = 109;l[2779] = 110;l[2805] = 111;l[2831] = 112;l[2857] = 113;l[2883] = 114;l[2909] = 115;l[2935] = 116;l[2961] = 117;l[2987] = 118;l[3013] = 119;l[3039] = 120;l[3065] = 121;l[3091] = 122;l[3117] = 123;l[3143] = 124;l[3169] = 125;l[3195] = 126;l[3221] = 127;l[3247] = 128;l[3273] = 129;l[2624] = 130;l[2650] = 131;l[2676] = 132;l[2702] = 133;l[2728] = 134;l[2754] = 135;l[2780] = 136;l[2806] = 137;l[2832] = 138;l[2858] = 139;l[2884] = 140;l[2910] = 141;l[2936] = 142;l[2962] = 143;l[2988] = 144;l[3014] = 145;l[3040] = 146;l[3066] = 147;l[3092] = 148;l[3118] = 149;l[3144] = 150;l[3170] = 151;l[3196] = 152;l[3222] = 153;l[3248] = 154;l[3274] = 155;l[2625] = 156;l[2651] = 157;l[2677] = 158;l[2703] = 159;l[2729] = 160;l[2755] = 161;l[2781] = 162;l[2807] = 163;l[2833] = 164;l[2859] = 165;l[2885] = 166;l[2911] = 167;l[2937] = 168;l[2963] = 169;l[2989] = 170;l[3015] = 171;l[3041] = 172;l[3067] = 173;l[3093] = 174;l[3119] = 175;l[3145] = 176;l[3171] = 177;l[3197] = 178;l[3223] = 179;l[3249] = 180;l[3275] = 181;l[2626] = 182;l[2652] = 183;l[2678] = 184;l[2704] = 185;l[2730] = 186;l[2756] = 187;l[2782] = 188;l[2808] = 189;l[2834] = 190;l[2860] = 191;l[2886] = 192;l[2912] = 193;l[2938] = 194;l[2964] = 195;l[2990] = 196;l[3016] = 197;l[3042] = 198;l[3068] = 199;l[3094] = 200;l[3120] = 201;l[3146] = 202;l[3172] = 203;l[3198] = 204;l[3224] = 205;l[3250] = 206;l[3276] = 207;l[2627] = 208;l[2653] = 209;l[2679] = 210;l[2705] = 211;l[2731] = 212;l[2757] = 213;l[2783] = 214;l[2809] = 215;l[2835] = 216;l[2861] = 217;l[2887] = 218;l[2913] = 219;l[2939] = 220;l[2965] = 221;l[2991] = 222;l[3017] = 223;l[3043] = 224;l[3069] = 225;l[3095] = 226;l[3121] = 227;l[3147] = 228;l[3173] = 229;l[3199] = 230;l[3225] = 231;l[3251] = 232;l[3277] = 233;l[2628] = 234;l[2654] = 235;l[2680] = 236;l[2706] = 237;l[2732] = 238;l[2758] = 239;l[2784] = 240;l[2810] = 241;l[2836] = 242;l[2862] = 243;l[2888] = 244;l[2914] = 245;l[2940] = 246;l[2966] = 247;l[2992] = 248;l[3018] = 249;l[3044] = 250;l[3070] = 251;l[3096] = 252;l[3122] = 253;l[3148] = 254;l[3174] = 255;l[3200] = 256;l[3226] = 257;l[3252] = 258;l[3278] = 259;l[2629] = 260;l[2655] = 261;l[2681] = 262;l[2707] = 263;l[2733] = 264;l[2759] = 265;l[2785] = 266;l[2811] = 267;l[2837] = 268;l[2863] = 269;l[2889] = 270;l[2915] = 271;l[2941] = 272;l[2967] = 273;l[2993] = 274;l[3019] = 275;l[3045] = 276;l[3071] = 277;l[3097] = 278;l[3123] = 279;l[3149] = 280;l[3175] = 281;l[3201] = 282;l[3227] = 283;l[3253] = 284;l[3279] = 285;l[2630] = 286;l[2656] = 287;l[2682] = 288;l[2708] = 289;l[2734] = 290;l[2760] = 291;l[2786] = 292;l[2812] = 293;l[2838] = 294;l[2864] = 295;l[2890] = 296;l[2916] = 297;l[2942] = 298;l[2968] = 299;l[2994] = 300;l[3020] = 301;l[3046] = 302;l[3072] = 303;l[3098] = 304;l[3124] = 305;l[3150] = 306;l[3176] = 307;l[3202] = 308;l[3228] = 309;l[3254] = 310;l[3280] = 311;l[2631] = 312;l[2657] = 313;l[2683] = 314;l[2709] = 315;l[2735] = 316;l[2761] = 317;l[2787] = 318;l[2813] = 319;l[2839] = 320;l[2865] = 321;l[2891] = 322;l[2917] = 323;l[2943] = 324;l[2969] = 325;l[2995] = 326;l[3021] = 327;l[3047] = 328;l[3073] = 329;l[3099] = 330;l[3125] = 331;l[3151] = 332;l[3177] = 333;l[3203] = 334;l[3229] = 335;l[3255] = 336;l[3281] = 337;l[2632] = 338;l[2658] = 339;l[2684] = 340;l[2710] = 341;l[2736] = 342;l[2762] = 343;l[2788] = 344;l[2814] = 345;l[2840] = 346;l[2866] = 347;l[2892] = 348;l[2918] = 349;l[2944] = 350;l[2970] = 351;l[2996] = 352;l[3022] = 353;l[3048] = 354;l[3074] = 355;l[3100] = 356;l[3126] = 357;l[3152] = 358;l[3178] = 359;l[3204] = 360;l[3230] = 361;l[3256] = 362;l[3282] = 363;l[2633] = 364;l[2659] = 365;l[2685] = 366;l[2711] = 367;l[2737] = 368;l[2763] = 369;l[2789] = 370;l[2815] = 371;l[2841] = 372;l[2867] = 373;l[2893] = 374;l[2919] = 375;l[2945] = 376;l[2971] = 377;l[2997] = 378;l[3023] = 379;l[3049] = 380;l[3075] = 381;l[3101] = 382;l[3127] = 383;l[3153] = 384;l[3179] = 385;l[3205] = 386;l[3231] = 387;l[3257] = 388;l[3283] = 389;l[2634] = 390;l[2660] = 391;l[2686] = 392;l[2712] = 393;l[2738] = 394;l[2764] = 395;l[2790] = 396;l[2816] = 397;l[2842] = 398;l[2868] = 399;l[2894] = 400;l[2920] = 401;l[2946] = 402;l[2972] = 403;l[2998] = 404;l[3024] = 405;l[3050] = 406;l[3076] = 407;l[3102] = 408;l[3128] = 409;l[3154] = 410;l[3180] = 411;l[3206] = 412;l[3232] = 413;l[3258] = 414;l[3284] = 415;l[2635] = 416;l[2661] = 417;l[2687] = 418;l[2713] = 419;l[2739] = 420;l[2765] = 421;l[2791] = 422;l[2817] = 423;l[2843] = 424;l[2869] = 425;l[2895] = 426;l[2921] = 427;l[2947] = 428;l[2973] = 429;l[2999] = 430;l[3025] = 431;l[3051] = 432;l[3077] = 433;l[3103] = 434;l[3129] = 435;l[3155] = 436;l[3181] = 437;l[3207] = 438;l[3233] = 439;l[3259] = 440;l[3285] = 441;l[2636] = 442;l[2662] = 443;l[2688] = 444;l[2714] = 445;l[2740] = 446;l[2766] = 447;l[2792] = 448;l[2818] = 449;l[2844] = 450;l[2870] = 451;l[2896] = 452;l[2922] = 453;l[2948] = 454;l[2974] = 455;l[3000] = 456;l[3026] = 457;l[3052] = 458;l[3078] = 459;l[3104] = 460;l[3130] = 461;l[3156] = 462;l[3182] = 463;l[3208] = 464;l[3234] = 465;l[3260] = 466;l[3286] = 467;l[2637] = 468;l[2663] = 469;l[2689] = 470;l[2715] = 471;l[2741] = 472;l[2767] = 473;l[2793] = 474;l[2819] = 475;l[2845] = 476;l[2871] = 477;l[2897] = 478;l[2923] = 479;l[2949] = 480;l[2975] = 481;l[3001] = 482;l[3027] = 483;l[3053] = 484;l[3079] = 485;l[3105] = 486;l[3131] = 487;l[3157] = 488;l[3183] = 489;l[3209] = 490;l[3235] = 491;l[3261] = 492;l[3287] = 493;l[2638] = 494;l[2664] = 495;l[2690] = 496;l[2716] = 497;l[2742] = 498;l[2768] = 499;l[2794] = 500;l[2820] = 501;l[2846] = 502;l[2872] = 503;l[2898] = 504;l[2924] = 505;l[2950] = 506;l[2976] = 507;l[3002] = 508;l[3028] = 509;l[3054] = 510;l[3080] = 511;l[3106] = 512;l[3132] = 513;l[3158] = 514;l[3184] = 515;l[3210] = 516;l[3236] = 517;l[3262] = 518;l[3288] = 519;l[2639] = 520;l[2665] = 521;l[2691] = 522;l[2717] = 523;l[2743] = 524;l[2769] = 525;l[2795] = 526;l[2821] = 527;l[2847] = 528;l[2873] = 529;l[2899] = 530;l[2925] = 531;l[2951] = 532;l[2977] = 533;l[3003] = 534;l[3029] = 535;l[3055] = 536;l[3081] = 537;l[3107] = 538;l[3133] = 539;l[3159] = 540;l[3185] = 541;l[3211] = 542;l[3237] = 543;l[3263] = 544;l[3289] = 545;l[2640] = 546;l[2666] = 547;l[2692] = 548;l[2718] = 549;l[2744] = 550;l[2770] = 551;l[2796] = 552;l[2822] = 553;l[2848] = 554;l[2874] = 555;l[2900] = 556;l[2926] = 557;l[2952] = 558;l[2978] = 559;l[3004] = 560;l[3030] = 561;l[3056] = 562;l[3082] = 563;l[3108] = 564;l[3134] = 565;l[3160] = 566;l[3186] = 567;l[3212] = 568;l[3238] = 569;l[3264] = 570;l[3290] = 571;l[2641] = 572;l[2667] = 573;l[2693] = 574;l[2719] = 575;l[2745] = 576;l[2771] = 577;l[2797] = 578;l[2823] = 579;l[2849] = 580;l[2875] = 581;l[2901] = 582;l[2927] = 583;l[2953] = 584;l[2979] = 585;l[3005] = 586;l[3031] = 587;l[3057] = 588;l[3083] = 589;l[3109] = 590;l[3135] = 591;l[3161] = 592;l[3187] = 593;l[3213] = 594;l[3239] = 595;l[3265] = 596;l[3291] = 597;l[2642] = 598;l[2668] = 599;l[2694] = 600;l[2720] = 601;l[2746] = 602;l[2772] = 603;l[2798] = 604;l[2824] = 605;l[2850] = 606;l[2876] = 607;l[2902] = 608;l[2928] = 609;l[2954] = 610;l[2980] = 611;l[3006] = 612;l[3032] = 613;l[3058] = 614;l[3084] = 615;l[3110] = 616;l[3136] = 617;l[3162] = 618;l[3188] = 619;l[3214] = 620;l[3240] = 621;l[3266] = 622;l[3292] = 623;l[2643] = 624;l[2669] = 625;l[2695] = 626;l[2721] = 627;l[2747] = 628;l[2773] = 629;l[2799] = 630;l[2825] = 631;l[2851] = 632;l[2877] = 633;l[2903] = 634;l[2929] = 635;l[2955] = 636;l[2981] = 637;l[3007] = 638;l[3033] = 639;l[3059] = 640;l[3085] = 641;l[3111] = 642;l[3137] = 643;l[3163] = 644;l[3189] = 645;l[3215] = 646;l[3241] = 647;l[3267] = 648;l[3293] = 649;l[2644] = 650;l[2670] = 651;l[2696] = 652;l[2722] = 653;l[2748] = 654;l[2774] = 655;l[2800] = 656;l[2826] = 657;l[2852] = 658;l[2878] = 659;l[2904] = 660;l[2930] = 661;l[2956] = 662;l[2982] = 663;l[3008] = 664;l[3034] = 665;l[3060] = 666;l[3086] = 667;l[3112] = 668;l[3138] = 669;l[3164] = 670;l[3190] = 671;l[3216] = 672;l[3242] = 673;l[3268] = 674;l[3294] = 675;}
\ No newline at end of file @@ -1 +1 @@ -{l[65536]=66;l[131072]=96;l[196608]=162;l[262144]=272;l[327680]=250;l[393216]=336;l[458752]=490;l[524288]=416;l[589824]=522;l[256]=740;l[65792]=726;l[131328]=840;l[196864]=910;l[262400]=1092;l[327936]=1200;l[393472]=1280;l[459008]=1360;l[524544]=1476;l[590080]=1558;l[512]=1120;l[66048]=1470;l[131584]=1056;l[197120]=1288;l[262656]=1776;l[328192]=1500;l[393728]=1716;l[459264]=2052;l[524800]=1736;l[590336]=1972;l[768]=2040;l[66304]=2418;l[131840]=2304;l[197376]=1782;l[262912]=2788;l[328448]=2660;l[393984]=2376;l[459520]=3108;l[525056]=2964;l[590592]=2652;l[1024]=3040;l[66560]=3362;l[132096]=3276;l[197632]=3354;l[263168]=2992;l[328704]=3240;l[394240]=3312;l[459776]=3760;l[525312]=3936;l[590848]=4018;l[1280]=2900;l[66816]=3774;l[132352]=3328;l[197888]=3392;l[263424]=3888;l[328960]=2750;l[394496]=3248;l[460032]=4332;l[525568]=3596;l[591104]=4012;l[1536]=4200;l[67072]=5002;l[132608]=4712;l[198144]=4410;l[263680]=5120;l[329216]=4810;l[394752]=3696;l[460288]=5628;l[525824]=5304;l[591360]=4692;l[1792]=5460;l[67328]=5964;l[132864]=5760;l[198400]=5840;l[263936]=6216;l[329472]=6000;l[395008]=6080;l[460544]=5390;l[526080]=5772;l[591616]=5846;l[2048]=4800;l[67584]=6156;l[133120]=5412;l[198656]=5478;l[264192]=6384;l[329728]=5610;l[395264]=5676;l[460800]=6438;l[526336]=4576;l[591872]=5340;l[2304]=6480;l[67840]=7644;l[133376]=7176;l[198912]=6696;l[264448]=7896;l[329984]=7410;l[395520]=6912;l[461056]=7954;l[526592]=7448;l[592128]=5742;l[1]=5800;l[65537]=9494;l[131073]=7752;l[196609]=8446;l[262145]=9984;l[327681]=8190;l[393217]=8904;l[458753]=10486;l[524289]=8640;l[589825]=9374;l[257]=6380;l[65793]=5550;l[131329]=6048;l[196865]=6102;l[262401]=7068;l[327937]=7360;l[393473]=7424;l[459009]=7488;l[524545]=7788;l[590081]=7854;l[513]=7440;l[66049]=9196;l[131585]=6588;l[197121]=7626;l[262657]=9920;l[328193]=8250;l[393729]=9072;l[459265]=10414;l[524801]=8704;l[590337]=9546;l[769]=8840;l[66305]=10218;l[131841]=9504;l[197377]=7182;l[262913]=10988;l[328449]=10260;l[393985]=8976;l[459521]=11508;l[525057]=10764;l[590593]=9452;l[1025]=9800;l[66561]=10716;l[132097]=10224;l[197633]=10296;l[263169]=8928;l[328705]=9570;l[394241]=9636;l[459777]=10878;l[525313]=11248;l[590849]=11324;l[1281]=10800;l[66817]=13288;l[132353]=11856;l[197889]=11934;l[263425]=13244;l[328961]=9920;l[394497]=11232;l[460033]=14130;l[525569]=12008;l[591105]=13038;l[1537]=12480;l[67073]=14490;l[132609]=13608;l[198145]=12714;l[263681]=14432;l[329217]=13530;l[394753]=10624;l[460289]=15364;l[525825]=14448;l[591361]=12844;l[1793]=12240;l[67329]=13338;l[132865]=12728;l[198401]=12802;l[263937]=13572;l[329473]=12950;l[395009]=13024;l[460545]=11328;l[526081]=12104;l[591617]=12172;l[2049]=13320;l[67585]=16290;l[133121]=14560;l[198657]=14640;l[264193]=16560;l[329729]=14800;l[395265]=14880;l[460801]=16456;l[526337]=12408;l[591873]=13986;l[2305]=15200;l[67841]=17572;l[133377]=16512;l[198913]=15440;l[264449]=17848;l[329985]=16770;l[395521]=15680;l[461057]=17730;l[526593]=16632;l[592129]=13134;l[2]=9600;l[65538]=16884;l[131074]=13332;l[196610]=14616;l[262146]=17544;l[327682]=13940;l[393218]=15244;l[458754]=18216;l[524290]=14560;l[589826]=15884;l[258]=14700;l[65794]=13082;l[131330]=13992;l[196866]=14058;l[262402]=15836;l[327938]=16340;l[393474]=16416;l[459010]=16492;l[524546]=17004;l[590082]=17082;l[514]=10560;l[66050]=13702;l[131586]=8880;l[197122]=10704;l[262658]=14784;l[328194]=11700;l[393730]=13108;l[459266]=15436;l[524802]=12312;l[590338]=13740;l[770]=14260;l[66306]=16632;l[131842]=15312;l[197378]=11184;l[262914]=17784;l[328450]=16450;l[393986]=14160;l[459522]=18486;l[525058]=17136;l[590594]=14818;l[1026]=17760;l[66562]=19280;l[132098]=18392;l[197634]=18468;l[263170]=16104;l[328706]=17150;l[394242]=17220;l[459778]=19266;l[525314]=19840;l[590850]=19920;l[1282]=15000;l[66818]=19076;l[132354]=16632;l[197890]=16698;l[263426]=18796;l[328962]=13260;l[394498]=15360;l[460034]=20046;l[525570]=16512;l[591106]=18130;l[1538]=18720;l[67074]=21924;l[132610]=20436;l[198146]=18936;l[263682]=21648;l[329218]=20140;l[394754]=15428;l[460290]=22962;l[525826]=21440;l[591362]=18830;l[1794]=20520;l[67330]=22222;l[132866]=21216;l[198402]=21294;l[263938]=22468;l[329474]=21450;l[395010]=21528;l[460546]=18836;l[526082]=20016;l[591618]=20088;l[2050]=17360;l[67586]=21918;l[133122]=19176;l[198658]=19244;l[264194]=22152;l[329730]=19380;l[395266]=19448;l[460802]=21812;l[526338]=15552;l[591874]=17918;l[2306]=21460;l[67842]=25026;l[133378]=23360;l[198914]=21682;l[264450]=25284;l[329986]=23600;l[395522]=21904;l[461058]=24948;l[526594]=23244;l[592130]=17940;l[3]=13200;l[65539]=24080;l[131075]=18724;l[196611]=20604;l[262147]=24928;l[327683]=19520;l[393219]=21420;l[458755]=25788;l[524291]=20328;l[589827]=22248;l[259]=19220;l[65795]=16794;l[131331]=18096;l[196867]=18154;l[262403]=20724;l[327939]=21420;l[393475]=21488;l[459011]=21556;l[524547]=22260;l[590083]=22330;l[515]=17920;l[66051]=22470;l[131587]=15456;l[197123]=18088;l[262659]=23976;l[328195]=19500;l[393731]=21516;l[459267]=24852;l[524803]=20336;l[590339]=22372;l[771]=14520;l[66307]=17874;l[131843]=15936;l[197379]=9990;l[262915]=19372;l[328451]=17420;l[393987]=14112;l[459523]=20220;l[525059]=18252;l[590595]=14916;l[1027]=22440;l[66563]=24552;l[132099]=23256;l[197635]=23324;l[263171]=19952;l[328707]=21390;l[394243]=21452;l[459779]=24290;l[525315]=25056;l[590851]=25128;l[1283]=21000;l[66819]=26676;l[132355]=23232;l[197891]=23298;l[263427]=26196;l[328963]=18460;l[394499]=21360;l[460035]=27846;l[525571]=22912;l[591107]=25130;l[1539]=20160;l[67075]=24548;l[132611]=22444;l[198147]=20328;l[263683]=24024;l[329219]=21900;l[394755]=15372;l[460291]=25690;l[525827]=23552;l[591363]=19926;l[1795]=25160;l[67331]=27454;l[132867]=26040;l[198403]=26110;l[263939]=27676;l[329475]=26250;l[395011]=26320;l[460547]=22620;l[526083]=24192;l[591619]=24256;l[2051]=23560;l[67587]=29718;l[133123]=25976;l[198659]=26044;l[264195]=29952;l[329731]=26180;l[395267]=26248;l[460803]=29412;l[526339]=20952;l[591875]=24118;l[2307]=22620;l[67843]=27370;l[133379]=25088;l[198915]=22794;l[264451]=27580;l[329987]=25280;l[395523]=22968;l[461059]=26996;l[526595]=24676;l[592131]=17556;l[4]=24000;l[65540]=38496;l[131076]=31356;l[196612]=33852;l[262148]=39592;l[327684]=32400;l[393220]=34916;l[458756]=40700;l[524292]=33456;l[589828]=35992;l[260]=30340;l[65796]=27126;l[131332]=28840;l[196868]=28910;l[262404]=32292;l[327940]=33200;l[393476]=33280;l[459012]=33360;l[524548]=34276;l[590084]=34358;l[516]=29400;l[66052]=35364;l[131588]=26164;l[197124]=29610;l[262660]=37312;l[328196]=31450;l[393732]=34080;l[459268]=38430;l[524804]=32528;l[590340]=35178;l[772]=32680;l[66308]=37066;l[131844]=34560;l[197380]=26846;l[262916]=39060;l[328452]=36540;l[393988]=32264;l[459524]=40204;l[525060]=37668;l[590596]=33364;l[1028]=26400;l[66564]=29106;l[132100]=27404;l[197636]=27466;l[263172]=23088;l[328708]=24920;l[394244]=24976;l[459780]=28608;l[525316]=29568;l[590852]=29634;l[1284]=28800;l[66820]=36080;l[132356]=31640;l[197892]=31710;l[263428]=35412;l[328964]=25480;l[394500]=29184;l[460036]=37474;l[525572]=31144;l[591108]=33966;l[1540]=32200;l[67076]=37802;l[132612]=35112;l[198148]=32410;l[263684]=37120;l[329220]=34410;l[394756]=26096;l[460292]=39228;l[525828]=36504;l[591364]=31892;l[1796]=33840;l[67332]=36738;l[132868]=34928;l[198404]=35002;l[263940]=36972;l[329476]=35150;l[395012]=35224;l[460548]=30528;l[526084]=32504;l[591620]=32572;l[2052]=35520;l[67588]=43290;l[133124]=38560;l[198660]=38640;l[264196]=43560;l[329732]=38800;l[395268]=38880;l[460804]=42856;l[526340]=32208;l[591876]=36186;l[2308]=39200;l[67844]=45172;l[133380]=42312;l[198916]=39440;l[264452]=45448;l[329988]=42570;l[395524]=39680;l[461060]=44730;l[526596]=41832;l[592132]=32934;l[5]=25000;l[65541]=43086;l[131077]=34136;l[196613]=37222;l[262149]=44352;l[327685]=35350;l[393221]=38456;l[458757]=45630;l[524293]=36576;l[589829]=39702;l[261]=37740;l[65797]=33726;l[131333]=35840;l[196869]=35910;l[262405]=40092;l[327941]=41200;l[393477]=41280;l[459013]=41360;l[524549]=42476;l[590085]=42558;l[517]=33280;l[66053]=40638;l[131589]=29232;l[197125]=33472;l[262661]=42968;l[328197]=35700;l[393733]=38924;l[459269]=44268;l[524805]=36960;l[590341]=40204;l[773]=37100;l[66309]=42480;l[131845]=39368;l[197381]=29848;l[262917]=44856;l[328453]=41730;l[393989]=36448;l[459525]=46182;l[525061]=43040;l[590597]=37730;l[1029]=38880;l[66565]=42198;l[132101]=40108;l[197637]=40182;l[263173]=34816;l[328709]=37060;l[394245]=37128;l[459781]=41572;l[525317]=42744;l[590853]=42822;l[1285]=27500;l[66821]=36366;l[132357]=30912;l[197893]=30968;l[263429]=35456;l[328965]=23310;l[394501]=27800;l[460037]=37876;l[525573]=30132;l[591109]=33540;l[1541]=35840;l[67077]=42636;l[132613]=39340;l[198149]=36032;l[263685]=41736;l[329221]=38420;l[394757]=28300;l[460293]=44226;l[525829]=40896;l[591365]=35278;l[1797]=43320;l[67333]=46822;l[132869]=44616;l[198405]=44694;l[263941]=47068;l[329477]=44850;l[395013]=44928;l[460549]=39236;l[526085]=41616;l[591621]=41688;l[2053]=35960;l[67589]=45318;l[133125]=39576;l[198661]=39644;l[264197]=45552;l[329733]=39780;l[395269]=39848;l[460805]=44612;l[526341]=31752;l[591877]=36518;l[2309]=43660;l[67845]=50826;l[133381]=47360;l[198917]=43882;l[264453]=51084;l[329989]=47600;l[395525]=44104;l[461061]=50148;l[526597]=46644;l[592133]=35940;l[6]=27600;l[65542]=49282;l[131078]=38528;l[196614]=42210;l[262150]=50736;l[327686]=39930;l[393222]=43632;l[458758]=52202;l[524294]=41344;l[589830]=45066;l[262]=40260;l[65798]=35438;l[131334]=37944;l[196870]=38006;l[262406]=42980;l[327942]=44280;l[393478]=44352;l[459014]=44424;l[524550]=45732;l[590086]=45806;l[518]=37200;l[66054]=45954;l[131590]=32344;l[197126]=37380;l[262662]=48672;l[328198]=40000;l[393734]=43820;l[459270]=50160;l[524806]=41448;l[590342]=45288;l[774]=37800;l[66310]=44170;l[131846]=40448;l[197382]=29118;l[262918]=46916;l[328454]=43180;l[393990]=36888;l[459526]=48412;l[525062]=44660;l[590598]=38340;l[1030]=40960;l[66566]=44870;l[132102]=42372;l[197638]=42438;l[263174]=36064;l[328710]=38700;l[394246]=38760;l[459782]=43996;l[525318]=45360;l[590854]=45430;l[1286]=37700;l[66822]=48174;l[132358]=41728;l[197894]=41792;l[263430]=47088;l[328966]=32750;l[394502]=38048;l[460038]=49932;l[525574]=40796;l[591110]=44812;l[1542]=30360;l[67078]=38338;l[132614]=34424;l[198150]=30498;l[263686]=37184;l[329222]=33250;l[394758]=21312;l[460294]=40020;l[525830]=36072;l[591366]=29436;l[1798]=45560;l[67334]=49654;l[132870]=47040;l[198406]=47110;l[263942]=49876;l[329478]=47250;l[395014]=47320;l[460550]=40620;l[526086]=43392;l[591622]=43456;l[2054]=42160;l[67590]=53118;l[133126]=46376;l[198662]=46444;l[264198]=53352;l[329734]=46580;l[395270]=46648;l[460806]=52212;l[526342]=37152;l[591878]=42718;l[2310]=40020;l[67846]=48370;l[133382]=44288;l[198918]=40194;l[264454]=48580;l[329990]=44480;l[395526]=40368;l[461062]=47396;l[526598]=43276;l[592134]=30756;l[7]=43400;l[65543]=68698;l[131079]=56160;l[196615]=60458;l[262151]=70400;l[327687]=57810;l[393223]=62128;l[458759]=72114;l[524295]=59472;l[589831]=63810;l[263]=53960;l[65799]=48348;l[131335]=51264;l[196871]=51336;l[262407]=57120;l[327943]=58630;l[393479]=58712;l[459015]=58794;l[524551]=60312;l[590087]=60396;l[519]=51840;l[66055]=62006;l[131591]=46208;l[197127]=52056;l[262663]=65160;l[328199]=55100;l[393735]=59532;l[459271]=66884;l[524807]=56784;l[590343]=61236;l[775]=56940;l[66311]=64328;l[131847]=60024;l[197383]=46912;l[262919]=67528;l[328455]=63210;l[393991]=55936;l[459527]=69278;l[525063]=64944;l[590599]=57642;l[1031]=56240;l[66567]=60762;l[132103]=57876;l[197639]=57954;l[263175]=50592;l[328711]=53640;l[394247]=53712;l[459783]=59760;l[525319]=61336;l[590855]=61418;l[1287]=54000;l[66823]=66088;l[132359]=58656;l[197895]=58734;l[263431]=64844;l[328967]=48320;l[394503]=54432;l[460039]=68130;l[525575]=57608;l[591111]=62238;l[1543]=59280;l[67079]=68490;l[132615]=64008;l[198151]=59514;l[263687]=67232;l[329223]=62730;l[394759]=49024;l[460295]=70564;l[525831]=66048;l[591367]=58444;l[1799]=47740;l[67335]=52428;l[132871]=49408;l[198407]=49472;l[263943]=52632;l[329479]=49600;l[395015]=49664;l[460551]=41958;l[526087]=45124;l[591623]=45182;l[2055]=51480;l[67591]=64042;l[133127]=56304;l[198663]=56376;l[264199]=64288;l[329735]=56520;l[395271]=56592;l[460807]=62960;l[526343]=45704;l[591879]=52074;l[2311]=56880;l[67847]=66444;l[133383]=61776;l[198919]=57096;l[264455]=66696;l[329991]=62010;l[395527]=57312;l[461063]=65354;l[526599]=60648;l[592135]=46342;l[8]=41600;l[65544]=70488;l[131080]=56140;l[196616]=61028;l[262152]=72360;l[327688]=57960;l[393224]=62868;l[458760]=74244;l[524296]=59792;l[589832]=64720;l[264]=61560;l[65800]=55148;l[131336]=58464;l[196872]=58536;l[262408]=65120;l[327944]=66830;l[393480]=66912;l[459016]=66994;l[524552]=68712;l[590088]=68796;l[520]=54120;l[66056]=65680;l[131592]=47676;l[197128]=54318;l[262664]=69216;l[328200]=57750;l[393736]=62776;l[459272]=71122;l[524808]=59616;l[590344]=64662;l[776]=59760;l[66312]=68142;l[131848]=63232;l[197384]=48314;l[262920]=71724;l[328456]=66800;l[393992]=58520;l[459528]=73656;l[525064]=68716;l[590600]=60408;l[1032]=63840;l[66568]=68962;l[132104]=65676;l[197640]=65754;l[263176]=57392;l[328712]=60840;l[394248]=60912;l[459784]=67760;l[525320]=69536;l[590856]=69618;l[1288]=56100;l[66824]=69782;l[132360]=61344;l[197896]=61416;l[263432]=68320;l[328968]=49590;l[394504]=56496;l[460040]=71988;l[525576]=60060;l[591112]=65284;l[1544]=61920;l[67080]=72324;l[132616]=67236;l[198152]=62136;l[263688]=70848;l[329224]=65740;l[394760]=50228;l[460296]=74562;l[525832]=69440;l[591368]=60830;l[1800]=64380;l[67336]=69680;l[132872]=66272;l[198408]=66348;l[263944]=69920;l[329480]=66500;l[395016]=66576;l[460552]=57882;l[526088]=61460;l[591624]=61530;l[2056]=45760;l[67592]=59908;l[133128]=51156;l[198664]=51214;l[264200]=60112;l[329736]=51330;l[395272]=51388;l[460808]=58542;l[526344]=39072;l[591880]=46228;l[2312]=58740;l[67848]=69498;l[133384]=64224;l[198920]=58938;l[264456]=69732;l[329992]=64440;l[395528]=59136;l[461064]=68172;l[526600]=62860;l[592136]=46748;l[9]=43200;l[65545]=75684;l[131081]=59532;l[196617]=65016;l[262153]=77744;l[327689]=61540;l[393225]=67044;l[458761]=79816;l[524297]=63560;l[589833]=69084;l[265]=61880;l[65801]=54660;l[131337]=58368;l[196873]=58432;l[262409]=65808;l[327945]=67710;l[393481]=67784;l[459017]=67858;l[524553]=69768;l[590089]=69844;l[521]=57040;l[66057]=69996;l[131593]=49788;l[197129]=57226;l[262665]=73920;l[328201]=61050;l[393737]=66672;l[459273]=76014;l[524809]=63104;l[590345]=68746;l[777]=57660;l[66313]=67032;l[131849]=61512;l[197385]=44784;l[262921]=70984;l[328457]=65450;l[393993]=56160;l[459529]=73086;l[525065]=67536;l[590601]=58218;l[1033]=63920;l[66569]=69634;l[132105]=65940;l[197641]=66010;l[263177]=56640;l[328713]=60480;l[394249]=60544;l[459785]=68184;l[525321]=70152;l[590857]=70226;l[1289]=58900;l[66825]=74178;l[132361]=64736;l[197897]=64804;l[263433]=72504;l[328969]=51570;l[394505]=59272;l[460041]=76560;l[525577]=63228;l[591113]=69048;l[1545]=59520;l[67081]=71114;l[132617]=65416;l[198153]=59706;l[263689]=69408;l[329225]=63690;l[394761]=46368;l[460297]=73492;l[525833]=67760;l[591369]=58140;l[1801]=64020;l[67337]=69912;l[132873]=66096;l[198409]=66164;l[263945]=70128;l[329481]=66300;l[395017]=66368;l[460553]=56666;l[526089]=60636;l[591625]=60698;l[2057]=58800;l[67593]=74556;l[133129]=64812;l[198665]=64878;l[264201]=74784;l[329737]=65010;l[395273]=65076;l[460809]=73038;l[526345]=51376;l[591881]=59340;l[2313]=47520;l[67849]=59460;l[133385]=53568;l[198921]=47664;l[264457]=59640;l[329993]=53730;l[395529]=47808;l[461065]=57826;l[526601]=51896;l[592137]=33966;}
\ No newline at end of file +[*b"aa",*b"ab",*b"ac",*b"ad",*b"ae",*b"af",*b"ag",*b"ah",*b"ai",*b"aj",*b"ak",*b"al",*b"am",*b"an",*b"ao",*b"ap",*b"aq",*b"ar",*b"as",*b"at",*b"au",*b"av",*b"aw",*b"ax",*b"ay",*b"az",*b"ba",*b"bb",*b"bc",*b"bd",*b"be",*b"bf",*b"bg",*b"bh",*b"bi",*b"bj",*b"bk",*b"bl",*b"bm",*b"bn",*b"bo",*b"bp",*b"bq",*b"br",*b"bs",*b"bt",*b"bu",*b"bv",*b"bw",*b"bx",*b"by",*b"bz",*b"ca",*b"cb",*b"cc",*b"cd",*b"ce",*b"cf",*b"cg",*b"ch",*b"ci",*b"cj",*b"ck",*b"cl",*b"cm",*b"cn",*b"co",*b"cp",*b"cq",*b"cr",*b"cs",*b"ct",*b"cu",*b"cv",*b"cw",*b"cx",*b"cy",*b"cz",*b"da",*b"db",*b"dc",*b"dd",*b"de",*b"df",*b"dg",*b"dh",*b"di",*b"dj",*b"dk",*b"dl",*b"dm",*b"dn",*b"do",*b"dp",*b"dq",*b"dr",*b"ds",*b"dt",*b"du",*b"dv",*b"dw",*b"dx",*b"dy",*b"dz",*b"ea",*b"eb",*b"ec",*b"ed",*b"ee",*b"ef",*b"eg",*b"eh",*b"ei",*b"ej",*b"ek",*b"el",*b"em",*b"en",*b"eo",*b"ep",*b"eq",*b"er",*b"es",*b"et",*b"eu",*b"ev",*b"ew",*b"ex",*b"ey",*b"ez",*b"fa",*b"fb",*b"fc",*b"fd",*b"fe",*b"ff",*b"fg",*b"fh",*b"fi",*b"fj",*b"fk",*b"fl",*b"fm",*b"fn",*b"fo",*b"fp",*b"fq",*b"fr",*b"fs",*b"ft",*b"fu",*b"fv",*b"fw",*b"fx",*b"fy",*b"fz",*b"ga",*b"gb",*b"gc",*b"gd",*b"ge",*b"gf",*b"gg",*b"gh",*b"gi",*b"gj",*b"gk",*b"gl",*b"gm",*b"gn",*b"go",*b"gp",*b"gq",*b"gr",*b"gs",*b"gt",*b"gu",*b"gv",*b"gw",*b"gx",*b"gy",*b"gz",*b"ha",*b"hb",*b"hc",*b"hd",*b"he",*b"hf",*b"hg",*b"hh",*b"hi",*b"hj",*b"hk",*b"hl",*b"hm",*b"hn",*b"ho",*b"hp",*b"hq",*b"hr",*b"hs",*b"ht",*b"hu",*b"hv",*b"hw",*b"hx",*b"hy",*b"hz",*b"ia",*b"ib",*b"ic",*b"id",*b"ie",*b"if",*b"ig",*b"ih",*b"ii",*b"ij",*b"ik",*b"il",*b"im",*b"in",*b"io",*b"ip",*b"iq",*b"ir",*b"is",*b"it",*b"iu",*b"iv",*b"iw",*b"ix",*b"iy",*b"iz",*b"ja",*b"jb",*b"jc",*b"jd",*b"je",*b"jf",*b"jg",*b"jh",*b"ji",*b"jj",*b"jk",*b"jl",*b"jm",*b"jn",*b"jo",*b"jp",*b"jq",*b"jr",*b"js",*b"jt",*b"ju",*b"jv",*b"jw",*b"jx",*b"jy",*b"jz",*b"ka",*b"kb",*b"kc",*b"kd",*b"ke",*b"kf",*b"kg",*b"kh",*b"ki",*b"kj",*b"kk",*b"kl",*b"km",*b"kn",*b"ko",*b"kp",*b"kq",*b"kr",*b"ks",*b"kt",*b"ku",*b"kv",*b"kw",*b"kx",*b"ky",*b"kz",*b"la",*b"lb",*b"lc",*b"ld",*b"le",*b"lf",*b"lg",*b"lh",*b"li",*b"lj",*b"lk",*b"ll",*b"lm",*b"ln",*b"lo",*b"lp",*b"lq",*b"lr",*b"ls",*b"lt",*b"lu",*b"lv",*b"lw",*b"lx",*b"ly",*b"lz",*b"ma",*b"mb",*b"mc",*b"md",*b"me",*b"mf",*b"mg",*b"mh",*b"mi",*b"mj",*b"mk",*b"ml",*b"mm",*b"mn",*b"mo",*b"mp",*b"mq",*b"mr",*b"ms",*b"mt",*b"mu",*b"mv",*b"mw",*b"mx",*b"my",*b"mz",*b"na",*b"nb",*b"nc",*b"nd",*b"ne",*b"nf",*b"ng",*b"nh",*b"ni",*b"nj",*b"nk",*b"nl",*b"nm",*b"nn",*b"no",*b"np",*b"nq",*b"nr",*b"ns",*b"nt",*b"nu",*b"nv",*b"nw",*b"nx",*b"ny",*b"nz",*b"oa",*b"ob",*b"oc",*b"od",*b"oe",*b"of",*b"og",*b"oh",*b"oi",*b"oj",*b"ok",*b"ol",*b"om",*b"on",*b"oo",*b"op",*b"oq",*b"or",*b"os",*b"ot",*b"ou",*b"ov",*b"ow",*b"ox",*b"oy",*b"oz",*b"pa",*b"pb",*b"pc",*b"pd",*b"pe",*b"pf",*b"pg",*b"ph",*b"pi",*b"pj",*b"pk",*b"pl",*b"pm",*b"pn",*b"po",*b"pp",*b"pq",*b"pr",*b"ps",*b"pt",*b"pu",*b"pv",*b"pw",*b"px",*b"py",*b"pz",*b"qa",*b"qb",*b"qc",*b"qd",*b"qe",*b"qf",*b"qg",*b"qh",*b"qi",*b"qj",*b"qk",*b"ql",*b"qm",*b"qn",*b"qo",*b"qp",*b"qq",*b"qr",*b"qs",*b"qt",*b"qu",*b"qv",*b"qw",*b"qx",*b"qy",*b"qz",*b"ra",*b"rb",*b"rc",*b"rd",*b"re",*b"rf",*b"rg",*b"rh",*b"ri",*b"rj",*b"rk",*b"rl",*b"rm",*b"rn",*b"ro",*b"rp",*b"rq",*b"rr",*b"rs",*b"rt",*b"ru",*b"rv",*b"rw",*b"rx",*b"ry",*b"rz",*b"sa",*b"sb",*b"sc",*b"sd",*b"se",*b"sf",*b"sg",*b"sh",*b"si",*b"sj",*b"sk",*b"sl",*b"sm",*b"sn",*b"so",*b"sp",*b"sq",*b"sr",*b"ss",*b"st",*b"su",*b"sv",*b"sw",*b"sx",*b"sy",*b"sz",*b"ta",*b"tb",*b"tc",*b"td",*b"te",*b"tf",*b"tg",*b"th",*b"ti",*b"tj",*b"tk",*b"tl",*b"tm",*b"tn",*b"to",*b"tp",*b"tq",*b"tr",*b"ts",*b"tt",*b"tu",*b"tv",*b"tw",*b"tx",*b"ty",*b"tz",*b"ua",*b"ub",*b"uc",*b"ud",*b"ue",*b"uf",*b"ug",*b"uh",*b"ui",*b"uj",*b"uk",*b"ul",*b"um",*b"un",*b"uo",*b"up",*b"uq",*b"ur",*b"us",*b"ut",*b"uu",*b"uv",*b"uw",*b"ux",*b"uy",*b"uz",*b"va",*b"vb",*b"vc",*b"vd",*b"ve",*b"vf",*b"vg",*b"vh",*b"vi",*b"vj",*b"vk",*b"vl",*b"vm",*b"vn",*b"vo",*b"vp",*b"vq",*b"vr",*b"vs",*b"vt",*b"vu",*b"vv",*b"vw",*b"vx",*b"vy",*b"vz",*b"wa",*b"wb",*b"wc",*b"wd",*b"we",*b"wf",*b"wg",*b"wh",*b"wi",*b"wj",*b"wk",*b"wl",*b"wm",*b"wn",*b"wo",*b"wp",*b"wq",*b"wr",*b"ws",*b"wt",*b"wu",*b"wv",*b"ww",*b"wx",*b"wy",*b"wz",*b"xa",*b"xb",*b"xc",*b"xd",*b"xe",*b"xf",*b"xg",*b"xh",*b"xi",*b"xj",*b"xk",*b"xl",*b"xm",*b"xn",*b"xo",*b"xp",*b"xq",*b"xr",*b"xs",*b"xt",*b"xu",*b"xv",*b"xw",*b"xx",*b"xy",*b"xz",*b"ya",*b"yb",*b"yc",*b"yd",*b"ye",*b"yf",*b"yg",*b"yh",*b"yi",*b"yj",*b"yk",*b"yl",*b"ym",*b"yn",*b"yo",*b"yp",*b"yq",*b"yr",*b"ys",*b"yt",*b"yu",*b"yv",*b"yw",*b"yx",*b"yy",*b"yz",*b"za",*b"zb",*b"zc",*b"zd",*b"ze",*b"zf",*b"zg",*b"zh",*b"zi",*b"zj",*b"zk",*b"zl",*b"zm",*b"zn",*b"zo",*b"zp",*b"zq",*b"zr",*b"zs",*b"zt",*b"zu",*b"zv",*b"zw",*b"zx",*b"zy",*b"zz"]
\ No newline at end of file @@ -29,109 +29,173 @@ hint_assert_unchecked )] mod util; -pub mod day22 { +pub mod day23 { use super::util; use super::util::prelude::*; - - pub fn mod10(a: u32) -> u32 { - const D: u32 = 10; - const M: u64 = (u64::MAX / D as u64) + 1; - (M.wrapping_mul(a as u64) as u128 * D as u128 >> 64) as u32 + #[no_mangle] + pub fn part2(x: &str) -> String { + let g = Graph::load(x); + let x = g.mxq(); + let mut i = 0; + const c: u8 = b','; + static mut out: [u8; 38] = [ + 0, 0, c, 0, 0, c, 0, 0, c, 0, 0, c, 0, 0, c, 0, 0, c, 0, 0, c, 0, 0, c, 0, 0, c, 0, 0, + c, 0, 0, c, 0, 0, c, 0, 0, + ]; + for j in 0..WORDS { + let mut x = x[j]; + while x != 0 { + let bit = x.trailing_zeros(); + unsafe { + out[i + i * 2..i + i * 2 + 2] + .copy_from_slice(&C! { NAMES[64 * j + bit as usize] }) + }; + i += 1; + x &= !(1 << bit); + } + } + unsafe { String::from_utf8_unchecked(out.to_vec()) } } - fn next(mut x: u32) -> u32 { - x ^= (x * 64) & 16777215; - x ^= x / 32; - x ^= (x * 2048) & 16777215; - x + fn part1(x: &str) -> u32 { + let adj = Graph::load(x).adj; + let mut has = [false; 676]; + let mut sum = 0; + for computer in 494..=519 { + has[computer] = true; + let nbors = Graph::adj_on(adj[computer]); + for (&elem2, i) in nbors.iter().ι::<usize>() { + for &elem3 in &nbors[i..] { + if !has[elem2] && !has[elem3] && adj[elem2][elem3 / 64] & 1 << (elem3 % 64) != 0 + { + sum += 1; + } + } + } + } + sum } + struct Graph { + // vert: [[u8; 2]; SIZE], + adj: Box<[[u64; WORDS]; SIZE]>, + } + const SIZE: usize = 676; + const WORDS: usize = (SIZE + 63) / 64; + fn h([a, b]: [u8; 2]) -> usize { + a as usize + 26 * b as usize + } + const NAMES: [[u8; 2]; 676] = include!("../lut2"); - #[rustfmt::skip] -// 8051 -fn next2000(n: u32) -> u32 { - let n = n as u64; - let m = n | n << 24; - let r = (m & 0x61a765) ^ (m >> 1 & 0xc2f82d) ^ (m >> 2 & 0x286d53) ^ (m >> 3 & 0x44f679) - ^ (m >> 4 & 0x4d6be8) ^ (m >> 5 & 0x118005) ^ (m >> 6 & 0x5f19f2) ^ (m >> 7 & 0xf03667) - ^ (m >> 8 & 0xcea653) ^ (m >> 9 & 0xafa201) ^ (m >> 10 & 0xfd0d29) ^ (m >> 11 & 0x949200) - ^ (m >> 12 & 0x49a994) ^ (m >> 13 & 0x21673) ^ (m >> 14 & 0xb4c5bf) ^ (m >> 15 & 0x1e0aaf) - ^ (m >> 16 & 0x7cab00) ^ (m >> 17 & 0x95ba48) ^ (m >> 18 & 0x49f04c) ^ (m >> 19 & 0x9a8320) - ^ (m >> 20 & 0xb69d39) ^ (m >> 21 & 0x6a2085) ^ (m >> 22 & 0xd13c84) ^ (m >> 23 & 0x1c9e15); - r as u32 - -} - - fn batch((mut x, j): (u32, u16), map: &mut [u16; 130321], seen: &mut Vec<u16>) { - let 〇 = x; - let 一 = next(x); - let 二 = next(一); - let 三 = next(二); - let mut ⅰ; - let [mut ⅱ, mut ⅲ, mut ⅳ] = - [[〇, 一], [一, 二], [二, 三]].map(|[a, b]| (9 + mod10(b) - mod10(a)) as u32); + impl Graph { + fn load(content: &str) -> Self { + const INDEX: [u16; 3295] = { + let mut l = [0; 3295]; + include!("../lut"); + l + }; + let mut i = content.as_ptr(); + let mut adj = Box::new([[0u64; WORDS]; SIZE]); + for _ in 0..3380 { + unsafe { + let a = *(i as *const [u8; 2]); + let b = *(i.add(3) as *const [u8; 2]); + let ha = h(a); + let hb = h(b); + i = i.add(6); + let i = INDEX[ha] as usize; + let j = INDEX[hb] as usize; + *adj.get_unchecked_mut(i).get_unchecked_mut(j / 64) |= 1u64 << (j % 64); + *adj.get_unchecked_mut(j).get_unchecked_mut(i / 64) |= 1u64 << (i % 64); + } + } + Graph { adj } + } - x = 三; - let mut l = mod10(三); - for _ in 3..2000 { - x = next(x); - let p = mod10(x); - (ⅰ, ⅱ, ⅲ, ⅳ) = (ⅱ, ⅲ, ⅳ, (9 + p - l) as u32); - let i = (ⅰ * 19 * 19 * 19 + ⅱ * 19 * 19 + ⅲ * 19 + ⅳ) as usize; - if seen[i] != j { - map[i] += p as u16; - seen[i] = j; + fn print_mat(x: [u64; WORDS], l: [u8; 2]) { + let n = Self::adj_on(x); + print!("{}: ", l.p()); + for neighbor in n { + print!("{} ", NAMES[neighbor].p()); } - l = p; + println!(); } - } - static retval: std::sync::Mutex<[u16; 130321]> = std::sync::Mutex::new([0; 130321]); - #[inline(always)] - pub fn part2(x: &str) -> u16 { - let mut i = x.as_bytes(); - let ints = reading::Integer::<u32>::new(&mut i); - let mut chunks = ints.array_chunks::<128>(); - std::thread::scope(|scope| { - for chunk in chunks.by_ref() { - scope.spawn(move || { - let mut map = [0; 130321]; - let mut seen = vec![0; 130321]; - for elem in chunk.into_iter().ι1::<u16>() { - batch(elem, &mut map, &mut seen); - } - let mut upmap = retval.lock().ψ(); - for (a, b) in map.into_iter().zip(upmap.iter_mut()) { - *b += a; + fn first_2_bits(x: [u64; WORDS]) -> [usize; 2] { + let mut out = [0; 2]; + let mut index = 0; + for j in 0..WORDS { + let mut x = x[j]; + while x != 0 { + let bit = x.trailing_zeros(); + out[index] = 64 * j + bit as usize; + index += 1; + if index == 2 { + return out; } - - drop(upmap); - }); + x &= !(1 << bit); + } } + panic!() + } - let mut map = [0; 130321]; - let mut seen = vec![0; 130321]; - for elem in chunks.into_remainder().into_iter().flatten().ι1::<u16>() { - batch(elem, &mut map, &mut seen); - } - let mut upmap = retval.lock().ψ(); - for (a, b) in map.into_iter().zip(upmap.iter_mut()) { - *b += a; + fn adj_on(x: [u64; WORDS]) -> Vec<usize> { + let mut n = Vec::with_capacity(13); + for j in 0..WORDS { + let mut x = x[j]; + while x != 0 { + let bit = x.trailing_zeros(); + n.push(64 * j + bit as usize); + x &= !(1 << bit); + } } - }); - retval.lock().ψ().into_iter().max().ψ() - } + n + } - use std::simd::prelude::*; - #[inline(always)] - pub fn part1(x: &str) -> u64 { - let mut x = x.as_bytes(); - let mut i = reading::Integer::<u32>::new(&mut x).array_chunks::<8>(); - i.by_ref() - .map(|x| u32x8::from_array(x.map(next2000))) - .fold(u32x8::splat(0), |acc, x| acc + x) - .cast::<u64>() - .reduce_sum() - + i.into_remainder() - .map_or(0, |x| x.map(next2000).map(|x| x as u64).sum()) + fn mxq(&self) -> [u64; WORDS] { + 'out: for computer in 0..SIZE { + let neighbors = self.adj[computer]; + if neighbors == [0; 11] { + continue; + } + // neighbors[computer / 64] |= 1 << (computer % 64); + // self.print_mat(neighbors, *b"nh"); + for node in Self::first_2_bits(neighbors) { + let inter = (0..WORDS) + .map(|i| (self.adj[node][i] & neighbors[i]).count_ones()) + .sum::<u32>(); + // check that the current node has 11 neighbours in common with either its first or second neighbour + if inter == 11 { + let mut v = [0; 11]; + let mut pop = 0; + for j in 0..WORDS { + // self.print_mat(neighbors, *b"nh"); + let mut x = neighbors[j]; + while x != 0 { + let bit = x.trailing_zeros(); + let n = 64 * j + bit as usize; + let inter = (0..WORDS) + .map(|i| (self.adj[n][i] & neighbors[i]).count_ones()) + .sum::<u32>(); + // they all have 11 neighbours in common with the current node + if inter == 11 { + v[j] |= 1 << bit; + pop += 1; + } + x &= !(1 << bit); + } + } + // self.print_mat(v, *b"ot"); + if pop != 12 { + continue 'out; + } + v[computer / 64] |= 1 << computer % 64; + // v.push(computer); + // println!("whoa"); + return v; + } + } + } + panic!() + } } } |