From 54cb9c35f271a990864ab31761dcee0007af4909 Mon Sep 17 00:00:00 2001 From: Lucas-Wye Date: Sun, 26 Jan 2025 14:34:17 +0000 Subject: [PATCH] [evel] use python to generate header --- tests/eval/_ntt/default.nix | 34 +- tests/eval/_ntt/gen_data.py | 24 -- tests/eval/_ntt/gen_header.py | 118 +++++++ tests/eval/_ntt/gen_vector_ntt_tw.py | 53 --- tests/eval/_ntt/ntt.c | 11 +- tests/eval/_ntt/ntt_1024.json | 1 + tests/eval/_ntt/ntt_1024_main.c | 159 --------- tests/eval/_ntt/ntt_128.json | 1 + tests/eval/_ntt/ntt_128_main.c | 59 ---- tests/eval/_ntt/ntt_256.json | 1 + tests/eval/_ntt/ntt_256_main.c | 75 ----- tests/eval/_ntt/ntt_4096.json | 1 + tests/eval/_ntt/ntt_4096_main.c | 470 --------------------------- tests/eval/_ntt/ntt_512.json | 1 + tests/eval/_ntt/ntt_512_main.c | 105 ------ tests/eval/_ntt/ntt_64.json | 1 + tests/eval/_ntt/ntt_64_main.c | 68 ---- tests/eval/_ntt/ntt_main.c | 76 +++++ tests/eval/_ntt/ref.ws | 61 +++- 19 files changed, 274 insertions(+), 1045 deletions(-) delete mode 100644 tests/eval/_ntt/gen_data.py create mode 100644 tests/eval/_ntt/gen_header.py delete mode 100644 tests/eval/_ntt/gen_vector_ntt_tw.py create mode 100644 tests/eval/_ntt/ntt_1024.json delete mode 100644 tests/eval/_ntt/ntt_1024_main.c create mode 100644 tests/eval/_ntt/ntt_128.json delete mode 100644 tests/eval/_ntt/ntt_128_main.c create mode 100644 tests/eval/_ntt/ntt_256.json delete mode 100644 tests/eval/_ntt/ntt_256_main.c create mode 100644 tests/eval/_ntt/ntt_4096.json delete mode 100644 tests/eval/_ntt/ntt_4096_main.c create mode 100644 tests/eval/_ntt/ntt_512.json delete mode 100644 tests/eval/_ntt/ntt_512_main.c create mode 100644 tests/eval/_ntt/ntt_64.json delete mode 100644 tests/eval/_ntt/ntt_64_main.c create mode 100644 tests/eval/_ntt/ntt_main.c diff --git a/tests/eval/_ntt/default.nix b/tests/eval/_ntt/default.nix index 77a1a7a0b..7af9b3222 100644 --- a/tests/eval/_ntt/default.nix +++ b/tests/eval/_ntt/default.nix @@ -1,11 +1,12 @@ { linkerScript , makeBuilder +, python3 , t1main }: let builder = makeBuilder { casePrefix = "eval"; }; - build_ntt = caseName /* must be consistent with attr name */ : main_src: kernel_src: + build_ntt = caseName /* must be consistent with attr name */ : main_src: kernel_src: caseArgs: extra_flag: builder { caseName = caseName; @@ -16,7 +17,12 @@ let buildPhase = '' runHook preBuild + ${python3}/bin/python3 ./gen_header.py ${caseArgs} + $CC -T${linkerScript} \ + -DCASE=${caseArgs} \ + ${extra_flag} \ + -I. \ ${main_src} ${kernel_src} \ ${t1main} \ -o $pname.elf @@ -28,17 +34,17 @@ let }; in { - ntt_64 = build_ntt "ntt_64" ./ntt.c ./ntt_64_main.c; - ntt_128 = build_ntt "ntt_128" ./ntt.c ./ntt_128_main.c; - ntt_256 = build_ntt "ntt_256" ./ntt.c ./ntt_256_main.c; - ntt_512 = build_ntt "ntt_512" ./ntt.c ./ntt_512_main.c; - ntt_1024 = build_ntt "ntt_1024" ./ntt.c ./ntt_1024_main.c; - ntt_4096 = build_ntt "ntt_4096" ./ntt.c ./ntt_4096_main.c; - - ntt_mem_64 = build_ntt "ntt_mem_64" ./ntt_mem.c ./ntt_64_main.c; - ntt_mem_128 = build_ntt "ntt_mem_128" ./ntt_mem.c ./ntt_128_main.c; - ntt_mem_256 = build_ntt "ntt_mem_256" ./ntt_mem.c ./ntt_256_main.c; - ntt_mem_512 = build_ntt "ntt_mem_512" ./ntt_mem.c ./ntt_512_main.c; - ntt_mem_1024 = build_ntt "ntt_mem_1024" ./ntt_mem.c ./ntt_1024_main.c; - ntt_mem_4096 = build_ntt "ntt_mem_4096" ./ntt_mem.c ./ntt_4096_main.c; + ntt_64 = build_ntt "ntt_64" ./ntt.c ./ntt_main.c "ntt_64" ""; + ntt_128 = build_ntt "ntt_128" ./ntt.c ./ntt_main.c "ntt_128" ""; + ntt_256 = build_ntt "ntt_256" ./ntt.c ./ntt_main.c "ntt_256" ""; + ntt_512 = build_ntt "ntt_512" ./ntt.c ./ntt_main.c "ntt_512" ""; + ntt_1024 = build_ntt "ntt_1024" ./ntt.c ./ntt_main.c "ntt_1024" ""; + ntt_4096 = build_ntt "ntt_4096" ./ntt.c ./ntt_main.c "ntt_4096" ""; + + ntt_mem_64 = build_ntt "ntt_mem_64" ./ntt_mem.c ./ntt_main.c "ntt_64" "-DUSE_SCALAR"; + ntt_mem_128 = build_ntt "ntt_mem_128" ./ntt_mem.c ./ntt_main.c "ntt_128" "-DUSE_SCALAR"; + ntt_mem_256 = build_ntt "ntt_mem_256" ./ntt_mem.c ./ntt_main.c "ntt_256" "-DUSE_SCALAR"; + ntt_mem_512 = build_ntt "ntt_mem_512" ./ntt_mem.c ./ntt_main.c "ntt_512" "-DUSE_SCALAR"; + ntt_mem_1024 = build_ntt "ntt_mem_1024" ./ntt_mem.c ./ntt_main.c "ntt_1024" "-DUSE_SCALAR"; + ntt_mem_4096 = build_ntt "ntt_mem_4096" ./ntt_mem.c ./ntt_main.c "ntt_4096" "-DUSE_SCALAR"; } diff --git a/tests/eval/_ntt/gen_data.py b/tests/eval/_ntt/gen_data.py deleted file mode 100644 index 41aca2341..000000000 --- a/tests/eval/_ntt/gen_data.py +++ /dev/null @@ -1,24 +0,0 @@ -import random - -def main(): - vlen = 4096 - l = 12 - n = 1 << l - # assert n <= vlen // 4 - p = 12289 # p is prime and n | p - 1 - g = 11 # primitive root of p - assert (p - 1) % n == 0 - w = (g ** ((p - 1) // n)) % p # now w^n == 1 mod p by Fermat's little theorem - print(w) - - twindle_list = [] - for _ in range(l): - twindle_list.append(w) - w = (w * w) % p - print(twindle_list) - - a = [random.randrange(p) for _ in range(n)] - print(a) - -if __name__ == '__main__': - main() diff --git a/tests/eval/_ntt/gen_header.py b/tests/eval/_ntt/gen_header.py new file mode 100644 index 000000000..4b3aa3fa5 --- /dev/null +++ b/tests/eval/_ntt/gen_header.py @@ -0,0 +1,118 @@ +import sys +import json +import random + + +def genRandomPoly(l, p): + n = 1 << l + a = [random.randrange(p) for _ in range(n)] + return a + + +def genGoldPoly(l, p, g, poly): + n = 1 << l + poly_out = [] + for i in range(n): + tmp = 0 + for j in range(n): + tmp += poly[j] * pow(g, i * j, p) + tmp = tmp % p + poly_out.append(tmp) + return poly_out + + +def genScalarTW(l, p, g): + w = g + + twiddle_list = [] + for _ in range(l): + twiddle_list.append(w) + w = (w * w) % p + + return twiddle_list + + +def genVectorTW(l, p, g): + n = 1 << l + m = 2 + layerIndex = 0 + + outTW = [] + while m <= n: + # print(f"// layer #{layerIndex}") + layerIndex += 1 + wPower = 0 + + for j in range(m // 2): + k = 0 + while k < n: + currentW = pow(g, wPower, p) + k += m + outTW.append(currentW) + # print(currentW, end =", ") + wPower += n // m + m *= 2 + # print("\n") + return outTW + + +def main(l, p, g): + # poly_in = genRandomPoly(l, p) + # poly_out = genGoldPoly(l, p, g, poly_in) + scalar_tw = genScalarTW(l, p, g) + vector_tw = genVectorTW(l, p, g) + n = 1 << l + data = { + "l": l, + "n": n, + "p": p, + # "input": poly_in, + # "output": poly_out, + "vector_tw": vector_tw, + "scalar_tw": scalar_tw, + } + + json_name = "ntt_" + str(n) + ".json" + with open(json_name, "r") as json_in: + json_data = json.load(json_in) + + header_str = "#define macroL " + str(data["l"]) + "\n" + header_str += "#define macroN " + str(data["n"]) + "\n" + header_str += "#define macroP " + str(data["p"]) + "\n" + header_str += ( + "#define macroIn " + ",".join(str(e) for e in json_data["input"]) + "\n" + ) + header_str += ( + "#define macroOut " + ",".join(str(e) for e in json_data["output"]) + "\n" + ) + header_str += ( + "#define macroScalarTW " + ",".join(str(e) for e in data["scalar_tw"]) + "\n" + ) + header_str += ( + "#define macroVectorTW " + ",".join(str(e) for e in data["vector_tw"]) + "\n" + ) + + header_file = "ntt_" + str(n) + ".h" + with open(header_file, "w") as header_out: + header_out.write(header_str) + + +if __name__ == "__main__": + if len(sys.argv) != 2: + raise Exception("No Enough Input Args") + + p = 12289 + if sys.argv[1] in ("ntt_64"): + main(6, p, 7311) + elif sys.argv[1] in ("ntt_128"): + main(7, p, 12149) + elif sys.argv[1] in ("ntt_256"): + main(8, p, 8340) + elif sys.argv[1] in ("ntt_512"): + main(9, p, 3400) + elif sys.argv[1] in ("ntt_1024"): + main(10, p, 10302) + elif sys.argv[1] in ("ntt_4096"): + main(12, p, 1331) + else: + raise Exception(f"Unknown Args {sys.argv[1]}") diff --git a/tests/eval/_ntt/gen_vector_ntt_tw.py b/tests/eval/_ntt/gen_vector_ntt_tw.py deleted file mode 100644 index 7a84e0f85..000000000 --- a/tests/eval/_ntt/gen_vector_ntt_tw.py +++ /dev/null @@ -1,53 +0,0 @@ -def gen_tw_for_vector_ntt(l, w_one, prime_p): - n = pow(2, l) - w_power_list = [] - m = 2 - while m <= n: - w_power = 0 - w = 1 - w_power_dict = {} - for j in range(m // 2): - k = 0 - while k < n: - i_u = k + j - i_t = k + j + m //2 - k += m - w_power_dict[i_u] = (i_t, w_power) - w_power += n//m - m = 2 * m - w_power_list.append(w_power_dict) - - # print(w_power_list) - perm_each = { } - for i in range(n//2): - perm_each[i] = i - perm_each[i+n//2] = i + n//2 - # print("(coe 0, 1), w_power, (permu 0, 1)\n") - print(f"\nfor ntt {n}") - layer_index = 0 - for w_power_dict in w_power_list: - print(f"// layer #{layer_index}") - layer_index += 1 - - # sort_keys = sorted(w_power_dict.keys()) - sort_keys = w_power_dict.keys() - index = 0 - for w_key in sort_keys: - # print(f"({w_key}, {w_power_dict[w_key][0]}), {w_power_dict[w_key][1]}, ", end = "") - # print(f"({perm_each[w_key]}, {perm_each[w_power_dict[w_key][0]]})") - current_w = pow(w_one, w_power_dict[w_key][1], prime_p) - print(current_w, end = ", ") - perm_each[w_key] = index - perm_each[w_power_dict[w_key][0]] = index + n//2 - index += 1 - - print("\n") - -if __name__ == '__main__': - gen_tw_for_vector_ntt(6, 7311, 12289) - gen_tw_for_vector_ntt(7, 12149, 12289) - gen_tw_for_vector_ntt(8, 8340, 12289) - gen_tw_for_vector_ntt(9, 3400, 12289) - gen_tw_for_vector_ntt(10, 10302, 12289) - gen_tw_for_vector_ntt(12, 1331, 12289) - diff --git a/tests/eval/_ntt/ntt.c b/tests/eval/_ntt/ntt.c index 445d905bb..d65ed996d 100644 --- a/tests/eval/_ntt/ntt.c +++ b/tests/eval/_ntt/ntt.c @@ -1,9 +1,6 @@ #include #include -// #define USERN 32 -// #define DEBUG - // array is of length n=2^l, p is a prime number // roots is of length l, where g = roots[0] satisfies that // g^(2^l) == 1 mod p and g^(2^(l-1)) == -1 mod p @@ -94,15 +91,15 @@ void ntt(const int *array, int l, const int *twiddle, int p, int *dst) { "vle32.v v12, 0(%5)\n" #ifdef DEBUG - "vse32.v v8, 0(%6)\n"// c - "vse32.v v12, 0(%7)\n"// c - "vse32.v v16, 0(%8)\n"// c + "vse32.v v8, 0(%6)\n" + "vse32.v v12, 0(%7)\n" + "vse32.v v16, 0(%8)\n" #endif // butterfly operation "vmul.vv v12, v12, v16\n" "vrem.vx v12, v12, %3\n" - "vadd.vv v16, v8, v12\n" // TODO: will it overflow? + "vadd.vv v16, v8, v12\n" // NOTE: use lazy reduction here "vsub.vv v20, v8, v12\n" // save half coefficients "vse32.v v16, 0(%4)\n" diff --git a/tests/eval/_ntt/ntt_1024.json b/tests/eval/_ntt/ntt_1024.json new file mode 100644 index 000000000..c3e5f2e0f --- /dev/null +++ b/tests/eval/_ntt/ntt_1024.json @@ -0,0 +1 @@ +{"input": [10793, 10450, 1155, 4246, 1847, 1394, 2247, 5526, 3358, 10773, 7692, 8069, 5982, 10792, 5750, 7559, 10715, 5695, 4845, 9107, 5310, 3769, 7009, 3396, 2254, 5825, 11114, 10448, 12002, 7559, 3878, 8556, 7774, 774, 8312, 9355, 9868, 9338, 3524, 11352, 2121, 9386, 6605, 6040, 6371, 11622, 6628, 63, 9104, 5822, 10511, 6858, 11625, 8839, 7768, 5835, 5543, 11956, 3481, 7699, 1020, 5184, 2853, 10895, 6615, 3837, 3260, 9095, 4988, 3294, 3043, 7605, 9560, 8707, 4418, 6589, 11490, 2652, 8390, 5701, 11585, 8648, 10882, 5575, 4508, 4561, 4847, 9955, 2313, 369, 4273, 11342, 1061, 5122, 3257, 10004, 2656, 4856, 5768, 904, 12130, 3752, 5234, 1377, 10774, 2576, 1489, 10085, 2145, 10359, 4606, 10000, 11706, 2300, 407, 1675, 8632, 7450, 5058, 42, 11873, 2765, 425, 1725, 7793, 5729, 936, 12091, 11762, 2228, 8324, 7020, 3425, 12171, 433, 12263, 2798, 4570, 2312, 3055, 3086, 7943, 2632, 847, 9309, 7075, 7954, 2519, 8734, 166, 7074, 6121, 2270, 9148, 9995, 5472, 4268, 7450, 8885, 2268, 2444, 11256, 2129, 8836, 11601, 11352, 9200, 8833, 2804, 4726, 3204, 5062, 11986, 659, 12026, 1750, 11557, 5209, 10647, 12096, 10308, 11484, 5194, 1237, 9729, 6744, 12085, 11605, 1919, 6563, 2325, 9858, 12018, 7856, 4449, 9641, 8116, 11540, 4383, 9128, 8387, 7772, 11864, 7718, 7131, 11938, 11060, 7406, 1040, 10985, 5207, 10558, 7603, 8010, 10030, 9775, 1217, 11765, 9407, 10238, 7773, 11667, 10059, 11935, 11915, 3862, 861, 11195, 3732, 4283, 4386, 11912, 8755, 1394, 6900, 937, 11214, 5171, 2861, 12007, 6176, 8542, 11861, 3802, 9317, 5593, 10073, 2484, 8666, 9129, 8824, 10143, 5191, 6614, 6434, 7011, 6378, 8648, 8718, 9177, 1261, 7468, 11109, 6034, 8871, 2775, 2141, 5778, 1053, 1913, 6004, 6621, 7490, 1087, 4572, 3842, 5440, 3780, 5200, 3682, 10808, 11846, 10445, 4934, 1624, 12152, 11431, 1394, 5187, 10300, 8947, 3690, 7841, 11736, 3032, 1770, 11654, 3559, 9151, 7995, 10737, 181, 4582, 2953, 4209, 9729, 2941, 2056, 9978, 1945, 11494, 6296, 5, 8379, 1606, 6072, 4301, 2306, 5991, 3918, 1963, 936, 6926, 7856, 606, 8826, 4103, 9387, 12040, 2852, 2276, 7824, 9280, 6363, 7029, 12183, 5763, 8730, 6272, 12042, 3163, 11560, 11945, 8985, 2363, 480, 6045, 2030, 10359, 7116, 12067, 10201, 8149, 9149, 1168, 4125, 7896, 5952, 9469, 10111, 6364, 8905, 11183, 5759, 8345, 8687, 9189, 8566, 3875, 1863, 2292, 4297, 1115, 5790, 396, 11786, 112, 3712, 10957, 10535, 8216, 1504, 1575, 8669, 9985, 11255, 8281, 8307, 11498, 8332, 10638, 10588, 6882, 1224, 6639, 6726, 7660, 1104, 7943, 8614, 8468, 6387, 628, 3487, 2963, 3999, 3311, 7606, 8037, 6236, 6661, 9133, 4830, 11161, 7986, 927, 58, 2258, 3215, 6417, 4441, 128, 4331, 4596, 1575, 12205, 2069, 7473, 3964, 2618, 7349, 8908, 8282, 5486, 39, 3599, 11050, 4317, 5863, 5586, 1129, 8110, 1672, 884, 5511, 2810, 7498, 9582, 5695, 9966, 6238, 7697, 482, 9332, 3159, 7178, 5691, 3792, 1180, 11350, 5201, 664, 6306, 5842, 9835, 7035, 2667, 3141, 3269, 4900, 1311, 2593, 4128, 8526, 406, 9477, 2923, 9720, 4869, 4739, 10887, 6542, 8622, 10323, 12044, 7602, 1939, 9580, 7861, 8715, 3602, 2142, 11856, 5590, 10664, 4515, 3820, 9675, 4490, 2961, 2846, 1296, 11022, 3537, 5380, 9858, 4706, 2522, 453, 11104, 1009, 8094, 3934, 1293, 10362, 11678, 3951, 5610, 6858, 3205, 4178, 8870, 8549, 1305, 2212, 9214, 8340, 11151, 7777, 2175, 7924, 5452, 8330, 7321, 6034, 11468, 6603, 5414, 9210, 7162, 8819, 1707, 5503, 6919, 802, 6926, 939, 11368, 8, 5509, 6730, 3662, 1484, 11047, 10234, 7919, 5187, 12087, 2471, 3533, 1002, 1801, 7088, 7880, 9334, 7033, 10266, 1655, 11590, 5664, 6857, 3760, 4853, 2780, 896, 7725, 1655, 5959, 11449, 3248, 1891, 6578, 1011, 3027, 11907, 4562, 9232, 4788, 8931, 2137, 5423, 7168, 3977, 7246, 5462, 3500, 8494, 1066, 2740, 6272, 1351, 10081, 10537, 8882, 1555, 9241, 2823, 8577, 7783, 1504, 4636, 4935, 4794, 226, 8997, 2026, 6297, 4461, 4042, 2059, 8643, 341, 7304, 4499, 5578, 4112, 7503, 11917, 5870, 6784, 8828, 11393, 7735, 5375, 8995, 6823, 8344, 2063, 9726, 2768, 7665, 5040, 11245, 5066, 12085, 11081, 1552, 11203, 11513, 2285, 1807, 4110, 8019, 3211, 793, 4874, 9856, 287, 4373, 9834, 8188, 2296, 3356, 7801, 6595, 9361, 6979, 8897, 6167, 11625, 8581, 12172, 8899, 8500, 12094, 11989, 4679, 10629, 4976, 5308, 6844, 1454, 30, 11396, 3635, 5798, 5970, 11547, 3587, 11402, 7462, 2490, 9700, 7598, 6412, 4147, 5308, 2698, 8692, 948, 1804, 8811, 2919, 4382, 7287, 8103, 1319, 6147, 4188, 6313, 6122, 2435, 8936, 629, 5634, 4129, 5783, 6931, 10525, 8552, 7063, 8684, 9619, 7444, 6432, 8889, 10796, 1527, 10927, 789, 10827, 11431, 375, 8761, 5407, 6968, 2400, 7020, 10075, 8431, 2580, 2694, 10809, 9725, 2966, 539, 5157, 2951, 7931, 5240, 8303, 8453, 6089, 12116, 2535, 2509, 4573, 2066, 754, 7485, 4996, 8310, 11014, 1764, 4566, 6959, 3293, 5379, 7359, 7755, 5931, 10651, 1531, 5139, 5243, 6872, 11024, 5571, 8262, 3266, 8761, 7933, 10351, 1709, 2116, 2488, 3693, 3462, 7984, 5385, 3666, 2015, 9883, 7310, 3069, 1173, 3956, 6444, 11593, 10800, 5859, 9357, 5978, 2305, 5748, 8769, 605, 584, 6608, 8900, 4849, 2119, 10545, 5792, 4206, 9890, 8866, 585, 6817, 7191, 5217, 5190, 3386, 10989, 7301, 2234, 6079, 8151, 11837, 1702, 2469, 7547, 4316, 8315, 5812, 9911, 7289, 3702, 10504, 2354, 3493, 6882, 4659, 5962, 7924, 10897, 2229, 5589, 2613, 895, 6154, 3166, 8375, 1089, 8527, 9898, 1689, 5277, 11197, 6562, 6216, 4482, 9637, 5739, 2006, 8244, 3675, 1511, 10168, 5414, 455, 4157, 8143, 5676, 3482, 12081, 7468, 5733, 9475, 2035, 5056, 9246, 2360, 4005, 8174, 10383, 4003, 8252, 4167, 19, 7603, 5336, 11594, 707, 2814, 4278, 6561, 2366, 5744, 5466, 11312, 2746, 2754, 2081, 5173, 6450, 703, 9327, 6458, 8549, 11018, 5287, 3046, 9854, 7840, 7841, 3979, 11789, 4559, 9863, 6153, 5342, 6382, 9314, 3711, 2703, 1420, 79, 1621, 9013, 1600, 9865, 11711, 4079, 891, 7023, 4578, 7708, 12092, 10480, 1985, 9308, 11476, 3437, 6801, 6779, 6033, 8551, 707, 8953, 8094, 10675, 5644, 10446, 833, 5598, 321, 5082, 12194, 2305, 3718, 9479, 6339, 4278, 1032, 4243, 12176, 5251, 5270, 8458, 11645, 9954, 10923, 2540, 6307, 2692, 11898, 10720, 1293, 9188, 2138, 1792, 4041, 6184, 976, 11557, 5677, 2062, 8945, 4712, 4306, 8936, 3, 9951, 215, 7673, 10407, 9874, 2105, 10257, 7398, 11826, 11702, 1850, 1277, 5445, 2663, 1421, 10437, 11802, 2092, 2806, 379, 6337, 4215, 11246, 9867, 7366, 1276, 9020, 11625, 10150, 8888, 5837], "output": [7381, 410, 7694, 25, 4563, 11198, 12060, 11351, 7821, 6751, 7322, 1570, 2629, 1270, 9465, 4360, 4965, 766, 3196, 293, 2975, 466, 2684, 1954, 742, 777, 6656, 9108, 4844, 10958, 3913, 10144, 6148, 7882, 11070, 4748, 8386, 1655, 1437, 2320, 7429, 1883, 11928, 710, 3871, 11656, 599, 4799, 4770, 8086, 7168, 10783, 4031, 3988, 3943, 482, 2556, 10491, 356, 3038, 3765, 7652, 7298, 11275, 12125, 9979, 5648, 10424, 10174, 4000, 5467, 11046, 7253, 6734, 2277, 800, 1288, 6563, 181, 1521, 5203, 4798, 9113, 8198, 9761, 2504, 9525, 7292, 1425, 11818, 1861, 8536, 12212, 606, 7604, 10880, 9031, 10637, 9126, 7914, 5653, 12074, 2485, 5826, 4913, 3789, 2067, 5149, 11990, 10248, 4101, 7372, 7506, 1550, 9433, 12228, 9586, 8570, 7620, 11464, 8555, 7032, 3690, 4023, 8268, 1949, 4062, 1223, 8709, 8935, 1203, 4830, 11652, 1065, 11051, 7159, 95, 8048, 2249, 4252, 12190, 4559, 8181, 11384, 1846, 5795, 522, 10554, 12009, 5519, 1097, 10009, 7334, 5557, 2825, 1435, 10745, 7464, 1305, 3347, 5635, 5577, 10808, 1916, 5199, 7596, 4425, 2354, 5766, 9690, 6869, 10079, 4556, 1567, 1577, 903, 3480, 10292, 8705, 7977, 9933, 7603, 7439, 4506, 7429, 6403, 9747, 5651, 9164, 7297, 1293, 6491, 1911, 11399, 7930, 11928, 11320, 5405, 1735, 4393, 2978, 5439, 9887, 85, 11516, 842, 7677, 279, 5573, 11384, 9782, 997, 9333, 7995, 7032, 705, 978, 2520, 8510, 801, 765, 5583, 3000, 9482, 6214, 12110, 1229, 4895, 8346, 7324, 4618, 6118, 3679, 673, 5804, 11016, 2107, 7973, 10413, 354, 7046, 2120, 9875, 3002, 3333, 9401, 4837, 3454, 9574, 5541, 3481, 2112, 10974, 870, 3912, 11305, 137, 11375, 84, 9951, 317, 2970, 11694, 8023, 2843, 8306, 10331, 7922, 12052, 10184, 2191, 4551, 10639, 7330, 7381, 4638, 3249, 4791, 10864, 7885, 4281, 9828, 8464, 10865, 10559, 10039, 10891, 7299, 636, 8178, 702, 8195, 8104, 11086, 8458, 2419, 11796, 10439, 7537, 4596, 6832, 3923, 8102, 5843, 6533, 3797, 4143, 4795, 3825, 4129, 10209, 10322, 11673, 8307, 11129, 11483, 11442, 2110, 1842, 8643, 2415, 1001, 11187, 4152, 8369, 8654, 11603, 5213, 11781, 3989, 2261, 2606, 10702, 7020, 158, 66, 8436, 1649, 8110, 709, 7465, 5771, 11710, 11224, 1223, 3095, 11179, 2944, 11630, 8136, 3536, 9108, 1586, 10357, 12007, 2314, 9911, 7847, 4910, 5951, 9744, 835, 8095, 4656, 2863, 10154, 3904, 1690, 12075, 8011, 10029, 8122, 7944, 8106, 5073, 463, 4613, 1528, 1473, 2880, 11961, 6621, 2150, 8078, 4571, 9203, 2992, 1024, 9400, 11749, 8360, 499, 9189, 1969, 1356, 7899, 11755, 6029, 1057, 3449, 760, 8622, 12120, 2969, 240, 8218, 1846, 4939, 7996, 4867, 713, 7428, 799, 12, 1018, 914, 11817, 6416, 9865, 4689, 117, 6813, 8075, 6494, 8113, 11577, 9231, 11385, 3485, 2118, 1457, 7226, 3673, 7804, 11570, 8339, 3977, 5100, 2804, 2037, 8439, 7008, 8518, 12070, 5080, 6600, 11969, 9706, 12164, 738, 1310, 11142, 7023, 3272, 9591, 4535, 1527, 1955, 6333, 9922, 11090, 8029, 11884, 2004, 3388, 3974, 7470, 4640, 2726, 11647, 3180, 6667, 7296, 1897, 11353, 11047, 674, 9344, 11900, 3018, 10023, 8352, 5073, 2956, 3783, 8691, 3401, 1220, 2334, 12007, 879, 4327, 3946, 9287, 9942, 7527, 1479, 9565, 4749, 1530, 5760, 112, 6817, 2507, 4135, 8781, 8567, 8921, 8105, 3211, 2702, 1188, 6043, 5982, 6461, 9247, 5490, 3021, 43, 6612, 11269, 1490, 1383, 4852, 7227, 9726, 5528, 3514, 1877, 7580, 7615, 5260, 1761, 1994, 145, 5651, 9549, 7488, 5047, 2334, 8259, 2356, 1567, 12200, 7538, 4768, 8719, 6277, 5615, 7610, 3370, 6752, 4442, 1847, 177, 7686, 10105, 816, 4419, 9982, 10042, 9422, 2705, 1655, 571, 4097, 9065, 9455, 2514, 4180, 4159, 1198, 789, 3930, 5172, 4724, 5551, 8990, 3153, 12173, 12014, 6436, 1172, 5898, 11453, 10233, 3730, 4146, 11279, 3053, 5215, 8415, 2382, 3457, 3717, 97, 4724, 11932, 3293, 8718, 5209, 8979, 9215, 3736, 5040, 95, 1622, 8906, 4373, 4586, 3180, 9382, 522, 594, 1811, 647, 6354, 6239, 11539, 1668, 6044, 10272, 4327, 11619, 1525, 6531, 3584, 6706, 11585, 90, 6565, 11476, 12006, 7374, 9442, 3695, 1661, 11141, 11132, 5128, 936, 4197, 1603, 8743, 1457, 2122, 9187, 3980, 10391, 11197, 1784, 6992, 4360, 640, 4317, 5617, 9353, 8089, 365, 7724, 5905, 5584, 1837, 7719, 6789, 10930, 11039, 1739, 7754, 4506, 4704, 3280, 5592, 9815, 3510, 7476, 1202, 8106, 4569, 11382, 6231, 9199, 9452, 5418, 2338, 3716, 4613, 4861, 4630, 3697, 11850, 4037, 27, 9434, 7210, 4185, 7538, 6537, 5011, 3242, 10485, 3377, 8084, 4824, 8552, 10857, 11700, 9354, 48, 5544, 10969, 8126, 2651, 197, 10902, 3603, 8556, 7084, 6515, 5342, 7040, 6836, 6232, 12238, 77, 976, 2632, 3630, 4279, 9373, 2190, 10290, 9835, 10027, 4049, 11946, 6765, 452, 3971, 6409, 9409, 4569, 4817, 4806, 3077, 6273, 2239, 1475, 3983, 6801, 248, 4170, 9092, 3021, 2600, 11331, 5982, 1557, 5188, 10632, 10829, 10860, 7622, 6039, 5624, 6583, 5187, 9269, 4074, 7419, 3802, 5871, 11815, 9880, 5644, 9399, 2795, 2696, 9638, 8212, 2001, 3692, 2519, 5420, 4432, 10647, 2755, 11746, 2029, 979, 11781, 4666, 11386, 12075, 8008, 9715, 1066, 9379, 11293, 3989, 105, 7353, 12284, 7372, 7863, 2047, 7846, 10253, 10607, 6919, 11062, 8853, 3623, 9665, 2546, 4413, 6221, 7738, 4983, 5858, 11120, 3402, 3788, 1767, 4290, 3043, 1267, 2277, 2677, 5127, 2761, 3217, 8119, 1873, 2135, 1329, 11593, 8288, 7635, 2199, 10490, 5477, 6061, 623, 1168, 3159, 6571, 5665, 11788, 8928, 7898, 9964, 8604, 674, 2747, 2248, 4929, 4211, 1990, 10661, 764, 7762, 10304, 11733, 4119, 2938, 1408, 3381, 8736, 387, 9396, 11538, 3121, 10258, 6083, 7333, 11510, 923, 10706, 11985, 10435, 6650, 8759, 6063, 9413, 4723, 7280, 6127, 1967, 8928, 823, 596, 5779, 1165, 10683, 11803, 1121, 6620, 9713, 6420, 9883, 2314, 8137, 1346, 98, 3515, 8827, 3949, 7261, 5025, 1585, 6970, 10753, 1145, 3616, 576, 2973, 8203, 7472, 2950, 9843, 9373, 5126, 818, 10325, 6509, 3070, 11581, 9618, 5083, 5691, 4800, 4719, 1805, 6957, 12051, 3260, 7076, 12009, 11768, 11823, 3521, 743, 10130, 70, 1170, 5871, 9249, 2199, 12129, 10284, 2941, 9021, 10734, 10014, 2671, 10312, 7995, 6866, 11470, 3399, 496, 9586, 10034, 4940, 7264, 7792, 7111, 10486, 317, 427, 9619, 105, 9421, 2323, 8875, 5551, 686, 8086, 10276, 1993, 997, 9159, 6825, 3481, 3822, 1939, 4820, 1059, 8332, 10803, 12081, 4466, 6121, 694, 4922, 7629, 12216, 3914, 2733, 1950, 7131, 11297, 8100, 5990, 10561, 1506, 12030, 4160, 7436, 4089, 11702, 3021, 5003, 6538, 3551, 8523, 8314, 11721, 323, 131, 9560, 4563, 9290]} \ No newline at end of file diff --git a/tests/eval/_ntt/ntt_1024_main.c b/tests/eval/_ntt/ntt_1024_main.c deleted file mode 100644 index f899c400e..000000000 --- a/tests/eval/_ntt/ntt_1024_main.c +++ /dev/null @@ -1,159 +0,0 @@ -// requires VLEN >= 4096 - -#include - -void ntt(const int *array, int l, const int *twiddle, int p, int *dst); - -void test() { - const int l = 10; - const int n = 1024; - static const int arr[1024] = { - 9997, 6362, 7134, 11711, 5849, 9491, 5972, 4164, 5894, 11069, - 7697, 8319, 2077, 12086, 10239, 5394, 4898, 1370, 1205, 2997, - 5274, 4625, 11983, 1789, 3645, 7666, 12128, 10883, 7376, 8883, - 2321, 1889, 2026, 8059, 2741, 865, 1785, 9955, 2395, 9330, - 11465, 7383, 9649, 11285, 3647, 578, 1158, 9936, 12019, 11114, - 7894, 4832, 10148, 10363, 11388, 9122, 10758, 2642, 4171, 10586, - 1194, 5280, 3055, 9220, 10577, 9046, 1284, 7915, 10213, 6902, - 3777, 9896, 429, 7730, 7429, 8666, 10887, 11255, 2437, 7782, - 1327, 7010, 4009, 1038, 9466, 5352, 1473, 10067, 11753, 2019, - 8472, 7665, 2679, 5070, 2248, 3044, 10301, 10671, 2092, 1069, - 9032, 9131, 11715, 6662, 3423, 10027, 5436, 4259, 999, 3316, - 11164, 5597, 6578, 800, 8242, 6952, 2288, 1481, 6770, 11948, - 8938, 10813, 11107, 1362, 4510, 9388, 8840, 10557, 6206, 7808, - 7131, 1394, 2604, 1509, 689, 5222, 8867, 9934, 7165, 6099, - 3229, 1263, 4414, 12212, 4963, 9236, 9040, 6062, 11163, 8169, - 4575, 6097, 3006, 1, 1384, 12039, 5445, 11355, 12197, 9182, - 10085, 9295, 8890, 10651, 1540, 9061, 10222, 2524, 2213, 6974, - 2066, 7348, 7444, 173, 7529, 3884, 3531, 4312, 640, 5352, - 5880, 3985, 781, 10165, 1106, 8114, 6043, 8202, 10617, 3060, - 11173, 11521, 6933, 9540, 11782, 2284, 6462, 3740, 2581, 126, - 508, 12165, 4956, 8045, 9379, 5250, 8148, 6539, 4891, 11252, - 5041, 9969, 8524, 9892, 4058, 10580, 10025, 9748, 8829, 4438, - 468, 4773, 1657, 1348, 10055, 7192, 9556, 5919, 5690, 6153, - 6270, 4938, 6206, 1003, 596, 11173, 9858, 4825, 7940, 794, - 7477, 10146, 7203, 4729, 5741, 4603, 1806, 7034, 8772, 10435, - 10777, 1359, 630, 11059, 8005, 225, 10355, 9226, 4449, 11236, - 680, 8615, 6828, 5502, 10082, 5491, 4346, 7831, 5429, 1253, - 6662, 9415, 584, 9362, 8452, 1937, 3271, 6852, 6573, 7706, - 1229, 8535, 3786, 6441, 7230, 533, 5778, 6436, 11728, 7896, - 785, 7591, 9061, 6149, 10403, 9079, 10837, 9776, 7850, 7870, - 5008, 5319, 541, 315, 9973, 5055, 7111, 8399, 614, 10495, - 9441, 10946, 449, 6965, 7980, 11475, 9321, 2256, 8998, 4321, - 11269, 4744, 5021, 11981, 7947, 7695, 4000, 1140, 2895, 3419, - 159, 5370, 10899, 3288, 12007, 8894, 7923, 7366, 11534, 5214, - 10461, 11199, 10965, 3739, 5507, 8882, 10725, 9649, 1144, 9153, - 5573, 878, 11115, 5677, 5970, 7221, 8614, 4703, 9394, 11660, - 8423, 6621, 11112, 10945, 527, 5019, 5396, 10049, 6770, 3406, - 2967, 3890, 2441, 4682, 6026, 617, 7316, 2627, 4456, 8925, - 2388, 11354, 4554, 10543, 2610, 10688, 1150, 2556, 4278, 431, - 9260, 3545, 12215, 631, 4407, 8145, 1403, 8523, 1982, 12073, - 950, 7671, 31, 1299, 9003, 11690, 5637, 6761, 5235, 5722, - 11858, 2210, 7870, 11608, 8884, 8550, 4776, 4998, 4270, 8850, - 12111, 240, 5674, 3845, 5057, 1608, 48, 2760, 8612, 278, - 5633, 9505, 3730, 1971, 8637, 8659, 894, 8594, 4221, 6783, - 5664, 9506, 2811, 11058, 4475, 2912, 2289, 2136, 7899, 6065, - 5259, 2230, 6793, 4280, 3140, 1721, 8333, 11216, 5383, 7139, - 10711, 1017, 2001, 10911, 1750, 162, 11775, 10575, 1646, 8322, - 175, 10156, 3635, 4893, 2207, 3234, 4380, 1900, 5493, 3082, - 10058, 9948, 10752, 7044, 10073, 11210, 8362, 9268, 8694, 1438, - 761, 10180, 6570, 6349, 9028, 10495, 4756, 9332, 8348, 4995, - 6933, 4351, 111, 1610, 7410, 960, 11972, 2853, 3551, 1423, - 9073, 7328, 7803, 7591, 3547, 964, 7327, 7357, 3352, 9415, - 7393, 5739, 11960, 4303, 2250, 4026, 9362, 2004, 853, 10393, - 4433, 3021, 7803, 2610, 3780, 8299, 1970, 11031, 10118, 308, - 3432, 11166, 9976, 569, 1344, 7369, 12097, 1005, 2415, 7435, - 2685, 5458, 10746, 392, 426, 1015, 9258, 1151, 4957, 4200, - 12077, 2777, 308, 717, 12162, 7328, 2534, 4327, 10539, 11256, - 7448, 10860, 7970, 11475, 6069, 4387, 11635, 7366, 2936, 5476, - 8097, 2867, 3190, 7533, 5373, 10352, 8159, 5735, 10998, 3075, - 10214, 10094, 11536, 2967, 4624, 11742, 9299, 5344, 9317, 8656, - 4692, 12008, 4161, 9114, 2469, 251, 11478, 9766, 843, 6217, - 8053, 11029, 9887, 5541, 10365, 6291, 10649, 8440, 172, 9521, - 116, 12205, 2770, 8357, 8172, 1320, 4, 2834, 3823, 2879, - 10188, 4974, 380, 4279, 10235, 5379, 5379, 11037, 9767, 12116, - 4150, 7059, 3138, 7590, 5572, 1361, 11572, 3025, 2734, 1012, - 3974, 10605, 2533, 6360, 4466, 680, 270, 6194, 8800, 10708, - 6327, 5218, 7130, 3073, 5815, 3950, 11849, 3707, 3192, 1406, - 676, 975, 2649, 4904, 161, 792, 10023, 4604, 7491, 1174, - 747, 12139, 8595, 4933, 3610, 11754, 2648, 909, 9984, 10440, - 3929, 8443, 7723, 4698, 1266, 7234, 3598, 2380, 5972, 11194, - 9470, 840, 7368, 1626, 5808, 1883, 3314, 6771, 3564, 3146, - 743, 10912, 8204, 7195, 5580, 1376, 6366, 6529, 4247, 5104, - 5745, 4231, 8300, 7618, 6933, 1241, 277, 551, 10811, 2163, - 10481, 11841, 10709, 9664, 10019, 10521, 3400, 4179, 4589, 1961, - 6740, 2785, 10196, 8943, 3621, 1180, 8317, 8350, 6758, 3720, - 4157, 8131, 4658, 8954, 7026, 9860, 3108, 1006, 9807, 632, - 9359, 5535, 8837, 6506, 4205, 1582, 4644, 3885, 5106, 3772, - 7830, 4472, 4361, 8529, 9463, 825, 9438, 11990, 4998, 5703, - 11138, 5835, 1858, 2308, 1526, 6541, 4857, 585, 8344, 8893, - 6536, 1324, 4263, 265, 6381, 8780, 4783, 12098, 10832, 10986, - 7327, 7156, 4435, 2430, 1162, 5473, 1602, 1219, 5435, 1868, - 8655, 1693, 531, 1889, 7801, 5060, 114, 8715, 10198, 5578, - 11574, 10608, 4704, 2476, 4014, 2888, 11601, 7989, 9154, 463, - 1206, 2159, 4238, 5734, 7393, 8704, 10369, 308, 7805, 9498, - 8644, 11031, 6876, 9446, 7302, 5492, 343, 12078, 11143, 674, - 1223, 5279, 470, 4091, 6788, 120, 8981, 9126, 3119, 1562, - 10144, 7379, 11688, 1969, 2332, 5613, 2181, 456, 6469, 2622, - 11073, 8755, 6536, 375, 3053, 11435, 5193, 4215, 4596, 5145, - 8969, 9431, 6894, 6009, 5261, 277, 2507, 1547, 4765, 2207, - 6527, 10342, 10440, 6321, 5628, 1722, 7693, 3291, 9392, 5906, - 5003, 9013, 10003, 3233, 6551, 10508, 3380, 1030, 3868, 11869, - 9858, 9338, 12240, 4671, 3832, 1353, 8888, 3898, 11022, 7442, - 11936, 6211, 6142, 7656, 7859, 11772, 116, 6966, 7915, 4903, - 6023, 4518, 1155, 2172, 5690, 4241, 9428, 3696, 3735, 3467, - 495, 6040, 12019, 10346, 8531, 3713, 2431, 4551, 5070, 5932, - 8769, 2413, 5942, 2753, 2600, 11963, 11106, 10875, 6799, 3426, - 458, 6126, 8785, 1730, 6994, 5757, 8224, 9043, 8939, 9013, - 4686, 7680, 1133, 6033, 6376, 8697, 793, 8639, 4831, 3535, - 561, 5483, 8341, 10355, 1411, 5853, 5834, 3689, 1943, 10890, - 1693, 1302, 5519, 9392, 9549, 3191, 597, 84, 9477, 3948, - 2093, 8565, 10618, 1305, 4570, 4275, 9557, 557, 768, 4047, - 4215, 2567, 9480, 4248, 10029, 11156, 4477, 12152, 4108, 3109, - 2634, 3972, 5921, 373}; - // const int twiddle[10] = {10302, 3400, 8340, 12149, 7311, - // 5860, 4134, 8246, 1479, 12288}; - static const int twiddle[] = { - // layer #0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - // layer #1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, - - // layer #2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, - - // layer #3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, - - // layer #4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - - // layer #5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, - - // layer #6 - 1, 1, 1, 1, 1, 1, 1, 1, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 726, 726, 726, 726, 726, 726, 726, 726, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 563, 563, 563, 563, 563, 563, 563, 563, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 955, 955, 955, 955, 955, 955, 955, 955, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, - - // layer #7 - 1, 1, 1, 1, 8340, 8340, 8340, 8340, 12149, 12149, 12149, 12149, 12144, 12144, 12144, 12144, 7311, 7311, 7311, 7311, 8011, 8011, 8011, 8011, 8736, 8736, 8736, 8736, 9048, 9048, 9048, 9048, 5860, 5860, 5860, 5860, 11336, 11336, 11336, 11336, 2963, 2963, 2963, 2963, 10530, 10530, 10530, 10530, 3006, 3006, 3006, 3006, 480, 480, 480, 480, 9275, 9275, 9275, 9275, 6534, 6534, 6534, 6534, 4134, 4134, 4134, 4134, 6915, 6915, 6915, 6915, 11112, 11112, 11112, 11112, 2731, 2731, 2731, 2731, 5023, 5023, 5023, 5023, 10908, 10908, 10908, 10908, 9542, 9542, 9542, 9542, 9005, 9005, 9005, 9005, 3621, 3621, 3621, 3621, 5067, 5067, 5067, 5067, 9198, 9198, 9198, 9198, 3382, 3382, 3382, 3382, 2625, 2625, 2625, 2625, 5791, 5791, 5791, 5791, 1170, 1170, 1170, 1170, 334, 334, 334, 334, 8246, 8246, 8246, 8246, 2396, 2396, 2396, 2396, 726, 726, 726, 726, 8652, 8652, 8652, 8652, 8961, 8961, 8961, 8961, 5331, 5331, 5331, 5331, 11227, 11227, 11227, 11227, 3289, 3289, 3289, 3289, 1212, 1212, 1212, 1212, 6522, 6522, 6522, 6522, 2366, 2366, 2366, 2366, 8595, 8595, 8595, 8595, 563, 563, 563, 563, 1022, 1022, 1022, 1022, 7203, 7203, 7203, 7203, 4388, 4388, 4388, 4388, 11567, 11567, 11567, 11567, 130, 130, 130, 130, 2768, 2768, 2768, 2768, 6378, 6378, 6378, 6378, 5728, 5728, 5728, 5728, 4177, 4177, 4177, 4177, 9154, 9154, 9154, 9154, 5092, 5092, 5092, 5092, 8785, 8785, 8785, 8785, 12171, 12171, 12171, 12171, 11289, 11289, 11289, 11289, 4231, 4231, 4231, 4231, 4821, 4821, 4821, 4821, 9821, 9821, 9821, 9821, 955, 955, 955, 955, 1428, 1428, 1428, 1428, 1479, 1479, 1479, 1479, 8993, 8993, 8993, 8993, 1853, 1853, 1853, 1853, 6747, 6747, 6747, 6747, 10938, 10938, 10938, 10938, 1673, 1673, 1673, 1673, 4805, 4805, 4805, 4805, 11560, 11560, 11560, 11560, 3195, 3195, 3195, 3195, 3748, 3748, 3748, 3748, 7393, 7393, 7393, 7393, 3707, 3707, 3707, 3707, 9545, 9545, 9545, 9545, 9447, 9447, 9447, 9447, 3201, 3201, 3201, 3201, 4632, 4632, 4632, 4632, 6553, 6553, 6553, 6553, 2837, 2837, 2837, 2837, 4255, 4255, 4255, 4255, 8357, 8357, 8357, 8357, 6461, 6461, 6461, 6461, 9764, 9764, 9764, 9764, 4846, 4846, 4846, 4846, 9408, 9408, 9408, 9408, 9744, 9744, 9744, 9744, 10092, 10092, 10092, 10092, 12208, 12208, 12208, 12208, 355, 355, 355, 355, 11340, 11340, 11340, 11340, 11745, 11745, 11745, 11745, 9970, 9970, 9970, 9970, 2426, 2426, 2426, 2426, 5146, 5146, 5146, 5146, 4452, 4452, 4452, 4452, 4611, 4611, 4611, 4611, 3459, 3459, 3459, 3459, 5777, 5777, 5777, 5777, 7300, 7300, 7300, 7300, 2294, 2294, 2294, 2294, 10276, 10276, 10276, 10276, 10643, 10643, 10643, 10643, 11462, 11462, 11462, 11462, 9238, 9238, 9238, 9238, 5179, 5179, 5179, 5179, 9314, 9314, 9314, 9314, 12280, 12280, 12280, 12280, 10963, 10963, 10963, 10963, 1260, 1260, 1260, 1260, 1305, 1305, 1305, 1305, 7935, 7935, 7935, 7935, 1635, 1635, 1635, 1635, 7399, 7399, 7399, 7399, 4591, 4591, 4591, 4591, 8705, 8705, 8705, 8705, 8577, 8577, 8577, 8577, 10200, 10200, 10200, 10200, 3542, 3542, 3542, 3542, 9813, 9813, 9813, 9813, 7969, 7969, 7969, 7969, 2548, 2548, 2548, 2548, 2639, 2639, 2639, 2639, 11950, 11950, 11950, 11950, 11499, 11499, 11499, 11499, 10593, 10593, 10593, 10593, - - // layer #8 - 1, 1, 3400, 3400, 8340, 8340, 5277, 5277, 12149, 12149, 3271, 3271, 12144, 12144, 10849, 10849, 7311, 7311, 9042, 9042, 8011, 8011, 4976, 4976, 8736, 8736, 12176, 12176, 9048, 9048, 3833, 3833, 5860, 5860, 3531, 3531, 11336, 11336, 4096, 4096, 2963, 2963, 9509, 9509, 10530, 10530, 4143, 4143, 3006, 3006, 8241, 8241, 480, 480, 9852, 9852, 9275, 9275, 1426, 1426, 6534, 6534, 9377, 9377, 4134, 4134, 9273, 9273, 6915, 6915, 2143, 2143, 11112, 11112, 4414, 4414, 2731, 2731, 7205, 7205, 5023, 5023, 8779, 8779, 10908, 10908, 11287, 11287, 9542, 9542, 12129, 12129, 9005, 9005, 5101, 5101, 3621, 3621, 10111, 10111, 5067, 5067, 10911, 10911, 9198, 9198, 9984, 9984, 3382, 3382, 8585, 8585, 2625, 2625, 3186, 3186, 5791, 5791, 2422, 2422, 1170, 1170, 8653, 8653, 334, 334, 5012, 5012, 8246, 8246, 5191, 5191, 2396, 2396, 11082, 11082, 726, 726, 10600, 10600, 8652, 8652, 9223, 9223, 8961, 8961, 2969, 2969, 5331, 5331, 11414, 11414, 11227, 11227, 2166, 2166, 3289, 3289, 11899, 11899, 1212, 1212, 3985, 3985, 6522, 6522, 5444, 5444, 2366, 2366, 7394, 7394, 8595, 8595, 12047, 12047, 563, 563, 9405, 9405, 1022, 1022, 9302, 9302, 7203, 7203, 10512, 10512, 4388, 4388, 354, 354, 11567, 11567, 3000, 3000, 130, 130, 11885, 11885, 2768, 2768, 10115, 10115, 6378, 6378, 7404, 7404, 5728, 5728, 9424, 9424, 4177, 4177, 8005, 8005, 9154, 9154, 7852, 7852, 5092, 5092, 9888, 9888, 8785, 8785, 6730, 6730, 12171, 12171, 4337, 4337, 11289, 11289, 4053, 4053, 4231, 4231, 7270, 7270, 4821, 4821, 10163, 10163, 9821, 9821, 2187, 2187, 955, 955, 2704, 2704, 1428, 1428, 1045, 1045, 1479, 1479, 2399, 2399, 8993, 8993, 1168, 1168, 1853, 1853, 8232, 8232, 6747, 6747, 8526, 8526, 10938, 10938, 2686, 2686, 1673, 1673, 10682, 10682, 4805, 4805, 4919, 4919, 11560, 11560, 3778, 3778, 3195, 3195, 11813, 11813, 3748, 3748, 11796, 11796, 7393, 7393, 5195, 5195, 3707, 3707, 7575, 7575, 9545, 9545, 10040, 10040, 9447, 9447, 8643, 8643, 3201, 3201, 7635, 7635, 4632, 4632, 6591, 6591, 6553, 6553, 243, 243, 2837, 2837, 11224, 11224, 4255, 4255, 2847, 2847, 8357, 8357, 1632, 1632, 6461, 6461, 6957, 6957, 9764, 9764, 5011, 5011, 4846, 4846, 9140, 9140, 9408, 9408, 11222, 11222, 9744, 9744, 10745, 10745, 10092, 10092, 1912, 1912, 12208, 12208, 7247, 7247, 355, 355, 2678, 2678, 11340, 11340, 5407, 5407, 11745, 11745, 6039, 6039, 9970, 9970, 4938, 4938, 2426, 2426, 2481, 2481, 5146, 5146, 9153, 9153, 4452, 4452, 9041, 9041, 4611, 4611, 8925, 8925, 3459, 3459, 27, 27, 5777, 5777, 3978, 3978, 7300, 7300, 8509, 8509, 2294, 2294, 8374, 8374, 10276, 10276, 773, 773, 10643, 10643, 7384, 7384, 11462, 11462, 2381, 2381, 9238, 9238, 10805, 10805, 5179, 5179, 10752, 10752, 9314, 9314, 11136, 11136, 12280, 12280, 6267, 6267, 10963, 10963, 1663, 1663, 1260, 1260, 7428, 7428, 1305, 1305, 671, 671, 7935, 7935, 4645, 4645, 1635, 1635, 4372, 4372, 7399, 7399, 1017, 1017, 4591, 4591, 2370, 2370, 8705, 8705, 5088, 5088, 8577, 8577, 3, 3, 10200, 10200, 442, 442, 3542, 3542, 11869, 11869, 9813, 9813, 11854, 11854, 7969, 7969, 9644, 9644, 2548, 2548, 11744, 11744, 2639, 2639, 1630, 1630, 11950, 11950, 2566, 2566, 11499, 11499, 5291, 5291, 10593, 10593, 9430, 9430, - - // layer #9 - 1, 10302, 3400, 3150, 8340, 6281, 5277, 9407, 12149, 7822, 3271, 1404, 12144, 5468, 10849, 10232, 7311, 10930, 9042, 64, 8011, 8687, 4976, 5333, 8736, 5925, 12176, 3329, 9048, 431, 3833, 3009, 5860, 6152, 3531, 922, 11336, 1105, 4096, 8855, 2963, 11239, 9509, 6099, 10530, 5057, 4143, 1489, 3006, 11821, 8241, 6370, 480, 4782, 9852, 453, 9275, 4075, 1426, 5297, 6534, 6415, 9377, 10314, 4134, 7083, 9273, 8049, 6915, 11286, 2143, 6142, 11112, 3789, 4414, 3728, 2731, 5241, 7205, 350, 5023, 10256, 8779, 6507, 10908, 3600, 11287, 156, 9542, 1973, 12129, 10695, 9005, 12138, 5101, 2738, 3621, 6427, 10111, 1958, 5067, 8851, 10911, 9928, 9198, 9606, 9984, 8527, 3382, 2049, 8585, 11026, 2625, 6950, 3186, 10542, 5791, 8076, 2422, 4774, 1170, 10120, 8653, 11089, 334, 12237, 5012, 7535, 8246, 8724, 5191, 8243, 2396, 7280, 11082, 1954, 726, 7540, 10600, 1146, 8652, 787, 9223, 9087, 8961, 1254, 2969, 11606, 5331, 421, 11414, 5876, 11227, 8775, 2166, 9597, 3289, 2505, 11899, 723, 1212, 400, 3985, 8210, 6522, 5681, 5444, 9381, 2366, 5445, 7394, 5766, 8595, 3445, 12047, 1583, 563, 11907, 9405, 3834, 1022, 9260, 9302, 11871, 7203, 4324, 10512, 3956, 4388, 6234, 354, 9364, 11567, 9090, 3000, 11454, 130, 12048, 11885, 3963, 2768, 5456, 10115, 6299, 6378, 9162, 7404, 10474, 5728, 10367, 9424, 2948, 4177, 7665, 8005, 8320, 9154, 11011, 7852, 5106, 5092, 8332, 9888, 2655, 8785, 6874, 6730, 10211, 12171, 975, 4337, 9259, 11289, 8471, 4053, 8273, 4231, 10968, 7270, 6374, 4821, 6093, 10163, 9235, 9821, 605, 2187, 4737, 955, 7210, 2704, 9734, 1428, 1323, 1045, 426, 1479, 10587, 2399, 1319, 8993, 11404, 1168, 1805, 1853, 4789, 8232, 11964, 6747, 1010, 8526, 5369, 10938, 5435, 2686, 8633, 1673, 6068, 10682, 10258, 4805, 1018, 4919, 7991, 11560, 10710, 3778, 1693, 3195, 4948, 11813, 11848, 3748, 12147, 11796, 8760, 7393, 7753, 5195, 295, 3707, 7591, 7575, 2500, 9545, 8301, 10040, 7856, 9447, 6403, 8643, 6381, 3201, 5315, 7635, 6170, 4632, 677, 6591, 3757, 6553, 5529, 243, 8719, 2837, 3532, 11224, 2447, 4255, 147, 2847, 8240, 8357, 9369, 1632, 1512, 6461, 3998, 6957, 1566, 9764, 3263, 5011, 9522, 4846, 5574, 9140, 1962, 9408, 10162, 11222, 6421, 9744, 6136, 10745, 7967, 10092, 2844, 1912, 10446, 12208, 1190, 7247, 2919, 355, 7377, 2678, 12240, 11340, 5446, 5407, 9166, 11745, 11785, 6039, 6860, 9970, 11767, 4938, 7105, 2426, 9115, 2481, 10431, 5146, 11635, 9153, 709, 4452, 1956, 9041, 2051, 4611, 5537, 8925, 11341, 3459, 8807, 27, 7796, 5777, 11316, 3978, 9830, 7300, 8209, 8509, 2281, 2294, 1041, 8374, 168, 10276, 5906, 773, 174, 10643, 1728, 7384, 1058, 11462, 8812, 2381, 218, 9238, 3860, 10805, 11637, 5179, 7509, 10752, 6347, 9314, 316, 11136, 5257, 12280, 5594, 6267, 8517, 10963, 4916, 1663, 1360, 1260, 3336, 7428, 11942, 1305, 12233, 671, 6224, 7935, 12231, 4645, 11713, 1635, 7840, 4372, 1159, 7399, 8120, 1017, 6906, 4591, 8410, 2370, 9786, 8705, 6077, 5088, 3991, 8577, 2344, 3, 6328, 10200, 9450, 442, 6554, 3542, 3643, 11869, 11177, 9813, 4212, 11854, 4115, 7969, 6118, 9644, 8212, 2548, 192, 11744, 1483, 2639, 3710, 1630, 5486, 11950, 9987, 2566, 1293, 11499, 9027, 5291, 6167, 10593, 2766, 9430, 3315, - }; - const int p = 12289; - int dst[1024]; - ntt(arr, l, twiddle, p, dst); - - // for (int i = 0; i < n; i++) { - // printf("%d", dst[i]); - // if ((i + 1) % 8 == 0) { - // printf("\n"); - // } else { - // printf(" "); - // } - // } -} diff --git a/tests/eval/_ntt/ntt_128.json b/tests/eval/_ntt/ntt_128.json new file mode 100644 index 000000000..5c9ab6834 --- /dev/null +++ b/tests/eval/_ntt/ntt_128.json @@ -0,0 +1 @@ +{"input": [4460, 12188, 3541, 10478, 7715, 10544, 4292, 730, 1091, 3803, 6932, 9228, 2541, 12128, 405, 140, 11502, 6587, 4095, 1834, 5615, 2380, 3142, 12279, 7928, 10164, 7540, 1433, 4904, 953, 2076, 10072, 8085, 3431, 11891, 120, 4669, 4392, 4162, 32, 9757, 10800, 4218, 3019, 4210, 2626, 1028, 9928, 7161, 635, 5337, 5787, 2024, 7250, 3861, 10404, 3387, 10304, 3157, 3587, 11159, 2768, 11323, 3931, 4059, 11049, 10184, 7126, 4792, 7797, 9943, 10899, 8198, 904, 4498, 6233, 598, 4650, 10963, 10312, 5642, 2550, 7556, 3485, 647, 2069, 6334, 10788, 3659, 7564, 1177, 7345, 7386, 9799, 11359, 11278, 4821, 3901, 999, 10844, 6676, 7825, 8771, 7153, 10909, 7822, 7040, 9148, 7699, 331, 4037, 7333, 9008, 6938, 11553, 8788, 8009, 1663, 7213, 11024, 5864, 6905, 2413, 9316, 6786, 7268, 2930, 8286], "output": [783, 1579, 8187, 10419, 6600, 8064, 11298, 6617, 7899, 1821, 2617, 957, 10490, 4242, 2542, 9682, 4459, 1977, 8887, 4695, 2524, 10518, 788, 8889, 11897, 4659, 3194, 4950, 5349, 7696, 4267, 11200, 6747, 1603, 3094, 6570, 6015, 10553, 9375, 11491, 8096, 359, 9141, 9169, 2021, 5834, 11670, 9748, 10674, 7271, 2052, 2555, 10234, 7643, 8701, 12009, 1843, 8369, 4030, 5561, 5911, 6942, 10985, 3786, 11739, 8348, 5906, 8819, 2756, 9536, 9403, 11262, 4504, 3362, 4600, 10491, 9464, 7369, 3231, 10868, 2382, 5758, 5717, 2592, 6742, 7065, 2621, 4765, 8336, 11886, 12162, 10718, 9597, 5476, 11127, 6702, 7235, 9070, 3303, 10146, 11237, 5474, 11133, 867, 1402, 346, 11434, 11850, 12081, 5895, 8179, 10495, 1444, 11385, 1216, 8907, 5758, 6855, 288, 11195, 12161, 1885, 9972, 9007, 10238, 1900, 2588, 5768]} \ No newline at end of file diff --git a/tests/eval/_ntt/ntt_128_main.c b/tests/eval/_ntt/ntt_128_main.c deleted file mode 100644 index ad8b75ef2..000000000 --- a/tests/eval/_ntt/ntt_128_main.c +++ /dev/null @@ -1,59 +0,0 @@ -// requires VLEN >= 512 - -#include - -void ntt(const int *array, int l, const int *twiddle, int p, int *dst); - -void test() { - const int l = 7; - const int n = 128; - static const int arr[128] = { - 9997, 6362, 7134, 11711, 5849, 9491, 5972, 4164, 5894, 11069, - 7697, 8319, 2077, 12086, 10239, 5394, 4898, 1370, 1205, 2997, - 5274, 4625, 11983, 1789, 3645, 7666, 12128, 10883, 7376, 8883, - 2321, 1889, 2026, 8059, 2741, 865, 1785, 9955, 2395, 9330, - 11465, 7383, 9649, 11285, 3647, 578, 1158, 9936, 12019, 11114, - 7894, 4832, 10148, 10363, 11388, 9122, 10758, 2642, 4171, 10586, - 1194, 5280, 3055, 9220, 10577, 9046, 1284, 7915, 10213, 6902, - 3777, 9896, 429, 7730, 7429, 8666, 10887, 11255, 2437, 7782, - 1327, 7010, 4009, 1038, 9466, 5352, 1473, 10067, 11753, 2019, - 8472, 7665, 2679, 5070, 2248, 3044, 10301, 10671, 2092, 1069, - 9032, 9131, 11715, 6662, 3423, 10027, 5436, 4259, 999, 3316, - 11164, 5597, 6578, 800, 8242, 6952, 2288, 1481, 6770, 11948, - 8938, 10813, 11107, 1362, 4510, 9388, 8840, 10557}; - // const int twiddle[7] = {12149, 7311, 5860, 4134, 8246, 1479, 12288}; - static const int twiddle[] = { - // layer #0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - // layer #1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, - - // layer #2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, - - // layer #3 - 1, 1, 1, 1, 1, 1, 1, 1, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, - - // layer #4 - 1, 1, 1, 1, 5860, 5860, 5860, 5860, 4134, 4134, 4134, 4134, 3621, 3621, 3621, 3621, 8246, 8246, 8246, 8246, 1212, 1212, 1212, 1212, 11567, 11567, 11567, 11567, 8785, 8785, 8785, 8785, 1479, 1479, 1479, 1479, 3195, 3195, 3195, 3195, 6553, 6553, 6553, 6553, 9744, 9744, 9744, 9744, 5146, 5146, 5146, 5146, 10643, 10643, 10643, 10643, 1305, 1305, 1305, 1305, 3542, 3542, 3542, 3542, - - // layer #5 - 1, 1, 7311, 7311, 5860, 5860, 3006, 3006, 4134, 4134, 5023, 5023, 3621, 3621, 2625, 2625, 8246, 8246, 8961, 8961, 1212, 1212, 563, 563, 11567, 11567, 5728, 5728, 8785, 8785, 4821, 4821, 1479, 1479, 10938, 10938, 3195, 3195, 9545, 9545, 6553, 6553, 6461, 6461, 9744, 9744, 11340, 11340, 5146, 5146, 5777, 5777, 10643, 10643, 9314, 9314, 1305, 1305, 4591, 4591, 3542, 3542, 2639, 2639, - - // layer #6 - 1, 12149, 7311, 8736, 5860, 2963, 3006, 9275, 4134, 11112, 5023, 9542, 3621, 9198, 2625, 1170, 8246, 726, 8961, 11227, 1212, 2366, 563, 7203, 11567, 2768, 5728, 9154, 8785, 11289, 4821, 955, 1479, 1853, 10938, 4805, 3195, 7393, 9545, 3201, 6553, 4255, 6461, 4846, 9744, 12208, 11340, 9970, 5146, 4611, 5777, 2294, 10643, 9238, 9314, 10963, 1305, 1635, 4591, 8577, 3542, 7969, 2639, 11499, - }; - const int p = 12289; - int dst[128]; - ntt(arr, l, twiddle, p, dst); - - // for (int i = 0; i < n; i++) { - // printf("%d", dst[i]); - // if ((i + 1) % 8 == 0) { - // printf("\n"); - // } else { - // printf(" "); - // } - // } -} diff --git a/tests/eval/_ntt/ntt_256.json b/tests/eval/_ntt/ntt_256.json new file mode 100644 index 000000000..81d2fc1c0 --- /dev/null +++ b/tests/eval/_ntt/ntt_256.json @@ -0,0 +1 @@ +{"input": [12108, 7401, 11007, 9022, 1470, 1528, 1971, 4846, 1769, 8345, 9418, 6172, 6491, 4296, 4965, 11239, 3503, 7432, 1742, 2013, 4408, 9432, 8389, 1188, 8633, 1107, 12202, 11128, 8879, 533, 8658, 11468, 7909, 65, 8766, 2215, 3747, 6345, 10497, 3609, 8561, 1378, 5663, 5577, 12144, 7971, 805, 5475, 7297, 9777, 953, 8630, 1582, 7858, 6205, 10750, 4003, 919, 11663, 2744, 2114, 6158, 10376, 5009, 10477, 7582, 10374, 4740, 8494, 10182, 9296, 8669, 2980, 1164, 4497, 9544, 2463, 4063, 182, 6416, 3311, 917, 1335, 4478, 10922, 5307, 7616, 11933, 11762, 10885, 2166, 3387, 3272, 5527, 9957, 3173, 10460, 5455, 8821, 3038, 5177, 9841, 7844, 786, 11636, 11739, 8966, 4386, 9580, 3447, 4488, 1506, 5847, 8484, 8605, 495, 8126, 6596, 5272, 11279, 3468, 3247, 7874, 9963, 7009, 8049, 5050, 5527, 9294, 3933, 2247, 6319, 3243, 8399, 1433, 1040, 2361, 4439, 2271, 11773, 10451, 7327, 5460, 8013, 9215, 10674, 3659, 738, 7245, 10742, 8250, 1475, 4407, 9254, 4090, 2632, 8161, 8247, 1668, 6672, 4400, 10670, 4512, 3283, 6824, 2345, 1119, 701, 3784, 10296, 12043, 9057, 4320, 8394, 11743, 7223, 334, 3835, 4858, 3018, 351, 5848, 5131, 484, 7220, 8703, 11970, 6676, 8006, 4653, 719, 3050, 11793, 9480, 7569, 6407, 10758, 11587, 11565, 1837, 6998, 525, 181, 4344, 10592, 1694, 12080, 12202, 6876, 10904, 8086, 6440, 10517, 10776, 8899, 1196, 6869, 2566, 11420, 11057, 9827, 8279, 8942, 10069, 713, 9954, 10411, 3912, 2583, 11747, 11236, 691, 5723, 1911, 5769, 5588, 9552, 5291, 3448, 6363, 287, 5170, 4911, 3681, 8519, 1313, 7618, 7773, 2495, 5233, 4573, 6771, 11805, 1406, 600, 4830], "output": [10582, 926, 10435, 11279, 10063, 9088, 10096, 9810, 6287, 2123, 5005, 3371, 7578, 330, 4814, 10080, 4196, 9146, 2102, 9010, 6070, 2220, 7369, 12032, 9049, 9264, 173, 10367, 7701, 2389, 7201, 11755, 74, 7375, 11036, 7811, 8992, 1627, 2419, 991, 3261, 11266, 2406, 4736, 1314, 9844, 11102, 6104, 7970, 3006, 10371, 5736, 6125, 5477, 10952, 331, 9969, 358, 1477, 3726, 11255, 12287, 8485, 4815, 9409, 1354, 11160, 1243, 3201, 10663, 10462, 1475, 7024, 10840, 7373, 6453, 9744, 7872, 4714, 1933, 6708, 2963, 2624, 11861, 6850, 10343, 4829, 6218, 9253, 1867, 9319, 8062, 1542, 9373, 6286, 10953, 6213, 3915, 11815, 6550, 5100, 3454, 323, 11787, 2592, 10365, 10624, 6017, 9624, 3377, 8400, 4370, 11718, 3176, 2596, 2939, 2151, 10813, 4802, 340, 6054, 8588, 4235, 2124, 2751, 10651, 9062, 4675, 1150, 6316, 514, 1366, 762, 3491, 3099, 4885, 8409, 123, 11047, 2301, 9859, 11105, 2612, 4461, 4622, 949, 12079, 9007, 3245, 6746, 10091, 6508, 5526, 9403, 9043, 11202, 3660, 9505, 2619, 8324, 10115, 11445, 9478, 6892, 2288, 2595, 7052, 6305, 1213, 4292, 10294, 5379, 5188, 4427, 7032, 11338, 4713, 8038, 1496, 3784, 2598, 4269, 11580, 10303, 1850, 10629, 10409, 8847, 8905, 10579, 8177, 10797, 4922, 5577, 6535, 10462, 3268, 3817, 6574, 8463, 4400, 3273, 11345, 5729, 3481, 6438, 257, 2379, 2447, 285, 3857, 11644, 4638, 4186, 4304, 7243, 1677, 8173, 10970, 106, 9702, 7965, 8232, 3541, 5643, 9011, 8601, 5704, 11432, 4578, 8193, 2568, 9295, 8979, 11756, 11261, 813, 6507, 1140, 7492, 9999, 6112, 9905, 6978, 3037, 543, 7823, 10651, 8637, 10064, 446, 2540, 6161, 9546, 5381, 12165]} \ No newline at end of file diff --git a/tests/eval/_ntt/ntt_256_main.c b/tests/eval/_ntt/ntt_256_main.c deleted file mode 100644 index 045e5433e..000000000 --- a/tests/eval/_ntt/ntt_256_main.c +++ /dev/null @@ -1,75 +0,0 @@ -// requires VLEN >= 1024 - -#include - -void ntt(const int *array, int l, const int *twiddle, int p, int *dst); - -void test() { - const int l = 8; - const int n = 256; - static const int arr[256] = { - 9997, 6362, 7134, 11711, 5849, 9491, 5972, 4164, 5894, 11069, - 7697, 8319, 2077, 12086, 10239, 5394, 4898, 1370, 1205, 2997, - 5274, 4625, 11983, 1789, 3645, 7666, 12128, 10883, 7376, 8883, - 2321, 1889, 2026, 8059, 2741, 865, 1785, 9955, 2395, 9330, - 11465, 7383, 9649, 11285, 3647, 578, 1158, 9936, 12019, 11114, - 7894, 4832, 10148, 10363, 11388, 9122, 10758, 2642, 4171, 10586, - 1194, 5280, 3055, 9220, 10577, 9046, 1284, 7915, 10213, 6902, - 3777, 9896, 429, 7730, 7429, 8666, 10887, 11255, 2437, 7782, - 1327, 7010, 4009, 1038, 9466, 5352, 1473, 10067, 11753, 2019, - 8472, 7665, 2679, 5070, 2248, 3044, 10301, 10671, 2092, 1069, - 9032, 9131, 11715, 6662, 3423, 10027, 5436, 4259, 999, 3316, - 11164, 5597, 6578, 800, 8242, 6952, 2288, 1481, 6770, 11948, - 8938, 10813, 11107, 1362, 4510, 9388, 8840, 10557, 6206, 7808, - 7131, 1394, 2604, 1509, 689, 5222, 8867, 9934, 7165, 6099, - 3229, 1263, 4414, 12212, 4963, 9236, 9040, 6062, 11163, 8169, - 4575, 6097, 3006, 1, 1384, 12039, 5445, 11355, 12197, 9182, - 10085, 9295, 8890, 10651, 1540, 9061, 10222, 2524, 2213, 6974, - 2066, 7348, 7444, 173, 7529, 3884, 3531, 4312, 640, 5352, - 5880, 3985, 781, 10165, 1106, 8114, 6043, 8202, 10617, 3060, - 11173, 11521, 6933, 9540, 11782, 2284, 6462, 3740, 2581, 126, - 508, 12165, 4956, 8045, 9379, 5250, 8148, 6539, 4891, 11252, - 5041, 9969, 8524, 9892, 4058, 10580, 10025, 9748, 8829, 4438, - 468, 4773, 1657, 1348, 10055, 7192, 9556, 5919, 5690, 6153, - 6270, 4938, 6206, 1003, 596, 11173, 9858, 4825, 7940, 794, - 7477, 10146, 7203, 4729, 5741, 4603, 1806, 7034, 8772, 10435, - 10777, 1359, 630, 11059, 8005, 225}; - // const int twiddle[8] = {8340, 12149, 7311, 5860, 4134, 8246, 1479, 12288}; - static const int twiddle[] = { - // layer #0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - // layer #1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, - - // layer #2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, - - // layer #3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, - - // layer #4 - 1, 1, 1, 1, 1, 1, 1, 1, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - - // layer #5 - 1, 1, 1, 1, 7311, 7311, 7311, 7311, 5860, 5860, 5860, 5860, 3006, 3006, 3006, 3006, 4134, 4134, 4134, 4134, 5023, 5023, 5023, 5023, 3621, 3621, 3621, 3621, 2625, 2625, 2625, 2625, 8246, 8246, 8246, 8246, 8961, 8961, 8961, 8961, 1212, 1212, 1212, 1212, 563, 563, 563, 563, 11567, 11567, 11567, 11567, 5728, 5728, 5728, 5728, 8785, 8785, 8785, 8785, 4821, 4821, 4821, 4821, 1479, 1479, 1479, 1479, 10938, 10938, 10938, 10938, 3195, 3195, 3195, 3195, 9545, 9545, 9545, 9545, 6553, 6553, 6553, 6553, 6461, 6461, 6461, 6461, 9744, 9744, 9744, 9744, 11340, 11340, 11340, 11340, 5146, 5146, 5146, 5146, 5777, 5777, 5777, 5777, 10643, 10643, 10643, 10643, 9314, 9314, 9314, 9314, 1305, 1305, 1305, 1305, 4591, 4591, 4591, 4591, 3542, 3542, 3542, 3542, 2639, 2639, 2639, 2639, - - // layer #6 - 1, 1, 12149, 12149, 7311, 7311, 8736, 8736, 5860, 5860, 2963, 2963, 3006, 3006, 9275, 9275, 4134, 4134, 11112, 11112, 5023, 5023, 9542, 9542, 3621, 3621, 9198, 9198, 2625, 2625, 1170, 1170, 8246, 8246, 726, 726, 8961, 8961, 11227, 11227, 1212, 1212, 2366, 2366, 563, 563, 7203, 7203, 11567, 11567, 2768, 2768, 5728, 5728, 9154, 9154, 8785, 8785, 11289, 11289, 4821, 4821, 955, 955, 1479, 1479, 1853, 1853, 10938, 10938, 4805, 4805, 3195, 3195, 7393, 7393, 9545, 9545, 3201, 3201, 6553, 6553, 4255, 4255, 6461, 6461, 4846, 4846, 9744, 9744, 12208, 12208, 11340, 11340, 9970, 9970, 5146, 5146, 4611, 4611, 5777, 5777, 2294, 2294, 10643, 10643, 9238, 9238, 9314, 9314, 10963, 10963, 1305, 1305, 1635, 1635, 4591, 4591, 8577, 8577, 3542, 3542, 7969, 7969, 2639, 2639, 11499, 11499, - - // layer #7 - 1, 8340, 12149, 12144, 7311, 8011, 8736, 9048, 5860, 11336, 2963, 10530, 3006, 480, 9275, 6534, 4134, 6915, 11112, 2731, 5023, 10908, 9542, 9005, 3621, 5067, 9198, 3382, 2625, 5791, 1170, 334, 8246, 2396, 726, 8652, 8961, 5331, 11227, 3289, 1212, 6522, 2366, 8595, 563, 1022, 7203, 4388, 11567, 130, 2768, 6378, 5728, 4177, 9154, 5092, 8785, 12171, 11289, 4231, 4821, 9821, 955, 1428, 1479, 8993, 1853, 6747, 10938, 1673, 4805, 11560, 3195, 3748, 7393, 3707, 9545, 9447, 3201, 4632, 6553, 2837, 4255, 8357, 6461, 9764, 4846, 9408, 9744, 10092, 12208, 355, 11340, 11745, 9970, 2426, 5146, 4452, 4611, 3459, 5777, 7300, 2294, 10276, 10643, 11462, 9238, 5179, 9314, 12280, 10963, 1260, 1305, 7935, 1635, 7399, 4591, 8705, 8577, 10200, 3542, 9813, 7969, 2548, 2639, 11950, 11499, 10593, - }; - const int p = 12289; - int dst[256]; - ntt(arr, l, twiddle, p, dst); - - // for (int i = 0; i < n; i++) { - // printf("%d", dst[i]); - // if ((i + 1) % 8 == 0) { - // printf("\n"); - // } else { - // printf(" "); - // } - // } -} diff --git a/tests/eval/_ntt/ntt_4096.json b/tests/eval/_ntt/ntt_4096.json new file mode 100644 index 000000000..d3332e85c --- /dev/null +++ b/tests/eval/_ntt/ntt_4096.json @@ -0,0 +1 @@ +{"input": [8027, 7796, 2952, 7789, 7760, 6621, 10269, 9187, 7632, 3707, 6318, 9133, 4214, 3242, 11268, 2368, 10795, 4188, 6858, 8806, 8881, 7072, 3649, 1501, 6755, 4920, 6543, 9892, 1844, 8638, 6982, 12030, 9351, 4775, 11390, 4426, 5335, 4361, 1078, 1256, 7371, 10207, 2029, 8475, 5951, 4402, 11253, 9, 1529, 4319, 3426, 10916, 2654, 3175, 7737, 6966, 7371, 1636, 2390, 7993, 6686, 3592, 9408, 4903, 7068, 10415, 11631, 1549, 592, 8121, 4222, 10339, 8570, 4784, 10142, 5479, 1595, 2852, 4095, 7533, 2372, 4792, 3993, 2117, 237, 1823, 8518, 7624, 5957, 989, 1191, 9642, 3666, 11398, 4330, 4786, 11344, 2664, 11306, 4622, 10547, 5863, 1811, 397, 4985, 5562, 5841, 9301, 9032, 3601, 8646, 11325, 8382, 9306, 9052, 11266, 1550, 7583, 9936, 6469, 1734, 7751, 6870, 7054, 12026, 4787, 4729, 2606, 4663, 1103, 6722, 1993, 7835, 1697, 8912, 3186, 7404, 5932, 1770, 9911, 9036, 2130, 7146, 10863, 8879, 7979, 7657, 9950, 790, 1122, 2563, 3464, 4814, 12070, 1575, 10718, 6119, 2290, 4902, 11840, 9763, 10390, 10421, 11753, 3718, 6538, 6473, 11623, 4277, 841, 8538, 3919, 12116, 12271, 4269, 1388, 10165, 6136, 9159, 113, 6546, 6687, 5293, 9992, 1754, 8800, 11286, 3324, 6188, 9691, 6727, 10066, 9430, 2199, 7748, 295, 5474, 8058, 3913, 5249, 8614, 1543, 2953, 11026, 13, 1398, 603, 7668, 2931, 8509, 494, 5908, 4529, 2467, 8222, 1687, 4203, 11390, 8795, 6056, 11092, 1738, 9024, 2939, 10007, 3244, 11334, 4805, 4572, 10821, 379, 1681, 9574, 1902, 5995, 10300, 3358, 3165, 2555, 2997, 1029, 1327, 4993, 6022, 12121, 9323, 7064, 5329, 6836, 9571, 10039, 23, 9161, 11458, 3541, 4686, 9079, 796, 4557, 3349, 5939, 8090, 4729, 4736, 3680, 9918, 2432, 10877, 5087, 12135, 6924, 347, 7792, 1684, 6088, 735, 4077, 5014, 8585, 4013, 3651, 10071, 1530, 9581, 5790, 412, 24, 7953, 5103, 229, 3025, 6363, 7436, 4167, 6684, 11667, 12211, 9905, 7580, 9443, 11822, 3159, 3089, 2665, 7313, 12130, 0, 10415, 959, 2400, 1889, 4725, 9753, 1555, 11647, 10245, 10586, 9395, 2236, 8437, 3393, 2073, 5994, 9161, 4832, 3810, 1261, 4520, 9216, 4826, 4774, 6876, 7803, 899, 1281, 10892, 4275, 1977, 3365, 3939, 6768, 5486, 3392, 1886, 10497, 2792, 688, 703, 5061, 5976, 7310, 11322, 10215, 12019, 6293, 1411, 1190, 2329, 3621, 9657, 8596, 11497, 6915, 5863, 10046, 10146, 10071, 5871, 9944, 5724, 735, 10155, 2591, 11791, 8996, 10933, 9964, 5993, 5717, 7679, 9107, 10188, 2435, 4126, 9436, 10195, 8880, 6343, 11847, 2760, 12044, 6885, 4899, 5787, 9004, 1875, 8528, 11744, 5708, 6774, 1313, 11149, 11872, 11537, 2085, 2231, 10741, 8302, 8110, 9365, 386, 7630, 5070, 5776, 601, 4050, 10773, 6841, 9046, 2822, 11089, 8647, 2122, 11048, 9819, 4787, 284, 61, 1552, 710, 5258, 10777, 1762, 7654, 9477, 9880, 11960, 4447, 6981, 10610, 11383, 8605, 9418, 501, 4439, 8858, 9988, 8593, 1250, 2180, 8048, 10285, 8582, 3598, 7845, 5810, 9890, 9133, 4621, 3019, 570, 6567, 3668, 7865, 6833, 11167, 6542, 3563, 2766, 6755, 10869, 3281, 9498, 75, 2386, 3048, 2079, 8960, 1808, 8666, 6756, 350, 10998, 11683, 3228, 6786, 5628, 11322, 1392, 7452, 9683, 3528, 7907, 2206, 2048, 310, 9542, 3324, 10894, 8878, 1545, 2989, 8766, 6579, 6011, 11205, 389, 12006, 3373, 6439, 1239, 11098, 1079, 6691, 11009, 4387, 1249, 2298, 2684, 814, 7314, 1602, 6591, 7536, 11995, 6897, 9642, 11359, 2121, 2058, 2475, 3004, 10343, 2163, 5912, 1532, 9106, 9335, 2346, 10725, 11184, 10643, 235, 10933, 7303, 1075, 10295, 4412, 6403, 4128, 8996, 12225, 8404, 10895, 6970, 7736, 4931, 12207, 11974, 1449, 6482, 2915, 10926, 1536, 1570, 5748, 260, 194, 12211, 473, 2388, 6607, 4588, 1742, 1659, 3564, 10713, 10269, 2030, 1291, 6514, 2473, 8078, 4071, 7338, 6750, 3501, 4015, 10724, 3293, 6916, 5837, 11192, 8131, 3434, 11261, 82, 945, 3228, 5404, 700, 3385, 1300, 2079, 531, 8615, 6348, 11632, 12152, 11222, 8621, 215, 11681, 4225, 336, 8249, 1183, 8071, 4252, 8847, 11078, 11623, 10766, 975, 7053, 881, 10196, 9190, 8367, 2199, 5540, 9881, 10687, 1944, 12106, 9869, 8013, 6311, 8628, 733, 8577, 8548, 1141, 10378, 3140, 4256, 11215, 7588, 7899, 8731, 8819, 3415, 1431, 2697, 4461, 11960, 12275, 5661, 11124, 10206, 6142, 1856, 4590, 9758, 3174, 1089, 731, 3232, 6086, 6229, 6385, 5113, 1526, 9824, 7605, 1232, 682, 2051, 10763, 6247, 8506, 3029, 4131, 10557, 9591, 1337, 5319, 8934, 11959, 1073, 4653, 3309, 6532, 11820, 11582, 5240, 7858, 7139, 6464, 5374, 10065, 4721, 10997, 2650, 3927, 10945, 10224, 5461, 4246, 6579, 9776, 4466, 10107, 8110, 219, 5061, 10076, 3287, 8326, 3704, 7072, 3459, 4844, 11738, 2809, 5817, 1538, 2310, 8671, 7781, 349, 2021, 11574, 11480, 3667, 2386, 12164, 5387, 780, 10034, 4117, 10196, 2569, 8267, 1969, 4140, 7367, 9302, 6277, 2329, 2822, 942, 9766, 7876, 1138, 10204, 2448, 841, 114, 6077, 5263, 4433, 5716, 6413, 8127, 8476, 3595, 5804, 3202, 276, 7402, 1668, 242, 2865, 4444, 5807, 9699, 7633, 9985, 2272, 11507, 6347, 7998, 8796, 2638, 4165, 9767, 1222, 1000, 6581, 8226, 3308, 8546, 747, 923, 3111, 254, 3112, 8887, 6273, 3749, 11113, 2228, 831, 384, 10375, 10995, 186, 1588, 10964, 6500, 2506, 3720, 8956, 9708, 3329, 8659, 7836, 5682, 6682, 11810, 1486, 11951, 566, 9247, 525, 9264, 9131, 91, 8438, 5599, 2210, 3269, 1732, 6635, 11041, 7347, 1769, 1557, 6203, 8039, 7184, 1429, 3763, 7484, 11219, 2604, 4459, 9464, 10245, 3209, 8026, 9464, 911, 655, 914, 3723, 237, 11180, 11659, 3964, 2653, 11003, 8478, 6731, 4224, 2829, 2977, 4157, 7337, 5517, 5008, 10861, 10450, 1059, 5283, 2667, 5877, 12000, 5439, 3483, 1125, 10004, 7583, 8194, 7174, 3356, 9837, 4548, 7495, 6888, 10272, 702, 2346, 1018, 3546, 2022, 9226, 8935, 8086, 10795, 2856, 6397, 5915, 2378, 9917, 6672, 1637, 3369, 11142, 4131, 10503, 3264, 3823, 326, 11520, 6738, 3000, 10621, 10358, 7381, 1621, 5767, 9947, 9944, 3731, 1346, 10829, 6893, 2895, 5320, 8179, 8097, 7034, 5695, 3045, 10764, 10136, 811, 1460, 7720, 4993, 12150, 12150, 3400, 2575, 11728, 2271, 6075, 7340, 7058, 5705, 5733, 439, 2602, 1366, 1621, 10431, 6363, 8541, 11486, 9202, 9541, 3149, 11310, 3877, 7195, 12240, 7989, 11018, 3954, 7225, 2347, 5986, 272, 1906, 11811, 10737, 9419, 2517, 11802, 154, 10169, 10552, 10922, 6721, 3319, 1925, 1047, 7865, 4774, 807, 4440, 9581, 5987, 1665, 6802, 2410, 2897, 2149, 8607, 7826, 9759, 5299, 9783, 4162, 11181, 1627, 2350, 5107, 9460, 9588, 2842, 11715, 3916, 3446, 4436, 8586, 9051, 5623, 4720, 5393, 4575, 11009, 1344, 7110, 7321, 858, 6619, 6253, 1842, 3628, 2233, 760, 1502, 10278, 2844, 9397, 3195, 9339, 2924, 3207, 7354, 3156, 5977, 8635, 1080, 2540, 1316, 6884, 8353, 12064, 1718, 6149, 12088, 8946, 10827, 812, 6284, 1431, 4158, 12120, 1914, 6526, 1694, 2463, 8998, 2570, 11286, 4580, 3093, 8974, 4023, 4770, 12180, 4973, 15, 9011, 10203, 11299, 1066, 8465, 5069, 5649, 11159, 5755, 4764, 2819, 7898, 52, 12064, 5285, 5953, 2814, 10053, 5832, 6336, 304, 7951, 3902, 2543, 6262, 3851, 9130, 5988, 6068, 3916, 9988, 10420, 2376, 2049, 7072, 1001, 307, 35, 10213, 7398, 6075, 10302, 6923, 3649, 9311, 1940, 12166, 3286, 3877, 3840, 1735, 10274, 870, 7697, 6231, 521, 7393, 10551, 11704, 10764, 3384, 4081, 8996, 11258, 7957, 9687, 9758, 7106, 9836, 9726, 4374, 5528, 9326, 9339, 10969, 5103, 11774, 5447, 2026, 1867, 84, 683, 7879, 9144, 7916, 8961, 5496, 9660, 4183, 8888, 7424, 7099, 9330, 11945, 2772, 4738, 2533, 7688, 3568, 7483, 10066, 8022, 917, 11197, 9601, 5171, 11089, 1040, 5418, 10163, 11271, 7904, 6954, 11362, 6343, 11662, 823, 12021, 7937, 5996, 7141, 10337, 4822, 6434, 8372, 1807, 9213, 10270, 7982, 323, 1831, 8968, 6404, 8592, 158, 9305, 7596, 3196, 9596, 2749, 9963, 6039, 10853, 5327, 8168, 11396, 872, 483, 10398, 8228, 1082, 6406, 10339, 2664, 3975, 11640, 11939, 10540, 4494, 7590, 12181, 1271, 3664, 9830, 9590, 9215, 4159, 3118, 3416, 798, 8980, 3773, 8506, 6164, 4264, 6529, 7012, 5861, 7381, 6734, 11278, 1203, 3316, 1609, 1001, 12117, 11202, 1705, 6707, 4683, 10867, 1824, 11224, 1958, 4850, 5610, 2735, 2837, 6024, 8683, 11208, 7429, 10977, 859, 1214, 8942, 11684, 7740, 6163, 1381, 5972, 10643, 5838, 2816, 9282, 1304, 816, 1516, 8342, 6410, 11609, 11696, 6583, 3073, 6367, 4608, 627, 11527, 8079, 1324, 787, 7148, 11084, 665, 3133, 7054, 5003, 8286, 9050, 10030, 4006, 2478, 4632, 11488, 5184, 1979, 2499, 3432, 2779, 10659, 11530, 1547, 11560, 11952, 3884, 5950, 10812, 5802, 152, 11071, 3314, 2625, 37, 7423, 6867, 4840, 7363, 9866, 6761, 10505, 7942, 5039, 11617, 9772, 2814, 10899, 6371, 10727, 3166, 6591, 2683, 6153, 10933, 11064, 12113, 10403, 6145, 7097, 10688, 2892, 7029, 3497, 8491, 7265, 11820, 4478, 1616, 11484, 9458, 5489, 7777, 4306, 342, 11691, 10673, 11810, 220, 1176, 8719, 5090, 11182, 8351, 4828, 753, 10922, 10203, 5425, 4369, 3595, 8254, 8924, 5541, 1815, 8131, 78, 10885, 11234, 8044, 3220, 5636, 4808, 2349, 5689, 1587, 8877, 2119, 8471, 9301, 11883, 10797, 2424, 638, 1726, 1327, 6929, 8517, 3679, 4318, 3740, 4655, 2617, 9419, 11345, 2183, 1380, 1160, 1559, 10568, 10265, 848, 4363, 6664, 5631, 10069, 3696, 6078, 1699, 12087, 2982, 1952, 2328, 4190, 6065, 847, 7315, 862, 11092, 11453, 5251, 9994, 7175, 226, 7325, 3393, 9822, 6786, 12284, 11832, 6603, 7280, 11322, 1344, 9390, 12105, 11869, 3185, 4224, 8025, 9835, 4316, 3871, 8402, 11986, 1840, 6271, 7531, 8899, 447, 976, 10098, 12166, 9809, 12104, 6361, 9938, 7565, 3444, 4570, 192, 5439, 5891, 10767, 410, 882, 10, 11868, 7902, 3887, 761, 7630, 5772, 5273, 765, 8996, 5962, 11643, 2723, 3010, 2401, 1526, 8485, 3486, 4339, 196, 6180, 7801, 6580, 8803, 9636, 1763, 10345, 9912, 8418, 1182, 11165, 9652, 7689, 10011, 8747, 9831, 6778, 4483, 5062, 4363, 1710, 6217, 8861, 2060, 8291, 4529, 2863, 2205, 6232, 2797, 6243, 7678, 3199, 3708, 7635, 8836, 640, 4092, 1749, 3431, 11925, 7819, 10102, 10383, 9719, 1403, 8872, 4596, 2295, 4111, 1439, 8282, 10478, 3544, 8244, 11219, 2542, 1370, 9500, 6542, 9964, 7298, 6367, 408, 949, 5817, 8238, 3656, 10189, 3542, 4725, 6819, 8685, 8760, 11231, 3948, 5935, 9167, 2311, 11104, 6992, 10244, 2118, 10196, 3759, 2722, 6657, 4244, 11227, 2750, 7994, 928, 4787, 4171, 1635, 2683, 11076, 6312, 696, 12186, 3145, 7237, 1443, 3344, 10763, 6700, 4317, 11256, 3781, 10975, 72, 6229, 11705, 10967, 4492, 7198, 11563, 788, 5053, 11817, 7590, 11797, 300, 3694, 1301, 2668, 5025, 4847, 1873, 9069, 4870, 11190, 4817, 3668, 26, 3167, 6616, 8938, 7377, 11378, 11056, 4226, 12277, 7468, 8653, 7036, 5425, 2410, 6801, 307, 8329, 10873, 5185, 11919, 9945, 7853, 9921, 8176, 273, 9846, 11976, 10408, 10097, 304, 8989, 6952, 8301, 5886, 12284, 9301, 9881, 9632, 9672, 3749, 6034, 3982, 8144, 7804, 6966, 9903, 11333, 5180, 3475, 4618, 8616, 1045, 11658, 4164, 11008, 974, 10903, 1746, 10907, 11504, 10592, 4186, 9593, 11751, 6831, 8457, 542, 8061, 5271, 6760, 9196, 4249, 12209, 162, 1567, 4289, 2481, 832, 670, 1875, 3453, 5976, 5307, 9586, 3321, 10340, 4674, 11143, 7079, 11615, 7547, 3466, 8811, 9118, 7199, 7772, 12158, 9500, 9293, 11824, 11556, 6451, 1954, 3575, 2366, 4245, 415, 8732, 1664, 9229, 9472, 2713, 11615, 5310, 8273, 1030, 551, 1706, 9175, 8361, 6555, 3196, 5691, 12139, 7974, 7702, 11194, 4610, 8465, 11698, 4693, 6957, 8591, 3439, 278, 3820, 11516, 8061, 260, 7124, 8354, 3031, 2522, 9229, 3134, 2110, 7443, 1022, 9023, 9981, 6783, 3362, 538, 3029, 10678, 2875, 11762, 1989, 8412, 2681, 6709, 1029, 642, 9835, 10739, 7339, 1131, 342, 594, 9000, 11733, 10629, 6709, 10682, 10925, 12256, 6093, 389, 2434, 38, 6736, 10174, 4106, 7853, 8456, 3801, 9878, 520, 476, 10135, 11111, 9398, 10389, 1887, 3848, 2963, 1355, 1832, 2446, 5795, 8921, 9364, 5974, 1766, 11767, 6706, 4968, 7618, 9395, 3842, 11071, 7388, 8044, 11090, 1014, 8719, 6394, 11713, 9754, 6342, 4078, 5047, 7418, 1781, 3489, 11526, 12138, 10991, 4761, 11527, 10862, 5804, 206, 656, 8846, 6448, 6066, 1129, 6818, 327, 262, 2260, 3623, 2890, 11553, 633, 1011, 10033, 7394, 10501, 2638, 4784, 9063, 5481, 3936, 2937, 2453, 10384, 6180, 5467, 6824, 4928, 1162, 12100, 682, 8403, 693, 3074, 11787, 4844, 10127, 4873, 8293, 8378, 10491, 2111, 5142, 1422, 17, 2971, 5240, 8698, 4960, 7984, 828, 3667, 2422, 12067, 4690, 4955, 2861, 1815, 5592, 529, 5770, 10706, 4483, 8640, 3115, 11109, 9056, 4410, 11309, 4233, 5313, 10185, 10638, 6832, 6391, 7564, 4839, 1654, 7783, 1372, 3564, 3547, 10081, 6243, 11859, 2009, 10989, 11053, 1412, 10469, 5880, 10588, 5191, 5342, 7440, 4622, 11267, 4260, 7558, 4245, 9405, 4672, 8989, 1879, 4320, 2230, 4695, 7621, 1600, 11758, 9707, 8857, 11192, 6653, 8702, 3598, 7349, 8837, 2817, 1145, 9141, 7852, 7354, 2770, 6683, 1018, 799, 7985, 5712, 4690, 9528, 4915, 9195, 5654, 4118, 9392, 11083, 6284, 9107, 8864, 10229, 3981, 10835, 3193, 7865, 6750, 7667, 3195, 8783, 5279, 1862, 4926, 5443, 7771, 249, 3286, 5740, 4723, 7699, 400, 5011, 4137, 3741, 10795, 2415, 4558, 7975, 8666, 4166, 271, 1068, 2400, 10704, 979, 2570, 2651, 11009, 3199, 1311, 4402, 12221, 9372, 2190, 11711, 3283, 3026, 7948, 10371, 1753, 7579, 1892, 2266, 607, 7887, 8284, 903, 11756, 3577, 9368, 10650, 9099, 1430, 7351, 6830, 58, 3883, 3750, 9874, 7726, 889, 11420, 11598, 5049, 8335, 8752, 2647, 5297, 10191, 10695, 6041, 821, 8657, 1597, 11793, 9082, 10407, 8708, 4545, 8570, 2545, 9335, 1654, 8759, 6883, 7716, 488, 10206, 3048, 1731, 7913, 731, 9033, 3160, 1497, 8288, 3153, 12173, 3190, 1965, 4911, 2030, 430, 2357, 4039, 314, 443, 839, 2609, 4241, 3444, 280, 2453, 6351, 9337, 4299, 10931, 10453, 4837, 7488, 9576, 7147, 2609, 7884, 686, 2507, 3861, 10964, 2734, 11959, 6602, 8648, 8744, 10969, 12072, 10009, 9306, 7055, 6567, 3197, 7826, 2955, 4304, 1290, 12215, 7250, 8062, 9516, 11303, 4048, 11981, 7851, 406, 2511, 7169, 9277, 8066, 7094, 6312, 4117, 7206, 10237, 2667, 9695, 113, 1471, 1964, 9789, 9192, 4850, 7518, 926, 10499, 2729, 1042, 10925, 291, 8477, 3829, 9531, 10416, 5285, 10528, 7829, 570, 11989, 764, 6971, 1268, 8222, 6380, 11746, 3619, 8576, 11014, 766, 3970, 2105, 1416, 3129, 9835, 2980, 7350, 5062, 3138, 5600, 7542, 710, 8391, 6115, 2992, 7994, 10973, 7223, 3828, 10868, 1609, 4402, 6623, 1537, 8041, 7910, 1348, 2222, 3785, 11609, 1124, 10422, 4110, 10418, 9452, 10792, 6949, 7147, 6590, 2272, 546, 7965, 6495, 311, 6668, 5067, 8933, 10077, 7009, 9962, 5503, 2524, 5560, 6649, 9951, 3137, 12276, 7887, 9790, 4675, 7806, 6533, 2215, 8276, 9880, 2707, 4590, 4561, 8710, 6928, 486, 12117, 10908, 3106, 1539, 10129, 10528, 4176, 2759, 3959, 1676, 2850, 448, 3233, 12115, 2624, 4608, 10625, 11955, 3310, 4887, 4662, 9782, 4514, 2874, 4085, 4610, 459, 2759, 11243, 6078, 6301, 4292, 8675, 9382, 6231, 4220, 6972, 8211, 5129, 613, 8273, 3226, 5987, 7578, 3436, 1357, 2156, 6788, 10801, 9735, 11684, 8327, 10861, 5612, 7752, 1585, 9759, 2893, 10046, 5382, 11207, 97, 6799, 9354, 9689, 6017, 2322, 2546, 3767, 4059, 7575, 8805, 10071, 2987, 1522, 6745, 5784, 1661, 4790, 2835, 356, 9228, 1487, 3692, 7181, 7667, 8701, 7086, 8794, 9922, 11146, 631, 7222, 10146, 4452, 12286, 5383, 1264, 1030, 2586, 6989, 7722, 7118, 11313, 3850, 8471, 1549, 941, 10720, 7787, 4797, 3064, 11114, 11621, 4332, 7672, 2675, 8402, 5697, 7105, 5969, 7176, 2803, 5864, 5094, 5785, 4735, 11143, 2936, 1376, 4352, 1023, 2428, 5197, 4593, 7183, 484, 878, 583, 621, 4974, 8940, 624, 2945, 6797, 10629, 5462, 3459, 3255, 2957, 1854, 3153, 10352, 11040, 11795, 8922, 9890, 12099, 8885, 6782, 11328, 3972, 8055, 10222, 3271, 9702, 2694, 323, 5307, 4620, 3506, 10067, 3440, 4911, 6893, 2506, 7964, 3413, 202, 12187, 1979, 1528, 11246, 11214, 1644, 9871, 11788, 3398, 9177, 5661, 6033, 2281, 2854, 1986, 11325, 6296, 5037, 1053, 9999, 4510, 893, 7301, 61, 3929, 10477, 3431, 1863, 7916, 7369, 7385, 11755, 2659, 4806, 11415, 7886, 1171, 1472, 2046, 3408, 786, 12157, 11270, 4044, 12231, 5149, 8554, 11275, 11663, 8386, 617, 3214, 4754, 7136, 6826, 2102, 11075, 8172, 11568, 5891, 1514, 4541, 7703, 7682, 4668, 7235, 5452, 5536, 5949, 7597, 2722, 11384, 411, 9561, 11739, 4539, 7711, 11708, 6702, 1872, 3581, 5240, 5562, 6130, 11752, 5903, 2620, 8959, 3983, 11342, 4791, 2267, 10462, 7292, 9961, 12095, 6930, 7490, 9138, 11305, 1361, 5188, 873, 10815, 8115, 9336, 8495, 2180, 9711, 5444, 10082, 1097, 5020, 11492, 805, 321, 11449, 9566, 2897, 6269, 10691, 2628, 4585, 3409, 2266, 9207, 3791, 9491, 8410, 9956, 11629, 1825, 9692, 2948, 1750, 4542, 2529, 5603, 10885, 8220, 6398, 3639, 6029, 1249, 9043, 5799, 5181, 6719, 7676, 9917, 6362, 2419, 1248, 2989, 5830, 2133, 2388, 9282, 2875, 12082, 2605, 2259, 272, 9821, 9115, 5593, 2674, 373, 4195, 1295, 5589, 3383, 8626, 8722, 3417, 4952, 10703, 7795, 8971, 640, 1042, 2357, 4887, 3191, 6969, 8277, 10561, 4334, 6853, 5965, 8296, 10479, 6532, 3780, 4057, 12055, 10855, 9078, 10146, 8260, 4503, 11885, 2520, 6473, 1488, 4257, 10402, 9422, 4726, 8171, 11365, 902, 5852, 8366, 11271, 11052, 581, 4004, 10870, 12073, 6398, 1558, 5522, 1343, 2265, 4191, 9454, 7239, 5425, 9493, 11044, 1239, 3515, 4910, 9804, 8965, 5885, 7272, 6665, 8698, 7956, 10661, 5520, 1623, 3628, 1581, 11174, 1593, 8702, 4714, 8133, 7004, 940, 2442, 8847, 2113, 866, 11455, 886, 11364, 1003, 2441, 7662, 9147, 6189, 711, 11866, 5574, 9116, 7861, 8134, 4284, 3580, 1966, 937, 7985, 1593, 5911, 3987, 8442, 5539, 1667, 1542, 1555, 763, 9323, 10948, 3586, 10951, 8652, 5648, 3182, 4919, 6600, 4985, 435, 7913, 6853, 3402, 12143, 4891, 7388, 6499, 6512, 4937, 4753, 6281, 546, 8605, 8222, 6441, 9272, 2291, 741, 4140, 1948, 3897, 82, 10564, 7663, 10529, 8332, 1755, 1814, 1851, 11662, 4590, 7801, 10984, 11186, 2790, 2772, 6816, 2054, 9260, 11025, 11538, 1468, 1245, 4835, 11577, 1611, 10490, 6497, 1141, 8379, 6273, 1063, 2296, 841, 129, 11770, 4078, 2822, 11745, 4811, 4746, 9642, 6360, 3461, 10295, 1551, 3835, 4730, 4672, 12059, 364, 8936, 7520, 912, 2920, 4701, 4764, 10625, 10283, 6709, 306, 10014, 9881, 7452, 4323, 5705, 8799, 635, 4103, 11444, 7928, 4104, 8674, 1634, 8481, 2361, 5148, 2218, 6108, 366, 10318, 7751, 3442, 11657, 2195, 826, 7092, 12139, 4922, 257, 636, 6099, 4609, 7742, 12203, 7699, 10953, 961, 6194, 4160, 8555, 6189, 2469, 11589, 3076, 8480, 12103, 7398, 11487, 3048, 5354, 4657, 3728, 1656, 5701, 4091, 3531, 7297, 12104, 5978, 2541, 12111, 7002, 4847, 234, 4248, 1881, 4220, 5441, 441, 12080, 1612, 8491, 10275, 4165, 11068, 11621, 6517, 5349, 8295, 11456, 8516, 3399, 4975, 6614, 10478, 3871, 12165, 853, 4047, 1241, 10932, 4033, 3979, 8329, 2325, 3736, 3268, 9883, 6296, 1230, 11757, 5102, 1165, 10136, 1353, 2230, 10792, 8889, 7800, 7705, 8941, 498, 8446, 11739, 5496, 11958, 3583, 2056, 6359, 1695, 5261, 5279, 1715, 3397, 5296, 8465, 7467, 10342, 3803, 10824, 5391, 2805, 5004, 4275, 8177, 7865, 8172, 4655, 9170, 1253, 944, 990, 9400, 201, 2653, 11703, 1177, 12065, 3404, 125, 11327, 2093, 2084, 10984, 7305, 5381, 8154, 4986, 1606, 1327, 7254, 12027, 3717, 7053, 3114, 11369, 2106, 9682, 8302, 3474, 1498, 4805, 1364, 764, 9428, 5562, 5099, 3826, 9793, 6511, 1991, 903, 9495, 4427, 2479, 7090, 4199, 12275, 9404, 11762, 4282, 11271, 6294, 2498, 5788, 20, 7051, 4413, 1236, 749, 8817, 3709, 5387, 6500, 4853, 8664, 11314, 2838, 2767, 6328, 5585, 9951, 10435, 2839, 7415, 10281, 7175, 12082, 7422, 2568, 4106, 639, 11835, 10738, 12043, 2711, 1943, 4045, 3832, 9152, 6763, 10989, 6309, 1808, 9242, 11992, 4148, 8188, 6594, 2253, 8333, 7090, 12098, 4502, 9357, 6521, 6572, 3604, 9289, 638, 2219, 3538, 909, 2550, 4056, 6605, 6271, 4784, 2172, 8340, 2315, 8901, 1390, 3278, 2071, 10887, 4545, 9731, 7617, 1510, 6066, 7047, 1275, 5538, 4335, 3893, 6913, 102, 1173, 5284, 4891, 4714, 10152, 11073, 12032, 10687, 12125, 11086, 6790, 8379, 7957, 7966, 5936, 2193, 2163, 2836, 10587, 8746, 12020, 6730, 4093, 1776, 7518, 7892, 5420, 5195, 11641, 6631, 6342, 9839, 8512, 876, 2220, 10484, 8256, 7966, 4400, 11890, 5816, 91, 11376, 3028, 9236, 800, 5398, 9279, 11468, 8706, 4585, 5282, 9367, 11858, 7184, 6259, 1491, 9697, 9833, 8119, 6514, 4137, 3160, 10122, 11858, 1532, 12115, 852, 11638, 4872, 1409, 11843, 3013, 2015, 11142, 2878, 4859, 9623, 2200, 11082, 6088, 2053, 7007, 11517, 10411, 9790, 3816, 10439, 9961, 4387, 5384, 421, 4658, 6786, 11272, 4818, 10315, 169, 4602, 9850, 4629, 1500, 11158, 3843, 7072, 6476, 1786, 7152, 2426, 7605, 5206, 11238, 779, 7521, 10208, 8128, 5947, 7484, 5137, 10329, 10428, 4538, 1056, 12124, 7229, 10432, 4686, 1231, 8205, 3146, 2956, 3106, 3959, 2578, 3068, 8524, 3539, 191, 7533, 1962, 6703, 1300, 4261, 12242, 4528, 8304, 10929, 5337, 9529, 4193, 9361, 7827, 5456, 655, 10998, 7837, 518, 6997, 4793, 1807, 6826, 11831, 3327, 4321, 7088, 1326, 2577, 6360, 933, 8136, 4138, 4432, 11998, 10180, 8409, 3834, 7544, 11888, 11769, 8748, 9889, 9509, 12282, 6132, 1224, 12001, 1955, 5810, 6279, 12152, 6938, 1067, 4381, 4079, 10238, 2410, 7841, 3054, 5885, 2986, 6151, 8566, 83, 835, 9235, 8975, 8948, 9384, 3705, 3963, 1169, 1304, 5155, 1635, 1930, 8424, 5577, 6303, 636, 528, 8165, 3144, 7043, 1612, 4945, 2090, 4722, 195, 7690, 258, 10330, 1558, 1086, 11135, 6879, 2681, 11926, 9240, 1034, 1387, 5818, 5795, 8816, 3466, 1557, 10010, 5333, 2850, 9735, 7685, 4642, 10997, 5992, 743, 371, 2394, 1992, 5175, 7015, 10010, 3330, 2156, 2478, 1121, 2795, 2446, 12024, 8942, 152, 4929, 286, 4125, 8587, 5824, 6037, 7054, 969, 10792, 9765, 8835, 6340, 6764, 4983, 4791, 531, 1155, 9777, 1691, 2796, 6005, 7475, 3129, 6521, 897, 4758, 8059, 1161, 3126, 5681, 1678, 11665, 8277, 10493, 12274, 10656, 8673, 4927, 11063, 8125, 1184, 8736, 9800, 11717, 8603, 8864, 7119, 2672, 3974, 9924, 898, 8772, 2311, 221, 4578, 2043, 9754, 12163, 10553, 4428, 4688, 8026, 10306, 8653, 9616, 6149, 2256, 9155, 5753, 1545, 10004, 6140, 4514, 1448, 9247, 2070, 6357, 9521, 5218, 6851, 8804, 1840, 9995, 4490, 2282, 11183, 4247, 12275, 2124, 6902, 10453, 9064, 2588, 9814, 932, 8042, 10393, 2482, 5215, 11025, 2686, 7443, 9093, 9021, 3135, 8152, 1254, 8248, 6190, 1085, 5058, 338, 9946, 518, 4946, 9486, 9377, 6467, 1357, 9968, 5542, 92, 7814, 1485, 10087, 4150, 8970, 5943, 4524, 11202, 7054, 3286, 3169, 10705, 7292, 11031, 4317, 12017, 9645, 9733, 10513, 1901, 3286, 10186, 5635, 1464, 6452, 9152, 5546, 10882, 10501, 11537, 9649, 3522, 2959, 393, 6261, 10050, 2446, 6206, 6017, 5547, 2907, 2026, 12041, 4076, 2433, 7317, 8818, 6776, 10710, 9646, 6705, 10491, 11769, 5321, 5230, 4976, 5024, 653, 9519, 11063, 9329, 6828, 2888, 8510, 5377, 5273, 9972, 1145, 8209, 9001, 3728, 4942, 5333, 7147, 10133, 5352, 788, 5158, 4717, 7369, 2407, 4079, 9550, 9816, 7123, 10534, 5675, 4921, 306, 6215, 2808, 7151, 3330, 3922, 1151, 10427, 226, 5323, 244, 10865, 9599, 7086, 12185, 4100, 3250, 1959, 7880, 928, 2834, 2359, 4295, 1751, 8752, 6028, 2310, 3219, 6553, 146, 10585, 11742, 10536, 3809, 9040, 5439, 2261, 4174, 4325, 4240, 9968, 1705, 386, 1873, 6685, 10900, 1445, 7443, 1450, 11234, 12287, 11053, 6164, 10279, 9025, 5474, 8713, 3593, 5934, 7107, 11474, 6063, 4302, 2155, 6627, 11381, 11878, 2291, 1090, 2890, 3256, 9735, 2228, 4308, 7372, 1442, 6596, 4635, 7282, 4898, 11974, 6617, 7127, 4196, 11096, 2566, 92, 5537, 1708, 9293, 12072, 2730, 3121, 12012, 12275, 10541, 8132, 10931, 8673, 10836, 8112, 10682, 7705, 3315, 8296, 1354, 4253, 4507, 6792, 12192, 10388, 4014, 6624, 5929, 9595, 679, 6754, 1890, 9341, 1857, 459, 801, 9172, 2157, 5474, 2533, 1657, 9886, 10301, 2115, 1448, 3435, 8087, 2932, 2823, 10904, 8202, 11347, 220, 12198, 11317, 10388, 2676, 7475, 2724, 6026, 5584, 5844, 8448, 1069, 9698, 8126, 9923, 8045, 1316, 11998, 12075, 6944, 7431, 7840, 9858, 10568, 4696, 4387, 8847, 5704, 9504, 6807, 7183, 11665, 10057, 4142, 3423, 9671, 3078, 11171, 5011, 4175, 2130, 7351, 6973, 6706, 2955, 4465, 2625, 8357, 9851, 1790, 9608, 7792, 2505, 4519, 8162, 1668, 5776, 6261, 28, 9497, 6613, 5642, 10942, 8669, 5543, 4371, 12007, 10226, 2696, 7176, 11501, 3170, 11270, 6055, 10505, 3237, 6574, 1313, 11708, 10806, 7244, 5872, 4587, 10373, 677, 9020, 12002, 11551, 8884, 10002, 10270, 2360, 59, 4309, 280, 2671, 7067, 3727, 3957, 1763, 2935, 1411, 11379, 3337, 8938, 9066, 188, 8794, 6381, 1208, 8394, 3161, 9459, 1586, 9233, 10690, 8547, 5945, 5523, 8512, 10413, 141, 3655, 8431, 8781, 5504, 7159, 3247, 4789, 1867, 9326, 947, 5163, 7756, 760, 7758, 7395, 11249, 11442, 7115, 2765, 4536, 11733, 635, 4330, 9857, 10403, 5109, 10489, 7127, 877, 2826, 376, 7495, 676, 212, 8618, 10363, 8724, 4136, 4077, 2821, 8748, 9049, 10421, 12016, 2551, 4418, 2764, 5458, 11173, 7844, 7726, 9645, 10937, 11415, 4123, 7621, 8281, 8610, 9879, 11363, 8553, 71, 5246, 795, 3395, 6251, 5099, 9957, 1036, 10824, 6103, 9096, 7948, 4643, 11131, 8249, 7492, 11639, 2880, 8803, 5958, 841, 12062, 5506, 489, 8494, 11312, 8861, 2861, 1741, 6163, 5017, 9573, 5206, 783, 2995, 8486, 10637, 7259, 5834, 4214, 3466, 5406, 6348, 2575, 11389, 5232, 7540, 10009, 10271, 2442, 6860, 10047, 1939, 11117, 7216, 12, 8891, 10836, 11786, 3655, 3146, 2487, 9646, 3324, 3, 3437, 9946, 1556, 10200, 599, 11408, 8478, 3504, 3060, 7382, 9344, 6132, 6326, 10741, 1678, 815, 5747, 10294, 7704, 3414, 3624, 1102, 6775, 10387, 687, 3246, 8260, 3134, 68, 2733, 5405, 9594, 3465, 305, 11999, 2552, 6745, 4159, 5572, 8199, 2305, 11521, 5785, 144, 4067, 3006, 10791, 4516, 2459, 10725, 6608, 12, 10627, 6175, 8443, 10742, 8361, 6585, 9346, 6609, 8383, 7568, 3104, 4740, 8943, 11087, 9338, 3671, 2786, 11514, 1821, 758, 6056, 5075, 1746, 11057, 9030, 8804, 315, 6684, 6154, 2768, 10331, 8164, 2934, 2709, 11707, 9469, 7259, 6105, 1806, 10826], "output": [3612, 1993, 11177, 8693, 787, 1511, 5565, 9662, 10803, 2795, 5258, 11658, 5045, 7891, 7122, 6868, 1520, 2721, 4150, 7654, 3250, 4766, 402, 3801, 8543, 9367, 8862, 11676, 1843, 922, 4408, 6730, 10015, 6364, 2836, 12168, 5299, 3598, 5364, 9883, 2875, 7446, 9448, 1439, 7900, 1875, 11493, 4130, 9675, 6467, 3658, 6654, 5310, 11042, 11647, 10306, 10902, 8835, 11074, 1452, 1783, 10620, 9172, 11155, 10154, 7243, 6105, 2429, 10484, 4828, 4926, 2577, 8756, 8915, 10598, 8777, 663, 4196, 9051, 9755, 9056, 9962, 8710, 6551, 6987, 1535, 8631, 12236, 6546, 11821, 7788, 9269, 2677, 4059, 4942, 7814, 2213, 4558, 1408, 3246, 10150, 8542, 2280, 2880, 3147, 9712, 8040, 6496, 397, 4665, 1844, 4822, 3747, 742, 3344, 9674, 6732, 9695, 12161, 3842, 3653, 1896, 8796, 3623, 2550, 8981, 6792, 11419, 9556, 12273, 4581, 3061, 6367, 11923, 3642, 90, 4368, 78, 6201, 3399, 2262, 11893, 10416, 7095, 275, 10765, 2256, 514, 5635, 270, 11133, 11019, 4522, 7441, 6850, 4752, 2451, 6078, 1357, 9496, 9982, 8876, 4591, 6665, 8501, 300, 7809, 7358, 2371, 3677, 5192, 4443, 9398, 9165, 7191, 12067, 9284, 11828, 11606, 1369, 9190, 6716, 4102, 11620, 2535, 15, 6803, 7655, 7925, 10612, 5464, 2699, 10370, 2084, 5882, 2386, 2119, 6221, 11784, 11006, 7426, 3942, 2963, 5206, 8067, 3075, 8146, 5289, 9677, 3712, 7726, 4378, 6848, 1835, 11535, 1261, 3033, 5200, 11845, 8156, 11369, 1212, 3696, 11566, 11418, 5902, 2367, 7582, 332, 770, 8844, 9984, 8440, 3414, 1947, 5800, 4393, 12190, 4611, 8815, 8221, 7633, 5724, 426, 12139, 9002, 3691, 1219, 2890, 948, 9526, 8949, 390, 9174, 7821, 8463, 449, 11599, 11079, 5143, 9664, 10572, 43, 6135, 8202, 3461, 11631, 2548, 10475, 2379, 11204, 656, 993, 5427, 10574, 1435, 5922, 11260, 10666, 1004, 7368, 11684, 9398, 6804, 9091, 11809, 9472, 1150, 3480, 9012, 368, 5663, 11327, 8207, 11247, 12010, 155, 1915, 5695, 990, 10756, 2072, 10128, 6211, 8604, 5444, 3340, 1278, 9372, 8905, 12007, 2025, 5005, 1474, 7510, 4006, 1064, 9076, 6182, 7307, 3871, 2154, 5059, 7250, 920, 11476, 3971, 10096, 4758, 10884, 2062, 56, 6765, 4869, 1509, 10643, 3476, 5750, 10936, 7290, 11682, 3124, 2761, 2115, 11725, 3190, 1451, 814, 10257, 10371, 3833, 5467, 6712, 5865, 5152, 1403, 1712, 2930, 9859, 1760, 9656, 8085, 9008, 7303, 10140, 2919, 10307, 10564, 10774, 12094, 2482, 12162, 10273, 12055, 2222, 3490, 2189, 2533, 9976, 2311, 4544, 11210, 8624, 962, 3601, 6971, 11754, 10762, 5223, 8086, 11805, 11919, 10580, 6372, 6758, 4116, 9112, 915, 9891, 10883, 2097, 272, 9099, 4307, 12084, 12203, 2848, 6344, 2178, 242, 1331, 12133, 10915, 1823, 2444, 4842, 387, 3897, 3479, 5798, 1471, 138, 9554, 9419, 6393, 3707, 7898, 5412, 961, 2268, 1851, 10721, 5044, 2424, 4730, 284, 10503, 8635, 5670, 8288, 160, 10957, 10478, 6497, 71, 4462, 12062, 9027, 5730, 9386, 9152, 9142, 164, 5894, 8514, 5286, 6997, 594, 4575, 4984, 5370, 7100, 10804, 1745, 991, 6456, 9478, 6160, 6346, 9120, 2374, 3814, 4033, 9354, 4035, 10271, 4029, 11930, 4808, 1023, 8021, 9986, 7318, 752, 4976, 1353, 514, 5365, 5388, 8987, 1153, 9216, 5668, 5685, 3325, 10274, 8644, 11931, 6333, 6755, 4892, 9411, 10031, 4323, 1278, 4862, 158, 3107, 8665, 7186, 4163, 6959, 4002, 6561, 2599, 6735, 10721, 383, 10422, 3000, 8959, 4372, 11352, 2824, 9828, 2723, 7316, 11255, 438, 3479, 933, 4225, 7464, 12222, 333, 4698, 9549, 778, 10673, 8133, 8017, 4694, 8245, 233, 8975, 6708, 11684, 4973, 8720, 11664, 3466, 2357, 4241, 8795, 7733, 10117, 6015, 168, 6571, 3443, 3385, 661, 4867, 11470, 10943, 8422, 9483, 4305, 5227, 12170, 5561, 9991, 79, 6883, 5976, 836, 1342, 864, 818, 4313, 10900, 11121, 1360, 9628, 2785, 3188, 11004, 8095, 2677, 2488, 5730, 4227, 1767, 3228, 8330, 11841, 9646, 5689, 8458, 8610, 9578, 1142, 3814, 6760, 7958, 649, 10610, 2888, 11976, 11700, 8178, 7553, 1474, 10246, 552, 10669, 7393, 6369, 8141, 11929, 5458, 2513, 4686, 10475, 6527, 2997, 11298, 1803, 7797, 9329, 3871, 6171, 1582, 6471, 8781, 1913, 7524, 4013, 12202, 9165, 3961, 3003, 236, 8453, 2574, 3497, 7001, 9064, 2681, 3833, 10010, 6236, 6494, 5452, 7847, 9733, 10594, 5338, 2384, 6434, 9371, 4679, 11554, 11161, 361, 4311, 764, 390, 5226, 11708, 9066, 10970, 5515, 2598, 7912, 281, 3546, 6918, 7659, 1125, 722, 3629, 10800, 2265, 6805, 10138, 3629, 761, 4771, 12187, 569, 9121, 3186, 9468, 1672, 4967, 1123, 6378, 7388, 7017, 7164, 2866, 3436, 5163, 12127, 1866, 11256, 2121, 5709, 11938, 7367, 1316, 11100, 3412, 4852, 1238, 2082, 9856, 10125, 7416, 11353, 5837, 5149, 12057, 1967, 3203, 12147, 373, 308, 10075, 9042, 1088, 11222, 10425, 2942, 6325, 3354, 4118, 3297, 1340, 1648, 3124, 10199, 7270, 6029, 8905, 4289, 9892, 4178, 1978, 718, 9427, 1459, 1759, 10569, 3026, 10172, 6890, 232, 6254, 11471, 4466, 9393, 11467, 4078, 6795, 3640, 8884, 2569, 5710, 4898, 5964, 1728, 5427, 1881, 2644, 7341, 9465, 8027, 246, 10021, 10284, 8012, 12154, 9909, 5624, 8596, 3646, 7434, 160, 7447, 4869, 1722, 9281, 499, 8518, 2708, 6850, 1062, 11552, 1146, 2299, 4005, 11880, 8968, 11141, 8241, 8554, 1133, 8902, 3249, 10388, 1109, 7192, 2235, 4623, 8565, 12237, 8450, 12208, 1186, 844, 7288, 7085, 8020, 2777, 10069, 3801, 8659, 1505, 9860, 3470, 3607, 11742, 4537, 2988, 3317, 7736, 10997, 7284, 9290, 2734, 7475, 3995, 5539, 11970, 11903, 2741, 7419, 8452, 10985, 1065, 11239, 10995, 2803, 12221, 9223, 10530, 6640, 10625, 8469, 8864, 121, 8367, 5605, 1685, 18, 509, 11338, 6932, 9418, 6714, 4412, 2567, 7230, 11120, 12012, 6432, 10670, 1047, 7367, 4005, 7221, 7778, 4831, 9002, 8705, 8965, 4626, 6533, 10768, 9888, 2072, 3896, 2421, 12019, 5900, 6165, 12287, 9878, 1145, 9832, 3483, 3164, 10120, 6788, 9387, 10418, 5125, 9654, 12226, 3620, 4346, 1772, 4447, 5293, 6167, 5023, 2715, 1711, 11479, 2920, 4550, 11000, 447, 3383, 3980, 4046, 383, 693, 1878, 9273, 147, 6703, 4181, 6770, 7620, 9708, 1825, 1116, 3525, 5580, 10715, 987, 7628, 11525, 6166, 12138, 10582, 5462, 10246, 11857, 5455, 8822, 6827, 2751, 2651, 2901, 7604, 7288, 8318, 4244, 10239, 1042, 12197, 8356, 1821, 5817, 7291, 12008, 414, 2164, 9833, 11041, 3948, 4103, 4634, 3668, 10408, 6932, 2162, 436, 6856, 9000, 6232, 10709, 10903, 9146, 531, 5748, 1166, 2860, 3149, 10046, 9329, 7461, 10513, 11210, 7081, 1706, 7228, 4304, 1088, 5427, 8156, 5173, 9090, 7012, 10480, 9507, 11250, 3727, 11259, 1534, 11922, 100, 5501, 3417, 9755, 7760, 2752, 8659, 12095, 8832, 8279, 10764, 9932, 3141, 10040, 3111, 3374, 2143, 11398, 1737, 7864, 3542, 6224, 12132, 5939, 5765, 2583, 10442, 6024, 5557, 54, 4776, 3339, 9296, 125, 11139, 1389, 1630, 3945, 7942, 9094, 1972, 5175, 10971, 1241, 5720, 11001, 10230, 9999, 2444, 9629, 187, 6286, 7083, 2998, 679, 11888, 12271, 3691, 2279, 1387, 5319, 8671, 6566, 3842, 3280, 5783, 259, 11374, 10866, 7315, 7602, 839, 5459, 11270, 11481, 7549, 2522, 11258, 11664, 1197, 3080, 7697, 10610, 11808, 827, 3203, 7095, 5838, 11971, 10368, 12151, 358, 4342, 492, 9700, 435, 2628, 2057, 3058, 9891, 5664, 6894, 6311, 671, 2773, 8604, 6863, 5720, 1529, 5040, 8440, 6291, 10677, 7768, 9024, 451, 2166, 3178, 10128, 10772, 790, 11135, 1628, 6878, 1206, 9142, 11846, 1551, 2637, 3918, 12000, 2882, 2597, 2683, 3192, 10003, 9576, 7921, 7809, 11441, 5704, 2685, 2053, 8039, 7848, 7130, 1125, 11599, 2756, 10956, 11565, 8130, 1603, 5911, 145, 768, 5366, 11782, 6929, 7956, 4629, 3657, 9613, 3882, 7342, 2025, 3387, 1666, 12146, 5205, 3775, 7445, 8996, 320, 5139, 175, 10083, 3349, 11901, 6436, 9031, 11290, 410, 11805, 3954, 2462, 8093, 549, 7440, 9299, 6183, 73, 7632, 2285, 7325, 6531, 9103, 1, 12164, 10124, 9882, 7474, 4202, 8990, 8054, 7122, 281, 5838, 914, 6173, 7083, 6703, 11049, 9107, 10993, 3267, 7166, 7338, 1725, 9743, 5038, 12260, 11589, 10746, 4439, 11193, 8061, 2878, 11470, 1932, 8551, 6422, 7913, 43, 1623, 6326, 5634, 5758, 10199, 10582, 1835, 10625, 2175, 4342, 11322, 9361, 10852, 5983, 7093, 8069, 10345, 325, 5605, 11498, 1555, 10032, 6138, 4525, 542, 1879, 10185, 2934, 6022, 5795, 75, 10438, 2924, 385, 2759, 8503, 7536, 985, 10112, 4956, 3135, 6987, 8958, 10718, 8140, 1545, 322, 776, 10570, 107, 11021, 3664, 9088, 3185, 11381, 3371, 4812, 3471, 9610, 9179, 5269, 8797, 6230, 6767, 2318, 278, 11579, 4672, 8260, 1108, 1965, 1549, 12125, 1552, 4769, 714, 11984, 8147, 2921, 1389, 5966, 9014, 1715, 5233, 2593, 5899, 1791, 12259, 11884, 5958, 2413, 3397, 11405, 8195, 5404, 9856, 10782, 1780, 2670, 6481, 9623, 6373, 7376, 6741, 6551, 5820, 8797, 803, 2276, 11146, 3661, 7785, 125, 2006, 8929, 570, 1795, 8679, 542, 5633, 7697, 9736, 9795, 7574, 5100, 6432, 1314, 6302, 610, 1103, 3689, 11451, 8996, 11092, 9358, 8446, 8370, 6206, 764, 8463, 9095, 3543, 6998, 4478, 2470, 5554, 3176, 4722, 9255, 9046, 5906, 5560, 2150, 9384, 7886, 9896, 675, 5694, 7337, 5862, 961, 3731, 10082, 8969, 2553, 12261, 10622, 3923, 2846, 11054, 7272, 7421, 784, 12064, 8307, 4626, 1283, 7203, 8799, 3734, 8190, 4231, 3618, 4529, 10829, 4432, 10511, 11048, 11136, 6778, 12062, 4308, 8394, 5184, 58, 1360, 11082, 2543, 9114, 7746, 10043, 9738, 573, 11609, 2885, 11518, 10259, 440, 7271, 5567, 3296, 5098, 6743, 6336, 2659, 11228, 9310, 4663, 8681, 10329, 2699, 9103, 88, 3491, 11370, 6781, 8742, 9497, 6989, 5727, 10332, 3903, 7786, 3379, 4252, 10306, 6162, 10824, 2632, 4420, 8103, 11110, 8295, 11261, 11181, 11266, 12026, 4189, 5738, 414, 11220, 1271, 6295, 8042, 8226, 8038, 4462, 365, 11208, 10757, 2524, 1004, 11821, 12021, 11424, 3414, 12256, 3462, 605, 7124, 11804, 2385, 6810, 8567, 10460, 2723, 3868, 10632, 3038, 4736, 5956, 35, 11838, 3192, 6466, 10433, 10512, 8851, 5889, 4376, 2830, 9614, 10576, 11677, 9262, 6054, 9183, 4532, 3185, 9355, 6339, 8620, 11891, 2551, 7924, 4780, 5837, 422, 2646, 1957, 8098, 4344, 7428, 5084, 4957, 11387, 7266, 11380, 3403, 10796, 9347, 11673, 4896, 9095, 6344, 8215, 9196, 5168, 4890, 12250, 660, 3389, 7590, 7948, 947, 1742, 7474, 3076, 4965, 8372, 685, 4867, 8022, 11167, 10210, 6396, 3617, 4291, 11241, 2809, 4960, 8204, 3232, 7931, 606, 9780, 3384, 6433, 10526, 8045, 8680, 7714, 5702, 8886, 8774, 8760, 10027, 2490, 1783, 2898, 432, 10131, 9285, 6585, 6907, 2150, 10348, 4279, 8073, 5735, 381, 11176, 3479, 2388, 9290, 1408, 2985, 8124, 3899, 9163, 9470, 11055, 10309, 10102, 1246, 9707, 414, 3051, 8442, 4494, 1903, 2102, 5708, 11461, 8261, 8497, 2116, 3013, 2129, 290, 9208, 1577, 11579, 9812, 2072, 6751, 5251, 8279, 4798, 10337, 3676, 8459, 4776, 5651, 5797, 3146, 1639, 8406, 6526, 4148, 9033, 5904, 1075, 9781, 1229, 12264, 11045, 5282, 9153, 11380, 7137, 6233, 1602, 1345, 8509, 6716, 6724, 2593, 5439, 3803, 10331, 8870, 1687, 6980, 9798, 11348, 1803, 9187, 4445, 446, 4655, 9160, 12102, 3569, 11322, 1532, 6464, 10066, 3466, 11003, 9842, 446, 1632, 8588, 2421, 7618, 6154, 1241, 10053, 890, 10060, 3883, 1251, 9204, 3746, 7867, 788, 6785, 4087, 3705, 5933, 6186, 6744, 6821, 564, 7718, 9246, 576, 3452, 6817, 8698, 11803, 11214, 11454, 3593, 6422, 1692, 12233, 10415, 8049, 7803, 11817, 7006, 433, 8486, 2698, 5125, 5238, 4405, 6701, 1732, 4503, 6322, 7311, 10797, 9467, 1245, 6234, 10983, 10421, 7516, 2180, 5365, 10498, 8441, 4040, 12061, 6630, 7147, 10859, 4810, 9586, 6938, 9021, 11649, 5013, 11365, 8819, 10753, 3217, 6160, 4922, 10656, 11976, 3252, 10353, 110, 6556, 6255, 5520, 8610, 1976, 5853, 468, 2312, 4505, 3176, 9303, 11557, 6453, 1264, 5315, 6591, 7120, 9058, 4828, 10854, 125, 12264, 6325, 8223, 9534, 1266, 1852, 3091, 2621, 6709, 8961, 2816, 8251, 2296, 5777, 1654, 9874, 3216, 2775, 2547, 11044, 4178, 356, 8268, 11933, 8845, 5475, 28, 11718, 12253, 7786, 8455, 1154, 331, 10776, 4569, 7562, 10641, 9943, 613, 4922, 7705, 2972, 4703, 8935, 813, 8158, 8565, 2093, 11320, 10421, 4096, 1100, 4021, 1621, 55, 7760, 1880, 1260, 9207, 4077, 4431, 2114, 4185, 2909, 5645, 3534, 10331, 11043, 9841, 1323, 5084, 7477, 10856, 11662, 8064, 9928, 10894, 2822, 9004, 9746, 6838, 3586, 3745, 3136, 2058, 5503, 9900, 3003, 8240, 6922, 7545, 11013, 2049, 6228, 7435, 1042, 9941, 385, 7890, 9109, 9188, 6966, 9821, 8504, 4844, 5723, 4337, 6467, 4929, 7335, 4352, 4528, 5577, 10224, 4092, 2211, 11347, 6825, 6351, 3224, 6627, 4124, 2123, 10760, 9931, 1744, 7191, 3277, 7543, 1370, 4474, 4796, 1171, 11353, 11482, 3428, 8709, 5255, 9120, 3319, 9643, 4361, 9280, 10469, 3033, 3652, 4475, 6484, 6612, 6551, 11253, 9612, 10863, 8217, 5237, 6721, 4735, 842, 4922, 1745, 4841, 10256, 6981, 4098, 11790, 11571, 10702, 3853, 7869, 2263, 3512, 3201, 1787, 582, 9475, 1546, 9382, 1436, 8272, 3922, 7518, 10095, 7575, 218, 9425, 8580, 8210, 8742, 10301, 5407, 7203, 8744, 8345, 8523, 4680, 6518, 861, 8742, 9002, 7040, 9656, 1782, 3081, 7774, 11931, 7635, 9951, 766, 8145, 7095, 8673, 4956, 5950, 11416, 5338, 11570, 2987, 10553, 8551, 9338, 4319, 3094, 6314, 3102, 3181, 6836, 3196, 12256, 4133, 11030, 5102, 653, 11506, 6565, 6008, 3583, 10058, 2598, 3839, 5920, 9829, 10722, 11213, 2975, 4151, 10073, 11777, 10085, 3303, 1135, 842, 1922, 1224, 11229, 11311, 10613, 6022, 3498, 6385, 11538, 369, 12148, 10293, 63, 9620, 4785, 6092, 6391, 8852, 4523, 6, 799, 11385, 8690, 8548, 9845, 6371, 8348, 3389, 2170, 10757, 7419, 6053, 336, 1843, 6290, 7601, 1831, 2513, 4578, 4360, 12133, 1105, 7238, 10162, 7048, 10372, 7862, 10043, 921, 3326, 1559, 5606, 3990, 7939, 10163, 9427, 8099, 6312, 8951, 11807, 1454, 4506, 10831, 6619, 3201, 11146, 1735, 11890, 4690, 3617, 327, 444, 10471, 4093, 2973, 8312, 12025, 9724, 1445, 2629, 9862, 3569, 10371, 6393, 7518, 3690, 7807, 9876, 644, 4127, 6633, 4460, 12099, 11999, 4787, 4262, 4718, 10604, 8645, 8354, 11149, 5302, 1845, 6558, 3216, 56, 1656, 11270, 10644, 10266, 10815, 9037, 5291, 7411, 6628, 3019, 1722, 11544, 1189, 5910, 5871, 2975, 1619, 909, 11538, 7951, 3403, 7994, 8604, 10828, 6222, 5548, 11516, 7253, 9018, 6499, 10688, 2327, 8463, 7826, 8762, 7325, 11236, 5520, 10874, 6344, 7102, 7698, 7682, 7261, 6471, 3028, 8218, 8635, 6007, 3486, 7394, 1985, 3510, 1813, 9509, 4624, 11390, 567, 542, 6595, 6459, 65, 2059, 7783, 4035, 7356, 3164, 9724, 1751, 6534, 1805, 3485, 7420, 8896, 6132, 11818, 11655, 4491, 322, 8995, 10917, 10784, 5224, 11987, 2106, 2114, 403, 742, 3966, 8591, 8551, 7933, 3162, 777, 9431, 7930, 1325, 4498, 6567, 3724, 9784, 1469, 7431, 9097, 10319, 11402, 12254, 11115, 9211, 2362, 4938, 12152, 9280, 6443, 7547, 5941, 6740, 4794, 5438, 5849, 6379, 6410, 5701, 3968, 6057, 7490, 8529, 1783, 1275, 10241, 8674, 9384, 4876, 3675, 1969, 3349, 10532, 10087, 11405, 11568, 6648, 12004, 3084, 1803, 8412, 7602, 10786, 5247, 10175, 10327, 8079, 3850, 7270, 6696, 5864, 4027, 6205, 614, 10950, 3092, 10184, 7015, 2956, 10279, 11795, 8864, 5014, 5640, 6805, 8065, 2493, 6391, 9196, 11404, 5287, 12018, 10410, 8562, 6438, 32, 1248, 1555, 8436, 11031, 9604, 1353, 8309, 2836, 2651, 7752, 9422, 1298, 4967, 2872, 7462, 3871, 4879, 4338, 2030, 3779, 11586, 4722, 11475, 9915, 8805, 1551, 10465, 11871, 5999, 1263, 11452, 9697, 980, 6052, 7770, 1773, 8877, 10123, 1121, 311, 4020, 11184, 3382, 1953, 7839, 6513, 327, 2738, 645, 11151, 1777, 1020, 7881, 4932, 3271, 2491, 9400, 12060, 4813, 8693, 9076, 2039, 3554, 11530, 589, 558, 3389, 5354, 6466, 9036, 2812, 8828, 2959, 3198, 10839, 8934, 11820, 3790, 8581, 4477, 2983, 4570, 2771, 5730, 11879, 2800, 11552, 9184, 4614, 10353, 6769, 7880, 2706, 1198, 11412, 10007, 11731, 4261, 3528, 12063, 8874, 6320, 9606, 2110, 2855, 2758, 991, 948, 6422, 6055, 6891, 9784, 4235, 6565, 8824, 2114, 6120, 1332, 2792, 3637, 9920, 1518, 4904, 5590, 8028, 12168, 10418, 11742, 1233, 10398, 355, 7560, 9566, 5594, 5504, 4103, 10915, 2131, 5561, 8510, 8014, 2422, 8194, 8522, 1577, 6869, 4902, 10302, 9909, 10684, 1418, 11536, 8181, 5587, 11921, 323, 9399, 414, 4741, 7320, 4545, 2945, 2144, 2238, 2401, 10370, 4771, 8453, 7704, 2305, 1512, 3076, 4133, 1988, 3230, 865, 6594, 7145, 3420, 11359, 2169, 8671, 4563, 6428, 12152, 3120, 6160, 12176, 3624, 8687, 9471, 11906, 12153, 2913, 3815, 6922, 9106, 127, 8256, 9584, 7020, 679, 923, 8505, 10257, 11175, 3452, 9394, 8399, 1134, 3463, 1426, 10325, 11652, 793, 3194, 10392, 3021, 3282, 6649, 829, 2943, 6177, 11991, 2251, 10829, 9698, 11696, 1045, 1062, 6390, 5655, 7261, 8615, 7955, 11826, 623, 7312, 11997, 4895, 10608, 670, 4664, 1064, 5455, 3976, 645, 4241, 12048, 7081, 3585, 7712, 2484, 5943, 4409, 5435, 9379, 431, 5020, 9018, 9901, 628, 1655, 12005, 6477, 1334, 2443, 5187, 3435, 11283, 2205, 10243, 4731, 9202, 11695, 10427, 4418, 875, 3628, 3830, 9421, 31, 1578, 3766, 7598, 3733, 4377, 2431, 10626, 2965, 9786, 8746, 10683, 802, 1136, 6809, 9397, 8693, 502, 4457, 11716, 5802, 1014, 1326, 7335, 2196, 105, 2334, 9962, 6876, 11131, 4144, 10362, 10351, 2367, 8607, 9972, 4436, 10153, 8619, 1741, 10385, 6566, 6827, 5499, 4331, 8837, 346, 7163, 3463, 12163, 2608, 6461, 1243, 1256, 2583, 8051, 11333, 717, 5931, 4071, 847, 6010, 9818, 1555, 11060, 4489, 1248, 3882, 3146, 3283, 7302, 12006, 2418, 1352, 4087, 9025, 9614, 97, 1907, 6674, 11119, 11202, 2790, 5472, 3695, 6707, 6864, 6126, 11057, 11054, 92, 3449, 7241, 11555, 10219, 467, 6756, 6048, 2824, 561, 412, 2438, 7993, 829, 7291, 11268, 4733, 7706, 8893, 5722, 6290, 2228, 3153, 9967, 12244, 5949, 4991, 6202, 5386, 11534, 7355, 6830, 2155, 1421, 6767, 5561, 56, 5993, 8852, 2308, 1901, 7919, 682, 6277, 10679, 12212, 174, 6533, 6883, 8665, 4547, 11565, 4795, 4287, 5392, 8153, 6189, 11318, 7287, 10320, 6844, 790, 2960, 5627, 11501, 7177, 10166, 10026, 839, 6428, 4662, 11928, 8573, 11389, 147, 3428, 6797, 7571, 1523, 1519, 1760, 9670, 8375, 9151, 11828, 2634, 1482, 1707, 11754, 7183, 10990, 6259, 1915, 11613, 11028, 8435, 10460, 8406, 10314, 2297, 9113, 3905, 4266, 1416, 7874, 1166, 10254, 5245, 7510, 7679, 7438, 7927, 748, 10231, 91, 11117, 4755, 3627, 6147, 1486, 10032, 11089, 4643, 7134, 1002, 1894, 9917, 11455, 10825, 4843, 9939, 5016, 4517, 9154, 9012, 2977, 832, 397, 2932, 363, 9570, 2320, 2719, 5992, 12046, 494, 12139, 7631, 3308, 5751, 7366, 9359, 9708, 9948, 28, 6979, 8007, 11253, 10809, 2276, 10233, 11446, 917, 656, 1080, 1394, 4166, 5616, 9991, 7237, 2421, 2331, 8265, 292, 1888, 5855, 9541, 1576, 8875, 5529, 871, 5694, 1388, 11922, 12269, 10065, 9496, 726, 11354, 6998, 4578, 6333, 5525, 3396, 1247, 2587, 1339, 4618, 738, 8795, 9034, 11063, 11439, 4975, 5200, 912, 12077, 3779, 1778, 9968, 2392, 3120, 33, 1532, 6299, 3193, 11023, 1107, 3016, 7038, 2148, 507, 7277, 549, 7225, 4350, 651, 746, 186, 3864, 7219, 8045, 4993, 2070, 11724, 11942, 2959, 7097, 9337, 10705, 38, 56, 679, 249, 2737, 2740, 10005, 6298, 1189, 9105, 7468, 533, 2263, 8050, 2144, 8885, 9661, 3659, 9001, 4433, 5291, 10527, 1868, 3313, 12098, 11929, 1230, 12210, 5779, 5607, 5604, 4520, 3865, 4973, 8229, 7941, 8021, 8578, 2040, 11950, 12090, 10691, 4407, 1074, 8787, 5338, 6732, 520, 10189, 4510, 3948, 1512, 4501, 5501, 11294, 7920, 5285, 6116, 11598, 926, 10127, 5172, 10998, 2768, 5375, 4524, 266, 10221, 10000, 3261, 7038, 4665, 11929, 6192, 3351, 3182, 2652, 2884, 10267, 9806, 8189, 11967, 11751, 1788, 4066, 751, 162, 2848, 10301, 7709, 2204, 9831, 2775, 9928, 3874, 12005, 254, 8495, 9967, 3186, 7761, 9731, 12174, 8787, 3246, 3660, 281, 5040, 8678, 5893, 12157, 10935, 6299, 4685, 9877, 9955, 11962, 7852, 5784, 2071, 5259, 10194, 9429, 11714, 9382, 7698, 10438, 12170, 6652, 5722, 1589, 8363, 193, 571, 86, 8489, 11508, 6271, 5843, 10188, 10870, 391, 9064, 10511, 9931, 197, 4086, 2962, 7782, 1618, 352, 8924, 11321, 11174, 3002, 11495, 8402, 5365, 11296, 8398, 1110, 8315, 4389, 9121, 4571, 10181, 9293, 11062, 1852, 1728, 1683, 298, 6550, 10584, 565, 11844, 8525, 7608, 11610, 7611, 12172, 4971, 5111, 844, 1965, 9915, 11694, 11232, 651, 3224, 3991, 6759, 4730, 10724, 3402, 7759, 5430, 7253, 447, 5324, 5403, 5345, 733, 9738, 267, 7049, 8535, 11183, 9499, 7912, 9006, 11867, 501, 3469, 3490, 2449, 4909, 8337, 7468, 9278, 180, 7074, 11059, 5841, 8536, 874, 11441, 11514, 11854, 11505, 3280, 6500, 3193, 11569, 5313, 9934, 10345, 12211, 3352, 2544, 6007, 135, 11672, 7041, 10658, 4257, 8491, 884, 11445, 5437, 7725, 2960, 4587, 11333, 5422, 8653, 10372, 11983, 9447, 938, 9400, 6005, 2448, 2604, 11807, 1649, 5131, 6757, 8567, 5121, 11614, 5863, 8197, 11085, 1143, 10368, 4832, 8374, 6503, 10835, 10489, 11541, 4723, 11025, 930, 5365, 1205, 8442, 952, 11585, 191, 249, 645, 809, 3830, 8773, 11545, 9595, 2944, 4365, 742, 9212, 1579, 7025, 6925, 10709, 3414, 2746, 9988, 10442, 8341, 3154, 1191, 10261, 11710, 8293, 4157, 11774, 11383, 11201, 5468, 10049, 11817, 2448, 1803, 9428, 7053, 7400, 5248, 8535, 7793, 5846, 2587, 3806, 7156, 2560, 6652, 8927, 8187, 10929, 1767, 9174, 3777, 3535, 8067, 6391, 10667, 6823, 1663, 2154, 4097, 62, 443, 11707, 7845, 11318, 4023, 11540, 10174, 6054, 5513, 1779, 8519, 716, 4318, 3892, 4551, 9727, 11742, 6921, 3029, 5423, 7007, 8115, 6979, 11400, 11214, 9751, 10064, 6683, 8191, 9331, 8862, 1225, 4050, 7918, 11604, 3694, 7483, 10939, 6495, 1110, 10912, 11290, 7631, 517, 9878, 8661, 2574, 1946, 10208, 6738, 9414, 8761, 10929, 9847, 6183, 2046, 10310, 10255, 1635, 5541, 1694, 3335, 412, 1412, 3445, 7325, 10757, 9558, 10119, 4216, 2298, 8700, 1935, 1843, 4456, 7529, 8251, 4852, 7378, 3902, 867, 4297, 749, 4274, 9100, 9186, 7242, 10306, 6771, 11844, 1270, 8810, 647, 11994, 8097, 9011, 6328, 2620, 3541, 3720, 170, 2352, 11113, 7942, 10457, 9941, 2996, 958, 9039, 1294, 11559, 9469, 6104, 2194, 9848, 2699, 5532, 11519, 3722, 5811, 8225, 7270, 11574, 4712, 5905, 1103, 399, 346, 555, 2686, 580, 2244, 12185, 8548, 6970, 2610, 364, 8663, 8504, 8246, 6685, 6297, 8590, 561, 9838, 7324, 8975, 3903, 7250, 5544, 9407, 994, 677, 4124, 8290, 5399, 5469, 174, 5491, 8109, 4539, 11493, 7890, 8177, 699, 6020, 8011, 1266, 9692, 11029, 6689, 11712, 281, 10565, 5926, 6184, 3977, 4313, 4150, 7217, 7148, 5514, 2962, 116, 8010, 5616, 10303, 1954, 2079, 7080, 7901, 10663, 6088, 7152, 10658, 8385, 5804, 12165, 8869, 4349, 5620, 2293, 1708, 9516, 4685, 6926, 639, 12263, 8208, 2640, 3184, 9107, 11678, 677, 5291, 101, 4126, 4354, 10534, 1210, 10588, 2582, 7361, 8875, 10137, 4025, 5460, 7547, 2858, 7296, 3986, 3483, 3337, 3764, 8110, 8622, 182, 8359, 8750, 5900, 3711, 12151, 472, 5044, 6184, 5594, 12232, 4656, 1994, 1868, 8935, 10541, 6248, 7737, 6098, 4825, 7453, 12006, 2031, 3677, 1288, 4846, 3040, 9061, 5351, 5885, 3134, 7502, 1911, 2028, 1646, 3497, 11378, 5450, 3805, 4447, 8250, 3645, 7491, 4153, 1674, 3968, 6696, 11128, 2307, 1591, 11275, 2952, 1030, 621, 6577, 2283, 6781, 9124, 2834, 9481, 8400, 10654, 5505, 8576, 3253, 2980, 684, 490, 2014, 4697, 11993, 6415, 3548, 4196, 5594, 1953, 10959, 394, 2504, 10303, 10350, 6602, 1180, 10200, 11986, 9409, 11642, 3056, 5607, 550, 2820, 6123, 9582, 11887, 7287, 427, 10565, 5160, 11617, 11993, 8144, 2501, 3796, 4188, 5666, 9494, 2105, 406, 8696, 6151, 3651, 7373, 3464, 5876, 3949, 11429, 3601, 7637, 11709, 874, 2303, 9758, 192, 6432, 12051, 9274, 8940, 1893, 4683, 5081, 6197, 8355, 8620, 6089, 5384, 6645, 7545, 9261, 4766, 3498, 1389, 11867, 4316, 12208, 11685, 9322, 370, 4742, 2205, 69, 5524, 8118, 6796, 7776, 5089, 7492, 10399, 2531, 9461, 4717, 12050, 2428, 1140, 5064, 10623, 9777, 635, 4206, 3795, 6674, 12070, 11379, 8417, 10435, 1231, 725, 3912, 7709, 3253, 67, 4495, 3592, 8554, 11268, 1355, 4389, 10169, 12044, 9546, 9020, 11445, 10964, 4907, 11156, 5948, 6560, 10305, 1342, 4519, 4786, 3024, 9332, 9564, 9961, 12061, 2061, 9407, 3747, 8512, 10874, 9277, 2982, 8460, 8565, 4108, 1241, 6885, 6336, 1848, 3484, 5402, 12270, 5684, 11456, 4372, 5219, 664, 2024, 4245, 12039, 11330, 12008, 3602, 9601, 1767, 10753, 952, 5626, 4935, 7497, 10330, 6643, 11314, 10023, 3484, 11234, 6056, 5380, 2625, 6570, 9142, 1931, 418, 1965, 411, 8587, 10627, 8148, 6131, 7230, 3398, 9952, 7048, 1137, 4052, 10969, 11814, 5089, 10043, 384, 11490, 9795, 1441, 10902, 4119, 43, 2706, 2428, 2580, 8077, 5992, 11885, 6415, 10478, 8629, 7809, 2355, 6817, 11860, 3827, 6175, 5521, 1092, 9117, 4436, 7194, 6433, 5711, 1541, 6478, 3749, 7533, 9136, 1420, 9200, 5844, 1005, 4179, 1752, 1588, 9291, 11050, 2897, 5376, 10682, 7348, 1140, 3638, 7961, 1755, 2098, 1625, 10586, 10364, 9043, 3478, 6049, 4991, 3595, 8508, 3081, 3831, 76, 9396, 12025, 10473, 10323, 6091, 7711, 3542, 8748, 10338, 6488, 3380, 10457, 9442, 4412, 10887, 4123, 4463, 2000, 1801, 7290, 8746, 3315, 1857, 4097, 8772, 10781, 462, 7459, 5016, 6108, 6336, 7630, 9009, 5673, 9976, 4506, 2887, 1086, 11650, 8050, 295, 5844, 3943, 9101, 9793, 7482, 3275, 6316, 1913, 10866, 6415, 3683, 6652, 8992, 5231, 6965, 6957, 9872, 10123, 9844, 8389, 1796, 10442, 8390, 8027, 5698, 7026, 5005, 11724, 2250, 3707, 10607, 5031, 9906, 1068, 8935, 2386, 11310, 8468, 889, 7993, 1861, 10428, 887, 489, 8816, 2810, 8122, 6403, 3011, 6340, 1249, 118, 3165, 5294, 3269, 9027, 8959, 4297, 2312, 398, 4001, 11660, 4008, 10626, 4163, 3883, 9216, 6639, 7178, 414, 9657, 12226, 7484, 1779, 1342, 8125, 11941, 11807, 2623, 1504, 1451, 3175, 5006, 823, 3675, 5333, 216, 3151, 11500, 10646, 5760, 5386, 7899, 8860, 4587, 606, 4475, 7868, 11926, 304, 8470, 6790, 472, 11928, 1544, 10693, 8337, 5576, 6277, 11009, 4835, 6589, 11852, 4915, 4463, 2247, 12131, 10484, 932, 11305, 3832, 1105, 7374, 8973, 7112, 10116, 10851, 7399, 8222, 7974, 3474, 6692, 10557, 11167, 4504, 4463, 2735, 6502, 10271, 5523, 6741, 3531, 5830, 3164, 410, 3610, 8489, 7160, 9770, 10717, 8970, 6020, 6015, 4058, 6399, 2400, 6765, 10552, 12277]} \ No newline at end of file diff --git a/tests/eval/_ntt/ntt_4096_main.c b/tests/eval/_ntt/ntt_4096_main.c deleted file mode 100644 index 6a310993b..000000000 --- a/tests/eval/_ntt/ntt_4096_main.c +++ /dev/null @@ -1,470 +0,0 @@ -#include - -void ntt(const int *array, int l, const int *twiddle, int p, int *dst); - -void test() { - const int l = 12; - const int n = 4096; - static const int arr[4096] = { - 8610, 9001, 11901, 244, 9716, 3762, 508, 5194, 2833, 6286, - 1870, 7721, 2636, 3510, 7438, 3838, 913, 8628, 6715, 10130, - 6228, 1560, 11720, 11027, 9266, 7501, 5365, 3892, 7142, 8834, - 9214, 7200, 11575, 6039, 9807, 3028, 5726, 5237, 4822, 11784, - 11447, 10869, 5232, 5624, 2474, 7818, 7380, 10717, 4312, 5268, - 3595, 11683, 12096, 7246, 7595, 10986, 5923, 1363, 7691, 3804, - 1334, 12034, 6239, 62, 11476, 10142, 8091, 6494, 2249, 8658, - 6598, 9883, 11203, 10171, 6106, 4553, 7886, 7012, 1285, 4153, - 11806, 9707, 6347, 10150, 2615, 10291, 11699, 6175, 11816, 9082, - 12287, 6936, 2914, 4864, 6445, 1852, 11927, 8417, 4649, 9730, - 8680, 7514, 3352, 7131, 4100, 3463, 8519, 9746, 11323, 631, - 10169, 11204, 2550, 10464, 7270, 3700, 5760, 259, 11856, 9091, - 9065, 572, 3505, 1468, 10888, 1192, 10674, 10855, 5072, 1213, - 7125, 9420, 8687, 5173, 1055, 1147, 7252, 8742, 11200, 5165, - 6021, 1960, 11266, 10951, 10808, 11834, 2767, 3098, 7786, 9023, - 10505, 7608, 11780, 2082, 4697, 10229, 5455, 7389, 117, 466, - 9606, 5720, 388, 12126, 213, 10763, 5558, 2912, 1863, 10456, - 9939, 21, 3994, 6613, 6797, 12249, 3569, 12075, 6720, 6534, - 12056, 480, 2596, 11875, 11556, 4037, 10223, 1550, 10894, 1967, - 552, 6568, 9288, 7348, 10275, 10866, 5936, 2964, 501, 1395, - 8540, 10628, 10596, 1073, 1461, 380, 2597, 11409, 8802, 11714, - 11370, 3692, 2261, 11007, 6079, 7974, 8675, 5646, 11332, 4065, - 3713, 6360, 4881, 9601, 904, 6188, 6433, 6421, 8399, 2803, - 561, 8470, 2995, 562, 3061, 800, 2819, 5547, 11344, 861, - 4620, 2479, 7547, 1041, 8966, 7150, 11700, 7953, 9611, 2673, - 3403, 10809, 4669, 1139, 6117, 5848, 9572, 10380, 9770, 11203, - 11421, 3347, 7702, 1193, 5619, 7338, 1164, 2294, 30, 2762, - 8655, 4967, 8641, 9882, 4503, 9023, 10352, 9793, 9491, 4345, - 2542, 10390, 7940, 8832, 6810, 12170, 621, 5793, 8663, 293, - 4379, 11450, 3199, 6900, 10926, 746, 10761, 3770, 750, 8731, - 9868, 11882, 10116, 3946, 10706, 12136, 10111, 3230, 7349, 5413, - 1164, 7898, 1554, 6436, 4681, 7199, 5480, 8846, 2832, 3564, - 4017, 1029, 12190, 4404, 9032, 5762, 78, 9827, 4258, 6350, - 10862, 5698, 9792, 2802, 9438, 10027, 667, 10066, 11354, 186, - 5503, 4064, 9509, 6862, 3062, 11742, 699, 1544, 4997, 2529, - 9609, 8079, 2986, 7866, 7497, 3999, 2152, 4991, 8751, 9503, - 745, 7145, 11541, 8811, 9645, 5994, 11993, 9706, 6520, 7032, - 9156, 7898, 3118, 1768, 8951, 4733, 7362, 7420, 7754, 6636, - 2128, 12089, 5402, 8247, 9230, 9441, 9123, 10630, 9776, 1645, - 1070, 11068, 4796, 11389, 10246, 8463, 5012, 308, 8493, 12205, - 6888, 625, 3843, 6067, 1963, 10066, 646, 1587, 4137, 10228, - 8387, 6184, 6443, 6786, 285, 7566, 6586, 11211, 7093, 5737, - 6902, 7526, 3674, 3899, 5804, 623, 7544, 1192, 11439, 4172, - 1566, 2831, 11613, 5465, 1743, 4576, 8533, 11830, 933, 9115, - 4406, 4658, 8962, 10185, 11940, 2622, 179, 7496, 2393, 6149, - 2837, 4300, 8267, 8925, 134, 355, 3693, 3657, 3132, 7496, - 5497, 4084, 2125, 1670, 1777, 5380, 2312, 11737, 7109, 11977, - 7266, 4222, 6205, 11090, 10742, 6380, 8572, 9373, 6504, 7430, - 4586, 6225, 3949, 4719, 265, 7231, 12049, 2908, 9770, 4957, - 5902, 2917, 11491, 11942, 8730, 9293, 1462, 2570, 5985, 999, - 9654, 7193, 1970, 6988, 6028, 5269, 4537, 6442, 7247, 6193, - 7502, 10331, 2729, 1341, 1847, 7429, 3870, 3071, 2029, 7358, - 1542, 304, 6279, 4017, 4081, 2783, 10406, 1744, 8159, 1512, - 2964, 3144, 4816, 2091, 536, 3153, 8813, 10605, 5150, 3686, - 8099, 9084, 11738, 11257, 7749, 5852, 3158, 5948, 4770, 800, - 8487, 7464, 6359, 3284, 3495, 5361, 958, 9090, 8614, 6163, - 6090, 9147, 11412, 7650, 2405, 34, 5533, 7610, 10309, 5811, - 7956, 4736, 8223, 8996, 11694, 487, 8578, 717, 9562, 8961, - 6910, 12009, 5877, 7606, 3700, 3428, 2562, 1206, 10355, 3774, - 512, 4979, 7943, 997, 1544, 100, 9688, 6687, 1046, 10847, - 11854, 7657, 5145, 5278, 11285, 10314, 8390, 7934, 10577, 3957, - 11916, 11255, 6784, 1341, 11766, 8008, 6970, 361, 5019, 9739, - 6262, 11341, 9231, 7542, 3779, 5280, 9273, 5501, 1120, 3456, - 821, 8668, 8778, 9557, 6335, 2086, 2041, 5906, 1744, 1035, - 442, 9247, 10006, 9915, 8974, 3208, 6134, 10598, 8150, 10353, - 11846, 3701, 5655, 8570, 1456, 1574, 2150, 7419, 5477, 7484, - 6493, 10425, 6318, 9514, 7695, 6313, 1149, 9373, 1506, 10521, - 6927, 112, 11280, 9014, 11037, 1414, 6512, 4852, 4974, 10961, - 7262, 8120, 2884, 9896, 3950, 11798, 7188, 9198, 3761, 6366, - 3286, 2296, 1371, 1975, 10666, 9927, 7747, 4333, 1599, 8644, - 7561, 6006, 741, 9185, 7578, 10633, 1662, 12029, 5761, 791, - 12016, 5906, 271, 7511, 10554, 338, 10624, 7266, 1119, 2622, - 12147, 1774, 12225, 7424, 10185, 8097, 6748, 5573, 4632, 8820, - 3683, 2348, 6963, 1356, 6480, 6615, 5104, 5935, 9923, 10082, - 6897, 4587, 516, 1314, 7258, 1452, 1850, 4949, 703, 11338, - 700, 132, 7838, 5973, 5991, 6704, 8467, 1508, 6621, 188, - 11016, 301, 10292, 7328, 824, 11872, 10748, 7411, 10191, 7507, - 5100, 7721, 7079, 3882, 16, 11596, 2434, 8591, 8247, 9584, - 11673, 8927, 8924, 4735, 8997, 2768, 10095, 639, 2676, 1746, - 3497, 11492, 6171, 396, 6464, 292, 4239, 11342, 781, 12107, - 6233, 6584, 2223, 2474, 7851, 422, 7172, 9664, 2317, 5456, - 9911, 9600, 7758, 3925, 5040, 11888, 2283, 2972, 3901, 3647, - 3954, 3510, 5681, 6908, 8645, 8643, 9144, 44, 414, 8566, - 2654, 5117, 4376, 2874, 2684, 301, 6919, 6952, 7349, 8380, - 2667, 9354, 2343, 2077, 137, 6968, 12201, 9816, 10496, 3011, - 3153, 8091, 8546, 5805, 11247, 7071, 7060, 5578, 10911, 198, - 11197, 8603, 2429, 3163, 6785, 8034, 683, 2853, 4748, 2248, - 4828, 7799, 6151, 11469, 7403, 11081, 10279, 2210, 944, 8314, - 9593, 11693, 163, 7674, 3056, 6156, 11609, 2975, 624, 3448, - 11449, 5126, 8679, 824, 1855, 9189, 2688, 1082, 4209, 4323, - 8015, 4303, 8105, 2477, 4949, 12214, 1909, 7882, 11069, 5335, - 1285, 5502, 10912, 2678, 9584, 1101, 4435, 11201, 4166, 11367, - 11033, 7221, 6268, 6540, 3203, 2042, 10685, 6194, 4603, 10561, - 6367, 6111, 1208, 5599, 2937, 10074, 8827, 4851, 2248, 10343, - 569, 6572, 6864, 4573, 11978, 3178, 6171, 9790, 11278, 4606, - 10793, 11426, 7455, 23, 8712, 5789, 1707, 19, 11141, 4326, - 2824, 11472, 2095, 11708, 1137, 5445, 7634, 1288, 1866, 1962, - 7925, 2472, 11915, 72, 7052, 4827, 2638, 599, 8000, 10450, - 9184, 284, 10797, 3065, 8925, 7869, 9036, 9155, 11388, 4583, - 4726, 7061, 10662, 10077, 11748, 88, 9485, 952, 6138, 11391, - 9615, 9718, 11633, 5737, 5056, 3496, 11933, 632, 6289, 6136, - 859, 6146, 2614, 12020, 11277, 11589, 2914, 1655, 4829, 1689, - 2373, 8526, 6363, 12054, 1644, 5047, 8554, 11333, 7731, 451, - 7838, 5886, 10097, 6406, 3508, 7071, 7257, 10270, 2333, 2489, - 11768, 3884, 11627, 272, 7420, 3775, 4029, 9723, 10105, 4794, - 2231, 4773, 9400, 10170, 6774, 2987, 2412, 12168, 5360, 5609, - 2128, 110, 5466, 1851, 6675, 7947, 6356, 5850, 2509, 3212, - 5138, 11972, 2858, 5827, 318, 11217, 8658, 4857, 9700, 946, - 5011, 5091, 11972, 9271, 5444, 6614, 2755, 2125, 723, 10444, - 9332, 7776, 5682, 2770, 609, 1746, 5375, 12200, 4976, 1694, - 3448, 11680, 7249, 1939, 10584, 2400, 1927, 11773, 8468, 2089, - 6573, 11692, 8277, 5502, 3403, 2741, 9707, 2469, 9276, 7151, - 9815, 3241, 6142, 6, 5092, 2741, 7533, 2890, 11026, 9620, - 899, 7730, 11148, 11513, 7602, 9265, 5130, 10418, 6290, 9150, - 223, 9636, 3245, 12166, 10099, 4680, 511, 4410, 7860, 7553, - 3152, 6693, 2954, 3949, 3975, 5497, 4380, 8108, 6834, 1033, - 9164, 2117, 11955, 5509, 10352, 10189, 10133, 4292, 11270, 3902, - 1741, 11212, 10961, 3084, 2301, 11023, 3586, 10621, 3793, 6595, - 0, 6726, 5568, 9205, 4849, 9287, 2701, 7079, 6950, 5391, - 12, 8861, 6735, 4674, 212, 3984, 7039, 5974, 1455, 3736, - 123, 6542, 981, 4408, 1261, 2641, 3582, 11726, 5748, 6053, - 2231, 2880, 1309, 7432, 11087, 4649, 9012, 9417, 8998, 3550, - 7420, 1074, 565, 487, 1716, 343, 5215, 1837, 7742, 7927, - 7998, 9089, 12060, 5753, 9419, 1750, 5714, 5174, 10061, 10630, - 8467, 10296, 8619, 9594, 8779, 4136, 496, 12057, 12197, 1808, - 7083, 11139, 26, 11009, 3310, 9663, 6598, 10960, 5447, 2340, - 2707, 3194, 9434, 11966, 7163, 5610, 1974, 6729, 675, 11828, - 9649, 1416, 1996, 10361, 6283, 3113, 9336, 8157, 3823, 9139, - 6059, 8418, 5598, 3795, 3265, 7710, 3845, 6716, 6046, 11649, - 6554, 3726, 6114, 4140, 10747, 5633, 7207, 11227, 9999, 3188, - 4813, 5914, 4710, 10024, 5400, 9759, 4907, 11309, 4694, 10469, - 5021, 11058, 9334, 508, 2858, 6413, 2552, 6875, 8154, 8779, - 2510, 7509, 5568, 7680, 7165, 5105, 10964, 5342, 9987, 6888, - 6125, 10332, 11641, 3271, 5067, 4376, 3586, 4637, 8345, 6857, - 1947, 5973, 6496, 5242, 10455, 3127, 6658, 10059, 6535, 4201, - 12032, 5875, 3791, 8984, 6514, 8298, 5155, 11901, 5385, 2746, - 3722, 6321, 4198, 5740, 11886, 7787, 5756, 4282, 4769, 11494, - 310, 3715, 6569, 8186, 7862, 6564, 6100, 10033, 11148, 8588, - 8571, 7851, 6728, 712, 10158, 1261, 2378, 862, 10212, 6449, - 7330, 11351, 7786, 8465, 3657, 10184, 6228, 8165, 7611, 8832, - 9198, 12255, 3626, 8435, 6962, 7608, 9718, 6616, 8739, 816, - 4406, 10099, 342, 1239, 1662, 8983, 10275, 2523, 4988, 5043, - 11139, 4794, 5308, 5314, 2447, 9505, 5354, 1151, 10326, 2838, - 5842, 10646, 7879, 8753, 8130, 2104, 6598, 9297, 1468, 10479, - 3894, 471, 9931, 1292, 8546, 3559, 1262, 11249, 4913, 7642, - 9564, 8729, 12039, 10091, 7833, 2152, 6911, 10191, 6441, 1882, - 4806, 6795, 6707, 11027, 12251, 10200, 1039, 3219, 9308, 2662, - 9755, 221, 1501, 7460, 7714, 2732, 5466, 11685, 11967, 6524, - 978, 7540, 12009, 6750, 12042, 3454, 7212, 9498, 11325, 129, - 7823, 8582, 9652, 6190, 8875, 12235, 7467, 7104, 11031, 11750, - 12153, 4821, 10665, 1469, 8569, 10470, 9107, 10974, 6349, 931, - 9020, 8123, 1048, 11885, 8088, 9078, 11810, 1970, 1073, 4891, - 4561, 6623, 7352, 7774, 7304, 2407, 4973, 7908, 423, 4173, - 9046, 1084, 6989, 55, 6704, 4382, 4423, 3293, 2414, 5538, - 3412, 10447, 10931, 3734, 3383, 8587, 4362, 166, 6377, 3859, - 3462, 11362, 5142, 1858, 11748, 11371, 5901, 801, 953, 1624, - 3485, 5986, 10301, 7374, 5307, 10334, 5727, 572, 1022, 4439, - 9106, 3485, 1002, 914, 6152, 11303, 10646, 499, 1752, 1988, - 7529, 7395, 11321, 10749, 3497, 9851, 12117, 8544, 8684, 5140, - 1154, 3320, 7113, 8217, 8258, 5247, 6378, 5425, 374, 3579, - 8526, 833, 10469, 3821, 10115, 4199, 8417, 8040, 9396, 12010, - 5457, 10029, 3727, 11433, 9829, 10334, 4699, 8142, 8716, 7032, - 10200, 7746, 7770, 2186, 11186, 9577, 4780, 2345, 1459, 11629, - 9111, 2909, 11811, 2590, 11581, 10444, 12159, 9309, 1208, 3487, - 8706, 6708, 3928, 10119, 9616, 1238, 7874, 9946, 769, 1131, - 11470, 9580, 4197, 3202, 5622, 10714, 8111, 2103, 11256, 4495, - 5226, 5708, 5911, 1443, 11278, 1995, 1209, 10933, 4131, 656, - 12112, 6875, 8578, 8250, 6147, 10413, 11553, 6019, 2011, 6058, - 1009, 8227, 6769, 2751, 8799, 276, 929, 8706, 9655, 12114, - 3710, 4561, 10083, 8752, 5216, 1776, 5567, 9204, 3530, 1785, - 9734, 2035, 6877, 7738, 6408, 11039, 11399, 7471, 4161, 2462, - 7677, 1266, 5, 7187, 6989, 1908, 1773, 6425, 8667, 11964, - 7652, 8374, 8184, 7796, 7017, 1549, 5514, 1257, 5403, 4347, - 1078, 5299, 938, 9411, 4993, 2040, 5555, 4170, 4380, 10666, - 5484, 8577, 8696, 4309, 3811, 2375, 8628, 627, 1808, 3527, - 5312, 959, 1423, 1193, 12279, 11677, 2487, 2118, 1749, 3431, - 5282, 2112, 11601, 5290, 2435, 4338, 2336, 11578, 2208, 9444, - 7377, 1469, 3929, 4734, 4367, 7042, 6880, 11159, 8199, 8848, - 646, 6413, 7417, 3334, 2432, 9206, 3218, 7377, 10088, 6401, - 4033, 3984, 7253, 3459, 6663, 4476, 4732, 8871, 8232, 9304, - 823, 2501, 5415, 7529, 12079, 8278, 5293, 12279, 5395, 2996, - 5638, 3789, 7241, 8303, 8856, 1447, 10736, 6470, 2148, 1633, - 3786, 10031, 1621, 12039, 4067, 11329, 11813, 1654, 5769, 2743, - 7698, 4222, 4790, 657, 10045, 1436, 5808, 4003, 5332, 1731, - 9060, 115, 864, 12037, 1025, 4233, 4099, 6602, 7485, 4899, - 5665, 10559, 1141, 7481, 8722, 10023, 8042, 9527, 2856, 10535, - 10200, 5878, 5446, 7042, 7225, 6057, 11147, 8455, 287, 1151, - 1369, 5407, 9863, 8946, 2165, 7065, 9386, 11517, 7300, 5954, - 8441, 2915, 2631, 6011, 2293, 9169, 2311, 8645, 10359, 6875, - 5968, 1818, 935, 5615, 8888, 6158, 7633, 5647, 5827, 5274, - 10567, 1470, 9491, 5233, 9495, 4687, 3524, 10685, 2360, 2243, - 3322, 709, 10563, 6278, 11667, 1716, 4297, 9643, 10653, 3014, - 8824, 1985, 6515, 9058, 4085, 12230, 7907, 4988, 2356, 9944, - 2329, 879, 6940, 7304, 12243, 6681, 10218, 3360, 3299, 5676, - 7155, 11028, 4475, 3317, 8192, 11903, 882, 1816, 2691, 10309, - 1993, 1659, 11045, 10904, 3062, 2212, 6642, 11723, 801, 8951, - 7614, 5768, 2161, 185, 196, 1309, 10766, 4895, 11624, 11041, - 794, 11935, 1725, 2846, 10781, 4117, 3773, 9870, 2821, 5156, - 885, 1794, 7214, 4751, 6235, 3961, 309, 4009, 10589, 4128, - 7640, 674, 10574, 6129, 5392, 3173, 5599, 2476, 2419, 12222, - 11610, 3264, 8277, 8774, 11968, 7266, 768, 3286, 6360, 12203, - 1873, 3726, 2006, 4525, 12104, 8137, 1058, 11720, 6294, 2897, - 10160, 2366, 674, 4363, 11713, 12284, 8588, 4650, 1548, 7697, - 11023, 6810, 5822, 416, 10583, 7627, 4177, 11681, 3311, 10612, - 9745, 2584, 8131, 3531, 5927, 10160, 11800, 8111, 4254, 7572, - 4092, 7394, 9981, 7048, 9916, 9905, 11311, 6032, 3806, 3430, - 5647, 5083, 7589, 4642, 8203, 5219, 873, 9685, 9681, 7600, - 5040, 9006, 2872, 976, 9193, 6585, 10954, 3084, 3602, 2163, - 9550, 7070, 1473, 4291, 2483, 9124, 10206, 6217, 9877, 3734, - 3714, 932, 5580, 12175, 11798, 763, 4896, 393, 7125, 1688, - 4949, 7845, 6492, 1820, 11924, 867, 11942, 3737, 660, 1275, - 5009, 5845, 5077, 7493, 11771, 12085, 3870, 7577, 7112, 5120, - 4144, 6925, 6545, 5806, 10628, 8141, 8091, 3304, 6019, 12008, - 2965, 188, 6633, 9318, 828, 6619, 11148, 7008, 3935, 9017, - 1477, 9045, 7040, 9266, 11583, 2184, 6388, 7665, 12147, 6173, - 4601, 3842, 10876, 2300, 318, 1493, 9848, 617, 9860, 10006, - 7855, 9676, 4908, 8030, 1921, 2483, 1307, 8580, 10133, 2213, - 237, 7712, 6262, 718, 67, 1506, 11180, 1550, 11406, 11758, - 8240, 7533, 11070, 7260, 6558, 6025, 2822, 9310, 9983, 10899, - 1930, 11953, 6823, 6641, 11080, 9167, 9501, 12059, 2642, 11635, - 3850, 3899, 2377, 7532, 230, 10929, 12163, 8729, 4129, 7731, - 8362, 8476, 5044, 2580, 3805, 7077, 8068, 10211, 10550, 1678, - 12205, 2680, 2455, 4687, 5212, 9367, 5062, 6440, 11980, 1834, - 6289, 11600, 585, 1366, 1610, 8323, 7347, 1032, 2118, 1504, - 9727, 11917, 1469, 6639, 3157, 5953, 5912, 7228, 2956, 7829, - 9967, 10482, 1573, 6328, 5085, 4999, 6039, 4639, 7970, 11295, - 7020, 1044, 5583, 8238, 9825, 4899, 11674, 6311, 10710, 210, - 9311, 1889, 6600, 8032, 4352, 8105, 5616, 2488, 8572, 7453, - 1928, 7031, 9309, 4217, 5573, 1331, 9491, 9652, 22, 3523, - 5776, 3839, 10623, 9947, 7371, 6413, 9834, 1827, 5621, 5014, - 9452, 11860, 6498, 9730, 10796, 2486, 1916, 4797, 9069, 3247, - 5471, 9143, 30, 4483, 4331, 2295, 11435, 6440, 3631, 10556, - 8214, 8248, 1030, 3911, 2927, 10564, 3499, 7619, 6356, 1937, - 824, 7942, 5526, 1800, 8025, 5793, 1832, 9318, 11118, 11768, - 9995, 93, 10562, 7398, 12099, 10100, 3386, 3522, 1929, 9607, - 12, 12222, 9626, 1904, 10033, 9308, 2581, 5596, 9093, 8645, - 10039, 1495, 4370, 272, 5998, 10749, 8889, 7296, 756, 9125, - 6076, 7448, 9201, 5902, 4790, 10880, 2927, 4925, 9931, 10604, - 10479, 6582, 1808, 8829, 64, 9695, 6528, 9036, 10354, 7151, - 5289, 629, 7606, 554, 11494, 2248, 3378, 873, 3219, 6232, - 5834, 10011, 227, 10852, 3523, 1077, 1579, 6790, 7478, 10431, - 5681, 10960, 61, 6208, 9618, 5821, 9093, 7480, 10276, 8701, - 7685, 3807, 7898, 2481, 10913, 3510, 5729, 3770, 10331, 3607, - 11750, 8911, 8791, 5196, 3455, 1468, 7566, 8292, 9895, 5247, - 8107, 7767, 7153, 4362, 11096, 8909, 11917, 1354, 853, 4426, - 7828, 5407, 7728, 1731, 3721, 10977, 5383, 609, 10662, 4977, - 5976, 10886, 7797, 1678, 994, 1927, 12176, 7369, 5352, 8168, - 2503, 7379, 11263, 11171, 9208, 941, 1086, 323, 10619, 1122, - 2373, 569, 3815, 4798, 5385, 12238, 10450, 10513, 8196, 3360, - 9998, 1272, 10227, 2632, 3850, 6219, 5199, 9130, 6698, 6451, - 8952, 5034, 7018, 4986, 5312, 5530, 185, 5165, 6193, 6669, - 3775, 761, 11379, 5704, 6283, 1815, 9621, 11430, 8249, 1091, - 1965, 6967, 830, 513, 6851, 3301, 7602, 4801, 11279, 8036, - 3413, 6539, 8749, 1615, 9544, 1997, 4299, 10936, 3331, 5052, - 10650, 6547, 1118, 5282, 10336, 2711, 5170, 966, 1056, 10091, - 4463, 8323, 9629, 2923, 1008, 9605, 6136, 10, 2085, 6500, - 11462, 7604, 11049, 1163, 4111, 3574, 8325, 753, 5487, 7307, - 2910, 2353, 3593, 7409, 2323, 8434, 1454, 3100, 4584, 4462, - 2671, 10567, 9043, 8969, 12174, 11717, 5857, 4788, 12194, 346, - 9160, 3204, 5274, 11755, 2701, 8153, 10964, 1847, 1101, 7859, - 5405, 4524, 2493, 10443, 1774, 9550, 6905, 1117, 11103, 9992, - 8736, 224, 3668, 4628, 4516, 5298, 767, 7841, 4015, 3631, - 3909, 2209, 1909, 11562, 8799, 9063, 168, 1139, 8104, 7281, - 1705, 5260, 7130, 4247, 10916, 1225, 3527, 10721, 4628, 11950, - 10870, 1177, 402, 1910, 8034, 9698, 8083, 11738, 11250, 5074, - 8130, 6263, 4588, 5581, 11148, 8842, 3737, 11149, 8695, 11162, - 11813, 8472, 6617, 8341, 9545, 10620, 203, 11530, 228, 536, - 6790, 9598, 5405, 7056, 9998, 7152, 4932, 7259, 534, 6529, - 597, 3961, 7686, 1041, 7304, 532, 22, 566, 4326, 7298, - 5695, 1344, 7261, 8854, 9749, 8034, 5048, 7018, 600, 4069, - 1300, 1306, 9487, 3567, 9759, 4770, 4616, 9191, 1202, 12190, - 8407, 5755, 3336, 10430, 2189, 3058, 1635, 11343, 705, 6440, - 7336, 8864, 5167, 7124, 6195, 10704, 11464, 11987, 3007, 6064, - 5405, 9000, 5194, 2354, 938, 11333, 10515, 11743, 7172, 5019, - 10967, 11674, 320, 3135, 2113, 1763, 8117, 38, 2050, 6690, - 2860, 7555, 9976, 10586, 1771, 2758, 5085, 5349, 11663, 6826, - 2760, 803, 7357, 7634, 12207, 4703, 5311, 7436, 9796, 3301, - 5583, 5391, 2691, 7593, 1024, 8727, 7655, 9525, 1936, 11798, - 724, 7869, 2942, 10660, 477, 4701, 10994, 1781, 8024, 9399, - 164, 11303, 809, 11077, 11123, 10348, 6099, 10568, 9051, 1374, - 6990, 11054, 8675, 10406, 1089, 11286, 5912, 4562, 5165, 1418, - 791, 8888, 2924, 9400, 6370, 3587, 5304, 7133, 10165, 1305, - 493, 2879, 1350, 6700, 10663, 7434, 1775, 11019, 5519, 7983, - 4086, 82, 826, 5950, 11117, 11364, 7550, 5612, 4313, 3424, - 7562, 4323, 3291, 4170, 740, 9670, 6122, 8277, 7134, 8772, - 5895, 5199, 2762, 10937, 11090, 2728, 1286, 1711, 815, 7558, - 4376, 6823, 10719, 8932, 4455, 3086, 4414, 1342, 6538, 7796, - 11544, 6895, 10956, 9591, 10282, 5976, 10614, 11336, 5785, 1050, - 3427, 2910, 2198, 5189, 2039, 4026, 11631, 671, 4981, 999, - 1410, 3897, 4659, 7403, 8741, 6752, 7844, 2891, 5411, 10806, - 2020, 7056, 8293, 2581, 2538, 9916, 5799, 11859, 6976, 11179, - 1679, 3994, 8671, 7439, 5170, 6331, 7398, 183, 893, 3308, - 12103, 10526, 2632, 3009, 9584, 4637, 3748, 6584, 8701, 7095, - 5302, 9682, 4103, 1958, 5812, 1235, 497, 8314, 11465, 7758, - 6482, 7308, 11776, 10905, 11040, 9515, 7141, 3970, 8037, 1831, - 5500, 1743, 3480, 4790, 617, 3901, 9732, 1602, 5431, 11144, - 2108, 6575, 5353, 7322, 12225, 8532, 5110, 4043, 4998, 2642, - 8013, 8373, 7270, 6434, 8259, 10474, 303, 7344, 555, 902, - 5672, 8326, 8500, 11647, 12082, 10341, 457, 8240, 10080, 5080, - 5097, 4457, 6082, 487, 9562, 6630, 3881, 498, 5565, 10564, - 2794, 8765, 10750, 5992, 7317, 1129, 12152, 11245, 2150, 6364, - 7718, 4124, 3698, 10185, 9194, 9599, 10960, 8746, 1355, 11602, - 2069, 6351, 11478, 5938, 8513, 4848, 5515, 2577, 6952, 1021, - 11422, 4724, 245, 7974, 8993, 7820, 3155, 7316, 101, 6676, - 7696, 5700, 1771, 8666, 4735, 6054, 1476, 8265, 9364, 1721, - 12236, 1943, 7538, 3087, 3934, 756, 1086, 4817, 790, 4862, - 4742, 7588, 3580, 11478, 3919, 5637, 2244, 7371, 3884, 10788, - 4766, 1700, 9156, 10785, 9665, 4434, 11797, 7672, 7669, 1240, - 1875, 1305, 4161, 9616, 483, 2361, 8998, 3330, 11180, 3548, - 7404, 3195, 9833, 3589, 5291, 9129, 9090, 134, 1195, 2674, - 990, 8217, 1672, 9457, 9520, 182, 11786, 3082, 12009, 10864, - 1414, 3757, 3425, 4499, 10952, 2059, 12097, 6889, 10524, 8009, - 8223, 2977, 6314, 8633, 3696, 6501, 2185, 1867, 4804, 5943, - 7387, 7185, 5293, 3458, 7359, 8481, 6902, 6334, 6479, 8798, - 3662, 7786, 2288, 10158, 1637, 6746, 1429, 2071, 10204, 9945, - 5722, 1181, 979, 396, 4831, 598, 7467, 11874, 4673, 1254, - 8336, 2299, 282, 7655, 11937, 8382, 10917, 1833, 11219, 2266, - 9935, 942, 3024, 4132, 970, 11538, 1645, 5588, 508, 2348, - 10988, 2077, 12008, 8265, 9269, 5115, 5294, 4726, 11848, 7163, - 7330, 10617, 2813, 10668, 7271, 720, 5532, 1805, 11328, 6183, - 8842, 693, 12152, 11548, 2065, 2104, 3838, 11005, 6313, 5378, - 503, 4030, 3156, 11858, 5053, 2279, 299, 9301, 9408, 7450, - 8863, 6856, 10212, 3214, 7349, 6130, 11856, 3278, 10305, 898, - 1644, 7763, 2889, 11348, 10975, 8990, 10298, 10110, 3393, 3555, - 3113, 8348, 5102, 7552, 263, 3988, 11715, 6794, 10278, 3642, - 11756, 3897, 3369, 7963, 651, 4708, 4876, 3095, 11974, 1929, - 4970, 9765, 10723, 10004, 1367, 4544, 8997, 12258, 1820, 7734, - 1449, 114, 4239, 3273, 2867, 1004, 6627, 4081, 1155, 10819, - 10459, 7842, 5035, 9071, 3193, 5186, 7012, 3707, 3559, 316, - 7397, 578, 10062, 10069, 9406, 4708, 35, 10300, 12169, 11270, - 12212, 11691, 11958, 9621, 6487, 10999, 2362, 5729, 8013, 10396, - 11857, 6439, 10387, 3145, 10127, 7638, 7027, 7621, 4015, 6013, - 3562, 5915, 10038, 4251, 10214, 4251, 9147, 1794, 11958, 11765, - 8880, 4245, 1007, 5086, 11135, 8239, 3362, 11671, 6227, 2911, - 634, 5968, 6209, 11446, 6799, 8916, 355, 2672, 7771, 4165, - 9664, 11899, 3387, 2239, 1748, 11129, 2230, 11535, 3502, 10827, - 10552, 11479, 3641, 4436, 7095, 4635, 5819, 5349, 11497, 3767, - 6813, 3844, 4901, 6365, 3303, 1979, 10882, 2687, 524, 11866, - 3230, 3550, 6171, 5923, 4261, 2097, 11565, 10678, 5453, 3029, - 10653, 4187, 832, 6684, 9386, 6036, 9836, 2557, 4626, 9615, - 131, 8018, 1485, 4968, 1166, 11968, 8780, 10889, 6385, 4577, - 4191, 6566, 4626, 6132, 3231, 10741, 6849, 10830, 3344, 1423, - 4633, 7224, 11767, 2285, 7003, 10787, 8338, 11717, 4281, 10626, - 2543, 847, 778, 5209, 5626, 6617, 5938, 1724, 10383, 1969, - 8669, 5315, 68, 4807, 6333, 11895, 12202, 5623, 717, 7732, - 8929, 3264, 3858, 1179, 8486, 12260, 7529, 9786, 11538, 7967, - 8741, 5962, 6971, 9904, 5332, 11641, 11602, 6249, 5411, 1455, - 9393, 11919, 10828, 1888, 11187, 4190, 1663, 9552, 10900, 2598, - 10545, 1902, 931, 5667, 8650, 1719, 2957, 7772, 8756, 11286, - 3192, 2692, 1482, 8057, 4384, 6013, 3390, 4453, 6072, 1011, - 1436, 3669, 7222, 12051, 4497, 6810, 631, 1415, 6151, 11258, - 8597, 7654, 8651, 7796, 2332, 8219, 5181, 7997, 2882, 8607, - 2389, 8023, 11425, 8632, 444, 1832, 3528, 3402, 2834, 6267, - 5059, 11369, 3571, 10910, 4203, 11336, 11915, 9792, 901, 11969, - 11444, 772, 2289, 10839, 11773, 10553, 3825, 3398, 3682, 1259, - 1982, 4998, 8005, 7322, 4748, 321, 4529, 2232, 11703, 9888, - 3789, 8003, 759, 5408, 11498, 602, 11109, 6533, 5491, 2442, - 108, 2625, 4604, 7937, 5692, 622, 1328, 6356, 7372, 887, - 7011, 7260, 7264, 5340, 5357, 8838, 2238, 4929, 10669, 1318, - 12048, 7420, 5799, 4713, 3627, 10411, 10313, 840, 11157, 2609, - 5876, 2728, 7696, 11273, 3031, 1163, 10163, 9339, 8777, 1921, - 11696, 7877, 6058, 195, 10721, 7576, 324, 1213, 10962, 7297, - 3493, 8704, 11544, 1086, 8918, 1800, 6671, 7967, 6071, 9032, - 6844, 2291, 5697, 10014, 10389, 6723, 8496, 3722, 7875, 8630, - 1573, 43, 8460, 6003, 8292, 11404, 6250, 2152, 1909, 2688, - 3833, 2935, 6529, 6578, 140, 9328, 1443, 8052, 10120, 6871, - 836, 9551, 4491, 9605, 8799, 10111, 12143, 2457, 6034, 11258, - 2197, 11469, 11489, 7438, 2433, 2756, 2253, 1044, 9548, 10936, - 10156, 1474, 6781, 8800, 3519, 10268, 11373, 6602, 3696, 7740, - 11466, 841, 10462, 4098, 1556, 9624, 199, 868, 2057, 2665, - 2515, 9790, 5204, 7575, 10665, 4662, 5669, 4668, 3719, 5198, - 2684, 4437, 4654, 9145, 10800, 11900, 1366, 4118, 2830, 3616, - 11112, 3013, 8599, 405, 7496, 11251, 8911, 6515, 6551, 1539, - 6531, 213, 3018, 288, 2093, 2004, 2284, 2650, 9460, 7708, - 5786, 3294, 4017, 6663, 3794, 2099, 7338, 4969, 4703, 4106, - 5551, 10892, 11563, 6433, 12233, 1076, 11049, 537, 4485, 6418, - 233, 9411, 2838, 2772, 7285, 5051, 2990, 10319, 10611, 11548, - 844, 11731, 1957, 7765, 5100, 2216, 188, 1817, 4129, 9075, - 6833, 7833, 1330, 9031, 2276, 3822, 1280, 7161, 8168, 1413, - 8510, 3994, 1304, 4336, 3282, 7930, 978, 10980, 994, 3790, - 2306, 3495, 7898, 8069, 10410, 4017, 3828, 2652, 6746, 3892, - 682, 2788, 7548, 8120, 8351, 2901, 1311, 9035, 1295, 4971, - 480, 1053, 2189, 6654, 122, 3345, 8614, 9358, 697, 5685, - 8812, 3134, 6009, 5968, 4731, 4587, 8398, 6166, 7092, 243, - 7117, 11211, 5204, 8927, 3386, 10217, 3500, 9509, 7534, 12111, - 11531, 6355, 8218, 4252, 10225, 5077, 6540, 5043, 10369, 5204, - 10308, 7751, 3704, 9420, 4736, 7100, 6004, 9589, 620, 4322, - 9472, 2196, 6233, 11550, 9758, 2252, 6345, 1388, 6248, 10063, - 923, 9667, 5501, 2318, 11990, 2662, 7663, 8853, 7973, 9826, - 9720, 1788, 10285, 2572, 3095, 1153, 10551, 6979, 7590, 3867, - 7484, 6143, 983, 3133, 91, 6597, 12135, 7889, 9228, 11984, - 6684, 11629, 3910, 7722, 1929, 5392, 12231, 2649, 8745, 7089, - 10739, 8363, 10890, 3539, 7287, 6551, 5259, 1248, 3662, 42, - 6849, 11227, 8397, 3644, 5824, 5997, 3845, 10168, 12180, 3996, - 3828, 7335, 2854, 7601, 4166, 313, 5926, 2165, 2154, 1353, - 5407, 2116, 7336, 2189, 596, 9365, 2477, 12240, 11510, 6573, - 12021, 1713, 748, 10276, 5951, 478, 8379, 9121, 5770, 6619, - 7658, 6831, 10832, 5403, 200, 1743, 11403, 9025, 5047, 4282, - 11110, 182, 8009, 3125, 11621, 7765, 4294, 9772, 9357, 1710, - 5042, 8805, 1277, 742, 5194, 6692, 1785, 827, 4373, 1825, - 7249, 2172, 1453, 7238, 12191, 9533, 12243, 8808, 6471, 7376, - 5982, 9203, 8023, 509, 3961, 12163, 11928, 921, 1227, 10696, - 7284, 5853, 8680, 174, 5063, 804, 12269, 5389, 31, 3407, - 11245, 11322, 8361, 4956, 4411, 9334, 266, 5644, 10826, 10489, - 6042, 8608, 3403, 3122, 6992, 8584, 265, 11909, 9702, 6930, - 8004, 7154, 11437, 9903, 5782, 10639, 11569, 1173, 4087, 8046, - 11371, 8062, 2119, 5293, 7131, 6737, 1360, 3861, 51, 10313, - 2799, 5771, 6487, 7654, 9084, 6709, 254, 148, 996, 11910, - 10889, 8855, 240, 10497, 2169, 2719, 7524, 4820, 1488, 10061, - 12050, 2761, 5698, 8353, 10692, 920}; - // const int twiddle[12] = {1331, 1945, 10302, 3400, 8340, 12149, - // 7311, 5860, 4134, 8246, 1479, 12288}; - static const int twiddle[] = { - // layer #0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - // layer #1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, - - // layer #2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, - - // layer #3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, - - // layer #4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - - // layer #5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, - - // layer #6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, - - // layer #7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, - - // layer #8 - 1, 1, 1, 1, 1, 1, 1, 1, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 8340, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 9042, 9042, 9042, 9042, 9042, 9042, 9042, 9042, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 8011, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 8736, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 9048, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 9509, 9509, 9509, 9509, 9509, 9509, 9509, 9509, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 8241, 8241, 8241, 8241, 8241, 8241, 8241, 8241, 480, 480, 480, 480, 480, 480, 480, 480, 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 9275, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 6534, 9377, 9377, 9377, 9377, 9377, 9377, 9377, 9377, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 9273, 9273, 9273, 9273, 9273, 9273, 9273, 9273, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 6915, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 7205, 7205, 7205, 7205, 7205, 7205, 7205, 7205, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 8779, 8779, 8779, 8779, 8779, 8779, 8779, 8779, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 9542, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 9005, 5101, 5101, 5101, 5101, 5101, 5101, 5101, 5101, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 10111, 10111, 10111, 10111, 10111, 10111, 10111, 10111, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9198, 9984, 9984, 9984, 9984, 9984, 9984, 9984, 9984, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 8585, 8585, 8585, 8585, 8585, 8585, 8585, 8585, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 334, 334, 334, 334, 334, 334, 334, 334, 5012, 5012, 5012, 5012, 5012, 5012, 5012, 5012, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 5191, 5191, 5191, 5191, 5191, 5191, 5191, 5191, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 726, 726, 726, 726, 726, 726, 726, 726, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 8652, 9223, 9223, 9223, 9223, 9223, 9223, 9223, 9223, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 6522, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 7394, 7394, 7394, 7394, 7394, 7394, 7394, 7394, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 8595, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 563, 563, 563, 563, 563, 563, 563, 563, 9405, 9405, 9405, 9405, 9405, 9405, 9405, 9405, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 9302, 9302, 9302, 9302, 9302, 9302, 9302, 9302, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 7203, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 354, 354, 354, 354, 354, 354, 354, 354, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 3000, 3000, 3000, 3000, 3000, 3000, 3000, 3000, 130, 130, 130, 130, 130, 130, 130, 130, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 10115, 10115, 10115, 10115, 10115, 10115, 10115, 10115, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 7404, 7404, 7404, 7404, 7404, 7404, 7404, 7404, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 9424, 9424, 9424, 9424, 9424, 9424, 9424, 9424, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 8005, 8005, 8005, 8005, 8005, 8005, 8005, 8005, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 9154, 7852, 7852, 7852, 7852, 7852, 7852, 7852, 7852, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 6730, 6730, 6730, 6730, 6730, 6730, 6730, 6730, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 4337, 4337, 4337, 4337, 4337, 4337, 4337, 4337, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 4231, 7270, 7270, 7270, 7270, 7270, 7270, 7270, 7270, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 10163, 10163, 10163, 10163, 10163, 10163, 10163, 10163, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 955, 955, 955, 955, 955, 955, 955, 955, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 8993, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 8232, 8232, 8232, 8232, 8232, 8232, 8232, 8232, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 6747, 8526, 8526, 8526, 8526, 8526, 8526, 8526, 8526, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 3748, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 7393, 5195, 5195, 5195, 5195, 5195, 5195, 5195, 5195, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 7575, 7575, 7575, 7575, 7575, 7575, 7575, 7575, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 10040, 10040, 10040, 10040, 10040, 10040, 10040, 10040, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 9447, 8643, 8643, 8643, 8643, 8643, 8643, 8643, 8643, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 7635, 7635, 7635, 7635, 7635, 7635, 7635, 7635, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 6591, 6591, 6591, 6591, 6591, 6591, 6591, 6591, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 243, 243, 243, 243, 243, 243, 243, 243, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 8357, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6957, 6957, 6957, 6957, 6957, 6957, 6957, 6957, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 9764, 5011, 5011, 5011, 5011, 5011, 5011, 5011, 5011, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 9140, 9140, 9140, 9140, 9140, 9140, 9140, 9140, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 9408, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 7247, 7247, 7247, 7247, 7247, 7247, 7247, 7247, 355, 355, 355, 355, 355, 355, 355, 355, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 5407, 5407, 5407, 5407, 5407, 5407, 5407, 5407, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 6039, 6039, 6039, 6039, 6039, 6039, 6039, 6039, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 9153, 9153, 9153, 9153, 9153, 9153, 9153, 9153, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 9041, 9041, 9041, 9041, 9041, 9041, 9041, 9041, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 8925, 8925, 8925, 8925, 8925, 8925, 8925, 8925, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 27, 27, 27, 27, 27, 27, 27, 27, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 8374, 8374, 8374, 8374, 8374, 8374, 8374, 8374, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 773, 773, 773, 773, 773, 773, 773, 773, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 7384, 7384, 7384, 7384, 7384, 7384, 7384, 7384, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 9238, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 12280, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 7428, 7428, 7428, 7428, 7428, 7428, 7428, 7428, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 671, 671, 671, 671, 671, 671, 671, 671, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 7935, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 4645, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 7399, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 5088, 5088, 5088, 5088, 5088, 5088, 5088, 5088, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 8577, 3, 3, 3, 3, 3, 3, 3, 3, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 442, 442, 442, 442, 442, 442, 442, 442, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 7969, 9644, 9644, 9644, 9644, 9644, 9644, 9644, 9644, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 9430, 9430, 9430, 9430, 9430, 9430, 9430, 9430, - - // layer #9 - 1, 1, 1, 1, 10302, 10302, 10302, 10302, 3400, 3400, 3400, 3400, 3150, 3150, 3150, 3150, 8340, 8340, 8340, 8340, 6281, 6281, 6281, 6281, 5277, 5277, 5277, 5277, 9407, 9407, 9407, 9407, 12149, 12149, 12149, 12149, 7822, 7822, 7822, 7822, 3271, 3271, 3271, 3271, 1404, 1404, 1404, 1404, 12144, 12144, 12144, 12144, 5468, 5468, 5468, 5468, 10849, 10849, 10849, 10849, 10232, 10232, 10232, 10232, 7311, 7311, 7311, 7311, 10930, 10930, 10930, 10930, 9042, 9042, 9042, 9042, 64, 64, 64, 64, 8011, 8011, 8011, 8011, 8687, 8687, 8687, 8687, 4976, 4976, 4976, 4976, 5333, 5333, 5333, 5333, 8736, 8736, 8736, 8736, 5925, 5925, 5925, 5925, 12176, 12176, 12176, 12176, 3329, 3329, 3329, 3329, 9048, 9048, 9048, 9048, 431, 431, 431, 431, 3833, 3833, 3833, 3833, 3009, 3009, 3009, 3009, 5860, 5860, 5860, 5860, 6152, 6152, 6152, 6152, 3531, 3531, 3531, 3531, 922, 922, 922, 922, 11336, 11336, 11336, 11336, 1105, 1105, 1105, 1105, 4096, 4096, 4096, 4096, 8855, 8855, 8855, 8855, 2963, 2963, 2963, 2963, 11239, 11239, 11239, 11239, 9509, 9509, 9509, 9509, 6099, 6099, 6099, 6099, 10530, 10530, 10530, 10530, 5057, 5057, 5057, 5057, 4143, 4143, 4143, 4143, 1489, 1489, 1489, 1489, 3006, 3006, 3006, 3006, 11821, 11821, 11821, 11821, 8241, 8241, 8241, 8241, 6370, 6370, 6370, 6370, 480, 480, 480, 480, 4782, 4782, 4782, 4782, 9852, 9852, 9852, 9852, 453, 453, 453, 453, 9275, 9275, 9275, 9275, 4075, 4075, 4075, 4075, 1426, 1426, 1426, 1426, 5297, 5297, 5297, 5297, 6534, 6534, 6534, 6534, 6415, 6415, 6415, 6415, 9377, 9377, 9377, 9377, 10314, 10314, 10314, 10314, 4134, 4134, 4134, 4134, 7083, 7083, 7083, 7083, 9273, 9273, 9273, 9273, 8049, 8049, 8049, 8049, 6915, 6915, 6915, 6915, 11286, 11286, 11286, 11286, 2143, 2143, 2143, 2143, 6142, 6142, 6142, 6142, 11112, 11112, 11112, 11112, 3789, 3789, 3789, 3789, 4414, 4414, 4414, 4414, 3728, 3728, 3728, 3728, 2731, 2731, 2731, 2731, 5241, 5241, 5241, 5241, 7205, 7205, 7205, 7205, 350, 350, 350, 350, 5023, 5023, 5023, 5023, 10256, 10256, 10256, 10256, 8779, 8779, 8779, 8779, 6507, 6507, 6507, 6507, 10908, 10908, 10908, 10908, 3600, 3600, 3600, 3600, 11287, 11287, 11287, 11287, 156, 156, 156, 156, 9542, 9542, 9542, 9542, 1973, 1973, 1973, 1973, 12129, 12129, 12129, 12129, 10695, 10695, 10695, 10695, 9005, 9005, 9005, 9005, 12138, 12138, 12138, 12138, 5101, 5101, 5101, 5101, 2738, 2738, 2738, 2738, 3621, 3621, 3621, 3621, 6427, 6427, 6427, 6427, 10111, 10111, 10111, 10111, 1958, 1958, 1958, 1958, 5067, 5067, 5067, 5067, 8851, 8851, 8851, 8851, 10911, 10911, 10911, 10911, 9928, 9928, 9928, 9928, 9198, 9198, 9198, 9198, 9606, 9606, 9606, 9606, 9984, 9984, 9984, 9984, 8527, 8527, 8527, 8527, 3382, 3382, 3382, 3382, 2049, 2049, 2049, 2049, 8585, 8585, 8585, 8585, 11026, 11026, 11026, 11026, 2625, 2625, 2625, 2625, 6950, 6950, 6950, 6950, 3186, 3186, 3186, 3186, 10542, 10542, 10542, 10542, 5791, 5791, 5791, 5791, 8076, 8076, 8076, 8076, 2422, 2422, 2422, 2422, 4774, 4774, 4774, 4774, 1170, 1170, 1170, 1170, 10120, 10120, 10120, 10120, 8653, 8653, 8653, 8653, 11089, 11089, 11089, 11089, 334, 334, 334, 334, 12237, 12237, 12237, 12237, 5012, 5012, 5012, 5012, 7535, 7535, 7535, 7535, 8246, 8246, 8246, 8246, 8724, 8724, 8724, 8724, 5191, 5191, 5191, 5191, 8243, 8243, 8243, 8243, 2396, 2396, 2396, 2396, 7280, 7280, 7280, 7280, 11082, 11082, 11082, 11082, 1954, 1954, 1954, 1954, 726, 726, 726, 726, 7540, 7540, 7540, 7540, 10600, 10600, 10600, 10600, 1146, 1146, 1146, 1146, 8652, 8652, 8652, 8652, 787, 787, 787, 787, 9223, 9223, 9223, 9223, 9087, 9087, 9087, 9087, 8961, 8961, 8961, 8961, 1254, 1254, 1254, 1254, 2969, 2969, 2969, 2969, 11606, 11606, 11606, 11606, 5331, 5331, 5331, 5331, 421, 421, 421, 421, 11414, 11414, 11414, 11414, 5876, 5876, 5876, 5876, 11227, 11227, 11227, 11227, 8775, 8775, 8775, 8775, 2166, 2166, 2166, 2166, 9597, 9597, 9597, 9597, 3289, 3289, 3289, 3289, 2505, 2505, 2505, 2505, 11899, 11899, 11899, 11899, 723, 723, 723, 723, 1212, 1212, 1212, 1212, 400, 400, 400, 400, 3985, 3985, 3985, 3985, 8210, 8210, 8210, 8210, 6522, 6522, 6522, 6522, 5681, 5681, 5681, 5681, 5444, 5444, 5444, 5444, 9381, 9381, 9381, 9381, 2366, 2366, 2366, 2366, 5445, 5445, 5445, 5445, 7394, 7394, 7394, 7394, 5766, 5766, 5766, 5766, 8595, 8595, 8595, 8595, 3445, 3445, 3445, 3445, 12047, 12047, 12047, 12047, 1583, 1583, 1583, 1583, 563, 563, 563, 563, 11907, 11907, 11907, 11907, 9405, 9405, 9405, 9405, 3834, 3834, 3834, 3834, 1022, 1022, 1022, 1022, 9260, 9260, 9260, 9260, 9302, 9302, 9302, 9302, 11871, 11871, 11871, 11871, 7203, 7203, 7203, 7203, 4324, 4324, 4324, 4324, 10512, 10512, 10512, 10512, 3956, 3956, 3956, 3956, 4388, 4388, 4388, 4388, 6234, 6234, 6234, 6234, 354, 354, 354, 354, 9364, 9364, 9364, 9364, 11567, 11567, 11567, 11567, 9090, 9090, 9090, 9090, 3000, 3000, 3000, 3000, 11454, 11454, 11454, 11454, 130, 130, 130, 130, 12048, 12048, 12048, 12048, 11885, 11885, 11885, 11885, 3963, 3963, 3963, 3963, 2768, 2768, 2768, 2768, 5456, 5456, 5456, 5456, 10115, 10115, 10115, 10115, 6299, 6299, 6299, 6299, 6378, 6378, 6378, 6378, 9162, 9162, 9162, 9162, 7404, 7404, 7404, 7404, 10474, 10474, 10474, 10474, 5728, 5728, 5728, 5728, 10367, 10367, 10367, 10367, 9424, 9424, 9424, 9424, 2948, 2948, 2948, 2948, 4177, 4177, 4177, 4177, 7665, 7665, 7665, 7665, 8005, 8005, 8005, 8005, 8320, 8320, 8320, 8320, 9154, 9154, 9154, 9154, 11011, 11011, 11011, 11011, 7852, 7852, 7852, 7852, 5106, 5106, 5106, 5106, 5092, 5092, 5092, 5092, 8332, 8332, 8332, 8332, 9888, 9888, 9888, 9888, 2655, 2655, 2655, 2655, 8785, 8785, 8785, 8785, 6874, 6874, 6874, 6874, 6730, 6730, 6730, 6730, 10211, 10211, 10211, 10211, 12171, 12171, 12171, 12171, 975, 975, 975, 975, 4337, 4337, 4337, 4337, 9259, 9259, 9259, 9259, 11289, 11289, 11289, 11289, 8471, 8471, 8471, 8471, 4053, 4053, 4053, 4053, 8273, 8273, 8273, 8273, 4231, 4231, 4231, 4231, 10968, 10968, 10968, 10968, 7270, 7270, 7270, 7270, 6374, 6374, 6374, 6374, 4821, 4821, 4821, 4821, 6093, 6093, 6093, 6093, 10163, 10163, 10163, 10163, 9235, 9235, 9235, 9235, 9821, 9821, 9821, 9821, 605, 605, 605, 605, 2187, 2187, 2187, 2187, 4737, 4737, 4737, 4737, 955, 955, 955, 955, 7210, 7210, 7210, 7210, 2704, 2704, 2704, 2704, 9734, 9734, 9734, 9734, 1428, 1428, 1428, 1428, 1323, 1323, 1323, 1323, 1045, 1045, 1045, 1045, 426, 426, 426, 426, 1479, 1479, 1479, 1479, 10587, 10587, 10587, 10587, 2399, 2399, 2399, 2399, 1319, 1319, 1319, 1319, 8993, 8993, 8993, 8993, 11404, 11404, 11404, 11404, 1168, 1168, 1168, 1168, 1805, 1805, 1805, 1805, 1853, 1853, 1853, 1853, 4789, 4789, 4789, 4789, 8232, 8232, 8232, 8232, 11964, 11964, 11964, 11964, 6747, 6747, 6747, 6747, 1010, 1010, 1010, 1010, 8526, 8526, 8526, 8526, 5369, 5369, 5369, 5369, 10938, 10938, 10938, 10938, 5435, 5435, 5435, 5435, 2686, 2686, 2686, 2686, 8633, 8633, 8633, 8633, 1673, 1673, 1673, 1673, 6068, 6068, 6068, 6068, 10682, 10682, 10682, 10682, 10258, 10258, 10258, 10258, 4805, 4805, 4805, 4805, 1018, 1018, 1018, 1018, 4919, 4919, 4919, 4919, 7991, 7991, 7991, 7991, 11560, 11560, 11560, 11560, 10710, 10710, 10710, 10710, 3778, 3778, 3778, 3778, 1693, 1693, 1693, 1693, 3195, 3195, 3195, 3195, 4948, 4948, 4948, 4948, 11813, 11813, 11813, 11813, 11848, 11848, 11848, 11848, 3748, 3748, 3748, 3748, 12147, 12147, 12147, 12147, 11796, 11796, 11796, 11796, 8760, 8760, 8760, 8760, 7393, 7393, 7393, 7393, 7753, 7753, 7753, 7753, 5195, 5195, 5195, 5195, 295, 295, 295, 295, 3707, 3707, 3707, 3707, 7591, 7591, 7591, 7591, 7575, 7575, 7575, 7575, 2500, 2500, 2500, 2500, 9545, 9545, 9545, 9545, 8301, 8301, 8301, 8301, 10040, 10040, 10040, 10040, 7856, 7856, 7856, 7856, 9447, 9447, 9447, 9447, 6403, 6403, 6403, 6403, 8643, 8643, 8643, 8643, 6381, 6381, 6381, 6381, 3201, 3201, 3201, 3201, 5315, 5315, 5315, 5315, 7635, 7635, 7635, 7635, 6170, 6170, 6170, 6170, 4632, 4632, 4632, 4632, 677, 677, 677, 677, 6591, 6591, 6591, 6591, 3757, 3757, 3757, 3757, 6553, 6553, 6553, 6553, 5529, 5529, 5529, 5529, 243, 243, 243, 243, 8719, 8719, 8719, 8719, 2837, 2837, 2837, 2837, 3532, 3532, 3532, 3532, 11224, 11224, 11224, 11224, 2447, 2447, 2447, 2447, 4255, 4255, 4255, 4255, 147, 147, 147, 147, 2847, 2847, 2847, 2847, 8240, 8240, 8240, 8240, 8357, 8357, 8357, 8357, 9369, 9369, 9369, 9369, 1632, 1632, 1632, 1632, 1512, 1512, 1512, 1512, 6461, 6461, 6461, 6461, 3998, 3998, 3998, 3998, 6957, 6957, 6957, 6957, 1566, 1566, 1566, 1566, 9764, 9764, 9764, 9764, 3263, 3263, 3263, 3263, 5011, 5011, 5011, 5011, 9522, 9522, 9522, 9522, 4846, 4846, 4846, 4846, 5574, 5574, 5574, 5574, 9140, 9140, 9140, 9140, 1962, 1962, 1962, 1962, 9408, 9408, 9408, 9408, 10162, 10162, 10162, 10162, 11222, 11222, 11222, 11222, 6421, 6421, 6421, 6421, 9744, 9744, 9744, 9744, 6136, 6136, 6136, 6136, 10745, 10745, 10745, 10745, 7967, 7967, 7967, 7967, 10092, 10092, 10092, 10092, 2844, 2844, 2844, 2844, 1912, 1912, 1912, 1912, 10446, 10446, 10446, 10446, 12208, 12208, 12208, 12208, 1190, 1190, 1190, 1190, 7247, 7247, 7247, 7247, 2919, 2919, 2919, 2919, 355, 355, 355, 355, 7377, 7377, 7377, 7377, 2678, 2678, 2678, 2678, 12240, 12240, 12240, 12240, 11340, 11340, 11340, 11340, 5446, 5446, 5446, 5446, 5407, 5407, 5407, 5407, 9166, 9166, 9166, 9166, 11745, 11745, 11745, 11745, 11785, 11785, 11785, 11785, 6039, 6039, 6039, 6039, 6860, 6860, 6860, 6860, 9970, 9970, 9970, 9970, 11767, 11767, 11767, 11767, 4938, 4938, 4938, 4938, 7105, 7105, 7105, 7105, 2426, 2426, 2426, 2426, 9115, 9115, 9115, 9115, 2481, 2481, 2481, 2481, 10431, 10431, 10431, 10431, 5146, 5146, 5146, 5146, 11635, 11635, 11635, 11635, 9153, 9153, 9153, 9153, 709, 709, 709, 709, 4452, 4452, 4452, 4452, 1956, 1956, 1956, 1956, 9041, 9041, 9041, 9041, 2051, 2051, 2051, 2051, 4611, 4611, 4611, 4611, 5537, 5537, 5537, 5537, 8925, 8925, 8925, 8925, 11341, 11341, 11341, 11341, 3459, 3459, 3459, 3459, 8807, 8807, 8807, 8807, 27, 27, 27, 27, 7796, 7796, 7796, 7796, 5777, 5777, 5777, 5777, 11316, 11316, 11316, 11316, 3978, 3978, 3978, 3978, 9830, 9830, 9830, 9830, 7300, 7300, 7300, 7300, 8209, 8209, 8209, 8209, 8509, 8509, 8509, 8509, 2281, 2281, 2281, 2281, 2294, 2294, 2294, 2294, 1041, 1041, 1041, 1041, 8374, 8374, 8374, 8374, 168, 168, 168, 168, 10276, 10276, 10276, 10276, 5906, 5906, 5906, 5906, 773, 773, 773, 773, 174, 174, 174, 174, 10643, 10643, 10643, 10643, 1728, 1728, 1728, 1728, 7384, 7384, 7384, 7384, 1058, 1058, 1058, 1058, 11462, 11462, 11462, 11462, 8812, 8812, 8812, 8812, 2381, 2381, 2381, 2381, 218, 218, 218, 218, 9238, 9238, 9238, 9238, 3860, 3860, 3860, 3860, 10805, 10805, 10805, 10805, 11637, 11637, 11637, 11637, 5179, 5179, 5179, 5179, 7509, 7509, 7509, 7509, 10752, 10752, 10752, 10752, 6347, 6347, 6347, 6347, 9314, 9314, 9314, 9314, 316, 316, 316, 316, 11136, 11136, 11136, 11136, 5257, 5257, 5257, 5257, 12280, 12280, 12280, 12280, 5594, 5594, 5594, 5594, 6267, 6267, 6267, 6267, 8517, 8517, 8517, 8517, 10963, 10963, 10963, 10963, 4916, 4916, 4916, 4916, 1663, 1663, 1663, 1663, 1360, 1360, 1360, 1360, 1260, 1260, 1260, 1260, 3336, 3336, 3336, 3336, 7428, 7428, 7428, 7428, 11942, 11942, 11942, 11942, 1305, 1305, 1305, 1305, 12233, 12233, 12233, 12233, 671, 671, 671, 671, 6224, 6224, 6224, 6224, 7935, 7935, 7935, 7935, 12231, 12231, 12231, 12231, 4645, 4645, 4645, 4645, 11713, 11713, 11713, 11713, 1635, 1635, 1635, 1635, 7840, 7840, 7840, 7840, 4372, 4372, 4372, 4372, 1159, 1159, 1159, 1159, 7399, 7399, 7399, 7399, 8120, 8120, 8120, 8120, 1017, 1017, 1017, 1017, 6906, 6906, 6906, 6906, 4591, 4591, 4591, 4591, 8410, 8410, 8410, 8410, 2370, 2370, 2370, 2370, 9786, 9786, 9786, 9786, 8705, 8705, 8705, 8705, 6077, 6077, 6077, 6077, 5088, 5088, 5088, 5088, 3991, 3991, 3991, 3991, 8577, 8577, 8577, 8577, 2344, 2344, 2344, 2344, 3, 3, 3, 3, 6328, 6328, 6328, 6328, 10200, 10200, 10200, 10200, 9450, 9450, 9450, 9450, 442, 442, 442, 442, 6554, 6554, 6554, 6554, 3542, 3542, 3542, 3542, 3643, 3643, 3643, 3643, 11869, 11869, 11869, 11869, 11177, 11177, 11177, 11177, 9813, 9813, 9813, 9813, 4212, 4212, 4212, 4212, 11854, 11854, 11854, 11854, 4115, 4115, 4115, 4115, 7969, 7969, 7969, 7969, 6118, 6118, 6118, 6118, 9644, 9644, 9644, 9644, 8212, 8212, 8212, 8212, 2548, 2548, 2548, 2548, 192, 192, 192, 192, 11744, 11744, 11744, 11744, 1483, 1483, 1483, 1483, 2639, 2639, 2639, 2639, 3710, 3710, 3710, 3710, 1630, 1630, 1630, 1630, 5486, 5486, 5486, 5486, 11950, 11950, 11950, 11950, 9987, 9987, 9987, 9987, 2566, 2566, 2566, 2566, 1293, 1293, 1293, 1293, 11499, 11499, 11499, 11499, 9027, 9027, 9027, 9027, 5291, 5291, 5291, 5291, 6167, 6167, 6167, 6167, 10593, 10593, 10593, 10593, 2766, 2766, 2766, 2766, 9430, 9430, 9430, 9430, 3315, 3315, 3315, 3315, - - // layer #10 - 1, 1, 1945, 1945, 10302, 10302, 6320, 6320, 3400, 3400, 1518, 1518, 3150, 3150, 6828, 6828, 8340, 8340, 12109, 12109, 6281, 6281, 1279, 1279, 5277, 5277, 2450, 2450, 9407, 9407, 10583, 10583, 12149, 12149, 10347, 10347, 7822, 7822, 8, 8, 3271, 3271, 8682, 8682, 1404, 1404, 2622, 2622, 12144, 12144, 622, 622, 5468, 5468, 5275, 5275, 10849, 10849, 1092, 1092, 10232, 10232, 5349, 5349, 7311, 7311, 1522, 1522, 10930, 10930, 11169, 11169, 9042, 9042, 1131, 1131, 64, 64, 1590, 1590, 8011, 8011, 11232, 11232, 8687, 8687, 11129, 11129, 4976, 4976, 6877, 6877, 5333, 5333, 769, 769, 8736, 8736, 8122, 8122, 5925, 5925, 9332, 9332, 12176, 12176, 1417, 1417, 3329, 3329, 10891, 10891, 9048, 9048, 512, 512, 431, 431, 2643, 2643, 3833, 3833, 8051, 8051, 3009, 3009, 2941, 2941, 5860, 5860, 5797, 5797, 6152, 6152, 8443, 8443, 3531, 3531, 10533, 10533, 922, 922, 11385, 11385, 11336, 11336, 2054, 2054, 1105, 1105, 10939, 10939, 4096, 4096, 3448, 3448, 8855, 8855, 6086, 6086, 2963, 2963, 11783, 11783, 11239, 11239, 10013, 10013, 9509, 9509, 60, 60, 6099, 6099, 3670, 3670, 10530, 10530, 7376, 7376, 5057, 5057, 4665, 4665, 4143, 4143, 8840, 8840, 1489, 1489, 8190, 8190, 3006, 3006, 9395, 9395, 11821, 11821, 11415, 11415, 8241, 8241, 3889, 3889, 6370, 6370, 2338, 2338, 480, 480, 11925, 11925, 4782, 4782, 10506, 10506, 9852, 9852, 3589, 3589, 453, 453, 8566, 8566, 9275, 9275, 11912, 11912, 4075, 4075, 11759, 11759, 1426, 1426, 8545, 8545, 5297, 5297, 4483, 4483, 6534, 6534, 1804, 1804, 6415, 6415, 3840, 3840, 9377, 9377, 1389, 1389, 10314, 10314, 5082, 5082, 4134, 4134, 3624, 3624, 7083, 7083, 466, 466, 9273, 9273, 8022, 8022, 8049, 8049, 11408, 11408, 6915, 6915, 5509, 5509, 11286, 11286, 3116, 3116, 2143, 2143, 2164, 2164, 6142, 6142, 1282, 1282, 11112, 11112, 8778, 8778, 3789, 3789, 8494, 8494, 4414, 4414, 7508, 7508, 3728, 3728, 450, 450, 2731, 2731, 2947, 2947, 5241, 5241, 6164, 6164, 7205, 7205, 4265, 4265, 350, 350, 4855, 4855, 5023, 5023, 12269, 12269, 10256, 10256, 2873, 2873, 8779, 8779, 5734, 5734, 6507, 6507, 10734, 10734, 10908, 10908, 5246, 5246, 3600, 3600, 9559, 9559, 11287, 11287, 5061, 5061, 156, 156, 8484, 8484, 9542, 9542, 2800, 2800, 1973, 1973, 3317, 3317, 12129, 12129, 8314, 8314, 10695, 10695, 8787, 8787, 9005, 9005, 2900, 2900, 12138, 12138, 1241, 1241, 5101, 5101, 4222, 4222, 2738, 2738, 4273, 4273, 3621, 3621, 1248, 1248, 6427, 6427, 2602, 2602, 10111, 10111, 3495, 3495, 1958, 1958, 11009, 11009, 5067, 5067, 11826, 11826, 8851, 8851, 10595, 10595, 10911, 10911, 11081, 11081, 9928, 9928, 3941, 3941, 9198, 9198, 9615, 9615, 9606, 9606, 4390, 4390, 9984, 9984, 2260, 2260, 8527, 8527, 7154, 7154, 3382, 3382, 3375, 3375, 2049, 2049, 3669, 3669, 8585, 8585, 9363, 9363, 11026, 11026, 1265, 1265, 2625, 2625, 5690, 5690, 6950, 6950, 12139, 12139, 3186, 3186, 3114, 3114, 10542, 10542, 6138, 6138, 5791, 5791, 6771, 6771, 8076, 8076, 2478, 2478, 2422, 2422, 4103, 4103, 4774, 4774, 7235, 7235, 1170, 1170, 2185, 2185, 10120, 10120, 8711, 8711, 8653, 8653, 6444, 6444, 11089, 11089, 910, 910, 334, 334, 10602, 10602, 12237, 12237, 9461, 9461, 5012, 5012, 3163, 3163, 7535, 7535, 7087, 7087, 8246, 8246, 1325, 1325, 8724, 8724, 9360, 9360, 5191, 5191, 7226, 7226, 8243, 8243, 7779, 7779, 2396, 2396, 2689, 2689, 7280, 7280, 2672, 2672, 11082, 11082, 11873, 11873, 1954, 1954, 3229, 3229, 726, 726, 11124, 11124, 7540, 7540, 4523, 4523, 10600, 10600, 8347, 8347, 1146, 1146, 4661, 4661, 8652, 8652, 4499, 4499, 787, 787, 6879, 6879, 9223, 9223, 9084, 9084, 9087, 9087, 2633, 2633, 8961, 8961, 3343, 3343, 1254, 1254, 5808, 5808, 2969, 2969, 11164, 11164, 11606, 11606, 11066, 11066, 5331, 5331, 9168, 9168, 421, 421, 7771, 7771, 11414, 11414, 6296, 6296, 5876, 5876, 50, 50, 11227, 11227, 11251, 11251, 8775, 8775, 10243, 10243, 2166, 2166, 10032, 10032, 9597, 9597, 11463, 11463, 3289, 3289, 6825, 6825, 2505, 2505, 5781, 5781, 11899, 11899, 3368, 3368, 723, 723, 5289, 5289, 1212, 1212, 10141, 10141, 400, 400, 3793, 3793, 3985, 3985, 8755, 8755, 8210, 8210, 5039, 5039, 6522, 6522, 3042, 3042, 5681, 5681, 1734, 1734, 5444, 5444, 7751, 7751, 9381, 9381, 9169, 9169, 2366, 2366, 5784, 5784, 5445, 5445, 9696, 9696, 7394, 7394, 3200, 3200, 5766, 5766, 7302, 7302, 8595, 8595, 4235, 4235, 3445, 3445, 3020, 3020, 12047, 12047, 8581, 8581, 1583, 1583, 6685, 6685, 563, 563, 1314, 1314, 11907, 11907, 6639, 6639, 9405, 9405, 6693, 6693, 3834, 3834, 9996, 9996, 1022, 1022, 9261, 9261, 9260, 9260, 7315, 7315, 9302, 9302, 2982, 2982, 11871, 11871, 10353, 10353, 7203, 7203, 375, 375, 4324, 4324, 4504, 4504, 10512, 10512, 9233, 9233, 3956, 3956, 1506, 1506, 4388, 4388, 6094, 6094, 6234, 6234, 8176, 8176, 354, 354, 346, 346, 9364, 9364, 682, 682, 11567, 11567, 8945, 8945, 9090, 9090, 8468, 8468, 3000, 3000, 10014, 10014, 11454, 11454, 10362, 10362, 130, 130, 7070, 7070, 12048, 12048, 10526, 10526, 11885, 11885, 716, 716, 3963, 3963, 2832, 2832, 2768, 2768, 1178, 1178, 5456, 5456, 6513, 6513, 10115, 10115, 11275, 11275, 6299, 6299, 11711, 11711, 6378, 6378, 5609, 5609, 9162, 9162, 1040, 1040, 7404, 7404, 10361, 10361, 10474, 10474, 9057, 9057, 5728, 5728, 7126, 7126, 10367, 10367, 9855, 9855, 9424, 9424, 6781, 6781, 2948, 2948, 7186, 7186, 4177, 4177, 1236, 1236, 7665, 7665, 1868, 1868, 8005, 8005, 11851, 11851, 8320, 8320, 10076, 10076, 9154, 9154, 10058, 10058, 11011, 11011, 8957, 8957, 7852, 7852, 9202, 9202, 5106, 5106, 1658, 1658, 5092, 5092, 11295, 11295, 8332, 8332, 8838, 8838, 9888, 9888, 12164, 12164, 2655, 2655, 2595, 2595, 8785, 8785, 5115, 5115, 6874, 6874, 11787, 11787, 6730, 6730, 2065, 2065, 10211, 10211, 1371, 1371, 12171, 12171, 3981, 3981, 975, 975, 3869, 3869, 4337, 4337, 5211, 5211, 9259, 9259, 5370, 5370, 11289, 11289, 8951, 8951, 8471, 8471, 8835, 8835, 4053, 4053, 5836, 5836, 8273, 8273, 4684, 4684, 4231, 4231, 7954, 7954, 10968, 10968, 11345, 11345, 7270, 7270, 7800, 7800, 6374, 6374, 10118, 10118, 4821, 4821, 338, 338, 6093, 6093, 4289, 4289, 10163, 10163, 6323, 6323, 9235, 9235, 7846, 7846, 9821, 9821, 4739, 4739, 605, 605, 9270, 9270, 2187, 2187, 1721, 1721, 4737, 4737, 9004, 9004, 955, 955, 1836, 1836, 7210, 7210, 1701, 1701, 2704, 2704, 11877, 11877, 9734, 9734, 7570, 7570, 1428, 1428, 146, 146, 1323, 1323, 4834, 4834, 1045, 1045, 4840, 4840, 426, 426, 5207, 5207, 1479, 1479, 1029, 1029, 10587, 10587, 7640, 7640, 2399, 2399, 8524, 8524, 1319, 1319, 9343, 9343, 8993, 8993, 4138, 4138, 11404, 11404, 11424, 11424, 1168, 1168, 10584, 10584, 1805, 1805, 8360, 8360, 1853, 1853, 3408, 3408, 4789, 4789, 11832, 11832, 8232, 8232, 10962, 10962, 11964, 11964, 6903, 6903, 6747, 6747, 10552, 10552, 1010, 1010, 10499, 10499, 8526, 8526, 5209, 5209, 5369, 5369, 9344, 9344, 10938, 10938, 2151, 2151, 5435, 5435, 2535, 2535, 2686, 2686, 1445, 1445, 8633, 8633, 4411, 4411, 1673, 1673, 9689, 9689, 6068, 6068, 4820, 4820, 10682, 10682, 8080, 8080, 10258, 10258, 6763, 6763, 4805, 4805, 6085, 6085, 1018, 1018, 1481, 1481, 4919, 4919, 6613, 6613, 7991, 7991, 9199, 9199, 11560, 11560, 7619, 7619, 10710, 10710, 1095, 1095, 3778, 3778, 11677, 11677, 1693, 1693, 11722, 11722, 3195, 3195, 8330, 8330, 4948, 4948, 1573, 1573, 11813, 11813, 8144, 8144, 11848, 11848, 2485, 2485, 3748, 3748, 2483, 2483, 12147, 12147, 6457, 6457, 11796, 11796, 11946, 11946, 8760, 8760, 5646, 5646, 7393, 7393, 1255, 1255, 7753, 7753, 982, 982, 5195, 5195, 2717, 2717, 295, 295, 8481, 8481, 3707, 3707, 8761, 8761, 7591, 7591, 5406, 5406, 7575, 7575, 11153, 11153, 2500, 2500, 8345, 8345, 9545, 9545, 8635, 8635, 8301, 8301, 9988, 9988, 10040, 10040, 579, 579, 7856, 7856, 4693, 4693, 9447, 9447, 2360, 2360, 6403, 6403, 5078, 5078, 8643, 8643, 11572, 11572, 6381, 6381, 11444, 11444, 3201, 3201, 7711, 7711, 5315, 5315, 2626, 2626, 7635, 7635, 4963, 4963, 6170, 6170, 6586, 6586, 4632, 4632, 1403, 1403, 677, 677, 1842, 1842, 6591, 6591, 2068, 2068, 3757, 3757, 7699, 7699, 6553, 6553, 1892, 1892, 5529, 5529, 1030, 1030, 243, 243, 5653, 5653, 8719, 8719, 11924, 11924, 2837, 2837, 204, 204, 3532, 3532, 189, 189, 11224, 11224, 5416, 5416, 2447, 2447, 3572, 3572, 4255, 4255, 5478, 5478, 147, 147, 3268, 3268, 2847, 2847, 7365, 7365, 8240, 8240, 1944, 1944, 8357, 8357, 8307, 8307, 9369, 9369, 10407, 10407, 1632, 1632, 3678, 3678, 1512, 1512, 3769, 3769, 6461, 6461, 7287, 7287, 3998, 3998, 9462, 9462, 6957, 6957, 1176, 1176, 1566, 1566, 10487, 10487, 9764, 9764, 4475, 4475, 3263, 3263, 5411, 5411, 5011, 5011, 1218, 1218, 9522, 9522, 767, 767, 4846, 4846, 12096, 12096, 5574, 5574, 2532, 2532, 9140, 9140, 7406, 7406, 1962, 1962, 6500, 6500, 9408, 9408, 239, 239, 10162, 10162, 4378, 4378, 11222, 11222, 1526, 1526, 6421, 6421, 3221, 3221, 9744, 9744, 2442, 2442, 6136, 6136, 1901, 1901, 10745, 10745, 7725, 7725, 7967, 7967, 11675, 11675, 10092, 10092, 3407, 3407, 2844, 2844, 1530, 1530, 1912, 1912, 7562, 7562, 10446, 10446, 3753, 3753, 12208, 12208, 2212, 2212, 1190, 1190, 4218, 4218, 7247, 7247, 12221, 12221, 2919, 2919, 12226, 12226, 355, 355, 2291, 2291, 7377, 7377, 7002, 7002, 2678, 2678, 10463, 10463, 12240, 12240, 3007, 3007, 11340, 11340, 9834, 9834, 5446, 5446, 11641, 11641, 5407, 5407, 9520, 9520, 9166, 9166, 8820, 8820, 11745, 11745, 11063, 11063, 11785, 11785, 2840, 2840, 6039, 6039, 9860, 9860, 6860, 6860, 9135, 9135, 9970, 9970, 11897, 11897, 11767, 11767, 4697, 4697, 4938, 4938, 6701, 6701, 7105, 7105, 6389, 6389, 2426, 2426, 11883, 11883, 9115, 9115, 7937, 7937, 2481, 2481, 8257, 8257, 10431, 10431, 11445, 11445, 5146, 5146, 5724, 5724, 11635, 11635, 6026, 6026, 9153, 9153, 8113, 8113, 709, 709, 2637, 2637, 4452, 4452, 7684, 7684, 1956, 1956, 7119, 7119, 9041, 9041, 11475, 11475, 2051, 2051, 7559, 7559, 4611, 4611, 9714, 9714, 5537, 5537, 4301, 4301, 8925, 8925, 7057, 7057, 11341, 11341, 11779, 11779, 3459, 3459, 5672, 5672, 8807, 8807, 11038, 11038, 27, 27, 3359, 3359, 7796, 7796, 10883, 10883, 5777, 5777, 4119, 4119, 11316, 11316, 21, 21, 3978, 3978, 7429, 7429, 9830, 9830, 9955, 9955, 7300, 7300, 4705, 4705, 8209, 8209, 3094, 3094, 8509, 8509, 9011, 9011, 2281, 2281, 216, 216, 2294, 2294, 923, 923, 1041, 1041, 9349, 9349, 8374, 8374, 4505, 4505, 168, 168, 7246, 7246, 10276, 10276, 4906, 4906, 5906, 5906, 9244, 9244, 773, 773, 4227, 4227, 174, 174, 6627, 6627, 10643, 10643, 5959, 5959, 1728, 1728, 6063, 6063, 7384, 7384, 8328, 8328, 1058, 1058, 5547, 5547, 11462, 11462, 1344, 1344, 8812, 8812, 8474, 8474, 2381, 2381, 10381, 10381, 218, 218, 6184, 6184, 9238, 9238, 1392, 1392, 3860, 3860, 11410, 11410, 10805, 10805, 1535, 1535, 11637, 11637, 9916, 9916, 5179, 5179, 8464, 8464, 7509, 7509, 5673, 5673, 10752, 10752, 9051, 9051, 6347, 6347, 6759, 6759, 9314, 9314, 1744, 1744, 316, 316, 170, 170, 11136, 11136, 6302, 6302, 5257, 5257, 417, 417, 12280, 12280, 7073, 7073, 5594, 5594, 4565, 4565, 6267, 6267, 10916, 10916, 8517, 8517, 12282, 12282, 10963, 10963, 1620, 1620, 4916, 4916, 778, 778, 1663, 1663, 2528, 2528, 1360, 1360, 3065, 3065, 1260, 1260, 5189, 5189, 3336, 3336, 12217, 12217, 7428, 7428, 7885, 7885, 11942, 11942, 980, 980, 1305, 1305, 6691, 6691, 12233, 12233, 1681, 1681, 671, 671, 2461, 2461, 6224, 6224, 1015, 1015, 7935, 7935, 10880, 10880, 12231, 12231, 10080, 10080, 4645, 4645, 2110, 2110, 11713, 11713, 10268, 10268, 1635, 1635, 9513, 9513, 7840, 7840, 10440, 10440, 4372, 4372, 11841, 11841, 1159, 1159, 5368, 5368, 7399, 7399, 636, 636, 8120, 8120, 2035, 2035, 1017, 1017, 11825, 11825, 6906, 6906, 293, 293, 4591, 4591, 7681, 7681, 8410, 8410, 791, 791, 2370, 2370, 1275, 1275, 9786, 9786, 10398, 10398, 8705, 8705, 9272, 9272, 6077, 6077, 10036, 10036, 5088, 5088, 3515, 3515, 3991, 3991, 8136, 8136, 8577, 8577, 6092, 6092, 2344, 2344, 12150, 12150, 3, 3, 5835, 5835, 6328, 6328, 6671, 6671, 10200, 10200, 4554, 4554, 9450, 9450, 8195, 8195, 442, 442, 11749, 11749, 6554, 6554, 3837, 3837, 3542, 3542, 7350, 7350, 3643, 3643, 7171, 7171, 11869, 11869, 6463, 6463, 11177, 11177, 24, 24, 9813, 9813, 1468, 1468, 4212, 4212, 7866, 7866, 11854, 11854, 1866, 1866, 4115, 4115, 3536, 3536, 7969, 7969, 3276, 3276, 6118, 6118, 3758, 3758, 9644, 9644, 4566, 4566, 8212, 8212, 8929, 8929, 2548, 2548, 3393, 3393, 192, 192, 4770, 4770, 11744, 11744, 9118, 9118, 1483, 1483, 8809, 8809, 2639, 2639, 8342, 8342, 3710, 3710, 2307, 2307, 1630, 1630, 12077, 12077, 5486, 5486, 3418, 3418, 11950, 11950, 4251, 4251, 9987, 9987, 8095, 8095, 2566, 2566, 1536, 1536, 1293, 1293, 7929, 7929, 11499, 11499, 11864, 11864, 9027, 9027, 8823, 8823, 5291, 5291, 5102, 5102, 6167, 6167, 751, 751, 10593, 10593, 7021, 7021, 2766, 2766, 9577, 9577, 9430, 9430, 6162, 6162, 3315, 3315, 8239, 8239, - - // layer #11 - 1, 1331, 1945, 8105, 10302, 9727, 6320, 6244, 3400, 3048, 1518, 5062, 3150, 2101, 6828, 6497, 8340, 3573, 12109, 6200, 6281, 3491, 1279, 6467, 5277, 6668, 2450, 4365, 9407, 10515, 10583, 2779, 12149, 10284, 10347, 8177, 7822, 2299, 8, 10648, 3271, 3395, 8682, 4082, 1404, 796, 2622, 12095, 12144, 3629, 622, 4519, 5468, 2820, 5275, 4006, 10849, 444, 1092, 3350, 10232, 2580, 5349, 4188, 7311, 10342, 1522, 10386, 10930, 9943, 11169, 8538, 9042, 3971, 1131, 6103, 64, 11450, 1590, 2582, 8011, 8078, 11232, 6368, 8687, 10737, 11129, 4454, 4976, 11574, 6877, 10271, 5333, 7470, 769, 3552, 8736, 2222, 8122, 8351, 5925, 8926, 9332, 9002, 12176, 9354, 1417, 5810, 3329, 6859, 10891, 7190, 9048, 11957, 512, 5577, 431, 8367, 2643, 3179, 3833, 1788, 8051, 12162, 3009, 11054, 2941, 6569, 5860, 8434, 5797, 10604, 6152, 3838, 8443, 5487, 3531, 5363, 10533, 9963, 922, 10571, 11385, 1098, 11336, 9613, 2054, 5716, 1105, 8364, 10939, 9633, 4096, 7749, 3448, 5491, 8855, 854, 6086, 2015, 2963, 11273, 11783, 2409, 11239, 3396, 10013, 6027, 9509, 11098, 60, 6126, 6099, 7029, 3670, 6037, 10530, 5970, 7376, 10834, 5057, 8784, 4665, 3170, 4143, 8861, 8840, 5467, 1489, 3330, 8190, 547, 3006, 7061, 9395, 6832, 11821, 3831, 11415, 4161, 8241, 6983, 3889, 2590, 6370, 11349, 2338, 2761, 480, 12141, 11925, 7076, 4782, 11429, 10506, 10893, 9852, 649, 3589, 8827, 453, 782, 8566, 9443, 9275, 6869, 11912, 2062, 4075, 4376, 11759, 7332, 1426, 5500, 8545, 6070, 5297, 8710, 4483, 6708, 6534, 8431, 1804, 4769, 6415, 9799, 3840, 11105, 9377, 7452, 1389, 5409, 10314, 1121, 5082, 5192, 4134, 9171, 3624, 6256, 7083, 1810, 466, 5796, 9273, 4207, 8022, 10430, 8049, 9500, 11408, 7133, 6915, 11693, 5509, 8235, 11286, 4508, 3116, 6003, 2143, 1285, 2164, 4658, 6142, 2817, 1282, 10460, 11112, 6405, 8778, 8968, 3789, 4669, 8494, 11923, 4414, 892, 7508, 2191, 3728, 9501, 450, 9078, 2731, 9706, 2947, 2266, 5241, 7908, 6164, 7521, 7205, 4435, 4265, 11486, 350, 11157, 4855, 10280, 5023, 397, 12269, 10247, 10256, 9946, 2873, 2084, 8779, 10299, 5734, 485, 6507, 9361, 10734, 7136, 10908, 5239, 5246, 2274, 3600, 11179, 9559, 3914, 11287, 5839, 5061, 1819, 156, 11012, 8484, 10902, 9542, 5865, 2800, 3233, 1973, 8506, 3317, 3176, 12129, 8242, 8314, 5834, 10695, 4383, 8787, 8658, 9005, 3880, 2900, 1154, 12138, 7932, 1241, 5045, 5101, 5903, 4222, 3409, 2738, 6734, 4273, 9845, 3621, 2263, 1248, 2073, 6427, 1193, 2602, 10053, 10111, 1286, 3495, 6603, 1958, 830, 11009, 4491, 5067, 9805, 11826, 10486, 8851, 7819, 10595, 6462, 10911, 9232, 11081, 2011, 9928, 3493, 3941, 10357, 9198, 2694, 9615, 4716, 9606, 5026, 4390, 5815, 9984, 4295, 2260, 9544, 8527, 6690, 7154, 10288, 3382, 3668, 3375, 6640, 2049, 11350, 3669, 4706, 8585, 10154, 9363, 1107, 11026, 2540, 1265, 122, 2625, 3799, 5690, 3366, 6950, 9122, 12139, 9263, 3186, 861, 3114, 3341, 10542, 9653, 6138, 9782, 5791, 2618, 6771, 4364, 8076, 8570, 2478, 4766, 2422, 3964, 4103, 4777, 4774, 781, 7235, 7498, 1170, 8856, 2185, 8031, 10120, 976, 8711, 5814, 8653, 2350, 6444, 11531, 11089, 370, 910, 6888, 334, 2150, 10602, 3490, 12237, 4522, 9461, 8655, 5012, 10334, 3163, 7115, 7535, 1261, 7087, 7134, 8246, 1349, 1325, 6248, 8724, 10828, 9360, 9403, 5191, 2803, 7226, 7808, 8243, 9645, 7779, 6511, 2396, 6225, 2689, 2960, 7280, 5948, 2672, 4911, 11082, 3342, 11873, 11598, 1954, 7795, 3229, 8938, 726, 7764, 11124, 10088, 7540, 7916, 4523, 10792, 10600, 828, 8347, 601, 1146, 1490, 4661, 10135, 8652, 1019, 4499, 3426, 787, 2932, 6879, 644, 9223, 11391, 9084, 10717, 9087, 2421, 2633, 2158, 8961, 6761, 3343, 915, 1254, 10059, 5808, 667, 2969, 6970, 11164, 1883, 11606, 313, 11066, 6624, 5331, 4808, 9168, 11920, 421, 7346, 7771, 8152, 11414, 2830, 6296, 11167, 5876, 5152, 50, 5105, 11227, 12002, 11251, 7079, 8775, 4975, 10243, 4932, 2166, 7320, 10032, 6738, 9597, 5336, 11463, 6604, 3289, 2775, 6825, 2504, 2505, 3836, 5781, 1597, 11899, 9337, 3368, 9612, 723, 3771, 5289, 10351, 1212, 3313, 10141, 4349, 400, 3973, 3793, 9993, 3985, 7476, 8755, 2933, 8210, 2589, 5039, 9404, 6522, 4748, 3042, 5821, 5681, 3676, 1734, 9911, 5444, 7743, 7751, 6110, 9381, 487, 9169, 962, 2366, 3162, 5784, 5590, 5445, 9074, 9696, 1926, 7394, 10214, 3200, 7206, 5766, 6210, 7302, 10652, 8595, 11175, 4235, 8423, 3445, 1498, 3020, 1117, 12047, 9701, 8581, 4830, 1583, 5554, 6685, 499, 563, 12013, 1314, 3896, 11907, 7696, 6639, 718, 9405, 7853, 6693, 11147, 3834, 3119, 9996, 7978, 1022, 8492, 9261, 524, 9260, 11482, 7315, 3377, 9302, 5939, 2982, 11984, 11871, 8936, 10353, 3874, 7203, 1773, 375, 7565, 4324, 3992, 4504, 10081, 10512, 6590, 9233, 123, 3956, 5744, 1506, 1379, 4388, 3153, 6094, 374, 6234, 2379, 8176, 6491, 354, 4192, 346, 5833, 9364, 2438, 682, 10645, 11567, 9849, 8945, 10043, 9090, 6414, 8468, 1895, 3000, 11364, 10014, 7358, 11454, 6914, 10362, 3564, 130, 984, 7070, 9085, 12048, 11032, 10526, 646, 11885, 2992, 716, 6743, 3963, 2772, 2832, 8958, 2768, 9797, 1178, 7215, 5456, 11426, 6513, 5058, 10115, 6610, 11275, 2156, 6299, 2871, 11711, 4889, 6378, 9708, 5609, 6156, 9162, 3934, 1040, 7872, 7404, 11235, 10361, 2233, 10474, 5168, 9057, 11647, 5728, 4788, 7126, 9887, 10367, 10219, 9855, 4642, 9424, 8564, 6781, 5385, 2948, 3597, 7186, 3724, 4177, 4959, 1236, 10679, 7665, 2245, 1868, 3930, 8005, 92, 11851, 6894, 8320, 1531, 10076, 3857, 9154, 5575, 10058, 4477, 11011, 7153, 8957, 1437, 7852, 5362, 9202, 8018, 5106, 269, 1658, 7067, 5092, 6213, 11295, 4198, 8332, 5214, 8838, 2805, 9888, 11698, 12164, 5671, 2655, 6862, 2595, 736, 8785, 5996, 5115, 12248, 6874, 6278, 11787, 7733, 6730, 11238, 2065, 8068, 10211, 11496, 1371, 6029, 12171, 2699, 3981, 2152, 975, 7380, 3869, 548, 4337, 9006, 5211, 4845, 9259, 10151, 5370, 7561, 11289, 8501, 8951, 5740, 8471, 5888, 8835, 11101, 4053, 11961, 5836, 1068, 8273, 419, 4684, 3881, 4231, 3099, 7954, 5945, 10968, 11365, 11345, 9303, 7270, 4927, 7800, 9884, 6374, 4384, 10118, 10603, 4821, 1893, 338, 7474, 6093, 11332, 4289, 6563, 10163, 9053, 6323, 10237, 9235, 2785, 7846, 9665, 9821, 8544, 4739, 3352, 605, 6470, 9270, 214, 2187, 10693, 1721, 4897, 4737, 690, 9004, 2549, 955, 5338, 1836, 10494, 7210, 11090, 1701, 2855, 2704, 10636, 11877, 4633, 9734, 3348, 7570, 10979, 1428, 8162, 146, 9991, 1323, 3586, 4834, 6907, 1045, 2238, 4840, 2604, 426, 1712, 5207, 11810, 1479, 2309, 1029, 5520, 10587, 8103, 7640, 5837, 2399, 10218, 8524, 2697, 1319, 10551, 9343, 11354, 8993, 197, 4138, 2206, 11404, 1809, 11424, 3851, 1168, 6194, 10584, 4110, 1805, 6100, 8360, 5615, 1853, 8543, 3408, 1407, 4789, 8457, 11832, 6183, 8232, 7293, 10962, 3379, 11964, 9829, 6903, 8010, 6747, 9287, 10552, 10674, 1010, 4809, 10499, 1576, 8526, 5359, 5209, 2183, 5369, 6230, 9344, 396, 10938, 8302, 2151, 11933, 5435, 8053, 2535, 6899, 2686, 11256, 1445, 6211, 8633, 308, 4411, 9188, 1673, 2454, 9689, 4898, 6068, 2635, 4820, 562, 10682, 11658, 8080, 1605, 10258, 319, 6763, 6005, 4805, 5175, 6085, 684, 1018, 3168, 1481, 4971, 4919, 9441, 6613, 2979, 7991, 6036, 9199, 4025, 11560, 532, 7619, 2464, 10710, 12059, 1095, 7343, 3778, 2317, 11677, 8791, 1693, 4496, 11722, 7241, 3195, 551, 8330, 2552, 4948, 11173, 1573, 4533, 11813, 5472, 8144, 766, 11848, 2901, 2485, 1794, 3748, 11543, 2483, 11421, 12147, 7622, 6457, 4256, 11796, 7423, 11946, 10449, 8760, 9588, 5646, 6247, 7393, 8883, 1255, 11390, 7753, 8772, 982, 4408, 5195, 8127, 2717, 3361, 295, 11686, 8481, 6909, 3707, 6128, 8761, 10919, 7591, 2063, 5406, 6321, 7575, 5345, 11153, 11820, 2500, 9470, 8345, 10228, 9545, 9858, 8635, 2970, 8301, 820, 9988, 9619, 10040, 5097, 579, 8731, 7856, 10686, 4693, 3571, 9447, 2310, 2360, 7465, 6403, 6116, 5078, 12157, 8643, 1329, 11572, 4215, 6381, 1412, 11444, 5893, 3201, 8537, 7711, 2026, 5315, 8090, 2626, 5130, 7635, 11471, 4963, 6560, 6170, 3218, 6586, 3909, 4632, 8403, 1403, 11754, 677, 3990, 1842, 6191, 6591, 10564, 2068, 12061, 3757, 11233, 7699, 10632, 6553, 9142, 1892, 11296, 5529, 10277, 1030, 6851, 243, 3919, 5653, 3275, 8719, 4173, 11924, 5745, 2837, 3324, 204, 1166, 3532, 6694, 189, 5779, 11224, 8009, 5416, 7342, 2447, 372, 3572, 10778, 4255, 10465, 5478, 3841, 147, 11322, 3268, 11691, 2847, 4345, 7365, 8482, 8240, 5652, 1944, 6774, 8357, 1622, 8307, 8806, 9369, 9093, 10407, 2014, 1632, 9328, 3678, 4396, 1512, 9365, 3769, 2627, 6461, 9580, 7287, 2976, 3998, 201, 9462, 9986, 6957, 6150, 1176, 4553, 1566, 7505, 10487, 10182, 9764, 6411, 4475, 8349, 3263, 5036, 5411, 687, 5011, 9003, 1218, 11299, 9522, 3823, 767, 890, 4846, 10590, 12096, 1186, 5574, 8727, 2532, 2906, 9140, 11519, 7406, 1608, 1962, 6154, 6500, 44, 9408, 11846, 239, 10884, 10162, 7722, 4378, 2132, 11222, 5347, 1526, 3421, 6421, 5496, 3221, 10579, 9744, 4369, 2442, 6006, 6136, 7120, 1901, 10986, 10745, 9488, 7725, 8371, 7967, 10959, 11675, 6129, 10092, 575, 3407, 76, 2844, 352, 1530, 8745, 1912, 1049, 7562, 331, 10446, 4767, 3753, 5909, 12208, 2790, 2212, 7101, 1190, 10898, 4218, 10374, 7247, 11181, 12221, 7804, 2919, 1865, 12226, 2170, 355, 5523, 2291, 1649, 7377, 12165, 7002, 4600, 2678, 608, 10463, 2816, 12240, 8515, 3007, 8392, 11340, 2648, 9834, 1269, 5446, 10405, 11641, 10031, 5407, 7652, 9520, 1161, 9166, 9258, 8820, 3425, 11745, 987, 11063, 2631, 11785, 5071, 2840, 7317, 6039, 903, 9860, 11297, 6860, 12222, 9135, 4864, 9970, 10239, 11897, 6675, 11767, 5691, 4697, 8895, 4938, 10152, 6701, 9506, 7105, 6514, 6389, 12060, 2426, 9288, 11883, 330, 9115, 2822, 7937, 7896, 2481, 8759, 8257, 3701, 10431, 9380, 11445, 7224, 5146, 4353, 5724, 11753, 11635, 2045, 6026, 8178, 9153, 4244, 8113, 8661, 709, 9715, 2637, 7482, 4452, 2314, 7684, 2956, 1956, 10457, 7119, 570, 9041, 2640, 11475, 10287, 2051, 1723, 7559, 8627, 4611, 5030, 9714, 1306, 5537, 8636, 4301, 10246, 8925, 8001, 7057, 4071, 11341, 3979, 11779, 9374, 3459, 7843, 5672, 3986, 8807, 10700, 11038, 6223, 27, 11359, 3359, 9922, 7796, 4560, 10883, 8831, 5777, 8562, 4119, 1495, 11316, 7571, 21, 3373, 3978, 10448, 7429, 7643, 9830, 8234, 9955, 2563, 7300, 7990, 4705, 7254, 8209, 1258, 3094, 1299, 8509, 7310, 9011, 11866, 2281, 628, 216, 4849, 2294, 5642, 923, 11902, 1041, 9203, 9349, 7051, 8374, 11960, 4505, 11412, 168, 2406, 7246, 9850, 10276, 11988, 4906, 4427, 5906, 8215, 9244, 2475, 773, 8876, 4227, 10064, 174, 10392, 6627, 9324, 10643, 8905, 5959, 5024, 1728, 1925, 6063, 8269, 7384, 9193, 8328, 12179, 1058, 7252, 5547, 9657, 11462, 5273, 1344, 6959, 8812, 5066, 8474, 9881, 2381, 10838, 10381, 4275, 218, 7511, 6184, 9563, 9238, 6778, 1392, 9402, 3860, 858, 11410, 9795, 10805, 3325, 1535, 3111, 11637, 4707, 9916, 12099, 5179, 11409, 8464, 8860, 7509, 3522, 5673, 5317, 10752, 6516, 9051, 3661, 6347, 5314, 6759, 681, 9314, 9622, 1744, 10932, 316, 2770, 170, 5068, 11136, 1482, 6302, 6864, 5257, 4626, 417, 2022, 12280, 310, 7073, 789, 5594, 10769, 4565, 5249, 6267, 9435, 10916, 3598, 8517, 5669, 12282, 2972, 10963, 4710, 1620, 5645, 4916, 5448, 778, 3242, 1663, 1433, 2528, 9871, 1360, 3677, 3065, 11856, 1260, 5756, 5189, 141, 3336, 3887, 12217, 2480, 7428, 6312, 7885, 129, 11942, 5125, 980, 1746, 1305, 4206, 6691, 8485, 12233, 11487, 1681, 813, 671, 8293, 2461, 6717, 6224, 1358, 1015, 11464, 7935, 5234, 10880, 4838, 12231, 8825, 10080, 9181, 4645, 1128, 2110, 6518, 11713, 7551, 10268, 1340, 1635, 1032, 9513, 4133, 7840, 1679, 10440, 9070, 4372, 6435, 11841, 5873, 1159, 6504, 5368, 4899, 7399, 4580, 636, 10864, 8120, 5689, 2035, 5005, 1017, 1837, 11825, 9155, 6906, 12003, 293, 9024, 4591, 2988, 7681, 11252, 8410, 10720, 791, 8256, 2370, 8486, 1275, 1143, 9786, 11115, 10398, 2324, 8705, 10117, 9272, 2876, 6077, 2325, 10036, 12062, 5088, 889, 3515, 8645, 3991, 3173, 8136, 2407, 8577, 11795, 6092, 10001, 2344, 10747, 12150, 11615, 3, 3993, 5835, 12026, 6328, 4603, 6671, 6443, 10200, 9144, 4554, 2897, 9450, 6303, 8195, 7202, 442, 10719, 11749, 6311, 6554, 10473, 3837, 7112, 3542, 7715, 7350, 806, 3643, 6967, 7171, 8337, 11869, 6274, 6463, 12242, 11177, 6897, 24, 7366, 9813, 10185, 1468, 12246, 4212, 2388, 7866, 11707, 11854, 10887, 1866, 1268, 4115, 8460, 3536, 12018, 7969, 1332, 3276, 10050, 6118, 7740, 3758, 275, 9644, 6448, 4566, 6580, 8212, 5251, 8929, 1036, 2548, 11913, 3393, 6020, 192, 9772, 4770, 7746, 11744, 11945, 9118, 6815, 1483, 7633, 8809, 1073, 2639, 10144, 8342, 6235, 3710, 10121, 2307, 10656, 1630, 6666, 12077, 475, 5486, 2200, 3418, 2428, 11950, 3484, 4251, 5141, 9987, 8288, 8095, 9281, 2566, 11293, 1536, 4442, 1293, 523, 7929, 9537, 11499, 5364, 11864, 11908, 9027, 8584, 8823, 7418, 5291, 724, 5102, 7234, 6167, 11514, 751, 4172, 10593, 3800, 7021, 5311, 2766, 7135, 9577, 3294, 9430, 4261, 6162, 4859, 3315, 514, 8239, 4321, - }; - const int p = 12289; - int dst[4096]; - ntt(arr, l, twiddle, p, dst); - - // for (int i = 0; i < n; i++) { - // printf("%d", dst[i]); - // if ((i + 1) % 8 == 0) { - // printf("\n"); - // } else { - // printf(" "); - // } - // } -} diff --git a/tests/eval/_ntt/ntt_512.json b/tests/eval/_ntt/ntt_512.json new file mode 100644 index 000000000..c4939acc4 --- /dev/null +++ b/tests/eval/_ntt/ntt_512.json @@ -0,0 +1 @@ +{"input": [7887, 3853, 2079, 11644, 1142, 11683, 10770, 10208, 5537, 2389, 5091, 2151, 6186, 22, 7103, 6959, 11217, 11666, 2821, 8864, 3918, 11236, 2104, 10659, 4203, 3888, 5730, 9261, 6214, 11748, 679, 5624, 8888, 5888, 4451, 10882, 767, 2807, 5186, 2859, 10791, 6089, 10955, 9751, 10483, 5541, 9909, 7969, 7612, 2478, 6245, 2679, 5160, 12236, 1171, 10056, 5796, 1918, 7488, 10508, 3615, 10792, 6243, 8703, 8537, 9084, 2728, 7447, 8087, 9689, 11504, 10843, 8232, 11168, 574, 8637, 4155, 4430, 849, 4753, 5877, 11022, 3497, 532, 4253, 8389, 5545, 6616, 10638, 4505, 4556, 11691, 10206, 5275, 3074, 12002, 1867, 6339, 10979, 7314, 2161, 10248, 10277, 11367, 2564, 2490, 8999, 10077, 6715, 4800, 5098, 6989, 1893, 8738, 5071, 8673, 2853, 10778, 9533, 7430, 3593, 12064, 10594, 2464, 1684, 3744, 8365, 11343, 10510, 1004, 10425, 1105, 9985, 9258, 2984, 2792, 4487, 7114, 9487, 7583, 5067, 10689, 5125, 802, 6904, 7686, 6819, 4096, 5725, 9406, 11214, 3697, 7106, 5780, 8120, 8925, 3128, 2807, 7290, 416, 1552, 479, 8049, 9095, 6423, 10881, 680, 5122, 7959, 5853, 3997, 8117, 4570, 1468, 11149, 9836, 4122, 4604, 5049, 2532, 11119, 11344, 6982, 5434, 2025, 2249, 11445, 2015, 11140, 10106, 4566, 3347, 1487, 3373, 4705, 23, 3392, 9718, 8918, 906, 11758, 11123, 1797, 2466, 626, 7171, 950, 8258, 6336, 8114, 6912, 1857, 11936, 12068, 6749, 3677, 7672, 2156, 5784, 10386, 10750, 6685, 426, 10638, 2068, 2434, 9513, 10249, 1646, 10652, 6667, 3742, 10416, 9979, 6786, 6575, 9342, 1162, 10630, 7061, 5662, 9673, 8726, 3718, 3132, 9198, 7693, 8064, 2865, 7257, 124, 397, 12011, 9426, 1850, 8551, 11000, 1502, 8438, 8771, 1533, 5530, 9021, 337, 5123, 8606, 1208, 12158, 11556, 11549, 6420, 4770, 264, 3701, 11141, 4923, 7052, 2969, 854, 2694, 4694, 9350, 11138, 12256, 1883, 11333, 10376, 7155, 7654, 5256, 7940, 2298, 827, 1731, 10636, 7744, 8167, 11993, 10431, 9825, 11611, 905, 8146, 12149, 155, 212, 1946, 7395, 7727, 5878, 7859, 6104, 5775, 10106, 7386, 6069, 8647, 1035, 3950, 11113, 9505, 10424, 2914, 5987, 251, 10757, 6104, 6349, 7971, 5818, 8473, 3677, 12168, 8045, 11686, 9600, 3172, 5191, 11271, 5834, 10630, 6886, 6463, 7869, 6025, 9264, 4163, 8428, 10065, 11062, 1549, 10339, 3517, 1670, 1150, 2116, 7836, 7743, 10670, 7804, 6952, 6293, 9475, 7389, 10001, 11265, 2477, 8662, 6430, 2330, 10807, 10869, 9503, 1166, 11574, 3324, 10592, 2328, 12058, 6027, 9845, 2183, 4670, 6999, 11519, 1846, 4132, 11818, 7445, 10049, 7958, 5926, 934, 9306, 7885, 1021, 6955, 7826, 10378, 9301, 319, 6524, 11132, 9421, 5172, 8715, 7397, 5030, 5804, 8170, 7487, 580, 4895, 5412, 11675, 9795, 11785, 7855, 1997, 9802, 9636, 11051, 9257, 6369, 9910, 6973, 3735, 437, 7976, 2222, 2475, 5537, 12221, 879, 3088, 7417, 6551, 7068, 5650, 6266, 9812, 11283, 2657, 1215, 2985, 8625, 10545, 2560, 8038, 672, 9000, 12265, 4552, 10624, 1823, 7214, 6268, 6061, 4541, 7031, 5862, 6877, 8410, 4840, 5541, 6069, 11811, 8978, 17, 10056, 10465, 2702, 10240, 2047, 410, 10634, 10521, 2906, 6341, 7093, 9582, 10831, 9793, 1913, 7014, 7831, 4933, 6605, 7722, 9754, 2797, 3085, 11028, 11534, 8057, 9633, 1812, 8738, 8177, 2049, 4773, 6784, 8664, 7287, 8402, 416, 10753, 11752, 1408, 3101, 7666, 8730], "output": [7535, 5402, 2127, 9798, 8726, 2530, 10685, 6198, 1697, 6160, 6873, 7524, 7966, 9559, 5939, 828, 4530, 9542, 10999, 12264, 7257, 7802, 8123, 3421, 6843, 7811, 9712, 1537, 3397, 3330, 70, 571, 8424, 3168, 7716, 9221, 10543, 2715, 8895, 7599, 11233, 11838, 8008, 5665, 5982, 8167, 1925, 11322, 5809, 9560, 10422, 6248, 11945, 7958, 6616, 2522, 2542, 9750, 9122, 10736, 7093, 6643, 7843, 2501, 3333, 676, 5267, 6550, 4179, 7130, 7969, 6578, 757, 4543, 2471, 8739, 3364, 2019, 3730, 8657, 1084, 3943, 10219, 11795, 9026, 3451, 9159, 10666, 6284, 2687, 5185, 9279, 10510, 4675, 8123, 10176, 1678, 5199, 485, 11164, 4146, 9475, 283, 5951, 11782, 8303, 7208, 1164, 4151, 850, 8953, 12189, 7839, 2847, 4537, 2335, 9288, 11365, 12098, 5741, 3679, 6973, 11575, 1023, 2542, 10837, 4, 6638, 5477, 4877, 3640, 5290, 7391, 8514, 8925, 6640, 7438, 1055, 8500, 9959, 12055, 4744, 2976, 12276, 2680, 4913, 11571, 6140, 2232, 10991, 871, 4011, 7018, 7157, 3269, 7553, 3253, 3400, 9464, 6012, 6850, 7245, 9431, 3333, 9373, 11715, 5977, 349, 6688, 2717, 327, 8838, 3695, 6498, 9995, 6957, 10763, 7070, 6222, 7564, 4131, 12141, 9017, 8671, 5354, 5788, 7377, 6530, 8627, 9348, 1969, 10792, 11313, 1129, 124, 9992, 458, 2100, 2338, 10464, 11717, 4340, 3912, 1049, 9114, 7882, 11576, 3925, 7194, 3197, 9937, 672, 1786, 3122, 8752, 7261, 5892, 515, 4812, 3489, 8924, 10798, 1420, 12265, 12058, 5607, 1288, 5413, 6361, 10074, 1134, 8926, 219, 6635, 10491, 10143, 5476, 2998, 1579, 9490, 1601, 3505, 2984, 5748, 357, 588, 1944, 2227, 5790, 189, 7609, 3466, 5096, 10418, 1420, 6089, 4123, 9488, 380, 9241, 8401, 11719, 4391, 8718, 9940, 6127, 10699, 3476, 10821, 2388, 6844, 8003, 368, 5668, 9670, 8526, 6911, 9902, 7194, 9240, 11334, 4117, 5964, 11056, 365, 11430, 1960, 4448, 11112, 5023, 3741, 1809, 4351, 7802, 8239, 11846, 8797, 520, 5548, 8511, 4634, 3707, 7402, 6080, 11541, 9064, 455, 9513, 933, 2750, 8535, 11253, 9209, 3832, 3908, 7390, 5325, 6823, 1896, 11047, 2647, 10561, 6995, 1996, 4463, 6817, 839, 5985, 10165, 11156, 3300, 6964, 4065, 12157, 1421, 5872, 3613, 1133, 3439, 2220, 2069, 8837, 9428, 8465, 4799, 10998, 10687, 739, 10008, 5751, 10219, 2885, 4143, 11314, 4511, 3737, 144, 822, 2405, 5464, 11388, 10298, 3948, 8814, 1167, 11007, 9625, 8286, 6233, 10200, 992, 10609, 5487, 8003, 9821, 9274, 10467, 3104, 6704, 134, 10704, 1930, 11100, 8224, 8208, 2581, 8154, 5157, 8124, 6222, 6431, 10025, 7553, 1309, 7778, 8316, 8179, 10445, 6689, 4195, 9657, 10098, 5708, 3431, 9311, 8948, 5711, 5313, 3081, 8880, 1241, 9313, 8885, 6540, 3507, 4493, 4869, 8808, 8270, 7919, 721, 4538, 822, 8919, 7169, 3264, 7025, 8933, 2430, 1889, 9801, 1223, 9097, 2045, 10678, 8106, 9573, 4289, 793, 906, 12123, 5098, 4759, 376, 10190, 1263, 3988, 5889, 8218, 2280, 6832, 6057, 7721, 8823, 9482, 5972, 3278, 9116, 9850, 8343, 3600, 10228, 7601, 182, 10668, 7020, 11715, 3116, 6613, 6023, 4676, 11298, 10743, 1128, 3781, 10046, 8203, 7541, 8867, 985, 8135, 8936, 3271, 4882, 4584, 3748, 1094, 8689, 9206, 8806, 8746, 1332, 7088, 6041, 864, 4960, 1796, 12220, 5612, 4986, 8402, 43, 10288, 1298, 11362, 7590, 3177, 2839, 5438, 9591, 327, 10570]} \ No newline at end of file diff --git a/tests/eval/_ntt/ntt_512_main.c b/tests/eval/_ntt/ntt_512_main.c deleted file mode 100644 index 9e1f20edd..000000000 --- a/tests/eval/_ntt/ntt_512_main.c +++ /dev/null @@ -1,105 +0,0 @@ -// requires VLEN >= 2048 - -#include - -void ntt(const int *array, int l, const int *twiddle, int p, int *dst); - -void test() { - const int l = 9; - const int n = 512; - static const int arr[512] = { - 9997, 6362, 7134, 11711, 5849, 9491, 5972, 4164, 5894, 11069, - 7697, 8319, 2077, 12086, 10239, 5394, 4898, 1370, 1205, 2997, - 5274, 4625, 11983, 1789, 3645, 7666, 12128, 10883, 7376, 8883, - 2321, 1889, 2026, 8059, 2741, 865, 1785, 9955, 2395, 9330, - 11465, 7383, 9649, 11285, 3647, 578, 1158, 9936, 12019, 11114, - 7894, 4832, 10148, 10363, 11388, 9122, 10758, 2642, 4171, 10586, - 1194, 5280, 3055, 9220, 10577, 9046, 1284, 7915, 10213, 6902, - 3777, 9896, 429, 7730, 7429, 8666, 10887, 11255, 2437, 7782, - 1327, 7010, 4009, 1038, 9466, 5352, 1473, 10067, 11753, 2019, - 8472, 7665, 2679, 5070, 2248, 3044, 10301, 10671, 2092, 1069, - 9032, 9131, 11715, 6662, 3423, 10027, 5436, 4259, 999, 3316, - 11164, 5597, 6578, 800, 8242, 6952, 2288, 1481, 6770, 11948, - 8938, 10813, 11107, 1362, 4510, 9388, 8840, 10557, 6206, 7808, - 7131, 1394, 2604, 1509, 689, 5222, 8867, 9934, 7165, 6099, - 3229, 1263, 4414, 12212, 4963, 9236, 9040, 6062, 11163, 8169, - 4575, 6097, 3006, 1, 1384, 12039, 5445, 11355, 12197, 9182, - 10085, 9295, 8890, 10651, 1540, 9061, 10222, 2524, 2213, 6974, - 2066, 7348, 7444, 173, 7529, 3884, 3531, 4312, 640, 5352, - 5880, 3985, 781, 10165, 1106, 8114, 6043, 8202, 10617, 3060, - 11173, 11521, 6933, 9540, 11782, 2284, 6462, 3740, 2581, 126, - 508, 12165, 4956, 8045, 9379, 5250, 8148, 6539, 4891, 11252, - 5041, 9969, 8524, 9892, 4058, 10580, 10025, 9748, 8829, 4438, - 468, 4773, 1657, 1348, 10055, 7192, 9556, 5919, 5690, 6153, - 6270, 4938, 6206, 1003, 596, 11173, 9858, 4825, 7940, 794, - 7477, 10146, 7203, 4729, 5741, 4603, 1806, 7034, 8772, 10435, - 10777, 1359, 630, 11059, 8005, 225, 10355, 9226, 4449, 11236, - 680, 8615, 6828, 5502, 10082, 5491, 4346, 7831, 5429, 1253, - 6662, 9415, 584, 9362, 8452, 1937, 3271, 6852, 6573, 7706, - 1229, 8535, 3786, 6441, 7230, 533, 5778, 6436, 11728, 7896, - 785, 7591, 9061, 6149, 10403, 9079, 10837, 9776, 7850, 7870, - 5008, 5319, 541, 315, 9973, 5055, 7111, 8399, 614, 10495, - 9441, 10946, 449, 6965, 7980, 11475, 9321, 2256, 8998, 4321, - 11269, 4744, 5021, 11981, 7947, 7695, 4000, 1140, 2895, 3419, - 159, 5370, 10899, 3288, 12007, 8894, 7923, 7366, 11534, 5214, - 10461, 11199, 10965, 3739, 5507, 8882, 10725, 9649, 1144, 9153, - 5573, 878, 11115, 5677, 5970, 7221, 8614, 4703, 9394, 11660, - 8423, 6621, 11112, 10945, 527, 5019, 5396, 10049, 6770, 3406, - 2967, 3890, 2441, 4682, 6026, 617, 7316, 2627, 4456, 8925, - 2388, 11354, 4554, 10543, 2610, 10688, 1150, 2556, 4278, 431, - 9260, 3545, 12215, 631, 4407, 8145, 1403, 8523, 1982, 12073, - 950, 7671, 31, 1299, 9003, 11690, 5637, 6761, 5235, 5722, - 11858, 2210, 7870, 11608, 8884, 8550, 4776, 4998, 4270, 8850, - 12111, 240, 5674, 3845, 5057, 1608, 48, 2760, 8612, 278, - 5633, 9505, 3730, 1971, 8637, 8659, 894, 8594, 4221, 6783, - 5664, 9506, 2811, 11058, 4475, 2912, 2289, 2136, 7899, 6065, - 5259, 2230, 6793, 4280, 3140, 1721, 8333, 11216, 5383, 7139, - 10711, 1017, 2001, 10911, 1750, 162, 11775, 10575, 1646, 8322, - 175, 10156, 3635, 4893, 2207, 3234, 4380, 1900, 5493, 3082, - 10058, 9948, 10752, 7044, 10073, 11210, 8362, 9268, 8694, 1438, - 761, 10180, 6570, 6349, 9028, 10495, 4756, 9332, 8348, 4995, - 6933, 4351, 111, 1610, 7410, 960, 11972, 2853, 3551, 1423, - 2634, 3972}; - // const int twiddle[9] = {3400, 8340, 12149, 7311, - // 5860, 4134, 8246, 1479, 12288}; - static const int twiddle[] = { - // layer #0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - // layer #1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, - - // layer #2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, - - // layer #3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, - - // layer #4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - - // layer #5 - 1, 1, 1, 1, 1, 1, 1, 1, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 8961, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 563, 563, 563, 563, 563, 563, 563, 563, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 8785, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 9545, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6553, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 9744, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 9314, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, - - // layer #6 - 1, 1, 1, 1, 12149, 12149, 12149, 12149, 7311, 7311, 7311, 7311, 8736, 8736, 8736, 8736, 5860, 5860, 5860, 5860, 2963, 2963, 2963, 2963, 3006, 3006, 3006, 3006, 9275, 9275, 9275, 9275, 4134, 4134, 4134, 4134, 11112, 11112, 11112, 11112, 5023, 5023, 5023, 5023, 9542, 9542, 9542, 9542, 3621, 3621, 3621, 3621, 9198, 9198, 9198, 9198, 2625, 2625, 2625, 2625, 1170, 1170, 1170, 1170, 8246, 8246, 8246, 8246, 726, 726, 726, 726, 8961, 8961, 8961, 8961, 11227, 11227, 11227, 11227, 1212, 1212, 1212, 1212, 2366, 2366, 2366, 2366, 563, 563, 563, 563, 7203, 7203, 7203, 7203, 11567, 11567, 11567, 11567, 2768, 2768, 2768, 2768, 5728, 5728, 5728, 5728, 9154, 9154, 9154, 9154, 8785, 8785, 8785, 8785, 11289, 11289, 11289, 11289, 4821, 4821, 4821, 4821, 955, 955, 955, 955, 1479, 1479, 1479, 1479, 1853, 1853, 1853, 1853, 10938, 10938, 10938, 10938, 4805, 4805, 4805, 4805, 3195, 3195, 3195, 3195, 7393, 7393, 7393, 7393, 9545, 9545, 9545, 9545, 3201, 3201, 3201, 3201, 6553, 6553, 6553, 6553, 4255, 4255, 4255, 4255, 6461, 6461, 6461, 6461, 4846, 4846, 4846, 4846, 9744, 9744, 9744, 9744, 12208, 12208, 12208, 12208, 11340, 11340, 11340, 11340, 9970, 9970, 9970, 9970, 5146, 5146, 5146, 5146, 4611, 4611, 4611, 4611, 5777, 5777, 5777, 5777, 2294, 2294, 2294, 2294, 10643, 10643, 10643, 10643, 9238, 9238, 9238, 9238, 9314, 9314, 9314, 9314, 10963, 10963, 10963, 10963, 1305, 1305, 1305, 1305, 1635, 1635, 1635, 1635, 4591, 4591, 4591, 4591, 8577, 8577, 8577, 8577, 3542, 3542, 3542, 3542, 7969, 7969, 7969, 7969, 2639, 2639, 2639, 2639, 11499, 11499, 11499, 11499, - - // layer #7 - 1, 1, 8340, 8340, 12149, 12149, 12144, 12144, 7311, 7311, 8011, 8011, 8736, 8736, 9048, 9048, 5860, 5860, 11336, 11336, 2963, 2963, 10530, 10530, 3006, 3006, 480, 480, 9275, 9275, 6534, 6534, 4134, 4134, 6915, 6915, 11112, 11112, 2731, 2731, 5023, 5023, 10908, 10908, 9542, 9542, 9005, 9005, 3621, 3621, 5067, 5067, 9198, 9198, 3382, 3382, 2625, 2625, 5791, 5791, 1170, 1170, 334, 334, 8246, 8246, 2396, 2396, 726, 726, 8652, 8652, 8961, 8961, 5331, 5331, 11227, 11227, 3289, 3289, 1212, 1212, 6522, 6522, 2366, 2366, 8595, 8595, 563, 563, 1022, 1022, 7203, 7203, 4388, 4388, 11567, 11567, 130, 130, 2768, 2768, 6378, 6378, 5728, 5728, 4177, 4177, 9154, 9154, 5092, 5092, 8785, 8785, 12171, 12171, 11289, 11289, 4231, 4231, 4821, 4821, 9821, 9821, 955, 955, 1428, 1428, 1479, 1479, 8993, 8993, 1853, 1853, 6747, 6747, 10938, 10938, 1673, 1673, 4805, 4805, 11560, 11560, 3195, 3195, 3748, 3748, 7393, 7393, 3707, 3707, 9545, 9545, 9447, 9447, 3201, 3201, 4632, 4632, 6553, 6553, 2837, 2837, 4255, 4255, 8357, 8357, 6461, 6461, 9764, 9764, 4846, 4846, 9408, 9408, 9744, 9744, 10092, 10092, 12208, 12208, 355, 355, 11340, 11340, 11745, 11745, 9970, 9970, 2426, 2426, 5146, 5146, 4452, 4452, 4611, 4611, 3459, 3459, 5777, 5777, 7300, 7300, 2294, 2294, 10276, 10276, 10643, 10643, 11462, 11462, 9238, 9238, 5179, 5179, 9314, 9314, 12280, 12280, 10963, 10963, 1260, 1260, 1305, 1305, 7935, 7935, 1635, 1635, 7399, 7399, 4591, 4591, 8705, 8705, 8577, 8577, 10200, 10200, 3542, 3542, 9813, 9813, 7969, 7969, 2548, 2548, 2639, 2639, 11950, 11950, 11499, 11499, 10593, 10593, - - // layer #8 - 1, 3400, 8340, 5277, 12149, 3271, 12144, 10849, 7311, 9042, 8011, 4976, 8736, 12176, 9048, 3833, 5860, 3531, 11336, 4096, 2963, 9509, 10530, 4143, 3006, 8241, 480, 9852, 9275, 1426, 6534, 9377, 4134, 9273, 6915, 2143, 11112, 4414, 2731, 7205, 5023, 8779, 10908, 11287, 9542, 12129, 9005, 5101, 3621, 10111, 5067, 10911, 9198, 9984, 3382, 8585, 2625, 3186, 5791, 2422, 1170, 8653, 334, 5012, 8246, 5191, 2396, 11082, 726, 10600, 8652, 9223, 8961, 2969, 5331, 11414, 11227, 2166, 3289, 11899, 1212, 3985, 6522, 5444, 2366, 7394, 8595, 12047, 563, 9405, 1022, 9302, 7203, 10512, 4388, 354, 11567, 3000, 130, 11885, 2768, 10115, 6378, 7404, 5728, 9424, 4177, 8005, 9154, 7852, 5092, 9888, 8785, 6730, 12171, 4337, 11289, 4053, 4231, 7270, 4821, 10163, 9821, 2187, 955, 2704, 1428, 1045, 1479, 2399, 8993, 1168, 1853, 8232, 6747, 8526, 10938, 2686, 1673, 10682, 4805, 4919, 11560, 3778, 3195, 11813, 3748, 11796, 7393, 5195, 3707, 7575, 9545, 10040, 9447, 8643, 3201, 7635, 4632, 6591, 6553, 243, 2837, 11224, 4255, 2847, 8357, 1632, 6461, 6957, 9764, 5011, 4846, 9140, 9408, 11222, 9744, 10745, 10092, 1912, 12208, 7247, 355, 2678, 11340, 5407, 11745, 6039, 9970, 4938, 2426, 2481, 5146, 9153, 4452, 9041, 4611, 8925, 3459, 27, 5777, 3978, 7300, 8509, 2294, 8374, 10276, 773, 10643, 7384, 11462, 2381, 9238, 10805, 5179, 10752, 9314, 11136, 12280, 6267, 10963, 1663, 1260, 7428, 1305, 671, 7935, 4645, 1635, 4372, 7399, 1017, 4591, 2370, 8705, 5088, 8577, 3, 10200, 442, 3542, 11869, 9813, 11854, 7969, 9644, 2548, 11744, 2639, 1630, 11950, 2566, 11499, 5291, 10593, 9430, - }; - const int p = 12289; - int dst[512]; - ntt(arr, l, twiddle, p, dst); - - // for (int i = 0; i < n; i++) { - // printf("%d", dst[i]); - // if ((i + 1) % 8 == 0) { - // printf("\n"); - // } else { - // printf(" "); - // } - // } -} diff --git a/tests/eval/_ntt/ntt_64.json b/tests/eval/_ntt/ntt_64.json new file mode 100644 index 000000000..6faa1c5a0 --- /dev/null +++ b/tests/eval/_ntt/ntt_64.json @@ -0,0 +1 @@ +{"input": [10820, 8789, 6375, 5914, 4214, 11214, 11034, 5792, 11042, 1004, 9614, 10351, 524, 2764, 4984, 10966, 11102, 6878, 1674, 7025, 1839, 11616, 240, 8282, 1505, 11440, 10874, 8788, 5505, 10904, 11912, 6374, 11381, 3278, 9159, 3831, 10709, 10069, 2420, 11621, 7550, 11288, 2013, 12282, 7243, 12083, 10784, 7797, 12262, 1465, 4119, 12154, 2483, 5175, 8348, 2765, 10341, 2504, 10328, 10370, 3617, 5581, 11749, 4075], "output": [5221, 4889, 2121, 10631, 5380, 2751, 5789, 8951, 6134, 10254, 5705, 3075, 2761, 554, 2240, 10875, 2210, 5009, 3727, 7423, 4627, 2080, 2471, 10042, 10316, 5259, 5869, 2193, 11705, 2270, 11706, 6456, 7903, 12237, 3856, 6823, 8915, 5667, 10401, 3259, 3029, 8540, 10788, 11928, 8205, 5583, 295, 8067, 3099, 8318, 1774, 3050, 7089, 5575, 3585, 11936, 4818, 1047, 7629, 10675, 10889, 400, 1748, 7433]} \ No newline at end of file diff --git a/tests/eval/_ntt/ntt_64_main.c b/tests/eval/_ntt/ntt_64_main.c deleted file mode 100644 index 9782817a6..000000000 --- a/tests/eval/_ntt/ntt_64_main.c +++ /dev/null @@ -1,68 +0,0 @@ -// requires VLEN >= 512 - -#include -#include -// #define DEBUG - -void ntt(const int *array, int l, const int *twiddle, int p, int *dst); - -void test() { - const int l = 6; - const int n = 64; - static const int arr[64] = { - 9997, 6362, 7134, 11711, 5849, 9491, 5972, 4164, 5894, 11069, - 7697, 8319, 2077, 12086, 10239, 5394, 4898, 1370, 1205, 2997, - 5274, 4625, 11983, 1789, 3645, 7666, 12128, 10883, 7376, 8883, - 2321, 1889, 2026, 8059, 2741, 865, 1785, 9955, 2395, 9330, - 11465, 7383, 9649, 11285, 3647, 578, 1158, 9936, 12019, 11114, - 7894, 4832, 10148, 10363, 11388, 9122, 10758, 2642, 4171, 10586, - 1194, 5280, 3055, 9220}; - // const int twiddle[6] = {7311, 5860, 4134, 8246, 1479, 12288}; - static const int twiddle[] = { - // layer #0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - // layer #1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, - - // layer #2 - 1, 1, 1, 1, 1, 1, 1, 1, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 8246, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, - - // layer #3 - 1, 1, 1, 1, 4134, 4134, 4134, 4134, 8246, 8246, 8246, 8246, 11567, 11567, 11567, 11567, 1479, 1479, 1479, 1479, 6553, 6553, 6553, 6553, 5146, 5146, 5146, 5146, 1305, 1305, 1305, 1305, - - // layer #4 - 1, 1, 5860, 5860, 4134, 4134, 3621, 3621, 8246, 8246, 1212, 1212, 11567, 11567, 8785, 8785, 1479, 1479, 3195, 3195, 6553, 6553, 9744, 9744, 5146, 5146, 10643, 10643, 1305, 1305, 3542, 3542, - - // layer #5 - 1, 7311, 5860, 3006, 4134, 5023, 3621, 2625, 8246, 8961, 1212, 563, 11567, 5728, 8785, 4821, 1479, 10938, 3195, 9545, 6553, 6461, 9744, 11340, 5146, 5777, 10643, 9314, 1305, 4591, 3542, 2639, - - }; - const int p = 12289; - int dst[64]; - ntt(arr, l, twiddle, p, dst); - -#ifdef DEBUG - const int gold[64] = { - 10604, 5675, 6810, 7140, 1904, 9720, 6400, 10542, 3966, 4691, 10317, 3405, 8021, 4907, 2423, 4615, 10421, 312, 11656, 1583, 2465, 10550, 1846, 10270, 8157, 9464, 9661, 11992, 11334, 10446, 11934, 10487, 6801, 8418, 6663, 6332, 10968, 1319, 9237, 6893, 3514, 8723, 3764, 6500, 1933, 2383, 5885, 2866, 8001, 8606, 2074, 5181, 11232, 6811, 4379, 8587, 4037, 4716, 9113, 2527, 3301, 1641, 3869, 8614 - }; - for (int i = 0; i < n; i++) { - // dst[i] = dst[i] % p; - if(dst[i] < 0) dst[i] += p; - if(dst[i] != gold[i]) { - printf("(%d %d, i)", dst[i], gold[i], i); - if ((i + 1) % 8 == 0) { - printf("\n"); - } else { - printf(" "); - } - } - } -#endif -} - -#ifdef DEBUG -int main(void) { - test(); -} -#endif diff --git a/tests/eval/_ntt/ntt_main.c b/tests/eval/_ntt/ntt_main.c new file mode 100644 index 000000000..cdc83ad89 --- /dev/null +++ b/tests/eval/_ntt/ntt_main.c @@ -0,0 +1,76 @@ +#include +#include + +// #define USE_SCALAR +// #define DEBUG +// #define WITHMAIN + +#if(CASE==ntt_64) + // requires VLEN >= 512 + #include "ntt_64.h" +#elif(CASE==ntt_128) + // requires VLEN >= 512 + #include "ntt_128.h" +#elif(CASE==ntt_256) + // requires VLEN >= 1024 + #include "ntt_256.h" +#elif(CASE==ntt_512) + // requires VLEN >= 2048 + #include "ntt_512.h" +#elif(CASE==ntt_1024) + // requires VLEN >= 4096 + #include "ntt_1024.h" +#elif(CASE==ntt_4096) + #include "ntt_4096.h" +#else + #error "undefined ntt case" +#endif + + +void ntt(const int *array, int l, const int *twiddle, int p, int *dst); + +void test() { + const int l = macroL; + const int n = macroN; + static const int arr[macroN] = { + macroIn + }; +#ifdef USE_SCALAR + static const int twiddle[] = { + macroScalarTW + }; +#else + static const int twiddle[] = { + macroVectorTW + }; +#endif + const int p = macroP; + int dst[macroN]; + ntt(arr, l, twiddle, p, dst); + +#ifdef DEBUG + const int gold[macroN] = { + macroOut + }; + printf("n = %d\n", n); + for (int i = 0; i < n; i++) { + // dst[i] = dst[i] % p; + if(dst[i] < 0) dst[i] += p; + if(dst[i] != gold[i]) { + printf("(%d %d, i)", dst[i], gold[i], i); + if ((i + 1) % 8 == 0) { + printf("\n"); + } else { + printf(" "); + } + } + } +#endif +} + +#ifdef WITHMAIN +int main(void) { + test(); +} +#endif + diff --git a/tests/eval/_ntt/ref.ws b/tests/eval/_ntt/ref.ws index 22bcdf241..527d249f3 100755 --- a/tests/eval/_ntt/ref.ws +++ b/tests/eval/_ntt/ref.ws @@ -1,27 +1,66 @@ #!/usr/bin/env -S wolframscript -file +genRandomPoly[l_, p_] := Module[ + {n = 2^l, a}, + (* Generate random list a *) + a = RandomInteger[{0, p - 1}, n]; + Print[a]; +] + +genScalarTW[l_, p_, g_] := Module[ + {w = g, twiddleList}, + + (* Assert conditions *) + If[Mod[p - 1, n] != 0, Return["Assertion failed: (p - 1) mod n != 0"]]; + + (* Generate twiddle list *) + twiddleList = {}; + Do[ + AppendTo[twiddleList, w]; + w = Mod[w^2, p], + {l} + ]; + Print[twiddleList]; +] + +genVectorTW[l_, p_, w_] := Module[ + {n = 2^l, m = 2, layerIndex = 0}, + + While[m <= n, + Print["// layer #", layerIndex]; + layerIndex++; + + Module[{wPower = 0, currentW}, + For[j = 0, j < m/2, j++, + For[k = 0, k < n, k += m, + currentW = PowerMod[w, wPower, p]; + Print[currentW, ", "]; + ]; + wPower += n/m; + ]; + ]; + m *= 2; + Print["\n"]; + ]; +] + On[Assert]; -x = { - 9997, 6362, 7134, 11711, 5849, 9491, 5972, 4164, 5894, 11069, 7697, - 8319, 2077, 12086, 10239, 5394, 4898, 1370, 1205, 2997, 5274, - 4625, 11983, 1789, 3645, 7666, 12128, 10883, 7376, 8883, 2321, - 1889, 2026, 8059, 2741, 865, 1785, 9955, 2395, 9330, 11465, 7383, - 9649, 11285, 3647, 578, 1158, 9936, 12019, 11114, 7894, 4832, - 10148, 10363, 11388, 9122, 10758, 2642, 4171, 10586, 1194, 5280, - 3055, 9220 - }; (* the input array *) -n = 64; (* the array length *) +l = 6; +n = 2 ^ l; (* the array length *) p = 12289; (* a prime number s.t. n | p - 1 *) g = 7311; (* an n-th root of p *) +x = genRandomPoly[l, p] Assert[Length[x] == n]; Assert[PowerMod[g, n, p] == 1 && PowerMod[g, n/2, p] != 1 ]; (* g is an n-th root of p *) (* note that a wolfram array is indexed from 1, so plus one from the index *) -Table[Mod[ +x_out = Table[Mod[ Sum[ x[[j + 1]] g^(i j), {j, 0, n - 1} ], p ], {i, 0, n - 1}] // Print + +Export["ntt_64.json", {"input" -> x, "output" -> x_out}]