forked from Gigantua/Chess_Movegen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FoldingHash.hpp
295 lines (290 loc) · 102 KB
/
FoldingHash.hpp
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
/**
* FoldingHash.hpp
*
* Copyright © 2022 Daniel Inführ
*
* This file is under MIT licence and may be used in any piece of code if you keep this message in the sourcefile
* Created by finding hashes in CUDA that map 32 bit folded rays onto 6 bit buffers on a bigger array. (2 Trillion hashes + offsets generated)
* For Questions and contact under daniel.infuehr(@)live.de
*
* Maintained by Daniel Inführ, 2022
*
* @file FoldingHash.hpp
* @author Daniel Inführ
* @copyright 2022
* @section License
*/
#pragma once
#include <stdint.h>
namespace Chess_Lookup::FoldingHash
{
struct Direction {
uint64_t mask; uint32_t mult; uint32_t offset;
};
constexpr uint64_t attacks[5956] = {
8404992ull, 16384ull, 32768ull, 0ull, 2ull, 62ull, 2ull, 6ull, 2ull, 14ull, 2ull, 6ull, 2ull, 30ull, 2ull, 6ull, 2ull, 14ull, 2ull, 6ull, 2ull, 126ull, 2ull, 6ull, 2ull, 14ull, 2ull, 6ull, 2ull, 30ull, 2ull, 6ull,
2ull, 14ull, 2ull, 6ull, 2ull, 62ull, 2ull, 6ull, 2ull, 14ull, 2ull, 6ull, 2ull, 30ull, 2ull, 6ull, 2ull, 14ull, 2ull, 6ull, 2ull, 254ull, 2ull, 6ull, 2ull, 14ull, 2ull, 6ull, 2ull, 30ull, 2ull, 6ull,
2ull, 14ull, 2ull, 6ull, 5ull, 13ull, 5ull, 29ull, 5ull, 13ull, 5ull, 61ull, 5ull, 13ull, 5ull, 29ull, 5ull, 13ull, 5ull, 125ull, 5ull, 13ull, 5ull, 29ull, 5ull, 13ull, 5ull, 61ull, 5ull, 13ull, 5ull, 29ull,
5ull, 13ull, 5ull, 253ull, 10ull, 26ull, 10ull, 58ull, 10ull, 26ull, 10ull, 122ull, 10ull, 26ull, 10ull, 58ull, 10ull, 26ull, 10ull, 250ull, 11ull, 27ull, 11ull, 59ull, 11ull, 27ull, 11ull, 123ull, 11ull, 27ull, 11ull, 59ull,
11ull, 27ull, 11ull, 251ull, 116ull, 244ull, 116ull, 244ull, 118ull, 246ull, 119ull, 247ull, 2048ull, 2048ull, 4096ull, 141012904183808ull, 275415828480ull, 1050624ull, 2101248ull, 1075843072ull, 20ull, 8192ull, 20ull, 2097160ull, 22ull, 1048580ull, 23ull, 550831652872ull, 2151686144ull, 4202496ull, 4096ull, 2151677968ull,
537919492ull, 537919492ull, 2101248ull, 550831656960ull, 52ull, 4194320ull, 52ull, 2097160ull, 54ull, 8388640ull, 55ull, 1075838984ull, 2048ull, 2048ull, 64ull, 537921536ull, 537921536ull, 1050624ull, 550829559808ull, 550829559816ull, 20ull, 2147491840ull, 20ull, 2147491856ull, 22ull, 1048580ull, 23ull, 40ull, 40ull, 44ull, 46ull, 47ull,
141012904181764ull, 275415826436ull, 1073745920ull, 1073745928ull, 104ull, 104ull, 108ull, 110ull, 111ull, 16416ull, 16384ull, 4406636445696ull, 8589934592ull, 40ull, 40ull, 44ull, 46ull, 47ull, 288793326105133056ull, 2256206450130944ull, 1155177711056977920ull, 8589934592ull, 232ull, 232ull, 236ull, 238ull, 239ull, 80ull, 80ull, 80ull, 80ull, 80ull,
88ull, 88ull, 92ull, 94ull, 95ull, 17179934720ull, 562949953421312ull, 4512412900327424ull, 2310355422114021376ull, 17179934720ull, 577586656505233408ull, 8813272956928ull, 1125904201809920ull, 208ull, 208ull, 208ull, 208ull, 208ull, 216ull, 216ull, 220ull, 222ull, 223ull, 191ull, 190ull, 188ull, 184ull, 184ull, 176ull, 176ull, 176ull, 176ull,
160ull, 160ull, 160ull, 160ull, 160ull, 160ull, 160ull, 160ull, 141012367312900ull, 141012367312896ull, 274878957572ull, 274878957568ull, 127ull, 126ull, 124ull, 120ull, 120ull, 112ull, 112ull, 112ull, 112ull, 96ull, 96ull, 96ull, 96ull, 96ull, 96ull, 96ull, 96ull, 64ull, 64ull, 64ull,
64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 64ull, 3584ull, 144115188075855872ull, 512ull, 141012367310848ull, 1536ull, 274878955520ull, 512ull, 549757915136ull, 32256ull, 65024ull, 512ull, 32000ull, 1536ull, 1280ull, 512ull, 3328ull, 3584ull, 1280ull,
512ull, 7424ull, 1536ull, 1280ull, 512ull, 3328ull, 7680ull, 1280ull, 512ull, 15616ull, 1536ull, 1280ull, 512ull, 3328ull, 3584ull, 1280ull, 512ull, 7424ull, 1536ull, 1280ull, 512ull, 3328ull, 15872ull, 1280ull, 512ull, 64768ull, 1536ull, 1280ull, 512ull, 3328ull, 3584ull, 1280ull,
512ull, 7424ull, 1536ull, 1280ull, 512ull, 3328ull, 7680ull, 1280ull, 512ull, 15616ull, 1536ull, 1280ull, 512ull, 3328ull, 549757911040ull, 1280ull, 549757915144ull, 7424ull, 549757911040ull, 1280ull, 4194304ull, 3328ull, 288231475663339520ull, 1280ull, 4202496ull, 4202512ull, 281474976710656ull, 2560ull, 6656ull, 2560ull, 14848ull, 2560ull,
6656ull, 2560ull, 31232ull, 2560ull, 6656ull, 2560ull, 14848ull, 2560ull, 6656ull, 2560ull, 64000ull, 2816ull, 6912ull, 2816ull, 15104ull, 2816ull, 6912ull, 2816ull, 31488ull, 2816ull, 6912ull, 2816ull, 15104ull, 2816ull, 6912ull, 2816ull, 64256ull, 5120ull, 62464ull, 29696ull, 2251808420397056ull, 5632ull,
1128098930098176ull, 14080ull, 61184ull, 60928ull, 60416ull, 60416ull, 59392ull, 59392ull, 59392ull, 59392ull, 62464ull, 29696ull, 577588851233521664ull, 5120ull, 2199023255552ull, 13824ull, 1155173313010466816ull, 5888ull, 12032ull, 11776ull, 11264ull, 11264ull, 10240ull, 10240ull, 10240ull, 10240ull, 2199023255552ull, 5120ull, 1155177702483820544ull, 13312ull, 1155173313027244032ull, 5632ull,
63232ull, 30464ull, 28416ull, 28160ull, 27648ull, 27648ull, 26624ull, 26624ull, 26624ull, 26624ull, 576462951326679040ull, 13312ull, 4398063288320ull, 5120ull, 62976ull, 30208ull, 2251808403619840ull, 5888ull, 12032ull, 11776ull, 11264ull, 11264ull, 10240ull, 10240ull, 10240ull, 57088ull, 56832ull, 56320ull, 55296ull, 55296ull, 53248ull, 53248ull,
53248ull, 53248ull, 53248ull, 4398063288320ull, 2256197876973568ull, 576462955621646336ull, 4512395753947136ull, 2310355404967641088ull, 1152925902653358080ull, 8796126576640ull, 1152925911260069888ull, 24320ull, 24064ull, 23552ull, 22528ull, 22528ull, 20480ull, 20480ull, 20480ull, 20480ull, 20480ull, 564049465049088ull, 40960ull, 40960ull, 40960ull, 40960ull, 40960ull, 40960ull, 40960ull, 40960ull, 45056ull, 45056ull,
45056ull, 45056ull, 47104ull, 47104ull, 48128ull, 48640ull, 48896ull, 4512395754012672ull, 2310355404967706624ull, 1152925902653358080ull, 8796126642176ull, 1152925911243292672ull, 562949953421312ull, 256ull, 32512ull, 32256ull, 31744ull, 30720ull, 30720ull, 28672ull, 28672ull, 28672ull, 28672ull, 24576ull, 24576ull, 24576ull, 24576ull, 24576ull, 24576ull, 24576ull, 24576ull, 16384ull,
16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 1966080ull, 512ull, 131072ull, 66048ull, 393216ull, 1128103225065472ull, 131072ull, 851968ull, 917504ull, 140738026276868ull, 131072ull, 327680ull, 393216ull, 1128098930098176ull, 131072ull, 1900544ull, 8257536ull,
16646144ull, 131072ull, 327680ull, 393216ull, 1125899906842624ull, 131072ull, 851968ull, 917504ull, 140738025226240ull, 131072ull, 327680ull, 393216ull, 1125899906842624ull, 131072ull, 3997696ull, 1966080ull, 65540ull, 131072ull, 327680ull, 393216ull, 140738025226240ull, 131072ull, 851968ull, 917504ull, 140738026274816ull, 131072ull, 327680ull, 393216ull, 140738025226240ull, 131072ull, 1900544ull, 4063232ull,
1024ull, 131072ull, 327680ull, 393216ull, 140738026274816ull, 131072ull, 851968ull, 917504ull, 140738025226240ull, 131072ull, 327680ull, 393216ull, 140738026276864ull, 131072ull, 8192000ull, 16580608ull, 16909312ull, 132096ull, 327680ull, 16449536ull, 720896ull, 1769472ull, 720896ull, 3866624ull, 720896ull, 1769472ull, 720896ull, 8060928ull, 720896ull, 1769472ull, 720896ull, 3866624ull,
720896ull, 1769472ull, 720896ull, 16384000ull, 655360ull, 1703936ull, 655360ull, 3801088ull, 655360ull, 1703936ull, 655360ull, 7995392ull, 655360ull, 1703936ull, 655360ull, 3801088ull, 655360ull, 1703936ull, 655360ull, 1310720ull, 1441792ull, 1507328ull, 16908296ull, 131080ull, 3407872ull, 3538944ull, 3604480ull, 2251799813685248ull, 33816592ull, 1310720ull, 1441792ull, 1507328ull,
1075838976ull, 33554432ull, 7602176ull, 7733248ull, 7798784ull, 8813306445824ull, 262160ull, 1310720ull, 1441792ull, 1507328ull, 2251799813685248ull, 17213423616ull, 3407872ull, 3538944ull, 3604480ull, 512ull, 1073741824ull, 1310720ull, 1441792ull, 1507328ull, 33554432ull, 33554432ull, 15990784ull, 16121856ull, 16187392ull, 15663104ull, 15597568ull, 15466496ull, 15204352ull, 15204352ull, 2310355422147510272ull, 4512412933816320ull,
1075843072ull, 1075843080ull, 3080192ull, 3014656ull, 2883584ull, 2621440ull, 2621440ull, 516ull, 33554432ull, 4328783888ull, 2256197860196352ull, 7274496ull, 7208960ull, 7077888ull, 6815744ull, 6815744ull, 1073741824ull, 1073741824ull, 17213423616ull, 262160ull, 3080192ull, 3014656ull, 2883584ull, 2621440ull, 2621440ull, 2256206466908160ull, 2256206450130944ull, 33554432ull, 5242880ull, 5242880ull, 5242880ull, 5242880ull,
5767168ull, 5767168ull, 6029312ull, 6160384ull, 6225920ull, 16778240ull, 16778248ull, 4328523776ull, 33556480ull, 4328523792ull, 33556496ull, 132104ull, 132096ull, 13631488ull, 13631488ull, 13631488ull, 13631488ull, 14155776ull, 14155776ull, 14417920ull, 14548992ull, 14614528ull, 12517376ull, 12451840ull, 12320768ull, 12058624ull, 12058624ull, 11534336ull, 11534336ull, 11534336ull, 11534336ull, 10485760ull,
10485760ull, 10485760ull, 10485760ull, 10485760ull, 10485760ull, 10485760ull, 10485760ull, 10485760ull, 131072ull, 8323072ull, 8257536ull, 8126464ull, 7864320ull, 7864320ull, 7340032ull, 7340032ull, 7340032ull, 7340032ull, 6291456ull, 6291456ull, 6291456ull, 6291456ull, 6291456ull, 6291456ull, 6291456ull, 6291456ull, 6291456ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull,
4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 4194304ull, 33554432ull, 503316480ull, 33554432ull, 100663296ull, 33554432ull, 234881024ull, 33554432ull, 100663296ull, 33554432ull, 1040187392ull, 33554432ull, 100663296ull, 33554432ull, 234881024ull, 33554432ull, 100663296ull, 33554432ull, 503316480ull, 33554432ull, 100663296ull,
33554432ull, 234881024ull, 33554432ull, 100663296ull, 33554432ull, 4261412864ull, 33554432ull, 100663296ull, 33554432ull, 234881024ull, 33554432ull, 100663296ull, 33554432ull, 503316480ull, 33554432ull, 100663296ull, 33554432ull, 234881024ull, 33554432ull, 100663296ull, 33554432ull, 1040187392ull, 33554432ull, 100663296ull, 33554432ull, 234881024ull, 33554432ull, 100663296ull, 33554432ull, 503316480ull, 33554432ull, 100663296ull,
33554432ull, 234881024ull, 33554432ull, 100663296ull, 33554432ull, 2113929216ull, 33554432ull, 100663296ull, 33554432ull, 234881024ull, 33554432ull, 100663296ull, 4244635648ull, 83886080ull, 218103808ull, 83886080ull, 486539264ull, 83886080ull, 218103808ull, 83886080ull, 1023410176ull, 83886080ull, 218103808ull, 83886080ull, 486539264ull, 83886080ull, 218103808ull, 83886080ull, 2097152000ull, 83886080ull, 218103808ull, 83886080ull,
486539264ull, 83886080ull, 218103808ull, 83886080ull, 1023410176ull, 83886080ull, 218103808ull, 83886080ull, 486539264ull, 83886080ull, 218103808ull, 83886080ull, 4211081216ull, 4194304000ull, 184549376ull, 167772160ull, 452984832ull, 436207616ull, 184549376ull, 167772160ull, 989855744ull, 973078528ull, 184549376ull, 167772160ull, 452984832ull, 436207616ull, 184549376ull, 167772160ull, 2063597568ull, 2046820352ull, 184549376ull, 167772160ull,
452984832ull, 436207616ull, 184549376ull, 167772160ull, 989855744ull, 973078528ull, 184549376ull, 167772160ull, 452984832ull, 436207616ull, 184549376ull, 167772160ull, 335544320ull, 905969664ull, 335544320ull, 385875968ull, 1946157056ull, 369098752ull, 872415232ull, 922746880ull, 335544320ull, 4127195136ull, 524320ull, 4295229440ull, 34426847488ull, 4295231504ull, 9024825867632896ull, 4620710844295020800ull, 67109120ull, 1108169195552ull, 8657567776ull, 67633184ull,
67633184ull, 369098752ull, 872415232ull, 922746880ull, 335544320ull, 1979711488ull, 335544320ull, 385875968ull, 872415232ull, 369098752ull, 4093640704ull, 4143972352ull, 671088640ull, 3892314112ull, 17626612891904ull, 4295229440ull, 3892314112ull, 4295231488ull, 33554432ull, 67109120ull, 3892314112ull, 33554432ull, 335544320ull, 385875968ull, 872415232ull, 369098752ull, 1946157056ull, 1996488704ull, 335544320ull, 905969664ull, 335544320ull, 385875968ull,
4093640704ull, 33818640ull, 33818624ull, 788529152ull, 33816576ull, 34426847488ull, 67109120ull, 771751936ull, 67109120ull, 67109120ull, 738197504ull, 1862270976ull, 580999538450366464ull, 4538786146942976ull, 738197504ull, 1845493760ull, 35186519572480ull, 671088640ull, 1811939328ull, 788529152ull, 524320ull, 671088640ull, 1811939328ull, 771751936ull, 671088640ull, 1744830464ull, 738197504ull, 4009754624ull, 671088640ull, 1744830464ull, 738197504ull, 3992977408ull,
1744830464ull, 671088640ull, 3959422976ull, 9007749010554880ull, 1744830464ull, 671088640ull, 3959422976ull, 1161929253617401856ull, 671088640ull, 3892314112ull, 1342177280ull, 3489660928ull, 1342177280ull, 3489660928ull, 1342177280ull, 3489660928ull, 1342177280ull, 3489660928ull, 1476395008ull, 3623878656ull, 1476395008ull, 3623878656ull, 1543503872ull, 3690987520ull, 1577058304ull, 3741319168ull, 3204448256ull, 3154116608ull, 3087007744ull, 3087007744ull, 2952790016ull, 2952790016ull,
2952790016ull, 2952790016ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 3489660928ull, 1342177280ull, 3489660928ull, 1342177280ull, 3489660928ull, 1342177280ull, 3489660928ull, 1342177280ull, 3623878656ull, 1476395008ull, 3623878656ull, 1476395008ull, 3690987520ull, 1543503872ull, 3724541952ull, 1593835520ull, 3187671040ull, 3154116608ull, 3087007744ull, 3087007744ull, 2952790016ull, 2952790016ull,
2952790016ull, 2952790016ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 2684354560ull, 1610612736ull, 1073741824ull, 2013265920ull, 1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 2113929216ull, 1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 1073741824ull, 1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 1073741824ull, 1610612736ull, 1073741824ull, 2013265920ull, 1610612736ull,
1073741824ull, 1610612736ull, 1073741824ull, 2080374784ull, 1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 2130706432ull, 1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 1073741824ull, 1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 1073741824ull, 1610612736ull, 1073741824ull, 2013265920ull, 1610612736ull, 1073741824ull, 1610612736ull, 1073741824ull, 2080374784ull, 1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 1073741824ull,
1610612736ull, 1073741824ull, 1879048192ull, 1073741824ull, 1073741824ull, 1610612736ull, 1073741824ull, 2013265920ull, 1073741824ull, 1073741824ull, 25769803776ull, 2310346626020933632ull, 8589934592ull, 2310346626020933632ull, 266287972352ull, 4503616807239680ull, 8589934592ull, 4503616807239680ull, 25769803776ull, 18014398509481984ull, 8589934592ull, 2323857407723175936ull, 60129542144ull, 2310346626054553600ull, 8589934592ull, 2310346626054488064ull, 25769803776ull, 4503616840859648ull, 8589934592ull, 4503616840794112ull, 128849018880ull, 70368744177664ull,
8589934592ull, 67112960ull, 25769803776ull, 70368744177664ull, 8589934592ull, 1108168675328ull, 60129542144ull, 1161999072605765632ull, 8589934592ull, 1152991873351024640ull, 25769803776ull, 9077567998918656ull, 8589934592ull, 67112992ull, 541165879296ull, 1090921693184ull, 8589934592ull, 1108168675360ull, 25769803776ull, 21474836480ull, 8589934592ull, 67112960ull, 60129542144ull, 55834574848ull, 8589934592ull, 8657047552ull, 25769803776ull, 21474836480ull, 8589934592ull, 8589934592ull, 128849018880ull, 261993005056ull,
8589934592ull, 67112992ull, 25769803776ull, 21474836480ull, 8589934592ull, 8657047584ull, 60129542144ull, 55834574848ull, 8589934592ull, 1099578736640ull, 47244640256ull, 21474836480ull, 42949672960ull, 1152992423106838528ull, 1099579260928ull, 124554051584ull, 1099578736640ull, 1099578736640ull, 115964116992ull, 21474836480ull, 111669149696ull, 1099579265024ull, 1099579265056ull, 55834574848ull, 36099303471054850ull, 70506452090882ull, 47244640256ull, 21474836480ull, 42949672960ull, 42949672960ull, 137707913218ull, 536870912000ull,
1086626725888ull, 524290ull, 253403070464ull, 21474836480ull, 523986010112ull, 1073741824000ull, 524290ull, 55834574848ull, 268959746ull, 268959746ull, 47244640256ull, 21474836480ull, 42949672960ull, 2305983746702049280ull, 268959746ull, 124554051584ull, 1108102086656ull, 524290ull, 115964116992ull, 4503876652761088ull, 111669149696ull, 4611686018427387904ull, 524290ull, 85899345920ull, 98784247808ull, 94489280512ull, 47244640256ull, 47244640256ull, 42949672960ull, 18155135997837312ull, 223338299392ull, 236223201280ull,
231928233984ull, 580964628956184576ull, 528280977408ull, 1078036791296ull, 249108103168ull, 85899345920ull, 98784247808ull, 94489280512ull, 8590462976ull, 8590463008ull, 1108102090752ull, 1108102090784ull, 498216206336ull, 511101108224ull, 506806140928ull, 171798691840ull, 188978561024ull, 201863462912ull, 4503874505277440ull, 85899345920ull, 98784247808ull, 94489280512ull, 446676598784ull, 463856467968ull, 476741369856ull, 264192ull, 223338299392ull, 236223201280ull, 231928233984ull, 171798691840ull, 188978561024ull, 201863462912ull,
580964626808700928ull, 85899345920ull, 98784247808ull, 94489280512ull, 996432412672ull, 1013612281856ull, 1026497183744ull, 2048ull, 1047972020224ull, 1060856922112ull, 1056561954816ull, 2305851822520205312ull, 2305851822520139776ull, 2305851805306716160ull, 8590458880ull, 171798691840ull, 171798691840ull, 188978561024ull, 197568495616ull, 4328785920ull, 33818624ull, 18014398509481984ull, 446676598784ull, 446676598784ull, 463856467968ull, 472446402560ull, 2305851822486585344ull, 576495936675512320ull, 2305851805306716160ull, 171798691840ull, 171798691840ull, 188978561024ull,
197568495616ull, 576496213700902912ull, 2048ull, 36028797018963968ull, 996432412672ull, 996432412672ull, 1013612281856ull, 1022202216448ull, 343597383680ull, 343597383680ull, 343597383680ull, 343597383680ull, 343597383680ull, 377957122048ull, 377957122048ull, 377957122048ull, 395136991232ull, 408021893120ull, 403726925824ull, 0ull, 2269529447071744ull, 290499905598783488ull, 17729633386496ull, 576495936675512320ull, 264192ull, 137447342080ull, 137447342080ull, 137447342080ull, 576496211553419264ull, 893353197568ull, 893353197568ull, 893353197568ull,
893353197568ull, 893353197568ull, 893353197568ull, 927712935936ull, 927712935936ull, 927712935936ull, 944892805120ull, 957777707008ull, 953482739712ull, 687194767360ull, 687194767360ull, 687194767360ull, 687194767360ull, 687194767360ull, 687194767360ull, 687194767360ull, 687194767360ull, 755914244096ull, 755914244096ull, 755914244096ull, 755914244096ull, 790273982464ull, 790273982464ull, 807453851648ull, 820338753536ull, 816043786240ull, 35459249995776ull, 4539058877366272ull, 580999811180789760ull, 274877906944ull, 274877906944ull, 274877906944ull,
274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 274877906944ull, 412316860416ull, 412316860416ull, 412316860416ull, 412316860416ull, 412316860416ull, 412316860416ull, 412316860416ull, 412316860416ull, 481036337152ull, 481036337152ull, 481036337152ull, 481036337152ull, 515396075520ull, 515396075520ull, 532575944704ull, 545460846592ull, 541165879296ull, 15393162788864ull, 17593259786240ull,
2199023255552ull, 0ull, 6597069766656ull, 2269393073471488ull, 2199023255552ull, 14293651161088ull, 68169720922112ull, 17593259786240ull, 2199023255552ull, 5497558138880ull, 6597069766656ull, 290499769225183232ull, 2199023255552ull, 31885837205504ull, 15393162788864ull, 17593268174848ull, 2199023255552ull, 5497558138880ull, 6597069766656ull, 2269393081860096ull, 2199023255552ull, 14293651161088ull, 32985348833280ull, 17593268174848ull, 2199023255552ull, 5497558138880ull, 6597069766656ull, 290499769233571840ull, 2199023255552ull, 67070209294336ull, 15393162788864ull, 9007199254740992ull,
2199023255552ull, 5497558138880ull, 6597069766656ull, 9007199254740992ull, 2199023255552ull, 14293651161088ull, 138538465099776ull, 279275953455104ull, 2199023255552ull, 5497558138880ull, 6597069766656ull, 9077567998918656ull, 2199023255552ull, 31885837205504ull, 15393162788864ull, 9078117754732544ull, 2199023255552ull, 5497558138880ull, 6597069766656ull, 4503599627370496ull, 2199023255552ull, 14293651161088ull, 32985348833280ull, 0ull, 2199023255552ull, 5497558138880ull, 6597069766656ull, 0ull, 2199023255552ull, 137438953472000ull, 278176441827328ull, 275977418571776ull,
12094627905536ull, 5497558138880ull, 29686813949952ull, 12094627905536ull, 64871186038784ull, 12094627905536ull, 29686813949952ull, 12094627905536ull, 135239930216448ull, 12094627905536ull, 29686813949952ull, 12094627905536ull, 64871186038784ull, 12094627905536ull, 29686813949952ull, 12094627905536ull, 274877906944000ull, 10995116277760ull, 28587302322176ull, 10995116277760ull, 63771674411008ull, 10995116277760ull, 28587302322176ull, 10995116277760ull, 134140418588672ull, 10995116277760ull, 28587302322176ull, 10995116277760ull, 63771674411008ull, 10995116277760ull, 28587302322176ull, 10995116277760ull,
21990232555520ull, 24189255811072ull, 25288767438848ull, 0ull, 0ull, 57174604644352ull, 59373627899904ull, 60473139527680ull, 4539058877366272ull, 4539061024849920ull, 21990232555520ull, 24189255811072ull, 25288767438848ull, 4538783999459328ull, 4503599627370496ull, 127543348822016ull, 129742372077568ull, 130841883705344ull, 0ull, 0ull, 21990232555520ull, 24189255811072ull, 25288767438848ull, 0ull, 4503599627370496ull, 57174604644352ull, 59373627899904ull, 60473139527680ull, 0ull, 0ull, 21990232555520ull, 24189255811072ull,
25288767438848ull, 0ull, 4512395720392704ull, 268280837177344ull, 270479860432896ull, 271579372060672ull, 43980465111040ull, 43980465111040ull, 43980465111040ull, 48378511622144ull, 50577534877696ull, 51677046505472ull, 4512395720392704ull, 0ull, 0ull, 0ull, 114349209288704ull, 114349209288704ull, 114349209288704ull, 118747255799808ull, 120946279055360ull, 122045790683136ull, 4512412933881856ull, 4512412900261888ull, 0ull, 4503599627370496ull, 43980465111040ull, 43980465111040ull, 43980465111040ull, 48378511622144ull, 50577534877696ull, 51677046505472ull,
4512412933816320ull, 4512412900261888ull, 0ull, 4503599627370496ull, 255086697644032ull, 255086697644032ull, 255086697644032ull, 259484744155136ull, 261683767410688ull, 262783279038464ull, 245191092994048ull, 244091581366272ull, 241892558110720ull, 237494511599616ull, 237494511599616ull, 228698418577408ull, 228698418577408ull, 228698418577408ull, 228698418577408ull, 228698418577408ull, 70369013138432ull, 70369013138434ull, 36099166032102400ull, 36099166032102402ull, 70369013137408ull, 0ull, 36099166032101376ull, 0ull, 0ull, 104453604638720ull, 103354093010944ull, 101155069755392ull,
96757023244288ull, 96757023244288ull, 87960930222080ull, 87960930222080ull, 87960930222080ull, 87960930222080ull, 87960930222080ull, 175921860444160ull, 175921860444160ull, 175921860444160ull, 175921860444160ull, 175921860444160ull, 175921860444160ull, 175921860444160ull, 175921860444160ull, 175921860444160ull, 193514046488576ull, 193514046488576ull, 193514046488576ull, 193514046488576ull, 202310139510784ull, 202310139510784ull, 206708186021888ull, 208907209277440ull, 210006720905216ull, 0ull, 0ull, 0ull, 70369012613120ull, 70369012613120ull, 36099166031577088ull, 36099166031577088ull,
70369012613120ull, 0ull, 36099166031577088ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 70368744177664ull, 105553116266496ull, 105553116266496ull, 105553116266496ull, 105553116266496ull, 105553116266496ull, 105553116266496ull, 105553116266496ull, 105553116266496ull, 123145302310912ull, 123145302310912ull, 123145302310912ull, 123145302310912ull, 131941395333120ull,
131941395333120ull, 136339441844224ull, 138538465099776ull, 139637976727552ull, 562949953421312ull, 2251938326380544ull, 3940649673949184ull, 0ull, 562949953421312ull, 2251937252638720ull, 1688849860263936ull, 1407374883553280ull, 562949953421312ull, 290482314478092288ull, 8444249301319680ull, 3659174697238528ull, 562949953421312ull, 290482313404350464ull, 1688849860263936ull, 1407374883553280ull, 562949953421312ull, 2251938334769152ull, 3940649673949184ull, 8162774324609024ull, 562949953421312ull, 2251937252638720ull, 1688849860263936ull, 1407374883553280ull, 562949953421312ull, 290482314486480896ull, 17451448556060672ull, 3659174697238528ull,
562949953421312ull, 290482313404350464ull, 1688849860263936ull, 1407374883553280ull, 562949953421312ull, 0ull, 3940649673949184ull, 17169973579350016ull, 562949953421312ull, 0ull, 1688849860263936ull, 1407374883553280ull, 562949953421312ull, 0ull, 8444249301319680ull, 3659174697238528ull, 562949953421312ull, 0ull, 1688849860263936ull, 1407374883553280ull, 562949953421312ull, 0ull, 3940649673949184ull, 8162774324609024ull, 562949953421312ull, 0ull, 1688849860263936ull, 1407374883553280ull, 562949953421312ull, 71494644084506624ull, 35465847065542656ull, 3659174697238528ull,
562949953421312ull, 0ull, 1688849860263936ull, 1407374883553280ull, 0ull, 0ull, 71213169107795968ull, 35184372088832000ull, 3096224743817216ull, 7599824371187712ull, 3096224743817216ull, 16607023625928704ull, 3096224743817216ull, 7599824371187712ull, 3096224743817216ull, 34621422135410688ull, 3096224743817216ull, 7599824371187712ull, 3096224743817216ull, 16607023625928704ull, 3096224743817216ull, 7599824371187712ull, 3096224743817216ull, 70650219154374656ull, 2814749767106560ull, 7318349394477056ull, 2814749767106560ull, 16325548649218048ull, 2814749767106560ull, 7318349394477056ull, 2814749767106560ull, 34339947158700032ull,
2814749767106560ull, 7318349394477056ull, 2814749767106560ull, 16325548649218048ull, 2814749767106560ull, 7318349394477056ull, 2814749767106560ull, 70368744177664000ull, 68679894317400064ull, 5629499534213120ull, 14636698788954112ull, 5629499534213120ull, 32651097298436096ull, 5629499534213120ull, 14636698788954112ull, 5629499534213120ull, 68679894317400064ull, 5629499534213120ull, 14636698788954112ull, 5629499534213120ull, 32651097298436096ull, 5629499534213120ull, 14636698788954112ull, 5629499534213120ull, 69242844270821376ull, 6192449487634432ull, 15199648742375424ull, 6192449487634432ull, 33214047251857408ull, 6192449487634432ull, 15199648742375424ull, 6192449487634432ull,
69524319247532032ull, 6473924464345088ull, 15481123719086080ull, 6473924464345088ull, 33495522228568064ull, 6473924464345088ull, 15481123719086080ull, 6473924464345088ull, 11258999068426240ull, 11258999068426240ull, 11258999068426240ull, 12384898975268864ull, 12947848928690176ull, 13229323905400832ull, 0ull, 0ull, 0ull, 0ull, 29273397577908224ull, 29273397577908224ull, 29273397577908224ull, 30399297484750848ull, 30962247438172160ull, 31243722414882816ull, 288248105776709632ull, 288248106858840064ull, 288247968337756160ull, 0ull, 11258999068426240ull, 11258999068426240ull, 11258999068426240ull, 12384898975268864ull,
12947848928690176ull, 13229323905400832ull, 0ull, 0ull, 0ull, 0ull, 65302194596872192ull, 65302194596872192ull, 65302194596872192ull, 66428094503714816ull, 66991044457136128ull, 67272519433846784ull, 0ull, 0ull, 22517998136852480ull, 22517998136852480ull, 22517998136852480ull, 22517998136852480ull, 24769797950537728ull, 24769797950537728ull, 25895697857380352ull, 26458647810801664ull, 26740122787512320ull, 0ull, 288248105776709632ull, 288248106850451456ull, 288247968337756160ull, 0ull, 35465847065542656ull, 35747322042253312ull, 0ull, 58546795155816448ull,
58546795155816448ull, 58546795155816448ull, 58546795155816448ull, 60798594969501696ull, 60798594969501696ull, 61924494876344320ull, 62487444829765632ull, 62768919806476288ull, 53761720551735296ull, 53480245575024640ull, 52917295621603328ull, 51791395714760704ull, 51791395714760704ull, 49539595901075456ull, 49539595901075456ull, 49539595901075456ull, 49539595901075456ull, 45035996273704960ull, 45035996273704960ull, 45035996273704960ull, 45035996273704960ull, 45035996273704960ull, 45035996273704960ull, 45035996273704960ull, 45035996273704960ull, 45035996273704960ull, 0ull, 0ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull,
18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 27021597764222976ull, 27021597764222976ull, 27021597764222976ull, 27021597764222976ull, 27021597764222976ull, 27021597764222976ull, 27021597764222976ull, 27021597764222976ull, 31525197391593472ull, 31525197391593472ull, 31525197391593472ull, 31525197391593472ull, 33776997205278720ull, 33776997205278720ull, 34902897112121344ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull,
2161727821137838080ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 18302628885633695744ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 2161727821137838080ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 4467570830351532032ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull,
2161727821137838080ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 9079256848778919936ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 2161727821137838080ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 1008806316530991104ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 4467570830351532032ull, 144115188075855872ull, 432345564227567616ull, 144115188075855872ull, 18230571291595767808ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull,
2089670227099910144ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull, 4395513236313604096ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull, 2089670227099910144ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull, 9007199254740992000ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull, 2089670227099910144ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull, 4395513236313604096ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull, 2089670227099910144ull, 360287970189639680ull, 936748722493063168ull, 360287970189639680ull, 18086456103519911936ull, 18014398509481984000ull, 792633534417207296ull, 720575940379279360ull,
1945555039024054272ull, 1873497444986126336ull, 792633534417207296ull, 720575940379279360ull, 4251398048237748224ull, 4179340454199820288ull, 792633534417207296ull, 720575940379279360ull, 1945555039024054272ull, 1873497444986126336ull, 792633534417207296ull, 720575940379279360ull, 8863084066665136128ull, 8791026472627208192ull, 792633534417207296ull, 720575940379279360ull, 1945555039024054272ull, 1873497444986126336ull, 792633534417207296ull, 720575940379279360ull, 4251398048237748224ull, 4179340454199820288ull, 792633534417207296ull, 720575940379279360ull, 1945555039024054272ull, 1873497444986126336ull, 792633534417207296ull, 720575940379279360ull, 1441151880758558720ull, 3891110078048108544ull, 1441151880758558720ull, 1657324662872342528ull,
8358680908399640576ull, 1585267068834414592ull, 3746994889972252672ull, 3963167672086036480ull, 1441151880758558720ull, 17726168133330272256ull, 0ull, 0ull, 4620693252108976128ull, 4620693252108976128ull, 0ull, 9007233681588224ull, 9007233681588224ull, 4620693252041867264ull, 0ull, 0ull, 9007233614479360ull, 1585267068834414592ull, 3746994889972252672ull, 3963167672086036480ull, 1441151880758558720ull, 8502796096475496448ull, 1441151880758558720ull, 1657324662872342528ull, 3746994889972252672ull, 1585267068834414592ull, 17582052945254416384ull, 17798225727368200192ull, 2882303761517117440ull, 16717361816799281152ull, 0ull, 0ull,
16717361816799281152ull, 0ull, 0ull, 0ull, 16717361816799281152ull, 0ull, 1441151880758558720ull, 1657324662872342528ull, 3746994889972252672ull, 1585267068834414592ull, 8358680908399640576ull, 8574853690513424384ull, 1441151880758558720ull, 3891110078048108544ull, 1441151880758558720ull, 1657324662872342528ull, 17582052945254416384ull, 4620693252109107456ull, 4620693252109107200ull, 3386706919782612992ull, 9007233681719552ull, 9007233681719296ull, 4620693252041867264ull, 3314649325744685056ull, 0ull, 9007233614479360ull, 3170534137668829184ull, 7998392938210000896ull, 0ull, 0ull, 3170534137668829184ull, 7926335344172072960ull,
0ull, 2882303761517117440ull, 7782220156096217088ull, 3386706919782612992ull, 0ull, 2882303761517117440ull, 7782220156096217088ull, 3314649325744685056ull, 2882303761517117440ull, 7493989779944505344ull, 3170534137668829184ull, 17221764975064776704ull, 2882303761517117440ull, 7493989779944505344ull, 3170534137668829184ull, 17149707381026848768ull, 7493989779944505344ull, 2882303761517117440ull, 17005592192950992896ull, 0ull, 7493989779944505344ull, 2882303761517117440ull, 17005592192950992896ull, 0ull, 2882303761517117440ull, 16717361816799281152ull, 12682136550675316736ull, 12682136550675316736ull, 11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull,
11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull, 14987979559889010688ull, 5764607523034234880ull, 14987979559889010688ull, 5764607523034234880ull, 14987979559889010688ull, 5764607523034234880ull, 14987979559889010688ull, 5764607523034234880ull, 15564440312192434176ull, 6341068275337658368ull, 15564440312192434176ull, 6341068275337658368ull, 15852670688344145920ull, 6629298651489370112ull, 15996785876420001792ull, 6845471433603153920ull, 13690942867206307840ull, 13546827679130451968ull, 13258597302978740224ull, 13258597302978740224ull, 12682136550675316736ull, 12682136550675316736ull, 12682136550675316736ull, 12682136550675316736ull, 11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull,
11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull, 11529215046068469760ull, 5764607523034234880ull, 14987979559889010688ull, 5764607523034234880ull, 14987979559889010688ull, 5764607523034234880ull, 14987979559889010688ull, 5764607523034234880ull, 14987979559889010688ull, 6341068275337658368ull, 15564440312192434176ull, 6341068275337658368ull, 15564440312192434176ull, 6629298651489370112ull, 15852670688344145920ull, 6773413839565225984ull, 16068843470457929728ull, 13763000461244235776ull, 13546827679130451968ull, 13258597302978740224ull, 13258597302978740224ull, 12682136550675316736ull, 12682136550675316736ull, 4611686018427387904ull, 8070450532247928832ull, 4611686018427387904ull, 8646911284551352320ull, 4611686018427387904ull, 8646911284551352320ull,
4611686018427387904ull, 8935141660703064064ull, 4611686018427387904ull, 9151314442816847872ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 8070450532247928832ull, 4611686018427387904ull, 8070450532247928832ull, 4611686018427387904ull, 8070450532247928832ull, 4611686018427387904ull, 8070450532247928832ull, 4611686018427387904ull, 8646911284551352320ull, 4611686018427387904ull, 8646911284551352320ull, 4611686018427387904ull,
8935141660703064064ull, 4611686018427387904ull, 9079256848778919936ull, 4611686018427387904ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 6917529027641081856ull, 4611686018427387904ull, 8070450532247928832ull, 4611686018427387904ull, 8070450532247928832ull, 4611686018427387904ull, 8070450532247928832ull, 268436482ull, 0ull, 0ull, 0ull, 0ull, 268436482ull,
268436482ull, 0ull, 137707389954ull, 536872964ull, 65537ull, 0ull, 141012903135236ull, 70506451567618ull, 36099303470531586ull, 65537ull, 536872960ull, 65537ull, 65537ull, 141012903135232ull, 16842753ull, 65537ull, 65537ull, 0ull, 65537ull, 16842753ull, 4311810049ull, 16842753ull, 536872964ull, 65537ull, 0ull, 4311810049ull, 16842753ull, 1103823437825ull, 72340172838076417ull, 536872960ull, 268436480ull, 0ull,
1103823437825ull, 282578800148481ull, 0ull, 268436480ull, 268436480ull, 0ull, 137707389952ull, 0ull, 0ull, 0ull, 0ull, 70506451567616ull, 36099303470531584ull, 512ull, 2207646876160ull, 8623620608ull, 565157600297472ull, 8623620608ull, 512ull, 275414779908ull, 512ull, 1134765256245248ull, 145249953332101120ull, 33686016ull, 69256380416ull, 33686016ull, 275414779904ull, 512ull, 0ull, 512ull, 2207646876160ull, 8623620608ull,
131584ull, 0ull, 512ull, 0ull, 512ull, 0ull, 0ull, 33686016ull, 0ull, 131584ull, 536903680ull, 512ull, 536903680ull, 512ull, 131584ull, 0ull, 131584ull, 131584ull, 512ull, 512ull, 512ull, 512ull, 0ull, 131584ull, 0ull, 131584ull, 8865349402624ull, 512ull, 69256380416ull, 512ull, 131584ull, 131584ull,
144680345676153344ull, 8623620608ull, 512ull, 512ull, 512ull, 536903680ull, 536903680ull, 131584ull, 536903680ull, 33686016ull, 0ull, 512ull, 0ull, 0ull, 0ull, 0ull, 0ull, 67372032ull, 1024ull, 263168ull, 263168ull, 1024ull, 67372032ull, 0ull, 1024ull, 263168ull, 0ull, 1024ull, 263168ull, 263168ull, 36028934726878210ull, 36028934726878208ull,
0ull, 1024ull, 263168ull, 0ull, 36028934726877184ull, 36028934457917440ull, 1024ull, 17247241216ull, 0ull, 0ull, 0ull, 36028934457917440ull, 1024ull, 289360691352306688ull, 4415293752320ull, 1024ull, 67372032ull, 0ull, 1024ull, 263168ull, 0ull, 1024ull, 67372032ull, 67372032ull, 1024ull, 263168ull, 263168ull, 1024ull, 263168ull, 0ull, 36028934726352896ull, 36028934726352896ull,
0ull, 1024ull, 263168ull, 263168ull, 36028934726352896ull, 36028934457917440ull, 1024ull, 1130315200594944ull, 4415293752320ull, 0ull, 0ull, 36028934457917440ull, 1024ull, 17247241216ull, 0ull, 1024ull, 67372032ull, 4611703610613432320ull, 0ull, 4611703610613432320ull, 0ull, 0ull, 4611703644973170688ull, 526336ull, 4611703645040410880ull, 4611703645040410624ull, 0ull, 2048ull, 2048ull, 2048ull, 0ull, 4611703610613432320ull,
0ull, 134744064ull, 526336ull, 0ull, 4611703645040279552ull, 4611703645040279552ull, 0ull, 2048ull, 2048ull, 2260630401189888ull, 578721382704613376ull, 526336ull, 2048ull, 2048ull, 2048ull, 2048ull, 2048ull, 0ull, 0ull, 0ull, 0ull, 34494482432ull, 526336ull, 0ull, 0ull, 0ull, 134744064ull, 526336ull, 134744064ull, 134744064ull, 526336ull, 0ull,
2048ull, 2048ull, 2048ull, 2048ull, 2048ull, 4611703610613432320ull, 0ull, 2048ull, 2048ull, 2048ull, 4611703644973170688ull, 0ull, 0ull, 0ull, 34494482432ull, 526336ull, 8830587504640ull, 8830587504640ull, 526336ull, 2048ull, 2048ull, 134744064ull, 134744064ull, 0ull, 131074ull, 0ull, 131074ull, 131074ull, 131074ull, 0ull, 131074ull, 131074ull,
33685506ull, 33685506ull, 33685506ull, 33685506ull, 33685506ull, 33685506ull, 33685506ull, 33685506ull, 131074ull, 0ull, 131074ull, 131074ull, 131074ull, 0ull, 131074ull, 131074ull, 2207646875650ull, 144680345676152834ull, 8623620098ull, 8623620098ull, 2207646875650ull, 565157600296962ull, 8623620098ull, 8623620098ull, 4620710844228042752ull, 9024825800654848ull, 34359869440ull, 0ull, 17626545913856ull, 34359869440ull, 0ull, 0ull,
4620710844228043008ull, 9024825800655104ull, 34359869696ull, 0ull, 17626545914112ull, 34359869696ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 16843008ull, 256ull, 65792ull, 256ull, 0ull, 0ull, 16843008ull, 256ull, 137439478786ull, 0ull, 65792ull, 256ull, 70506183656450ull, 36099303202620418ull,
16843008ull, 256ull, 65792ull, 256ull, 0ull, 0ull, 16843008ull, 256ull, 137439477760ull, 0ull, 0ull, 0ull, 70506183655424ull, 36099303202619392ull, 65792ull, 256ull, 0ull, 1103823438080ull, 282578800148736ull, 256ull, 65792ull, 256ull, 137439478784ull, 4311810304ull, 4311810304ull, 256ull, 70506183656448ull, 36099303202620416ull, 65792ull, 256ull, 0ull, 1103823438080ull,
72340172838076672ull, 256ull, 65792ull, 256ull, 137439477760ull, 4311810304ull, 4311810304ull, 256ull, 70506183655424ull, 36099303202619392ull, 0ull, 0ull, 0ull, 0ull, 65792ull, 256ull, 0ull, 0ull, 0ull, 0ull, 274877906944ull, 274877906944ull, 0ull, 4096ull, 0ull, 67637248ull, 528384ull, 4096ull, 4096ull, 4096ull, 8657571840ull, 1052672ull,
269488128ull, 269488128ull, 1052672ull, 68988964864ull, 0ull, 528384ull, 4096ull, 4096ull, 0ull, 67637248ull, 528384ull, 1052672ull, 1157442765409226752ull, 4521260802379776ull, 0ull, 1052672ull, 269488128ull, 269488128ull, 4096ull, 4096ull, 0ull, 528384ull, 4096ull, 4096ull, 275414777856ull, 275414777856ull, 275414777856ull, 1052672ull, 17661175009280ull, 17661175009280ull, 0ull, 4096ull,
4096ull, 4096ull, 4096ull, 4096ull, 274877906944ull, 274877906944ull, 1052672ull, 269488128ull, 275415828480ull, 275415828484ull, 275415826432ull, 4096ull, 4096ull, 4096ull, 1108169199616ull, 4096ull, 4096ull, 4096ull, 1052672ull, 68988964864ull, 0ull, 0ull, 1052672ull, 269488128ull, 2105344ull, 2105344ull, 2105344ull, 8192ull, 2269391999729664ull, 8192ull, 2251799813685248ull, 0ull,
2105344ull, 9042521604759552ull, 137977929728ull, 8192ull, 2251799813685248ull, 8192ull, 2269529438683136ull, 2269530520813568ull, 2105344ull, 538976256ull, 538976256ull, 8192ull, 8192ull, 8192ull, 2251799813685248ull, 0ull, 2105344ull, 2314885530818453504ull, 137977929728ull, 8192ull, 8192ull, 8192ull, 0ull, 35322350018560ull, 137977929728ull, 538976256ull, 538976256ull, 8192ull, 8192ull, 8192ull, 0ull, 538976256ull,
538976256ull, 2105344ull, 2105344ull, 8192ull, 8192ull, 8192ull, 0ull, 35322350018560ull, 137977929728ull, 2105344ull, 2105344ull, 8192ull, 2269391999729664ull, 8192ull, 0ull, 538976256ull, 538976256ull, 2105344ull, 2105344ull, 8192ull, 2251799813685248ull, 8192ull, 2269529438683136ull, 2269530512424960ull, 0ull, 16384ull, 16384ull, 16384ull, 4210688ull, 275955859456ull, 275955859456ull, 9024791507894272ull,
4620710809935282176ull, 4210688ull, 4629771061636907008ull, 18085043209519104ull, 16384ull, 16384ull, 16384ull, 9024791507894272ull, 4620710809935282176ull, 16384ull, 16384ull, 16384ull, 0ull, 4210688ull, 1077952512ull, 1077952512ull, 4210688ull, 1077952512ull, 1077952512ull, 17592253284352ull, 0ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 17592253284608ull, 0ull, 4210688ull, 70644700037120ull, 70644700037120ull,
4210688ull, 275955859456ull, 275955859456ull, 17592253153280ull, 0ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 16384ull, 17592253153280ull, 4210688ull, 1077952512ull, 1077952512ull, 9024791508025344ull, 4620710809935413248ull, 4210688ull, 1077952512ull, 1077952512ull, 16384ull, 16384ull, 16384ull, 9024791508025600ull, 4620710809935413504ull, 0ull, 0ull, 32768ull, 32768ull, 32768ull, 0ull, 0ull,
0ull, 0ull, 8421376ull, 551911718912ull, 1048640ull, 0ull, 32768ull, 32768ull, 0ull, 8421376ull, 9259542123273814016ull, 36170086419038208ull, 135266368ull, 32768ull, 32768ull, 32768ull, 8421376ull, 2155905024ull, 17315135552ull, 0ull, 32768ull, 32768ull, 0ull, 8421376ull, 2155905024ull, 2155905024ull, 0ull, 32768ull, 32768ull, 32768ull, 135266368ull, 135266368ull,
0ull, 0ull, 8421376ull, 2155905024ull, 2216338391104ull, 283691315101760ull, 32768ull, 32768ull, 0ull, 8421376ull, 2155905024ull, 2155905024ull, 1048640ull, 32768ull, 32768ull, 32768ull, 8421376ull, 551911718912ull, 1048640ull, 0ull, 32768ull, 32768ull, 0ull, 8421376ull, 141289400074240ull, 141289400074240ull, 0ull, 0ull, 67371012ull, 262148ull, 1048640ull, 0ull,
67371012ull, 262148ull, 0ull, 17247240196ull, 262148ull, 0ull, 0ull, 17247240196ull, 262148ull, 67371012ull, 67371012ull, 262148ull, 0ull, 67371012ull, 67371012ull, 262148ull, 4415293751300ull, 4415293751300ull, 262148ull, 0ull, 1130315200593924ull, 289360691352305668ull, 262148ull, 134225984ull, 283691314061312ull, 2216337350656ull, 2260630401187848ull, 578721382704611336ull, 524296ull, 17661175005200ull, 1048592ull, 17314095104ull,
8830587502600ull, 524296ull, 134742024ull, 134742024ull, 524296ull, 269484048ull, 1048592ull, 0ull, 134742024ull, 524296ull, 134225920ull, 134225920ull, 0ull, 0ull, 34494480392ull, 34494480392ull, 524296ull, 134225920ull, 0ull, 0ull, 34494480392ull, 524296ull, 134742024ull, 134742024ull, 524296ull, 0ull, 0ull, 0ull, 134742024ull, 524296ull, 283691314061376ull, 2216337350720ull,
0ull, 0ull, 68988960784ull, 68988960784ull, 1048592ull, 17314095168ull, 0ull, 0ull, 0ull, 0ull, 269484048ull, 269484048ull, 1048592ull, 68988960784ull, 1048592ull, 0ull, 134225984ull, 134225984ull, 4521260802375696ull, 1157442765409222672ull, 1048592ull, 269484048ull, 1048592ull, 0ull, 0ull, 0ull, 269484048ull, 269484048ull, 1048592ull, 9042521604751392ull, 2314885530818445344ull, 2097184ull,
0ull, 137977921568ull, 2097184ull, 0ull, 0ull, 538968096ull, 538968096ull, 2097184ull, 0ull, 538968096ull, 2097184ull, 0ull, 0ull, 35322350010400ull, 35322350010400ull, 2097184ull, 0ull, 137977921568ull, 2097184ull, 0ull, 0ull, 538968096ull, 538968096ull, 2097184ull, 0ull, 538968096ull, 2097184ull, 0ull, 275955843136ull, 4194368ull, 4194368ull, 0ull,
0ull, 1073741824ull, 1077936192ull, 4194368ull, 0ull, 0ull, 275955843136ull, 4194368ull, 17730698739712ull, 1073741824ull, 0ull, 1077936192ull, 1077936192ull, 4194368ull, 0ull, 0ull, 290499906664136704ull, 2269530512424960ull, 0ull, 0ull, 2155872384ull, 2155872384ull, 0ull, 0ull, 0ull, 2155872384ull, 2155872384ull, 551911686272ull, 1077936192ull, 4194368ull, 4194368ull, 8388736ull,
551911686272ull, 138512695296ull, 70644700020800ull, 4194368ull, 8388736ull, 8388736ull, 1077936192ull, 4194368ull, 1073741824ull, 138512695296ull, 8388736ull, 18085043209502784ull, 4629771061636890688ull, 4194368ull, 0ull, 0ull, 1073741824ull, 1073741824ull, 16777472ull, 0ull, 141289400041600ull, 36170086419005568ull, 0ull, 16777472ull, 0ull, 141289400041600ull, 9259542123273781376ull, 2155872384ull, 16777472ull, 2199157473280ull, 0ull, 8388736ull,
2155872384ull, 16777472ull, 4311744768ull, 0ull, 8388736ull, 8388736ull, 16777473ull, 1103823372544ull, 1103823372544ull, 0ull, 8388736ull, 16777473ull, 4311744768ull, 0ull, 0ull, 0ull, 16777473ull, 72340172838011136ull, 282578800083200ull, 283674135240768ull, 283674135240704ull, 16777473ull, 4311744769ull, 2199158521856ull, 0ull, 2199157473280ull, 2199157473280ull, 72340172838011137ull, 282578800083201ull, 283674134183936ull, 0ull, 0ull,
4311744769ull, 0ull, 0ull, 0ull, 33554944ull, 1103823372545ull, 1103823372545ull, 33554944ull, 33554944ull, 33554944ull, 33554946ull, 33554944ull, 33554944ull, 33554946ull, 33554946ull, 33554946ull, 0ull, 33554946ull, 33554946ull, 2199158530112ull, 2199158530048ull, 0ull, 0ull, 283674135232512ull, 0ull, 283674134183936ull, 283674134183936ull, 0ull, 0ull, 0ull, 0ull, 2207646745088ull,
2207646745088ull, 0ull, 565157600166400ull, 144680345676022272ull, 8623489536ull, 565157600166402ull, 144680345676022274ull, 8623489536ull, 2207646745090ull, 2207646745090ull, 8623489538ull, 0ull, 0ull, 8623489538ull, 0ull, 67109892ull, 67109892ull, 0ull, 67109892ull, 67109892ull, 67109892ull, 67109888ull, 67109888ull, 67109892ull, 0ull, 67109888ull, 67109888ull, 0ull, 0ull, 67109888ull, 4415293490180ull, 4415293490180ull,
0ull, 289360691352044548ull, 1130315200332804ull, 17246979076ull, 289360691352044544ull, 1130315200332800ull, 17246979076ull, 0ull, 4415293490176ull, 17246979072ull, 0ull, 134219776ull, 17246979072ull, 8830586980352ull, 0ull, 0ull, 134219776ull, 134219776ull, 34493958144ull, 34493958144ull, 134219776ull, 134219776ull, 2260630400665600ull, 578721382704089088ull, 0ull, 134219776ull, 134219776ull, 34493958144ull, 34493958144ull, 134219784ull, 134219784ull, 2260630400665608ull,
578721382704089096ull, 0ull, 0ull, 134219784ull, 0ull, 34493958152ull, 0ull, 134219784ull, 0ull, 8830586980360ull, 0ull, 68987916288ull, 134219784ull, 68987916288ull, 34493958152ull, 68987916304ull, 0ull, 68987916304ull, 0ull, 17661173960704ull, 17661173960704ull, 4521260801331200ull, 1157442765408178176ull, 4521260801331216ull, 1157442765408178192ull, 17661173960720ull, 17661173960720ull, 0ull, 0ull, 0ull, 0ull, 268439552ull,
137975832576ull, 268439552ull, 137975832576ull, 268439568ull, 137975832608ull, 268439568ull, 137975832608ull, 268439552ull, 268439552ull, 268439552ull, 268439552ull, 268439568ull, 268439568ull, 268439568ull, 268439568ull, 0ull, 536879104ull, 0ull, 536879104ull, 0ull, 536879136ull, 0ull, 536879136ull, 0ull, 0ull, 0ull, 0ull, 35322347921408ull, 35322347921408ull, 2314885530816356352ull, 9042521602662400ull, 2314885530816356384ull,
9042521602662432ull, 35322347921440ull, 35322347921440ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 536879104ull, 536879104ull, 536879104ull, 536879104ull, 536879136ull, 536879136ull, 536879136ull, 536879136ull, 1073758272ull, 1073758272ull, 1073758272ull, 1073758272ull, 1073758272ull, 1073758272ull, 1073758208ull, 1073758208ull, 1073758208ull, 1073758208ull, 1073758208ull, 1073758208ull, 551903330304ull,
0ull, 0ull, 2147516416ull, 275951665216ull, 70644695842880ull, 70644695842880ull, 275951665216ull, 18085043205324864ull, 4629771061632712768ull, 275951665152ull, 18085043205324800ull, 4629771061632712704ull, 275951665152ull, 70644695842816ull, 70644695842816ull, 0ull, 0ull, 141289391685760ull, 0ull, 2147516544ull, 2147516544ull, 0ull, 36170086410649600ull, 9259542123265425408ull, 0ull, 2147516416ull, 2147516544ull, 0ull, 551903330432ull, 551903330432ull, 0ull, 2147516416ull,
0ull, 0ull, 551903330304ull, 17180917760ull, 2216204181504ull, 283691180892160ull, 0ull, 2216204173312ull, 283691180883968ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 2147516544ull, 0ull, 36170086410649728ull, 9259542123265425536ull, 0ull, 2147516416ull, 2147516416ull, 0ull, 141289391685632ull, 551903330432ull, 17180926016ull, 2147516544ull, 2147516544ull, 17180917760ull, 2216204181568ull,
283691180892224ull, 2207613321216ull, 2216204173312ull, 283691180883968ull, 4295032832ull, 4295032832ull, 4295033088ull, 4295033088ull, 1103806660608ull, 1103806660608ull, 1103806660864ull, 0ull, 4295032832ull, 4295032832ull, 4295033088ull, 4295033088ull, 282578783371264ull, 72340172821299200ull, 72340172821299456ull, 282578783371520ull, 0ull, 4295032832ull, 4295033089ull, 4295033089ull, 282578783371264ull, 72340172821299200ull, 72340172821299457ull, 282578783371521ull, 0ull, 4295032832ull, 4295032832ull, 4295033089ull,
17180925952ull, 1103806660608ull, 1103806660865ull, 1103806660865ull, 0ull, 0ull, 8590066178ull, 8590066178ull, 8590066176ull, 2207613321730ull, 565157566743042ull, 565157566743040ull, 2207613321728ull, 8590066178ull, 8590066178ull, 8590066176ull, 2207613321730ull, 144680345642598914ull, 144680345642598912ull, 2207613321728ull, 8590065664ull, 8590065664ull, 8590065664ull, 2207613321216ull, 144680345642598400ull, 144680345642598400ull, 2207613321216ull, 8590065664ull, 8590065664ull, 8590065664ull, 2207613321216ull, 565157566742528ull,
565157566742528ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 17180131328ull, 17180131328ull, 17180132356ull, 17180132356ull, 17180131328ull, 17180131328ull, 17180132356ull, 17180132356ull, 17180131328ull, 17180131328ull, 17180132352ull, 0ull, 17180131328ull, 17180132352ull, 17180132352ull, 4415226642432ull, 4415226643460ull, 4415226643460ull, 1130315133485056ull, 289360691285196800ull, 289360691285197828ull, 1130315133486084ull, 1130315133485056ull, 289360691285196800ull,
289360691285197824ull, 1130315133486080ull, 4415226642432ull, 4415226642432ull, 4415226643456ull, 8830453286920ull, 8830453286920ull, 8830453284864ull, 8830453284864ull, 2260630266972168ull, 578721382570395656ull, 578721382570393600ull, 2260630266970112ull, 2260630266972160ull, 578721382570395648ull, 578721382570393600ull, 2260630266970112ull, 8830453286912ull, 8830453286912ull, 8830453284864ull, 8830453284864ull, 0ull, 34360264712ull, 34360264712ull, 34360262656ull, 34360262656ull, 34360264712ull, 34360264712ull, 34360262656ull, 34360262656ull, 34360264704ull, 34360264704ull,
34360262656ull, 34360262656ull, 34360264704ull, 34360264704ull, 34360262656ull, 34360262656ull, 0ull, 0ull, 0ull, 0ull, 68720529424ull, 68720529424ull, 68720529408ull, 68720529408ull, 68720529424ull, 68720529424ull, 68720529408ull, 68720529408ull, 68720525312ull, 68720525312ull, 68720525312ull, 68720525312ull, 68720525312ull, 68720525312ull, 68720525312ull, 17660906573840ull, 4521260533944336ull, 4521260533944320ull, 17660906573824ull, 17660906573840ull, 1157442765140791312ull, 1157442765140791296ull,
17660906573824ull, 17660906569728ull, 1157442765140787200ull, 1157442765140787200ull, 17660906569728ull, 17660906569728ull, 4521260533940224ull, 4521260533940224ull, 17660906569728ull, 137441050624ull, 137441050624ull, 137441058816ull, 35321813139456ull, 137441058816ull, 35321813139456ull, 35321813147648ull, 35321813147648ull, 137441050624ull, 137441050624ull, 137441058816ull, 9042521067880448ull, 137441058816ull, 2314885530281574400ull, 2314885530281582592ull, 9042521067888640ull, 137441050624ull, 137441050624ull, 137441058848ull, 9042521067880448ull, 137441058848ull, 2314885530281574400ull, 2314885530281582624ull,
9042521067888672ull, 137441050624ull, 137441050624ull, 137441058848ull, 35321813139456ull, 137441058848ull, 35321813139456ull, 35321813147680ull, 35321813147680ull, 0ull, 70643626278912ull, 70643626295360ull, 70643626295360ull, 0ull, 274882101248ull, 274882101248ull, 274882117696ull, 274882117696ull, 18085042135760896ull, 4629771060563148800ull, 4629771060563165248ull, 18085042135777344ull, 0ull, 274882101248ull, 274882101248ull, 274882117696ull, 0ull, 18085042135760896ull, 4629771060563148800ull, 4629771060563165184ull, 18085042135777280ull, 0ull,
274882101248ull, 274882117632ull, 274882117632ull, 0ull, 70643626278912ull, 70643626278912ull, 70643626295296ull, 0ull, 274882101248ull, 274882101248ull, 274882117632ull, 274882117632ull, 0ull, 0ull, 0ull, 0ull, 141287252590592ull, 36170084271554560ull, 36170084271554688ull, 141287252590720ull, 141287252590592ull, 9259542121126330368ull, 9259542121126330496ull, 141287252590720ull, 141287252557824ull, 9259542121126297600ull, 9259542121126297600ull, 141287252557824ull, 141287252557824ull, 36170084271521792ull, 36170084271521792ull, 141287252557824ull,
0ull, 0ull, 0ull, 549764235264ull, 549764235264ull, 549764235392ull, 0ull, 549764235264ull, 549764235264ull, 549764235392ull, 0ull, 549764202496ull, 549764202496ull, 549764202496ull, 0ull, 549764202496ull, 549764202496ull, 549764202496ull, 1099528470785ull, 0ull, 282574505181441ull, 282574505181440ull, 1099528470784ull, 1099528470785ull, 72340168543109377ull, 72340168543109376ull, 1099528470784ull, 1099528470528ull, 72340168543109120ull, 72340168543109120ull, 0ull, 1099528470528ull,
282574505181184ull, 282574505181184ull, 0ull, 1099528470528ull, 0ull, 1099528404992ull, 282574505115648ull, 282574505115648ull, 1099528404992ull, 1099528404992ull, 72340168543043584ull, 72340168543043584ull, 0ull, 1099528404992ull, 72340168543043584ull, 0ull, 72340168543043584ull, 1099528404992ull, 282574505115648ull, 0ull, 282574505115648ull, 1099528404992ull, 0ull, 2199056941570ull, 565149010362882ull, 565149010362880ull, 2199056941568ull, 2199056941570ull, 144680337086218754ull, 144680337086218752ull, 2199056941568ull, 2199056941056ull,
144680337086218240ull, 144680337086218240ull, 2199056941056ull, 565149010362368ull, 565149010362368ull, 2199056941056ull, 0ull, 0ull, 2199056809984ull, 565149010231296ull, 565149010231296ull, 2199056809984ull, 2199056809984ull, 144680337086087168ull, 144680337086087168ull, 2199056809984ull, 2199056809984ull, 144680337086087168ull, 144680337086087168ull, 2199056809984ull, 565149010231296ull, 565149010231296ull, 2199056809984ull, 4398113882112ull, 1130298020724736ull, 1130298020724736ull, 4398113882112ull, 4398113619968ull, 1130298020462592ull, 1130298020462592ull, 4398113619968ull, 4398113882112ull,
289360674172436480ull, 4398113882112ull, 0ull, 4398113619968ull, 289360674172174336ull, 4398113619968ull, 4398113883140ull, 289360674172437508ull, 289360674172437504ull, 4398113883136ull, 4398113619968ull, 289360674172174336ull, 289360674172174336ull, 4398113619968ull, 4398113883140ull, 1130298020725764ull, 1130298020725760ull, 4398113883136ull, 4398113619968ull, 1130298020462592ull, 1130298020462592ull, 4398113619968ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 8796227239936ull, 8796227239936ull,
8796227239936ull, 0ull, 8796227766272ull, 8796227764224ull, 8796227764224ull, 2260596040925184ull, 578721348344348672ull, 578721348344348672ull, 2260596040925184ull, 2260596041451520ull, 578721348344875008ull, 578721348344872960ull, 2260596041449472ull, 2260596040925184ull, 578721348344348672ull, 578721348344348672ull, 2260596040925184ull, 2260596041451528ull, 578721348344875016ull, 578721348344872960ull, 2260596041449472ull, 8796227239936ull, 8796227239936ull, 8796227239936ull, 0ull, 8796227766280ull, 8796227766280ull, 8796227764224ull, 0ull, 17592455532544ull, 17592455532544ull, 17592455528448ull,
4521192082903040ull, 1157442696689750016ull, 1157442696689745920ull, 4521192082898944ull, 4521192082903056ull, 1157442696689750032ull, 1157442696689745920ull, 4521192082898944ull, 17592455532560ull, 17592455532560ull, 17592455528448ull, 17592455528448ull, 0ull, 17592454479872ull, 17592454479872ull, 17592454479872ull, 4521192081850368ull, 1157442696688697344ull, 1157442696688697344ull, 4521192081850368ull, 4521192081850368ull, 1157442696688697344ull, 1157442696688697344ull, 4521192081850368ull, 17592454479872ull, 17592454479872ull, 17592454479872ull, 17592454479872ull, 35184908959744ull, 9042384163700736ull, 9042384163700736ull, 35184908959744ull,
35184908959744ull, 2314885393377394688ull, 2314885393377394688ull, 35184908959744ull, 35184908959744ull, 2314885393377394688ull, 2314885393377394688ull, 35184908959744ull, 35184908959744ull, 9042384163700736ull, 9042384163700736ull, 35184908959744ull, 35184911065088ull, 9042384165806080ull, 9042384165806112ull, 35184911065120ull, 35184911065088ull, 2314885393379500032ull, 2314885393379500064ull, 35184911065120ull, 35184911056896ull, 2314885393379491840ull, 2314885393379491840ull, 35184911056896ull, 35184911056896ull, 9042384165797888ull, 9042384165797888ull, 35184911056896ull, 0ull, 70369817919488ull, 70369817919488ull, 70369817919488ull,
18084768327401472ull, 4629770786754789376ull, 4629770786754789376ull, 18084768327401472ull, 18084768327401472ull, 4629770786754789376ull, 4629770786754789376ull, 18084768327401472ull, 70369817919488ull, 70369817919488ull, 70369817919488ull, 0ull, 0ull, 70369822130240ull, 70369822113792ull, 70369822113792ull, 18084768331612224ull, 4629770786759000128ull, 4629770786758983680ull, 18084768331595776ull, 18084768331612160ull, 4629770786759000064ull, 4629770786758983680ull, 18084768331595776ull, 70369822130176ull, 70369822130176ull, 70369822113792ull, 140739644227584ull, 36169536663191552ull, 36169536663191552ull, 140739644227584ull, 9259541573517967360ull,
9259541573517967360ull, 140739644227584ull, 140739644260352ull, 9259541573518000128ull, 9259541573518000256ull, 140739644260480ull, 140739644260352ull, 36169536663224320ull, 36169536663224448ull, 140739644260480ull, 0ull, 0ull, 72339073309605888ull, 0ull, 281479271677952ull, 0ull, 72339073326383104ull, 281479288455168ull, 281479288455168ull, 0ull, 72339073309605888ull, 72339073309605888ull, 281479271677952ull, 0ull, 72339073326448897ull, 72339073326448896ull, 281479288520704ull, 140739635838976ull, 36169536654802944ull, 36169536654802944ull, 140739635838976ull, 9259541573509578752ull,
9259541573509578752ull, 140739635838976ull, 140739635838976ull, 9259541573509578752ull, 9259541573509578752ull, 140739635838976ull, 140739635838976ull, 36169536654802944ull, 36169536654802944ull, 140739635838976ull, 0ull, 281479271677952ull, 281479271677952ull, 72339073309605888ull, 0ull, 281479288455168ull, 0ull, 72339073326383104ull, 562958576910336ull, 0ull, 281479271677952ull, 72339073309605888ull, 72339073309605888ull, 281479288520961ull, 281479288520960ull, 72339073326448640ull, 0ull, 144678146619211776ull, 0ull, 562958577041920ull, 562958577041922ull, 0ull,
8657043456ull, 0ull, 562958543355904ull, 8589934592ull, 144678146652897280ull, 144678146619211776ull, 144678146619211776ull, 0ull, 562958576910336ull, 0ull, 0ull, 0ull, 562958543355904ull, 0ull, 144678146652766208ull, 144678146652766208ull, 0ull, 0ull, 0ull, 8657571840ull, 8657571872ull, 8589934592ull, 0ull, 1125917153820672ull, 562958543355904ull, 0ull, 0ull, 0ull, 0ull, 8589934592ull, 144678146619211776ull, 144678146619211776ull,
144678146652897792ull, 144678146652897794ull, 562958543355904ull, 562958543355904ull, 0ull, 8657043456ull, 8657043456ull, 562958577041408ull, 0ull, 144678146619211776ull, 1125917086711808ull, 144678146652766208ull, 0ull, 289356293238423552ull, 8657567744ull, 8589934592ull, 289356293238423552ull, 0ull, 0ull, 1125917086711808ull, 0ull, 578712586476847104ull, 578712586476847104ull, 0ull, 2251834173423616ull, 2251834173423616ull, 1125917154082816ull, 0ull, 0ull, 289356293305794560ull, 1125917086711808ull, 289356293305795584ull,
289356293305795588ull, 289356293238423552ull, 1125917154083840ull, 1125917154083844ull, 289356293238423552ull, 0ull, 0ull, 1125917086711808ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 1125917153820672ull, 0ull, 0ull, 289356293305532416ull, 2251834308165632ull, 289356293305532416ull, 289356293305532416ull, 578712586611589120ull, 1125917153820672ull, 0ull, 578712586611591176ull, 578712586611591168ull, 2251834307641344ull, 2251834308167688ull, 2251834308167680ull, 578712586611064832ull, 0ull, 0ull,
578712586611064832ull, 578712586611064832ull, 0ull, 2251834307641344ull, 2251834307641344ull, 0ull, 0ull, 2251834173423616ull, 0ull, 0ull, 578712586476847104ull, 0ull, 0ull, 578712586476847104ull, 578712586476847104ull, 2251834173423616ull, 2251834173423616ull, 2251834173423616ull, 578712586476847104ull, 0ull, 4503668616331264ull, 0ull, 4503668346847232ull, 4503668346847232ull, 4503668615282688ull, 0ull, 4503668346847232ull, 4503668346847232ull, 0ull, 1157425173223178240ull, 1157425173223178240ull, 1157425172953694208ull,
1157425172953694208ull, 1157425173222129664ull, 1157425173222129664ull, 1157425172953694208ull, 1157425172953694208ull, 0ull, 1157425173223182352ull, 1157425173223182336ull, 1157425172953694208ull, 1157425172953694208ull, 1157425173222129664ull, 1157425173222129664ull, 1157425172953694208ull, 1157425172953694208ull, 0ull, 4503668616335376ull, 4503668616335360ull, 0ull, 4503668346847232ull, 4503668615282688ull, 4503668615282688ull, 0ull, 4503668346847232ull, 0ull, 0ull, 0ull, 0ull, 9007337232670720ull, 9007337232670752ull, 9007336693694464ull, 9007336693694464ull, 2314850346446364672ull,
2314850346446364704ull, 2314850345907388416ull, 2314850345907388416ull, 2314850346446356480ull, 0ull, 2314850345907388416ull, 9007337232662528ull, 9007337232662528ull, 9007336693694464ull, 9007336693694464ull, 0ull, 9007337230565376ull, 9007337230565376ull, 9007336693694464ull, 9007336693694464ull, 2314850346444259328ull, 2314850346444259328ull, 2314850345907388416ull, 2314850345907388416ull, 2314850346444259328ull, 0ull, 2314850345907388416ull, 9007337230565376ull, 9007337230565376ull, 9007336693694464ull, 9007336693694464ull, 0ull, 0ull, 18014674465325056ull, 0ull, 0ull, 0ull,
4629700692892712960ull, 0ull, 18014673387388928ull, 4629700692892729408ull, 4629700692892729344ull, 0ull, 4629700691814776832ull, 18014674465341504ull, 18014674465341440ull, 4629700691814776832ull, 4629700691814776832ull, 0ull, 18014674461130752ull, 18014673387388928ull, 18014673387388928ull, 0ull, 4629700692888518656ull, 0ull, 18014673387388928ull, 4629700692888518656ull, 4629700692888518656ull, 0ull, 4629700691814776832ull, 18014674461130752ull, 18014674461130752ull, 4629700691814776832ull, 4629700691814776832ull, 0ull, 0ull, 18014673387388928ull, 18014673387388928ull, 36029346774777856ull,
36029348930683008ull, 36029348930682880ull, 0ull, 9259401383629553664ull, 9259401385777037312ull, 9259401385777037312ull, 0ull, 9259401383629553664ull, 9259401385785425920ull, 0ull, 0ull, 36029346774777856ull, 36029348922261504ull, 0ull, 0ull, 0ull, 0ull, 72058693549555712ull, 72058693549555712ull, 72058697861365760ull, 72058697861366016ull, 72058697861365760ull, 72058697861366017ull, 72058693549555712ull, 72058693549555712ull, 72058697844523008ull, 0ull, 72058697844523008ull, 0ull, 72058693549555712ull, 144117387099111424ull, 36029346774777856ull,
36029348922261504ull, 36029348922261504ull, 0ull, 9259401383629553664ull, 9259401385785458816ull, 9259401385785458688ull, 0ull, 9259401383629553664ull, 9259401385777037312ull, 0ull, 0ull, 36029346774777856ull, 36029348930650112ull, 72058693549555712ull, 0ull, 72058697861300224ull, 0ull, 72058697861300224ull, 72058693549555712ull, 72058693549555712ull, 72058697844523008ull, 0ull, 72058697844523008ull, 0ull, 72058693549555712ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 288234791378092032ull,
0ull, 288234774198222848ull, 0ull, 0ull, 0ull, 0ull, 144117387099111424ull, 144117387099111424ull, 144117395689046016ull, 144117395689046016ull, 144117395689046016ull, 144117395689046016ull, 144117387099111424ull, 144117387099111424ull, 144117395722731520ull, 144117395722732034ull, 144117395722731520ull, 144117395722732032ull, 144117387099111424ull, 0ull, 144117395689046016ull, 0ull, 144117395689046016ull, 144117387099111424ull, 144117387099111424ull, 0ull, 144117395722600448ull, 0ull, 144117395722600448ull, 576469548396445696ull, 0ull, 0ull,
0ull, 0ull, 0ull, 288234774198222848ull, 288234774198222848ull, 288234791445464064ull, 288234791445463040ull, 288234791445464068ull, 288234791445463040ull, 288234774198222848ull, 288234774198222848ull, 0ull, 288234791378092032ull, 0ull, 288234791378092032ull, 0ull, 288234774198222848ull, 0ull, 0ull, 0ull, 288234774198222848ull, 288234774198222848ull, 288234791445200896ull, 288234791445200896ull, 288234791445200896ull, 288234791445200896ull, 288234774198222848ull, 288234774198222848ull, 0ull, 288234791378092032ull, 0ull, 576469548396445696ull,
0ull, 576469548396445696ull, 0ull, 576469582756184064ull, 576469582756184064ull, 576469582756184064ull, 576469582756184064ull, 0ull, 576469582756184064ull, 576469582756184064ull, 576469582756184064ull, 576469582756184064ull, 0ull, 576469548396445696ull, 0ull, 576469548396445696ull, 0ull, 576469582890926080ull, 576469582890928136ull, 576469582890401792ull, 576469582890401792ull, 0ull, 576469582890926080ull, 576469582890928128ull, 576469582890401792ull, 576469582890401792ull, 0ull, 576469548396445696ull, 1152939096792891392ull, 0ull, 0ull, 0ull,
1152939165512368128ull, 0ull, 1152939096792891392ull, 1152939096792891392ull, 1152939165512368128ull, 0ull, 1152939165781856272ull, 1152939165781852160ull, 1152939096792891392ull, 0ull, 1152939165781856256ull, 1152939165781852160ull, 1152939165512368128ull, 0ull, 1152939096792891392ull, 1152939096792891392ull, 1152939165512368128ull, 0ull, 1152939165780803584ull, 1152939165780803584ull, 1152939096792891392ull, 0ull, 1152939165780803584ull, 1152939165780803584ull, 0ull, 0ull, 0ull, 1152939096792891392ull, 0ull, 4611756387171565568ull, 4611756387171565568ull, 0ull,
0ull, 0ull, 0ull, 4611756387171565568ull, 0ull, 4611756387171565568ull, 4611756663123214336ull, 4611756663123214336ull, 4611756662049472512ull, 4611756663123214336ull, 4611756663123214336ull, 4611756662049472512ull, 4611756387171565568ull, 4611756387171565568ull, 4611756387171565568ull, 0ull, 2305878193585782784ull, 0ull, 0ull, 2305878331024736256ull, 0ull, 0ull, 2305878331024736256ull, 0ull, 2305878193585782784ull, 2305878193585782784ull, 2305878193585782784ull, 2305878331024736256ull, 2305878331561607168ull, 2305878331561607168ull, 2305878331024736256ull, 2305878331561607168ull,
2305878331561607168ull, 2305878193585782784ull, 2305878193585782784ull, 2305878193585782784ull, 2305878331563704320ull, 2305878331563712512ull, 0ull, 2305878331563704320ull, 2305878331563712544ull, 0ull, 2305878193585782784ull, 2305878193585782784ull, 0ull, 9223513324098945024ull, 9223513324098945024ull, 9223512774343131136ull, 9223513326246428672ull, 9223513326246428672ull, 0ull, 4611756387171565568ull, 0ull, 4611756387171565568ull, 4611756663127425088ull, 4611756663127408640ull, 4611756662049472512ull, 4611756663127425024ull, 4611756663127408640ull, 4611756662049472512ull, 4611756387171565568ull, 9223512774343131136ull, 9223513324098945024ull, 9223513326254817280ull,
9223513326254850176ull, 9223512774343131136ull, 0ull, 0ull, 8864816693248ull, 68723671040ull, 0ull, 8864816726016ull, 68723703808ull, 0ull, 0ull, 0ull, 0ull, 9223513324098945024ull, 9223513324098945024ull, 9223512774343131136ull, 9223513326254817280ull, 9223513326254850048ull, 1134764723535872ull, 145249952799391744ull, 68723671040ull, 1134764723568640ull, 145249952799424512ull, 68723703808ull, 0ull, 0ull, 0ull, 0ull, 0ull, 9223512774343131136ull, 9223513324098945024ull, 9223513326246428672ull,
9223513326246428672ull, 9223512774343131136ull, 562949953421312ull, 565157600165888ull, 565157600297472ull, 565157566611456ull, 0ull, 562949953421312ull, 0ull, 0ull, 562949953421312ull, 565148976676864ull, 565148976676864ull, 0ull, 0ull, 0ull, 565148976676864ull, 565148976676864ull, 562949953421312ull, 562949953421312ull, 565157566611456ull, 0ull, 0ull, 0ull, 565157600165888ull, 565157600296960ull, 562949953421312ull, 562949953421312ull, 1056768ull, 8192ull, 0ull, 565148976676864ull,
565148976676864ull, 565157566611456ull, 0ull, 562949953421312ull, 135274496ull, 135274496ull, 562949953421312ull, 565157600165888ull, 565157600297474ull, 565148976676864ull, 0ull, 0ull, 0ull, 0ull, 562949953421312ull, 562949953421312ull, 565157566611456ull, 0ull, 0ull, 0ull, 565157600165888ull, 565157600296960ull, 562949953421312ull, 562949953421312ull, 565148976676864ull, 0ull, 0ull, 8192ull, 0ull, 565148976676864ull, 562949953421312ull, 562949953421312ull,
0ull, 0ull, 1056768ull, 8192ull, 0ull, 0ull, 0ull, 8192ull, 0ull, 8192ull, 2216338399232ull, 283691315109888ull, 0ull, 0ull, 1056768ull, 8192ull, 1056768ull, 8192ull, 0ull, 0ull, 0ull, 8192ull, 17315143680ull, 17315143680ull, 135274496ull, 135274496ull, 282574488338432ull, 282574488338432ull, 281474976710656ull, 281474976710656ull, 0ull, 8796634087424ull,
0ull, 282578800082944ull, 282578800148480ull, 282578783305728ull, 1134696540962816ull, 145249884616818688ull, 0ull, 8796629893120ull, 281474976710656ull, 281474976710656ull, 282574488338432ull, 282574488338432ull, 1134696536735744ull, 145249884612591616ull, 0ull, 282578800082944ull, 282578800148737ull, 281474976710656ull, 281474976710656ull, 0ull, 0ull, 0ull, 282578800082944ull, 282578800148480ull, 282574488338432ull, 282574488338432ull, 0ull, 0ull, 0ull, 281474976710656ull, 281474976710656ull, 0ull,
282578783305728ull, 8796634120192ull, 1134696540930048ull, 145249884616785920ull, 282578800082944ull, 282578800148736ull, 281474976710656ull, 281474976710656ull, 0ull, 8796629893120ull, 1134696536735744ull, 145249884612591616ull, 282574488338432ull, 282574488338432ull, 282578783305728ull, 0ull, 0ull, 0ull, 0ull, 281474976710656ull, 281474976710656ull, 282578783305728ull, 0ull, 1125899906842624ull, 1125899906842624ull, 1125899906842624ull, 1125899906842624ull, 0ull, 0ull, 0ull, 1130315133222912ull, 1130297953353728ull,
0ull, 1130315133222912ull, 1130315200594944ull, 0ull, 0ull, 1130297953353728ull, 1130315200331776ull, 1125968626319360ull, 1130315133222912ull, 1130297953353728ull, 0ull, 0ull, 1125899906842624ull, 1125899906842624ull, 0ull, 1125899906842624ull, 1125899906842624ull, 1125969163190272ull, 1125969163190272ull, 0ull, 1130315133222912ull, 1130315200331776ull, 1130297953353728ull, 1130315200594948ull, 0ull, 1125969167384576ull, 1125969167417344ull, 1130315133222912ull, 1130297953353728ull, 1130315133222912ull, 1130315200593920ull, 0ull,
0ull, 0ull, 1125899906842624ull, 1125899906842624ull, 1125899906842624ull, 1125899906842624ull, 0ull, 145241156702175232ull, 0ull, 1130297953353728ull, 1130315200331776ull, 1130315133222912ull, 1130297953353728ull, 0ull, 0ull, 145241156702175232ull, 1130315133222912ull, 1130315200331776ull, 1130297953353728ull, 1130315200593920ull, 0ull, 2251799813685248ull, 2251799813685248ull, 2260595906707456ull, 2260630401187840ull, 145241157239046144ull, 145241157239046144ull, 0ull, 2260630266445824ull, 2260630400663552ull, 2260595906707456ull, 1125968626319360ull,
2260630401189896ull, 145241157243240448ull, 145241157243273216ull, 2260630266445824ull, 2260630400663552ull, 2251799813685248ull, 2251799813685248ull, 2251799813685248ull, 0ull, 0ull, 2251799813685248ull, 2251799813685248ull, 0ull, 2260630266445824ull, 2260595906707456ull, 0ull, 0ull, 2260595906707456ull, 2260630400663552ull, 0ull, 2260630266445824ull, 2260595906707456ull, 0ull, 0ull, 2260595906707456ull, 0ull, 2260630400663552ull, 2251799813685248ull, 2251799813685248ull, 0ull, 0ull, 2251799813685248ull,
2251799813685248ull, 2251799813685248ull, 2260630266445824ull, 2260630401187840ull, 0ull, 0ull, 0ull, 2260630266445824ull, 2260595906707456ull, 2260630266445824ull, 2260630401189888ull, 0ull, 0ull, 0ull, 2260630266445824ull, 2260595906707456ull, 2251799813685248ull, 2251799813685248ull, 0ull, 4521260532891648ull, 0ull, 0ull, 4503599627370496ull, 0ull, 4521260532891648ull, 4503599627370496ull, 4521191813414912ull, 0ull, 0ull, 4521191813414912ull, 0ull, 4503599627370496ull,
4521260801327104ull, 4503599627370496ull, 0ull, 0ull, 4521260802379776ull, 0ull, 4521191813414912ull, 4521260801327104ull, 0ull, 4521260532891648ull, 0ull, 4503599627370496ull, 0ull, 4521260532891648ull, 4503599627370496ull, 0ull, 4521260532891648ull, 0ull, 0ull, 4521260802375680ull, 4503599627370496ull, 4521191813414912ull, 0ull, 4503599627370496ull, 0ull, 0ull, 4521191813414912ull, 4521260532891648ull, 4521260801327104ull, 0ull, 4521191813414912ull, 0ull,
0ull, 4503599627370496ull, 4521191813414912ull, 4503599627370496ull, 0ull, 4521260532891648ull, 0ull, 0ull, 4521260802375680ull, 4503599627370496ull, 0ull, 4521260801327104ull, 4503599627370496ull, 281492290797568ull, 281492290797568ull, 4521260802379792ull, 0ull, 4521260532891648ull, 4521191813414912ull, 0ull, 281492291846144ull, 0ull, 281492156579840ull, 0ull, 281492156579840ull, 0ull, 9007199254740992ull, 0ull, 9042383626829824ull, 9042521602654208ull, 9042521065783296ull, 9007199254740992ull,
9007199254740992ull, 9042521602654208ull, 9042521065783296ull, 9042383626829824ull, 9007199254740992ull, 9007199254740992ull, 9042521604751360ull, 9042521065783296ull, 9042521604759584ull, 9042521065783296ull, 9007199254740992ull, 9007199254740992ull, 9042383626829824ull, 0ull, 0ull, 281492291854400ull, 281492291854336ull, 0ull, 281492290797568ull, 0ull, 281492156579840ull, 0ull, 0ull, 0ull, 0ull, 0ull, 281492156579840ull, 9042383626829824ull, 9007199254740992ull, 9007199254740992ull, 9042521602654208ull, 9042521065783296ull,
9042521602654208ull, 9042521065783296ull, 9007199254740992ull, 9007199254740992ull, 9042383626829824ull, 9042521604759552ull, 9042521065783296ull, 9007199254740992ull, 9007199254740992ull, 9042521604751360ull, 9042521065783296ull, 9042383626829824ull, 18014398509481984ull, 9007199254740992ull, 18014398509481984ull, 0ull, 18085042131566592ull, 18085043209519104ull, 0ull, 18085042131566592ull, 0ull, 18085043205308416ull, 0ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18084767253659648ull, 0ull, 18084767253659648ull, 0ull, 18085042131566592ull, 18085043205308416ull,
0ull, 18014398509481984ull, 0ull, 18014398509481984ull, 0ull, 18085042131566592ull, 0ull, 18085043205308416ull, 18084767253659648ull, 0ull, 18084767253659648ull, 0ull, 18014398509481984ull, 0ull, 18014398509481984ull, 0ull, 18085042131566592ull, 18085043205308416ull, 0ull, 18085042131566592ull, 0ull, 18085043209502720ull, 0ull, 18014398509481984ull, 18014398509481984ull, 18014398509481984ull, 18084767253659648ull, 0ull, 18084767253659648ull, 0ull, 18085042131566592ull, 18085043209502720ull,
0ull, 18014398509481984ull, 0ull, 18014398509481984ull, 0ull, 18085042131566592ull, 0ull, 18085043209519168ull, 18084767253659648ull, 36169534507319296ull, 18084767253659648ull, 36170084263133184ull, 36170086419005440ull, 0ull, 36028797018963968ull, 0ull, 36170084263133184ull, 36169534507319296ull, 0ull, 36169534507319296ull, 36170086419005440ull, 144124052888354816ull, 36028797018963968ull, 0ull, 36170084263133184ull, 36170086419038336ull, 0ull, 36169534507319296ull, 144124053425225728ull, 144124053425225728ull, 36028797018963968ull, 144123984168878080ull,
36169534507319296ull, 36170086419038208ull, 0ull, 36170084263133184ull, 36169534507319296ull, 0ull, 36028797018963968ull, 144123984168878080ull, 0ull, 36169534507319296ull, 0ull, 36170084263133184ull, 36170086410616832ull, 0ull, 36028797018963968ull, 0ull, 36170084263133184ull, 36169534507319296ull, 0ull, 36169534507319296ull, 36170086410616832ull, 144124052888354816ull, 36028797018963968ull, 0ull, 36170084263133184ull, 36170086410616832ull, 0ull, 36169534507319296ull, 144124053429452800ull, 144124053429420032ull, 36028797018963968ull, 144123984168878080ull,
36169534507319296ull, 36170086410616832ull, 0ull, 36170084263133184ull, 36169534507319296ull, 0ull, 36028797018963968ull, 144123984168878080ull, 0ull, 512ull, 262656ull, 262656ull, 134480384ull, 0ull, 0ull, 0ull, 262656ull, 512ull, 134480384ull, 134480384ull, 512ull, 0ull, 262656ull, 262656ull, 68853957120ull, 0ull, 0ull, 512ull, 512ull, 0ull, 18049651735527936ull, 9241421688590303744ull,
512ull, 0ull, 262656ull, 512ull, 0ull, 0ull, 0ull, 512ull, 512ull, 0ull, 134480384ull, 0ull, 0ull, 262656ull, 262656ull, 512ull, 0ull, 0ull, 512ull, 0ull, 0ull, 134480384ull, 35253226045952ull, 0ull, 0ull, 262656ull, 512ull, 1024ull, 0ull, 512ull, 512ull, 0ull,
0ull, 68853957120ull, 0ull, 1024ull, 262656ull, 512ull, 512ull, 70506452091904ull, 36099303471055872ull, 1024ull, 0ull, 1024ull, 0ull, 0ull, 0ull, 268960768ull, 268960768ull, 1024ull, 0ull, 1024ull, 0ull, 137707914240ull, 0ull, 525312ull, 0ull, 1024ull, 0ull, 0ull, 0ull, 268960768ull, 0ull, 525312ull,
0ull, 1024ull, 131072ull, 131072ull, 131072ull, 525312ull, 17626613022720ull, 9024825867763712ull, 4620710844295151616ull, 0ull, 131072ull, 131072ull, 0ull, 525312ull, 34426978304ull, 34426978304ull, 34426978304ull, 0ull, 131072ull, 131072ull, 131072ull, 0ull, 67239936ull, 67239936ull, 67239936ull, 0ull, 131072ull, 131072ull, 0ull, 134479873ull, 67239936ull, 67239936ull,
67239936ull, 0ull, 134479873ull, 134479873ull, 0ull, 262145ull, 0ull, 0ull, 0ull, 0ull, 262145ull, 134479873ull, 134218241ull, 0ull, 0ull, 35253226045441ull, 134479873ull, 9241421688590041601ull, 35253225783809ull, 262145ull, 18049651735527425ull, 9241421688590303233ull, 0ull, 262145ull, 262145ull, 0ull, 68853694977ull, 0ull, 262145ull, 68853956609ull, 0ull, 0ull,
134218240ull, 134218240ull, 68853956609ull, 0ull, 0ull, 262145ull, 0ull, 0ull, 0ull, 134218240ull, 262145ull, 0ull, 0ull, 0ull, 18049651735265792ull, 35253225783808ull, 134218241ull, 134218241ull, 0ull, 134218240ull, 134218240ull, 0ull, 0ull, 68853694976ull, 0ull, 134218241ull, 0ull, 0ull, 134218240ull, 0ull, 18049651735265793ull, 35253225783809ull,
0ull, 9241421688590041600ull, 35253225783808ull, 134218241ull, 134218241ull, 0ull, 0ull, 68853694977ull, 0ull, 0ull, 68853694976ull, 0ull, 68719739393ull, 0ull, 35253091828225ull, 0ull, 68719738880ull, 0ull, 35253091827712ull, 0ull, 0ull, 68719739392ull, 0ull, 35253091828224ull, 0ull, 68719738880ull, 0ull, 35253091827712ull, 0ull, 68719739393ull, 18049651601310209ull, 9241421688456086017ull,
68719738880ull, 68719738880ull, 18049651601309696ull, 9241421688456085504ull, 0ull, 68719739392ull, 68719739392ull, 18049651601310208ull, 9241421688456086016ull, 68719738880ull, 68719738880ull, 18049651601309696ull, 9241421688456085504ull, 0ull, 0ull, 35184506306560ull, 0ull, 18049583015788544ull, 9241421619870564352ull, 35184506569217ull, 0ull, 0ull, 0ull, 35184506306560ull, 0ull, 18049583015788544ull, 9241421619870564352ull, 0ull, 0ull, 18049583016050688ull, 9241421619870826496ull, 0ull,
0ull, 0ull, 0ull, 0ull, 0ull, 18049583016050688ull, 9241421619870826496ull, 35184506306560ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 35184506306560ull, 0ull, 0ull, 0ull, 35184506568704ull, 0ull, 18049583016051200ull, 9241421619870827008ull, 0ull, 0ull, 18049583015788544ull, 9241421619870564352ull, 35184506568704ull, 0ull, 18049583016051201ull, 9241421619870827009ull, 0ull,
0ull, 18049583015788544ull, 9241421619870564352ull, 0ull, 0ull, 9241386504083734528ull, 9241386504217952256ull, 0ull, 18014467228958720ull, 18014467363176448ull, 0ull, 35184506569216ull, 0ull, 0ull, 0ull, 0ull, 9241386504083734528ull, 9241386504218214912ull, 9241386504218214913ull, 18014467228958720ull, 18014467363439104ull, 18014467363439105ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 9223407221226864640ull,
0ull, 9223407289946341376ull, 0ull, 9223407289946341376ull, 0ull, 9241386504083734528ull, 9241386504218214400ull, 0ull, 18014467228958720ull, 18014467363438592ull, 9223407221226864640ull, 0ull, 0ull, 9223407221226864640ull, 9223407290080559104ull, 0ull, 9241386504083734528ull, 9241386504217952256ull, 9241386504217952256ull, 18014467228958720ull, 18014467363176448ull, 18014467363176448ull, 0ull, 9223407221226864640ull, 0ull, 9223407221226864640ull, 0ull, 9223407289946341376ull, 9223407290080821761ull, 9223407290080821760ull, 0ull, 70506183131136ull,
0ull, 70506183131136ull, 0ull, 0ull, 9223407221226864640ull, 0ull, 0ull, 0ull, 0ull, 9223407289946341376ull, 0ull, 0ull, 0ull, 70368744177664ull, 0ull, 70368744177664ull, 0ull, 9223407221226864640ull, 0ull, 9223407221226864640ull, 9223407290080821248ull, 0ull, 9223407290080559104ull, 9223407290080559104ull, 0ull, 70368744177664ull, 0ull, 70368744177664ull, 70368744177664ull, 9007199254740992ull, 0ull, 70368744177664ull,
0ull, 0ull, 9007199254740992ull, 70506452091904ull, 70506452091906ull, 0ull, 70506452090880ull, 0ull, 70368744177664ull, 9024791440785408ull, 0ull, 70368744177664ull, 0ull, 0ull, 9024791440785408ull, 70506451566592ull, 70506451566592ull, 0ull, 70506451566592ull, 70506183131136ull, 0ull, 70506183131136ull, 0ull, 0ull, 0ull, 9024791440785408ull, 9024825800523776ull, 9024825800523776ull, 9007199254740992ull, 0ull, 9024791440785408ull, 9024825800523776ull,
9024825800523776ull, 9007199254740992ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 9024825867763712ull, 9024825867763968ull, 9007199254740992ull, 9007199254740992ull, 0ull, 9024825867632640ull, 9024825867632640ull, 9007199254740992ull, 9007199254740992ull, 0ull, 0ull, 0ull, 18049651601047552ull, 18014398509481984ull, 18014398509481984ull, 0ull, 0ull, 18014398509481984ull, 0ull, 18049651735527424ull, 0ull, 18049582881570816ull,
0ull, 18049651601047552ull, 18014398509481984ull, 0ull, 18014398509481984ull, 18014398509481984ull, 0ull, 0ull, 0ull, 18049582881570816ull, 18049651601047552ull, 0ull, 18014398509481984ull, 0ull, 0ull, 18014398509481984ull, 18014398509481984ull, 0ull, 0ull, 0ull, 18049582881570816ull, 18049651601047552ull, 0ull, 0ull, 18014398509481984ull, 18014398509481984ull, 0ull, 0ull, 0ull, 18049582881570816ull, 18049651735265280ull, 18049651735265280ull,
0ull, 18049582881570816ull, 0ull, 18014398509481984ull, 18014398509481984ull, 0ull, 0ull, 0ull, 18049582881570816ull, 18049651735265280ull, 0ull, 18049582881570816ull, 18014398509481984ull, 0ull, 18014398509481984ull, 0ull, 18014398509481984ull, 0ull, 18049651735527937ull, 18049651735527936ull, 0ull, 18049582881570816ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 2113536ull, 16384ull, 270548992ull, 0ull,
16384ull, 0ull, 0ull, 0ull, 2113536ull, 16384ull, 4432676798464ull, 0ull, 16384ull, 0ull, 270548992ull, 0ull, 16384ull, 2113536ull, 16384ull, 0ull, 0ull, 0ull, 34630287360ull, 0ull, 16384ull, 2113536ull, 16384ull, 0ull, 0ull, 0ull, 16384ull, 270548992ull, 270548992ull, 16384ull, 2097280ull, 2113536ull,
0ull, 0ull, 16384ull, 567382630219776ull, 72624976668147712ull, 16384ull, 0ull, 2113536ull, 0ull, 0ull, 0ull, 16384ull, 0ull, 270548992ull, 0ull, 16384ull, 2113536ull, 0ull, 0ull, 16384ull, 0ull, 34630287360ull, 0ull, 16384ull, 2113536ull, 0ull, 0ull, 270532736ull, 0ull, 0ull, 0ull, 0ull,
2097280ull, 0ull, 0ull, 4432676782208ull, 0ull, 270532736ull, 270532736ull, 270532736ull, 2097280ull, 0ull, 0ull, 2097280ull, 2097280ull, 34630271104ull, 72624976668131456ull, 567382630203520ull, 0ull, 270532736ull, 0ull, 2097280ull, 2097280ull, 0ull, 2097280ull, 0ull, 4194304ull, 34630271104ull, 0ull, 0ull, 0ull, 0ull, 69260541952ull, 0ull,
0ull, 4194304ull, 0ull, 0ull, 0ull, 0ull, 541065216ull, 0ull, 0ull, 0ull, 0ull, 4194304ull, 0ull, 0ull, 4194304ull, 0ull, 1134765260406784ull, 145249953336262656ull, 0ull, 69260541952ull, 0ull, 0ull, 0ull, 268451968ull, 4194304ull, 0ull, 0ull, 72624976666050688ull, 567382628122752ull, 0ull, 541065216ull, 268451840ull,
268451840ull, 4194304ull, 0ull, 0ull, 0ull, 0ull, 8865353564160ull, 268451968ull, 268451968ull, 0ull, 4432674701312ull, 4194304ull, 0ull, 34628190208ull, 4194304ull, 0ull, 541065216ull, 541065216ull, 4432674701440ull, 541065216ull, 0ull, 34628190336ull, 268451840ull, 0ull, 0ull, 268451840ull, 0ull, 0ull, 0ull, 0ull, 268451968ull, 0ull,
0ull, 268451968ull, 0ull, 34628190208ull, 0ull, 0ull, 0ull, 0ull, 567382361767936ull, 72624976399695872ull, 0ull, 34628190336ull, 0ull, 34361835520ull, 0ull, 268451840ull, 567382361767936ull, 72624976399695872ull, 0ull, 72624976666050560ull, 567382628122624ull, 34361835520ull, 0ull, 4432408346624ull, 567382361784320ull, 72624976399712256ull, 0ull, 34361835520ull, 34361835520ull, 34361851904ull, 0ull, 4432408346624ull,
567382361784448ull, 72624976399712384ull, 0ull, 34361835520ull, 34361835520ull, 34361852032ull, 4398314946560ull, 4432408363008ull, 4398314946560ull, 0ull, 0ull, 34361851904ull, 34361851904ull, 0ull, 567348268367872ull, 4432408363136ull, 72624942306295808ull, 0ull, 0ull, 0ull, 34361852032ull, 0ull, 4398317043712ull, 0ull, 4398317043712ull, 4398314946560ull, 4398314946560ull, 4398314946560ull, 4398314946560ull, 0ull, 567348270465024ull, 0ull,
72624942308392960ull, 567348268367872ull, 567348268367872ull, 72624942306295808ull, 72624942306295808ull, 0ull, 0ull, 0ull, 0ull, 4398317060096ull, 4398317060224ull, 4398317060096ull, 4398317060224ull, 0ull, 0ull, 0ull, 0ull, 567348270481408ull, 567348270481536ull, 72624942308409344ull, 72624942308409472ull, 0ull, 72620578351087616ull, 0ull, 562984313159680ull, 0ull, 72620578351087616ull, 0ull, 562984313159680ull, 72620578621636736ull, 72620578621636608ull, 562984583708800ull,
562984583708672ull, 72620578619523072ull, 72620578619523072ull, 562984581595136ull, 562984581595136ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 0ull, 72620578351087616ull, 72620578351087616ull, 562984313159680ull, 0ull, 72620578351087616ull, 72620578351087616ull, 562984313159680ull, 72620578621620224ull, 72620578621620224ull, 562984583692288ull, 562984583692288ull, 72620578619523072ull, 72620578619523072ull, 562984581595136ull, 562984581595136ull, 2199023255552ull, 0ull, 2199023255552ull,
0ull, 2199023255552ull, 0ull, 2199023255552ull, 72062026444177408ull, 2199023255552ull, 0ull, 2199023255552ull, 0ull, 2199023255552ull, 0ull, 2199023255552ull, 0ull, 0ull, 2216203124736ull, 0ull, 2216338399296ull, 2216338399232ull, 2216203124736ull, 0ull, 2216337342464ull, 2216337342464ull, 2216203124736ull, 0ull, 2216338391040ull, 72061992084439040ull, 2216203124736ull, 0ull, 2216337342464ull, 0ull, 0ull, 0ull,
0ull, 72061992084439040ull, 72062026712612864ull, 72061992084439040ull, 0ull, 0ull, 0ull, 0ull, 0ull, 72061992084439040ull, 72062026714710016ull, 72061992084439040ull, 72062026712612864ull, 72062026712612864ull, 0ull, 0ull, 0ull, 72061992084439040ull, 72062026444177408ull, 72061992084439040ull, 72062026714726400ull, 72062026714726528ull, 0ull, 0ull, 0ull, 0ull, 72062026444177408ull, 72061992084439040ull, 72062026444177408ull, 1134765260406784ull, 1134765256212480ull, 0ull,
1134695999864832ull, 0ull, 1134764719341568ull, 0ull, 0ull, 1134695999864832ull, 562949953421312ull, 0ull, 567347999932416ull, 562949953421312ull, 567382628106240ull, 567382628106240ull, 562949953421312ull, 1125899906842624ull, 567347999932416ull, 1125899906842624ull, 0ull, 567382628106240ull, 1125899906842624ull, 562949953421312ull, 1125899906842624ull, 562949953421312ull, 0ull, 0ull, 567347999932416ull, 562949953421312ull, 0ull, 567382359670784ull, 562949953421312ull, 1134765256212480ull, 1134765260439552ull, 567347999932416ull,
1134695999864832ull, 567382359670784ull, 1134764719341568ull, 562949953421312ull, 0ull, 1134695999864832ull, 562949953421312ull, 0ull, 567347999932416ull, 562949953421312ull, 567382630219904ull, 567382630219776ull, 562949953421312ull, 1125899906842624ull, 567347999932416ull, 1125899906842624ull, 0ull, 567382630203392ull, 1125899906842624ull, 562949953421312ull, 1125899906842624ull, 562949953421312ull, 0ull, 0ull, 567347999932416ull, 562949953421312ull, 0ull, 567382359670784ull, 562949953421312ull, 0ull, 0ull, 567347999932416ull,
0ull, 567382359670784ull, 0ull, 562949953421312ull
};
constexpr Direction masks[64][4] = {
{ { 18446744073709551489ull, 234855683u, 4u }, { 18446461494909402879ull, 3892168661u, 2608u }, { 18428694421974023679ull, 2541033474u, 5033u }, { 18446744073709551615ull, 2267735853u, 0u }} ,
{ { 18446744073709551491ull, 2868877703u, 47u }, { 18446178916109254143ull, 2157715493u, 2349u }, { 18446673567257459711ull, 3460565002u, 5082u }, { 18446744073709551615ull, 122733847u, 522u }} ,
{ { 18446744073709551493ull, 3045022083u, 74u }, { 18445613758508956671ull, 541104637u, 2417u }, { 18446743798293723135ull, 4026223924u, 118u }, { 18446744073709551103ull, 2309748768u, 556u }} ,
{ { 18446744073709551497ull, 2885898683u, 126u }, { 18444483443308361727ull, 2918416302u, 2487u }, { 18446744072633708543ull, 2624262151u, 128u }, { 18446744073709419519ull, 3554333906u, 567u }} ,
{ { 18446744073709551505ull, 2153771159u, 187u }, { 18442222812907171839ull, 374603809u, 2683u }, { 18446744073705349119ull, 368594258u, 139u }, { 18446744073675732991ull, 2640158293u, 1305u }} ,
{ { 18446744073709551521ull, 2869643122u, 198u }, { 18437701552104792063ull, 2951923197u, 2742u }, { 18446744073709535231ull, 52863847u, 0u }, { 18446744065051979775ull, 529609575u, 2679u }} ,
{ { 18446744073709551553ull, 2141770128u, 200u }, { 18428659030500032511ull, 1041350667u, 2809u }, { 18446744073709551615ull, 2213230266u, 1u }, { 18446741857371152383ull, 1946177715u, 4539u }} ,
{ { 18446744073709551489ull, 1425884284u, 259u }, { 18410573987290513407ull, 372862981u, 2875u }, { 18446744073709551615ull, 114744563u, 0u }, { 18446176691079331839ull, 3902603414u, 5531u }} ,
{ { 18446744073709519359ull, 875998493u, 302u }, { 18446461494909403135ull, 486609758u, 2294u }, { 18437719247841787903ull, 1008752656u, 5116u }, { 18446744073709551615ull, 2270171382u, 1u }} ,
{ { 18446744073709519871ull, 2893851324u, 313u }, { 18446178916109254655ull, 75597920u, 2552u }, { 18428694421974024191ull, 3432032259u, 5133u }, { 18446744073709551615ull, 3020439992u, 566u }} ,
{ { 18446744073709520383ull, 2315965969u, 374u }, { 18445613758508957695ull, 2378432365u, 2935u }, { 18446673567257460735ull, 3613130388u, 1227u }, { 18446744073709420543ull, 514522957u, 648u }} ,
{ { 18446744073709521407ull, 1170996482u, 409u }, { 18444483443308363775ull, 4127023028u, 2947u }, { 18446743798293725183ull, 1408295764u, 144u }, { 18446744073675735039ull, 2615939571u, 665u }} ,
{ { 18446744073709523455ull, 4294924141u, 409u }, { 18442222812907175935ull, 1945989082u, 2973u }, { 18446744072633712639ull, 1407840973u, 126u }, { 18446744065051983871ull, 28008874u, 950u }} ,
{ { 18446744073709527551ull, 3769256683u, 452u }, { 18437701552104800255ull, 3617456109u, 3023u }, { 18446744073705357311ull, 3410767840u, 128u }, { 18446741857371160575ull, 1384146945u, 2883u }} ,
{ { 18446744073709535743ull, 2348832808u, 496u }, { 18428659030500048895ull, 1247583222u, 3065u }, { 18446744073709551615ull, 4068076898u, 112u }, { 18446176691079348223ull, 3670769606u, 5566u }} ,
{ { 18446744073709519359ull, 1230307211u, 522u }, { 18410573987290546175ull, 1959658455u, 3088u }, { 18446744073709551615ull, 3678947851u, 129u }, { 18445609308449144831ull, 4105519132u, 5620u }} ,
{ { 18446744073701294079ull, 923174572u, 558u }, { 18446461494909468415ull, 354942827u, 3112u }, { 18442231660775735295ull, 1397526492u, 671u }, { 18446744073709551103ull, 2942646290u, 664u }} ,
{ { 18446744073701425151ull, 1511395672u, 565u }, { 18446178916109385215ull, 2298872125u, 3172u }, { 18437719247841918975ull, 1793796102u, 945u }, { 18446744073709550591ull, 543891919u, 725u }} ,
{ { 18446744073701556223ull, 3705697580u, 612u }, { 18445613758509218815ull, 3153919749u, 3200u }, { 18428694421974285823ull, 1038085421u, 5163u }, { 18446744073675995135ull, 251684351u, 737u }} ,
{ { 18446744073701818367ull, 2593729301u, 646u }, { 18444483443308886015ull, 1030004779u, 3218u }, { 18446673567257983999ull, 3501457638u, 2294u }, { 18446744065052504063ull, 695971628u, 1185u }} ,
{ { 18446744073702342655ull, 3588674805u, 686u }, { 18442222812908220415ull, 2988474425u, 3270u }, { 18446743798294771711ull, 2502527818u, 2304u }, { 18446741857372200959ull, 3112102685u, 2965u }} ,
{ { 18446744073703391231ull, 2821281200u, 712u }, { 18437701552106889215ull, 863518698u, 3287u }, { 18446744072635805695ull, 3817870533u, 145u }, { 18446176691081428991ull, 4083777519u, 5654u }} ,
{ { 18446744073705488383ull, 857462010u, 750u }, { 18428659030504226815ull, 2752761871u, 3338u }, { 18446744073709543423ull, 3615320729u, 138u }, { 18445609308453339135ull, 3211640878u, 2349u }} ,
{ { 18446744073701294079ull, 1435118159u, 769u }, { 18410573987298902015ull, 2293819907u, 3358u }, { 18446744073709535231ull, 2416268561u, 194u }, { 18444474543197126655ull, 350363622u, 3063u }} ,
{ { 18446744071595622399ull, 2371738142u, 812u }, { 18446461494926180095ull, 253821832u, 3421u }, { 18444487867259420671ull, 59301904u, 203u }, { 18446744073709419519ull, 1837100275u, 722u }} ,
{ { 18446744071629176831ull, 3669720341u, 862u }, { 18446178916142808575ull, 2038329865u, 3425u }, { 18442231660809289727ull, 3258855445u, 200u }, { 18446744073709287423ull, 1107733410u, 942u }} ,
{ { 18446744071662731263ull, 3360053077u, 903u }, { 18445613758576065535ull, 3460055251u, 3469u }, { 18437719247908896767ull, 1063202809u, 2558u }, { 18446744065119088639ull, 4231707065u, 1264u }} ,
{ { 18446744071729840127ull, 3882564793u, 931u }, { 18444483443442579455ull, 1465778059u, 3514u }, { 18428694422108241407ull, 1350177796u, 5201u }, { 18446741857505370111ull, 75571134u, 3393u }} ,
{ { 18446744071864057855ull, 1689799379u, 970u }, { 18442222813175607295ull, 1406123794u, 3535u }, { 18446673567525895167ull, 1754007633u, 2608u }, { 18446176691347767295ull, 3182526636u, 5693u }} ,
{ { 18446744072132493311ull, 227949718u, 1028u }, { 18437701552641662975ull, 2289106988u, 3589u }, { 18446743798830594047ull, 1541397659u, 262u }, { 18445609308986015743ull, 2678538256u, 4470u }} ,
{ { 18446744072669364223ull, 1700467861u, 1047u }, { 18428659031573774335ull, 1941402638u, 3599u }, { 18446744073707450367ull, 4218048539u, 309u }, { 18444474544270868479ull, 4151287908u, 1311u }} ,
{ { 18446744071595622399ull, 3936814010u, 1098u }, { 18410573989437997055ull, 1667892704u, 3646u }, { 18446744073705349119ull, 3199206766u, 341u }, { 18442205014832185343ull, 3083350052u, 1378u }} ,
{ { 18446743532543672319ull, 2617791667u, 1162u }, { 18446461499204370175ull, 1962602301u, 3675u }, { 18445615974779453439ull, 3697576999u, 384u }, { 18446744073675732991ull, 2831854005u, 961u }} ,
{ { 18446743541133606911ull, 2752013492u, 1201u }, { 18446178924699188735ull, 1778251850u, 3714u }, { 18444487875849355263ull, 542682032u, 444u }, { 18446744073641914367ull, 3094001303u, 1197u }} ,
{ { 18446743549723541503ull, 3288933744u, 1226u }, { 18445613775688825855ull, 3233744788u, 3742u }, { 18442231677955604479ull, 2558443542u, 477u }, { 18446741874551021567ull, 79691023u, 3131u }} ,
{ { 18446743566903410687ull, 29389705u, 1271u }, { 18444483477668100095ull, 2772688790u, 3790u }, { 18437719282201526271ull, 1376202768u, 2810u }, { 18446176725439070207ull, 445121404u, 5721u }} ,
{ { 18446743601263149055ull, 1088487901u, 1295u }, { 18442222881626648575ull, 1407250372u, 3814u }, { 18428694490693500415ull, 84232198u, 5261u }, { 18445609377168621567ull, 777109685u, 4592u }} ,
{ { 18446743669982625791ull, 2170510418u, 1352u }, { 18437701689543745535ull, 1292377982u, 3842u }, { 18446673704696413183ull, 1962942306u, 1606u }, { 18444474680636080127ull, 2690712627u, 1423u }} ,
{ { 18446743807421579263ull, 2164839297u, 1385u }, { 18428659305377939455ull, 3517170675u, 3874u }, { 18446744073171630079ull, 677512958u, 564u }, { 18442205289710092287ull, 1171230667u, 974u }} ,
{ { 18446743532543672319ull, 2164535119u, 1405u }, { 18410574537046327295ull, 3625846815u, 3919u }, { 18446744072633708543ull, 612021937u, 670u }, { 18437666505710632959ull, 1818001279u, 1133u }} ,
{ { 18446605535244451839ull, 920913031u, 1437u }, { 18446462594421030655ull, 251624630u, 3943u }, { 18446181123756130303ull, 2847168476u, 210u }, { 18446744065051979775ull, 3731534074u, 4000u }} ,
{ { 18446607734267707391ull, 4211344434u, 1444u }, { 18446181115132509695ull, 889207161u, 3986u }, { 18445618173802708991ull, 2577169867u, 224u }, { 18446744056394407935ull, 430439675u, 4844u }} ,
{ { 18446609933290962943ull, 2078243197u, 1474u }, { 18445618156555467775ull, 1332396772u, 4023u }, { 18444492265305931775ull, 3827044354u, 414u }, { 18446181089125842943ull, 1672739925u, 5763u }} ,
{ { 18446614331337474047ull, 2927705946u, 1513u }, { 18444492239401383935ull, 4118798740u, 4053u }, { 18442240456868757503ull, 2351357695u, 1163u }, { 18445618104542167039ull, 4104169475u, 4677u }} ,
{ { 18446623127430496255ull, 3078701330u, 1547u }, { 18442240405093216255ull, 2941600325u, 4100u }, { 18437736840027832319ull, 496730019u, 2082u }, { 18444492135383171071ull, 260260835u, 1698u }} ,
{ { 18446640719616540671ull, 3279867820u, 1605u }, { 18437736736476880895ull, 3619686282u, 4141u }, { 18428729606346112511ull, 274031568u, 5312u }, { 18442240199204274175ull, 3457532800u, 1259u }} ,
{ { 18446675903988629503ull, 2634092832u, 1625u }, { 18428729399244210175ull, 866035773u, 4185u }, { 18446743936001637375ull, 992640776u, 2414u }, { 18437736874454810623ull, 2550292627u, 1015u }} ,
{ { 18446605535244451839ull, 813761037u, 1643u }, { 18410714724778868735ull, 3809083105u, 4218u }, { 18446743798293723135ull, 1732949302u, 2674u }, { 18428729675200069631ull, 1619087401u, 1123u }} ,
{ { 18411278226644008959ull, 334535672u, 1699u }, { 18446742969886113535ull, 3943170182u, 4221u }, { 18446744073709551615ull, 2896306098u, 281u }, { 18446741857371152383ull, 3257051658u, 5800u }} ,
{ { 18411841176597430271ull, 2696319997u, 1707u }, { 18446741866062675455ull, 1945916835u, 4254u }, { 18446744073709551615ull, 614744417u, 356u }, { 18446739641032753151ull, 1477006790u, 5821u }} ,
{ { 18412404126550851583ull, 2970673281u, 1760u }, { 18446739658415799295ull, 2038562789u, 4287u }, { 18446741874686296063ull, 2662793567u, 443u }, { 18446735208355987455ull, 1775951188u, 4971u }} ,
{ { 18413530026457694207ull, 585895876u, 1790u }, { 18446735243122046975ull, 3875381269u, 4316u }, { 18446739667073105919ull, 1107484116u, 488u }, { 18446726343010811903ull, 1477421562u, 1838u }} ,
{ { 18415781826271379455ull, 2475589952u, 1823u }, { 18446726412534542335ull, 1370421919u, 4364u }, { 18446735260403105791ull, 1897869781u, 1284u }, { 18446708614459555839ull, 3595090359u, 1324u }} ,
{ { 18420285425898749951ull, 1177190672u, 1835u }, { 18446708751359533055ull, 422076419u, 4420u }, { 18446726447096528895ull, 119624956u, 2478u }, { 18446673704965373951ull, 2245931855u, 1191u }} ,
{ { 18429292625153490943ull, 2829385458u, 1893u }, { 18446673429009514495ull, 2749615785u, 4413u }, { 18446708820483505663ull, 3973396529u, 5339u }, { 18446744073709551615ull, 2195893906u, 1260u }} ,
{ { 18411278226644008959ull, 3243081991u, 1884u }, { 18446602784309477375ull, 76642817u, 4461u }, { 18446673567257459711ull, 1712679487u, 5368u }, { 18446744073709551615ull, 2140160490u, 1206u }} ,
{ { 9367487224930631679ull, 2473487354u, 1948u }, { 18446461494909402879ull, 2259368022u, 4601u }, { 18446744073709551615ull, 14849288u, 3u }, { 18446176691079331839ull, 3351423592u, 5894u }} ,
{ { 9511602413006487551ull, 1561039039u, 1997u }, { 18446178916109254143ull, 3636993451u, 4514u }, { 18446744073709551615ull, 834690824u, 354u }, { 18445609308449144831ull, 4274966700u, 5877u }} ,
{ { 9655717601082343423ull, 1150433023u, 2041u }, { 18445613758508956671ull, 1448436623u, 4663u }, { 18446181123756130303ull, 3392983922u, 487u }, { 18444474543197126655ull, 4026702915u, 2748u }} ,
{ { 9943947977234055167ull, 1800257195u, 2065u }, { 18444483443308361727ull, 726311825u, 4725u }, { 18445615974779453439ull, 1844375442u, 534u }, { 18442205014832185343ull, 2215079584u, 1489u }} ,
{ { 10520408729537478655ull, 3760649209u, 2108u }, { 18442222812907171839ull, 500868894u, 4787u }, { 18444487867259420671ull, 1021876u, 667u }, { 18437666505710632959ull, 241191291u, 1464u }} ,
{ { 11673330234144325631ull, 3545997378u, 2171u }, { 18437701552104792063ull, 3354153951u, 4858u }, { 18442231660775735295ull, 4291451428u, 1540u }, { 18428729675200069631ull, 2095105158u, 1271u }} ,
{ { 13979173243358019583ull, 1408077119u, 2170u }, { 18428659030500032511ull, 1444631838u, 4908u }, { 18437719247841787903ull, 3355727273u, 5405u }, { 18446744073709551615ull, 2592130306u, 1334u }} ,
{ { 9367487224930631679ull, 3569400770u, 2234u }, { 18410573987290513407ull, 1044627563u, 4967u }, { 18428694421974023679ull, 2318051086u, 5462u }, { 18446744073709551615ull, 2184486415u, 2u }}
};
constexpr uint64_t Size = sizeof(attacks) + (256 * sizeof(Direction));
static constexpr uint64_t fold(uint64_t occ, Direction d)
{
uint64_t o = occ | d.mask;
uint32_t folded = (uint32_t)(o >> 32ull) ^ ((uint32_t)(o) * 3);
return attacks[((folded * d.mult) >> 26) + d.offset]; //The offset can be merged with the pointer
}
uint64_t Queen(int sq, uint64_t occ)
{
return fold(occ, masks[sq][0]) | fold(occ, masks[sq][1]) | fold(occ, masks[sq][2]) | fold(occ, masks[sq][3]);
}
}