diff --git a/Makefile.am b/Makefile.am index 41023691..0115e036 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,6 +33,7 @@ checkdiff = test/diff/diff_bug-2nd-prime-bad.sh \ test/diff/diff_f4sat-field-char.sh \ test/diff/diff_f4sat-is-saturated-check.sh \ test/diff/diff_f4sat-zero-input.sh \ + test/diff/diff_fekete-valdes-n5-qq.sh \ test/diff/diff_groebner-g2.sh \ test/diff/diff_hankel-degenerate-16.sh \ test/diff/diff_sum-squares-system.sh \ diff --git a/configure.ac b/configure.ac index 77d47f48..4d8b1fd6 100644 --- a/configure.ac +++ b/configure.ac @@ -189,6 +189,10 @@ AC_CONFIG_LINKS([ input_files/f4sat-zero-input.ms:input_files/f4sat-zero-input.ms output_files/f4sat-zero-input.res:output_files/f4sat-zero-input.res test/diff/diff_f4sat-zero-input.sh:test/diff/diff_f4sat-zero-input.sh + input_files/fekete-valdes-n5-qq.ms:input_files/fekete-valdes-n5-qq.ms + output_files/fekete-valdes-n5-qq.P1.d0.p128.res:output_files/fekete-valdes-n5-qq.P1.d0.p128.res + output_files/fekete-valdes-n5-qq.P1.d0.p1024.res:output_files/fekete-valdes-n5-qq.P1.d0.p1024.res + test/diff/diff_fekete-valdes-n5-qq.sh:test/diff/diff_fekete-valdes-n5-qq.sh input_files/groebner-g2.ms:input_files/groebner-g2.ms output_files/groebner-g2.g2.res:output_files/groebner-g2.g2.res test/diff/diff_groebner-g2.sh:test/diff/diff_groebner-g2.sh diff --git a/input_files/fekete-valdes-n5-qq.ms b/input_files/fekete-valdes-n5-qq.ms new file mode 100644 index 00000000..9efa058d --- /dev/null +++ b/input_files/fekete-valdes-n5-qq.ms @@ -0,0 +1,37 @@ +z01, z02, z12, z03, z13, z23, z04, z14, z24, z34, x01, x02, x12, x03, x13, x23, x04, x14, x24, x34 +0 +-z01*x01+z01-1, +-z02*x02+z02-1, +-z12*x12+z12-1, +-z03*x03+z03-1, +-z13*x13+z13-1, +-z23*x23+z23-1, +-z04*x04+z04-1, +-z14*x14+z14-1, +-z24*x24+z24-1, +-z34*x34+z34-1, +x01+x02+x03+x04+1, +x01+x12+x13+x14+1, +x02+x12+x23+x24+1, +x03+x13+x23+x34+1, +x04+x14+x24+x34+1, +z01*x01+z02*x01+z03*x01+z04*x01-z02*x12-z03*x13-z04*x14-z01-4*x01, +z01*x02+z02*x02+z03*x02+z04*x02-z01*x12-z03*x23-z04*x24-z02-4*x02, +z01*x03+z02*x03+z03*x03+z04*x03-z01*x13-z02*x23-z04*x34-z03-4*x03, +z01*x04+z02*x04+z03*x04+z04*x04-z01*x14-z02*x24-z03*x34-z04-4*x04, +z01*x01+z12*x01+z13*x01+z14*x01-z12*x02-z13*x03-z14*x04-z01-4*x01, +-z01*x02+z01*x12+z12*x12+z13*x12+z14*x12-z13*x23-z14*x24-z12-4*x12, +-z01*x03+z01*x13+z12*x13+z13*x13+z14*x13-z12*x23-z14*x34-z13-4*x13, +-z01*x04+z01*x14+z12*x14+z13*x14+z14*x14-z12*x24-z13*x34-z14-4*x14, +-z12*x01+z02*x02+z12*x02+z23*x02+z24*x02-z23*x03-z24*x04-z02-4*x02, +-z02*x01+z02*x12+z12*x12+z23*x12+z24*x12-z23*x13-z24*x14-z12-4*x12, +-z02*x03-z12*x13+z02*x23+z12*x23+z23*x23+z24*x23-z24*x34-z23-4*x23, +-z02*x04-z12*x14+z02*x24+z12*x24+z23*x24+z24*x24-z23*x34-z24-4*x24, +-z13*x01-z23*x02+z03*x03+z13*x03+z23*x03+z34*x03-z34*x04-z03-4*x03, +-z03*x01-z23*x12+z03*x13+z13*x13+z23*x13+z34*x13-z34*x14-z13-4*x13, +-z03*x02-z13*x12+z03*x23+z13*x23+z23*x23+z34*x23-z34*x24-z23-4*x23, +-z03*x04-z13*x14-z23*x24+z03*x34+z13*x34+z23*x34+z34*x34-z34-4*x34, +-z14*x01-z24*x02-z34*x03+z04*x04+z14*x04+z24*x04+z34*x04-z04-4*x04, +-z04*x01-z24*x12-z34*x13+z04*x14+z14*x14+z24*x14+z34*x14-z14-4*x14, +-z04*x02-z14*x12-z34*x23+z04*x24+z14*x24+z24*x24+z34*x24-z24-4*x24, +-z04*x03-z14*x13-z24*x23+z04*x34+z14*x34+z24*x34+z34*x34-z34-4*x34 diff --git a/output_files/cyclic5-qq.P2.d4.res b/output_files/cyclic5-qq.P2.d4.res index ea5b0585..66976a26 100644 --- a/output_files/cyclic5-qq.P2.d4.res +++ b/output_files/cyclic5-qq.P2.d4.res @@ -2,19 +2,19 @@ 6, 70, ['x1', 'x2', 'x3', 'x4', 'x5', 'A'], -[1,2,3,4,5,1], +[0,4,3,2,1,1], [1, [[70, [-241561090582981705665588378906250000000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9492462365454470855183899402618408203125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 580703017473479494750499725341796875, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1459404882419116020202636718750, 0, 0, 0, 0, 0, 0, 0, 0, 0, -399569978764801025390625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257158660253906250, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2373578125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]], [69, [0, 0, 0, 0, 0, 0, 0, 0, 0, 94924623654544708551838994026184082031250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11614060349469589895009994506835937500, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43782146472573480606079101562500, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15982799150592041015625000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12857933012695312500, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142414687500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70]], [ [[69, [-2580311649409122765064239501953125000000000, 0, 0, 0, 0, -345468832451339112594723701477050781250000, 0, 0, 0, 0, 101452221483395991614088416099548339843750, 0, 0, 0, 0, -72497261473481905832886695861816406250, 0, 0, 0, 0, 4019894775137229561805725097656250000, 0, 0, 0, 0, 2674222134194796681404113769531250, 0, 0, 0, 0, -10280514442797493934631347656250, 0, 0, 0, 0, 546208299622917175292968750, 0, 0, 0, 0, -2567857120803833007812500, 0, 0, 0, 0, 1693087010559082031250, 0, 0, 0, 0, 826342844238281250, 0, 0, 0, 0, -9489941406250, 0, 0, 0, 0, -4870312500, 0, 0, 0, 0, 46250, 0, 0, 0, 0]], 1], -[[69, [-3294014871586114168167114257812500000000000, 0, 0, 0, 0, -112359195486225653439760208129882812500000, 0, 0, 0, 0, 81869427996842142427340149879455566406250, 0, 0, 0, 0, 198215608444500164873898029327392578125, 0, 0, 0, 0, 6477785886562528245151042938232421875, 0, 0, 0, 0, -2364505522230366766452789306640625, 0, 0, 0, 0, -8627068762787332534790039062500, 0, 0, 0, 0, -1085007621625423431396484375, 0, 0, 0, 0, -857835439864349365234375, 0, 0, 0, 0, -764950624359130859375, 0, 0, 0, 0, 918900914062500000, 0, 0, 0, 0, -20708681640625, 0, 0, 0, 0, -2127265625, 0, 0, 0, 0, -6875, 0, 0, 0, 0]], -1], -[[69, [0, 0, 0, 0, 0, 915656055875129532068967819213867187500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251436693942036518082022666931152343750, 0, 0, 0, 0, 0, 0, 0, 0, 0, -619433223928859829902648925781250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1077598644005012512207031250, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1856272772399902343750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60397246093750, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78750, 0, 0, 0, 0]], +[[69, [2580311649409122765064239501953125000000000, 0, 0, 0, 0, -345468832451339112594723701477050781250000, 0, 0, 0, 0, -101452221483395991614088416099548339843750, 0, 0, 0, 0, -72497261473481905832886695861816406250, 0, 0, 0, 0, -4019894775137229561805725097656250000, 0, 0, 0, 0, 2674222134194796681404113769531250, 0, 0, 0, 0, 10280514442797493934631347656250, 0, 0, 0, 0, 546208299622917175292968750, 0, 0, 0, 0, 2567857120803833007812500, 0, 0, 0, 0, 1693087010559082031250, 0, 0, 0, 0, -826342844238281250, 0, 0, 0, 0, -9489941406250, 0, 0, 0, 0, 4870312500, 0, 0, 0, 0, 46250, 0, 0, 0, 0]], 1], [[69, [3294014871586114168167114257812500000000000, 0, 0, 0, 0, -112359195486225653439760208129882812500000, 0, 0, 0, 0, -81869427996842142427340149879455566406250, 0, 0, 0, 0, 198215608444500164873898029327392578125, 0, 0, 0, 0, -6477785886562528245151042938232421875, 0, 0, 0, 0, -2364505522230366766452789306640625, 0, 0, 0, 0, 8627068762787332534790039062500, 0, 0, 0, 0, -1085007621625423431396484375, 0, 0, 0, 0, 857835439864349365234375, 0, 0, 0, 0, -764950624359130859375, 0, 0, 0, 0, -918900914062500000, 0, 0, 0, 0, -20708681640625, 0, 0, 0, 0, 2127265625, 0, 0, 0, 0, -6875, 0, 0, 0, 0]], 1], -[[69, [2580311649409122765064239501953125000000000, 0, 0, 0, 0, -345468832451339112594723701477050781250000, 0, 0, 0, 0, -101452221483395991614088416099548339843750, 0, 0, 0, 0, -72497261473481905832886695861816406250, 0, 0, 0, 0, -4019894775137229561805725097656250000, 0, 0, 0, 0, 2674222134194796681404113769531250, 0, 0, 0, 0, 10280514442797493934631347656250, 0, 0, 0, 0, 546208299622917175292968750, 0, 0, 0, 0, 2567857120803833007812500, 0, 0, 0, 0, 1693087010559082031250, 0, 0, 0, 0, -826342844238281250, 0, 0, 0, 0, -9489941406250, 0, 0, 0, 0, 4870312500, 0, 0, 0, 0, 46250, 0, 0, 0, 0]], +[[69, [0, 0, 0, 0, 0, 915656055875129532068967819213867187500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251436693942036518082022666931152343750, 0, 0, 0, 0, 0, 0, 0, 0, 0, -619433223928859829902648925781250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1077598644005012512207031250, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1856272772399902343750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60397246093750, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78750, 0, 0, 0, 0]], +1], +[[69, [-3294014871586114168167114257812500000000000, 0, 0, 0, 0, -112359195486225653439760208129882812500000, 0, 0, 0, 0, 81869427996842142427340149879455566406250, 0, 0, 0, 0, 198215608444500164873898029327392578125, 0, 0, 0, 0, 6477785886562528245151042938232421875, 0, 0, 0, 0, -2364505522230366766452789306640625, 0, 0, 0, 0, -8627068762787332534790039062500, 0, 0, 0, 0, -1085007621625423431396484375, 0, 0, 0, 0, -857835439864349365234375, 0, 0, 0, 0, -764950624359130859375, 0, 0, 0, 0, 918900914062500000, 0, 0, 0, 0, -20708681640625, 0, 0, 0, 0, -2127265625, 0, 0, 0, 0, -6875, 0, 0, 0, 0]], 1] ]]]]]: diff --git a/output_files/fekete-valdes-n5-qq.P1.d0.p1024.res b/output_files/fekete-valdes-n5-qq.P1.d0.p1024.res new file mode 100644 index 00000000..c8513e88 --- /dev/null +++ b/output_files/fekete-valdes-n5-qq.P1.d0.p1024.res @@ -0,0 +1,52 @@ +[0, [0, +21, +38, +['z01', 'z02', 'z12', 'z03', 'z13', 'z23', 'z04', 'z14', 'z24', 'z34', 'x01', 'x02', 'x12', 'x03', 'x13', 'x23', 'x04', 'x14', 'x24', 'x34', 'A'], +[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,1], +[1, +[[38, [18360166036973065412158962444441478523221590442071297923188404436539096615596949603030144406736978184824178700005973254253824000000, -2563901767744483881358598439181948418531323342762130072712381773542968291226474159028227884808645380487962203593334775351360000000, 174237174496265737937124043895926508811212226726438808755355124570077362186866396228065516733034952107405051218940635672423520000, -7677456187105199204949150249346268618526673847197916208981096494282470613533412610748075835312088065469033264665029959682008000, 246575139829152930631965886952465423845147493535566474637381992313611596669734574737880022262162513111931625414690204100838800, -6151934826818655015963906622650013577013679315870520121205546507689726899726494719684909150568139978448042701240213596356580, 124096233479205955353994630464115794244843116050184976793680649149377176823792850047008803969912069734840488683564627152380, -2079823106424788663296546830929199716083061077579713105593469338826670005834497980529465742685283643240149525677228012529, 29535658021681835232980281691340671926915452109985461442016462901591478275295544703806733688821939599239687736108000385, -360668014249736370738954642541946954302669949330520043985898812390039291827157327513940011589871399531038283771390428, 3830209614269836885734361844949402137613686817645831584526282535088854049173743400859519771461264085797395975897840, -35689500953703576782817681833394914186343685234063500709519836351008388555699452689189106682526769042200103054288, 293840891980320018772401344527764074024843682771601169668905322383249746693566438259722546114449560830033820800, -2149656645928866341297325386742814098522380419622307875841068558766062807953152411705532251519695538021314368, 14036102628042465563481160921860011114285411867970025992241146932598542514826695543715465877910554613172160, -82086462184170142891903307265531368322026155705761156775328809379898164416855737911805011338271454882048, 431146557909175551343258097034449877883864599644946005710907491547512800230525202213732386749559639040, -2037913147082920247793865566006775002482772131746329595603133588417646070882038426044870605986433024, 8680841882024456947440005256276163069873268444132987645099508668038339956836039205659066505297920, -33351160845073240057040089195784484352867902903443261886894234142225347917180005191829696655360, 115598321815048335919450109975187765872911625812782227222694574641008693772603876456702668800, -361382303618589906371084743203625864727536902107514837976130363953376188973677047687168000, 1018125580415426492163220919587367552935368968988541735122167785392812422448855162880000, -2581360803517204901850364236922720101631977753454383697780884214640024345578315776000, 5878030426290391807147329429456391982805684033994616969466681636739638781870080000, -11988690090903423358758037394931568191283453039469744126943484977655034511360000, 21824448296380299576033345468643441250540311282588274823093083633376460800000, -35303098653437807356696103355156906674997772685733837498304444612608000000, 50460430832812896511371801613868579795656845695301971444834304000000000, -63286152842783508179797756655401215980389320160436086485811200000000, 69030148887955409273229615344038503643631161273273810944000000000, -64748532656134242927937677120699246004901616895918080000000000, 51463062714243427409435981709616492292632844697600000000000, -33986482447328212873650773995092328581169152000000000000, 18147928248415886522646812997061957386240000000000000, -7528458106263050282964375881279078400000000000000, 2276511936805205145117140189184000000000000000, -446377455120634353392025600000000000000000, 42597333249416390246400000000000000000]], +[37, [-2563901767744483881358598439181948418531323342762130072712381773542968291226474159028227884808645380487962203593334775351360000000, 348474348992531475874248087791853017622424453452877617510710249140154724373732792456131033466069904214810102437881271344847040000, -23032368561315597614847450748038805855580021541593748626943289482847411840600237832244227505936264196407099793995089879046024000, 986300559316611722527863547809861695380589974142265898549527969254446386678938298951520089048650052447726501658760816403355200, -30759674134093275079819533113250067885068396579352600606027732538448634498632473598424545752840699892240213506201067981782900, 744577400875235732123967782784694765469058696301109860762083894896263060942757100282052823819472418409042932101387762914280, -14558761744973520643075827816504398012581427543057991739154285371786690040841485863706260198796985502681046679740596087703, 236285264173454681863842253530725375415323616879883691536131703212731826202364357630453869510575516793917501888864003080, -3246012128247627336650591782877522588724029543974680395873089311510353626444415947625460104308842595779344553942513852, 38302096142698368857343618449494021376136868176458315845262825350888540491737434008595197714612640857973959758978400, -392584510490739344610994500167344056049780537574698507804718199861092274112693979581080173507794459464201133597168, 3526090703763840225268816134333168888298124193259214036026863868598996960322797259116670553373394729960405849600, -27945536397075262436865230027656583280790945455090002385933891263958816503390981352171919269756041994277086784, 196505436792594517888736252906040155599995766151580363891376057056379595207573737612016522290747764584410240, -1231296932762552143378549608982970524830392335586417351629932140698472466252836068677075170074071823230720, 6898344926546808821492129552551198046141833594319136091374519864760204803688403235419718187992954224640, -34644523500409644212495714622115175042207126239687603125253271003099983204994653242762800301769361408, 156255153876440225053920094612970935257718831994393777611791156024690119223048705701863197095362560, -633672056056391561083761694719905202704490155165421975850990448702281610426420098644764236451840, 2311966436300966718389002199503755317458232516255644544453891492820173875452077529134053376000, -7589028375990388033792779607276143159278274944257811597498737643020899968447218001430528000, 22398762769139382827590860230922086164578117317747918172687691278641873293874813583360000, -59371298480895712742558377449222562337535488329450825048960336936720559948301262848000, 141072730230969403371535906306953407587336416815870807267200359281751330764881920000, -299717252272585583968950934873289204782086325986743603173587124441375862784000000, 567435655705887788976866982184729472514048093347295145400420174467787980800000, -953183663642820798630794790589236480224939862514813612454220004540416000000, 1412892063318761102318410445188320234278391679468455200455360512000000000, -1835298432440721737214134943006635263431290284652646508088524800000000, 2070904466638662278196888460321155109308934838198214328320000000000, -2007204512340161530766067990741676626151950123773460480000000000, 1646818006855789677101951414707727753364251030323200000000000, -1121553920761831024830475541838046843178582016000000000000, 617029560446140141769991641900106551132160000000000000, -263496033719206759903753155844767744000000000000000, 81954429724987385224217046810624000000000000000, -16515965839463471075504947200000000000000000, 1618698663477822829363200000000000000000]], +[ +[[37, [70537026487454782089679962412037595992115812925501099804326847034278419384810168428532549315346072509762650675986602684704915200000, -9580600801113104762606510823706573221517544106890104323668660593210858447285828457060596524516717538124481346301038508146084320000, 632803941546745702154897216176331184946420270469517000868482326633058914449891948123845480397278549806575968183823237911098088000, -27080143020175749871683781446577903353572726139778653870665030607951621226204860445062693192990541238009231228464353913287541200, 843989285381899367696916474997992539179372129458397258960142199063074743441095841481497596654257705474627632188528448589940660, -20416485467811242889146066666421153167069925560334368259457399316328318366560169396760211462906126475974400506930127085657480, 398945782001957617630795179306054645933883060548218284561452397219927382650385783231647521713801266417416802782625940218023, -6470632437863361236112710832681962131187925062909041012183513492712075574332209216904696231306670326826240842013352341605, 88834815821935778232184073744508470446135392675463828279594625639706563400634110225255214386143692160998656992524412688, -1047564760396100223952371741106335591569635334395012876463505315510260562986487583194856205935303217743403631638252760, 10730477234757357842281080372671047086285235034304684646944315439155050913474098733588321081199234740860052017764608, -96318372828159786649039481383851163406107556283710926722017103712627187354520103191038067035548328403816805416800, 762886804273945698913274690414353449064753474035627372945298201181649277487895576410885933557928135989728442368, -5361130855586462538668217545470645869358637809936827502900766725128034184117573590277370890520306554031039040, 33572291171978500473323475035451251094749228059509547650276155751353994499383032968599202635721148625170688, -187975639843492759438614873116575177641834088819435126224403528142736987668846974696411953448265632819200, 943478158149467952366817062466969379241961590549416061174009569408411661485540996965322124956845424640, -4252793396438843608039341703977450337144525565490324931865734005339470804298194445788162353449840640, 17236505546293342385813725830742313728108431606719599350635596528375604074832995017989569751347200, -62851110860187074913618657213850089234992553165764798464341570313432249337516901051050970214400, 206189422028615839354629982867074262330021204136305816030218722620854029853404897520857088000, -608212002975863587738180064071007254709938837813214846497995680318073701618776070615040000, 1611239910617063516367107271239473348265889372801589805288339867251754568541067182080000, -3826320739971796230557307432413356859314646516170521980274969479650548124406169600000, 8124685971728093774434343617877450217643834748235598775752303240883653130649600000, -15373398476570808199326543840309306932711963227010265943947806299098447052800000, 25810126206658612980882865481007554173473361455664942638555169041235968000000, -38237071979486845808051161498202100209772216980237726314124886343680000000, 49641654484030713370040127606481886532709223529180288106463232000000000, -55984178581068732905764574061860820299051545432670013751296000000000, 54233086181915375795030889366414368488348783109619056640000000000, -44472084187363283049291545331243425511353340867379200000000000, 30271429136304399733418221509045778978304950272000000000000, -16645287996022731711421981841649416798208000000000000000, 7104502375473288649782540318618628915200000000000000, -2208553332611982924097568202817536000000000000000, 444853413411281167037308600320000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [34766188778808313428299679899520930567600107939572625356987982678684232015474148646397103327270771331192507958185870733077587200000, -4724227665884578928723598866807852642727070478417042717660143054160177900868944982102450533400791887547298976007948026331524320000, 312178810388032355196810230731077523013544530943558209315256420792001776703224611450052780625754086079442517852680977088647568000, -13365322184599648999515304263402750686392287104236180382095008892156742378521958237964594105451451135722229806082154124835077200, 416732847089403828342550540712590583691072516259451783001913102806644982178217659732475403858530318728054754615720548384932160, -10085378940982825550118031485821585520913432028730776110296142835070673565934895073757082970360613795701843537969208371389020, 197157677848358563572524339876406812703370277753718124686332452023509763435416001827574663164437668524639686614380022270938, -3199140377146245759790698343854783746437288224248899535511539303090502832385242990606949518247818819000799890821125987715, 43939460507421031098216541757253228090448801107827233547418923044364103783286326692353254940745890413897244290434370597, -518364876258873118056176368826174652715904827882929572275254358857977378438130976576884809267842476840281848848743730, 5311964298154790781636308175970520121955993524063498984748741857616820270876602089919178250821421384177659750285852, -47700721701983819162354720254693002672334043205783128955990296491106737205904611841355428315601767057747389671320, 377967035513529656369517622020463191040454396680126683352052459342642607828758347460255550857809671175305603472, -2657214237857329765909271420412688128081040238681101389469242974391354462733139355571866172784921850829404960, 16646611559423697178875342050267895137687576887121457906668149620551765906469779220463365625419267885660672, -93243705543322747431379233137590608723922361982290487303738010471463689401394787061482590465093866919680, 468189105959585815458683559341492406743416894628058891468942253998934131285507646642505558110406516224, -2111220913402816332324797029600554689385524194369317032275465970734320141398753444163879777131596800, 8560064256061923535335160310789224657710432868525512492282332179603343029624050822812629675304960, -31225374697769905900194040706392602296922412869362577490045054145233435015945027911302073139200, 102477022752916367402944766895110662052301987111699394438455897599094570393608986728411648000, -302398106108752974263615908461014014002899967284370642974343887631020501790556043191296000, 801395359665031372890680415418487273473474393073268673841472186869046522640564156416000, -1903834148696261279564649067035668586755424615416991483232498742426924388058214400000, 4044027255732353074868900927667741089295536047179908732100609299227066093608960000, -7654833874122672123420185650785894399174184280741333530380527042556541747200000, 12856213663065328973988136973200596824545743808901111695752804644216832000000, -19052999059838507136273717293932745161599237537115527082235643985920000000, 24744543732929014972405651792329017314324221763045940218753843200000000, -27915907094374286337370111591003890295221517366580418576384000000000, 27052210245284817862698890163203016432338374907611054080000000000, -22190991828054586567002516627926671833750508771737600000000000, 15110254131170843428144065349337199501914406912000000000000, -8311484756304022734995432842678765029949440000000000000, 3548691802668481114652760228466419302400000000000000, -1103541626425001975488004770234368000000000000000, 222352940193697014998724771840000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [68878343801703448906322549162425997623866962101936231330846287835869887125189633242855975460784710953089214473808431626945958400000, -9362472823130278360695736510421281231644778449136172183999815271274552705983528497537086005559293341056029238766386365024898240000, 618864825319903925665678009174735780836569773517520889777784735527734324292303833230579152419708436199604775299413001354801216000, -26503482599216989618311938479847092595978109649984442037170946894791691637327046487673893125036096193462867630956096389584086400, 826629517210593522999663758795222847160270995846486918949597630911765372169560850873382494459991646407392154599274694495590720, -20011222000541833901136739609835587318134425546875554672503005701541629971219462677653947547925728465370544867674000590077450, 391310829685823154632612536310391094175275962547870291226925402920884429815731955076160557045984552282503910746684003735661, -6351361682967820651055984364907946405660658790525034573737537948908885573333396672699070824905927310238464687471792914029, 87259406134308484367299956930281452896704178242346038076513446889059094517155389740985207315663734697818758720828036336, -1029711860172891875759835135136387567752522087308603488590827085846401469459125539507862710386716180500315221662516184, 10554959264033225436961238097635037647706073995189483084586652700949903801705524211345619925531290014734053572045696, -94808286823602081686002389725149758711595237344299234450846959910376776429664680904288378497620295718903288410464, 751439286442998738548763518910328840817713411538790273493925734268846122221832596479055396447403077611615543936, -5284256300960322577032830024084590697768332141989400866380482166449566681673607051105414048590325042371340864, 33113051533877214624974919791545396878075570266087778759516643750711281350327917076189243930071696198154496, -185527240043295845789838328876456009594426906880209688684873369796435111419958034169195637840793510324224, 931800686679072184379968751844055934755188986130649079072933728419217052366544352710616513439970836480, -4202887289725723409156349271647150146543770639075871156208682170685307571069808627584553759031644160, 17045204992964434789267893636295234198539925131564112118073715441664083581266421666255453275852800, -62193187661205880283846100261584266058438365894665629956838697983345316203398188430433030041600, 204159899818396324944590134443674111624147841705836202403172769284334431807725745565167616000, -602602107590266681367970782583900908373075208743430275530374846206128441281767684501504000, 1597367716689105822502490439628269190196661481916095184474475214728463971695690219520000, -3795706064756676708801432854194257866575575112466306487184344616588827016411791360000, 8064581123235829503041427132541602663280977191014924445954279472222268057190400000, -15268863206045933843839755395929872493609969640190008591037326180061268377600000, 25649927291558710210789985481450953521856050480978611514299305473032192000000, -38022219987911352751879830648600951730375036013992498023935643156480000000, 49391657638390600806926445080804103989696048001475306080849100800000000, -55734601234321831966962319174531726416892793695000594219008000000000, 54022403202804903774565383729520308899318043122073600000000000000, -44324603132764215405897991409860715087621899734220800000000000, 30188110131990764805203085631722497222903857152000000000000, -16608783247060897221779952534538952229519360000000000000, 7092863173113954207251020100310505881600000000000000, -2206150686618950251495694926872576000000000000000, 444612386340467102590257070080000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [69562857434990405167330039419190905055378709714785822776164683002144047417085824226102833422274591995654099276189973484047001600000, -9452514640887077578045530272282083977710193494250716433316059275042051566179579353797984810301326049161942695841568321689402560000, 624620267533124633714835599440883278617075916129613280356281731492457864581127364667439682231731964313005203906850131105026024000, -26741643599356457034540591890762708261900828624501358604308009563639646407869492598650491876272131364914392647183747808418749600, 833800817418036406271605783794813403291684170104227216609817727731167153609988426927226343705275654121889938628059021202017180, -20178674383991884242850660132375246507212058425369480834350310385813482691047039407357857964645858193801052528789420855082180, 394466244718857314495143820450422643574449692160073706688654474818301571024970233711376377118272528630062201001730968142549, -6400665072196490779291474453971517127889597496572399063616760745552612767949095161487799175281092749442821558785610284725, 87910772454985613967291633682972880672192267200897866865827820121783124506070860161710913143072238717360709473900884960, -1037094740945666643753727575181038604162612100561792689788167967942555138717754749404761924251386347739084623563912600, 10627556525357801407884160412558782301497747607107222842336308143579079045655840978394454300172265176260642129648000, -95432996390341436820910595219367418174792949835846360601998660433296643832562265974361379028241783082522396335840, 756175833491244507668294434290684550709860431925483114226725981619518866234114735637279285309076896744665752960, -5316069210573295922674843481540057852349071007980659408803537828938787977288427678338604840045555406661270080, 33303127220705522699622230047456382181168881580725228248091741138753434543288036456922026016068613181262080, -186540759534416502137697103157840859749897802899086177819084155846524542434222892860555042651507872778240, 936635250164838465120770304420672484354395883965986146556259680499724870040661944029689788602124025856, -4223551409682042286454015230689340713943487725293763970360604637812842267775950211334037857036021760, 17124424161510194380153083848161718325474836422363779779335522975723769488897757147494701530583040, -62465668593072516803405570128521698618502366336749129988170036706678670374660179438114561945600, 205000515697305305921730481657279187316991239030954803025157899178429665473756880464695296000, -604925900297440191682571956044862673827632692371023723632522111377638989019066443919360000, 1603114470093397715687457495987989542120790096582036474023248042799306486347324555264000, -3808389525669841178320296327240147913729779115760350003975175199221149788267724800000, 8089483696423896447733246401939584213197702177695319397991026229871480352931840000, -15312176382040721047239583686693080405574593834637851434583157660435374899200000, 25716306956237037846829828961177375586204117719694707572594836799045632000000, -38111248471811319451303888538685480266373041979681597572373197291520000000, 49495251498364643318360517434588234744213252106354945903132672000000000, -55838022607013278724948222291193153276997826292906232381440000000000, 54109707568526726973256410797631831944287076613567283200000000000, -44385717008043441131095954542264397367263402917888000000000000, 30222635666791868564710005774741986231294361600000000000000, -16623909595950674022311087919253996280217600000000000000, 7097685892509349235307225569105962598400000000000000, -2207146179566243648758315883692032000000000000000, 444712245848892601120032030720000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [34736562309425105389812522873729898490330620628323607772844575135993016708048346659583413646231147700945178256345764807047801600000, -4720359733771342595824668340077220391863472394610656653277647940755740925736727402925196896165713528176384196901486232540152160000, 311933455304499075590009994256390826248350553623782112053391960428575921975735529049216068443745366307211369907216266954780584000, -13355247935565965250011701820867847180959604749873888289595047582974892022368168641661248782677075871820203832623775465957379600, 416431887351542713250563651006589663598927443204213062914245277069432786221098195243525448312755475197156109883092489556999380, -10078407670648337499080877155168374132002025964093964911995783372070960406295677708401760137809901808820780682278499165049440, 197027382886717375912500071217549787138363375376975142647986435398554714400457108848029367495489713369401335863319398194399, -3197121370872683187132165618058100685015375596564089842659289833104507574490761416504977321164998763003906648137305935647, 43913011224159229927049538083848595383031546904105908568259513299550864297545032495721200371224509149666514272032873375, -518067655716952529015980874660588844812522216091282599749957327061047402145151637079927235743831772542104909602746682, 5309067135675381220943095041977968170032893993948386201707509956618233476023780541501061004004311341035170580437700, -47676012182030184319989458170734493768344107317720768631779335096086433144052406538244704981917827857189740867032, 377781377378355170564908043285405165748909033090130007967091646787955949387469767369474866054750423098824372720, -2655978710299058248128845982265311066964881585169266987842464971455014166842414652141269328008175117119772192, 16639298452612278817360927908501451172363765426863850771139888569060357616221895695387146695995185608192000, -93205081162333286089432571292631523546517876553735601510644581653224443590539264165298286377827440091392, 468006646291204415066408129174458348045089065915284683824042426957519823929383379394544652204278324736, -2110448711103528948659008053634739727144040067079532846940366075800625551973844362390959617786659840, 8557133554481971433444639107320559506583229073594282588653575036536579075587835277581871675709440, -31215397116094374448287247923418041337620462648206201918743473701407250305356730585830557900800, 102446561104625240727007570234487798067627866228994678195332584646083916965565579233316352000, -302314788539275418802054654752122721835407895475306719610670551617618252096926279697408000, 801191533545386157144449063000637969977200819244186115514976187816099797442831673344000, -1903389224928214088466213119420034434178694934873946797769329541859647962977136640000, 4043163456458611406886715486364127553036144772030861071067267083214152587632640000, -7653348563544141201545665076304832258286795947564250265611629872648284160000000, 12853963746954491846254324403523340289635015745026683978373231318818816000000, -19050017132213521503217441538953658199402362331759368511341458391040000000, 24741115746258839678307152890801746286070339120299122616732876800000000, -27912526837291560321839883018600602099976783765735079280640000000000, 27049392484460422094245492095259149895153373694189895680000000000, -22189044549578251078518088662139504807920787469107200000000000, 15109168363602940887372130426820863314641289216000000000000, -8311015377417250723382793526613419134812160000000000000, 3548544179109060959395942493629867622400000000000000, -1103511575789027829453630814027776000000000000000, 222349968319747314048565248000000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [69562066267607875625650427366516341237901583932177018370366875917315398678249380983945292729412788071557104165300107743833702400000, -9452459008081096133130920677570078151371480328337663070496158460335671154558892148645566232813762538928412247037525077588736640000, 624619858799788664888944574941779627862323068630653786847814819959933036763890998418091369424401820534014728717369627167380816000, -26741759092524508282155462177887816970573679337475578441795184224279353928619229675787198632821442436220837491379121516424042400, 833808348980962702955083955068349736962143710797134299426637441275540732226183236133277254482950523310708130285157112694934920, -20178946512211123774899936581531796560021256479536833141299062195010269454721391799090198263784571423885823855717628205771890, 394473217478036561380639720304261355440807674313402452097751761436121784907514949960870624011067305287277311371422536322711, -6400803341630964062715719261220535069888995678172661079068745966974837182183505651053369481199586188907118132291311089421, 87912993212546223797507318598335107772290478195160316944178335050224818049311260490430192523969055364888346740579322112, -1037124455263984026534119687689673516346818880052358216431123356788714384568245702024461107308182347210273112666952856, 10627894160884035877088393078822886483894732227461867541981514901483571716968144953650052676162438828225662387667712, -95436299682261747931630195551025528060504519625230044624426702334802899230994127187988827215122032795059033426656, 756203948370142054477025960956295625758937488227941655340055988608677681399111971129761811712463026558103041792, -5316279017822122924167123573715404685849662226345685220398275408330832298557969343228436174361986663077110336, 33304508278901714120445060734488362634510992996072319985556022774664628206844284160734726523964908337135872, -186548815319726096342712007436924897388343207724897546189801588042513095850514487004807663398610360764416, 936677033932398585907549371077503983133167707232856396636318111334827208486807275076273882701379158016, -4223744602622296075887364864253445587613022252334707019924972973629356121975750668271350978979532800, 17125221736939959585731993583362751653891661498928787422222168896360605907631106857995046255882240, -62468611167879122465592500182037694363805278853051441334222317065432062257064226073502584729600, 205010219002493407900685854733425753669914834687481570175465140006600418980609516661673984000, -604954482553635176740880973576176898072692184594232347941509760829867057167794970456064000, 1603189577844638837231159376831727860210129491441129026943814030943653473414528139264000, -3808565224198267933511848162932804509955152785802933355659184995487953688597872640000, 8089848492369704297793563860810981108416506690815911183289258745838841627607040000, -15312845953454313581670047755849091589368926807175326343194775699528704819200000, 25717387781882401125596888054004150637560257372618217079365668376625152000000, -38112772641387723723704122406098546995514790876040936544210642206720000000, 49497113248571773027607411330615142372780626895708917614608384000000000, -55839970803102121275391025972123454068207844821837874462720000000000, 54111429008581861618329636135125491075956466915737600000000000000, -44386976715364364029154450885228857031476232847360000000000000, 30223378723310549592135490242556658958697758720000000000000, -16624249126245865857156145488572340554956800000000000000, 7097798674869062473546744813624649318400000000000000, -2207170410015391262809820340682752000000000000000, 444714773290665399825853317120000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [34369515922132248367812788199863630239783125515092804594615110958532086085010064045867629516482495523891226552720285277811705600000, -4672112725264600011932515904406184713075217420637520463350356840208697834414045156272444982065818753423256746731957725149230560000, 308851728840688151678659273462210379911752062629532536604488446256154118646863466541588441751310630100372564394722181174804744000, -13227816323547648273346114570777966083152082602521948380678192340464616831660784945783488950374041564539757447074103554980643600, 412597487605202558643388349284051529941307478730769776561742196110397777528391239878339235093554800350038662728511783348856580, -9988936008651685194758793054362067464132858957278839396469777367127641193737038615623588995643074005073820945419129504924740, 195342588096680732291262536131777617843114346518317454804796520254731625292425560010352238027628045421247197867549051862049, -3170814739739342152651470306055758945645197275010349447658891738245594665564578723986807525310511045981928229727343371845, 43565704476496827826501402002538491740659959836604203539120580582520622829506560595711789462045144587036828973867554519, -514133833833827940212650084842286014206813157224029730359775558646772419966590221805214911739329001731153447685773490, 5270411628299210317140477101404974237233213463490642668141686618992000504824988619140682053567058780468248875920004, -47343603066039196286296905791205971955146655780796012378099986918760230738423019889144005867773951004035512287160, 375262763946658787863575279544888357870711271641994962252203556031037169319648013670446009116778746971096041584, -2639073945034756121119850465977972781806067515025457808114935963612325821449392463372681839480796315093979680, 16538363970509361569636358034882838497090942957811552665649251664983466877885753419702451457371026015046144, -92667240763764239227646971029880001331786750991320357653968767505876425744181028407719570821778924437760, 465442823884769862950666600952682997492765073874316164635258092906666377673516221141618775265719109120, -2099497606702620106284339023119820684640489498071517199897631531350432412772739007098390422615884800, 8515178668598212299475958385954897983152070726891508623027934343735206524816700248515997327104000, -31071185410327410039779757153073234730949196478936231431868602411156164847198394145050455244800, 102001955486910791800418244928112608653479824718255008846904494567712108772260626012564992000, -301086533722602293562677391573727723689812377026386982958409805227923216792697598956544000, 798156048357576078641600734038740457642541959210215256290214664055627663195714856960000, -1896694103166477220191173745069056558798395333955915937893348906596317112357171200000, 4030026924756986954955717547318520189403868139290968420758327243102123075788800000, -7630515041423857757686990592988122553763737011311878411576913464491816140800000, 12818993003112002923293481847036304358867575430271535345837712021610496000000, -19003144834343654390309746226568958635600999668908257158006187786240000000, 24686610386921143381617431162562072943909449250335762039187046400000000, -27858147507837985751779889997974633580627330198987193319424000000000, 27003517253211728085739816035034923804606726235776614400000000000, -22156952220085715312987572718661469755454631863910400000000000, 15091049904061895488609098177047517785506185216000000000000, -8303082427831772148364134671158256892641280000000000000, 3546016554623877570095381700879895756800000000000000, -1102990166280431706369634250784768000000000000000, 222297698552028063509973565440000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [69500606644348259031241200112387304155349874477962420423951573407292184646752812154776590475006581736454777880662644618013657600000, -9444370532205224609267563930761671510690739150542217966147044869149364168052799807754020570053203796328151544220239069765722560000, 624102532110139747482569863268878098390603114709589533555536292377972524008527732392328145137568979244718928114506925849654304000, -26720336568897747543942397073120284681019988241826944682038056708993754347424541243392084426430678763404585148544043973375261600, 833162750257495322607120028568884495188009727322465402119150200048971183156379626097717632881536544183054752044348440394758880, -20163857085550105343882041132720228218790407500720801866577478842848953185650639049254809287941301026913852881641294546597400, 394188570042713811649308071886889325397198463478914671884986183392795018879081075386327299661387030748652355138939277388654, -6396350364097252233226531444791914728231284991383091225232350921702335982452615015244125917739065567471922269805637772921, 87854084933635877554594463477096835224106610718883411754168563899724379500616068038767046902387591279420808407900552488, -1036455789143761434963625301151236230437313970084246679262731852428571576874586998689670398445612503388262843388430056, 10621308611966027517064676425896904591829634018036535751772397925221645905365821131073044934168908467376528266466208, -95379532842622832151340179869389655164959115354226135486207569356021038778157494822242489656758377580397919772896, 755772746710728907587808433357971149489683290008637976470571000806433882777835701857590127275837571494583072448, -5313377122302440061890521219569404286871250366149432249965468545041611176232414924500765813690983762943223616, 33287133345847339686273818140930339985868051817589231933677315296675184483211237676309609190586933109343488, -186455960215753746448932012397236724014945137602468323034413872632134121345079637487830032031587571173376, 936233049794834153353362383865289587001433747507864111361606685316557136154551041168712826359958093824, -4221842107852523703510173263016787929003181411278892873084759013120309898863066030129418504952156160, 17117908772212618321514770641582573389414994917306656335486881681719671171529081918104481036533760, -62443387014635462705162906978750860059725828644992363699012334289939384015766766642953160601600, 204932171983842643616554420095237615566557449560023666037362205822570832876704872058978304000, -604738063441114893207105868687771652837775843819832696798560153225542036512331307012096000, 1602652642763829089801953772348996634683484107678629048021478140836035959912665071616000, -3807376175414793736000747528835711692000574986994627065446733063518291923324682240000, 8087505717008977939829076265374174377093033028642772710772067719972338427330560000, -15308756239497333104862596291819253770388753702404559689341576907928386764800000, 25711096249107177689379143854207154501980252246265538268469453143818240000000, -38104301129140001540163852803508930206229391683086941098328150179840000000, 49487215450924002808380579225286577812282399297575207652392960000000000, -55830047656273211623906759660358704576069963616417927135232000000000, 54103015608936268570973156847731830580034297534118625280000000000, -44381060642024187558960589882841359538075526915686400000000000, 30220020930805543309145171479181652000289849344000000000000, -16622770941922630482821519354860012988006400000000000000, 7097325056465331008343276837301911552000000000000000, -2207072149821452429919422150344704000000000000000, 444704865150951585573482004480000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [35217130188809363092941234914906505928426835659503158324532018386754606680081842705311293555542481720119026674951827498490035200000, -4783582683171480607689416694166068588708477957043224257063527431689526833181882883498459280770582207218153872521276389880499520000, 315975210558312376801403796603296943337521956749776086489820313834121751392001753801379957330868212133361420591767394067637448000, -13522520899776749649818711114331672911373583508720457386446704742064620962554810697684106951863291430584024663980748715519567200, 421469442419768208125461138370685416877239615169915423703784985905675102071276074391293021577467208682276237374100323361200460, -10196055266607679238571643631705967026958599854737464399540022726776366172712755574686247983175841351017748444377150882678660, 199244665654536381942835734283600899280025616811536933480318600337596668025917564954076309579430205708027190026535627133993, -3231772493059223019891922805313649846632449861666888777853829004854614763034107915484484092010706573145787270367969290017, 44370884037998887736396409853404207858931877070074895308534088789204338622401329813568278471167350268433362071196081843, -523258375169786865564279720261715001193908359389702416651870581836402431344893861408666702947981133762747622180260402, 5360118484071650833100209223625004036067797444756624098981099647810260971186155655423904535963455919059351205337748, -48115405623757599139173538019243852789026797673408171754862632302680051985120857914835698266216808159165039425592, 381113560650350504121227314509845376707110679705748102418528420633779539597057368519481180390926698717730507568, -2678364129084358613659799043723151435922841927286955466262606096399895048736485838880762838669229011744629792, 16773076984418778375055696590790550579364699559001935134067478394897349137986726438129840799947105739291648, -93918579924244185383063042836743164244298298907176242510768998839247794695191453085654266097632143046912, 471410907724663991871873761045532809608703672562560020977458624048598034009285555322212493972691914240, -2125002978358782259509783632238154603377225809376066866320499825264204052421193172683179357575193600, 8612943911371551448289938679164036384811683046597120544885929468190434902813347294524960365312000, -31407412063385871072082414515140747418412320718540404836187004805292655944266317354292337459200, 103039096426125580527081064691115949384307182779645842771817382954765980742738753165370880000, -303953245816480557974388458142037277780556387286418321912372105915828067260324319925248000, 805244609556629179887282394678042933216640683998244115067228299834531444032436029440000, -1912337262431434981569165299373969742269361764771383944379956451079524236187873280000, 4060737248439591098442928765048582471662799101594279873243306082403364208435200000, -7683924230559696662293874039776761951000219017560573694186702225099247206400000, 12900837427140024706637044522755142983899781558173958864459925610717184000000, -19112904658991180175644681619150344707723334328875075329457320919040000000, 24814316332463923049910538598119400103688520108002347870437376000000000, -27985630532413332239143499743349417088772752931676731342848000000000, 27111125427069538086190495698872830317203438790188728320000000000, -22232273664024091066701131633451321708644691188121600000000000, 15133599066101908485077908970045942227236028416000000000000, -8321722979423164349089910184611426598912000000000000000, 3551959379746526346951212612428863897600000000000000, -1104216807947388979587772053454848000000000000000, 222420739529207894439320616960000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [69836279828017209784203726472607852236086259887642201988110226893504308103191084035563585885225182367576415107924598635950323200000, -9488491019762461317277963503923948602396587220801942442992620011956909048868127281149362757729777126552846978544016047074101120000, 626920599956644710617283708095358184686074168917366606766440778474747910585575159291349033918105993306834582490512808631988888000, -26836865890914220122519728961333066427795689206306016661456101749801967554369415524869227603791232268596752412139793158577083200, 836669214159644071583211262155785742678504300686442284104908523479400163827865676829034926673604524645584174721816438090835060, -20245681838921574353924186086166249990370749653867270193429881470634099434202805894360236549764535973686087093396967620586660, 395729513543560715974443755383021677477271693927320053468803308509461607050872659303147898612704794632317003718171716875523, -6420413861618940177631931702851005399459723460998991476099133103504679963102187162493406930318453909497141063030864647229, 88171826381407255355308122509022948271359251965139941639894717094804374105798494812858131820456177162288558665003835400, -1040055402176904898390514688959696042645042626870946098496958467759239617355190499976317461099082698675464514479812024, 10656687675664621792853996869608593477165101114676471001096181795058981806187361611529622567348914337642778696493600, -95683842049965755341747045750251465439715988854914379675545677877102219612406776514753366282192368549714499369824, 758079091790575790516023215988521684669896292494101206923310344459691417209276776645878649424770155878699155840, -5328861934266045835619339159765501174918558860074803004009086068298392750112742562474566377746367112732065344, 33379621007796349487982005048329529710002851008828823594297616263196569618306495215614025730809582652371200, -186948973433233926322198676863645844864534785309411806150241466782526664409324920032553969364560321982464, 938584130032358676486849061958691194060709474348426100263568803509740721155595647901189426740856143872, -4231888850747284916665770520333014862343946015997039375780606065528845903364115742328798480139489280, 17156416799938856153197356881719930435502323248096882836264446625691849161405020261408462516858880, -62575816329402073042474104712857310443145892108221749846485502276500514127912477435240882073600, 205340667216199892415410765323345314431118881137478098110375219678953101071911598549663744000, -605867189707041070735754918158392904153169499852723072516398470267367969952515027890176000, 1605444786151752976456987524753089904375686157525628244903962793358027484579937599488000, -3813538395973093501690191315753904328956562448919181973675608002354959783098695680000, 8099604515614478252008298526541213035592700555242382938046043157828269816545280000, -15329800362670893621159218817826675269506647359869395779571345476251136000000000, 25743349451315231512313210236375674624744878319434439826674258141069312000000, -38147563260827282008102379122337416938551272878589121744406122004480000000, 49537561831199594054685681712172235446613345608785531515902361600000000, -55880318243163596028558671136032450332470703238032333209600000000000, 54145460276715081135898305162631101693754808089769410560000000000, -44410778985259229914191071974262108312309300880998400000000000, 30236814261081678355742655630600634573051133952000000000000, -16630130575616946172347824577071325244293120000000000000, 7099672276233336285993170591562910924800000000000000, -2207556828151171180261987238019072000000000000000, 444753502786055769207865344000000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [-4778703442508393388510057926834462130000325955154667500481167183388183843171963956864342567676099607296142625314052314053219200000, 650995718220718908021652813732347887123410129358180287342385480782554776154718382898291124187917915159591438363617125883499440000, -43125354649982311983744473440225368231614791534235053380042518842508574067576102144706848776625199961592701254074735265196168000, 1850880977429915650613956905793059244950814454367933412498819118507481037372732939763488962322830219082316669488251229770672600, -57851507012209411085851864495038879752288059086713042618676230595934235286173548876305403068992822303261612180645939718151100, 1403444856593782705282903280726648639727807820776609932579518394481924501280815768517230888695652646059733984092401657482110, -27501193374723923691709352521112723468014561046190535067503072534255229956511434441498360791390250444474883925741400558241, 447295568244749414634402245571771175028538623297255118653932420238030718953606261039196396852087295464582292910282617171, -6157840316032296617691345218920235217458939863991922476866357830348077142392357839808214862461243329592571834537341124, 72813320028696609464043342279866097307895450272105802084447282191024073222691667128924743093959211227446385362296188, -747861791273361799853297728423998238481291750226191820957504913578905169062308365098299976622629651563602405775656, 6730876882364513244308317691680202886877679934974680679437452788599218823385437276819101575360911178402150765360, -53452852629462696786494308734241258833932143267632391898900938586921734411862829680568091833303249708274040288, 376620332479801208021247686017964540613561487497239585511347871312409441280069208445904250447045241937964672, -2364576784275345402148256400087891284399390619460108686989617541077121959951127776108013818408931528114560, 13273572576191732054735516772897482901713549377078921466167105016842586003913680591227060310190104349184, -66791449493377416151372373741632905396768550529649934328361935611027380441362715190403839656724427776, 301825005986740108495174190078691337711453039989887954315027151634234021879678073310702123708631040, -1226341519544514513922536342029364012232784947434904133569841778578792205463994743015201579130880, 4482765353407602832189232103376949430162036500755237276615433555456705345386272128313027276800, -14742123141701812853177802252722270822988422066629641835761572164460163789906476801495040000, 43591238347212375291517915449669884983792447800779360376350214617234909540916299421696000, -115756437953066250708324387528284082769647241788913566006570597345829938762998747136000, 275548078225564930364834380975834448554565895457950708504133871445096353014210560000, -586467846186581417233233219619883592728297264757416574632551144012381555507200000, 1112294619301858147647023928442589976350775343214338009614641955889191321600000, -1871730489522795924730743268062977529550012085540875233254528185393152000000, 2779278926089506683609927955595553743812005511600377063845006540800000000, -3616423927941429833619607843208399295115870511038212031306137600000000, 4087666104642068920363874193640900272907290746486937354240000000000, -3968652257243767827836374895018638265491557576222965760000000000, 3261569305749561415102056738707729681688327251558400000000000, -2224971211611165645467910015789682457881608192000000000000, 1226103788084574577557558796074712427397120000000000000, -524452669685426552843862307755786240000000000000000, 163384054586363625025782895607808000000000000000, -32979223691141888241303552000000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-5146789594625300993452107453806984253111803309562901981042598020755493857437081425819068629575862851367201288289635843684601600000, 699461764841486133757329154935617999419061862169345477830407318000892745594741976696316097008797767195976612941967179765008480000, -46226381195797653119807494513262932463327668325843596887470137707211089990749290709723004115474596619046823026931620733562704000, 1979332247654665798994871215303548640335801582862163515108148066625357420044923374058986296044556350880026373909300540780294000, -61723318524574456729862801106195512889176149290978821105505839700958636242158302512323312893562876459176188212974707963248920, 1493948028667105042232020372027334865760688729208866440182937318501932722883663606709528117007745541774731388917003411379240, -29208426326555624675074218805334020734974281989317035186995758618859359566919180795170143710382106175028586142141364065202, 474000077408714571200847676172111303198030497364737484345267413090425488521553067416289984045895233419151070117747896273, -6511033570132995751275939454930679627011717556431492742292098013860729974232530658897224173105314265370531236574772077, 76821064418129297009063005944512588918578339672065173043085842151737552675612085091518908267307180908028840389540154, -787315631125840085377693987485651330984981036253077562700082709687806531758910032598188642498885348785320332964676, 7070775918746351374985679617298160356615079078591752060619153773794288542878641776902623957727604059177174490360, -56032998501756518910202075256205041629812551875799137747168743440810583096283035132633288567930972570700623280, 393970527000094561084774611252867037835744060489345116055473708814253802972846806084228144978046564063892896, -2468366430735558753908462167345953530958401064033675572378455145163826598770771196372476997803304031474304, 13827680119021198412008971666980227565510202295439486185672750072356146164549452716461221658734817484032, -69437887537608234734490389810615442981282500038992591242133453269043524558261932026211911055929140736, 313150885184687778649568887504726367661379648645188076902998873163190484971960440503949859002577920, -1269816951349623213824522479459666641819966294533615163297070686055316931538081174868666448455680, 4632497980258500867600317845146335418888146372089495561403903331122300428716848178605221888000, -15204666802790445487498573266632303097927528285121993294992019555289649474844467721462272000, 44871608314514833086892217974744159861875172110127488604858523973183886922218948445184000, -118927113181121322992155351106441443757679798537529155427731095657073494763919435776000, 282555628914277032474710586681933172070771710440135089993333386969581750581145600000, -600245655248936777827058786885589818192758389608790981108705187015653701836800000, 1136292430616867236798559655117934646331106807042214258558729865004949913600000, -1908561237920190230769756764171767028902861854228951953759700144340992000000, 2828748319252459360230695266617225672882258261208793608633036800000000000, -3674071627050572808686366335891065310857445762801802927249817600000000, 4145303834730476524092909034319856722008747512507004354560000000000, -4017381470652311289015234974240267009343160288605634560000000000, 3295732494335352339404225139005267746642096186982400000000000, -2244301235784293150758526189767105553715167232000000000000, 1234585973869868772019950098707125916139520000000000000, -527161336742741308653207601576673280000000000000000, 163944070110663298339936967589888000000000000000, -33035491218586596508119859200000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-5388830846662903595145845251077515657537578270035753848865783140824948207429940609188444436726991832267929932501187306469219200000, 731311582799082498847281009900026290779855771201881588572886717492583774857747992045238630617129404599910053188588630806897840000, -48262947839416839420921858958632924005788912661114849072864832366925419613343214717265336640073042892635761161616823401814408000, 2063636504722850893140897733534066199427781915822555489890717757132768819928922302996106476512588994698547342056265029398168600, -64262754622878745074880147214857825933259417354887029102056739795908302082097225239041757147643568767066326019367949449813500, 1553266879695464106600716340012677241110307485973293300528022962463413735718759926190424843815595882573732073863435022718130, -30326630940818032881982574952088683024827787452270412729548634923887984422056357060544636119012061948587623726989304908021, 491478661006695231105838092507535553983062956670665576180549722317251308715818727157906094273924569379514749953831869902, -6742038160871268195437131473985722448461393980428410371841828944778795233035713927208692654975745403294426266601569849, 79440381630209289198231815347263313740023087911340068551048326688941166221425801400403759114626743052610552501340246, -813081832368371207667540590874659419194737303958597382616718475454278300202548083126243162087284046797869577535356, 7292583874707546282014227392997928933560243845219925848604206452987608221896743153270305234573824830357525484200, -57715403012091966159743288787130740997804135892821079948808959370660564793651064971548926286800637030962772688, 405274790584857222030315326140971215502733322797058430985330216561179335769146248750037914517221039220094624, -2535933703618311238148227027946547546334522521909877872359381076130572433458616958202501244531706439804160, 14188103870104849744700503363934985344928844528031540412458578037705709744023130582260165964013035459328, -71157816435177014930157359045560971257589281555877074478202948747955886671944144413795417640909584896, 320505203790076525349712474819072165369106200984561483781513237203147063378620504959428806149278720, -1298022100370517496278811235194233011935458930546286619374144765581927833496475932237058247649280, 4729550550454370963258714953532650227633495746981058252165183513629317546564756215335737856000, -15504197583726304261043587084564531099348038608690240324432074393027733671439825952170496000, 45699959048058242499512404346379424965758483370745435634379177682026714838646633020416000, -120976445722269318833545876579977977469060575084329682675842970800351969452452468736000, 287080441191716936834812413398546744199968816832323690294927599804037728444846080000, -609133158710205200028572016592000715065570740690078948110105145433511182540800000, 1151756654758280339115680416739191343877840926415034267472702079661064601600000, -1932270357279373655499565403592589094421814836956658908982566385180672000000, 2860559607715726762083595772133019971358530352585861382547989299200000000, -3711101975417627064494630233400237775152779209193071480166809600000000, 4182287087430457416568110769337943165891736505470377000960000000000, -4048613575780397936850859295134605718479820597635317760000000000, 3317603815310622794601758842511144332969273353830400000000000, -2256661986466356121914679791022552356929667072000000000000, 1240003575634142676739911420015343797534720000000000000, -528889292929782959027405902892236800000000000000000, 164300887384305710182677514027008000000000000000, -33071297826960501768821145600000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-10274119092682469699295481628006223952841006423148619814027663517779165592268528439763078559000081596844702145512988205009292800000, 1396332589911967576607899482588115362332439290975208659793741236914777142457180355890762222067579947559061712373502276118168960000, -92285172735300631526161642390868005736938363086668933355307269119533238965052151924731937807459298436752789641541620483770424000, 3951648260422044006105171130764438594255959254140921646401867155806254610090424262952640353696995126076617166521768852329709600, -123232934427027419539034300149283158922661055581405516195164154164742454711634928488507472731166325274894751987785939685203660, 2982849455518792393744171546065659675024941421436915254746682527484835622376862780764770545796709388872638992583377096867560, -58320695675260672473131503680970836380229819518697695200284597100782820158051405848050213501122780020372050281444602005615, 946481210272879710390006307329509053645323756400727589802325930412599638564352847854891821149038513619255491857417953153, -13001782903176856485855851632773060445907718741812542480286773425710252693704397427441050875826931653396066196363412342, 153409770696597574419837647258104742484250635152969422407432343066299968347353455427831963191586275231900379106930564, -1572322473449728258224893838918332754629810513992258817679397925656871660401860373796133056568923058337164970260792, 14121478941121453849565464704824805178639260548124403401860385600328697235763982745776694359801086957097507631600, -111912252285937552976440460072909937185149976650701812958547247656251565134743825893645492146278437193774068512, 786898042305849800045327377069889785113136873289494187355111285520742741348476498905350992327012197798042496, -4930439204375006852135926108477980026180638720926958287529473885832391425864516364541319085140725685560832, 27621472326151442693843020345676202326012048661580053033939171856368206530944467219401332647277083786752, -138712562461536564600046078472205306299445503506024453500953155537544508839644519357614653513103066112, 625597488283795597468855774722630600592826646483147702258787993787010261844308042924844697628928000, -2536908412106396294965418407945169684496880081731222254359382870136178321981782481733768582389760, 9255533841790516643177474683335093630985076222272807952322738785268272317822184862271955046400, -30379872935301100958538683842647653636817487219409359122636836702961755815073069798648832000, 89661031795847697415641036731821165660793012896048976251415232028750903189511055403008000, -237649145962832862025232793918111392325411117479042561919798562767416349719354191872000, 564654583950313982341360348579146186842861057862547894152774590812902613206589440000, -1199586744368802708680262842531760795042628470047484912821377584772042362470400000, 2270997754793608338252636538771554088014166259494527134773412103483536179200000, -3814669041174083712618582155015932219253783897694398218738165338292224000000, 5654177796795077497232499389546428014717900120708291454149967872000000000, -7344248540331540604464094938177829982860536038305329176425267200000000, 8286686616167963626164667258347273781841672920551653376000000000000, -8031425241133006628521088680570952173934790722212331520000000000, 6589109185017961770213925994875794759931101236428800000000000, -4487260641438773028600914227952081891821092864000000000000, 2468579268169810036615331059774063997091840000000000000, -1054132180806897639865174289069113344000000000000000, 327848503520620218200224878821376000000000000000, -66066974738069977090857369600000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-5172473720286196094283652040079656993405426099286297052094839138908496676964151908138049098308309455375326235256664213540403200000, 702827467065738242686994573157797013148041509359098360373392216879413721928173251487043988378572204501963894744309063618858560000, -46440685297299623505142739077146448280675389043415745837812944163415409076156732287788091861889358789088248135025900142101544000, 1988165364454850035268848572409085311038786351874065645114015880420628738003804871191067872209047091001424476783735948709921600, -61988231698564391093330843753862632966790242176626648121379366040092027287895999565856952831609428028771712638066970335599620, 1500108723196204311447021562087024752299287360363539962895427283678430515794195456842893950824442162931693649572112511908280, -29324036874760960972554512286178628778635733371621597644678601910316238715580512201488446778484763397696966021743223236277, 475798906406706595597756092114330359869714094550262861550140908436753797819387744001015277621497988818187297641776312841, -6534697104225570515362286300304154873281004829804854483876454266477031775710501562662892312791771165153383726229967872, 77088112818786010178520364946921771519676217449272495263911002337172899715651316576788856603926957072302123841651028, -789929972799671960716021419226699009120019224100432998826423109781729761058581467736865314348695361167880938351536, 7093171685955906289240526751512259777487222081247679215702094940323984239851724104874501681371941155189793100560, -56202028017717477188994606056348945852642649875115459115410902952929943705089465045882145293850939982578032640, 395100540758264548694841389028501800876828001638940514483877925537399442446088765678587629596361772187612672, -2475086175958999845483629326711649599879953246404954114334921304911221925423080655782045165016111292730624, 13863339187549361287919631426638283042180854879690804347768765952836108851352757965813978900351752418304, -69607154440884947589976892517016263076609534545711262686198078091650587970945345230973075864845464576, 313870787065609830719495082684487470401624055905249035377721993061850755877358619180912151625687040, -1272562900410950190398314928040380003144337271014745344534869325475651655772553897814450986516480, 4641894515861029044845839133007817360047584799184371906520451524723085092471676104480539340800, -15233504580077963472140717277700882628584213764651883738414951328925886195240101743118336000, 44950905295952301178026458585503689816443939008550096144025437007920349159919288252416000, -119122159996545906774823896946002225518387855818231948570098431090491089062352224256000, 282983755771234116867258576460624696098885842872602719755596273212222376600821760000, -601081562476991150730434524252910628715245935974959461196494456347915648204800000, 1137738114000803223691745885272106478237655901123041812975435287415855513600000, -1910764098613109148825977458807184172466771304955431235856124796567552000000, 2831685553940334823980944543631919718254128188934319893093261312000000000, -3677469128017526097477817475768046709267559876278481025898905600000000, 4148675227178129482243831698498258117272153783411787694080000000000, -4020210029735537655389638721364633643775528456851292160000000000, 3297700179140574203676200694507013250656080651878400000000000, -2245405817739822106452781436129751258189791232000000000000, 1235066800070373735164203699271444956446720000000000000, -527313635507739437347476980518354944000000000000000, 163975298246603279693944096555008000000000000000, -33038602598802689296957440000000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-10285928125019555310527555568763300023800486535063261166100724079497828227160575576894581211832880042253190578003967047928460800000, 1397858720054736277747539520964778679665009047716842732225161276138046205441643456802602900733263170681496747658684236009631360000, -92380934771280855170944043583527988834168630782362543334950812308683659713702876330162959546886645752290538259042377527984504000, 3955534974652072578526405162592723303371831515420023793563402460927986639503327935864542569292560821344189148813385244032701600, -123347621074757174408783181428808767235952726504645816454265074492238371458894285486626773453393081022318694058928556943959660, 2985471189181752846105732131059643698436284497145102131171519031774074888894438109484341625183756186264609184960024006099640, -58369011170386738518047046785706603908819713795894945281966115847460115500009285883496856471466508112396950399099118563775, 947218703756301029264519564676403172163750704950638925605054018528041562271660136047185541517963715271893732228040728393, -13011289872241937434224946260005897351042877852266426870913891939608966090219377338415943620917142318486376970369618262, 153514778936520866456692138492624227570688010472463079993890558617273619783583220383180247799476920838698850918895804, -1573327323193525905209866713075908595002863758723905839432380454003903394138099239030596916503155152174315726816792, 14129881225662077175788619612194144231435270210028657854058531334637030155958058849290334023091824115698945077840, -111974056921811427417456502922996086925449752448722106883287053976114378932866936897215666364094972083845076512, 787300059070383549621984667794464759629027769503267251965854639381883498696991145865529663573584917408673536, -4932760992749814109572114662929228646604242429529825659464147356365461928996356110778410545116891487729152, 27633414405237686023238842454650593072725055441597708334914906738395607229899166719147050197974398182912, -138767385734199669687857042228907729289025792906016296035332517097500328795198884745924065292544371712, 625822440696541317397325225814717163305299430332529859669677240680707947293625618009886151687424000, -2537733989895790342196492295885267842145788755179802644512534787335203075710088389869818568949760, 9258243829469677182370370034627529114549977329842335121160713192553083866748570583476273254400, -30387823871875159704766666968739806888164705992590600830131631846132977164798417799191552000, 89681852652021986334641616097714583033341718149496298373862652097922334940082132318208000, -237697703872658645178469240541818644745889659969768533894763333926384104956430364672000, 564755133387365665492269487753857473404828414512327063164051769087252907868528640000, -1199770864927822214935962499726410610323698691571869633249001536202054168166400000, 2271294344792080702686151262518308362728230025251299657593653707801252659200000, -3815086519582677534868407029856707655461852639297293816457275747713024000000, 5654686908859133698599024219017819395349655557875929460540096512000000000, -7344780521391469480118299917445918158703120074735052088455987200000000, 8287156075197666364023204397766532285412906100453277696000000000000, -8031768388206840691680327325712997579531878409720299520000000000, 6589311390448768974664425128647361296899368602828800000000000, -4487352953641897518142703910742859091032408064000000000000, 2468609907219633842901220317691239035043840000000000000, -1054138758722684082080995865719209984000000000000000, 327849189223205200696301297074176000000000000000, -66066974738069977090857369600000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-10897323116961883638517762637622057977435908531610322386322914450620971666136967339321745203434319573636005284772991885136825600000, 1478342027844125953822105984745601146541407981215781690032037151760803404023623604218119870996107155166763824021429454102367840000, -97529252554189000104293633670776286562457061858673744140760049506586022367900867682315996503321335544481758500367105583448216000, 4168734238474580655122989392000132761260248257675138875176645981999210661937275892626730554346632573162320773223300669022040400, -129772200644897246106648898460249141955504872932852366052915425856649954209820946309027827389173475476073063324189852660522700, 3135603187963203825209465672981489561503004619409889771921748364887658904378292073294556623908052930003117175020016972038220, -61200252841756561082514598730206043415095335099215032117186306541575041448551137497912940676084274783517756458639406150747, 991491725195467227760969905674331996546715872353426268777381654334197165723158217321397329224204697315957812308345069239, -13596663376454596162619047545565471284735439120935513415365743870037791096156480737155432721981434689147240524492582888, 160154998692924514351447551485042227080991675782021680861706613862393427723837984268803897519683194224732525533051152, -1638674849603697485089034731939873003234132514244378539880918025587181323758806504108172481312758292392207689813232, 14692666716878260516147598826549170547145208516890155694456223172468239396872615292646583427996198247110335450560, -116244627804828214620010452388702794380015760343875165924255648511624863903220146114702455367349790156709992896, 816007227415870947962408074885089547588184289162622231773262467128004293466871273826648573474768423548806208, -5104425289804019129807430500381858740390055281468150819813294992861270916737062789330902003619952366952960, 28549541108171637516542075615387545477809785502489309124373435801397605991143717931937594422760340141056, -143141139483046441028159828377140797619766415191692145362108402751913412441020638093358649889899579392, 644533191396392229104379583918068952785009288157000677093818453013182632021194220675662490474455040, -2609527543007593226880651064595252250669459916978490765522639379832109170836787260814723145666560, 9505402471692743451467460611678421750246278292128039082900851326696498141204814990036400640000, -31151001191560590900793038835061489069803011185212356175835782145873017150580529178324992000, 91793479186928011068992460114104123281121624366104016549170351248681476586215466196992000, -242924527463123394454741767999998552020502615139285195994963442214305742399629647872000, 576301685465512545924124217016573093303846399395213425127496640865762471840808960000, -1222462289121530244702368102429919659628641437007997626473503744233900927385600000, 2310798636663145516486068009063068226846838933549090655286567046212789043200000, -3875686122225076754473134429942362347439506023002965206500898074886144000000, 5736040725621168052180821289041136900347839205168650408179713638400000000, -7439535268736001906350115791729405020093475968456985035879219200000000, 8381844971305541936071981650869693977269207972631892459520000000000, -8111779500517419630032779432778063294826975528505835520000000000, 6645375324504845554404732885021854437236068371660800000000000, -4519057195959605776233822030343091575842668544000000000000, 2482514175059545532549517421063964133949440000000000000, -1058576345844074795600736385782251520000000000000000, 328766122685124098655808143753216000000000000000, -66159048873888590618374963200000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-5171206132498377972929232295463952567307256417620322180257264725222117602245736798034986975757762148964298835674774368748038400000, 702660023854712157438056305544652949928088217703860703797017577966685522049222713218474524544939709457015433206535350449520480000, -46429960703826006008970534508305706326561079093984340724826020489929891967725853508193542768902511927940087801243260223256072000, 1987721627925277201199205170742682807627337071073572640892670997974692498126046277661497401344734114799523524941834323348078800, -61974899739093653384493409442241204428209454016594085006109523875654511332893015106192252974479780038822057211527684350698980, 1499798747516434733661101079451207490615066903295435690093702518546335734748285650705872907220088655707183749283152911205720, -29318232769485247598360182772655148829173338474381388471503973605834067232583583206118637901488808230688899763450839999085, 475708977729486213572741598052165914441273260520885975904430574709818784130102128845513187337094280689055674605021224726, -6533521444851883364713971269810068170590897677572255834400073450478924860416754251323881004241980868194374604171231971, 77074954663895042017953425021900988441500189778948160862695991589970184774130686962644222904388215511432616366539738, -789802487484509788651096262813395781602196022312365860037099100073824962578113920687232935003746616184256147114796, 7092093187082755986587457238474959508459847684631426544471156766881164397448473537969455935680480675733777446680, -56194007517329959359689636643531720561948634605151088124350329201158289116524491119376190744093509232401848656, 395047830517833164363485622060883687806843317279404380150452443040048542165285678021602383765354063329609952, -2474778798247760661248284117117675768029272296916398139355537203468863411189863159324041132635825325196416, 13861743778528527484581384856938833080311419969751822504601709910697233830217656744056540329388741570304, -69599767633837775028459091672711260606689643286262553509263205574166010555705021106930069251675414016, 313840234169095335866979009321516508579567359075451747420066866298289112648732448163862495279303680, -1272449928125150288070431052495264594323340092327439709329067719981881188678336216091403078318080, 4641521070684730906818231406112625521822743083124488920330063348752283019193915784943122534400, -15232401702417023683980130243221460723305525114090726881381303257753416090991339514660352000, 44947999461892143651670103465823689550630068361908453226746700921953012811516287972352000, -119115344175284225623772858539516212943188233944131403139170696257091482308606662656000, 282969566659239242905381879620621371845270779364089339582945129792654188059176960000, -601055450806906903759367718521518701747576666471493841449546249737198516019200000, 1137695857586160601360485627023947981646112576025947073140582072776192409600000, -1910704363727287659990072194251141045360920672665543521540540669181952000000, 2831612418804520548872815290146068440802469382627083264156626944000000000, -3677392428149190902121023991676398327914112680711407527336345600000000, 4148607313858642406399291021092139318400297670216612577280000000000, -4020160235961588826051671014415535381468694359478108160000000000, 3297670754645559003435595041935934761600326985318400000000000, -2245392350277304324808433091762388672427589632000000000000, 1235062319780030144698259219839351227678720000000000000, -527312671630705130011280055591763968000000000000000, 163975197582626466891331868295168000000000000000, -33038602598802689296957440000000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-9665259276315777614014114048378874851401923789933508337480621974028780302728966897542038812499736678283942237907743057385657600000, 1316184168544630071031209554033581021895946940786745015139614639117476343633101285012384179472000953163691559086304484364108640000, -87158304139339721585156461441301191916878551909220542775471879268601910527715918131767999036998302366857890067782172265997656000, 3739336469658681597647873704689834143190441073486792573231313399626903067411993493249593310371549326662287445795656678064056400, -116835018775828823258843451741085641280270485473264092827053487129205903870714236585435818509645226801039693575603215938441900, 2833337408096880570212278969415448335326662213308336159599902724635441168984828429228597634281119659583150803101303332334100, -55501062214442276657052610763518356772878988009858026711413663015632237175503412224373747050496923683267376738489080893027, 902388046188154275943584954455909120119240257056694017921418962060314062491425996891684214011604947833454657850623788537, -12418760717711572058758380408201659917595371777608653234787683127277641518354788651379584391862219876653220886357919518, 146795867249975862846216114115728309130299025184059490342046309315585590290139950770497580870457484967605719442997796, -1507229917669881022475576132880974801434188162047920394809508373489403327742088202817822250449217408086522589737832, 13560850447651571114512624516544379400984071034495410903924570109383127679655927436230536446279633784598148566640, -107657722403695801432496449432837680311971999295477495899699800624284389341520564529170612242538480621261520096, 758296294441225170367615503914501223293949722349211476214554422769323747140202546258202574087844109373915264, -4759389662743280200371300690213297596096187767965745077139094452221299466590244678904835691398236741405440, 26708536441259158807216280324338149844666188420566415930814754877643957811970118450125665564417163524608, -134353582326784138382778894012582242908544663739246022528047014918100580024303414258266082142087959552, 606947843376973675466833563345220734757230182318271460749957034981658863573991782293167671534663680, -2465340803566193214937027390325416093615203277307145403760881488626813161043518974234959822069760, 9009122089920046650135599560074584671738458692106869962963377003066462189921461094786661273600, -29618901370937549338833486045284815265736559327909917490999982545566656037788482876431360000, 87555216929061987734002902954791625944640847972724543910665005049926434240183722084352000, -232435954014891475051062343272903510201197406057726990681453924146293925783646031872000, 553136410096156849833259012996437215451073199996688292534632005873529426317598720000, -1176947543515263172855990851291035599673024263618288159090771789961629867622400000, 2231577975751828769115240308723111217078644001390925616750205194351326003200000, -3754188908303327470685665284042363781487831778568502257325711265890304000000, 5572970250304671693866960826494813064623034086030043764383619481600000000, -7249647192723678568945866032077639884177074535717543226127155200000000, 8192133546699062205804971360056349687729083274763388846080000000000, -7951513716370325348844571987404082983253361798173163520000000000, 6533104099951915590954829543643458597705908800716800000000000, -4455583334046100333798492797086574578535235584000000000000, 2454683960910585527898922915265526355722240000000000000, -1049696521439575541017827618859253760000000000000000, 326931771386654945845942488662016000000000000000, -65974900602251363563339776000000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-2529358406409331225836808437495584183262207081852401519770010625398376371566544677879472047372186384489712515865768181400800000000, 343935834945580818564635313700290053416314974458948441851419259857706199556138590907660858974782735048118847371323925538008800000, -22742604719967207032542011959983000639205643177409252416302165492627718154633828121359139754213891343823443133321409942194592000, 974323746270492726319135831695613651596019028241794411649786532623910865315412710506250689342687677434992189409386767167857200, -30399441811644756285658340181545973517225019707584245201063939969503317807949591116986145049418233980271636194092162602040960, 736175080727704462809884430813940842361284625377165115121071547931109358056105450144486277120552198386012859233644519961180, -14400601831101749338231417506258917588745460157773008013715162294927906891060514421194049912798238278683453537954842590326, 233816624983170244742859500064258265274168804906561706517611371397390105690760312545788498564802515543789052713203185513, -3213431767023025608901024508163273469017966612476552003753963771473093921941469317706145636653466307570075560971813821, 37933190753120860120981844886832957230974702574838890148765074814074315076389908793233309808721285878094969608631494, -388960606402307857227277153057466382230943970069536367527716649638310452286495281249205543588810604644993890943508, 3494936930381525000116480082321808311930253042874751222276678770492563873434816585262674277084380574047613670760, -27709554277505066054489376333475354169192524607946300025571538171278808144116502188031314804505345666414544560, 194921951447187459790696305893821085776027903088660838493323784231162099595883656416052110389660893442155616, -1221844593789503410345373579724255131185372431528996362603862599788815563584585827987345690223827353235072, 6847988429565272462738236796803951813792630911636701849400176833931811348866325474134787590483070196992, -34404529732262044483018632054674309733405913582884593773842626807813429425795089329679983573242853888, 155230239727871756139387586975303064855531780821031202276187318950905546669032097983314000239518720, -629746173519544489845411638901821427585124775926559006418547717703455264396435727770934664714240, 2298474069458303894746128052020456903425374277401606456184477214463813909429783202858886758400, -7547437012128505233274422087407266191575444591705314532595357770346973531200949234702848000, 22283877316613959783779548423552562576556817005330305962418575578939009063141313276928000, -59087401466437020781896052708906627323122831046484551957151658028186581593082800128000, 140446613703840643094106877914250367237980377733463129861796710545855254490337280000, -298488825527690529606530141802158653429140545554656045578506489348021494374400000, 565300540926727283826898035780399038251765351641202977022196601342026956800000, -949913715075538308238443136735193865987464663333615823089957348376576000000, 1408509299891324198325288606796259225469613703760605626602295296000000000, -1830201900323371378972032320236580663700467172211250203184332800000000, 2065819580124176874118670078007039861786017705835730698240000000000, -2002914627157915465319098600713402244353368983685038080000000000, 1643816793986188920350117530696615373921346335539200000000000, -1119859375407245409409606914613576497906057216000000000000, 616287547902012729618726873598377968271360000000000000, -263259582240561890454731594422812672000000000000000, 81905646590691546325764594991104000000000000000, -16511074689417551108112384000000000000000000, 1618698663477822829363200000000000000000]], +4] +]]]],[1, +[[[46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043]], [[46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048]], [[46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043]], [[46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043]], [[46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048]], [[139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048]], [[46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074369 / 2^2048], [17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386943 / 2^2048, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074369 / 2^2048], [17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386943 / 2^2048, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386943 / 2^2048, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074369 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074369 / 2^2048], [17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386943 / 2^2048, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386943 / 2^2048, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074369 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043]], [[139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043]], [[139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048]], [[139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048]], [[139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043]], [[139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [46769610552255972997910015802255151974510798042793044696433022324278522384043638447641507041792140612312136063147289029333734418081580725520532918817058857459081825751384380008884028987146504193264513438528591747403921364749187840589943725500273274112266965857920554119814496261888819223688877697479815545855957147368927805850968942097895457584357876660718173872005225282893377762900439014483620856064047340198125880653715251653885991662304033908469873564497608692325001352522745277668137626034024523003205531877368019149763512342886570102478301716632104033708154264584490836726663099309457298620151180589228404074367 / 2^2048, 365387582439499789046171998455118374800865609709320661690882986908425956125340925372199273764001098533688562993338195541669800141262349418129163428258272323899076763682690468819406476462082064009879011238504623026593135662103030004608935355470884954002085670765004329061050752046006400185069357011561058951999665213819748483210694860139808262377795911411860733375040822522604513772659679800653287938000369845297858442607150403545984309861750264909920887222637567908789073066583947481782325203390816585962543217791937649607527440178801328925611732161188312763344955192066334661927055463355135145469931098353346906831 / 2^2041], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [139565637424734700027497949805349624581073494504983776311153660396646780419469869834006998291044424336447655146066461012925817970464071223981588952779982099860780695181387595114190363387756250158809389361246432727731742754187903685419784868567805209600752545673062937234067621259322753074423649224750353321780246245393819367112507870900263135979331839140113048782424890904442770488410012607944502575502397603545010365493816117666489926892962952346386887984132545079134765757022618295173254511092485343251184010030823255627566267139214274796505848563646645604523828174077877910656045764847242170054379114319459284273 / 2^2041, 17864401590366041603519737575084751946377407296637923367827668530770787893692143338752895781253686315065299858696507009654504700219401116669643385955837708782179928983217612174616366513632800020327601838239543389149663072536051671733732463176679066828896325846152055965960655521193312393526227100768045225187871519410408878990401007475233681405354475409934470244150386035768674622516481613816896329664306893253761326783208463061310710642299257900337521661968965770129250016898895141782176577419838123936151553283945376720328482193819427173952748616146770637379050006281968372563973857900446997766960526632890788386945 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [9986504083353455296315204719814012027472343548918079822345759764061170271752711719756081684955805569857093137551264257425988683876239525258033919941651147142905966138278980873479739608348652081386555340584638331839713377972555166494672515367627336934461238544346235085436756490049425316699768523163873854037074934126657243682683715442522467738163081772908234252889823114620182914562858296879138180783793500158741945239451278530959962849427573528981795535772080018565563163587201282497436379952133668549489100975724977034635394526078714670774589396205974038819789627580769138940351156229393400984855195319946110746975 / 2^2048, 312078252604795478009850147494187875858510735903689994448304992626911570992272241242377552654868924058034160548477008044562146371132485164313559998176598348215811441821218152296241862760895377543329854393269947869991043061642348952958516105238354279201913704510819846419898640314044541146867766348871057938658591691458038865083866107578827116817596305403382320402806972331880716080089321777473068149493546879960685788732852454092498839044611672780681110492877500580173848862100040078044886873504177142171534405491405532332356078939959833461705918631436688713118425861899035591885973632168543780776724853748315960843 / 2^2043], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048], [-817031472469029967083520095754655875240449840117994432450341639931984307537083036448583824709914446928170378687881664599157764482858905806424312379214852771975668900685296216229838702610733691712018254993021003624315921477933282642987236329277044442804751920948887112715017013619373694406360772585182470212438503150671606715407068838618898515174724055955356102560272685758928000341159014186070858662996314328803554596833818975304973075799324890036988885699647613568097687685706605855000466587987479071385261633314166437567449786257975437183823499356271647080987209228043248164469074860370921096301035066421122151947 / 2^2043, -26145007119008958946672643064148988007694394883775821838410932477823497841186657166354682390717262301701452118012213267173048463451484985805577996134875288703221404821929478919354838483543478134784584159776672115978109487293865044575591562536865422169752061470364387606880544435819958221003544722725839046798032100821491414893026202835804752485591169790571395281928725944285696010917088453954267477215882058521713747098682207209759138425578396481183644342388723634179126005942611387360014930815599330284328372266053326002158393160255213989882351979400692706591590695297383941263010395531869475081633122125475908862303 / 2^2048]], [[1, 1], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1 / 2, 1 / 2], [1, 1], [1, 1], [1, 1], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [-1, -1], [0, 0], [0, 0], [0, 0]], [[34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2]], [[6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3]], [[6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4]], [[34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4]], [[6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4]], [[1, 1], [1, 1], [1 / 2, 1 / 2], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [1, 1], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [1, 1], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [0, 0], [0, 0], [-1, -1], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2]], [[10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1 / 2, 1 / 2], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [1 / 2, 1 / 2], [1, 1], [1, 1], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1, -1], [0, 0], [0, 0]], [[6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3]], [[34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4]], [[34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2]], [[6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4]], [[59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [1, 1], [1, 1], [1, 1], [1 / 2, 1 / 2], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [1, 1], [-1 / 2, -1 / 2], [0, 0], [0, 0], [0, 0], [0, 0], [-1, -1], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0], [0, 0]], [[1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [1, 1], [1 / 2, 1 / 2], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1, -1], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [0, 0]], [[6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4]], [[34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[1, 1], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1 / 2, 1 / 2], [1, 1], [1, 1], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1, -1], [0, 0], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0]], [[1, 1], [1 / 2, 1 / 2], [1, 1], [1, 1], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [1, 1], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [0, 0], [-1, -1], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2]], [[59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [1, 1], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [59923104495410530257643506359634157787265899298076885757810027052577558601833654377569492440802512007040037959957131119219596589604805540830949143546491374792589297808288495092100739867082031373151027650695001922946050227447487627157971036846942412387783503561528766079982415312826572101611785443208074712405 / 2^1023, 119846208990821060515287012719268315574531798596153771515620054105155117203667308755138984881605024014080075919914262238439193179209611081661898287092982749585178595616576990184201479734164062746302055301390003845892100454894975254315942073693884824775567007123057532159964830625653144203223570886416149424811 / 2^1024], [1, 1], [1, 1], [1, 1], [1 / 2, 1 / 2], [1, 1], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0], [0, 0], [0, 0], [-1, -1], [0, 0]], [[2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3]], [[34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [35953862697246318154586103815780494672359539578846131454686016231546535161100192626541695464481507204224022775974278671531757953762883324498569486127894824875553578684973097055260443920249218823890616590417001153767630136468492576294782622108165447432670102136917259647989449187695943260967071265924844827443 / 2^1022, 143815450788985272618344415263121978689438158315384525818744064926186140644400770506166781857926028816896091103897114686127031815051533297994277944511579299502214314739892388221041775680996875295562466361668004615070520545873970305179130488432661789730680408547669038591957796750783773043868285063699379309773 / 2^1024], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2]], [[2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [34471473142731741120762535134581282091140376181029849634272368456026298814792416952743681505624441027934632491650024554127060863093856982501427362545544835328672935858454395831200210933748962247249128147609672072828578366552127739905960633961041248501953755575505392045746747617643803529181389225732192411223375288948979565248730639772335540794513254437681410195282992703286427938889024335093609165721788924507673177299692647848104907895788422298030610787448839713308934063691541557040167575175393411700990445419367144464049063752909865214096560177482066491246508944462111578288339710511948958073126243851796902646033 / 2^2048, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2047], [2154467071420733820047658445911330130696273511314365602142023028501643675924526059546480094101527564245914530728126534632941303943366061406339210159096552208042058491153399739450013183359310140453070509225604504551786147909507983744122539622565078031372109723469087002859171726102737720573836826608262025701460955559311222828045664985770971299657078402355088137205187043955401746180564020943350572857611807781729573581230790490506556743486776393626913174215552482081808378980721347315010473448462088231311902838710446529003066484556866575881035011092629155702906809028881973643021231906996809879570390240737306415377 / 2^2045, 17235736571365870560381267567290641045570188090514924817136184228013149407396208476371840752812220513967316245825012277063530431546928491250713681272772417664336467929227197915600105466874481123624564073804836036414289183276063869952980316980520624250976877787752696022873373808821901764590694612866096205611687644474489782624365319886167770397256627218840705097641496351643213969444512167546804582860894462253836588649846323924052453947894211149015305393724419856654467031845770778520083787587696705850495222709683572232024531876454932607048280088741033245623254472231055789144169855255974479036563121925898451323017 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [6463401214262201460142975337733990392088820533943096806426069085504931027773578178639440282304582692737743592184379603898823911830098184219017630477289656624126175473460199218350039550077930421359211527676813513655358443728523951232367618867695234094116329170407261008577515178308213161721510479824786077104382866677933668484136994957312913898971235207065264411615561131866205238541692062830051718572835423345188720743692371471519670230460329180880739522646657446245425136942164041945031420345386264693935708516131339587009199453670599727643105033277887467108720427086645920929063695720990429638711170722211919246131 / 2^2046, 25853604857048805840571901350935961568355282135772387225704276342019724111094312714557761129218330770950974368737518415595295647320392736876070521909158626496504701893840796873400158200311721685436846110707254054621433774914095804929470475470780936376465316681629044034310060713232852646886041919299144308417531466711734673936547979829251655595884940828261057646462244527464820954166768251320206874291341693380754882974769485886078680921841316723522958090586629784981700547768656167780125681381545058775742834064525358348036797814682398910572420133111549868434881708346583683716254782883961718554844682888847676984525 / 2^2048], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[1 / 2, 1 / 2], [1, 1], [1, 1], [1, 1], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [1, 1], [1, 1], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [10772335357103669100238292229556650653481367556571828010710115142508218379622630297732400470507637821229572653640632673164706519716830307031696050795482761040210292455766998697250065916796550702265352546128022522758930739547539918720612698112825390156860548617345435014295858630513688602869184133041310128507304777796556114140228324928854856498285392011775440686025935219777008730902820104716752864288059038908647867906153952452532783717433881968134565871077762410409041894903606736575052367242310441156559514193552232645015332422784332879405175055463145778514534045144409868215106159534984049397851951203686532076885 / 2^2047, 21544670714207338200476584459113301306962735113143656021420230285016436759245260595464800941015275642459145307281265346329413039433660614063392101590965522080420584911533997394500131833593101404530705092256045045517861479095079837441225396225650780313721097234690870028591717261027377205738368266082620257014609555593112228280456649857709712996570784023550881372051870439554017461805640209433505728576118077817295735812307904905065567434867763936269131742155524820818083789807213473150104734484620882313119028387104465290030664845568665758810350110926291557029068090288819736430212319069968098795703902407373064153771 / 2^2048], [-1, -1], [0, 0], [0, 0], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2]]] +]]: diff --git a/output_files/fekete-valdes-n5-qq.P1.d0.p128.res b/output_files/fekete-valdes-n5-qq.P1.d0.p128.res new file mode 100644 index 00000000..4d42a609 --- /dev/null +++ b/output_files/fekete-valdes-n5-qq.P1.d0.p128.res @@ -0,0 +1,52 @@ +[0, [0, +21, +38, +['z01', 'z02', 'z12', 'z03', 'z13', 'z23', 'z04', 'z14', 'z24', 'z34', 'x01', 'x02', 'x12', 'x03', 'x13', 'x23', 'x04', 'x14', 'x24', 'x34', 'A'], +[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,1], +[1, +[[38, [18360166036973065412158962444441478523221590442071297923188404436539096615596949603030144406736978184824178700005973254253824000000, -2563901767744483881358598439181948418531323342762130072712381773542968291226474159028227884808645380487962203593334775351360000000, 174237174496265737937124043895926508811212226726438808755355124570077362186866396228065516733034952107405051218940635672423520000, -7677456187105199204949150249346268618526673847197916208981096494282470613533412610748075835312088065469033264665029959682008000, 246575139829152930631965886952465423845147493535566474637381992313611596669734574737880022262162513111931625414690204100838800, -6151934826818655015963906622650013577013679315870520121205546507689726899726494719684909150568139978448042701240213596356580, 124096233479205955353994630464115794244843116050184976793680649149377176823792850047008803969912069734840488683564627152380, -2079823106424788663296546830929199716083061077579713105593469338826670005834497980529465742685283643240149525677228012529, 29535658021681835232980281691340671926915452109985461442016462901591478275295544703806733688821939599239687736108000385, -360668014249736370738954642541946954302669949330520043985898812390039291827157327513940011589871399531038283771390428, 3830209614269836885734361844949402137613686817645831584526282535088854049173743400859519771461264085797395975897840, -35689500953703576782817681833394914186343685234063500709519836351008388555699452689189106682526769042200103054288, 293840891980320018772401344527764074024843682771601169668905322383249746693566438259722546114449560830033820800, -2149656645928866341297325386742814098522380419622307875841068558766062807953152411705532251519695538021314368, 14036102628042465563481160921860011114285411867970025992241146932598542514826695543715465877910554613172160, -82086462184170142891903307265531368322026155705761156775328809379898164416855737911805011338271454882048, 431146557909175551343258097034449877883864599644946005710907491547512800230525202213732386749559639040, -2037913147082920247793865566006775002482772131746329595603133588417646070882038426044870605986433024, 8680841882024456947440005256276163069873268444132987645099508668038339956836039205659066505297920, -33351160845073240057040089195784484352867902903443261886894234142225347917180005191829696655360, 115598321815048335919450109975187765872911625812782227222694574641008693772603876456702668800, -361382303618589906371084743203625864727536902107514837976130363953376188973677047687168000, 1018125580415426492163220919587367552935368968988541735122167785392812422448855162880000, -2581360803517204901850364236922720101631977753454383697780884214640024345578315776000, 5878030426290391807147329429456391982805684033994616969466681636739638781870080000, -11988690090903423358758037394931568191283453039469744126943484977655034511360000, 21824448296380299576033345468643441250540311282588274823093083633376460800000, -35303098653437807356696103355156906674997772685733837498304444612608000000, 50460430832812896511371801613868579795656845695301971444834304000000000, -63286152842783508179797756655401215980389320160436086485811200000000, 69030148887955409273229615344038503643631161273273810944000000000, -64748532656134242927937677120699246004901616895918080000000000, 51463062714243427409435981709616492292632844697600000000000, -33986482447328212873650773995092328581169152000000000000, 18147928248415886522646812997061957386240000000000000, -7528458106263050282964375881279078400000000000000, 2276511936805205145117140189184000000000000000, -446377455120634353392025600000000000000000, 42597333249416390246400000000000000000]], +[37, [-2563901767744483881358598439181948418531323342762130072712381773542968291226474159028227884808645380487962203593334775351360000000, 348474348992531475874248087791853017622424453452877617510710249140154724373732792456131033466069904214810102437881271344847040000, -23032368561315597614847450748038805855580021541593748626943289482847411840600237832244227505936264196407099793995089879046024000, 986300559316611722527863547809861695380589974142265898549527969254446386678938298951520089048650052447726501658760816403355200, -30759674134093275079819533113250067885068396579352600606027732538448634498632473598424545752840699892240213506201067981782900, 744577400875235732123967782784694765469058696301109860762083894896263060942757100282052823819472418409042932101387762914280, -14558761744973520643075827816504398012581427543057991739154285371786690040841485863706260198796985502681046679740596087703, 236285264173454681863842253530725375415323616879883691536131703212731826202364357630453869510575516793917501888864003080, -3246012128247627336650591782877522588724029543974680395873089311510353626444415947625460104308842595779344553942513852, 38302096142698368857343618449494021376136868176458315845262825350888540491737434008595197714612640857973959758978400, -392584510490739344610994500167344056049780537574698507804718199861092274112693979581080173507794459464201133597168, 3526090703763840225268816134333168888298124193259214036026863868598996960322797259116670553373394729960405849600, -27945536397075262436865230027656583280790945455090002385933891263958816503390981352171919269756041994277086784, 196505436792594517888736252906040155599995766151580363891376057056379595207573737612016522290747764584410240, -1231296932762552143378549608982970524830392335586417351629932140698472466252836068677075170074071823230720, 6898344926546808821492129552551198046141833594319136091374519864760204803688403235419718187992954224640, -34644523500409644212495714622115175042207126239687603125253271003099983204994653242762800301769361408, 156255153876440225053920094612970935257718831994393777611791156024690119223048705701863197095362560, -633672056056391561083761694719905202704490155165421975850990448702281610426420098644764236451840, 2311966436300966718389002199503755317458232516255644544453891492820173875452077529134053376000, -7589028375990388033792779607276143159278274944257811597498737643020899968447218001430528000, 22398762769139382827590860230922086164578117317747918172687691278641873293874813583360000, -59371298480895712742558377449222562337535488329450825048960336936720559948301262848000, 141072730230969403371535906306953407587336416815870807267200359281751330764881920000, -299717252272585583968950934873289204782086325986743603173587124441375862784000000, 567435655705887788976866982184729472514048093347295145400420174467787980800000, -953183663642820798630794790589236480224939862514813612454220004540416000000, 1412892063318761102318410445188320234278391679468455200455360512000000000, -1835298432440721737214134943006635263431290284652646508088524800000000, 2070904466638662278196888460321155109308934838198214328320000000000, -2007204512340161530766067990741676626151950123773460480000000000, 1646818006855789677101951414707727753364251030323200000000000, -1121553920761831024830475541838046843178582016000000000000, 617029560446140141769991641900106551132160000000000000, -263496033719206759903753155844767744000000000000000, 81954429724987385224217046810624000000000000000, -16515965839463471075504947200000000000000000, 1618698663477822829363200000000000000000]], +[ +[[37, [70537026487454782089679962412037595992115812925501099804326847034278419384810168428532549315346072509762650675986602684704915200000, -9580600801113104762606510823706573221517544106890104323668660593210858447285828457060596524516717538124481346301038508146084320000, 632803941546745702154897216176331184946420270469517000868482326633058914449891948123845480397278549806575968183823237911098088000, -27080143020175749871683781446577903353572726139778653870665030607951621226204860445062693192990541238009231228464353913287541200, 843989285381899367696916474997992539179372129458397258960142199063074743441095841481497596654257705474627632188528448589940660, -20416485467811242889146066666421153167069925560334368259457399316328318366560169396760211462906126475974400506930127085657480, 398945782001957617630795179306054645933883060548218284561452397219927382650385783231647521713801266417416802782625940218023, -6470632437863361236112710832681962131187925062909041012183513492712075574332209216904696231306670326826240842013352341605, 88834815821935778232184073744508470446135392675463828279594625639706563400634110225255214386143692160998656992524412688, -1047564760396100223952371741106335591569635334395012876463505315510260562986487583194856205935303217743403631638252760, 10730477234757357842281080372671047086285235034304684646944315439155050913474098733588321081199234740860052017764608, -96318372828159786649039481383851163406107556283710926722017103712627187354520103191038067035548328403816805416800, 762886804273945698913274690414353449064753474035627372945298201181649277487895576410885933557928135989728442368, -5361130855586462538668217545470645869358637809936827502900766725128034184117573590277370890520306554031039040, 33572291171978500473323475035451251094749228059509547650276155751353994499383032968599202635721148625170688, -187975639843492759438614873116575177641834088819435126224403528142736987668846974696411953448265632819200, 943478158149467952366817062466969379241961590549416061174009569408411661485540996965322124956845424640, -4252793396438843608039341703977450337144525565490324931865734005339470804298194445788162353449840640, 17236505546293342385813725830742313728108431606719599350635596528375604074832995017989569751347200, -62851110860187074913618657213850089234992553165764798464341570313432249337516901051050970214400, 206189422028615839354629982867074262330021204136305816030218722620854029853404897520857088000, -608212002975863587738180064071007254709938837813214846497995680318073701618776070615040000, 1611239910617063516367107271239473348265889372801589805288339867251754568541067182080000, -3826320739971796230557307432413356859314646516170521980274969479650548124406169600000, 8124685971728093774434343617877450217643834748235598775752303240883653130649600000, -15373398476570808199326543840309306932711963227010265943947806299098447052800000, 25810126206658612980882865481007554173473361455664942638555169041235968000000, -38237071979486845808051161498202100209772216980237726314124886343680000000, 49641654484030713370040127606481886532709223529180288106463232000000000, -55984178581068732905764574061860820299051545432670013751296000000000, 54233086181915375795030889366414368488348783109619056640000000000, -44472084187363283049291545331243425511353340867379200000000000, 30271429136304399733418221509045778978304950272000000000000, -16645287996022731711421981841649416798208000000000000000, 7104502375473288649782540318618628915200000000000000, -2208553332611982924097568202817536000000000000000, 444853413411281167037308600320000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [34766188778808313428299679899520930567600107939572625356987982678684232015474148646397103327270771331192507958185870733077587200000, -4724227665884578928723598866807852642727070478417042717660143054160177900868944982102450533400791887547298976007948026331524320000, 312178810388032355196810230731077523013544530943558209315256420792001776703224611450052780625754086079442517852680977088647568000, -13365322184599648999515304263402750686392287104236180382095008892156742378521958237964594105451451135722229806082154124835077200, 416732847089403828342550540712590583691072516259451783001913102806644982178217659732475403858530318728054754615720548384932160, -10085378940982825550118031485821585520913432028730776110296142835070673565934895073757082970360613795701843537969208371389020, 197157677848358563572524339876406812703370277753718124686332452023509763435416001827574663164437668524639686614380022270938, -3199140377146245759790698343854783746437288224248899535511539303090502832385242990606949518247818819000799890821125987715, 43939460507421031098216541757253228090448801107827233547418923044364103783286326692353254940745890413897244290434370597, -518364876258873118056176368826174652715904827882929572275254358857977378438130976576884809267842476840281848848743730, 5311964298154790781636308175970520121955993524063498984748741857616820270876602089919178250821421384177659750285852, -47700721701983819162354720254693002672334043205783128955990296491106737205904611841355428315601767057747389671320, 377967035513529656369517622020463191040454396680126683352052459342642607828758347460255550857809671175305603472, -2657214237857329765909271420412688128081040238681101389469242974391354462733139355571866172784921850829404960, 16646611559423697178875342050267895137687576887121457906668149620551765906469779220463365625419267885660672, -93243705543322747431379233137590608723922361982290487303738010471463689401394787061482590465093866919680, 468189105959585815458683559341492406743416894628058891468942253998934131285507646642505558110406516224, -2111220913402816332324797029600554689385524194369317032275465970734320141398753444163879777131596800, 8560064256061923535335160310789224657710432868525512492282332179603343029624050822812629675304960, -31225374697769905900194040706392602296922412869362577490045054145233435015945027911302073139200, 102477022752916367402944766895110662052301987111699394438455897599094570393608986728411648000, -302398106108752974263615908461014014002899967284370642974343887631020501790556043191296000, 801395359665031372890680415418487273473474393073268673841472186869046522640564156416000, -1903834148696261279564649067035668586755424615416991483232498742426924388058214400000, 4044027255732353074868900927667741089295536047179908732100609299227066093608960000, -7654833874122672123420185650785894399174184280741333530380527042556541747200000, 12856213663065328973988136973200596824545743808901111695752804644216832000000, -19052999059838507136273717293932745161599237537115527082235643985920000000, 24744543732929014972405651792329017314324221763045940218753843200000000, -27915907094374286337370111591003890295221517366580418576384000000000, 27052210245284817862698890163203016432338374907611054080000000000, -22190991828054586567002516627926671833750508771737600000000000, 15110254131170843428144065349337199501914406912000000000000, -8311484756304022734995432842678765029949440000000000000, 3548691802668481114652760228466419302400000000000000, -1103541626425001975488004770234368000000000000000, 222352940193697014998724771840000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [68878343801703448906322549162425997623866962101936231330846287835869887125189633242855975460784710953089214473808431626945958400000, -9362472823130278360695736510421281231644778449136172183999815271274552705983528497537086005559293341056029238766386365024898240000, 618864825319903925665678009174735780836569773517520889777784735527734324292303833230579152419708436199604775299413001354801216000, -26503482599216989618311938479847092595978109649984442037170946894791691637327046487673893125036096193462867630956096389584086400, 826629517210593522999663758795222847160270995846486918949597630911765372169560850873382494459991646407392154599274694495590720, -20011222000541833901136739609835587318134425546875554672503005701541629971219462677653947547925728465370544867674000590077450, 391310829685823154632612536310391094175275962547870291226925402920884429815731955076160557045984552282503910746684003735661, -6351361682967820651055984364907946405660658790525034573737537948908885573333396672699070824905927310238464687471792914029, 87259406134308484367299956930281452896704178242346038076513446889059094517155389740985207315663734697818758720828036336, -1029711860172891875759835135136387567752522087308603488590827085846401469459125539507862710386716180500315221662516184, 10554959264033225436961238097635037647706073995189483084586652700949903801705524211345619925531290014734053572045696, -94808286823602081686002389725149758711595237344299234450846959910376776429664680904288378497620295718903288410464, 751439286442998738548763518910328840817713411538790273493925734268846122221832596479055396447403077611615543936, -5284256300960322577032830024084590697768332141989400866380482166449566681673607051105414048590325042371340864, 33113051533877214624974919791545396878075570266087778759516643750711281350327917076189243930071696198154496, -185527240043295845789838328876456009594426906880209688684873369796435111419958034169195637840793510324224, 931800686679072184379968751844055934755188986130649079072933728419217052366544352710616513439970836480, -4202887289725723409156349271647150146543770639075871156208682170685307571069808627584553759031644160, 17045204992964434789267893636295234198539925131564112118073715441664083581266421666255453275852800, -62193187661205880283846100261584266058438365894665629956838697983345316203398188430433030041600, 204159899818396324944590134443674111624147841705836202403172769284334431807725745565167616000, -602602107590266681367970782583900908373075208743430275530374846206128441281767684501504000, 1597367716689105822502490439628269190196661481916095184474475214728463971695690219520000, -3795706064756676708801432854194257866575575112466306487184344616588827016411791360000, 8064581123235829503041427132541602663280977191014924445954279472222268057190400000, -15268863206045933843839755395929872493609969640190008591037326180061268377600000, 25649927291558710210789985481450953521856050480978611514299305473032192000000, -38022219987911352751879830648600951730375036013992498023935643156480000000, 49391657638390600806926445080804103989696048001475306080849100800000000, -55734601234321831966962319174531726416892793695000594219008000000000, 54022403202804903774565383729520308899318043122073600000000000000, -44324603132764215405897991409860715087621899734220800000000000, 30188110131990764805203085631722497222903857152000000000000, -16608783247060897221779952534538952229519360000000000000, 7092863173113954207251020100310505881600000000000000, -2206150686618950251495694926872576000000000000000, 444612386340467102590257070080000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [69562857434990405167330039419190905055378709714785822776164683002144047417085824226102833422274591995654099276189973484047001600000, -9452514640887077578045530272282083977710193494250716433316059275042051566179579353797984810301326049161942695841568321689402560000, 624620267533124633714835599440883278617075916129613280356281731492457864581127364667439682231731964313005203906850131105026024000, -26741643599356457034540591890762708261900828624501358604308009563639646407869492598650491876272131364914392647183747808418749600, 833800817418036406271605783794813403291684170104227216609817727731167153609988426927226343705275654121889938628059021202017180, -20178674383991884242850660132375246507212058425369480834350310385813482691047039407357857964645858193801052528789420855082180, 394466244718857314495143820450422643574449692160073706688654474818301571024970233711376377118272528630062201001730968142549, -6400665072196490779291474453971517127889597496572399063616760745552612767949095161487799175281092749442821558785610284725, 87910772454985613967291633682972880672192267200897866865827820121783124506070860161710913143072238717360709473900884960, -1037094740945666643753727575181038604162612100561792689788167967942555138717754749404761924251386347739084623563912600, 10627556525357801407884160412558782301497747607107222842336308143579079045655840978394454300172265176260642129648000, -95432996390341436820910595219367418174792949835846360601998660433296643832562265974361379028241783082522396335840, 756175833491244507668294434290684550709860431925483114226725981619518866234114735637279285309076896744665752960, -5316069210573295922674843481540057852349071007980659408803537828938787977288427678338604840045555406661270080, 33303127220705522699622230047456382181168881580725228248091741138753434543288036456922026016068613181262080, -186540759534416502137697103157840859749897802899086177819084155846524542434222892860555042651507872778240, 936635250164838465120770304420672484354395883965986146556259680499724870040661944029689788602124025856, -4223551409682042286454015230689340713943487725293763970360604637812842267775950211334037857036021760, 17124424161510194380153083848161718325474836422363779779335522975723769488897757147494701530583040, -62465668593072516803405570128521698618502366336749129988170036706678670374660179438114561945600, 205000515697305305921730481657279187316991239030954803025157899178429665473756880464695296000, -604925900297440191682571956044862673827632692371023723632522111377638989019066443919360000, 1603114470093397715687457495987989542120790096582036474023248042799306486347324555264000, -3808389525669841178320296327240147913729779115760350003975175199221149788267724800000, 8089483696423896447733246401939584213197702177695319397991026229871480352931840000, -15312176382040721047239583686693080405574593834637851434583157660435374899200000, 25716306956237037846829828961177375586204117719694707572594836799045632000000, -38111248471811319451303888538685480266373041979681597572373197291520000000, 49495251498364643318360517434588234744213252106354945903132672000000000, -55838022607013278724948222291193153276997826292906232381440000000000, 54109707568526726973256410797631831944287076613567283200000000000, -44385717008043441131095954542264397367263402917888000000000000, 30222635666791868564710005774741986231294361600000000000000, -16623909595950674022311087919253996280217600000000000000, 7097685892509349235307225569105962598400000000000000, -2207146179566243648758315883692032000000000000000, 444712245848892601120032030720000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [34736562309425105389812522873729898490330620628323607772844575135993016708048346659583413646231147700945178256345764807047801600000, -4720359733771342595824668340077220391863472394610656653277647940755740925736727402925196896165713528176384196901486232540152160000, 311933455304499075590009994256390826248350553623782112053391960428575921975735529049216068443745366307211369907216266954780584000, -13355247935565965250011701820867847180959604749873888289595047582974892022368168641661248782677075871820203832623775465957379600, 416431887351542713250563651006589663598927443204213062914245277069432786221098195243525448312755475197156109883092489556999380, -10078407670648337499080877155168374132002025964093964911995783372070960406295677708401760137809901808820780682278499165049440, 197027382886717375912500071217549787138363375376975142647986435398554714400457108848029367495489713369401335863319398194399, -3197121370872683187132165618058100685015375596564089842659289833104507574490761416504977321164998763003906648137305935647, 43913011224159229927049538083848595383031546904105908568259513299550864297545032495721200371224509149666514272032873375, -518067655716952529015980874660588844812522216091282599749957327061047402145151637079927235743831772542104909602746682, 5309067135675381220943095041977968170032893993948386201707509956618233476023780541501061004004311341035170580437700, -47676012182030184319989458170734493768344107317720768631779335096086433144052406538244704981917827857189740867032, 377781377378355170564908043285405165748909033090130007967091646787955949387469767369474866054750423098824372720, -2655978710299058248128845982265311066964881585169266987842464971455014166842414652141269328008175117119772192, 16639298452612278817360927908501451172363765426863850771139888569060357616221895695387146695995185608192000, -93205081162333286089432571292631523546517876553735601510644581653224443590539264165298286377827440091392, 468006646291204415066408129174458348045089065915284683824042426957519823929383379394544652204278324736, -2110448711103528948659008053634739727144040067079532846940366075800625551973844362390959617786659840, 8557133554481971433444639107320559506583229073594282588653575036536579075587835277581871675709440, -31215397116094374448287247923418041337620462648206201918743473701407250305356730585830557900800, 102446561104625240727007570234487798067627866228994678195332584646083916965565579233316352000, -302314788539275418802054654752122721835407895475306719610670551617618252096926279697408000, 801191533545386157144449063000637969977200819244186115514976187816099797442831673344000, -1903389224928214088466213119420034434178694934873946797769329541859647962977136640000, 4043163456458611406886715486364127553036144772030861071067267083214152587632640000, -7653348563544141201545665076304832258286795947564250265611629872648284160000000, 12853963746954491846254324403523340289635015745026683978373231318818816000000, -19050017132213521503217441538953658199402362331759368511341458391040000000, 24741115746258839678307152890801746286070339120299122616732876800000000, -27912526837291560321839883018600602099976783765735079280640000000000, 27049392484460422094245492095259149895153373694189895680000000000, -22189044549578251078518088662139504807920787469107200000000000, 15109168363602940887372130426820863314641289216000000000000, -8311015377417250723382793526613419134812160000000000000, 3548544179109060959395942493629867622400000000000000, -1103511575789027829453630814027776000000000000000, 222349968319747314048565248000000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [69562066267607875625650427366516341237901583932177018370366875917315398678249380983945292729412788071557104165300107743833702400000, -9452459008081096133130920677570078151371480328337663070496158460335671154558892148645566232813762538928412247037525077588736640000, 624619858799788664888944574941779627862323068630653786847814819959933036763890998418091369424401820534014728717369627167380816000, -26741759092524508282155462177887816970573679337475578441795184224279353928619229675787198632821442436220837491379121516424042400, 833808348980962702955083955068349736962143710797134299426637441275540732226183236133277254482950523310708130285157112694934920, -20178946512211123774899936581531796560021256479536833141299062195010269454721391799090198263784571423885823855717628205771890, 394473217478036561380639720304261355440807674313402452097751761436121784907514949960870624011067305287277311371422536322711, -6400803341630964062715719261220535069888995678172661079068745966974837182183505651053369481199586188907118132291311089421, 87912993212546223797507318598335107772290478195160316944178335050224818049311260490430192523969055364888346740579322112, -1037124455263984026534119687689673516346818880052358216431123356788714384568245702024461107308182347210273112666952856, 10627894160884035877088393078822886483894732227461867541981514901483571716968144953650052676162438828225662387667712, -95436299682261747931630195551025528060504519625230044624426702334802899230994127187988827215122032795059033426656, 756203948370142054477025960956295625758937488227941655340055988608677681399111971129761811712463026558103041792, -5316279017822122924167123573715404685849662226345685220398275408330832298557969343228436174361986663077110336, 33304508278901714120445060734488362634510992996072319985556022774664628206844284160734726523964908337135872, -186548815319726096342712007436924897388343207724897546189801588042513095850514487004807663398610360764416, 936677033932398585907549371077503983133167707232856396636318111334827208486807275076273882701379158016, -4223744602622296075887364864253445587613022252334707019924972973629356121975750668271350978979532800, 17125221736939959585731993583362751653891661498928787422222168896360605907631106857995046255882240, -62468611167879122465592500182037694363805278853051441334222317065432062257064226073502584729600, 205010219002493407900685854733425753669914834687481570175465140006600418980609516661673984000, -604954482553635176740880973576176898072692184594232347941509760829867057167794970456064000, 1603189577844638837231159376831727860210129491441129026943814030943653473414528139264000, -3808565224198267933511848162932804509955152785802933355659184995487953688597872640000, 8089848492369704297793563860810981108416506690815911183289258745838841627607040000, -15312845953454313581670047755849091589368926807175326343194775699528704819200000, 25717387781882401125596888054004150637560257372618217079365668376625152000000, -38112772641387723723704122406098546995514790876040936544210642206720000000, 49497113248571773027607411330615142372780626895708917614608384000000000, -55839970803102121275391025972123454068207844821837874462720000000000, 54111429008581861618329636135125491075956466915737600000000000000, -44386976715364364029154450885228857031476232847360000000000000, 30223378723310549592135490242556658958697758720000000000000, -16624249126245865857156145488572340554956800000000000000, 7097798674869062473546744813624649318400000000000000, -2207170410015391262809820340682752000000000000000, 444714773290665399825853317120000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [34369515922132248367812788199863630239783125515092804594615110958532086085010064045867629516482495523891226552720285277811705600000, -4672112725264600011932515904406184713075217420637520463350356840208697834414045156272444982065818753423256746731957725149230560000, 308851728840688151678659273462210379911752062629532536604488446256154118646863466541588441751310630100372564394722181174804744000, -13227816323547648273346114570777966083152082602521948380678192340464616831660784945783488950374041564539757447074103554980643600, 412597487605202558643388349284051529941307478730769776561742196110397777528391239878339235093554800350038662728511783348856580, -9988936008651685194758793054362067464132858957278839396469777367127641193737038615623588995643074005073820945419129504924740, 195342588096680732291262536131777617843114346518317454804796520254731625292425560010352238027628045421247197867549051862049, -3170814739739342152651470306055758945645197275010349447658891738245594665564578723986807525310511045981928229727343371845, 43565704476496827826501402002538491740659959836604203539120580582520622829506560595711789462045144587036828973867554519, -514133833833827940212650084842286014206813157224029730359775558646772419966590221805214911739329001731153447685773490, 5270411628299210317140477101404974237233213463490642668141686618992000504824988619140682053567058780468248875920004, -47343603066039196286296905791205971955146655780796012378099986918760230738423019889144005867773951004035512287160, 375262763946658787863575279544888357870711271641994962252203556031037169319648013670446009116778746971096041584, -2639073945034756121119850465977972781806067515025457808114935963612325821449392463372681839480796315093979680, 16538363970509361569636358034882838497090942957811552665649251664983466877885753419702451457371026015046144, -92667240763764239227646971029880001331786750991320357653968767505876425744181028407719570821778924437760, 465442823884769862950666600952682997492765073874316164635258092906666377673516221141618775265719109120, -2099497606702620106284339023119820684640489498071517199897631531350432412772739007098390422615884800, 8515178668598212299475958385954897983152070726891508623027934343735206524816700248515997327104000, -31071185410327410039779757153073234730949196478936231431868602411156164847198394145050455244800, 102001955486910791800418244928112608653479824718255008846904494567712108772260626012564992000, -301086533722602293562677391573727723689812377026386982958409805227923216792697598956544000, 798156048357576078641600734038740457642541959210215256290214664055627663195714856960000, -1896694103166477220191173745069056558798395333955915937893348906596317112357171200000, 4030026924756986954955717547318520189403868139290968420758327243102123075788800000, -7630515041423857757686990592988122553763737011311878411576913464491816140800000, 12818993003112002923293481847036304358867575430271535345837712021610496000000, -19003144834343654390309746226568958635600999668908257158006187786240000000, 24686610386921143381617431162562072943909449250335762039187046400000000, -27858147507837985751779889997974633580627330198987193319424000000000, 27003517253211728085739816035034923804606726235776614400000000000, -22156952220085715312987572718661469755454631863910400000000000, 15091049904061895488609098177047517785506185216000000000000, -8303082427831772148364134671158256892641280000000000000, 3546016554623877570095381700879895756800000000000000, -1102990166280431706369634250784768000000000000000, 222297698552028063509973565440000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [69500606644348259031241200112387304155349874477962420423951573407292184646752812154776590475006581736454777880662644618013657600000, -9444370532205224609267563930761671510690739150542217966147044869149364168052799807754020570053203796328151544220239069765722560000, 624102532110139747482569863268878098390603114709589533555536292377972524008527732392328145137568979244718928114506925849654304000, -26720336568897747543942397073120284681019988241826944682038056708993754347424541243392084426430678763404585148544043973375261600, 833162750257495322607120028568884495188009727322465402119150200048971183156379626097717632881536544183054752044348440394758880, -20163857085550105343882041132720228218790407500720801866577478842848953185650639049254809287941301026913852881641294546597400, 394188570042713811649308071886889325397198463478914671884986183392795018879081075386327299661387030748652355138939277388654, -6396350364097252233226531444791914728231284991383091225232350921702335982452615015244125917739065567471922269805637772921, 87854084933635877554594463477096835224106610718883411754168563899724379500616068038767046902387591279420808407900552488, -1036455789143761434963625301151236230437313970084246679262731852428571576874586998689670398445612503388262843388430056, 10621308611966027517064676425896904591829634018036535751772397925221645905365821131073044934168908467376528266466208, -95379532842622832151340179869389655164959115354226135486207569356021038778157494822242489656758377580397919772896, 755772746710728907587808433357971149489683290008637976470571000806433882777835701857590127275837571494583072448, -5313377122302440061890521219569404286871250366149432249965468545041611176232414924500765813690983762943223616, 33287133345847339686273818140930339985868051817589231933677315296675184483211237676309609190586933109343488, -186455960215753746448932012397236724014945137602468323034413872632134121345079637487830032031587571173376, 936233049794834153353362383865289587001433747507864111361606685316557136154551041168712826359958093824, -4221842107852523703510173263016787929003181411278892873084759013120309898863066030129418504952156160, 17117908772212618321514770641582573389414994917306656335486881681719671171529081918104481036533760, -62443387014635462705162906978750860059725828644992363699012334289939384015766766642953160601600, 204932171983842643616554420095237615566557449560023666037362205822570832876704872058978304000, -604738063441114893207105868687771652837775843819832696798560153225542036512331307012096000, 1602652642763829089801953772348996634683484107678629048021478140836035959912665071616000, -3807376175414793736000747528835711692000574986994627065446733063518291923324682240000, 8087505717008977939829076265374174377093033028642772710772067719972338427330560000, -15308756239497333104862596291819253770388753702404559689341576907928386764800000, 25711096249107177689379143854207154501980252246265538268469453143818240000000, -38104301129140001540163852803508930206229391683086941098328150179840000000, 49487215450924002808380579225286577812282399297575207652392960000000000, -55830047656273211623906759660358704576069963616417927135232000000000, 54103015608936268570973156847731830580034297534118625280000000000, -44381060642024187558960589882841359538075526915686400000000000, 30220020930805543309145171479181652000289849344000000000000, -16622770941922630482821519354860012988006400000000000000, 7097325056465331008343276837301911552000000000000000, -2207072149821452429919422150344704000000000000000, 444704865150951585573482004480000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [35217130188809363092941234914906505928426835659503158324532018386754606680081842705311293555542481720119026674951827498490035200000, -4783582683171480607689416694166068588708477957043224257063527431689526833181882883498459280770582207218153872521276389880499520000, 315975210558312376801403796603296943337521956749776086489820313834121751392001753801379957330868212133361420591767394067637448000, -13522520899776749649818711114331672911373583508720457386446704742064620962554810697684106951863291430584024663980748715519567200, 421469442419768208125461138370685416877239615169915423703784985905675102071276074391293021577467208682276237374100323361200460, -10196055266607679238571643631705967026958599854737464399540022726776366172712755574686247983175841351017748444377150882678660, 199244665654536381942835734283600899280025616811536933480318600337596668025917564954076309579430205708027190026535627133993, -3231772493059223019891922805313649846632449861666888777853829004854614763034107915484484092010706573145787270367969290017, 44370884037998887736396409853404207858931877070074895308534088789204338622401329813568278471167350268433362071196081843, -523258375169786865564279720261715001193908359389702416651870581836402431344893861408666702947981133762747622180260402, 5360118484071650833100209223625004036067797444756624098981099647810260971186155655423904535963455919059351205337748, -48115405623757599139173538019243852789026797673408171754862632302680051985120857914835698266216808159165039425592, 381113560650350504121227314509845376707110679705748102418528420633779539597057368519481180390926698717730507568, -2678364129084358613659799043723151435922841927286955466262606096399895048736485838880762838669229011744629792, 16773076984418778375055696590790550579364699559001935134067478394897349137986726438129840799947105739291648, -93918579924244185383063042836743164244298298907176242510768998839247794695191453085654266097632143046912, 471410907724663991871873761045532809608703672562560020977458624048598034009285555322212493972691914240, -2125002978358782259509783632238154603377225809376066866320499825264204052421193172683179357575193600, 8612943911371551448289938679164036384811683046597120544885929468190434902813347294524960365312000, -31407412063385871072082414515140747418412320718540404836187004805292655944266317354292337459200, 103039096426125580527081064691115949384307182779645842771817382954765980742738753165370880000, -303953245816480557974388458142037277780556387286418321912372105915828067260324319925248000, 805244609556629179887282394678042933216640683998244115067228299834531444032436029440000, -1912337262431434981569165299373969742269361764771383944379956451079524236187873280000, 4060737248439591098442928765048582471662799101594279873243306082403364208435200000, -7683924230559696662293874039776761951000219017560573694186702225099247206400000, 12900837427140024706637044522755142983899781558173958864459925610717184000000, -19112904658991180175644681619150344707723334328875075329457320919040000000, 24814316332463923049910538598119400103688520108002347870437376000000000, -27985630532413332239143499743349417088772752931676731342848000000000, 27111125427069538086190495698872830317203438790188728320000000000, -22232273664024091066701131633451321708644691188121600000000000, 15133599066101908485077908970045942227236028416000000000000, -8321722979423164349089910184611426598912000000000000000, 3551959379746526346951212612428863897600000000000000, -1104216807947388979587772053454848000000000000000, 222420739529207894439320616960000000000000000, -21788535957076483611033600000000000000000]], +15], +[[37, [69836279828017209784203726472607852236086259887642201988110226893504308103191084035563585885225182367576415107924598635950323200000, -9488491019762461317277963503923948602396587220801942442992620011956909048868127281149362757729777126552846978544016047074101120000, 626920599956644710617283708095358184686074168917366606766440778474747910585575159291349033918105993306834582490512808631988888000, -26836865890914220122519728961333066427795689206306016661456101749801967554369415524869227603791232268596752412139793158577083200, 836669214159644071583211262155785742678504300686442284104908523479400163827865676829034926673604524645584174721816438090835060, -20245681838921574353924186086166249990370749653867270193429881470634099434202805894360236549764535973686087093396967620586660, 395729513543560715974443755383021677477271693927320053468803308509461607050872659303147898612704794632317003718171716875523, -6420413861618940177631931702851005399459723460998991476099133103504679963102187162493406930318453909497141063030864647229, 88171826381407255355308122509022948271359251965139941639894717094804374105798494812858131820456177162288558665003835400, -1040055402176904898390514688959696042645042626870946098496958467759239617355190499976317461099082698675464514479812024, 10656687675664621792853996869608593477165101114676471001096181795058981806187361611529622567348914337642778696493600, -95683842049965755341747045750251465439715988854914379675545677877102219612406776514753366282192368549714499369824, 758079091790575790516023215988521684669896292494101206923310344459691417209276776645878649424770155878699155840, -5328861934266045835619339159765501174918558860074803004009086068298392750112742562474566377746367112732065344, 33379621007796349487982005048329529710002851008828823594297616263196569618306495215614025730809582652371200, -186948973433233926322198676863645844864534785309411806150241466782526664409324920032553969364560321982464, 938584130032358676486849061958691194060709474348426100263568803509740721155595647901189426740856143872, -4231888850747284916665770520333014862343946015997039375780606065528845903364115742328798480139489280, 17156416799938856153197356881719930435502323248096882836264446625691849161405020261408462516858880, -62575816329402073042474104712857310443145892108221749846485502276500514127912477435240882073600, 205340667216199892415410765323345314431118881137478098110375219678953101071911598549663744000, -605867189707041070735754918158392904153169499852723072516398470267367969952515027890176000, 1605444786151752976456987524753089904375686157525628244903962793358027484579937599488000, -3813538395973093501690191315753904328956562448919181973675608002354959783098695680000, 8099604515614478252008298526541213035592700555242382938046043157828269816545280000, -15329800362670893621159218817826675269506647359869395779571345476251136000000000, 25743349451315231512313210236375674624744878319434439826674258141069312000000, -38147563260827282008102379122337416938551272878589121744406122004480000000, 49537561831199594054685681712172235446613345608785531515902361600000000, -55880318243163596028558671136032450332470703238032333209600000000000, 54145460276715081135898305162631101693754808089769410560000000000, -44410778985259229914191071974262108312309300880998400000000000, 30236814261081678355742655630600634573051133952000000000000, -16630130575616946172347824577071325244293120000000000000, 7099672276233336285993170591562910924800000000000000, -2207556828151171180261987238019072000000000000000, 444753502786055769207865344000000000000000000, -43577071914152967222067200000000000000000]], +30], +[[37, [-4778703442508393388510057926834462130000325955154667500481167183388183843171963956864342567676099607296142625314052314053219200000, 650995718220718908021652813732347887123410129358180287342385480782554776154718382898291124187917915159591438363617125883499440000, -43125354649982311983744473440225368231614791534235053380042518842508574067576102144706848776625199961592701254074735265196168000, 1850880977429915650613956905793059244950814454367933412498819118507481037372732939763488962322830219082316669488251229770672600, -57851507012209411085851864495038879752288059086713042618676230595934235286173548876305403068992822303261612180645939718151100, 1403444856593782705282903280726648639727807820776609932579518394481924501280815768517230888695652646059733984092401657482110, -27501193374723923691709352521112723468014561046190535067503072534255229956511434441498360791390250444474883925741400558241, 447295568244749414634402245571771175028538623297255118653932420238030718953606261039196396852087295464582292910282617171, -6157840316032296617691345218920235217458939863991922476866357830348077142392357839808214862461243329592571834537341124, 72813320028696609464043342279866097307895450272105802084447282191024073222691667128924743093959211227446385362296188, -747861791273361799853297728423998238481291750226191820957504913578905169062308365098299976622629651563602405775656, 6730876882364513244308317691680202886877679934974680679437452788599218823385437276819101575360911178402150765360, -53452852629462696786494308734241258833932143267632391898900938586921734411862829680568091833303249708274040288, 376620332479801208021247686017964540613561487497239585511347871312409441280069208445904250447045241937964672, -2364576784275345402148256400087891284399390619460108686989617541077121959951127776108013818408931528114560, 13273572576191732054735516772897482901713549377078921466167105016842586003913680591227060310190104349184, -66791449493377416151372373741632905396768550529649934328361935611027380441362715190403839656724427776, 301825005986740108495174190078691337711453039989887954315027151634234021879678073310702123708631040, -1226341519544514513922536342029364012232784947434904133569841778578792205463994743015201579130880, 4482765353407602832189232103376949430162036500755237276615433555456705345386272128313027276800, -14742123141701812853177802252722270822988422066629641835761572164460163789906476801495040000, 43591238347212375291517915449669884983792447800779360376350214617234909540916299421696000, -115756437953066250708324387528284082769647241788913566006570597345829938762998747136000, 275548078225564930364834380975834448554565895457950708504133871445096353014210560000, -586467846186581417233233219619883592728297264757416574632551144012381555507200000, 1112294619301858147647023928442589976350775343214338009614641955889191321600000, -1871730489522795924730743268062977529550012085540875233254528185393152000000, 2779278926089506683609927955595553743812005511600377063845006540800000000, -3616423927941429833619607843208399295115870511038212031306137600000000, 4087666104642068920363874193640900272907290746486937354240000000000, -3968652257243767827836374895018638265491557576222965760000000000, 3261569305749561415102056738707729681688327251558400000000000, -2224971211611165645467910015789682457881608192000000000000, 1226103788084574577557558796074712427397120000000000000, -524452669685426552843862307755786240000000000000000, 163384054586363625025782895607808000000000000000, -32979223691141888241303552000000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-5146789594625300993452107453806984253111803309562901981042598020755493857437081425819068629575862851367201288289635843684601600000, 699461764841486133757329154935617999419061862169345477830407318000892745594741976696316097008797767195976612941967179765008480000, -46226381195797653119807494513262932463327668325843596887470137707211089990749290709723004115474596619046823026931620733562704000, 1979332247654665798994871215303548640335801582862163515108148066625357420044923374058986296044556350880026373909300540780294000, -61723318524574456729862801106195512889176149290978821105505839700958636242158302512323312893562876459176188212974707963248920, 1493948028667105042232020372027334865760688729208866440182937318501932722883663606709528117007745541774731388917003411379240, -29208426326555624675074218805334020734974281989317035186995758618859359566919180795170143710382106175028586142141364065202, 474000077408714571200847676172111303198030497364737484345267413090425488521553067416289984045895233419151070117747896273, -6511033570132995751275939454930679627011717556431492742292098013860729974232530658897224173105314265370531236574772077, 76821064418129297009063005944512588918578339672065173043085842151737552675612085091518908267307180908028840389540154, -787315631125840085377693987485651330984981036253077562700082709687806531758910032598188642498885348785320332964676, 7070775918746351374985679617298160356615079078591752060619153773794288542878641776902623957727604059177174490360, -56032998501756518910202075256205041629812551875799137747168743440810583096283035132633288567930972570700623280, 393970527000094561084774611252867037835744060489345116055473708814253802972846806084228144978046564063892896, -2468366430735558753908462167345953530958401064033675572378455145163826598770771196372476997803304031474304, 13827680119021198412008971666980227565510202295439486185672750072356146164549452716461221658734817484032, -69437887537608234734490389810615442981282500038992591242133453269043524558261932026211911055929140736, 313150885184687778649568887504726367661379648645188076902998873163190484971960440503949859002577920, -1269816951349623213824522479459666641819966294533615163297070686055316931538081174868666448455680, 4632497980258500867600317845146335418888146372089495561403903331122300428716848178605221888000, -15204666802790445487498573266632303097927528285121993294992019555289649474844467721462272000, 44871608314514833086892217974744159861875172110127488604858523973183886922218948445184000, -118927113181121322992155351106441443757679798537529155427731095657073494763919435776000, 282555628914277032474710586681933172070771710440135089993333386969581750581145600000, -600245655248936777827058786885589818192758389608790981108705187015653701836800000, 1136292430616867236798559655117934646331106807042214258558729865004949913600000, -1908561237920190230769756764171767028902861854228951953759700144340992000000, 2828748319252459360230695266617225672882258261208793608633036800000000000, -3674071627050572808686366335891065310857445762801802927249817600000000, 4145303834730476524092909034319856722008747512507004354560000000000, -4017381470652311289015234974240267009343160288605634560000000000, 3295732494335352339404225139005267746642096186982400000000000, -2244301235784293150758526189767105553715167232000000000000, 1234585973869868772019950098707125916139520000000000000, -527161336742741308653207601576673280000000000000000, 163944070110663298339936967589888000000000000000, -33035491218586596508119859200000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-5388830846662903595145845251077515657537578270035753848865783140824948207429940609188444436726991832267929932501187306469219200000, 731311582799082498847281009900026290779855771201881588572886717492583774857747992045238630617129404599910053188588630806897840000, -48262947839416839420921858958632924005788912661114849072864832366925419613343214717265336640073042892635761161616823401814408000, 2063636504722850893140897733534066199427781915822555489890717757132768819928922302996106476512588994698547342056265029398168600, -64262754622878745074880147214857825933259417354887029102056739795908302082097225239041757147643568767066326019367949449813500, 1553266879695464106600716340012677241110307485973293300528022962463413735718759926190424843815595882573732073863435022718130, -30326630940818032881982574952088683024827787452270412729548634923887984422056357060544636119012061948587623726989304908021, 491478661006695231105838092507535553983062956670665576180549722317251308715818727157906094273924569379514749953831869902, -6742038160871268195437131473985722448461393980428410371841828944778795233035713927208692654975745403294426266601569849, 79440381630209289198231815347263313740023087911340068551048326688941166221425801400403759114626743052610552501340246, -813081832368371207667540590874659419194737303958597382616718475454278300202548083126243162087284046797869577535356, 7292583874707546282014227392997928933560243845219925848604206452987608221896743153270305234573824830357525484200, -57715403012091966159743288787130740997804135892821079948808959370660564793651064971548926286800637030962772688, 405274790584857222030315326140971215502733322797058430985330216561179335769146248750037914517221039220094624, -2535933703618311238148227027946547546334522521909877872359381076130572433458616958202501244531706439804160, 14188103870104849744700503363934985344928844528031540412458578037705709744023130582260165964013035459328, -71157816435177014930157359045560971257589281555877074478202948747955886671944144413795417640909584896, 320505203790076525349712474819072165369106200984561483781513237203147063378620504959428806149278720, -1298022100370517496278811235194233011935458930546286619374144765581927833496475932237058247649280, 4729550550454370963258714953532650227633495746981058252165183513629317546564756215335737856000, -15504197583726304261043587084564531099348038608690240324432074393027733671439825952170496000, 45699959048058242499512404346379424965758483370745435634379177682026714838646633020416000, -120976445722269318833545876579977977469060575084329682675842970800351969452452468736000, 287080441191716936834812413398546744199968816832323690294927599804037728444846080000, -609133158710205200028572016592000715065570740690078948110105145433511182540800000, 1151756654758280339115680416739191343877840926415034267472702079661064601600000, -1932270357279373655499565403592589094421814836956658908982566385180672000000, 2860559607715726762083595772133019971358530352585861382547989299200000000, -3711101975417627064494630233400237775152779209193071480166809600000000, 4182287087430457416568110769337943165891736505470377000960000000000, -4048613575780397936850859295134605718479820597635317760000000000, 3317603815310622794601758842511144332969273353830400000000000, -2256661986466356121914679791022552356929667072000000000000, 1240003575634142676739911420015343797534720000000000000, -528889292929782959027405902892236800000000000000000, 164300887384305710182677514027008000000000000000, -33071297826960501768821145600000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-10274119092682469699295481628006223952841006423148619814027663517779165592268528439763078559000081596844702145512988205009292800000, 1396332589911967576607899482588115362332439290975208659793741236914777142457180355890762222067579947559061712373502276118168960000, -92285172735300631526161642390868005736938363086668933355307269119533238965052151924731937807459298436752789641541620483770424000, 3951648260422044006105171130764438594255959254140921646401867155806254610090424262952640353696995126076617166521768852329709600, -123232934427027419539034300149283158922661055581405516195164154164742454711634928488507472731166325274894751987785939685203660, 2982849455518792393744171546065659675024941421436915254746682527484835622376862780764770545796709388872638992583377096867560, -58320695675260672473131503680970836380229819518697695200284597100782820158051405848050213501122780020372050281444602005615, 946481210272879710390006307329509053645323756400727589802325930412599638564352847854891821149038513619255491857417953153, -13001782903176856485855851632773060445907718741812542480286773425710252693704397427441050875826931653396066196363412342, 153409770696597574419837647258104742484250635152969422407432343066299968347353455427831963191586275231900379106930564, -1572322473449728258224893838918332754629810513992258817679397925656871660401860373796133056568923058337164970260792, 14121478941121453849565464704824805178639260548124403401860385600328697235763982745776694359801086957097507631600, -111912252285937552976440460072909937185149976650701812958547247656251565134743825893645492146278437193774068512, 786898042305849800045327377069889785113136873289494187355111285520742741348476498905350992327012197798042496, -4930439204375006852135926108477980026180638720926958287529473885832391425864516364541319085140725685560832, 27621472326151442693843020345676202326012048661580053033939171856368206530944467219401332647277083786752, -138712562461536564600046078472205306299445503506024453500953155537544508839644519357614653513103066112, 625597488283795597468855774722630600592826646483147702258787993787010261844308042924844697628928000, -2536908412106396294965418407945169684496880081731222254359382870136178321981782481733768582389760, 9255533841790516643177474683335093630985076222272807952322738785268272317822184862271955046400, -30379872935301100958538683842647653636817487219409359122636836702961755815073069798648832000, 89661031795847697415641036731821165660793012896048976251415232028750903189511055403008000, -237649145962832862025232793918111392325411117479042561919798562767416349719354191872000, 564654583950313982341360348579146186842861057862547894152774590812902613206589440000, -1199586744368802708680262842531760795042628470047484912821377584772042362470400000, 2270997754793608338252636538771554088014166259494527134773412103483536179200000, -3814669041174083712618582155015932219253783897694398218738165338292224000000, 5654177796795077497232499389546428014717900120708291454149967872000000000, -7344248540331540604464094938177829982860536038305329176425267200000000, 8286686616167963626164667258347273781841672920551653376000000000000, -8031425241133006628521088680570952173934790722212331520000000000, 6589109185017961770213925994875794759931101236428800000000000, -4487260641438773028600914227952081891821092864000000000000, 2468579268169810036615331059774063997091840000000000000, -1054132180806897639865174289069113344000000000000000, 327848503520620218200224878821376000000000000000, -66066974738069977090857369600000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-5172473720286196094283652040079656993405426099286297052094839138908496676964151908138049098308309455375326235256664213540403200000, 702827467065738242686994573157797013148041509359098360373392216879413721928173251487043988378572204501963894744309063618858560000, -46440685297299623505142739077146448280675389043415745837812944163415409076156732287788091861889358789088248135025900142101544000, 1988165364454850035268848572409085311038786351874065645114015880420628738003804871191067872209047091001424476783735948709921600, -61988231698564391093330843753862632966790242176626648121379366040092027287895999565856952831609428028771712638066970335599620, 1500108723196204311447021562087024752299287360363539962895427283678430515794195456842893950824442162931693649572112511908280, -29324036874760960972554512286178628778635733371621597644678601910316238715580512201488446778484763397696966021743223236277, 475798906406706595597756092114330359869714094550262861550140908436753797819387744001015277621497988818187297641776312841, -6534697104225570515362286300304154873281004829804854483876454266477031775710501562662892312791771165153383726229967872, 77088112818786010178520364946921771519676217449272495263911002337172899715651316576788856603926957072302123841651028, -789929972799671960716021419226699009120019224100432998826423109781729761058581467736865314348695361167880938351536, 7093171685955906289240526751512259777487222081247679215702094940323984239851724104874501681371941155189793100560, -56202028017717477188994606056348945852642649875115459115410902952929943705089465045882145293850939982578032640, 395100540758264548694841389028501800876828001638940514483877925537399442446088765678587629596361772187612672, -2475086175958999845483629326711649599879953246404954114334921304911221925423080655782045165016111292730624, 13863339187549361287919631426638283042180854879690804347768765952836108851352757965813978900351752418304, -69607154440884947589976892517016263076609534545711262686198078091650587970945345230973075864845464576, 313870787065609830719495082684487470401624055905249035377721993061850755877358619180912151625687040, -1272562900410950190398314928040380003144337271014745344534869325475651655772553897814450986516480, 4641894515861029044845839133007817360047584799184371906520451524723085092471676104480539340800, -15233504580077963472140717277700882628584213764651883738414951328925886195240101743118336000, 44950905295952301178026458585503689816443939008550096144025437007920349159919288252416000, -119122159996545906774823896946002225518387855818231948570098431090491089062352224256000, 282983755771234116867258576460624696098885842872602719755596273212222376600821760000, -601081562476991150730434524252910628715245935974959461196494456347915648204800000, 1137738114000803223691745885272106478237655901123041812975435287415855513600000, -1910764098613109148825977458807184172466771304955431235856124796567552000000, 2831685553940334823980944543631919718254128188934319893093261312000000000, -3677469128017526097477817475768046709267559876278481025898905600000000, 4148675227178129482243831698498258117272153783411787694080000000000, -4020210029735537655389638721364633643775528456851292160000000000, 3297700179140574203676200694507013250656080651878400000000000, -2245405817739822106452781436129751258189791232000000000000, 1235066800070373735164203699271444956446720000000000000, -527313635507739437347476980518354944000000000000000, 163975298246603279693944096555008000000000000000, -33038602598802689296957440000000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-10285928125019555310527555568763300023800486535063261166100724079497828227160575576894581211832880042253190578003967047928460800000, 1397858720054736277747539520964778679665009047716842732225161276138046205441643456802602900733263170681496747658684236009631360000, -92380934771280855170944043583527988834168630782362543334950812308683659713702876330162959546886645752290538259042377527984504000, 3955534974652072578526405162592723303371831515420023793563402460927986639503327935864542569292560821344189148813385244032701600, -123347621074757174408783181428808767235952726504645816454265074492238371458894285486626773453393081022318694058928556943959660, 2985471189181752846105732131059643698436284497145102131171519031774074888894438109484341625183756186264609184960024006099640, -58369011170386738518047046785706603908819713795894945281966115847460115500009285883496856471466508112396950399099118563775, 947218703756301029264519564676403172163750704950638925605054018528041562271660136047185541517963715271893732228040728393, -13011289872241937434224946260005897351042877852266426870913891939608966090219377338415943620917142318486376970369618262, 153514778936520866456692138492624227570688010472463079993890558617273619783583220383180247799476920838698850918895804, -1573327323193525905209866713075908595002863758723905839432380454003903394138099239030596916503155152174315726816792, 14129881225662077175788619612194144231435270210028657854058531334637030155958058849290334023091824115698945077840, -111974056921811427417456502922996086925449752448722106883287053976114378932866936897215666364094972083845076512, 787300059070383549621984667794464759629027769503267251965854639381883498696991145865529663573584917408673536, -4932760992749814109572114662929228646604242429529825659464147356365461928996356110778410545116891487729152, 27633414405237686023238842454650593072725055441597708334914906738395607229899166719147050197974398182912, -138767385734199669687857042228907729289025792906016296035332517097500328795198884745924065292544371712, 625822440696541317397325225814717163305299430332529859669677240680707947293625618009886151687424000, -2537733989895790342196492295885267842145788755179802644512534787335203075710088389869818568949760, 9258243829469677182370370034627529114549977329842335121160713192553083866748570583476273254400, -30387823871875159704766666968739806888164705992590600830131631846132977164798417799191552000, 89681852652021986334641616097714583033341718149496298373862652097922334940082132318208000, -237697703872658645178469240541818644745889659969768533894763333926384104956430364672000, 564755133387365665492269487753857473404828414512327063164051769087252907868528640000, -1199770864927822214935962499726410610323698691571869633249001536202054168166400000, 2271294344792080702686151262518308362728230025251299657593653707801252659200000, -3815086519582677534868407029856707655461852639297293816457275747713024000000, 5654686908859133698599024219017819395349655557875929460540096512000000000, -7344780521391469480118299917445918158703120074735052088455987200000000, 8287156075197666364023204397766532285412906100453277696000000000000, -8031768388206840691680327325712997579531878409720299520000000000, 6589311390448768974664425128647361296899368602828800000000000, -4487352953641897518142703910742859091032408064000000000000, 2468609907219633842901220317691239035043840000000000000, -1054138758722684082080995865719209984000000000000000, 327849189223205200696301297074176000000000000000, -66066974738069977090857369600000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-10897323116961883638517762637622057977435908531610322386322914450620971666136967339321745203434319573636005284772991885136825600000, 1478342027844125953822105984745601146541407981215781690032037151760803404023623604218119870996107155166763824021429454102367840000, -97529252554189000104293633670776286562457061858673744140760049506586022367900867682315996503321335544481758500367105583448216000, 4168734238474580655122989392000132761260248257675138875176645981999210661937275892626730554346632573162320773223300669022040400, -129772200644897246106648898460249141955504872932852366052915425856649954209820946309027827389173475476073063324189852660522700, 3135603187963203825209465672981489561503004619409889771921748364887658904378292073294556623908052930003117175020016972038220, -61200252841756561082514598730206043415095335099215032117186306541575041448551137497912940676084274783517756458639406150747, 991491725195467227760969905674331996546715872353426268777381654334197165723158217321397329224204697315957812308345069239, -13596663376454596162619047545565471284735439120935513415365743870037791096156480737155432721981434689147240524492582888, 160154998692924514351447551485042227080991675782021680861706613862393427723837984268803897519683194224732525533051152, -1638674849603697485089034731939873003234132514244378539880918025587181323758806504108172481312758292392207689813232, 14692666716878260516147598826549170547145208516890155694456223172468239396872615292646583427996198247110335450560, -116244627804828214620010452388702794380015760343875165924255648511624863903220146114702455367349790156709992896, 816007227415870947962408074885089547588184289162622231773262467128004293466871273826648573474768423548806208, -5104425289804019129807430500381858740390055281468150819813294992861270916737062789330902003619952366952960, 28549541108171637516542075615387545477809785502489309124373435801397605991143717931937594422760340141056, -143141139483046441028159828377140797619766415191692145362108402751913412441020638093358649889899579392, 644533191396392229104379583918068952785009288157000677093818453013182632021194220675662490474455040, -2609527543007593226880651064595252250669459916978490765522639379832109170836787260814723145666560, 9505402471692743451467460611678421750246278292128039082900851326696498141204814990036400640000, -31151001191560590900793038835061489069803011185212356175835782145873017150580529178324992000, 91793479186928011068992460114104123281121624366104016549170351248681476586215466196992000, -242924527463123394454741767999998552020502615139285195994963442214305742399629647872000, 576301685465512545924124217016573093303846399395213425127496640865762471840808960000, -1222462289121530244702368102429919659628641437007997626473503744233900927385600000, 2310798636663145516486068009063068226846838933549090655286567046212789043200000, -3875686122225076754473134429942362347439506023002965206500898074886144000000, 5736040725621168052180821289041136900347839205168650408179713638400000000, -7439535268736001906350115791729405020093475968456985035879219200000000, 8381844971305541936071981650869693977269207972631892459520000000000, -8111779500517419630032779432778063294826975528505835520000000000, 6645375324504845554404732885021854437236068371660800000000000, -4519057195959605776233822030343091575842668544000000000000, 2482514175059545532549517421063964133949440000000000000, -1058576345844074795600736385782251520000000000000000, 328766122685124098655808143753216000000000000000, -66159048873888590618374963200000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-5171206132498377972929232295463952567307256417620322180257264725222117602245736798034986975757762148964298835674774368748038400000, 702660023854712157438056305544652949928088217703860703797017577966685522049222713218474524544939709457015433206535350449520480000, -46429960703826006008970534508305706326561079093984340724826020489929891967725853508193542768902511927940087801243260223256072000, 1987721627925277201199205170742682807627337071073572640892670997974692498126046277661497401344734114799523524941834323348078800, -61974899739093653384493409442241204428209454016594085006109523875654511332893015106192252974479780038822057211527684350698980, 1499798747516434733661101079451207490615066903295435690093702518546335734748285650705872907220088655707183749283152911205720, -29318232769485247598360182772655148829173338474381388471503973605834067232583583206118637901488808230688899763450839999085, 475708977729486213572741598052165914441273260520885975904430574709818784130102128845513187337094280689055674605021224726, -6533521444851883364713971269810068170590897677572255834400073450478924860416754251323881004241980868194374604171231971, 77074954663895042017953425021900988441500189778948160862695991589970184774130686962644222904388215511432616366539738, -789802487484509788651096262813395781602196022312365860037099100073824962578113920687232935003746616184256147114796, 7092093187082755986587457238474959508459847684631426544471156766881164397448473537969455935680480675733777446680, -56194007517329959359689636643531720561948634605151088124350329201158289116524491119376190744093509232401848656, 395047830517833164363485622060883687806843317279404380150452443040048542165285678021602383765354063329609952, -2474778798247760661248284117117675768029272296916398139355537203468863411189863159324041132635825325196416, 13861743778528527484581384856938833080311419969751822504601709910697233830217656744056540329388741570304, -69599767633837775028459091672711260606689643286262553509263205574166010555705021106930069251675414016, 313840234169095335866979009321516508579567359075451747420066866298289112648732448163862495279303680, -1272449928125150288070431052495264594323340092327439709329067719981881188678336216091403078318080, 4641521070684730906818231406112625521822743083124488920330063348752283019193915784943122534400, -15232401702417023683980130243221460723305525114090726881381303257753416090991339514660352000, 44947999461892143651670103465823689550630068361908453226746700921953012811516287972352000, -119115344175284225623772858539516212943188233944131403139170696257091482308606662656000, 282969566659239242905381879620621371845270779364089339582945129792654188059176960000, -601055450806906903759367718521518701747576666471493841449546249737198516019200000, 1137695857586160601360485627023947981646112576025947073140582072776192409600000, -1910704363727287659990072194251141045360920672665543521540540669181952000000, 2831612418804520548872815290146068440802469382627083264156626944000000000, -3677392428149190902121023991676398327914112680711407527336345600000000, 4148607313858642406399291021092139318400297670216612577280000000000, -4020160235961588826051671014415535381468694359478108160000000000, 3297670754645559003435595041935934761600326985318400000000000, -2245392350277304324808433091762388672427589632000000000000, 1235062319780030144698259219839351227678720000000000000, -527312671630705130011280055591763968000000000000000, 163975197582626466891331868295168000000000000000, -33038602598802689296957440000000000000000000, 3237397326955645658726400000000000000000]], +8], +[[37, [-9665259276315777614014114048378874851401923789933508337480621974028780302728966897542038812499736678283942237907743057385657600000, 1316184168544630071031209554033581021895946940786745015139614639117476343633101285012384179472000953163691559086304484364108640000, -87158304139339721585156461441301191916878551909220542775471879268601910527715918131767999036998302366857890067782172265997656000, 3739336469658681597647873704689834143190441073486792573231313399626903067411993493249593310371549326662287445795656678064056400, -116835018775828823258843451741085641280270485473264092827053487129205903870714236585435818509645226801039693575603215938441900, 2833337408096880570212278969415448335326662213308336159599902724635441168984828429228597634281119659583150803101303332334100, -55501062214442276657052610763518356772878988009858026711413663015632237175503412224373747050496923683267376738489080893027, 902388046188154275943584954455909120119240257056694017921418962060314062491425996891684214011604947833454657850623788537, -12418760717711572058758380408201659917595371777608653234787683127277641518354788651379584391862219876653220886357919518, 146795867249975862846216114115728309130299025184059490342046309315585590290139950770497580870457484967605719442997796, -1507229917669881022475576132880974801434188162047920394809508373489403327742088202817822250449217408086522589737832, 13560850447651571114512624516544379400984071034495410903924570109383127679655927436230536446279633784598148566640, -107657722403695801432496449432837680311971999295477495899699800624284389341520564529170612242538480621261520096, 758296294441225170367615503914501223293949722349211476214554422769323747140202546258202574087844109373915264, -4759389662743280200371300690213297596096187767965745077139094452221299466590244678904835691398236741405440, 26708536441259158807216280324338149844666188420566415930814754877643957811970118450125665564417163524608, -134353582326784138382778894012582242908544663739246022528047014918100580024303414258266082142087959552, 606947843376973675466833563345220734757230182318271460749957034981658863573991782293167671534663680, -2465340803566193214937027390325416093615203277307145403760881488626813161043518974234959822069760, 9009122089920046650135599560074584671738458692106869962963377003066462189921461094786661273600, -29618901370937549338833486045284815265736559327909917490999982545566656037788482876431360000, 87555216929061987734002902954791625944640847972724543910665005049926434240183722084352000, -232435954014891475051062343272903510201197406057726990681453924146293925783646031872000, 553136410096156849833259012996437215451073199996688292534632005873529426317598720000, -1176947543515263172855990851291035599673024263618288159090771789961629867622400000, 2231577975751828769115240308723111217078644001390925616750205194351326003200000, -3754188908303327470685665284042363781487831778568502257325711265890304000000, 5572970250304671693866960826494813064623034086030043764383619481600000000, -7249647192723678568945866032077639884177074535717543226127155200000000, 8192133546699062205804971360056349687729083274763388846080000000000, -7951513716370325348844571987404082983253361798173163520000000000, 6533104099951915590954829543643458597705908800716800000000000, -4455583334046100333798492797086574578535235584000000000000, 2454683960910585527898922915265526355722240000000000000, -1049696521439575541017827618859253760000000000000000, 326931771386654945845942488662016000000000000000, -65974900602251363563339776000000000000000000, 6474794653911291317452800000000000000000]], +16], +[[37, [-2529358406409331225836808437495584183262207081852401519770010625398376371566544677879472047372186384489712515865768181400800000000, 343935834945580818564635313700290053416314974458948441851419259857706199556138590907660858974782735048118847371323925538008800000, -22742604719967207032542011959983000639205643177409252416302165492627718154633828121359139754213891343823443133321409942194592000, 974323746270492726319135831695613651596019028241794411649786532623910865315412710506250689342687677434992189409386767167857200, -30399441811644756285658340181545973517225019707584245201063939969503317807949591116986145049418233980271636194092162602040960, 736175080727704462809884430813940842361284625377165115121071547931109358056105450144486277120552198386012859233644519961180, -14400601831101749338231417506258917588745460157773008013715162294927906891060514421194049912798238278683453537954842590326, 233816624983170244742859500064258265274168804906561706517611371397390105690760312545788498564802515543789052713203185513, -3213431767023025608901024508163273469017966612476552003753963771473093921941469317706145636653466307570075560971813821, 37933190753120860120981844886832957230974702574838890148765074814074315076389908793233309808721285878094969608631494, -388960606402307857227277153057466382230943970069536367527716649638310452286495281249205543588810604644993890943508, 3494936930381525000116480082321808311930253042874751222276678770492563873434816585262674277084380574047613670760, -27709554277505066054489376333475354169192524607946300025571538171278808144116502188031314804505345666414544560, 194921951447187459790696305893821085776027903088660838493323784231162099595883656416052110389660893442155616, -1221844593789503410345373579724255131185372431528996362603862599788815563584585827987345690223827353235072, 6847988429565272462738236796803951813792630911636701849400176833931811348866325474134787590483070196992, -34404529732262044483018632054674309733405913582884593773842626807813429425795089329679983573242853888, 155230239727871756139387586975303064855531780821031202276187318950905546669032097983314000239518720, -629746173519544489845411638901821427585124775926559006418547717703455264396435727770934664714240, 2298474069458303894746128052020456903425374277401606456184477214463813909429783202858886758400, -7547437012128505233274422087407266191575444591705314532595357770346973531200949234702848000, 22283877316613959783779548423552562576556817005330305962418575578939009063141313276928000, -59087401466437020781896052708906627323122831046484551957151658028186581593082800128000, 140446613703840643094106877914250367237980377733463129861796710545855254490337280000, -298488825527690529606530141802158653429140545554656045578506489348021494374400000, 565300540926727283826898035780399038251765351641202977022196601342026956800000, -949913715075538308238443136735193865987464663333615823089957348376576000000, 1408509299891324198325288606796259225469613703760605626602295296000000000, -1830201900323371378972032320236580663700467172211250203184332800000000, 2065819580124176874118670078007039861786017705835730698240000000000, -2002914627157915465319098600713402244353368983685038080000000000, 1643816793986188920350117530696615373921346335539200000000000, -1119859375407245409409606914613576497906057216000000000000, 616287547902012729618726873598377968271360000000000000, -263259582240561890454731594422812672000000000000000, 81905646590691546325764594991104000000000000000, -16511074689417551108112384000000000000000000, 1618698663477822829363200000000000000000]], +4] +]]]],[1, +[[[167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256]], [[167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255]], [[167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256]], [[167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256]], [[167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255]], [[16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255]], [[167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256]], [[16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256]], [[16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255]], [[16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255]], [[16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256]], [[16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [167575885795588353650895632547525752780924504100634656800682495554698248809531 / 2^256, 41893971448897088412723908136881438195231126025158664200170623888674562202383 / 2^254], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [16002073169761009299061584367462515731403866307661617819558168115282002617585 / 2^254, 64008292679044037196246337469850062925615465230646471278232672461128010470341 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [17890861694255574464131531585687664598125326563666237470833371715751558276005 / 2^255, 35781723388511148928263063171375329196250653127332474941666743431503116552011 / 2^256], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255], [-93677768007169246640048555675719283122885645460152756961395535435459681371979 / 2^256, -46838884003584623320024277837859641561442822730076378480697767717729840685989 / 2^255]], [[1, 1], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1 / 2, 1 / 2], [1, 1], [1, 1], [1, 1], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [-1, -1], [0, 0], [0, 0], [0, 0]], [[123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2]], [[23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3]], [[23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4]], [[123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4]], [[23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4]], [[1, 1], [1, 1], [1 / 2, 1 / 2], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [1, 1], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [1, 1], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [0, 0], [0, 0], [-1, -1], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2]], [[38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1 / 2, 1 / 2], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [-1, -1]], [[1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [1 / 2, 1 / 2], [1, 1], [1, 1], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1, -1], [0, 0], [0, 0]], [[23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3]], [[123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4]], [[123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2]], [[23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4]], [[113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [1, 1], [1, 1], [1, 1], [1 / 2, 1 / 2], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [1, 1], [-1 / 2, -1 / 2], [0, 0], [0, 0], [0, 0], [0, 0], [-1, -1], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0], [0, 0]], [[1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [1, 1], [1 / 2, 1 / 2], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1, -1], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2], [0, 0]], [[23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4]], [[123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[1, 1], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1 / 2, 1 / 2], [1, 1], [1, 1], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1, -1], [0, 0], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0]], [[1, 1], [1 / 2, 1 / 2], [1, 1], [1, 1], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [1, 1], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [0, 0], [-1, -1], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [-1 / 2, -1 / 2]], [[113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [1, 1], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [113427455640312821154458202477256070485 / 2^127, 226854911280625642308916404954512140971 / 2^128], [1, 1], [1, 1], [1, 1], [1 / 2, 1 / 2], [1, 1], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2], [0, 0], [0, 0], [0, 0], [-1, -1], [0, 0]], [[7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-7 / 2^3, -7 / 2^3]], [[123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [68056473384187692692674921486353642291 / 2^126, 272225893536750770770699685945414569165 / 2^128], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2]], [[7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [123511561853137275118475717342600435043487983643349934975421422941774004949265 / 2^256, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^255], [7719472615821079694904732333912527190217998977709370935963838933860875309329 / 2^253, 61755780926568637559237858671300217521743991821674967487710711470887002474633 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [23158417847463239084714197001737581570653996933128112807891516801582625927987 / 2^254, 92633671389852956338856788006950326282615987732512451231566067206330503711949 / 2^256], [-7 / 2^3, -7 / 2^3], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [1 / 2^4, 1 / 2^4], [-7 / 2^3, -7 / 2^3], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2], [-1 / 2^2, -1 / 2^2]], [[1 / 2, 1 / 2], [1, 1], [1, 1], [1, 1], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [1, 1], [1, 1], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [38597363079105398474523661669562635951089994888546854679819194669304376546645 / 2^255, 77194726158210796949047323339125271902179989777093709359638389338608753093291 / 2^256], [-1, -1], [0, 0], [0, 0], [0, 0], [0, 0], [-1 / 2, -1 / 2], [0, 0], [0, 0], [-1 / 2, -1 / 2], [-1 / 2, -1 / 2]]] +]]: diff --git a/output_files/issue-230.P1.d0.p1024.res b/output_files/issue-230.P1.d0.p1024.res index b88de882..a957a636 100644 --- a/output_files/issue-230.P1.d0.p1024.res +++ b/output_files/issue-230.P1.d0.p1024.res @@ -2,17 +2,17 @@ 4, 6, ['z', 'y', 'x', 'A'], -[1,4,9,1], +[0,2,1,1], [1, -[[6, [83273137416, 7761391038, 298505503, 6061146, 68488, 408, 1]], -[5, [7761391038, 597011006, 18183438, 273952, 2040, 6]], +[[6, [23224320, 8796672, 1353024, 108160, 4740, 108, 1]], +[5, [8796672, 2706048, 324480, 18960, 540, 6]], [ -[[5, [-30953329224, -2383425124, -72648782, -1095128, -8158, -24]], +[[5, [-35089920, -10766976, -1290288, -75468, -2154, -24]], 1], -[[5, [-51454687746, -3993436310, -122821118, -1870252, -14092, -42]], +[[5, [-51734016, -16508544, -2052480, -124224, -3660, -42]], 1], -[[5, [-29207416032, -2272198314, -70009862, -1067478, -8050, -24]], +[[5, [-35877888, -10966272, -1307136, -76032, -2160, -24]], 1] ]]]],[1, -[[[4, 4], [11, 11], [6, 6]], [[3, 3], [3, 3], [6, 6]], [[4, 4], [7, 7], [4, 4]], [[5, 5], [11, 11], [2, 2]], [[5, 5], [3, 3], [4, 4]], [[3, 3], [7, 7], [2, 2]]] +[[[4, 4], [11, 11], [6, 6]], [[5, 5], [11, 11], [2, 2]], [[4, 4], [7, 7], [4, 4]], [[3, 3], [7, 7], [2, 2]], [[3, 3], [3, 3], [6, 6]], [[5, 5], [3, 3], [4, 4]]] ]]: diff --git a/output_files/issue-230.P1.d0.p128.res b/output_files/issue-230.P1.d0.p128.res index b88de882..a957a636 100644 --- a/output_files/issue-230.P1.d0.p128.res +++ b/output_files/issue-230.P1.d0.p128.res @@ -2,17 +2,17 @@ 4, 6, ['z', 'y', 'x', 'A'], -[1,4,9,1], +[0,2,1,1], [1, -[[6, [83273137416, 7761391038, 298505503, 6061146, 68488, 408, 1]], -[5, [7761391038, 597011006, 18183438, 273952, 2040, 6]], +[[6, [23224320, 8796672, 1353024, 108160, 4740, 108, 1]], +[5, [8796672, 2706048, 324480, 18960, 540, 6]], [ -[[5, [-30953329224, -2383425124, -72648782, -1095128, -8158, -24]], +[[5, [-35089920, -10766976, -1290288, -75468, -2154, -24]], 1], -[[5, [-51454687746, -3993436310, -122821118, -1870252, -14092, -42]], +[[5, [-51734016, -16508544, -2052480, -124224, -3660, -42]], 1], -[[5, [-29207416032, -2272198314, -70009862, -1067478, -8050, -24]], +[[5, [-35877888, -10966272, -1307136, -76032, -2160, -24]], 1] ]]]],[1, -[[[4, 4], [11, 11], [6, 6]], [[3, 3], [3, 3], [6, 6]], [[4, 4], [7, 7], [4, 4]], [[5, 5], [11, 11], [2, 2]], [[5, 5], [3, 3], [4, 4]], [[3, 3], [7, 7], [2, 2]]] +[[[4, 4], [11, 11], [6, 6]], [[5, 5], [11, 11], [2, 2]], [[4, 4], [7, 7], [4, 4]], [[3, 3], [7, 7], [2, 2]], [[3, 3], [3, 3], [6, 6]], [[5, 5], [3, 3], [4, 4]]] ]]: diff --git a/output_files/nonradical-radicalshape-qq.P1.d0.p1024.res b/output_files/nonradical-radicalshape-qq.P1.d0.p1024.res index 60380a67..6e5324aa 100644 --- a/output_files/nonradical-radicalshape-qq.P1.d0.p1024.res +++ b/output_files/nonradical-radicalshape-qq.P1.d0.p1024.res @@ -1,14 +1,16 @@ [0, [0, -2, +3, 6, -['y', 'x'], -[0, 1], +['x', 'y', 'A'], +[1,1,1], [1, -[[1, [-3, 1]], -[0, [1]], +[[2, [8, 6, 1]], +[1, [6, 2]], [ -[[0, [-1]], +[[1, [-18, -6]], +1], +[[1, [2, 0]], 1] ]]]],[1, -[[[1, 1], [3, 3]]] +[[[3, 3], [1, 1]], [[3, 3], [-1, -1]]] ]]: diff --git a/output_files/nonradical-radicalshape-qq.P1.d0.p128.res b/output_files/nonradical-radicalshape-qq.P1.d0.p128.res index 60380a67..6e5324aa 100644 --- a/output_files/nonradical-radicalshape-qq.P1.d0.p128.res +++ b/output_files/nonradical-radicalshape-qq.P1.d0.p128.res @@ -1,14 +1,16 @@ [0, [0, -2, +3, 6, -['y', 'x'], -[0, 1], +['x', 'y', 'A'], +[1,1,1], [1, -[[1, [-3, 1]], -[0, [1]], +[[2, [8, 6, 1]], +[1, [6, 2]], [ -[[0, [-1]], +[[1, [-18, -6]], +1], +[[1, [2, 0]], 1] ]]]],[1, -[[[1, 1], [3, 3]]] +[[[3, 3], [1, 1]], [[3, 3], [-1, -1]]] ]]: diff --git a/src/fglm/fglm_core.c b/src/fglm/fglm_core.c index 85e8c66e..f11c0fe5 100644 --- a/src/fglm/fglm_core.c +++ b/src/fglm/fglm_core.c @@ -1480,6 +1480,7 @@ param_t *nmod_fglm_compute_trace_data(sp_matfglm_t *matrix, mod_t prime, nvars) == 0){ fprintf(ERRSTREAM, "Matrix is not invertible (there should be a bug)\n"); + free_fglm_param(param); return NULL; } @@ -1526,6 +1527,7 @@ param_t *nmod_fglm_compute_trace_data(sp_matfglm_t *matrix, mod_t prime, fprintf(ERRSTREAM, "Matrix is not invertible (there should be a bug)\n"); } *success = 0; + free_fglm_param(param); return NULL; } if (right_param == 1) { diff --git a/src/msolve/Makefile.am b/src/msolve/Makefile.am index 1f41ac4e..79b3c61e 100644 --- a/src/msolve/Makefile.am +++ b/src/msolve/Makefile.am @@ -16,6 +16,8 @@ EXTRA_DIST = msolve-data.h \ linear.c \ lifting.c \ lifting-gb.c \ + separating.c \ + splitting.c \ iofiles.c \ msolve.c \ primes.c \ diff --git a/src/msolve/lifting-gb.c b/src/msolve/lifting-gb.c index 14f664a1..7f24b640 100644 --- a/src/msolve/lifting-gb.c +++ b/src/msolve/lifting-gb.c @@ -19,61 +19,8 @@ * Mohab Safey El Din */ #include -#include #include "streams.h" -/* rational reconstruction of u mod m with bounds N, D through FLINT - (half-gcd based) instead of the quadratic Euclidean algorithm; - u is assumed to be reduced modulo m */ -static int flint_rrec(mpz_t n, mpz_t d, const mpz_t u, const mpz_t m, - const mpz_t N, const mpz_t D){ - fmpz_t fu, fm, fN, fD; - fmpq_t q; - fmpz_init(fu); fmpz_init(fm); fmpz_init(fN); fmpz_init(fD); - fmpq_init(q); - fmpz_set_mpz(fu, u); - fmpz_set_mpz(fm, m); - fmpz_set_mpz(fN, N); - fmpz_set_mpz(fD, D); - int b = fmpq_reconstruct_fmpz_2(q, fu, fm, fN, fD); - if(b){ - fmpz_get_mpz(n, fmpq_numref(q)); - fmpz_get_mpz(d, fmpq_denref(q)); - } - fmpq_clear(q); - fmpz_clear(fu); fmpz_clear(fm); fmpz_clear(fN); fmpz_clear(fD); - return b; -} - -/* FLINT requires 2ND < m */ -static int flint_rrec_bounds_ok(const mpz_t m, rrec_data_t rd){ - mpz_mul(rd->tmp, rd->N, rd->D); - mpz_mul_2exp(rd->tmp, rd->tmp, 1); - return mpz_cmp(rd->tmp, m) < 0; -} - -/* same as ratrecon, through FLINT when the bounds allow it */ -static int lift_ratrecon(mpz_t n, mpz_t d, mpz_t u, const mpz_t mod, - rrec_data_t rd){ - if(!flint_rrec_bounds_ok(mod, rd)){ - return ratrecon(n, d, u, mod, rd); - } - mpz_mod(u, u, mod); - return flint_rrec(n, d, u, mod, rd->N, rd->D); -} - -/* same as ratreconwden, through FLINT when the bounds allow it */ -static int lift_ratreconwden(mpz_t n, mpz_t d, mpz_t u, const mpz_t mod, - const mpz_t gden, rrec_data_t rd){ - if(!flint_rrec_bounds_ok(mod, rd)){ - return ratreconwden(n, d, u, mod, gden, rd); - } - mpz_mod(u, u, mod); - mpz_mul(rd->r1, u, gden); - mpz_mod(rd->r1, rd->r1, mod); - return flint_rrec(n, d, rd->r1, mod, rd->N, rd->D); -} - #define NBCHECK 2 /* number of bits of slack kept in rational reconstruction bounds */ #define RR_MARGIN 16 diff --git a/src/msolve/lifting.c b/src/msolve/lifting.c index 9eb84c1c..c570c7d8 100644 --- a/src/msolve/lifting.c +++ b/src/msolve/lifting.c @@ -23,174 +23,62 @@ #ifndef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif -/* Initialization of sparse fglm matrix for crt */ #include "msolve-data.h" -static inline void crt_mpz_matfglm_initset(crt_mpz_matfglm_t crt_mat, - sp_matfglm_t *mod_mat){ - crt_mat->ncols = mod_mat->ncols; - crt_mat->nrows = mod_mat->nrows; - uint64_t sz = crt_mat->nrows * crt_mat->ncols; - crt_mat->dense_mat = (mpz_t *)malloc(sz * sizeof(mpz_t)); - for (uint64_t i = 0; i < sz; i++){ - mpz_init_set_ui(crt_mat->dense_mat[i], mod_mat->dense_mat[i]); - } - long diff = crt_mat->ncols - crt_mat->nrows; - crt_mat->triv_idx = malloc(diff * sizeof(uint32_t)); - crt_mat->triv_pos = malloc(diff * sizeof(uint32_t)); - crt_mat->dense_idx = malloc(crt_mat->nrows * sizeof(uint32_t)); - crt_mat->dst = malloc(crt_mat->nrows * sizeof(uint32_t)); - - for (long i = 0; i < diff; i++){ - crt_mat->triv_idx[i] = mod_mat->triv_idx[i]; - crt_mat->triv_pos[i] = mod_mat->triv_pos[i]; - } - for (long i = 0; i < crt_mat->nrows; i++){ - crt_mat->dense_idx[i] = mod_mat->dense_idx[i]; - crt_mat->dst[i] = mod_mat->dst[i]; - } +#include +#include +#include +#include + +/* rational reconstruction of u mod m with bounds N, D through FLINT + (half-gcd based) instead of the quadratic Euclidean algorithm; + u is assumed to be reduced modulo m */ +static int flint_rrec(mpz_t n, mpz_t d, const mpz_t u, const mpz_t m, + const mpz_t N, const mpz_t D){ + fmpz_t fu, fm, fN, fD; + fmpq_t q; + fmpz_init(fu); fmpz_init(fm); fmpz_init(fN); fmpz_init(fD); + fmpq_init(q); + fmpz_set_mpz(fu, u); + fmpz_set_mpz(fm, m); + fmpz_set_mpz(fN, N); + fmpz_set_mpz(fD, D); + int b = fmpq_reconstruct_fmpz_2(q, fu, fm, fN, fD); + if(b){ + fmpz_get_mpz(n, fmpq_numref(q)); + fmpz_get_mpz(d, fmpq_denref(q)); + } + fmpq_clear(q); + fmpz_clear(fu); fmpz_clear(fm); fmpz_clear(fN); fmpz_clear(fD); + return b; } -static inline void crt_mpz_matfglm_clear(crt_mpz_matfglm_t crt_mat){ - uint64_t sz = crt_mat->nrows * crt_mat->ncols; - - for (uint64_t i = 0; i < sz; i++){ - mpz_clear(crt_mat->dense_mat[i]); - } - free(crt_mat->dense_mat); - - free(crt_mat->triv_idx); - free(crt_mat->triv_pos); - free(crt_mat->dense_idx); - free(crt_mat->dst); +/* FLINT requires 2ND < m */ +static int flint_rrec_bounds_ok(const mpz_t m, rrec_data_t rd){ + mpz_mul(rd->tmp, rd->N, rd->D); + mpz_mul_2exp(rd->tmp, rd->tmp, 1); + return mpz_cmp(rd->tmp, m) < 0; } -/* Initialization of sparse mpz fglm matrix */ -static inline void mpz_matfglm_initset(mpz_matfglm_t mpz_mat, - sp_matfglm_t *mod_mat) { - mpz_mat->ncols = mod_mat->ncols; - mpz_mat->nrows = mod_mat->nrows; - mpz_mat->dense_mat = malloc(mpz_mat->ncols * mpz_mat->nrows * sizeof(mpz_t)); - uint64_t sz = mpz_mat->nrows * mpz_mat->ncols; - for (uint64_t i = 0; i < sz; i++) { - mpz_init(mpz_mat->dense_mat[i]); - } - mpz_mat->denoms = malloc(mpz_mat->nrows * sizeof(mpz_t)); - for (uint64_t i = 0; i < mpz_mat->nrows; i++) { - mpz_init(mpz_mat->denoms[i]); - } - long diff = mpz_mat->ncols - mpz_mat->nrows; - mpz_mat->triv_idx = calloc(diff, sizeof(uint32_t)); - mpz_mat->triv_pos = calloc(diff, sizeof(uint32_t)); - mpz_mat->dense_idx = calloc(mpz_mat->nrows, sizeof(uint32_t)); - mpz_mat->dst = calloc(mpz_mat->nrows, sizeof(uint32_t)); - - for (long i = 0; i < diff; i++) { - mpz_mat->triv_idx[i] = mod_mat->triv_idx[i]; - mpz_mat->triv_pos[i] = mod_mat->triv_pos[i]; - } - for (long i = 0; i < mpz_mat->nrows; i++) { - mpz_mat->dense_idx[i] = mod_mat->dense_idx[i]; - mpz_mat->dst[i] = mod_mat->dst[i]; +/* same as ratrecon, through FLINT when the bounds allow it */ +static int lift_ratrecon(mpz_t n, mpz_t d, mpz_t u, const mpz_t mod, + rrec_data_t rd){ + if(!flint_rrec_bounds_ok(mod, rd)){ + return ratrecon(n, d, u, mod, rd); } + mpz_mod(u, u, mod); + return flint_rrec(n, d, u, mod, rd->N, rd->D); } -static inline void mpz_matfglm_clear(mpz_matfglm_t mpz_mat) { - - uint64_t sz = mpz_mat->nrows * mpz_mat->ncols; - for (uint64_t i = 0; i < sz; i++) { - mpz_clear(mpz_mat->dense_mat[i]); - } - free(mpz_mat->dense_mat); - for (uint64_t i = 0; i < mpz_mat->nrows; i++) { - mpz_clear(mpz_mat->denoms[i]); +/* same as ratreconwden, through FLINT when the bounds allow it */ +static int lift_ratreconwden(mpz_t n, mpz_t d, mpz_t u, const mpz_t mod, + const mpz_t gden, rrec_data_t rd){ + if(!flint_rrec_bounds_ok(mod, rd)){ + return ratreconwden(n, d, u, mod, gden, rd); } - free(mpz_mat->denoms); - - free(mpz_mat->triv_idx); - free(mpz_mat->triv_pos); - free(mpz_mat->dense_idx); - free(mpz_mat->dst); -} - -/* Initialization of sparse fglm matrix for rational reconstruction */ -static inline void mpq_matfglm_initset(mpq_matfglm_t mpq_mat, - sp_matfglm_t *mod_mat) { - mpq_mat->ncols = mod_mat->ncols; - mpq_mat->nrows = mod_mat->nrows; - mpq_mat->dense_mat = - malloc(2 * mpq_mat->ncols * mpq_mat->nrows * sizeof(mpz_t)); - mpq_mat->denoms = malloc(mpq_mat->nrows * sizeof(mpz_t)); - for (uint32_t i = 0; i < mpq_mat->nrows; i++) { - mpz_init(mpq_mat->denoms[i]); - } - uint64_t nc = 2 * mpq_mat->ncols; - - for (uint32_t i = 0; i < mpq_mat->nrows; i++) { - uint64_t c = 2 * i * mpq_mat->ncols; - for (uint32_t j = 0; j < nc; j++) { - mpz_init(mpq_mat->dense_mat[c + j]); - j++; - mpz_init(mpq_mat->dense_mat[c + j]); - } - } - long diff = mpq_mat->ncols - mpq_mat->nrows; - mpq_mat->triv_idx = calloc(diff, sizeof(uint32_t)); - mpq_mat->triv_pos = calloc(diff, sizeof(uint32_t)); - mpq_mat->dense_idx = calloc(mpq_mat->nrows, sizeof(uint32_t)); - mpq_mat->dst = calloc(mpq_mat->nrows, sizeof(uint32_t)); - - for (long i = 0; i < diff; i++) { - mpq_mat->triv_idx[i] = mod_mat->triv_idx[i]; - mpq_mat->triv_pos[i] = mod_mat->triv_pos[i]; - } - for (long i = 0; i < mpq_mat->nrows; i++) { - mpq_mat->dense_idx[i] = mod_mat->dense_idx[i]; - mpq_mat->dst[i] = mod_mat->dst[i]; - } -} - -static inline void mpq_matfglm_clear(mpq_matfglm_t mpq_mat) { - /* entries of mpq_mat->denoms are cleared previously when building mpz_mat */ - for (uint32_t i = 0; i < mpq_mat->nrows; i++) { - mpz_clear(mpq_mat->denoms[i]); - } - free(mpq_mat->denoms); - - uint64_t nc = 2 * mpq_mat->ncols; - for (uint32_t i = 0; i < mpq_mat->nrows; i++) { - uint64_t c = 2 * i * mpq_mat->ncols; - for (uint32_t j = 0; j < nc; j++) { - mpz_clear(mpq_mat->dense_mat[c + j]); - } - } - free(mpq_mat->dense_mat); - - free(mpq_mat->triv_idx); - free(mpq_mat->triv_pos); - free(mpq_mat->dense_idx); - free(mpq_mat->dst); -} - -static inline void mpq_matfglm_partial_clear(mpq_matfglm_t mpq_mat) { - /* entries of mpq_mat->denoms are cleared previously when building mpz_mat */ - for (uint32_t i = 0; i < mpq_mat->nrows; i++) { - mpz_clear(mpq_mat->denoms[i]); - } - free(mpq_mat->denoms); - - uint64_t nc = mpq_mat->ncols; - for (uint32_t i = 0; i < mpq_mat->nrows; i++) { - uint64_t c = 2 * i * mpq_mat->ncols; - for (uint32_t j = 0; j < nc; j++) { - mpz_clear(mpq_mat->dense_mat[c + 2 * j]); - } - } - free(mpq_mat->dense_mat); - - free(mpq_mat->triv_idx); - free(mpq_mat->triv_pos); - free(mpq_mat->dense_idx); - free(mpq_mat->dst); + mpz_mod(u, u, mod); + mpz_mul(rd->r1, u, gden); + mpz_mod(rd->r1, rd->r1, mod); + return flint_rrec(n, d, rd->r1, mod, rd->N, rd->D); } static inline void copy_modular_matrix(trace_det_fglm_mat_t trace_det, @@ -448,16 +336,6 @@ static inline void crt_lift_trace_det(trace_det_fglm_mat_t trace_det, } } -static inline void crt_lift_mat(crt_mpz_matfglm_t mat, sp_matfglm_t *mod_mat, - mpz_t modulus, mpz_t prod_crt, - const int32_t prime, mpz_t tmp, - const int32_t nrows, const int nthrds) { - /*assumes prod_crt = modulus * prime */ - const uint64_t sz = mat->nrows * mat->ncols; - crt_lift_dense_rows(mat->dense_mat, mod_mat->dense_mat, nrows * mat->ncols, - sz, modulus, prod_crt, prime, tmp, nthrds); -} - static inline void build_linear_forms(mpz_t *mpz_linear_forms, mpz_t *mpq_linear_forms, uint32_t sz, int nlins) { @@ -497,37 +375,10 @@ static inline void build_linear_forms(mpz_t *mpz_linear_forms, } -static inline int old_rat_recon_trace_det(trace_det_fglm_mat_t trace_det, - rrec_data_t recdata, mpz_t modulus, - mpz_t rnum, mpz_t rden, mpz_t gden){ - if(trace_det->done_trace < 2){ - int b = ratrecon(rnum, rden, trace_det->trace_crt, modulus, recdata); - if(b == 1){ - mpz_set(trace_det->trace_num, rnum); - mpz_set(trace_det->trace_den, rden); - } - else - { - return 0; - } - } - if(trace_det->done_det < 2){ - int b = ratrecon(rnum, rden, trace_det->det_crt, modulus, recdata); - if(b == 1){ - mpz_set(trace_det->det_num, rnum); - mpz_set(trace_det->det_den, rden); - } - else{ - return 0; - } - } - return 1; -} - static inline int rat_recon_array(mpz_t *res, mpz_t *crt, int32_t sz, mpz_t modulus, rrec_data_t rdata) { for (int i = 0; i < sz; i++) { - int b = ratrecon(res[2 * i], res[2 * i + 1], crt[i], modulus, rdata); + int b = lift_ratrecon(res[2 * i], res[2 * i + 1], crt[i], modulus, rdata); if (b == 0) return 0; } @@ -572,7 +423,7 @@ static inline int rat_recon_trace_det(trace_det_fglm_mat_t trace_det, mpz_init(gcd); int nlifted = trace_det->w_checked; for(int32_t i = trace_det->w_checked; i < trace_det->nrows; i++){ - int b = ratreconwden(rnum, rden, trace_det->matmul_wcrt[i], modulus, gden, recdata); + int b = lift_ratreconwden(rnum, rden, trace_det->matmul_wcrt[i], modulus, gden, recdata); if(b == 1){ mpz_set(trace_det->matmul_wqq[2*i], rnum); mpz_set(trace_det->matmul_wqq[2*i + 1], rden); @@ -596,7 +447,7 @@ static inline int rat_recon_trace_det(trace_det_fglm_mat_t trace_det, int trace_rec = 0; if(trace_det->done_trace < 2){ int b = - ratreconwden(rnum, rden, trace_det->trace_crt, modulus, gden, recdata); + lift_ratreconwden(rnum, rden, trace_det->trace_crt, modulus, gden, recdata); if (b == 1) { mpz_set(trace_det->trace_num, rnum); mpz_set(trace_det->trace_den, rden); @@ -617,7 +468,7 @@ static inline int rat_recon_trace_det(trace_det_fglm_mat_t trace_det, if(trace_det->done_det < 2 && trace_det->done_trace){ if(trace_rec){ } - int b = ratreconwden(rnum, rden, trace_det->det_crt, modulus, gden, recdata); + int b = lift_ratreconwden(rnum, rden, trace_det->det_crt, modulus, gden, recdata); if (b == 1) { mpz_set(trace_det->det_num, rnum); @@ -745,26 +596,6 @@ static inline int check_trace_det_data(trace_det_fglm_mat_t trace_det, return 0; } -static inline int check_linear_forms(trace_det_fglm_mat_t trace_det, - uint32_t *modular_linear_forms, - int32_t prime){ - int32_t nlins = trace_det->nlins; - int32_t nv = trace_det ->nv; - nvars_t sz = nv + 1; - for(int32_t i = 0; i < nlins; i++){ - nvars_t n = i *sz; - nvars_t n2 = i * (sz + 1); - for(int32_t j = 0; j < sz; j++){ - int b = check_lifted_coeff(trace_det->mpz_linear_forms[n2 + j], - trace_det->mpz_linear_forms[n2+sz], - modular_linear_forms[n], - prime); - if(!b) return 0; - } - } - return 1; -} - static inline void check_matrix(trace_det_fglm_mat_t trace_det, sp_matfglm_t *mod_mat, int32_t prime){ @@ -849,7 +680,7 @@ static inline void mulmat_reconstruct(trace_det_fglm_mat_t trace_det, } } - for(int32_t i = 0; i < nrows; i++){ + for(int32_t i = 0; i < ncols; i++){ mpz_clear(rowdenoms[i]); } free(rowdenoms); @@ -866,117 +697,6 @@ static inline void mulmat_reconstruct(trace_det_fglm_mat_t trace_det, } } -static inline void -rat_recon_matfglm(mpq_matfglm_t mpq_mat, crt_mpz_matfglm_t crt_mat, - mpz_t modulus, rrec_data_t rdata, - mpz_t rnum, mpz_t rden, mpz_t *guessed_den, deg_t *matrec, int *mat_lifted) { - const uint32_t nrows = crt_mat->nrows; - const uint32_t ncols = crt_mat->ncols; - - mpz_t lcm, coef; - mpz_init(lcm); - mpz_init(coef); - mpz_t gden; - mpz_init(gden); - if((0==1) && (*matrec)>1){ - mpz_set(gden, *guessed_den); - } - else{ - mpz_set_ui(gden, 1); - } - for (uint32_t i = *matrec; i < nrows; i++) { - uint64_t c = i * ncols; - mpz_set_ui(lcm, 1); - - for (uint32_t j = 0; j < ncols; j++) { - int b = 0; - mpz_mul(coef, crt_mat->dense_mat[c + j], lcm); - mpz_mod(coef, coef, modulus); -// b = ratrecon(rnum, rden, coef, modulus, rdata); - b = ratreconwden(rnum, rden, coef, modulus, gden, rdata); - if (b == 1) { - mpz_set(mpq_mat->dense_mat[2 * c + 2 * j], rnum); - mpz_set(mpq_mat->dense_mat[2 * c + 2 * j + 1], rden); - mpz_mul(mpq_mat->dense_mat[2 * c + 2 * j + 1], - mpq_mat->dense_mat[2 * c + 2 * j + 1], lcm); - mpz_mul(mpq_mat->dense_mat[2 * c + 2 * j + 1], - mpq_mat->dense_mat[2 * c + 2 * j + 1], gden); - mpz_lcm(lcm, lcm, rden); - } else { - mpz_clear(gden); - mpz_clear(lcm); - mpz_clear(coef); - return ; - } - } - mpz_set_ui(mpq_mat->denoms[i], 1); - for (uint32_t j = 0; j < ncols; j++) { - mpz_lcm(mpq_mat->denoms[i], mpq_mat->denoms[i], - mpq_mat->dense_mat[2 * c + 2 * j + 1]); - } - - for(uint32_t j = 0; j < ncols; j++){ - mpz_mul(mpq_mat->dense_mat[2 * c+ 2 * j], mpq_mat->dense_mat[2 * c+ 2 * j], - mpq_mat->denoms[i]); - mpz_divexact(mpq_mat->dense_mat[2 * c + 2 * j], mpq_mat->dense_mat[2 * c + 2 * j], - mpq_mat->dense_mat[2 * c + 2 * j + 1]); - } - (*matrec)++; - } - mpz_clear(coef); - mpz_clear(lcm); - mpz_clear(gden); - - *mat_lifted = 1; -} - - -static inline void check_matrix_and_linear_forms(mpq_matfglm_t mpq_mat, sp_matfglm_t *mod_mat, - mpz_t *mpz_lin, uint32_t *mod_lin, const int nlins, const nvars_t nv, - int *mat_lifted, int* lin_lifted, deg_t *oldmatrec_checked, deg_t *matrec_checked, const uint32_t prime){ - *oldmatrec_checked = *matrec_checked; - /* checks lifted linear forms */ - nvars_t sz = nv + 1; - uint32_t cand; - if(*lin_lifted < 2){ - for(int i = 0; i < nlins; i++){ - nvars_t n = i * sz; - nvars_t n2 = i * (sz + 1); - uint64_t inv = mpz_fdiv_ui(mpz_lin[n2 + sz], prime); - inv = mod_p_inverse_32(inv, prime); - for(nvars_t j = 0; j < sz; j++){ - cand = (((uint64_t)mpz_fdiv_ui(mpz_lin[n2+j], prime)) * inv) % prime; - if(cand != mod_lin[n + j]){ - *lin_lifted = 0; - *matrec_checked = 0; - return; - } - } - } - *lin_lifted = 2; - } - - /*checks multiplication matrix */ - mod_mat->charac = prime; - - for(int32_t i = (*oldmatrec_checked); i < mpq_mat->nrows; i++){ - uint64_t lc = mpz_fdiv_ui(mpq_mat->denoms[i], prime); - lc = mod_p_inverse_32(lc, prime); - uint32_t nc = i*mpq_mat->ncols; - for(uint32_t j = 0 ; j < mpq_mat->ncols; j++){ - uint32_t mod = mpz_fdiv_ui(mpq_mat->dense_mat[2*(nc+j)], prime); - if(mod_mat->dense_mat[nc+j] != ( ((uint64_t)mod) * lc )% prime){ - *mat_lifted = 0; - *matrec_checked = MAX(0, i); - return; - } - } - *matrec_checked = i + 1; - } - *mat_lifted = 2; - -} - void initialize_rrec_data(rrec_data_t recdata) { mpz_init(recdata->r0); mpz_set_ui(recdata->r0, 0); diff --git a/src/msolve/main.c b/src/msolve/main.c index 7cb72c58..881d8787 100644 --- a/src/msolve/main.c +++ b/src/msolve/main.c @@ -558,6 +558,9 @@ int main(int argc, char **argv){ gens->rand_linear = 0; gens->random_linear_form = malloc(sizeof(int32_t)*(nr_vars)); gens->elim = elim_block_len; + /* the parametrization of the whole solution set is not built from + * its components when it is not printed */ + gens->split_global = get_param > 0; if(0 < field_char && field_char < pow(2, 15) && la_option > 2){ if(info_level){ diff --git a/src/msolve/msolve-data.h b/src/msolve/msolve-data.h index 73a6f909..07171436 100644 --- a/src/msolve/msolve-data.h +++ b/src/msolve/msolve-data.h @@ -52,6 +52,39 @@ typedef int64_t bits_t; +/* states of the search for a separating element, see data_gens_ff_t */ +#define SEP_NONE 0 +#define SEP_FAILED 1 +#define SEP_VAR 2 +#define SEP_FORM 3 +#define SEP_APPLIED 4 + +typedef struct{ + deg_t length; + deg_t alloc; + mpz_t *coeffs; +} mpz_upoly_struct; + +typedef mpz_upoly_struct mpz_upoly_t[1]; + +typedef struct{ + nvars_t nvars; + deg_t nsols; + len_t dquot; + deg_t dim; + mpz_upoly_t elim; + mpz_upoly_t denom; + mpz_upoly_t *coords; + mpz_t *cfs; +} mpz_param_struct; +typedef mpz_param_struct mpz_param_t[1]; + +typedef struct{ + len_t nb; + mpz_param_t *params; +} mpz_param_array_struct; +typedef mpz_param_array_struct mpz_param_array_t[1]; + typedef struct{ nvars_t nvars; nvars_t elim; @@ -71,6 +104,25 @@ typedef struct{ /* set to 1 if a linear form is chosen randomly */ int32_t rand_linear; int32_t *random_linear_form; + /* separating element found from the multiplication matrices modulo + * a prime, see separating.c: SEP_NONE (not searched yet), SEP_FAILED, + * SEP_VAR (variable sep_var), SEP_FORM (linear form with coefficients + * sep_form) or SEP_APPLIED */ + int32_t sep_status; + int32_t sep_var; + int32_t *sep_form; + /* nonzero terms of all F4 matrices modulo the first prime, with the + * separating linear form and for the original system */ + int64_t sep_matnterms; + int64_t sep_matnterms_ori; + /* number of distinct solutions modulo the prime of the search: degree of + * the squarefree part of the minimal polynomial of a random linear form */ + int32_t sep_nsols; + /* parametrizations of the components of the solution set lifted + * separately (see splitting.c), and whether the parametrization of the + * whole solution set is built from them */ + mpz_param_array_struct split_params; + int32_t split_global; char **vnames; int32_t *lens; int32_t *exps; @@ -193,31 +245,6 @@ typedef struct{ typedef rrec_data_struct_t rrec_data_t[1]; -typedef struct{ - deg_t length; - deg_t alloc; - mpz_t *coeffs; -} mpz_upoly_struct; - -typedef mpz_upoly_struct mpz_upoly_t[1]; - -typedef struct{ - nvars_t nvars; - deg_t nsols; - len_t dquot; - deg_t dim; - mpz_upoly_t elim; - mpz_upoly_t denom; - mpz_upoly_t *coords; - mpz_t *cfs; -} mpz_param_struct; -typedef mpz_param_struct mpz_param_t[1]; - -typedef struct{ - len_t nb; - mpz_param_t *params; -} mpz_param_array_struct; -typedef mpz_param_array_struct mpz_param_array_t[1]; typedef struct{ uint32_t ncols; /* dimension of quotient */ diff --git a/src/msolve/msolve.c b/src/msolve/msolve.c index cb82a156..af1c974b 100644 --- a/src/msolve/msolve.c +++ b/src/msolve/msolve.c @@ -54,6 +54,8 @@ void free_rrec_data(rrec_data_t recdata); #include "linear.c" #include "lifting.c" #include "lifting-gb.c" +#include "separating.c" +#include "splitting.c" #include "streams.h" #ifndef MAX @@ -189,7 +191,12 @@ static inline void mpz_param_out_str(FILE *file, const data_gens_ff_t *gens, fprintf(file, "/%d", sum); } } else { - if (gens->linear_form_base_coef > 0) { + if (gens->linear_form_base_coef > 0 && gens->sep_form != NULL) { + for (int i = 0; i < param->nvars - 1; ++i) { + fprintf(file, "%d,", gens->sep_form[i]); + } + fprintf(file, "%d", (int32_t)(1)); + } else if (gens->linear_form_base_coef > 0) { const int32_t bcf = gens->linear_form_base_coef; for (int i = 0; i < param->nvars - 1; ++i) { fprintf(file, "%d,", (int32_t)(pow(i + 1, bcf - 1))); @@ -331,6 +338,15 @@ data_gens_ff_t *allocate_data_gens() { gens->cfs = NULL; gens->mpz_cfs = NULL; gens->random_linear_form = NULL; + gens->sep_status = SEP_NONE; + gens->sep_var = -1; + gens->sep_form = NULL; + gens->sep_matnterms = 0; + gens->sep_matnterms_ori = 0; + gens->sep_nsols = 0; + gens->split_params.nb = 0; + gens->split_params.params = NULL; + gens->split_global = 1; gens->elim = 0; return gens; @@ -358,6 +374,8 @@ void free_data_gens(data_gens_ff_t *gens) { free(gens->cfs); free(gens->exps); free(gens->random_linear_form); + free(gens->sep_form); + split_params_clear(&(gens->split_params)); free(gens); } @@ -545,6 +563,62 @@ static int change_variable_order_in_input_system(data_gens_ff_t *gens, return 1; } +/* The added linear form is the last generator; its terms are the + * variables x_0, ..., x_{nvars-2} and then the extra variable, in this + * order. compact_linear_form removes the terms with zero coefficient, + * expand_linear_form restores all the terms (their coefficients are then + * overwritten by the caller). The arrays keep their full size, and for + * QQ the removed mpz_t are kept after the last term. */ +static void compact_linear_form(data_gens_ff_t *gens) { + const int32_t nvars = gens->nvars; + int64_t len_old = 0; + for (int32_t i = 0; i < gens->ngens - 1; ++i) { + len_old += gens->lens[i]; + } + int64_t w = len_old; + for (int32_t t = 0; t < nvars; ++t) { + const int64_t s = len_old + t; + const int keep = (t == nvars - 1) || + (gens->field_char > 0 ? gens->cfs[s] != 0 + : mpz_sgn(*(gens->mpz_cfs[2 * s])) != 0); + if (!keep) { + continue; + } + if (w != s) { + memcpy(gens->exps + w * nvars, gens->exps + s * nvars, + (unsigned long)nvars * sizeof(int32_t)); + if (gens->field_char > 0) { + gens->cfs[w] = gens->cfs[s]; + } else { + for (int32_t k = 0; k < 2; ++k) { + mpz_t *tmp = gens->mpz_cfs[2 * w + k]; + gens->mpz_cfs[2 * w + k] = gens->mpz_cfs[2 * s + k]; + gens->mpz_cfs[2 * s + k] = tmp; + } + } + } + w++; + } + gens->lens[gens->ngens - 1] = (int32_t)(w - len_old); +} + +static void expand_linear_form(data_gens_ff_t *gens) { + const int32_t nvars = gens->nvars; + if (gens->linear_form_base_coef == 0 || gens->lens[gens->ngens - 1] == nvars) { + return; + } + int64_t len_old = 0; + for (int32_t i = 0; i < gens->ngens - 1; ++i) { + len_old += gens->lens[i]; + } + memset(gens->exps + len_old * nvars, 0, + (unsigned long)nvars * nvars * sizeof(int32_t)); + for (int32_t t = 0; t < nvars; ++t) { + gens->exps[(len_old + t) * nvars + t] = 1; + } + gens->lens[gens->ngens - 1] = nvars; +} + /* Used if staircase is not generic enough, after * we tried to change variable order. * @@ -556,6 +630,9 @@ static int add_linear_form_to_input_system(data_gens_ff_t *gens, int32_t k; int32_t nvars_old, nvars_new; int64_t len_old = 0, len_new; + free(gens->sep_form); + gens->sep_form = NULL; + expand_linear_form(gens); if (gens->linear_form_base_coef == 0) { nvars_old = gens->nvars; nvars_new = nvars_old + 1; @@ -585,7 +662,6 @@ static int add_linear_form_to_input_system(data_gens_ff_t *gens, * the end */ gens->vnames = realloc(gens->vnames, (unsigned long)gens->nvars * sizeof(char *)); - gens->vnames[gens->nvars - 1] = (char *)malloc(2 * sizeof(char)); gens->vnames[gens->nvars - 1] = extra_var; int32_t *old_exps = gens->exps; gens->exps = @@ -610,6 +686,7 @@ static int add_linear_form_to_input_system(data_gens_ff_t *gens, } else { gens->mpz_cfs = realloc(gens->mpz_cfs, (unsigned long)2 * len_new * (sizeof(mpz_t *))); + gens->nterms += nvars_new; for (i = 2 * len_old; i < 2 * len_new; i += 2) { gens->mpz_cfs[i] = (mpz_t *)malloc(sizeof(mpz_t)); mpz_init(*(gens->mpz_cfs[i])); @@ -655,6 +732,9 @@ static int add_random_linear_form_to_input_system(data_gens_ff_t *gens, int64_t i, j; int32_t nvars_old, nvars_new; int64_t len_old = 0, len_new; + free(gens->sep_form); + gens->sep_form = NULL; + expand_linear_form(gens); if (gens->linear_form_base_coef == 0) { nvars_old = gens->nvars; @@ -686,7 +766,6 @@ static int add_random_linear_form_to_input_system(data_gens_ff_t *gens, * the end */ gens->vnames = realloc(gens->vnames, (unsigned long)gens->nvars * sizeof(char *)); - gens->vnames[gens->nvars - 1] = (char *)malloc(2 * sizeof(char)); gens->vnames[gens->nvars - 1] = extra_var; int32_t *old_exps = gens->exps; gens->exps = @@ -711,6 +790,7 @@ static int add_random_linear_form_to_input_system(data_gens_ff_t *gens, } else { gens->mpz_cfs = realloc(gens->mpz_cfs, (unsigned long)2 * len_new * (sizeof(mpz_t *))); + gens->nterms += nvars_new; for (i = 2 * len_old; i < 2 * len_new; i += 2) { gens->mpz_cfs[i] = (mpz_t *)malloc(sizeof(mpz_t)); mpz_init(*(gens->mpz_cfs[i])); @@ -758,6 +838,73 @@ static int add_random_linear_form_to_input_system(data_gens_ff_t *gens, return 1; } +/* Applies the separating element found by find_separating_element: + * moves the separating variable to the last position, or adds the + * separating linear form with a new variable as add_linear_form_to_input_system + * does. Returns 1 if the input system was changed, 0 otherwise. */ +static int apply_separating_element(data_gens_ff_t *gens, + int32_t info_level) { + if (gens->sep_status == SEP_VAR) { + const int32_t nvars = gens->nvars; + const int32_t v = gens->sep_var; + char *tmp_char = gens->vnames[nvars - 1]; + gens->vnames[nvars - 1] = gens->vnames[v]; + gens->vnames[v] = tmp_char; + int64_t len = 0; + for (int32_t i = 0; i < gens->ngens; ++i) { + for (int32_t j = 0; j < gens->lens[i]; ++j) { + int32_t *e = gens->exps + len + (int64_t)j * nvars; + int32_t tmp = e[nvars - 1]; + e[nvars - 1] = e[v]; + e[v] = tmp; + } + len += (int64_t)gens->lens[i] * nvars; + } + /* same state as after the corresponding change of variable order */ + gens->change_var_order = v; + gens->sep_status = SEP_APPLIED; + if (info_level > 0) { + fprintf(VERBSTREAM, "\nMoving separating variable %s to the last position\n", + gens->vnames[nvars - 1]); + } + return 1; + } + if (gens->sep_status == SEP_FORM) { + int32_t *c = gens->sep_form; + gens->sep_form = NULL; + if (add_linear_form_to_input_system(gens, 0) == 0) { + free(c); + return 0; + } + /* overwrite the coefficients k^0 of the linear form */ + const int32_t nvars_old = gens->nvars - 1; + int64_t len_old = 0; + for (int32_t i = 0; i < gens->ngens - 1; ++i) { + len_old += gens->lens[i]; + } + for (int32_t k = 0; k < nvars_old; ++k) { + if (gens->field_char > 0) { + gens->cfs[len_old + k] = c[k] % gens->field_char; + } else { + mpz_set_si(*(gens->mpz_cfs[2 * (len_old + k)]), c[k]); + } + } + compact_linear_form(gens); + gens->sep_form = c; + gens->sep_status = SEP_APPLIED; + if (info_level > 0) { + fprintf(VERBSTREAM, "\nAdding a separating linear form with an extra variable "); + fprintf(VERBSTREAM, "(lowest w.r.t. monomial order)\n[coefficients"); + for (int32_t k = 0; k < nvars_old; ++k) { + fprintf(VERBSTREAM, " %d", c[k]); + } + fprintf(VERBSTREAM, "]\n"); + } + return 1; + } + return 0; +} + static inline void nmod_param_out_str(FILE *file, const long dquot, param_t *param) { fprintf(file, "["); @@ -970,62 +1117,262 @@ static inline void normalize_nmod_param(param_t *nmod_param) { } } -/* -On copie nmod_param dans mpz_param -On suppose que les allocations ont ete faites via initialize_mpz_param avant. - */ -static inline void set_mpz_param_nmod(mpz_param_t mpz_param, - param_t *nmod_param) { - mpz_param->elim->length = nmod_param->elim->length; - for (long i = 0; i <= mpz_param->nsols; i++) { - mpz_set_ui(mpz_param->elim->coeffs[i], (nmod_param)->elim->coeffs[i]); +/* modular images of the parametrization, stored for each prime in one + contiguous block (elim, then the coordinates), so that CRT is only + applied when a rational reconstruction is attempted; blocks are grouped + by chunks of PARAM_IMAGES_CHUNK primes, which are never moved */ +#define PARAM_IMAGES_CHUNK 64 +typedef struct{ + uint32_t **chunks; /* images, prime-major */ + mp_limb_t *primes; /* primes of the stored images */ + int32_t nprimes; + int32_t alloc; /* number of primes which fit in primes */ + deg_t elen; /* number of coefficients of elim */ + deg_t clen; /* number of coefficients of each coordinate */ + nvars_t nc; /* number of coordinates */ + int64_t sz; /* number of coefficients stored per prime */ +} param_images_struct; + +typedef param_images_struct param_images_t[1]; + +static inline void param_images_init(param_images_t im, + const mpz_param_t mpz_param){ + im->elen = mpz_param->elim->length; + im->nc = mpz_param->nvars - 1; + im->clen = im->nc > 0 ? mpz_param->coords[0]->length : 0; + im->sz = im->elen + ((int64_t)im->nc) * im->clen; + im->nprimes = 0; + im->alloc = 0; + im->chunks = NULL; + im->primes = NULL; +} + +static inline void param_images_clear(param_images_t im){ + int32_t nchunks = (im->nprimes + PARAM_IMAGES_CHUNK - 1) / PARAM_IMAGES_CHUNK; + for (int32_t i = 0; i < nchunks; i++) { + free(im->chunks[i]); + } + free(im->chunks); + flint_free(im->primes); + im->chunks = NULL; + im->primes = NULL; + im->nprimes = 0; + im->alloc = 0; +} + +/* coefficients beyond the length of a modular polynomial are zero */ +static inline void copy_nmod_coeffs(uint32_t *dst, const nmod_poly_t pol, + const deg_t len){ + deg_t l = MIN(len, (deg_t)pol->length); + for (deg_t i = 0; i < l; i++) { + dst[i] = pol->coeffs[i]; + } + for (deg_t i = l; i < len; i++) { + dst[i] = 0; } - mpz_param->elim->length = nmod_param->elim->length; +} - for (long i = 0; i < nmod_param->denom->length; i++) { - mpz_set_ui(mpz_param->denom->coeffs[i], nmod_param->denom->coeffs[i]); +static inline void param_images_add(param_images_t im, + const param_t *nmod_param, + const uint32_t prime){ + if (im->nprimes == im->alloc) { + im->alloc += PARAM_IMAGES_CHUNK; + im->primes = flint_realloc(im->primes, im->alloc * sizeof(mp_limb_t)); + im->chunks = realloc(im->chunks, + (im->alloc / PARAM_IMAGES_CHUNK) * sizeof(uint32_t *)); + uint32_t *chunk = malloc(PARAM_IMAGES_CHUNK * im->sz * sizeof(uint32_t)); + if (im->chunks == NULL || chunk == NULL) { + fprintf(ERRSTREAM, "Problem when allocating modular images (%ld primes)\n", + (long)im->alloc); + exit(1); + } + im->chunks[im->alloc / PARAM_IMAGES_CHUNK - 1] = chunk; + } + uint32_t *dst = im->chunks[im->nprimes / PARAM_IMAGES_CHUNK] + + (im->nprimes % PARAM_IMAGES_CHUNK) * im->sz; + copy_nmod_coeffs(dst, nmod_param->elim, im->elen); + for (nvars_t j = 0; j < im->nc; j++) { + copy_nmod_coeffs(dst + im->elen + j * im->clen, nmod_param->coords[j], + im->clen); } - mpz_param->denom->length = nmod_param->denom->length; + im->primes[im->nprimes] = prime; + im->nprimes++; +} - for (int j = 0; j < mpz_param->nvars - 1; j++) { +/* data used to apply CRT to the stored images, built once per attempt */ +typedef struct{ + fmpz_comb_t comb; + fmpz_comb_temp_t comb_temp; + mp_limb_t *residues; + fmpz_t y; + mpz_t u; /* CRT of the current coefficient */ +} param_crt_struct; + +typedef param_crt_struct param_crt_t[1]; + +static inline void param_crt_init(param_crt_t pc, const param_images_t im){ + fmpz_comb_init(pc->comb, im->primes, im->nprimes); + fmpz_comb_temp_init(pc->comb_temp, pc->comb); + pc->residues = flint_malloc(im->nprimes * sizeof(mp_limb_t)); + fmpz_init(pc->y); + mpz_init(pc->u); +} - for (long i = 0; i < nmod_param->coords[j]->length; i++) { - mpz_set_ui(mpz_param->coords[j]->coeffs[i], - nmod_param->coords[j]->coeffs[i]); +static inline void param_crt_clear(param_crt_t pc){ + mpz_clear(pc->u); + fmpz_clear(pc->y); + flint_free(pc->residues); + fmpz_comb_temp_clear(pc->comb_temp); + fmpz_comb_clear(pc->comb); +} + +/* sets pc->u to the CRT of the stored images of the coefficient at + position pos, in [0, modulus); coefficients are lifted one at a time, + right before being reconstructed, so that no array of CRT images is kept + and no CRT is applied beyond the first failed reconstruction */ +static inline void param_images_crt_coeff(const param_images_t im, + const int64_t pos, + param_crt_struct *pc){ + for (int32_t k = 0; k < im->nprimes; k++) { + pc->residues[k] = im->chunks[k / PARAM_IMAGES_CHUNK] + [(k % PARAM_IMAGES_CHUNK) * im->sz + pos]; + } + fmpz_multi_CRT_ui(pc->y, pc->residues, pc->comb, pc->comb_temp, 0); + fmpz_get_mpz(pc->u, pc->y); +} + +/* Witnesses of the eliminating polynomial reconstructed simultaneously: + its coefficients share a common denominator (the leading coefficient of + the primitive integer polynomial), which can be much larger than their + numerators. Reconstructing k coefficients u_1, .., u_k with a common + denominator d, i.e. finding a short vector (d, n_1, .., n_k) with + n_j = d u_j mod m by LLL, needs about bits(n) + bits(d) / k bits of + modulus instead of bits(n) + bits(d) for a single coefficient. The + denominator found is used as a guess for the eliminating polynomial. + As LLL is more expensive than rational reconstruction, it is tried at + a geometric schedule: each time the number of primes grows by + VEC_WIT_GROWTH percent. */ +#define VEC_WIT_K 4 +#define VEC_WIT_START 16 +#define VEC_WIT_GROWTH 5 + +typedef struct{ + int k; /* number of witnesses, 0 if disabled */ + deg_t idx[VEC_WIT_K]; /* indices of the witness coefficients in elim */ + int state; /* 0: nothing, 1: candidate to be checked with + the next prime, 2: candidate checked */ + int32_t next; /* number of primes of the next attempt */ + mpz_t den; /* common denominator */ + mpz_t num[VEC_WIT_K]; /* numerators */ +} vec_wit_struct; + +typedef vec_wit_struct vec_wit_t[1]; + +/* witnesses: the trace and det witnesses, then the first nonzero + coefficients of elim from degrees nsols/2 and nsols/4 upwards */ +static inline void vec_wit_init(vec_wit_t vw, const nmod_poly_t elim, + const deg_t tridx, const deg_t detidx){ + deg_t nsols = elim->length - 1; + mpz_init(vw->den); + for (int j = 0; j < VEC_WIT_K; j++) { + mpz_init(vw->num[j]); + } + vw->state = 0; + vw->next = VEC_WIT_START; + vw->k = 0; + if (nsols < 4 * VEC_WIT_K) { + return; + } + deg_t cand[VEC_WIT_K] = {tridx, detidx, nsols / 2, nsols / 4}; + for (int j = 0; j < VEC_WIT_K; j++) { + deg_t i = cand[j]; + int again = 1; + while (again && i < nsols) { + again = (elim->coeffs[i] == 0); + for (int l = 0; l < vw->k; l++) { + again = again || (vw->idx[l] == i); + } + if (again) { + i++; + } } - for (long i = nmod_param->coords[j]->length; - i < nmod_param->elim->length - 1; i++) { - mpz_set_ui(mpz_param->coords[j]->coeffs[i], 0); + if (i < nsols) { + vw->idx[vw->k] = i; + vw->k++; } - mpz_param->coords[j]->length = nmod_param->elim->length - 1; + } + if (vw->k < 2) { + vw->k = 0; } } -static inline void crt_lift_mpz_upoly(mpz_upoly_t pol, nmod_poly_t nmod_pol, - mpz_t modulus, int32_t prime, mpz_t prod, - mpz_t tmp, int nthrds) { - len_t i; - /* #pragma omp parallel for num_threads(nthrds) \ */ - /* private(i) schedule(static) */ - for (i = 0; i < pol->length; i++) { - mpz_CRT_ui(pol->coeffs[i], pol->coeffs[i], modulus, nmod_pol->coeffs[i], - prime, prod, tmp, 0); +static inline void vec_wit_clear(vec_wit_t vw){ + mpz_clear(vw->den); + for (int j = 0; j < VEC_WIT_K; j++) { + mpz_clear(vw->num[j]); } } -/* assumes that all degrees are the same */ -static inline void crt_lift_mpz_param(mpz_param_t mpz_param, - param_t *nmod_param, mpz_t modulus, - mpz_t prod_crt, const int32_t prime, - mpz_t tmp, const int nthrds) { +/* a candidate is accepted when the max-norm of (d, n_1, .., n_k) is at most + 2^(k bits(m) / (k + 1) - RR_MARGIN), the analogue of the bounds with + RR_MARGIN bits of slack used for rational reconstruction */ +static inline void vec_wit_try(vec_wit_t vw, const param_images_t im, + const mpz_t modulus){ + const int k = vw->k; + param_crt_t pc; + param_crt_init(pc, im); + fmpz_mat_t B; + fmpz_mat_init(B, k + 1, k + 1); + fmpz_one(fmpz_mat_entry(B, 0, 0)); + for (int j = 0; j < k; j++) { + param_images_crt_coeff(im, vw->idx[j], pc); + fmpz_set_mpz(fmpz_mat_entry(B, 0, j + 1), pc->u); + fmpz_set_mpz(fmpz_mat_entry(B, j + 1, j + 1), modulus); + } + param_crt_clear(pc); + fmpz_lll_t fl; + fmpz_lll_context_init_default(fl); + fmpz_lll(B, NULL, fl); + + slong bits = (mpz_sizeinbase(modulus, 2) * k) / (k + 1) - RR_MARGIN; + int ok = !fmpz_is_zero(fmpz_mat_entry(B, 0, 0)) && bits > 0; + for (int j = 0; j <= k && ok; j++) { + ok = (fmpz_bits(fmpz_mat_entry(B, 0, j)) <= bits); + } + if (ok) { + int neg = fmpz_sgn(fmpz_mat_entry(B, 0, 0)) < 0; + fmpz_get_mpz(vw->den, fmpz_mat_entry(B, 0, 0)); + for (int j = 0; j < k; j++) { + fmpz_get_mpz(vw->num[j], fmpz_mat_entry(B, 0, j + 1)); + } + if (neg) { + mpz_neg(vw->den, vw->den); + for (int j = 0; j < k; j++) { + mpz_neg(vw->num[j], vw->num[j]); + } + } + vw->state = 1; + } + fmpz_mat_clear(B); +} - /*assumes prod_crt = modulus * prime */ - crt_lift_mpz_upoly(mpz_param->elim, nmod_param->elim, modulus, prime, - prod_crt, tmp, nthrds); - for (len_t i = 0; i < mpz_param->nvars - 1; i++) { - crt_lift_mpz_upoly(mpz_param->coords[i], nmod_param->coords[i], modulus, - prime, prod_crt, tmp, nthrds); +/* checks the candidate with the modular images of elim for a new prime */ +static inline void vec_wit_check(vec_wit_t vw, const nmod_poly_t elim, + const uint32_t prime){ + uint64_t d = mpz_fdiv_ui(vw->den, prime); + if (d == 0) { + vw->state = 0; + return; } + uint64_t dinv = mod_p_inverse_32(d, prime); + for (int j = 0; j < vw->k; j++) { + uint64_t c = mpz_fdiv_ui(vw->num[j], prime); + if ((c * dinv) % prime != elim->coeffs[vw->idx[j]]) { + vw->state = 0; + return; + } + } + vw->state = 2; } /** @@ -1035,20 +1382,44 @@ static inline void crt_lift_mpz_param(mpz_param_t mpz_param, **/ #define RR 1 +/* rational reconstruction of u * lcm modulo modulus, trying in turn the + fixed bounds (bN[k], bD[k]) for k < nb, then the bounds set from the + guessed denominator lcm (D = sqrt(M / lcm), N = M / D); the fixed bounds + suit numerators much larger than denominators, the latter suit large + denominators */ +static inline int param_ratrecon_coeff(mpz_t num, mpz_t den, mpz_t u, + mpz_t modulus, mpz_t lcm, + rrec_data_t rd, mpz_t *bN, mpz_t *bD, + const int nb){ + for (int k = 0; k < nb; k++) { + mpz_set(rd->N, bN[k]); + mpz_set(rd->D, bD[k]); + if (lift_ratreconwden(num, den, u, modulus, lcm, rd)) { + return 1; + } + } + set_recdata_guess(rd, modulus, lcm); + return lift_ratreconwden(num, den, u, modulus, lcm, rd); +} + static inline int new_rational_reconstruction_mpz_ptr_with_denom_param( - mpz_t *recons, mpz_t denominator, mpz_t *pol, deg_t len, mpz_t modulus, + mpz_t *recons, mpz_t denominator, const param_images_t im, int64_t start, + param_crt_struct *pc, deg_t len, mpz_t modulus, deg_t *maxrec, mpq_t *coef, mpz_t rnum, mpz_t rden, mpz_t *tmp_num, - mpz_t *tmp_den, mpz_t lcm, mpz_t gnum, mpz_t guessed_den, rrec_data_t rdata) { + mpz_t *tmp_den, mpz_t lcm, mpz_t gnum, mpz_t guessed_den, rrec_data_t rdata, + mpz_t *bN, mpz_t *bD, const int nb) { mpz_set_ui(gnum, 1); int b = 0; - //for (deg_t i = 0; i < len; i++) { + /* lcm is the denominator accumulated so far, used as a guess for the + next coefficient */ for (deg_t i = len - 1; i >= 0; i--) { - b = ratreconwden(tmp_num[i], rden, pol[i], modulus, lcm, - rdata); + param_images_crt_coeff(im, start + i, pc); + b = param_ratrecon_coeff(tmp_num[i], rden, pc->u, modulus, lcm, + rdata, bN, bD, nb); if (b == 0) { return 0; @@ -1078,10 +1449,11 @@ static inline int new_rational_reconstruction_mpz_ptr_with_denom_param( static inline int rational_reconstruction_mpz_ptr_with_denom_elim( - mpz_t *recons, mpz_t denominator, mpz_t *pol, deg_t len, mpz_t modulus, + mpz_t *recons, mpz_t denominator, const param_images_t im, int64_t start, + param_crt_struct *pc, deg_t len, mpz_t modulus, deg_t *maxrec, mpq_t *coef, mpz_t rnum, mpz_t rden, mpz_t *tmp_num, mpz_t *tmp_den, int16_t *check_lift, mpz_t lcm, mpz_t gnum, - mpz_t guessed_den, rrec_data_t rdata) { + mpz_t guessed_den, rrec_data_t rdata, mpz_t *bN, mpz_t *bD, const int nb) { mpz_set_ui(gnum, 1); @@ -1099,7 +1471,9 @@ static inline int rational_reconstruction_mpz_ptr_with_denom_elim( int b = 0; for(deg_t i = len - 1; i >= 0; i--){ if(check_lift[i] <= 1){ - b = ratreconwden(tmp_num[i], rden, pol[i], modulus, lcm, rdata); + param_images_crt_coeff(im, start + i, pc); + b = param_ratrecon_coeff(tmp_num[i], rden, pc->u, modulus, lcm, + rdata, bN, bD, nb); if(b == 0){ check_lift[i] = 0; return 0; @@ -1134,39 +1508,42 @@ static inline int rational_reconstruction_mpz_ptr_with_denom_elim( static inline int rational_reconstruction_upoly_with_denom_elim( - mpz_upoly_t recons, mpz_t denominator, mpz_upoly_t pol, long len, + mpz_upoly_t recons, mpz_t denominator, const param_images_t im, + int64_t start, param_crt_struct *pc, long len, mpz_t modulus, deg_t *maxrec, mpq_t *coef, mpz_t rnum, mpz_t rden, mpz_upoly_t tmp_num, mpz_upoly_t tmp_den, int16_t *check_lift, mpz_t lcm, mpz_t guessed_num, - mpz_t guessed_den, rrec_data_t rdata) { + mpz_t guessed_den, rrec_data_t rdata, mpz_t *bN, mpz_t *bD, const int nb) { return rational_reconstruction_mpz_ptr_with_denom_elim( - recons->coeffs, denominator, pol->coeffs, len, modulus, maxrec, coef, + recons->coeffs, denominator, im, start, pc, len, modulus, maxrec, coef, rnum, rden, tmp_num->coeffs, tmp_den->coeffs, check_lift, lcm, guessed_num, - guessed_den, rdata); + guessed_den, rdata, bN, bD, nb); } static inline int rational_reconstruction_upoly_with_denom_param( - mpz_upoly_t recons, mpz_t denominator, mpz_upoly_t pol, long len, + mpz_upoly_t recons, mpz_t denominator, const param_images_t im, + int64_t start, param_crt_struct *pc, long len, mpz_t modulus, deg_t *maxrec, mpq_t *coef, mpz_t rnum, mpz_t rden, mpz_upoly_t tmp_num, mpz_upoly_t tmp_den, mpz_t lcm, mpz_t guessed_num, - mpz_t guessed_den, rrec_data_t rdata) { + mpz_t guessed_den, rrec_data_t rdata, mpz_t *bN, mpz_t *bD, const int nb) { return new_rational_reconstruction_mpz_ptr_with_denom_param( - recons->coeffs, denominator, pol->coeffs, len, modulus, maxrec, coef, + recons->coeffs, denominator, im, start, pc, len, modulus, maxrec, coef, rnum, rden, tmp_num->coeffs, tmp_den->coeffs, lcm, guessed_num, - guessed_den, rdata); + guessed_den, rdata, bN, bD, nb); } -static inline void lift_coordinate(mpz_param_t mpz_param, mpz_param_t tmp_mpz_param, +static inline void lift_coordinate(mpz_param_t mpz_param, + const param_images_t images, param_crt_struct *pc, param_t *nmod_param, mpz_upoly_t numer, mpz_upoly_t denom, int16_t *check_lift, mpz_t modulus, mpz_t prod_crt, int32_t prime, mpq_t *coef, mpz_t rnum, mpz_t rden, rrec_data_t recdata, mpz_t guessed_num, mpz_t guessed_den, deg_t *maxrec, int *is_lifted, mpz_t denominator, mpz_t lcm, mpq_t c, const int idx, - const int info_level){ + mpz_t *bN, mpz_t *bD, const int nb, const int info_level){ if(mpz_sizeinbase(guessed_den, 2) <= mpz_sizeinbase(modulus, 2)){ mpz_set(lcm, guessed_den); @@ -1178,9 +1555,11 @@ static inline void lift_coordinate(mpz_param_t mpz_param, mpz_param_t tmp_mpz_pa if (is_lifted[0] > 0 && is_lifted[idx + 1] == 0) { int b = rational_reconstruction_upoly_with_denom_param( - mpz_param->coords[idx], denominator, tmp_mpz_param->coords[idx], - nmod_param->coords[idx]->length, modulus, maxrec, coef, rnum, rden, - numer, denom, lcm, guessed_num, guessed_den, recdata); + mpz_param->coords[idx], denominator, images, + images->elen + idx * images->clen, pc, + MIN((deg_t)nmod_param->coords[idx]->length, images->clen), + modulus, maxrec, coef, rnum, rden, + numer, denom, lcm, guessed_num, guessed_den, recdata, bN, bD, nb); if(b){ is_lifted[idx + 1] = 1; mpz_set(mpq_denref(c), denominator); @@ -1198,7 +1577,8 @@ static inline void lift_coordinate(mpz_param_t mpz_param, mpz_param_t tmp_mpz_pa } -static inline int lift_parametrization(mpz_param_t mpz_param, mpz_param_t tmp_mpz_param, +static inline int lift_parametrization(mpz_param_t mpz_param, + const param_images_t images, param_t *nmod_param, mpz_upoly_t numer, mpz_upoly_t denom, int16_t *check_lift, mpz_t modulus, mpz_t prod_crt, int32_t prime, mpq_t *coef, mpz_t rnum, mpz_t rden, rrec_data_t recdata, mpz_t guessed_num, mpz_t guessed_den, deg_t *maxrec, @@ -1206,19 +1586,57 @@ static inline int lift_parametrization(mpz_param_t mpz_param, mpz_param_t tmp_mp mpz_set_ui(lcm, 1); mpz_set_ui(denominator, 1); + /* CRT is applied to the stored images of each coefficient right before + its rational reconstruction */ + param_crt_t pc; + param_crt_init(pc, images); + + /* fixed bounds tried first, with M = modulus / 2^RR_MARGIN so that + RR_MARGIN bits of slack are kept: D = M^(1/64), then D = M^(1/16) for + elim; D = M^(1/32), + balanced bounds, then N = M^(1/16) for the coordinates; the bounds + set from the guessed denominator are tried last */ + mpz_t bN[5], bD[5], mm; + for(int k = 0; k < 5; k++){ + mpz_init(bN[k]); + mpz_init(bD[k]); + } + mpz_init(mm); + mpz_fdiv_q_2exp(mm, modulus, RR_MARGIN); + /* elim */ + mpz_root(bD[0], mm, 64); + mpz_fdiv_q(bN[0], mm, bD[0]); + mpz_fdiv_q_2exp(bD[0], bD[0], 1); + mpz_root(bD[1], mm, 16); + mpz_fdiv_q(bN[1], mm, bD[1]); + mpz_fdiv_q_2exp(bD[1], bD[1], 1); + /* coordinates */ + mpz_root(bD[2], mm, 32); + mpz_fdiv_q(bN[2], mm, bD[2]); + mpz_fdiv_q_2exp(bD[2], bD[2], 1); + mpz_sqrt(bD[3], mm); + mpz_fdiv_q(bN[3], mm, bD[3]); + mpz_fdiv_q_2exp(bD[3], bD[3], 1); + mpz_root(bN[4], mm, 16); + mpz_fdiv_q(bD[4], mm, bN[4]); + mpz_fdiv_q_2exp(bN[4], bN[4], 1); + mpz_clear(mm); + int b = 0; if (is_lifted[0] == 0) { - mpz_swap(recdata->N, recdata->N2); - mpz_swap(recdata->D, recdata->D2); - mpz_swap(recdata->N1, recdata->N2); - mpz_swap(recdata->D1, recdata->D2); b = rational_reconstruction_upoly_with_denom_elim( - mpz_param->elim, denominator, tmp_mpz_param->elim, + mpz_param->elim, denominator, images, 0, pc, nmod_param->elim->length, modulus, maxrec, coef, rnum, rden, numer, - denom, check_lift, lcm, guessed_num, guessed_den, recdata); + denom, check_lift, lcm, guessed_num, guessed_den, recdata, + bN, bD, 2); if (b == 0) { is_lifted[0] = 0; + for(int k = 0; k < 5; k++){ + mpz_clear(bN[k]); + mpz_clear(bD[k]); + } + param_crt_clear(pc); return 0; } is_lifted[0] = 1; @@ -1240,92 +1658,26 @@ static inline int lift_parametrization(mpz_param_t mpz_param, mpz_param_t tmp_mp mpz_set(guessed_den, lc); - mpz_sqrt(recdata->D2, modulus); - mpz_fdiv_q(recdata->N2, modulus, recdata->D2); - mpz_fdiv_q_2exp(recdata->D2, recdata->D2, 1); - mpz_root(recdata->D1, modulus, 16); - mpz_fdiv_q(recdata->N1, modulus, recdata->D1); - mpz_fdiv_q_2exp(recdata->D1, recdata->D1, 1); - mpz_root(recdata->D, modulus, 32); - mpz_fdiv_q(recdata->N, modulus, recdata->D); - mpz_fdiv_q_2exp(recdata->D, recdata->D, 1); - if(mpz_sizeinbase(guessed_den, 2) <= mpz_sizeinbase(modulus, 2)){ - mpz_set(lcm, guessed_den); - } - else{ - mpz_set_ui(lcm, 1); - } - for(int i = 0; i < nc; i++){ - lift_coordinate(mpz_param, tmp_mpz_param, - nmod_param, numer, denom, check_lift, - modulus, prod_crt, prime, coef, rnum, rden, - recdata, guessed_num, guessed_den, maxrec, - is_lifted, denominator, lcm, c, i, info_level); - if(mpz_sizeinbase(guessed_den, 2) <= mpz_sizeinbase(modulus, 2)){ - mpz_set(lcm, guessed_den); - } - else{ - mpz_set_ui(lcm, 1); - } - } - mpz_swap(recdata->N, recdata->N2); - mpz_swap(recdata->D, recdata->D2); for(int i = 0; i < nc; i++){ - lift_coordinate(mpz_param, tmp_mpz_param, - nmod_param, numer, denom, check_lift, - modulus, prod_crt, prime, coef, rnum, rden, - recdata, guessed_num, guessed_den, maxrec, - is_lifted, denominator, lcm, c, i, info_level); - if(mpz_sizeinbase(guessed_den, 2) <= mpz_sizeinbase(modulus, 2)){ - mpz_set(lcm, guessed_den); - } - else{ - mpz_set_ui(lcm, 1); - } - } - b = 1; - for(int i = 0; i < nc; i++){ - if(is_lifted[i + 1] == 0){ - b = 0; + if(is_lifted[i + 1]){ + continue; } - } - if(b == 1){ - mpz_clear(lc); - return 1; + lift_coordinate(mpz_param, images, pc, + nmod_param, numer, denom, check_lift, + modulus, prod_crt, prime, coef, rnum, rden, + recdata, guessed_num, guessed_den, maxrec, + is_lifted, denominator, lcm, c, i, bN + 2, bD + 2, 3, + info_level); } - mpz_swap(recdata->N, recdata->N2); - mpz_swap(recdata->D, recdata->D2); - mpz_swap(recdata->N, recdata->N1); - mpz_swap(recdata->D, recdata->D1); - mpz_swap(recdata->N, recdata->D); - for(int i = 0; i < nc; i++){ - lift_coordinate(mpz_param, tmp_mpz_param, - nmod_param, numer, denom, check_lift, - modulus, prod_crt, prime, coef, rnum, rden, - recdata, guessed_num, guessed_den, maxrec, - is_lifted, denominator, lcm, c, i, info_level); - if(mpz_sizeinbase(guessed_den, 2) <= mpz_sizeinbase(modulus, 2)){ - mpz_set(lcm, guessed_den); - } - else{ - mpz_set_ui(lcm, 1); - } - } - b = 1; - for(int i = 0; i < nc; i++){ - if(is_lifted[i + 1] == 0){ - b = 0; - } - } - if(b == 1){ - mpz_clear(lc); - return 1; - } - else{ - mpz_clear(lc); - return 1; + for(int k = 0; k < 5; k++){ + mpz_clear(bN[k]); + mpz_clear(bD[k]); } + mpq_clear(c); + mpz_clear(lc); + param_crt_clear(pc); + return 1; } /** @@ -1335,7 +1687,8 @@ returns 0 if rational reconstruction failed **/ static inline int rational_reconstruction_param( - mpz_param_t mpz_param, mpz_param_t tmp_mpz_param, param_t *nmod_param, + mpz_param_t mpz_param, param_images_t images, vec_wit_t vec_wit, + param_t *nmod_param, nvars_t nlins, nvars_t *linvars, uint32_t *lineqs, trace_det_fglm_mat_t trace_det, sp_matfglm_t *mat, mpz_upoly_t numer, mpz_upoly_t denom, int16_t *check_lift, mpz_t modulus, mpz_t prod_crt, int32_t prime, @@ -1364,9 +1717,18 @@ static inline int rational_reconstruction_param( mulmat_reconstruct(trace_det, prod_crt); } + /* checks the candidate common denominator of the vector witnesses */ + if (vec_wit->state == 1) { + vec_wit_check(vec_wit, nmod_param->elim, prime); + if (vec_wit->state == 2 && info_level) { + fprintf(VERBSTREAM, "[v]"); + } + } + /** CRT PART **/ - crt_lift_mpz_param(tmp_mpz_param, nmod_param, modulus, prod_crt, prime, - trace_det->tmp, nthrds); + /* the images of the parametrization are only stored; CRT is applied when + a rational reconstruction is attempted (see lift_parametrization) */ + param_images_add(images, nmod_param, prime); crt_lift_trace_det(trace_det, trace_mod, det_mod, mat, lineqs, nmod_param, @@ -1376,6 +1738,16 @@ static inline int rational_reconstruction_param( mpz_mul_ui(modulus, modulus, prime); + /* simultaneous reconstruction of the vector witnesses, while the + eliminating polynomial is not lifted and no single witness is known */ + if (vec_wit->k && vec_wit->state == 0 && is_lifted[0] == 0 + && trace_det->done_trace < 2 && trace_det->done_det < 2 + && images->nprimes >= vec_wit->next) { + vec_wit_try(vec_wit, images, modulus); + vec_wit->next = MAX(images->nprimes + 1, + images->nprimes + images->nprimes * VEC_WIT_GROWTH / 100); + } + if (doit == 0) { return 0; } @@ -1383,15 +1755,15 @@ static inline int rational_reconstruction_param( /** CRT DONE **/ /** RATIONAL RECONSTRUCTIONS **/ - mpz_sqrt(recdata->N, modulus); - mpz_fdiv_q(recdata->D, modulus, recdata->N); + /* keep RR_MARGIN bits of slack (2ND <= modulus / 2^RR_MARGIN) so that + spurious reconstructions become unlikely */ + mpz_t mm; + mpz_init(mm); + mpz_fdiv_q_2exp(mm, modulus, RR_MARGIN); + mpz_sqrt(recdata->N, mm); + mpz_fdiv_q(recdata->D, mm, recdata->N); mpz_fdiv_q_2exp(recdata->D, recdata->D, 1); - mpz_root(recdata->D1, modulus, 4); - mpz_fdiv_q(recdata->N1, modulus, recdata->D1); - mpz_fdiv_q_2exp(recdata->D1, recdata->D1, 1); - mpz_root(recdata->D2, modulus, 16); - mpz_fdiv_q(recdata->N2, modulus, recdata->D2); - mpz_fdiv_q_2exp(recdata->D2, recdata->D2, 1); + mpz_clear(mm); mpz_set_ui(guessed_den, 1); mpz_set_ui(rnum, 0); @@ -1414,7 +1786,12 @@ static inline int rational_reconstruction_param( } } - if (trace_det->done_trace > 1 || trace_det->done_det > 1) { + if (vec_wit->state == 2) { + mpz_lcm(guessed_den, guessed_den, vec_wit->den); + } + + if (trace_det->done_trace > 1 || trace_det->done_det > 1 + || vec_wit->state == 2) { mpz_t denominator; mpz_init_set_ui(denominator, 1); @@ -1423,7 +1800,7 @@ static inline int rational_reconstruction_param( mpq_t c; mpq_init(c); - int b = lift_parametrization(mpz_param, tmp_mpz_param, + int b = lift_parametrization(mpz_param, images, nmod_param, numer, denom, check_lift, modulus, prod_crt, prime, coef, rnum, rden, recdata, guessed_num, guessed_den, maxrec, @@ -1728,6 +2105,7 @@ static int32_t *initial_modular_step( if(md->info_level > 1){ fprintf (VERBSTREAM,"------------------------------------------------------------------------------------------------------\n"); } + free(lmb); free_basis_without_hash_table(&(bs)); free(bs); return NULL; @@ -1746,6 +2124,7 @@ static int32_t *initial_modular_step( *success = 0; *dim = 0; *dquot_ori = dquot; + free(lmb); free_basis_without_hash_table(&(bs)); free(bs); return NULL; @@ -1757,6 +2136,11 @@ static int32_t *initial_modular_step( md->fglm_rtime = realtime(); param_t **test_nmod_param = (param_t **)malloc(sizeof(param_t *)); + /* the second call allocates its own fglm data */ + free_fglm_data(*bdata_fglm); + *bdata_fglm = NULL; + free_fglm_bms_data(*bdata_bms); + *bdata_bms = NULL; *test_nmod_param = nmod_fglm_compute_trace_data(*bmatrix, fc, bs->ht->nv, *bsz, *nlins_ptr, linvars, @@ -1783,6 +2167,34 @@ static int32_t *initial_modular_step( free(test_nmod_param); } } + if (*success == 0 && gens->field_char == 0 + && gens->sep_status == SEP_NONE + && gens->change_var_order == -1 + && gens->linear_form_base_coef == 0) { + const char *env = getenv("MSOLVE_SEPELEM"); + gens->sep_status = SEP_FAILED; + if (env == NULL || strcmp(env, "0") != 0) { + int32_t *c = calloc(bs->ht->nv, sizeof(int32_t)); + int32_t v = -1; + int found = find_separating_element(bs, lmb, dquot, fc, + &v, c, &(gens->sep_nsols), + md->info_level); + gens->sep_matnterms_ori = md->mat_nterms; + if (found == 1) { + gens->sep_var = v; + gens->sep_status = SEP_VAR; + free(c); + } else if (found == 2) { + gens->sep_form = c; + gens->sep_status = SEP_FORM; + } else { + free(c); + } + } + } + } + if (gens->sep_status == SEP_APPLIED) { + gens->sep_matnterms = md->mat_nterms; } *dim = 0; *dquot_ori = dquot; @@ -1948,6 +2360,197 @@ static void secondary_modular_steps(sp_matfglm_t **bmatrix, st->nthrds = nthrds; } +/* threshold for the multi-modular steps on the original system */ +#define SEP_DENSE_RATIO 1.2 + +/* Multi-modular steps when a separating linear form t was added with an + * extra variable: when the F4 matrices for the system with t are much + * larger than those for the original system, the tracer is run on the + * original system and the parametrization is computed from the + * multiplication matrix by t (see sep_dense_param), without the extra + * variable. */ +typedef struct { + bs_t *bs_qq; /* original system */ + md_t *st; /* its tracer */ + int32_t num_gb; /* number of elements of its Groebner bases */ + int32_t *lm; /* their leading monomials */ + int32_t *lmb; /* their staircase */ + long dquot; + long degelim; /* degrees of the minimal polynomial of the form */ + long degsqfr; /* and of its squarefree part */ + const int32_t *form; +} sep_dense_t; + +static void sep_dense_clear(sep_dense_t *sd) { + if (sd->bs_qq != NULL) { + free_basis(&(sd->bs_qq)); + free(sd->bs_qq); + } + if (sd->st != NULL) { + free_trace(&(sd->st->tr)); + free(sd->st); + } + free(sd->lm); + free(sd->lmb); + sd->bs_qq = NULL; + sd->st = NULL; + sd->lm = NULL; + sd->lmb = NULL; +} + +/* Learns the tracer of the original system (gens without its last + * generator, the linear form, and its last variable) modulo prime, and + * checks that the parametrization computed from its Groebner basis is + * param, computed with the extra variable. Returns the number of terms of + * the Groebner basis of the original system, or 0 if it cannot be used. */ +static int64_t sep_dense_init(sep_dense_t *sd, data_gens_ff_t *gens, + param_t *param, uint32_t prime, + int32_t ht_size, int32_t nr_threads, + int32_t max_nr_pairs, int32_t reset_ht, + int32_t la_option, int32_t use_signatures, + int32_t pbm_file) { + sd->bs_qq = NULL; + sd->st = NULL; + sd->lm = NULL; + sd->lmb = NULL; + sd->form = gens->sep_form; + + int32_t nr_vars = gens->nvars - 1; + int32_t nr_gens = gens->ngens - 1; + const int32_t nva = gens->nvars; + int64_t len = 0; + for (int32_t i = 0; i < nr_gens; ++i) { + len += gens->lens[i]; + } + int32_t *exps = malloc((unsigned long)len * nr_vars * sizeof(int32_t)); + for (int64_t j = 0; j < len; ++j) { + if (gens->exps[j * nva + nr_vars] != 0) { + free(exps); + return 0; + } + memcpy(exps + j * nr_vars, gens->exps + j * nva, + (unsigned long)nr_vars * sizeof(int32_t)); + } + + uint32_t field_char = 0; + int32_t mon_order = 0, elim_block_len = 0, nr_nf = 0, reduce_gb = 1; + int32_t truncate_lifting = 0, info_level = 0; + int *invalid_gens = NULL; + md_t *st = allocate_meta_data(); + sd->st = st; + if (validate_input_data(&invalid_gens, gens->mpz_cfs, gens->lens, + &field_char, &mon_order, &elim_block_len, &nr_vars, + &nr_gens, &nr_nf, &ht_size, &nr_threads, + &max_nr_pairs, &reset_ht, &la_option, + &use_signatures, &reduce_gb, &truncate_lifting, + &info_level) == -1 + || check_and_set_meta_data_trace(st, gens->lens, exps, gens->mpz_cfs, + invalid_gens, field_char, mon_order, + elim_block_len, nr_vars, nr_gens, + nr_nf, ht_size, nr_threads, + max_nr_pairs, reset_ht, la_option, + use_signatures, reduce_gb, + (uint32_t)1 << 30, nr_threads, + pbm_file, 0, info_level)) { + free(invalid_gens); + free(exps); + free(st); + sd->st = NULL; + return 0; + } + sd->bs_qq = initialize_basis(st, NULL); + import_input_data(sd->bs_qq, st, 0, st->ngens_input, gens->lens, exps, + gens->mpz_cfs, invalid_gens); + free(invalid_gens); + free(exps); + calculate_divmask(sd->bs_qq->ht); + sort_r(sd->bs_qq->hm, (unsigned long)sd->bs_qq->ld, sizeof(hm_t *), + initial_input_cmp, sd->bs_qq->ht); + remove_content_of_initial_basis(sd->bs_qq); + + /* learning */ + st->print_gb = 0; + st->f4_qq_round = 1; + int32_t error = 0; + bs_t *bs = core_gba(sd->bs_qq, st, &error, prime); + if (bs == NULL || error > 0) { + free(bs); + sep_dense_clear(sd); + return 0; + } + int64_t nterms = 0; + for (len_t i = 0; i < bs->lml; ++i) { + nterms += bs->hm[bs->lmps[i]][LENGTH]; + } + sd->num_gb = bs->lml; + sd->lm = get_lm_from_bs(bs, bs->ht); + sd->dquot = 0; + if (has_dimension_zero(bs->lml, nr_vars, sd->lm)) { + sd->lmb = monomial_basis(bs->lml, nr_vars, sd->lm, &(sd->dquot)); + } + sd->degelim = param->degelimpol; + sd->degsqfr = param->degsqfrelimpol; + int ok = sd->lmb != NULL && sd->degsqfr == param->elim->length - 1; + if (ok) { + sep_mulmat_t mm; + ok = sep_mulmat_init(&mm, bs, sd->lmb, sd->dquot, prime); + if (ok) { + param_t *par = allocate_fglm_param(prime, gens->nvars); + ok = sep_dense_param(par, &mm, sd->form, sd->degelim, sd->degsqfr) == 0 + && nmod_poly_equal(par->elim, param->elim); + for (int32_t v = 0; ok && v < nr_vars; ++v) { + ok = nmod_poly_equal(par->coords[v], param->coords[v]); + } + free_fglm_param(par); + sep_mulmat_clear(&mm); + } + } + free_basis_without_hash_table(&bs); + if (!ok) { + sep_dense_clear(sd); + return 0; + } + return nterms; +} + +static void sep_dense_modular_steps(sep_dense_t *sd, param_t **nmod_params, + const primes_t *lp, uint32_t *bad_primes, + const len_t nprimes, double *stf4) { + md_t *st = sd->st; + st->info_level = 0; + st->f4_qq_round = 2; + const int nthrds = st->nthrds; + const int32_t nv = st->nvars; + st->nthrds = 1; + double rt = realtime(); + len_t i; +#pragma omp parallel for num_threads(nthrds) private(i) schedule(static) + for (i = 0; i < nprimes; ++i) { + bad_primes[i] = 1; + int32_t error = 0; + bs_t *bs = core_gba(sd->bs_qq, st, &error, lp->p[i]); + *stf4 = realtime() - rt; + if (bs == NULL || error > 0) { + free(bs); + continue; + } + if (bs->lml == sd->num_gb) { + int32_t *lm = malloc((unsigned long)sd->num_gb * nv * sizeof(int32_t)); + get_lm_from_bs_trace(bs, bs->ht, lm); + if (memcmp(lm, sd->lm, (unsigned long)sd->num_gb * nv * sizeof(int32_t)) == 0) { + sep_mulmat_t mm; + if (sep_mulmat_init(&mm, bs, sd->lmb, sd->dquot, lp->p[i])) { + bad_primes[i] = sep_dense_param(nmod_params[i], &mm, sd->form, + sd->degelim, sd->degsqfr); + sep_mulmat_clear(&mm); + } + } + free(lm); + } + free_basis_and_only_local_hash_table_data(&bs); + } + st->nthrds = nthrds; +} /* returns 1 if the parametrization can be split, otherwise returns 0*/ int is_splittable(param_t **nmod_params, const int fc){ @@ -1982,12 +2585,11 @@ static inline int is_lucky_matmul_prime_ui(uint32_t prime, } -static void free_msolve_trace_qq_secondary_data(mpz_param_t tmp_mpz_param, +static void free_msolve_trace_qq_secondary_data( trace_det_fglm_mat_t trace_det, mpz_t modulus, mpz_t prod_crt, mpq_t result, mpq_t test, mpz_t rnum, mpz_t rden, mpz_upoly_t numer, mpz_upoly_t denom, int16_t *check_lift, mpz_t guessed_num, mpz_t guessed_den, int *is_lifted, rrec_data_t recdata){ - mpz_param_clear(tmp_mpz_param); trace_det_clear(trace_det); mpz_clear(modulus); mpz_clear(prod_crt); @@ -2041,7 +2643,12 @@ static void free_msolve_trace_qq_initial_data(int *invalid_gens, md_t *st, prime free_fglm_param(nmod_params[i]); } free(leadmons_ori[i]); - //free(leadmons_current[i]); + free(leadmons_current[i]); + free(lineqs_ptr[i]); + if (i > 0) { + free(blinvars[i]); + free(bsquvars[i]); + } if (bs[i] != NULL) { free_basis(&(bs[i])); free(bs[i]); @@ -2198,6 +2805,7 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, prime_start, nr_primes, pbm_file, 0 /*truncate_lifting */, info_level)) { free(st); + free(invalid_gens); return -3; } @@ -2211,7 +2819,7 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, /* read in ideal, move coefficients to integers */ import_input_data(bs_qq, st, 0, st->ngens_input, lens, exps, cfs, invalid_gens); - //free(invalid_gens); + free(invalid_gens); invalid_gens = NULL; print_initial_statistics(VERBSTREAM, st); @@ -2305,15 +2913,15 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, /* data for linear forms */ nvars_t nlins = 0; /*number of linear forms*/ nvars_t *bnlins = (nvars_t *)calloc(st->nthrds, sizeof(nvars_t)); - nvars_t **blinvars = (nvars_t **)malloc( - st->nthrds * sizeof(nvars_t *)); /*indicates which variables are linear*/ + nvars_t **blinvars = (nvars_t **)calloc( + st->nthrds, sizeof(nvars_t *)); /*indicates which variables are linear*/ nvars_t *linvars = calloc(bs_qq->ht->nv, sizeof(nvars_t)); blinvars[0] = linvars; uint32_t **lineqs_ptr = - malloc(st->nthrds * sizeof(uint32_t *)); /*coeffs of linear forms*/ + calloc(st->nthrds, sizeof(uint32_t *)); /*coeffs of linear forms*/ /*data for squared variables*/ - nvars_t **bsquvars = (nvars_t **)malloc(st->nthrds * sizeof(nvars_t *)); + nvars_t **bsquvars = (nvars_t **)calloc(st->nthrds, sizeof(nvars_t *)); nvars_t *squvars = calloc(nr_vars - 1, sizeof(nvars_t)); bsquvars[0] = squvars; @@ -2366,6 +2974,12 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, *minpolydeg_ptr = (*nmod_params)->degsqfrelimpol; return 3; } + if (gens->sep_status == SEP_APPLIED && gens->sep_nsols > 0 + && *minpolydeg_ptr == -1) { + /* degree of the squarefree part of the minimal polynomial of a random + linear form, from the search for a separating element */ + *minpolydeg_ptr = gens->sep_nsols; + } if (*dim_ptr == 0 && success && *dquot_ptr > 0 && print_gb == 0) { if (nmod_params[0]->degsqfrelimpol != *minpolydeg_ptr && nmod_params[0]->degelimpol != *dquot_ptr) { @@ -2452,6 +3066,60 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, } } + /* separating linear form with an extra variable: if the F4 matrices + with the extra variable have more than SEP_DENSE_RATIO times more terms + than for the original system (in the run which found the linear form), + the multi-modular steps use the original system. These counts do not + depend on the machine, so neither does the choice; the output does not + depend on it either. */ + sep_dense_t sd; + sd.bs_qq = NULL; + sd.st = NULL; + sd.lm = NULL; + sd.lmb = NULL; + int dense = 0; + sp_matfglm_t *dmat = NULL; + if (gens->sep_status == SEP_APPLIED && gens->sep_form != NULL + && gens->linear_form_base_coef > 0 && lift_matrix == 0) { + const char *env = getenv("MSOLVE_SEPDENSE"); + const int force = env != NULL && strcmp(env, "2") == 0; + const int larger = gens->sep_matnterms + > SEP_DENSE_RATIO * gens->sep_matnterms_ori; + if (info_level) { + fprintf(VERBSTREAM, "\nF4 matrices with the linear form: %ld terms; " + "without: %ld terms\n", (long)gens->sep_matnterms, + (long)gens->sep_matnterms_ori); + } + if ((env == NULL || strcmp(env, "0") != 0) + && (force || larger)) { + double rt = realtime(); + /* learns the tracer of the original system and checks the + parametrization from the multiplication matrix at primeinit */ + dense = sep_dense_init(&sd, gens, nmod_params[0], primeinit, + ht_size, nr_threads, max_nr_pairs, + reset_ht, la_option, use_signatures, + pbm_file) > 0; + if (info_level) { + if (dense) { + fprintf(VERBSTREAM, "Multi-modular steps on the original system, " + "parametrizations from the multiplication matrix (%.2f sec)\n", + realtime() - rt); + } else { + fprintf(VERBSTREAM, "Parametrizations from the multiplication matrix " + "not applicable (%.2f sec)\n", realtime() - rt); + } + } + if (!dense) { + sep_dense_clear(&sd); + } else { + /* no witness coefficients of the multiplication matrix */ + dmat = calloc(1, sizeof(sp_matfglm_t)); + dmat->ncols = *dquot_ptr; + dmat->nrows = 0; + } + } + } + *to_split_ptr = is_splittable(nmod_params, lp->p[0]); /* duplicate data for multi-threaded multi-mod computation */ duplicate_data_mthread_trace(st->nthrds, bs_qq, st, num_gb, @@ -2465,11 +3133,8 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, bsquvars); normalize_nmod_param(nmod_params[0]); - mpz_param_t tmp_mpz_param; - mpz_param_init(tmp_mpz_param); initialize_mpz_param(*mpz_paramp, nmod_params[0]); - initialize_mpz_param(tmp_mpz_param, nmod_params[0]); // attention les longueurs des mpz_param sont fixees par nmod_params[0] // dans des cas exceptionnels, ca peut augmenter avec un autre premier. @@ -2488,8 +3153,13 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, } trace_det_initset(trace_det, nmod_params[0]->elim->coeffs[tridx], nmod_params[0]->elim->coeffs[detidx], tridx, detidx, - bmatrix, lift_matrix, nlins, nv, lineqs_ptr, 4*st->nthrds, + dense ? &dmat : bmatrix, lift_matrix, nlins, nv, + lineqs_ptr, 4*st->nthrds, lp->p[0]); + if (dense) { + /* no multiplication matrix to lift */ + trace_det->mat_lifted = 2; + } /********************************************************************/ mpz_t modulus; @@ -2505,9 +3175,13 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, mpz_set_ui(rnum, 0); mpz_init(rden); mpz_set_ui(rden, 1); - set_mpz_param_nmod(tmp_mpz_param, nmod_params[0]); + param_images_t images; + param_images_init(images, *mpz_paramp); + param_images_add(images, nmod_params[0], primeinit); + vec_wit_t vec_wit; + vec_wit_init(vec_wit, nmod_params[0]->elim, tridx, detidx); - deg_t nsols = tmp_mpz_param->nsols; + deg_t nsols = (*mpz_paramp)->nsols; mpz_upoly_t numer; mpz_upoly_init2(numer, (nsols + 1), 32 * (nsols + 1)); @@ -2554,6 +3228,13 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, /* measures time spent in rational reconstruction */ double strat = 0; + /* splitting of the solutions along equalities of coordinates, see + splitting.c: the components are then lifted separately */ + split_data_t sp; + split_params_clear(&(gens->split_params)); + int split = split_start(&sp, nmod_params[0], info_level); + int nmismatch = 0; + while (rerun == 1 || mcheck == 1) { /* controls call to rational reconstruction */ doit = ((prdone % nbdoit) == 0); @@ -2601,6 +3282,10 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, double ca0 = realtime(); double stf4 = 0; + if (dense) { + sep_dense_modular_steps(&sd, nmod_params, lp, bad_primes, st->nprimes, + &stf4); + } else secondary_modular_steps(bmatrix, bdiv_xn, blen_gb_xn, @@ -2679,14 +3364,69 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, normalize_nmod_param(nmod_params[i]); } } + if (split) { + double crr = realtime(); + for (len_t i = 0; i < st->nthrds; i++) { + if (bad_primes[i] == 0 && split_add_image(&sp, nmod_params[i])) { + nprimes++; + continue; + } + if (bad_primes[i] == 0) { + nmismatch++; + } + nbadprimes++; + if (info_level) { + fprintf(VERBSTREAM, "", lp->p[i]); + } + } + split_reconstruct(&sp); + if (sp.ndone == sp.ngroups) { + /* the parametrization of the whole solution set is only built + * when it is returned */ + if (gens->split_global) { + split_recombine(*mpz_paramp, &sp); + } + split_set_params(&(gens->split_params), &sp); + rerun = 0; + mcheck = 0; + } + strat += realtime() - crr; + if (info_level && (LOG2(nprimes) > clog || sp.ndone == sp.ngroups)) { + fprintf(VERBSTREAM, "{%d: %ld/%ld}", nprimes, sp.ndone, sp.ngroups); + fflush(VERBSTREAM); + clog = LOG2(nprimes); + } + if (rerun && nmismatch >= SPLIT_MAX_MISMATCH) { + /* the components differ from one prime to the other */ + if (info_level) { + fprintf(VERBSTREAM, "\ncomponents differ modulo %d primes, " + "usual lifting\n", nmismatch); + } + split_data_clear(&sp); + split = 0; + } + continue; + } /* scrr measures time spent in ratrecon for modular images */ double crr = 0, scrr = 0; - /* CRT + rational reconstruction */ + /* CRT + rational reconstruction; reconstruction is attempted only + * once per iteration, after the last good prime has been used */ + int32_t lastgood = -1; + for (len_t i = 0; i < st->nthrds; i++) { + if (bad_primes[i] == 0) { + lastgood = i; + } + } for (len_t i = 0; i < st->nthrds; i++) { if (bad_primes[i] == 0) { if (rerun == 0) { mcheck = check_param_modular(*mpz_paramp, nmod_params[i], lp->p[i], is_lifted, check_lift, trace_det, info_level); + if (is_lifted[0] == 0) { + /* elim is wrong: the common denominator found by the vector + witnesses is discarded */ + vec_wit->state = 0; + } } else{ check_elim_poly(nmod_params[i]->elim, lp->p[i], numer->coeffs, denom->coeffs, check_lift); @@ -2694,13 +3434,14 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, crr = realtime(); if (mcheck == 1) { br = rational_reconstruction_param( - *mpz_paramp, tmp_mpz_param, nmod_params[i], + *mpz_paramp, images, vec_wit, nmod_params[i], bnlins[i], blinvars[i], lineqs_ptr[i], - trace_det, bmatrix[i], numer, + trace_det, dense ? dmat : bmatrix[i], numer, denom, check_lift, modulus, prod_crt, lp->p[i], &result, rnum, rden, recdata, guessed_num, guessed_den, &maxrec, &matrec, &oldmatrec_checked, &matrec_checked, is_lifted, - &mat_lifted, &lin_lifted, doit, nbdoit, st->nthrds, info_level); + &mat_lifted, &lin_lifted, doit && (int32_t)i == lastgood, nbdoit, + st->nthrds, info_level); if (br == 1) { rerun = 0; @@ -2722,22 +3463,37 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, blens_extra_nf, bexps_extra_nf, bcfs_extra_nf, bdata_fglm, bdata_bms, num_gb, leadmons_ori, leadmons_current, bnlins, blinvars, linvars, lineqs_ptr, bsquvars, squvars, lmb_ori, field_char); - free_msolve_trace_qq_secondary_data(tmp_mpz_param, trace_det, modulus, + vec_wit_clear(vec_wit); + param_images_clear(images); + free_msolve_trace_qq_secondary_data(trace_det, modulus, prod_crt, result, test, rnum, rden, numer, denom, check_lift, guessed_num, guessed_den, is_lifted, recdata); + sep_dense_clear(&sd); + free(dmat); + if (split) { + split_data_clear(&sp); + } return -4; } } } strat += scrr; - double t = ((double)nbdoit) * ca1; - if ((t == 0) || (scrr >= 0.2 * t && br == 0)) { - nbdoit = 2 * nbdoit; + /* rational reconstruction is called every nbdoit iterations, i.e. + * about every rr primes, rr being the largest power of 2 + * <= nprimes / RR_PERIOD_DIV; the period depends only on the number of + * primes (not on timings) so that the number of primes used is + * reproducible */ + int32_t rr = 1; + while (2 * rr <= nprimes / RR_PERIOD_DIV) { + rr *= 2; + } + rr = MAX(1, rr / st->nthrds); + if (rr != nbdoit) { + nbdoit = rr; lpow2 = 2 * nprimes; - doit = 0; if (info_level) { - fprintf(VERBSTREAM, "\n", nbdoit, scrr, t); + fprintf(VERBSTREAM, "\n", nbdoit); fflush(VERBSTREAM); } } @@ -2783,9 +3539,16 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp, blens_extra_nf, bexps_extra_nf, bcfs_extra_nf, bdata_fglm, bdata_bms, num_gb, leadmons_ori, leadmons_current, bnlins, blinvars, linvars, lineqs_ptr, bsquvars, squvars, lmb_ori, field_char); - free_msolve_trace_qq_secondary_data(tmp_mpz_param, trace_det, modulus, + vec_wit_clear(vec_wit); + param_images_clear(images); + free_msolve_trace_qq_secondary_data(trace_det, modulus, prod_crt, result, test, rnum, rden, numer, denom, check_lift, guessed_num, guessed_den, is_lifted, recdata); + sep_dense_clear(&sd); + free(dmat); + if (split) { + split_data_clear(&sp); + } return 0; } @@ -3729,6 +4492,85 @@ void isolate_real_roots_lparam(mpz_param_array_t lparams, long **lnbr_ptr, (*lreal_pts_ptr) = lreal_pts; } +/* roots of eliminating polynomials, compared by their left ends */ +static const interval *split_roots_cmp_tab; + +static int split_roots_cmp(const void *a, const void *b) { + const interval *ra = split_roots_cmp_tab + *(const long *)a; + const interval *rb = split_roots_cmp_tab + *(const long *)b; + mpz_t na, nb; + mpz_init(na); + mpz_init(nb); + const long k = MAX(ra->k, rb->k); + mpz_mul_2exp(na, ra->numer, k - ra->k); + mpz_mul_2exp(nb, rb->numer, k - rb->k); + const int c = mpz_cmp(na, nb); + mpz_clear(na); + mpz_clear(nb); + return c; +} + +/* isolates the real roots of the components of the solution set (see + * splitting.c) one by one; the points are sorted by the values of the + * separating element */ +static real_point_t *split_isolate_real_roots(const mpz_param_array_struct *params, + long *nb_real_roots_ptr, + interval **real_roots_ptr, + int32_t precision, + int32_t nr_threads, int to_split, + int32_t info_level) { + double rt = realtime(); + const long nc = params->nb; + long *lnb = malloc(nc * sizeof(long)); + interval **lroots = malloc(nc * sizeof(interval *)); + real_point_t **lpts = malloc(nc * sizeof(real_point_t *)); + long nb = 0; + for (long i = 0; i < nc; i++) { + lpts[i] = isolate_real_roots_param(params->params[i], lnb + i, lroots + i, + precision, nr_threads, to_split, 0); + nb += lnb[i]; + } + interval *roots = malloc(MAX(nb, 1) * sizeof(interval)); + real_point_t *pts = NULL; + if (nb > 0) { + interval *tmp_roots = malloc(nb * sizeof(interval)); + real_point_t *tmp_pts = malloc(nb * sizeof(real_point_t)); + long *idx = malloc(nb * sizeof(long)); + long n = 0; + for (long i = 0; i < nc; i++) { + for (long j = 0; j < lnb[i]; j++, n++) { + tmp_roots[n] = lroots[i][j]; + memcpy(tmp_pts[n], lpts[i][j], sizeof(real_point_t)); + idx[n] = n; + } + } + split_roots_cmp_tab = tmp_roots; + qsort(idx, nb, sizeof(long), split_roots_cmp); + pts = malloc(nb * sizeof(real_point_t)); + for (long i = 0; i < nb; i++) { + roots[i] = tmp_roots[idx[i]]; + memcpy(pts[i], tmp_pts[idx[i]], sizeof(real_point_t)); + } + free(idx); + free(tmp_roots); + free(tmp_pts); + } + for (long i = 0; i < nc; i++) { + free(lroots[i]); + free(lpts[i]); + } + free(lnb); + free(lroots); + free(lpts); + if (info_level) { + fprintf(VERBSTREAM, "Real roots of the %ld components: %ld real roots " + "(%.2f sec)\n", nc, nb, realtime() - rt); + } + *nb_real_roots_ptr = nb; + *real_roots_ptr = roots; + return pts; +} + int real_msolve_qq(mpz_param_t *mpz_paramp, param_t **nmod_param, int *dim_ptr, long *dquot_ptr, int *minpolydeg_ptr, int* is0dim_ptr, long *nb_real_roots_ptr, @@ -3820,9 +4662,15 @@ int real_msolve_qq(mpz_param_t *mpz_paramp, param_t **nmod_param, int *dim_ptr, if (b == 0 && *dim_ptr == 0 && *dquot_ptr > 0 && gens->field_char == 0) { - pts = - isolate_real_roots_param(*mpz_paramp, nb_real_roots_ptr, real_roots_ptr, - precision, nr_threads, to_split, info_level); + if (gens->split_params.nb > 0) { + pts = split_isolate_real_roots(&(gens->split_params), nb_real_roots_ptr, + real_roots_ptr, precision, nr_threads, + to_split, info_level); + } else { + pts = isolate_real_roots_param(*mpz_paramp, nb_real_roots_ptr, + real_roots_ptr, precision, nr_threads, + to_split, info_level); + } int32_t nb = *nb_real_roots_ptr; if (nb) { @@ -3831,6 +4679,8 @@ int real_msolve_qq(mpz_param_t *mpz_paramp, param_t **nmod_param, int *dim_ptr, if (gens->linear_form_base_coef > 0) { for (long i = 0; i < nb; ++i) { pts[i]->nvars--; + mpz_clear(pts[i]->coords[pts[i]->nvars]->val_up); + mpz_clear(pts[i]->coords[pts[i]->nvars]->val_do); } } /* If we changed the variable order for genericity reasons we have @@ -5232,6 +6082,9 @@ int core_msolve( free(param); param = NULL; if (genericity_handling > 0) { + if (apply_separating_element(gens, info_level)) { + goto restart; + } if (change_variable_order_in_input_system(gens, info_level)) { goto restart; } diff --git a/src/msolve/separating.c b/src/msolve/separating.c new file mode 100644 index 00000000..87a23854 --- /dev/null +++ b/src/msolve/separating.c @@ -0,0 +1,819 @@ +/* This file is part of msolve. + * + * msolve is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * msolve is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with msolve. If not, see + * + * Authors: + * Jérémy Berthomieu + * Christian Eder + * Mohab Safey El Din */ + +/* Search for a separating element of a zero-dimensional ideal from one + * reduced DRL Groebner basis modulo a prime. + * + * The multiplication matrices by all variables are built from the normal + * forms of the border monomials, computed by increasing DRL order. The + * degree of the minimal polynomial of each multiplication matrix is + * computed with a Wiedemann sequence and Berlekamp-Massey. The target is + * the degree dgen of the minimal polynomial of a random linear form + * (dquot for a radical ideal): a linear form reaching it separates the + * solutions, and has at each of them the largest nilpotency index, which + * sep_dense_param needs. A variable reaching dgen is separating. If there + * is none, a linear form sum c_i x_i is built greedily, taking the + * variables by decreasing degree of their minimal polynomials, and the + * smallest variable first for equal degrees. For a radical ideal, this + * degree is the number of values taken on the solutions. The first + * variable gets coefficient 1. Each next variable x_v gets the smallest + * c_v >= 1 such that the form reaches the degree of the pair (form, x_v), + * which is the degree for a coefficient of x_v chosen at random, or 0 if + * x_v does not increase the degree. For a radical ideal, a coefficient + * fails only if it merges two solutions separated by (form, x_v), so at + * most dquot (dquot - 1) / 2 of them fail, and the degree is dquot after + * the last variable. The construction stops once the degree is dgen, the + * remaining coefficients being 0. As a safeguard, c_v is at most dquot; + * if no c_v reaches the target, the best one is kept. The search is + * deterministic: it only depends on the Groebner basis and the prime. */ + +#include +#include + + +/* hash table of exponent vectors */ +typedef struct { + int32_t nv; + long nelts; + long size; /* power of 2 */ + long *tab; /* -1 if empty, index in exps otherwise */ + int32_t *exps; /* nelts * nv, not owned */ +} sep_hash_t; + +static inline uint64_t sep_hash_exp(const int32_t *e, int32_t nv) { + uint64_t h = 1469598103934665603ULL; + for (int32_t k = 0; k < nv; k++) { + h ^= (uint64_t)(uint32_t)e[k]; + h *= 1099511628211ULL; + } + return h ^ (h >> 29); +} + +static void sep_hash_init(sep_hash_t *H, int32_t *exps, long nelts, + int32_t nv) { + H->nv = nv; + H->nelts = nelts; + H->exps = exps; + H->size = 16; + while (H->size < 2 * nelts + 16) { + H->size *= 2; + } + H->tab = malloc(H->size * sizeof(long)); + for (long i = 0; i < H->size; i++) { + H->tab[i] = -1; + } + for (long i = 0; i < nelts; i++) { + uint64_t h = sep_hash_exp(exps + i * nv, nv) & (H->size - 1); + while (H->tab[h] != -1) { + h = (h + 1) & (H->size - 1); + } + H->tab[h] = i; + } +} + +static long sep_hash_find(const sep_hash_t *H, const int32_t *e) { + uint64_t h = sep_hash_exp(e, H->nv) & (H->size - 1); + while (H->tab[h] != -1) { + if (memcmp(H->exps + H->tab[h] * H->nv, e, H->nv * sizeof(int32_t)) == 0) { + return H->tab[h]; + } + h = (h + 1) & (H->size - 1); + } + return -1; +} + +static int32_t sep_cmp_nv; + +/* increasing DRL order, the first variable being the largest one */ +static int sep_cmp_drl(const void *a, const void *b) { + const int32_t *ea = a, *eb = b; + int32_t da = 0, db = 0; + for (int32_t k = 0; k < sep_cmp_nv; k++) { + da += ea[k]; + db += eb[k]; + } + if (da != db) { + return da < db ? -1 : 1; + } + for (int32_t k = sep_cmp_nv - 1; k >= 0; k--) { + if (ea[k] != eb[k]) { + return ea[k] > eb[k] ? -1 : 1; + } + } + return 0; +} + +/* degree of the minimal polynomial of the dense dquot x dquot matrix mat + * (row major), computed from a Wiedemann sequence of length 2 dquot */ +static long sep_minpoly_degree(const mp_limb_t *mat, long D, const mp_limb_t *u, + const mp_limb_t *r, nmod_t mod, + mp_limb_t *x, mp_limb_t *y, mp_limb_t *seq, + mp_limb_t *C, mp_limb_t *B, mp_limb_t *T) { + const long len = 2 * D; + memcpy(x, r, D * sizeof(mp_limb_t)); + for (long k = 0; k < len; k++) { + unsigned __int128 acc = 0; + for (long i = 0; i < D; i++) { + acc += (unsigned __int128)u[i] * x[i]; + } + seq[k] = (mp_limb_t)(acc % mod.n); + if (k == len - 1) { + break; + } + for (long i = 0; i < D; i++) { + const mp_limb_t *row = mat + i * D; + unsigned __int128 a = 0; + for (long j = 0; j < D; j++) { + a += (unsigned __int128)row[j] * x[j]; + } + y[i] = (mp_limb_t)(a % mod.n); + } + mp_limb_t *tmp = x; + x = y; + y = tmp; + } + /* Berlekamp-Massey; the recurrence has degree at most D */ + long L = 0, m = 1; + mp_limb_t b = 1; + memset(C, 0, (D + 1) * sizeof(mp_limb_t)); + memset(B, 0, (D + 1) * sizeof(mp_limb_t)); + C[0] = B[0] = 1; + for (long n = 0; n < len; n++) { + mp_limb_t d = seq[n]; + for (long k = 1; k <= L; k++) { + d = nmod_add(d, nmod_mul(C[k], seq[n - k], mod), mod); + } + if (d == 0) { + m++; + continue; + } + const mp_limb_t coef = nmod_mul(d, n_invmod(b, mod.n), mod); + const int update = (2 * L <= n); + if (update) { + memcpy(T, C, (D + 1) * sizeof(mp_limb_t)); + } + for (long k = 0; k + m <= D; k++) { + if (B[k]) { + C[k + m] = nmod_sub(C[k + m], nmod_mul(coef, B[k], mod), mod); + } + } + if (update) { + L = n + 1 - L; + memcpy(B, T, (D + 1) * sizeof(mp_limb_t)); + b = d; + m = 1; + } else { + m++; + } + } + return L; +} + + +/* normal forms of the products of the staircase monomials by the + * variables, from a reduced DRL Groebner basis modulo a prime */ +typedef struct { + int32_t nv; + long D; + nmod_t mod; + long nbd; /* number of border monomials */ + long *target; /* target[i * nv + v]: index of lmb[i] * x_v in the + staircase, or -(index in the border) - 1 */ + mp_limb_t **nf; /* normal forms of the border monomials */ + mp_limb_t *nfdata; + long idx0; /* index of 1 in the staircase */ +} sep_mulmat_t; + +static void sep_mulmat_clear(sep_mulmat_t *mm) { + free(mm->target); + free(mm->nf); + free(mm->nfdata); + mm->target = NULL; + mm->nf = NULL; + mm->nfdata = NULL; +} + +/* returns 1 on success, 0 otherwise (mm is then cleared) */ +static int sep_mulmat_init(sep_mulmat_t *mm, bs_t *bs, int32_t *lmb, long D, + uint32_t fc) { + const ht_t *ht = bs->ht; + const int32_t nv = ht->nv; + const len_t ebl = ht->ebl; + const len_t evl = ht->evl; + + mm->nv = nv; + mm->D = D; + mm->nbd = 0; + mm->target = NULL; + mm->nf = NULL; + mm->nfdata = NULL; + mm->idx0 = -1; + if (bs->cf_32 == NULL || ebl != 0 || D < 2) { + return 0; + } + nmod_init(&mm->mod, fc); + const nmod_t mod = mm->mod; + + /* Groebner basis elements, monic */ + const long ngb = bs->lml; + long nterms = 0; + for (long i = 0; i < ngb; i++) { + nterms += bs->hm[bs->lmps[i]][LENGTH]; + } + int32_t *gexps = malloc(nterms * nv * sizeof(int32_t)); + mp_limb_t *gcfs = malloc(nterms * sizeof(mp_limb_t)); + long *gstart = malloc((ngb + 1) * sizeof(long)); + int32_t *lms = malloc(ngb * nv * sizeof(int32_t)); + long pos = 0; + for (long i = 0; i < ngb; i++) { + const bl_t bi = bs->lmps[i]; + const long len = bs->hm[bi][LENGTH]; + const hm_t *dt = bs->hm[bi] + OFFSET; + const cf32_t *cf = bs->cf_32[bs->hm[bi][COEFFS]]; + const mp_limb_t inv = n_invmod(cf[0], fc); + gstart[i] = pos; + for (long j = 0; j < len; j++) { + int32_t *e = gexps + (pos + j) * nv; + long ce = 0; + for (len_t k = 1; k < ebl; ++k) { + e[ce++] = (int32_t)ht->ev[dt[j]][k]; + } + for (len_t k = ebl + 1; k < evl; ++k) { + e[ce++] = (int32_t)ht->ev[dt[j]][k]; + } + gcfs[pos + j] = nmod_mul(cf[j], inv, mod); + } + memcpy(lms + i * nv, gexps + pos * nv, nv * sizeof(int32_t)); + pos += len; + } + gstart[ngb] = pos; + + sep_hash_t Hb, Hlm, Hbd; + sep_hash_init(&Hb, lmb, D, nv); + sep_hash_init(&Hlm, lms, ngb, nv); + + int32_t *e = calloc(nv, sizeof(int32_t)); + mm->idx0 = sep_hash_find(&Hb, e); + + /* border monomials */ + long nbd = 0, abd = D * nv; + int32_t *bd = malloc(abd * nv * sizeof(int32_t)); + for (long i = 0; i < D; i++) { + for (int32_t v = 0; v < nv; v++) { + memcpy(e, lmb + i * nv, nv * sizeof(int32_t)); + e[v]++; + if (sep_hash_find(&Hb, e) < 0) { + memcpy(bd + nbd * nv, e, nv * sizeof(int32_t)); + nbd++; + } + } + } + sep_cmp_nv = nv; + qsort(bd, nbd, nv * sizeof(int32_t), sep_cmp_drl); + long k = 0; + for (long i = 0; i < nbd; i++) { + if (k == 0 || memcmp(bd + (k - 1) * nv, bd + i * nv, nv * sizeof(int32_t))) { + memmove(bd + k * nv, bd + i * nv, nv * sizeof(int32_t)); + k++; + } + } + nbd = k; + mm->nbd = nbd; + sep_hash_init(&Hbd, bd, nbd, nv); + + long *target = malloc(D * nv * sizeof(long)); + for (long i = 0; i < D; i++) { + for (int32_t v = 0; v < nv; v++) { + memcpy(e, lmb + i * nv, nv * sizeof(int32_t)); + e[v]++; + long t = sep_hash_find(&Hb, e); + target[i * nv + v] = t >= 0 ? t : -sep_hash_find(&Hbd, e) - 1; + } + } + mm->target = target; + + /* normal forms of the border monomials, by increasing DRL order */ + mp_limb_t **nf = malloc(nbd * sizeof(mp_limb_t *)); + mp_limb_t *nfdata = calloc(nbd * D, sizeof(mp_limb_t)); + mm->nf = nf; + mm->nfdata = nfdata; + int ok = mm->idx0 >= 0; + for (long s = 0; s < nbd && ok; s++) { + nf[s] = nfdata + s * D; + const int32_t *t = bd + s * nv; + long g = sep_hash_find(&Hlm, t); + if (g >= 0) { + for (long j = gstart[g] + 1; j < gstart[g + 1]; j++) { + long idx = sep_hash_find(&Hb, gexps + j * nv); + if (idx < 0) { + ok = 0; + break; + } + nf[s][idx] = nmod_neg(gcfs[j], mod); + } + continue; + } + /* t = x_j t' with t' in the border, t' < t */ + long sp = -1; + int32_t j; + for (j = 0; j < nv; j++) { + if (t[j] == 0) { + continue; + } + memcpy(e, t, nv * sizeof(int32_t)); + e[j]--; + if (sep_hash_find(&Hb, e) < 0 && (sp = sep_hash_find(&Hbd, e)) >= 0) { + break; + } + } + if (sp < 0 || sp >= s) { + ok = 0; + break; + } + for (long i = 0; i < D; i++) { + const mp_limb_t w = nf[sp][i]; + if (w == 0) { + continue; + } + const long tg = target[i * nv + j]; + if (tg >= 0) { + nf[s][tg] = nmod_add(nf[s][tg], w, mod); + } else if (-tg - 1 >= s) { + ok = 0; + break; + } else { + _nmod_vec_scalar_addmul_nmod(nf[s], nf[-tg - 1], D, w, mod); + } + } + } + free(e); + free(bd); + free(Hb.tab); + free(Hlm.tab); + free(Hbd.tab); + free(lms); + free(gstart); + free(gcfs); + free(gexps); + if (!ok) { + sep_mulmat_clear(mm); + } + return ok; +} + +/* builds the dense matrix of the multiplication by sum c[v] x_v, + * with 0 <= c[v] < mod.n */ +static void sep_form_matrix(mp_limb_t *mat, const int32_t *c, + const sep_mulmat_t *mm) { + const long D = mm->D; + const int32_t nv = mm->nv; + const nmod_t mod = mm->mod; + memset(mat, 0, D * D * sizeof(mp_limb_t)); + for (long i = 0; i < D; i++) { + for (int32_t v = 0; v < nv; v++) { + if (c[v] == 0) { + continue; + } + const mp_limb_t cv = (mp_limb_t)c[v]; + const long t = mm->target[i * nv + v]; + if (t >= 0) { + mat[t * D + i] = nmod_add(mat[t * D + i], cv, mod); + } else { + const mp_limb_t *col = mm->nf[-t - 1]; + for (long k = 0; k < D; k++) { + mat[k * D + i] = nmod_add(mat[k * D + i], nmod_mul(cv, col[k], mod), mod); + } + } + } + } +} + +/* Parametrization of the radical of the ideal w.r.t. the separating + * linear form t = -sum c[v] x_v, without FGLM (t is the extra variable A + * of the linear form A + sum c[v] x_v added to the system). With M the + * dense matrix of the multiplication by t, u a random row vector and + * w_j = u M^j, the minimal polynomial P of M is the one of + * s_j = w_j[1] (j < 2 dquot), and the eliminating polynomial is its + * squarefree part Q. With s_j^(v) = w_j . NF(x_v) (j < dquot) and N_v the + * polynomial part of P(T) sum_j s_j^(v) T^(-j-1), one has + * x_v = N_v / N_1 mod Q: at a root of Q of multiplicity m in P, the + * coefficients of 1 / (T - t(z))^m in the generating series give + * N_v / N_1 = x_v(z), as soon as (t - t(z))^(m-1) kills the maximal ideal + * of the local algebra at z, i.e. P has the degree of the minimal + * polynomial of a generic linear form. param has nv + 1 variables, the + * last one being t; as with FGLM, its coordinates are the opposites of + * the x_v and its denominator is 1. + * Returns 0 on success, 1 if the prime is bad, that is, if P and Q do not + * have degrees degelim and degsqfr. */ +static int sep_dense_param(param_t *param, const sep_mulmat_t *mm, + const int32_t *c, long degelim, long degsqfr) { + const long D = mm->D; + const int32_t nv = mm->nv; + const nmod_t mod = mm->mod; + const long len = 2 * D; + const long *target = mm->target; + + /* mt[i * D + k]: coefficient of the k-th staircase monomial in + * NF(t lmb[i]), i.e. M transposed, so that w M is computed with + * contiguous dot products */ + mp_limb_t *mt = calloc((size_t)D * D, sizeof(mp_limb_t)); + for (long i = 0; i < D; i++) { + for (int32_t v = 0; v < nv; v++) { + if (c[v] == 0) { + continue; + } + const mp_limb_t cv = nmod_neg((mp_limb_t)c[v] % mod.n, mod); + const long t = target[i * nv + v]; + if (t >= 0) { + mt[i * D + t] = nmod_add(mt[i * D + t], cv, mod); + } else { + _nmod_vec_scalar_addmul_nmod(mt + i * D, mm->nf[-t - 1], D, cv, mod); + } + } + } + /* own generator: do not perturb rand() */ + uint64_t state = 0x2545F4914F6CDD1DULL ^ mod.n; + mp_limb_t *w = malloc(D * sizeof(mp_limb_t)); + mp_limb_t *w2 = malloc(D * sizeof(mp_limb_t)); + for (long i = 0; i < D; i++) { + state = state * 6364136223846793005ULL + 1442695040888963407ULL; + w[i] = (state >> 33) % mod.n; + } + mp_limb_t *seq = malloc(len * sizeof(mp_limb_t)); + mp_limb_t *seqx = malloc((size_t)nv * D * sizeof(mp_limb_t)); + const long idx0 = mm->idx0; + dot_params_t params = _nmod_vec_dot_params(D, mod); + for (long j = 0; j < len; j++) { + seq[j] = w[idx0]; + if (j < D) { + for (int32_t v = 0; v < nv; v++) { + const long t = target[idx0 * nv + v]; + seqx[v * D + j] = t >= 0 ? w[t] + : _nmod_vec_dot(w, mm->nf[-t - 1], D, mod, params); + } + } + if (j == len - 1) { + break; + } + for (long i = 0; i < D; i++) { + w2[i] = _nmod_vec_dot(mt + i * D, w, D, mod, params); + } + mp_limb_t *tmp = w; + w = w2; + w2 = tmp; + } + free(mt); + free(w); + free(w2); + + int bad = 1; + nmod_berlekamp_massey_t BM; + nmod_berlekamp_massey_init(BM, mod.n); + nmod_berlekamp_massey_add_points(BM, seq, len); + nmod_berlekamp_massey_reduce(BM); + nmod_poly_t P, Q, N, inv; + nmod_poly_init(P, mod.n); + nmod_poly_init(Q, mod.n); + nmod_poly_init(N, mod.n); + nmod_poly_init(inv, mod.n); + nmod_poly_make_monic(P, nmod_berlekamp_massey_V_poly(BM)); + const long d = nmod_poly_degree(P); + /* squarefree part, d < mod.n */ + nmod_poly_derivative(N, P); + nmod_poly_gcd(inv, P, N); + nmod_poly_div(Q, P, inv); + mp_limb_t *rev = malloc(D * sizeof(mp_limb_t)); + if (d == degelim && nmod_poly_degree(Q) == degsqfr) { + fglm_param_set_prime(param, mod.n); + bad = 0; + /* N(T) = sum_{m < d} (sum_{j < d - m} p_{m + 1 + j} s_j) T^m */ + for (int32_t v = -1; v < nv && !bad; v++) { + const mp_limb_t *s = v < 0 ? seq : seqx + v * D; + nmod_poly_fit_length(N, d); + for (long m = 0; m < d; m++) { + for (long j = 0; j < d - m; j++) { + rev[j] = P->coeffs[m + 1 + j]; + } + N->coeffs[m] = _nmod_vec_dot(rev, s, d - m, mod, params); + } + _nmod_poly_set_length(N, d); + _nmod_poly_normalise(N); + nmod_poly_rem(N, N, Q); + if (v < 0) { + bad = !nmod_poly_invmod(inv, N, Q); + } else { + nmod_poly_mulmod(param->coords[v], N, inv, Q); + nmod_poly_neg(param->coords[v], param->coords[v]); + } + } + if (!bad) { + nmod_poly_set(param->elim, Q); + nmod_poly_one(param->denom); + param->degelimpol = d; + param->degsqfrelimpol = degsqfr; + } + } + free(rev); + nmod_poly_clear(P); + nmod_poly_clear(Q); + nmod_poly_clear(N); + nmod_poly_clear(inv); + nmod_berlekamp_massey_clear(BM); + free(seq); + free(seqx); + return bad; +} + +/* Degrees of the minimal polynomials of linear forms, for the search + * below. In general, the dense matrix of the form is built, and the degree + * comes from a Wiedemann sequence: O(dquot^3) per form. For a radical + * ideal, a random form separates the solutions, and its parametrization + * x_v = X_v(t) mod Q (see sep_dense_param) is computed once: the degree + * for sum c[v] x_v is then the one of the minimal polynomial of + * a = sum c[v] X_v in F_p[t]/(Q), from the sequence l(a^k), k < 2 dquot, + * with O(dquot) products modulo Q. Both are the number of values of the + * form at the solutions, up to an unlucky choice of the projections. */ +typedef struct { + const sep_mulmat_t *mm; + mp_limb_t *mat, *u, *r, *x, *y, *seq, *C, *B, *T; + param_t *par; /* NULL: dense matrices */ + nmod_poly_t Qinv; /* inverse of the reverse of Q, for mulmod_preinv */ + mp_limb_t *l; /* random projection */ +} sep_degree_t; + +static long sep_degree(sep_degree_t *sd, const int32_t *c) { + const sep_mulmat_t *mm = sd->mm; + const long D = mm->D; + const nmod_t mod = mm->mod; + if (sd->par == NULL) { + sep_form_matrix(sd->mat, c, mm); + return sep_minpoly_degree(sd->mat, D, sd->u, sd->r, mod, sd->x, sd->y, + sd->seq, sd->C, sd->B, sd->T); + } + const param_t *par = sd->par; + const long d = nmod_poly_degree(par->elim); + nmod_poly_t a, pw; + nmod_poly_init(a, mod.n); + nmod_poly_init(pw, mod.n); + for (int32_t v = 0; v < mm->nv; v++) { + if (c[v] != 0) { + /* X_v = -coords[v] */ + nmod_poly_scalar_mul_nmod(pw, par->coords[v], + nmod_neg((mp_limb_t)c[v] % mod.n, mod)); + nmod_poly_add(a, a, pw); + } + } + nmod_poly_one(pw); + for (long k = 0; k < 2 * d; k++) { + sd->seq[k] = _nmod_vec_dot(sd->l, pw->coeffs, pw->length, mod, + _nmod_vec_dot_params(pw->length, mod)); + if (k < 2 * d - 1) { + nmod_poly_mulmod_preinv(pw, pw, a, par->elim, sd->Qinv); + } + } + nmod_berlekamp_massey_t BM; + nmod_berlekamp_massey_init(BM, mod.n); + nmod_berlekamp_massey_add_points(BM, sd->seq, 2 * d); + nmod_berlekamp_massey_reduce(BM); + const long deg = nmod_poly_degree(nmod_berlekamp_massey_V_poly(BM)); + nmod_berlekamp_massey_clear(BM); + nmod_poly_clear(a); + nmod_poly_clear(pw); + return deg; +} + +/* switches sd to the parametrization of the random form c, which + * separates the solutions of a radical ideal; keeps the dense matrices if + * it fails */ +static void sep_degree_set_param(sep_degree_t *sd, const int32_t *c) { + const sep_mulmat_t *mm = sd->mm; + const long D = mm->D; + param_t *par = allocate_fglm_param(mm->mod.n, mm->nv + 1); + if (sep_dense_param(par, mm, c, D, D)) { + free_fglm_param(par); + return; + } + sd->par = par; + nmod_poly_t rev; + nmod_poly_init(rev, mm->mod.n); + nmod_poly_init(sd->Qinv, mm->mod.n); + nmod_poly_reverse(rev, par->elim, par->elim->length); + nmod_poly_inv_series(sd->Qinv, rev, par->elim->length); + nmod_poly_clear(rev); + sd->l = malloc(D * sizeof(mp_limb_t)); + /* own generator: do not perturb rand() */ + uint64_t state = 0x6A09E667F3BCC909ULL ^ mm->mod.n; + for (long i = 0; i < D; i++) { + state = state * 6364136223846793005ULL + 1442695040888963407ULL; + sd->l[i] = (state >> 33) % mm->mod.n; + } +} + +/* returns 0 if nothing was found, 1 if variable *sep_var is separating, + * 2 if the linear form sep_form (nv coefficients) is separating */ +static int find_separating_element(bs_t *bs, int32_t *lmb, long D, + uint32_t fc, int32_t *sep_var, + int32_t *sep_form, int32_t *nsols, + int32_t info_level) { + double rt = realtime(); + int ret = 0; + + sep_mulmat_t mm; + int ok = sep_mulmat_init(&mm, bs, lmb, D, fc); + if (mm.nbd == 0) { + return 0; + } + const int32_t nv = mm.nv; + if (info_level > 0) { + fprintf(VERBSTREAM, "\nSearching for a separating element: %ld border monomials, " + "multiplication matrices in %.2f sec\n", mm.nbd, realtime() - rt); + } + + if (ok) { + const nmod_t mod = mm.mod; + mp_limb_t *mat = malloc(D * D * sizeof(mp_limb_t)); + mp_limb_t *u = malloc(D * sizeof(mp_limb_t)); + mp_limb_t *r = malloc(D * sizeof(mp_limb_t)); + mp_limb_t *x = malloc(D * sizeof(mp_limb_t)); + mp_limb_t *y = malloc(D * sizeof(mp_limb_t)); + mp_limb_t *seq = malloc(2 * D * sizeof(mp_limb_t)); + mp_limb_t *C = malloc((D + 1) * sizeof(mp_limb_t)); + mp_limb_t *B = malloc((D + 1) * sizeof(mp_limb_t)); + mp_limb_t *T = malloc((D + 1) * sizeof(mp_limb_t)); + /* own generator: do not perturb rand() */ + uint64_t state = 0x9E3779B97F4A7C15ULL ^ fc; + for (long i = 0; i < D; i++) { + state = state * 6364136223846793005ULL + 1442695040888963407ULL; + u[i] = (state >> 33) % fc; + state = state * 6364136223846793005ULL + 1442695040888963407ULL; + r[i] = (state >> 33) % fc; + } + int32_t *c = calloc(nv, sizeof(int32_t)); + long deg; + + /* the minimal polynomial of a dense random form gives the degree to + * reach: dquot for a radical ideal; a form reaching it separates the + * solutions and has the generic nilpotency index at each of them (see + * sep_dense_param) */ + for (int32_t v = 0; v < nv; v++) { + state = state * 6364136223846793005ULL + 1442695040888963407ULL; + c[v] = 1 + (int32_t)((state >> 33) % (fc - 1)); + } + sep_form_matrix(mat, c, &mm); + deg = sep_minpoly_degree(mat, D, u, r, mod, x, y, seq, C, B, T); + const long dgen = deg; + { + /* number of distinct solutions */ + nmod_berlekamp_massey_t BM; + nmod_poly_t P, dP, G; + nmod_berlekamp_massey_init(BM, fc); + nmod_berlekamp_massey_add_points(BM, seq, 2 * D); + nmod_berlekamp_massey_reduce(BM); + nmod_poly_init(dP, fc); + nmod_poly_init(G, fc); + nmod_poly_init(P, fc); + nmod_poly_set(P, nmod_berlekamp_massey_V_poly(BM)); + nmod_poly_derivative(dP, P); + nmod_poly_gcd(G, P, dP); + *nsols = (int32_t)(nmod_poly_degree(P) - nmod_poly_degree(G)); + nmod_poly_clear(P); + nmod_poly_clear(dP); + nmod_poly_clear(G); + nmod_berlekamp_massey_clear(BM); + } + if (info_level > 0) { + fprintf(VERBSTREAM, "random linear form: minimal polynomial of degree %ld, " + "squarefree part of degree %d (dimension %ld)\n", dgen, *nsols, D); + } + sep_degree_t sd = {&mm, mat, u, r, x, y, seq, C, B, T, NULL, {{0}}, NULL}; + if (dgen == D && *nsols == D) { + sep_degree_set_param(&sd, c); + } + long *degv = calloc(nv, sizeof(long)); + if (dgen > 0) { + for (int32_t v = 0; v < nv && ret == 0; v++) { + memset(c, 0, nv * sizeof(int32_t)); + c[v] = 1; + deg = sep_degree(&sd, c); + degv[v] = deg; + if (info_level > 1) { + fprintf(VERBSTREAM, " variable %d: degree %ld\n", v + 1, deg); + } + if (deg == dgen) { + *sep_var = v; + ret = 1; + } + } + long ntested = 0; + if (ret == 0 && nv > 1) { + /* greedy construction, variables by decreasing degree and, for + * equal degrees, from the smallest to the largest one */ + int32_t *ord = malloc(nv * sizeof(int32_t)); + for (int32_t v = 0; v < nv; v++) { + ord[v] = nv - 1 - v; + } + for (int32_t i = 1; i < nv; i++) { + const int32_t w = ord[i]; + int32_t j = i; + while (j > 0 && degv[ord[j - 1]] < degv[w]) { + ord[j] = ord[j - 1]; + j--; + } + ord[j] = w; + } + memset(c, 0, nv * sizeof(int32_t)); + c[ord[0]] = 1; + long dcur = degv[ord[0]]; + for (int32_t i = 1; i < nv && dcur < dgen; i++) { + const int32_t v = ord[i]; + /* number of values of (form, x_v): degree of form + rnd x_v */ + state = state * 6364136223846793005ULL + 1442695040888963407ULL; + c[v] = 1 + (int32_t)((state >> 33) % (fc - 1)); + const long tgt = sep_degree(&sd, c); + ntested++; + /* smallest coefficient reaching tgt; there are at most + * dquot (dquot - 1) / 2 coefficients that do not, but stop at + * dquot and keep the best one if it increases the degree, + * else 0 */ + int32_t best = 0; + long dbest = dcur; + for (int32_t cv = 1; cv <= D && tgt > dcur; cv++) { + c[v] = cv; + deg = sep_degree(&sd, c); + ntested++; + if (deg > dbest) { + best = cv; + dbest = deg; + } + if (deg >= tgt) { + break; + } + } + c[v] = best; + dcur = dbest; + if (info_level > 1) { + fprintf(VERBSTREAM, " coefficient %d on variable %d: degree %ld (target %ld)\n", + best, v + 1, dcur, tgt); + } + } + free(ord); + if (dcur == dgen) { + memcpy(sep_form, c, nv * sizeof(int32_t)); + ret = 2; + } + } + if (info_level > 0) { + if (ret == 1) { + fprintf(VERBSTREAM, "variable %d is separating\n", *sep_var + 1); + } else if (ret == 2) { + fprintf(VERBSTREAM, "separating linear form after %ld forms:", ntested); + for (int32_t v = 0; v < nv; v++) { + fprintf(VERBSTREAM, " %d", sep_form[v]); + } + fprintf(VERBSTREAM, "\n"); + } else { + fprintf(VERBSTREAM, "no separating element found (%ld forms tested)\n", + ntested); + } + } + } + if (sd.par != NULL) { + free_fglm_param(sd.par); + nmod_poly_clear(sd.Qinv); + free(sd.l); + } + free(degv); + free(c); + free(mat); + free(u); + free(r); + free(x); + free(y); + free(seq); + free(C); + free(B); + free(T); + sep_mulmat_clear(&mm); + } + if (info_level > 0) { + fprintf(VERBSTREAM, "separating element search: %.2f sec\n", realtime() - rt); + } + return ret; +} diff --git a/src/msolve/splitting.c b/src/msolve/splitting.c new file mode 100644 index 00000000..7694f7dd --- /dev/null +++ b/src/msolve/splitting.c @@ -0,0 +1,499 @@ +/* This file is part of msolve. + * + * msolve is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * msolve is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with msolve. If not, see + * + * Authors: + * Jérémy Berthomieu + * Christian Eder + * Mohab Safey El Din */ + +/* Splitting the solution set along the equalities of coordinates. + + On systems with symmetries, many solutions have equal coordinates + x_i = x_j, and the eliminating polynomial is the product of many + factors of small height: its height is mostly the one of this product. + For each pair (i, j), gcd(elim, N_i - N_j) modulo a prime is the factor + of elim whose roots are the solutions with x_i = x_j. Refining elim + along all pairs gives groups of solutions with the same equalities. + These groups are defined over QQ, hence the same at all good primes + (they are matched by their sets of equalities), and each is lifted on + its own. The parametrization of the whole solution set is then + recovered exactly over QQ, without further primes. + + The parametrizations modulo a prime are normalized (see + normalize_nmod_param): elim is monic and squarefree, and + coords[v] = -x_v denom mod elim with denom = elim' / deg(elim). + A group with monic eliminating polynomial g is described by g and by + B_v = x_v g' mod g for each coordinate. Over QQ, with E the product of + the g's and H_g = E / g, the numerators of the parametrization of E are + R_v = -x_v E' mod E = -sum_g B_v H_g, since E' = g' H_g mod g. */ + +#include +#include +#include +#include +#include + +/* MSOLVE_SPLIT=0 disables the splitting. It is used when the largest group + * has at most 1 / SPLIT_MIN_RATIO of the solutions: otherwise, the lifting + * of the largest group costs about as much as the usual lifting, which has + * better reconstruction bounds. It is abandoned when the groups differ + * modulo SPLIT_MAX_MISMATCH primes. */ +#define SPLIT_MIN_RATIO 4 +#define SPLIT_MAX_MISMATCH 3 + +typedef struct { + long deg; + uint64_t *sig; /* pairs (i, j) with x_i = x_j on the group, bitset */ + nmod_poly_t g; /* monic eliminating polynomial of the group */ +} split_part_t; + +typedef struct { + long deg; + uint64_t *sig; + long n; /* number of lifted values: deg * (nc + 1) */ + fmpz *crt; /* g (deg coefficients, monic), then the B_v */ + fmpq *rec; /* reconstructed values */ + int state; /* 0: not reconstructed, 1: reconstructed, 2: checked */ +} split_group_t; + +typedef struct { + long nc; /* number of coordinates */ + long nwords; /* words of a bitset of pairs */ + long ngroups; + split_group_t *groups; + fmpz_t modulus; + long nprimes; + long ndone; +} split_data_t; + +static void split_parts_clear(split_part_t *parts, long n) { + for (long i = 0; i < n; i++) { + free(parts[i].sig); + nmod_poly_clear(parts[i].g); + } + free(parts); +} + +static int split_cmp_sig(const uint64_t *a, const uint64_t *b, long nwords) { + for (long w = 0; w < nwords; w++) { + if (a[w] != b[w]) { + return a[w] < b[w] ? -1 : 1; + } + } + return 0; +} + +static long split_cmp_nwords; + +static int split_cmp_parts(const void *a, const void *b) { + const split_part_t *pa = a, *pb = b; + return split_cmp_sig(pa->sig, pb->sig, split_cmp_nwords); +} + +/* refines the eliminating polynomial of param along the equalities of + * coordinates; returns the number of groups, sorted by their sets of + * equalities, in *parts_ptr */ +static long split_mod(split_part_t **parts_ptr, const param_t *param, + const long nc, const long nwords) { + const mp_limb_t p = param->charac; + long alloc = 16, n = 1; + split_part_t *parts = malloc(alloc * sizeof(split_part_t)); + parts[0].sig = calloc(nwords, sizeof(uint64_t)); + nmod_poly_init(parts[0].g, p); + nmod_poly_make_monic(parts[0].g, param->elim); + parts[0].deg = nmod_poly_degree(parts[0].g); + + nmod_poly_t d, r, h; + nmod_poly_init(d, p); + nmod_poly_init(r, p); + nmod_poly_init(h, p); + long k = 0; + for (long i = 0; i < nc; i++) { + for (long j = i + 1; j < nc; j++, k++) { + nmod_poly_sub(d, param->coords[i], param->coords[j]); + const long n0 = n; + for (long m = 0; m < n0; m++) { + nmod_poly_rem(r, d, parts[m].g); + if (nmod_poly_is_zero(r)) { + parts[m].sig[k / 64] |= UINT64_C(1) << (k % 64); + continue; + } + nmod_poly_gcd(h, parts[m].g, r); + if (nmod_poly_degree(h) <= 0) { + continue; + } + if (n == alloc) { + alloc *= 2; + parts = realloc(parts, alloc * sizeof(split_part_t)); + } + parts[n].sig = malloc(nwords * sizeof(uint64_t)); + memcpy(parts[n].sig, parts[m].sig, nwords * sizeof(uint64_t)); + parts[n].sig[k / 64] |= UINT64_C(1) << (k % 64); + nmod_poly_init(parts[n].g, p); + nmod_poly_set(parts[n].g, h); + parts[n].deg = nmod_poly_degree(h); + nmod_poly_div(parts[m].g, parts[m].g, h); + parts[m].deg = nmod_poly_degree(parts[m].g); + n++; + } + } + } + nmod_poly_clear(d); + nmod_poly_clear(r); + nmod_poly_clear(h); + split_cmp_nwords = nwords; + qsort(parts, n, sizeof(split_part_t), split_cmp_parts); + *parts_ptr = parts; + return n; +} + +/* values of a group modulo p: the coefficients of g but the leading one, + * then x_v g' mod g for each coordinate */ +static void split_part_values(mp_limb_t *val, const split_part_t *part, + const param_t *param, const long nc) { + const mp_limb_t p = param->charac; + const long deg = part->deg; + nmod_poly_t inv, dg, x; + nmod_poly_init(inv, p); + nmod_poly_init(dg, p); + nmod_poly_init(x, p); + for (long i = 0; i < deg; i++) { + val[i] = nmod_poly_get_coeff_ui(part->g, i); + } + nmod_poly_rem(inv, param->denom, part->g); + nmod_poly_invmod(inv, inv, part->g); + nmod_poly_neg(inv, inv); + nmod_poly_derivative(dg, part->g); + nmod_poly_mulmod(inv, inv, dg, part->g); + for (long v = 0; v < nc; v++) { + nmod_poly_rem(x, param->coords[v], part->g); + nmod_poly_mulmod(x, x, inv, part->g); + for (long i = 0; i < deg; i++) { + val[(v + 1) * deg + i] = nmod_poly_get_coeff_ui(x, i); + } + } + nmod_poly_clear(inv); + nmod_poly_clear(dg); + nmod_poly_clear(x); +} + +static void split_data_clear(split_data_t *sp) { + for (long i = 0; i < sp->ngroups; i++) { + split_group_t *G = sp->groups + i; + free(G->sig); + _fmpz_vec_clear(G->crt, G->n); + _fmpq_vec_clear(G->rec, G->n); + } + free(sp->groups); + fmpz_clear(sp->modulus); +} + +/* initializes the groups from the parametrization at the first prime; + * returns 0 if there is a single group */ +static int split_data_init(split_data_t *sp, const param_t *param) { + sp->nc = param->nvars - 1; + const long npairs = sp->nc * (sp->nc - 1) / 2; + sp->nwords = (npairs + 63) / 64; + split_part_t *parts; + const long n = split_mod(&parts, param, sp->nc, sp->nwords); + sp->ngroups = n; + fmpz_init(sp->modulus); + sp->groups = NULL; + if (n < 2) { + split_parts_clear(parts, n); + sp->ngroups = 0; + return 0; + } + sp->groups = malloc(n * sizeof(split_group_t)); + for (long i = 0; i < n; i++) { + split_group_t *G = sp->groups + i; + G->deg = parts[i].deg; + G->sig = parts[i].sig; + parts[i].sig = NULL; + G->n = G->deg * (sp->nc + 1); + G->crt = _fmpz_vec_init(G->n); + G->rec = _fmpq_vec_init(G->n); + G->state = 0; + } + split_parts_clear(parts, n); + fmpz_one(sp->modulus); + sp->nprimes = 0; + sp->ndone = 0; + return 1; +} + +static int split_check_rec(const fmpq *rec, const mp_limb_t *val, long n, + mp_limb_t p) { + nmod_t mod; + nmod_init(&mod, p); + for (long i = 0; i < n; i++) { + mp_limb_t den = fmpz_fdiv_ui(fmpq_denref(rec + i), p); + if (den == 0) { + return 0; + } + mp_limb_t num = fmpz_fdiv_ui(fmpq_numref(rec + i), p); + if (nmod_mul(num, nmod_inv(den, mod), mod) != val[i]) { + return 0; + } + } + return 1; +} + +/* adds the image of the parametrization modulo a new prime; returns 0 if + * its groups do not match those at the first prime */ +static int split_add_image(split_data_t *sp, const param_t *param) { + const mp_limb_t p = param->charac; + split_part_t *parts; + const long n = split_mod(&parts, param, sp->nc, sp->nwords); + int match = n == sp->ngroups; + for (long i = 0; i < n && match; i++) { + match = parts[i].deg == sp->groups[i].deg + && split_cmp_sig(parts[i].sig, sp->groups[i].sig, sp->nwords) == 0; + } + if (!match) { + split_parts_clear(parts, n); + return 0; + } + for (long i = 0; i < n; i++) { + split_group_t *G = sp->groups + i; + if (G->state == 2) { + continue; + } + mp_limb_t *val = malloc(G->n * sizeof(mp_limb_t)); + split_part_values(val, parts + i, param, sp->nc); + if (G->state == 1) { + if (split_check_rec(G->rec, val, G->n, p)) { + G->state = 2; + sp->ndone++; + free(val); + continue; + } + G->state = 0; + } + for (long k = 0; k < G->n; k++) { + if (fmpz_is_one(sp->modulus)) { + fmpz_set_ui(G->crt + k, val[k]); + } else { + fmpz_CRT_ui(G->crt + k, G->crt + k, sp->modulus, val[k], p, 0); + } + } + free(val); + } + split_parts_clear(parts, n); + fmpz_mul_ui(sp->modulus, sp->modulus, p); + sp->nprimes++; + return 1; +} + +/* rational reconstruction of the groups which are not reconstructed yet */ +static void split_reconstruct(split_data_t *sp) { + for (long i = 0; i < sp->ngroups; i++) { + split_group_t *G = sp->groups + i; + if (G->state != 0) { + continue; + } + long k = 0; + while (k < G->n && fmpq_reconstruct_fmpz(G->rec + k, G->crt + k, + sp->modulus)) { + k++; + } + if (k == G->n) { + G->state = 1; + } + } +} + +/* splits the solutions from the parametrization at the first prime and + * adds its image; returns 0 (sp is then cleared) if the splitting is not + * used */ +static int split_start(split_data_t *sp, const param_t *param, + const int info_level) { + const char *env = getenv("MSOLVE_SPLIT"); + if (env != NULL && strcmp(env, "0") == 0) { + return 0; + } + double rt = realtime(); + if (!split_data_init(sp, param)) { + split_data_clear(sp); + return 0; + } + long maxdeg = 0; + for (long i = 0; i < sp->ngroups; i++) { + maxdeg = MAX(maxdeg, sp->groups[i].deg); + } + const long nsols = nmod_poly_degree(param->elim); + const int used = SPLIT_MIN_RATIO * maxdeg <= nsols; + if (info_level) { + fprintf(VERBSTREAM, "\nSplitting along equalities of coordinates: " + "%ld components, largest of degree %ld out of %ld%s (%.2f sec)\n", + sp->ngroups, maxdeg, nsols, used ? "" : ", not used", + realtime() - rt); + } + if (!used) { + split_data_clear(sp); + return 0; + } + split_add_image(sp, param); + split_reconstruct(sp); + return 1; +} + +/* P = product of the g's of groups lo..hi-1, S[v] = sum of B_v P / g */ +static void split_combine(fmpq_poly_t P, fmpq_poly_struct *S, + const split_data_t *sp, long lo, long hi) { + const long nc = sp->nc; + if (hi - lo == 1) { + const split_group_t *G = sp->groups + lo; + fmpq_poly_zero(P); + for (long i = 0; i < G->deg; i++) { + fmpq_poly_set_coeff_fmpq(P, i, G->rec + i); + } + fmpq_poly_set_coeff_ui(P, G->deg, 1); + for (long v = 0; v < nc; v++) { + fmpq_poly_zero(S + v); + for (long i = 0; i < G->deg; i++) { + fmpq_poly_set_coeff_fmpq(S + v, i, G->rec + (v + 1) * G->deg + i); + } + } + return; + } + const long mid = (lo + hi) / 2; + fmpq_poly_t PR, tmp; + fmpq_poly_init(PR); + fmpq_poly_init(tmp); + fmpq_poly_struct *SR = malloc(nc * sizeof(fmpq_poly_struct)); + for (long v = 0; v < nc; v++) { + fmpq_poly_init(SR + v); + } + split_combine(P, S, sp, lo, mid); + split_combine(PR, SR, sp, mid, hi); + for (long v = 0; v < nc; v++) { + fmpq_poly_mul(tmp, SR + v, P); + fmpq_poly_mul(S + v, S + v, PR); + fmpq_poly_add(S + v, S + v, tmp); + fmpq_poly_clear(SR + v); + } + fmpq_poly_mul(P, P, PR); + free(SR); + fmpq_poly_clear(PR); + fmpq_poly_clear(tmp); +} + +/* out = in, padded with zeros to at least minlen coefficients */ +static void split_set_mpz_upoly(mpz_upoly_t out, const fmpz_poly_t in, + const long minlen) { + const long len = MAX(fmpz_poly_length(in), minlen); + if (out->alloc < len) { + out->coeffs = realloc(out->coeffs, len * sizeof(mpz_t)); + for (long i = out->alloc; i < len; i++) { + mpz_init(out->coeffs[i]); + } + out->alloc = len; + } + for (long i = 0; i < len; i++) { + if (i < fmpz_poly_length(in)) { + fmpz_get_mpz(out->coeffs[i], in->coeffs + i); + } else { + mpz_set_ui(out->coeffs[i], 0); + } + } + out->length = len; +} + +/* the parametrization of the solutions of groups lo..hi-1, with its + * denominator elim' */ +static void split_param_range(mpz_param_t mpz_param, const split_data_t *sp, + long lo, long hi) { + const long nc = sp->nc; + fmpq_poly_t E; + fmpq_poly_init(E); + fmpq_poly_struct *S = malloc(nc * sizeof(fmpq_poly_struct)); + for (long v = 0; v < nc; v++) { + fmpq_poly_init(S + v); + } + split_combine(E, S, sp, lo, hi); + + /* integer primitive eliminating polynomial lambda E, with lambda > 0 */ + fmpz_poly_t num; + fmpz_poly_init(num); + fmpq_poly_get_numerator(num, E); + fmpz_t ct; + fmpz_init(ct); + fmpz_poly_content(ct, num); + fmpz_poly_scalar_divexact_fmpz(num, num, ct); + split_set_mpz_upoly(mpz_param->elim, num, 0); + const long deg = fmpz_poly_degree(num); + fmpq_t lambda; + fmpq_init(lambda); + fmpq_set_fmpz_frac(lambda, fmpq_poly_denref(E), ct); + fmpq_neg(lambda, lambda); + fmpz_poly_derivative(num, num); + split_set_mpz_upoly(mpz_param->denom, num, 0); + + /* R_v = -lambda sum_g B_v H_g = coords[v] / cfs[v] */ + for (long v = 0; v < nc; v++) { + fmpq_poly_scalar_mul_fmpq(S + v, S + v, lambda); + fmpq_poly_get_numerator(num, S + v); + /* as in the usual output, coords[v] has deg(elim) coefficients */ + split_set_mpz_upoly(mpz_param->coords[v], num, deg); + fmpz_get_mpz(mpz_param->cfs[v], fmpq_poly_denref(S + v)); + fmpq_poly_clear(S + v); + } + free(S); + fmpq_clear(lambda); + fmpz_clear(ct); + fmpz_poly_clear(num); + fmpq_poly_clear(E); +} + +/* the parametrization of the whole solution set, from the groups */ +static void split_recombine(mpz_param_t mpz_param, const split_data_t *sp) { + split_param_range(mpz_param, sp, 0, sp->ngroups); +} + +static void split_params_clear(mpz_param_array_struct *params) { + for (long i = 0; i < params->nb; i++) { + mpz_param_clear(params->params[i]); + } + free(params->params); + params->params = NULL; + params->nb = 0; +} + +/* the parametrizations of the groups, one by one */ +static void split_set_params(mpz_param_array_struct *params, + const split_data_t *sp) { + const long nc = sp->nc; + split_params_clear(params); + params->nb = sp->ngroups; + params->params = malloc(sp->ngroups * sizeof(mpz_param_t)); + for (long i = 0; i < sp->ngroups; i++) { + mpz_param_struct *P = params->params[i]; + mpz_param_init(P); + P->nvars = nc + 1; + P->nsols = sp->groups[i].deg; + P->dquot = sp->groups[i].deg; + P->dim = 0; + P->coords = malloc(nc * sizeof(mpz_upoly_t)); + P->cfs = malloc(nc * sizeof(mpz_t)); + for (long v = 0; v < nc; v++) { + P->coords[v]->coeffs = NULL; + P->coords[v]->alloc = 0; + P->coords[v]->length = 0; + mpz_init(P->cfs[v]); + } + split_param_range(P, sp, i, i + 1); + } +} diff --git a/src/neogb/convert.c b/src/neogb/convert.c index 93b55bac..744022c3 100644 --- a/src/neogb/convert.c +++ b/src/neogb/convert.c @@ -412,6 +412,8 @@ static void convert_hashes_to_columns( * added elements have all their terms sorted correctly w.r.t. the given * monomial order. */ + st->mat_nterms += nterms; + /* compute density of matrix */ nterms *= 100; /* for percentage */ double density = (double)nterms / (double)mnr / (double)ld; diff --git a/src/neogb/data.h b/src/neogb/data.h index 4dc09bf2..67f56205 100644 --- a/src/neogb/data.h +++ b/src/neogb/data.h @@ -402,6 +402,7 @@ struct md_t uint64_t max_sht_size; uint64_t max_uht_size; int64_t nterms_basis; + int64_t mat_nterms; /* nonzero terms of all F4 matrices */ int32_t size_basis; int32_t ff_bits; int32_t nf; diff --git a/src/neogb/f4.c b/src/neogb/f4.c index f382af94..fdd5f96e 100644 --- a/src/neogb/f4.c +++ b/src/neogb/f4.c @@ -358,6 +358,7 @@ static int32_t initialize_f4( md = copy_meta_data(gmd, fc); md->fc = fc; md->hcm = (hi_t *)malloc(sizeof(hi_t)); + md->mat_nterms = 0; if (gmd->fc != fc) { if (gmd->f4_qq_round != 2) { @@ -721,6 +722,7 @@ static void finalize_f4( gmd->trace_level = APPLY_TRACER; } gmd->min_deg_in_first_deg_fall = (*lmdp)->min_deg_in_first_deg_fall; + gmd->mat_nterms = (*lmdp)->mat_nterms; free_local_data(matp, lmdp); } diff --git a/test/diff/diff_fekete-valdes-n5-qq.sh b/test/diff/diff_fekete-valdes-n5-qq.sh new file mode 100755 index 00000000..0a472b67 --- /dev/null +++ b/test/diff/diff_fekete-valdes-n5-qq.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +file=fekete-valdes-n5-qq + +source test/diff/diff_source.sh + +source test/diff/diff_source-real-param-nonf.sh + +normal_exit