binomial_lookup.F90 Source File

Source Code

module binomial_lookup
use constants, only: int64
#ifdef GFORTRAN_
use constants, only: int128
#endif
implicit none
private
public :: factorial, binomial_lookup_table_i64
#ifdef GFORTRAN_
public :: binomial_lookup_table_i128
#endif
! Already binomial(67, 30) cannot be stored in a signed int64 anymore.
! => create a lookup table for all binomials up to binomial(66, k).

! If we have the following pascal triangle

!                     1
!                  1     1
!               1     2     1
!            1     3     3     1
!         1     4     6     4     1
!      1     5    10    10     5     1
!   1     6    15    20    15     6     1

! We can exclude all values which are trivially to compute or
!   redundant because of symmetry.
! Only these values will be stored in a linear vector.

!                     *
!                  *     *
!               *     *     *
!            *     *     *     *
!         *     *     6     *     *
!      *     *    10     *     *     *
!   *     *    15    20     *     *     *

! The storage order is then "row-major" for binomial(n, k) by going through all non-redundant k
!    for a given n:
!                     *
!                  *     *
!               *     *     *
!            *     *     *     *
!         *     *     1     *     *
!      *     *     2     *     *     *
!   *     *     3     4     *     *     *

!
!
! The following python code was used to create the table:
!
!  # DO NOT USE scipy.special.binom
!  # since it uses floats, it is slightly off for larger values.
!
!  def f(n, k):
!     t = k
!     (n, k, previous_x) = (n - k + 1, 1, 1)
!     for _i in range(1, t + 1):
!         x = n * previous_x // k
!         (n, k, previous_x) = (n + 1, k + 1, x)
!     return previous_x   ! f = lambda n, k: int(round(scipy.special.binom(n, k)))
!
! largest = 2**63 - 1
! n, found = 0, False
!     n += 1
!     for k in range(2, n // 2 + 1):
!         if f(n, k) > largest:
!             found = True
!             break
!
!
! N = n - 1
! lookup = [f(n, k) for n in range(4, N + 1) for k in range(2, n // 2 + 1)]
!
integer(int64), parameter :: binomial_lookup_table_i64(1024) = [ &
6_int64, 10_int64, 15_int64, 20_int64, &
21_int64, 35_int64, 28_int64, 56_int64, 70_int64, &
36_int64, 84_int64, 126_int64, 45_int64, 120_int64, &
210_int64, 252_int64, 55_int64, 165_int64, 330_int64, &
462_int64, 66_int64, 220_int64, 495_int64, 792_int64, &
924_int64, 78_int64, 286_int64, 715_int64, 1287_int64, &
1716_int64, 91_int64, 364_int64, 1001_int64, 2002_int64, &
3003_int64, 3432_int64, 105_int64, 455_int64, 1365_int64, &
3003_int64, 5005_int64, 6435_int64, 120_int64, 560_int64, &
1820_int64, 4368_int64, 8008_int64, 11440_int64, 12870_int64, &
136_int64, 680_int64, 2380_int64, 6188_int64, 12376_int64, &
19448_int64, 24310_int64, 153_int64, 816_int64, 3060_int64, &
8568_int64, 18564_int64, 31824_int64, 43758_int64, 48620_int64, &
171_int64, 969_int64, 3876_int64, 11628_int64, 27132_int64, &
50388_int64, 75582_int64, 92378_int64, 190_int64, 1140_int64, &
4845_int64, 15504_int64, 38760_int64, 77520_int64, 125970_int64, &
167960_int64, 184756_int64, 210_int64, 1330_int64, 5985_int64, &
20349_int64, 54264_int64, 116280_int64, 203490_int64, 293930_int64, &
352716_int64, 231_int64, 1540_int64, 7315_int64, 26334_int64, &
74613_int64, 170544_int64, 319770_int64, 497420_int64, 646646_int64, &
705432_int64, 253_int64, 1771_int64, 8855_int64, 33649_int64, &
100947_int64, 245157_int64, 490314_int64, 817190_int64, 1144066_int64, &
1352078_int64, 276_int64, 2024_int64, 10626_int64, 42504_int64, &
134596_int64, 346104_int64, 735471_int64, 1307504_int64, 1961256_int64, &
2496144_int64, 2704156_int64, 300_int64, 2300_int64, 12650_int64, &
53130_int64, 177100_int64, 480700_int64, 1081575_int64, 2042975_int64, &
3268760_int64, 4457400_int64, 5200300_int64, 325_int64, 2600_int64, &
14950_int64, 65780_int64, 230230_int64, 657800_int64, 1562275_int64, &
3124550_int64, 5311735_int64, 7726160_int64, 9657700_int64, 10400600_int64, &
351_int64, 2925_int64, 17550_int64, 80730_int64, 296010_int64, &
888030_int64, 2220075_int64, 4686825_int64, 8436285_int64, 13037895_int64, &
17383860_int64, 20058300_int64, 378_int64, 3276_int64, 20475_int64, &
98280_int64, 376740_int64, 1184040_int64, 3108105_int64, 6906900_int64, &
13123110_int64, 21474180_int64, 30421755_int64, 37442160_int64, 40116600_int64, &
406_int64, 3654_int64, 23751_int64, 118755_int64, 475020_int64, &
1560780_int64, 4292145_int64, 10015005_int64, 20030010_int64, 34597290_int64, &
51895935_int64, 67863915_int64, 77558760_int64, 435_int64, 4060_int64, &
27405_int64, 142506_int64, 593775_int64, 2035800_int64, 5852925_int64, &
14307150_int64, 30045015_int64, 54627300_int64, 86493225_int64, 119759850_int64, &
145422675_int64, 155117520_int64, 465_int64, 4495_int64, 31465_int64, &
169911_int64, 736281_int64, 2629575_int64, 7888725_int64, 20160075_int64, &
44352165_int64, 84672315_int64, 141120525_int64, 206253075_int64, 265182525_int64, &
300540195_int64, 496_int64, 4960_int64, 35960_int64, 201376_int64, &
906192_int64, 3365856_int64, 10518300_int64, 28048800_int64, 64512240_int64, &
129024480_int64, 225792840_int64, 347373600_int64, 471435600_int64, 565722720_int64, &
601080390_int64, 528_int64, 5456_int64, 40920_int64, 237336_int64, &
1107568_int64, 4272048_int64, 13884156_int64, 38567100_int64, 92561040_int64, &
193536720_int64, 354817320_int64, 573166440_int64, 818809200_int64, 1037158320_int64, &
1166803110_int64, 561_int64, 5984_int64, 46376_int64, 278256_int64, &
1344904_int64, 5379616_int64, 18156204_int64, 52451256_int64, 131128140_int64, &
286097760_int64, 548354040_int64, 927983760_int64, 1391975640_int64, 1855967520_int64, &
2203961430_int64, 2333606220_int64, 595_int64, 6545_int64, 52360_int64, &
324632_int64, 1623160_int64, 6724520_int64, 23535820_int64, 70607460_int64, &
183579396_int64, 417225900_int64, 834451800_int64, 1476337800_int64, 2319959400_int64, &
3247943160_int64, 4059928950_int64, 4537567650_int64, 630_int64, 7140_int64, &
58905_int64, 376992_int64, 1947792_int64, 8347680_int64, 30260340_int64, &
94143280_int64, 254186856_int64, 600805296_int64, 1251677700_int64, 2310789600_int64, &
3796297200_int64, 5567902560_int64, 7307872110_int64, 8597496600_int64, 9075135300_int64, &
666_int64, 7770_int64, 66045_int64, 435897_int64, 2324784_int64, &
10295472_int64, 38608020_int64, 124403620_int64, 348330136_int64, 854992152_int64, &
1852482996_int64, 3562467300_int64, 6107086800_int64, 9364199760_int64, 12875774670_int64, &
15905368710_int64, 17672631900_int64, 703_int64, 8436_int64, 73815_int64, &
501942_int64, 2760681_int64, 12620256_int64, 48903492_int64, 163011640_int64, &
472733756_int64, 1203322288_int64, 2707475148_int64, 5414950296_int64, 9669554100_int64, &
15471286560_int64, 22239974430_int64, 28781143380_int64, 33578000610_int64, 35345263800_int64, &
741_int64, 9139_int64, 82251_int64, 575757_int64, 3262623_int64, &
15380937_int64, 61523748_int64, 211915132_int64, 635745396_int64, 1676056044_int64, &
3910797436_int64, 8122425444_int64, 15084504396_int64, 25140840660_int64, 37711260990_int64, &
51021117810_int64, 62359143990_int64, 68923264410_int64, 780_int64, 9880_int64, &
91390_int64, 658008_int64, 3838380_int64, 18643560_int64, 76904685_int64, &
273438880_int64, 847660528_int64, 2311801440_int64, 5586853480_int64, 12033222880_int64, &
23206929840_int64, 40225345056_int64, 62852101650_int64, 88732378800_int64, 113380261800_int64, &
131282408400_int64, 137846528820_int64, 820_int64, 10660_int64, 101270_int64, &
749398_int64, 4496388_int64, 22481940_int64, 95548245_int64, 350343565_int64, &
1121099408_int64, 3159461968_int64, 7898654920_int64, 17620076360_int64, 35240152720_int64, &
63432274896_int64, 103077446706_int64, 151584480450_int64, 202112640600_int64, 244662670200_int64, &
269128937220_int64, 861_int64, 11480_int64, 111930_int64, 850668_int64, &
5245786_int64, 26978328_int64, 118030185_int64, 445891810_int64, 1471442973_int64, &
4280561376_int64, 11058116888_int64, 25518731280_int64, 52860229080_int64, 98672427616_int64, &
166509721602_int64, 254661927156_int64, 353697121050_int64, 446775310800_int64, 513791607420_int64, &
538257874440_int64, 903_int64, 12341_int64, 123410_int64, 962598_int64, &
6096454_int64, 32224114_int64, 145008513_int64, 563921995_int64, 1917334783_int64, &
5752004349_int64, 15338678264_int64, 36576848168_int64, 78378960360_int64, 151532656696_int64, &
265182149218_int64, 421171648758_int64, 608359048206_int64, 800472431850_int64, 960566918220_int64, &
1052049481860_int64, 946_int64, 13244_int64, 135751_int64, 1086008_int64, &
7059052_int64, 38320568_int64, 177232627_int64, 708930508_int64, 2481256778_int64, &
7669339132_int64, 21090682613_int64, 51915526432_int64, 114955808528_int64, 229911617056_int64, &
416714805914_int64, 686353797976_int64, 1029530696964_int64, 1408831480056_int64, 1761039350070_int64, &
2012616400080_int64, 2104098963720_int64, 990_int64, 14190_int64, 148995_int64, &
1221759_int64, 8145060_int64, 45379620_int64, 215553195_int64, 886163135_int64, &
3190187286_int64, 10150595910_int64, 28760021745_int64, 73006209045_int64, 166871334960_int64, &
344867425584_int64, 646626422970_int64, 1103068603890_int64, 1715884494940_int64, 2438362177020_int64, &
3169870830126_int64, 3773655750150_int64, 4116715363800_int64, 1035_int64, 15180_int64, &
163185_int64, 1370754_int64, 9366819_int64, 53524680_int64, 260932815_int64, &
1101716330_int64, 4076350421_int64, 13340783196_int64, 38910617655_int64, 101766230790_int64, &
239877544005_int64, 511738760544_int64, 991493848554_int64, 1749695026860_int64, 2818953098830_int64, &
4154246671960_int64, 5608233007146_int64, 6943526580276_int64, 7890371113950_int64, 8233430727600_int64, &
1081_int64, 16215_int64, 178365_int64, 1533939_int64, 10737573_int64, &
62891499_int64, 314457495_int64, 1362649145_int64, 5178066751_int64, 17417133617_int64, &
52251400851_int64, 140676848445_int64, 341643774795_int64, 751616304549_int64, 1503232609098_int64, &
2741188875414_int64, 4568648125690_int64, 6973199770790_int64, 9762479679106_int64, 12551759587422_int64, &
14833897694226_int64, 16123801841550_int64, 1128_int64, 17296_int64, 194580_int64, &
1712304_int64, 12271512_int64, 73629072_int64, 377348994_int64, 1677106640_int64, &
6540715896_int64, 22595200368_int64, 69668534468_int64, 192928249296_int64, 482320623240_int64, &
1093260079344_int64, 2254848913647_int64, 4244421484512_int64, 7309837001104_int64, 11541847896480_int64, &
16735679449896_int64, 22314239266528_int64, 27385657281648_int64, 30957699535776_int64, 32247603683100_int64, &
1176_int64, 18424_int64, 211876_int64, 1906884_int64, 13983816_int64, &
85900584_int64, 450978066_int64, 2054455634_int64, 8217822536_int64, 29135916264_int64, &
92263734836_int64, 262596783764_int64, 675248872536_int64, 1575580702584_int64, 3348108992991_int64, &
6499270398159_int64, 11554258485616_int64, 18851684897584_int64, 28277527346376_int64, 39049918716424_int64, &
49699896548176_int64, 58343356817424_int64, 63205303218876_int64, 1225_int64, 19600_int64, &
230300_int64, 2118760_int64, 15890700_int64, 99884400_int64, 536878650_int64, &
2505433700_int64, 10272278170_int64, 37353738800_int64, 121399651100_int64, 354860518600_int64, &
937845656300_int64, 2250829575120_int64, 4923689695575_int64, 9847379391150_int64, 18053528883775_int64, &
30405943383200_int64, 47129212243960_int64, 67327446062800_int64, 88749815264600_int64, 108043253365600_int64, &
121548660036300_int64, 126410606437752_int64, 1275_int64, 20825_int64, 249900_int64, &
2349060_int64, 18009460_int64, 115775100_int64, 636763050_int64, 3042312350_int64, &
12777711870_int64, 47626016970_int64, 158753389900_int64, 476260169700_int64, 1292706174900_int64, &
3188675231420_int64, 7174519270695_int64, 14771069086725_int64, 27900908274925_int64, 48459472266975_int64, &
77535155627160_int64, 114456658306760_int64, 156077261327400_int64, 196793068630200_int64, 229591913401900_int64, &
247959266474052_int64, 1326_int64, 22100_int64, 270725_int64, 2598960_int64, &
20358520_int64, 133784560_int64, 752538150_int64, 3679075400_int64, 15820024220_int64, &
60403728840_int64, 206379406870_int64, 635013559600_int64, 1768966344600_int64, 4481381406320_int64, &
10363194502115_int64, 21945588357420_int64, 42671977361650_int64, 76360380541900_int64, 125994627894135_int64, &
191991813933920_int64, 270533919634160_int64, 352870329957600_int64, 426384982032100_int64, 477551179875952_int64, &
495918532948104_int64, 1378_int64, 23426_int64, 292825_int64, 2869685_int64, &
22957480_int64, 154143080_int64, 886322710_int64, 4431613550_int64, 19499099620_int64, &
76223753060_int64, 266783135710_int64, 841392966470_int64, 2403979904200_int64, 6250347750920_int64, &
14844575908435_int64, 32308782859535_int64, 64617565719070_int64, 119032357903550_int64, 202355008436035_int64, &
317986441828055_int64, 462525733568080_int64, 623404249591760_int64, 779255311989700_int64, 903936161908052_int64, &
973469712824056_int64, 1431_int64, 24804_int64, 316251_int64, 3162510_int64, &
25827165_int64, 177100560_int64, 1040465790_int64, 5317936260_int64, 23930713170_int64, &
95722852680_int64, 343006888770_int64, 1108176102180_int64, 3245372870670_int64, 8654327655120_int64, &
21094923659355_int64, 47153358767970_int64, 96926348578605_int64, 183649923622620_int64, 321387366339585_int64, &
520341450264090_int64, 780512175396135_int64, 1085929983159840_int64, 1402659561581460_int64, 1683191473897752_int64, &
1877405874732108_int64, 1946939425648112_int64, 1485_int64, 26235_int64, 341055_int64, &
3478761_int64, 28989675_int64, 202927725_int64, 1217566350_int64, 6358402050_int64, &
29248649430_int64, 119653565850_int64, 438729741450_int64, 1451182990950_int64, 4353548972850_int64, &
11899700525790_int64, 29749251314475_int64, 68248282427325_int64, 144079707346575_int64, 280576272201225_int64, &
505037289962205_int64, 841728816603675_int64, 1300853625660225_int64, 1866442158555975_int64, 2488589544741300_int64, &
3085851035479212_int64, 3560597348629860_int64, 3824345300380220_int64, 1540_int64, 27720_int64, &
367290_int64, 3819816_int64, 32468436_int64, 231917400_int64, 1420494075_int64, &
7575968400_int64, 35607051480_int64, 148902215280_int64, 558383307300_int64, 1889912732400_int64, &
5804731963800_int64, 16253249498640_int64, 41648951840265_int64, 97997533741800_int64, 212327989773900_int64, &
424655979547800_int64, 785613562163430_int64, 1346766106565880_int64, 2142582442263900_int64, 3167295784216200_int64, &
4355031703297275_int64, 5574440580220512_int64, 6646448384109072_int64, 7384942649010080_int64, 7648690600760440_int64, &
1596_int64, 29260_int64, 395010_int64, 4187106_int64, 36288252_int64, &
264385836_int64, 1652411475_int64, 8996462475_int64, 43183019880_int64, 184509266760_int64, &
707285522580_int64, 2448296039700_int64, 7694644696200_int64, 22057981462440_int64, 57902201338905_int64, &
139646485582065_int64, 310325523515700_int64, 636983969321700_int64, 1210269541711230_int64, 2132379668729310_int64, &
3489348548829780_int64, 5309878226480100_int64, 7522327487513475_int64, 9929472283517787_int64, 12220888964329584_int64, &
14031391033119152_int64, 15033633249770520_int64, 1653_int64, 30856_int64, 424270_int64, &
4582116_int64, 40475358_int64, 300674088_int64, 1916797311_int64, 10648873950_int64, &
52179482355_int64, 227692286640_int64, 891794789340_int64, 3155581562280_int64, 10142940735900_int64, &
29752626158640_int64, 79960182801345_int64, 197548686920970_int64, 449972009097765_int64, 947309492837400_int64, &
1847253511032930_int64, 3342649210440540_int64, 5621728217559090_int64, 8799226775309880_int64, 12832205713993575_int64, &
17451799771031262_int64, 22150361247847371_int64, 26252279997448736_int64, 29065024282889672_int64, 30067266499541040_int64, &
1711_int64, 32509_int64, 455126_int64, 5006386_int64, 45057474_int64, &
341149446_int64, 2217471399_int64, 12565671261_int64, 62828356305_int64, 279871768995_int64, &
1119487075980_int64, 4047376351620_int64, 13298522298180_int64, 39895566894540_int64, 109712808959985_int64, &
277508869722315_int64, 647520696018735_int64, 1397281501935165_int64, 2794563003870330_int64, 5189902721473470_int64, &
8964377427999630_int64, 14420954992868970_int64, 21631432489303455_int64, 30284005485024837_int64, 39602161018878633_int64, &
48402641245296107_int64, 55317304280338408_int64, 59132290782430712_int64, 1770_int64, 34220_int64, &
487635_int64, 5461512_int64, 50063860_int64, 386206920_int64, 2558620845_int64, &
14783142660_int64, 75394027566_int64, 342700125300_int64, 1399358844975_int64, 5166863427600_int64, &
17345898649800_int64, 53194089192720_int64, 149608375854525_int64, 387221678682300_int64, 925029565741050_int64, &
2044802197953900_int64, 4191844505805495_int64, 7984465725343800_int64, 14154280149473100_int64, 23385332420868600_int64, &
36052387482172425_int64, 51915437974328292_int64, 69886166503903470_int64, 88004802264174740_int64, 103719945525634515_int64, &
114449595062769120_int64, 118264581564861424_int64, 1830_int64, 35990_int64, 521855_int64, &
5949147_int64, 55525372_int64, 436270780_int64, 2944827765_int64, 17341763505_int64, &
90177170226_int64, 418094152866_int64, 1742058970275_int64, 6566222272575_int64, 22512762077400_int64, &
70539987842520_int64, 202802465047245_int64, 536830054536825_int64, 1312251244423350_int64, 2969831763694950_int64, &
6236646703759395_int64, 12176310231149295_int64, 22138745874816900_int64, 37539612570341700_int64, 59437719903041025_int64, &
87967825456500717_int64, 121801604478231762_int64, 157890968768078210_int64, 191724747789809255_int64, 218169540588403635_int64, &
232714176627630544_int64, 1891_int64, 37820_int64, 557845_int64, 6471002_int64, &
61474519_int64, 491796152_int64, 3381098545_int64, 20286591270_int64, 107518933731_int64, &
508271323092_int64, 2160153123141_int64, 8308281242850_int64, 29078984349975_int64, 93052749919920_int64, &
273342452889765_int64, 739632519584070_int64, 1849081298960175_int64, 4282083008118300_int64, 9206478467454345_int64, &
18412956934908690_int64, 34315056105966195_int64, 59678358445158600_int64, 96977332473382725_int64, 147405545359541742_int64, &
209769429934732479_int64, 279692573246309972_int64, 349615716557887465_int64, 409894288378212890_int64, 450883717216034179_int64, &
465428353255261088_int64, 1953_int64, 39711_int64, 595665_int64, 7028847_int64, &
67945521_int64, 553270671_int64, 3872894697_int64, 23667689815_int64, 127805525001_int64, &
615790256823_int64, 2668424446233_int64, 10468434365991_int64, 37387265592825_int64, 122131734269895_int64, &
366395202809685_int64, 1012974972473835_int64, 2588713818544245_int64, 6131164307078475_int64, 13488561475572645_int64, &
27619435402363035_int64, 52728013040874885_int64, 93993414551124795_int64, 156655690918541325_int64, 244382877832924467_int64, &
357174975294274221_int64, 489462003181042451_int64, 629308289804197437_int64, 759510004936100355_int64, 860778005594247069_int64, &
916312070471295267_int64, 2016_int64, 41664_int64, 635376_int64, 7624512_int64, &
74974368_int64, 621216192_int64, 4426165368_int64, 27540584512_int64, 151473214816_int64, &
743595781824_int64, 3284214703056_int64, 13136858812224_int64, 47855699958816_int64, 159518999862720_int64, &
488526937079580_int64, 1379370175283520_int64, 3601688791018080_int64, 8719878125622720_int64, 19619725782651120_int64, &
41107996877935680_int64, 80347448443237920_int64, 146721427591999680_int64, 250649105469666120_int64, 401038568751465792_int64, &
601557853127198688_int64, 846636978475316672_int64, 1118770292985239888_int64, 1388818294740297792_int64, 1620288010530347424_int64, &
1777090076065542336_int64, 1832624140942590534_int64, 2080_int64, 43680_int64, 677040_int64, &
8259888_int64, 82598880_int64, 696190560_int64, 5047381560_int64, 31966749880_int64, &
179013799328_int64, 895068996640_int64, 4027810484880_int64, 16421073515280_int64, 60992558771040_int64, &
207374699821536_int64, 648045936942300_int64, 1867897112363100_int64, 4981058966301600_int64, 12321566916640800_int64, &
28339603908273840_int64, 60727722660586800_int64, 121455445321173600_int64, 227068876035237600_int64, 397370533061665800_int64, &
651687674221131912_int64, 1002596421878664480_int64, 1448194831602515360_int64, 1965407271460556560_int64, 2507588587725537680_int64, &
3009106305270645216_int64, 3397378086595889760_int64, 3609714217008132870_int64, 2145_int64, 45760_int64, &
720720_int64, 8936928_int64, 90858768_int64, 778789440_int64, 5743572120_int64, &
37014131440_int64, 210980549208_int64, 1074082795968_int64, 4922879481520_int64, 20448884000160_int64, &
77413632286320_int64, 268367258592576_int64, 855420636763836_int64, 2515943049305400_int64, 6848956078664700_int64, &
17302625882942400_int64, 40661170824914640_int64, 89067326568860640_int64, 182183167981760400_int64, 348524321356411200_int64, &
624439409096903400_int64, 1049058207282797712_int64, 1654284096099796392_int64, 2450791253481179840_int64, 3413602103063071920_int64, &
4472995859186094240_int64, 5516694892996182896_int64, 6406484391866534976_int64, 7007092303604022630_int64, 7219428434016265740_int64 &
]

! factorial(33) is the largest number that is contained in a signed int128
! This is one of the rare occasions where the Fortran Array Access syntax is helpful
! since the user can use this array, as if it was a function.
!
! Generated with the followingp python code:
!     largest = 2**127 - 1
!     n, found = 0, False
!         n += 1
!         if faculty(n) > largest:
!             print(n)
!             found = True
!             break
!     lookup = [faculty(i) for i in range(n)]
integer(int64), parameter :: factorial(0:20) = [1_int64, 1_int64, 2_int64, &
6_int64, 24_int64, &
120_int64, 720_int64, &
5040_int64, 40320_int64, &
362880_int64, 3628800_int64, &
39916800_int64, 479001600_int64, &
6227020800_int64, 87178291200_int64, &
1307674368000_int64, 20922789888000_int64, &
355687428096000_int64, 6402373705728000_int64, &
121645100408832000_int64, 2432902008176640000_int64]

#ifdef GFORTRAN_
! Lookup the logic at int64 table
integer(int128), parameter :: binomial_lookup_table_i128(4096) = [6_int128, &
10_int128, 15_int128, &
20_int128, 21_int128, &
35_int128, 28_int128, &
56_int128, 70_int128, &
36_int128, 84_int128, &
126_int128, 45_int128, &
120_int128, 210_int128, &
252_int128, 55_int128, &
165_int128, 330_int128, &
462_int128, 66_int128, &
220_int128, 495_int128, &
792_int128, 924_int128, &
78_int128, 286_int128, &
715_int128, 1287_int128, &
1716_int128, 91_int128, &
364_int128, 1001_int128, &
2002_int128, 3003_int128, &
3432_int128, 105_int128, &
455_int128, 1365_int128, &
3003_int128, 5005_int128, &
6435_int128, 120_int128, &
560_int128, 1820_int128, &
4368_int128, 8008_int128, &
11440_int128, 12870_int128, &
136_int128, 680_int128, &
2380_int128, 6188_int128, &
12376_int128, 19448_int128, &
24310_int128, 153_int128, &
816_int128, 3060_int128, &
8568_int128, 18564_int128, &
31824_int128, 43758_int128, &
48620_int128, 171_int128, &
969_int128, 3876_int128, &
11628_int128, 27132_int128, &
50388_int128, 75582_int128, &
92378_int128, 190_int128, &
1140_int128, 4845_int128, &
15504_int128, 38760_int128, &
77520_int128, 125970_int128, &
167960_int128, 184756_int128, &
210_int128, 1330_int128, &
5985_int128, 20349_int128, &
54264_int128, 116280_int128, &
203490_int128, 293930_int128, &
352716_int128, 231_int128, &
1540_int128, 7315_int128, &
26334_int128, 74613_int128, &
170544_int128, 319770_int128, &
497420_int128, 646646_int128, &
705432_int128, 253_int128, &
1771_int128, 8855_int128, &
33649_int128, 100947_int128, &
245157_int128, 490314_int128, &
817190_int128, 1144066_int128, &
1352078_int128, 276_int128, &
2024_int128, 10626_int128, &
42504_int128, 134596_int128, &
346104_int128, 735471_int128, &
1307504_int128, 1961256_int128, &
2496144_int128, 2704156_int128, &
300_int128, 2300_int128, &
12650_int128, 53130_int128, &
177100_int128, 480700_int128, &
1081575_int128, 2042975_int128, &
3268760_int128, 4457400_int128, &
5200300_int128, 325_int128, &
2600_int128, 14950_int128, &
65780_int128, 230230_int128, &
657800_int128, 1562275_int128, &
3124550_int128, 5311735_int128, &
7726160_int128, 9657700_int128, &
10400600_int128, 351_int128, &
2925_int128, 17550_int128, &
80730_int128, 296010_int128, &
888030_int128, 2220075_int128, &
4686825_int128, 8436285_int128, &
13037895_int128, 17383860_int128, &
20058300_int128, 378_int128, &
3276_int128, 20475_int128, &
98280_int128, 376740_int128, &
1184040_int128, 3108105_int128, &
6906900_int128, 13123110_int128, &
21474180_int128, 30421755_int128, &
37442160_int128, 40116600_int128, &
406_int128, 3654_int128, &
23751_int128, 118755_int128, &
475020_int128, 1560780_int128, &
4292145_int128, 10015005_int128, &
20030010_int128, 34597290_int128, &
51895935_int128, 67863915_int128, &
77558760_int128, 435_int128, &
4060_int128, 27405_int128, &
142506_int128, 593775_int128, &
2035800_int128, 5852925_int128, &
14307150_int128, 30045015_int128, &
54627300_int128, 86493225_int128, &
119759850_int128, 145422675_int128, &
155117520_int128, 465_int128, &
4495_int128, 31465_int128, &
169911_int128, 736281_int128, &
2629575_int128, 7888725_int128, &
20160075_int128, 44352165_int128, &
84672315_int128, 141120525_int128, &
206253075_int128, 265182525_int128, &
300540195_int128, 496_int128, &
4960_int128, 35960_int128, &
201376_int128, 906192_int128, &
3365856_int128, 10518300_int128, &
28048800_int128, 64512240_int128, &
129024480_int128, 225792840_int128, &
347373600_int128, 471435600_int128, &
565722720_int128, 601080390_int128, &
528_int128, 5456_int128, &
40920_int128, 237336_int128, &
1107568_int128, 4272048_int128, &
13884156_int128, 38567100_int128, &
92561040_int128, 193536720_int128, &
354817320_int128, 573166440_int128, &
818809200_int128, 1037158320_int128, &
1166803110_int128, 561_int128, &
5984_int128, 46376_int128, &
278256_int128, 1344904_int128, &
5379616_int128, 18156204_int128, &
52451256_int128, 131128140_int128, &
286097760_int128, 548354040_int128, &
927983760_int128, 1391975640_int128, &
1855967520_int128, 2203961430_int128, &
2333606220_int128, 595_int128, &
6545_int128, 52360_int128, &
324632_int128, 1623160_int128, &
6724520_int128, 23535820_int128, &
70607460_int128, 183579396_int128, &
417225900_int128, 834451800_int128, &
1476337800_int128, 2319959400_int128, &
3247943160_int128, 4059928950_int128, &
4537567650_int128, 630_int128, &
7140_int128, 58905_int128, &
376992_int128, 1947792_int128, &
8347680_int128, 30260340_int128, &
94143280_int128, 254186856_int128, &
600805296_int128, 1251677700_int128, &
2310789600_int128, 3796297200_int128, &
5567902560_int128, 7307872110_int128, &
8597496600_int128, 9075135300_int128, &
666_int128, 7770_int128, &
66045_int128, 435897_int128, &
2324784_int128, 10295472_int128, &
38608020_int128, 124403620_int128, &
348330136_int128, 854992152_int128, &
1852482996_int128, 3562467300_int128, &
6107086800_int128, 9364199760_int128, &
12875774670_int128, 15905368710_int128, &
17672631900_int128, 703_int128, &
8436_int128, 73815_int128, &
501942_int128, 2760681_int128, &
12620256_int128, 48903492_int128, &
163011640_int128, 472733756_int128, &
1203322288_int128, 2707475148_int128, &
5414950296_int128, 9669554100_int128, &
15471286560_int128, 22239974430_int128, &
28781143380_int128, 33578000610_int128, &
35345263800_int128, 741_int128, &
9139_int128, 82251_int128, &
575757_int128, 3262623_int128, &
15380937_int128, 61523748_int128, &
211915132_int128, 635745396_int128, &
1676056044_int128, 3910797436_int128, &
8122425444_int128, 15084504396_int128, &
25140840660_int128, 37711260990_int128, &
51021117810_int128, 62359143990_int128, &
68923264410_int128, 780_int128, &
9880_int128, 91390_int128, &
658008_int128, 3838380_int128, &
18643560_int128, 76904685_int128, &
273438880_int128, 847660528_int128, &
2311801440_int128, 5586853480_int128, &
12033222880_int128, 23206929840_int128, &
40225345056_int128, 62852101650_int128, &
88732378800_int128, 113380261800_int128, &
131282408400_int128, 137846528820_int128, &
820_int128, 10660_int128, &
101270_int128, 749398_int128, &
4496388_int128, 22481940_int128, &
95548245_int128, 350343565_int128, &
1121099408_int128, 3159461968_int128, &
7898654920_int128, 17620076360_int128, &
35240152720_int128, 63432274896_int128, &
103077446706_int128, 151584480450_int128, &
202112640600_int128, 244662670200_int128, &
269128937220_int128, 861_int128, &
11480_int128, 111930_int128, &
850668_int128, 5245786_int128, &
26978328_int128, 118030185_int128, &
445891810_int128, 1471442973_int128, &
4280561376_int128, 11058116888_int128, &
25518731280_int128, 52860229080_int128, &
98672427616_int128, 166509721602_int128, &
254661927156_int128, 353697121050_int128, &
446775310800_int128, 513791607420_int128, &
538257874440_int128, 903_int128, &
12341_int128, 123410_int128, &
962598_int128, 6096454_int128, &
32224114_int128, 145008513_int128, &
563921995_int128, 1917334783_int128, &
5752004349_int128, 15338678264_int128, &
36576848168_int128, 78378960360_int128, &
151532656696_int128, 265182149218_int128, &
421171648758_int128, 608359048206_int128, &
800472431850_int128, 960566918220_int128, &
1052049481860_int128, 946_int128, &
13244_int128, 135751_int128, &
1086008_int128, 7059052_int128, &
38320568_int128, 177232627_int128, &
708930508_int128, 2481256778_int128, &
7669339132_int128, 21090682613_int128, &
51915526432_int128, 114955808528_int128, &
229911617056_int128, 416714805914_int128, &
686353797976_int128, 1029530696964_int128, &
1408831480056_int128, 1761039350070_int128, &
2012616400080_int128, 2104098963720_int128, &
990_int128, 14190_int128, &
148995_int128, 1221759_int128, &
8145060_int128, 45379620_int128, &
215553195_int128, 886163135_int128, &
3190187286_int128, 10150595910_int128, &
28760021745_int128, 73006209045_int128, &
166871334960_int128, 344867425584_int128, &
646626422970_int128, 1103068603890_int128, &
1715884494940_int128, 2438362177020_int128, &
3169870830126_int128, 3773655750150_int128, &
4116715363800_int128, 1035_int128, &
15180_int128, 163185_int128, &
1370754_int128, 9366819_int128, &
53524680_int128, 260932815_int128, &
1101716330_int128, 4076350421_int128, &
13340783196_int128, 38910617655_int128, &
101766230790_int128, 239877544005_int128, &
511738760544_int128, 991493848554_int128, &
1749695026860_int128, 2818953098830_int128, &
4154246671960_int128, 5608233007146_int128, &
6943526580276_int128, 7890371113950_int128, &
8233430727600_int128, 1081_int128, &
16215_int128, 178365_int128, &
1533939_int128, 10737573_int128, &
62891499_int128, 314457495_int128, &
1362649145_int128, 5178066751_int128, &
17417133617_int128, 52251400851_int128, &
140676848445_int128, 341643774795_int128, &
751616304549_int128, 1503232609098_int128, &
2741188875414_int128, 4568648125690_int128, &
6973199770790_int128, 9762479679106_int128, &
12551759587422_int128, 14833897694226_int128, &
16123801841550_int128, 1128_int128, &
17296_int128, 194580_int128, &
1712304_int128, 12271512_int128, &
73629072_int128, 377348994_int128, &
1677106640_int128, 6540715896_int128, &
22595200368_int128, 69668534468_int128, &
192928249296_int128, 482320623240_int128, &
1093260079344_int128, 2254848913647_int128, &
4244421484512_int128, 7309837001104_int128, &
11541847896480_int128, 16735679449896_int128, &
22314239266528_int128, 27385657281648_int128, &
30957699535776_int128, 32247603683100_int128, &
1176_int128, 18424_int128, &
211876_int128, 1906884_int128, &
13983816_int128, 85900584_int128, &
450978066_int128, 2054455634_int128, &
8217822536_int128, 29135916264_int128, &
92263734836_int128, 262596783764_int128, &
675248872536_int128, 1575580702584_int128, &
3348108992991_int128, 6499270398159_int128, &
11554258485616_int128, 18851684897584_int128, &
28277527346376_int128, 39049918716424_int128, &
49699896548176_int128, 58343356817424_int128, &
63205303218876_int128, 1225_int128, &
19600_int128, 230300_int128, &
2118760_int128, 15890700_int128, &
99884400_int128, 536878650_int128, &
2505433700_int128, 10272278170_int128, &
37353738800_int128, 121399651100_int128, &
354860518600_int128, 937845656300_int128, &
2250829575120_int128, 4923689695575_int128, &
9847379391150_int128, 18053528883775_int128, &
30405943383200_int128, 47129212243960_int128, &
67327446062800_int128, 88749815264600_int128, &
108043253365600_int128, 121548660036300_int128, &
126410606437752_int128, 1275_int128, &
20825_int128, 249900_int128, &
2349060_int128, 18009460_int128, &
115775100_int128, 636763050_int128, &
3042312350_int128, 12777711870_int128, &
47626016970_int128, 158753389900_int128, &
476260169700_int128, 1292706174900_int128, &
3188675231420_int128, 7174519270695_int128, &
14771069086725_int128, 27900908274925_int128, &
48459472266975_int128, 77535155627160_int128, &
114456658306760_int128, 156077261327400_int128, &
196793068630200_int128, 229591913401900_int128, &
247959266474052_int128, 1326_int128, &
22100_int128, 270725_int128, &
2598960_int128, 20358520_int128, &
133784560_int128, 752538150_int128, &
3679075400_int128, 15820024220_int128, &
60403728840_int128, 206379406870_int128, &
635013559600_int128, 1768966344600_int128, &
4481381406320_int128, 10363194502115_int128, &
21945588357420_int128, 42671977361650_int128, &
76360380541900_int128, 125994627894135_int128, &
191991813933920_int128, 270533919634160_int128, &
352870329957600_int128, 426384982032100_int128, &
477551179875952_int128, 495918532948104_int128, &
1378_int128, 23426_int128, &
292825_int128, 2869685_int128, &
22957480_int128, 154143080_int128, &
886322710_int128, 4431613550_int128, &
19499099620_int128, 76223753060_int128, &
266783135710_int128, 841392966470_int128, &
2403979904200_int128, 6250347750920_int128, &
14844575908435_int128, 32308782859535_int128, &
64617565719070_int128, 119032357903550_int128, &
202355008436035_int128, 317986441828055_int128, &
462525733568080_int128, 623404249591760_int128, &
779255311989700_int128, 903936161908052_int128, &
973469712824056_int128, 1431_int128, &
24804_int128, 316251_int128, &
3162510_int128, 25827165_int128, &
177100560_int128, 1040465790_int128, &
5317936260_int128, 23930713170_int128, &
95722852680_int128, 343006888770_int128, &
1108176102180_int128, 3245372870670_int128, &
8654327655120_int128, 21094923659355_int128, &
47153358767970_int128, 96926348578605_int128, &
183649923622620_int128, 321387366339585_int128, &
520341450264090_int128, 780512175396135_int128, &
1085929983159840_int128, 1402659561581460_int128, &
1683191473897752_int128, 1877405874732108_int128, &
1946939425648112_int128, 1485_int128, &
26235_int128, 341055_int128, &
3478761_int128, 28989675_int128, &
202927725_int128, 1217566350_int128, &
6358402050_int128, 29248649430_int128, &
119653565850_int128, 438729741450_int128, &
1451182990950_int128, 4353548972850_int128, &
11899700525790_int128, 29749251314475_int128, &
68248282427325_int128, 144079707346575_int128, &
280576272201225_int128, 505037289962205_int128, &
841728816603675_int128, 1300853625660225_int128, &
1866442158555975_int128, 2488589544741300_int128, &
3085851035479212_int128, 3560597348629860_int128, &
3824345300380220_int128, 1540_int128, &
27720_int128, 367290_int128, &
3819816_int128, 32468436_int128, &
231917400_int128, 1420494075_int128, &
7575968400_int128, 35607051480_int128, &
148902215280_int128, 558383307300_int128, &
1889912732400_int128, 5804731963800_int128, &
16253249498640_int128, 41648951840265_int128, &
97997533741800_int128, 212327989773900_int128, &
424655979547800_int128, 785613562163430_int128, &
1346766106565880_int128, 2142582442263900_int128, &
3167295784216200_int128, 4355031703297275_int128, &
5574440580220512_int128, 6646448384109072_int128, &
7384942649010080_int128, 7648690600760440_int128, &
1596_int128, 29260_int128, &
395010_int128, 4187106_int128, &
36288252_int128, 264385836_int128, &
1652411475_int128, 8996462475_int128, &
43183019880_int128, 184509266760_int128, &
707285522580_int128, 2448296039700_int128, &
7694644696200_int128, 22057981462440_int128, &
57902201338905_int128, 139646485582065_int128, &
310325523515700_int128, 636983969321700_int128, &
1210269541711230_int128, 2132379668729310_int128, &
3489348548829780_int128, 5309878226480100_int128, &
7522327487513475_int128, 9929472283517787_int128, &
12220888964329584_int128, 14031391033119152_int128, &
15033633249770520_int128, 1653_int128, &
30856_int128, 424270_int128, &
4582116_int128, 40475358_int128, &
300674088_int128, 1916797311_int128, &
10648873950_int128, 52179482355_int128, &
227692286640_int128, 891794789340_int128, &
3155581562280_int128, 10142940735900_int128, &
29752626158640_int128, 79960182801345_int128, &
197548686920970_int128, 449972009097765_int128, &
947309492837400_int128, 1847253511032930_int128, &
3342649210440540_int128, 5621728217559090_int128, &
8799226775309880_int128, 12832205713993575_int128, &
17451799771031262_int128, 22150361247847371_int128, &
26252279997448736_int128, 29065024282889672_int128, &
30067266499541040_int128, 1711_int128, &
32509_int128, 455126_int128, &
5006386_int128, 45057474_int128, &
341149446_int128, 2217471399_int128, &
12565671261_int128, 62828356305_int128, &
279871768995_int128, 1119487075980_int128, &
4047376351620_int128, 13298522298180_int128, &
39895566894540_int128, 109712808959985_int128, &
277508869722315_int128, 647520696018735_int128, &
1397281501935165_int128, 2794563003870330_int128, &
5189902721473470_int128, 8964377427999630_int128, &
14420954992868970_int128, 21631432489303455_int128, &
30284005485024837_int128, 39602161018878633_int128, &
48402641245296107_int128, 55317304280338408_int128, &
59132290782430712_int128, 1770_int128, &
34220_int128, 487635_int128, &
5461512_int128, 50063860_int128, &
386206920_int128, 2558620845_int128, &
14783142660_int128, 75394027566_int128, &
342700125300_int128, 1399358844975_int128, &
5166863427600_int128, 17345898649800_int128, &
53194089192720_int128, 149608375854525_int128, &
387221678682300_int128, 925029565741050_int128, &
2044802197953900_int128, 4191844505805495_int128, &
7984465725343800_int128, 14154280149473100_int128, &
23385332420868600_int128, 36052387482172425_int128, &
51915437974328292_int128, 69886166503903470_int128, &
88004802264174740_int128, 103719945525634515_int128, &
114449595062769120_int128, 118264581564861424_int128, &
1830_int128, 35990_int128, &
521855_int128, 5949147_int128, &
55525372_int128, 436270780_int128, &
2944827765_int128, 17341763505_int128, &
90177170226_int128, 418094152866_int128, &
1742058970275_int128, 6566222272575_int128, &
22512762077400_int128, 70539987842520_int128, &
202802465047245_int128, 536830054536825_int128, &
1312251244423350_int128, 2969831763694950_int128, &
6236646703759395_int128, 12176310231149295_int128, &
22138745874816900_int128, 37539612570341700_int128, &
59437719903041025_int128, 87967825456500717_int128, &
121801604478231762_int128, 157890968768078210_int128, &
191724747789809255_int128, 218169540588403635_int128, &
232714176627630544_int128, 1891_int128, &
37820_int128, 557845_int128, &
6471002_int128, 61474519_int128, &
491796152_int128, 3381098545_int128, &
20286591270_int128, 107518933731_int128, &
508271323092_int128, 2160153123141_int128, &
8308281242850_int128, 29078984349975_int128, &
93052749919920_int128, 273342452889765_int128, &
739632519584070_int128, 1849081298960175_int128, &
4282083008118300_int128, 9206478467454345_int128, &
18412956934908690_int128, 34315056105966195_int128, &
59678358445158600_int128, 96977332473382725_int128, &
147405545359541742_int128, 209769429934732479_int128, &
279692573246309972_int128, 349615716557887465_int128, &
409894288378212890_int128, 450883717216034179_int128, &
465428353255261088_int128, 1953_int128, &
39711_int128, 595665_int128, &
7028847_int128, 67945521_int128, &
553270671_int128, 3872894697_int128, &
23667689815_int128, 127805525001_int128, &
615790256823_int128, 2668424446233_int128, &
10468434365991_int128, 37387265592825_int128, &
122131734269895_int128, 366395202809685_int128, &
1012974972473835_int128, 2588713818544245_int128, &
6131164307078475_int128, 13488561475572645_int128, &
27619435402363035_int128, 52728013040874885_int128, &
93993414551124795_int128, 156655690918541325_int128, &
244382877832924467_int128, 357174975294274221_int128, &
489462003181042451_int128, 629308289804197437_int128, &
759510004936100355_int128, 860778005594247069_int128, &
916312070471295267_int128, 2016_int128, &
41664_int128, 635376_int128, &
7624512_int128, 74974368_int128, &
621216192_int128, 4426165368_int128, &
27540584512_int128, 151473214816_int128, &
743595781824_int128, 3284214703056_int128, &
13136858812224_int128, 47855699958816_int128, &
159518999862720_int128, 488526937079580_int128, &
1379370175283520_int128, 3601688791018080_int128, &
8719878125622720_int128, 19619725782651120_int128, &
41107996877935680_int128, 80347448443237920_int128, &
146721427591999680_int128, 250649105469666120_int128, &
401038568751465792_int128, 601557853127198688_int128, &
846636978475316672_int128, 1118770292985239888_int128, &
1388818294740297792_int128, 1620288010530347424_int128, &
1777090076065542336_int128, 1832624140942590534_int128, &
2080_int128, 43680_int128, &
677040_int128, 8259888_int128, &
82598880_int128, 696190560_int128, &
5047381560_int128, 31966749880_int128, &
179013799328_int128, 895068996640_int128, &
4027810484880_int128, 16421073515280_int128, &
60992558771040_int128, 207374699821536_int128, &
648045936942300_int128, 1867897112363100_int128, &
4981058966301600_int128, 12321566916640800_int128, &
28339603908273840_int128, 60727722660586800_int128, &
121455445321173600_int128, 227068876035237600_int128, &
397370533061665800_int128, 651687674221131912_int128, &
1002596421878664480_int128, 1448194831602515360_int128, &
1965407271460556560_int128, 2507588587725537680_int128, &
3009106305270645216_int128, 3397378086595889760_int128, &
3609714217008132870_int128, 2145_int128, &
45760_int128, 720720_int128, &
8936928_int128, 90858768_int128, &
778789440_int128, 5743572120_int128, &
37014131440_int128, 210980549208_int128, &
1074082795968_int128, 4922879481520_int128, &
20448884000160_int128, 77413632286320_int128, &
268367258592576_int128, 855420636763836_int128, &
2515943049305400_int128, 6848956078664700_int128, &
17302625882942400_int128, 40661170824914640_int128, &
89067326568860640_int128, 182183167981760400_int128, &
348524321356411200_int128, 624439409096903400_int128, &
1049058207282797712_int128, 1654284096099796392_int128, &
2450791253481179840_int128, 3413602103063071920_int128, &
4472995859186094240_int128, 5516694892996182896_int128, &
6406484391866534976_int128, 7007092303604022630_int128, &
7219428434016265740_int128, 2211_int128, &
47905_int128, 766480_int128, &
9657648_int128, 99795696_int128, &
869648208_int128, 6522361560_int128, &
42757703560_int128, 247994680648_int128, &
1285063345176_int128, 5996962277488_int128, &
25371763481680_int128, 97862516286480_int128, &
345780890878896_int128, 1123787895356412_int128, &
3371363686069236_int128, 9364899127970100_int128, &
24151581961607100_int128, 57963796707857040_int128, &
129728497393775280_int128, 271250494550621040_int128, &
530707489338171600_int128, 972963730453314600_int128, &
1673497616379701112_int128, 2703342303382594104_int128, &
4105075349580976232_int128, 5864393356544251760_int128, &
7886597962249166160_int128, 9989690752182277136_int128, &
11923179284862717872_int128, 13413576695470557606_int128, &
14226520737620288370_int128, 2278_int128, &
50116_int128, 814385_int128, &
10424128_int128, 109453344_int128, &
969443904_int128, 7392009768_int128, &
49280065120_int128, 290752384208_int128, &
1533058025824_int128, 7282025622664_int128, &
31368725759168_int128, 123234279768160_int128, &
443643407165376_int128, 1469568786235308_int128, &
4495151581425648_int128, 12736262814039336_int128, &
33516481089577200_int128, 82115378669464140_int128, &
187692294101632320_int128, 400978991944396320_int128, &
801957983888792640_int128, 1503671219791486200_int128, &
2646461346833015712_int128, 4376839919762295216_int128, &
6808417652963570336_int128, 9969468706125227992_int128, &
13750991318793417920_int128, 17876288714431443296_int128, &
21912870037044995008_int128, 25336755980333275478_int128, &
27640097433090845976_int128, 28453041475240576740_int128, &
2346_int128, 52394_int128, &
864501_int128, 11238513_int128, &
119877472_int128, 1078897248_int128, &
8361453672_int128, 56672074888_int128, &
340032449328_int128, 1823810410032_int128, &
8815083648488_int128, 38650751381832_int128, &
154603005527328_int128, 566877686933536_int128, &
1913212193400684_int128, 5964720367660956_int128, &
17231414395464984_int128, 46252743903616536_int128, &
115631859759041340_int128, 269807672771096460_int128, &
588671286046028640_int128, 1202936975833188960_int128, &
2305629203680278840_int128, 4150132566624501912_int128, &
7023301266595310928_int128, 11185257572725865552_int128, &
16777886359088798328_int128, 23720460024918645912_int128, &
31627280033224861216_int128, 39789158751476438304_int128, &
47249626017378270486_int128, 52976853413424121454_int128, &
56093138908331422716_int128, 2415_int128, &
54740_int128, 916895_int128, &
12103014_int128, 131115985_int128, &
1198774720_int128, 9440350920_int128, &
65033528560_int128, 396704524216_int128, &
2163842859360_int128, 10638894058520_int128, &
47465835030320_int128, 193253756909160_int128, &
721480692460864_int128, 2480089880334220_int128, &
7877932561061640_int128, 23196134763125940_int128, &
63484158299081520_int128, 161884603662657876_int128, &
385439532530137800_int128, 858478958817125100_int128, &
1791608261879217600_int128, 3508566179513467800_int128, &
6455761770304780752_int128, 11173433833219812840_int128, &
18208558839321176480_int128, 27963143931814663880_int128, &
40498346384007444240_int128, 55347740058143507128_int128, &
71416438784701299520_int128, 87038784768854708790_int128, &
100226479430802391940_int128, 109069992321755544170_int128, &
112186277816662845432_int128, 2485_int128, &
57155_int128, 971635_int128, &
13019909_int128, 143218999_int128, &
1329890705_int128, 10639125640_int128, &
74473879480_int128, 461738052776_int128, &
2560547383576_int128, 12802736917880_int128, &
58104729088840_int128, 240719591939480_int128, &
914734449370024_int128, 3201570572795084_int128, &
10358022441395860_int128, 31074067324187580_int128, &
86680293062207460_int128, 225368761961739396_int128, &
547324136192795676_int128, 1243918491347262900_int128, &
2650087220696342700_int128, 5300174441392685400_int128, &
9964327949818248552_int128, 17629195603524593592_int128, &
29381992672540989320_int128, 46171702771135840360_int128, &
68461490315822108120_int128, 95846086442150951368_int128, &
126764178842844806648_int128, 158455223553556008310_int128, &
187265264199657100730_int128, 209296471752557936110_int128, &
221256270138418389602_int128, 2556_int128, &
59640_int128, 1028790_int128, &
13991544_int128, 156238908_int128, &
1473109704_int128, 11969016345_int128, &
85113005120_int128, 536211932256_int128, &
3022285436352_int128, 15363284301456_int128, &
70907466006720_int128, 298824321028320_int128, &
1155454041309504_int128, 4116305022165108_int128, &
13559593014190944_int128, 41432089765583440_int128, &
117754360386395040_int128, 312049055023946856_int128, &
772692898154535072_int128, 1791242627540058576_int128, &
3894005712043605600_int128, 7950261662089028100_int128, &
15264502391210933952_int128, 27593523553342842144_int128, &
47011188276065582912_int128, 75553695443676829680_int128, &
114633193086957948480_int128, 164307576757973059488_int128, &
222610265284995758016_int128, 285219402396400814958_int128, &
345720487753213109040_int128, 396561735952215036840_int128, &
430552741890976325712_int128, 442512540276836779204_int128, &
2628_int128, 62196_int128, &
1088430_int128, 15020334_int128, &
170230452_int128, 1629348612_int128, &
13442126049_int128, 97082021465_int128, &
621324937376_int128, 3558497368608_int128, &
18385569737808_int128, 86270750308176_int128, &
369731787035040_int128, 1454278362337824_int128, &
5271759063474612_int128, 17675898036356052_int128, &
54991682779774384_int128, 159186450151978480_int128, &
429803415410341896_int128, 1084741953178481928_int128, &
2563935525694593648_int128, 5685248339583664176_int128, &
11844267374132633700_int128, 23214764053299962052_int128, &
42858025944553776096_int128, 74604711829408425056_int128, &
122564883719742412592_int128, 190186888530634778160_int128, &
278940769844931007968_int128, 386917842042968817504_int128, &
507829667681396572974_int128, 630939890149613923998_int128, &
742282223705428145880_int128, 827114477843191362552_int128, &
873065282167813104916_int128, 2701_int128, &
64824_int128, 1150626_int128, &
16108764_int128, 185250786_int128, &
1799579064_int128, 15071474661_int128, &
110524147514_int128, 718406958841_int128, &
4179822305984_int128, 21944067106416_int128, &
104656320045984_int128, 456002537343216_int128, &
1824010149372864_int128, 6726037425812436_int128, &
22947657099830664_int128, 72667580816130436_int128, &
214178132931752864_int128, 588989865562320376_int128, &
1514545368588823824_int128, 3648677478873075576_int128, &
8249183865278257824_int128, 17529515713716297876_int128, &
35059031427432595752_int128, 66072789997853738148_int128, &
117462737773962201152_int128, 197169595549150837648_int128, &
312751772250377190752_int128, 469127658375565786128_int128, &
665858611887899825472_int128, 894747509724365390478_int128, &
1138769557831010496972_int128, 1373222113855042069878_int128, &
1569396701548619508432_int128, 1700179760011004467468_int128, &
1746130564335626209832_int128, 2775_int128, &
67525_int128, 1215450_int128, &
17259390_int128, 201359550_int128, &
1984829850_int128, 16871053725_int128, &
125595622175_int128, 828931106355_int128, &
4898229264825_int128, 26123889412400_int128, &
126600387152400_int128, 560658857389200_int128, &
2280012686716080_int128, 8550047575185300_int128, &
29673694525643100_int128, 95615237915961100_int128, &
286845713747883300_int128, 803167998494073240_int128, &
2103535234151144200_int128, 5163222847461899400_int128, &
11897861344151333400_int128, 25778699578994555700_int128, &
52588547141148893628_int128, 101131821425286333900_int128, &
183535527771815939300_int128, 314632333323113038800_int128, &
509921367799528028400_int128, 781879430625942976880_int128, &
1134986270263465611600_int128, 1560606121612265215950_int128, &
2033517067555375887450_int128, 2511991671686052566850_int128, &
2942618815403661578310_int128, 3269576461559623975900_int128, &
3446310324346630677300_int128, 2850_int128, &
70300_int128, 1282975_int128, &
18474840_int128, 218618940_int128, &
2186189400_int128, 18855883575_int128, &
142466675900_int128, 954526728530_int128, &
5727160371180_int128, 31022118677225_int128, &
152724276564800_int128, 687259244541600_int128, &
2840671544105280_int128, 10830060261901380_int128, &
38223742100828400_int128, 125288932441604200_int128, &
382460951663844400_int128, 1090013712241956540_int128, &
2906703232645217440_int128, 7266758081613043600_int128, &
17061084191613232800_int128, 37676560923145889100_int128, &
78367246720143449328_int128, 153720368566435227528_int128, &
284667349197102273200_int128, 498167861094928978100_int128, &
824553701122641067200_int128, 1291800798425471005280_int128, &
1916865700889408588480_int128, 2695592391875730827550_int128, &
3594123189167641103400_int128, 4545508739241428454300_int128, &
5454610487089714145160_int128, 6212195276963285554210_int128, &
6715886785906254653200_int128, 6892620648693261354600_int128, &
2926_int128, 73150_int128, &
1353275_int128, 19757815_int128, &
237093780_int128, 2404808340_int128, &
21042072975_int128, 161322559475_int128, &
1096993404430_int128, 6681687099710_int128, &
36749279048405_int128, 183746395242025_int128, &
839983521106400_int128, 3527930788646880_int128, &
13670731806006660_int128, 49053802362729780_int128, &
163512674542432600_int128, 507749884105448600_int128, &
1472474663905800940_int128, 3996716944887173980_int128, &
10173461314258261040_int128, 24327842273226276400_int128, &
54737645114759121900_int128, 116043807643289338428_int128, &
232087615286578676856_int128, 438387717763537500728_int128, &
782835210292031251300_int128, 1322721562217570045300_int128, &
2116354499548112072480_int128, 3208666499314879593760_int128, &
4612458092765139416030_int128, 6289715581043371930950_int128, &
8139631928409069557700_int128, 10000119226331142599460_int128, &
11666805764052999699370_int128, 12928082062869540207410_int128, &
13608507434599516007800_int128, 3003_int128, &
76076_int128, 1426425_int128, &
21111090_int128, 256851595_int128, &
2641902120_int128, 23446881315_int128, &
182364632450_int128, 1258315963905_int128, &
7778680504140_int128, 43430966148115_int128, &
220495674290430_int128, 1023729916348425_int128, &
4367914309753280_int128, 17198662594653540_int128, &
62724534168736440_int128, 212566476905162380_int128, &
671262558647881200_int128, 1980224548011249540_int128, &
5469191608792974920_int128, 14170178259145435020_int128, &
34501303587484537440_int128, 79065487387985398300_int128, &
170781452758048460328_int128, 348131422929868015284_int128, &
670475333050116177584_int128, 1221222928055568752028_int128, &
2105556772509601296600_int128, 3439076061765682117780_int128, &
5325020998862991666240_int128, 7821124592080019009790_int128, &
10902173673808511346980_int128, 14429347509452441488650_int128, &
18139751154740212157160_int128, 21666924990384142298830_int128, &
24594887826922539906780_int128, 26536589497469056215210_int128, &
27217014869199032015600_int128, 3081_int128, &
79079_int128, 1502501_int128, &
22537515_int128, 277962685_int128, &
2898753715_int128, 26088783435_int128, &
205811513765_int128, 1440680596355_int128, &
9036996468045_int128, 51209646652255_int128, &
263926640438545_int128, 1244225590638855_int128, &
5391644226101705_int128, 21566576904406820_int128, &
79923196763389980_int128, 275291011073898820_int128, &
883829035553043580_int128, 2651487106659130740_int128, &
7449416156804224460_int128, 19639369867938409940_int128, &
48671481846629972460_int128, 113566790975469935740_int128, &
249846940146033858628_int128, 518912875687916475612_int128, &
1018606755979984192868_int128, 1891698261105684929612_int128, &
3326779700565170048628_int128, 5544632834275283414380_int128, &
8764097060628673784020_int128, 13146145590943010676030_int128, &
18723298265888530356770_int128, 25331521183260952835630_int128, &
32569098664192653645810_int128, 39806676145124354455990_int128, &
46261812817306682205610_int128, 51131477324391596121990_int128, &
53753604366668088230810_int128, 3160_int128, &
82160_int128, 1581580_int128, &
24040016_int128, 300500200_int128, &
3176716400_int128, 28987537150_int128, &
231900297200_int128, 1646492110120_int128, &
10477677064400_int128, 60246643120300_int128, &
315136287090800_int128, 1508152231077400_int128, &
6635869816740560_int128, 26958221130508525_int128, &
101489773667796800_int128, 355214207837288800_int128, &
1159120046626942400_int128, 3535316142212174320_int128, &
10100903263463355200_int128, 27088786024742634400_int128, &
68310851714568382400_int128, 162238272822099908200_int128, &
363413731121503794368_int128, 768759815833950334240_int128, &
1537519631667900668480_int128, 2910305017085669122480_int128, &
5218477961670854978240_int128, 8871412534840453463008_int128, &
14308729894903957198400_int128, 21910242651571684460050_int128, &
31869443856831541032800_int128, 44054819449149483192400_int128, &
57900619847453606481440_int128, 72375774809317008101800_int128, &
86068488962431036661600_int128, 97393290141698278327600_int128, &
104885081691059684352800_int128, 107507208733336176461620_int128, &
3240_int128, 85320_int128, &
1663740_int128, 25621596_int128, &
324540216_int128, 3477216600_int128, &
32164253550_int128, 260887834350_int128, &
1878392407320_int128, 12124169174520_int128, &
70724320184700_int128, 375382930211100_int128, &
1823288518168200_int128, 8144022047817960_int128, &
33594090947249085_int128, 128447994798305325_int128, &
456703981505085600_int128, 1514334254464231200_int128, &
4694436188839116720_int128, 13636219405675529520_int128, &
37189689288205989600_int128, 95399637739311016800_int128, &
230549124536668290600_int128, 525652003943603702568_int128, &
1132173546955454128608_int128, 2306279447501851002720_int128, &
4447824648753569790960_int128, 8128782978756524100720_int128, &
14089890496511308441248_int128, 23180142429744410661408_int128, &
36218972546475641658450_int128, 53779686508403225492850_int128, &
75924263305981024225200_int128, 101955439296603089673840_int128, &
130276394656770614583240_int128, 158444263771748044763400_int128, &
183461779104129314989200_int128, 202278371832757962680400_int128, &
212392290424395860814420_int128, 3321_int128, &
88560_int128, 1749060_int128, &
27285336_int128, 350161812_int128, &
3801756816_int128, 35641470150_int128, &
293052087900_int128, 2139280241670_int128, &
14002561581840_int128, 82848489359220_int128, &
446107250395800_int128, 2198671448379300_int128, &
9967310565986160_int128, 41738112995067045_int128, &
162042085745554410_int128, 585151976303390925_int128, &
1971038235969316800_int128, 6208770443303347920_int128, &
18330655594514646240_int128, 50825908693881519120_int128, &
132589327027517006400_int128, 325948762275979307400_int128, &
756201128480271993168_int128, 1657825550899057831176_int128, &
3438452994457305131328_int128, 6754104096255420793680_int128, &
12576607627510093891680_int128, 22218673475267832541968_int128, &
37270032926255719102656_int128, 59399114976220052319858_int128, &
89998659054878867151300_int128, 129703949814384249718050_int128, &
177879702602584113899040_int128, 232231833953373704257080_int128, &
288720658428518659346640_int128, 341906042875877359752600_int128, &
385740150936887277669600_int128, 414670662257153823494820_int128, &
424784580848791721628840_int128, 3403_int128, &
91881_int128, 1837620_int128, &
29034396_int128, 377447148_int128, &
4151918628_int128, 39443226966_int128, &
328693558050_int128, 2432332329570_int128, &
16141841823510_int128, 96851050941060_int128, &
528955739755020_int128, 2644778698775100_int128, &
12165982014365460_int128, 51705423561053205_int128, &
203780198740621455_int128, 747194062048945335_int128, &
2556190212272707725_int128, 8179808679272664720_int128, &
24539426037817994160_int128, 69156564288396165360_int128, &
183415235721398525520_int128, 458538089303496313800_int128, &
1082149890756251300568_int128, 2414026679379329824344_int128, &
5096278545356362962504_int128, 10192557090712725925008_int128, &
19330711723765514685360_int128, 34795281102777926433648_int128, &
59488706401523551644624_int128, 96669147902475771422514_int128, &
149397774031098919471158_int128, 219702608869263116869350_int128, &
307583652416968363617090_int128, 410111536555957818156120_int128, &
520952492381892363603720_int128, 630626701304396019099240_int128, &
727646193812764637422200_int128, 800410813194041101164420_int128, &
839455243105945545123660_int128, 3486_int128, &
95284_int128, 1929501_int128, &
30872016_int128, 406481544_int128, &
4529365776_int128, 43595145594_int128, &
368136785016_int128, 2761025887620_int128, &
18574174153080_int128, 112992892764570_int128, &
625806790696080_int128, 3173734438530120_int128, &
14810760713140560_int128, 63871405575418665_int128, &
255485622301674660_int128, 950974260789566790_int128, &
3303384274321653060_int128, 10735998891545372445_int128, &
32719234717090658880_int128, 93695990326214159520_int128, &
252571800009794690880_int128, 641953325024894839320_int128, &
1540687980059747614368_int128, 3496176570135581124912_int128, &
7510305224735692786848_int128, 15288835636069088887512_int128, &
29523268814478240610368_int128, 54125992826543441119008_int128, &
94283987504301478078272_int128, 156157854303999323067138_int128, &
246066921933574690893672_int128, 369100382900362036340508_int128, &
527286261286231480486440_int128, 717695188972926181773210_int128, &
931064028937850181759840_int128, 1151579193686288382702960_int128, &
1358272895117160656521440_int128, 1528057007006805738586620_int128, &
1639866056299986646288080_int128, 1678910486211891090247320_int128, &
3570_int128, 98770_int128, &
2024785_int128, 32801517_int128, &
437353560_int128, 4935847320_int128, &
48124511370_int128, 411731930610_int128, &
3129162672636_int128, 21335200040700_int128, &
131567066917650_int128, 738799683460650_int128, &
3799541229226200_int128, 17984495151670680_int128, &
78682166288559225_int128, 319357027877093325_int128, &
1206459883091241450_int128, 4254358535111219850_int128, &
14039383165867025505_int128, 43455233608636031325_int128, &
126415225043304818400_int128, 346267790336008850400_int128, &
894525125034689530200_int128, 2182641305084642453688_int128, &
5036864550195328739280_int128, 11006481794871273911760_int128, &
22799140860804781674360_int128, 44812104450547329497880_int128, &
83649261641021681729376_int128, 148409980330844919197280_int128, &
250441841808300801145410_int128, 402224776237574013960810_int128, &
615167304833936727234180_int128, 896386644186593516826948_int128, &
1244981450259157662259650_int128, 1648759217910776363533050_int128, &
2082643222624138564462800_int128, 2509852088803449039224400_int128, &
2886329902123966395108060_int128, 3167923063306792384874700_int128, &
3318776542511877736535400_int128, 3655_int128, &
102340_int128, 2123555_int128, &
34826302_int128, 470155077_int128, &
5373200880_int128, 53060358690_int128, &
459856441980_int128, 3540894603246_int128, &
24464362713336_int128, 152902266958350_int128, &
870366750378300_int128, 4538340912686850_int128, &
21784036380896880_int128, 96666661440229905_int128, &
398039194165652550_int128, 1525816910968334775_int128, &
5460818418202461300_int128, 18293741700978245355_int128, &
57494616774503056830_int128, 169870458651940849725_int128, &
472683015379313668800_int128, 1240792915370698380600_int128, &
3077166430119331983888_int128, 7219505855279971192968_int128, &
16043346345066602651040_int128, 33805622655676055586120_int128, &
67611245311352111172240_int128, 128461366091569011227256_int128, &
232059241971866600926656_int128, 398851822139145720342690_int128, &
652666618045874815106220_int128, 1017392081071510741194990_int128, &
1511553949020530244061128_int128, 2141368094445751179086598_int128, &
2893740668169934025792700_int128, 3731402440534914927995850_int128, &
4592495311427587603687200_int128, 5396181990927415434332460_int128, &
6054252965430758779982760_int128, 6486699605818670121410100_int128, &
6637553085023755473070800_int128, 3741_int128, &
105995_int128, 2225895_int128, &
36949857_int128, 504981379_int128, &
5843355957_int128, 58433559570_int128, &
512916800670_int128, 4000751045226_int128, &
28005257316582_int128, 177366629671686_int128, &
1023269017336650_int128, 5408707663065150_int128, &
26322377293583730_int128, 118450697821126785_int128, &
494705855605882455_int128, 1923856105133987325_int128, &
6986635329170796075_int128, 23754560119180706655_int128, &
75788358475481302185_int128, 227365075426443906555_int128, &
642553474031254518525_int128, 1713475930750012049400_int128, &
4317959345490030364488_int128, 10296672285399303176856_int128, &
23262852200346573844008_int128, 49848969000742658237160_int128, &
101416867967028166758360_int128, 196072611402921122399496_int128, &
360520608063435612153912_int128, 630911064111012321269346_int128, &
1051518440185020535448910_int128, 1670058699117385556301210_int128, &
2528946030092040985256118_int128, 3652922043466281423147726_int128, &
5035108762615685204879298_int128, 6625143108704848953788550_int128, &
8323897751962502531683050_int128, 9988677302355003038019660_int128, &
11450434956358174214315220_int128, 12540952571249428901392860_int128, &
13124252690842425594480900_int128, 3828_int128, &
109736_int128, 2331890_int128, &
39175752_int128, 541931236_int128, &
6348337336_int128, 64276915527_int128, &
571350360240_int128, 4513667845896_int128, &
32006008361808_int128, 205371886988268_int128, &
1200635647008336_int128, 6431976680401800_int128, &
31731084956648880_int128, 144773075114710515_int128, &
613156553427009240_int128, 2418561960739869780_int128, &
8910491434304783400_int128, 30741195448351502730_int128, &
99542918594662008840_int128, 303153433901925208740_int128, &
869918549457698425080_int128, 2356029404781266567925_int128, &
6031435276240042413888_int128, 14614631630889333541344_int128, &
33559524485745877020864_int128, 73111821201089232081168_int128, &
151265836967770824995520_int128, 297489479369949289157856_int128, &
556593219466356734553408_int128, 991431672174447933423258_int128, &
1682429504296032856718256_int128, 2721577139302406091750120_int128, &
4199004729209426541557328_int128, 6181868073558322408403844_int128, &
8688030806081966628027024_int128, 11660251871320534158667848_int128, &
14949040860667351485471600_int128, 18312575054317505569702710_int128, &
21439112258713177252334880_int128, 23991387527607603115708080_int128, &
25665205262091854495873760_int128, 26248505381684851188961800_int128, &
3916_int128, 113564_int128, &
2441626_int128, 41507642_int128, &
581106988_int128, 6890268572_int128, &
70625252863_int128, 635627275767_int128, &
5085018206136_int128, 36519676207704_int128, &
237377895350076_int128, 1406007533996604_int128, &
7632612327410136_int128, 38163061637050680_int128, &
176504160071359395_int128, 757929628541719755_int128, &
3031718514166879020_int128, 11329053395044653180_int128, &
39651686882656286130_int128, 130284114043013511570_int128, &
402696352496587217580_int128, 1173071983359623633820_int128, &
3225947954238964993005_int128, 8387464681021308981813_int128, &
20646066907129375955232_int128, 48174156116635210562208_int128, &
106671345686835109102032_int128, 224377658168860057076688_int128, &
448755316337720114153376_int128, 854082698836306023711264_int128, &
1548024891640804667976666_int128, 2673861176470480790141514_int128, &
4404006643598438948468376_int128, 6920581868511832633307448_int128, &
10380872802767748949961172_int128, 14869898879640289036430868_int128, &
20348282677402500786694872_int128, 26609292731987885644139448_int128, &
33261615914984857055174310_int128, 39751687313030682822037590_int128, &
45430499786320780368042960_int128, 49656592789699457611581840_int128, &
51913710643776705684835560_int128, 4005_int128, &
117480_int128, 2555190_int128, &
43949268_int128, 622614630_int128, &
7471375560_int128, 77515521435_int128, &
706252528630_int128, 5720645481903_int128, &
41604694413840_int128, 273897571557780_int128, &
1643385429346680_int128, 9038619861406740_int128, &
45795673964460816_int128, 214667221708410075_int128, &
934433788613079150_int128, 3789648142708598775_int128, &
14360771909211532200_int128, 50980740277700939310_int128, &
169935800925669797700_int128, 532980466539600729150_int128, &
1575768335856210851400_int128, 4399019937598588626825_int128, &
11613412635260273974818_int128, 29033531588150684937045_int128, &
68820223023764586517440_int128, 154845501803470319664240_int128, &
331049003855695166178720_int128, 673132974506580171230064_int128, &
1302838015174026137864640_int128, 2402107590477110691687930_int128, &
4221886068111285458118180_int128, 7077867820068919738609890_int128, &
11324588512110271581775824_int128, 17301454671279581583268620_int128, &
25250771682408037986392040_int128, 35218181557042789823125740_int128, &
46957575409390386430834320_int128, 59870908646972742699313758_int128, &
73013303228015539877211900_int128, 85182187099351463190080550_int128, &
95087092576020237979624800_int128, 101570303433476163296417400_int128, &
103827421287553411369671120_int128, 4095_int128, &
121485_int128, 2672670_int128, &
46504458_int128, 666563898_int128, &
8093990190_int128, 84986896995_int128, &
783768050065_int128, 6426898010533_int128, &
47325339895743_int128, 315502265971620_int128, &
1917283000904460_int128, 10682005290753420_int128, &
54834293825867556_int128, 260462895672870891_int128, &
1149101010321489225_int128, 4724081931321677925_int128, &
18150420051920130975_int128, 65341512186912471510_int128, &
220916541203370737010_int128, 702916267465270526850_int128, &
2108748802395811580550_int128, 5974788273454799478225_int128, &
16012432572858862601643_int128, 40646944223410958911863_int128, &
97853754611915271454485_int128, 223665724827234906181680_int128, &
485894505659165485842960_int128, 1004181978362275337408784_int128, &
1975970989680606309094704_int128, 3704945605651136829552570_int128, &
6623993658588396149806110_int128, 11299753888180205196728070_int128, &
18402456332179191320385714_int128, 28626043183389853165044444_int128, &
42552226353687619569660660_int128, 60468953239450827809517780_int128, &
82175756966433176253960060_int128, 106828484056363129130148078_int128, &
132884211874988282576525658_int128, 158195490327367003067292450_int128, &
180269279675371701169705350_int128, 196657396009496401276042200_int128, &
205397724721029574666088520_int128, 4186_int128, &
125580_int128, 2794155_int128, &
49177128_int128, 713068356_int128, &
8760554088_int128, 93080887185_int128, &
868754947060_int128, 7210666060598_int128, &
53752237906276_int128, 362827605867363_int128, &
2232785266876080_int128, 12599288291657880_int128, &
65516299116620976_int128, 315297189498738447_int128, &
1409563905994360116_int128, 5873182941643167150_int128, &
22874501983241808900_int128, 83491932238832602485_int128, &
286258053390283208520_int128, 923832808668641263860_int128, &
2811665069861082107400_int128, 8083537075850611058775_int128, &
21987220846313662079868_int128, 56659376796269821513506_int128, &
138500698835326230366348_int128, 321519479439150177636165_int128, &
709560230486400392024640_int128, 1490076484021440823251744_int128, &
2980152968042881646503488_int128, 5680916595331743138647274_int128, &
10328939264239532979358680_int128, 17923747546768601346534180_int128, &
29702210220359396517113784_int128, 47028499515569044485430158_int128, &
71178269537077472734705104_int128, 103021179593138447379178440_int128, &
142644710205884004063477840_int128, 189004241022796305384108138_int128, &
239712695931351411706673736_int128, 291079702202355285643818108_int128, &
338464770002738704236997800_int128, 376926675684868102445747550_int128, &
402055120730525975942130720_int128, 410795449442059149332177040_int128, &
4278_int128, 129766_int128, &
2919735_int128, 51971283_int128, &
762245484_int128, 9473622444_int128, &
101841441273_int128, 961835834245_int128, &
8079421007658_int128, 60962903966874_int128, &
416579843773639_int128, 2595612872743443_int128, &
14832073558533960_int128, 78115587408278856_int128, &
380813488615359423_int128, 1724861095493098563_int128, &
7282746847637527266_int128, 28747684924884976050_int128, &
106366434222074411385_int128, 369749985629115811005_int128, &
1210090862058924472380_int128, 3735497878529723371260_int128, &
10895202145711693166175_int128, 30070757922164273138643_int128, &
78646597642583483593374_int128, 195160075631596051879854_int128, &
460020178274476408002513_int128, 1031079709925550569660805_int128, &
2199636714507841215276384_int128, 4470229452064322469755232_int128, &
8661069563374624785150762_int128, 16009855859571276118005954_int128, &
28252686811008134325892860_int128, 47625957767127997863647964_int128, &
76730709735928441002543942_int128, 118206769052646517220135262_int128, &
174199449130215920113883544_int128, 245665889799022451442656280_int128, &
331648951228680309447585978_int128, 428716936954147717090781874_int128, &
530792398133706697350491844_int128, 629544472205093989880815908_int128, &
715391445687606806682745350_int128, 778981796415394078387878270_int128, &
812850570172585125274307760_int128, 4371_int128, &
134044_int128, 3049501_int128, &
54891018_int128, 814216767_int128, &
10235867928_int128, 111315063717_int128, &
1063677275518_int128, 9041256841903_int128, &
69042324974532_int128, 477542747740513_int128, &
3012192716517082_int128, 17427686431277403_int128, &
92947660966812816_int128, 458929076023638279_int128, &
2105674584108457986_int128, 9007607943130625829_int128, &
36030431772522503316_int128, 135114119146959387435_int128, &
476116419851190222390_int128, 1579840847688040283385_int128, &
4945588740588647843640_int128, 14630700024241416537435_int128, &
40965960067875966304818_int128, 108717355564747756732017_int128, &
273806673274179535473228_int128, 655180253906072459882367_int128, &
1491099888200026977663318_int128, 3230716424433391784937189_int128, &
6669866166572163685031616_int128, 13131299015438947254905994_int128, &
24670925422945900903156716_int128, 44262542670579410443898814_int128, &
75878644578136132189540824_int128, 124356667503056438866191906_int128, &
194937478788574958222679204_int128, 292406218182862437334018806_int128, &
419865338929238371556539824_int128, 577314841027702760890242258_int128, &
760365888182828026538367852_int128, 959509335087854414441273718_int128, &
1160336870338800687231307752_int128, 1344935917892700796563561258_int128, &
1494373242103000885070623620_int128, 1591832366587979203662186030_int128, &
1625701140345170250548615520_int128, 4465_int128, &
138415_int128, 3183545_int128, &
57940519_int128, 869107785_int128, &
11050084695_int128, 121550931645_int128, &
1174992339235_int128, 10104934117421_int128, &
78083581816435_int128, 546585072715045_int128, &
3489735464257595_int128, 20439879147794485_int128, &
110375347398090219_int128, 551876736990451095_int128, &
2564603660132096265_int128, 11113282527239083815_int128, &
45038039715653129145_int128, 171144550919481890751_int128, &
611230538998149609825_int128, 2055957267539230505775_int128, &
6525429588276688127025_int128, 19576288764830064381075_int128, &
55596660092117382842253_int128, 149683315632623723036835_int128, &
382524028838927292205245_int128, 928986927180251995355595_int128, &
2146280142106099437545685_int128, 4721816312633418762600507_int128, &
9900582591005555469968805_int128, 19801165182011110939937610_int128, &
37802224438384848158062710_int128, 68933468093525311347055530_int128, &
120141187248715542633439638_int128, 200235312081192571055732730_int128, &
319294146291631397088871110_int128, 487343696971437395556698010_int128, &
712271557112100808890558630_int128, 997180179956941132446782082_int128, &
1337680729210530787428610110_int128, 1719875223270682440979641570_int128, &
2119846205426655101672581470_int128, 2505272788231501483794869010_int128, &
2839309159995701681634184878_int128, 3086205608690980088732809650_int128, &
3217533506933149454210801550_int128, 4560_int128, &
142880_int128, 3321960_int128, &
61124064_int128, 927048304_int128, &
11919192480_int128, 132601016340_int128, &
1296543270880_int128, 11279926456656_int128, &
88188515933856_int128, 624668654531480_int128, &
4036320536972640_int128, 23929614612052080_int128, &
130815226545884704_int128, 662252084388541314_int128, &
3116480397122547360_int128, 13677886187371180080_int128, &
56151322242892212960_int128, 216182590635135019896_int128, &
782375089917631500576_int128, 2667187806537380115600_int128, &
8581386855815918632800_int128, 26101718353106752508100_int128, &
75172948856947447223328_int128, 205279975724741105879088_int128, &
532207344471551015242080_int128, 1311510956019179287560840_int128, &
3075267069286351432901280_int128, 6868096454739518200146192_int128, &
14622398903638974232569312_int128, 29701747773016666409906415_int128, &
57603389620395959098000320_int128, 106735692531910159505118240_int128, &
189074655342240853980495168_int128, 320376499329908113689172368_int128, &
519529458372823968144603840_int128, 806637843263068792645569120_int128, &
1199615254083538204447256640_int128, 1709451737069041941337340712_int128, &
2334860909167471919875392192_int128, 3057555952481213228408251680_int128, &
3839721428697337542652223040_int128, 4625118993658156585467450480_int128, &
5344581948227203165429053888_int128, 5925514768686681770366994528_int128, &
6303739115624129542943611200_int128, 6435067013866298908421603100_int128, &
4656_int128, 147440_int128, &
3464840_int128, 64446024_int128, &
988172368_int128, 12846240784_int128, &
144520208820_int128, 1429144287220_int128, &
12576469727536_int128, 99468442390512_int128, &
712857170465336_int128, 4660989191504120_int128, &
27965935149024720_int128, 154744841157936784_int128, &
793067310934426018_int128, 3778732481511088674_int128, &
16794366584493727440_int128, 69829208430263393040_int128, &
272333912878027232856_int128, 998557680552766520472_int128, &
3449562896455011616176_int128, 11248574662353298748400_int128, &
34683105208922671140900_int128, 101274667210054199731428_int128, &
280452924581688553102416_int128, 737487320196292121121168_int128, &
1843718300490730302802920_int128, 4386778025305530720462120_int128, &
9943363524025869633047472_int128, 21490495358378492432715504_int128, &
44324146676655640642475727_int128, 87305137393412625507906735_int128, &
164339082152306118603118560_int128, 295810347874151013485613408_int128, &
509451154672148967669667536_int128, 839905957702732081833776208_int128, &
1326167301635892760790172960_int128, 2006253097346606997092825760_int128, &
2909066991152580145784597352_int128, 4044312646236513861212732904_int128, &
5392416861648685148283643872_int128, 6897277381178550771060474720_int128, &
8464840422355494128119673520_int128, 9969700941885359750896504368_int128, &
11270096716913884935796048416_int128, 12229253884310811313310605728_int128, &
12738806129490428451365214300_int128, 4753_int128, &
152096_int128, 3612280_int128, &
67910864_int128, 1052618392_int128, &
13834413152_int128, 157366449604_int128, &
1573664496040_int128, 14005614014756_int128, &
112044912118048_int128, 812325612855848_int128, &
5373846361969456_int128, 32626924340528840_int128, &
182710776306961504_int128, 947812152092362802_int128, &
4571799792445514692_int128, 20573099066004816114_int128, &
86623575014757120480_int128, 342163121308290625896_int128, &
1270891593430793753328_int128, 4448120577007778136648_int128, &
14698137558808310364576_int128, 45931679871275969889300_int128, &
135957772418976870872328_int128, 381727591791742752833844_int128, &
1017940244777980674223584_int128, 2581205620687022423924088_int128, &
6230496325796261023265040_int128, 14330141549331400353509592_int128, &
31433858882404362065762976_int128, 65814642035034133075191231_int128, &
131629284070068266150382462_int128, 251644219545718744111025295_int128, &
460149430026457132088731968_int128, 805261502546299981155280944_int128, &
1349357112374881049503443744_int128, 2166073259338624842623949168_int128, &
3332420398982499757882998720_int128, 4915320088499187142877423112_int128, &
6953379637389094006997330256_int128, 9436729507885199009496376776_int128, &
12289694242827235919344118592_int128, 15362117803534044899180148240_int128, &
18434541364240853879016177888_int128, 21239797658799244686692552784_int128, &
23499350601224696249106654144_int128, 24968060013801239764675820028_int128, &
25477612258980856902730428600_int128, 4851_int128, &
156849_int128, 3764376_int128, &
71523144_int128, 1120529256_int128, &
14887031544_int128, 171200862756_int128, &
1731030945644_int128, 15579278510796_int128, &
126050526132804_int128, 924370524973896_int128, &
6186171974825304_int128, 38000770702498296_int128, &
215337700647490344_int128, 1130522928399324306_int128, &
5519611944537877494_int128, 25144898858450330806_int128, &
107196674080761936594_int128, 428786696323047746376_int128, &
1613054714739084379224_int128, 5719012170438571889976_int128, &
19146258135816088501224_int128, 60629817430084280253876_int128, &
181889452290252840761628_int128, 517685364210719623706172_int128, &
1399667836569723427057428_int128, 3599145865465003098147672_int128, &
8811701946483283447189128_int128, 20560637875127661376774632_int128, &
45764000431735762419272568_int128, 97248500917438495140954207_int128, &
197443926105102399225573693_int128, 383273503615787010261407757_int128, &
711793649572175876199757263_int128, 1265410932572757113244012912_int128, &
2154618614921181030658724688_int128, 3515430371713505892127392912_int128, &
5498493658321124600506947888_int128, 8247740487481686900760421832_int128, &
11868699725888281149874753368_int128, 16390109145274293016493707032_int128, &
21726423750712434928840495368_int128, 27651812046361280818524266832_int128, &
33796659167774898778196326128_int128, 39674339023040098565708730672_int128, &
44739148260023940935799206928_int128, 48467410615025936013782474172_int128, &
50445672272782096667406248628_int128, 4950_int128, &
161700_int128, 3921225_int128, &
75287520_int128, 1192052400_int128, &
16007560800_int128, 186087894300_int128, &
1902231808400_int128, 17310309456440_int128, &
141629804643600_int128, 1050421051106700_int128, &
7110542499799200_int128, 44186942677323600_int128, &
253338471349988640_int128, 1345860629046814650_int128, &
6650134872937201800_int128, 30664510802988208300_int128, &
132341572939212267400_int128, 535983370403809682970_int128, &
2041841411062132125600_int128, 7332066885177656269200_int128, &
24865270306254660391200_int128, 79776075565900368755100_int128, &
242519269720337121015504_int128, 699574816500972464467800_int128, &
1917353200780443050763600_int128, 4998813702034726525205100_int128, &
12410847811948286545336800_int128, 29372339821610944823963760_int128, &
66324638306863423796047200_int128, 143012501349174257560226775_int128, &
294692427022540894366527900_int128, 580717429720889409486981450_int128, &
1095067153187962886461165020_int128, 1977204582144932989443770175_int128, &
3420029547493938143902737600_int128, 5670048986634686922786117600_int128, &
9013924030034630492634340800_int128, 13746234145802811501267369720_int128, &
20116440213369968050635175200_int128, 28258808871162574166368460400_int128, &
38116532895986727945334202400_int128, 49378235797073715747364762200_int128, &
61448471214136179596720592960_int128, 73470998190814997343905056800_int128, &
84413487283064039501507937600_int128, 93206558875049876949581681100_int128, &
98913082887808032681188722800_int128, 100891344545564193334812497256_int128, &
5050_int128, 166650_int128, &
4082925_int128, 79208745_int128, &
1267339920_int128, 17199613200_int128, &
202095455100_int128, 2088319702700_int128, &
19212541264840_int128, 158940114100040_int128, &
1192050855750300_int128, 8160963550905900_int128, &
51297485177122800_int128, 297525414027312240_int128, &
1599199100396803290_int128, 7995995501984016450_int128, &
37314645675925410100_int128, 163006083742200475700_int128, &
668324943343021950370_int128, 2577824781465941808570_int128, &
9373908296239788394800_int128, 32197337191432316660400_int128, &
104641345872155029146300_int128, 322295345286237489770604_int128, &
942094086221309585483304_int128, 2616928017281415515231400_int128, &
6916166902815169575968700_int128, 17409661513983013070541900_int128, &
41783187633559231369300560_int128, 95696978128474368620010960_int128, &
209337139656037681356273975_int128, 437704928371715151926754675_int128, &
875409856743430303853509350_int128, 1675784582908852295948146470_int128, &
3072271735332895875904935195_int128, 5397234129638871133346507775_int128, &
9090078534128625066688855200_int128, 14683973016669317415420458400_int128, &
22760158175837441993901710520_int128, 33862674359172779551902544920_int128, &
48375249084532542217003635600_int128, 66375341767149302111702662800_int128, &
87494768693060443692698964600_int128, 110826707011209895344085355160_int128, &
134919469404951176940625649760_int128, 157884485473879036845412994400_int128, &
177620046158113916451089618700_int128, 192119641762857909630770403900_int128, &
199804427433372226016001220056_int128, 5151_int128, &
171700_int128, 4249575_int128, &
83291670_int128, 1346548665_int128, &
18466953120_int128, 219295068300_int128, &
2290415157800_int128, 21300860967540_int128, &
178152655364880_int128, 1350990969850340_int128, &
9353014406656200_int128, 59458448728028700_int128, &
348822899204435040_int128, 1896724514424115530_int128, &
9595194602380819740_int128, 45310641177909426550_int128, &
200320729418125885800_int128, 831331027085222426070_int128, &
3246149724808963758940_int128, 11951733077705730203370_int128, &
41571245487672105055200_int128, 136838683063587345806700_int128, &
426936691158392518916904_int128, 1264389431507547075253908_int128, &
3559022103502725100714704_int128, 9533094920096585091200100_int128, &
24325828416798182646510600_int128, 59192849147542244439842460_int128, &
137480165762033599989311520_int128, 305034117784512049976284935_int128, &
647042068027752833283028650_int128, 1313114785115145455780264025_int128, &
2551194439652282599801655820_int128, 4748056318241748171853081665_int128, &
8469505864971767009251442970_int128, 14487312663767496200035362975_int128, &
23774051550797942482109313600_int128, 37444131192506759409322168920_int128, &
56622832535010221545804255440_int128, 82237923443705321768906180520_int128, &
114750590851681844328706298400_int128, 153870110460209745804401627400_int128, &
198321475704270339036784319760_int128, 245746176416161072284711004920_int128, &
292803954878830213786038644160_int128, 335504531631992953296502613100_int128, &
369739687920971826081860022600_int128, 391924069196230135646771623956_int128, &
399608854866744452032002440112_int128, 5253_int128, &
176851_int128, 4421275_int128, &
87541245_int128, 1429840335_int128, &
19813501785_int128, 237762021420_int128, &
2509710226100_int128, 23591276125340_int128, &
199453516332420_int128, 1529143625215220_int128, &
10704005376506540_int128, 68811463134684900_int128, &
408281347932463740_int128, 2245547413628550570_int128, &
11491919116804935270_int128, 54905835780290246290_int128, &
245631370596035312350_int128, 1031651756503348311870_int128, &
4077480751894186185010_int128, 15197882802514693962310_int128, &
53522978565377835258570_int128, 178409928551259450861900_int128, &
563775374221979864723604_int128, 1691326122665939594170812_int128, &
4823411535010272175968612_int128, 13092117023599310191914804_int128, &
33858923336894767737710700_int128, 83518677564340427086353060_int128, &
196673014909575844429153980_int128, 442514283546545649965596455_int128, &
952076185812264883259313585_int128, 1960156853142898289063292675_int128, &
3864309224767428055581919845_int128, 7299250757894030771654737485_int128, &
13217562183213515181104524635_int128, 22956818528739263209286805945_int128, &
38261364214565438682144676575_int128, 61218182743304701891431482520_int128, &
94066963727516980955126424360_int128, 138860755978715543314710435960_int128, &
196988514295387166097612478920_int128, 268620701311891590133107925800_int128, &
352191586164480084841185947160_int128, 444067652120431411321495324680_int128, &
538550131294991286070749649080_int128, 628308486510823167082541257260_int128, &
705244219552964779378362635700_int128, 761663757117201961728631646556_int128, &
791532924062974587678774064068_int128, 5356_int128, &
182104_int128, 4598126_int128, &
91962520_int128, 1517381580_int128, &
21243342120_int128, 257575523205_int128, &
2747472247520_int128, 26100986351440_int128, &
223044792457760_int128, 1728597141547640_int128, &
12233149001721760_int128, 79515468511191440_int128, &
477092811067148640_int128, 2653828761561014310_int128, &
13737466530433485840_int128, 66397754897095181560_int128, &
300537206376325558640_int128, 1277283127099383624220_int128, &
5109132508397534496880_int128, 19275363554408880147320_int128, &
68720861367892529220880_int128, 231932907116637286120470_int128, &
742185302773239315585504_int128, 2255101496887919458894416_int128, &
6514737657676211770139424_int128, 17915528558609582367883416_int128, &
46951040360494077929625504_int128, 117377600901235194824063760_int128, &
280191692473916271515507040_int128, 639187298456121494394750435_int128, &
1394590469358810533224910040_int128, 2912233038955163172322606260_int128, &
5824466077910326344645212520_int128, 11163559982661458827236657330_int128, &
20516812941107545952759262120_int128, 36174380711952778390391330580_int128, &
61218182743304701891431482520_int128, 99479546957870140573576159095_int128, &
155285146470821682846557906880_int128, 232927719706232524269836860320_int128, &
335849270274102709412322914880_int128, 465609215607278756230720404720_int128, &
620812287476371674974293872960_int128, 796259238284911496162681271840_int128, &
982617783415422697392244973760_int128, 1166858617805814453153290906340_int128, &
1333552706063787946460903892960_int128, 1466907976670166741106994282256_int128, &
1553196681180176549407405710624_int128, 1583065848125949175357548128136_int128, &
5460_int128, 187460_int128, &
4780230_int128, 96560646_int128, &
1609344100_int128, 22760723700_int128, &
278818865325_int128, 3005047770725_int128, &
28848458598960_int128, 249145778809200_int128, &
1951641934005400_int128, 13961746143269400_int128, &
91748617512913200_int128, 556608279578340080_int128, &
3130921572628162950_int128, 16391295291994500150_int128, &
80135221427528667400_int128, 366934961273420740200_int128, &
1577820333475709182860_int128, 6386415635496918121100_int128, &
24384496062806414644200_int128, 87996224922301409368200_int128, &
300653768484529815341350_int128, 974118209889876601705974_int128, &
2997286799661158774479920_int128, 8769839154564131229033840_int128, &
24430266216285794138022840_int128, 64866568919103660297508920_int128, &
164328641261729272753689264_int128, 397569293375151466339570800_int128, &
919378990930037765910257475_int128, 2033777767814932027619660475_int128, &
4306823508313973705547516300_int128, 8736699116865489516967818780_int128, &
16988026060571785171881869850_int128, 31680372923769004779995919450_int128, &
56691193653060324343150592700_int128, 97392563455257480281822813100_int128, &
160697729701174842465007641615_int128, 254764693428691823420134065975_int128, &
388212866177054207116394767200_int128, 568776989980335233682159775200_int128, &
801458485881381465643043319600_int128, 1086421503083650431205014277680_int128, &
1417071525761283171136975144800_int128, 1778877021700334193554926245600_int128, &
2149476401221237150545535880100_int128, 2500411323869602399614194799300_int128, &
2800460682733954687567898175216_int128, 3020104657850343290514399992880_int128, &
3136262529306125724764953838760_int128, 5565_int128, &
192920_int128, 4967690_int128, &
101340876_int128, 1705904746_int128, &
24370067800_int128, 301579589025_int128, &
3283866636050_int128, 31853506369685_int128, &
277994237408160_int128, 2200787712814600_int128, &
15913388077274800_int128, 105710363656182600_int128, &
648356897091253280_int128, 3687529852206503030_int128, &
19522216864622663100_int128, 96526516719523167550_int128, &
447070182700949407600_int128, 1944755294749129923060_int128, &
7964235968972627303960_int128, 30770911698303332765300_int128, &
112380720985107824012400_int128, 388649993406831224709550_int128, &
1274771978374406417047324_int128, 3971405009551035376185894_int128, &
11767125954225290003513760_int128, 33200105370849925367056680_int128, &
89296835135389454435531760_int128, 229195210180832933051198184_int128, &
561897934636880739093260064_int128, 1316948284305189232249828275_int128, &
2953156758744969793529917950_int128, 6340601276128905733167176775_int128, &
13043522625179463222515335080_int128, 25724725177437274688849688630_int128, &
48668398984340789951877789300_int128, 88371566576829329123146512150_int128, &
154083757108317804624973405800_int128, 258090293156432322746830454715_int128, &
415462423129866665885141707590_int128, 642977559605746030536528833175_int128, &
956989856157389440798554542400_int128, 1370235475861716699325203094800_int128, &
1887879988965031896848057597280_int128, 2503493028844933602341989422480_int128, &
3195948547461617364691901390400_int128, 3928353422921571344100462125700_int128, &
4649887725090839550159730679400_int128, 5300872006603557087182092974516_int128, &
5820565340584297978082298168096_int128, 6156367187156469015279353831640_int128, &
6272525058612251449529907677520_int128, 5671_int128, &
198485_int128, 5160610_int128, &
106308566_int128, 1807245622_int128, &
26075972546_int128, 325949656825_int128, &
3585446225075_int128, 35137373005735_int128, &
309847743777845_int128, 2478781950222760_int128, &
18114175790089400_int128, 121623751733457400_int128, &
754067260747435880_int128, 4335886749297756310_int128, &
23209746716829166130_int128, 116048733584145830650_int128, &
543596699420472575150_int128, 2391825477450079330660_int128, &
9908991263721757227020_int128, 38735147667275960069260_int128, &
143151632683411156777700_int128, 501030714391939048721950_int128, &
1663421971781237641756874_int128, 5246176987925441793233218_int128, &
15738530963776325379699654_int128, 44967231325075215370570440_int128, &
122496940506239379802588440_int128, 318492045316222387486729944_int128, &
791093144817713672144458248_int128, 1878846218942069971343088339_int128, &
4270105043050159025779746225_int128, 9293758034873875526697094725_int128, &
19384123901308368955682511855_int128, 38768247802616737911365023710_int128, &
74393124161778064640727477930_int128, 137039965561170119075024301450_int128, &
242455323685147133748119917950_int128, 412174050264750127371803860515_int128, &
673552716286298988631972162305_int128, 1058439982735612696421670540765_int128, &
1599967415763135471335083375575_int128, 2327225332019106140123757637200_int128, &
3258115464826748596173260692080_int128, 4391373017809965499190047019760_int128, &
5699441576306550967033890812880_int128, 7124301970383188708792363516100_int128, &
8578241148012410894260192805100_int128, 9950759731694396637341823653916_int128, &
11121437347187855065264391142612_int128, 11976932527740766993361651999736_int128, &
12428892245768720464809261509160_int128, 5778_int128, &
204156_int128, 5359095_int128, &
111469176_int128, 1913554188_int128, &
27883218168_int128, 352025629371_int128, &
3911395881900_int128, 38722819230810_int128, &
344985116783580_int128, 2788629694000605_int128, &
20592957740312160_int128, 139737927523546800_int128, &
875691012480893280_int128, 5089954010045192190_int128, &
27545633466126922440_int128, 139258480300974996780_int128, &
659645433004618405800_int128, 2935422176870551905810_int128, &
12300816741171836557680_int128, 48644138930997717296280_int128, &
181886780350687116846960_int128, 644182347075350205499650_int128, &
2164452686173176690478824_int128, 6909598959706679434990092_int128, &
20984707951701767172932872_int128, 60705762288851540750270094_int128, &
167464171831314595173158880_int128, 440988985822461767289318384_int128, &
1109585190133936059631188192_int128, 2669939363759783643487546587_int128, &
6148951261992228997122834564_int128, 13563863077924034552476840950_int128, &
28677881936182244482379606580_int128, 58152371703925106867047535565_int128, &
113161371964394802552092501640_int128, 211433089722948183715751779380_int128, &
379495289246317252823144219400_int128, 654629373949897261119923778465_int128, &
1085726766551049116003776022820_int128, 1731992699021911685053642703070_int128, &
2658407398498748167756753916340_int128, 3927192747782241611458841012775_int128, &
5585340796845854736297018329280_int128, 7649488482636714095363307711840_int128, &
10090814594116516466223937832640_int128, 12823743546689739675826254328980_int128, &
15702543118395599603052556321200_int128, 18529000879706807531602016459016_int128, &
21072197078882251702606214796528_int128, 23098369874928622058626043142348_int128, &
24405824773509487458170913508896_int128, 24857784491537440929618523018320_int128, &
5886_int128, 209934_int128, &
5563251_int128, 116828271_int128, &
2025023364_int128, 29796772356_int128, &
379908847539_int128, 4263421511271_int128, &
42634215112710_int128, 383707936014390_int128, &
3133614810784185_int128, 23381587434312765_int128, &
160330885263858960_int128, 1015428940004440080_int128, &
5965645022526085470_int128, 32635587476172114630_int128, &
166804113767101919220_int128, 798903913305593402580_int128, &
3595067609875170311610_int128, 15236238918042388463490_int128, &
60944955672169553853960_int128, 230530919281684834143240_int128, &
826069127426037322346610_int128, 2808635033248526895978474_int128, &
9074051645879856125468916_int128, 27894306911408446607922964_int128, &
81690470240553307923202966_int128, 228169934120166135923428974_int128, &
608453157653776362462477264_int128, 1550574175956397826920506576_int128, &
3779524553893719703118734779_int128, 8818890625752012640610381151_int128, &
19712814339916263549599675514_int128, 42241745014106279034856447530_int128, &
86830253640107351349427142145_int128, 171313743668319909419140037205_int128, &
324594461687342986267844281020_int128, 590928378969265436538895998780_int128, &
1034124663196214513943067997865_int128, 1740356140500946377123699801285_int128, &
2817719465572960801057418725890_int128, 4390400097520659852810396619410_int128, &
6585600146280989779215594929115_int128, 9512533544628096347755859342055_int128, &
13234829279482568831660326041120_int128, 17740303076753230561587245544480_int128, &
22914558140806256142050192161620_int128, 28526286665085339278878810650180_int128, &
34231543998102407134654572780216_int128, 39601197958589059234208231255544_int128, &
44170566953810873761232257938876_int128, 47504194648438109516796956651244_int128, &
49263609265046928387789436527216_int128, 5995_int128, &
215820_int128, 5773185_int128, &
122391522_int128, 2141851635_int128, &
31821795720_int128, 409705619895_int128, &
4643330358810_int128, 46897636623981_int128, &
426342151127100_int128, 3517322746798575_int128, &
26515202245096950_int128, 183712472698171725_int128, &
1175759825268299040_int128, 6981073962530525550_int128, &
38601232498698200100_int128, 199439701243274033850_int128, &
965708027072695321800_int128, 4393971523180763714190_int128, &
18831306527917558775100_int128, 76181194590211942317450_int128, &
291475874953854387997200_int128, 1056600046707722156489850_int128, &
3634704160674564218325084_int128, 11882686679128383021447390_int128, &
36968358557288302733391880_int128, 109584777151961754531125930_int128, &
309860404360719443846631940_int128, 836623091773942498385906238_int128, &
2159027333610174189382983840_int128, 5330098729850117530039241355_int128, &
12598415179645732343729115930_int128, 28531704965668276190210056665_int128, &
61954559354022542584456123044_int128, 129071998654213630384283589675_int128, &
258143997308427260768567179350_int128, 495908205355662895686984318225_int128, &
915522840656608422806740279800_int128, 1625053042165479950481963996645_int128, &
2774480803697160891066767799150_int128, 4558075606073907178181118527175_int128, &
7208119563093620653867815345300_int128, 10976000243801649632025991548525_int128, &
16098133690909086126971454271170_int128, 22747362824110665179416185383175_int128, &
30975132356235799393247571585600_int128, 40654861217559486703637437706100_int128, &
51440844805891595420929002811800_int128, 62757830663187746413533383430396_int128, &
73832741956691466368862804035760_int128, 83771764912399932995440489194420_int128, &
91674761602248983278029214590120_int128, 96767803913485037904586393178460_int128, &
98527218530093856775578873054432_int128, 6105_int128, &
221815_int128, 5989005_int128, &
128164707_int128, 2264243157_int128, &
33963647355_int128, 441527415615_int128, &
5053035978705_int128, 51540966982791_int128, &
473239787751081_int128, 3943664897925675_int128, &
30032524991895525_int128, 210227674943268675_int128, &
1359472297966470765_int128, 8156833787798824590_int128, &
45582306461228725650_int128, 238040933741972233950_int128, &
1165147728315969355650_int128, 5359679550253459035990_int128, &
23225278051098322489290_int128, 95012501118129501092550_int128, &
367657069544066330314650_int128, 1348075921661576544487050_int128, &
4691304207382286374814934_int128, 15517390839802947239772474_int128, &
48851045236416685754839270_int128, 146553135709250057264517810_int128, &
419445181512681198377757870_int128, 1146483496134661942232538178_int128, &
2995650425384116687768890078_int128, 7489126063460291719422225195_int128, &
17928513909495849873768357285_int128, 41130120145314008533939172595_int128, &
90486264319690818774666179709_int128, 191026558008236172968739712719_int128, &
387215995962640891152850769025_int128, 754052202664090156455551497575_int128, &
1411431046012271318493724598025_int128, 2540575882822088373288704276445_int128, &
4399533845862640841548731795795_int128, 7332556409771068069247886326325_int128, &
11766195169167527832048933872475_int128, 18184119806895270285893806893825_int128, &
27074133934710735758997445819695_int128, 38845496515019751306387639654345_int128, &
53722495180346464572663756968775_int128, 71629993573795286096885009291700_int128, &
92095706023451082124566440517900_int128, 114198675469079341834462386242196_int128, &
136590572619879212782396187466156_int128, 157604506869091399364303293230180_int128, &
175446526514648916273469703784540_int128, 188442565515734021182615607768580_int128, &
195295022443578894680165266232892_int128, 6216_int128, &
227920_int128, 6210820_int128, &
134153712_int128, 2392407864_int128, &
36227890512_int128, 475491062970_int128, &
5494563394320_int128, 56594002961496_int128, &
524780754733872_int128, 4416904685676756_int128, &
33976189889821200_int128, 240260199935164200_int128, &
1569699972909739440_int128, 9516306085765295355_int128, &
53739140249027550240_int128, 283623240203200959600_int128, &
1403188662057941589600_int128, 6524827278569428391640_int128, &
28584957601351781525280_int128, 118237779169227823581840_int128, &
462669570662195831407200_int128, 1715732991205642874801700_int128, &
6039380129043862919301984_int128, 20208695047185233614587408_int128, &
64368436076219632994611744_int128, 195404180945666743019357080_int128, &
565998317221931255642275680_int128, 1565928677647343140610296048_int128, &
4142133921518778630001428256_int128, 10484776488844408407191115273_int128, &
25417639972956141593190582480_int128, 59058634054809858407707529880_int128, &
131616384465004827308605352304_int128, 281512822327926991743405892428_int128, &
578242553970877064121590481744_int128, 1141268198626731047608402266600_int128, &
2165483248676361474949276095600_int128, 3952006928834359691782428874470_int128, &
6940109728684729214837436072240_int128, 11732090255633708910796618122120_int128, &
19098751578938595901296820198800_int128, 29950314976062798117942740766300_int128, &
45258253741606006044891252713520_int128, 65919630449730487065385085474040_int128, &
92567991695366215879051396623120_int128, 125352488754141750669548766260475_int128, &
163725699597246368221451449809600_int128, 206294381492530423959028826760096_int128, &
250789248088958554616858573708352_int128, 294195079488970612146699480696336_int128, &
333051033383740315637772997014720_int128, 363889092030382937456085311553120_int128, &
383737587959312915862780874001472_int128, 390590044887157789360330532465784_int128, &
6328_int128, 234136_int128, &
6438740_int128, 140364532_int128, &
2526561576_int128, 38620298376_int128, &
511718953482_int128, 5970054457290_int128, &
62088566355816_int128, 581374757695368_int128, &
4941685440410628_int128, 38393094575497956_int128, &
274236389824985400_int128, 1809960172844903640_int128, &
11086006058675034795_int128, 63255446334792845595_int128, &
337362380452228509840_int128, 1686811902261142549200_int128, &
7928015940627369981240_int128, 35109784879921209916920_int128, &
146822736770579605107120_int128, 580907349831423654989040_int128, &
2178402561867838706208900_int128, 7755113120249505794103684_int128, &
26248075176229096533889392_int128, 84577131123404866609199152_int128, &
259772617021886376013968824_int128, 761402498167597998661632760_int128, &
2131926994869274396252571728_int128, 5708062599166121770611724304_int128, &
14626910410363187037192543529_int128, 35902416461800550000381697753_int128, &
84476274027766000000898112360_int128, 190675018519814685716312882184_int128, &
413129206792931819052011244732_int128, 859755376298804055864996374172_int128, &
1719510752597608111729992748344_int128, 3306751447303092522557678362200_int128, &
6117490177510721166731704970070_int128, 10892116657519088906619864946710_int128, &
18672199984318438125634054194360_int128, 30830841834572304812093438320920_int128, &
49049066555001394019239560965100_int128, 75208568717668804162833993479820_int128, &
111177884191336493110276338187560_int128, 158487622145096702944436482097160_int128, &
217920480449507966548600162883595_int128, 289078188351388118891000216070075_int128, &
370020081089776792180480276569696_int128, 457083629581488978575887400468448_int128, &
544984327577929166763558054404688_int128, 627246112872710927784472477711056_int128, &
696940125414123253093858308567840_int128, 747626679989695853318866185554592_int128, &
774327632846470705223111406467256_int128, 6441_int128, &
240464_int128, 6672876_int128, &
146803272_int128, 2666926108_int128, &
41146859952_int128, 550339251858_int128, &
6481773410772_int128, 68058620813106_int128, &
643463324051184_int128, 5523060198105996_int128, &
43334780015908584_int128, 312629484400483356_int128, &
2084196562669889040_int128, 12895966231519938435_int128, &
74341452393467880390_int128, 400617826787021355435_int128, &
2024174282713371059040_int128, 9614827842888512530440_int128, &
43037800820548579898160_int128, 181932521650500815024040_int128, &
727730086602003260096160_int128, 2759309911699262361197940_int128, &
9933515682117344500312584_int128, 34003188296478602327993076_int128, &
110825206299633963143088544_int128, 344349748145291242623167976_int128, &
1021175115189484374675601584_int128, 2893329493036872394914204488_int128, &
7839989594035396166864296032_int128, 20334973009529308807804267833_int128, &
50529326872163737037574241282_int128, 120378690489566550001279810113_int128, &
275151292547580685717210994544_int128, 603804225312746504768324126916_int128, &
1272884583091735874917007618904_int128, 2579266128896412167594989122516_int128, &
5026262199900700634287671110544_int128, 9424241624813813689289383332270_int128, &
17009606835029810073351569916780_int128, 29564316641837527032253919141070_int128, &
49503041818890742937727492515280_int128, 79879908389573698831332999286020_int128, &
124257635272670198182073554444920_int128, 186386452909005297273110331667380_int128, &
269665506336433196054712820284720_int128, 376408102594604669493036644980755_int128, &
506998668800896085439600378953670_int128, 659098269441164911071480492639771_int128, &
827103710671265770756367677038144_int128, 1002067957159418145339445454873136_int128, &
1172230440450640094548030532115744_int128, 1324186238286834180878330786278896_int128, &
1444566805403819106412724494122432_int128, 1521954312836166558541977592021848_int128, &
1548655265692941410446222812934512_int128, 6555_int128, &
246905_int128, 6913340_int128, &
153476148_int128, 2813729380_int128, &
43813786060_int128, 591486111810_int128, &
7032112662630_int128, 74540394223878_int128, &
711521944864290_int128, 6166523522157180_int128, &
48857840214014580_int128, 355964264416391940_int128, &
2396826047070372396_int128, 14980162794189827475_int128, &
87237418624987818825_int128, 474959279180489235825_int128, &
2424792109500392414475_int128, 11639002125601883589480_int128, &
52652628663437092428600_int128, 224970322471049394922200_int128, &
909662608252504075120200_int128, 3487039998301265621294100_int128, &
12692825593816606861510524_int128, 43936703978595946828305660_int128, &
144828394596112565471081620_int128, 455174954444925205766256520_int128, &
1365524863334775617298769560_int128, 3914504608226356769589806072_int128, &
10733319087072268561778500520_int128, 28174962603564704974668563865_int128, &
70864299881693045845378509115_int128, 170908017361730287038854051395_int128, &
395529983037147235718490804657_int128, 878955517860327190485535121460_int128, &
1876688808404482379685331745820_int128, 3852150711988148042511996741420_int128, &
7605528328797112801882660233060_int128, 14450503824714514323577054442814_int128, &
26433848459843623762640953249050_int128, 46573923476867337105605489057850_int128, &
79067358460728269969981411656350_int128, 129382950208464441769060491801300_int128, &
204137543662243897013406553730940_int128, 310644088181675495455183886112300_int128, &
456051959245438493327823151952100_int128, 646073608931037865547749465265475_int128, &
883406771395500754932637023934425_int128, 1166096938242060996511080871593441_int128, &
1486201980112430681827848169677915_int128, 1829171667830683916095813131911280_int128, &
2174298397610058239887475986988880_int128, 2496416678737474275426361318394640_int128, &
2768753043690653287291055280401328_int128, 2966521118239985664954702086144280_int128, &
3070609578529107968988200404956360_int128, 6670_int128, &
253460_int128, 7160245_int128, &
160389488_int128, 2967205528_int128, &
46627515440_int128, 635299897870_int128, &
7623598774440_int128, 81572506886508_int128, &
786062339088168_int128, 6878045467021470_int128, &
55024363736171760_int128, 404822104630406520_int128, &
2752790311486764336_int128, 17376988841260199871_int128, &
102217581419177646300_int128, 562196697805477054650_int128, &
2899751388680881650300_int128, 14063794235102276003955_int128, &
64291630789038976018080_int128, 277622951134486487350800_int128, &
1134632930723553470042400_int128, 4396702606553769696414300_int128, &
16179865592117872482804624_int128, 56629529572412553689816184_int128, &
188765098574708512299387280_int128, 600003349041037771237338140_int128, &
1820699817779700823065026080_int128, 5280029471561132386888575632_int128, &
14647823695298625331368306592_int128, 38908281690636973536447064385_int128, &
99039262485257750820047072980_int128, 241772317243423332884232560510_int128, &
566438000398877522757344856052_int128, 1274485500897474426204025926117_int128, &
2755644326264809570170866867280_int128, 5728839520392630422197328487240_int128, &
11457679040785260844394656974480_int128, 22056032153511627125459714675874_int128, &
40884352284558138086218007691864_int128, 73007771936710960868246442306900_int128, &
125641281937595607075586900714200_int128, 208450308669192711739041903457650_int128, &
333520493870708338782467045532240_int128, 514781631843919392468590439843240_int128, &
766696047427113988783007038064400_int128, 1102125568176476358875572617217575_int128, &
1529480380326538620480386489199900_int128, 2049503709637561751443717895527866_int128, &
2652298918354491678338929041271356_int128, 3315373647943114597923661301589195_int128, &
4003470065440742155983289118900160_int128, 4670715076347532515313837305383520_int128, &
5265169722428127562717416598795968_int128, 5735274161930638952245757366545608_int128, &
6037130696769093633942902491100640_int128, 6141219157058215937976400809912720_int128, &
6786_int128, 260130_int128, &
7413705_int128, 167549733_int128, &
3127595016_int128, 49594720968_int128, &
681927413310_int128, 8258898672310_int128, &
89196105660948_int128, 867634845974676_int128, &
7664107806109638_int128, 61902409203193230_int128, &
459846468366578280_int128, 3157612416117170856_int128, &
20129779152746964207_int128, 119594570260437846171_int128, &
664414279224654700950_int128, 3461948086486358704950_int128, &
16963545623783157654255_int128, 78355425024141252022035_int128, &
341914581923525463368880_int128, 1412255881858039957393200_int128, &
5531335537277323166456700_int128, 20576568198671642179218924_int128, &
72809395164530426172620808_int128, 245394628147121065989203464_int128, &
788768447615746283536725420_int128, 2420703166820738594302364220_int128, &
7100729289340833209953601712_int128, 19927853166859757718256882224_int128, &
53556105385935598867815370977_int128, 137947544175894724356494137365_int128, &
340811579728681083704279633490_int128, 808210317642300855641577416562_int128, &
1840923501296351948961370782169_int128, 4030129827162283996374892793397_int128, &
8484483846657439992368195354520_int128, 17186518561177891266591985461720_int128, &
33513711194296887969854371650354_int128, 62940384438069765211677722367738_int128, &
113892124221269098954464449998764_int128, 198649053874306567943833343021100_int128, &
334091590606788318814628804171850_int128, 541970802539901050521508948989890_int128, &
848302125714627731251057485375480_int128, 1281477679271033381251597477907640_int128, &
1868821615603590347658579655281975_int128, 2631605948503014979355959106417475_int128, &
3578984089964100371924104384727766_int128, 4701802627992053429782646936799222_int128, &
5967672566297606276262590342860551_int128, 7318843713383856753906950420489355_int128, &
8674185141788274671297126424283680_int128, 9935884798775660078031253904179488_int128, &
11000443884358766514963173965341576_int128, 11772404858699732586188659857646248_int128, &
12178349853827309571919303301013360_int128, 6903_int128, &
266916_int128, 7673835_int128, &
174963438_int128, 3295144749_int128, &
52722315984_int128, 731522134278_int128, &
8940826085620_int128, 97455004333258_int128, &
956830951635624_int128, 8531742652084314_int128, &
69566517009302868_int128, 521748877569771510_int128, &
3617458884483749136_int128, 23287391568864135063_int128, &
139724349413184810378_int128, 784008849485092547121_int128, &
4126362365711013405900_int128, 20425493710269516359205_int128, &
95318970647924409676290_int128, 420270006947666715390915_int128, &
1754170463781565420762080_int128, 6943591419135363123849900_int128, &
26107903735948965345675624_int128, 93385963363202068351839732_int128, &
318204023311651492161824272_int128, 1034163075762867349525928884_int128, &
3209471614436484877839089640_int128, 9521432456161571804255965932_int128, &
27028582456200590928210483936_int128, 73483958552795356586072253201_int128, &
191503649561830323224309508342_int128, 478759123904575808060773770855_int128, &
1149021897370981939345857050052_int128, 2649133818938652804602948198731_int128, &
5871053328458635945336263575566_int128, 12514613673819723988743088147917_int128, &
25671002407835331258960180816240_int128, 50700229755474779236446357112074_int128, &
96454095632366653181532094018092_int128, 176832508659338864166142172366502_int128, &
312541178095575666898297793019864_int128, 532740644481094886758462147192950_int128, &
876062393146689369336137753161740_int128, 1390272928254528781772566434365370_int128, &
2129779804985661112502654963283120_int128, 3150299294874623728910177133189615_int128, &
4500427564106605327014538761699450_int128, 6210590038467115351280063491145241_int128, &
8280786717956153801706751321526988_int128, 10669475194289659706045237279659773_int128, &
13286516279681463030169540763349906_int128, 15993028855172131425204076844773035_int128, &
18610069940563934749328380328463168_int128, 20936328683134426592994427869521064_int128, &
22772848743058499101151833822987824_int128, 23950754712527042158107963158659608_int128, &
24356699707654619143838606602026720_int128, 7021_int128, &
273819_int128, 7940751_int128, &
182637273_int128, 3470108187_int128, &
56017460733_int128, 784244450262_int128, &
9672348219898_int128, 106395830418878_int128, &
1054285955968882_int128, 9488573603719938_int128, &
78098259661387182_int128, 591315394579074378_int128, &
4139207762053520646_int128, 26904850453347884199_int128, &
163011740982048945441_int128, 923733198898277357499_int128, &
4910371215196105953021_int128, 24551856075980529765105_int128, &
115744464358193926035495_int128, 515588977595591125067205_int128, &
2174440470729232136152995_int128, 8697761882916928544611980_int128, &
33051495155084328469525524_int128, 119493867099151033697515356_int128, &
411589986674853560513664004_int128, 1352367099074518841687753156_int128, &
4243634690199352227365018524_int128, 12730904070598056682095055572_int128, &
36550014912362162732466449868_int128, 100512541008995947514282737137_int128, &
264987608114625679810381761543_int128, 670262773466406131285083279197_int128, &
1627781021275557747406630820907_int128, 3798155716309634743948805248783_int128, &
8520187147397288749939211774297_int128, 18385667002278359934079351723483_int128, &
38185616081655055247703268964157_int128, 76371232163310110495406537928314_int128, &
147154325387841432417978451130166_int128, 273286604291705517347674266384594_int128, &
489373686754914531064439965386366_int128, 845281822576670553656759940212814_int128, &
1408803037627784256094599900354690_int128, 2266335321401218151108704187527110_int128, &
3520052733240189894275221397648490_int128, 5280079099860284841412832096472735_int128, &
7650726858981229055924715894889065_int128, 10711017602573720678294602252844691_int128, &
14491376756423269152986814812672229_int128, 18950261912245813507751988601186761_int128, &
23955991473971122736214778043009679_int128, 29279545134853594455373617608122941_int128, &
34603098795736066174532457173236203_int128, 39546398623698361342322808197984232_int128, &
43709177426192925694146261692508888_int128, 46723603455585541259259796981647432_int128, &
48307454420181661301946569760686328_int128, 7140_int128, &
280840_int128, 8214570_int128, &
190578024_int128, 3652745460_int128, &
59487568920_int128, 840261910995_int128, &
10456592670160_int128, 116068178638776_int128, &
1160681786387760_int128, 10542859559688820_int128, &
87586833265107120_int128, 669413654240461560_int128, &
4730523156632595024_int128, 31044058215401404845_int128, &
189916591435396829640_int128, 1086744939880326302940_int128, &
5834104414094383310520_int128, 29462227291176635718126_int128, &
140296320434174455800600_int128, 631333441953785051102700_int128, &
2690029448324823261220200_int128, 10872202353646160680764975_int128, &
41749257038001257014137504_int128, 152545362254235362167040880_int128, &
531083853774004594211179360_int128, 1763957085749372402201417160_int128, &
5596001789273871069052771680_int128, 16974538760797408909460074096_int128, &
49280918982960219414561505440_int128, 137062555921358110246749187005_int128, &
365500149123621627324664498680_int128, 935250381581031811095465040740_int128, &
2298043794741963878691714100104_int128, 5425936737585192491355436069690_int128, &
12318342863706923493888017023080_int128, 26905854149675648684018563497780_int128, &
56571283083933415181782620687640_int128, 114556848244965165743109806892471_int128, &
223525557551151542913384989058480_int128, 420440929679546949765652717514760_int128, &
762660291046620048412114231770960_int128, 1334655509331585084721199905599180_int128, &
2254084860204454809751359840567504_int128, 3675138359029002407203304087881800_int128, &
5786388054641408045383925585175600_int128, 8800131833100474735688053494121225_int128, &
12930805958841513897337547991361800_int128, 18361744461554949734219318147733756_int128, &
25202394358996989831281417065516920_int128, 33441638668669082660738803413858990_int128, &
42906253386216936243966766644196440_int128, 53235536608824717191588395651132620_int128, &
63882643930589660629906074781359144_int128, 74149497419434427516855265371220435_int128, &
83255576049891287036469069890493120_int128, 90432780881778466953406058674156320_int128, &
95031057875767202561206366742333760_int128, 96614908840363322603893139521372656_int128, &
7260_int128, 287980_int128, &
8495410_int128, 198792594_int128, &
3843323484_int128, 63140314380_int128, &
899749479915_int128, 11296854581155_int128, &
126524771308936_int128, 1276749965026536_int128, &
11703541346076580_int128, 98129692824795940_int128, &
757000487505568680_int128, 5399936810873056584_int128, &
35774581372033999869_int128, 220960649650798234485_int128, &
1276661531315723132580_int128, 6920849353974709613460_int128, &
35296331705271019028646_int128, 169758547725351091518726_int128, &
771629762387959506903300_int128, 3321362890278608312322900_int128, &
13562231801970983941985175_int128, 52621459391647417694902479_int128, &
194294619292236619181178384_int128, 683629216028239956378220240_int128, &
2295040939523376996412596520_int128, 7359958875023243471254188840_int128, &
22570540550071279978512845776_int128, 66255457743757628324021579536_int128, &
186343474904318329661310692445_int128, 502562705044979737571413685685_int128, &
1300750530704653438420129539420_int128, 3233294176322995689787179140844_int128, &
7723980532327156370047150169794_int128, 17744279601292115985243453092770_int128, &
39224197013382572177906580520860_int128, 83477137233609063865801184185420_int128, &
171128131328898580924892427580111_int128, 338082405796116708656494795950951_int128, &
643966487230698492679037706573240_int128, 1183101220726166998177766949285720_int128, &
2097315800378205133133314137370140_int128, 3588740369536039894472559746166684_int128, &
5929223219233457216954663928449304_int128, 9461526413670410452587229673057400_int128, &
14586519887741882781071979079296825_int128, 21730937791941988633025601485483025_int128, &
31292550420396463631556866139095556_int128, 43564138820551939565500735213250676_int128, &
58644033027666072492020220479375910_int128, 76347892054886018904705570058055430_int128, &
96141789995041653435555162295329060_int128, 117118180539414377821494470432491764_int128, &
138032141350024088146761340152579579_int128, 157405073469325714553324335261713555_int128, &
173688356931669753989875128564649440_int128, 185463838757545669514612425416490080_int128, &
191645966716130525165099506263706416_int128, 7381_int128, &
295240_int128, 8783390_int128, &
207288004_int128, 4042116078_int128, &
66983637864_int128, 962889794295_int128, &
12196604061070_int128, 137821625890091_int128, &
1403274736335472_int128, 12980291311103116_int128, &
109833234170872520_int128, 855130180330364620_int128, &
6156937298378625264_int128, 41174518182907056453_int128, &
256735231022832234354_int128, 1497622180966521367065_int128, &
8197510885290432746040_int128, 42217181059245728642106_int128, &
205054879430622110547372_int128, 941388310113310598422026_int128, &
4092992652666567819226200_int128, 16883594692249592254308075_int128, &
66183691193618401636887654_int128, 246916078683884036876080863_int128, &
877923835320476575559398624_int128, 2978670155551616952790816760_int128, &
9654999814546620467666785360_int128, 29930499425094523449767034616_int128, &
88825998293828908302534425312_int128, 252598932648075957985332271981_int128, &
688906179949298067232724378130_int128, 1803313235749633175991543225105_int128, &
4534044707027649128207308680264_int128, 10957274708650152059834329310638_int128, &
25468260133619272355290603262564_int128, 56968476614674688163150033613630_int128, &
122701334246991636043707764706280_int128, 254605268562507644790693611765531_int128, &
509210537125015289581387223531062_int128, 982048893026815201335532502524191_int128, &
1827067707956865490856804655858960_int128, 3280417021104372131311081086655860_int128, &
5686056169914245027605873883536824_int128, 9517963588769497111427223674615988_int128, &
15390749632903867669541893601506704_int128, 24048046301412293233659208752354225_int128, &
36317457679683871414097580564779850_int128, 53023488212338452264582467624578581_int128, &
74856689240948403197057601352346232_int128, 102208171848218012057520955692626586_int128, &
134991925082552091396725790537431340_int128, 172489682049927672340260732353384490_int128, &
213259970534456031257049632727820824_int128, 255150321889438465968255810585071343_int128, &
295437214819349802700085675414293134_int128, 331093430400995468543199463826362995_int128, &
359152195689215423504487553981139520_int128, 377109805473676194679711931680196496_int128, &
383291933432261050330199012527412832_int128, 7503_int128, &
302621_int128, 9078630_int128, &
216071394_int128, 4249404082_int128, &
71025753942_int128, 1029873432159_int128, &
13159493855365_int128, 150018229951161_int128, &
1541096362225563_int128, 14383566047438588_int128, &
122813525481975636_int128, 964963414501237140_int128, &
7012067478708989884_int128, 47331455481285681717_int128, &
297909749205739290807_int128, 1754357411989353601419_int128, &
9695133066256954113105_int128, 50414691944536161388146_int128, &
247272060489867839189478_int128, 1146443189543932708969398_int128, &
5034380962779878417648226_int128, 20976587344916160073534275_int128, &
83067285885867993891195729_int128, 313099769877502438512968517_int128, &
1124839914004360612435479487_int128, 3856593990872093528350215384_int128, &
12633669970098237420457602120_int128, 39585499239641143917433819976_int128, &
118756497718923431752301459928_int128, 341424930941904866287866697293_int128, &
941505112597374025218056650111_int128, 2492219415698931243224267603235_int128, &
6337357942777282304198851905369_int128, 15491319415677801188041637990902_int128, &
36425534842269424415124932573202_int128, 82436736748293960518440636876194_int128, &
179669810861666324206857798319910_int128, 377306602809499280834401376471811_int128, &
763815805687522934372080835296593_int128, 1491259430151830490916919726055253_int128, &
2809116600983680692192337158383151_int128, 5107484729061237622167885742514820_int128, &
8966473191018617158916954970192684_int128, 15204019758683742139033097558152812_int128, &
24908713221673364780969117276122692_int128, 39438795934316160903201102353860929_int128, &
60365503981096164647756789317134075_int128, 89340945892022323678680048189358431_int128, &
127880177453286855461640068976924813_int128, 177064861089166415254578557044972818_int128, &
237200096930770103454246746230057926_int128, 307481607132479763736986522890815830_int128, &
385749652584383703597310365081205314_int128, 468410292423894497225305443312892167_int128, &
550587536708788268668341485999364477_int128, 626530645220345271243285139240656129_int128, &
690245626090210892047687017807502515_int128, 736262001162891618184199485661336016_int128, &
760401738905937245009910944207609328_int128, 7626_int128, &
310124_int128, 9381251_int128, &
225150024_int128, 4465475476_int128, &
75275158024_int128, 1100899186101_int128, &
14189367287524_int128, 163177723806526_int128, &
1691114592176724_int128, 15924662409664151_int128, &
137197091529414224_int128, 1087776939983212776_int128, &
7977030893210227024_int128, 54343522959994671601_int128, &
345241204687024972524_int128, 2052267161195092892226_int128, &
11449490478246307714524_int128, 60109825010793115501251_int128, &
297686752434404000577624_int128, 1393715250033800548158876_int128, &
6180824152323811126617624_int128, 26010968307696038491182501_int128, &
104043873230784153964730004_int128, 396167055763370432404164246_int128, &
1437939683881863050948448004_int128, 4981433904876454140785694871_int128, &
16490263960970330948807817504_int128, 52219169209739381337891422096_int128, &
158341996958564575669735279904_int128, 460181428660828298040168157221_int128, &
1282930043539278891505923347404_int128, 3433724528296305268442324253346_int128, &
8829577358476213547423119508604_int128, 21828677358455083492240489896271_int128, &
51916854257947225603166570564104_int128, 118862271590563384933565569449396_int128, &
262106547609960284725298435196104_int128, 556976413671165605041259174791721_int128, &
1141122408497022215206482211768404_int128, 2255075235839353425289000561351846_int128, &
4300376031135511183109256884438404_int128, 7916601330044918314360222900897971_int128, &
14073957920079854781084840712707504_int128, 24170492949702359297950052528345496_int128, &
40112732980357106920002214834275504_int128, 64347509155989525684170219629983621_int128, &
99804299915412325550957891670995004_int128, 149706449873118488326436837506492506_int128, &
217221123345309179140320117166283244_int128, 304945038542453270716218626021897631_int128, &
414264958019936518708825303275030744_int128, 544681704063249867191233269120873756_int128, &
693231259716863467334296887972021144_int128, 854159945008278200822615808394097481_int128, &
1018997829132682765893646929312256644_int128, 1177118181929133539911626625240020606_int128, &
1316776271310556163290972157048158644_int128, 1426507627253102510231886503468838531_int128, &
1496663740068828863194110429868945344_int128, 1520803477811874490019821888415218656_int128, &
7750_int128, 317750_int128, &
9691375_int128, 234531275_int128, &
4690625500_int128, 79740633500_int128, &
1176174344125_int128, 15290266473625_int128, &
177367091094050_int128, 1854292315983250_int128, &
17615777001840875_int128, 153121753939078375_int128, &
1224974031512627000_int128, 9064807833193439800_int128, &
62320553853204898625_int128, 399584727647019644125_int128, &
2397508365882117864750_int128, 13501757639441400606750_int128, &
71559315489039423215775_int128, 357796577445197116078875_int128, &
1691402002468204548736500_int128, 7574539402357611674776500_int128, &
32191792460019849617800125_int128, 130054841538480192455912505_int128, &
500210928994154586368894250_int128, 1834106739645233483352612250_int128, &
6419373588758317191734142875_int128, 21471697865846785089593512375_int128, &
68709433170709712286699239600_int128, 210561166168303957007626702000_int128, &
618523425619392873709903437125_int128, 1743111472200107189546091504625_int128, &
4716654571835584159948247600750_int128, 12263301886772518815865443761950_int128, &
30658254716931297039663609404875_int128, 73745531616402309095407060460375_int128, &
170779125848510610536732140013500_int128, 380968819200523669658864004645500_int128, &
819082961281125889766557609987825_int128, 1698098822168187820247741386560125_int128, &
3396197644336375640495482773120250_int128, 6555451266974864608398257445790250_int128, &
12216977361180429497469479785336375_int128, 21990559250124773095445063613605475_int128, &
38244450869782214079034893241053000_int128, 64283225930059466217952267362621000_int128, &
104460242136346632604172434464259125_int128, 164151809071401851235128111300978625_int128, &
249510749788530813877394729177487510_int128, 366927573218427667466756954672775750_int128, &
522166161887762449856538743188180875_int128, 719209996562389789425043929296928375_int128, &
958946662083186385900058572395904500_int128, 1237912963780113334525530157092894900_int128, &
1547391204725141668156912696366118625_int128, 1873157774140960966716262737706354125_int128, &
2196116011061816305805273554552277250_int128, 2493894453239689703202598782288179250_int128, &
2743283898563658673522858660516997175_int128, 2923171367321931373425996933337783875_int128, &
3017467217880703353213932318284164000_int128, 7875_int128, &
325500_int128, 10009125_int128, &
244222650_int128, 4925156775_int128, &
84431259000_int128, 1255914977625_int128, &
16466440817750_int128, 192657357567675_int128, &
2031659407077300_int128, 19470069317824125_int128, &
170737530940919250_int128, 1378095785451705375_int128, &
10289781864706066800_int128, 71385361686398338425_int128, &
461905281500224542750_int128, 2797093093529137508875_int128, &
15899266005323518471500_int128, 85061073128480823822525_int128, &
429355892934236539294650_int128, 2049198579913401664815375_int128, &
9265941404825816223513000_int128, 39766331862377461292576625_int128, &
162246633998500042073712630_int128, 630265770532634778824806755_int128, &
2334317668639388069721506500_int128, 8253480328403550675086755125_int128, &
27891071454605102281327655250_int128, 90181131036556497376292751975_int128, &
279270599339013669294325941600_int128, 829084591787696830717530139125_int128, &
2361634897819500063255994941750_int128, 6459766044035691349494339105375_int128, &
16979956458608102975813691362700_int128, 42921556603703815855529053166825_int128, &
104403786333333606135070669865250_int128, 244524657464912919632139200473875_int128, &
551747945049034280195596144659000_int128, 1200051780481649559425421614633325_int128, &
2517181783449313710014298996547950_int128, 5094296466504563460743224159680375_int128, &
9951648911311240248893740218910500_int128, 18772428628155294105867737231126625_int128, &
34207536611305202592914543398941850_int128, 60235010119906987174479956854658475_int128, &
102527676799841680296987160603674000_int128, 168743468066406098822124701826880125_int128, &
268612051207748483839300545765237750_int128, 413662558859932665112522840478466135_int128, &
616438323006958481344151683850263260_int128, 889093735106190117323295697860956625_int128, &
1241376158450152239281582672485109250_int128, 1678156658645576175325102501692832875_int128, &
2196859625863299720425588729488799400_int128, 2785304168505255002682442853459013525_int128, &
3420548978866102634873175434072472750_int128, 4069273785202777272521536292258631375_int128, &
4690010464301506009007872336840456500_int128, 5237178351803348376725457442805176425_int128, &
5666455265885590046948855593854781050_int128, 5940638585202634726639929251621947875_int128, &
6034934435761406706427864636568328000_int128, 8001_int128, &
333375_int128, 10334625_int128, &
254231775_int128, 5169379425_int128, &
89356415775_int128, 1340346236625_int128, &
17722355795375_int128, 209123798385425_int128, &
2224316764644975_int128, 21501728724901425_int128, &
190207600258743375_int128, 1548833316392624625_int128, &
11667877650157772175_int128, 81675143551104405225_int128, &
533290643186622881175_int128, 3258998375029362051625_int128, &
18696359098852655980375_int128, 100960339133804342294025_int128, &
514416966062717363117175_int128, 2478554472847638204110025_int128, &
11315139984739217888328375_int128, 49032273267203277516089625_int128, &
202012965860877503366289255_int128, 792512404531134820898519385_int128, &
2964583439172022848546313255_int128, 10587797997042938744808261625_int128, &
36144551783008652956414410375_int128, 118072202491161599657620407225_int128, &
369451730375570166670618693575_int128, 1108355191126710500011856080725_int128, &
3190719489607196893973525080875_int128, 8821400941855191412750334047125_int128, &
23439722502643794325308030468075_int128, 59901513062311918831342744529525_int128, &
147325342937037421990599723032075_int128, 348928443798246525767209870339125_int128, &
796272602513947199827735345132875_int128, 1751799725530683839621017759292325_int128, &
3717233563930963269439720611181275_int128, 7611478249953877170757523156228325_int128, &
15045945377815803709636964378590875_int128, 28724077539466534354761477450037125_int128, &
52979965239460496698782280630068475_int128, 94442546731212189767394500253600325_int128, &
162762686919748667471467117458332475_int128, 271271144866247779119111862430554125_int128, &
437355519274154582661425247592117875_int128, 682274610067681148951823386243703885_int128, &
1030100881866891146456674524328729395_int128, 1505532058113148598667447381711219885_int128, &
2130469893556342356604878370346065875_int128, 2919532817095728414606685174177942125_int128, &
3875016284508875895750691231181632275_int128, 4982163794368554723108031582947812925_int128, &
6205853147371357637555618287531486275_int128, 7489822764068879907394711726331104125_int128, &
8759284249504283281529408629099087875_int128, 9927188816104854385733329779645632925_int128, &
10903633617688938423674313036659957475_int128, 11607093851088224773588784845476728925_int128, &
11975573020964041433067793888190275875_int128, 8128_int128, &
341376_int128, 10668000_int128, &
264566400_int128, 5423611200_int128, &
94525795200_int128, 1429702652400_int128, &
19062702032000_int128, 226846154180800_int128, &
2433440563030400_int128, 23726045489546400_int128, &
211709328983644800_int128, 1739040916651368000_int128, &
13216710966550396800_int128, 93343021201262177400_int128, &
614965786737727286400_int128, 3792289018215984932800_int128, &
21955357473882018032000_int128, 119656698232656998274400_int128, &
615377305196521705411200_int128, 2992971438910355567227200_int128, &
13793694457586856092438400_int128, 60347413251942495404418000_int128, &
251045239128080780882378880_int128, 994525370392012324264808640_int128, &
3757095843703157669444832640_int128, 13552381436214961593354574880_int128, &
46732349780051591701222672000_int128, 154216754274170252614034817600_int128, &
487523932866731766328239100800_int128, 1477806921502280666682474774300_int128, &
4299074680733907393985381161600_int128, 12012120431462388306723859128000_int128, &
32261123444498985738058364515200_int128, 83341235564955713156650774997600_int128, &
207226855999349340821942467561600_int128, 496253786735283947757809593371200_int128, &
1145201046312193725594945215472000_int128, 2548072328044631039448753104425200_int128, &
5469033289461647109060738370473600_int128, 11328711813884840440197243767409600_int128, &
22657423627769680880394487534819200_int128, 43770022917282338064398441828628000_int128, &
81704042778927031053543758080105600_int128, 147422511970672686466176780883668800_int128, &
257205233650960857238861617711932800_int128, 434033831785996446590578979888886600_int128, &
708626664140402361780537110022672000_int128, 1119630129341835731613248633835821760_int128, &
1712375491934572295408497910572433280_int128, 2535632939980039745124121906039949280_int128, &
3636001951669490955272325752057285760_int128, 5050002710652070771211563544524008000_int128, &
6794549101604604310357376405359574400_int128, 8857180078877430618858722814129445200_int128, &
11188016941739912360663649870479299200_int128, 13695675911440237544950330013862590400_int128, &
16249107013573163188924120355430192000_int128, 18686473065609137667262738408744720800_int128, &
20830822433793792809407642816305590400_int128, 22510727468777163197263097882136686400_int128, &
23582666872052266206656578733667004800_int128, 23951146041928082866135587776380551750_int128, &
8256_int128, 349504_int128, &
11009376_int128, 275234400_int128, &
5688177600_int128, 99949406400_int128, &
1524228447600_int128, 20492404684400_int128, &
245908856212800_int128, 2660286717211200_int128, &
26159486052576800_int128, 235435374473191200_int128, &
1950750245635012800_int128, 14955751883201764800_int128, &
106559732167812574200_int128, 708308807938989463800_int128, &
4407254804953712219200_int128, 25747646492098002964800_int128, &
141612055706539016306400_int128, 735034003429178703685600_int128, &
3608348744106877272638400_int128, 16786665896497211659665600_int128, &
74141107709529351496856400_int128, 311392652380023276286796880_int128, &
1245570609520093105147187520_int128, 4751621214095169993709641280_int128, &
17309477279918119262799407520_int128, 60284731216266553294577246880_int128, &
200949104054221844315257489600_int128, 641740687140902018942273918400_int128, &
1965330854369012433010713875100_int128, 5776881602236188060667855935900_int128, &
16311195112196295700709240289600_int128, 44273243875961374044782223643200_int128, &
115602359009454698894709139512800_int128, 290568091564305053978593242559200_int128, &
703480642734633288579752060932800_int128, 1641454833047477673352754808843200_int128, &
3693273374356824765043698319897200_int128, 8017105617506278148509491474898800_int128, &
16797745103346487549257982137883200_int128, 33986135441654521320591731302228800_int128, &
66427446545052018944792929363447200_int128, 125474065696209369117942199908733600_int128, &
229126554749599717519720538963774400_int128, 404627745621633543705038398595601600_int128, &
691239065436957303829440597600819400_int128, 1142660495926398808371116089911558600_int128, &
1828256793482238093393785743858493760_int128, 2832005621276408027021746544408255040_int128, &
4248008431914612040532619816612382560_int128, 6171634891649530700396447658097235040_int128, &
8686004662321561726483889296581293760_int128, 11844551812256675081568939949883582400_int128, &
15651729180482034929216099219489019600_int128, 20045197020617342979522372684608744400_int128, &
24883692853180149905613979884341889600_int128, 29944782925013400733874450369292782400_int128, &
34935580079182300856186858764174912800_int128, 39517295499402930476670381225050311200_int128, &
43341549902570956006670740698442276800_int128, 46093394340829429403919676615803691200_int128, &
47533812913980349072792166510047556550_int128, 8385_int128, &
357760_int128, 11358880_int128, &
286243776_int128, 5963412000_int128, &
105637584000_int128, 1624177854000_int128, &
22016633132000_int128, 266401260897200_int128, &
2906195573424000_int128, 28819772769788000_int128, &
261594860525768000_int128, 2186185620108204000_int128, &
16906502128836777600_int128, 121515484051014339000_int128, &
814868540106802038000_int128, 5115563612892701683000_int128, &
30154901297051715184000_int128, 167359702198637019271200_int128, &
876646059135717719992000_int128, 4343382747536055976324000_int128, &
20395014640604088932304000_int128, 90927773606026563156522000_int128, &
385533760089552627783653280_int128, 1556963261900116381433984400_int128, &
5997191823615263098856828800_int128, 22061098494013289256509048800_int128, &
77594208496184672557376654400_int128, 261233835270488397609834736480_int128, &
842689791195123863257531408000_int128, 2607071541509914451952987793500_int128, &
7742212456605200493678569811000_int128, 22088076714432483761377096225500_int128, &
60584438988157669745491463932800_int128, 159875602885416072939491363156000_int128, &
406170450573759752873302382072000_int128, 994048734298938342558345303492000_int128, &
2344935475782110961932506869776000_int128, 5334728207404302438396453128740400_int128, &
11710378991863102913553189794796000_int128, 24814850720852765697767473612782000_int128, &
50783880545001008869849713440112000_int128, 100413581986706540265384660665676000_int128, &
191901512241261388062735129272180800_int128, 354600620445809086637662738872508000_int128, &
633754300371233261224758937559376000_int128, 1095866811058590847534478996196421000_int128, &
1833899561363356112200556687512378000_int128, 2970917289408636901764901833770052360_int128, &
4660262414758646120415532288266748800_int128, 7080014053191020067554366361020637600_int128, &
10419643323564142740929067474709617600_int128, 14857639553971092426880336954678528800_int128, &
20530556474578236808052829246464876160_int128, 27496280992738710010785039169372602000_int128, &
35696926201099377908738471904097764000_int128, 44928889873797492885136352568950634000_int128, &
54828475778193550639488430253634672000_int128, 64880363004195701590061309133467695200_int128, &
74452875578585231332857239989225224000_int128, 82858845401973886483341121923492588000_int128, &
89434944243400385410590417314245968000_int128, 93627207254809778476711843125851247750_int128, &
95067625827960698145584333020095113100_int128]
#endif
end module