-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtestsuites.h
780 lines (776 loc) · 45.2 KB
/
testsuites.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
/*
Clarity
Copyright (C) 2024 Joseph Pasfield
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// something something header guards
#pragma once
#include "testessentials.h"
// this is the perft suite from the engine Ethereal
std::array<PerftTest, 755> etherealSuite = {
PerftTest("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", 1, 20),
PerftTest("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", 2, 400),
PerftTest("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", 3, 8902),
PerftTest("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", 4, 197281),
PerftTest("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", 5, 4865609),
PerftTest("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", 6, 119060324),
PerftTest("r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1", 1, 48),
PerftTest("r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1", 2, 2039),
PerftTest("r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1", 3, 97862),
PerftTest("r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1", 4, 4085603),
PerftTest("r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1", 5, 193690690),
PerftTest("4k3/8/8/8/8/8/8/4K2R w K - 0 1", 1, 15),
PerftTest("4k3/8/8/8/8/8/8/4K2R w K - 0 1", 2, 66),
PerftTest("4k3/8/8/8/8/8/8/4K2R w K - 0 1", 3, 1197),
PerftTest("4k3/8/8/8/8/8/8/4K2R w K - 0 1", 4, 7059),
PerftTest("4k3/8/8/8/8/8/8/4K2R w K - 0 1", 5, 133987),
PerftTest("4k3/8/8/8/8/8/8/4K2R w K - 0 1", 6, 764643),
PerftTest("4k3/8/8/8/8/8/8/R3K3 w Q - 0 1", 1, 16),
PerftTest("4k3/8/8/8/8/8/8/R3K3 w Q - 0 1", 2, 71),
PerftTest("4k3/8/8/8/8/8/8/R3K3 w Q - 0 1", 3, 1287),
PerftTest("4k3/8/8/8/8/8/8/R3K3 w Q - 0 1", 4, 7626),
PerftTest("4k3/8/8/8/8/8/8/R3K3 w Q - 0 1", 5, 145232),
PerftTest("4k3/8/8/8/8/8/8/R3K3 w Q - 0 1", 6, 846648),
PerftTest("4k2r/8/8/8/8/8/8/4K3 w k - 0 1", 1, 5),
PerftTest("4k2r/8/8/8/8/8/8/4K3 w k - 0 1", 2, 75),
PerftTest("4k2r/8/8/8/8/8/8/4K3 w k - 0 1", 3, 459),
PerftTest("4k2r/8/8/8/8/8/8/4K3 w k - 0 1", 4, 8290),
PerftTest("4k2r/8/8/8/8/8/8/4K3 w k - 0 1", 5, 47635),
PerftTest("4k2r/8/8/8/8/8/8/4K3 w k - 0 1", 6, 899442),
PerftTest("r3k3/8/8/8/8/8/8/4K3 w q - 0 1", 1, 5),
PerftTest("r3k3/8/8/8/8/8/8/4K3 w q - 0 1", 2, 80),
PerftTest("r3k3/8/8/8/8/8/8/4K3 w q - 0 1", 3, 493),
PerftTest("r3k3/8/8/8/8/8/8/4K3 w q - 0 1", 4, 8897),
PerftTest("r3k3/8/8/8/8/8/8/4K3 w q - 0 1", 5, 52710),
PerftTest("r3k3/8/8/8/8/8/8/4K3 w q - 0 1", 6, 1001523),
PerftTest("4k3/8/8/8/8/8/8/R3K2R w KQ - 0 1", 1, 26),
PerftTest("4k3/8/8/8/8/8/8/R3K2R w KQ - 0 1", 2, 112),
PerftTest("4k3/8/8/8/8/8/8/R3K2R w KQ - 0 1", 3, 3189),
PerftTest("4k3/8/8/8/8/8/8/R3K2R w KQ - 0 1", 4, 17945),
PerftTest("4k3/8/8/8/8/8/8/R3K2R w KQ - 0 1", 5, 532933),
PerftTest("4k3/8/8/8/8/8/8/R3K2R w KQ - 0 1", 6, 2788982),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 w kq - 0 1", 1, 5),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 w kq - 0 1", 2, 130),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 w kq - 0 1", 3, 782),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 w kq - 0 1", 4, 22180),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 w kq - 0 1", 5, 118882),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 w kq - 0 1", 6, 3517770),
PerftTest("8/8/8/8/8/8/6k1/4K2R w K - 0 1", 1, 12),
PerftTest("8/8/8/8/8/8/6k1/4K2R w K - 0 1", 2, 38),
PerftTest("8/8/8/8/8/8/6k1/4K2R w K - 0 1", 3, 564),
PerftTest("8/8/8/8/8/8/6k1/4K2R w K - 0 1", 4, 2219),
PerftTest("8/8/8/8/8/8/6k1/4K2R w K - 0 1", 5, 37735),
PerftTest("8/8/8/8/8/8/6k1/4K2R w K - 0 1", 6, 185867),
PerftTest("8/8/8/8/8/8/1k6/R3K3 w Q - 0 1", 1, 15),
PerftTest("8/8/8/8/8/8/1k6/R3K3 w Q - 0 1", 2, 65),
PerftTest("8/8/8/8/8/8/1k6/R3K3 w Q - 0 1", 3, 1018),
PerftTest("8/8/8/8/8/8/1k6/R3K3 w Q - 0 1", 4, 4573),
PerftTest("8/8/8/8/8/8/1k6/R3K3 w Q - 0 1", 5, 80619),
PerftTest("8/8/8/8/8/8/1k6/R3K3 w Q - 0 1", 6, 413018),
PerftTest("4k2r/6K1/8/8/8/8/8/8 w k - 0 1", 1, 3),
PerftTest("4k2r/6K1/8/8/8/8/8/8 w k - 0 1", 2, 32),
PerftTest("4k2r/6K1/8/8/8/8/8/8 w k - 0 1", 3, 134),
PerftTest("4k2r/6K1/8/8/8/8/8/8 w k - 0 1", 4, 2073),
PerftTest("4k2r/6K1/8/8/8/8/8/8 w k - 0 1", 5, 10485),
PerftTest("4k2r/6K1/8/8/8/8/8/8 w k - 0 1", 6, 179869),
PerftTest("r3k3/1K6/8/8/8/8/8/8 w q - 0 1", 1, 4),
PerftTest("r3k3/1K6/8/8/8/8/8/8 w q - 0 1", 2, 49),
PerftTest("r3k3/1K6/8/8/8/8/8/8 w q - 0 1", 3, 243),
PerftTest("r3k3/1K6/8/8/8/8/8/8 w q - 0 1", 4, 3991),
PerftTest("r3k3/1K6/8/8/8/8/8/8 w q - 0 1", 5, 20780),
PerftTest("r3k3/1K6/8/8/8/8/8/8 w q - 0 1", 6, 367724),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 0 1", 1, 26),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 0 1", 2, 568),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 0 1", 3, 13744),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 0 1", 4, 314346),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 0 1", 5, 7594526),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 0 1", 6, 179862938),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R w Kkq - 0 1", 1, 25),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R w Kkq - 0 1", 2, 567),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R w Kkq - 0 1", 3, 14095),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R w Kkq - 0 1", 4, 328965),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R w Kkq - 0 1", 5, 8153719),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R w Kkq - 0 1", 6, 195629489),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R w Kkq - 0 1", 1, 25),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R w Kkq - 0 1", 2, 548),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R w Kkq - 0 1", 3, 13502),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R w Kkq - 0 1", 4, 312835),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R w Kkq - 0 1", 5, 7736373),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R w Kkq - 0 1", 6, 184411439),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 w Qkq - 0 1", 1, 25),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 w Qkq - 0 1", 2, 547),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 w Qkq - 0 1", 3, 13579),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 w Qkq - 0 1", 4, 316214),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 w Qkq - 0 1", 5, 7878456),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 w Qkq - 0 1", 6, 189224276),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 1, 26),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 2, 583),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 3, 14252),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 4, 334705),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 5, 8198901),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 6, 198328929),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 1, 25),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 2, 560),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 3, 13592),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 4, 317324),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 5, 7710115),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R w KQk - 0 1", 6, 185959088),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R w KQq - 0 1", 1, 25),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R w KQq - 0 1", 2, 560),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R w KQq - 0 1", 3, 13607),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R w KQq - 0 1", 4, 320792),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R w KQq - 0 1", 5, 7848606),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R w KQq - 0 1", 6, 190755813),
PerftTest("4k3/8/8/8/8/8/8/4K2R b K - 0 1", 1, 5),
PerftTest("4k3/8/8/8/8/8/8/4K2R b K - 0 1", 2, 75),
PerftTest("4k3/8/8/8/8/8/8/4K2R b K - 0 1", 3, 459),
PerftTest("4k3/8/8/8/8/8/8/4K2R b K - 0 1", 4, 8290),
PerftTest("4k3/8/8/8/8/8/8/4K2R b K - 0 1", 5, 47635),
PerftTest("4k3/8/8/8/8/8/8/4K2R b K - 0 1", 6, 899442),
PerftTest("4k3/8/8/8/8/8/8/R3K3 b Q - 0 1", 1, 5),
PerftTest("4k3/8/8/8/8/8/8/R3K3 b Q - 0 1", 2, 80),
PerftTest("4k3/8/8/8/8/8/8/R3K3 b Q - 0 1", 3, 493),
PerftTest("4k3/8/8/8/8/8/8/R3K3 b Q - 0 1", 4, 8897),
PerftTest("4k3/8/8/8/8/8/8/R3K3 b Q - 0 1", 5, 52710),
PerftTest("4k3/8/8/8/8/8/8/R3K3 b Q - 0 1", 6, 1001523),
PerftTest("4k2r/8/8/8/8/8/8/4K3 b k - 0 1", 1, 15),
PerftTest("4k2r/8/8/8/8/8/8/4K3 b k - 0 1", 2, 66),
PerftTest("4k2r/8/8/8/8/8/8/4K3 b k - 0 1", 3, 1197),
PerftTest("4k2r/8/8/8/8/8/8/4K3 b k - 0 1", 4, 7059),
PerftTest("4k2r/8/8/8/8/8/8/4K3 b k - 0 1", 5, 133987),
PerftTest("4k2r/8/8/8/8/8/8/4K3 b k - 0 1", 6, 764643),
PerftTest("r3k3/8/8/8/8/8/8/4K3 b q - 0 1", 1, 16),
PerftTest("r3k3/8/8/8/8/8/8/4K3 b q - 0 1", 2, 71),
PerftTest("r3k3/8/8/8/8/8/8/4K3 b q - 0 1", 3, 1287),
PerftTest("r3k3/8/8/8/8/8/8/4K3 b q - 0 1", 4, 7626),
PerftTest("r3k3/8/8/8/8/8/8/4K3 b q - 0 1", 5, 145232),
PerftTest("r3k3/8/8/8/8/8/8/4K3 b q - 0 1", 6, 846648),
PerftTest("4k3/8/8/8/8/8/8/R3K2R b KQ - 0 1", 1, 5),
PerftTest("4k3/8/8/8/8/8/8/R3K2R b KQ - 0 1", 2, 130),
PerftTest("4k3/8/8/8/8/8/8/R3K2R b KQ - 0 1", 3, 782),
PerftTest("4k3/8/8/8/8/8/8/R3K2R b KQ - 0 1", 4, 22180),
PerftTest("4k3/8/8/8/8/8/8/R3K2R b KQ - 0 1", 5, 118882),
PerftTest("4k3/8/8/8/8/8/8/R3K2R b KQ - 0 1", 6, 3517770),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 b kq - 0 1", 1, 26),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 b kq - 0 1", 2, 112),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 b kq - 0 1", 3, 3189),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 b kq - 0 1", 4, 17945),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 b kq - 0 1", 5, 532933),
PerftTest("r3k2r/8/8/8/8/8/8/4K3 b kq - 0 1", 6, 2788982),
PerftTest("8/8/8/8/8/8/6k1/4K2R b K - 0 1", 1, 3),
PerftTest("8/8/8/8/8/8/6k1/4K2R b K - 0 1", 2, 32),
PerftTest("8/8/8/8/8/8/6k1/4K2R b K - 0 1", 3, 134),
PerftTest("8/8/8/8/8/8/6k1/4K2R b K - 0 1", 4, 2073),
PerftTest("8/8/8/8/8/8/6k1/4K2R b K - 0 1", 5, 10485),
PerftTest("8/8/8/8/8/8/6k1/4K2R b K - 0 1", 6, 179869),
PerftTest("8/8/8/8/8/8/1k6/R3K3 b Q - 0 1", 1, 4),
PerftTest("8/8/8/8/8/8/1k6/R3K3 b Q - 0 1", 2, 49),
PerftTest("8/8/8/8/8/8/1k6/R3K3 b Q - 0 1", 3, 243),
PerftTest("8/8/8/8/8/8/1k6/R3K3 b Q - 0 1", 4, 3991),
PerftTest("8/8/8/8/8/8/1k6/R3K3 b Q - 0 1", 5, 20780),
PerftTest("8/8/8/8/8/8/1k6/R3K3 b Q - 0 1", 6, 367724),
PerftTest("4k2r/6K1/8/8/8/8/8/8 b k - 0 1", 1, 12),
PerftTest("4k2r/6K1/8/8/8/8/8/8 b k - 0 1", 2, 38),
PerftTest("4k2r/6K1/8/8/8/8/8/8 b k - 0 1", 3, 564),
PerftTest("4k2r/6K1/8/8/8/8/8/8 b k - 0 1", 4, 2219),
PerftTest("4k2r/6K1/8/8/8/8/8/8 b k - 0 1", 5, 37735),
PerftTest("4k2r/6K1/8/8/8/8/8/8 b k - 0 1", 6, 185867),
PerftTest("r3k3/1K6/8/8/8/8/8/8 b q - 0 1", 1, 15),
PerftTest("r3k3/1K6/8/8/8/8/8/8 b q - 0 1", 2, 65),
PerftTest("r3k3/1K6/8/8/8/8/8/8 b q - 0 1", 3, 1018),
PerftTest("r3k3/1K6/8/8/8/8/8/8 b q - 0 1", 4, 4573),
PerftTest("r3k3/1K6/8/8/8/8/8/8 b q - 0 1", 5, 80619),
PerftTest("r3k3/1K6/8/8/8/8/8/8 b q - 0 1", 6, 413018),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R b KQkq - 0 1", 1, 26),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R b KQkq - 0 1", 2, 568),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R b KQkq - 0 1", 3, 13744),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R b KQkq - 0 1", 4, 314346),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R b KQkq - 0 1", 5, 7594526),
PerftTest("r3k2r/8/8/8/8/8/8/R3K2R b KQkq - 0 1", 6, 179862938),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R b Kkq - 0 1", 1, 26),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R b Kkq - 0 1", 2, 583),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R b Kkq - 0 1", 3, 14252),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R b Kkq - 0 1", 4, 334705),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R b Kkq - 0 1", 5, 8198901),
PerftTest("r3k2r/8/8/8/8/8/8/1R2K2R b Kkq - 0 1", 6, 198328929),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R b Kkq - 0 1", 1, 25),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R b Kkq - 0 1", 2, 560),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R b Kkq - 0 1", 3, 13592),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R b Kkq - 0 1", 4, 317324),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R b Kkq - 0 1", 5, 7710115),
PerftTest("r3k2r/8/8/8/8/8/8/2R1K2R b Kkq - 0 1", 6, 185959088),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 b Qkq - 0 1", 1, 25),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 b Qkq - 0 1", 2, 560),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 b Qkq - 0 1", 3, 13607),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 b Qkq - 0 1", 4, 320792),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 b Qkq - 0 1", 5, 7848606),
PerftTest("r3k2r/8/8/8/8/8/8/R3K1R1 b Qkq - 0 1", 6, 190755813),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 1, 25),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 2, 567),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 3, 14095),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 4, 328965),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 5, 8153719),
PerftTest("1r2k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 6, 195629489),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 1, 25),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 2, 548),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 3, 13502),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 4, 312835),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 5, 7736373),
PerftTest("2r1k2r/8/8/8/8/8/8/R3K2R b KQk - 0 1", 6, 184411439),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R b KQq - 0 1", 1, 25),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R b KQq - 0 1", 2, 547),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R b KQq - 0 1", 3, 13579),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R b KQq - 0 1", 4, 316214),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R b KQq - 0 1", 5, 7878456),
PerftTest("r3k1r1/8/8/8/8/8/8/R3K2R b KQq - 0 1", 6, 189224276),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 w - - 0 1", 1, 14),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 w - - 0 1", 2, 195),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 w - - 0 1", 3, 2760),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 w - - 0 1", 4, 38675),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 w - - 0 1", 5, 570726),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 w - - 0 1", 6, 8107539),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 w - - 0 1", 1, 11),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 w - - 0 1", 2, 156),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 w - - 0 1", 3, 1636),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 w - - 0 1", 4, 20534),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 w - - 0 1", 5, 223507),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 w - - 0 1", 6, 2594412),
PerftTest("8/8/4k3/3Nn3/3nN3/4K3/8/8 w - - 0 1", 1, 19),
PerftTest("8/8/4k3/3Nn3/3nN3/4K3/8/8 w - - 0 1", 2, 289),
PerftTest("8/8/4k3/3Nn3/3nN3/4K3/8/8 w - - 0 1", 3, 4442),
PerftTest("8/8/4k3/3Nn3/3nN3/4K3/8/8 w - - 0 1", 4, 73584),
PerftTest("8/8/4k3/3Nn3/3nN3/4K3/8/8 w - - 0 1", 5, 1198299),
PerftTest("8/8/4k3/3Nn3/3nN3/4K3/8/8 w - - 0 1", 6, 19870403),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N w - - 0 1", 1, 3),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N w - - 0 1", 2, 51),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N w - - 0 1", 3, 345),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N w - - 0 1", 4, 5301),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N w - - 0 1", 5, 38348),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N w - - 0 1", 6, 588695),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n w - - 0 1", 1, 17),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n w - - 0 1", 2, 54),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n w - - 0 1", 3, 835),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n w - - 0 1", 4, 5910),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n w - - 0 1", 5, 92250),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n w - - 0 1", 6, 688780),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 b - - 0 1", 1, 15),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 b - - 0 1", 2, 193),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 b - - 0 1", 3, 2816),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 b - - 0 1", 4, 40039),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 b - - 0 1", 5, 582642),
PerftTest("8/1n4N1/2k5/8/8/5K2/1N4n1/8 b - - 0 1", 6, 8503277),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 b - - 0 1", 1, 16),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 b - - 0 1", 2, 180),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 b - - 0 1", 3, 2290),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 b - - 0 1", 4, 24640),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 b - - 0 1", 5, 288141),
PerftTest("8/1k6/8/5N2/8/4n3/8/2K5 b - - 0 1", 6, 3147566),
PerftTest("8/8/3K4/3Nn3/3nN3/4k3/8/8 b - - 0 1", 1, 4),
PerftTest("8/8/3K4/3Nn3/3nN3/4k3/8/8 b - - 0 1", 2, 68),
PerftTest("8/8/3K4/3Nn3/3nN3/4k3/8/8 b - - 0 1", 3, 1118),
PerftTest("8/8/3K4/3Nn3/3nN3/4k3/8/8 b - - 0 1", 4, 16199),
PerftTest("8/8/3K4/3Nn3/3nN3/4k3/8/8 b - - 0 1", 5, 281190),
PerftTest("8/8/3K4/3Nn3/3nN3/4k3/8/8 b - - 0 1", 6, 4405103),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N b - - 0 1", 1, 17),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N b - - 0 1", 2, 54),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N b - - 0 1", 3, 835),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N b - - 0 1", 4, 5910),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N b - - 0 1", 5, 92250),
PerftTest("K7/8/2n5/1n6/8/8/8/k6N b - - 0 1", 6, 688780),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n b - - 0 1", 1, 3),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n b - - 0 1", 2, 51),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n b - - 0 1", 3, 345),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n b - - 0 1", 4, 5301),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n b - - 0 1", 5, 38348),
PerftTest("k7/8/2N5/1N6/8/8/8/K6n b - - 0 1", 6, 588695),
PerftTest("B6b/8/8/8/2K5/4k3/8/b6B w - - 0 1", 1, 17),
PerftTest("B6b/8/8/8/2K5/4k3/8/b6B w - - 0 1", 2, 278),
PerftTest("B6b/8/8/8/2K5/4k3/8/b6B w - - 0 1", 3, 4607),
PerftTest("B6b/8/8/8/2K5/4k3/8/b6B w - - 0 1", 4, 76778),
PerftTest("B6b/8/8/8/2K5/4k3/8/b6B w - - 0 1", 5, 1320507),
PerftTest("B6b/8/8/8/2K5/4k3/8/b6B w - - 0 1", 6, 22823890),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K w - - 0 1", 1, 21),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K w - - 0 1", 2, 316),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K w - - 0 1", 3, 5744),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K w - - 0 1", 4, 93338),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K w - - 0 1", 5, 1713368),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K w - - 0 1", 6, 28861171),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b w - - 0 1", 1, 21),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b w - - 0 1", 2, 144),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b w - - 0 1", 3, 3242),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b w - - 0 1", 4, 32955),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b w - - 0 1", 5, 787524),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b w - - 0 1", 6, 7881673),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B w - - 0 1", 1, 7),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B w - - 0 1", 2, 143),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B w - - 0 1", 3, 1416),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B w - - 0 1", 4, 31787),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B w - - 0 1", 5, 310862),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B w - - 0 1", 6, 7382896),
PerftTest("B6b/8/8/8/2K5/5k2/8/b6B b - - 0 1", 1, 6),
PerftTest("B6b/8/8/8/2K5/5k2/8/b6B b - - 0 1", 2, 106),
PerftTest("B6b/8/8/8/2K5/5k2/8/b6B b - - 0 1", 3, 1829),
PerftTest("B6b/8/8/8/2K5/5k2/8/b6B b - - 0 1", 4, 31151),
PerftTest("B6b/8/8/8/2K5/5k2/8/b6B b - - 0 1", 5, 530585),
PerftTest("B6b/8/8/8/2K5/5k2/8/b6B b - - 0 1", 6, 9250746),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K b - - 0 1", 1, 17),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K b - - 0 1", 2, 309),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K b - - 0 1", 3, 5133),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K b - - 0 1", 4, 93603),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K b - - 0 1", 5, 1591064),
PerftTest("8/8/1B6/7b/7k/8/2B1b3/7K b - - 0 1", 6, 29027891),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b b - - 0 1", 1, 7),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b b - - 0 1", 2, 143),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b b - - 0 1", 3, 1416),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b b - - 0 1", 4, 31787),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b b - - 0 1", 5, 310862),
PerftTest("k7/B7/1B6/1B6/8/8/8/K6b b - - 0 1", 6, 7382896),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B b - - 0 1", 1, 21),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B b - - 0 1", 2, 144),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B b - - 0 1", 3, 3242),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B b - - 0 1", 4, 32955),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B b - - 0 1", 5, 787524),
PerftTest("K7/b7/1b6/1b6/8/8/8/k6B b - - 0 1", 6, 7881673),
PerftTest("7k/RR6/8/8/8/8/rr6/7K w - - 0 1", 1, 19),
PerftTest("7k/RR6/8/8/8/8/rr6/7K w - - 0 1", 2, 275),
PerftTest("7k/RR6/8/8/8/8/rr6/7K w - - 0 1", 3, 5300),
PerftTest("7k/RR6/8/8/8/8/rr6/7K w - - 0 1", 4, 104342),
PerftTest("7k/RR6/8/8/8/8/rr6/7K w - - 0 1", 5, 2161211),
PerftTest("7k/RR6/8/8/8/8/rr6/7K w - - 0 1", 6, 44956585),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R w - - 0 1", 1, 36),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R w - - 0 1", 2, 1027),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R w - - 0 1", 3, 29215),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R w - - 0 1", 4, 771461),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R w - - 0 1", 5, 20506480),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R w - - 0 1", 6, 525169084),
PerftTest("7k/RR6/8/8/8/8/rr6/7K b - - 0 1", 1, 19),
PerftTest("7k/RR6/8/8/8/8/rr6/7K b - - 0 1", 2, 275),
PerftTest("7k/RR6/8/8/8/8/rr6/7K b - - 0 1", 3, 5300),
PerftTest("7k/RR6/8/8/8/8/rr6/7K b - - 0 1", 4, 104342),
PerftTest("7k/RR6/8/8/8/8/rr6/7K b - - 0 1", 5, 2161211),
PerftTest("7k/RR6/8/8/8/8/rr6/7K b - - 0 1", 6, 44956585),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R b - - 0 1", 1, 36),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R b - - 0 1", 2, 1027),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R b - - 0 1", 3, 29227),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R b - - 0 1", 4, 771368),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R b - - 0 1", 5, 20521342),
PerftTest("R6r/8/8/2K5/5k2/8/8/r6R b - - 0 1", 6, 524966748),
PerftTest("6kq/8/8/8/8/8/8/7K w - - 0 1", 1, 2),
PerftTest("6kq/8/8/8/8/8/8/7K w - - 0 1", 2, 36),
PerftTest("6kq/8/8/8/8/8/8/7K w - - 0 1", 3, 143),
PerftTest("6kq/8/8/8/8/8/8/7K w - - 0 1", 4, 3637),
PerftTest("6kq/8/8/8/8/8/8/7K w - - 0 1", 5, 14893),
PerftTest("6kq/8/8/8/8/8/8/7K w - - 0 1", 6, 391507),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 1, 2),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 2, 36),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 3, 143),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 4, 3637),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 5, 14893),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 6, 391507),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k w - - 0 1", 1, 6),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k w - - 0 1", 2, 35),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k w - - 0 1", 3, 495),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k w - - 0 1", 4, 8349),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k w - - 0 1", 5, 166741),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k w - - 0 1", 6, 3370175),
PerftTest("6qk/8/8/8/8/8/8/7K b - - 0 1", 1, 22),
PerftTest("6qk/8/8/8/8/8/8/7K b - - 0 1", 2, 43),
PerftTest("6qk/8/8/8/8/8/8/7K b - - 0 1", 3, 1015),
PerftTest("6qk/8/8/8/8/8/8/7K b - - 0 1", 4, 4167),
PerftTest("6qk/8/8/8/8/8/8/7K b - - 0 1", 5, 105749),
PerftTest("6qk/8/8/8/8/8/8/7K b - - 0 1", 6, 419369),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 1, 2),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 2, 36),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 3, 143),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 4, 3637),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 5, 14893),
PerftTest("6KQ/8/8/8/8/8/8/7k b - - 0 1", 6, 391507),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k b - - 0 1", 1, 6),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k b - - 0 1", 2, 35),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k b - - 0 1", 3, 495),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k b - - 0 1", 4, 8349),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k b - - 0 1", 5, 166741),
PerftTest("K7/8/8/3Q4/4q3/8/8/7k b - - 0 1", 6, 3370175),
PerftTest("8/8/8/8/8/K7/P7/k7 w - - 0 1", 1, 3),
PerftTest("8/8/8/8/8/K7/P7/k7 w - - 0 1", 2, 7),
PerftTest("8/8/8/8/8/K7/P7/k7 w - - 0 1", 3, 43),
PerftTest("8/8/8/8/8/K7/P7/k7 w - - 0 1", 4, 199),
PerftTest("8/8/8/8/8/K7/P7/k7 w - - 0 1", 5, 1347),
PerftTest("8/8/8/8/8/K7/P7/k7 w - - 0 1", 6, 6249),
PerftTest("8/8/8/8/8/7K/7P/7k w - - 0 1", 1, 3),
PerftTest("8/8/8/8/8/7K/7P/7k w - - 0 1", 2, 7),
PerftTest("8/8/8/8/8/7K/7P/7k w - - 0 1", 3, 43),
PerftTest("8/8/8/8/8/7K/7P/7k w - - 0 1", 4, 199),
PerftTest("8/8/8/8/8/7K/7P/7k w - - 0 1", 5, 1347),
PerftTest("8/8/8/8/8/7K/7P/7k w - - 0 1", 6, 6249),
PerftTest("K7/p7/k7/8/8/8/8/8 w - - 0 1", 1, 1),
PerftTest("K7/p7/k7/8/8/8/8/8 w - - 0 1", 2, 3),
PerftTest("K7/p7/k7/8/8/8/8/8 w - - 0 1", 3, 12),
PerftTest("K7/p7/k7/8/8/8/8/8 w - - 0 1", 4, 80),
PerftTest("K7/p7/k7/8/8/8/8/8 w - - 0 1", 5, 342),
PerftTest("K7/p7/k7/8/8/8/8/8 w - - 0 1", 6, 2343),
PerftTest("7K/7p/7k/8/8/8/8/8 w - - 0 1", 1, 1),
PerftTest("7K/7p/7k/8/8/8/8/8 w - - 0 1", 2, 3),
PerftTest("7K/7p/7k/8/8/8/8/8 w - - 0 1", 3, 12),
PerftTest("7K/7p/7k/8/8/8/8/8 w - - 0 1", 4, 80),
PerftTest("7K/7p/7k/8/8/8/8/8 w - - 0 1", 5, 342),
PerftTest("7K/7p/7k/8/8/8/8/8 w - - 0 1", 6, 2343),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 w - - 0 1", 1, 7),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 w - - 0 1", 2, 35),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 w - - 0 1", 3, 210),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 w - - 0 1", 4, 1091),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 w - - 0 1", 5, 7028),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 w - - 0 1", 6, 34834),
PerftTest("8/8/8/8/8/K7/P7/k7 b - - 0 1", 1, 1),
PerftTest("8/8/8/8/8/K7/P7/k7 b - - 0 1", 2, 3),
PerftTest("8/8/8/8/8/K7/P7/k7 b - - 0 1", 3, 12),
PerftTest("8/8/8/8/8/K7/P7/k7 b - - 0 1", 4, 80),
PerftTest("8/8/8/8/8/K7/P7/k7 b - - 0 1", 5, 342),
PerftTest("8/8/8/8/8/K7/P7/k7 b - - 0 1", 6, 2343),
PerftTest("8/8/8/8/8/7K/7P/7k b - - 0 1", 1, 1),
PerftTest("8/8/8/8/8/7K/7P/7k b - - 0 1", 2, 3),
PerftTest("8/8/8/8/8/7K/7P/7k b - - 0 1", 3, 12),
PerftTest("8/8/8/8/8/7K/7P/7k b - - 0 1", 4, 80),
PerftTest("8/8/8/8/8/7K/7P/7k b - - 0 1", 5, 342),
PerftTest("8/8/8/8/8/7K/7P/7k b - - 0 1", 6, 2343),
PerftTest("K7/p7/k7/8/8/8/8/8 b - - 0 1", 1, 3),
PerftTest("K7/p7/k7/8/8/8/8/8 b - - 0 1", 2, 7),
PerftTest("K7/p7/k7/8/8/8/8/8 b - - 0 1", 3, 43),
PerftTest("K7/p7/k7/8/8/8/8/8 b - - 0 1", 4, 199),
PerftTest("K7/p7/k7/8/8/8/8/8 b - - 0 1", 5, 1347),
PerftTest("K7/p7/k7/8/8/8/8/8 b - - 0 1", 6, 6249),
PerftTest("7K/7p/7k/8/8/8/8/8 b - - 0 1", 1, 3),
PerftTest("7K/7p/7k/8/8/8/8/8 b - - 0 1", 2, 7),
PerftTest("7K/7p/7k/8/8/8/8/8 b - - 0 1", 3, 43),
PerftTest("7K/7p/7k/8/8/8/8/8 b - - 0 1", 4, 199),
PerftTest("7K/7p/7k/8/8/8/8/8 b - - 0 1", 5, 1347),
PerftTest("7K/7p/7k/8/8/8/8/8 b - - 0 1", 6, 6249),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 b - - 0 1", 1, 5),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 b - - 0 1", 2, 35),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 b - - 0 1", 3, 182),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 b - - 0 1", 4, 1091),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 b - - 0 1", 5, 5408),
PerftTest("8/2k1p3/3pP3/3P2K1/8/8/8/8 b - - 0 1", 6, 34822),
PerftTest("8/8/8/8/8/4k3/4P3/4K3 w - - 0 1", 1, 2),
PerftTest("8/8/8/8/8/4k3/4P3/4K3 w - - 0 1", 2, 8),
PerftTest("8/8/8/8/8/4k3/4P3/4K3 w - - 0 1", 3, 44),
PerftTest("8/8/8/8/8/4k3/4P3/4K3 w - - 0 1", 4, 282),
PerftTest("8/8/8/8/8/4k3/4P3/4K3 w - - 0 1", 5, 1814),
PerftTest("8/8/8/8/8/4k3/4P3/4K3 w - - 0 1", 6, 11848),
PerftTest("4k3/4p3/4K3/8/8/8/8/8 b - - 0 1", 1, 2),
PerftTest("4k3/4p3/4K3/8/8/8/8/8 b - - 0 1", 2, 8),
PerftTest("4k3/4p3/4K3/8/8/8/8/8 b - - 0 1", 3, 44),
PerftTest("4k3/4p3/4K3/8/8/8/8/8 b - - 0 1", 4, 282),
PerftTest("4k3/4p3/4K3/8/8/8/8/8 b - - 0 1", 5, 1814),
PerftTest("4k3/4p3/4K3/8/8/8/8/8 b - - 0 1", 6, 11848),
PerftTest("8/8/7k/7p/7P/7K/8/8 w - - 0 1", 1, 3),
PerftTest("8/8/7k/7p/7P/7K/8/8 w - - 0 1", 2, 9),
PerftTest("8/8/7k/7p/7P/7K/8/8 w - - 0 1", 3, 57),
PerftTest("8/8/7k/7p/7P/7K/8/8 w - - 0 1", 4, 360),
PerftTest("8/8/7k/7p/7P/7K/8/8 w - - 0 1", 5, 1969),
PerftTest("8/8/7k/7p/7P/7K/8/8 w - - 0 1", 6, 10724),
PerftTest("8/8/k7/p7/P7/K7/8/8 w - - 0 1", 1, 3),
PerftTest("8/8/k7/p7/P7/K7/8/8 w - - 0 1", 2, 9),
PerftTest("8/8/k7/p7/P7/K7/8/8 w - - 0 1", 3, 57),
PerftTest("8/8/k7/p7/P7/K7/8/8 w - - 0 1", 4, 360),
PerftTest("8/8/k7/p7/P7/K7/8/8 w - - 0 1", 5, 1969),
PerftTest("8/8/k7/p7/P7/K7/8/8 w - - 0 1", 6, 10724),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 w - - 0 1", 1, 5),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 w - - 0 1", 2, 25),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 w - - 0 1", 3, 180),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 w - - 0 1", 4, 1294),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 w - - 0 1", 5, 8296),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 w - - 0 1", 6, 53138),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 w - - 0 1", 1, 8),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 w - - 0 1", 2, 61),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 w - - 0 1", 3, 483),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 w - - 0 1", 4, 3213),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 w - - 0 1", 5, 23599),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 w - - 0 1", 6, 157093),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 w - - 0 1", 1, 8),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 w - - 0 1", 2, 61),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 w - - 0 1", 3, 411),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 w - - 0 1", 4, 3213),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 w - - 0 1", 5, 21637),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 w - - 0 1", 6, 158065),
PerftTest("k7/8/3p4/8/3P4/8/8/7K w - - 0 1", 1, 4),
PerftTest("k7/8/3p4/8/3P4/8/8/7K w - - 0 1", 2, 15),
PerftTest("k7/8/3p4/8/3P4/8/8/7K w - - 0 1", 3, 90),
PerftTest("k7/8/3p4/8/3P4/8/8/7K w - - 0 1", 4, 534),
PerftTest("k7/8/3p4/8/3P4/8/8/7K w - - 0 1", 5, 3450),
PerftTest("k7/8/3p4/8/3P4/8/8/7K w - - 0 1", 6, 20960),
PerftTest("8/8/7k/7p/7P/7K/8/8 b - - 0 1", 1, 3),
PerftTest("8/8/7k/7p/7P/7K/8/8 b - - 0 1", 2, 9),
PerftTest("8/8/7k/7p/7P/7K/8/8 b - - 0 1", 3, 57),
PerftTest("8/8/7k/7p/7P/7K/8/8 b - - 0 1", 4, 360),
PerftTest("8/8/7k/7p/7P/7K/8/8 b - - 0 1", 5, 1969),
PerftTest("8/8/7k/7p/7P/7K/8/8 b - - 0 1", 6, 10724),
PerftTest("8/8/k7/p7/P7/K7/8/8 b - - 0 1", 1, 3),
PerftTest("8/8/k7/p7/P7/K7/8/8 b - - 0 1", 2, 9),
PerftTest("8/8/k7/p7/P7/K7/8/8 b - - 0 1", 3, 57),
PerftTest("8/8/k7/p7/P7/K7/8/8 b - - 0 1", 4, 360),
PerftTest("8/8/k7/p7/P7/K7/8/8 b - - 0 1", 5, 1969),
PerftTest("8/8/k7/p7/P7/K7/8/8 b - - 0 1", 6, 10724),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 b - - 0 1", 1, 5),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 b - - 0 1", 2, 25),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 b - - 0 1", 3, 180),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 b - - 0 1", 4, 1294),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 b - - 0 1", 5, 8296),
PerftTest("8/8/3k4/3p4/3P4/3K4/8/8 b - - 0 1", 6, 53138),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 b - - 0 1", 1, 8),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 b - - 0 1", 2, 61),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 b - - 0 1", 3, 411),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 b - - 0 1", 4, 3213),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 b - - 0 1", 5, 21637),
PerftTest("8/3k4/3p4/8/3P4/3K4/8/8 b - - 0 1", 6, 158065),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 b - - 0 1", 1, 8),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 b - - 0 1", 2, 61),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 b - - 0 1", 3, 483),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 b - - 0 1", 4, 3213),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 b - - 0 1", 5, 23599),
PerftTest("8/8/3k4/3p4/8/3P4/3K4/8 b - - 0 1", 6, 157093),
PerftTest("k7/8/3p4/8/3P4/8/8/7K b - - 0 1", 1, 4),
PerftTest("k7/8/3p4/8/3P4/8/8/7K b - - 0 1", 2, 15),
PerftTest("k7/8/3p4/8/3P4/8/8/7K b - - 0 1", 3, 89),
PerftTest("k7/8/3p4/8/3P4/8/8/7K b - - 0 1", 4, 537),
PerftTest("k7/8/3p4/8/3P4/8/8/7K b - - 0 1", 5, 3309),
PerftTest("k7/8/3p4/8/3P4/8/8/7K b - - 0 1", 6, 21104),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 w - - 0 1", 1, 4),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 w - - 0 1", 2, 19),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 w - - 0 1", 3, 117),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 w - - 0 1", 4, 720),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 w - - 0 1", 5, 4661),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 w - - 0 1", 6, 32191),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 w - - 0 1", 1, 5),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 w - - 0 1", 2, 19),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 w - - 0 1", 3, 116),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 w - - 0 1", 4, 716),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 w - - 0 1", 5, 4786),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 w - - 0 1", 6, 30980),
PerftTest("k7/8/8/7p/6P1/8/8/K7 w - - 0 1", 1, 5),
PerftTest("k7/8/8/7p/6P1/8/8/K7 w - - 0 1", 2, 22),
PerftTest("k7/8/8/7p/6P1/8/8/K7 w - - 0 1", 3, 139),
PerftTest("k7/8/8/7p/6P1/8/8/K7 w - - 0 1", 4, 877),
PerftTest("k7/8/8/7p/6P1/8/8/K7 w - - 0 1", 5, 6112),
PerftTest("k7/8/8/7p/6P1/8/8/K7 w - - 0 1", 6, 41874),
PerftTest("k7/8/7p/8/8/6P1/8/K7 w - - 0 1", 1, 4),
PerftTest("k7/8/7p/8/8/6P1/8/K7 w - - 0 1", 2, 16),
PerftTest("k7/8/7p/8/8/6P1/8/K7 w - - 0 1", 3, 101),
PerftTest("k7/8/7p/8/8/6P1/8/K7 w - - 0 1", 4, 637),
PerftTest("k7/8/7p/8/8/6P1/8/K7 w - - 0 1", 5, 4354),
PerftTest("k7/8/7p/8/8/6P1/8/K7 w - - 0 1", 6, 29679),
PerftTest("k7/8/8/6p1/7P/8/8/K7 w - - 0 1", 1, 5),
PerftTest("k7/8/8/6p1/7P/8/8/K7 w - - 0 1", 2, 22),
PerftTest("k7/8/8/6p1/7P/8/8/K7 w - - 0 1", 3, 139),
PerftTest("k7/8/8/6p1/7P/8/8/K7 w - - 0 1", 4, 877),
PerftTest("k7/8/8/6p1/7P/8/8/K7 w - - 0 1", 5, 6112),
PerftTest("k7/8/8/6p1/7P/8/8/K7 w - - 0 1", 6, 41874),
PerftTest("k7/8/6p1/8/8/7P/8/K7 w - - 0 1", 1, 4),
PerftTest("k7/8/6p1/8/8/7P/8/K7 w - - 0 1", 2, 16),
PerftTest("k7/8/6p1/8/8/7P/8/K7 w - - 0 1", 3, 101),
PerftTest("k7/8/6p1/8/8/7P/8/K7 w - - 0 1", 4, 637),
PerftTest("k7/8/6p1/8/8/7P/8/K7 w - - 0 1", 5, 4354),
PerftTest("k7/8/6p1/8/8/7P/8/K7 w - - 0 1", 6, 29679),
PerftTest("k7/8/8/3p4/4p3/8/8/7K w - - 0 1", 1, 3),
PerftTest("k7/8/8/3p4/4p3/8/8/7K w - - 0 1", 2, 15),
PerftTest("k7/8/8/3p4/4p3/8/8/7K w - - 0 1", 3, 84),
PerftTest("k7/8/8/3p4/4p3/8/8/7K w - - 0 1", 4, 573),
PerftTest("k7/8/8/3p4/4p3/8/8/7K w - - 0 1", 5, 3013),
PerftTest("k7/8/8/3p4/4p3/8/8/7K w - - 0 1", 6, 22886),
PerftTest("k7/8/3p4/8/8/4P3/8/7K w - - 0 1", 1, 4),
PerftTest("k7/8/3p4/8/8/4P3/8/7K w - - 0 1", 2, 16),
PerftTest("k7/8/3p4/8/8/4P3/8/7K w - - 0 1", 3, 101),
PerftTest("k7/8/3p4/8/8/4P3/8/7K w - - 0 1", 4, 637),
PerftTest("k7/8/3p4/8/8/4P3/8/7K w - - 0 1", 5, 4271),
PerftTest("k7/8/3p4/8/8/4P3/8/7K w - - 0 1", 6, 28662),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 b - - 0 1", 1, 5),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 b - - 0 1", 2, 19),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 b - - 0 1", 3, 117),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 b - - 0 1", 4, 720),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 b - - 0 1", 5, 5014),
PerftTest("7k/3p4/8/8/3P4/8/8/K7 b - - 0 1", 6, 32167),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 b - - 0 1", 1, 4),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 b - - 0 1", 2, 19),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 b - - 0 1", 3, 117),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 b - - 0 1", 4, 712),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 b - - 0 1", 5, 4658),
PerftTest("7k/8/8/3p4/8/8/3P4/K7 b - - 0 1", 6, 30749),
PerftTest("k7/8/8/7p/6P1/8/8/K7 b - - 0 1", 1, 5),
PerftTest("k7/8/8/7p/6P1/8/8/K7 b - - 0 1", 2, 22),
PerftTest("k7/8/8/7p/6P1/8/8/K7 b - - 0 1", 3, 139),
PerftTest("k7/8/8/7p/6P1/8/8/K7 b - - 0 1", 4, 877),
PerftTest("k7/8/8/7p/6P1/8/8/K7 b - - 0 1", 5, 6112),
PerftTest("k7/8/8/7p/6P1/8/8/K7 b - - 0 1", 6, 41874),
PerftTest("k7/8/7p/8/8/6P1/8/K7 b - - 0 1", 1, 4),
PerftTest("k7/8/7p/8/8/6P1/8/K7 b - - 0 1", 2, 16),
PerftTest("k7/8/7p/8/8/6P1/8/K7 b - - 0 1", 3, 101),
PerftTest("k7/8/7p/8/8/6P1/8/K7 b - - 0 1", 4, 637),
PerftTest("k7/8/7p/8/8/6P1/8/K7 b - - 0 1", 5, 4354),
PerftTest("k7/8/7p/8/8/6P1/8/K7 b - - 0 1", 6, 29679),
PerftTest("k7/8/8/6p1/7P/8/8/K7 b - - 0 1", 1, 5),
PerftTest("k7/8/8/6p1/7P/8/8/K7 b - - 0 1", 2, 22),
PerftTest("k7/8/8/6p1/7P/8/8/K7 b - - 0 1", 3, 139),
PerftTest("k7/8/8/6p1/7P/8/8/K7 b - - 0 1", 4, 877),
PerftTest("k7/8/8/6p1/7P/8/8/K7 b - - 0 1", 5, 6112),
PerftTest("k7/8/8/6p1/7P/8/8/K7 b - - 0 1", 6, 41874),
PerftTest("k7/8/6p1/8/8/7P/8/K7 b - - 0 1", 1, 4),
PerftTest("k7/8/6p1/8/8/7P/8/K7 b - - 0 1", 2, 16),
PerftTest("k7/8/6p1/8/8/7P/8/K7 b - - 0 1", 3, 101),
PerftTest("k7/8/6p1/8/8/7P/8/K7 b - - 0 1", 4, 637),
PerftTest("k7/8/6p1/8/8/7P/8/K7 b - - 0 1", 5, 4354),
PerftTest("k7/8/6p1/8/8/7P/8/K7 b - - 0 1", 6, 29679),
PerftTest("k7/8/8/3p4/4p3/8/8/7K b - - 0 1", 1, 5),
PerftTest("k7/8/8/3p4/4p3/8/8/7K b - - 0 1", 2, 15),
PerftTest("k7/8/8/3p4/4p3/8/8/7K b - - 0 1", 3, 102),
PerftTest("k7/8/8/3p4/4p3/8/8/7K b - - 0 1", 4, 569),
PerftTest("k7/8/8/3p4/4p3/8/8/7K b - - 0 1", 5, 4337),
PerftTest("k7/8/8/3p4/4p3/8/8/7K b - - 0 1", 6, 22579),
PerftTest("k7/8/3p4/8/8/4P3/8/7K b - - 0 1", 1, 4),
PerftTest("k7/8/3p4/8/8/4P3/8/7K b - - 0 1", 2, 16),
PerftTest("k7/8/3p4/8/8/4P3/8/7K b - - 0 1", 3, 101),
PerftTest("k7/8/3p4/8/8/4P3/8/7K b - - 0 1", 4, 637),
PerftTest("k7/8/3p4/8/8/4P3/8/7K b - - 0 1", 5, 4271),
PerftTest("k7/8/3p4/8/8/4P3/8/7K b - - 0 1", 6, 28662),
PerftTest("7k/8/8/p7/1P6/8/8/7K w - - 0 1", 1, 5),
PerftTest("7k/8/8/p7/1P6/8/8/7K w - - 0 1", 2, 22),
PerftTest("7k/8/8/p7/1P6/8/8/7K w - - 0 1", 3, 139),
PerftTest("7k/8/8/p7/1P6/8/8/7K w - - 0 1", 4, 877),
PerftTest("7k/8/8/p7/1P6/8/8/7K w - - 0 1", 5, 6112),
PerftTest("7k/8/8/p7/1P6/8/8/7K w - - 0 1", 6, 41874),
PerftTest("7k/8/p7/8/8/1P6/8/7K w - - 0 1", 1, 4),
PerftTest("7k/8/p7/8/8/1P6/8/7K w - - 0 1", 2, 16),
PerftTest("7k/8/p7/8/8/1P6/8/7K w - - 0 1", 3, 101),
PerftTest("7k/8/p7/8/8/1P6/8/7K w - - 0 1", 4, 637),
PerftTest("7k/8/p7/8/8/1P6/8/7K w - - 0 1", 5, 4354),
PerftTest("7k/8/p7/8/8/1P6/8/7K w - - 0 1", 6, 29679),
PerftTest("7k/8/8/1p6/P7/8/8/7K w - - 0 1", 1, 5),
PerftTest("7k/8/8/1p6/P7/8/8/7K w - - 0 1", 2, 22),
PerftTest("7k/8/8/1p6/P7/8/8/7K w - - 0 1", 3, 139),
PerftTest("7k/8/8/1p6/P7/8/8/7K w - - 0 1", 4, 877),
PerftTest("7k/8/8/1p6/P7/8/8/7K w - - 0 1", 5, 6112),
PerftTest("7k/8/8/1p6/P7/8/8/7K w - - 0 1", 6, 41874),
PerftTest("7k/8/1p6/8/8/P7/8/7K w - - 0 1", 1, 4),
PerftTest("7k/8/1p6/8/8/P7/8/7K w - - 0 1", 2, 16),
PerftTest("7k/8/1p6/8/8/P7/8/7K w - - 0 1", 3, 101),
PerftTest("7k/8/1p6/8/8/P7/8/7K w - - 0 1", 4, 637),
PerftTest("7k/8/1p6/8/8/P7/8/7K w - - 0 1", 5, 4354),
PerftTest("7k/8/1p6/8/8/P7/8/7K w - - 0 1", 6, 29679),
PerftTest("k7/7p/8/8/8/8/6P1/K7 w - - 0 1", 1, 5),
PerftTest("k7/7p/8/8/8/8/6P1/K7 w - - 0 1", 2, 25),
PerftTest("k7/7p/8/8/8/8/6P1/K7 w - - 0 1", 3, 161),
PerftTest("k7/7p/8/8/8/8/6P1/K7 w - - 0 1", 4, 1035),
PerftTest("k7/7p/8/8/8/8/6P1/K7 w - - 0 1", 5, 7574),
PerftTest("k7/7p/8/8/8/8/6P1/K7 w - - 0 1", 6, 55338),
PerftTest("k7/6p1/8/8/8/8/7P/K7 w - - 0 1", 1, 5),
PerftTest("k7/6p1/8/8/8/8/7P/K7 w - - 0 1", 2, 25),
PerftTest("k7/6p1/8/8/8/8/7P/K7 w - - 0 1", 3, 161),
PerftTest("k7/6p1/8/8/8/8/7P/K7 w - - 0 1", 4, 1035),
PerftTest("k7/6p1/8/8/8/8/7P/K7 w - - 0 1", 5, 7574),
PerftTest("k7/6p1/8/8/8/8/7P/K7 w - - 0 1", 6, 55338),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 w - - 0 1", 1, 7),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 w - - 0 1", 2, 49),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 w - - 0 1", 3, 378),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 w - - 0 1", 4, 2902),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 w - - 0 1", 5, 24122),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 w - - 0 1", 6, 199002),
PerftTest("7k/8/8/p7/1P6/8/8/7K b - - 0 1", 1, 5),
PerftTest("7k/8/8/p7/1P6/8/8/7K b - - 0 1", 2, 22),
PerftTest("7k/8/8/p7/1P6/8/8/7K b - - 0 1", 3, 139),
PerftTest("7k/8/8/p7/1P6/8/8/7K b - - 0 1", 4, 877),
PerftTest("7k/8/8/p7/1P6/8/8/7K b - - 0 1", 5, 6112),
PerftTest("7k/8/8/p7/1P6/8/8/7K b - - 0 1", 6, 41874),
PerftTest("7k/8/p7/8/8/1P6/8/7K b - - 0 1", 1, 4),
PerftTest("7k/8/p7/8/8/1P6/8/7K b - - 0 1", 2, 16),
PerftTest("7k/8/p7/8/8/1P6/8/7K b - - 0 1", 3, 101),
PerftTest("7k/8/p7/8/8/1P6/8/7K b - - 0 1", 4, 637),
PerftTest("7k/8/p7/8/8/1P6/8/7K b - - 0 1", 5, 4354),
PerftTest("7k/8/p7/8/8/1P6/8/7K b - - 0 1", 6, 29679),
PerftTest("7k/8/8/1p6/P7/8/8/7K b - - 0 1", 1, 5),
PerftTest("7k/8/8/1p6/P7/8/8/7K b - - 0 1", 2, 22),
PerftTest("7k/8/8/1p6/P7/8/8/7K b - - 0 1", 3, 139),
PerftTest("7k/8/8/1p6/P7/8/8/7K b - - 0 1", 4, 877),
PerftTest("7k/8/8/1p6/P7/8/8/7K b - - 0 1", 5, 6112),
PerftTest("7k/8/8/1p6/P7/8/8/7K b - - 0 1", 6, 41874),
PerftTest("7k/8/1p6/8/8/P7/8/7K b - - 0 1", 1, 4),
PerftTest("7k/8/1p6/8/8/P7/8/7K b - - 0 1", 2, 16),
PerftTest("7k/8/1p6/8/8/P7/8/7K b - - 0 1", 3, 101),
PerftTest("7k/8/1p6/8/8/P7/8/7K b - - 0 1", 4, 637),
PerftTest("7k/8/1p6/8/8/P7/8/7K b - - 0 1", 5, 4354),
PerftTest("7k/8/1p6/8/8/P7/8/7K b - - 0 1", 6, 29679),
PerftTest("k7/7p/8/8/8/8/6P1/K7 b - - 0 1", 1, 5),
PerftTest("k7/7p/8/8/8/8/6P1/K7 b - - 0 1", 2, 25),
PerftTest("k7/7p/8/8/8/8/6P1/K7 b - - 0 1", 3, 161),
PerftTest("k7/7p/8/8/8/8/6P1/K7 b - - 0 1", 4, 1035),
PerftTest("k7/7p/8/8/8/8/6P1/K7 b - - 0 1", 5, 7574),
PerftTest("k7/7p/8/8/8/8/6P1/K7 b - - 0 1", 6, 55338),
PerftTest("k7/6p1/8/8/8/8/7P/K7 b - - 0 1", 1, 5),
PerftTest("k7/6p1/8/8/8/8/7P/K7 b - - 0 1", 2, 25),
PerftTest("k7/6p1/8/8/8/8/7P/K7 b - - 0 1", 3, 161),
PerftTest("k7/6p1/8/8/8/8/7P/K7 b - - 0 1", 4, 1035),
PerftTest("k7/6p1/8/8/8/8/7P/K7 b - - 0 1", 5, 7574),
PerftTest("k7/6p1/8/8/8/8/7P/K7 b - - 0 1", 6, 55338),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 b - - 0 1", 1, 7),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 b - - 0 1", 2, 49),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 b - - 0 1", 3, 378),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 b - - 0 1", 4, 2902),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 b - - 0 1", 5, 24122),
PerftTest("3k4/3pp3/8/8/8/8/3PP3/3K4 b - - 0 1", 6, 199002),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 w - - 0 1", 1, 11),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 w - - 0 1", 2, 97),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 w - - 0 1", 3, 887),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 w - - 0 1", 4, 8048),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 w - - 0 1", 5, 90606),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 w - - 0 1", 6, 1030499),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N w - - 0 1", 1, 24),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N w - - 0 1", 2, 421),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N w - - 0 1", 3, 7421),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N w - - 0 1", 4, 124608),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N w - - 0 1", 5, 2193768),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N w - - 0 1", 6, 37665329),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 w - - 0 1", 1, 18),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 w - - 0 1", 2, 270),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 w - - 0 1", 3, 4699),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 w - - 0 1", 4, 79355),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 w - - 0 1", 5, 1533145),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 w - - 0 1", 6, 28859283),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N w - - 0 1", 1, 24),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N w - - 0 1", 2, 496),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N w - - 0 1", 3, 9483),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N w - - 0 1", 4, 182838),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N w - - 0 1", 5, 3605103),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N w - - 0 1", 6, 71179139),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 b - - 0 1", 1, 11),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 b - - 0 1", 2, 97),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 b - - 0 1", 3, 887),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 b - - 0 1", 4, 8048),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 b - - 0 1", 5, 90606),
PerftTest("8/Pk6/8/8/8/8/6Kp/8 b - - 0 1", 6, 1030499),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N b - - 0 1", 1, 24),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N b - - 0 1", 2, 421),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N b - - 0 1", 3, 7421),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N b - - 0 1", 4, 124608),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N b - - 0 1", 5, 2193768),
PerftTest("n1n5/1Pk5/8/8/8/8/5Kp1/5N1N b - - 0 1", 6, 37665329),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 b - - 0 1", 1, 18),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 b - - 0 1", 2, 270),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 b - - 0 1", 3, 4699),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 b - - 0 1", 4, 79355),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 b - - 0 1", 5, 1533145),
PerftTest("8/PPPk4/8/8/8/8/4Kppp/8 b - - 0 1", 6, 28859283),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N b - - 0 1", 1, 24),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N b - - 0 1", 2, 496),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N b - - 0 1", 3, 9483),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N b - - 0 1", 4, 182838),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N b - - 0 1", 5, 3605103),
PerftTest("n1n5/PPPk4/8/8/8/8/4Kppp/5N1N b - - 0 1", 6, 71179139),
};
// if you are reading this comment, why