Perft(7) test suites just for you

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Perft(7) test suites just for you

Post by sje »

As part of the Perft(14) project, each processed work unit is scanned to locate the highest perft(7) subtotal and these positions are then written to a file for all to see. This file can be found at https://dl.dropboxusercontent.com/u/316 ... 14/Largest

A sample line from the easily parsed file:

Code: Select all

000-099/wu7.055.sum  r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4 3 282695441146 848086323438
Where the position FEN is "r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4", the position occurs 3 times in the master tree, the perft(7) subtotal is 282,695,441,146, and the summation product is 848,086,323,438.

The idea is to run the file through your program for purposes of verification and benchmarking.

----

There is a separate, similar file made from the results of Ankan's perft() program on work units 400-799. It has the same format and can be found at https://dl.dropboxusercontent.com/u/316 ... rgestAnkan
zullil
Posts: 6442
Joined: Tue Jan 09, 2007 12:31 am
Location: PA USA
Full name: Louis Zulli

Re: Perft(7) test suites just for you

Post by zullil »

sje wrote:As part of the Perft(14) project, each processed work unit is scanned to locate the highest perft(7) subtotal and these positions are then written to a file for all to see. This file can be found at https://dl.dropboxusercontent.com/u/316 ... 14/Largest

A sample line from the easily parsed file:

Code: Select all

000-099/wu7.055.sum  r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4 3 282695441146 848086323438
Where the position FEN is "r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4", the position occurs 3 times in the master tree, the perft(7) subtotal is 282,695,441,146, and the summation product is 848,086,323,438.

The idea is to run the file through your program for purposes of verification and benchmarking.
Since checking this one line of the file took more than an hour, I guess I'll declare my move generator correct and live with some uncertainty.

Code: Select all

FEN string = r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq -
Depth = 7
Leaf nodes = 282695441146
Time taken = 4289703 ms
User avatar
stegemma
Posts: 859
Joined: Mon Aug 10, 2009 10:05 pm
Location: Italy
Full name: Stefano Gemma

Re: Perft(7) test suites just for you

Post by stegemma »

Maybe satana would takes more than your engine but you're right: a perft 6 set of positions would be more simpler to handle. Despite from that, I appreciate this gift:

Code: Select all

# Satana is running
setboard rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4
\
rnbqk..r
pppp.pp.
....p..n
..b.....
....Q...
....P...
PPPP.PPP
RNB.KBNR
 FEN: rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq
perft 1
Nodes: 35, Time: 0 ms, Nodes/s: 35000
perft 2
Nodes: 1486, Time: 0 ms, Nodes/s: 1486000
perft 3
Nodes: 50928, Time: 0 ms, Nodes/s: 50928000
perft 4
Nodes: 2063480, Time: 46 ms, Nodes/s: 43903829
perft 5
Nodes: 71172445, Time: 1872 ms, Nodes/s: 37999169
perft 6
Nodes: 2789950438, Time: 67798 ms, Nodes/s: 41150318
I'm waiting from perft 7 to complete... I'm waiting... I'm waiting... :)
User avatar
stegemma
Posts: 859
Joined: Mon Aug 10, 2009 10:05 pm
Location: Italy
Full name: Stefano Gemma

Re: Perft(7) test suites just for you

Post by stegemma »

Here's the completed perft 1...7 tasks:

Code: Select all

# Satana is running
setboard rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4
\
rnbqk..r
pppp.pp.
....p..n
..b.....
....Q...
....P...
PPPP.PPP
RNB.KBNR
 FEN: rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq
perft 1
Nodes: 35, Time: 0 ms, Nodes/s: 35000
perft 2
Nodes: 1486, Time: 0 ms, Nodes/s: 1486000
perft 3
Nodes: 50928, Time: 0 ms, Nodes/s: 50928000
perft 4
Nodes: 2063480, Time: 46 ms, Nodes/s: 43903829
perft 5
Nodes: 71172445, Time: 1872 ms, Nodes/s: 37999169
perft 6
Nodes: 2789950438, Time: 67798 ms, Nodes/s: 41150318
perft 7
Nodes: 97301648583, Time: 2560901 ms, Nodes/s: 37995069
Wow! The result is ok:

Code: Select all

000-099/wu7.014.sum  rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4 1 97301648583 97301648583
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

From 000-099/wu7.014.sum

Post by sje »

From 000-099/wu7.014.sum:

Code: Select all

000-099/wu7.014.sum  rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4 1 97301648583 97301648583
[d]rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4[/d]
Symbolic says:

Code: Select all

[] sf rnbqk2r/pppp1pp1/4p2n/2b5/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4
[] pctran 1
Count: 35   Pt: 0.000   Wt: 0.000   U: 0.6   11.6667 MHz   85.7143 ns
[] pctran 2
Count: 1,486   Pt: 0.062   Wt: 0.022   U: 0.706933   94.8188 KHz   10.5464 us
[] pctran 3
Count: 50,928   Pt: 0.066   Wt: 0.023   U: 0.706367   3.0632 MHz   326.456 ns
[] pctran 4
Count: 2,063,480   Pt: 0.085   Wt: 0.023   U: 0.919239   96.6365 MHz   10.3481 ns
[] pctran 5
Count: 71,172,445   Pt: 0.937   Wt: 0.236   U: 0.99181   303.555 MHz   3.29429 ns
[] pctran 6
Count: 2,789,950,438   Pt: 16.159   Wt: 4.083   U: 0.989341   690.614 MHz   1.44799 ns
[] pctran 7
Count: 97,301,648,583   Pt: 4:23.944   Wt: 1:06.699   U: 0.989304   1.47458 GHz   678.161 ps
It took about 67 seconds wall time for the perft(7) calculation.

The above ran on a 2006 dual 2.66 GHz Xeon Mac, a machine about 20% as fast as top end 2015 consumer hardware.

----

The average perft(7) subtotal value in the unique(7) set is not known (maybe about 30 billion), but soon I'll have the 128 bit unsigned integer support installed in Symbolic and that will allow full range statistic generation.

The full 128 bit range is 0..340,282,366,920,938,463,463,374,607,431,768,211,455.

That's 340 undecillion, 282 decillion, 366 nonillion, 920 octillion, 938 septillion, 463 sextillion, 463 quintillion, 374 quadrillion, 607 trillion, 431 billion, 768 million, 211 thousand, and 455.

For the needs of the program, the 128 bit support is complete except for the encoder which generates a string of base 10 digits giving a 128 bit value. For this to work, I've got a special little divider routine which uses a table of 128 bit integers holding the values of 10^n, n= 0..38 and these are used for comparisons and subtractions to form a decimal quotient one digit at a time. It just needs to be typed in and tested. Another routine will insert commas into the string as needed.

Here is the table of the pre-calculated values of 10^n, n= 0..38:

Code: Select all

 0 00000000000000000000000000000001
 1 0000000000000000000000000000000a
 2 00000000000000000000000000000064
 3 000000000000000000000000000003e8
 4 00000000000000000000000000002710
 5 000000000000000000000000000186a0
 6 000000000000000000000000000f4240
 7 00000000000000000000000000989680
 8 00000000000000000000000005f5e100
 9 0000000000000000000000003b9aca00
10 000000000000000000000002540be400
11 0000000000000000000000174876e800
12 0000000000000000000000e8d4a51000
13 0000000000000000000009184e72a000
14 000000000000000000005af3107a4000
15 000000000000000000038d7ea4c68000
16 0000000000000000002386f26fc10000
17 0000000000000000016345785d8a0000
18 00000000000000000de0b6b3a7640000
19 00000000000000008ac7230489e80000
20 00000000000000056bc75e2d63100000
21 000000000000003635c9adc5dea00000
22 000000000000021e19e0c9bab2400000
23 000000000000152d02c7e14af6800000
24 000000000000d3c21bcecceda1000000
25 0000000000084595161401484a000000
26 000000000052b7d2dcc80cd2e4000000
27 00000000033b2e3c9fd0803ce8000000
28 00000000204fce5e3e25026110000000
29 00000001431e0fae6d7217caa0000000
30 0000000c9f2c9cd04674edea40000000
31 0000007e37be2022c0914b2680000000
32 000004ee2d6d415b85acef8100000000
33 0000314dc6448d9338c15b0a00000000
34 0001ed09bead87c0378d8e6400000000
35 0013426172c74d822b878fe800000000
36 00c097ce7bc90715b34b9f1000000000
37 0785ee10d5da46d900f436a000000000
38 4b3b4ca85a86c47a098a224000000000
User avatar
vittyvirus
Posts: 646
Joined: Wed Jun 18, 2014 2:30 pm
Full name: Fahad Syed

Re: Perft(7) test suites just for you

Post by vittyvirus »

sje wrote:As part of the Perft(14) project, each processed work unit is scanned to locate the highest perft(7) subtotal and these positions are then written to a file for all to see. This file can be found at https://dl.dropboxusercontent.com/u/316 ... 14/Largest

A sample line from the easily parsed file:

Code: Select all

000-099/wu7.055.sum  r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4 3 282695441146 848086323438
Where the position FEN is "r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4", the position occurs 3 times in the master tree, the perft(7) subtotal is 282,695,441,146, and the summation product is 848,086,323,438.

The idea is to run the file through your program for purposes of verification and benchmarking.

----

There is a separate, similar file made from the results of Ankan's perft() program on work units 400-799. It has the same format and can be found at https://dl.dropboxusercontent.com/u/316 ... rgestAnkan

Code: Select all

Yaka (no movelists) 0.0 x64 by Syed Fahad
position fen r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4
perft 7
g5g2: 4988513632
g5g3: 4808101374
g5g4: 4720665609
g5a5: 5065946984
g5b5: 5443184296
g5c5: 5812494131
g5d5: 5743468154
g5e5: 5996621499
g5f5: 5718208578
g5h5: 4761199025
g5g6: 4532150420
a8b8: 6124569527
h8h2: 6947016004
h8h3: 6577512959
h8h4: 7021394696
h8h5: 6630678078
h8h6: 6483309151
h8h7: 6367385659
g5e3: 676738214
g5f4: 5394250602
g5h4: 4489990621
g5f6: 5065720702
g5h6: 3553551200
g5e7: 3057930051
g5d8: 3054913208
f8a3: 6527589330
f8b4: 5866737911
f8c5: 7198335756
f8d6: 7420795761
f8e7: 6613468222
c6b4: 5411507633
c6d4: 5677566534
c6a5: 5647588169
c6e5: 5127169397
c6e7: 4179205229
c6b8: 5419707696
c6d8: 4932701396
g8f6: 6544501068
g8h6: 4970042341
g8e7: 4811036453
e8e7: 4011963785
e8d8: 6082668123
e6e5: 4523958530
a7a6: 6765899959
b7b6: 6908613747
d7d6: 5063611150
f7f6: 5123258039
g7g6: 6143428772
a7a5: 6617258409
b7b5: 6011741344
d7d5: 5479167417
f7f5: 4580404517
Took 698702 ms for 282695441062 nodes, 404600 knps
It looks like there are still bugs nasty bugs in Yaka.
User avatar
stegemma
Posts: 859
Joined: Mon Aug 10, 2009 10:05 pm
Location: Italy
Full name: Stefano Gemma

Re: From 000-099/wu7.014.sum

Post by stegemma »

sje wrote:[...]It took about 67 seconds wall time for the perft(7) calculation.

The above ran on a 2006 dual 2.66 GHz Xeon Mac, a machine about 20% as fast as top end 2015 consumer hardware.
[...]
WOW... 67 seconds???

Of course your is a perft only software (you don't store move, don't sort them and so on) but still it looks very fast. Mine is a I7 4970k but satana is still single core.
User avatar
vittyvirus
Posts: 646
Joined: Wed Jun 18, 2014 2:30 pm
Full name: Fahad Syed

Re: From 000-099/wu7.014.sum

Post by vittyvirus »

stegemma wrote:
sje wrote:[...]It took about 67 seconds wall time for the perft(7) calculation.

The above ran on a 2006 dual 2.66 GHz Xeon Mac, a machine about 20% as fast as top end 2015 consumer hardware.
[...]
WOW... 67 seconds???

Of course your is a perft only software (you don't store move, don't sort them and so on) but still it looks very fast. Mine is a I7 4970k but satana is still single core.
67 seconds!!! No I don't believe you. :shock:
User avatar
Ajedrecista
Posts: 1966
Joined: Wed Jul 13, 2011 9:04 pm
Location: Madrid, Spain.

Re: Perft(7) test suites just for you.

Post by Ajedrecista »

Hello Steven:
sje wrote:As part of the Perft(14) project, each processed work unit is scanned to locate the highest perft(7) subtotal and these positions are then written to a file for all to see. This file can be found at https://dl.dropboxusercontent.com/u/316 ... 14/Largest

A sample line from the easily parsed file:

Code: Select all

000-099/wu7.055.sum  r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4 3 282695441146 848086323438
Where the position FEN is "r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4", the position occurs 3 times in the master tree, the perft(7) subtotal is 282,695,441,146, and the summation product is 848,086,323,438.

The idea is to run the file through your program for purposes of verification and benchmarking.

----

There is a separate, similar file made from the results of Ankan's perft() program on work units 400-799. It has the same format and can be found at https://dl.dropboxusercontent.com/u/316 ... rgestAnkan
Results of perft(7) by JetChess 1.0.0.0 (single core, 32-bit) using 1 GB of hash in an Intel Pentium D930 (3 GHz) of year 2006:

Code: Select all

r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4

  1  qg5-f4   5394250602
  2  qg5*e3    676738214
  3  qg5-h4   4489990621
  4  qg5-h6   3553551200
  5  qg5-f6   5065720702
  6  qg5-e7   3057930051
  7  qg5-d8   3054913208
  8  qg5-g4   4720665609
  9  qg5-g3   4808101374
 10  qg5*g2   4988513632
 11  qg5-h5   4761199025
 12  qg5-f5   5718208578
 13  qg5-e5   5996621499
 14  qg5-d5   5743468154
 15  qg5-c5   5812494131
 16  qg5-b5   5443184296
 17  qg5-a5   5065946984
 18  qg5-g6   4532150420
 19  ra8-b8   6124569527
 20  rh8-h7   6367385659
 21  rh8-h6   6483309151
 22  rh8-h5   6630678078
 23  rh8-h4   7021394696
 24  rh8-h3   6577512959
 25  rh8*h2   6947016004
 26  bf8-e7   6613468222
 27  bf8-d6   7420795761
 28  bf8-c5   7198335756
 29  bf8-b4   5866737911
 30  bf8-a3   6527589330
 31  nc6-a5   5647588169
 32  nc6-b4   5411507633
 33  nc6-d4   5677566534
 34  nc6-e5   5127169397
 35  nc6-b8   5419707696
 36  nc6-d8   4932701396
 37  nc6-e7   4179205229
 38  ng8-e7   4811036453
 39  ng8-f6   6544501068
 40  ng8-h6   4970042341
 41   e6-e5   4523958530
 42   a7-a6   6765899959
 43   a7-a5   6617258409
 44   b7-b6   6908613747
 45   b7-b5   6011741344
 46   d7-d6   5063611150
 47   d7-d5   5479167417
 48   f7-f6   5123258039
 49   f7-f5   4580404517
 50   g7-g6   6143428772
 51  ke8-d8   6082668123
 52  ke8-e7   4011963869

Total:      282695441146

282,695,441,146 (move pathes after 7 half moves).

Time: 354.386 s (0:05:54.386).
Bonus: the number of unique positions.

Code: Select all

r1b1kbnr/pppp1pp1/2n1p3/6q1/4Q3/4P3/PPPP1PPP/RNB1KBNR b KQkq - 2 4

Positions(0) =           1
Positions(1) =          52
Positions(2) =       2,112
Positions(3) =      53,102
Positions(4) =   1,079,663
Positions(5) =  18,121,308
Positions(6) = 249,676,116
Regards from Spain.

Ajedrecista.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

A powers-of-two table, just for you

Post by sje »

A powers-of-two table, just for you. Feel free to copy and save.

Proof that the 128 bit unsigned integer encoding code is now working:

Code: Select all

  0 00000000000000000000000000000001 1
  1 00000000000000000000000000000002 2
  2 00000000000000000000000000000004 4
  3 00000000000000000000000000000008 8
  4 00000000000000000000000000000010 16
  5 00000000000000000000000000000020 32
  6 00000000000000000000000000000040 64
  7 00000000000000000000000000000080 128
  8 00000000000000000000000000000100 256
  9 00000000000000000000000000000200 512
 10 00000000000000000000000000000400 1,024
 11 00000000000000000000000000000800 2,048
 12 00000000000000000000000000001000 4,096
 13 00000000000000000000000000002000 8,192
 14 00000000000000000000000000004000 16,384
 15 00000000000000000000000000008000 32,768
 16 00000000000000000000000000010000 65,536
 17 00000000000000000000000000020000 131,072
 18 00000000000000000000000000040000 262,144
 19 00000000000000000000000000080000 524,288
 20 00000000000000000000000000100000 1,048,576
 21 00000000000000000000000000200000 2,097,152
 22 00000000000000000000000000400000 4,194,304
 23 00000000000000000000000000800000 8,388,608
 24 00000000000000000000000001000000 16,777,216
 25 00000000000000000000000002000000 33,554,432
 26 00000000000000000000000004000000 67,108,864
 27 00000000000000000000000008000000 134,217,728
 28 00000000000000000000000010000000 268,435,456
 29 00000000000000000000000020000000 536,870,912
 30 00000000000000000000000040000000 1,073,741,824
 31 00000000000000000000000080000000 2,147,483,648
 32 00000000000000000000000100000000 4,294,967,296
 33 00000000000000000000000200000000 8,589,934,592
 34 00000000000000000000000400000000 17,179,869,184
 35 00000000000000000000000800000000 34,359,738,368
 36 00000000000000000000001000000000 68,719,476,736
 37 00000000000000000000002000000000 137,438,953,472
 38 00000000000000000000004000000000 274,877,906,944
 39 00000000000000000000008000000000 549,755,813,888
 40 00000000000000000000010000000000 1,099,511,627,776
 41 00000000000000000000020000000000 2,199,023,255,552
 42 00000000000000000000040000000000 4,398,046,511,104
 43 00000000000000000000080000000000 8,796,093,022,208
 44 00000000000000000000100000000000 17,592,186,044,416
 45 00000000000000000000200000000000 35,184,372,088,832
 46 00000000000000000000400000000000 70,368,744,177,664
 47 00000000000000000000800000000000 140,737,488,355,328
 48 00000000000000000001000000000000 281,474,976,710,656
 49 00000000000000000002000000000000 562,949,953,421,312
 50 00000000000000000004000000000000 1,125,899,906,842,624
 51 00000000000000000008000000000000 2,251,799,813,685,248
 52 00000000000000000010000000000000 4,503,599,627,370,496
 53 00000000000000000020000000000000 9,007,199,254,740,992
 54 00000000000000000040000000000000 18,014,398,509,481,984
 55 00000000000000000080000000000000 36,028,797,018,963,968
 56 00000000000000000100000000000000 72,057,594,037,927,936
 57 00000000000000000200000000000000 144,115,188,075,855,872
 58 00000000000000000400000000000000 288,230,376,151,711,744
 59 00000000000000000800000000000000 576,460,752,303,423,488
 60 00000000000000001000000000000000 1,152,921,504,606,846,976
 61 00000000000000002000000000000000 2,305,843,009,213,693,952
 62 00000000000000004000000000000000 4,611,686,018,427,387,904
 63 00000000000000008000000000000000 9,223,372,036,854,775,808
 64 00000000000000010000000000000000 18,446,744,073,709,551,616
 65 00000000000000020000000000000000 36,893,488,147,419,103,232
 66 00000000000000040000000000000000 73,786,976,294,838,206,464
 67 00000000000000080000000000000000 147,573,952,589,676,412,928
 68 00000000000000100000000000000000 295,147,905,179,352,825,856
 69 00000000000000200000000000000000 590,295,810,358,705,651,712
 70 00000000000000400000000000000000 1,180,591,620,717,411,303,424
 71 00000000000000800000000000000000 2,361,183,241,434,822,606,848
 72 00000000000001000000000000000000 4,722,366,482,869,645,213,696
 73 00000000000002000000000000000000 9,444,732,965,739,290,427,392
 74 00000000000004000000000000000000 18,889,465,931,478,580,854,784
 75 00000000000008000000000000000000 37,778,931,862,957,161,709,568
 76 00000000000010000000000000000000 75,557,863,725,914,323,419,136
 77 00000000000020000000000000000000 151,115,727,451,828,646,838,272
 78 00000000000040000000000000000000 302,231,454,903,657,293,676,544
 79 00000000000080000000000000000000 604,462,909,807,314,587,353,088
 80 00000000000100000000000000000000 1,208,925,819,614,629,174,706,176
 81 00000000000200000000000000000000 2,417,851,639,229,258,349,412,352
 82 00000000000400000000000000000000 4,835,703,278,458,516,698,824,704
 83 00000000000800000000000000000000 9,671,406,556,917,033,397,649,408
 84 00000000001000000000000000000000 19,342,813,113,834,066,795,298,816
 85 00000000002000000000000000000000 38,685,626,227,668,133,590,597,632
 86 00000000004000000000000000000000 77,371,252,455,336,267,181,195,264
 87 00000000008000000000000000000000 154,742,504,910,672,534,362,390,528
 88 00000000010000000000000000000000 309,485,009,821,345,068,724,781,056
 89 00000000020000000000000000000000 618,970,019,642,690,137,449,562,112
 90 00000000040000000000000000000000 1,237,940,039,285,380,274,899,124,224
 91 00000000080000000000000000000000 2,475,880,078,570,760,549,798,248,448
 92 00000000100000000000000000000000 4,951,760,157,141,521,099,596,496,896
 93 00000000200000000000000000000000 9,903,520,314,283,042,199,192,993,792
 94 00000000400000000000000000000000 19,807,040,628,566,084,398,385,987,584
 95 00000000800000000000000000000000 39,614,081,257,132,168,796,771,975,168
 96 00000001000000000000000000000000 79,228,162,514,264,337,593,543,950,336
 97 00000002000000000000000000000000 158,456,325,028,528,675,187,087,900,672
 98 00000004000000000000000000000000 316,912,650,057,057,350,374,175,801,344
 99 00000008000000000000000000000000 633,825,300,114,114,700,748,351,602,688
100 00000010000000000000000000000000 1,267,650,600,228,229,401,496,703,205,376
101 00000020000000000000000000000000 2,535,301,200,456,458,802,993,406,410,752
102 00000040000000000000000000000000 5,070,602,400,912,917,605,986,812,821,504
103 00000080000000000000000000000000 10,141,204,801,825,835,211,973,625,643,008
104 00000100000000000000000000000000 20,282,409,603,651,670,423,947,251,286,016
105 00000200000000000000000000000000 40,564,819,207,303,340,847,894,502,572,032
106 00000400000000000000000000000000 81,129,638,414,606,681,695,789,005,144,064
107 00000800000000000000000000000000 162,259,276,829,213,363,391,578,010,288,128
108 00001000000000000000000000000000 324,518,553,658,426,726,783,156,020,576,256
109 00002000000000000000000000000000 649,037,107,316,853,453,566,312,041,152,512
110 00004000000000000000000000000000 1,298,074,214,633,706,907,132,624,082,305,024
111 00008000000000000000000000000000 2,596,148,429,267,413,814,265,248,164,610,048
112 00010000000000000000000000000000 5,192,296,858,534,827,628,530,496,329,220,096
113 00020000000000000000000000000000 10,384,593,717,069,655,257,060,992,658,440,192
114 00040000000000000000000000000000 20,769,187,434,139,310,514,121,985,316,880,384
115 00080000000000000000000000000000 41,538,374,868,278,621,028,243,970,633,760,768
116 00100000000000000000000000000000 83,076,749,736,557,242,056,487,941,267,521,536
117 00200000000000000000000000000000 166,153,499,473,114,484,112,975,882,535,043,072
118 00400000000000000000000000000000 332,306,998,946,228,968,225,951,765,070,086,144
119 00800000000000000000000000000000 664,613,997,892,457,936,451,903,530,140,172,288
120 01000000000000000000000000000000 1,329,227,995,784,915,872,903,807,060,280,344,576
121 02000000000000000000000000000000 2,658,455,991,569,831,745,807,614,120,560,689,152
122 04000000000000000000000000000000 5,316,911,983,139,663,491,615,228,241,121,378,304
123 08000000000000000000000000000000 10,633,823,966,279,326,983,230,456,482,242,756,608
124 10000000000000000000000000000000 21,267,647,932,558,653,966,460,912,964,485,513,216
125 20000000000000000000000000000000 42,535,295,865,117,307,932,921,825,928,971,026,432
126 40000000000000000000000000000000 85,070,591,730,234,615,865,843,651,857,942,052,864
127 80000000000000000000000000000000 170,141,183,460,469,231,731,687,303,715,884,105,728