#![allow(clippy::large_const_arrays)]
#![allow(clippy::unreadable_literal)]
pub(crate) const MCCORNERS: [[i32; 3]; 8] = [
[0, 0, 0],
[1, 0, 0],
[0, 1, 0],
[1, 1, 0],
[0, 0, 1],
[1, 0, 1],
[0, 1, 1],
[1, 1, 1],
];
pub(crate) const MCEDGELOCATIONS: [[i32; 4]; 12] = [
[0, 0, 0, 0],
[1, 0, 0, 2],
[0, 0, 1, 0],
[0, 0, 0, 2],
[0, 1, 0, 0],
[1, 1, 0, 2],
[0, 1, 1, 0],
[0, 1, 0, 2],
[0, 0, 0, 1],
[1, 0, 0, 1],
[1, 0, 1, 1],
[0, 0, 1, 1],
];
pub(crate) const MCFIRSTPATCHINDEX: [i32; 257] = [
0, 0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 28, 29, 31,
33, 35, 36, 38, 39, 41, 42, 43, 45, 46, 47, 49, 51, 53, 54, 56, 59, 60, 61, 63, 65, 66, 67, 68,
69, 70, 71, 73, 74, 76, 77, 79, 81, 82, 83, 85, 86, 87, 88, 89, 91, 93, 95, 96, 97, 99, 100,
102, 105, 107, 109, 110, 111, 112, 113, 114, 115, 117, 118, 119, 120, 122, 123, 125, 127, 129,
130, 131, 132, 133, 134, 136, 139, 141, 143, 145, 147, 149, 150, 153, 157, 159, 161, 163, 165,
166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 179, 180, 181, 182, 183, 185, 186, 187,
189, 191, 193, 195, 197, 200, 202, 203, 205, 206, 207, 208, 209, 210, 211, 213, 215, 218, 220,
223, 225, 229, 231, 233, 235, 237, 238, 240, 241, 243, 244, 245, 247, 248, 249, 251, 253, 255,
256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 271, 272, 274, 275, 276, 277,
278, 279, 280, 282, 283, 284, 285, 287, 289, 291, 292, 293, 295, 296, 297, 299, 300, 301, 302,
303, 304, 305, 306, 307, 309, 310, 311, 312, 314, 315, 316, 317, 318, 320, 321, 322, 323, 324,
325, 327, 328, 329, 330, 331, 332, 334, 335, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 358,
];
pub(crate) const MCFIRSTEDGEINDEX: [i32; 359] = [
0, 3, 6, 10, 13, 17, 20, 23, 28, 31, 34, 37, 41, 46, 50, 55, 60, 64, 67, 71, 74, 77, 82, 85,
88, 93, 96, 99, 102, 108, 111, 114, 118, 121, 125, 128, 134, 138, 141, 147, 152, 155, 160, 163,
166, 169, 173, 178, 181, 184, 188, 191, 195, 198, 204, 207, 210, 213, 216, 219, 224, 230, 234,
237, 242, 245, 251, 256, 260, 265, 270, 274, 277, 281, 287, 292, 295, 300, 303, 307, 312, 315,
321, 326, 330, 334, 341, 348, 352, 355, 358, 361, 364, 367, 371, 374, 378, 383, 386, 390, 396,
399, 402, 405, 408, 411, 415, 418, 423, 426, 431, 437, 443, 448, 452, 457, 460, 464, 470, 475,
479, 482, 487, 492, 495, 499, 504, 507, 511, 515, 522, 528, 533, 540, 544, 547, 550, 553, 556,
559, 563, 566, 571, 574, 578, 581, 586, 589, 593, 597, 604, 607, 610, 613, 616, 619, 622, 625,
630, 633, 639, 642, 647, 650, 656, 659, 666, 672, 677, 683, 689, 694, 700, 705, 712, 716, 719,
724, 730, 733, 740, 746, 753, 759, 762, 765, 768, 771, 774, 777, 780, 783, 787, 790, 793, 796,
800, 803, 806, 809, 812, 817, 820, 824, 827, 831, 836, 842, 847, 853, 859, 864, 867, 870, 874,
877, 880, 883, 886, 891, 894, 897, 900, 903, 908, 911, 914, 917, 920, 923, 929, 932, 936, 939,
943, 947, 952, 955, 962, 967, 970, 977, 983, 986, 992, 996, 999, 1003, 1008, 1014, 1017, 1021,
1025, 1029, 1034, 1037, 1044, 1049, 1052, 1057, 1061, 1066, 1072, 1079, 1084, 1088, 1093, 1099,
1105, 1110, 1113, 1118, 1125, 1131, 1134, 1140, 1146, 1153, 1158, 1162, 1169, 1172, 1175, 1181,
1184, 1188, 1191, 1195, 1198, 1202, 1206, 1210, 1215, 1221, 1224, 1229, 1236, 1241, 1244, 1249,
1255, 1262, 1266, 1271, 1276, 1280, 1285, 1291, 1294, 1299, 1306, 1312, 1317, 1320, 1326, 1332,
1338, 1345, 1352, 1355, 1358, 1363, 1367, 1373, 1376, 1381, 1384, 1389, 1395, 1402, 1408, 1415,
1422, 1425, 1428, 1434, 1437, 1443, 1448, 1454, 1459, 1465, 1469, 1472, 1476, 1481, 1486, 1490,
1495, 1499, 1505, 1508, 1513, 1519, 1523, 1526, 1530, 1533, 1536,
];
pub(crate) const MCEDGEINDEX: [i32; 1536] = [
0, 3, 8, 0, 1, 9, 1, 3, 8, 9, 4, 7, 8, 0, 3, 4, 7, 0, 1, 9, 4, 7, 8, 1, 3, 4, 7, 9, 4, 5, 9, 0,
3, 8, 4, 5, 9, 0, 1, 4, 5, 1, 3, 4, 5, 8, 5, 7, 8, 9, 0, 3, 5, 7, 9, 0, 1, 5, 7, 8, 1, 3, 5, 7,
2, 3, 11, 0, 2, 8, 11, 0, 1, 9, 2, 3, 11, 1, 2, 8, 9, 11, 4, 7, 8, 2, 3, 11, 0, 2, 4, 7, 11, 0,
1, 9, 4, 7, 8, 2, 3, 11, 1, 2, 4, 7, 9, 11, 4, 5, 9, 2, 3, 11, 0, 2, 8, 11, 4, 5, 9, 0, 1, 4,
5, 2, 3, 11, 1, 2, 4, 5, 8, 11, 5, 7, 8, 9, 2, 3, 11, 0, 2, 5, 7, 9, 11, 0, 1, 5, 7, 8, 2, 3,
11, 1, 2, 5, 7, 11, 1, 2, 10, 0, 3, 8, 1, 2, 10, 0, 2, 9, 10, 2, 3, 8, 9, 10, 4, 7, 8, 1, 2,
10, 0, 3, 4, 7, 1, 2, 10, 0, 2, 9, 10, 4, 7, 8, 2, 3, 4, 7, 9, 10, 4, 5, 9, 1, 2, 10, 0, 3, 8,
4, 5, 9, 1, 2, 10, 0, 2, 4, 5, 10, 2, 3, 4, 5, 8, 10, 5, 7, 8, 9, 1, 2, 10, 0, 3, 5, 7, 9, 1,
2, 10, 0, 2, 5, 7, 8, 10, 2, 3, 5, 7, 10, 1, 3, 10, 11, 0, 1, 8, 10, 11, 0, 3, 9, 10, 11, 8, 9,
10, 11, 4, 7, 8, 1, 3, 10, 11, 0, 1, 4, 7, 10, 11, 0, 3, 9, 10, 11, 4, 7, 8, 4, 7, 9, 10, 11,
4, 5, 9, 1, 3, 10, 11, 0, 1, 8, 10, 11, 4, 5, 9, 0, 3, 4, 5, 10, 11, 4, 5, 8, 10, 11, 5, 7, 8,
9, 1, 3, 10, 11, 0, 1, 5, 7, 9, 10, 11, 0, 3, 5, 7, 8, 10, 11, 5, 7, 10, 11, 6, 7, 11, 0, 3, 8,
6, 7, 11, 0, 1, 9, 6, 7, 11, 1, 3, 8, 9, 6, 7, 11, 4, 6, 8, 11, 0, 3, 4, 6, 11, 0, 1, 9, 4, 6,
8, 11, 1, 3, 4, 6, 9, 11, 4, 5, 9, 6, 7, 11, 0, 3, 8, 4, 5, 9, 6, 7, 11, 0, 1, 4, 5, 6, 7, 11,
1, 3, 4, 5, 8, 6, 7, 11, 5, 6, 8, 9, 11, 0, 3, 5, 6, 9, 11, 0, 1, 5, 6, 8, 11, 1, 3, 5, 6, 11,
2, 3, 6, 7, 0, 2, 6, 7, 8, 0, 1, 9, 2, 3, 6, 7, 1, 2, 6, 7, 8, 9, 2, 3, 4, 6, 8, 0, 2, 4, 6, 0,
1, 9, 2, 3, 4, 6, 8, 1, 2, 4, 6, 9, 4, 5, 9, 2, 3, 6, 7, 0, 2, 6, 7, 8, 4, 5, 9, 0, 1, 4, 5, 2,
3, 6, 7, 1, 2, 4, 5, 6, 7, 8, 2, 3, 5, 6, 8, 9, 0, 2, 5, 6, 9, 0, 1, 2, 3, 5, 6, 8, 1, 2, 5, 6,
1, 2, 10, 6, 7, 11, 0, 3, 8, 1, 2, 10, 6, 7, 11, 0, 2, 9, 10, 6, 7, 11, 2, 3, 8, 9, 10, 6, 7,
11, 4, 6, 8, 11, 1, 2, 10, 0, 3, 4, 6, 11, 1, 2, 10, 0, 2, 9, 10, 4, 6, 8, 11, 2, 3, 4, 6, 9,
10, 11, 4, 5, 9, 1, 2, 10, 6, 7, 11, 0, 3, 8, 4, 5, 9, 1, 2, 10, 6, 7, 11, 0, 2, 4, 5, 10, 6,
7, 11, 2, 3, 4, 5, 8, 10, 6, 7, 11, 5, 6, 8, 9, 11, 1, 2, 10, 0, 3, 5, 6, 9, 11, 1, 2, 10, 0,
2, 5, 6, 8, 10, 11, 2, 3, 5, 6, 10, 11, 1, 3, 6, 7, 10, 0, 1, 6, 7, 8, 10, 0, 3, 6, 7, 9, 10,
6, 7, 8, 9, 10, 1, 3, 4, 6, 8, 10, 0, 1, 4, 6, 10, 0, 3, 4, 6, 8, 9, 10, 4, 6, 9, 10, 4, 5, 9,
1, 3, 6, 7, 10, 0, 1, 6, 7, 8, 10, 4, 5, 9, 0, 3, 4, 5, 6, 7, 10, 4, 5, 6, 7, 8, 10, 1, 3, 5,
6, 8, 9, 10, 0, 1, 5, 6, 9, 10, 0, 3, 8, 5, 6, 10, 5, 6, 10, 5, 6, 10, 0, 3, 8, 5, 6, 10, 0, 1,
9, 5, 6, 10, 1, 3, 8, 9, 5, 6, 10, 4, 7, 8, 5, 6, 10, 0, 3, 4, 7, 5, 6, 10, 0, 1, 9, 4, 7, 8,
5, 6, 10, 1, 3, 4, 7, 9, 5, 6, 10, 4, 6, 9, 10, 0, 3, 8, 4, 6, 9, 10, 0, 1, 4, 6, 10, 1, 3, 4,
6, 8, 10, 6, 7, 8, 9, 10, 0, 3, 6, 7, 9, 10, 0, 1, 6, 7, 8, 10, 1, 3, 6, 7, 10, 2, 3, 11, 5, 6,
10, 0, 2, 8, 11, 5, 6, 10, 0, 1, 9, 2, 3, 11, 5, 6, 10, 1, 2, 8, 9, 11, 5, 6, 10, 4, 7, 8, 2,
3, 11, 5, 6, 10, 0, 2, 4, 7, 11, 5, 6, 10, 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 6, 10, 1, 2, 4, 7, 9,
11, 5, 6, 10, 4, 6, 9, 10, 2, 3, 11, 0, 2, 8, 11, 4, 6, 9, 10, 0, 1, 4, 6, 10, 2, 3, 11, 1, 2,
4, 6, 8, 10, 11, 6, 7, 8, 9, 10, 2, 3, 11, 0, 2, 6, 7, 9, 10, 11, 0, 1, 6, 7, 8, 10, 2, 3, 11,
1, 2, 6, 7, 10, 11, 1, 2, 5, 6, 0, 3, 8, 1, 2, 5, 6, 0, 2, 5, 6, 9, 2, 3, 5, 6, 8, 9, 4, 7, 8,
1, 2, 5, 6, 0, 3, 4, 7, 1, 2, 5, 6, 0, 2, 5, 6, 9, 4, 7, 8, 2, 3, 4, 5, 6, 7, 9, 1, 2, 4, 6, 9,
0, 3, 8, 1, 2, 4, 6, 9, 0, 2, 4, 6, 2, 3, 4, 6, 8, 1, 2, 6, 7, 8, 9, 0, 1, 2, 3, 6, 7, 9, 0, 2,
6, 7, 8, 2, 3, 6, 7, 1, 3, 5, 6, 11, 0, 1, 5, 6, 8, 11, 0, 3, 5, 6, 9, 11, 5, 6, 8, 9, 11, 4,
7, 8, 1, 3, 5, 6, 11, 0, 1, 4, 5, 6, 7, 11, 0, 3, 5, 6, 9, 11, 4, 7, 8, 4, 5, 6, 7, 9, 11, 1,
3, 4, 6, 9, 11, 0, 1, 4, 6, 8, 9, 11, 0, 3, 4, 6, 11, 4, 6, 8, 11, 1, 3, 6, 7, 8, 9, 11, 0, 1,
9, 6, 7, 11, 0, 3, 6, 7, 8, 11, 6, 7, 11, 5, 7, 10, 11, 0, 3, 8, 5, 7, 10, 11, 0, 1, 9, 5, 7,
10, 11, 1, 3, 8, 9, 5, 7, 10, 11, 4, 5, 8, 10, 11, 0, 3, 4, 5, 10, 11, 0, 1, 9, 4, 5, 8, 10,
11, 1, 3, 4, 5, 9, 10, 11, 4, 7, 9, 10, 11, 0, 3, 8, 4, 7, 9, 10, 11, 0, 1, 4, 7, 10, 11, 1, 3,
4, 7, 8, 10, 11, 8, 9, 10, 11, 0, 3, 9, 10, 11, 0, 1, 8, 10, 11, 1, 3, 10, 11, 2, 3, 5, 7, 10,
0, 2, 5, 7, 8, 10, 0, 1, 9, 2, 3, 5, 7, 10, 1, 2, 5, 7, 8, 9, 10, 2, 3, 4, 5, 8, 10, 0, 2, 4,
5, 10, 0, 1, 9, 2, 3, 4, 5, 8, 10, 1, 2, 4, 5, 9, 10, 2, 3, 4, 7, 9, 10, 0, 2, 4, 7, 8, 9, 10,
0, 1, 2, 3, 4, 7, 10, 4, 7, 8, 1, 2, 10, 2, 3, 8, 9, 10, 0, 2, 9, 10, 0, 1, 2, 3, 8, 10, 1, 2,
10, 1, 2, 5, 7, 11, 0, 3, 8, 1, 2, 5, 7, 11, 0, 2, 5, 7, 9, 11, 2, 3, 5, 7, 8, 9, 11, 1, 2, 4,
5, 8, 11, 0, 1, 2, 3, 4, 5, 11, 0, 2, 4, 5, 8, 9, 11, 4, 5, 9, 2, 3, 11, 1, 2, 4, 7, 9, 11, 0,
3, 8, 1, 2, 4, 7, 9, 11, 0, 2, 4, 7, 11, 2, 3, 4, 7, 8, 11, 1, 2, 8, 9, 11, 0, 1, 2, 3, 9, 11,
0, 2, 8, 11, 2, 3, 11, 1, 3, 5, 7, 0, 1, 5, 7, 8, 0, 3, 5, 7, 9, 5, 7, 8, 9, 1, 3, 4, 5, 8, 0,
1, 4, 5, 0, 3, 4, 5, 8, 9, 4, 5, 9, 1, 3, 4, 7, 9, 0, 1, 4, 7, 8, 9, 0, 3, 4, 7, 4, 7, 8, 1, 3,
8, 9, 0, 1, 9, 0, 3, 8,
];
pub(crate) const PROBLEMATICCONFIGS: [u8; 256] = [
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 255, 255, 2, 255, 255,
255, 255, 255, 255, 255, 255, 5, 255, 255, 255, 255, 255, 255, 5, 5, 255, 255, 255, 255, 255,
255, 4, 255, 255, 255, 3, 3, 1, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 5, 255, 5,
255, 5, 255, 255, 255, 255, 255, 255, 255, 3, 255, 255, 255, 255, 255, 2, 255, 255, 255, 255,
255, 255, 255, 3, 255, 3, 255, 4, 255, 255, 0, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255,
1, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, 1, 255, 4, 2, 255,
255, 255, 2, 255, 255, 255, 255, 0, 255, 2, 4, 255, 255, 255, 255, 0, 255, 2, 255, 255, 255,
255, 255, 255, 255, 255, 4, 255, 255, 4, 255, 255, 255, 255, 255, 255,
];
pub(crate) const DMCEDGEOFFSET: [[i8; 12]; 256] = [
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[0, -1, -1, 0, -1, -1, -1, -1, 0, -1, -1, -1],
[0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1],
[-1, 0, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1],
[-1, -1, -1, -1, 0, -1, -1, 0, 0, -1, -1, -1],
[0, -1, -1, 0, 0, -1, -1, 0, -1, -1, -1, -1],
[0, 0, -1, -1, 1, -1, -1, 1, 1, 0, -1, -1],
[-1, 0, -1, 0, 0, -1, -1, 0, -1, 0, -1, -1],
[-1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1, -1],
[0, -1, -1, 0, 1, 1, -1, -1, 0, 1, -1, -1],
[0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1],
[-1, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, -1],
[-1, -1, -1, -1, -1, 0, -1, 0, 0, 0, -1, -1],
[0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1],
[0, 0, -1, -1, -1, 0, -1, 0, 0, -1, -1, -1],
[-1, 0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1],
[-1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0],
[0, -1, 0, -1, -1, -1, -1, -1, 0, -1, -1, 0],
[0, 0, 1, 1, -1, -1, -1, -1, -1, 0, -1, 1],
[-1, 0, 0, -1, -1, -1, -1, -1, 0, 0, -1, 0],
[-1, -1, 1, 1, 0, -1, -1, 0, 0, -1, -1, 1],
[0, -1, 0, -1, 0, -1, -1, 0, -1, -1, -1, 0],
[0, 0, 2, 2, 1, -1, -1, 1, 1, 0, -1, 2],
[-1, 0, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0],
[-1, -1, 1, 1, 0, 0, -1, -1, -1, 0, -1, 1],
[0, -1, 0, -1, 1, 1, -1, -1, 0, 1, -1, 0],
[0, 0, 1, 1, 0, 0, -1, -1, -1, -1, -1, 1],
[-1, 0, 0, -1, 0, 0, -1, -1, 0, -1, -1, 0],
[-1, -1, 1, 1, -1, 0, -1, 0, 0, 0, -1, 1],
[0, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0],
[0, 0, 1, 1, -1, 0, -1, 0, 0, -1, -1, 1],
[-1, 0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0],
[-1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1],
[0, 1, 1, 0, -1, -1, -1, -1, 0, -1, 1, -1],
[0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0, -1],
[-1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, -1],
[-1, 1, 1, -1, 0, -1, -1, 0, 0, -1, 1, -1],
[0, 1, 1, 0, 0, -1, -1, 0, -1, -1, 1, -1],
[0, -1, 0, -1, 1, -1, -1, 1, 1, 0, 0, -1],
[-1, -1, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1],
[-1, 1, 1, -1, 0, 0, -1, -1, -1, 0, 1, -1],
[0, 2, 2, 0, 1, 1, -1, -1, 0, 1, 2, -1],
[0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0, -1],
[-1, -1, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1],
[-1, 1, 1, -1, -1, 0, -1, 0, 0, 0, 1, -1],
[0, 1, 1, 0, -1, 0, -1, 0, -1, 0, 1, -1],
[0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1],
[-1, -1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1],
[-1, 0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0],
[0, 0, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0],
[0, -1, -1, 0, -1, -1, -1, -1, -1, 0, 0, 0],
[-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0],
[-1, 1, -1, 1, 0, -1, -1, 0, 0, -1, 1, 1],
[0, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0],
[0, -1, -1, 0, 1, -1, -1, 1, 1, 0, 0, 0],
[-1, -1, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0],
[-1, 1, -1, 1, 0, 0, -1, -1, -1, 0, 1, 1],
[0, 0, -1, -1, 1, 1, -1, -1, 0, 1, 0, 0],
[0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0],
[-1, -1, -1, -1, 0, 0, -1, -1, 0, -1, 0, 0],
[-1, 1, -1, 1, -1, 0, -1, 0, 0, 0, 1, 1],
[0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0],
[0, -1, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0],
[-1, -1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0],
[-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0],
[0, -1, -1, 0, -1, -1, 1, 1, 0, -1, -1, 1],
[0, 0, -1, -1, -1, -1, 1, 1, -1, 0, -1, 1],
[-1, 0, -1, 0, -1, -1, 1, 1, 0, 0, -1, 1],
[-1, -1, -1, -1, 0, -1, 0, -1, 0, -1, -1, 0],
[0, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 0],
[0, 0, -1, -1, 1, -1, 1, -1, 1, 0, -1, 1],
[-1, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0],
[-1, -1, -1, -1, 0, 0, 1, 1, -1, 0, -1, 1],
[0, -1, -1, 0, 1, 1, 2, 2, 0, 1, -1, 2],
[0, 0, -1, -1, 0, 0, 1, 1, -1, -1, -1, 1],
[-1, 0, -1, 0, 0, 0, 1, 1, 0, -1, -1, 1],
[-1, -1, -1, -1, -1, 0, 0, -1, 0, 0, -1, 0],
[0, -1, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0],
[0, 0, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0],
[-1, 0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0],
[-1, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1],
[0, -1, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1],
[0, 0, 1, 1, -1, -1, 1, 1, -1, 0, -1, -1],
[-1, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, -1],
[-1, -1, 0, 0, 0, -1, 0, -1, 0, -1, -1, -1],
[0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1, -1],
[0, 0, 1, 1, 1, -1, 1, -1, 1, 0, -1, -1],
[-1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1],
[-1, -1, 1, 1, 0, 0, 1, 1, -1, 0, -1, -1],
[0, -1, 0, -1, 1, 1, 0, 0, 0, 1, -1, -1],
[0, 0, 1, 1, 0, 0, 1, 1, -1, -1, -1, -1],
[-1, 0, 0, -1, 0, 0, 0, 0, 0, -1, -1, -1],
[-1, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, -1],
[0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, -1],
[0, 0, 0, 0, -1, 0, 0, -1, 0, -1, -1, -1],
[-1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1],
[-1, 0, 0, -1, -1, -1, 1, 1, -1, -1, 0, 1],
[0, 1, 1, 0, -1, -1, 2, 2, 0, -1, 1, 2],
[0, -1, 0, -1, -1, -1, 1, 1, -1, 0, 0, 1],
[-1, -1, 0, 0, -1, -1, 1, 1, 0, 0, 0, 1],
[-1, 1, 1, -1, 0, -1, 0, -1, 0, -1, 1, 0],
[0, 1, 1, 0, 0, -1, 0, -1, -1, -1, 1, 0],
[0, -1, 0, -1, 1, -1, 1, -1, 1, 0, 0, 1],
[-1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0],
[-1, 1, 1, -1, 0, 0, 2, 2, -1, 0, 1, 2],
[0, 2, 2, 0, 1, 1, 3, 3, 0, 1, 2, 3],
[0, -1, 0, -1, 0, 0, 1, 1, -1, -1, 0, 1],
[-1, -1, 0, 0, 0, 0, 1, 1, 0, -1, 0, 1],
[-1, 1, 1, -1, -1, 0, 0, -1, 0, 0, 1, 0],
[0, 1, 1, 0, -1, 0, 0, -1, -1, 0, 1, 0],
[0, -1, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0],
[-1, -1, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0],
[-1, 0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1],
[0, 0, -1, -1, -1, -1, 0, 0, 0, -1, 0, -1],
[0, -1, -1, 0, -1, -1, 0, 0, -1, 0, 0, -1],
[-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1],
[-1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1],
[0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0, -1],
[0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, -1],
[-1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0, -1],
[-1, 1, -1, 1, 0, 0, 1, 1, -1, 0, 1, -1],
[0, 0, -1, -1, 1, 1, 0, 0, 0, 1, 0, -1],
[0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1],
[-1, -1, -1, -1, 0, 0, 0, 0, 0, -1, 0, -1],
[-1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1],
[0, 0, -1, -1, -1, 0, 0, -1, -1, 0, 0, -1],
[0, -1, -1, 0, -1, 1, 1, -1, 0, -1, 1, -1],
[-1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1],
[-1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1],
[0, -1, -1, 0, -1, 1, 1, -1, 0, -1, 1, -1],
[0, 0, -1, -1, -1, 1, 1, -1, -1, 0, 1, -1],
[-1, 0, -1, 0, -1, 1, 1, -1, 0, 0, 1, -1],
[-1, -1, -1, -1, 0, 1, 1, 0, 0, -1, 1, -1],
[0, -1, -1, 0, 0, 1, 1, 0, -1, -1, 1, -1],
[0, 0, -1, -1, 1, 2, 2, 1, 1, 0, 2, -1],
[-1, 0, -1, 0, 0, 1, 1, 0, -1, 0, 1, -1],
[-1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0, -1],
[0, -1, -1, 0, 1, -1, 1, -1, 0, 1, 1, -1],
[0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0, -1],
[-1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1],
[-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1],
[0, -1, -1, 0, -1, -1, 0, 0, -1, 0, 0, -1],
[0, 0, -1, -1, -1, -1, 0, 0, 0, -1, 0, -1],
[-1, 0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1],
[-1, -1, 0, 0, -1, 1, 1, -1, -1, -1, 1, 0],
[0, -1, 0, -1, -1, 1, 1, -1, 0, -1, 1, 0],
[0, 0, 1, 1, -1, 2, 2, -1, -1, 0, 2, 1],
[-1, 0, 0, -1, -1, 1, 1, -1, 0, 0, 1, 0],
[-1, -1, 1, 1, 0, 2, 2, 0, 0, -1, 2, 1],
[0, -1, 0, -1, 0, 1, 1, 0, -1, -1, 1, 0],
[0, 0, 2, 2, 1, 3, 3, 1, 1, 0, 3, 2],
[-1, 0, 0, -1, 0, 1, 1, 0, -1, 0, 1, 0],
[-1, -1, 1, 1, 0, -1, 0, -1, -1, 0, 0, 1],
[0, -1, 0, -1, 1, -1, 1, -1, 0, 1, 1, 0],
[0, 0, 1, 1, 0, -1, 0, -1, -1, -1, 0, 1],
[-1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0],
[-1, -1, 1, 1, -1, -1, 0, 0, 0, 0, 0, 1],
[0, -1, 0, -1, -1, -1, 0, 0, -1, 0, 0, 0],
[0, 0, 1, 1, -1, -1, 0, 0, 0, -1, 0, 1],
[-1, 0, 0, -1, -1, -1, 0, 0, -1, -1, 0, 0],
[-1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1],
[0, 1, 1, 0, -1, 1, 1, -1, 0, -1, -1, -1],
[0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, -1],
[-1, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, -1],
[-1, 1, 1, -1, 0, 1, 1, 0, 0, -1, -1, -1],
[0, 1, 1, 0, 0, 1, 1, 0, -1, -1, -1, -1],
[0, -1, 0, -1, 1, 0, 0, 1, 1, 0, -1, -1],
[-1, -1, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1],
[-1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1],
[0, 1, 1, 0, 1, -1, 1, -1, 0, 1, -1, -1],
[0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1, -1],
[-1, -1, 0, 0, 0, -1, 0, -1, 0, -1, -1, -1],
[-1, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, -1],
[0, 0, 0, 0, -1, -1, 0, 0, -1, 0, -1, -1],
[0, -1, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1],
[-1, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1],
[-1, 0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0],
[0, 0, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0],
[0, -1, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0],
[-1, -1, -1, -1, -1, 0, 0, -1, 0, 0, -1, 0],
[-1, 1, -1, 1, 0, 1, 1, 0, 0, -1, -1, 1],
[0, 0, -1, -1, 0, 0, 0, 0, -1, -1, -1, 0],
[0, -1, -1, 0, 1, 0, 0, 1, 1, 0, -1, 0],
[-1, -1, -1, -1, 0, 0, 0, 0, -1, 0, -1, 0],
[-1, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0],
[0, 0, -1, -1, 0, -1, 0, -1, 0, 0, -1, 0],
[0, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 0],
[-1, -1, -1, -1, 0, -1, 0, -1, 0, -1, -1, 0],
[-1, 0, -1, 0, -1, -1, 0, 0, 0, 0, -1, 0],
[0, 0, -1, -1, -1, -1, 1, 1, -1, 0, -1, 1],
[0, -1, -1, 0, -1, -1, 0, 0, 0, -1, -1, 0],
[-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0],
[-1, -1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0],
[0, -1, -1, 0, -1, 1, -1, 1, 0, -1, 1, 1],
[0, 0, -1, -1, -1, 1, -1, 1, -1, 0, 1, 1],
[-1, 0, -1, 0, -1, 1, -1, 1, 0, 0, 1, 1],
[-1, -1, -1, -1, 0, 0, -1, -1, 0, -1, 0, 0],
[0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0],
[0, 0, -1, -1, 1, 1, -1, -1, 1, 0, 1, 1],
[-1, 0, -1, 0, 0, 0, -1, -1, -1, 0, 0, 0],
[-1, -1, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0],
[0, -1, -1, 0, 1, -1, -1, 1, 0, 1, 1, 1],
[0, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0],
[-1, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, 0],
[-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0],
[0, -1, -1, 0, -1, -1, -1, -1, -1, 0, 0, 0],
[0, 0, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0],
[-1, 0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0],
[-1, -1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1],
[0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1],
[0, 0, 1, 1, -1, 1, -1, 1, -1, 0, 1, -1],
[-1, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, -1],
[-1, -1, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1],
[0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0, -1],
[0, 0, 1, 1, 1, 1, -1, -1, 1, 0, 1, -1],
[-1, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, -1],
[-1, -1, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1],
[0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, -1],
[0, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, -1],
[-1, 1, 1, -1, 0, -1, -1, 0, 0, -1, 1, -1],
[-1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, -1],
[0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0, -1],
[0, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, -1],
[-1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1],
[-1, 0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0],
[0, 1, 1, 0, -1, 1, -1, 1, 0, -1, -1, 1],
[0, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0],
[-1, -1, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0],
[-1, 0, 0, -1, 0, 0, -1, -1, 0, -1, -1, 0],
[0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0],
[0, -1, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0],
[-1, -1, 1, 1, 0, 0, -1, -1, -1, 0, -1, 1],
[-1, 0, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0],
[0, 1, 1, 0, 1, -1, -1, 1, 0, 1, -1, 1],
[0, -1, 0, -1, 0, -1, -1, 0, -1, -1, -1, 0],
[-1, -1, 0, 0, 0, -1, -1, 0, 0, -1, -1, 0],
[-1, 0, 0, -1, -1, -1, -1, -1, 0, 0, -1, 0],
[0, 0, 0, 0, -1, -1, -1, -1, -1, 0, -1, 0],
[0, -1, 0, -1, -1, -1, -1, -1, 0, -1, -1, 0],
[-1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0],
[-1, 0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1],
[0, 0, -1, -1, -1, 0, -1, 0, 0, -1, -1, -1],
[0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1],
[-1, -1, -1, -1, -1, 0, -1, 0, 0, 0, -1, -1],
[-1, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, -1],
[0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1],
[0, -1, -1, 0, 0, 0, -1, -1, 0, 0, -1, -1],
[-1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1, -1],
[-1, 0, -1, 0, 0, -1, -1, 0, -1, 0, -1, -1],
[0, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, -1],
[0, -1, -1, 0, 0, -1, -1, 0, -1, -1, -1, -1],
[-1, -1, -1, -1, 0, -1, -1, 0, 0, -1, -1, -1],
[-1, 0, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1],
[0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1],
[0, -1, -1, 0, -1, -1, -1, -1, 0, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
];
pub(crate) const DMCQUAD: [[[i32; 4]; 4]; 6] = [
[[0, 0, 0, 0], [0, -1, 0, 4], [0, -1, -1, 6], [0, 0, -1, 2]],
[[0, 0, 0, 8], [0, 0, -1, 11], [-1, 0, -1, 10], [-1, 0, 0, 9]],
[[0, 0, 0, 3], [-1, 0, 0, 1], [-1, -1, 0, 5], [0, -1, 0, 7]],
[[0, 0, 0, 0], [0, 0, -1, 2], [0, -1, -1, 6], [0, -1, 0, 4]],
[[0, 0, 0, 8], [-1, 0, 0, 9], [-1, 0, -1, 10], [0, 0, -1, 11]],
[[0, 0, 0, 3], [0, -1, 0, 7], [-1, -1, 0, 5], [-1, 0, 0, 1]],
];