heh
bendn 2024-12-21
parent 723a34a · commit 858f79b
-rw-r--r--Cargo.toml3
-rw-r--r--lut1
-rw-r--r--lut21
-rw-r--r--src/main.rs44
4 files changed, 35 insertions, 14 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 8d43464..a857b58 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,11 +12,10 @@ car = "0.1.1"
itertools = "0.12.0"
memchr = "2.6.4"
pathfinding = "4.12.0"
-rayon = "1.10.0"
# radsort = "0.1.1"
rustc-hash = { version = "2.1.0", features = ["nightly"] }
[profile.release]
lto = true
codegen-units = 1
debug = true
-overflow-checks = true
+# overflow-checks = true
diff --git a/lut b/lut
new file mode 100644
index 0000000..0078fde
--- /dev/null
+++ b/lut
@@ -0,0 +1 @@
+{l[0x313030]=0x12d50fe222;l[0x323030]=0x1be99d58d8;l[0x333030]=0x2f01b8a0a0;l[0x343030]=0x4b543f8890;l[0x353030]=0x45c8095e26;l[0x363030]=0x5e0371414c;l[0x373030]=0x83d36f2f0a;l[0x383030]=0x6fa6756380;l[0x393030]=0x8d0529e204;l[0x303130]=0xdd96e52be8;l[0x313130]=0xcf27aeb776;l[0x323130]=0xfdf6b4fc50;l[0x333130]=0x10d1c6e5a40;l[0x343130]=0x137bd68f344;l[0x353130]=0x15fb5735d0a;l[0x363130]=0x16fc05b13a0;l[0x373130]=0x17a8a91b9d0;l[0x383130]=0x1a60cf0d630;l[0x393130]=0x1b4b46c2774;l[0x303230]=0x1506734d768;l[0x313230]=0x1a78f8e4488;l[0x323230]=0x13309c2d148;l[0x333230]=0x182dd165e1e;l[0x343230]=0x2042a112050;l[0x353230]=0x1b2c74ae158;l[0x363230]=0x1f0b2af3038;l[0x373230]=0x244af534490;l[0x383230]=0x1e6f3b006d8;l[0x393230]=0x22a0260f116;l[0x303330]=0x26997489aec;l[0x313330]=0x2b4b1c39d46;l[0x323330]=0x2ab3090fe00;l[0x333330]=0x20512eee6e0;l[0x343330]=0x3253273a080;l[0x353330]=0x31a0b351d62;l[0x363330]=0x2afbc5507b0;l[0x373330]=0x36c3e6ec58a;l[0x383330]=0x35e1acbf450;l[0x393330]=0x2e90c06c8a2;l[0x303430]=0x3765b94aff0;l[0x313430]=0x3ca96f99750;l[0x323430]=0x3cbe5af6368;l[0x333430]=0x3cf233a4598;l[0x343430]=0x33c9ebade30;l[0x353430]=0x3b85d26b286;l[0x363430]=0x3b83d37b5dc;l[0x373430]=0x4168e297a30;l[0x383430]=0x46577d79080;l[0x393430]=0x4663d16ec7c;l[0x303530]=0x34902041ae8;l[0x313530]=0x44288a4615e;l[0x323530]=0x3d170ac7948;l[0x333530]=0x3e43cafca62;l[0x343530]=0x44128001e5c;l[0x353530]=0x2ff98670ba2;l[0x363530]=0x3adedc72860;l[0x373530]=0x4c9e3e8ad30;l[0x383530]=0x3f0afa37be4;l[0x393530]=0x4671f5277ba;l[0x303630]=0x4d32e913650;l[0x313630]=0x59d108564cc;l[0x323630]=0x576ea0caf1c;l[0x333630]=0x50c1a19b3f2;l[0x343630]=0x59614287f00;l[0x353630]=0x56bbaa68472;l[0x363630]=0x40a25ddce44;l[0x373630]=0x632b63e3546;l[0x383630]=0x606b6b056e0;l[0x393630]=0x52628f84f46;l[0x303730]=0x60f20443470;l[0x313730]=0x690c701643e;l[0x323730]=0x6821c0818b0;l[0x333730]=0x6777757059a;l[0x343730]=0x6d7cbcef8b4;l[0x353730]=0x6c787ddc462;l[0x363730]=0x6bb7fc04bf8;l[0x373730]=0x5aa15c7056e;l[0x383730]=0x672c3986940;l[0x393730]=0x6635e0111fc;l[0x303830]=0x5419cd35ee0;l[0x313830]=0x6c4063240ec;l[0x323830]=0x605590ffaf8;l[0x333830]=0x61825134c14;l[0x343830]=0x7042c5a0a70;l[0x353830]=0x63dbd19ee4c;l[0x363830]=0x650891d3f68;l[0x373830]=0x6dac071f8b4;l[0x383830]=0x4cc270b4680;l[0x393830]=0x5d8fe77f326;l[0x303930]=0x73cc5d9d22c;l[0x313930]=0x85fd14d4b8a;l[0x323930]=0x81bcee988b0;l[0x333930]=0x773637b4750;l[0x343930]=0x8a67e2e15c4;l[0x353930]=0x85f7f6604cc;l[0x363930]=0x7b0ead1d600;l[0x373930]=0x877768d613e;l[0x383930]=0x82c44bc0b68;l[0x393930]=0x60f38ccb62c;l[0x303031]=0x69e18ab6488;l[0x313031]=0xabe165cbb82;l[0x323031]=0x8e7f6e60d58;l[0x333031]=0x9aeb7c510a8;l[0x343031]=0xb0fc5eae560;l[0x353031]=0x92b05b09616;l[0x363031]=0x9f6e9dc34c4;l[0x373031]=0xb6175790f4a;l[0x383031]=0x96e147b1ee0;l[0x393031]=0xa3f1bf358ec;l[0x303131]=0x747818954fc;l[0x313131]=0x5e72fc5f8d0;l[0x323131]=0x6f9ea03ee60;l[0x333131]=0x6d5907d3f6e;l[0x343131]=0x7979a87cdf8;l[0x353131]=0x8305dcbf2ec;l[0x363131]=0x80ce9739ca0;l[0x373131]=0x7cac0480376;l[0x383131]=0x8670de0db04;l[0x393131]=0x842361c1f66;l[0x303231]=0x8d125174b80;l[0x313231]=0xa793b6e9436;l[0x323231]=0x7995ee8da84;l[0x333231]=0x90992d17a30;l[0x343231]=0xb6188539b50;l[0x353231]=0x97690b9bdbe;l[0x363231]=0xa61bcb529ec;l[0x373231]=0xba8056e6852;l[0x383231]=0x9b0b4f78c00;l[0x393231]=0xaa1043f938c;l[0x303331]=0xa5c0aeb9b30;l[0x313331]=0xb56d253c138;l[0x323331]=0xae999c6d878;l[0x333331]=0x80b38c9c986;l[0x343331]=0xc4c7eacef14;l[0x353331]=0xbdda014227c;l[0x363331]=0xa0ccfbfbcd0;l[0x373331]=0xc92fbc7bc30;l[0x383331]=0xc2120caa17c;l[0x393331]=0xa45909125d4;l[0x303431]=0xb249d8cfc68;l[0x313431]=0xc0e764859e8;l[0x323431]=0xbd8bc3c0688;l[0x333431]=0xbabe9d9e680;l[0x343431]=0x9971409dbc0;l[0x353431]=0xafa2d006b76;l[0x363431]=0xac9fd246c94;l[0x373431]=0xbc326793118;l[0x383431]=0xc864ab40d40;l[0x393431]=0xc5700066704;l[0x303531]=0xc5bf9086edc;l[0x313531]=0xf220eb1b1e0;l[0x323531]=0xdb2a0ba3180;l[0x333531]=0xdc9b2a07890;l[0x343531]=0xeb42745edc0;l[0x353531]=0xb09898d528c;l[0x363531]=0xcda881d4018;l[0x373531]=0xfcf6f60e1ce;l[0x383531]=0xd5eeee2cfe0;l[0x393531]=0xe84e7c3a6fc;l[0x303631]=0xe2d6e277b40;l[0x313631]=0x10229e13ee62;l[0x323631]=0xf9b08dbad30;l[0x333631]=0xe64f648685c;l[0x343631]=0xfa8943686c8;l[0x353631]=0xf1ccbf500b8;l[0x363631]=0xb853c6c10b0;l[0x373631]=0x10d13bc5a198;l[0x383631]=0x1043cd7837b0;l[0x393631]=0xdff06e69e14;l[0x303731]=0xd87e3e20f40;l[0x313731]=0xe9f27f5b52e;l[0x323731]=0xe59743a4a28;l[0x333731]=0xe1ebf9c34da;l[0x343731]=0xee0d353d7cc;l[0x353731]=0xe9986a08402;l[0x363731]=0xe5d6e960960;l[0x373731]=0xbc9b34c1f7e;l[0x383731]=0xd79bba83eb0;l[0x393731]=0xd3a4623e534;l[0x303831]=0xed4c4708670;l[0x313831]=0x1223bcd8650a;l[0x323831]=0x1066b9b686cc;l[0x333831]=0x107dcb9ccdde;l[0x343831]=0x1270b4a91070;l[0x353831]=0x10abef695c02;l[0x363831]=0x10c3014fa314;l[0x373831]=0x11dac1f97d96;l[0x383831]=0xd631a7342e8;l[0x393831]=0xf929b0fc05c;l[0x303931]=0x10d5f2cee3d8;l[0x313931]=0x13244c3aa1dc;l[0x323931]=0x127edb175380;l[0x333931]=0x110b2d08c876;l[0x343931]=0x1371440b4d48;l[0x353931]=0x12c8d683b0ce;l[0x363931]=0x114eff4f3858;l[0x373931]=0x12cf2eea16f4;l[0x383931]=0x12228e59359c;l[0x393931]=0xdcf87a9a686;l[0x303032]=0xb8084431a60;l[0x313032]=0x13a30d3948b4;l[0x323032]=0xfe31c61d82c;l[0x333032]=0x1152e8a7f986;l[0x343032]=0x13ee15101d88;l[0x353032]=0x101f83750be0;l[0x363032]=0x11947307c898;l[0x373032]=0x14391ce6f268;l[0x383032]=0x105bea883fa0;l[0x393032]=0x11d5fd6797b6;l[0x303132]=0x118db7bc33c8;l[0x313132]=0xee53064c5a6;l[0x323132]=0x10e582d341b0;l[0x333132]=0x109757055ba0;l[0x343132]=0x11fa7718b574;l[0x353132]=0x130db28f6b5a;l[0x363132]=0x12c06befddf0;l[0x373132]=0x123afc5adb30;l[0x383132]=0x1351c22643b0;l[0x393132]=0x1303181a50f4;l[0x303232]=0xca6f7e369d0;l[0x313232]=0xf99e8ad7dba;l[0x323232]=0xa48a1e26d34;l[0x333232]=0xcd322d50f54;l[0x343232]=0x10fbad537f00;l[0x353232]=0xd710d5af272;l[0x363232]=0xf0366626b8c;l[0x373232]=0x1135e7a5c39e;l[0x383232]=0xd9eeed03850;l[0x393232]=0xf366b244cc8;l[0x303332]=0x11a535957004;l[0x313332]=0x134f16e8a12a;l[0x323332]=0x127d93ff5660;l[0x333332]=0xd665ca5370c;l[0x343332]=0x14c835e4aff8;l[0x353332]=0x13f50cef8156;l[0x363332]=0x10bd2824b320;l[0x373332]=0x150c6b18db76;l[0x383332]=0x143645bf5eb8;l[0x393332]=0x10f3a10f7a86;l[0x303432]=0x1550a04d0160;l[0x313432]=0x16d43b09ffb4;l[0x323432]=0x166b9ce6b790;l[0x333432]=0x1612df42c004;l[0x343432]=0x127fdccd3ca0;l[0x353432]=0x14ce74f9b26a;l[0x363432]=0x147259dbdc04;l[0x373432]=0x160a803ecb6c;l[0x383432]=0x174603b19820;l[0x393432]=0x16eacdc21a60;l[0x303532]=0x11bb5c6c4cf0;l[0x313532]=0x1646cbb10ada;l[0x323532]=0x13d1d24c7088;l[0x333532]=0x13e5f4a82be6;l[0x343532]=0x1556bd3540a4;l[0x353532]=0xf3bdbef9b4e;l[0x363532]=0x12284e41d800;l[0x373532]=0x16eef13a14f4;l[0x383532]=0x12dfef15a0bc;l[0x393532]=0x14ae3bbad176;l[0x303632]=0x164426412dc0;l[0x313632]=0x1961c8890f00;l[0x323632]=0x1875e8f46bc4;l[0x333632]=0x1671b82406be;l[0x343632]=0x186c1e54a200;l[0x353632]=0x177c0bb6b9e6;l[0x363632]=0x11aba5d0b97c;l[0x373632]=0x1a1838869dc2;l[0x383632]=0x19267fdcd1d0;l[0x393632]=0x157aa4d4cfaa;l[0x303732]=0x17fab456a3a8;l[0x313732]=0x19abba6bea6a;l[0x323732]=0x193322998aa0;l[0x333732]=0x18cc82b99dce;l[0x343732]=0x19f47a5c1b4c;l[0x353732]=0x197a4991d2be;l[0x363732]=0x191246458098;l[0x373732]=0x15005e561e12;l[0x383732]=0x179be5e82358;l[0x393732]=0x17308521f258;l[0x303832]=0x13dc15980670;l[0x313832]=0x18f0679b5ff0;l[0x323832]=0x162dd90c67c0;l[0x333832]=0x1641fb682320;l[0x343832]=0x193490cc6840;l[0x353832]=0x166a401f99e0;l[0x363832]=0x167e627b5540;l[0x373832]=0x181c770ccf50;l[0x383832]=0x11348bf98a80;l[0x393832]=0x147f8058571a;l[0x303932]=0x18d5dbe63f24;l[0x313932]=0x1c4ca7ad6b46;l[0x323932]=0x1b42ec2dbae0;l[0x333932]=0x19011fe20fa4;l[0x343932]=0x1c975797744c;l[0x353932]=0x1b8a9fb375c8;l[0x363932]=0x1942aa41dd20;l[0x373932]=0x1b79a21f3892;l[0x383932]=0x1a68b731f530;l[0x393932]=0x13dcda2555b8;l[0x303033]=0xf75e3b8ce88;l[0x313033]=0x1b9ba8468df6;l[0x323033]=0x15f2966114d0;l[0x333033]=0x180c1e610df4;l[0x343033]=0x1be2195e3b00;l[0x353033]=0x162a66b520ba;l[0x363033]=0x18491201b53c;l[0x373033]=0x1c288a75e816;l[0x383033]=0x166237092cb0;l[0x393033]=0x188605a25c90;l[0x303133]=0x162241f0ced0;l[0x313133]=0x1229f107195a;l[0x323133]=0x151047a7e680;l[0x333133]=0x1490b59493f4;l[0x343133]=0x168d57b283b4;l[0x353133]=0x1813775d952e;l[0x363133]=0x1794ca789b48;l[0x373133]=0x16c4807bf994;l[0x383133]=0x184e2a7bbda8;l[0x393133]=0x17ce1a2a5e70;l[0x303233]=0x1506734d7680;l[0x313233]=0x194a6dc7ce68;l[0x323233]=0x118debf4dfd8;l[0x333233]=0x1538e92efd36;l[0x343233]=0x1b3837e73438;l[0x353233]=0x16141ecd7178;l[0x363233]=0x1853d41e7048;l[0x373233]=0x1b78bd295ad0;l[0x383233]=0x16484b329950;l[0x393233]=0x188d23d0337e;l[0x303333]=0x1101adb1affc;l[0x313333]=0x1354f91e9a92;l[0x323333]=0x12197c079c10;l[0x333333]=0xac3be7f1aac;l[0x343333]=0x15407b499548;l[0x353333]=0x14035826b2ee;l[0x363333]=0xf5eaf142a80;l[0x373333]=0x157159232a1e;l[0x383333]=0x1431399bf9a8;l[0x393333]=0xf81d0a45b3e;l[0x303433]=0x1a0d48543958;l[0x313433]=0x1c252a0f4388;l[0x323433]=0x1b842cd171a8;l[0x333433]=0x1afa08e80da0;l[0x343433]=0x15e35ec97ca0;l[0x353433]=0x1917fb284386;l[0x363433]=0x188a79c500a4;l[0x373433]=0x1abc223285f8;l[0x383433]=0x1c6a89d9ae40;l[0x393433]=0x1bddeda4c404;l[0x303533]=0x18d31afe0550;l[0x313533]=0x1f26d368c9d2;l[0x323533]=0x1baf3e21a140;l[0x333533]=0x1bc3607d5c9e;l[0x343533]=0x1dbd6c7c9c9c;l[0x353533]=0x1535373478d6;l[0x363533]=0x19400cd39060;l[0x373533]=0x1fdb5b0af444;l[0x383533]=0x1a30c6caa974;l[0x393533]=0x1caa56bebf7e;l[0x303633]=0x176204719350;l[0x313633]=0x1ba38ffbddb2;l[0x323633]=0x1a4edcf1d370;l[0x333633]=0x177804cb493c;l[0x343633]=0x1a24aa255c58;l[0x353633]=0x18cbc4120d38;l[0x363633]=0x10bdfeb5f770;l[0x373633]=0x1c469baf2a18;l[0x383633]=0x1aec0f8ff720;l[0x393633]=0x15d496f88774;l[0x303733]=0x1c59bfa6f600;l[0x313733]=0x1e9f0cba489e;l[0x323733]=0x1dee15cd5f18;l[0x333733]=0x1d560fa805ca;l[0x343733]=0x1ede7031c8dc;l[0x353733]=0x1e2be04cf692;l[0x363733]=0x1d9276bb37f0;l[0x373733]=0x17fce722c7ce;l[0x383733]=0x1b7e72e71e30;l[0x393733]=0x1ae1abdb80b4;l[0x303833]=0x1af3d429bf98;l[0x313833]=0x21d06f531fb0;l[0x323833]=0x1e0b44e19940;l[0x333833]=0x1e1f673d54a0;l[0x343833]=0x221498842800;l[0x353833]=0x1e47abf4cb60;l[0x363833]=0x1e5bce5086c0;l[0x373833]=0x208326542c10;l[0x383833]=0x172de73e68d0;l[0x393833]=0x1b973eea1042;l[0x303933]=0x1954da25b7f8;l[0x313933]=0x1def8f2f4d3c;l[0x323933]=0x1c7d003a35d0;l[0x333933]=0x19688c986566;l[0x343933]=0x1e2a5be7a4e8;l[0x353933]=0x1cb4d08e3f5e;l[0x363933]=0x199a33c68188;l[0x373933]=0x1c836acd54d4;l[0x383933]=0x1b09ac6aaa6c;l[0x393933]=0x12406fe7f596;l[0x303034]=0x1a7862ad9540;l[0x313034]=0x2aa6a9e4c81c;l[0x323034]=0x2319be0328ac;l[0x333034]=0x25e248cedbee;l[0x343034]=0x2af85972f458;l[0x353034]=0x235ccccdb3c8;l[0x363034]=0x262a7ae60268;l[0x373034]=0x2b4a090120a0;l[0x383034]=0x239fdb983ef0;l[0x393034]=0x2672acfd28ee;l[0x303134]=0x22e275db4140;l[0x313134]=0x1da0fb0e646a;l[0x323134]=0x2173f590a2a0;l[0x333134]=0x20c99ce7038c;l[0x343134]=0x236660bea92c;l[0x353134]=0x2566044d362e;l[0x363134]=0x24bc90d1efc0;l[0x373134]=0x23a80c1ccf0c;l[0x383134]=0x25ab3a000ea8;l[0x393134]=0x2500631862e8;l[0x303234]=0x221a3feceb60;l[0x313234]=0x27b122729866;l[0x323234]=0x1d8b43f2dcec;l[0x333234]=0x22589bcf86a8;l[0x343234]=0x2a308d1c9620;l[0x353234]=0x2374d93cae4e;l[0x363234]=0x2663c93243f4;l[0x373234]=0x2a7cf85fd212;l[0x383234]=0x23b4eba2eb80;l[0x393234]=0x26a8fee51c84;l[0x303334]=0x259626c123c0;l[0x313334]=0x28a27dde8710;l[0x323334]=0x270ca8309420;l[0x333334]=0x1d8806106ff6;l[0x343334]=0x2b2f47fcab8c;l[0x353334]=0x2997cc42d4c4;l[0x363334]=0x2396007f5168;l[0x373334]=0x2b7bb33fe798;l[0x383334]=0x29e13b21c2b4;l[0x393334]=0x23d4af79295c;l[0x303434]=0x1d1e06255760;l[0x313434]=0x1fcaa1007e6e;l[0x323434]=0x1ef1b6ca33d4;l[0x333434]=0x1e369ebd7452;l[0x343434]=0x179cbf17e6b8;l[0x353434]=0x1bb7d1cb0fbc;l[0x363434]=0x1af95c447160;l[0x373434]=0x1dc4f8de9da2;l[0x383434]=0x1fe6b6dc3280;l[0x393434]=0x1f292683ecca;l[0x303534]=0x21104b175ea4;l[0x313534]=0x292cf397f778;l[0x323534]=0x24b3695e0e60;l[0x333534]=0x24c832a99778;l[0x343534]=0x274c290ad070;l[0x353534]=0x1c5746affbf4;l[0x363534]=0x2181268bbc10;l[0x373534]=0x29f1c6f2149e;l[0x383534]=0x22ac4785c0f0;l[0x393534]=0x25d1c1b88a04;l[0x303634]=0x24a826a428b8;l[0x313634]=0x2a16aceecaa2;l[0x323634]=0x286237ed47c0;l[0x333634]=0x24c1c9ee86c4;l[0x343634]=0x2829bff00020;l[0x353634]=0x267117e53860;l[0x363634]=0x1c2f0490fba0;l[0x373634]=0x2adcbd4b6b10;l[0x383634]=0x29226f34bf78;l[0x393634]=0x22a86a8bd0ac;l[0x303734]=0x2568a334c0c0;l[0x313734]=0x284618bb3ae6;l[0x323734]=0x2760a428e350;l[0x333734]=0x269b19333932;l[0x343734]=0x2887c4195d84;l[0x353734]=0x27a0b68f1d2a;l[0x363734]=0x26d9c82d0db8;l[0x373734]=0x1fc47260aba6;l[0x383734]=0x242fe3cc6ed0;l[0x393734]=0x236597f08084;l[0x303834]=0x278cb6816680;l[0x313834]=0x30348a5b58e2;l[0x323834]=0x2b6fb391cfe4;l[0x333834]=0x2b86c57816f6;l[0x343834]=0x3081822c0448;l[0x353834]=0x2bb4e944a51a;l[0x363834]=0x2bcbfb2aec2c;l[0x373834]=0x2e7f862b486e;l[0x383834]=0x22bfe29d9270;l[0x393834]=0x284a8d20a06c;l[0x303934]=0x2b6b2158ed48;l[0x313934]=0x313519bd980c;l[0x323934]=0x2f65116bc5f8;l[0x333934]=0x2b89508c7cbe;l[0x343934]=0x3182118e4378;l[0x353934]=0x2faf0cd82346;l[0x363934]=0x2bcd22d2eca0;l[0x373934]=0x2f73f31be424;l[0x383934]=0x2d9cbb5c7f14;l[0x393934]=0x22a1797c613e;l[0x303035]=0x1cc14aa7c5d8;l[0x313035]=0x30f21d23d00e;l[0x323035]=0x277b5fe16e40;l[0x333035]=0x2aecf6143f8c;l[0x343035]=0x313d24faa740;l[0x353035]=0x27b7c6f4a452;l[0x363035]=0x2b2e807410fc;l[0x373035]=0x31882cd17e7e;l[0x383035]=0x27f42e07da70;l[0x393035]=0x2b700ad3e278;l[0x303135]=0x2d0c2d2381f4;l[0x313135]=0x267edc32e53c;l[0x323135]=0x2b3bce55fc00;l[0x333135]=0x2a6402d577e2;l[0x343135]=0x2d9e3c263ae0;l[0x353135]=0x3014b757aae8;l[0x363135]=0x2f3dd1057f70;l[0x373135]=0x2de26557473a;l[0x383135]=0x305c6add69dc;l[0x393135]=0x2f84211ed912;l[0x303235]=0x27bce13692d0;l[0x313235]=0x2ea17b563630;l[0x323235]=0x220d0fb84f08;l[0x333235]=0x27f791c6265e;l[0x343235]=0x31a2f536af88;l[0x353235]=0x294a761f43e0;l[0x363235]=0x2ce370481198;l[0x373235]=0x31ebb526e488;l[0x383235]=0x2986dd327a20;l[0x393235]=0x2d24faa7e336;l[0x303335]=0x2cc0e89701dc;l[0x313335]=0x307c599f704a;l[0x323335]=0x2e8239951b50;l[0x333335]=0x22c4c117e6c4;l[0x343335]=0x338c966075b8;l[0x353335]=0x3190d04a3ce6;l[0x363335]=0x2a27f0105100;l[0x373335]=0x33d6b9bd1026;l[0x383335]=0x31d7f7428938;l[0x393335]=0x2a6457238756;l[0x303435]=0x2d23462d1ba8;l[0x313435]=0x306bbc0483f0;l[0x323435]=0x2f6206b1e4f8;l[0x333435]=0x2e7d1c5dee58;l[0x343435]=0x2667290d8880;l[0x353435]=0x2b6fd3f137fe;l[0x363435]=0x2a878c236284;l[0x373435]=0x2df43ec65a10;l[0x383435]=0x309074f67fe0;l[0x393435]=0x2fa91257030c;l[0x303535]=0x1fa16bb88cd4;l[0x313535]=0x2982471c53dc;l[0x323535]=0x24020abd0420;l[0x333535]=0x2412bdc5b4d4;l[0x343535]=0x271be15640a8;l[0x353535]=0x19b594b61558;l[0x363535]=0x1ff9c19bd7e8;l[0x373535]=0x2a3af6fe7f02;l[0x383535]=0x2155cf337c58;l[0x393535]=0x252276725258;l[0x303635]=0x2af66c343680;l[0x313635]=0x318d64da4688;l[0x323635]=0x2f74a57c619c;l[0x333635]=0x2b061940806e;l[0x343635]=0x2f24d78476a0;l[0x353635]=0x2d07e51d4cd6;l[0x363635]=0x208cfb6bffb4;l[0x373635]=0x325b4782c282;l[0x383635]=0x303caf0fb4e0;l[0x393635]=0x285b95f05d8a;l[0x303735]=0x329f7cb6e7b8;l[0x313735]=0x3616b43f02b2;l[0x323735]=0x34fe5b95b658;l[0x333735]=0x340ce55e34b6;l[0x343735]=0x365f742f3394;l[0x353735]=0x3545828dfe76;l[0x363735]=0x3452a8ea1780;l[0x373735]=0x2bbf26783cca;l[0x383735]=0x31161719e608;l[0x393735]=0x301fdffc2038;l[0x303835]=0x2923514d31e8;l[0x313835]=0x33907ec29f30;l[0x323835]=0x2dc61c8bfc40;l[0x333835]=0x2dda3ee7b7a0;l[0x343835]=0x33d4a7f3a780;l[0x353835]=0x2e02839f2e60;l[0x363835]=0x2e16a5fae9c0;l[0x373835]=0x315084e2e590;l[0x383835]=0x23209dc82570;l[0x393835]=0x29c6bc0d8292;l[0x303935]=0x3286f458d8bc;l[0x313935]=0x39795f18f19e;l[0x323935]=0x37450c6abd80;l[0x333935]=0x329b2d4e5414;l[0x343935]=0x39c40f02faa4;l[0x353935]=0x378cbff07868;l[0x363935]=0x32dcb7ae2190;l[0x373935]=0x373a503995ea;l[0x383935]=0x34fece1dced0;l[0x393935]=0x27cab5e0a098;l[0x303036]=0x1eebc771a1c0;l[0x313036]=0x371fd5853d10;l[0x323036]=0x2bbff734d2a4;l[0x333036]=0x2fdb49217bba;l[0x343036]=0x3766469cec78;l[0x353036]=0x2bf7c788e0ec;l[0x363036]=0x30183cc22560;l[0x373036]=0x37acb7b49bec;l[0x383036]=0x2c2f97dcef40;l[0x393036]=0x30553062cf12;l[0x303136]=0x2e71f0a380b4;l[0x313136]=0x2694d6209ca8;l[0x323136]=0x2c37cc760488;l[0x333136]=0x2b2e9ab013ee;l[0x343136]=0x2f02560b6cd8;l[0x353136]=0x31ebb5713874;l[0x363136]=0x30e368d9a080;l[0x373136]=0x2f3d22c3c956;l[0x383136]=0x322a0c7e478c;l[0x393136]=0x31205c7a4a46;l[0x303236]=0x2bacd6ebb370;l[0x313236]=0x33deda2bece2;l[0x323236]=0x24db92f679c4;l[0x333236]=0x2be2f0bc1e6c;l[0x343236]=0x376177d6c100;l[0x353236]=0x2d6bdf0e713a;l[0x363236]=0x31ae94f116bc;l[0x373236]=0x37a5a107ce36;l[0x383236]=0x2da3af627fb0;l[0x393236]=0x31eb8891c090;l[0x303336]=0x2c612cf7c2b8;l[0x313336]=0x30c8e54115bc;l[0x323336]=0x2e67a8303830;l[0x333336]=0x206e86abccba;l[0x343336]=0x34541ca68884;l[0x353336]=0x31f13989c720;l[0x363336]=0x291e722f4c28;l[0x373336]=0x3493801e0dbc;l[0x383336]=0x322da09cfe3c;l[0x393336]=0x2950195d6d48;l[0x303436]=0x2db21485d100;l[0x313436]=0x318ed15b4524;l[0x323436]=0x304cbcee1c70;l[0x333436]=0x2f366c54b954;l[0x343436]=0x259cd15b45e0;l[0x353436]=0x2b8b8071467a;l[0x363436]=0x2a71d25e0484;l[0x373436]=0x2e78070b91fc;l[0x383436]=0x318721701360;l[0x393436]=0x306e588b2a10;l[0x303536]=0x2ab51a355dc8;l[0x313536]=0x366057b9cbce;l[0x323536]=0x2fdf98728e38;l[0x333536]=0x2ff26475df52;l[0x343536]=0x3386e47336cc;l[0x353536]=0x23b55ccb2d72;l[0x363536]=0x2b1a05f86b40;l[0x373536]=0x3731ff94d9b0;l[0x383536]=0x2cb35ea8a0d4;l[0x393536]=0x312d6230fc8a;l[0x303636]=0x22035b636520;l[0x313636]=0x29bd16939198;l[0x323636]=0x273a5d07f8f4;l[0x333636]=0x21f802bda5e6;l[0x343636]=0x26c7d972c740;l[0x353636]=0x2440ecdde9be;l[0x363636]=0x15877cfe3a8c;l[0x373636]=0x2a70ac9fff0a;l[0x383636]=0x27e819ff3db0;l[0x393636]=0x1e9a3c982c22;l[0x303736]=0x335668e23a00;l[0x313736]=0x3761e76860d6;l[0x323736]=0x36112fa48ac0;l[0x333736]=0x34ee53279ca2;l[0x343736]=0x37a14adfe114;l[0x353736]=0x364efa24223a;l[0x363736]=0x352aba3acec8;l[0x373736]=0x2b13901fe676;l[0x383736]=0x315084f3e0d0;l[0x393736]=0x3028e790ae84;l[0x303836]=0x303b0fdeeb10;l[0x313836]=0x3c70867a5ef0;l[0x323836]=0x35a388612dc0;l[0x333836]=0x35b7aabce920;l[0x343836]=0x3cb4afab6740;l[0x353836]=0x35dfef745fe0;l[0x363836]=0x35f411d01b40;l[0x373836]=0x39b7342a4250;l[0x383836]=0x2919f90d03c0;l[0x393836]=0x30de7a9f3bba;l[0x303936]=0x2cd1332f0a68;l[0x313936]=0x34e787318c6c;l[0x323936]=0x324a610df148;l[0x333936]=0x2ccdda9b62ae;l[0x343936]=0x352253e9e418;l[0x353936]=0x32823161fad6;l[0x363936]=0x2cff81c97ed0;l[0x373936]=0x320f597e6b04;l[0x383936]=0x2f6b03ed3ce4;l[0x393936]=0x1ff98c39f94e;l[0x303037]=0x2e52acafcaa8;l[0x313037]=0x4a8f3d6cd966;l[0x323037]=0x3d4b852048b0;l[0x333037]=0x4215d9d8abe4;l[0x343037]=0x4ae0ecfb0800;l[0x353037]=0x3d8e93ead62a;l[0x363037]=0x425e0befd4bc;l[0x373037]=0x4b329c8936a6;l[0x383037]=0x3dd1a2b563b0;l[0x393037]=0x42a63e06fda0;l[0x303137]=0x3c68f18e704c;l[0x313137]=0x334176836e20;l[0x323137]=0x39cfda155050;l[0x333137]=0x389aab141c6e;l[0x343137]=0x3d0d51843478;l[0x353137]=0x406efe2884dc;l[0x363137]=0x3f3ab455a9a0;l[0x373137]=0x3d4efce25cb6;l[0x383137]=0x40b433db5fb4;l[0x393137]=0x3f7e869c1f26;l[0x303237]=0x3a7624719920;l[0x313237]=0x43f9d91830f0;l[0x323237]=0x328bfe90fa28;l[0x333237]=0x3ab48054346e;l[0x343237]=0x480a735eb8b8;l[0x353237]=0x3c7c092b4d20;l[0x363237]=0x416cc30d92b8;l[0x373237]=0x4856dea1f708;l[0x383237]=0x3cbc1b918cb0;l[0x393237]=0x41b1f8c06da6;l[0x303337]=0x3fcf47befaf4;l[0x313337]=0x44eb34842206;l[0x323337]=0x422ac7a7ab60;l[0x333337]=0x31fdea56f878;l[0x343337]=0x49092e3ed090;l[0x353337]=0x46471b567612;l[0x363337]=0x3c125a165b80;l[0x373337]=0x495599820efa;l[0x383337]=0x46908a356660;l[0x393337]=0x3c51091035d2;l[0x303437]=0x3ef664538e48;l[0x313437]=0x436e07d62e3c;l[0x323437]=0x41fa33fd9bc0;l[0x333437]=0x40b91ccdec1c;l[0x343437]=0x35a279da8b00;l[0x353437]=0x3c7dccd1fcaa;l[0x363437]=0x3b3958286e2c;l[0x373437]=0x3fdfae8fb184;l[0x383437]=0x43684cd7ae70;l[0x393437]=0x4224bd5c7898;l[0x303537]=0x3ce5bb4baa2c;l[0x313537]=0x4a5d394bd050;l[0x323537]=0x42ddd577b600;l[0x333537]=0x42f498d0b8a0;l[0x343537]=0x47165395ece0;l[0x353537]=0x34db6f41169c;l[0x363537]=0x3d627310e0c8;l[0x373537]=0x4b530f4227ae;l[0x383537]=0x3f3cd38fc9c0;l[0x393537]=0x446611bcbc4c;l[0x303637]=0x426e97d85cf0;l[0x313637]=0x4b5ab7296522;l[0x323637]=0x487da506d810;l[0x333637]=0x42771e44d26c;l[0x343637]=0x4807af01de38;l[0x353637]=0x452669d60c48;l[0x363637]=0x343e155eba50;l[0x373637]=0x4c51ca223fc8;l[0x383637]=0x496edeea8a00;l[0x393637]=0x3ec3ded27d84;l[0x303737]=0x32f48ac15eec;l[0x313737]=0x3794c267a2a0;l[0x323737]=0x360c1dab53d0;l[0x333737]=0x34b84d0b0a38;l[0x343737]=0x37cc1fcca540;l[0x353737]=0x3641e2186dac;l[0x363737]=0x34ecae0bbec0;l[0x373737]=0x29524e69d9d4;l[0x383737]=0x3075b992364c;l[0x393737]=0x2f1d280ba886;l[0x303837]=0x394f711776f0;l[0x313837]=0x474dd7c8bf22;l[0x323837]=0x3f7ee4bccd6c;l[0x333837]=0x3f93ae085686;l[0x343837]=0x4793f5c930a0;l[0x353837]=0x3fbd409f68ba;l[0x363837]=0x3fd209eaf1d4;l[0x373837]=0x441f16a711de;l[0x383837]=0x31152e772298;l[0x393837]=0x39f8ba460324;l[0x303937]=0x3ef4425cbb68;l[0x313937]=0x4837911f94f4;l[0x323937]=0x453aa9048130;l[0x333937]=0x3ef48cb9bbce;l[0x343937]=0x487daf200678;l[0x353937]=0x457dcaa0a496;l[0x363937]=0x3f31852ff1c8;l[0x373937]=0x44fcad8c443c;l[0x383937]=0x41f896039d7c;l[0x393937]=0x3052d05832ee;l[0x303038]=0x2e02110c7600;l[0x313038]=0x4e412d0e5c18;l[0x323038]=0x3f13a3610904;l[0x333038]=0x448703808a42;l[0x343038]=0x4e8c34e535a8;l[0x353038]=0x3f500a744174;l[0x363038]=0x44c88de05e10;l[0x373038]=0x4ed73cbc0f44;l[0x383038]=0x3f8c718779f0;l[0x393038]=0x450a184031ea;l[0x303138]=0x478bcf386b50;l[0x313138]=0x3d187e09a942;l[0x323138]=0x4490d93c6400;l[0x333138]=0x432e37644b14;l[0x343138]=0x483e534d807c;l[0x353138]=0x4c16d794b3e6;l[0x363138]=0x4ab51aeaf3a0;l[0x373138]=0x48827c7e8f34;l[0x383138]=0x4c5e8b1a7538;l[0x393138]=0x4afb6b044fa0;l[0x303238]=0x3ea9d94c3cb0;l[0x313238]=0x497b458ccada;l[0x323238]=0x359edde76864;l[0x333238]=0x3ee489dbd044;l[0x343238]=0x4e0def09ce40;l[0x353238]=0x40e2b99eded2;l[0x363238]=0x467d7db45c7c;l[0x373238]=0x4e56aefa059e;l[0x383238]=0x411f20b21770;l[0x393238]=0x46bf08143078;l[0x303338]=0x4615f37d6a00;l[0x313338]=0x4be0fa2d9c30;l[0x323338]=0x48bc42f4c380;l[0x333338]=0x36568f470036;l[0x343338]=0x5082668b2bac;l[0x353338]=0x4d5c09466f24;l[0x363338]=0x41c0338fec08;l[0x373338]=0x50cc89e7c878;l[0x383338]=0x4da3303ebdd4;l[0x393338]=0x41fc9aa324bc;l[0x303438]=0x4a322c3a8240;l[0x313438]=0x4f420a29b582;l[0x323438]=0x4d99caa520bc;l[0x333438]=0x4c2b409e8c0e;l[0x343438]=0x3f94e970a4c8;l[0x353438]=0x475a3408ef00;l[0x363438]=0x45e84c887b78;l[0x373438]=0x4b2c1868dc2e;l[0x383438]=0x4f2b8e53bc20;l[0x393438]=0x4dba8c01a13e;l[0x303538]=0x40f4bee80078;l[0x313538]=0x50334cf27ff6;l[0x323538]=0x47b014202a28;l[0x333538]=0x47c59e5d7f8a;l[0x343538]=0x4c6f637931cc;l[0x353538]=0x37c5f2062fda;l[0x363538]=0x416a200727a0;l[0x373538]=0x512e2e5be838;l[0x383538]=0x437b27720674;l[0x393538]=0x494e6fd23112;l[0x303638]=0x489e74947400;l[0x313638]=0x52b30640ea50;l[0x323638]=0x4f71a9c1fb34;l[0x333638]=0x489d04c2d55e;l[0x343638]=0x4ee45dc25e00;l[0x353638]=0x4b9ece3a2a06;l[0x363638]=0x387da365c7ac;l[0x373638]=0x53b1eb85a082;l[0x383638]=0x506ab5f188b0;l[0x393638]=0x4458a16313aa;l[0x303738]=0x48b8d49e08b0;l[0x313738]=0x4df4e7408d9e;l[0x323738]=0x4c3b7767ea70;l[0x333738]=0x4abdd48069ba;l[0x343738]=0x4e39a4277fb4;l[0x353738]=0x4c7e9b56f3c2;l[0x363738]=0x4aff95030db8;l[0x373738]=0x3de921b6508e;l[0x383738]=0x45fa250f3380;l[0x393738]=0x4477c1416e9c;l[0x303838]=0x329bdf8db500;l[0x313838]=0x425e79222b66;l[0x323838]=0x3988d3f0d30c;l[0x333838]=0x399986f983c2;l[0x343838]=0x4298545a13b8;l[0x353838]=0x39baed0ae52e;l[0x363838]=0x39cba01395e4;l[0x373838]=0x3e9dd9ff08ca;l[0x383838]=0x29228789c2b0;l[0x393838]=0x33206062a5b0;l[0x303938]=0x4447a2d30224;l[0x313938]=0x4eb363f149ce;l[0x323938]=0x4b523179d400;l[0x333938]=0x443df6f1ee6c;l[0x343938]=0x4ef73a0b18ec;l[0x353938]=0x4b930b2f5500;l[0x363938]=0x4478a7818200;l[0x373938]=0x4afa9820514a;l[0x383938]=0x4792363b4880;l[0x393938]=0x33b39a32cd90;l[0x303039]=0x2e61ab2a79a8;l[0x313039]=0x52a402c3f0da;l[0x323039]=0x418d58089528;l[0x333039]=0x47aa73e1ee30;l[0x343039]=0x52ea73dba2a0;l[0x353039]=0x41c5285ca5ce;l[0x363039]=0x47e767829a34;l[0x373039]=0x5330e4f35472;l[0x383039]=0x41fcf8b0b680;l[0x393039]=0x48245b234644;l[0x303139]=0x454973936ac8;l[0x313139]=0x398658d26166;l[0x323139]=0x41e4b8376d40;l[0x333139]=0x4050b019e7d8;l[0x343139]=0x45fa4e0db32c;l[0x353139]=0x4a45b689422a;l[0x363139]=0x48b2939a1568;l[0x373139]=0x46351ac61208;l[0x383139]=0x4a840d9653a0;l[0x393139]=0x48ef873ac18c;l[0x303239]=0x40ceec558510;l[0x313239]=0x4cedc1b6a94c;l[0x323239]=0x36a27e79bae0;l[0x333239]=0x41050625f012;l[0x343239]=0x52018efe0778;l[0x353239]=0x43393fe233ec;l[0x363239]=0x497dbfb18960;l[0x373239]=0x5245b82f170c;l[0x383239]=0x4371103644c0;l[0x393239]=0x49bab3523592;l[0x303339]=0x41834261946c;l[0x313339]=0x47fa9052ab32;l[0x323339]=0x446ebc1349f0;l[0x333339]=0x2fcd5f5e4fbc;l[0x343339]=0x4d16f754a808;l[0x353339]=0x49897d0962ee;l[0x363339]=0x3c83c03250c0;l[0x373339]=0x4d565acc2f9e;l[0x383339]=0x49c5e41c9c68;l[0x393339]=0x3cb56760743e;l[0x303439]=0x479233de9b50;l[0x313439]=0x4d3658cbda6e;l[0x323439]=0x4b55ba2cbbec;l[0x333439]=0x49b5c9e0bac2;l[0x343439]=0x3b9bcb09c5e0;l[0x353439]=0x444719d46134;l[0x363439]=0x42a3cc0e8130;l[0x373439]=0x488119f977d2;l[0x383439]=0x4cf37418b358;l[0x393439]=0x4b510b812bfa;l[0x303539]=0x42ebee79b324;l[0x313539]=0x53f13e152bb4;l[0x323539]=0x4a69e1cb3a20;l[0x333539]=0x4a7de47381fc;l[0x343539]=0x4faf656c51f8;l[0x353539]=0x38971861c410;l[0x363539]=0x4358221a8928;l[0x373539]=0x54ef5419632a;l[0x383539]=0x459f337e9d48;l[0x393539]=0x4c1c37989fb0;l[0x303639]=0x43a04485c280;l[0x313639]=0x4eda75e38066;l[0x323639]=0x4b31fc5e08b8;l[0x333639]=0x438c66779c28;l[0x343639]=0x4a87b50f7b18;l[0x353639]=0x46db0880be8c;l[0x363639]=0x317e34a52548;l[0x373639]=0x4fd03d772af4;l[0x383639]=0x4c21eadc8a90;l[0x393639]=0x3ea5ef2d8678;l[0x303739]=0x4541e71ad858;l[0x313739]=0x4b1240bb6922;l[0x323739]=0x492071c83c38;l[0x333739]=0x4771689b4f06;l[0x343739]=0x4b4da129aa94;l[0x353739]=0x495a393e94e6;l[0x363739]=0x47a9cca54260;l[0x373739]=0x390fb1af779a;l[0x383739]=0x4206b93aaba8;l[0x393739]=0x4052ef277a48;l[0x303839]=0x4063c11d4a38;l[0x313839]=0x51f0bcd2679c;l[0x323839]=0x481a94b92168;l[0x333839]=0x482d60bc7284;l[0x343839]=0x5230e2fa3120;l[0x353839]=0x4852f8c314bc;l[0x363839]=0x4865c4c665d8;l[0x373839]=0x4dc35b1ea464;l[0x383839]=0x35dccda18040;l[0x393839]=0x40fb22c1de7e;l[0x303939]=0x330509151f6c;l[0x313939]=0x3e938cbd8386;l[0x323939]=0x3ac860185a00;l[0x333939]=0x32e05782028c;l[0x343939]=0x3ec40b7cbb34;l[0x353939]=0x3af5e2734390;l[0x363939]=0x3307b0b6feb0;l[0x373939]=0x3a3ab9c6f922;l[0x383939]=0x36685db43ca0;l[0x393939]=0x204b3b7d5fa0;}
diff --git a/lut2 b/lut2
new file mode 100644
index 0000000..c944b99
--- /dev/null
+++ b/lut2
@@ -0,0 +1 @@
+{l[3223600]=66;l[3289136]=96;l[3354672]=162;l[3420208]=272;l[3485744]=250;l[3551280]=336;l[3616816]=490;l[3682352]=416;l[3747888]=522;l[3158320]=740;l[3223856]=726;l[3289392]=840;l[3354928]=910;l[3420464]=1092;l[3486000]=1200;l[3551536]=1280;l[3617072]=1360;l[3682608]=1476;l[3748144]=1558;l[3158576]=1120;l[3224112]=1470;l[3289648]=1056;l[3355184]=1288;l[3420720]=1776;l[3486256]=1500;l[3551792]=1716;l[3617328]=2052;l[3682864]=1736;l[3748400]=1972;l[3158832]=2040;l[3224368]=2418;l[3289904]=2304;l[3355440]=1782;l[3420976]=2788;l[3486512]=2660;l[3552048]=2376;l[3617584]=3108;l[3683120]=2964;l[3748656]=2652;l[3159088]=3040;l[3224624]=3362;l[3290160]=3276;l[3355696]=3354;l[3421232]=2992;l[3486768]=3240;l[3552304]=3312;l[3617840]=3760;l[3683376]=3936;l[3748912]=4018;l[3159344]=2900;l[3224880]=3774;l[3290416]=3328;l[3355952]=3392;l[3421488]=3888;l[3487024]=2750;l[3552560]=3248;l[3618096]=4332;l[3683632]=3596;l[3749168]=4012;l[3159600]=4200;l[3225136]=5002;l[3290672]=4712;l[3356208]=4410;l[3421744]=5120;l[3487280]=4810;l[3552816]=3696;l[3618352]=5628;l[3683888]=5304;l[3749424]=4692;l[3159856]=5460;l[3225392]=5964;l[3290928]=5760;l[3356464]=5840;l[3422000]=6216;l[3487536]=6000;l[3553072]=6080;l[3618608]=5390;l[3684144]=5772;l[3749680]=5846;l[3160112]=4800;l[3225648]=6156;l[3291184]=5412;l[3356720]=5478;l[3422256]=6384;l[3487792]=5610;l[3553328]=5676;l[3618864]=6438;l[3684400]=4576;l[3749936]=5340;l[3160368]=6480;l[3225904]=7644;l[3291440]=7176;l[3356976]=6696;l[3422512]=7896;l[3488048]=7410;l[3553584]=6912;l[3619120]=7954;l[3684656]=7448;l[3750192]=5742;l[3158065]=5800;l[3223601]=9494;l[3289137]=7752;l[3354673]=8446;l[3420209]=9984;l[3485745]=8190;l[3551281]=8904;l[3616817]=10486;l[3682353]=8640;l[3747889]=9374;l[3158321]=6380;l[3223857]=5550;l[3289393]=6048;l[3354929]=6102;l[3420465]=7068;l[3486001]=7360;l[3551537]=7424;l[3617073]=7488;l[3682609]=7788;l[3748145]=7854;l[3158577]=7440;l[3224113]=9196;l[3289649]=6588;l[3355185]=7626;l[3420721]=9920;l[3486257]=8250;l[3551793]=9072;l[3617329]=10414;l[3682865]=8704;l[3748401]=9546;l[3158833]=8840;l[3224369]=10218;l[3289905]=9504;l[3355441]=7182;l[3420977]=10988;l[3486513]=10260;l[3552049]=8976;l[3617585]=11508;l[3683121]=10764;l[3748657]=9452;l[3159089]=9800;l[3224625]=10716;l[3290161]=10224;l[3355697]=10296;l[3421233]=8928;l[3486769]=9570;l[3552305]=9636;l[3617841]=10878;l[3683377]=11248;l[3748913]=11324;l[3159345]=10800;l[3224881]=13288;l[3290417]=11856;l[3355953]=11934;l[3421489]=13244;l[3487025]=9920;l[3552561]=11232;l[3618097]=14130;l[3683633]=12008;l[3749169]=13038;l[3159601]=12480;l[3225137]=14490;l[3290673]=13608;l[3356209]=12714;l[3421745]=14432;l[3487281]=13530;l[3552817]=10624;l[3618353]=15364;l[3683889]=14448;l[3749425]=12844;l[3159857]=12240;l[3225393]=13338;l[3290929]=12728;l[3356465]=12802;l[3422001]=13572;l[3487537]=12950;l[3553073]=13024;l[3618609]=11328;l[3684145]=12104;l[3749681]=12172;l[3160113]=13320;l[3225649]=16290;l[3291185]=14560;l[3356721]=14640;l[3422257]=16560;l[3487793]=14800;l[3553329]=14880;l[3618865]=16456;l[3684401]=12408;l[3749937]=13986;l[3160369]=15200;l[3225905]=17572;l[3291441]=16512;l[3356977]=15440;l[3422513]=17848;l[3488049]=16770;l[3553585]=15680;l[3619121]=17730;l[3684657]=16632;l[3750193]=13134;l[3158066]=9600;l[3223602]=16884;l[3289138]=13332;l[3354674]=14616;l[3420210]=17544;l[3485746]=13940;l[3551282]=15244;l[3616818]=18216;l[3682354]=14560;l[3747890]=15884;l[3158322]=14700;l[3223858]=13082;l[3289394]=13992;l[3354930]=14058;l[3420466]=15836;l[3486002]=16340;l[3551538]=16416;l[3617074]=16492;l[3682610]=17004;l[3748146]=17082;l[3158578]=10560;l[3224114]=13702;l[3289650]=8880;l[3355186]=10704;l[3420722]=14784;l[3486258]=11700;l[3551794]=13108;l[3617330]=15436;l[3682866]=12312;l[3748402]=13740;l[3158834]=14260;l[3224370]=16632;l[3289906]=15312;l[3355442]=11184;l[3420978]=17784;l[3486514]=16450;l[3552050]=14160;l[3617586]=18486;l[3683122]=17136;l[3748658]=14818;l[3159090]=17760;l[3224626]=19280;l[3290162]=18392;l[3355698]=18468;l[3421234]=16104;l[3486770]=17150;l[3552306]=17220;l[3617842]=19266;l[3683378]=19840;l[3748914]=19920;l[3159346]=15000;l[3224882]=19076;l[3290418]=16632;l[3355954]=16698;l[3421490]=18796;l[3487026]=13260;l[3552562]=15360;l[3618098]=20046;l[3683634]=16512;l[3749170]=18130;l[3159602]=18720;l[3225138]=21924;l[3290674]=20436;l[3356210]=18936;l[3421746]=21648;l[3487282]=20140;l[3552818]=15428;l[3618354]=22962;l[3683890]=21440;l[3749426]=18830;l[3159858]=20520;l[3225394]=22222;l[3290930]=21216;l[3356466]=21294;l[3422002]=22468;l[3487538]=21450;l[3553074]=21528;l[3618610]=18836;l[3684146]=20016;l[3749682]=20088;l[3160114]=17360;l[3225650]=21918;l[3291186]=19176;l[3356722]=19244;l[3422258]=22152;l[3487794]=19380;l[3553330]=19448;l[3618866]=21812;l[3684402]=15552;l[3749938]=17918;l[3160370]=21460;l[3225906]=25026;l[3291442]=23360;l[3356978]=21682;l[3422514]=25284;l[3488050]=23600;l[3553586]=21904;l[3619122]=24948;l[3684658]=23244;l[3750194]=17940;l[3158067]=13200;l[3223603]=24080;l[3289139]=18724;l[3354675]=20604;l[3420211]=24928;l[3485747]=19520;l[3551283]=21420;l[3616819]=25788;l[3682355]=20328;l[3747891]=22248;l[3158323]=19220;l[3223859]=16794;l[3289395]=18096;l[3354931]=18154;l[3420467]=20724;l[3486003]=21420;l[3551539]=21488;l[3617075]=21556;l[3682611]=22260;l[3748147]=22330;l[3158579]=17920;l[3224115]=22470;l[3289651]=15456;l[3355187]=18088;l[3420723]=23976;l[3486259]=19500;l[3551795]=21516;l[3617331]=24852;l[3682867]=20336;l[3748403]=22372;l[3158835]=14520;l[3224371]=17874;l[3289907]=15936;l[3355443]=9990;l[3420979]=19372;l[3486515]=17420;l[3552051]=14112;l[3617587]=20220;l[3683123]=18252;l[3748659]=14916;l[3159091]=22440;l[3224627]=24552;l[3290163]=23256;l[3355699]=23324;l[3421235]=19952;l[3486771]=21390;l[3552307]=21452;l[3617843]=24290;l[3683379]=25056;l[3748915]=25128;l[3159347]=21000;l[3224883]=26676;l[3290419]=23232;l[3355955]=23298;l[3421491]=26196;l[3487027]=18460;l[3552563]=21360;l[3618099]=27846;l[3683635]=22912;l[3749171]=25130;l[3159603]=20160;l[3225139]=24548;l[3290675]=22444;l[3356211]=20328;l[3421747]=24024;l[3487283]=21900;l[3552819]=15372;l[3618355]=25690;l[3683891]=23552;l[3749427]=19926;l[3159859]=25160;l[3225395]=27454;l[3290931]=26040;l[3356467]=26110;l[3422003]=27676;l[3487539]=26250;l[3553075]=26320;l[3618611]=22620;l[3684147]=24192;l[3749683]=24256;l[3160115]=23560;l[3225651]=29718;l[3291187]=25976;l[3356723]=26044;l[3422259]=29952;l[3487795]=26180;l[3553331]=26248;l[3618867]=29412;l[3684403]=20952;l[3749939]=24118;l[3160371]=22620;l[3225907]=27370;l[3291443]=25088;l[3356979]=22794;l[3422515]=27580;l[3488051]=25280;l[3553587]=22968;l[3619123]=26996;l[3684659]=24676;l[3750195]=17556;l[3158068]=24000;l[3223604]=38496;l[3289140]=31356;l[3354676]=33852;l[3420212]=39592;l[3485748]=32400;l[3551284]=34916;l[3616820]=40700;l[3682356]=33456;l[3747892]=35992;l[3158324]=30340;l[3223860]=27126;l[3289396]=28840;l[3354932]=28910;l[3420468]=32292;l[3486004]=33200;l[3551540]=33280;l[3617076]=33360;l[3682612]=34276;l[3748148]=34358;l[3158580]=29400;l[3224116]=35364;l[3289652]=26164;l[3355188]=29610;l[3420724]=37312;l[3486260]=31450;l[3551796]=34080;l[3617332]=38430;l[3682868]=32528;l[3748404]=35178;l[3158836]=32680;l[3224372]=37066;l[3289908]=34560;l[3355444]=26846;l[3420980]=39060;l[3486516]=36540;l[3552052]=32264;l[3617588]=40204;l[3683124]=37668;l[3748660]=33364;l[3159092]=26400;l[3224628]=29106;l[3290164]=27404;l[3355700]=27466;l[3421236]=23088;l[3486772]=24920;l[3552308]=24976;l[3617844]=28608;l[3683380]=29568;l[3748916]=29634;l[3159348]=28800;l[3224884]=36080;l[3290420]=31640;l[3355956]=31710;l[3421492]=35412;l[3487028]=25480;l[3552564]=29184;l[3618100]=37474;l[3683636]=31144;l[3749172]=33966;l[3159604]=32200;l[3225140]=37802;l[3290676]=35112;l[3356212]=32410;l[3421748]=37120;l[3487284]=34410;l[3552820]=26096;l[3618356]=39228;l[3683892]=36504;l[3749428]=31892;l[3159860]=33840;l[3225396]=36738;l[3290932]=34928;l[3356468]=35002;l[3422004]=36972;l[3487540]=35150;l[3553076]=35224;l[3618612]=30528;l[3684148]=32504;l[3749684]=32572;l[3160116]=35520;l[3225652]=43290;l[3291188]=38560;l[3356724]=38640;l[3422260]=43560;l[3487796]=38800;l[3553332]=38880;l[3618868]=42856;l[3684404]=32208;l[3749940]=36186;l[3160372]=39200;l[3225908]=45172;l[3291444]=42312;l[3356980]=39440;l[3422516]=45448;l[3488052]=42570;l[3553588]=39680;l[3619124]=44730;l[3684660]=41832;l[3750196]=32934;l[3158069]=25000;l[3223605]=43086;l[3289141]=34136;l[3354677]=37222;l[3420213]=44352;l[3485749]=35350;l[3551285]=38456;l[3616821]=45630;l[3682357]=36576;l[3747893]=39702;l[3158325]=37740;l[3223861]=33726;l[3289397]=35840;l[3354933]=35910;l[3420469]=40092;l[3486005]=41200;l[3551541]=41280;l[3617077]=41360;l[3682613]=42476;l[3748149]=42558;l[3158581]=33280;l[3224117]=40638;l[3289653]=29232;l[3355189]=33472;l[3420725]=42968;l[3486261]=35700;l[3551797]=38924;l[3617333]=44268;l[3682869]=36960;l[3748405]=40204;l[3158837]=37100;l[3224373]=42480;l[3289909]=39368;l[3355445]=29848;l[3420981]=44856;l[3486517]=41730;l[3552053]=36448;l[3617589]=46182;l[3683125]=43040;l[3748661]=37730;l[3159093]=38880;l[3224629]=42198;l[3290165]=40108;l[3355701]=40182;l[3421237]=34816;l[3486773]=37060;l[3552309]=37128;l[3617845]=41572;l[3683381]=42744;l[3748917]=42822;l[3159349]=27500;l[3224885]=36366;l[3290421]=30912;l[3355957]=30968;l[3421493]=35456;l[3487029]=23310;l[3552565]=27800;l[3618101]=37876;l[3683637]=30132;l[3749173]=33540;l[3159605]=35840;l[3225141]=42636;l[3290677]=39340;l[3356213]=36032;l[3421749]=41736;l[3487285]=38420;l[3552821]=28300;l[3618357]=44226;l[3683893]=40896;l[3749429]=35278;l[3159861]=43320;l[3225397]=46822;l[3290933]=44616;l[3356469]=44694;l[3422005]=47068;l[3487541]=44850;l[3553077]=44928;l[3618613]=39236;l[3684149]=41616;l[3749685]=41688;l[3160117]=35960;l[3225653]=45318;l[3291189]=39576;l[3356725]=39644;l[3422261]=45552;l[3487797]=39780;l[3553333]=39848;l[3618869]=44612;l[3684405]=31752;l[3749941]=36518;l[3160373]=43660;l[3225909]=50826;l[3291445]=47360;l[3356981]=43882;l[3422517]=51084;l[3488053]=47600;l[3553589]=44104;l[3619125]=50148;l[3684661]=46644;l[3750197]=35940;l[3158070]=27600;l[3223606]=49282;l[3289142]=38528;l[3354678]=42210;l[3420214]=50736;l[3485750]=39930;l[3551286]=43632;l[3616822]=52202;l[3682358]=41344;l[3747894]=45066;l[3158326]=40260;l[3223862]=35438;l[3289398]=37944;l[3354934]=38006;l[3420470]=42980;l[3486006]=44280;l[3551542]=44352;l[3617078]=44424;l[3682614]=45732;l[3748150]=45806;l[3158582]=37200;l[3224118]=45954;l[3289654]=32344;l[3355190]=37380;l[3420726]=48672;l[3486262]=40000;l[3551798]=43820;l[3617334]=50160;l[3682870]=41448;l[3748406]=45288;l[3158838]=37800;l[3224374]=44170;l[3289910]=40448;l[3355446]=29118;l[3420982]=46916;l[3486518]=43180;l[3552054]=36888;l[3617590]=48412;l[3683126]=44660;l[3748662]=38340;l[3159094]=40960;l[3224630]=44870;l[3290166]=42372;l[3355702]=42438;l[3421238]=36064;l[3486774]=38700;l[3552310]=38760;l[3617846]=43996;l[3683382]=45360;l[3748918]=45430;l[3159350]=37700;l[3224886]=48174;l[3290422]=41728;l[3355958]=41792;l[3421494]=47088;l[3487030]=32750;l[3552566]=38048;l[3618102]=49932;l[3683638]=40796;l[3749174]=44812;l[3159606]=30360;l[3225142]=38338;l[3290678]=34424;l[3356214]=30498;l[3421750]=37184;l[3487286]=33250;l[3552822]=21312;l[3618358]=40020;l[3683894]=36072;l[3749430]=29436;l[3159862]=45560;l[3225398]=49654;l[3290934]=47040;l[3356470]=47110;l[3422006]=49876;l[3487542]=47250;l[3553078]=47320;l[3618614]=40620;l[3684150]=43392;l[3749686]=43456;l[3160118]=42160;l[3225654]=53118;l[3291190]=46376;l[3356726]=46444;l[3422262]=53352;l[3487798]=46580;l[3553334]=46648;l[3618870]=52212;l[3684406]=37152;l[3749942]=42718;l[3160374]=40020;l[3225910]=48370;l[3291446]=44288;l[3356982]=40194;l[3422518]=48580;l[3488054]=44480;l[3553590]=40368;l[3619126]=47396;l[3684662]=43276;l[3750198]=30756;l[3158071]=43400;l[3223607]=68698;l[3289143]=56160;l[3354679]=60458;l[3420215]=70400;l[3485751]=57810;l[3551287]=62128;l[3616823]=72114;l[3682359]=59472;l[3747895]=63810;l[3158327]=53960;l[3223863]=48348;l[3289399]=51264;l[3354935]=51336;l[3420471]=57120;l[3486007]=58630;l[3551543]=58712;l[3617079]=58794;l[3682615]=60312;l[3748151]=60396;l[3158583]=51840;l[3224119]=62006;l[3289655]=46208;l[3355191]=52056;l[3420727]=65160;l[3486263]=55100;l[3551799]=59532;l[3617335]=66884;l[3682871]=56784;l[3748407]=61236;l[3158839]=56940;l[3224375]=64328;l[3289911]=60024;l[3355447]=46912;l[3420983]=67528;l[3486519]=63210;l[3552055]=55936;l[3617591]=69278;l[3683127]=64944;l[3748663]=57642;l[3159095]=56240;l[3224631]=60762;l[3290167]=57876;l[3355703]=57954;l[3421239]=50592;l[3486775]=53640;l[3552311]=53712;l[3617847]=59760;l[3683383]=61336;l[3748919]=61418;l[3159351]=54000;l[3224887]=66088;l[3290423]=58656;l[3355959]=58734;l[3421495]=64844;l[3487031]=48320;l[3552567]=54432;l[3618103]=68130;l[3683639]=57608;l[3749175]=62238;l[3159607]=59280;l[3225143]=68490;l[3290679]=64008;l[3356215]=59514;l[3421751]=67232;l[3487287]=62730;l[3552823]=49024;l[3618359]=70564;l[3683895]=66048;l[3749431]=58444;l[3159863]=47740;l[3225399]=52428;l[3290935]=49408;l[3356471]=49472;l[3422007]=52632;l[3487543]=49600;l[3553079]=49664;l[3618615]=41958;l[3684151]=45124;l[3749687]=45182;l[3160119]=51480;l[3225655]=64042;l[3291191]=56304;l[3356727]=56376;l[3422263]=64288;l[3487799]=56520;l[3553335]=56592;l[3618871]=62960;l[3684407]=45704;l[3749943]=52074;l[3160375]=56880;l[3225911]=66444;l[3291447]=61776;l[3356983]=57096;l[3422519]=66696;l[3488055]=62010;l[3553591]=57312;l[3619127]=65354;l[3684663]=60648;l[3750199]=46342;l[3158072]=41600;l[3223608]=70488;l[3289144]=56140;l[3354680]=61028;l[3420216]=72360;l[3485752]=57960;l[3551288]=62868;l[3616824]=74244;l[3682360]=59792;l[3747896]=64720;l[3158328]=61560;l[3223864]=55148;l[3289400]=58464;l[3354936]=58536;l[3420472]=65120;l[3486008]=66830;l[3551544]=66912;l[3617080]=66994;l[3682616]=68712;l[3748152]=68796;l[3158584]=54120;l[3224120]=65680;l[3289656]=47676;l[3355192]=54318;l[3420728]=69216;l[3486264]=57750;l[3551800]=62776;l[3617336]=71122;l[3682872]=59616;l[3748408]=64662;l[3158840]=59760;l[3224376]=68142;l[3289912]=63232;l[3355448]=48314;l[3420984]=71724;l[3486520]=66800;l[3552056]=58520;l[3617592]=73656;l[3683128]=68716;l[3748664]=60408;l[3159096]=63840;l[3224632]=68962;l[3290168]=65676;l[3355704]=65754;l[3421240]=57392;l[3486776]=60840;l[3552312]=60912;l[3617848]=67760;l[3683384]=69536;l[3748920]=69618;l[3159352]=56100;l[3224888]=69782;l[3290424]=61344;l[3355960]=61416;l[3421496]=68320;l[3487032]=49590;l[3552568]=56496;l[3618104]=71988;l[3683640]=60060;l[3749176]=65284;l[3159608]=61920;l[3225144]=72324;l[3290680]=67236;l[3356216]=62136;l[3421752]=70848;l[3487288]=65740;l[3552824]=50228;l[3618360]=74562;l[3683896]=69440;l[3749432]=60830;l[3159864]=64380;l[3225400]=69680;l[3290936]=66272;l[3356472]=66348;l[3422008]=69920;l[3487544]=66500;l[3553080]=66576;l[3618616]=57882;l[3684152]=61460;l[3749688]=61530;l[3160120]=45760;l[3225656]=59908;l[3291192]=51156;l[3356728]=51214;l[3422264]=60112;l[3487800]=51330;l[3553336]=51388;l[3618872]=58542;l[3684408]=39072;l[3749944]=46228;l[3160376]=58740;l[3225912]=69498;l[3291448]=64224;l[3356984]=58938;l[3422520]=69732;l[3488056]=64440;l[3553592]=59136;l[3619128]=68172;l[3684664]=62860;l[3750200]=46748;l[3158073]=43200;l[3223609]=75684;l[3289145]=59532;l[3354681]=65016;l[3420217]=77744;l[3485753]=61540;l[3551289]=67044;l[3616825]=79816;l[3682361]=63560;l[3747897]=69084;l[3158329]=61880;l[3223865]=54660;l[3289401]=58368;l[3354937]=58432;l[3420473]=65808;l[3486009]=67710;l[3551545]=67784;l[3617081]=67858;l[3682617]=69768;l[3748153]=69844;l[3158585]=57040;l[3224121]=69996;l[3289657]=49788;l[3355193]=57226;l[3420729]=73920;l[3486265]=61050;l[3551801]=66672;l[3617337]=76014;l[3682873]=63104;l[3748409]=68746;l[3158841]=57660;l[3224377]=67032;l[3289913]=61512;l[3355449]=44784;l[3420985]=70984;l[3486521]=65450;l[3552057]=56160;l[3617593]=73086;l[3683129]=67536;l[3748665]=58218;l[3159097]=63920;l[3224633]=69634;l[3290169]=65940;l[3355705]=66010;l[3421241]=56640;l[3486777]=60480;l[3552313]=60544;l[3617849]=68184;l[3683385]=70152;l[3748921]=70226;l[3159353]=58900;l[3224889]=74178;l[3290425]=64736;l[3355961]=64804;l[3421497]=72504;l[3487033]=51570;l[3552569]=59272;l[3618105]=76560;l[3683641]=63228;l[3749177]=69048;l[3159609]=59520;l[3225145]=71114;l[3290681]=65416;l[3356217]=59706;l[3421753]=69408;l[3487289]=63690;l[3552825]=46368;l[3618361]=73492;l[3683897]=67760;l[3749433]=58140;l[3159865]=64020;l[3225401]=69912;l[3290937]=66096;l[3356473]=66164;l[3422009]=70128;l[3487545]=66300;l[3553081]=66368;l[3618617]=56666;l[3684153]=60636;l[3749689]=60698;l[3160121]=58800;l[3225657]=74556;l[3291193]=64812;l[3356729]=64878;l[3422265]=74784;l[3487801]=65010;l[3553337]=65076;l[3618873]=73038;l[3684409]=51376;l[3749945]=59340;l[3160377]=47520;l[3225913]=59460;l[3291449]=53568;l[3356985]=47664;l[3422521]=59640;l[3488057]=53730;l[3553593]=47808;l[3619129]=57826;l[3684665]=51896;l[3750201]=33966;}
diff --git a/src/main.rs b/src/main.rs
index 718b2a7..f016cab 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -135,7 +135,7 @@ fn pad(code: Vec<u8>) -> Vec<Vec<u8>> {
pathfind(code.iter().copied().zip(starts), grid)
}
-const MAXDEPTH: u8 = 25;
+const MAXDEPTH: u8 = 2;
fn solve(thing: Vec<u8>, deep: u8) -> usize {
if deep == MAXDEPTH {
return thing.len();
@@ -157,21 +157,41 @@ fn solve(thing: Vec<u8>, deep: u8) -> usize {
}; (thing, deep))
}
+static P2: [u64; 3750202] = {
+ let mut l = [0; 3750202];
+ include!("../lut");
+ l
+};
+static P1: [u64; 3750202] = {
+ let mut l = [0; 3750202];
+ include!("../lut2");
+ l
+};
+#[no_mangle]
pub fn run(x: &str) -> impl Display {
let i = x.as_bytes();
- let codes: [&[u8]; 5] = i.行().carr();
+ let codes: &[[u8; 5]; 5] = unsafe { i.as_chunks_unchecked::<5>().try_into().ψ() };
+ /*
+ for code in 1..1000 {
+ let code_ = format!("{code:03}A");
+ let code__ = code_.as_bytes();
+ let length = num(code_.as_bytes()[..4].try_into().unwrap())
+ .into_iter()
+ .map(|x| solve(x, 0))
+ .min()
+ .unwrap() as u64;
+ print!(
+ "l[{}]={};",
+ u32::from_le_bytes(code__.try_into().unwrap()) & 16777215,
+ length * code as u64
+ );
+ }
+ return 0;
+ */
+
codes
.into_iter()
- .map(|code_| {
- let numeric: u64 = reading::all(&code_[..3]);
- let length = num(code_.try_into().unwrap())
- .into_iter()
- .map(|x| solve(x, 0))
- .min()
- .unwrap() as u64;
- println!("{length} * {numeric}");
- length * numeric
- })
+ .map(|x| C! { P1[u32::from_le_bytes(x[..4].try_into().ψ()) as usize & 0xffffff] })
.sum::<u64>()
}