Fichiers repris sans modification dans engine/gnubg/, poids et table d'équité Kazaross-XG2 dans engine/data/, provenance détaillée dans engine/gnubg/PROVENANCE.md. Le lint ne vérifie plus les espaces de ces copies, pour qu'elles restent identiques à l'original. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7857 lines
75 KiB
C
7857 lines
75 KiB
C
/*
|
|
* Copyright (C) 2000-2002 Joseph Heled <joseph@gnubg.org>
|
|
* Copyright (C) 2006-2019 the AUTHORS
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "config.h"
|
|
#include "bearoffgammon.h"
|
|
|
|
struct GroupInfo {
|
|
struct GammonProbs gDefault;
|
|
unsigned char *info;
|
|
unsigned int base;
|
|
unsigned int size;
|
|
};
|
|
|
|
static struct GammonProbs all[] = {
|
|
{0, 0, 0, 36},
|
|
{36, 0, 0, 35},
|
|
{35, 36, 0, 35},
|
|
{35, 35, 36, 35},
|
|
{72, 0, 0, 34},
|
|
{108, 0, 0, 33},
|
|
{107, 36, 0, 33},
|
|
{107, 35, 36, 33},
|
|
{106, 72, 0, 33},
|
|
{104, 144, 0, 33},
|
|
{103, 180, 0, 33},
|
|
{103, 179, 36, 33},
|
|
{103, 176, 144, 33},
|
|
{103, 174, 216, 33},
|
|
{103, 173, 252, 33},
|
|
{100, 288, 0, 33},
|
|
{100, 284, 144, 33},
|
|
{99, 312, 432, 33},
|
|
{99, 306, 648, 33},
|
|
{99, 305, 684, 33},
|
|
{144, 0, 0, 32},
|
|
{140, 144, 0, 32},
|
|
{138, 216, 0, 32},
|
|
{137, 248, 144, 32},
|
|
{136, 284, 144, 32},
|
|
{132, 424, 288, 32},
|
|
{130, 492, 432, 32},
|
|
{130, 484, 720, 32},
|
|
{128, 544, 1152, 32},
|
|
{128, 536, 1440, 32},
|
|
{128, 533, 1548, 32},
|
|
{128, 532, 1584, 32},
|
|
{128, 520, 2016, 32},
|
|
{128, 516, 2160, 32},
|
|
{128, 512, 2304, 32},
|
|
{180, 0, 0, 31},
|
|
{176, 144, 0, 31},
|
|
{175, 180, 0, 31},
|
|
{175, 174, 216, 31},
|
|
{175, 173, 252, 31},
|
|
{172, 288, 0, 31},
|
|
{171, 324, 0, 31},
|
|
{171, 312, 432, 31},
|
|
{171, 311, 468, 31},
|
|
{216, 0, 0, 30},
|
|
{212, 144, 0, 30},
|
|
{208, 288, 0, 30},
|
|
{200, 568, 288, 30},
|
|
{196, 704, 576, 30},
|
|
{196, 688, 1152, 30},
|
|
{196, 682, 1368, 30},
|
|
{196, 658, 2232, 30},
|
|
{196, 650, 2520, 30},
|
|
{192, 812, 1872, 30},
|
|
{192, 782, 2952, 30},
|
|
{192, 774, 3240, 30},
|
|
{242, 360, 0, 29},
|
|
{241, 396, 0, 29},
|
|
{241, 392, 144, 29},
|
|
{241, 391, 180, 29},
|
|
{238, 504, 0, 29},
|
|
{238, 502, 72, 29},
|
|
{232, 720, 0, 29},
|
|
{232, 704, 576, 29},
|
|
{231, 730, 936, 29},
|
|
{231, 729, 972, 29},
|
|
{231, 722, 1224, 29},
|
|
{231, 714, 1512, 29},
|
|
{231, 713, 1548, 29},
|
|
{230, 784, 288, 29},
|
|
{226, 916, 720, 29},
|
|
{226, 912, 864, 29},
|
|
{220, 1124, 1008, 29},
|
|
{221, 1044, 2592, 29},
|
|
{221, 1041, 2700, 29},
|
|
{220, 1108, 1584, 29},
|
|
{221, 1000, 4176, 29},
|
|
{221, 989, 4572, 29},
|
|
{219, 1104, 3024, 29},
|
|
{219, 1102, 3096, 29},
|
|
{219, 1086, 3672, 29},
|
|
{219, 1085, 3708, 29},
|
|
{288, 0, 0, 28},
|
|
{284, 144, 0, 28},
|
|
{283, 173, 252, 28},
|
|
{281, 243, 324, 28},
|
|
{280, 288, 0, 28},
|
|
{279, 305, 684, 28},
|
|
{276, 432, 0, 28},
|
|
{276, 416, 576, 28},
|
|
{268, 720, 0, 28},
|
|
{264, 848, 576, 28},
|
|
{260, 956, 1872, 28},
|
|
{260, 950, 2088, 28},
|
|
{260, 920, 3168, 28},
|
|
{260, 912, 3456, 28},
|
|
{244, 1528, 2016, 28},
|
|
{313, 391, 180, 27},
|
|
{310, 502, 72, 27},
|
|
{240, 1552, 6336, 28},
|
|
{240, 1480, 8928, 28},
|
|
{240, 1472, 9216, 28},
|
|
{304, 720, 0, 27},
|
|
{304, 704, 576, 27},
|
|
{303, 729, 972, 27},
|
|
{303, 722, 1224, 27},
|
|
{303, 714, 1512, 27},
|
|
{303, 713, 1548, 27},
|
|
{360, 0, 0, 26},
|
|
{287, 1229, 3708, 27},
|
|
{356, 144, 0, 26},
|
|
{348, 432, 0, 26},
|
|
{400, 1152, 0, 24},
|
|
{392, 1440, 0, 24},
|
|
{390, 1504, 288, 24},
|
|
{368, 2248, 2016, 24},
|
|
{368, 2212, 3312, 24},
|
|
{364, 2236, 7632, 24},
|
|
{364, 2224, 8064, 24},
|
|
{360, 2480, 4032, 24},
|
|
{360, 2472, 4320, 24},
|
|
{364, 2152, 10656, 24},
|
|
{364, 2144, 10944, 24},
|
|
{356, 2444, 10512, 24},
|
|
{356, 2442, 10584, 24},
|
|
{356, 2360, 13536, 24},
|
|
{356, 2352, 13824, 24},
|
|
};
|
|
|
|
static unsigned char x9[] = {
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
13,
|
|
13,
|
|
14,
|
|
14,
|
|
14,
|
|
};
|
|
|
|
|
|
static unsigned char x10[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x11[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x17[] = {
|
|
0,
|
|
35,
|
|
35,
|
|
56,
|
|
58,
|
|
70,
|
|
71,
|
|
73,
|
|
74,
|
|
76,
|
|
76,
|
|
77,
|
|
77,
|
|
77,
|
|
};
|
|
|
|
|
|
static unsigned char x18[] = {
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
49,
|
|
50,
|
|
51,
|
|
51,
|
|
52,
|
|
52,
|
|
52,
|
|
};
|
|
|
|
|
|
static unsigned char x19[] = {
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
32,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
32,
|
|
34,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
32,
|
|
34,
|
|
34,
|
|
};
|
|
|
|
|
|
static unsigned char x20[] = {
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
29,
|
|
31,
|
|
33,
|
|
33,
|
|
34,
|
|
34,
|
|
34,
|
|
};
|
|
|
|
|
|
static unsigned char x21[] = {
|
|
0,
|
|
1,
|
|
5,
|
|
1,
|
|
5,
|
|
8,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
23,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
29,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
29,
|
|
30,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
29,
|
|
31,
|
|
33,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
29,
|
|
31,
|
|
33,
|
|
33,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
29,
|
|
31,
|
|
33,
|
|
33,
|
|
34,
|
|
1,
|
|
5,
|
|
8,
|
|
22,
|
|
24,
|
|
26,
|
|
27,
|
|
29,
|
|
31,
|
|
33,
|
|
33,
|
|
34,
|
|
34,
|
|
};
|
|
|
|
|
|
static unsigned char x22[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x23[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x25[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x26[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x27[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x33[] = {
|
|
4,
|
|
108,
|
|
110,
|
|
113,
|
|
114,
|
|
119,
|
|
120,
|
|
123,
|
|
124,
|
|
125,
|
|
125,
|
|
126,
|
|
126,
|
|
126,
|
|
};
|
|
|
|
|
|
static unsigned char x34[] = {
|
|
20,
|
|
108,
|
|
111,
|
|
112,
|
|
113,
|
|
115,
|
|
116,
|
|
117,
|
|
118,
|
|
121,
|
|
121,
|
|
122,
|
|
122,
|
|
122,
|
|
};
|
|
|
|
|
|
static unsigned char x35[] = {
|
|
0,
|
|
0,
|
|
44,
|
|
0,
|
|
44,
|
|
44,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
96,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
96,
|
|
99,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
96,
|
|
99,
|
|
99,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
96,
|
|
99,
|
|
99,
|
|
100,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
96,
|
|
99,
|
|
99,
|
|
100,
|
|
100,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
96,
|
|
99,
|
|
99,
|
|
100,
|
|
100,
|
|
101,
|
|
0,
|
|
44,
|
|
44,
|
|
90,
|
|
90,
|
|
96,
|
|
96,
|
|
99,
|
|
99,
|
|
100,
|
|
100,
|
|
101,
|
|
101,
|
|
};
|
|
|
|
|
|
static unsigned char x36[] = {
|
|
4,
|
|
44,
|
|
44,
|
|
86,
|
|
88,
|
|
91,
|
|
91,
|
|
92,
|
|
93,
|
|
94,
|
|
94,
|
|
95,
|
|
95,
|
|
95,
|
|
};
|
|
|
|
|
|
static unsigned char x37[] = {
|
|
0,
|
|
0,
|
|
20,
|
|
0,
|
|
20,
|
|
20,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
48,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
48,
|
|
53,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
48,
|
|
53,
|
|
53,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
48,
|
|
53,
|
|
53,
|
|
54,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
48,
|
|
53,
|
|
53,
|
|
54,
|
|
54,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
48,
|
|
53,
|
|
53,
|
|
54,
|
|
54,
|
|
55,
|
|
0,
|
|
20,
|
|
20,
|
|
46,
|
|
46,
|
|
48,
|
|
48,
|
|
53,
|
|
53,
|
|
54,
|
|
54,
|
|
55,
|
|
55,
|
|
};
|
|
|
|
|
|
static unsigned char x38[] = {
|
|
4,
|
|
4,
|
|
20,
|
|
4,
|
|
20,
|
|
20,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
49,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
49,
|
|
50,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
49,
|
|
50,
|
|
51,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
49,
|
|
50,
|
|
51,
|
|
51,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
49,
|
|
50,
|
|
51,
|
|
51,
|
|
52,
|
|
4,
|
|
20,
|
|
20,
|
|
45,
|
|
46,
|
|
47,
|
|
47,
|
|
49,
|
|
50,
|
|
51,
|
|
51,
|
|
52,
|
|
52,
|
|
};
|
|
|
|
|
|
static unsigned char x39[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
32,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
32,
|
|
0,
|
|
4,
|
|
4,
|
|
21,
|
|
21,
|
|
25,
|
|
25,
|
|
28,
|
|
28,
|
|
32,
|
|
32,
|
|
34,
|
|
};
|
|
|
|
|
|
static unsigned char x40[] = {
|
|
20,
|
|
82,
|
|
83,
|
|
97,
|
|
98,
|
|
102,
|
|
103,
|
|
104,
|
|
105,
|
|
106,
|
|
106,
|
|
107,
|
|
107,
|
|
109,
|
|
};
|
|
|
|
|
|
static unsigned char x41[] = {
|
|
4,
|
|
4,
|
|
44,
|
|
4,
|
|
44,
|
|
45,
|
|
4,
|
|
44,
|
|
45,
|
|
62,
|
|
4,
|
|
44,
|
|
45,
|
|
56,
|
|
69,
|
|
4,
|
|
44,
|
|
45,
|
|
56,
|
|
60,
|
|
72,
|
|
4,
|
|
44,
|
|
45,
|
|
57,
|
|
60,
|
|
62,
|
|
75,
|
|
4,
|
|
44,
|
|
45,
|
|
57,
|
|
60,
|
|
62,
|
|
63,
|
|
78,
|
|
4,
|
|
44,
|
|
45,
|
|
58,
|
|
61,
|
|
62,
|
|
63,
|
|
64,
|
|
79,
|
|
4,
|
|
44,
|
|
45,
|
|
58,
|
|
61,
|
|
62,
|
|
63,
|
|
64,
|
|
66,
|
|
80,
|
|
4,
|
|
44,
|
|
45,
|
|
59,
|
|
61,
|
|
62,
|
|
63,
|
|
65,
|
|
66,
|
|
67,
|
|
80,
|
|
4,
|
|
44,
|
|
45,
|
|
59,
|
|
61,
|
|
62,
|
|
63,
|
|
65,
|
|
66,
|
|
67,
|
|
67,
|
|
81,
|
|
4,
|
|
44,
|
|
45,
|
|
59,
|
|
61,
|
|
62,
|
|
63,
|
|
65,
|
|
66,
|
|
67,
|
|
67,
|
|
68,
|
|
81,
|
|
};
|
|
|
|
|
|
static unsigned char x42[] = {
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
13,
|
|
0,
|
|
4,
|
|
4,
|
|
7,
|
|
5,
|
|
9,
|
|
9,
|
|
11,
|
|
10,
|
|
13,
|
|
13,
|
|
0,
|
|
4,
|
|
4,
|
|
7,
|
|
5,
|
|
9,
|
|
9,
|
|
11,
|
|
10,
|
|
13,
|
|
13,
|
|
14,
|
|
0,
|
|
4,
|
|
4,
|
|
7,
|
|
5,
|
|
9,
|
|
9,
|
|
11,
|
|
10,
|
|
13,
|
|
13,
|
|
14,
|
|
14,
|
|
};
|
|
|
|
|
|
static unsigned char x43[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
13,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
13,
|
|
0,
|
|
4,
|
|
4,
|
|
7,
|
|
5,
|
|
9,
|
|
9,
|
|
11,
|
|
10,
|
|
13,
|
|
13,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
0,
|
|
4,
|
|
4,
|
|
6,
|
|
5,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
13,
|
|
0,
|
|
4,
|
|
4,
|
|
7,
|
|
5,
|
|
9,
|
|
9,
|
|
11,
|
|
10,
|
|
13,
|
|
13,
|
|
0,
|
|
4,
|
|
4,
|
|
7,
|
|
5,
|
|
9,
|
|
9,
|
|
11,
|
|
10,
|
|
13,
|
|
13,
|
|
14,
|
|
};
|
|
|
|
|
|
static unsigned char x44[] = {
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
16,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
18,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
13,
|
|
18,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
13,
|
|
13,
|
|
19,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
13,
|
|
13,
|
|
14,
|
|
19,
|
|
};
|
|
|
|
|
|
static unsigned char x45[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
16,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
16,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
17,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
16,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
17,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
16,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
18,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
16,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
18,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
13,
|
|
18,
|
|
0,
|
|
0,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
0,
|
|
4,
|
|
4,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
9,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
15,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
16,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
17,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
18,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
13,
|
|
18,
|
|
0,
|
|
4,
|
|
4,
|
|
5,
|
|
8,
|
|
9,
|
|
9,
|
|
10,
|
|
12,
|
|
13,
|
|
13,
|
|
19,
|
|
};
|
|
|
|
|
|
static unsigned char x46[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x47[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
};
|
|
|
|
|
|
static unsigned char x48[] = {
|
|
87,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
84,
|
|
85,
|
|
89,
|
|
};
|
|
|
|
|
|
static unsigned char x49[] = {
|
|
4,
|
|
4,
|
|
4,
|
|
9,
|
|
5,
|
|
5,
|
|
9,
|
|
5,
|
|
5,
|
|
5,
|
|
15,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
15,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
17,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
17,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
18,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
18,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
19,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
19,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
19,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
};
|
|
|
|
|
|
static unsigned char x50[] = {
|
|
20,
|
|
20,
|
|
20,
|
|
35,
|
|
35,
|
|
35,
|
|
35,
|
|
35,
|
|
35,
|
|
35,
|
|
36,
|
|
36,
|
|
36,
|
|
36,
|
|
40,
|
|
36,
|
|
36,
|
|
36,
|
|
36,
|
|
36,
|
|
40,
|
|
37,
|
|
37,
|
|
37,
|
|
37,
|
|
37,
|
|
37,
|
|
41,
|
|
37,
|
|
37,
|
|
37,
|
|
37,
|
|
37,
|
|
37,
|
|
37,
|
|
41,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
42,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
38,
|
|
42,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
43,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
43,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
39,
|
|
43,
|
|
};
|
|
|
|
|
|
static unsigned char x51[] = {
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
4,
|
|
4,
|
|
4,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
5,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
13,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
};
|
|
|
|
|
|
static unsigned char x52[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x53[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x54[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
|
|
static unsigned char x55[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
};
|
|
|
|
static struct GroupInfo info[63] = {
|
|
/* 1 100000 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 2 010000 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 3 110000 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 4 001000 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 5 101000 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 6 011000 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 7 111000 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 8 000100 */
|
|
{{175, 173, 252, 31}, 0, 0, 0},
|
|
/* 9 100100 */
|
|
{{0, 0, 0, 0}, x9, 91, 14},
|
|
/* 10 010100 */
|
|
{{0, 0, 0, 0}, x10, 91, 14},
|
|
/* 11 110100 */
|
|
{{0, 0, 0, 0}, x11, 364, 91},
|
|
/* 12 001100 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 13 101100 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 14 011100 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 15 111100 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 16 000010 */
|
|
{{397, 1127, 4788, 24}, 0, 0, 0},
|
|
/* 17 100010 */
|
|
{{0, 0, 0, 0}, x17, 91, 14},
|
|
/* 18 010010 */
|
|
{{0, 0, 0, 0}, x18, 91, 14},
|
|
/* 19 110010 */
|
|
{{0, 0, 0, 0}, x19, 364, 91},
|
|
/* 20 001010 */
|
|
{{0, 0, 0, 0}, x20, 91, 14},
|
|
/* 21 101010 */
|
|
{{0, 0, 0, 0}, x21, 364, 91},
|
|
/* 22 011010 */
|
|
{{0, 0, 0, 0}, x22, 364, 91},
|
|
/* 23 111010 */
|
|
{{0, 0, 0, 0}, x23, 1001, 364},
|
|
/* 24 000110 */
|
|
{{107, 35, 36, 33}, 0, 0, 0},
|
|
/* 25 100110 */
|
|
{{0, 0, 0, 0}, x25, 364, 91},
|
|
/* 26 010110 */
|
|
{{0, 0, 0, 0}, x26, 364, 91},
|
|
/* 27 110110 */
|
|
{{0, 0, 0, 0}, x27, 1001, 364},
|
|
/* 28 001110 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 29 101110 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 30 011110 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 31 111110 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 32 000001 */
|
|
{{583, 3203, 15588, 17}, 0, 0, 0},
|
|
/* 33 100001 */
|
|
{{0, 0, 0, 0}, x33, 91, 14},
|
|
/* 34 010001 */
|
|
{{0, 0, 0, 0}, x34, 91, 14},
|
|
/* 35 110001 */
|
|
{{0, 0, 0, 0}, x35, 364, 91},
|
|
/* 36 001001 */
|
|
{{0, 0, 0, 0}, x36, 91, 14},
|
|
/* 37 101001 */
|
|
{{0, 0, 0, 0}, x37, 364, 91},
|
|
/* 38 011001 */
|
|
{{0, 0, 0, 0}, x38, 364, 91},
|
|
/* 39 111001 */
|
|
{{0, 0, 0, 0}, x39, 1001, 364},
|
|
/* 40 000101 */
|
|
{{0, 0, 0, 0}, x40, 91, 14},
|
|
/* 41 100101 */
|
|
{{0, 0, 0, 0}, x41, 364, 91},
|
|
/* 42 010101 */
|
|
{{0, 0, 0, 0}, x42, 364, 91},
|
|
/* 43 110101 */
|
|
{{0, 0, 0, 0}, x43, 1001, 364},
|
|
/* 44 001101 */
|
|
{{0, 0, 0, 0}, x44, 364, 91},
|
|
/* 45 101101 */
|
|
{{0, 0, 0, 0}, x45, 1001, 364},
|
|
/* 46 011101 */
|
|
{{0, 0, 0, 0}, x46, 1001, 364},
|
|
/* 47 111101 */
|
|
{{0, 0, 0, 0}, x47, 2002, 1001},
|
|
/* 48 000011 */
|
|
{{0, 0, 0, 0}, x48, 91, 14},
|
|
/* 49 100011 */
|
|
{{0, 0, 0, 0}, x49, 364, 91},
|
|
/* 50 010011 */
|
|
{{0, 0, 0, 0}, x50, 364, 91},
|
|
/* 51 110011 */
|
|
{{0, 0, 0, 0}, x51, 1001, 364},
|
|
/* 52 001011 */
|
|
{{0, 0, 0, 0}, x52, 364, 91},
|
|
/* 53 101011 */
|
|
{{0, 0, 0, 0}, x53, 1001, 364},
|
|
/* 54 011011 */
|
|
{{0, 0, 0, 0}, x54, 1001, 364},
|
|
/* 55 111011 */
|
|
{{0, 0, 0, 0}, x55, 2002, 1001},
|
|
/* 56 000111 */
|
|
{{72, 0, 0, 34}, 0, 0, 0},
|
|
/* 57 100111 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 58 010111 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 59 110111 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 60 001111 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 61 101111 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 62 011111 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
/* 63 111111 */
|
|
{{0, 0, 0, 36}, 0, 0, 0},
|
|
};
|
|
|
|
#include <glib.h>
|
|
#include "positionid.h"
|
|
|
|
extern struct GammonProbs *
|
|
getBearoffGammonProbs(const unsigned int board[6])
|
|
{
|
|
int group = 0;
|
|
int i;
|
|
struct GroupInfo *in;
|
|
|
|
for (i = 5; i >= 0; --i) {
|
|
if (board[i] > 0)
|
|
group += (0x1 << i);
|
|
}
|
|
|
|
g_assert(group > 0);
|
|
// cppcheck-suppress negativeIndex
|
|
in = &info[group - 1];
|
|
if (!in->info) {
|
|
return &in->gDefault;
|
|
}
|
|
|
|
{
|
|
unsigned int grpSize = 0;
|
|
unsigned int b1[6] = { 0 };
|
|
unsigned int k;
|
|
unsigned short index;
|
|
|
|
for (k = 0; k < 6; ++k) {
|
|
if ((group & (0x1 << k))) {
|
|
g_assert(board[k] > 0);
|
|
b1[grpSize] = board[k] - 1;
|
|
grpSize++;
|
|
}
|
|
}
|
|
|
|
index = PositionIndex(grpSize, b1);
|
|
|
|
g_assert(index >= in->base && index - in->base < in->size);
|
|
g_assert(in->info[index - in->base] < sizeof(all) / sizeof(all[0]));
|
|
|
|
return &all[in->info[index - in->base]];
|
|
}
|
|
}
|
|
|
|
/* race BG part */
|
|
|
|
static long ya1[6][RBG_NPROBS] = {
|
|
{36, 0, 0, 0, 0,},
|
|
{36, 0, 0, 0, 0,},
|
|
{6, 1080, 0, 0, 0,},
|
|
{6, 1080, 0, 0, 0,},
|
|
{0, 396, 32400, 0, 0,},
|
|
{0, 396, 32400, 0, 0,},
|
|
};
|
|
|
|
static long ya2[6][RBG_NPROBS] = {
|
|
{36, 0, 0, 0, 0,},
|
|
{26, 360, 0, 0, 0,},
|
|
{5, 1116, 0, 0, 0,},
|
|
{5, 596, 18720, 0, 0,},
|
|
{0, 335, 33596, 36000, 0,},
|
|
{0, 235, 17666, 739080, 0,},
|
|
};
|
|
|
|
static long ya3[15][RBG_NPROBS] = {
|
|
{36, 0, 0, 0, 0,},
|
|
{6, 1080, 0, 0, 0,},
|
|
{5, 1116, 0, 0, 0,},
|
|
{5, 1116, 0, 0, 0,},
|
|
{5, 1116, 0, 0, 0,},
|
|
{5, 1016, 3600, 0, 0,},
|
|
{0, 396, 32400, 0, 0,},
|
|
{0, 396, 32400, 0, 0,},
|
|
{0, 376, 33120, 0, 0,},
|
|
{0, 335, 34596, 0, 0,},
|
|
{0, 396, 32400, 0, 0,},
|
|
{0, 376, 33120, 0, 0,},
|
|
{0, 335, 34596, 0, 0,},
|
|
{0, 335, 33596, 36000, 0,},
|
|
{0, 335, 27296, 262800, 0,},
|
|
};
|
|
|
|
static long ya4[6][RBG_NPROBS] = {
|
|
{36, 0, 0, 0, 0,},
|
|
{17, 684, 0, 0, 0,},
|
|
{4, 999, 5508, 0, 0,},
|
|
{4, 297, 30082, 25128, 0,},
|
|
{0, 272, 24281, 450484, 90144,},
|
|
{0, 120, 11765, 983521, 4213260,},
|
|
};
|
|
|
|
static long ya5[15][RBG_NPROBS] = {
|
|
{34, 72, 0, 0, 0,},
|
|
{5, 1116, 0, 0, 0,},
|
|
{4, 1148, 144, 0, 0,},
|
|
{4, 1148, 144, 0, 0,},
|
|
{4, 1080, 2592, 0, 0,},
|
|
{4, 739, 14860, 288, 0,},
|
|
{0, 396, 32400, 0, 0,},
|
|
{0, 371, 33292, 288, 0,},
|
|
{0, 298, 35716, 7632, 0,},
|
|
{0, 272, 34033, 101900, 576,},
|
|
{0, 388, 32680, 288, 0,},
|
|
{0, 322, 34856, 7488, 0,},
|
|
{0, 272, 34794, 74504, 576,},
|
|
{0, 272, 27197, 346480, 55152,},
|
|
{0, 256, 15488, 772640, 634752,},
|
|
};
|
|
|
|
static long ya6[15][RBG_NPROBS] = {
|
|
{25, 396, 0, 0, 0,},
|
|
{5, 1112, 144, 0, 0,},
|
|
{4, 1112, 1440, 0, 0,},
|
|
{4, 631, 18756, 0, 0,},
|
|
{4, 615, 19324, 288, 0,},
|
|
{4, 523, 22528, 4176, 0,},
|
|
{0, 333, 33656, 36432, 0,},
|
|
{0, 322, 33854, 43560, 0,},
|
|
{0, 297, 33393, 92540, 576,},
|
|
{0, 272, 30181, 240284, 10944,},
|
|
{0, 233, 17737, 739100, 576,},
|
|
{0, 217, 18281, 739964, 10944,},
|
|
{0, 192, 18895, 747036, 127008,},
|
|
{0, 192, 17551, 782404, 595584,},
|
|
{0, 184, 14192, 886751, 1565604,},
|
|
};
|
|
|
|
static long ya7[20][RBG_NPROBS] = {
|
|
{5, 1116, 0, 0, 0,},
|
|
{4, 1148, 144, 0, 0,},
|
|
{4, 1048, 3744, 0, 0,},
|
|
{4, 999, 5508, 0, 0,},
|
|
{0, 392, 32544, 0, 0,},
|
|
{0, 375, 33156, 0, 0,},
|
|
{0, 355, 33868, 288, 0,},
|
|
{0, 335, 34588, 288, 0,},
|
|
{0, 331, 34624, 4176, 0,},
|
|
{0, 297, 35266, 25128, 0,},
|
|
{0, 371, 33292, 288, 0,},
|
|
{0, 331, 34732, 288, 0,},
|
|
{0, 298, 35716, 7632, 0,},
|
|
{0, 331, 33728, 36432, 0,},
|
|
{0, 297, 34754, 43560, 0,},
|
|
{0, 272, 34033, 101900, 576,},
|
|
{0, 330, 27470, 263016, 0,},
|
|
{0, 297, 28537, 267356, 576,},
|
|
{0, 272, 28421, 303644, 10944,},
|
|
{0, 272, 24281, 450484, 90144,},
|
|
};
|
|
|
|
static long ya8[6][RBG_NPROBS] = {
|
|
{34, 72, 0, 0, 0,},
|
|
{11, 880, 720, 0, 0,},
|
|
{3, 751, 15482, 9000, 0,},
|
|
{3, 163, 30547, 225808, 104400,},
|
|
{0, 195, 14249, 822591, 3288276,},
|
|
{0, 57, 8951, 767859, 18563364,},
|
|
};
|
|
|
|
static long ya9[15][RBG_NPROBS] = {
|
|
{29, 252, 0, 0, 0,},
|
|
{5, 1116, 0, 0, 0,},
|
|
{3, 1115, 2628, 0, 0,},
|
|
{3, 1146, 1512, 0, 0,},
|
|
{3, 899, 10284, 4320, 0,},
|
|
{3, 452, 25549, 34076, 576,},
|
|
{0, 392, 32544, 0, 0,},
|
|
{0, 333, 34408, 9360, 0,},
|
|
{0, 236, 35179, 106580, 26496,},
|
|
{0, 207, 27064, 426011, 397044,},
|
|
{0, 357, 33552, 9072, 0,},
|
|
{0, 249, 35142, 91080, 25920,},
|
|
{0, 207, 28985, 359990, 284184,},
|
|
{0, 207, 16674, 753203, 2083572,},
|
|
{0, 165, 8770, 941530, 7506936,},
|
|
};
|
|
|
|
static long ya10[15][RBG_NPROBS] = {
|
|
{23, 468, 0, 0, 0,},
|
|
{5, 1086, 1080, 0, 0,},
|
|
{3, 1043, 5212, 288, 0,},
|
|
{3, 659, 19036, 288, 0,},
|
|
{3, 583, 21510, 9720, 0,},
|
|
{3, 368, 27767, 62980, 4608,},
|
|
{0, 325, 33734, 43992, 0,},
|
|
{0, 289, 33359, 103644, 18144,},
|
|
{0, 235, 30691, 266808, 121392,},
|
|
{0, 207, 23831, 532351, 758772,},
|
|
{0, 223, 18071, 739532, 18720,},
|
|
{0, 175, 19349, 750336, 212976,},
|
|
{0, 147, 18301, 802935, 983988,},
|
|
{0, 147, 13709, 895395, 3606660,},
|
|
{0, 129, 9184, 920983, 9389700,},
|
|
};
|
|
|
|
static long ya11[20][RBG_NPROBS] = {
|
|
{5, 1112, 144, 0, 0,},
|
|
{3, 1144, 1584, 0, 0,},
|
|
{3, 1055, 4788, 0, 0,},
|
|
{3, 857, 11792, 4464, 0,},
|
|
{0, 385, 32796, 0, 0,},
|
|
{0, 371, 33292, 288, 0,},
|
|
{0, 321, 34738, 13032, 0,},
|
|
{0, 335, 34472, 4464, 0,},
|
|
{0, 308, 34657, 32780, 576,},
|
|
{0, 235, 34181, 143452, 39168,},
|
|
{0, 345, 33984, 9072, 0,},
|
|
{0, 309, 35268, 9504, 0,},
|
|
{0, 236, 35555, 93060, 25920,},
|
|
{0, 309, 34282, 45000, 0,},
|
|
{0, 235, 34783, 122124, 26784,},
|
|
{0, 207, 28547, 375536, 292176,},
|
|
{0, 307, 28169, 267628, 1152,},
|
|
{0, 235, 29373, 316128, 54000,},
|
|
{0, 207, 25276, 488623, 460260,},
|
|
{0, 207, 15791, 778381, 2321532,},
|
|
};
|
|
|
|
static long ya12[15][RBG_NPROBS] = {
|
|
{17, 680, 144, 0, 0,},
|
|
{4, 983, 6076, 288, 0,},
|
|
{3, 923, 9488, 1872, 0,},
|
|
{3, 333, 29949, 29900, 576,},
|
|
{3, 331, 29167, 60532, 4608,},
|
|
{3, 283, 29081, 125244, 25920,},
|
|
{0, 263, 24605, 449718, 117720,},
|
|
{0, 245, 24912, 457129, 292860,},
|
|
{0, 222, 23475, 526367, 735732,},
|
|
{0, 207, 19394, 669443, 1573812,},
|
|
{0, 120, 11720, 984849, 4223772,},
|
|
{0, 108, 11969, 985331, 4443588,},
|
|
{0, 93, 12122, 963477, 5731884,},
|
|
{0, 93, 11334, 906514, 8803800,},
|
|
{0, 93, 9540, 858470, 12858408,},
|
|
};
|
|
|
|
static long ya13[20][RBG_NPROBS] = {
|
|
{4, 1132, 720, 0, 0,},
|
|
{3, 1091, 3484, 288, 0,},
|
|
{3, 775, 14808, 2160, 0,},
|
|
{3, 715, 16754, 9864, 0,},
|
|
{0, 367, 33436, 288, 0,},
|
|
{0, 296, 35680, 11504, 576,},
|
|
{0, 284, 35649, 28172, 576,},
|
|
{0, 268, 34079, 105284, 5760,},
|
|
{0, 252, 33761, 136812, 29376,},
|
|
{0, 222, 32167, 230992, 104400,},
|
|
{0, 309, 35114, 15032, 576,},
|
|
{0, 259, 35139, 78796, 5472,},
|
|
{0, 223, 34893, 133328, 40752,},
|
|
{0, 258, 27701, 345954, 74088,},
|
|
{0, 222, 28523, 359568, 198288,},
|
|
{0, 207, 25658, 472035, 562356,},
|
|
{0, 246, 15840, 772067, 665748,},
|
|
{0, 210, 17074, 766333, 952524,},
|
|
{0, 195, 16968, 761467, 1964916,},
|
|
{0, 195, 13487, 839379, 3671460,},
|
|
};
|
|
|
|
static long ya14[20][RBG_NPROBS] = {
|
|
{4, 1089, 2268, 0, 0,},
|
|
{3, 647, 19404, 2592, 0,},
|
|
{3, 559, 22396, 8928, 0,},
|
|
{3, 527, 23025, 27740, 576,},
|
|
{0, 313, 34013, 49484, 576,},
|
|
{0, 293, 33443, 95796, 5184,},
|
|
{0, 277, 32921, 134556, 32832,},
|
|
{0, 267, 30329, 241000, 26640,},
|
|
{0, 252, 30183, 263560, 103536,},
|
|
{0, 222, 28408, 360893, 299628,},
|
|
{0, 211, 18473, 740252, 31680,},
|
|
{0, 186, 19069, 747694, 157752,},
|
|
{0, 162, 19534, 758017, 303228,},
|
|
{0, 185, 17752, 783317, 628812,},
|
|
{0, 162, 18254, 788219, 874836,},
|
|
{0, 147, 17470, 814155, 1657044,},
|
|
{0, 180, 14314, 886931, 1587636,},
|
|
{0, 155, 15088, 882887, 1896516,},
|
|
{0, 141, 14977, 868919, 3196404,},
|
|
{0, 141, 12630, 886913, 5590332,},
|
|
};
|
|
|
|
static long ya15[15][RBG_NPROBS] = {
|
|
{3, 1019, 6076, 288, 0,},
|
|
{0, 355, 33824, 1872, 0,},
|
|
{0, 331, 34492, 8928, 0,},
|
|
{0, 297, 35133, 29900, 576,},
|
|
{0, 284, 34771, 59668, 4608,},
|
|
{0, 285, 35948, 16112, 576,},
|
|
{0, 284, 35025, 50636, 576,},
|
|
{0, 259, 34403, 105284, 5760,},
|
|
{0, 222, 34305, 155740, 42624,},
|
|
{0, 283, 28939, 270876, 6048,},
|
|
{0, 258, 28885, 304624, 27504,},
|
|
{0, 222, 29275, 334920, 111024,},
|
|
{0, 258, 24785, 449718, 117720,},
|
|
{0, 221, 25756, 457849, 292860,},
|
|
{0, 207, 23447, 546031, 763956,},
|
|
};
|
|
|
|
static long ya16[6][RBG_NPROBS] = {
|
|
{31, 180, 0, 0, 0,},
|
|
{6, 975, 3772, 288, 0,},
|
|
{2, 466, 25089, 78660, 18144,},
|
|
{2, 84, 23554, 584297, 1627164,},
|
|
{0, 116, 6951, 880249, 14356620,},
|
|
{0, 18, 6042, 425561, 36475740,},
|
|
};
|
|
|
|
static long ya17[15][RBG_NPROBS] = {
|
|
{23, 468, 0, 0, 0,},
|
|
{4, 1148, 144, 0, 0,},
|
|
{2, 995, 8200, 1584, 0,},
|
|
{2, 1066, 5688, 0, 0,},
|
|
{2, 603, 22062, 10568, 576,},
|
|
{2, 205, 32081, 163840, 67248,},
|
|
{0, 383, 32860, 288, 0,},
|
|
{0, 254, 35419, 75284, 2304,},
|
|
{0, 154, 29734, 402111, 269892,},
|
|
{0, 140, 15913, 828583, 3482100,},
|
|
{0, 296, 34104, 68256, 0,},
|
|
{0, 164, 30562, 363296, 127584,},
|
|
{0, 136, 17946, 801264, 2017440,},
|
|
{0, 120, 7889, 1002899, 8538948,},
|
|
{0, 70, 5652, 775017, 21974652,},
|
|
};
|
|
|
|
static long ya18[15][RBG_NPROBS] = {
|
|
{19, 608, 144, 0, 0,},
|
|
{4, 1065, 3132, 0, 0,},
|
|
{2, 884, 12012, 8208, 0,},
|
|
{2, 655, 20336, 5328, 0,},
|
|
{2, 444, 26523, 55852, 7200,},
|
|
{2, 189, 30326, 243663, 214596,},
|
|
{0, 304, 33253, 88380, 5184,},
|
|
{0, 224, 30938, 271784, 135360,},
|
|
{0, 153, 24544, 564925, 1181484,},
|
|
{0, 140, 14007, 849405, 5202684,},
|
|
{0, 193, 18775, 748820, 171648,},
|
|
{0, 117, 18938, 811339, 1255572,},
|
|
{0, 100, 13699, 913601, 5157036,},
|
|
{0, 92, 7775, 917424, 13070160,},
|
|
{0, 62, 5739, 706619, 24697476,},
|
|
};
|
|
|
|
static long ya19[20][RBG_NPROBS] = {
|
|
{4, 1130, 792, 0, 0,},
|
|
{2, 1063, 5796, 0, 0,},
|
|
{2, 991, 8364, 864, 0,},
|
|
{2, 587, 22351, 20884, 1152,},
|
|
{0, 371, 33292, 288, 0,},
|
|
{0, 357, 33712, 3312, 0,},
|
|
{0, 246, 35383, 86828, 6624,},
|
|
{0, 327, 34262, 22392, 0,},
|
|
{0, 237, 34453, 131064, 39312,},
|
|
{0, 152, 28396, 445719, 527364,},
|
|
{0, 288, 34388, 68400, 0,},
|
|
{0, 260, 35352, 69984, 0,},
|
|
{0, 158, 30668, 367220, 128880,},
|
|
{0, 259, 34481, 102492, 5184,},
|
|
{0, 157, 30147, 385270, 200952,},
|
|
{0, 140, 17532, 803268, 2295216,},
|
|
{0, 257, 28879, 305844, 38016,},
|
|
{0, 155, 26546, 508717, 517068,},
|
|
{0, 140, 16334, 823115, 3133332,},
|
|
{0, 124, 7589, 978016, 9636912,},
|
|
};
|
|
|
|
static long ya20[15][RBG_NPROBS] = {
|
|
{14, 776, 576, 0, 0,},
|
|
{4, 913, 8552, 1872, 0,},
|
|
{2, 767, 15983, 16868, 576,},
|
|
{2, 360, 29605, 53820, 5184,},
|
|
{2, 300, 28857, 156860, 64512,},
|
|
{2, 176, 27944, 340841, 409788,},
|
|
{0, 243, 24528, 474225, 268380,},
|
|
{0, 198, 22633, 576764, 1132416,},
|
|
{0, 150, 18321, 737255, 3182580,},
|
|
{0, 140, 12063, 859951, 7342452,},
|
|
{0, 108, 11969, 977637, 4720572,},
|
|
{0, 76, 12092, 946693, 7168140,},
|
|
{0, 64, 10674, 863340, 12566448,},
|
|
{0, 64, 7844, 761133, 19913580,},
|
|
{0, 52, 6032, 616407, 28031940,},
|
|
};
|
|
|
|
static long ya21[20][RBG_NPROBS] = {
|
|
{4, 1099, 1908, 0, 0,},
|
|
{2, 1019, 7348, 1152, 0,},
|
|
{2, 751, 16778, 9000, 0,},
|
|
{2, 520, 23769, 56524, 6336,},
|
|
{0, 342, 34202, 5112, 0,},
|
|
{0, 292, 35133, 36292, 3744,},
|
|
{0, 225, 34874, 131282, 45720,},
|
|
{0, 268, 32812, 150088, 34848,},
|
|
{0, 220, 30222, 298601, 284508,},
|
|
{0, 150, 25691, 530366, 1079064,},
|
|
{0, 262, 35170, 73880, 2304,},
|
|
{0, 222, 34976, 132004, 27504,},
|
|
{0, 154, 30031, 392356, 236160,},
|
|
{0, 220, 28078, 378260, 195408,},
|
|
{0, 151, 25786, 529760, 931104,},
|
|
{0, 140, 16413, 821065, 3104748,},
|
|
{0, 210, 16875, 771659, 1018692,},
|
|
{0, 140, 17488, 793184, 2715264,},
|
|
{0, 132, 12957, 858233, 6618924,},
|
|
{0, 128, 6962, 908191, 12776580,},
|
|
};
|
|
|
|
static long ya22[20][RBG_NPROBS] = {
|
|
{4, 1035, 4204, 288, 0,},
|
|
{2, 642, 20738, 7704, 0,},
|
|
{2, 555, 23523, 20180, 576,},
|
|
{2, 410, 27049, 80676, 18144,},
|
|
{0, 290, 33665, 91628, 7488,},
|
|
{0, 275, 33057, 132372, 28512,},
|
|
{0, 212, 30778, 291535, 191556,},
|
|
{0, 253, 29938, 271332, 94608,},
|
|
{0, 208, 27684, 401077, 444492,},
|
|
{0, 151, 23054, 608233, 1646748,},
|
|
{0, 184, 19038, 750756, 181008,},
|
|
{0, 164, 19390, 761061, 286956,},
|
|
{0, 113, 18750, 820147, 1368756,},
|
|
{0, 164, 17961, 797571, 824580,},
|
|
{0, 111, 17708, 838828, 2139984,},
|
|
{0, 100, 13209, 915715, 5715972,},
|
|
{0, 158, 14796, 886873, 1991484,},
|
|
{0, 106, 15120, 886295, 4018500,},
|
|
{0, 96, 12026, 896601, 8123868,},
|
|
{0, 92, 7533, 877093, 14835708,},
|
|
};
|
|
|
|
static long ya23[15][RBG_NPROBS] = {
|
|
{2, 963, 9344, 1872, 0,},
|
|
{0, 331, 34550, 6840, 0,},
|
|
{0, 311, 34757, 25292, 576,},
|
|
{0, 292, 34669, 52956, 5184,},
|
|
{0, 225, 34049, 160400, 66672,},
|
|
{0, 242, 35841, 75644, 2304,},
|
|
{0, 242, 34959, 107252, 7488,},
|
|
{0, 222, 34300, 156216, 31968,},
|
|
{0, 153, 29610, 407273, 291420,},
|
|
{0, 240, 29401, 308924, 43776,},
|
|
{0, 220, 29234, 339556, 90576,},
|
|
{0, 151, 26258, 521963, 600084,},
|
|
{0, 220, 25312, 475809, 268380,},
|
|
{0, 149, 23843, 596484, 1140480,},
|
|
{0, 140, 15529, 836357, 3699900,},
|
|
};
|
|
|
|
static long ya24[15][RBG_NPROBS] = {
|
|
{10, 887, 1764, 0, 0,},
|
|
{3, 719, 16407, 17156, 576,},
|
|
{2, 641, 19951, 37220, 4032,},
|
|
{2, 194, 30182, 243319, 180324,},
|
|
{2, 185, 28264, 318235, 388980,},
|
|
{2, 143, 26206, 434497, 830268,},
|
|
{0, 183, 14564, 820763, 3505716,},
|
|
{0, 160, 14565, 819849, 4610412,},
|
|
{0, 136, 13405, 831119, 6827796,},
|
|
{0, 132, 10367, 861740, 9849312,},
|
|
{0, 55, 8811, 772043, 18687492,},
|
|
{0, 47, 8633, 762062, 19650744,},
|
|
{0, 40, 8204, 717461, 22138956,},
|
|
{0, 40, 7232, 643295, 26068644,},
|
|
{0, 36, 6082, 562587, 30651156,},
|
|
};
|
|
|
|
static long ya25[20][RBG_NPROBS] = {
|
|
{3, 1079, 3916, 288, 0,},
|
|
{2, 887, 11834, 10728, 0,},
|
|
{2, 476, 25507, 51044, 4032,},
|
|
{2, 402, 27073, 90180, 18144,},
|
|
{0, 318, 34810, 14312, 576,},
|
|
{0, 232, 34908, 121056, 43200,},
|
|
{0, 200, 34336, 181552, 99648,},
|
|
{0, 200, 26978, 434919, 514404,},
|
|
{0, 176, 26107, 485813, 930780,},
|
|
{0, 147, 23378, 600873, 1678428,},
|
|
{0, 221, 35079, 128568, 64368,},
|
|
{0, 182, 29423, 372592, 429264,},
|
|
{0, 148, 27194, 487861, 754668,},
|
|
{0, 176, 17571, 762085, 2047644,},
|
|
{0, 139, 17798, 786039, 2617380,},
|
|
{0, 132, 14067, 884661, 4228956,},
|
|
{0, 152, 9103, 939942, 7739064,},
|
|
{0, 113, 10135, 926300, 8712288,},
|
|
{0, 100, 9481, 906351, 10884564,},
|
|
{0, 100, 6941, 887101, 14869404,},
|
|
};
|
|
|
|
static long ya26[20][RBG_NPROBS] = {
|
|
{3, 985, 7264, 1584, 0,},
|
|
{2, 595, 21997, 23276, 576,},
|
|
{2, 395, 27547, 82204, 17568,},
|
|
{2, 340, 27770, 144132, 65232,},
|
|
{0, 269, 33277, 131568, 52272,},
|
|
{0, 226, 30426, 285363, 216756,},
|
|
{0, 195, 28399, 389959, 524628,},
|
|
{0, 196, 23900, 538799, 950436,},
|
|
{0, 173, 22617, 594924, 1665792,},
|
|
{0, 146, 19382, 710497, 2957436,},
|
|
{0, 159, 19533, 759847, 378612,},
|
|
{0, 133, 18457, 807913, 1255788,},
|
|
{0, 107, 17761, 834132, 2426976,},
|
|
{0, 133, 14018, 894693, 3884652,},
|
|
{0, 105, 14160, 885933, 5322348,},
|
|
{0, 100, 11603, 903632, 8232336,},
|
|
{0, 120, 9386, 919460, 9602640,},
|
|
{0, 92, 9959, 897073, 10972332,},
|
|
{0, 88, 9081, 845101, 14167836,},
|
|
{0, 88, 6944, 797786, 18640728,},
|
|
};
|
|
|
|
static long ya27[15][RBG_NPROBS] = {
|
|
{2, 850, 13146, 11448, 0,},
|
|
{0, 310, 34855, 23044, 1152,},
|
|
{0, 296, 34455, 55420, 7200,},
|
|
{0, 232, 33661, 164996, 77472,},
|
|
{0, 200, 32377, 248703, 221076,},
|
|
{0, 209, 35429, 131512, 64656,},
|
|
{0, 208, 34703, 158780, 70560,},
|
|
{0, 182, 29012, 387017, 442620,},
|
|
{0, 147, 26918, 497879, 798372,},
|
|
{0, 207, 29618, 341130, 142776,},
|
|
{0, 181, 25868, 495979, 641268,},
|
|
{0, 146, 24254, 583029, 1232172,},
|
|
{0, 180, 16617, 776622, 2574072,},
|
|
{0, 142, 16946, 792561, 3346812,},
|
|
{0, 136, 13415, 872781, 5315004,},
|
|
};
|
|
|
|
static long ya28[20][RBG_NPROBS] = {
|
|
{3, 876, 11070, 5832, 0,},
|
|
{2, 355, 29081, 78820, 17568,},
|
|
{2, 312, 28766, 144712, 59904,},
|
|
{2, 268, 28254, 217343, 161604,},
|
|
{0, 227, 24896, 477159, 432324,},
|
|
{0, 209, 23554, 535275, 919188,},
|
|
{0, 185, 22006, 601857, 1648188,},
|
|
{0, 194, 19630, 671532, 1799280,},
|
|
{0, 172, 18904, 699721, 2751804,},
|
|
{0, 145, 16482, 774441, 4460508,},
|
|
{0, 100, 12078, 980097, 4863996,},
|
|
{0, 87, 12104, 965251, 5971284,},
|
|
{0, 71, 11891, 942537, 7811532,},
|
|
{0, 87, 11301, 910749, 8974044,},
|
|
{0, 70, 11128, 900933, 10344780,},
|
|
{0, 64, 10008, 845763, 14062356,},
|
|
{0, 87, 9602, 858987, 13039380,},
|
|
{0, 70, 9669, 843115, 14317092,},
|
|
{0, 64, 8948, 788345, 17503164,},
|
|
{0, 64, 7347, 721049, 22000716,},
|
|
};
|
|
|
|
static long ya29[15][RBG_NPROBS] = {
|
|
{2, 711, 17893, 20684, 576,},
|
|
{0, 277, 35301, 49644, 5184,},
|
|
{0, 250, 32889, 169600, 72432,},
|
|
{0, 216, 31766, 251079, 180900,},
|
|
{0, 191, 29823, 346777, 420300,},
|
|
{0, 196, 34817, 169610, 92808,},
|
|
{0, 195, 28619, 387703, 320724,},
|
|
{0, 180, 26178, 483327, 741636,},
|
|
{0, 147, 24325, 575456, 1366128,},
|
|
{0, 185, 17665, 769685, 1232316,},
|
|
{0, 172, 17499, 767034, 2149416,},
|
|
{0, 137, 17091, 792659, 3388644,},
|
|
{0, 172, 14184, 836845, 3932460,},
|
|
{0, 137, 14526, 834307, 5213556,},
|
|
{0, 132, 11813, 863857, 7899084,},
|
|
};
|
|
|
|
static long ya30[15][RBG_NPROBS] = {
|
|
{2, 537, 23595, 40820, 4032,},
|
|
{0, 260, 32786, 160172, 78768,},
|
|
{0, 239, 29984, 285233, 187740,},
|
|
{0, 215, 28156, 375495, 427140,},
|
|
{0, 191, 26442, 456345, 857628,},
|
|
{0, 147, 19675, 767435, 481284,},
|
|
{0, 147, 18377, 798257, 1053900,},
|
|
{0, 133, 17615, 821824, 1846224,},
|
|
{0, 106, 17096, 842747, 3025332,},
|
|
{0, 141, 15264, 885864, 2214432,},
|
|
{0, 128, 15090, 876847, 3371076,},
|
|
{0, 101, 14852, 877549, 4913964,},
|
|
{0, 128, 12865, 889903, 5784660,},
|
|
{0, 100, 13053, 881311, 7156692,},
|
|
{0, 96, 11075, 873594, 10184616,},
|
|
};
|
|
|
|
static long ya31[6][RBG_NPROBS] = {
|
|
{0, 278, 34449, 78676, 17568,},
|
|
{0, 196, 34220, 190904, 99936,},
|
|
{0, 195, 29493, 359469, 204444,},
|
|
{0, 195, 25955, 480507, 432324,},
|
|
{0, 180, 24042, 554123, 961236,},
|
|
{0, 146, 22638, 628265, 1698012,},
|
|
};
|
|
|
|
typedef long T[RBG_NPROBS];
|
|
|
|
static T *y[] = {
|
|
ya1, ya2, ya3, ya4, ya5, ya6, ya7, ya8, ya9, ya10, ya11, ya12, ya13, ya14, ya15, ya16,
|
|
ya17, ya18, ya19, ya20, ya21, ya22, ya23, ya24, ya25, ya26, ya27, ya28, ya29, ya30, ya31
|
|
};
|
|
|
|
extern long *
|
|
getRaceBGprobs(const unsigned int board[6])
|
|
{
|
|
unsigned int tot = 0;
|
|
int i;
|
|
unsigned int group = 0;
|
|
g_assert(board[5] == 0);
|
|
|
|
for (i = 4; i >= 0; --i) {
|
|
if (board[i])
|
|
group += (0x1u << i);
|
|
tot += board[i];
|
|
}
|
|
|
|
g_assert(group < 32);
|
|
|
|
if (tot > 6)
|
|
return 0;
|
|
|
|
{
|
|
unsigned int grpSize = 0;
|
|
unsigned int b1[6] = { 0 };
|
|
unsigned int k;
|
|
|
|
for (k = 0; k < 5; ++k) {
|
|
if ((group & (0x1u << k))) {
|
|
g_assert(board[k] > 0);
|
|
b1[grpSize] = board[k] - 1;
|
|
++grpSize;
|
|
}
|
|
}
|
|
|
|
return y[group - 1][PositionIndex(grpSize, b1)];
|
|
}
|
|
}
|