-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrandom_chess.py
333 lines (306 loc) · 80.7 KB
/
random_chess.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
try:
import Tkinter as tk
from Tkinter import *
except:
import tkinter as tk
from tkinter import *
from math import atan2
from copy import deepcopy
import pygame
import time
import state_moves
import random
pygame.init()
MOVES={'p7': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []], 'b1': [[[9, 18, 27, 36, 45, 54, 63]], [[8], [10, 19, 28, 37, 46, 55]], [[9, 16], [11, 20, 29, 38, 47]], [[10, 17, 24], [12, 21, 30, 39]], [[11, 18, 25, 32], [13, 22, 31]], [[12, 19, 26, 33, 40], [14, 23]], [[13, 20, 27, 34, 41, 48], [15]], [[14, 21, 28, 35, 42, 49, 56]], [[1], [17, 26, 35, 44, 53, 62]], [[2], [0], [16], [18, 27, 36, 45, 54, 63]], [[3], [1], [17, 24], [19, 28, 37, 46, 55]], [[4], [2], [18, 25, 32], [20, 29, 38, 47]], [[5], [3], [19, 26, 33, 40], [21, 30, 39]], [[6], [4], [20, 27, 34, 41, 48], [22, 31]], [[7], [5], [21, 28, 35, 42, 49, 56], [23]], [[6], [22, 29, 36, 43, 50, 57]], [[9, 2], [25, 34, 43, 52, 61]], [[10, 3], [8], [24], [26, 35, 44, 53, 62]], [[11, 4], [9, 0], [25, 32], [27, 36, 45, 54, 63]], [[12, 5], [10, 1], [26, 33, 40], [28, 37, 46, 55]], [[13, 6], [11, 2], [27, 34, 41, 48], [29, 38, 47]], [[14, 7], [12, 3], [28, 35, 42, 49, 56], [30, 39]], [[15], [13, 4], [29, 36, 43, 50, 57], [31]], [[14, 5], [30, 37, 44, 51, 58]], [[17, 10, 3], [33, 42, 51, 60]], [[18, 11, 4], [16], [32], [34, 43, 52, 61]], [[19, 12, 5], [17, 8], [33, 40], [35, 44, 53, 62]], [[20, 13, 6], [18, 9, 0], [34, 41, 48], [36, 45, 54, 63]], [[21, 14, 7], [19, 10, 1], [35, 42, 49, 56], [37, 46, 55]], [[22, 15], [20, 11, 2], [36, 43, 50, 57], [38, 47]], [[23], [21, 12, 3], [37, 44, 51, 58], [39]], [[22, 13, 4], [38, 45, 52, 59]], [[25, 18, 11, 4], [41, 50, 59]], [[26, 19, 12, 5], [24], [40], [42, 51, 60]], [[27, 20, 13, 6], [25, 16], [41, 48], [43, 52, 61]], [[28, 21, 14, 7], [26, 17, 8], [42, 49, 56], [44, 53, 62]], [[29, 22, 15], [27, 18, 9, 0], [43, 50, 57], [45, 54, 63]], [[30, 23], [28, 19, 10, 1], [44, 51, 58], [46, 55]], [[31], [29, 20, 11, 2], [45, 52, 59], [47]], [[30, 21, 12, 3], [46, 53, 60]], [[33, 26, 19, 12, 5], [49, 58]], [[34, 27, 20, 13, 6], [32], [48], [50, 59]], [[35, 28, 21, 14, 7], [33, 24], [49, 56], [51, 60]], [[36, 29, 22, 15], [34, 25, 16], [50, 57], [52, 61]], [[37, 30, 23], [35, 26, 17, 8], [51, 58], [53, 62]], [[38, 31], [36, 27, 18, 9, 0], [52, 59], [54, 63]], [[39], [37, 28, 19, 10, 1], [53, 60], [55]], [[38, 29, 20, 11, 2], [54, 61]], [[41, 34, 27, 20, 13, 6], [57]], [[42, 35, 28, 21, 14, 7], [40], [56], [58]], [[43, 36, 29, 22, 15], [41, 32], [57], [59]], [[44, 37, 30, 23], [42, 33, 24], [58], [60]], [[45, 38, 31], [43, 34, 25, 16], [59], [61]], [[46, 39], [44, 35, 26, 17, 8], [60], [62]], [[47], [45, 36, 27, 18, 9, 0], [61], [63]], [[46, 37, 28, 19, 10, 1], [62]], [[49, 42, 35, 28, 21, 14, 7]], [[50, 43, 36, 29, 22, 15], [48]], [[51, 44, 37, 30, 23], [49, 40]], [[52, 45, 38, 31], [50, 41, 32]], [[53, 46, 39], [51, 42, 33, 24]], [[54, 47], [52, 43, 34, 25, 16]], [[55], [53, 44, 35, 26, 17, 8]], [[54, 45, 36, 27, 18, 9, 0]]], 'b2': [[[9, 18, 27, 36, 45, 54, 63]], [[8], [10, 19, 28, 37, 46, 55]], [[9, 16], [11, 20, 29, 38, 47]], [[10, 17, 24], [12, 21, 30, 39]], [[11, 18, 25, 32], [13, 22, 31]], [[12, 19, 26, 33, 40], [14, 23]], [[13, 20, 27, 34, 41, 48], [15]], [[14, 21, 28, 35, 42, 49, 56]], [[1], [17, 26, 35, 44, 53, 62]], [[2], [0], [16], [18, 27, 36, 45, 54, 63]], [[3], [1], [17, 24], [19, 28, 37, 46, 55]], [[4], [2], [18, 25, 32], [20, 29, 38, 47]], [[5], [3], [19, 26, 33, 40], [21, 30, 39]], [[6], [4], [20, 27, 34, 41, 48], [22, 31]], [[7], [5], [21, 28, 35, 42, 49, 56], [23]], [[6], [22, 29, 36, 43, 50, 57]], [[9, 2], [25, 34, 43, 52, 61]], [[10, 3], [8], [24], [26, 35, 44, 53, 62]], [[11, 4], [9, 0], [25, 32], [27, 36, 45, 54, 63]], [[12, 5], [10, 1], [26, 33, 40], [28, 37, 46, 55]], [[13, 6], [11, 2], [27, 34, 41, 48], [29, 38, 47]], [[14, 7], [12, 3], [28, 35, 42, 49, 56], [30, 39]], [[15], [13, 4], [29, 36, 43, 50, 57], [31]], [[14, 5], [30, 37, 44, 51, 58]], [[17, 10, 3], [33, 42, 51, 60]], [[18, 11, 4], [16], [32], [34, 43, 52, 61]], [[19, 12, 5], [17, 8], [33, 40], [35, 44, 53, 62]], [[20, 13, 6], [18, 9, 0], [34, 41, 48], [36, 45, 54, 63]], [[21, 14, 7], [19, 10, 1], [35, 42, 49, 56], [37, 46, 55]], [[22, 15], [20, 11, 2], [36, 43, 50, 57], [38, 47]], [[23], [21, 12, 3], [37, 44, 51, 58], [39]], [[22, 13, 4], [38, 45, 52, 59]], [[25, 18, 11, 4], [41, 50, 59]], [[26, 19, 12, 5], [24], [40], [42, 51, 60]], [[27, 20, 13, 6], [25, 16], [41, 48], [43, 52, 61]], [[28, 21, 14, 7], [26, 17, 8], [42, 49, 56], [44, 53, 62]], [[29, 22, 15], [27, 18, 9, 0], [43, 50, 57], [45, 54, 63]], [[30, 23], [28, 19, 10, 1], [44, 51, 58], [46, 55]], [[31], [29, 20, 11, 2], [45, 52, 59], [47]], [[30, 21, 12, 3], [46, 53, 60]], [[33, 26, 19, 12, 5], [49, 58]], [[34, 27, 20, 13, 6], [32], [48], [50, 59]], [[35, 28, 21, 14, 7], [33, 24], [49, 56], [51, 60]], [[36, 29, 22, 15], [34, 25, 16], [50, 57], [52, 61]], [[37, 30, 23], [35, 26, 17, 8], [51, 58], [53, 62]], [[38, 31], [36, 27, 18, 9, 0], [52, 59], [54, 63]], [[39], [37, 28, 19, 10, 1], [53, 60], [55]], [[38, 29, 20, 11, 2], [54, 61]], [[41, 34, 27, 20, 13, 6], [57]], [[42, 35, 28, 21, 14, 7], [40], [56], [58]], [[43, 36, 29, 22, 15], [41, 32], [57], [59]], [[44, 37, 30, 23], [42, 33, 24], [58], [60]], [[45, 38, 31], [43, 34, 25, 16], [59], [61]], [[46, 39], [44, 35, 26, 17, 8], [60], [62]], [[47], [45, 36, 27, 18, 9, 0], [61], [63]], [[46, 37, 28, 19, 10, 1], [62]], [[49, 42, 35, 28, 21, 14, 7]], [[50, 43, 36, 29, 22, 15], [48]], [[51, 44, 37, 30, 23], [49, 40]], [[52, 45, 38, 31], [50, 41, 32]], [[53, 46, 39], [51, 42, 33, 24]], [[54, 47], [52, 43, 34, 25, 16]], [[55], [53, 44, 35, 26, 17, 8]], [[54, 45, 36, 27, 18, 9, 0]]], 'R1': [[[1, 2, 3, 4, 5, 6, 7], [8, 16, 24, 32, 40, 48, 56]], [[2, 3, 4, 5, 6, 7], [0], [9, 17, 25, 33, 41, 49, 57]], [[3, 4, 5, 6, 7], [1, 0], [10, 18, 26, 34, 42, 50, 58]], [[4, 5, 6, 7], [2, 1, 0], [11, 19, 27, 35, 43, 51, 59]], [[5, 6, 7], [3, 2, 1, 0], [12, 20, 28, 36, 44, 52, 60]], [[6, 7], [4, 3, 2, 1, 0], [13, 21, 29, 37, 45, 53, 61]], [[7], [5, 4, 3, 2, 1, 0], [14, 22, 30, 38, 46, 54, 62]], [[6, 5, 4, 3, 2, 1, 0], [15, 23, 31, 39, 47, 55, 63]], [[9, 10, 11, 12, 13, 14, 15], [0], [16, 24, 32, 40, 48, 56]], [[10, 11, 12, 13, 14, 15], [1], [8], [17, 25, 33, 41, 49, 57]], [[11, 12, 13, 14, 15], [2], [9, 8], [18, 26, 34, 42, 50, 58]], [[12, 13, 14, 15], [3], [10, 9, 8], [19, 27, 35, 43, 51, 59]], [[13, 14, 15], [4], [11, 10, 9, 8], [20, 28, 36, 44, 52, 60]], [[14, 15], [5], [12, 11, 10, 9, 8], [21, 29, 37, 45, 53, 61]], [[15], [6], [13, 12, 11, 10, 9, 8], [22, 30, 38, 46, 54, 62]], [[7], [14, 13, 12, 11, 10, 9, 8], [23, 31, 39, 47, 55, 63]], [[17, 18, 19, 20, 21, 22, 23], [8, 0], [24, 32, 40, 48, 56]], [[18, 19, 20, 21, 22, 23], [9, 1], [16], [25, 33, 41, 49, 57]], [[19, 20, 21, 22, 23], [10, 2], [17, 16], [26, 34, 42, 50, 58]], [[20, 21, 22, 23], [11, 3], [18, 17, 16], [27, 35, 43, 51, 59]], [[21, 22, 23], [12, 4], [19, 18, 17, 16], [28, 36, 44, 52, 60]], [[22, 23], [13, 5], [20, 19, 18, 17, 16], [29, 37, 45, 53, 61]], [[23], [14, 6], [21, 20, 19, 18, 17, 16], [30, 38, 46, 54, 62]], [[15, 7], [22, 21, 20, 19, 18, 17, 16], [31, 39, 47, 55, 63]], [[25, 26, 27, 28, 29, 30, 31], [16, 8, 0], [32, 40, 48, 56]], [[26, 27, 28, 29, 30, 31], [17, 9, 1], [24], [33, 41, 49, 57]], [[27, 28, 29, 30, 31], [18, 10, 2], [25, 24], [34, 42, 50, 58]], [[28, 29, 30, 31], [19, 11, 3], [26, 25, 24], [35, 43, 51, 59]], [[29, 30, 31], [20, 12, 4], [27, 26, 25, 24], [36, 44, 52, 60]], [[30, 31], [21, 13, 5], [28, 27, 26, 25, 24], [37, 45, 53, 61]], [[31], [22, 14, 6], [29, 28, 27, 26, 25, 24], [38, 46, 54, 62]], [[23, 15, 7], [30, 29, 28, 27, 26, 25, 24], [39, 47, 55, 63]], [[33, 34, 35, 36, 37, 38, 39], [24, 16, 8, 0], [40, 48, 56]], [[34, 35, 36, 37, 38, 39], [25, 17, 9, 1], [32], [41, 49, 57]], [[35, 36, 37, 38, 39], [26, 18, 10, 2], [33, 32], [42, 50, 58]], [[36, 37, 38, 39], [27, 19, 11, 3], [34, 33, 32], [43, 51, 59]], [[37, 38, 39], [28, 20, 12, 4], [35, 34, 33, 32], [44, 52, 60]], [[38, 39], [29, 21, 13, 5], [36, 35, 34, 33, 32], [45, 53, 61]], [[39], [30, 22, 14, 6], [37, 36, 35, 34, 33, 32], [46, 54, 62]], [[31, 23, 15, 7], [38, 37, 36, 35, 34, 33, 32], [47, 55, 63]], [[41, 42, 43, 44, 45, 46, 47], [32, 24, 16, 8, 0], [48, 56]], [[42, 43, 44, 45, 46, 47], [33, 25, 17, 9, 1], [40], [49, 57]], [[43, 44, 45, 46, 47], [34, 26, 18, 10, 2], [41, 40], [50, 58]], [[44, 45, 46, 47], [35, 27, 19, 11, 3], [42, 41, 40], [51, 59]], [[45, 46, 47], [36, 28, 20, 12, 4], [43, 42, 41, 40], [52, 60]], [[46, 47], [37, 29, 21, 13, 5], [44, 43, 42, 41, 40], [53, 61]], [[47], [38, 30, 22, 14, 6], [45, 44, 43, 42, 41, 40], [54, 62]], [[39, 31, 23, 15, 7], [46, 45, 44, 43, 42, 41, 40], [55, 63]], [[49, 50, 51, 52, 53, 54, 55], [40, 32, 24, 16, 8, 0], [56]], [[50, 51, 52, 53, 54, 55], [41, 33, 25, 17, 9, 1], [48], [57]], [[51, 52, 53, 54, 55], [42, 34, 26, 18, 10, 2], [49, 48], [58]], [[52, 53, 54, 55], [43, 35, 27, 19, 11, 3], [50, 49, 48], [59]], [[53, 54, 55], [44, 36, 28, 20, 12, 4], [51, 50, 49, 48], [60]], [[54, 55], [45, 37, 29, 21, 13, 5], [52, 51, 50, 49, 48], [61]], [[55], [46, 38, 30, 22, 14, 6], [53, 52, 51, 50, 49, 48], [62]], [[47, 39, 31, 23, 15, 7], [54, 53, 52, 51, 50, 49, 48], [63]], [[57, 58, 59, 60, 61, 62, 63], [48, 40, 32, 24, 16, 8, 0]], [[58, 59, 60, 61, 62, 63], [49, 41, 33, 25, 17, 9, 1], [56]], [[59, 60, 61, 62, 63], [50, 42, 34, 26, 18, 10, 2], [57, 56]], [[60, 61, 62, 63], [51, 43, 35, 27, 19, 11, 3], [58, 57, 56]], [[61, 62, 63], [52, 44, 36, 28, 20, 12, 4], [59, 58, 57, 56]], [[62, 63], [53, 45, 37, 29, 21, 13, 5], [60, 59, 58, 57, 56]], [[63], [54, 46, 38, 30, 22, 14, 6], [61, 60, 59, 58, 57, 56]], [[55, 47, 39, 31, 23, 15, 7], [62, 61, 60, 59, 58, 57, 56]]], 'R2': [[[1, 2, 3, 4, 5, 6, 7], [8, 16, 24, 32, 40, 48, 56]], [[2, 3, 4, 5, 6, 7], [0], [9, 17, 25, 33, 41, 49, 57]], [[3, 4, 5, 6, 7], [1, 0], [10, 18, 26, 34, 42, 50, 58]], [[4, 5, 6, 7], [2, 1, 0], [11, 19, 27, 35, 43, 51, 59]], [[5, 6, 7], [3, 2, 1, 0], [12, 20, 28, 36, 44, 52, 60]], [[6, 7], [4, 3, 2, 1, 0], [13, 21, 29, 37, 45, 53, 61]], [[7], [5, 4, 3, 2, 1, 0], [14, 22, 30, 38, 46, 54, 62]], [[6, 5, 4, 3, 2, 1, 0], [15, 23, 31, 39, 47, 55, 63]], [[9, 10, 11, 12, 13, 14, 15], [0], [16, 24, 32, 40, 48, 56]], [[10, 11, 12, 13, 14, 15], [1], [8], [17, 25, 33, 41, 49, 57]], [[11, 12, 13, 14, 15], [2], [9, 8], [18, 26, 34, 42, 50, 58]], [[12, 13, 14, 15], [3], [10, 9, 8], [19, 27, 35, 43, 51, 59]], [[13, 14, 15], [4], [11, 10, 9, 8], [20, 28, 36, 44, 52, 60]], [[14, 15], [5], [12, 11, 10, 9, 8], [21, 29, 37, 45, 53, 61]], [[15], [6], [13, 12, 11, 10, 9, 8], [22, 30, 38, 46, 54, 62]], [[7], [14, 13, 12, 11, 10, 9, 8], [23, 31, 39, 47, 55, 63]], [[17, 18, 19, 20, 21, 22, 23], [8, 0], [24, 32, 40, 48, 56]], [[18, 19, 20, 21, 22, 23], [9, 1], [16], [25, 33, 41, 49, 57]], [[19, 20, 21, 22, 23], [10, 2], [17, 16], [26, 34, 42, 50, 58]], [[20, 21, 22, 23], [11, 3], [18, 17, 16], [27, 35, 43, 51, 59]], [[21, 22, 23], [12, 4], [19, 18, 17, 16], [28, 36, 44, 52, 60]], [[22, 23], [13, 5], [20, 19, 18, 17, 16], [29, 37, 45, 53, 61]], [[23], [14, 6], [21, 20, 19, 18, 17, 16], [30, 38, 46, 54, 62]], [[15, 7], [22, 21, 20, 19, 18, 17, 16], [31, 39, 47, 55, 63]], [[25, 26, 27, 28, 29, 30, 31], [16, 8, 0], [32, 40, 48, 56]], [[26, 27, 28, 29, 30, 31], [17, 9, 1], [24], [33, 41, 49, 57]], [[27, 28, 29, 30, 31], [18, 10, 2], [25, 24], [34, 42, 50, 58]], [[28, 29, 30, 31], [19, 11, 3], [26, 25, 24], [35, 43, 51, 59]], [[29, 30, 31], [20, 12, 4], [27, 26, 25, 24], [36, 44, 52, 60]], [[30, 31], [21, 13, 5], [28, 27, 26, 25, 24], [37, 45, 53, 61]], [[31], [22, 14, 6], [29, 28, 27, 26, 25, 24], [38, 46, 54, 62]], [[23, 15, 7], [30, 29, 28, 27, 26, 25, 24], [39, 47, 55, 63]], [[33, 34, 35, 36, 37, 38, 39], [24, 16, 8, 0], [40, 48, 56]], [[34, 35, 36, 37, 38, 39], [25, 17, 9, 1], [32], [41, 49, 57]], [[35, 36, 37, 38, 39], [26, 18, 10, 2], [33, 32], [42, 50, 58]], [[36, 37, 38, 39], [27, 19, 11, 3], [34, 33, 32], [43, 51, 59]], [[37, 38, 39], [28, 20, 12, 4], [35, 34, 33, 32], [44, 52, 60]], [[38, 39], [29, 21, 13, 5], [36, 35, 34, 33, 32], [45, 53, 61]], [[39], [30, 22, 14, 6], [37, 36, 35, 34, 33, 32], [46, 54, 62]], [[31, 23, 15, 7], [38, 37, 36, 35, 34, 33, 32], [47, 55, 63]], [[41, 42, 43, 44, 45, 46, 47], [32, 24, 16, 8, 0], [48, 56]], [[42, 43, 44, 45, 46, 47], [33, 25, 17, 9, 1], [40], [49, 57]], [[43, 44, 45, 46, 47], [34, 26, 18, 10, 2], [41, 40], [50, 58]], [[44, 45, 46, 47], [35, 27, 19, 11, 3], [42, 41, 40], [51, 59]], [[45, 46, 47], [36, 28, 20, 12, 4], [43, 42, 41, 40], [52, 60]], [[46, 47], [37, 29, 21, 13, 5], [44, 43, 42, 41, 40], [53, 61]], [[47], [38, 30, 22, 14, 6], [45, 44, 43, 42, 41, 40], [54, 62]], [[39, 31, 23, 15, 7], [46, 45, 44, 43, 42, 41, 40], [55, 63]], [[49, 50, 51, 52, 53, 54, 55], [40, 32, 24, 16, 8, 0], [56]], [[50, 51, 52, 53, 54, 55], [41, 33, 25, 17, 9, 1], [48], [57]], [[51, 52, 53, 54, 55], [42, 34, 26, 18, 10, 2], [49, 48], [58]], [[52, 53, 54, 55], [43, 35, 27, 19, 11, 3], [50, 49, 48], [59]], [[53, 54, 55], [44, 36, 28, 20, 12, 4], [51, 50, 49, 48], [60]], [[54, 55], [45, 37, 29, 21, 13, 5], [52, 51, 50, 49, 48], [61]], [[55], [46, 38, 30, 22, 14, 6], [53, 52, 51, 50, 49, 48], [62]], [[47, 39, 31, 23, 15, 7], [54, 53, 52, 51, 50, 49, 48], [63]], [[57, 58, 59, 60, 61, 62, 63], [48, 40, 32, 24, 16, 8, 0]], [[58, 59, 60, 61, 62, 63], [49, 41, 33, 25, 17, 9, 1], [56]], [[59, 60, 61, 62, 63], [50, 42, 34, 26, 18, 10, 2], [57, 56]], [[60, 61, 62, 63], [51, 43, 35, 27, 19, 11, 3], [58, 57, 56]], [[61, 62, 63], [52, 44, 36, 28, 20, 12, 4], [59, 58, 57, 56]], [[62, 63], [53, 45, 37, 29, 21, 13, 5], [60, 59, 58, 57, 56]], [[63], [54, 46, 38, 30, 22, 14, 6], [61, 60, 59, 58, 57, 56]], [[55, 47, 39, 31, 23, 15, 7], [62, 61, 60, 59, 58, 57, 56]]], 'K': [[[1], [8], [9]], [[2], [0], [8], [9], [10]], [[3], [1], [9], [10], [11]], [[4], [2], [10], [11], [12]], [[5], [3], [11], [12], [13]], [[6], [4], [12], [13], [14]], [[7], [5], [13], [14], [15]], [[6], [14], [15]], [[9], [1], [0], [16], [17]], [[10], [2], [1], [0], [8], [16], [17], [18]], [[11], [3], [2], [1], [9], [17], [18], [19]], [[12], [4], [3], [2], [10], [18], [19], [20]], [[13], [5], [4], [3], [11], [19], [20], [21]], [[14], [6], [5], [4], [12], [20], [21], [22]], [[15], [7], [6], [5], [13], [21], [22], [23]], [[7], [6], [14], [22], [23]], [[17], [9], [8], [24], [25]], [[18], [10], [9], [8], [16], [24], [25], [26]], [[19], [11], [10], [9], [17], [25], [26], [27]], [[20], [12], [11], [10], [18], [26], [27], [28]], [[21], [13], [12], [11], [19], [27], [28], [29]], [[22], [14], [13], [12], [20], [28], [29], [30]], [[23], [15], [14], [13], [21], [29], [30], [31]], [[15], [14], [22], [30], [31]], [[25], [17], [16], [32], [33]], [[26], [18], [17], [16], [24], [32], [33], [34]], [[27], [19], [18], [17], [25], [33], [34], [35]], [[28], [20], [19], [18], [26], [34], [35], [36]], [[29], [21], [20], [19], [27], [35], [36], [37]], [[30], [22], [21], [20], [28], [36], [37], [38]], [[31], [23], [22], [21], [29], [37], [38], [39]], [[23], [22], [30], [38], [39]], [[33], [25], [24], [40], [41]], [[34], [26], [25], [24], [32], [40], [41], [42]], [[35], [27], [26], [25], [33], [41], [42], [43]], [[36], [28], [27], [26], [34], [42], [43], [44]], [[37], [29], [28], [27], [35], [43], [44], [45]], [[38], [30], [29], [28], [36], [44], [45], [46]], [[39], [31], [30], [29], [37], [45], [46], [47]], [[31], [30], [38], [46], [47]], [[41], [33], [32], [48], [49]], [[42], [34], [33], [32], [40], [48], [49], [50]], [[43], [35], [34], [33], [41], [49], [50], [51]], [[44], [36], [35], [34], [42], [50], [51], [52]], [[45], [37], [36], [35], [43], [51], [52], [53]], [[46], [38], [37], [36], [44], [52], [53], [54]], [[47], [39], [38], [37], [45], [53], [54], [55]], [[39], [38], [46], [54], [55]], [[49], [41], [40], [56], [57]], [[50], [42], [41], [40], [48], [56], [57], [58]], [[51], [43], [42], [41], [49], [57], [58], [59]], [[52], [44], [43], [42], [50], [58], [59], [60]], [[53], [45], [44], [43], [51], [59], [60], [61]], [[54], [46], [45], [44], [52], [60], [61], [62]], [[55], [47], [46], [45], [53], [61], [62], [63]], [[47], [46], [54], [62], [63]], [[57], [49], [48]], [[58], [50], [49], [48], [56]], [[59], [51], [50], [49], [57]], [[60], [52], [51], [50], [58]], [[61, 62], [53], [52], [51], [59, 58]], [[62], [54], [53], [52], [60]], [[63], [55], [54], [53], [61]], [[55], [54], [62]]], 'P2': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'P3': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'P1': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'P6': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'P7': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'P4': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'P5': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'P8': [[], [], [], [], [], [], [], [], [[1], [0]], [[2], [1], [0]], [[3], [2], [1]], [[4], [3], [2]], [[5], [4], [3]], [[6], [5], [4]], [[7], [6], [5]], [[7], [6]], [[9], [8]], [[10], [9], [8]], [[11], [10], [9]], [[12], [11], [10]], [[13], [12], [11]], [[14], [13], [12]], [[15], [14], [13]], [[15], [14]], [[17], [16]], [[18], [17], [16]], [[19], [18], [17]], [[20], [19], [18]], [[21], [20], [19]], [[22], [21], [20]], [[23], [22], [21]], [[23], [22]], [[25], [24]], [[26], [25], [24]], [[27], [26], [25]], [[28], [27], [26]], [[29], [28], [27]], [[30], [29], [28]], [[31], [30], [29]], [[31], [30]], [[33], [32]], [[34], [33], [32]], [[35], [34], [33]], [[36], [35], [34]], [[37], [36], [35]], [[38], [37], [36]], [[39], [38], [37]], [[39], [38]], [[41], [40, 32]], [[42], [41, 33], [40]], [[43], [42, 34], [41]], [[44], [43, 35], [42]], [[45], [44, 36], [43]], [[46], [45, 37], [44]], [[47], [46, 38], [45]], [[47, 39], [46]], [], [], [], [], [], [], [], []], 'Q': [[[1, 2, 3, 4, 5, 6, 7], [8, 16, 24, 32, 40, 48, 56], [9, 18, 27, 36, 45, 54, 63]], [[2, 3, 4, 5, 6, 7], [0], [8], [9, 17, 25, 33, 41, 49, 57], [10, 19, 28, 37, 46, 55]], [[3, 4, 5, 6, 7], [1, 0], [9, 16], [10, 18, 26, 34, 42, 50, 58], [11, 20, 29, 38, 47]], [[4, 5, 6, 7], [2, 1, 0], [10, 17, 24], [11, 19, 27, 35, 43, 51, 59], [12, 21, 30, 39]], [[5, 6, 7], [3, 2, 1, 0], [11, 18, 25, 32], [12, 20, 28, 36, 44, 52, 60], [13, 22, 31]], [[6, 7], [4, 3, 2, 1, 0], [12, 19, 26, 33, 40], [13, 21, 29, 37, 45, 53, 61], [14, 23]], [[7], [5, 4, 3, 2, 1, 0], [13, 20, 27, 34, 41, 48], [14, 22, 30, 38, 46, 54, 62], [15]], [[6, 5, 4, 3, 2, 1, 0], [14, 21, 28, 35, 42, 49, 56], [15, 23, 31, 39, 47, 55, 63]], [[9, 10, 11, 12, 13, 14, 15], [1], [0], [16, 24, 32, 40, 48, 56], [17, 26, 35, 44, 53, 62]], [[10, 11, 12, 13, 14, 15], [2], [1], [0], [8], [16], [17, 25, 33, 41, 49, 57], [18, 27, 36, 45, 54, 63]], [[11, 12, 13, 14, 15], [3], [2], [1], [9, 8], [17, 24], [18, 26, 34, 42, 50, 58], [19, 28, 37, 46, 55]], [[12, 13, 14, 15], [4], [3], [2], [10, 9, 8], [18, 25, 32], [19, 27, 35, 43, 51, 59], [20, 29, 38, 47]], [[13, 14, 15], [5], [4], [3], [11, 10, 9, 8], [19, 26, 33, 40], [20, 28, 36, 44, 52, 60], [21, 30, 39]], [[14, 15], [6], [5], [4], [12, 11, 10, 9, 8], [20, 27, 34, 41, 48], [21, 29, 37, 45, 53, 61], [22, 31]], [[15], [7], [6], [5], [13, 12, 11, 10, 9, 8], [21, 28, 35, 42, 49, 56], [22, 30, 38, 46, 54, 62], [23]], [[7], [6], [14, 13, 12, 11, 10, 9, 8], [22, 29, 36, 43, 50, 57], [23, 31, 39, 47, 55, 63]], [[17, 18, 19, 20, 21, 22, 23], [9, 2], [8, 0], [24, 32, 40, 48, 56], [25, 34, 43, 52, 61]], [[18, 19, 20, 21, 22, 23], [10, 3], [9, 1], [8], [16], [24], [25, 33, 41, 49, 57], [26, 35, 44, 53, 62]], [[19, 20, 21, 22, 23], [11, 4], [10, 2], [9, 0], [17, 16], [25, 32], [26, 34, 42, 50, 58], [27, 36, 45, 54, 63]], [[20, 21, 22, 23], [12, 5], [11, 3], [10, 1], [18, 17, 16], [26, 33, 40], [27, 35, 43, 51, 59], [28, 37, 46, 55]], [[21, 22, 23], [13, 6], [12, 4], [11, 2], [19, 18, 17, 16], [27, 34, 41, 48], [28, 36, 44, 52, 60], [29, 38, 47]], [[22, 23], [14, 7], [13, 5], [12, 3], [20, 19, 18, 17, 16], [28, 35, 42, 49, 56], [29, 37, 45, 53, 61], [30, 39]], [[23], [15], [14, 6], [13, 4], [21, 20, 19, 18, 17, 16], [29, 36, 43, 50, 57], [30, 38, 46, 54, 62], [31]], [[15, 7], [14, 5], [22, 21, 20, 19, 18, 17, 16], [30, 37, 44, 51, 58], [31, 39, 47, 55, 63]], [[25, 26, 27, 28, 29, 30, 31], [17, 10, 3], [16, 8, 0], [32, 40, 48, 56], [33, 42, 51, 60]], [[26, 27, 28, 29, 30, 31], [18, 11, 4], [17, 9, 1], [16], [24], [32], [33, 41, 49, 57], [34, 43, 52, 61]], [[27, 28, 29, 30, 31], [19, 12, 5], [18, 10, 2], [17, 8], [25, 24], [33, 40], [34, 42, 50, 58], [35, 44, 53, 62]], [[28, 29, 30, 31], [20, 13, 6], [19, 11, 3], [18, 9, 0], [26, 25, 24], [34, 41, 48], [35, 43, 51, 59], [36, 45, 54, 63]], [[29, 30, 31], [21, 14, 7], [20, 12, 4], [19, 10, 1], [27, 26, 25, 24], [35, 42, 49, 56], [36, 44, 52, 60], [37, 46, 55]], [[30, 31], [22, 15], [21, 13, 5], [20, 11, 2], [28, 27, 26, 25, 24], [36, 43, 50, 57], [37, 45, 53, 61], [38, 47]], [[31], [23], [22, 14, 6], [21, 12, 3], [29, 28, 27, 26, 25, 24], [37, 44, 51, 58], [38, 46, 54, 62], [39]], [[23, 15, 7], [22, 13, 4], [30, 29, 28, 27, 26, 25, 24], [38, 45, 52, 59], [39, 47, 55, 63]], [[33, 34, 35, 36, 37, 38, 39], [25, 18, 11, 4], [24, 16, 8, 0], [40, 48, 56], [41, 50, 59]], [[34, 35, 36, 37, 38, 39], [26, 19, 12, 5], [25, 17, 9, 1], [24], [32], [40], [41, 49, 57], [42, 51, 60]], [[35, 36, 37, 38, 39], [27, 20, 13, 6], [26, 18, 10, 2], [25, 16], [33, 32], [41, 48], [42, 50, 58], [43, 52, 61]], [[36, 37, 38, 39], [28, 21, 14, 7], [27, 19, 11, 3], [26, 17, 8], [34, 33, 32], [42, 49, 56], [43, 51, 59], [44, 53, 62]], [[37, 38, 39], [29, 22, 15], [28, 20, 12, 4], [27, 18, 9, 0], [35, 34, 33, 32], [43, 50, 57], [44, 52, 60], [45, 54, 63]], [[38, 39], [30, 23], [29, 21, 13, 5], [28, 19, 10, 1], [36, 35, 34, 33, 32], [44, 51, 58], [45, 53, 61], [46, 55]], [[39], [31], [30, 22, 14, 6], [29, 20, 11, 2], [37, 36, 35, 34, 33, 32], [45, 52, 59], [46, 54, 62], [47]], [[31, 23, 15, 7], [30, 21, 12, 3], [38, 37, 36, 35, 34, 33, 32], [46, 53, 60], [47, 55, 63]], [[41, 42, 43, 44, 45, 46, 47], [33, 26, 19, 12, 5], [32, 24, 16, 8, 0], [48, 56], [49, 58]], [[42, 43, 44, 45, 46, 47], [34, 27, 20, 13, 6], [33, 25, 17, 9, 1], [32], [40], [48], [49, 57], [50, 59]], [[43, 44, 45, 46, 47], [35, 28, 21, 14, 7], [34, 26, 18, 10, 2], [33, 24], [41, 40], [49, 56], [50, 58], [51, 60]], [[44, 45, 46, 47], [36, 29, 22, 15], [35, 27, 19, 11, 3], [34, 25, 16], [42, 41, 40], [50, 57], [51, 59], [52, 61]], [[45, 46, 47], [37, 30, 23], [36, 28, 20, 12, 4], [35, 26, 17, 8], [43, 42, 41, 40], [51, 58], [52, 60], [53, 62]], [[46, 47], [38, 31], [37, 29, 21, 13, 5], [36, 27, 18, 9, 0], [44, 43, 42, 41, 40], [52, 59], [53, 61], [54, 63]], [[47], [39], [38, 30, 22, 14, 6], [37, 28, 19, 10, 1], [45, 44, 43, 42, 41, 40], [53, 60], [54, 62], [55]], [[39, 31, 23, 15, 7], [38, 29, 20, 11, 2], [46, 45, 44, 43, 42, 41, 40], [54, 61], [55, 63]], [[49, 50, 51, 52, 53, 54, 55], [41, 34, 27, 20, 13, 6], [40, 32, 24, 16, 8, 0], [56], [57]], [[50, 51, 52, 53, 54, 55], [42, 35, 28, 21, 14, 7], [41, 33, 25, 17, 9, 1], [40], [48], [56], [57], [58]], [[51, 52, 53, 54, 55], [43, 36, 29, 22, 15], [42, 34, 26, 18, 10, 2], [41, 32], [49, 48], [57], [58], [59]], [[52, 53, 54, 55], [44, 37, 30, 23], [43, 35, 27, 19, 11, 3], [42, 33, 24], [50, 49, 48], [58], [59], [60]], [[53, 54, 55], [45, 38, 31], [44, 36, 28, 20, 12, 4], [43, 34, 25, 16], [51, 50, 49, 48], [59], [60], [61]], [[54, 55], [46, 39], [45, 37, 29, 21, 13, 5], [44, 35, 26, 17, 8], [52, 51, 50, 49, 48], [60], [61], [62]], [[55], [47], [46, 38, 30, 22, 14, 6], [45, 36, 27, 18, 9, 0], [53, 52, 51, 50, 49, 48], [61], [62], [63]], [[47, 39, 31, 23, 15, 7], [46, 37, 28, 19, 10, 1], [54, 53, 52, 51, 50, 49, 48], [62], [63]], [[57, 58, 59, 60, 61, 62, 63], [49, 42, 35, 28, 21, 14, 7], [48, 40, 32, 24, 16, 8, 0]], [[58, 59, 60, 61, 62, 63], [50, 43, 36, 29, 22, 15], [49, 41, 33, 25, 17, 9, 1], [48], [56]], [[59, 60, 61, 62, 63], [51, 44, 37, 30, 23], [50, 42, 34, 26, 18, 10, 2], [49, 40], [57, 56]], [[60, 61, 62, 63], [52, 45, 38, 31], [51, 43, 35, 27, 19, 11, 3], [50, 41, 32], [58, 57, 56]], [[61, 62, 63], [53, 46, 39], [52, 44, 36, 28, 20, 12, 4], [51, 42, 33, 24], [59, 58, 57, 56]], [[62, 63], [54, 47], [53, 45, 37, 29, 21, 13, 5], [52, 43, 34, 25, 16], [60, 59, 58, 57, 56]], [[63], [55], [54, 46, 38, 30, 22, 14, 6], [53, 44, 35, 26, 17, 8], [61, 60, 59, 58, 57, 56]], [[55, 47, 39, 31, 23, 15, 7], [54, 45, 36, 27, 18, 9, 0], [62, 61, 60, 59, 58, 57, 56]]], 'N1': [[[17], [10]], [[16], [18], [11]], [[8], [17], [19], [12]], [[9], [18], [20], [13]], [[10], [19], [21], [14]], [[11], [20], [22], [15]], [[12], [21], [23]], [[13], [22]], [[2], [25], [18]], [[3], [24], [26], [19]], [[4], [0], [16], [25], [27], [20]], [[5], [1], [17], [26], [28], [21]], [[6], [2], [18], [27], [29], [22]], [[7], [3], [19], [28], [30], [23]], [[4], [20], [29], [31]], [[5], [21], [30]], [[10], [1], [33], [26]], [[11], [2], [0], [32], [34], [27]], [[12], [3], [1], [8], [24], [33], [35], [28]], [[13], [4], [2], [9], [25], [34], [36], [29]], [[14], [5], [3], [10], [26], [35], [37], [30]], [[15], [6], [4], [11], [27], [36], [38], [31]], [[7], [5], [12], [28], [37], [39]], [[6], [13], [29], [38]], [[18], [9], [41], [34]], [[19], [10], [8], [40], [42], [35]], [[20], [11], [9], [16], [32], [41], [43], [36]], [[21], [12], [10], [17], [33], [42], [44], [37]], [[22], [13], [11], [18], [34], [43], [45], [38]], [[23], [14], [12], [19], [35], [44], [46], [39]], [[15], [13], [20], [36], [45], [47]], [[14], [21], [37], [46]], [[26], [17], [49], [42]], [[27], [18], [16], [48], [50], [43]], [[28], [19], [17], [24], [40], [49], [51], [44]], [[29], [20], [18], [25], [41], [50], [52], [45]], [[30], [21], [19], [26], [42], [51], [53], [46]], [[31], [22], [20], [27], [43], [52], [54], [47]], [[23], [21], [28], [44], [53], [55]], [[22], [29], [45], [54]], [[34], [25], [57], [50]], [[35], [26], [24], [56], [58], [51]], [[36], [27], [25], [32], [48], [57], [59], [52]], [[37], [28], [26], [33], [49], [58], [60], [53]], [[38], [29], [27], [34], [50], [59], [61], [54]], [[39], [30], [28], [35], [51], [60], [62], [55]], [[31], [29], [36], [52], [61], [63]], [[30], [37], [53], [62]], [[42], [33], [58]], [[43], [34], [32], [59]], [[44], [35], [33], [40], [56], [60]], [[45], [36], [34], [41], [57], [61]], [[46], [37], [35], [42], [58], [62]], [[47], [38], [36], [43], [59], [63]], [[39], [37], [44], [60]], [[38], [45], [61]], [[50], [41]], [[51], [42], [40]], [[52], [43], [41], [48]], [[53], [44], [42], [49]], [[54], [45], [43], [50]], [[55], [46], [44], [51]], [[47], [45], [52]], [[46], [53]]], 'N2': [[[17], [10]], [[16], [18], [11]], [[8], [17], [19], [12]], [[9], [18], [20], [13]], [[10], [19], [21], [14]], [[11], [20], [22], [15]], [[12], [21], [23]], [[13], [22]], [[2], [25], [18]], [[3], [24], [26], [19]], [[4], [0], [16], [25], [27], [20]], [[5], [1], [17], [26], [28], [21]], [[6], [2], [18], [27], [29], [22]], [[7], [3], [19], [28], [30], [23]], [[4], [20], [29], [31]], [[5], [21], [30]], [[10], [1], [33], [26]], [[11], [2], [0], [32], [34], [27]], [[12], [3], [1], [8], [24], [33], [35], [28]], [[13], [4], [2], [9], [25], [34], [36], [29]], [[14], [5], [3], [10], [26], [35], [37], [30]], [[15], [6], [4], [11], [27], [36], [38], [31]], [[7], [5], [12], [28], [37], [39]], [[6], [13], [29], [38]], [[18], [9], [41], [34]], [[19], [10], [8], [40], [42], [35]], [[20], [11], [9], [16], [32], [41], [43], [36]], [[21], [12], [10], [17], [33], [42], [44], [37]], [[22], [13], [11], [18], [34], [43], [45], [38]], [[23], [14], [12], [19], [35], [44], [46], [39]], [[15], [13], [20], [36], [45], [47]], [[14], [21], [37], [46]], [[26], [17], [49], [42]], [[27], [18], [16], [48], [50], [43]], [[28], [19], [17], [24], [40], [49], [51], [44]], [[29], [20], [18], [25], [41], [50], [52], [45]], [[30], [21], [19], [26], [42], [51], [53], [46]], [[31], [22], [20], [27], [43], [52], [54], [47]], [[23], [21], [28], [44], [53], [55]], [[22], [29], [45], [54]], [[34], [25], [57], [50]], [[35], [26], [24], [56], [58], [51]], [[36], [27], [25], [32], [48], [57], [59], [52]], [[37], [28], [26], [33], [49], [58], [60], [53]], [[38], [29], [27], [34], [50], [59], [61], [54]], [[39], [30], [28], [35], [51], [60], [62], [55]], [[31], [29], [36], [52], [61], [63]], [[30], [37], [53], [62]], [[42], [33], [58]], [[43], [34], [32], [59]], [[44], [35], [33], [40], [56], [60]], [[45], [36], [34], [41], [57], [61]], [[46], [37], [35], [42], [58], [62]], [[47], [38], [36], [43], [59], [63]], [[39], [37], [44], [60]], [[38], [45], [61]], [[50], [41]], [[51], [42], [40]], [[52], [43], [41], [48]], [[53], [44], [42], [49]], [[54], [45], [43], [50]], [[55], [46], [44], [51]], [[47], [45], [52]], [[46], [53]]], 'r1': [[[1, 2, 3, 4, 5, 6, 7], [8, 16, 24, 32, 40, 48, 56]], [[2, 3, 4, 5, 6, 7], [0], [9, 17, 25, 33, 41, 49, 57]], [[3, 4, 5, 6, 7], [1, 0], [10, 18, 26, 34, 42, 50, 58]], [[4, 5, 6, 7], [2, 1, 0], [11, 19, 27, 35, 43, 51, 59]], [[5, 6, 7], [3, 2, 1, 0], [12, 20, 28, 36, 44, 52, 60]], [[6, 7], [4, 3, 2, 1, 0], [13, 21, 29, 37, 45, 53, 61]], [[7], [5, 4, 3, 2, 1, 0], [14, 22, 30, 38, 46, 54, 62]], [[6, 5, 4, 3, 2, 1, 0], [15, 23, 31, 39, 47, 55, 63]], [[9, 10, 11, 12, 13, 14, 15], [0], [16, 24, 32, 40, 48, 56]], [[10, 11, 12, 13, 14, 15], [1], [8], [17, 25, 33, 41, 49, 57]], [[11, 12, 13, 14, 15], [2], [9, 8], [18, 26, 34, 42, 50, 58]], [[12, 13, 14, 15], [3], [10, 9, 8], [19, 27, 35, 43, 51, 59]], [[13, 14, 15], [4], [11, 10, 9, 8], [20, 28, 36, 44, 52, 60]], [[14, 15], [5], [12, 11, 10, 9, 8], [21, 29, 37, 45, 53, 61]], [[15], [6], [13, 12, 11, 10, 9, 8], [22, 30, 38, 46, 54, 62]], [[7], [14, 13, 12, 11, 10, 9, 8], [23, 31, 39, 47, 55, 63]], [[17, 18, 19, 20, 21, 22, 23], [8, 0], [24, 32, 40, 48, 56]], [[18, 19, 20, 21, 22, 23], [9, 1], [16], [25, 33, 41, 49, 57]], [[19, 20, 21, 22, 23], [10, 2], [17, 16], [26, 34, 42, 50, 58]], [[20, 21, 22, 23], [11, 3], [18, 17, 16], [27, 35, 43, 51, 59]], [[21, 22, 23], [12, 4], [19, 18, 17, 16], [28, 36, 44, 52, 60]], [[22, 23], [13, 5], [20, 19, 18, 17, 16], [29, 37, 45, 53, 61]], [[23], [14, 6], [21, 20, 19, 18, 17, 16], [30, 38, 46, 54, 62]], [[15, 7], [22, 21, 20, 19, 18, 17, 16], [31, 39, 47, 55, 63]], [[25, 26, 27, 28, 29, 30, 31], [16, 8, 0], [32, 40, 48, 56]], [[26, 27, 28, 29, 30, 31], [17, 9, 1], [24], [33, 41, 49, 57]], [[27, 28, 29, 30, 31], [18, 10, 2], [25, 24], [34, 42, 50, 58]], [[28, 29, 30, 31], [19, 11, 3], [26, 25, 24], [35, 43, 51, 59]], [[29, 30, 31], [20, 12, 4], [27, 26, 25, 24], [36, 44, 52, 60]], [[30, 31], [21, 13, 5], [28, 27, 26, 25, 24], [37, 45, 53, 61]], [[31], [22, 14, 6], [29, 28, 27, 26, 25, 24], [38, 46, 54, 62]], [[23, 15, 7], [30, 29, 28, 27, 26, 25, 24], [39, 47, 55, 63]], [[33, 34, 35, 36, 37, 38, 39], [24, 16, 8, 0], [40, 48, 56]], [[34, 35, 36, 37, 38, 39], [25, 17, 9, 1], [32], [41, 49, 57]], [[35, 36, 37, 38, 39], [26, 18, 10, 2], [33, 32], [42, 50, 58]], [[36, 37, 38, 39], [27, 19, 11, 3], [34, 33, 32], [43, 51, 59]], [[37, 38, 39], [28, 20, 12, 4], [35, 34, 33, 32], [44, 52, 60]], [[38, 39], [29, 21, 13, 5], [36, 35, 34, 33, 32], [45, 53, 61]], [[39], [30, 22, 14, 6], [37, 36, 35, 34, 33, 32], [46, 54, 62]], [[31, 23, 15, 7], [38, 37, 36, 35, 34, 33, 32], [47, 55, 63]], [[41, 42, 43, 44, 45, 46, 47], [32, 24, 16, 8, 0], [48, 56]], [[42, 43, 44, 45, 46, 47], [33, 25, 17, 9, 1], [40], [49, 57]], [[43, 44, 45, 46, 47], [34, 26, 18, 10, 2], [41, 40], [50, 58]], [[44, 45, 46, 47], [35, 27, 19, 11, 3], [42, 41, 40], [51, 59]], [[45, 46, 47], [36, 28, 20, 12, 4], [43, 42, 41, 40], [52, 60]], [[46, 47], [37, 29, 21, 13, 5], [44, 43, 42, 41, 40], [53, 61]], [[47], [38, 30, 22, 14, 6], [45, 44, 43, 42, 41, 40], [54, 62]], [[39, 31, 23, 15, 7], [46, 45, 44, 43, 42, 41, 40], [55, 63]], [[49, 50, 51, 52, 53, 54, 55], [40, 32, 24, 16, 8, 0], [56]], [[50, 51, 52, 53, 54, 55], [41, 33, 25, 17, 9, 1], [48], [57]], [[51, 52, 53, 54, 55], [42, 34, 26, 18, 10, 2], [49, 48], [58]], [[52, 53, 54, 55], [43, 35, 27, 19, 11, 3], [50, 49, 48], [59]], [[53, 54, 55], [44, 36, 28, 20, 12, 4], [51, 50, 49, 48], [60]], [[54, 55], [45, 37, 29, 21, 13, 5], [52, 51, 50, 49, 48], [61]], [[55], [46, 38, 30, 22, 14, 6], [53, 52, 51, 50, 49, 48], [62]], [[47, 39, 31, 23, 15, 7], [54, 53, 52, 51, 50, 49, 48], [63]], [[57, 58, 59, 60, 61, 62, 63], [48, 40, 32, 24, 16, 8, 0]], [[58, 59, 60, 61, 62, 63], [49, 41, 33, 25, 17, 9, 1], [56]], [[59, 60, 61, 62, 63], [50, 42, 34, 26, 18, 10, 2], [57, 56]], [[60, 61, 62, 63], [51, 43, 35, 27, 19, 11, 3], [58, 57, 56]], [[61, 62, 63], [52, 44, 36, 28, 20, 12, 4], [59, 58, 57, 56]], [[62, 63], [53, 45, 37, 29, 21, 13, 5], [60, 59, 58, 57, 56]], [[63], [54, 46, 38, 30, 22, 14, 6], [61, 60, 59, 58, 57, 56]], [[55, 47, 39, 31, 23, 15, 7], [62, 61, 60, 59, 58, 57, 56]]], 'p2': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []], 'p3': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []], 'p1': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []], 'p6': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []], 'r2': [[[1, 2, 3, 4, 5, 6, 7], [8, 16, 24, 32, 40, 48, 56]], [[2, 3, 4, 5, 6, 7], [0], [9, 17, 25, 33, 41, 49, 57]], [[3, 4, 5, 6, 7], [1, 0], [10, 18, 26, 34, 42, 50, 58]], [[4, 5, 6, 7], [2, 1, 0], [11, 19, 27, 35, 43, 51, 59]], [[5, 6, 7], [3, 2, 1, 0], [12, 20, 28, 36, 44, 52, 60]], [[6, 7], [4, 3, 2, 1, 0], [13, 21, 29, 37, 45, 53, 61]], [[7], [5, 4, 3, 2, 1, 0], [14, 22, 30, 38, 46, 54, 62]], [[6, 5, 4, 3, 2, 1, 0], [15, 23, 31, 39, 47, 55, 63]], [[9, 10, 11, 12, 13, 14, 15], [0], [16, 24, 32, 40, 48, 56]], [[10, 11, 12, 13, 14, 15], [1], [8], [17, 25, 33, 41, 49, 57]], [[11, 12, 13, 14, 15], [2], [9, 8], [18, 26, 34, 42, 50, 58]], [[12, 13, 14, 15], [3], [10, 9, 8], [19, 27, 35, 43, 51, 59]], [[13, 14, 15], [4], [11, 10, 9, 8], [20, 28, 36, 44, 52, 60]], [[14, 15], [5], [12, 11, 10, 9, 8], [21, 29, 37, 45, 53, 61]], [[15], [6], [13, 12, 11, 10, 9, 8], [22, 30, 38, 46, 54, 62]], [[7], [14, 13, 12, 11, 10, 9, 8], [23, 31, 39, 47, 55, 63]], [[17, 18, 19, 20, 21, 22, 23], [8, 0], [24, 32, 40, 48, 56]], [[18, 19, 20, 21, 22, 23], [9, 1], [16], [25, 33, 41, 49, 57]], [[19, 20, 21, 22, 23], [10, 2], [17, 16], [26, 34, 42, 50, 58]], [[20, 21, 22, 23], [11, 3], [18, 17, 16], [27, 35, 43, 51, 59]], [[21, 22, 23], [12, 4], [19, 18, 17, 16], [28, 36, 44, 52, 60]], [[22, 23], [13, 5], [20, 19, 18, 17, 16], [29, 37, 45, 53, 61]], [[23], [14, 6], [21, 20, 19, 18, 17, 16], [30, 38, 46, 54, 62]], [[15, 7], [22, 21, 20, 19, 18, 17, 16], [31, 39, 47, 55, 63]], [[25, 26, 27, 28, 29, 30, 31], [16, 8, 0], [32, 40, 48, 56]], [[26, 27, 28, 29, 30, 31], [17, 9, 1], [24], [33, 41, 49, 57]], [[27, 28, 29, 30, 31], [18, 10, 2], [25, 24], [34, 42, 50, 58]], [[28, 29, 30, 31], [19, 11, 3], [26, 25, 24], [35, 43, 51, 59]], [[29, 30, 31], [20, 12, 4], [27, 26, 25, 24], [36, 44, 52, 60]], [[30, 31], [21, 13, 5], [28, 27, 26, 25, 24], [37, 45, 53, 61]], [[31], [22, 14, 6], [29, 28, 27, 26, 25, 24], [38, 46, 54, 62]], [[23, 15, 7], [30, 29, 28, 27, 26, 25, 24], [39, 47, 55, 63]], [[33, 34, 35, 36, 37, 38, 39], [24, 16, 8, 0], [40, 48, 56]], [[34, 35, 36, 37, 38, 39], [25, 17, 9, 1], [32], [41, 49, 57]], [[35, 36, 37, 38, 39], [26, 18, 10, 2], [33, 32], [42, 50, 58]], [[36, 37, 38, 39], [27, 19, 11, 3], [34, 33, 32], [43, 51, 59]], [[37, 38, 39], [28, 20, 12, 4], [35, 34, 33, 32], [44, 52, 60]], [[38, 39], [29, 21, 13, 5], [36, 35, 34, 33, 32], [45, 53, 61]], [[39], [30, 22, 14, 6], [37, 36, 35, 34, 33, 32], [46, 54, 62]], [[31, 23, 15, 7], [38, 37, 36, 35, 34, 33, 32], [47, 55, 63]], [[41, 42, 43, 44, 45, 46, 47], [32, 24, 16, 8, 0], [48, 56]], [[42, 43, 44, 45, 46, 47], [33, 25, 17, 9, 1], [40], [49, 57]], [[43, 44, 45, 46, 47], [34, 26, 18, 10, 2], [41, 40], [50, 58]], [[44, 45, 46, 47], [35, 27, 19, 11, 3], [42, 41, 40], [51, 59]], [[45, 46, 47], [36, 28, 20, 12, 4], [43, 42, 41, 40], [52, 60]], [[46, 47], [37, 29, 21, 13, 5], [44, 43, 42, 41, 40], [53, 61]], [[47], [38, 30, 22, 14, 6], [45, 44, 43, 42, 41, 40], [54, 62]], [[39, 31, 23, 15, 7], [46, 45, 44, 43, 42, 41, 40], [55, 63]], [[49, 50, 51, 52, 53, 54, 55], [40, 32, 24, 16, 8, 0], [56]], [[50, 51, 52, 53, 54, 55], [41, 33, 25, 17, 9, 1], [48], [57]], [[51, 52, 53, 54, 55], [42, 34, 26, 18, 10, 2], [49, 48], [58]], [[52, 53, 54, 55], [43, 35, 27, 19, 11, 3], [50, 49, 48], [59]], [[53, 54, 55], [44, 36, 28, 20, 12, 4], [51, 50, 49, 48], [60]], [[54, 55], [45, 37, 29, 21, 13, 5], [52, 51, 50, 49, 48], [61]], [[55], [46, 38, 30, 22, 14, 6], [53, 52, 51, 50, 49, 48], [62]], [[47, 39, 31, 23, 15, 7], [54, 53, 52, 51, 50, 49, 48], [63]], [[57, 58, 59, 60, 61, 62, 63], [48, 40, 32, 24, 16, 8, 0]], [[58, 59, 60, 61, 62, 63], [49, 41, 33, 25, 17, 9, 1], [56]], [[59, 60, 61, 62, 63], [50, 42, 34, 26, 18, 10, 2], [57, 56]], [[60, 61, 62, 63], [51, 43, 35, 27, 19, 11, 3], [58, 57, 56]], [[61, 62, 63], [52, 44, 36, 28, 20, 12, 4], [59, 58, 57, 56]], [[62, 63], [53, 45, 37, 29, 21, 13, 5], [60, 59, 58, 57, 56]], [[63], [54, 46, 38, 30, 22, 14, 6], [61, 60, 59, 58, 57, 56]], [[55, 47, 39, 31, 23, 15, 7], [62, 61, 60, 59, 58, 57, 56]]], 'p4': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []], 'p5': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []], 'k': [[[1], [8], [9]], [[2], [0], [8], [9], [10]], [[3], [1], [9], [10], [11]], [[4], [2], [10], [11], [12]], [[5, 6], [3, 2], [11], [12], [13]], [[6], [4], [12], [13], [14]], [[7], [5], [13], [14], [15]], [[6], [14], [15]], [[9], [1], [0], [16], [17]], [[10], [2], [1], [0], [8], [16], [17], [18]], [[11], [3], [2], [1], [9], [17], [18], [19]], [[12], [4], [3], [2], [10], [18], [19], [20]], [[13], [5], [4], [3], [11], [19], [20], [21]], [[14], [6], [5], [4], [12], [20], [21], [22]], [[15], [7], [6], [5], [13], [21], [22], [23]], [[7], [6], [14], [22], [23]], [[17], [9], [8], [24], [25]], [[18], [10], [9], [8], [16], [24], [25], [26]], [[19], [11], [10], [9], [17], [25], [26], [27]], [[20], [12], [11], [10], [18], [26], [27], [28]], [[21], [13], [12], [11], [19], [27], [28], [29]], [[22], [14], [13], [12], [20], [28], [29], [30]], [[23], [15], [14], [13], [21], [29], [30], [31]], [[15], [14], [22], [30], [31]], [[25], [17], [16], [32], [33]], [[26], [18], [17], [16], [24], [32], [33], [34]], [[27], [19], [18], [17], [25], [33], [34], [35]], [[28], [20], [19], [18], [26], [34], [35], [36]], [[29], [21], [20], [19], [27], [35], [36], [37]], [[30], [22], [21], [20], [28], [36], [37], [38]], [[31], [23], [22], [21], [29], [37], [38], [39]], [[23], [22], [30], [38], [39]], [[33], [25], [24], [40], [41]], [[34], [26], [25], [24], [32], [40], [41], [42]], [[35], [27], [26], [25], [33], [41], [42], [43]], [[36], [28], [27], [26], [34], [42], [43], [44]], [[37], [29], [28], [27], [35], [43], [44], [45]], [[38], [30], [29], [28], [36], [44], [45], [46]], [[39], [31], [30], [29], [37], [45], [46], [47]], [[31], [30], [38], [46], [47]], [[41], [33], [32], [48], [49]], [[42], [34], [33], [32], [40], [48], [49], [50]], [[43], [35], [34], [33], [41], [49], [50], [51]], [[44], [36], [35], [34], [42], [50], [51], [52]], [[45], [37], [36], [35], [43], [51], [52], [53]], [[46], [38], [37], [36], [44], [52], [53], [54]], [[47], [39], [38], [37], [45], [53], [54], [55]], [[39], [38], [46], [54], [55]], [[49], [41], [40], [56], [57]], [[50], [42], [41], [40], [48], [56], [57], [58]], [[51], [43], [42], [41], [49], [57], [58], [59]], [[52], [44], [43], [42], [50], [58], [59], [60]], [[53], [45], [44], [43], [51], [59], [60], [61]], [[54], [46], [45], [44], [52], [60], [61], [62]], [[55], [47], [46], [45], [53], [61], [62], [63]], [[47], [46], [54], [62], [63]], [[57], [49], [48]], [[58], [50], [49], [48], [56]], [[59], [51], [50], [49], [57]], [[60], [52], [51], [50], [58]], [[61], [53], [52], [51], [59]], [[62], [54], [53], [52], [60]], [[63], [55], [54], [53], [61]], [[55], [54], [62]]], 'q': [[[1, 2, 3, 4, 5, 6, 7], [8, 16, 24, 32, 40, 48, 56], [9, 18, 27, 36, 45, 54, 63]], [[2, 3, 4, 5, 6, 7], [0], [8], [9, 17, 25, 33, 41, 49, 57], [10, 19, 28, 37, 46, 55]], [[3, 4, 5, 6, 7], [1, 0], [9, 16], [10, 18, 26, 34, 42, 50, 58], [11, 20, 29, 38, 47]], [[4, 5, 6, 7], [2, 1, 0], [10, 17, 24], [11, 19, 27, 35, 43, 51, 59], [12, 21, 30, 39]], [[5, 6, 7], [3, 2, 1, 0], [11, 18, 25, 32], [12, 20, 28, 36, 44, 52, 60], [13, 22, 31]], [[6, 7], [4, 3, 2, 1, 0], [12, 19, 26, 33, 40], [13, 21, 29, 37, 45, 53, 61], [14, 23]], [[7], [5, 4, 3, 2, 1, 0], [13, 20, 27, 34, 41, 48], [14, 22, 30, 38, 46, 54, 62], [15]], [[6, 5, 4, 3, 2, 1, 0], [14, 21, 28, 35, 42, 49, 56], [15, 23, 31, 39, 47, 55, 63]], [[9, 10, 11, 12, 13, 14, 15], [1], [0], [16, 24, 32, 40, 48, 56], [17, 26, 35, 44, 53, 62]], [[10, 11, 12, 13, 14, 15], [2], [1], [0], [8], [16], [17, 25, 33, 41, 49, 57], [18, 27, 36, 45, 54, 63]], [[11, 12, 13, 14, 15], [3], [2], [1], [9, 8], [17, 24], [18, 26, 34, 42, 50, 58], [19, 28, 37, 46, 55]], [[12, 13, 14, 15], [4], [3], [2], [10, 9, 8], [18, 25, 32], [19, 27, 35, 43, 51, 59], [20, 29, 38, 47]], [[13, 14, 15], [5], [4], [3], [11, 10, 9, 8], [19, 26, 33, 40], [20, 28, 36, 44, 52, 60], [21, 30, 39]], [[14, 15], [6], [5], [4], [12, 11, 10, 9, 8], [20, 27, 34, 41, 48], [21, 29, 37, 45, 53, 61], [22, 31]], [[15], [7], [6], [5], [13, 12, 11, 10, 9, 8], [21, 28, 35, 42, 49, 56], [22, 30, 38, 46, 54, 62], [23]], [[7], [6], [14, 13, 12, 11, 10, 9, 8], [22, 29, 36, 43, 50, 57], [23, 31, 39, 47, 55, 63]], [[17, 18, 19, 20, 21, 22, 23], [9, 2], [8, 0], [24, 32, 40, 48, 56], [25, 34, 43, 52, 61]], [[18, 19, 20, 21, 22, 23], [10, 3], [9, 1], [8], [16], [24], [25, 33, 41, 49, 57], [26, 35, 44, 53, 62]], [[19, 20, 21, 22, 23], [11, 4], [10, 2], [9, 0], [17, 16], [25, 32], [26, 34, 42, 50, 58], [27, 36, 45, 54, 63]], [[20, 21, 22, 23], [12, 5], [11, 3], [10, 1], [18, 17, 16], [26, 33, 40], [27, 35, 43, 51, 59], [28, 37, 46, 55]], [[21, 22, 23], [13, 6], [12, 4], [11, 2], [19, 18, 17, 16], [27, 34, 41, 48], [28, 36, 44, 52, 60], [29, 38, 47]], [[22, 23], [14, 7], [13, 5], [12, 3], [20, 19, 18, 17, 16], [28, 35, 42, 49, 56], [29, 37, 45, 53, 61], [30, 39]], [[23], [15], [14, 6], [13, 4], [21, 20, 19, 18, 17, 16], [29, 36, 43, 50, 57], [30, 38, 46, 54, 62], [31]], [[15, 7], [14, 5], [22, 21, 20, 19, 18, 17, 16], [30, 37, 44, 51, 58], [31, 39, 47, 55, 63]], [[25, 26, 27, 28, 29, 30, 31], [17, 10, 3], [16, 8, 0], [32, 40, 48, 56], [33, 42, 51, 60]], [[26, 27, 28, 29, 30, 31], [18, 11, 4], [17, 9, 1], [16], [24], [32], [33, 41, 49, 57], [34, 43, 52, 61]], [[27, 28, 29, 30, 31], [19, 12, 5], [18, 10, 2], [17, 8], [25, 24], [33, 40], [34, 42, 50, 58], [35, 44, 53, 62]], [[28, 29, 30, 31], [20, 13, 6], [19, 11, 3], [18, 9, 0], [26, 25, 24], [34, 41, 48], [35, 43, 51, 59], [36, 45, 54, 63]], [[29, 30, 31], [21, 14, 7], [20, 12, 4], [19, 10, 1], [27, 26, 25, 24], [35, 42, 49, 56], [36, 44, 52, 60], [37, 46, 55]], [[30, 31], [22, 15], [21, 13, 5], [20, 11, 2], [28, 27, 26, 25, 24], [36, 43, 50, 57], [37, 45, 53, 61], [38, 47]], [[31], [23], [22, 14, 6], [21, 12, 3], [29, 28, 27, 26, 25, 24], [37, 44, 51, 58], [38, 46, 54, 62], [39]], [[23, 15, 7], [22, 13, 4], [30, 29, 28, 27, 26, 25, 24], [38, 45, 52, 59], [39, 47, 55, 63]], [[33, 34, 35, 36, 37, 38, 39], [25, 18, 11, 4], [24, 16, 8, 0], [40, 48, 56], [41, 50, 59]], [[34, 35, 36, 37, 38, 39], [26, 19, 12, 5], [25, 17, 9, 1], [24], [32], [40], [41, 49, 57], [42, 51, 60]], [[35, 36, 37, 38, 39], [27, 20, 13, 6], [26, 18, 10, 2], [25, 16], [33, 32], [41, 48], [42, 50, 58], [43, 52, 61]], [[36, 37, 38, 39], [28, 21, 14, 7], [27, 19, 11, 3], [26, 17, 8], [34, 33, 32], [42, 49, 56], [43, 51, 59], [44, 53, 62]], [[37, 38, 39], [29, 22, 15], [28, 20, 12, 4], [27, 18, 9, 0], [35, 34, 33, 32], [43, 50, 57], [44, 52, 60], [45, 54, 63]], [[38, 39], [30, 23], [29, 21, 13, 5], [28, 19, 10, 1], [36, 35, 34, 33, 32], [44, 51, 58], [45, 53, 61], [46, 55]], [[39], [31], [30, 22, 14, 6], [29, 20, 11, 2], [37, 36, 35, 34, 33, 32], [45, 52, 59], [46, 54, 62], [47]], [[31, 23, 15, 7], [30, 21, 12, 3], [38, 37, 36, 35, 34, 33, 32], [46, 53, 60], [47, 55, 63]], [[41, 42, 43, 44, 45, 46, 47], [33, 26, 19, 12, 5], [32, 24, 16, 8, 0], [48, 56], [49, 58]], [[42, 43, 44, 45, 46, 47], [34, 27, 20, 13, 6], [33, 25, 17, 9, 1], [32], [40], [48], [49, 57], [50, 59]], [[43, 44, 45, 46, 47], [35, 28, 21, 14, 7], [34, 26, 18, 10, 2], [33, 24], [41, 40], [49, 56], [50, 58], [51, 60]], [[44, 45, 46, 47], [36, 29, 22, 15], [35, 27, 19, 11, 3], [34, 25, 16], [42, 41, 40], [50, 57], [51, 59], [52, 61]], [[45, 46, 47], [37, 30, 23], [36, 28, 20, 12, 4], [35, 26, 17, 8], [43, 42, 41, 40], [51, 58], [52, 60], [53, 62]], [[46, 47], [38, 31], [37, 29, 21, 13, 5], [36, 27, 18, 9, 0], [44, 43, 42, 41, 40], [52, 59], [53, 61], [54, 63]], [[47], [39], [38, 30, 22, 14, 6], [37, 28, 19, 10, 1], [45, 44, 43, 42, 41, 40], [53, 60], [54, 62], [55]], [[39, 31, 23, 15, 7], [38, 29, 20, 11, 2], [46, 45, 44, 43, 42, 41, 40], [54, 61], [55, 63]], [[49, 50, 51, 52, 53, 54, 55], [41, 34, 27, 20, 13, 6], [40, 32, 24, 16, 8, 0], [56], [57]], [[50, 51, 52, 53, 54, 55], [42, 35, 28, 21, 14, 7], [41, 33, 25, 17, 9, 1], [40], [48], [56], [57], [58]], [[51, 52, 53, 54, 55], [43, 36, 29, 22, 15], [42, 34, 26, 18, 10, 2], [41, 32], [49, 48], [57], [58], [59]], [[52, 53, 54, 55], [44, 37, 30, 23], [43, 35, 27, 19, 11, 3], [42, 33, 24], [50, 49, 48], [58], [59], [60]], [[53, 54, 55], [45, 38, 31], [44, 36, 28, 20, 12, 4], [43, 34, 25, 16], [51, 50, 49, 48], [59], [60], [61]], [[54, 55], [46, 39], [45, 37, 29, 21, 13, 5], [44, 35, 26, 17, 8], [52, 51, 50, 49, 48], [60], [61], [62]], [[55], [47], [46, 38, 30, 22, 14, 6], [45, 36, 27, 18, 9, 0], [53, 52, 51, 50, 49, 48], [61], [62], [63]], [[47, 39, 31, 23, 15, 7], [46, 37, 28, 19, 10, 1], [54, 53, 52, 51, 50, 49, 48], [62], [63]], [[57, 58, 59, 60, 61, 62, 63], [49, 42, 35, 28, 21, 14, 7], [48, 40, 32, 24, 16, 8, 0]], [[58, 59, 60, 61, 62, 63], [50, 43, 36, 29, 22, 15], [49, 41, 33, 25, 17, 9, 1], [48], [56]], [[59, 60, 61, 62, 63], [51, 44, 37, 30, 23], [50, 42, 34, 26, 18, 10, 2], [49, 40], [57, 56]], [[60, 61, 62, 63], [52, 45, 38, 31], [51, 43, 35, 27, 19, 11, 3], [50, 41, 32], [58, 57, 56]], [[61, 62, 63], [53, 46, 39], [52, 44, 36, 28, 20, 12, 4], [51, 42, 33, 24], [59, 58, 57, 56]], [[62, 63], [54, 47], [53, 45, 37, 29, 21, 13, 5], [52, 43, 34, 25, 16], [60, 59, 58, 57, 56]], [[63], [55], [54, 46, 38, 30, 22, 14, 6], [53, 44, 35, 26, 17, 8], [61, 60, 59, 58, 57, 56]], [[55, 47, 39, 31, 23, 15, 7], [54, 45, 36, 27, 18, 9, 0], [62, 61, 60, 59, 58, 57, 56]]], 'B1': [[[9, 18, 27, 36, 45, 54, 63]], [[8], [10, 19, 28, 37, 46, 55]], [[9, 16], [11, 20, 29, 38, 47]], [[10, 17, 24], [12, 21, 30, 39]], [[11, 18, 25, 32], [13, 22, 31]], [[12, 19, 26, 33, 40], [14, 23]], [[13, 20, 27, 34, 41, 48], [15]], [[14, 21, 28, 35, 42, 49, 56]], [[1], [17, 26, 35, 44, 53, 62]], [[2], [0], [16], [18, 27, 36, 45, 54, 63]], [[3], [1], [17, 24], [19, 28, 37, 46, 55]], [[4], [2], [18, 25, 32], [20, 29, 38, 47]], [[5], [3], [19, 26, 33, 40], [21, 30, 39]], [[6], [4], [20, 27, 34, 41, 48], [22, 31]], [[7], [5], [21, 28, 35, 42, 49, 56], [23]], [[6], [22, 29, 36, 43, 50, 57]], [[9, 2], [25, 34, 43, 52, 61]], [[10, 3], [8], [24], [26, 35, 44, 53, 62]], [[11, 4], [9, 0], [25, 32], [27, 36, 45, 54, 63]], [[12, 5], [10, 1], [26, 33, 40], [28, 37, 46, 55]], [[13, 6], [11, 2], [27, 34, 41, 48], [29, 38, 47]], [[14, 7], [12, 3], [28, 35, 42, 49, 56], [30, 39]], [[15], [13, 4], [29, 36, 43, 50, 57], [31]], [[14, 5], [30, 37, 44, 51, 58]], [[17, 10, 3], [33, 42, 51, 60]], [[18, 11, 4], [16], [32], [34, 43, 52, 61]], [[19, 12, 5], [17, 8], [33, 40], [35, 44, 53, 62]], [[20, 13, 6], [18, 9, 0], [34, 41, 48], [36, 45, 54, 63]], [[21, 14, 7], [19, 10, 1], [35, 42, 49, 56], [37, 46, 55]], [[22, 15], [20, 11, 2], [36, 43, 50, 57], [38, 47]], [[23], [21, 12, 3], [37, 44, 51, 58], [39]], [[22, 13, 4], [38, 45, 52, 59]], [[25, 18, 11, 4], [41, 50, 59]], [[26, 19, 12, 5], [24], [40], [42, 51, 60]], [[27, 20, 13, 6], [25, 16], [41, 48], [43, 52, 61]], [[28, 21, 14, 7], [26, 17, 8], [42, 49, 56], [44, 53, 62]], [[29, 22, 15], [27, 18, 9, 0], [43, 50, 57], [45, 54, 63]], [[30, 23], [28, 19, 10, 1], [44, 51, 58], [46, 55]], [[31], [29, 20, 11, 2], [45, 52, 59], [47]], [[30, 21, 12, 3], [46, 53, 60]], [[33, 26, 19, 12, 5], [49, 58]], [[34, 27, 20, 13, 6], [32], [48], [50, 59]], [[35, 28, 21, 14, 7], [33, 24], [49, 56], [51, 60]], [[36, 29, 22, 15], [34, 25, 16], [50, 57], [52, 61]], [[37, 30, 23], [35, 26, 17, 8], [51, 58], [53, 62]], [[38, 31], [36, 27, 18, 9, 0], [52, 59], [54, 63]], [[39], [37, 28, 19, 10, 1], [53, 60], [55]], [[38, 29, 20, 11, 2], [54, 61]], [[41, 34, 27, 20, 13, 6], [57]], [[42, 35, 28, 21, 14, 7], [40], [56], [58]], [[43, 36, 29, 22, 15], [41, 32], [57], [59]], [[44, 37, 30, 23], [42, 33, 24], [58], [60]], [[45, 38, 31], [43, 34, 25, 16], [59], [61]], [[46, 39], [44, 35, 26, 17, 8], [60], [62]], [[47], [45, 36, 27, 18, 9, 0], [61], [63]], [[46, 37, 28, 19, 10, 1], [62]], [[49, 42, 35, 28, 21, 14, 7]], [[50, 43, 36, 29, 22, 15], [48]], [[51, 44, 37, 30, 23], [49, 40]], [[52, 45, 38, 31], [50, 41, 32]], [[53, 46, 39], [51, 42, 33, 24]], [[54, 47], [52, 43, 34, 25, 16]], [[55], [53, 44, 35, 26, 17, 8]], [[54, 45, 36, 27, 18, 9, 0]]], 'B2': [[[9, 18, 27, 36, 45, 54, 63]], [[8], [10, 19, 28, 37, 46, 55]], [[9, 16], [11, 20, 29, 38, 47]], [[10, 17, 24], [12, 21, 30, 39]], [[11, 18, 25, 32], [13, 22, 31]], [[12, 19, 26, 33, 40], [14, 23]], [[13, 20, 27, 34, 41, 48], [15]], [[14, 21, 28, 35, 42, 49, 56]], [[1], [17, 26, 35, 44, 53, 62]], [[2], [0], [16], [18, 27, 36, 45, 54, 63]], [[3], [1], [17, 24], [19, 28, 37, 46, 55]], [[4], [2], [18, 25, 32], [20, 29, 38, 47]], [[5], [3], [19, 26, 33, 40], [21, 30, 39]], [[6], [4], [20, 27, 34, 41, 48], [22, 31]], [[7], [5], [21, 28, 35, 42, 49, 56], [23]], [[6], [22, 29, 36, 43, 50, 57]], [[9, 2], [25, 34, 43, 52, 61]], [[10, 3], [8], [24], [26, 35, 44, 53, 62]], [[11, 4], [9, 0], [25, 32], [27, 36, 45, 54, 63]], [[12, 5], [10, 1], [26, 33, 40], [28, 37, 46, 55]], [[13, 6], [11, 2], [27, 34, 41, 48], [29, 38, 47]], [[14, 7], [12, 3], [28, 35, 42, 49, 56], [30, 39]], [[15], [13, 4], [29, 36, 43, 50, 57], [31]], [[14, 5], [30, 37, 44, 51, 58]], [[17, 10, 3], [33, 42, 51, 60]], [[18, 11, 4], [16], [32], [34, 43, 52, 61]], [[19, 12, 5], [17, 8], [33, 40], [35, 44, 53, 62]], [[20, 13, 6], [18, 9, 0], [34, 41, 48], [36, 45, 54, 63]], [[21, 14, 7], [19, 10, 1], [35, 42, 49, 56], [37, 46, 55]], [[22, 15], [20, 11, 2], [36, 43, 50, 57], [38, 47]], [[23], [21, 12, 3], [37, 44, 51, 58], [39]], [[22, 13, 4], [38, 45, 52, 59]], [[25, 18, 11, 4], [41, 50, 59]], [[26, 19, 12, 5], [24], [40], [42, 51, 60]], [[27, 20, 13, 6], [25, 16], [41, 48], [43, 52, 61]], [[28, 21, 14, 7], [26, 17, 8], [42, 49, 56], [44, 53, 62]], [[29, 22, 15], [27, 18, 9, 0], [43, 50, 57], [45, 54, 63]], [[30, 23], [28, 19, 10, 1], [44, 51, 58], [46, 55]], [[31], [29, 20, 11, 2], [45, 52, 59], [47]], [[30, 21, 12, 3], [46, 53, 60]], [[33, 26, 19, 12, 5], [49, 58]], [[34, 27, 20, 13, 6], [32], [48], [50, 59]], [[35, 28, 21, 14, 7], [33, 24], [49, 56], [51, 60]], [[36, 29, 22, 15], [34, 25, 16], [50, 57], [52, 61]], [[37, 30, 23], [35, 26, 17, 8], [51, 58], [53, 62]], [[38, 31], [36, 27, 18, 9, 0], [52, 59], [54, 63]], [[39], [37, 28, 19, 10, 1], [53, 60], [55]], [[38, 29, 20, 11, 2], [54, 61]], [[41, 34, 27, 20, 13, 6], [57]], [[42, 35, 28, 21, 14, 7], [40], [56], [58]], [[43, 36, 29, 22, 15], [41, 32], [57], [59]], [[44, 37, 30, 23], [42, 33, 24], [58], [60]], [[45, 38, 31], [43, 34, 25, 16], [59], [61]], [[46, 39], [44, 35, 26, 17, 8], [60], [62]], [[47], [45, 36, 27, 18, 9, 0], [61], [63]], [[46, 37, 28, 19, 10, 1], [62]], [[49, 42, 35, 28, 21, 14, 7]], [[50, 43, 36, 29, 22, 15], [48]], [[51, 44, 37, 30, 23], [49, 40]], [[52, 45, 38, 31], [50, 41, 32]], [[53, 46, 39], [51, 42, 33, 24]], [[54, 47], [52, 43, 34, 25, 16]], [[55], [53, 44, 35, 26, 17, 8]], [[54, 45, 36, 27, 18, 9, 0]]], 'n1': [[[17], [10]], [[16], [18], [11]], [[8], [17], [19], [12]], [[9], [18], [20], [13]], [[10], [19], [21], [14]], [[11], [20], [22], [15]], [[12], [21], [23]], [[13], [22]], [[2], [25], [18]], [[3], [24], [26], [19]], [[4], [0], [16], [25], [27], [20]], [[5], [1], [17], [26], [28], [21]], [[6], [2], [18], [27], [29], [22]], [[7], [3], [19], [28], [30], [23]], [[4], [20], [29], [31]], [[5], [21], [30]], [[10], [1], [33], [26]], [[11], [2], [0], [32], [34], [27]], [[12], [3], [1], [8], [24], [33], [35], [28]], [[13], [4], [2], [9], [25], [34], [36], [29]], [[14], [5], [3], [10], [26], [35], [37], [30]], [[15], [6], [4], [11], [27], [36], [38], [31]], [[7], [5], [12], [28], [37], [39]], [[6], [13], [29], [38]], [[18], [9], [41], [34]], [[19], [10], [8], [40], [42], [35]], [[20], [11], [9], [16], [32], [41], [43], [36]], [[21], [12], [10], [17], [33], [42], [44], [37]], [[22], [13], [11], [18], [34], [43], [45], [38]], [[23], [14], [12], [19], [35], [44], [46], [39]], [[15], [13], [20], [36], [45], [47]], [[14], [21], [37], [46]], [[26], [17], [49], [42]], [[27], [18], [16], [48], [50], [43]], [[28], [19], [17], [24], [40], [49], [51], [44]], [[29], [20], [18], [25], [41], [50], [52], [45]], [[30], [21], [19], [26], [42], [51], [53], [46]], [[31], [22], [20], [27], [43], [52], [54], [47]], [[23], [21], [28], [44], [53], [55]], [[22], [29], [45], [54]], [[34], [25], [57], [50]], [[35], [26], [24], [56], [58], [51]], [[36], [27], [25], [32], [48], [57], [59], [52]], [[37], [28], [26], [33], [49], [58], [60], [53]], [[38], [29], [27], [34], [50], [59], [61], [54]], [[39], [30], [28], [35], [51], [60], [62], [55]], [[31], [29], [36], [52], [61], [63]], [[30], [37], [53], [62]], [[42], [33], [58]], [[43], [34], [32], [59]], [[44], [35], [33], [40], [56], [60]], [[45], [36], [34], [41], [57], [61]], [[46], [37], [35], [42], [58], [62]], [[47], [38], [36], [43], [59], [63]], [[39], [37], [44], [60]], [[38], [45], [61]], [[50], [41]], [[51], [42], [40]], [[52], [43], [41], [48]], [[53], [44], [42], [49]], [[54], [45], [43], [50]], [[55], [46], [44], [51]], [[47], [45], [52]], [[46], [53]]], 'n2': [[[17], [10]], [[16], [18], [11]], [[8], [17], [19], [12]], [[9], [18], [20], [13]], [[10], [19], [21], [14]], [[11], [20], [22], [15]], [[12], [21], [23]], [[13], [22]], [[2], [25], [18]], [[3], [24], [26], [19]], [[4], [0], [16], [25], [27], [20]], [[5], [1], [17], [26], [28], [21]], [[6], [2], [18], [27], [29], [22]], [[7], [3], [19], [28], [30], [23]], [[4], [20], [29], [31]], [[5], [21], [30]], [[10], [1], [33], [26]], [[11], [2], [0], [32], [34], [27]], [[12], [3], [1], [8], [24], [33], [35], [28]], [[13], [4], [2], [9], [25], [34], [36], [29]], [[14], [5], [3], [10], [26], [35], [37], [30]], [[15], [6], [4], [11], [27], [36], [38], [31]], [[7], [5], [12], [28], [37], [39]], [[6], [13], [29], [38]], [[18], [9], [41], [34]], [[19], [10], [8], [40], [42], [35]], [[20], [11], [9], [16], [32], [41], [43], [36]], [[21], [12], [10], [17], [33], [42], [44], [37]], [[22], [13], [11], [18], [34], [43], [45], [38]], [[23], [14], [12], [19], [35], [44], [46], [39]], [[15], [13], [20], [36], [45], [47]], [[14], [21], [37], [46]], [[26], [17], [49], [42]], [[27], [18], [16], [48], [50], [43]], [[28], [19], [17], [24], [40], [49], [51], [44]], [[29], [20], [18], [25], [41], [50], [52], [45]], [[30], [21], [19], [26], [42], [51], [53], [46]], [[31], [22], [20], [27], [43], [52], [54], [47]], [[23], [21], [28], [44], [53], [55]], [[22], [29], [45], [54]], [[34], [25], [57], [50]], [[35], [26], [24], [56], [58], [51]], [[36], [27], [25], [32], [48], [57], [59], [52]], [[37], [28], [26], [33], [49], [58], [60], [53]], [[38], [29], [27], [34], [50], [59], [61], [54]], [[39], [30], [28], [35], [51], [60], [62], [55]], [[31], [29], [36], [52], [61], [63]], [[30], [37], [53], [62]], [[42], [33], [58]], [[43], [34], [32], [59]], [[44], [35], [33], [40], [56], [60]], [[45], [36], [34], [41], [57], [61]], [[46], [37], [35], [42], [58], [62]], [[47], [38], [36], [43], [59], [63]], [[39], [37], [44], [60]], [[38], [45], [61]], [[50], [41]], [[51], [42], [40]], [[52], [43], [41], [48]], [[53], [44], [42], [49]], [[54], [45], [43], [50]], [[55], [46], [44], [51]], [[47], [45], [52]], [[46], [53]]], 'p8': [[], [], [], [], [], [], [], [], [[16, 24], [17]], [[16], [17, 25], [18]], [[17], [18, 26], [19]], [[18], [19, 27], [20]], [[19], [20, 28], [21]], [[20], [21, 29], [22]], [[21], [22, 30], [23]], [[22], [23, 31]], [[24], [25]], [[24], [25], [26]], [[25], [26], [27]], [[26], [27], [28]], [[27], [28], [29]], [[28], [29], [30]], [[29], [30], [31]], [[30], [31]], [[32], [33]], [[32], [33], [34]], [[33], [34], [35]], [[34], [35], [36]], [[35], [36], [37]], [[36], [37], [38]], [[37], [38], [39]], [[38], [39]], [[40], [41]], [[40], [41], [42]], [[41], [42], [43]], [[42], [43], [44]], [[43], [44], [45]], [[44], [45], [46]], [[45], [46], [47]], [[46], [47]], [[48], [49]], [[48], [49], [50]], [[49], [50], [51]], [[50], [51], [52]], [[51], [52], [53]], [[52], [53], [54]], [[53], [54], [55]], [[54], [55]], [[56], [57]], [[56], [57], [58]], [[57], [58], [59]], [[58], [59], [60]], [[59], [60], [61]], [[60], [61], [62]], [[61], [62], [63]], [[62], [63]], [], [], [], [], [], [], [], []]}
# state=list()
# for i in range(64):
# state.append('null')
state=['r1', 'n1', 'b1', 'q', 'k', 'b2', 'n2', 'r2', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6', 'p7', 'p8', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'null', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'R1', 'N1', 'B1', 'Q', 'K', 'B2', 'N2', 'R2']
imagestack=dict()
# pawn_movement=list()
# for i in {'p1','p2','p3','p4','p5','p6','p7','p8','P1','P2','P3','P4','P5','P6','P7','P8'}:
# pawn_movement[i]=0
bp_movement=[0,0,0,0,0,0,0,0]
pair=list()
random_num=0
names=list()
possible_moves=dict()
class GameBoard(tk.Frame):
def __init__(self, parent, rows=8, columns=8, size=85, color1="white", color2="black"):
'''size is the size of a square, in pixels'''
self.rows = rows
self.columns = columns
self.size = size
self.color1 = color1
self.color2 = color2
self.pieces = {}
self.selected_piece='P4'
self.count=0
self.selection_square1=0
self.selection_square2=0
self.selection_row=0
self.selection_col=0
self.move_number=1
canvas_width = columns * size+20
canvas_height = rows * size+20
tk.Frame.__init__(self, parent)
self.canvas = tk.Canvas(self, borderwidth=5,
width=canvas_width, height=canvas_height, background="bisque",cursor="fleur")
self.canvas.pack(side="top", fill="both", expand=True, padx=2, pady=2)
# this binding will cause a refresh if the user interactively
# changes the window size
self.canvas.bind("<Configure>", self.refresh)
self.canvas.bind("<Button-1>", self.highlighter)
def random_move(self):
possible_moves=state_moves.valid_moves(state,bp_movement)
print possible_moves
names=possible_moves.keys()
random_num=random.randint(0,len(possible_moves)-1)
random_num1=random.randint(0,len(possible_moves[names[random_num]])-1)
pair=possible_moves[names[random_num]][random_num1]
# for en_passnat
if(state[pair[0]][0]=='p' and (pair[1]-pair[0]==7 or pair[1]-pair[0]==9) and state[pair[1]]=="null"):
self.selection_square2=pair[1]-8
self.deletepiece()
state[pair[1]-8]="null"
pygame.mixer.music.load("capture1.ogg")
pygame.mixer.music.play()
time.sleep(0.250)
self.selection_square2=pair[1]
if(state[pair[1]]!="null"):
self.deletepiece()
pygame.mixer.music.load("capture1.ogg")
pygame.mixer.music.play()
time.sleep(0.250)
else:
pygame.mixer.music.load("move1.ogg")
pygame.mixer.music.play()
time.sleep(0.250)
self.placepiece(names[random_num],self.selection_square2//8,self.selection_square2%8)
state[pair[1]]=state[pair[0]]
state[pair[0]]='null'
self.move_number=self.move_number+1
def transmission(self):
x1=self.selection_square1%8
y1=self.selection_square1//8
x2=self.selection_square2%8
y2=self.selection_square2//8
if (state[self.selection_square1] in {'n1','n2','N1','N2'}):
if(state[self.selection_square2]!='null'):
self.deletepiece()
pygame.mixer.music.load("capture1.ogg")
pygame.mixer.music.play()
time.sleep(0.250)
else:
pygame.mixer.music.load("move1.ogg")
pygame.mixer.music.play()
time.sleep(0.250)
return('success')
else:
diff=self.selection_square2-self.selection_square1
if(x1==x2):
if(y2>y1):
facter=8
else:
facter=-8
elif(y1==y2):
if(x2>x1):
facter=1
else:
facter=-1
elif(diff%7==0):
if(y2>y1):
facter=7
else:
facter=-7
else:
if(x2>x1):
facter=9
else:
facter=-9
i=self.selection_square1+facter
while(i!=self.selection_square2):
if(state[i]!='null'):
return('failure')
i=i+facter
if(state[self.selection_square2]!='null'):
for k in state[self.selection_square1]:
if((k=='p' or k=='P') and (facter==8 or facter==-8)):
return('failure')
if state[self.selection_square2]=='k':
print "White Won The match!!"
pygame.mixer.music.load("win2.ogg")
pygame.mixer.music.play()
time.sleep(1)
elif state[self.selection_square2]=='K':
print "Black Won The match!!"
self.deletepiece()
pygame.mixer.music.load("capture1.ogg")
pygame.mixer.music.play()
time.sleep(0.25)
else:
for k in state[self.selection_square1]:
if((k=='p' or k=='P') and (facter in {7,9,-7,-9})):
return('failure')
pygame.mixer.music.load("move1.ogg")
pygame.mixer.music.play()
time.sleep(0.250)
return('success')
def move_legality(self):
if(state[self.selection_square2]!='null'):
for i in state[self.selection_square2]:
if (i.islower() and self.selected_piece[0].islower()) or (i.isupper() and self.selected_piece[0].isupper()):
return('failure')
else:
return(self.transmission())
else:
return(self.transmission())
def move_validation(self):
for i in MOVES[self.selected_piece][self.selection_square1]:
for j in i:
if(self.selection_square2==j):
if(self.move_legality()=='success'):
self.placepiece(self.selected_piece,self.selection_square2//8,self.selection_square2%8)
if(self.selection_square1-self.selection_square2==16 and self.selected_piece[0]=='P'):
bp_movement[ord(self.selected_piece[1])-49]=1
elif(self.selected_piece[0]=='P'):
bp_movement[ord(self.selected_piece[1])-49]=-1
state[self.selection_square2]=self.selected_piece
state[self.selection_square1]='null'
self.move_number=self.move_number+1
self.random_move()
return 'task_completed'
pygame.mixer.music.load("invalid.ogg")
pygame.mixer.music.play()
def highlighter(self, event):
if(self.count%2==0 and self.move_number%2==1):
x0=event.x
y0=event.y
self.selection_col=int(x0/self.size)
self.selection_row=int(y0/self.size)
self.selection_square1=self.selection_row*8+self.selection_col
for name in self.pieces:
if(self.pieces[name][0]==self.selection_row and self.pieces[name][1]==self.selection_col):
if((name.islower() and self.move_number%2==0) or (name.isupper() and self.move_number%2==1)):
self.selected_piece=name
x1 = (self.selection_col * self.size)
y1 = (self.selection_row * self.size)
x2 = x1 + self.size
y2 = y1 + self.size
self.canvas.create_rectangle(x1+5, y1+5, x2+5, y2+5, fill="red", tags="square")
self.canvas.tag_lower("square")
self.count=self.count+1
elif(self.move_number%2==1):
if((self.selection_row+self.selection_col)%2==0):
color=self.color1
else:
color=self.color2
x1 = (self.selection_col * self.size)
y1 = (self.selection_row * self.size)
x2 = x1 + self.size
y2 = y1 + self.size
self.canvas.create_rectangle(x1+5, y1+5, x2+5, y2+5, fill=color, tags="square")
self.canvas.tag_lower("square")
self.count=self.count+1
self.selection_col=int(event.x/self.size)
self.selection_row=int(event.y/self.size)
self.selection_square2=self.selection_row*8+self.selection_col
if (self.selection_square1!=self.selection_square2):
self.move_validation()
def deletepiece(self):
del self.pieces[state[self.selection_square2]]
self.canvas.delete(imagestack[state[self.selection_square2]][0])
def addpiece(self, name, image, row=0, column=0):
'''Add a piece to the playing board'''
IMAGE=self.canvas.create_image(10,10, image=image, tags=(name, "piece"), anchor="c")
imagestack[name]=list()
imagestack[name].append(IMAGE)
self.placepiece(name, row, column)
def placepiece(self, name, row, column):
'''Place a piece at the given row/column'''
state[(row*8)+column]=name
self.pieces[name] = (row,column)
x0 = (column * self.size) + int(self.size/2)+5
y0 = (row * self.size) + int(self.size/2)+5
self.canvas.coords(name, x0, y0)
def refresh(self, event):
'''Redraw the board, possibly in response to window being resized'''
xsize = int((event.width-1) / self.columns)
ysize = int((event.height-1) / self.rows)
self.size = min(xsize, ysize)
self.canvas.delete("square")
color = self.color2
for row in range(self.rows):
color = self.color1 if color == self.color2 else self.color2
for col in range(self.columns):
x1 = (col * self.size)
y1 = (row * self.size)
x2 = x1 + self.size
y2 = y1 + self.size
self.canvas.create_rectangle(x1+5, y1+5, x2+5, y2+5, outline="black",width=0, fill=color, tags="square")
color = self.color1 if color == self.color2 else self.color2
for name in self.pieces:
self.placepiece(name, self.pieces[name][0], self.pieces[name][1])
self.canvas.tag_raise("piece")
self.canvas.tag_lower("square")
if __name__ == "__main__":
root = Tk()
# root.wm_iconbitmap(r'/home/harnish/Desktop/ChessPro0/chessicons_small/index.ico')
root.wm_title('ChessPro0')
labelframe = LabelFrame(root,text="Do Your Best to defeat Jarvis!!",foreground="red",font="papyrus",relief="sunken")
labelframe.pack(fill="both", expand="yes")
left = Label(labelframe, text="Try Your Best to Defeat Jarvis!!")
board = GameBoard(left)
board.pack(side="top", fill="both", expand="true", padx=2, pady=2)
left.pack()
pygame.mixer.music.load("start1.ogg")
pygame.mixer.music.play()
time.sleep(0.5)
#Initialisation of pieces...
#for black pieces
k = tk.PhotoImage(file="bk.png")
b = tk.PhotoImage(file="bb.png")
n = tk.PhotoImage(file="bn.png")
q = tk.PhotoImage(file="bq.png")
p = tk.PhotoImage(file="bp.png")
r = tk.PhotoImage(file="br.png")
#for white pieces
K = tk.PhotoImage(file="wk.png")
B = tk.PhotoImage(file="wb.png")
N = tk.PhotoImage(file="wn.png")
Q = tk.PhotoImage(file="wq.png")
P = tk.PhotoImage(file="wp.png")
R = tk.PhotoImage(file="wr.png")
board.addpiece("r1", r, 0,0)
board.addpiece("n1", n, 0,1)
board.addpiece("b1", b, 0,2)
board.addpiece("q", q, 0,3)
board.addpiece("k", k, 0,4)
board.addpiece("b2", b, 0,5)
board.addpiece("n2", n, 0,6)
board.addpiece("r2", r, 0,7)
board.addpiece("R1", R, 7,0)
board.addpiece("N1", N, 7,1)
board.addpiece("B1", B, 7,2)
board.addpiece("Q", Q, 7,3)
board.addpiece("K", K, 7,4)
board.addpiece("B2", B, 7,5)
board.addpiece("N2", N, 7,6)
board.addpiece("R2", R, 7,7)
board.addpiece("p2", p, 1,1)
board.addpiece("p3", p, 1,2)
board.addpiece("p1", p, 1,0)
board.addpiece("p4", p, 1,3)
board.addpiece("p5", p, 1,4)
board.addpiece("p6", p, 1,5)
board.addpiece("p7", p, 1,6)
board.addpiece("p8", p, 1,7)
board.addpiece("P1", P, 6,0)
board.addpiece("P2", P, 6,1)
board.addpiece("P3", P, 6,2)
board.addpiece("P4", P, 6,3)
board.addpiece("P5", P, 6,4)
board.addpiece("P6", P, 6,5)
board.addpiece("P7", P, 6,6)
board.addpiece("P8", P, 6,7)
root.mainloop()