diff --git a/README.md b/README.md index a65a627..dced1ac 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,13 @@ # MPEG-1 Layer III ## the best audio format in fact +### (it is true) + +# files +- dat.h: miscellaneous tables and constants needed by the library +- huffman.h: generated huffman table +- main.c: test application for the library +- mp3.c: library code +- mp3.h: library header, include this in client code +- scr: scripts unneeded to use the library, provided for reference purposes + + huff: wrapper for huffcvt, generating huffman tables copied to the clipboard from the mp3 specification + + scr/huffcvt.c: changes huffman string format to c array diff --git a/dat.h b/dat.h new file mode 100644 index 0000000..07aaa8d --- /dev/null +++ b/dat.h @@ -0,0 +1,97 @@ +uint16_t l3_bitrates[16] = {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0}; +uint16_t l3_smprates[4] = {44100, 48000, 32000, 0}; + +// TODO possiblility block_type is undefined if blocksplit not set. read spec for blocksplit_flag and block_type +// table to get length of scalefactor bands +uint8_t sfcom[16][2] = { + {0,0}, + {0,1}, + {0,2}, + {0,3}, + {3,0}, + {1,1}, + {1,2}, + {1,3}, + {2,1}, + {2,2}, + {2,3}, + {3,1}, + {3,2}, + {3,3}, + {4,2}, + {4,3}, +}; + +uint8_t sf[3][33] = { + { // 32000hz band + 4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, + 4,4,4,4,6,8,12,16,20,26,34,42 + }, { // 44100hz band + 4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76, + 4,4,4,4,6,8,10,12,14,18,22,30 + }, { // 48000hz band + 4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54, + 4,4,4,4,6,6,10,12,14,16,20,26 + } +}; + +uint8_t preemph[21] = {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2}; + +long double alias[8] = { + -.6, + -.535, + -.33, + -.185, + -.095, + -.041, + -.0142, + -.0037 +}; + +// Huffman code table for quadruples (A) +// search by value +uint8_t hquada[16] = { + 0b10000000, + 0b01010000, + 0b01000000, + 0b00101000, + 0b01100000, + 0b00010100, + 0b00100000, + 0b00010000, + 0b01110000, + 0b00011000, + 0b00110000, + 0b00000000, + 0b00111000, + 0b00001000, + 0b00001100, + 0b00000100, +}; + +// Huffman code table for quadruples (B) +// What The Hell +// search by index +uint8_t hquadb[16] = { + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 +}; + +// first ESC table is 16 +char linbits[16] = {1, 2, 3, 4, 6, 8, 10, 13, 4, 5, 6, 7, 8, 9, 11, 13}; + + diff --git a/huffman.h b/huffman.h new file mode 100644 index 0000000..be49ca7 --- /dev/null +++ b/huffman.h @@ -0,0 +1,5000 @@ +uint32_t huff[33][256][4] = { + { // 0 + {0,0,0} + }, { // 1 + {0,0,1,1}, + {0,1,3,1}, + {1,0,2,1}, + {1,1,3,0} + }, { // 2 + {0,0,1,1}, + {0,1,3,2}, + {0,2,6,1}, + {1,0,3,3}, + {1,1,3,1}, + {1,2,5,1}, + {2,0,5,3}, + {2,1,5,2}, + {2,2,6,0} + }, { // 3 + {0,0,2,3}, + {0,1,2,2}, + {0,2,6,1}, + {1,0,3,1}, + {1,1,2,1}, + {1,2,5,1}, + {2,0,5,3}, + {2,0,5,2}, + {2,2,6,0} + }, { // 4 + // UNUSED + }, { // 5 + {0,0,1,1}, + {0,1,3,2}, + {0,2,6,6}, + {0,3,7,5}, + {1,0,3,3}, + {1,1,3,1}, + {1,2,6,4}, + {1,3,7,4}, + {2,0,6,7}, + {2,1,6,5}, + {2,2,7,7}, + {2,3,8,1}, + {3,0,7,6}, + {3,1,6,1}, + {3,2,7,1}, + {3,3,8,0} + }, { // 6 + {0,0,3,7}, + {0,1,3,3}, + {0,2,5,5}, + {0,3,7,1}, + {1,0,3,6}, + {1,1,2,2}, + {1,2,4,3}, + {1,3,5,2}, + {2,0,4,5}, + {2,1,4,4}, + {2,2,5,4}, + {2,3,6,1}, + {3,0,6,3}, + {3,1,5,3}, + {3,2,6,2}, + {3,3,7,0} + }, { // 7 + {0,0,1,1}, + {0,1,3,2}, + {0,2,6,10}, + {0,3,8,19}, + {0,4,8,16}, + {0,5,9,10}, + {1,0,3,3}, + {1,1,4,3}, + {1,2,6,7}, + {1,3,7,10}, + {1,4,7,5}, + {1,5,8,3}, + {2,0,6,11}, + {2,1,5,4}, + {2,2,7,13}, + {2,3,8,17}, + {2,4,8,8}, + {2,5,9,4}, + {3,0,7,12}, + {3,1,7,11}, + {3,2,8,18}, + {3,3,9,15}, + {3,4,9,11}, + {3,5,9,2}, + {4,0,7,7}, + {4,1,7,6}, + {4,2,8,9}, + {4,3,9,14}, + {4,4,9,3}, + {4,5,10,1}, + {5,0,8,6}, + {5,1,8,4}, + {5,2,9,5}, + {5,3,10,3}, + {5,4,10,2}, + {5,5,10,0}, + }, { // 8 + {0,0,2,3}, + {0,1,3,4}, + {0,2,6,6}, + {0,3,8,18}, + {0,4,8,12}, + {0,5,9,5}, + {1,0,3,5}, + {1,1,2,1}, + {1,2,4,2}, + {1,3,8,16}, + {1,4,8,9}, + {1,5,8,3}, + {2,0,6,7}, + {2,1,4,3}, + {2,2,6,5}, + {2,3,8,14}, + {2,4,8,7}, + {2,5,9,3}, + {3,0,8,19}, + {3,1,8,17}, + {3,2,8,15}, + {3,3,9,13}, + {3,4,9,10}, + {3,5,10,4}, + {4,0,8,13}, + {4,1,7,5}, + {4,2,8,8}, + {4,3,9,11}, + {4,4,10,5}, + {4,5,10,1}, + {5,0,9,12}, + {5,1,8,4}, + {5,2,9,4}, + {5,3,9,1}, + {5,4,11,1}, + {5,5,11,0}, + }, { // 9 + {0,0,3,7}, + {0,1,3,5}, + {0,2,5,9}, + {0,3,6,14}, + {0,4,8,15}, + {0,5,9,7}, + {1,0,3,6}, + {1,1,3,4}, + {1,2,4,5}, + {1,3,5,5}, + {1,4,6,6}, + {1,5,8,7}, + {2,0,4,7}, + {2,1,4,6}, + {2,2,5,8}, + {2,3,6,8}, + {2,4,7,8}, + {2,5,8,5}, + {3,0,6,15}, + {3,1,5,6}, + {3,2,6,9}, + {3,3,7,10}, + {3,4,7,5}, + {3,5,8,1}, + {4,0,7,11}, + {4,1,6,7}, + {4,2,7,9}, + {4,3,7,6}, + {4,4,8,4}, + {4,5,9,1}, + {5,0,8,14}, + {5,1,7,4}, + {5,2,8,6}, + {5,3,8,2}, + {5,4,9,6}, + {5,5,9,0}, + }, { // 10 + {0,0,1,1}, + {0,1,3,2}, + {0,2,6,10}, + {0,3,8,23}, + {0,4,9,35}, + {0,5,9,30}, + {0,6,9,12}, + {0,7,10,17}, + {1,0,3,3}, + {1,1,4,3}, + {1,2,6,8}, + {1,3,7,12}, + {1,4,8,18}, + {1,5,9,21}, + {1,6,8,12}, + {1,7,8,7}, + {2,0,6,11}, + {2,1,6,9}, + {2,2,7,15}, + {2,3,8,21}, + {2,4,9,32}, + {2,5,10,40}, + {2,6,9,19}, + {2,7,9,6}, + {3,0,7,14}, + {3,1,7,13}, + {3,2,8,22}, + {3,3,9,34}, + {3,4,10,46}, + {3,5,10,23}, + {3,6,9,18}, + {3,7,10,7}, + {4,0,8,20}, + {4,1,8,19}, + {4,2,9,33}, + {4,3,10,47}, + {4,4,10,27}, + {4,5,10,22}, + {4,6,10,9}, + {4,7,10,3}, + {5,0,9,31}, + {5,1,9,22}, + {5,2,10,41}, + {5,3,10,26}, + {5,4,11,21}, + {5,5,11,20}, + {5,6,10,5}, + {5,7,11,3}, + {6,0,8,14}, + {6,1,8,13}, + {6,2,9,10}, + {6,3,10,11}, + {6,4,10,16}, + {6,5,10,6}, + {6,6,11,5}, + {6,7,11,1}, + {7,0,9,9}, + {7,1,8,8}, + {7,2,9,7}, + {7,3,10,8}, + {7,4,10,4}, + {7,5,11,4}, + {7,6,11,2}, + {7,7,11,0}, + }, { // 11 + {0,0,2,3}, + {0,1,3,4}, + {0,2,5,10}, + {0,3,7,24}, + {0,4,8,34}, + {0,5,9,33}, + {0,6,8,21}, + {0,7,9,15}, + {1,0,3,5}, + {1,1,3,3}, + {1,2,4,4}, + {1,3,6,10}, + {1,4,8,32}, + {1,5,8,17}, + {1,6,7,11}, + {1,7,8,10}, + {2,0,5,11}, + {2,1,5,7}, + {2,2,6,13}, + {2,3,7,18}, + {2,4,8,30}, + {2,5,9,31}, + {2,6,8,20}, + {2,7,8,5}, + {3,0,7,25}, + {3,1,6,11}, + {3,2,7,19}, + {3,3,9,59}, + {3,4,8,27}, + {3,5,10,18}, + {3,6,8,12}, + {3,7,9,5}, + {4,0,8,35}, + {4,1,8,33}, + {4,2,8,31}, + {4,3,9,58}, + {4,4,9,30}, + {4,5,10,16}, + {4,6,9,7}, + {4,7,10,5}, + {5,0,8,28}, + {5,1,8,26}, + {5,2,9,32}, + {5,3,10,19}, + {5,4,10,17}, + {5,5,11,15}, + {5,6,10,8}, + {5,7,11,14}, + {6,0,8,14}, + {6,1,7,12}, + {6,2,7,9}, + {6,3,8,13}, + {6,4,9,14}, + {6,5,10,9}, + {6,6,10,4}, + {6,7,10,1}, + {7,0,8,11}, + {7,1,7,4}, + {7,2,8,6}, + {7,3,9,6}, + {7,4,10,6}, + {7,5,10,3}, + {7,6,10,2}, + {7,7,10,0}, + }, { // 12 + {0,0,4,9}, + {0,1,3,6}, + {0,2,5,16}, + {0,3,7,33}, + {0,4,8,41}, + {0,5,9,39}, + {0,6,9,38}, + {0,7,9,26}, + {1,0,3,7}, + {1,1,3,5}, + {1,2,4,6}, + {1,3,5,9}, + {1,4,7,23}, + {1,5,7,16}, + {1,6,8,26}, + {1,7,8,11}, + {2,0,5,17}, + {2,1,4,7}, + {2,2,5,11}, + {2,3,6,14}, + {2,4,7,21}, + {2,5,8,30}, + {2,6,7,10}, + {2,7,8,7}, + {3,0,6,17}, + {3,1,5,10}, + {3,2,6,15}, + {3,3,6,12}, + {3,4,7,18}, + {3,5,8,28}, + {3,6,8,14}, + {3,7,8,5}, + {4,0,7,32}, + {4,1,6,13}, + {4,2,7,22}, + {4,3,7,19}, + {4,4,8,18}, + {4,5,8,16}, + {4,6,8,9}, + {4,7,9,5}, + {5,0,8,40}, + {5,1,7,17}, + {5,2,8,31}, + {5,3,8,29}, + {5,4,8,17}, + {5,5,9,13}, + {5,6,8,4}, + {5,7,9,2}, + {6,0,8,27}, + {6,1,7,12}, + {6,2,7,11}, + {6,3,8,15}, + {6,4,8,10}, + {6,5,9,7}, + {6,6,9,4}, + {6,7,10,1}, + {7,0,9,27}, + {7,1,8,12}, + {7,2,8,8}, + {7,3,9,12}, + {7,4,9,6}, + {7,5,9,3}, + {7,6,9,1}, + {7,7,10,0}, + }, { // 13 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,7,21}, + {0,4,8,34}, + {0,5,9,51}, + {0,6,9,46}, + {0,7,10,71}, + {0,8,9,42}, + {0,9,10,52}, + {0,10,11,68}, + {0,11,11,52}, + {0,12,12,67}, + {0,13,12,44}, + {0,14,13,43}, + {0,15,13,19}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,19}, + {1,4,8,31}, + {1,5,8,26}, + {1,6,9,44}, + {1,7,9,33}, + {1,8,9,31}, + {1,9,9,24}, + {1,10,10,32}, + {1,11,10,24}, + {1,12,11,31}, + {1,13,12,35}, + {1,14,12,22}, + {1,15,12,14}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,36}, + {2,4,9,59}, + {2,5,9,49}, + {2,6,10,77}, + {2,7,10,65}, + {2,8,9,29}, + {2,9,10,40}, + {2,10,10,30}, + {2,11,11,40}, + {2,12,11,27}, + {2,13,12,33}, + {2,14,13,42}, + {2,15,13,16}, + {3,0,7,22}, + {3,1,7,20}, + {3,2,8,37}, + {3,3,9,61}, + {3,4,9,56}, + {3,5,10,79}, + {3,6,10,73}, + {3,7,10,64}, + {3,8,10,43}, + {3,9,11,76}, + {3,10,11,56}, + {3,11,11,37}, + {3,12,11,26}, + {3,13,12,31}, + {3,14,13,25}, + {3,15,13,14}, + {4,0,8,35}, + {4,1,7,16}, + {4,2,9,60}, + {4,3,9,57}, + {4,4,10,97}, + {4,5,10,75}, + {4,6,11,114}, + {4,7,11,91}, + {4,8,10,54}, + {4,9,11,73}, + {4,10,11,55}, + {4,11,12,41}, + {4,12,12,48}, + {4,13,13,53}, + {4,14,13,23}, + {4,15,14,24}, + {5,0,9,58}, + {5,1,8,27}, + {5,2,9,50}, + {5,3,10,96}, + {5,4,10,76}, + {5,5,10,70}, + {5,6,11,93}, + {5,7,11,84}, + {5,8,11,77}, + {5,9,11,58}, + {5,10,12,79}, + {5,11,11,29}, + {5,12,13,74}, + {5,13,13,49}, + {5,14,14,41}, + {5,15,14,17}, + {6,0,9,47}, + {6,1,9,45}, + {6,2,10,78}, + {6,3,10,74}, + {6,4,11,115}, + {6,5,11,94}, + {6,6,11,90}, + {6,7,11,79}, + {6,8,11,69}, + {6,9,12,83}, + {6,10,12,71}, + {6,11,12,50}, + {6,12,13,59}, + {6,13,13,38}, + {6,14,14,36}, + {6,15,14,15}, + {7,0,10,72}, + {7,1,9,34}, + {7,2,10,56}, + {7,3,11,95}, + {7,4,11,92}, + {7,5,11,85}, + {7,6,12,91}, + {7,7,12,90}, + {7,8,12,86}, + {7,9,12,73}, + {7,10,13,77}, + {7,11,13,65}, + {7,12,13,51}, + {7,13,14,44}, + {7,14,16,43}, + {7,15,16,42}, + {8,0,9,43}, + {8,1,8,20}, + {8,2,9,30}, + {8,3,10,44}, + {8,4,10,55}, + {8,5,11,78}, + {8,6,11,72}, + {8,7,12,87}, + {8,8,12,78}, + {8,9,12,61}, + {8,10,12,46}, + {8,11,13,54}, + {8,12,13,37}, + {8,13,14,30}, + {8,14,15,20}, + {8,15,15,16}, + {9,0,10,53}, + {9,1,9,25}, + {9,2,10,41}, + {9,3,10,37}, + {9,4,11,44}, + {9,5,11,59}, + {9,6,11,54}, + {9,7,13,81}, + {9,8,12,66}, + {9,9,13,76}, + {9,10,13,57}, + {9,11,14,54}, + {9,12,14,37}, + {9,13,14,18}, + {9,14,16,39}, + {9,15,15,11}, + {10,0,10,35}, + {10,1,10,33}, + {10,2,10,31}, + {10,3,11,57}, + {10,4,11,42}, + {10,5,12,82}, + {10,6,12,72}, + {10,7,13,80}, + {10,8,12,47}, + {10,9,13,58}, + {10,10,14,55}, + {10,11,13,21}, + {10,12,14,22}, + {10,13,15,26}, + {10,14,16,38}, + {10,15,17,22}, + {11,0,11,53}, + {11,1,10,25}, + {11,2,10,23}, + {11,3,11,38}, + {11,4,12,70}, + {11,5,12,60}, + {11,6,12,51}, + {11,7,12,36}, + {11,8,13,55}, + {11,9,13,26}, + {11,10,13,34}, + {11,11,14,23}, + {11,12,15,27}, + {11,13,15,14}, + {11,14,15,9}, + {11,15,16,7}, + {12,0,11,34}, + {12,1,11,32}, + {12,2,11,28}, + {12,3,12,39}, + {12,4,12,49}, + {12,5,13,75}, + {12,6,12,30}, + {12,7,13,52}, + {12,8,14,48}, + {12,9,14,40}, + {12,10,15,52}, + {12,11,15,28}, + {12,12,15,18}, + {12,13,16,17}, + {12,14,16,9}, + {12,15,16,5}, + {13,0,12,45}, + {13,1,11,21}, + {13,2,12,34}, + {13,3,13,64}, + {13,4,13,56}, + {13,5,13,50}, + {13,6,14,49}, + {13,7,14,45}, + {13,8,14,31}, + {13,9,14,19}, + {13,10,14,12}, + {13,11,15,15}, + {13,12,16,10}, + {13,13,15,7}, + {13,14,16,6}, + {13,15,16,3}, + {14,0,13,48}, + {14,1,12,23}, + {14,2,12,20}, + {14,3,13,39}, + {14,4,13,36}, + {14,5,13,35}, + {14,6,15,53}, + {14,7,14,21}, + {14,8,14,16}, + {14,9,17,23}, + {14,10,15,13}, + {14,11,15,10}, + {14,12,15,6}, + {14,13,17,1}, + {14,14,16,4}, + {14,15,16,2}, + {15,0,12,16}, + {15,1,12,15}, + {15,2,13,17}, + {15,3,14,27}, + {15,4,14,25}, + {15,5,14,20}, + {15,6,15,29}, + {15,7,14,11}, + {15,8,15,17}, + {15,9,15,12}, + {15,10,16,16}, + {15,11,16,8}, + {15,12,19,1}, + {15,13,18,1}, + {15,14,19,0}, + {15,15,16,1}, + }, { // 14 + // UNUSED + }, { // 15 + {0,0,3,7}, + {0,1,4,12}, + {0,2,5,18}, + {0,3,7,53}, + {0,4,7,47}, + {0,5,8,76}, + {0,6,9,124}, + {0,7,9,108}, + {0,8,9,89}, + {0,9,10,123}, + {0,10,10,108}, + {0,11,11,119}, + {0,12,11,107}, + {0,13,11,81}, + {0,14,12,122}, + {0,15,13,63}, + {1,0,4,13}, + {1,1,3,5}, + {1,2,5,16}, + {1,3,6,27}, + {1,4,7,46}, + {1,5,7,36}, + {1,6,8,61}, + {1,7,8,51}, + {1,8,8,42}, + {1,9,9,70}, + {1,10,9,52}, + {1,11,10,83}, + {1,12,10,65}, + {1,13,10,41}, + {1,14,11,59}, + {1,15,11,36}, + {2,0,5,19}, + {2,1,5,17}, + {2,2,5,15}, + {2,3,6,24}, + {2,4,7,41}, + {2,5,7,34}, + {2,6,8,59}, + {2,7,8,48}, + {2,8,8,40}, + {2,9,9,64}, + {2,10,9,50}, + {2,11,10,78}, + {2,12,10,62}, + {2,13,11,80}, + {2,14,11,56}, + {2,15,11,33}, + {3,0,6,29}, + {3,1,6,28}, + {3,2,6,25}, + {3,3,7,43}, + {3,4,7,39}, + {3,5,8,63}, + {3,6,8,55}, + {3,7,9,93}, + {3,8,9,76}, + {3,9,9,59}, + {3,10,10,93}, + {3,11,10,72}, + {3,12,10,54}, + {3,13,11,75}, + {3,14,11,50}, + {3,15,11,29}, + {4,0,7,52}, + {4,1,6,22}, + {4,2,7,42}, + {4,3,7,40}, + {4,4,8,67}, + {4,5,8,57}, + {4,6,9,95}, + {4,7,9,79}, + {4,8,9,72}, + {4,9,9,57}, + {4,10,10,89}, + {4,11,10,69}, + {4,12,10,49}, + {4,13,11,66}, + {4,14,11,46}, + {4,15,11,27}, + {5,0,8,77}, + {5,1,7,37}, + {5,2,7,35}, + {5,3,8,66}, + {5,4,8,58}, + {5,5,8,52}, + {5,6,9,91}, + {5,7,9,74}, + {5,8,9,62}, + {5,9,9,48}, + {5,10,10,79}, + {5,11,10,63}, + {5,12,11,90}, + {5,13,11,62}, + {5,14,11,40}, + {5,15,12,38}, + {6,0,9,125}, + {6,1,7,32}, + {6,2,8,60}, + {6,3,8,56}, + {6,4,8,50}, + {6,5,9,92}, + {6,6,9,78}, + {6,7,9,65}, + {6,8,9,55}, + {6,9,10,87}, + {6,10,10,71}, + {6,11,10,51}, + {6,12,11,73}, + {6,13,11,51}, + {6,14,12,70}, + {6,15,12,30}, + {7,0,9,109}, + {7,1,8,53}, + {7,2,8,49}, + {7,3,9,94}, + {7,4,9,88}, + {7,5,9,75}, + {7,6,9,66}, + {7,7,10,122}, + {7,8,10,91}, + {7,9,10,73}, + {7,10,10,56}, + {7,11,10,42}, + {7,12,11,64}, + {7,13,11,44}, + {7,14,11,21}, + {7,15,12,25}, + {8,0,9,90}, + {8,1,8,43}, + {8,2,8,41}, + {8,3,9,77}, + {8,4,9,73}, + {8,5,9,63}, + {8,6,9,56}, + {8,7,10,92}, + {8,8,10,77}, + {8,9,10,66}, + {8,10,10,47}, + {8,11,11,67}, + {8,12,11,48}, + {8,13,12,53}, + {8,14,12,36}, + {8,15,12,20}, + {9,0,9,71}, + {9,1,8,34}, + {9,2,9,67}, + {9,3,9,60}, + {9,4,9,58}, + {9,5,9,49}, + {9,6,10,88}, + {9,7,10,76}, + {9,8,10,67}, + {9,9,11,106}, + {9,10,11,71}, + {9,11,11,54}, + {9,12,11,38}, + {9,13,12,39}, + {9,14,12,23}, + {9,15,12,15}, + {10,0,10,109}, + {10,1,9,53}, + {10,2,9,51}, + {10,3,9,47}, + {10,4,10,90}, + {10,5,10,82}, + {10,6,10,58}, + {10,7,10,57}, + {10,8,10,48}, + {10,9,11,72}, + {10,10,11,57}, + {10,11,11,41}, + {10,12,11,23}, + {10,13,12,27}, + {10,14,13,62}, + {10,15,12,9}, + {11,0,10,86}, + {11,1,9,42}, + {11,2,9,40}, + {11,3,9,37}, + {11,4,10,70}, + {11,5,10,64}, + {11,6,10,52}, + {11,7,10,43}, + {11,8,11,70}, + {11,9,11,55}, + {11,10,11,42}, + {11,11,11,25}, + {11,12,12,29}, + {11,13,12,18}, + {11,14,12,11}, + {11,15,13,11}, + {12,0,11,118}, + {12,1,10,68}, + {12,2,9,30}, + {12,3,10,55}, + {12,4,10,50}, + {12,5,10,46}, + {12,6,11,74}, + {12,7,11,65}, + {12,8,11,49}, + {12,9,11,39}, + {12,10,11,24}, + {12,11,11,16}, + {12,12,12,22}, + {12,13,12,13}, + {12,14,13,14}, + {12,15,13,7}, + {13,0,11,91}, + {13,1,10,44}, + {13,2,10,39}, + {13,3,10,38}, + {13,4,10,34}, + {13,5,11,63}, + {13,6,11,52}, + {13,7,11,45}, + {13,8,11,31}, + {13,9,12,52}, + {13,10,12,28}, + {13,11,12,19}, + {13,12,12,14}, + {13,13,12,8}, + {13,14,13,9}, + {13,15,13,3}, + {14,0,12,123}, + {14,1,11,60}, + {14,2,11,58}, + {14,3,11,53}, + {14,4,11,47}, + {14,5,11,43}, + {14,6,11,32}, + {14,7,11,22}, + {14,8,12,37}, + {14,9,12,24}, + {14,10,12,17}, + {14,11,12,12}, + {14,12,13,15}, + {14,13,13,10}, + {14,14,12,2}, + {14,15,13,1}, + {15,0,12,71}, + {15,1,11,37}, + {15,2,11,34}, + {15,3,11,30}, + {15,4,11,28}, + {15,5,11,20}, + {15,6,11,17}, + {15,7,12,26}, + {15,8,12,21}, + {15,9,12,16}, + {15,10,12,10}, + {15,11,12,6}, + {15,12,13,8}, + {15,13,13,6}, + {15,14,13,2}, + {15,15,13,0}, + }, { // 16 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 17 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 18 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 19 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 20 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 21 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 22 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 23 + {0,0,1,1}, + {0,1,4,5}, + {0,2,6,14}, + {0,3,8,44}, + {0,4,9,74}, + {0,5,9,63}, + {0,6,10,110}, + {0,7,10,93}, + {0,8,11,172}, + {0,9,11,149}, + {0,10,11,138}, + {0,11,12,242}, + {0,12,12,225}, + {0,13,12,195}, + {0,14,13,376}, + {0,15,9,17}, + {1,0,3,3}, + {1,1,4,4}, + {1,2,6,12}, + {1,3,7,20}, + {1,4,8,35}, + {1,5,9,62}, + {1,6,9,53}, + {1,7,9,47}, + {1,8,10,83}, + {1,9,10,75}, + {1,10,10,68}, + {1,11,11,119}, + {1,12,12,201}, + {1,13,11,107}, + {1,14,12,207}, + {1,15,8,9}, + {2,0,6,15}, + {2,1,6,13}, + {2,2,7,23}, + {2,3,8,38}, + {2,4,9,67}, + {2,5,9,58}, + {2,6,10,103}, + {2,7,10,90}, + {2,8,11,161}, + {2,9,10,72}, + {2,10,11,127}, + {2,11,11,117}, + {2,12,11,110}, + {2,13,12,209}, + {2,14,12,206}, + {2,15,9,16}, + {3,0,8,45}, + {3,1,7,21}, + {3,2,8,39}, + {3,3,9,69}, + {3,4,9,64}, + {3,5,10,114}, + {3,6,10,99}, + {3,7,10,87}, + {3,8,11,158}, + {3,9,11,140}, + {3,10,12,252}, + {3,11,12,212}, + {3,12,12,199}, + {3,13,13,387}, + {3,14,13,365}, + {3,15,10,26}, + {4,0,9,75}, + {4,1,8,36}, + {4,2,9,68}, + {4,3,9,65}, + {4,4,10,115}, + {4,5,10,101}, + {4,6,11,179}, + {4,7,11,164}, + {4,8,11,155}, + {4,9,12,264}, + {4,10,12,246}, + {4,11,12,226}, + {4,12,13,395}, + {4,13,13,382}, + {4,14,13,362}, + {4,15,9,9}, + {5,0,9,66}, + {5,1,8,30}, + {5,2,9,59}, + {5,3,9,56}, + {5,4,10,102}, + {5,5,11,185}, + {5,6,11,173}, + {5,7,12,265}, + {5,8,11,142}, + {5,9,12,253}, + {5,10,12,232}, + {5,11,13,400}, + {5,12,13,388}, + {5,13,13,378}, + {5,14,14,445}, + {5,15,10,16}, + {6,0,10,111}, + {6,1,9,54}, + {6,2,9,52}, + {6,3,10,100}, + {6,4,11,184}, + {6,5,11,178}, + {6,6,11,160}, + {6,7,11,133}, + {6,8,12,257}, + {6,9,12,244}, + {6,10,12,228}, + {6,11,12,217}, + {6,12,13,385}, + {6,13,13,366}, + {6,14,14,715}, + {6,15,10,10}, + {7,0,10,98}, + {7,1,9,48}, + {7,2,10,91}, + {7,3,10,88}, + {7,4,11,165}, + {7,5,11,157}, + {7,6,11,148}, + {7,7,12,261}, + {7,8,12,248}, + {7,9,13,407}, + {7,10,13,397}, + {7,11,13,372}, + {7,12,13,380}, + {7,13,15,889}, + {7,14,15,884}, + {7,15,10,8}, + {8,0,10,85}, + {8,1,10,84}, + {8,2,10,81}, + {8,3,11,159}, + {8,4,11,156}, + {8,5,11,143}, + {8,6,12,260}, + {8,7,12,249}, + {8,8,13,427}, + {8,9,13,401}, + {8,10,13,392}, + {8,11,13,383}, + {8,12,14,727}, + {8,13,14,713}, + {8,14,14,708}, + {8,15,10,7}, + {9,0,11,154}, + {9,1,10,76}, + {9,2,10,73}, + {9,3,11,141}, + {9,4,11,131}, + {9,5,12,256}, + {9,6,12,245}, + {9,7,13,426}, + {9,8,13,406}, + {9,9,13,394}, + {9,10,13,384}, + {9,11,14,735}, + {9,12,13,359}, + {9,13,14,710}, + {9,14,13,352}, + {9,15,11,11}, + {10,0,11,139}, + {10,1,11,129}, + {10,2,10,67}, + {10,3,11,125}, + {10,4,12,247}, + {10,5,12,233}, + {10,6,12,229}, + {10,7,12,219}, + {10,8,13,393}, + {10,9,14,743}, + {10,10,14,737}, + {10,11,14,720}, + {10,12,15,885}, + {10,13,15,882}, + {10,14,14,439}, + {10,15,10,4}, + {11,0,12,243}, + {11,1,11,120}, + {11,2,11,118}, + {11,3,11,115}, + {11,4,12,227}, + {11,5,12,223}, + {11,6,13,396}, + {11,7,14,746}, + {11,8,14,742}, + {11,9,14,736}, + {11,10,14,721}, + {11,11,14,712}, + {11,12,14,706}, + {11,13,13,223}, + {11,14,14,436}, + {11,15,11,6}, + {12,0,12,202}, + {12,1,12,224}, + {12,2,12,222}, + {12,3,12,218}, + {12,4,12,216}, + {12,5,13,389}, + {12,6,13,386}, + {12,7,13,381}, + {12,8,13,364}, + {12,9,15,888}, + {12,10,14,443}, + {12,11,14,707}, + {12,12,14,440}, + {12,13,14,437}, + {12,14,16,1728}, + {12,15,11,4}, + {13,0,14,747}, + {13,1,12,211}, + {13,2,12,210}, + {13,3,12,208}, + {13,4,13,370}, + {13,5,13,379}, + {13,6,14,734}, + {13,7,14,723}, + {13,8,14,714}, + {13,9,16,1735}, + {13,10,15,883}, + {13,11,15,877}, + {13,12,15,876}, + {13,13,17,3459}, + {13,14,15,865}, + {13,15,11,2}, + {14,0,13,377}, + {14,1,13,369}, + {14,2,11,102}, + {14,3,12,187}, + {14,4,14,726}, + {14,5,14,722}, + {14,6,13,358}, + {14,7,14,711}, + {14,8,14,709}, + {14,9,15,866}, + {14,10,16,1734}, + {14,11,15,871}, + {14,12,17,3458}, + {14,13,15,870}, + {14,14,14,434}, + {14,15,11,0}, + {15,0,9,12}, + {15,1,8,10}, + {15,2,8,7}, + {15,3,9,11}, + {15,4,9,10}, + {15,5,10,17}, + {15,6,10,11}, + {15,7,10,9}, + {15,8,11,13}, + {15,9,11,12}, + {15,10,11,10}, + {15,11,11,7}, + {15,12,11,5}, + {15,13,11,3}, + {15,14,11,1}, + {15,15,8,3}, + }, { // 24 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + }, { // 25 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + }, { // 26 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + }, { // 27 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + }, { // 28 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + }, { // 29 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + }, { // 30 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + }, { // 31 + {0,0,4,15}, + {0,1,4,13}, + {0,2,6,46}, + {0,3,7,80}, + {0,4,8,146}, + {0,5,9,262}, + {0,6,9,248}, + {0,7,10,434}, + {0,8,10,426}, + {0,9,11,669}, + {0,10,11,653}, + {0,11,11,649}, + {0,12,11,621}, + {0,13,11,517}, + {0,14,12,1032}, + {0,15,9,88}, + {1,0,4,14}, + {1,1,4,12}, + {1,2,5,21}, + {1,3,6,38}, + {1,4,7,71}, + {1,5,8,130}, + {1,6,8,122}, + {1,7,9,216}, + {1,8,9,209}, + {1,9,9,198}, + {1,10,10,327}, + {1,11,10,345}, + {1,12,10,319}, + {1,13,10,297}, + {1,14,10,279}, + {1,15,8,42}, + {2,0,6,47}, + {2,1,5,22}, + {2,2,6,41}, + {2,3,7,74}, + {2,4,7,68}, + {2,5,8,128}, + {2,6,8,120}, + {2,7,9,221}, + {2,8,9,207}, + {2,9,9,194}, + {2,10,9,182}, + {2,11,10,340}, + {2,12,10,315}, + {2,13,10,295}, + {2,14,11,541}, + {2,15,7,18}, + {3,0,7,81}, + {3,1,6,39}, + {3,2,7,75}, + {3,3,7,70}, + {3,4,8,134}, + {3,5,8,125}, + {3,6,8,116}, + {3,7,9,220}, + {3,8,9,204}, + {3,9,9,190}, + {3,10,9,178}, + {3,11,10,325}, + {3,12,10,311}, + {3,13,10,293}, + {3,14,10,271}, + {3,15,7,16}, + {4,0,8,147}, + {4,1,7,72}, + {4,2,7,69}, + {4,3,8,135}, + {4,4,8,127}, + {4,5,8,118}, + {4,6,8,112}, + {4,7,9,210}, + {4,8,9,200}, + {4,9,9,188}, + {4,10,10,352}, + {4,11,10,323}, + {4,12,10,306}, + {4,13,10,285}, + {4,14,11,540}, + {4,15,7,14}, + {5,0,9,263}, + {5,1,7,66}, + {5,2,8,129}, + {5,3,8,126}, + {5,4,8,119}, + {5,5,8,114}, + {5,6,9,214}, + {5,7,9,202}, + {5,8,9,192}, + {5,9,9,180}, + {5,10,10,341}, + {5,11,10,317}, + {5,12,10,301}, + {5,13,10,281}, + {5,14,10,262}, + {5,15,7,12}, + {6,0,9,249}, + {6,1,8,123}, + {6,2,8,121}, + {6,3,8,117}, + {6,4,8,113}, + {6,5,9,215}, + {6,6,9,206}, + {6,7,9,195}, + {6,8,9,185}, + {6,9,10,347}, + {6,10,10,330}, + {6,11,10,308}, + {6,12,10,291}, + {6,13,10,272}, + {6,14,11,520}, + {6,15,7,10}, + {7,0,10,435}, + {7,1,8,115}, + {7,2,8,111}, + {7,3,8,109}, + {7,4,9,211}, + {7,5,9,203}, + {7,6,9,196}, + {7,7,9,187}, + {7,8,10,353}, + {7,9,10,332}, + {7,10,10,313}, + {7,11,10,298}, + {7,12,10,283}, + {7,13,11,531}, + {7,14,11,381}, + {7,15,8,17}, + {8,0,10,427}, + {8,1,9,212}, + {8,2,9,208}, + {8,3,9,205}, + {8,4,9,201}, + {8,5,9,193}, + {8,6,9,186}, + {8,7,9,177}, + {8,8,9,169}, + {8,9,10,320}, + {8,10,10,303}, + {8,11,10,286}, + {8,12,10,268}, + {8,13,11,514}, + {8,14,11,377}, + {8,15,8,16}, + {9,0,10,335}, + {9,1,9,199}, + {9,2,9,197}, + {9,3,9,191}, + {9,4,9,189}, + {9,5,9,181}, + {9,6,9,174}, + {9,7,10,333}, + {9,8,10,321}, + {9,9,10,305}, + {9,10,10,289}, + {9,11,10,275}, + {9,12,11,521}, + {9,13,11,379}, + {9,14,11,371}, + {9,15,8,11}, + {10,0,11,668}, + {10,1,9,184}, + {10,2,9,183}, + {10,3,9,179}, + {10,4,9,175}, + {10,5,10,344}, + {10,6,10,331}, + {10,7,10,314}, + {10,8,10,304}, + {10,9,10,290}, + {10,10,10,277}, + {10,11,11,530}, + {10,12,11,383}, + {10,13,11,373}, + {10,14,11,366}, + {10,15,8,10}, + {11,0,11,652}, + {11,1,10,346}, + {11,2,9,171}, + {11,3,9,168}, + {11,4,9,164}, + {11,5,10,318}, + {11,6,10,309}, + {11,7,10,299}, + {11,8,10,287}, + {11,9,10,276}, + {11,10,10,263}, + {11,11,11,513}, + {11,12,11,375}, + {11,13,11,368}, + {11,14,11,362}, + {11,15,8,6}, + {12,0,11,648}, + {12,1,10,322}, + {12,2,10,316}, + {12,3,10,312}, + {12,4,10,307}, + {12,5,10,302}, + {12,6,10,292}, + {12,7,10,284}, + {12,8,10,269}, + {12,9,10,261}, + {12,10,11,512}, + {12,11,11,376}, + {12,12,11,370}, + {12,13,11,364}, + {12,14,11,359}, + {12,15,8,4}, + {13,0,11,620}, + {13,1,10,300}, + {13,2,10,296}, + {13,3,10,294}, + {13,4,10,288}, + {13,5,10,282}, + {13,6,10,273}, + {13,7,10,266}, + {13,8,11,515}, + {13,9,11,380}, + {13,10,11,374}, + {13,11,11,369}, + {13,12,11,365}, + {13,13,11,361}, + {13,14,11,357}, + {13,15,8,2}, + {14,0,12,1033}, + {14,1,10,280}, + {14,2,10,278}, + {14,3,10,274}, + {14,4,10,267}, + {14,5,10,264}, + {14,6,10,259}, + {14,7,11,382}, + {14,8,11,378}, + {14,9,11,372}, + {14,10,11,367}, + {14,11,11,363}, + {14,12,11,360}, + {14,13,11,358}, + {14,14,11,356}, + {14,15,8,0}, + {15,0,8,43}, + {15,1,7,20}, + {15,2,7,19}, + {15,3,7,17}, + {15,4,7,15}, + {15,5,7,13}, + {15,6,7,11}, + {15,7,7,9}, + {15,8,7,7}, + {15,9,7,6}, + {15,10,7,4}, + {15,11,8,7}, + {15,12,8,5}, + {15,13,8,3}, + {15,14,8,1}, + {15,15,4,3}, + } +}; diff --git a/main.c b/main.c index e403bdc..9caa394 100644 --- a/main.c +++ b/main.c @@ -1,5282 +1,4 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -// TODO autodetect endianness here -#define fromle(x) (x) - -// get bit big endian -//#define bitb(x, y) ((((uint8_t*)(x))[(y) >> 3] >> (7 - ((y) & 7))) & 1) - -uint8_t bitb(uint8_t* s, uint32_t b) { - return (s[b >> 3] >> (7 - (b & 7))) & 1; -} - -#define bitrb(x, y, z) ibitrb((uint8_t*)x, y, z) -#define cast(x, y) (*((x*)&(y))) - -#define cblimit 21 -#define cblimit_short 12 - -uint32_t ibitrb(uint8_t* s, uint32_t* b, char e) { // bit range big endian - uint32_t a = 0; - for(int i = 0; i < e; i++) a = (a << 1) | bitb(s, (*b)+i); - //printf("bitrb %i at %i: 0x%X, 0d%u\n", e, *b, a, a); - *b += e; - return a; -} - -uint16_t l3_bitrates[16] = {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0}; -uint16_t l3_smprates[4] = {44100, 48000, 32000, 0}; - -uint8_t sf[3][33] = { - { // 32000hz band - 4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, - 4,4,4,4,6,8,12,16,20,26,34,42 - }, { // 44100hz band - 4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76, - 4,4,4,4,6,8,10,12,14,18,22,30 - }, { // 48000hz band - 4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54, - 4,4,4,4,6,6,10,12,14,16,20,26 - } -}; - -uint8_t preemph[21] = {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2}; - -long double alias[8] = { - -.6, - -.535, - -.33, - -.185, - -.095, - -.041, - -.0142, - -.0037 -}; - -// Huffman code table for quadruples (A) -// search by value -uint8_t hquada[16] = { - 0b10000000, - 0b01010000, - 0b01000000, - 0b00101000, - 0b01100000, - 0b00010100, - 0b00100000, - 0b00010000, - 0b01110000, - 0b00011000, - 0b00110000, - 0b00000000, - 0b00111000, - 0b00001000, - 0b00001100, - 0b00000100, -}; - -// Huffman code table for quadruples (B) -// What The Hell -// search by index -uint8_t hquadb[16] = { - 15, - 14, - 13, - 12, - 11, - 10, - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1, - 0 -}; - -uint32_t huff[33][256][4] = { - { // 0 - {0,0,0} - }, { // 1 - {0,0,1,1}, - {0,1,3,1}, - {1,0,2,1}, - {1,1,3,0} - }, { // 2 - {0,0,1,1}, - {0,1,3,2}, - {0,2,6,1}, - {1,0,3,3}, - {1,1,3,1}, - {1,2,5,1}, - {2,0,5,3}, - {2,1,5,2}, - {2,2,6,0} - }, { // 3 - {0,0,2,3}, - {0,1,2,2}, - {0,2,6,1}, - {1,0,3,1}, - {1,1,2,1}, - {1,2,5,1}, - {2,0,5,3}, - {2,0,5,2}, - {2,2,6,0} - }, { // 4 - // UNUSED - }, { // 5 - {0,0,1,1}, - {0,1,3,2}, - {0,2,6,6}, - {0,3,7,5}, - {1,0,3,3}, - {1,1,3,1}, - {1,2,6,4}, - {1,3,7,4}, - {2,0,6,7}, - {2,1,6,5}, - {2,2,7,7}, - {2,3,8,1}, - {3,0,7,6}, - {3,1,6,1}, - {3,2,7,1}, - {3,3,8,0} - }, { // 6 - {0,0,3,7}, - {0,1,3,3}, - {0,2,5,5}, - {0,3,7,1}, - {1,0,3,6}, - {1,1,2,2}, - {1,2,4,3}, - {1,3,5,2}, - {2,0,4,5}, - {2,1,4,4}, - {2,2,5,4}, - {2,3,6,1}, - {3,0,6,3}, - {3,1,5,3}, - {3,2,6,2}, - {3,3,7,0} - }, { // 7 - {0,0,1,1}, - {0,1,3,2}, - {0,2,6,10}, - {0,3,8,19}, - {0,4,8,16}, - {0,5,9,10}, - {1,0,3,3}, - {1,1,4,3}, - {1,2,6,7}, - {1,3,7,10}, - {1,4,7,5}, - {1,5,8,3}, - {2,0,6,11}, - {2,1,5,4}, - {2,2,7,13}, - {2,3,8,17}, - {2,4,8,8}, - {2,5,9,4}, - {3,0,7,12}, - {3,1,7,11}, - {3,2,8,18}, - {3,3,9,15}, - {3,4,9,11}, - {3,5,9,2}, - {4,0,7,7}, - {4,1,7,6}, - {4,2,8,9}, - {4,3,9,14}, - {4,4,9,3}, - {4,5,10,1}, - {5,0,8,6}, - {5,1,8,4}, - {5,2,9,5}, - {5,3,10,3}, - {5,4,10,2}, - {5,5,10,0}, - }, { // 8 - {0,0,2,3}, - {0,1,3,4}, - {0,2,6,6}, - {0,3,8,18}, - {0,4,8,12}, - {0,5,9,5}, - {1,0,3,5}, - {1,1,2,1}, - {1,2,4,2}, - {1,3,8,16}, - {1,4,8,9}, - {1,5,8,3}, - {2,0,6,7}, - {2,1,4,3}, - {2,2,6,5}, - {2,3,8,14}, - {2,4,8,7}, - {2,5,9,3}, - {3,0,8,19}, - {3,1,8,17}, - {3,2,8,15}, - {3,3,9,13}, - {3,4,9,10}, - {3,5,10,4}, - {4,0,8,13}, - {4,1,7,5}, - {4,2,8,8}, - {4,3,9,11}, - {4,4,10,5}, - {4,5,10,1}, - {5,0,9,12}, - {5,1,8,4}, - {5,2,9,4}, - {5,3,9,1}, - {5,4,11,1}, - {5,5,11,0}, - }, { // 9 - {0,0,3,7}, - {0,1,3,5}, - {0,2,5,9}, - {0,3,6,14}, - {0,4,8,15}, - {0,5,9,7}, - {1,0,3,6}, - {1,1,3,4}, - {1,2,4,5}, - {1,3,5,5}, - {1,4,6,6}, - {1,5,8,7}, - {2,0,4,7}, - {2,1,4,6}, - {2,2,5,8}, - {2,3,6,8}, - {2,4,7,8}, - {2,5,8,5}, - {3,0,6,15}, - {3,1,5,6}, - {3,2,6,9}, - {3,3,7,10}, - {3,4,7,5}, - {3,5,8,1}, - {4,0,7,11}, - {4,1,6,7}, - {4,2,7,9}, - {4,3,7,6}, - {4,4,8,4}, - {4,5,9,1}, - {5,0,8,14}, - {5,1,7,4}, - {5,2,8,6}, - {5,3,8,2}, - {5,4,9,6}, - {5,5,9,0}, - }, { // 10 - {0,0,1,1}, - {0,1,3,2}, - {0,2,6,10}, - {0,3,8,23}, - {0,4,9,35}, - {0,5,9,30}, - {0,6,9,12}, - {0,7,10,17}, - {1,0,3,3}, - {1,1,4,3}, - {1,2,6,8}, - {1,3,7,12}, - {1,4,8,18}, - {1,5,9,21}, - {1,6,8,12}, - {1,7,8,7}, - {2,0,6,11}, - {2,1,6,9}, - {2,2,7,15}, - {2,3,8,21}, - {2,4,9,32}, - {2,5,10,40}, - {2,6,9,19}, - {2,7,9,6}, - {3,0,7,14}, - {3,1,7,13}, - {3,2,8,22}, - {3,3,9,34}, - {3,4,10,46}, - {3,5,10,23}, - {3,6,9,18}, - {3,7,10,7}, - {4,0,8,20}, - {4,1,8,19}, - {4,2,9,33}, - {4,3,10,47}, - {4,4,10,27}, - {4,5,10,22}, - {4,6,10,9}, - {4,7,10,3}, - {5,0,9,31}, - {5,1,9,22}, - {5,2,10,41}, - {5,3,10,26}, - {5,4,11,21}, - {5,5,11,20}, - {5,6,10,5}, - {5,7,11,3}, - {6,0,8,14}, - {6,1,8,13}, - {6,2,9,10}, - {6,3,10,11}, - {6,4,10,16}, - {6,5,10,6}, - {6,6,11,5}, - {6,7,11,1}, - {7,0,9,9}, - {7,1,8,8}, - {7,2,9,7}, - {7,3,10,8}, - {7,4,10,4}, - {7,5,11,4}, - {7,6,11,2}, - {7,7,11,0}, - }, { // 11 - {0,0,2,3}, - {0,1,3,4}, - {0,2,5,10}, - {0,3,7,24}, - {0,4,8,34}, - {0,5,9,33}, - {0,6,8,21}, - {0,7,9,15}, - {1,0,3,5}, - {1,1,3,3}, - {1,2,4,4}, - {1,3,6,10}, - {1,4,8,32}, - {1,5,8,17}, - {1,6,7,11}, - {1,7,8,10}, - {2,0,5,11}, - {2,1,5,7}, - {2,2,6,13}, - {2,3,7,18}, - {2,4,8,30}, - {2,5,9,31}, - {2,6,8,20}, - {2,7,8,5}, - {3,0,7,25}, - {3,1,6,11}, - {3,2,7,19}, - {3,3,9,59}, - {3,4,8,27}, - {3,5,10,18}, - {3,6,8,12}, - {3,7,9,5}, - {4,0,8,35}, - {4,1,8,33}, - {4,2,8,31}, - {4,3,9,58}, - {4,4,9,30}, - {4,5,10,16}, - {4,6,9,7}, - {4,7,10,5}, - {5,0,8,28}, - {5,1,8,26}, - {5,2,9,32}, - {5,3,10,19}, - {5,4,10,17}, - {5,5,11,15}, - {5,6,10,8}, - {5,7,11,14}, - {6,0,8,14}, - {6,1,7,12}, - {6,2,7,9}, - {6,3,8,13}, - {6,4,9,14}, - {6,5,10,9}, - {6,6,10,4}, - {6,7,10,1}, - {7,0,8,11}, - {7,1,7,4}, - {7,2,8,6}, - {7,3,9,6}, - {7,4,10,6}, - {7,5,10,3}, - {7,6,10,2}, - {7,7,10,0}, - }, { // 12 - {0,0,4,9}, - {0,1,3,6}, - {0,2,5,16}, - {0,3,7,33}, - {0,4,8,41}, - {0,5,9,39}, - {0,6,9,38}, - {0,7,9,26}, - {1,0,3,7}, - {1,1,3,5}, - {1,2,4,6}, - {1,3,5,9}, - {1,4,7,23}, - {1,5,7,16}, - {1,6,8,26}, - {1,7,8,11}, - {2,0,5,17}, - {2,1,4,7}, - {2,2,5,11}, - {2,3,6,14}, - {2,4,7,21}, - {2,5,8,30}, - {2,6,7,10}, - {2,7,8,7}, - {3,0,6,17}, - {3,1,5,10}, - {3,2,6,15}, - {3,3,6,12}, - {3,4,7,18}, - {3,5,8,28}, - {3,6,8,14}, - {3,7,8,5}, - {4,0,7,32}, - {4,1,6,13}, - {4,2,7,22}, - {4,3,7,19}, - {4,4,8,18}, - {4,5,8,16}, - {4,6,8,9}, - {4,7,9,5}, - {5,0,8,40}, - {5,1,7,17}, - {5,2,8,31}, - {5,3,8,29}, - {5,4,8,17}, - {5,5,9,13}, - {5,6,8,4}, - {5,7,9,2}, - {6,0,8,27}, - {6,1,7,12}, - {6,2,7,11}, - {6,3,8,15}, - {6,4,8,10}, - {6,5,9,7}, - {6,6,9,4}, - {6,7,10,1}, - {7,0,9,27}, - {7,1,8,12}, - {7,2,8,8}, - {7,3,9,12}, - {7,4,9,6}, - {7,5,9,3}, - {7,6,9,1}, - {7,7,10,0}, - }, { // 13 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,7,21}, - {0,4,8,34}, - {0,5,9,51}, - {0,6,9,46}, - {0,7,10,71}, - {0,8,9,42}, - {0,9,10,52}, - {0,10,11,68}, - {0,11,11,52}, - {0,12,12,67}, - {0,13,12,44}, - {0,14,13,43}, - {0,15,13,19}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,19}, - {1,4,8,31}, - {1,5,8,26}, - {1,6,9,44}, - {1,7,9,33}, - {1,8,9,31}, - {1,9,9,24}, - {1,10,10,32}, - {1,11,10,24}, - {1,12,11,31}, - {1,13,12,35}, - {1,14,12,22}, - {1,15,12,14}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,36}, - {2,4,9,59}, - {2,5,9,49}, - {2,6,10,77}, - {2,7,10,65}, - {2,8,9,29}, - {2,9,10,40}, - {2,10,10,30}, - {2,11,11,40}, - {2,12,11,27}, - {2,13,12,33}, - {2,14,13,42}, - {2,15,13,16}, - {3,0,7,22}, - {3,1,7,20}, - {3,2,8,37}, - {3,3,9,61}, - {3,4,9,56}, - {3,5,10,79}, - {3,6,10,73}, - {3,7,10,64}, - {3,8,10,43}, - {3,9,11,76}, - {3,10,11,56}, - {3,11,11,37}, - {3,12,11,26}, - {3,13,12,31}, - {3,14,13,25}, - {3,15,13,14}, - {4,0,8,35}, - {4,1,7,16}, - {4,2,9,60}, - {4,3,9,57}, - {4,4,10,97}, - {4,5,10,75}, - {4,6,11,114}, - {4,7,11,91}, - {4,8,10,54}, - {4,9,11,73}, - {4,10,11,55}, - {4,11,12,41}, - {4,12,12,48}, - {4,13,13,53}, - {4,14,13,23}, - {4,15,14,24}, - {5,0,9,58}, - {5,1,8,27}, - {5,2,9,50}, - {5,3,10,96}, - {5,4,10,76}, - {5,5,10,70}, - {5,6,11,93}, - {5,7,11,84}, - {5,8,11,77}, - {5,9,11,58}, - {5,10,12,79}, - {5,11,11,29}, - {5,12,13,74}, - {5,13,13,49}, - {5,14,14,41}, - {5,15,14,17}, - {6,0,9,47}, - {6,1,9,45}, - {6,2,10,78}, - {6,3,10,74}, - {6,4,11,115}, - {6,5,11,94}, - {6,6,11,90}, - {6,7,11,79}, - {6,8,11,69}, - {6,9,12,83}, - {6,10,12,71}, - {6,11,12,50}, - {6,12,13,59}, - {6,13,13,38}, - {6,14,14,36}, - {6,15,14,15}, - {7,0,10,72}, - {7,1,9,34}, - {7,2,10,56}, - {7,3,11,95}, - {7,4,11,92}, - {7,5,11,85}, - {7,6,12,91}, - {7,7,12,90}, - {7,8,12,86}, - {7,9,12,73}, - {7,10,13,77}, - {7,11,13,65}, - {7,12,13,51}, - {7,13,14,44}, - {7,14,16,43}, - {7,15,16,42}, - {8,0,9,43}, - {8,1,8,20}, - {8,2,9,30}, - {8,3,10,44}, - {8,4,10,55}, - {8,5,11,78}, - {8,6,11,72}, - {8,7,12,87}, - {8,8,12,78}, - {8,9,12,61}, - {8,10,12,46}, - {8,11,13,54}, - {8,12,13,37}, - {8,13,14,30}, - {8,14,15,20}, - {8,15,15,16}, - {9,0,10,53}, - {9,1,9,25}, - {9,2,10,41}, - {9,3,10,37}, - {9,4,11,44}, - {9,5,11,59}, - {9,6,11,54}, - {9,7,13,81}, - {9,8,12,66}, - {9,9,13,76}, - {9,10,13,57}, - {9,11,14,54}, - {9,12,14,37}, - {9,13,14,18}, - {9,14,16,39}, - {9,15,15,11}, - {10,0,10,35}, - {10,1,10,33}, - {10,2,10,31}, - {10,3,11,57}, - {10,4,11,42}, - {10,5,12,82}, - {10,6,12,72}, - {10,7,13,80}, - {10,8,12,47}, - {10,9,13,58}, - {10,10,14,55}, - {10,11,13,21}, - {10,12,14,22}, - {10,13,15,26}, - {10,14,16,38}, - {10,15,17,22}, - {11,0,11,53}, - {11,1,10,25}, - {11,2,10,23}, - {11,3,11,38}, - {11,4,12,70}, - {11,5,12,60}, - {11,6,12,51}, - {11,7,12,36}, - {11,8,13,55}, - {11,9,13,26}, - {11,10,13,34}, - {11,11,14,23}, - {11,12,15,27}, - {11,13,15,14}, - {11,14,15,9}, - {11,15,16,7}, - {12,0,11,34}, - {12,1,11,32}, - {12,2,11,28}, - {12,3,12,39}, - {12,4,12,49}, - {12,5,13,75}, - {12,6,12,30}, - {12,7,13,52}, - {12,8,14,48}, - {12,9,14,40}, - {12,10,15,52}, - {12,11,15,28}, - {12,12,15,18}, - {12,13,16,17}, - {12,14,16,9}, - {12,15,16,5}, - {13,0,12,45}, - {13,1,11,21}, - {13,2,12,34}, - {13,3,13,64}, - {13,4,13,56}, - {13,5,13,50}, - {13,6,14,49}, - {13,7,14,45}, - {13,8,14,31}, - {13,9,14,19}, - {13,10,14,12}, - {13,11,15,15}, - {13,12,16,10}, - {13,13,15,7}, - {13,14,16,6}, - {13,15,16,3}, - {14,0,13,48}, - {14,1,12,23}, - {14,2,12,20}, - {14,3,13,39}, - {14,4,13,36}, - {14,5,13,35}, - {14,6,15,53}, - {14,7,14,21}, - {14,8,14,16}, - {14,9,17,23}, - {14,10,15,13}, - {14,11,15,10}, - {14,12,15,6}, - {14,13,17,1}, - {14,14,16,4}, - {14,15,16,2}, - {15,0,12,16}, - {15,1,12,15}, - {15,2,13,17}, - {15,3,14,27}, - {15,4,14,25}, - {15,5,14,20}, - {15,6,15,29}, - {15,7,14,11}, - {15,8,15,17}, - {15,9,15,12}, - {15,10,16,16}, - {15,11,16,8}, - {15,12,19,1}, - {15,13,18,1}, - {15,14,19,0}, - {15,15,16,1}, - }, { // 14 - // UNUSED - }, { // 15 - {0,0,3,7}, - {0,1,4,12}, - {0,2,5,18}, - {0,3,7,53}, - {0,4,7,47}, - {0,5,8,76}, - {0,6,9,124}, - {0,7,9,108}, - {0,8,9,89}, - {0,9,10,123}, - {0,10,10,108}, - {0,11,11,119}, - {0,12,11,107}, - {0,13,11,81}, - {0,14,12,122}, - {0,15,13,63}, - {1,0,4,13}, - {1,1,3,5}, - {1,2,5,16}, - {1,3,6,27}, - {1,4,7,46}, - {1,5,7,36}, - {1,6,8,61}, - {1,7,8,51}, - {1,8,8,42}, - {1,9,9,70}, - {1,10,9,52}, - {1,11,10,83}, - {1,12,10,65}, - {1,13,10,41}, - {1,14,11,59}, - {1,15,11,36}, - {2,0,5,19}, - {2,1,5,17}, - {2,2,5,15}, - {2,3,6,24}, - {2,4,7,41}, - {2,5,7,34}, - {2,6,8,59}, - {2,7,8,48}, - {2,8,8,40}, - {2,9,9,64}, - {2,10,9,50}, - {2,11,10,78}, - {2,12,10,62}, - {2,13,11,80}, - {2,14,11,56}, - {2,15,11,33}, - {3,0,6,29}, - {3,1,6,28}, - {3,2,6,25}, - {3,3,7,43}, - {3,4,7,39}, - {3,5,8,63}, - {3,6,8,55}, - {3,7,9,93}, - {3,8,9,76}, - {3,9,9,59}, - {3,10,10,93}, - {3,11,10,72}, - {3,12,10,54}, - {3,13,11,75}, - {3,14,11,50}, - {3,15,11,29}, - {4,0,7,52}, - {4,1,6,22}, - {4,2,7,42}, - {4,3,7,40}, - {4,4,8,67}, - {4,5,8,57}, - {4,6,9,95}, - {4,7,9,79}, - {4,8,9,72}, - {4,9,9,57}, - {4,10,10,89}, - {4,11,10,69}, - {4,12,10,49}, - {4,13,11,66}, - {4,14,11,46}, - {4,15,11,27}, - {5,0,8,77}, - {5,1,7,37}, - {5,2,7,35}, - {5,3,8,66}, - {5,4,8,58}, - {5,5,8,52}, - {5,6,9,91}, - {5,7,9,74}, - {5,8,9,62}, - {5,9,9,48}, - {5,10,10,79}, - {5,11,10,63}, - {5,12,11,90}, - {5,13,11,62}, - {5,14,11,40}, - {5,15,12,38}, - {6,0,9,125}, - {6,1,7,32}, - {6,2,8,60}, - {6,3,8,56}, - {6,4,8,50}, - {6,5,9,92}, - {6,6,9,78}, - {6,7,9,65}, - {6,8,9,55}, - {6,9,10,87}, - {6,10,10,71}, - {6,11,10,51}, - {6,12,11,73}, - {6,13,11,51}, - {6,14,12,70}, - {6,15,12,30}, - {7,0,9,109}, - {7,1,8,53}, - {7,2,8,49}, - {7,3,9,94}, - {7,4,9,88}, - {7,5,9,75}, - {7,6,9,66}, - {7,7,10,122}, - {7,8,10,91}, - {7,9,10,73}, - {7,10,10,56}, - {7,11,10,42}, - {7,12,11,64}, - {7,13,11,44}, - {7,14,11,21}, - {7,15,12,25}, - {8,0,9,90}, - {8,1,8,43}, - {8,2,8,41}, - {8,3,9,77}, - {8,4,9,73}, - {8,5,9,63}, - {8,6,9,56}, - {8,7,10,92}, - {8,8,10,77}, - {8,9,10,66}, - {8,10,10,47}, - {8,11,11,67}, - {8,12,11,48}, - {8,13,12,53}, - {8,14,12,36}, - {8,15,12,20}, - {9,0,9,71}, - {9,1,8,34}, - {9,2,9,67}, - {9,3,9,60}, - {9,4,9,58}, - {9,5,9,49}, - {9,6,10,88}, - {9,7,10,76}, - {9,8,10,67}, - {9,9,11,106}, - {9,10,11,71}, - {9,11,11,54}, - {9,12,11,38}, - {9,13,12,39}, - {9,14,12,23}, - {9,15,12,15}, - {10,0,10,109}, - {10,1,9,53}, - {10,2,9,51}, - {10,3,9,47}, - {10,4,10,90}, - {10,5,10,82}, - {10,6,10,58}, - {10,7,10,57}, - {10,8,10,48}, - {10,9,11,72}, - {10,10,11,57}, - {10,11,11,41}, - {10,12,11,23}, - {10,13,12,27}, - {10,14,13,62}, - {10,15,12,9}, - {11,0,10,86}, - {11,1,9,42}, - {11,2,9,40}, - {11,3,9,37}, - {11,4,10,70}, - {11,5,10,64}, - {11,6,10,52}, - {11,7,10,43}, - {11,8,11,70}, - {11,9,11,55}, - {11,10,11,42}, - {11,11,11,25}, - {11,12,12,29}, - {11,13,12,18}, - {11,14,12,11}, - {11,15,13,11}, - {12,0,11,118}, - {12,1,10,68}, - {12,2,9,30}, - {12,3,10,55}, - {12,4,10,50}, - {12,5,10,46}, - {12,6,11,74}, - {12,7,11,65}, - {12,8,11,49}, - {12,9,11,39}, - {12,10,11,24}, - {12,11,11,16}, - {12,12,12,22}, - {12,13,12,13}, - {12,14,13,14}, - {12,15,13,7}, - {13,0,11,91}, - {13,1,10,44}, - {13,2,10,39}, - {13,3,10,38}, - {13,4,10,34}, - {13,5,11,63}, - {13,6,11,52}, - {13,7,11,45}, - {13,8,11,31}, - {13,9,12,52}, - {13,10,12,28}, - {13,11,12,19}, - {13,12,12,14}, - {13,13,12,8}, - {13,14,13,9}, - {13,15,13,3}, - {14,0,12,123}, - {14,1,11,60}, - {14,2,11,58}, - {14,3,11,53}, - {14,4,11,47}, - {14,5,11,43}, - {14,6,11,32}, - {14,7,11,22}, - {14,8,12,37}, - {14,9,12,24}, - {14,10,12,17}, - {14,11,12,12}, - {14,12,13,15}, - {14,13,13,10}, - {14,14,12,2}, - {14,15,13,1}, - {15,0,12,71}, - {15,1,11,37}, - {15,2,11,34}, - {15,3,11,30}, - {15,4,11,28}, - {15,5,11,20}, - {15,6,11,17}, - {15,7,12,26}, - {15,8,12,21}, - {15,9,12,16}, - {15,10,12,10}, - {15,11,12,6}, - {15,12,13,8}, - {15,13,13,6}, - {15,14,13,2}, - {15,15,13,0}, - }, { // 16 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 17 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 18 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 19 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 20 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 21 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 22 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 23 - {0,0,1,1}, - {0,1,4,5}, - {0,2,6,14}, - {0,3,8,44}, - {0,4,9,74}, - {0,5,9,63}, - {0,6,10,110}, - {0,7,10,93}, - {0,8,11,172}, - {0,9,11,149}, - {0,10,11,138}, - {0,11,12,242}, - {0,12,12,225}, - {0,13,12,195}, - {0,14,13,376}, - {0,15,9,17}, - {1,0,3,3}, - {1,1,4,4}, - {1,2,6,12}, - {1,3,7,20}, - {1,4,8,35}, - {1,5,9,62}, - {1,6,9,53}, - {1,7,9,47}, - {1,8,10,83}, - {1,9,10,75}, - {1,10,10,68}, - {1,11,11,119}, - {1,12,12,201}, - {1,13,11,107}, - {1,14,12,207}, - {1,15,8,9}, - {2,0,6,15}, - {2,1,6,13}, - {2,2,7,23}, - {2,3,8,38}, - {2,4,9,67}, - {2,5,9,58}, - {2,6,10,103}, - {2,7,10,90}, - {2,8,11,161}, - {2,9,10,72}, - {2,10,11,127}, - {2,11,11,117}, - {2,12,11,110}, - {2,13,12,209}, - {2,14,12,206}, - {2,15,9,16}, - {3,0,8,45}, - {3,1,7,21}, - {3,2,8,39}, - {3,3,9,69}, - {3,4,9,64}, - {3,5,10,114}, - {3,6,10,99}, - {3,7,10,87}, - {3,8,11,158}, - {3,9,11,140}, - {3,10,12,252}, - {3,11,12,212}, - {3,12,12,199}, - {3,13,13,387}, - {3,14,13,365}, - {3,15,10,26}, - {4,0,9,75}, - {4,1,8,36}, - {4,2,9,68}, - {4,3,9,65}, - {4,4,10,115}, - {4,5,10,101}, - {4,6,11,179}, - {4,7,11,164}, - {4,8,11,155}, - {4,9,12,264}, - {4,10,12,246}, - {4,11,12,226}, - {4,12,13,395}, - {4,13,13,382}, - {4,14,13,362}, - {4,15,9,9}, - {5,0,9,66}, - {5,1,8,30}, - {5,2,9,59}, - {5,3,9,56}, - {5,4,10,102}, - {5,5,11,185}, - {5,6,11,173}, - {5,7,12,265}, - {5,8,11,142}, - {5,9,12,253}, - {5,10,12,232}, - {5,11,13,400}, - {5,12,13,388}, - {5,13,13,378}, - {5,14,14,445}, - {5,15,10,16}, - {6,0,10,111}, - {6,1,9,54}, - {6,2,9,52}, - {6,3,10,100}, - {6,4,11,184}, - {6,5,11,178}, - {6,6,11,160}, - {6,7,11,133}, - {6,8,12,257}, - {6,9,12,244}, - {6,10,12,228}, - {6,11,12,217}, - {6,12,13,385}, - {6,13,13,366}, - {6,14,14,715}, - {6,15,10,10}, - {7,0,10,98}, - {7,1,9,48}, - {7,2,10,91}, - {7,3,10,88}, - {7,4,11,165}, - {7,5,11,157}, - {7,6,11,148}, - {7,7,12,261}, - {7,8,12,248}, - {7,9,13,407}, - {7,10,13,397}, - {7,11,13,372}, - {7,12,13,380}, - {7,13,15,889}, - {7,14,15,884}, - {7,15,10,8}, - {8,0,10,85}, - {8,1,10,84}, - {8,2,10,81}, - {8,3,11,159}, - {8,4,11,156}, - {8,5,11,143}, - {8,6,12,260}, - {8,7,12,249}, - {8,8,13,427}, - {8,9,13,401}, - {8,10,13,392}, - {8,11,13,383}, - {8,12,14,727}, - {8,13,14,713}, - {8,14,14,708}, - {8,15,10,7}, - {9,0,11,154}, - {9,1,10,76}, - {9,2,10,73}, - {9,3,11,141}, - {9,4,11,131}, - {9,5,12,256}, - {9,6,12,245}, - {9,7,13,426}, - {9,8,13,406}, - {9,9,13,394}, - {9,10,13,384}, - {9,11,14,735}, - {9,12,13,359}, - {9,13,14,710}, - {9,14,13,352}, - {9,15,11,11}, - {10,0,11,139}, - {10,1,11,129}, - {10,2,10,67}, - {10,3,11,125}, - {10,4,12,247}, - {10,5,12,233}, - {10,6,12,229}, - {10,7,12,219}, - {10,8,13,393}, - {10,9,14,743}, - {10,10,14,737}, - {10,11,14,720}, - {10,12,15,885}, - {10,13,15,882}, - {10,14,14,439}, - {10,15,10,4}, - {11,0,12,243}, - {11,1,11,120}, - {11,2,11,118}, - {11,3,11,115}, - {11,4,12,227}, - {11,5,12,223}, - {11,6,13,396}, - {11,7,14,746}, - {11,8,14,742}, - {11,9,14,736}, - {11,10,14,721}, - {11,11,14,712}, - {11,12,14,706}, - {11,13,13,223}, - {11,14,14,436}, - {11,15,11,6}, - {12,0,12,202}, - {12,1,12,224}, - {12,2,12,222}, - {12,3,12,218}, - {12,4,12,216}, - {12,5,13,389}, - {12,6,13,386}, - {12,7,13,381}, - {12,8,13,364}, - {12,9,15,888}, - {12,10,14,443}, - {12,11,14,707}, - {12,12,14,440}, - {12,13,14,437}, - {12,14,16,1728}, - {12,15,11,4}, - {13,0,14,747}, - {13,1,12,211}, - {13,2,12,210}, - {13,3,12,208}, - {13,4,13,370}, - {13,5,13,379}, - {13,6,14,734}, - {13,7,14,723}, - {13,8,14,714}, - {13,9,16,1735}, - {13,10,15,883}, - {13,11,15,877}, - {13,12,15,876}, - {13,13,17,3459}, - {13,14,15,865}, - {13,15,11,2}, - {14,0,13,377}, - {14,1,13,369}, - {14,2,11,102}, - {14,3,12,187}, - {14,4,14,726}, - {14,5,14,722}, - {14,6,13,358}, - {14,7,14,711}, - {14,8,14,709}, - {14,9,15,866}, - {14,10,16,1734}, - {14,11,15,871}, - {14,12,17,3458}, - {14,13,15,870}, - {14,14,14,434}, - {14,15,11,0}, - {15,0,9,12}, - {15,1,8,10}, - {15,2,8,7}, - {15,3,9,11}, - {15,4,9,10}, - {15,5,10,17}, - {15,6,10,11}, - {15,7,10,9}, - {15,8,11,13}, - {15,9,11,12}, - {15,10,11,10}, - {15,11,11,7}, - {15,12,11,5}, - {15,13,11,3}, - {15,14,11,1}, - {15,15,8,3}, - }, { // 24 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - }, { // 25 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - }, { // 26 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - }, { // 27 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - }, { // 28 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - }, { // 29 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - }, { // 30 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - }, { // 31 - {0,0,4,15}, - {0,1,4,13}, - {0,2,6,46}, - {0,3,7,80}, - {0,4,8,146}, - {0,5,9,262}, - {0,6,9,248}, - {0,7,10,434}, - {0,8,10,426}, - {0,9,11,669}, - {0,10,11,653}, - {0,11,11,649}, - {0,12,11,621}, - {0,13,11,517}, - {0,14,12,1032}, - {0,15,9,88}, - {1,0,4,14}, - {1,1,4,12}, - {1,2,5,21}, - {1,3,6,38}, - {1,4,7,71}, - {1,5,8,130}, - {1,6,8,122}, - {1,7,9,216}, - {1,8,9,209}, - {1,9,9,198}, - {1,10,10,327}, - {1,11,10,345}, - {1,12,10,319}, - {1,13,10,297}, - {1,14,10,279}, - {1,15,8,42}, - {2,0,6,47}, - {2,1,5,22}, - {2,2,6,41}, - {2,3,7,74}, - {2,4,7,68}, - {2,5,8,128}, - {2,6,8,120}, - {2,7,9,221}, - {2,8,9,207}, - {2,9,9,194}, - {2,10,9,182}, - {2,11,10,340}, - {2,12,10,315}, - {2,13,10,295}, - {2,14,11,541}, - {2,15,7,18}, - {3,0,7,81}, - {3,1,6,39}, - {3,2,7,75}, - {3,3,7,70}, - {3,4,8,134}, - {3,5,8,125}, - {3,6,8,116}, - {3,7,9,220}, - {3,8,9,204}, - {3,9,9,190}, - {3,10,9,178}, - {3,11,10,325}, - {3,12,10,311}, - {3,13,10,293}, - {3,14,10,271}, - {3,15,7,16}, - {4,0,8,147}, - {4,1,7,72}, - {4,2,7,69}, - {4,3,8,135}, - {4,4,8,127}, - {4,5,8,118}, - {4,6,8,112}, - {4,7,9,210}, - {4,8,9,200}, - {4,9,9,188}, - {4,10,10,352}, - {4,11,10,323}, - {4,12,10,306}, - {4,13,10,285}, - {4,14,11,540}, - {4,15,7,14}, - {5,0,9,263}, - {5,1,7,66}, - {5,2,8,129}, - {5,3,8,126}, - {5,4,8,119}, - {5,5,8,114}, - {5,6,9,214}, - {5,7,9,202}, - {5,8,9,192}, - {5,9,9,180}, - {5,10,10,341}, - {5,11,10,317}, - {5,12,10,301}, - {5,13,10,281}, - {5,14,10,262}, - {5,15,7,12}, - {6,0,9,249}, - {6,1,8,123}, - {6,2,8,121}, - {6,3,8,117}, - {6,4,8,113}, - {6,5,9,215}, - {6,6,9,206}, - {6,7,9,195}, - {6,8,9,185}, - {6,9,10,347}, - {6,10,10,330}, - {6,11,10,308}, - {6,12,10,291}, - {6,13,10,272}, - {6,14,11,520}, - {6,15,7,10}, - {7,0,10,435}, - {7,1,8,115}, - {7,2,8,111}, - {7,3,8,109}, - {7,4,9,211}, - {7,5,9,203}, - {7,6,9,196}, - {7,7,9,187}, - {7,8,10,353}, - {7,9,10,332}, - {7,10,10,313}, - {7,11,10,298}, - {7,12,10,283}, - {7,13,11,531}, - {7,14,11,381}, - {7,15,8,17}, - {8,0,10,427}, - {8,1,9,212}, - {8,2,9,208}, - {8,3,9,205}, - {8,4,9,201}, - {8,5,9,193}, - {8,6,9,186}, - {8,7,9,177}, - {8,8,9,169}, - {8,9,10,320}, - {8,10,10,303}, - {8,11,10,286}, - {8,12,10,268}, - {8,13,11,514}, - {8,14,11,377}, - {8,15,8,16}, - {9,0,10,335}, - {9,1,9,199}, - {9,2,9,197}, - {9,3,9,191}, - {9,4,9,189}, - {9,5,9,181}, - {9,6,9,174}, - {9,7,10,333}, - {9,8,10,321}, - {9,9,10,305}, - {9,10,10,289}, - {9,11,10,275}, - {9,12,11,521}, - {9,13,11,379}, - {9,14,11,371}, - {9,15,8,11}, - {10,0,11,668}, - {10,1,9,184}, - {10,2,9,183}, - {10,3,9,179}, - {10,4,9,175}, - {10,5,10,344}, - {10,6,10,331}, - {10,7,10,314}, - {10,8,10,304}, - {10,9,10,290}, - {10,10,10,277}, - {10,11,11,530}, - {10,12,11,383}, - {10,13,11,373}, - {10,14,11,366}, - {10,15,8,10}, - {11,0,11,652}, - {11,1,10,346}, - {11,2,9,171}, - {11,3,9,168}, - {11,4,9,164}, - {11,5,10,318}, - {11,6,10,309}, - {11,7,10,299}, - {11,8,10,287}, - {11,9,10,276}, - {11,10,10,263}, - {11,11,11,513}, - {11,12,11,375}, - {11,13,11,368}, - {11,14,11,362}, - {11,15,8,6}, - {12,0,11,648}, - {12,1,10,322}, - {12,2,10,316}, - {12,3,10,312}, - {12,4,10,307}, - {12,5,10,302}, - {12,6,10,292}, - {12,7,10,284}, - {12,8,10,269}, - {12,9,10,261}, - {12,10,11,512}, - {12,11,11,376}, - {12,12,11,370}, - {12,13,11,364}, - {12,14,11,359}, - {12,15,8,4}, - {13,0,11,620}, - {13,1,10,300}, - {13,2,10,296}, - {13,3,10,294}, - {13,4,10,288}, - {13,5,10,282}, - {13,6,10,273}, - {13,7,10,266}, - {13,8,11,515}, - {13,9,11,380}, - {13,10,11,374}, - {13,11,11,369}, - {13,12,11,365}, - {13,13,11,361}, - {13,14,11,357}, - {13,15,8,2}, - {14,0,12,1033}, - {14,1,10,280}, - {14,2,10,278}, - {14,3,10,274}, - {14,4,10,267}, - {14,5,10,264}, - {14,6,10,259}, - {14,7,11,382}, - {14,8,11,378}, - {14,9,11,372}, - {14,10,11,367}, - {14,11,11,363}, - {14,12,11,360}, - {14,13,11,358}, - {14,14,11,356}, - {14,15,8,0}, - {15,0,8,43}, - {15,1,7,20}, - {15,2,7,19}, - {15,3,7,17}, - {15,4,7,15}, - {15,5,7,13}, - {15,6,7,11}, - {15,7,7,9}, - {15,8,7,7}, - {15,9,7,6}, - {15,10,7,4}, - {15,11,8,7}, - {15,12,8,5}, - {15,13,8,3}, - {15,14,8,1}, - {15,15,4,3}, - } -}; - -// first ESC table is 16 -char linbits[16] = {1, 2, 3, 4, 6, 8, 10, 13, 4, 5, 6, 7, 8, 9, 11, 13}; - -// frame data -typedef struct { - - uint32_t hdr; - - // parsed out - uint16_t bitrate; - uint16_t smprate; - uint16_t len; - - // bitflags - uint8_t prot; // crc protection - TODO add to verify_l3 - uint8_t priv; - uint8_t smpbit; - uint8_t jint; // joint stereo - intensity stereo - uint8_t jmss; // joint stereo - MS stereo (?) - - // indices - uint8_t mode; - uint8_t emph; // emphasis? - - // parsed data - int32_t crc; // negative when not present - - uint8_t dat[1018]; -} mp3_frame; - -uint32_t verify_l3(uint32_t d) { // returns 0 if header is valid - d = ntohl(d); - printf("magic %08X\n", d); - //return (d & 0xFFF00000) ^ 0xFFF00000; - return (d & 0xFFFE0000) ^ 0xFFFA0000; -} - -typedef struct { - uint8_t x; - uint8_t y; -} coord; - -// TODO possiblility block_type is undefined if blocksplit not set. read spec for blocksplit_flag and block_type -// table to get length of scalefactor bands -uint8_t sfcom[16][2] = { - {0,0}, - {0,1}, - {0,2}, - {0,3}, - {3,0}, - {1,1}, - {1,2}, - {1,3}, - {2,1}, - {2,2}, - {2,3}, - {3,1}, - {3,2}, - {3,3}, - {4,2}, - {4,3}, -}; - -void rdl3(uint32_t* s, mp3_frame* m) { - uint32_t d = ntohl(*(s++)); - m->hdr = d; - m->prot = (d >> 16) & 1; - m->bitrate = l3_bitrates[(d >> 12) & 0xF]; - m->smprate = l3_smprates[(d >> 10) & 3]; - m->smpbit = (d >> 10) & 3; - m->len = 144000 * m->bitrate / m->smprate + ((d >> 9) & 1); - m->priv = (d >> 8) & 1; - m->mode = (d >> 6) & 3; - m->jmss = (d >> 5) & 1; - m->jint = (d >> 4) & 1; - m->emph = d & 3; - - m->crc = htons(*((uint16_t*)s)); // only valid if m->crc - - uint32_t bp = m->prot << 4; // bitpointer - - uint16_t main_data_end = bitrb(s, &bp, 9); - char private_bits = bitrb(s, &bp, 5 - ((m->mode != 3) << 1)); - char num_ch = 1 + (m->mode != 3); - char scfsi[4][num_ch]; - uint16_t part2_3_length[2][num_ch]; - uint16_t big_values[2][num_ch]; - uint8_t global_gain[2][num_ch]; - uint8_t scalefac_compress[2][num_ch]; - uint8_t blocksplit_flag[2][num_ch]; - - // used if blocksplit flag is set - uint8_t block_type[2][num_ch]; - uint8_t switch_point[2][num_ch]; - uint8_t table_select[2][2][num_ch]; - uint8_t subblock_gain[3][2][num_ch]; - - // used if NOT set - uint8_t region_address1[2][num_ch]; - uint8_t region_address2[2][num_ch]; - - uint8_t preflag[2][num_ch]; - uint8_t scalefac_scale[2][num_ch]; - uint8_t count1table_select[2][num_ch]; - - for(int band = 0; band < 4; band++) for(int ch = 0; ch < num_ch; ch++) scfsi[band][ch] = bitrb(s, &bp, 1); - - for(int gr = 0; gr < 2; gr++) for(int ch = 0; ch < num_ch; ch++) { - part2_3_length[gr][ch] = bitrb(s, &bp, 12); - big_values[gr][ch] = bitrb(s, &bp, 9); - global_gain[gr][ch] = bitrb(s, &bp, 8); - scalefac_compress[gr][ch] = bitrb(s, &bp, 4); - blocksplit_flag[gr][ch] = bitrb(s, &bp, 1); - if(blocksplit_flag[gr][ch]) { - block_type[gr][ch] = bitrb(s, &bp, 2); - switch_point[gr][ch] = bitrb(s, &bp, 1); - for(int reg = 0; reg < 2; reg++) table_select[reg][gr][ch] = bitrb(s, &bp, 5); - for(int window = 0; window < 3; window++) subblock_gain[window][gr][ch] = bitrb(s, &bp, 3); - } else { - for(int reg = 0; reg < 3; reg++) table_select[reg][gr][ch] = bitrb(s, &bp, 5); - region_address1[gr][ch] = bitrb(s, &bp, 4); - region_address2[gr][ch] = bitrb(s, &bp, 3); - } - preflag[gr][ch] = bitrb(s, &bp, 1); - scalefac_scale[gr][ch] = bitrb(s, &bp, 1); - count1table_select[gr][ch] = bitrb(s, &bp, 1); - } - - // begin to parse main_data - // TODO completely unclear where it is supposed to start - comment from specification reproduced below - /*** - The main_data follows. It does not follow the above side information in the - bitstream. The main_data ends at a location in the main_data bitstream - preceding the frame header of the following frame at an offset given by the - value of main_data_end (see definition of main_data_end and 3-Annex Fig.3- - A.7.1 - ***/ - - int bpsave = bp; - - for(int gr = 0; gr < 2; gr++) for(int ch = 0; ch < num_ch; ch++) { - if(blocksplit_flag[gr][ch] && block_type[gr][ch] == 2) { - // long window(?) - for(int cb = 0; cb < (switch_point[gr][ch] ? 8 : 0); cb++) if(!scfsi[cb] | !gr) { - // TODO scalefac[cb][gr][ch] - // use scalefac_compress[gr][ch] - int sfcd; - if(block_type[gr][ch] != 2) sfcd = cb > 10; - else if(switch_point[gr][ch]) { - // TODO if block_type is 2 and switch_point is 1 - } else sfcd = cb > 5; - //scalefac[cb][0/*window*/][gr][ch] = bitrb(s, &bp, sfcom[scalefac_compress[gr][ch]][sfcd]); - - } - // short window(?) - for(int cb = (switch_point[gr][ch] ? 3 : 0); cb < cblimit_short; cb++) for(int window = 0; window < 3; window++) if(!scfsi[cb] | !gr) { - // TODO scalefac[cb][gr][ch] - // use scalefac_compress[gr][ch] - } - } else { - for(int cb = 0; cb < cblimit; cb++) if(!scfsi[cb] | !gr) { - // TODO scalefac[cb][gr][ch] - // use scalefac_compress[gr][ch] - } - // TODO huffman bits - unsigned short csz = 16, ci = 0; - coord* c = malloc(csz * sizeof(coord)); - while(bp < bpsave + part2_3_length[gr][ch]) { - //bp += huffman(table_select[]); - } - } - } -} +#include "mp3.h" int main(int argc, char** argv) { diff --git a/mp3.c b/mp3.c new file mode 100644 index 0000000..612b14e --- /dev/null +++ b/mp3.c @@ -0,0 +1,146 @@ +#include "mp3.h" + +#include "huffman.h" +#include "dat.h" + +// TODO autodetect endianness here +#define fromle(x) (x) + +// get bit big endian +//#define bitb(x, y) ((((uint8_t*)(x))[(y) >> 3] >> (7 - ((y) & 7))) & 1) + +uint8_t bitb(uint8_t* s, uint32_t b) { + return (s[b >> 3] >> (7 - (b & 7))) & 1; +} + +#define cast(x, y) (*((x*)&(y))) + +#define cblimit 21 +#define cblimit_short 12 + +uint32_t ibitrb(uint8_t* s, uint32_t* b, char e) { // bit range big endian + uint32_t a = 0; + for(int i = 0; i < e; i++) a = (a << 1) | bitb(s, (*b)+i); + //printf("bitrb %i at %i: 0x%X, 0d%u\n", e, *b, a, a); + *b += e; + return a; +} + +uint32_t verify_l3(uint32_t d) { // returns 0 if header is valid + d = ntohl(d); + printf("magic %08X\n", d); + //return (d & 0xFFF00000) ^ 0xFFF00000; + return (d & 0xFFFE0000) ^ 0xFFFA0000; +} + + +void rdl3(uint32_t* s, mp3_frame* m) { + uint32_t d = ntohl(*(s++)); + m->hdr = d; + m->prot = (d >> 16) & 1; + m->bitrate = l3_bitrates[(d >> 12) & 0xF]; + m->smprate = l3_smprates[(d >> 10) & 3]; + m->smpbit = (d >> 10) & 3; + m->len = 144000 * m->bitrate / m->smprate + ((d >> 9) & 1); + m->priv = (d >> 8) & 1; + m->mode = (d >> 6) & 3; + m->jmss = (d >> 5) & 1; + m->jint = (d >> 4) & 1; + m->emph = d & 3; + + m->crc = htons(*((uint16_t*)s)); // only valid if m->crc + + uint32_t bp = m->prot << 4; // bitpointer + + uint16_t main_data_end = bitrb(s, &bp, 9); + char private_bits = bitrb(s, &bp, 5 - ((m->mode != 3) << 1)); + char num_ch = 1 + (m->mode != 3); + char scfsi[4][num_ch]; + uint16_t part2_3_length[2][num_ch]; + uint16_t big_values[2][num_ch]; + uint8_t global_gain[2][num_ch]; + uint8_t scalefac_compress[2][num_ch]; + uint8_t blocksplit_flag[2][num_ch]; + + // used if blocksplit flag is set + uint8_t block_type[2][num_ch]; + uint8_t switch_point[2][num_ch]; + uint8_t table_select[2][2][num_ch]; + uint8_t subblock_gain[3][2][num_ch]; + + // used if NOT set + uint8_t region_address1[2][num_ch]; + uint8_t region_address2[2][num_ch]; + + uint8_t preflag[2][num_ch]; + uint8_t scalefac_scale[2][num_ch]; + uint8_t count1table_select[2][num_ch]; + + for(int band = 0; band < 4; band++) for(int ch = 0; ch < num_ch; ch++) scfsi[band][ch] = bitrb(s, &bp, 1); + + for(int gr = 0; gr < 2; gr++) for(int ch = 0; ch < num_ch; ch++) { + part2_3_length[gr][ch] = bitrb(s, &bp, 12); + big_values[gr][ch] = bitrb(s, &bp, 9); + global_gain[gr][ch] = bitrb(s, &bp, 8); + scalefac_compress[gr][ch] = bitrb(s, &bp, 4); + blocksplit_flag[gr][ch] = bitrb(s, &bp, 1); + if(blocksplit_flag[gr][ch]) { + block_type[gr][ch] = bitrb(s, &bp, 2); + switch_point[gr][ch] = bitrb(s, &bp, 1); + for(int reg = 0; reg < 2; reg++) table_select[reg][gr][ch] = bitrb(s, &bp, 5); + for(int window = 0; window < 3; window++) subblock_gain[window][gr][ch] = bitrb(s, &bp, 3); + } else { + for(int reg = 0; reg < 3; reg++) table_select[reg][gr][ch] = bitrb(s, &bp, 5); + region_address1[gr][ch] = bitrb(s, &bp, 4); + region_address2[gr][ch] = bitrb(s, &bp, 3); + } + preflag[gr][ch] = bitrb(s, &bp, 1); + scalefac_scale[gr][ch] = bitrb(s, &bp, 1); + count1table_select[gr][ch] = bitrb(s, &bp, 1); + } + + // begin to parse main_data + // TODO completely unclear where it is supposed to start - comment from specification reproduced below + /*** + The main_data follows. It does not follow the above side information in the + bitstream. The main_data ends at a location in the main_data bitstream + preceding the frame header of the following frame at an offset given by the + value of main_data_end (see definition of main_data_end and 3-Annex Fig.3- + A.7.1 + ***/ + + int bpsave = bp; + + for(int gr = 0; gr < 2; gr++) for(int ch = 0; ch < num_ch; ch++) { + if(blocksplit_flag[gr][ch] && block_type[gr][ch] == 2) { + // long window(?) + for(int cb = 0; cb < (switch_point[gr][ch] ? 8 : 0); cb++) if(!scfsi[cb] | !gr) { + // TODO scalefac[cb][gr][ch] + // use scalefac_compress[gr][ch] + int sfcd; + if(block_type[gr][ch] != 2) sfcd = cb > 10; + else if(switch_point[gr][ch]) { + // TODO if block_type is 2 and switch_point is 1 + } else sfcd = cb > 5; + //scalefac[cb][0/*window*/][gr][ch] = bitrb(s, &bp, sfcom[scalefac_compress[gr][ch]][sfcd]); + + } + // short window(?) + for(int cb = (switch_point[gr][ch] ? 3 : 0); cb < cblimit_short; cb++) for(int window = 0; window < 3; window++) if(!scfsi[cb] | !gr) { + // TODO scalefac[cb][gr][ch] + // use scalefac_compress[gr][ch] + } + } else { + for(int cb = 0; cb < cblimit; cb++) if(!scfsi[cb] | !gr) { + // TODO scalefac[cb][gr][ch] + // use scalefac_compress[gr][ch] + } + // TODO huffman bits + unsigned short csz = 16, ci = 0; + coord* c = malloc(csz * sizeof(coord)); + while(bp < bpsave + part2_3_length[gr][ch]) { + //bp += huffman(table_select[]); + } + } + } +} diff --git a/mp3.h b/mp3.h new file mode 100644 index 0000000..0aefd91 --- /dev/null +++ b/mp3.h @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define bitrb(x, y, z) ibitrb((uint8_t*)x, y, z) + +typedef struct { + uint8_t x; + uint8_t y; +} coord; + +// frame data +typedef struct { + + uint32_t hdr; + + // parsed out + uint16_t bitrate; + uint16_t smprate; + uint16_t len; + + // bitflags + uint8_t prot; // crc protection - TODO add to verify_l3 + uint8_t priv; + uint8_t smpbit; + uint8_t jint; // joint stereo - intensity stereo + uint8_t jmss; // joint stereo - MS stereo (?) + + // indices + uint8_t mode; + uint8_t emph; // emphasis? + + // parsed data + int32_t crc; // negative when not present + + uint8_t dat[1018]; +} mp3_frame; + +uint8_t bitb(uint8_t* s, uint32_t b); +uint32_t ibitrb(uint8_t* s, uint32_t* b, char e); +uint32_t verify_l3(uint32_t d); +void rdl3(uint32_t* s, mp3_frame* m); diff --git a/scr/huff b/scr/huff new file mode 100755 index 0000000..6d247b5 --- /dev/null +++ b/scr/huff @@ -0,0 +1,3 @@ +echo -e ", {\t\t\t\t\t\t\t// $1" +eval `wl-paste|sed 's/^/\.\/huffcvt /g;s/$/;/g'` +echo -ne '\t}' diff --git a/scr/huffcvt.c b/scr/huffcvt.c new file mode 100644 index 0000000..a2b9596 --- /dev/null +++ b/scr/huffcvt.c @@ -0,0 +1,16 @@ +#include +#include + +unsigned long btoi(char* s) { + unsigned long r = 0; + int l = strlen(s) - 1; + for(int i = l; i >= 0; i--) { + r <<= 1; + r |= (s[l-i]-'0'); + } + return r; +} + +int main(int argc, char** argv) { + printf("\t\t{%s,%s,%s,%i},\n", argv[1], argv[2], argv[3], btoi(argv[4])); +}