2023春秋杯春季赛Crypto方向全解

news/2024/10/31 1:28:27/

2023春秋杯春季赛Crypto wp 全解

侥幸ak了

在这里插入图片描述


checkin

题目

from Crypto.Util.number import *
# from secret import flag, x, y
flag=b'flag{????????????}'
def keygen(nbit):p, q = [getPrime(nbit) for _ in range(2)]return (p, q)p, q = keygen(1024)
n = p * qt = len(flag)//2
part1 = bytes_to_long(flag[:t])
part2 = bytes_to_long(flag[t:])D = 1117
x = #87897747594260774254246835664214545379849
y = #2629972211566463612149241455626172190220
assert x**2 - D * y**2 == 1enc1 = pow(233 * n ** 2 + 1, part1, n ** 3)
enc2 = pow(y * n + 1, part2, n ** 3)# print(f'n = {n}')
# print(f'enc1 = {enc1}')
# print((part1*233*n**2+1) %n^3)
# print(f'enc2 = {enc2}')

签到题,先连分数求解pell曲线的最小整数解,在二项式展开求指数part1和part2

exp

from Crypto.Util.number import *
D = 1117
x = 87897747594260774254246835664214545379849
y = 2629972211566463612149241455626172190220
assert x**2 - D * y**2 == 1
n = 14381700422128582509148801752355744589949207890477326887251636389639477554903212313766087310581920423926674144511237847467160303159477932732842314969782540035709454603184976310835433114879043016737665256729350745769071186849072915716081380191025215059636548339167264601163525017898164466972776553148697204889820118261937316228241099344357088387154112255824092894798716597134811437852876763391697588672779069166285303075312833415574850549277205130215394422655325352478386576833373623679069271857652029364332047485797407322257853316210866532938722911480593571175419708834718860211036796987231227104370259051299799633809
enc1 = 7213976567554002619445032200800186986758840297933991288547009708561953107405266725278346810536664670987171549114913443730366439254199110599202411546254632702440251000149674899033994570393935743323319736976929843596350656674709510612789987746895513057821629144725499933366382123251520676386059405796801097683107223771674383940907066300331503757142088898427893069444164604408189686282018392714450005250018004986102062209998463347007934222341910941474212611569508001910685822097788669516018081617394144015000387497289693096617795809933540456797387940627782045397249431573540932386564021712811633992948508497879189416719996092292320828635490820907122756459412206735413770335545012892724496210585503157766011075566023635046144730429791359690237088629187946232458937292767085665897489251315749496284368726255508362410603108788759785472319449267909859926786774679533591222665476101832482161295321411313525830843915966136814748249906589458905410141906965538387896747375546846618213595165688661941876715858338407833641907024891922856719044736945863722003318526031957256722493189062624177017279248142024760515092698242159769372410662895078523142768353100643884341413944795392762315999109544070401451087596138520908569234305384182336436670714204963907240715652950621301644972412252424876159530992
enc2 = 15954854445966181136742750543358176358186230663706091821454832527034640100670779737656720251005109942306013877086451482243141488450122353285697850016200364912263403464109626937525725210545566742746628476797261121321515812788726862118315480354196115424526212965145342675007815411995594752584377871686965531829990461770047418586001518916553661158567047779694730702789677326905844275827365395845945286695577426050334364557405151339008293258932006267159313380746863008928500607405457044370494583863960981060999695448408234857505591647503423149271589648863473472196402149897680041851877198062464480400493467334040101779732999029043327947071232256187123316057998759518569161852646625701393295408789279678540894319137126821001853808931387200759810381958895695749251834840804088478214013923869059004663359509316215974475427057000629842098545503905230785431115754636129549758888267877395566717448365986552725726428222769339088308242580851434964429627168365161743834285778996916154182286570122208454025753108647581888781783757375011437394936853319184725324597963035778640646869326035848170752766298225095197226934969602554875402243303906613183431896300664684256018886119255870435413622515792072064528098344111446380223430819596310173312668368618931885819458529703118195242890075359424013033800260927722161030183373647798407301688760998313223874318513944409702828538509864933624724225689414495687466779277994989628367119101
part1=(enc1-1)//(233*n^2)
long_to_bytes(part1)
#b'flag{11e89e28-4e27-47'
x=var('x')
f=x*(x-1)*y^2*n^2+2*x*y*n+2-2*enc2
f.roots()
#149348210567024721458462412040406092887599760958845
#b'f0-a7c7-8e66c18881be}'

backdoor

题目

def Malicious_ECDH():w,a,b,x = Get_Parameters()P = getPrime(512)A = getRandomNBitInteger(30)B = getRandomNBitInteger(40)F = GF(P)E = EllipticCurve(F, [A, B])G = E.random_point()k1 = getRandomNBitInteger(50)M1 = k1 * GY = x * Gt = randint(0,1)t = 1z = (k1 - w * t) * G + (-a*k1 - b) * Yk2 = sha256(str(z[0]).encode()).digest()[:6]k2 = bytes_to_long(k2)M2 = k2 * Gk_rec = getRandomNBitInteger(50)B_ = k_rec * Gshared_key1 = k_rec * M2 shared_key2 = k2 * B_assert shared_key1 == shared_key2print((w,a,b,x))print((A,B,P))print(G.xy())print(M1.xy())print(M2.xy())print(B_.xy())return shared_key1

Solution
z = ( k 1 − w ∗ t ) ∗ G − ( a ∗ k 1 + b ) ∗ Y z = k 1 ∗ G − w ∗ G − a ∗ k 1 ∗ Y − b ∗ Y z = M 1 − w ∗ G − a ∗ x ∗ k 1 ∗ G − b ∗ Y z = M 1 − w ∗ G − a ∗ x ∗ M 1 − b ∗ Y z=(k_1-w*t)*G-(a*k_1+b)*Y\\z=k_1*G-w*G-a*k_1*Y-b*Y\\z=M_1-w*G-a*x*k_1*G-b*Y\\z=M_1-w*G-a*x*M_1-b*Y z=(k1wt)G(ak1+b)Yz=k1GwGak1YbYz=M1wGaxk1GbYz=M1wGaxM1bY
均为已知量可求 z z z 即可求 k 2 k_2 k2 k e y = k 2 ∗ B key=k_2*B key=k2B
exp

w,a,b,x=31889563, 31153, 28517, 763220531
A,B,P=(1064988096, 802063264240, 12565302212045582769124388577074506881895777499095598016237085270545754804754108580101112266821575105979557524040668050927829331647411956215940656838233527)
F = GF(P)
E = EllipticCurve(F, [A, B])
G=E(359297413048687497387015267480858122712978942384458634636826020013871463646849523577260820163767471924019580831592309960165276513810592046624940283279131, 9290586933629395882565073588501573863992359052743649536992808088692463307334265060644810911389976524008568647496608901222631270760608733724291675910247770)
M1=E(10930305358553250299911486296334290816447877698513318419802777123689138630792465404548228252534960885714060411282825155604339364568677765849414624286307139, 7974701243567912294657709972665114029771010872297725947444110914737157017082782484356147938296124777392629435915168481799494053881335678760116023075462921)
M2=E(497353451039150377961380023736260648366248764299414896780530627602565037872686230259859191906258041016214805015473019277626331812412272940029276101709693, 8439756863534455395772111050047162924667310322829095861192323688205133726655589045018003963413676473738236408975953021037765999542116607686218566948766462)
B=E(5516900502352630982628557924432908395278078868116449817099410694627060720635892997830736032175084336697081211958825053352950153336574705799801251193930256, 10314456103976125214338213393161012551632498638755274752918126246399488480437083278584365543698685202192543021224052941574332651066234126608624976216302370)
ct=b'\x1a\xfb\xa2\xe1\x86\x04\xfak\x9a\xa3\xd15\xb8\x16\x1d\xbc\xa9S\xf5;\xfa\xf1\x08dn~\xd4\x94\xa4;^*\xf6\xd7\xf10\xa3\xe1k`\x1f-\xef\x80\x16\x80\x80\xe2'
z = M1-w*G-a*x*M1-b*x*G
k2 = sha256(str(z[0]).encode()).digest()[:6]
k2 = bytes_to_long(k2)
assert k2*G==M2
key=k2*B
key[0]
#9751713826770088626736040788378150184071687079840675547785877284335197312359729041753523349743487117150780761756105828674983574764479611594768748239874895

ecdsa

题目介绍
下面的运算都是在 S E C P 256 k 1 c u r v e SECP256k1\ curve SECP256k1 curve的阶下的

p=ecdsa.SECP256k1.generator.order()
#115792089237316195423570985008687907852837564279074904382605163141518161494337

k 1 = k 0 + e 1 k 2 = k 0 + e 2 k 1 ∗ s 1 ≡ s h a 1 ( m 1 ) + r 1 ∗ k e y k 2 ∗ s 2 ≡ s h a 1 ( m 2 ) + r 2 ∗ k e y e : ( 16 b i t s ) k 0 : ( 256 b i t s ) k e y : ( 240 b i t s ) k_1=k_0+e_1\\k_2=k_0+e_2\\k_1*s_1\equiv sha1(m1)+r_1*key\\k_2*s_2\equiv sha1(m2)+r_2*key\\e:(16bits)\ k_0:(256bits)\\key:(240bits) k1=k0+e1k2=k0+e2k1s1sha1(m1)+r1keyk2s2sha1(m2)+r2keye:(16bits) k0:(256bits)key:(240bits)
已知
( s 1 , r 1 ) , ( s 2 , r 2 ) , m 1 , m 2 (s_1,r_1),(s_2,r_2),m1,m2 (s1,r1),(s2,r2),m1,m2
k e y key key
Solution
先把s移到右边,然后作差,爆破216次方解空间
k 1 − k 2 = s 1 ∗ s h a 1 ( m 1 ) − s 2 ∗ s h a 1 ( m 2 ) + k e y ∗ ( s 1 − 1 ∗ r 1 − s 2 − 1 ∗ r 2 ) = e 1 − e 2 k_1-k_2=s_1*sha1(m_1)-s_2*sha1(m2)+key*(s_1^{-1}*r_1-s_2^{-1}*r_2)=e_1-e_2 k1k2=s1sha1(m1)s2sha1(m2)+key(s11r1s21r2)=e1e2
这里额外考虑 k 1 − k 2 k_1-k_2 k1k2小于等于128bits的情况,可以构建格
Δ k = A ∗ k e y + B M = ( p A 2 k / 2 240 B 2 k ) \Delta k=A*key+B\\M=\begin{pmatrix} p&&\\A&2^k/2^{240}&\\B&&2^k \end{pmatrix} Δk=Akey+BM= pAB2k/22402k
k为 Δ k \Delta k Δk的bits
exp

import hashlib
sig1 = '3f4a6f288e35a4397201d246a98c1f9cfa463e67717fbbdcbd26d7fac75f875855455c2bfb355f7f593ffbe4c4bd1fc729cc129976b56905639100c8ac716b37'
sig2 = '9f563b21f0ee31b2f7a1a8c6edc8ff23b63e0a9d5dd4a699ecc3164871b4982df51bb2feb4bc06c578afd21d3e6227231dd5fe1d8440f3dcd025fd3ea68f5516'
enc = 'cc66d251bfa54954890c81dc1c607bae716573949f327db18aa1f4c0f420b8d29dc7e7ff9edb17b90306bd2aa753fc3fd4dafb9cc4b771cbdd79000ef05a40c0'
r1=bytes_to_long(bytes.fromhex(sig1[:len(sig1)//2]))
s1=bytes_to_long(bytes.fromhex(sig1[len(sig1)//2:]))
h1=bytes_to_long(hashlib.sha1(b'This is the first message.').digest())
r2=bytes_to_long(bytes.fromhex(sig2[:len(sig2)//2]))
s2=bytes_to_long(bytes.fromhex(sig2[len(sig2)//2:]))
h2=bytes_to_long(hashlib.sha1(b'Here is another message.').digest())
p=ecdsa.SECP256k1.generator.order()RR=RationalField(256)
M=Matrix(RR,3,3)
M[0,0]=p
M[1,0]=ZZ(inverse(s1,p)*r1 %p)-ZZ(inverse(s2,p)*r2 %p)
M[2,0]=ZZ(inverse(s1,p)*h1 %p)-ZZ(inverse(s2,p)*h2 %p)
M[2,2]=2^16
M[1,1]=2^16/2^240
M.LLL()
#[12538 529916052714421365211802626556164022962456609322782019794355446252399179/26959946667150639794667015087019630673637144422540572481103610249216 65536]
x=529916052714421365211802626556164022962456609322782019794355446252399179/26959946667150639794667015087019630673637144422540572481103610249216
d=x*2^240//2^16
key=long_to_bytes(ZZ(d))
key
#b'L\xc7\xad\xc72\x92I(\xc0`[\x8d!\x8d\x13\xdf\x18,\xa9\xe6\xed\x07}.\xbd\xd3\xbaqjK'

Cisticola

题目描述
e x p : [ e 0 ⋯ e 17 ] p o l y : [ k 0 ⋯ k 17 ] Q : f = a 0 + a 1 ∗ x 1 + . . . + a 429 ∗ x 429 + x 430 K ( x ) = ∑ p o l y [ i ] ∗ x e x p [ i ] R ( x ) = K ( x ) m o d Q ( x ) 已知 e x p , Q , R ( x ) f i n d K ( x ) exp:[e_0\cdots e_{17}]\\ poly:[k_0\cdots k_{17}]\\ Q:f=a_0+a_1*x^1+ . . . +a_{429}*x^{429}+x^{430}\\ K(x)=\sum poly[i]*x^{exp[i]}\\R(x)=K(x)\ mod \ Q(x)\\ 已知exp,Q,R(x)\\find \ K(x) exp:[e0e17]poly:[k0k17]Q:f=a0+a1x1+...+a429x429+x430K(x)=poly[i]xexp[i]R(x)=K(x) mod Q(x)已知exp,Q,R(x)find K(x)

Solution
r i r_i ri为R第i次项的系数
r i = ∑ k j ∗ x e j m o d Q 的 i 次项 r_i=\sum k_j*x^{e_j}\ mod\ Q\ 的i次项 ri=kjxej mod Q i次项
写成矩阵形式
( k 0 ⋯ k 17 ) × ( b 0 , 0 ⋯ b 0 , 429 ⋮ ⋱ ⋮ b 17 , 0 ⋯ b 17 , 429 ) ≡ ( r 0 ⋯ r 429 ) m o d p \begin{pmatrix} k_0&\cdots &k_{17} \end{pmatrix}\times \begin{pmatrix} b_{0,0}&\cdots &b_{0,429}\\ \vdots &\ddots&\vdots\\b_{17,0}&\cdots &b_{17,429} \end{pmatrix}\equiv \begin{pmatrix}r_0&\cdots &r_{429} \end{pmatrix}\mod p (k0k17)× b0,0b17,0b0,429b17,429 (r0r429)modp
我认为问题的关键就是先算 x e m o d Q x^e\mod Q xemodQ后的系数项,在乘以原系数项 k k k
( k ∗ x e ) m o d Q = k ∗ ( x e m o d Q ) m o d p (k*x^e)\ mod\ Q=k*(x^e\mod Q)\mod p (kxe) mod Q=k(xemodQ)modp
exp

enc = 'e086deeb9f060c014867c5adbd1ee1b449193b6e6177f58a36948282e1728f3b529b2def3c39f69c7a9001b4cac4d1d5'
pos = [477, 491, 210, 515, 150, 142, 561, 5, 475, 329, 598, 274, 241, 310, 108, 483, 181, 600]
hint = 439999496573213620830016372834521790031386300696534422955053648336105605385561583278387801122774380886141189101878338775550982996238829099178725441886130650282695422832108040173419895532114262537930894140651153586762161511868707627*x^429 + 1138209898802397584979606458465402800895579352743169943892724142582362356638349559656959350480094955932373873825209467868085190216196750447920297339371820239013986689860053166051041055867553467194450521934543717681007328105041073259*x^428 + 340471956931983427842381423296931042773559834464988316590433570074208277191460067053623530640266297750014708191797120643576446679362901740845814656443859225832147397741453693746653149790787857125867076095219639367731107439575285829*x^427 + 617387483437436235410074394878888804072213664324220466702062976571686458221759674098819046734275786202565503830790674283159048944654406914435300037102656267499799495806927297398440201500715046057347966349806292174949755705692142619*x^426 + 1252007709316199718745702358982869520193191678098263187878349724874998306192126048256463516584888063370075991057991786509269208286988415894389169355563623674445799851323080743262847395575999718497789191097022485219323878087463049382*x^425 + 874916158145143827213366705496084570662002978473770366203354162843652490125920472271862798105659865466744273857663958603054622398163356519567806083316480321545515338731123715840080506924188777539614274373157332506013946302891911769*x^424 + 459092573310793137226949250435710864973923866282218111786743797230149446498301627956227448894932605488979662886600065114221354126792248712202205305763834817500698354893145716988080510060751058147948545706527194475376725540526385355*x^423 + 542422312763143202456685094848835824584643356333375276673657509530761731961257293499991138054148517646749344326294389834377665854581901320369633731335541877694231446682328068554520839976085830953908190468594836147836459873111084940*x^422 + 314730259795542467747059550620737529953243073753954630213756883364442718859418591018499810922130946015817146744626752339312486978715978639904062795567007769594070801635282920875151446673363185400670472021912009264563192610142070788*x^421 + 1112765853860153905776560194380301433151162976087547048609015287096267954555687237699065756221788915671894730586097714145928114683114920055732874767919534527526209966490600715520063943178875289641704452995706173414841853469649197780*x^420 + 661890869198949625365437107573552380119388829559357248597296721713059284545079865460932050655556236648508479768224490820613109854426213819143112272141634630300508564020200534622397621829927842924649675975739942244461104208655087217*x^419 + 1097845458679416746201656884678795943469000575569310711845941821340623794586887557176941206470944084449857854047732179948579080744473633891917506450211566088538346590691739572985776104828856500749751914594548035117379303960643360674*x^418 + 180723974972555650687292232490072617252338632324319377009999995938294377397384030658289690194671462617364171470305629874158193495686790909143426452030303892057856412178099711032685660901549361655573139642816264411966391431142996898*x^417 + 1148335802822772776298603187745540022333877349616672827357983661978307438157253981286940617094419439310229978788805805987530550805471346046127514455169675789585239395522569533198704273805180228170162905274859998061788257180217784358*x^416 + 1194045265349924493303576428223079666118976611414709950839663597265897435439754284364485998222686710304135938133231093424337318010450037345635259234618615276533411220648954945071253141123676410265855446194331594041315018200696442308*x^415 + 798918677188691989787958922826141528989801697964115529459903648475900838688984974546582011739090749442271722137484739201656488194866407457204617029131641224406410697822655281005064028076350814143731100277194552111018726858206684115*x^414 + 568426329757541537770300431577732980736894964138859312761422216234938308659775092798893934683482874842662404222649330368262732276032131505027261076044083585620358106321708787664810375738671566025783680534577387952535014660623043031*x^413 + 885852023412581236706253985629160419768998878516662152506045902728871302925692764813790822692379957459077470920309761647869839243757576561623397424604176808724416074066881743833271971184644852655744373626921829437606887952648505927*x^412 + 1020569794160506802300888169172903806615962457715026820646014978530306281194606142426325290636129541953205518368194988305457120014851180089670824345881502634597288907856128252590673941432079820045495626017523625821083461611618266652*x^411 + 96791610236700863212998052980505224136336379376816538381853443622663040396645404460831686633709387024178624182809998876464195276490270726182899585413601858397140700673999735843480145829552541203702264178673167029085669878862971972*x^410 + 609519718447904542988843668567015604962218680549510801340152991885410133491663575711318638565426584238419565299910760716225100411792812484160269962554415419586005465657810012633746979208025056811062389051152934525358149152255963556*x^409 + 375412001445955799334241608983370784327450238237206546224483562849226369646924659012352035186252833748520493368621677174126581698118098676658022850154598666962716501497366583815225677778475389440569318243901640649265919115193417907*x^408 + 1121378299662093596159795124789132248990815985014453332355959215087456246530510225253758828258183617010642967781647891229650102785159528041147697796444869455351479709548385212829723567794448137400129448529140342208687435356677657250*x^407 + 1078138733260737238110128900657470869268848552800005008131173071590919921835706483548526771979036212440664532035156599438750176788843278857149690189506513118254556305806013595448463482682037743348903100327149558098248511196833901542*x^406 + 1380127403839595032415761151923987096910836572317317943065520109391852612909844812763972387949024830565709700590830629631721288076368475312527607766078059652811912615686227290377815901780981348183472425642136095594616066271724667858*x^405 + 13220077111889740764762020297484118914024846938445332970754048903190743939172124190686414254252053803118134749481585071025647044766565462220916246753954782065496904792093480585943348725695106375365632748637697279031607850650436280*x^404 + 610849890624888095060562480685032775467182712360879991324396240765562957550892339642956021243245731986801471107988475711364904839963132000768754569888996174789638483517951477275125189530327690811925866030369657689886076460503749726*x^403 + 1081539472613643492759213112398628704099983060974013162324653923494487448525225976211843170272352503124587365464778840936835106086227937589284548243624859283630326438595494956704203010515199645622680401046636627313878234450652368346*x^402 + 333306879038676021425122883813388274351511680322820729404594275936102094018231394442758377129103263483716166503289635297719909177229399092781215561274642962053639841923095552682762250242533942080396471917466784992995732008152433241*x^401 + 1261068448114272625211867143239942300359872070788639133349931508860551613964998304626654260497414029916013566508129929512631404249423358520387928189387672303078946608833190231091589616418599143071461892601089672820863485482954522099*x^400 + 39765090229103211694701765711548963982295162090040863213709664589896324482951732339813114980664409858840989589139552886586008808342806739883975642691721584712987733689492319195396171616351440655995126926486870335125259191643002420*x^399 + 341321203249920448224701442971746720172601208853066494144990628774278577708929537095674926565846601156249779311620337854412412873838370340968602443112409528409768987599626279432539607588268900431464153042380341250457206294894084165*x^398 + 568627756659014943385406701509190049073164339121701616501854996514893300713492276311010486509170214262875378780269047904409145734791310939589011287445649389105943847313454335614921959242488538910643183798575763248132635989636031569*x^397 + 1256665993769497451157085530764084649250254685077060677427248258117972716349242681303883346999732562037655904043984896570129543649215584364322478630239563928538516852009758981114645741335264324774516727004414278570183775265700757621*x^396 + 98363832022906793344059360977002624639584180691477641704319707885647659660037657206844545063121678849227123749601796670884708220645041438816689493075170855508874755077367028203916963722031699378716628666920868569833635658434951758*x^395 + 317836268735429012342678987533712792341565288591791277821932057301490607818824364414179062905838168794364130618302325433401450678263708626516843006483484334173341825762194732032780979280745967109998196304628969374266535501647571590*x^394 + 1147085334701277601203636459133238112837361831009177382832344098567695421127602210527132967838745201324712086699323012263855311160909760280213815909450939291535190676833537877539469781001059656943730620836320074356682721124216444226*x^393 + 301912562736753514569586204710653278026795709138931855675807210602039984894502771645304486941239209263548737492409653143319196805929106591283135364916385093834071330858358337228223867205424669327250251006849386824196485986891661692*x^392 + 888176261309487323069100034448251055914452592251064123981020539985269066381275317857277796685097271985399644117219860672592314604192820910568856173732968648806103995460067152079859405662842568646026578715690852760455627323145917924*x^391 + 660218625205067829012350944714875252371202665952216051999736591379503911469769339696572213258793344077090110590437841445655762726721981195363979333314676344361693381687000587574478290556560052396537715761536595661473207209450011168*x^390 + 763472003767904847801730093008956479824940315790316445195189238623380371300778766516615718628371874834328240719670251670832018415033675780079606925505244006374527962166951716101800075392231518982665474497630531001387903854387307609*x^389 + 41088190663449625693343024604784014573426043171854288120843399506200135845465435098993567154751711447428337244484920107034252581277108751105004297844185208114722936204536635417054115732486841730501180780766053762870119857519966861*x^388 + 1130722853626275988124972350348207312028864518316039108017790211203326917487943136024466671212589241913441409779964551362733990556369066590345481286654705643557863298613126829628178349698550403573829225767055541861720536630372129922*x^387 + 700040884728115192262440155228263365260693756737811896634055929184437143728857701473913209574711763100644012539327029728189564736718169969769863982459049122970127195145960064711016899362996206458568720816053234588504793765459311701*x^386 + 1050999527930918507076912572564253392442355378486770239806606666412600579924436844219259392761038001448258492138364665334675353276729938350309183629723105803142697278455055364340584842431731438274814638706165783168294843594619972296*x^385 + 428630189473101756830363193111670498532867278371376417441304969439339731236264170766301124239084219381698596577914492275096803247224558386355546889866105656835929201165006658763503444527800873870054983563405515993957902007896266003*x^384 + 137803989332348522347464310107786967270068539311308462843113118647447868495950474779669057096215869907941023191824771663065531345619511449168846594284013102815087223172142087066522804092512066931820634943582999642526379473874478303*x^383 + 915320039204456332181954207224525988435575686230963252437641884917481947874164656237734703438614470998307469986760380618489360933705023826338977143702921415097797386895685145612159989751523131058295728476912415200478489736107890345*x^382 + 206262177024461886696752727145853777053596743815588453999003817582179807465352414384785372687758714510650968749061477976126753935181160638298567168560300125226688780612020823191385768257890263466719291090275045420007703586135246100*x^381 + 696440560777159918116047130406486970851399693782062675552722792895340969550519518975690374393382434674446296003033175880914039934298938861907712912549852381410162296888182877553692816809205846601463708865202546364306913900110334767*x^380 + 1183060689674926657917031924555023382451285268990064929606399804236790961765558423248715041500150147973189018150764711755190079444850999451705085477501721678915423608516422272241410863610386488128990036613604007675192134773998525021*x^379 + 463202779082122000241432196233353173511285871933041295515811049263683774772812455054855136716196411601150143102306188616976406911846165851357150398145081044463711645436618109245087905042676242090006797023606138372602619067843418180*x^378 + 635753245750397019361059454678218476465828180882478451502151423054724713326346553121517287701816363184661512400183561807570421602457026176483347385440722862469471809612050717044987842609775322610283277017062689625549373438055620206*x^377 + 981800791620791320272554708335561825504112510520215729601778127009200345710272699641001071686026487825910742407935663460072752826379069951143478809371040879562636935561947540608316927172092661464378258781058202943380990629079499739*x^376 + 310126720435913319537213982310757185875089703310019846905602950875844167587520528003076111117425912326057241882086995986202379591072434229937866602040744056165637509116171357871489232764318011364480591620628276086656665332000949268*x^375 + 5129473129633055678844428226574461169690837388778750807430974129806674910607763605946509267390512653330462715849474401760864279119794644841947128508827802976855088939022472983685145398381765321120244788114654033157918923189303229*x^374 + 265071513645942609291844531182482995437058466322373054737121390318101150365333823376994854147068743608639879615240996028763229725864796824710835650913444687743303639947766148515270314260166721246230660563100851602996464057787850463*x^373 + 357408896960573007185494246808652884306400958738522380453405989532328782202547883427193163439112228434216113215128157298342253481541191464077742587259784139280435714548940219034811048535461660136740250665181873163315508476001371467*x^372 + 196250754219858032115506141015170626953186101407338612517436353153423476812920409657445489825304861781245107612716969561245349293431312621904653652673249719894809056195724766948456455820927301118925792547458273245300641659603512109*x^371 + 532805604132056907353297042495485229159214650623104424656913129218325086005008715602161502793330177678113260794107816213793471330666309431939506650655656318393300773193455019112775107408410209134424767630239942854255611591249271283*x^370 + 1070186312230587589912944527297803242124606694827566479970186801378394165335426203381295273063178258960042960272959622040697457331376115498553196654094555530268945656967415297119819680897375720628389194025372519240698987396943692287*x^369 + 557153321885635538326577135052076770736834429476996514961306767603845838453652794088225883748527969351642691843261026594831801949627329033216573995645840047310870886153982527824956287809066966244075823545344252428352180745999471603*x^368 + 533377557695365209019224360794699965521494797953342158881672958731763864319969106095010645163430533399134945193199615001933480775793073202430623956878769879773052796975199907823342537065324988022624354164228613581395709620130060815*x^367 + 9039815356235556585330097670703477646416484113516914376224931469395728667172388929644428637893101225754958150135154934185259624200218221343100924596042460614051326983404321358718492192279579757762637191930963234637319038970432557*x^366 + 132642045862438020332610523110676614289638012823725403534910034026533106235817637902198621626832153210544804263895643342139998521819914388095268662513024542456475428696246318549501582494517371733619552680418102023732143595265680812*x^365 + 410338659954926455415827064209165512962724333932664838099224446324957735040444724439248523095733457774726899392196187002706171642286943020716621586474698137148263192910665802023604077784335345254238704813088029504261346714166489573*x^364 + 601222454589909252031653782702574770958678762274284517597945772766283920235908189769095886961084651989739760825870830121006180463331865275005317408014627730188423624110405246288427618751452235259136590697735852226562245142214787137*x^363 + 1364844190931070418262581114961870860791998754734638294830082711328949070269272126018290692566722712139114120304685285820258915724875926713319692641737388944156495098950645575164133558568421997345044217523798774363425392102222587516*x^362 + 590474155993958731019496092188731216345026702510385220258530195380878582534435430379228686539713535087265035955599562524489879083345022475541912181753065797272716238117957453298586667510838984805334431656651563129069108824872197501*x^361 + 1265799030612084058375721485129198942978504743354345014335611822980566414568142732575915012292577362453507063119454709650473508508343947650778594491797501719120187667501144358605524940724945791214907487613504538970396662336112076859*x^360 + 474634875188807598011274185234234673842138562956519298827290018890489381300403117317192126192095120010124046136032875355596159567075521150337562043051291694309248191556414494381904563545597501279126294036174413504694834173905635330*x^359 + 1360439846477453040755715926790974022151412765906162677954478567153531356830034040124083518687645064698995863170234733194902685465758305701031159331408454567214868325000046742847755530558208418838330951064130554524906532385680960733*x^358 + 1206838488296575190874822414041766497081979826921300419862070033830606918764472973786357932377924150073645051363790331015802448550775789429388671204963346708184016004108036708551567255682501408114029467885408368782494107432205873682*x^357 + 1168264603259115277873990701716405188726392833674824113757725832742103006656295501732667466695677038176900832385405676027024480087960710542546752997879996545483685508357739160856873816590650728370822726812971437300796953862428076194*x^356 + 689171116469286037578796995959401237445672615247595638214625023865201395838178452202339744465289172441695816092433545607665080557741861353024242808616297799427522317664402932773806190721227251070482980336341777611834398764772225047*x^355 + 977125648126208102130610059356802325387906068459082151878146883316212199175254907563288201012492066806400692219304249899910585883140779122298647107169677874710251976472105600147527287577165404183102271043956704129662760697685544354*x^354 + 1070776168746079273034374391445590432866040318544626683330749193758046420994788383001773475037636044955230020827473017956292109465374231523241702754547500637681365717283067942467726836931332130878010421341313294950765871383107223046*x^353 + 797222679536845538678702087788664354835182674143877960059906112999854220797060764687824789524724457032317099541507634771263408112696976253560397504688583812170636007933144913036055679931862031581147802239687089524150027584898338623*x^352 + 685695957073453709879748396049589716749769281887312415714721959797618559901552962665546981732116110033271006151837788277613392126340426319866010105738239851808950551041410695960724000018977373192174659177956639544621413213672527799*x^351 + 695076674722746718261916044322060349908655319642054415472004273063957798304252043991436607222103696619918772140114377577492014614766587943023903588978913335475039048411747349461396412958798372704268900400801455088763083188454870519*x^350 + 498286030497238598827494685124058584881299840625890277473908435912136412942305271276416583590128645852854496057439443680308158444713829702016238862344357319342700467854152129217186762886356638639400632537166962220805350141650068360*x^349 + 1150577575147363084008706474563999068793003637375019495392066346358861401110564195553980541286414444215576064566543852960685651600939324597195018485161145840821036839002807487643402073677167019132959551537295442638094730553288768455*x^348 + 313126373967103815770659061040490951251982629973724358910054086281597062291511955743375267851242183372399059291140821103035317779385668767923715752955071547812939173985887522508821823965648788854122282540859035601848117333430894215*x^347 + 582749555011096951968307291228949296575167171254260670985171149211532996444676655902582970592288763932886683391716878607079192061296185984111917115800929651649465992057989306455948983753177177426628916771163571288425761261633049620*x^346 + 114143160797137253603362218424319526608259975989808305223121366306078395810359027951084809757927273659153359661292931668313183074927984891818465877947701187557350183644584785912327550606707643820212513391075687011297982959647974368*x^345 + 889246926768625429440170756873138642207719601156690624625280964393079448834767582044264803300298675122192668904761609725286170567027695234991708848868441233440948166260890681457518569594027550031713856432061761663949221952838548462*x^344 + 162608870772258036282368495856845290365277541989583663839804312424971009885507496485892863129485516411289479213760226202022744701234353548893792662329119272783007972602297047732281857756276768073930808372971252478989224614419050811*x^343 + 1389060316069959679295804192571382970956227846422942405603756231856472903200808752866132987304531308853943186769464224636203161654654429899746910173035100932758275277723416226612741687806256914838740665467889978893459531795351729266*x^342 + 373757322940199513065473402191446663709376562824163699545724813909536939289668606101246572956292135122323317826941333801545050631879692080495963514812526315352822851131340101082347316613686541304721618348158024765590244301733224626*x^341 + 142608522654558961321251310952887605982094223088637959045759136604316613061809991676458479971216957492251818620273585436753160706559379614513349561344760269843836460340951275580380512358091850212116528326971662828299033063917593166*x^340 + 465044715670041783890749935730356068364777892746250805065060006456968612437983638280849241563986240237179853503428114166203000980069635011316648547053825064012597484748507630921010436710987733066652176965837634957404649312102818930*x^339 + 411929672488602099506118094912747110768404192048478580758007184462499132875746925894887474489837804977006324654780840292512033967907000479815642724869862521920255863920722060214262817624151836629384558407847337198087803984451903934*x^338 + 580775492248505340784257829459346716851086980848952521608194601208719382375991542566387153041106042729993605325346708534907430848211644409225432474114665528623821626631744325663943556105582525974965568393396747849702330069719283718*x^337 + 1369056329984196021692893553861495927805254896703961653571208906055533160872599222254269619356384374226134338272846241679391115745839853570986281706703852606719074934508734564835483632470428614577439042455170723153735502156517209052*x^336 + 799723976664419523982246886126537477315507074546179606975811866687175881011866208832125638284856772229346806508241118451809982401417514269147453652312379188990845415454684733980770643251884687920312138360022741599882815561517224180*x^335 + 537534165678314616784780949515233268633906203763571184664933695436643510974377009907781308848700440300568815722448220271502674552328915363039965254064879181949847981214376732876690127151739702015134012426477165276403414173217034668*x^334 + 761844711855753472573358093846284568953384775795784523850970787810633199553893628701086660640776838593486980273374524956430957024149313777444049445939022128866824008300683018112769636628693383866985277415065819214939650059477114498*x^333 + 860934007710683363268309898459069201033440683753976498141810455188603932151751788669102701961891395772426167117404661488776832801011381406239346351641143513681131633091832667539743701405344839074341131477544367718773976720638099227*x^332 + 43026263574532979474085031319936128347302856042178751784812636033431117953594099115068757953363328558977303428992313578705223483288311097607282989758398210019721564313862826462189024723254176426703630479085786405149817492438514863*x^331 + 611745003735577901552401793380813345971338165859285656887106860515873761946863056908727673642796146497296487651534584273449804058789325313032677142485769496396876375240547852271399335942537612752842425050597063031965921576353833300*x^330 + 205900831185835359707667639072950667138255598275201077014306410771880945734128005035100375762350987469570786820222863515568064730737368148688217162385638478339495637475994045392008415435592773282061059675061994532339043039561268035*x^329 + 1108243390390858255391736255808695962176899846629927584020454463014190804423175708054193338914764632731137199892251406088209021682103048635413312450032095479832365761086222041778107403248149039357319894571992867832128304043440910982*x^328 + 564161988820512012347552699366207446206189983159670141147299732680582543009485879560577680854775214950673365166649229491326099812780782504319973632390510884477691492653829027212106392123208059303802747734239309927316943808547724684*x^327 + 532518402489451688912284668459838531509436789801323942010057524085079770351341654244930069664896704915874396382065174899397638707934495290091484200998098513137762804085416125367260734455694595425947111167104209712832457198457539955*x^326 + 269199853129037112066330675015187512838469715128004688229758693653810853382096854168212215807024270063041345381029227967734997801057244625340998363617020065473774474944698220529050936291341054241777485627481770094224893661471433313*x^325 + 912777980742053886307540902024874078761671925909300139210223776007910434919685897745777334935639169142376192377208559118569074119847611238728144157720862270662603700165350059427918756151976658546744498890139622584697320664022899426*x^324 + 1044537351430910788912459137863025461275154709287536509928484136996907535847208824142628459206446621650235082361410996605973490321103495544923015585200568409160154365904785029005660394271723300877068096017252081907124809583987019149*x^323 + 814638369120377002711160484979297482683346831303263187112198275933807192704716615188624471105583191435501330927185467669927192768369820777751482748103363164302001993565296956483411396658253288871380889485128967845514489201671694113*x^322 + 576648103989865889960584933888386055299585110054872156752853430719577358177411227448417389248305666624254057324181758661202404608581518678652620491263407252373860974391415473901679955533958083501762192678555215638533666557268914332*x^321 + 1435986797704584051319409988888035482718420792970996409684106874379873282120361811395569241373021795282829158133382055407626881934134628581760844275809536252919081203811901129266770811673018309329690270052131375621275032972672555519*x^320 + 940659681873139674838301083439686412158520862892729617437610268494403530017914041228720078378637690421673010898097094904551619087653623706021616343930078885056918609876186274869665184426218626437765252360398655966853144200088015018*x^319 + 457228970615600260575724612393785101381624815245876772155742933532402359636463136442770914382562290395869252149014800138184702465709138483439601762718174587517373610206712896498008311084072239861265970548872274059467034149662024603*x^318 + 970987292978683718874265814113799991910029912785162165244134125026253151074401607720853683239583576125438162093551977848486835398962168770187133712535718237865399088199499168486503326831040745821826851275753218393702854187235644233*x^317 + 175413480321822465223243135755549567319712052629249178918368203537732220799772089082459958323027832934219923203352513656642986394663876990428423728238740804981450862616560265875441102846908884067692794779814502280733691212567511245*x^316 + 642353908373190371160078860978189203881673959592122614151494359887303251683823169095488441731121518203390784176403902987183408543892600669709771464319484458699385546531039031587756445879105036805390252767627877056631392377819415094*x^315 + 295687511187226634818851448088016391637149518810480884956973669703333260557345305195475944968266409367115057412064427270853950433898046841964972120638798762491579427025247276227850374273981607700225202543052474821280600462638792464*x^314 + 872096093022682173897548898247168331754205323825141756577881727197088000112197371724605837217186989884565561178890684031195911948784491891027581533689334972663966332938075915413731623241798906132155225144886397486037998852010562599*x^313 + 1065708498400143088089178153810178937002825107988258415031801312953821805170221589472802596310056820135397576079974170364128048211223228501619482350248831027359803110772163003601883699739192964561965932033012396926900015001404811084*x^312 + 716361260454331276953435491527086471371431433636195145616914650859817759284169939653718115931713561605746251987099128281207232698951388618493876258146445343839985637982797555366832046338587782768483413912695920255786982390467694788*x^311 + 1068354619756992598004465393259885890194980374744215083488979301834582047797716499992953659975086703492400573282625594208673727583634122072732227027231673249385653204505816379575006082422943922125429620542596241669140582418145762114*x^310 + 634287545489030293048264494694297335603095187414237358410006377360971251186869939510844923307631194628593331081998308099673389190834025711230937911900061313821818101063915667362218706556666539797810365372924048995813365863442730602*x^309 + 724536990461131817937441584517816020520590163352522127238310127360546492019558935058617337688421301344792130282457037909177206701237563588909408004375591226172746092825336584866585729612434486020317561364311697429758948675278865611*x^308 + 465279901499822162319352831041646728826703914599580779073417268930503207968077278594639209715536115810001922842751178467148559128328852649090522071712520149305571551488290591772432365946723016891110368802615861263410225902648398358*x^307 + 104546573325910113797925466600628589715819187702872348054583188583382941924435551220969701815440018957276355982042781538589260233680944158325791576799025535137793722126546569898729481251403469945046942553669999288244994081376537175*x^306 + 856370482956323801322397908525057881665683802885017517857823847471585683099503349134438973922670362048795468128193678848962640113954251854587803048797009454525165169170463184009488469343615238014731949082002835519632050557076516513*x^305 + 571342813359744592825191363940864439901461537319975939235190498064974231381169193816760350764606023377035051964421663734775269826630843708546129410494295653788533353974422710214305207459051160973741327096869583504740209322032568274*x^304 + 1307390823566849669834282946043533398576827958802924714473973669332742180724408790292125845472005947413530731203823801232042066003165977358407459809582645569444936983830410126299688985883067339875766344569397477825931046579695975167*x^303 + 1418790567465695210802211739208766076930948323504547523747112149881747558796033392861631836045416221324103756049019834331501026125213332967649064473522278754252698380841834047731378081275270341051707882083379359263439667147009238723*x^302 + 459937292834405787761358638993288953597990572789767046749037999986396660497838284545703988540249161360519147546641989615648002072747311068830878625556091677757631346874060080838749120149915977872812560886947805168787960236042209954*x^301 + 852278960373298171411332773682651976450015269758175141828087001986106399705570646049228019968330908303636554377858205640251669566420491879657979103292363135160141805229868596041113936022986630962355565263850900642300435737924565438*x^300 + 874873000710019869668100799419910216659103193635103049008890636775177417954188656208470691924665230142286779889403405581166351092347202038774622925762858780668892325431291717113758302506376413610559179914244556007049961922607411772*x^299 + 894603643580029467934627307115563087280732738949530796108756725867611866986657811618407141798666210766116211139757065481311608906791208316103149533835606479252000395810256303509312805907276962577669254076062401808058809777486718283*x^298 + 927658732539813854402344816701862325148650935167639486658125283639645806148726619773450399410713085624087796819853226361917459737677401919678808727379302833096813450636709061596215745916180664736694614961960191961127448617209791140*x^297 + 1137958464221773774835564219949671977546511842927636096677756700903436921188409911477583285363039271189958629727638065567899333181919366267642379794874437827091792849233792799420785820875513015790544202710757367476895879844197509826*x^296 + 1164265695979175648205341178882943213779681394948547594461312348396345600844348459839142464773696608123838881996562323863659714406162835094231269149129033786888671802789563987056264953559225499376421616254777565272549991773128052228*x^295 + 862423836247335308213683786731078163394740268394215338866797919951877210942528291326405472200210634926128666200221321522189217451844655260656543580224866282058868508719125338733553151250947545715595171376850954587493881468459849977*x^294 + 679987704856955767425389072999057907684073770318382137575994183399414360557001016156544703924589140600471505277313105272759925822022346884434802595103903485439534074943717947743722941321851841596840242368646706864642366730163461026*x^293 + 471696420947422586475447759953810915619441033940763888813311099314569299296894379215863332281532025853697223795775847998731690340686261252749054415467978911829799430882008915208081285962328678920986477591564028790338815273864456634*x^292 + 1116773137669272862196822955196697286024611500844693584123633785058552134033268183409352300114640585130741776532132846918555754828927619990869461858202561078214166554341301737906671477253725811015099650107459575554851404646027596394*x^291 + 1334756932561195930524403765092828173865424115579025495093307821408812235627841853564694715250468102127837132904601609281973394238194071415267765286405494620758900835060514546111988752635994864733867523975642549169105167187815529781*x^290 + 1025561906053511367885129757611379565355911243109578659541161504159300122903862060426636600232751344925184238302013602635170729368464238288710809054098053216305800555549854840681981886393603831143872407430704854678909262736955930479*x^289 + 663024582271902937598033460921125439131578098055757335328404812023461135433167137465065513991890008292812306621316664948679025938913363712771133929581099192432699102536888525822215553229764940213730092002945550404821918138391259777*x^288 + 1376894842778376631681480853416651542011712514072509599089224529229040335916124182072329351682619623872728472757505807249333572029668596209954353843001186274595917504587017551732600819004996852538566516049789463496850578418135956541*x^287 + 887288548104600924743497545586082759265428014449537576848943671317610947383205480953624646301611926386851589550583291551988033494530827494650847876643181167163718790872316151942862775378463358414764534873291656058774636247962957848*x^286 + 1192335598628263606271260198979540505639764131252925994301640871307346682961051996851021290183867110401811938147196563003355606709051749195788276888143777283107991986127121498114968051826777517213567328231105713549670980726677037685*x^285 + 1246525046884952041138788942019374157820364067310612924125851247843935426985198956760820269717640793901058965165817277448073461560284035735168511624936115979191436536277942870719665078665778814958144533053354561236065587266941113264*x^284 + 529782315245525872969378235657718106462409016003449071835439088403362932027729232139953666095747097586874321977123325895824912261205719933189749918134011768845211764632297234782469957027504510633699799702668398393817071295205084711*x^283 + 1335340512107186107856364057437905677777386115330226986921695499414207600846777957113387728168821083214958032130958207963556155930393376399257073462009708160701580825403234518325457078084514138147698398885157336158059446950444278665*x^282 + 813018313904780720341888706160391598686746863235582072293367608597716564965163261447786988462611708149172066759215703037092372561847637514002491290131779169154509238007653828700160155429154411620325670563850436177481518004130439695*x^281 + 41547671984309077690927799110614391139660564713065264325760111440670849849866245409049684894199669613113315760751734876023469410119644255555349770551165207555533163073664203000274092786837782720884560522048417825806150445200955227*x^280 + 19478523082936190949334780707462194223239924407206496896769918955559055888471595152546704538430221442258785028887935177998992752960180183159854494567189312509132092153605411350853809226617348199486894747888392995634473624766888970*x^279 + 713308392602752410392304115033478800192452545848748131284354139326889735753783041288703464777196084175093711896785855493168512963903963674343196222493534579100632161271983425864584764878116063765087910205623862635651531954220089343*x^278 + 234532042619734151723790249602349116969681422499913381317413841213167836190630623753762714483163566258530907039673436089456855269286199028927924528848670259082171542133743713987453732433023381560905762395604730389433822919012891286*x^277 + 736999964829968561088095351891289318017950506837510642093778012178162023994665536501128229477838186544592376210517114885304666752292781119679384526570859994136931435042026487764333812262624276801273156830074883760267128803298371236*x^276 + 1046646340690186939245953757623451234481757335917950571663516692734994385568260196390393222379536953781403392077676386045358009955179358526071920599966955623202432843673815345565636220362404020210330352189486794347206024706599903624*x^275 + 1042937585561636149762915356500924160641427651566295020244453979463270805855684098575238602543989561120908613943594208464517274496807784527365241344255072565228091422958114921629679361349063182633169646048869317985268596814188089991*x^274 + 310061078482883865681869749811926491759702305922709046548990197787982932833261741317052913370993906253048002801388742960118773680853596313686060444791005371883841483885904626185204527402629034076707723572709407108796285310261430362*x^273 + 1250060964804935916127465397728495417423589156600089539625462711673317942210280774075988356859091231998244285668485168647733468860377156570727487799964341231269570488247589914565043411256992797838814211528161526318587347188442663544*x^272 + 324330156001403701857397304942393326488300773819756829129604359394090179288783542608836896671676502073281671951194623371618122349132890509179397445984157307448463113179689857359669005457827018247465566269143859393582277009755596362*x^271 + 801242831108671478330647233075677020192896411626220363547805126942518769164654282593932759233306756178721254694252556349377740240868517666675202609420949764919523828885709566672386865399879742910263835331628105346617611418999616927*x^270 + 1071530761617181884634630986611263860164139119357152660971265885185752735746887879977770038025701731969506125763265380757655833907296328846347981653546869653724871065860754383504256201640543476459410159055162354340130927293189244607*x^269 + 533041984406232671673693866604404241986195628925417983464772287069848383689563450887409021679977321933437929866335327707195400121215443376894772289096945410283694076060813542219865266516886459771552331827443201134720485312271361105*x^268 + 997682333381262433174235967943495249464988809152746967936320746386993590853429397399050302058160232976829283311071480022038212449534178022018246444924176001049157749470684992184801805427964637550893806506932978770780185626039239225*x^267 + 1056614812737233530094683147932620962531034284754985500205170370630126947627437889911285518129629770152806001510620856360147897691446128738724685108481786618142327707522089175875091226552438762836293896969194691103662067613266222170*x^266 + 653229991259585332109983490741488024491543838015784021208668640333741145461127330564234317965634908681710795620764488613695513143779605189303381834628112407885656251743451482101655122812532304701258163362851834084004458805120223080*x^265 + 1264978623857284124253961591647230416184978540284403563936446432861444461558825816632440294927314745354374292672155924781128642121463019160619081273910288867482512557479678744874007255592980657210558914796978527658286730826396172138*x^264 + 749382731958078007745567674209788677263811348222511951519991870521916407433886480903772659193444082997836219137229927334897598263143376694536381697027853354765428104435911633690708017247801334671175299162611554233379050140795801839*x^263 + 400140650364449635948819512885046954650352083234132900668104975239314696153217889467161374449362302736462446563655298359239291114937210049703875411774807418527089583072507156051066467243419484738113514540577047258973824952532939134*x^262 + 344451243083917377638743359181724081512678758839057629622770388913753909556719728031963333135345449132516387799342208429469270215924820963129354417931250203492138318662298368678038627838186618316635355879848586872750941511580562143*x^261 + 908702216070302811230897602291661512387818610734172877161883726398445581035920818641736234938487556968690119153538958103342917499211406425359242514743172726739782163853020059402455913037552727914483751494277046211407799170535719257*x^260 + 797830239999532774104660213887008292557398191949649996334385714707885235799911904686776497414584000430846483082939395110235951188541030478885977992739056371178461741778348197166882628176000507367518717865806007475720448216807495576*x^259 + 824502396572280804781781472222002340711110460594198590370756198625181022838289099587697996106346687050307991498342274428826773962865475093220127768428312579772644202735912716611457067900437841395831108605785246552103757036531072383*x^258 + 352250215218092176694717495170989941771496293155601263117409850262338819220520068732650193158480293613308666314441313361233568437170927554343177458437781486285134688069375875410783683688160891213837307765804075639327914736806431333*x^257 + 85966317072504243653525378994070537574841277387531278545332874268289578109509546235473885421195145640019841032590897922046042821349133435245902177091973095459969164442791529557977003980359155533060787501411743316219265381712009653*x^256 + 360388605980140584078500528727892480066342629411922238637380557366817434889560594236947730004341938692124009694400987229446163637718991994972909627457569290172550427058883239844953563414648414694587158181113549119434585369266586502*x^255 + 662368960560287679994195246814443764054816796753971281257028317493172436725707064560582755560919117939541841152351733491904597065856426173572237230869255356993784245583207731557520802380053178647644222000017533496004662606663129039*x^254 + 142057903320615749004085168892113570364855101555130286449579177847454033751748352234982977598579235610218667133925147262250324630967525547179077657384456483944855739838614725585873603707497437696628002256138151047799166936725153528*x^253 + 825741325656133301999049682847727529659801642095458096244490823664655987739276983697291996266674308819429507268316340110699008980262174270933394724139061080347585184372748399133195159921921197751101949753822274948077421712412657236*x^252 + 569199658722172482917167937125691681517759696442498099024384673647925104616698863490079851652000677282722972768209964049211776827829114066609015565960232189806719213682192206025062422274993960286963270720742963417697929628181197056*x^251 + 444803836792970346637723783189381093788788449688074557694553187900385579382532141168041074136936295644419651726252872899768087047214272464832310314107529115524696894633882585179465195520466220235952199667498910312990578439816360277*x^250 + 134969862426559488712366075241235314618856096671702221154827790006342977547953823653214891036331179197212853245375517506559970095673462671779492944993817774488885184563568067388213387072742532177902943312296127517757944406313586376*x^249 + 1193535100830340954039585770454699332173089205195162137821984073995002010445909129840089210052610100893137622520138924237187266410436517368865799419519755464977270884584368557448672499091092427873462983562536079378175882073382136380*x^248 + 1027645778302815499429439838642801055977498726145137120094622785591135412082006989405626364462762960975729783845230130847010488762893335430421996079613443400614643028582999021957204097667809460073610950265651745817430803508900233393*x^247 + 332684825983880577849495972827479448659464945655399791835050996713776034389651627674181750173175588064277446137216924787300758722644890723563105764419933846586758254554699024245175187761728584860902205055209190981171264627945132467*x^246 + 1384662715059352218062947091855002125293846041935942576813846539930116569187131661878016806639443042706633714834467044192198813974519274627935244259961716341332537021804908029870170203775147018783364508613432638547260780806025402867*x^245 + 331818797158884146211076083891179558275675740626894086138895120137982898292133163149938315172646461540738491406036432425022808626219301876755129910029446931826215052961491568189041371777932103151512706398858955928583700277333712330*x^244 + 625552429029472668427094346854974324773818687310015977742096550932283503261331148086242754947635962838847372892756658566614644622070159292431585699486895803173932885097479258079947338906450351537611645662784880157334239864301597879*x^243 + 661419570837857355973524793779118256700951882354447423274282309237776382253942726770655295363388573250200894939375620890158596598968481772508464827215657460294215632937874115142000363399002977416194048958296364922492983321682855954*x^242 + 911157804927644397954697754282301152215000693196203321277502015024275965422623981391521420765076468970727200328964737002003130220450430366830739242797002576904466626788558062636751118093351189545135035009404574179720040316723847817*x^241 + 1246634310636469869918299524497368971264110911339489903536374747539211025690919767372378043888859840318427808774783215783133894283167373941685339258811379059942753784745082128509717803813020264181982436649852137647967722959596092538*x^240 + 335354519939183507458847157366989355057561849810749077598011891309715924966721968467883046510251282805632158762124961693427672016024853885863591243571422410641460721810281699120499205097178195115185039482950100356110561540491651247*x^239 + 1404327303202239808314893212618742452251067841718689520991728953609217792525207810568692713178716095043614191111914456120464706661054189871498150265194735457101843338418365366256670544882101874929881365378365163444846885577199481851*x^238 + 497113155086331928265147485467803260811999532739569673649810609704634166905624944658369562072332617788535235680184946420448558420191634718203050314586592580261348782293501697378203850890266498866453853044224059145893574018905692741*x^237 + 368601566286514493539895924359272517813858179678759412039192622748216724366728847218481530882255714373896660246136925947150062517233990149760807210953966592138124302856993580771969024331367383912724615512155997017766244069370754069*x^236 + 574492588426392769131107184621975327514005613929964381910478586919138913386598942396519758818811585596476083687638515215721508205537861782338958142246576999100387394174595686938542096002281435973786754545886797056248827915366350491*x^235 + 27621085727120323598277332792722243662975631833300061444602621176982725094441641501690237125163568044762098254395501918759387449909973458373680141385119548048527905964599434992102506507982037968002734020435666576845669734311065275*x^234 + 795686476520005966265071106830688598774873471780713751857645248814533408776467320033218168752585632833880045566211348540983236202937179066225346565530730596125510257210323708910083821426612194848290630308381485854251678000261504780*x^233 + 484389916458719354467832196922573453378391026476215425046664889764086763302159034895438567811296720286438695192904551606224483257650442902884282103528130633454322449192554856903729468169622422210619756188516578770124070505273829047*x^232 + 813721610322227869676087293926472188418325006929608892128683561569705040768403082519312286343078729539771857208947355233371933401912668619906073843532143504290635716532576325480095048064547650765211609742134788685377917680722396413*x^231 + 778570868247701246497487405296999099553570375520984790626829308646927494287404182689272168810826828713183846360631471039376037630460331879714245305247207610151493978548164352168297927156243401824714728035262542908386568485988951716*x^230 + 642580144017568564686030191297491290507979081196476216556666134745550615961737021721646096693590742508083907969236407621193321656270820987943558921172312410517207505344975661835251063456848112571327852096908861168125419480725580289*x^229 + 1125488729029105289840549569989468485032856685960680215504727685133978990236527696665230061485484427685260845124361337026200997507379488168808486749721948557634843417698485409709546204475339225401280611313360230813742749497097509785*x^228 + 1153881395149774668403210792700729224710691277332599984403858744773848431591541299477947429344853614033275941118862936827336269087577407482269095565049586947365682582949756762123909125604005483222496093434834067974159382309451675136*x^227 + 91233020677674947213171670999856154437034277603356897715739557666221157806444352581449531181710409028224069007748020232371580993542597213970509322007846261792251946174110896527292195016833233240317729020386426736783879622362490853*x^226 + 697021689846855257357653701091170130947155978485705376406189630810773331034219846308235580642290701520492504371181805854519835284465972580135395400996717507060211576114244174002506491480504294007799171794853022124123349469098950034*x^225 + 672549509265421701319419239527249225979215869141773350356824617436886484126825409308632502479624164698767355590304045764128505459748985077238405600208791296713126361409944546222413432342826852743809959028977711847579341604277287479*x^224 + 801348071051000607597755521835848089391097635729064711220521692214710757657548923197903059619854087227182964488240220389266205095920635728199414813824514477857880130797740068062348380243803059147685610884779446525364149564904758132*x^223 + 921169360996711129130428766036332715244407891024136177403207214208676027549813046033820421103204220625556058369850568303502794508731753175756991244596086475438508904413955058843783693935148010280567166605476044900389102043676734639*x^222 + 796277080924809039316695351434310200014740354378612528358846121461093661260821437912659980884806074121694615613969467778548219496500077721724502293925181010919924083493159846786712570414248910246224261936450591332817993029894905219*x^221 + 719549009196651855720458962987790823871398952651098438553831803779692141225732555800608785764202675091851642721396902185109133329296752557061721082182142474861404745990470978502822561034712779827131089421426687068010386196724526390*x^220 + 1022830461309920591608613777231069720010911237376537984498711612152180268025901400228708455827253644118319874905258741962509956997058262121137683631699424301418536126787212681294225891246095198325551929003080361391476657229850262469*x^219 + 123046998661443013221226687894536587033460539843130144413237370039005042229766581281272852412508127229341661111125833338850331061093687913487609745851972587565899514990303341171159857651618842097348193286668875873353593044487800558*x^218 + 480688302859552267106617957417047787070436923673405662217310195178533373548684550835237568094393760721197895205727920181840252095209145533529558724304967389950756288009404735650219066700843028515648715329220318495358114990129329201*x^217 + 440649888681477161989902246115613127038920138842403179201325278672732770277558818060132984147874609889332948038289517315957164173767588810677088825224205351140294221934136167751796058537060460685953843059962045658091456446254699762*x^216 + 526038247199188484163332004505539766446032040647767528013296676986501532039203077209447479763870929201098250023645901120514436201777931744929072165092425957955334490195213188046190276934740861661942999359769659340574577140921605604*x^215 + 149636625892999331617308005657400465158116702613140507692380938443503920367882989127339172037846659834307407641353717054470816329346469462689646258727141824723808290948923549468654150287686280643459776346626714223210526826001357271*x^214 + 287851194228674389441953021280079559787765841032143579772695683835383839874765955981071348869508406166250563119751574606463960803883625507956537593642966718435122086709073334356357905248339250605117541055905464236189270621068842007*x^213 + 1123600673873079828601909362003299001818172342026313481773268258969742853512941307609446482253798710585093820704086458563941202109613774688028696003691271455346030839583104787692730192692319297150555143670643998173867473322027957805*x^212 + 243321462122055199747195548857225926738899858961931804813079779321384243534061782825751220790185359562276139475723779592595985251201433027481497630307796866246278993768939768948571987604979105633255733082690705013510545278551635744*x^211 + 1042651797680718131166554689605943667285375550640332323986180206184220816155101183485257850353653933322673829649859382296091619187573310553587780468354464059703386538948861813123930695853309827244160231983218799351813227036359723927*x^210 + 258166221450079868357695332069240224843446114417172420018372617293443741964266756569125390072511125852422635297963721596432259184432041133726665322249553305520650227979950676443568189531543881527892718534098640541640086964496381253*x^209 + 996030976644742389075695991853732107298292948070155156187039609676032605986513157347585331334850809011218759346905304918951267911975032698583518223253684228295624987092542443156836401029219683401035077044815317127193445725454454041*x^208 + 70400523055746595100358203136696212074476922406326613009323373571742030205042254075855794520272250050592612857123787387911532143784208101228843814158787546587421884504896632028718438597279559383965784296885733594943055651344682857*x^207 + 918031974725366675904722677604067964048875448401527654908299864303246552741147706517428080013722448997564041646008841603873614492075459658256954218464891386768267053154313083686749968140738791990832227716092645942418714153741955100*x^206 + 100737169364994722643651630383715465279262562722293840141201062545298690738094331374230049235357779632898716690977841983809244355523798110171519132542586682049070948332451309852467704535212635035451522885772069157822466898910481580*x^205 + 386314387973165932633259583679714519242793129826842354226984644945856684616880341355684515067723075903238630702402105757904196232394917036881208016089721082778552236552170138743953441204574443625699815680651667883388681904187386072*x^204 + 1023655734885766192906253435619080641452657506133525708572035129699859991035747156213007724813740753809534296063007315869902231355542937693836656306396041238981132912572473013661023475207891744629834362324600968373568327657404293424*x^203 + 567808435648045252090010542297913533359630696312876764262242703677520323667092187548107217059398400835762105064609419743689137467159132572848980415889371397464682814624035667517904765984014357442779382444312836169296391449194243266*x^202 + 1338559193776676184139615171806108026732923247090195673923213090285848692679761026751958773519968528703862735878117968951255499888657967223187398831184888201939185215746038155644279685978449999475095922873504451629096234695331880272*x^201 + 592547059802637129764072007307944310670359662742979028551143675070258921608393940217551267713125627142125330364910798227306760978694371847668477635042855022338991109913179073249100013816401092799061308005079202802935419592049538268*x^200 + 1218927553206258547223530378638762217908775713282153378375936812683950836416561874249519914269544671714939462023889819727879282895190769077527498079628383108819351365022140845733565861528521746763179767860640159447654783386062155638*x^199 + 1389506221487920189924498422536491421400626944848539352227577766905383558257915982738728632392384060079798054653837365647884071133647133760719592539328158123642774809128439755863397852480942700053898529858239225638410978486177593282*x^198 + 1008695514675077600198356219406845558682069522471445557238245785001523068092101000004651534643884684483272541634149911422418486353661976725852074846097736338411570183741801259852112720061776948590917233537701886852141654500580252322*x^197 + 360863865150839798116938584121212255497910107030778189695455702585960712740102225252570369172035517842143377521959939380033961615306551362850844499773479496104555375454821985296914203634288816333931251031566994743926868841875740961*x^196 + 104975309848353164519040689349707936850387507964633637010730731169303756433565683952654416798687573400079251364508138451939687198396735640808814684663388717542650349125422773381173081187470087520161079289657672438665951874438277710*x^195 + 1292485723112534325488664167296079350433882027501286685229175689719037903952563817682136762634633303108667793279738389003927626444883374617598675974785705377958062240071388573897678199367433309300188425898359283056198048061109349286*x^194 + 187672229352148291360869053978898741428825217836782070121925418071595840788813113234536569868117715714011023898266928693834276438666011501812371009328176203756922675588502242079956526401189353080928063385361946351167299017347005068*x^193 + 835685894640743849280067146778572469994816409156504998888033218452267261551198666112637363446673105060553633495466111937084109617926644030755392272712170421808982508855477691230656928938619942438213453486314436155347421456060983415*x^192 + 781195114114888766268052426341130216787329257702599226533270665141268976608274286427629203652003178956726222718664068704260642007702562095618289517601538537860413767564778554535696405083542044658894658935895458505331678937625637198*x^191 + 991907810997817164563223752845531168708412760643682614402845361028931615749652974144697094551723245714601877830690420179054855384080585019436789854255415152756795753033728770781313265856981512979837240112015831312100835375769473765*x^190 + 1393026940910224798434588904349888930353043816298437721356064599947463422072621004261346700437897695794636835441395702805846265826244305005955091968702430028515522170807673764926140961055059109492090471099041260908801308268133206331*x^189 + 1181405698027281962072259175347841321246911227630551340233134388658340498493949044119488857252076615938921956684732266795744558637296463155227239863942679871422480047292719164914836850135998419222354173297812606638018998577734694400*x^188 + 225700412155060506306480559219382761980922697152243387063320853103863936271773180259681163814780144544940550931936903716999451663871985749055741979874936451142571904294753367980143645366657400460413119026173110560601402378123374821*x^187 + 1409405225715941108477209521039549697119030670867525533186345866567246850367757141175681140702501666521954964180876737568004414363297402377246624054870247272028243259530086483276098467516133631604074456730653464961536267056751312464*x^186 + 1262630908023396090657669109614616188135207578312394579899028490374099088664837186779564172460667901292902421785928111432772835946519731230267125951511733657348039619050317105718490929965453627326674011109575049588664669082111244227*x^185 + 169761500419240689040473260921106431536736733028080566504567120895541208548059973534783825689673909618557309741107795435402904348618577273401977306469382753906095234582266028114229849506029291830447873092101760144315046673851187496*x^184 + 97358125664416891350064585700979904742278537237024448840197515815084085411493571035688932280348853168583896641963830109077824642304453274725491873608856862192470089006271708514809644962708064689408856310546932573496487112983826543*x^183 + 1416280528166416923784943868023725525614870432560050754574182168245541365734464796378940116583703099491093072531416555725735482028875395922255897636959197751392708948741182846267081835394470759190792414955540230102040685913630232450*x^182 + 643348023248534667302088217755189140197998878304108514320758347637122582802688245872183780263488623813802776534631089481576570478046014981655763704594319005186615534589680200111017954291667929657119134672868350335000894556236688387*x^181 + 1163361899996045511018633947535161901365226393493644903991788418928663927629594089328644763448771659422403190006102866394045158566978827474039641252886739989648990903786686572587916344997806291354648812784347798103514117680169455297*x^180 + 990786958681631182651108789836022401525641424373782743908330686990173558332233785053161411048575312537585168002851704580369644601777678511347047336397235794847424938633029599337513879188211256752657396683288074165159692014486062405*x^179 + 1414483991847059768500952827416456350766839807367818349245745759748634903764735690440819765417226053838686331300187674598811136674737661943395486787887354875500748693174968574081507772739456645191256825746719061575266954215480201137*x^178 + 938428363599348978922472264031893092222219485570502695725864203709108180712625361048082042973166548668483187269571583325273074728246871463485285564144877103043828700454853673806284615919536960625542265547109871539298347472736685790*x^177 + 493142996878610075215016370150468815181281338241619767560317950714147856298032522956642276465637485440808616390807351482927560078873394975629602062760586528932392659102479112867869570430988456310932920327647402265097124600522103118*x^176 + 404170492739654532840519946389152531016213094902079810423903318044317469354916061318559748546986534240519981340209233080256936114322265915894047776358611627240943422702101152476475492851995699585090164444461567310898653821761717691*x^175 + 1099798949556291893312554891044423636718303589874924861397199599958641459814472100894604208491493646656181082615532958460088048541322803134760688223716162980612923814319302385871792011149307505288044904635139832860731555992539780315*x^174 + 1185477232894093747296921592075623019606717286955338962665515656259226014103013563916128917380871499047370868672238455840776147538417893834009906922706529223558427907448923001941502080966292023001076576977997916031022027442129121581*x^173 + 1345191457795241061873779213006602541039544171173627975147709579749625047306987987114481581903736662481335943785621596821902582574498632902827532907674898412350985212259976232109607546603686745104988174999015666513262724445365561983*x^172 + 710697018851905207026840802484437835149558132743979737675247507975669414123696053174770594785889940405144912532594808578769123283862979369340457409845669042870209947590123372518208735307426143423961796307827022889843117770258776705*x^171 + 1405745480672452780024039731759008798628215122438232513280118529203630116638718365083552791834003044676460898378980691195555526027854780397919502308181962901358728682146368428065380705802210655404358727817046117506019401824748142010*x^170 + 722273096111595722762017083741768306718462562877377647276679692505236374209315948477624655218447410141273088472012258037456643827491681547890593910072581917315914799201535452678826216684826532060331257050597602686448422639359339484*x^169 + 538391664391233175624860914425447971075663785658100687979923195230075504850068723378954479116635537579315332915062271937495609492138684213100092851034086698655674208255316410193127493410756132801167606449458169246286694257180880765*x^168 + 1382879737727575469282383038624340201390320578965288348926055776538494409845203767338517225685701809579761032199901045526529817204849711390718951200329994508906499774417827764869952989699882476385102224013490950951984595648072724686*x^167 + 376572897487640399259273364459318679689386547929687603023246127656161164287234165372670097824517163637400535411629963896570244136259599815649979700241812466189583726836822792549998554315805525221426008496968477001735503699145865770*x^166 + 684949531918285454746038652883204614180173849355327090605175176932022553476732987046532264241512470872683872300237049611072342614771688354476662335851445063694121616667368973284604847270697235032446409485040557681606057348737820932*x^165 + 27286921663512596882106496611286878435613219386955007305049933960287256023624321825396156717842370708272043544544460319859650588483634304524024800147647237003129703126953948607423031546275067045028979249209323752254573359152548528*x^164 + 704125770642402516924940667190882017117135692313354102037562852808034898713240856367085999587713319514920400347397906160234062253111774570298828560123560185177279717700762802772492242924085925600465155553683102239713759251522913790*x^163 + 717565187755764205253883290646685637418223781409823861086515579835745547066424747804214966870659745165743754472727126910067658347058147434911525832958170554771673509851200061134143013878200853331996474612187992692121446649483081886*x^162 + 70398418050764258372039303269384062811345193036178897281600099164932573950185332918148139221326240424524481164425444649397634045106216818433355839810642767624265797847107727796056113402205064336983106942387236065603754690759052447*x^161 + 190648322241775485451040317804732405590558254315790202871510503317575511239768641739536512487751272947084801855270687111390795961106234024675161715001913122482783969430944439548951067039414003654417083718599226538036895989362381877*x^160 + 222367940307004742664921202378200234487766614038733078707809403648250893821313222512761230189908320238803284615938529749990639923347934966910221918143474909288902873438014397785290763419691134712668684194288307394076749309219611347*x^159 + 735366569636322092327691050265255874298903502237473789577954274647191345036257564788762698856696545704292022782666990568302327121356319411151943803469355862324561594135553113729400132902708402339580781603582393377004444933083701234*x^158 + 8377764099837851103535005631702488093714252460435069550199105267745143046645852644216604108710697740445807044167642988739138697754503390882032957938788713353253183905675521831231055828225350301736833380566666159394503090021740630*x^157 + 828331595098816186923970550560473370436569437814864516428925557838215897219761232084795908828098514272783552684501907010391264366869608512276037847173318126619746768328347682962501892557091580059799705398465549812889849573242930143*x^156 + 1276156080234504199601672887051597782845912896682936880932874954299112833299631380129887494017738000513522574005630319541578644470616478362734845928374830762979665938959123629140579805014451303813124473712962167248153015096777729578*x^155 + 132749413373598533933234028177014777445238449107276154532449009928306774289590282416788113311861840749808250901600620667513841135510878032073017768964608030198824744436941439207272417420313573004578641310908858459771551987472590211*x^154 + 1378596740250464142755846266217905990286495811021717026131448422230978567101375504681883426008243809481351310711876629030276787180978289248068763538159789423115525773341081840309860396517872975075062398965919143535522422891509550720*x^153 + 92911128230964402233524718657074718567656550862920867770933541174515679954381774172881134291397156082369144123587505301422350241475133514597918218749471563474138747539921701451337255837977823149922982922380252449566833675318968681*x^152 + 260885731332558838654547093828455896717685841518706214551715683133287382700813684810724251149623610100419510926178018015173116297377000970657069758733814479565278917612779528383818018163483371607054851122916058769861096439290852868*x^151 + 1200506058402780313561599249952528030171835511877058357651148736610749798742668006889456027097416540250078554808142897817762663661484571621807188588128914761850508291671500689038993236119295734399770773216012956900129857129159785773*x^150 + 187634844314590800093698505775339702310137006882205841769939531745614717550169026645168612266497168264811023213664339973978577726239862284441067416684113692261324214466384456053033536534065819618447339497735480226676967508042013042*x^149 + 962211622687121912777164826171952555243486619417367024299460834468181815640074341446371217970526405307085168496663347997245962726642868687426780953843382048117296431815301957551426607990756957349499340874855921040444209638644554847*x^148 + 647713323153359505517266462484450676941910880965429499357227578833319461506041965679355587904377602476227606818636738423191566890082532078801610727468047860269235919767906722671113932083594882133630191043156400507353608452629628955*x^147 + 324814245100177428062537952682473834526533160239219859101061318614509797379573771234750824544057346444832836129922366318987393870866672202461499433117580888037204704971749240511254883780943704398414010600950818847599976841393132139*x^146 + 277053223242215456338526268324037826199685565236297526333825292752480211259006100131996912555226954708966833434249868746460339098878837372099909420152824096420868308212727744061154205302840303879250769285176168755465611835411045001*x^145 + 299892330240020767096904247734472908662163660264878523256279447808649564867814828454569698852173130516226163889772580951379931947098446059125313287489391145592637047708428971904337886033423929903104308254161094191619819117750580666*x^144 + 989497208380574721751828720762820792470796424958922332226104081949172352056364695109767417271690162311266960778907364381278155634568861531194612104714948058048103691267026468977721792236348955346238171836326355709678340844186221199*x^143 + 1301096269271540948346645333400147993758897085381129677522030135930527148238920707557346333648688972635096603117736995890628079809732710226199260986097509692509565149032415800372675611033245216589186557814024001400117048882864137489*x^142 + 640156582487982083251486673020417040089438687378360979188866201766154399183274501057856912505369604860281093956564201284486848636590656137961780310514091526941051055541108782191845786115398935852675833457036547233619056184197947549*x^141 + 1412031379804538532017548825188899250428218795473814234564052824246792814439050258267540257305737422371457928027679653291055928200082748111825938593224055185266386827813183995264674098305108575235178938389082324431900800503962685666*x^140 + 625037490266982418246264451543367428748180199376212215816618067250612211955239250537153112454661676638572825158770770283154351458308860156036931059803380571797603171799998044681586226574850791178704521804671809852467420205163301964*x^139 + 1385202061103282033786100993143153224707856519098646324879326778397604813927825471867218738773600325670520026342284750750405170301721425224088697597790681383204576778738382480462306419832645261454502299777883481437341482793603337801*x^138 + 713111648467165802364954471204136247306629875017047958587826081201568126420641488595183088124331989265103454323531301669717816563835510394677732050102224878855147661518155993281835897766920088755872446045694061008738593559764608047*x^137 + 1132956791212217224140680443850534616481843183913308474741291996089431849363462116797588676392659310754409441369225654878389290772884829700250221661907663665404748989115768689940298440646671586530253775397942946731357211541445965036*x^136 + 238440072004848658370152339638594354587410463143074183988308656028447677287212074769153357301244363459744993718071986459388733600339453547109442599880514057654505995922886389742015410718538754350882036504493697066999468058936796281*x^135 + 331878663948311471832918026716357234762169621893548636062989933394238693339643461225445566478480013381850910811333796426451778945159889059049659607107594050920940950600708381466247306119782945120969800394212483534588257484198589897*x^134 + 311958750547747024737355326185060182897232324279424223552989191661067715040729511214846177345671588804641983583463388773984388787221935446746761772019422607896102132464584443314298742234082604351565947886450457320956758558015066549*x^133 + 1076337718585594728025565502966524881054593848260452447820950954774693974229337612667132929416862204851860236452397379088598412359776215800378152876770093671706005549584759684704732393283435069882124713353150661660602288206762961511*x^132 + 12428122268060412056299856928396654008603228321519413344850591208785185065288360476995037618762944177826398915976425200037348030606567830371918481194722062941007336761218095083414999625852437662678410795476524582032762183778371893*x^131 + 772689295991530068007812517224980483112350406403654710342996672004706705454736147895341860523145557333089534191090575245422528370446112819934309963249665906108323609798124926051348530095678046412023332472431455742044863261405441024*x^130 + 1109488675149664218994105057123522940586447186320337272370929809838654869282461145267570879493819654743435208843587407162060552078044645655491529536868168873685579419469267719085150249755579796762093913765336345874442614283235203427*x^129 + 626366299489469617121963838428889845507346573588320090975017584324505757240534754908541572445278870577453830786381768688421606010302543552247373784186514314943718489380607835059247729504616853603660521463247132964910678308389195700*x^128 + 947861429177146058074597298429450747978915121961644446600008301856602064827619193831362924149679340854334867105956917790887150579794060245841605632876257369662961010676501931470405405627988902831334348704187496971584300706580680985*x^127 + 1201549843471676690482555082744567722531046037115999963230003344867247332005804518492359381003858045816431697758208161152845584351249042377900560668319500125401370126050733484442105001510415309745425573528497446440023262384409803580*x^126 + 1271256639302025255180431151972708840661631869932493459241080622546396174759581226380829874201435986671517838841938586909756757582605415429737393339351330106915104431268318728244099552518140581772583501973300482589936163262696294060*x^125 + 949917998286471676083777621740977036759153865169485379224404509857596201991575328398841287469001298745890248726528372273164358024971750217515989896684130641640448028295597323746709244636927190673969226611015230664274033159491432719*x^124 + 253700962514420376354574508622272003376643449925961693452869924553149398610690771243640055736974726148581750067042420408808578249482559858064619963089066998911952112896052747533561603672560253886726958466668497238639133726960609344*x^123 + 583355849298199330802936131577505571977645262270392953745229061533799689304015843847888460293092667498592697641993608605794617407720347810693877377837744711776437137429290364616886534971955460408411289047116818389420950264667005859*x^122 + 1151634856474959778514717484451568317923827025017080789937348356052062096674388895448563583909005152666952354215380787237218190135272524883997208563222207502596242876617618736153788598691457223161410547210722866597677722887364199236*x^121 + 760201202715512204552311375340487981153740210791379032787825993420681845772469213225484187913913595590015095116934234720762553650890841499605238418229740001019671109075562324402999735592940660024781342165281345610180469799839857444*x^120 + 1102004574998895474585951013235703494667149366657028041714536252588023817975188356817497393719211956752448783326011685789033620285862464436168803868712872836477363024985792080616471653465957406052519550781699060057520892582614718578*x^119 + 1293144413702671862667890471676363940815204429385128602403230932068177132171029530122036136467192189010060003838170535051038340949962028413322684126287610827598664677769419958401723593555000649942791341452732232889455555859771676867*x^118 + 760768420021783438015957228306067211711677598071497403433109370541730460028015378783477595876342079975109380966525581169341257009402999018264549961214028548031112935652266388844939470218302153793206244855405433234746030589768410882*x^117 + 541552720103407192304588043227926458371246267300893953367084159390093827833530129117719761928461301253071887504297983645418807890911251924095972393015527253407830988131074200396403424997289546508996248654006720556638709914663474046*x^116 + 319700834960399032394986432890558560152268903377863804799216495328459447895325538338348292504230614557133791465904154000070212557694856027135004357074410946483455758544294500583063755325005027139961482359754468844159789374249548338*x^115 + 49783154810044668881949497540299788532910133097874614456219893991301388355355849692734620871928193387865019250447727931788872824595104075135255338091359723307064207595916515632519114525946944203223761780043035326937695195380703999*x^114 + 525742991521195024163032229539915071704557992787540763167347551719177501655270153481462366996741691753688267451771009607156753361255705731608747676098305515016130939765273521799880758090875881759817815387171853652922522177836500326*x^113 + 524297810146301565944960341210143171347491119270183107170224710214010795537109163163997356722558821375297987741812911778108409795485309797429286193425351308951543501173329086859042467384387966616741313466806413382003899811547019071*x^112 + 340915297988471466095825059315536012202859850633804937983438835792904882893666544007833623296917959741028589401141039715628233078948456071727360455048314238410419204610503706845220250871934449620235301612460459751065223332770472217*x^111 + 853485754322251690354080976692944534011916565375663951801880235115614314912256348034234689359184871752934155255509395635334977194702001814905999869186019117171981951030080476084970547165784385133182329268478751340932752350593618197*x^110 + 120938836039908465805959858723474865237928291519094830595773479957907631725886174216409000206611312003467801710775820977101720030313420892673250844035496266078716208996036806328431738116777907032148472495335817910335702496635902118*x^109 + 1390843608851980943093061997935077283712633605718061010883155536359384320600681497194441222197699262289836962150148210487943069007291370495396440859192770989378240205690193495602168197415793461464153590345597232696966922048218626287*x^108 + 454437718367647878149486580991669560768481029305260699765670769609082065616754163921157410184536638839905130350394019568126415163280284320724856457459450173860621493075779353786246031650035162486819213401787637365775068756186588937*x^107 + 52220090206107000315632501292293719335119405361597270556178330224446045110042382474207748045061268896167118154362037907595876468407584193361087353618986607640504854978164602486922536362096930370006576085858273222420306751513225686*x^106 + 179594797639036763445696707256416473913403011370425446748788788987187025633122643657405243196298189237803428616108378156508968480642477873801287956031899351165147246156487838509761655838799104550822632525396853944911505267376532345*x^105 + 271737759370977431040872596484601900618892823929565795499624274265315281085500190159557368092624366176247589001911832495190162130889624854021907904937746951540715670708657016281976160687739009529385176493999911441464393041158350211*x^104 + 585782714560925862617139928626547626386693738732591941624516876000773161252388934210301097151396236160341259903567196829463589569314515662487467952028939699466260551975822919802835305257792312931912771399479447795038751177800436642*x^103 + 639614901205277430607454553638573123751883224926167473397753766847043014304121063994617300067334725693587993228303933883205789915758950390133208485109311722111709578522127579009237655055851130454831465538258286245646404794604618811*x^102 + 1181421660732984483212353784347435452342399840973683864000962951939095667882092606818096648839100403891731696282214917340814254244701061778117570493848201911449935047434280599883834534623103745701574655439997659208562967574740009814*x^101 + 375771287185419344548155622673252182386957566397497702865986482648306644160430130655570146094402511855818457609931078455991896840497504577021767894734788124864522591743055761152313328032784938058417555677199651900735702982820649237*x^100 + 546295414795585789123569225015508654810887984884672800107154868051442848159831675707201674155143812546520792747481649009496606365316136938715903640860640163401480509416584027891923683767707070267974986652443171298387409918024522763*x^99 + 29537289632442135505432216498517450412411333932633844465406121859051315751162622606173070770283929136385339819693653052573974676361201272736662741161697319122837256138528429407625151575462547848539611109773489850502991225337752656*x^98 + 930673904644142568048457665755756338641021542206354460747160764292348760817865832000816434651386611857453437426885453908922845900795901278785748848359896071279749448217384082060568915811804099538869778182566961789893761466774464235*x^97 + 970095310707619633915352322169991584900330410366585517990175686281647161388951957628089951637440837058835777444159707975464010442265864500752151191828166945611812180545436955079830927863180586434595096749202782586707719420959360369*x^96 + 863786780663103043755222231110953935761568288227822201316152603528595662582563043563278742902538447347266517228585793836417947988300453991451298060969277526514489737574915308316422083836165666018327966197668721569172969976103821719*x^95 + 1119720715101826267935943238047039381910176837231097710681425727782953339418261318804346726890027763025105839451151855511989357262150844298473348973550370899310050781834400686490721223036088491680306551772450418483847518367713893927*x^94 + 1243031338185953854459895717637457210565262013295873635078561382219004813051335163213279871323955566476699949273433112003817128495889746300835809712691224635538262390999320224490184588624325989786590578700557231763026499293826706727*x^93 + 1429970290010849523226158520539825206162921789437204463475150766328891658631028561696364444746473247539698924609260405418938965069815038693632676795086290623294968874480534405936380549833565704518174150431450289932494025627868788527*x^92 + 1394484064280884415617978969084182918218138574464665728280705487128807686455449147429253144283460598408984512303559287897651046519774275678776404161116516027538251688915071416765655476667005065904222529607388608910037934728421950828*x^91 + 1399460491931392629986238472616300587243964493117377716444158979832539168025767365010913604732301560125348578742351974989942199380551793778406457003658778835189404653525862458809587316186825847515625517424749304411825649019321638341*x^90 + 294218085690254683822448614851067153330089204890461570204274353472047485882342997157959137813616978775476521161431133381949877869012371542063725270768012633435453627021893368663152199387655282178823120663974988149538839335605066917*x^89 + 691871309876864873980973412095089755126140983253677245249734469833928928914199806311009237579958442969126573438038003349923001325046436465916137359946626382465617361004006951513367620597351153294813457600846330443301638150778229920*x^88 + 1063931257586564098049779436854193217899236340312222244471344064503701814544600738322713485567287672776162327535782280579753328537529409227690756755063579190839403681306428913506603889418066533766819938069175231765636222194298182630*x^87 + 1119549396029906577024523053440208689016650873333428483384242835952678748731936086418315984878801755799375385976599298938942088328126183939643183438501894195745967807936060403928063351285766981801137848327147810726602285240830243521*x^86 + 671545286156281467176453327456050362820929883473541060087593980419607800253273485219004017264679183911236596447100242140622986861484190341171682557287335766217714976377127559394345971995210794007340369339239035461152582683718442407*x^85 + 1340589929225266245679500266496748406268647526774416025305305621405830591720022761038632781300496841685028508217695256328581825981500436134601667043067503154214629657418779515170774671348208426986748986143705932624228562401908204474*x^84 + 452408475512533764768434851630538379531861394414782853403756320759128180676353222496928066743312515629154771996546418050706729216680494093591325909746766236976966967687487732259609320076955259567082241727078733316578281763810657207*x^83 + 365606549155384674878295717643501386860770223027336238010932656262987606598810501170926910672940872563290035450029619292930023534129533483568644997209495479142546057673194164006697875105254085542590229854403453543570573028734744729*x^82 + 1351654569813199657135274342631643587077633122622631205638618227210130286442184745243023760120936588937357696549405234017113632099011220253052867144611094385288415245070229472115536429437787288803171812180484835650485782291154101252*x^81 + 824087178720716609646056046984477135495992276109428404759477612555063249010954136639846003396355701026399620589049394551055224025338939906583605556316090981862521269949335844963433055263194682479023700863128492615509511397928305493*x^80 + 977820998573155910737996934771704771477524356697448801775780138249851511687417077932263634362613664311131013688969759627587003639745003153758456947324441935325304814551719820053133853774165355705326234298146291212724365691773808811*x^79 + 232857862737665287599815417192058218662974303980811994493615504634100859669152985305549379638672299137880477891795947758803755862162876511647214871671794988186633174132775140696503851122452367458469867361582319227451241856950477081*x^78 + 1018760995899913630917729866333275947939635957358761021846007613447185963303053658404211337668325929128875442165889355196966691099045054695276381761882080341831952965958920633204913833571457317222810477054646681070462273833469163847*x^77 + 1290547637407484557395270737600564575781706697479189298799088882384392287134551687647149536416681722968855452358705841605672122000761192874381859218813981221366837516267866460825857642805847123553671002609617236849088504202758128073*x^76 + 628980362739065883600508049106786532507326840532961078862834951804859819772230933511477294821497512726296478663289348134820683735702796252655405394775769019215247233340441949793994083951272534803548482226773428026386124956569625765*x^75 + 1149024799470760397001268672536821587146086164897932552307343244368974120537596292977805580482148866265022565428795050082058729428342773935236969870698099165849581514695415131433224076767295852484705677052835033404861385318659169986*x^74 + 1302412340709643288683089148287190837226818886218125595197213463755310940763288539106694551377739327999258470569399057489809184539328829774400348729353239916169324007975752821741709419354196735159830107162192279786139846743988931553*x^73 + 612608661027287645488925896855189284886603696045194530229955802047687733138025022032490850602407791450616622250297387194166370243227154775240885552189744300136644889342338095162436131571345382572517476259374881821046204115475036502*x^72 + 1008487737033616983211427785384979119984851066299760512153882023284878237544742437493996809198965411072295025403959820712038388531591070965986104513613938445266092807059943284575240673599498381916045773099923865253854664786541713813*x^71 + 823906627980547069480098913318999082525737313036941239746938574625789306481013126080524833717249636901163484290334084715686783494100137501337052009534514095949330497737924024224401832630613527865140310997688660917638094598011564527*x^70 + 692535781696893111643400094739202856030476371469634668470789842348015613821743273056263889499367696766004339106449347079537097428794884071299827579881981314720118976190356370555218651731673085405376966054922084325690371003873470060*x^69 + 764614410058192180315802328103029495922493305515408572490495345807033910600028820694462876262218284948260630645282069617128099247379627191685730445108858823052208507059859152830974944102111208985835613066108952942683689231527229309*x^68 + 939604699795285664954187747839790450707132273024051538425219737133703122977843531201727384231758541857647717736596335261572141118596396194921334314406023914402922807120299295422748884627751803132167847305696434516289550998144081407*x^67 + 14866690313006530046472819070924759553254450872905499196660803333642949433543158120685489595197637535001028196410679451948579484952103038689821407818192564983853859448758727257618165830062871884273154951064507446084485980872378335*x^66 + 355719116163273886461175303506231800183480404669551221640319669613481742166727676323129797039048343760714851215786525698849335632493844974871274562023391757027962241963012382559079713433295831228400706022409399017350792107871195167*x^65 + 285813136042701781252349634757642420874752711497464489813217763468575887008140143515141236915116544439419529277403815107829763234722470589319579112610136899319858721577077171643522909469974097204064865493032981107167543562698068147*x^64 + 714784693626501452320297336104007243554334158379485508078302397198750775108402541718548533068556725129730156805984679741235359630697872390591348525602071964260114137115524532618098573812909625477981763020607959872830688381119513462*x^63 + 1094631241731161810526357526575868777799082885289077148182823857942755422619826070314401073694442471510399815135482896476273339695725097945249370789312602245780401027150967975008148219900929436111229697362958994810820417345161918155*x^62 + 648850873409174514606814207464394062158226503507604001015202644897983891341406729716191996276041087717971062755248839943854029863701910097283184326761981762987243749325622337199060395891136490512272208837800150851939674865694061225*x^61 + 972631119912980331070465847107629207015678524506851233382146653069969260660561877445596822581873098491634535981822203641483015803569730321268915678141342359707928791992422270491696811466067099982105884043585818528623612110560711601*x^60 + 151948234006732343405834443526154878185701276007749761978983768344545608001822632562813786425517247157820002727529609291720572451340864659702919498645761762437710544052448678865663606443153970558935541104241814042839616984828266609*x^59 + 1075382053069270945173925990789801722098306610568917213652818981098963282805702450657377677121841533064453795710055216700668163533328860901446393604940038086773426707805732840902727821564019745893268571928228637790971961511154765821*x^58 + 342319379147470997008849320510103860494521654427735476076552073452960433644374435594473430444882736259432371680373690818226612229276550812141576069277367307225795227427316071434714851111487651666920194471036190780841263510509025354*x^57 + 744215605757544021285290568389499497807117233356010695626507758576197345881639294403222408503681907179715805990573754970343025115275675085639358269839954136404610246152993604234454960021152527120592158157268046414699658099762706109*x^56 + 372126375728397338450782220395733354969774903978748744486164744078189552965434593558679849053406585359226371698693582798131594913991718948387809572341977853825769942351533121488162249053281518624108220034949034843211812414745873183*x^55 + 660594755651877914193370910792567977190761007251431969543027119435141660894861736089281613820630498300773209951702779067096263336589367720688127839996386352581548365911514645572336190965308322400100526179263717280133404355101201263*x^54 + 551057135800015413758027479497089423906105436491672059904665236757646214331593590257578999482134193809152803320448502221959403536663581358157068458973864774039558916647310424908512783136931451856076381195600571811282027531221844307*x^53 + 457174724768227916622078591902786784126779898185436481085412871377847041111792949402934660652659838037730561661810134972830002340925497205933764391433817617293471303627467133592939831830690656886824927512152797267351790190329519832*x^52 + 169474567194763249894430663796739784262550751042258001991954793792777583149678477042161919155982804897657943788247012226856287473300806681863417379259258284673124620672696424464899740571460933360817230110288069344381941967655256801*x^51 + 302266621115374604360758998954259892262719403054187767936620848307532213608332841094043031912386787529649129561542513736706051999324260211333642365805113419165148064138976109158294527415492351368160418478049532210920449962236876281*x^50 + 461199003953975650608684661778240958310148412719820345114684716393011341432971362644131578390970799792895757240266863055572811537489719933417118359510428148259303380629935352728241252390686340401056846484745549493869279473861796384*x^49 + 288940277491775225859257897748050338682620703018240977246569275945278812897967205413326627788692071620457387063726316594548233989536458125247246985850668342676582611681812047317937318804372383489947108135116851614202316838625499359*x^48 + 506537152511227522419414504919731148700616790155816100880129622977625284361818934640642413954849874320615716620973115886815796307690514980136493539457486617355540714510053208743182946958500735777433783923463470535367667824202541925*x^47 + 599322561735811102605169132768790401693339106731465743696940463027659840023147457543711277922057234046439602440008713412134892954664739907227625864824324891633156337382510774288329381694886205465754578259601784475075198158536551657*x^46 + 877583211762451408370444888791895201345549555574167373087324321386892296613621163640524467881332029864310814609631339578391087644635426335620339269651518097521493105785116682801341210965168382817761926179602046026636776637074257771*x^45 + 1272257089254187407847960398195707463570747419822809286425351193257382990086150879496529623960725583467823899738696449131492676397480046811669938591056514637956040732478555183299869985337898424870543157482193619621583653786985930432*x^44 + 1336399842969931373057038027416843630135094761727619144552101627383946278984447524909631076465855167129938932766330282995480317426759961396115335683530860233068778374004174496960181334258680786320240205110703096688494902407619264230*x^43 + 443019037960901363500765351775373670487325445548892410211208892855174333700539622797532357831903673288233945122312669156654741497442645790022996077217167941688118725999547240620028869691948050886094197158288302106177370956968458080*x^42 + 842770011948043839499538979279600795000907569910727044464127563300281958546500057641869726507021634994589459488560352069068229301449716356978904635651734498931709950357600483320476251544269125322267158366909554861669868704861965165*x^41 + 1298895576897675517751566328719263428126825720753448861266239095710844834380535308238126804285110495500021548931927953877981669400848334185421198007296307412052960278715843354194750612066633946034609413295665868884417111724670262847*x^40 + 815060979481467974731280321321336506779638035853541963101117845387573692483937092718420997299955469855086114864471880995984354528408250376804462769655149396459687240914138057447410760727612414794023711882529926082832923780206328668*x^39 + 193729795870099577299663071147819947615511200216399089685771235680941223719170461132333239073234461192987810630419134165193795604591511388426090150755448150290029978123526952521915399172119914386886253056628168042896492324683395090*x^38 + 799334596666091519920918820936903665615488966562813037527328066042435900078658029323135192365318187452089933402958714485991044944158934690827458160203269950157189846385666279205383133769693152172839143052761972998002565801099325787*x^37 + 409028403556676908225219460468525743491971006079122484132372039447910363605615472778673042013204327128342876915941047919885117333050095447040791368415980877251546797739498220402594054615191770984680718678674808329355681452021103645*x^36 + 175192912377301953779056827693074195346807735291930966396291277865883831724945597851807974247829082347816514218496999908463297169823109037600323006771992932460005829179847943471827706668830946704047966334110342842381384024538632256*x^35 + 56971298680825220158866195231223072470419566726460865041633370207967862343381962980602740221831781006591948807974062436826597552308967809132590170372886539590611184928269373493849399685729305665772959206580179914303687555547055619*x^34 + 1056979864500078713886123763915228006097136551312262305884629559399436369913057207162820492700266541436292707145694945464224949575774899356478576507513638396305031812608642330217292598558874976801161837166887288558257093926102162840*x^33 + 492728494808550483312749511287878772922494632589798126932281502796367704950784284483493981520255864515353639724930198976529752543839557703449521536569386667866639659241227807132913095328246516166562808400427965209287573183082084618*x^32 + 1032994969112685966508224252970943128896760473288852867580177892004885816929958859393877040334692031360264438845325356050141653646180081709654290950356789390873915662956102313018793950513361350886636375215322027253212048217755237897*x^31 + 275949501038549085217807681474104512291649732344373202324630765142217403286092934115120682987510166722571341849313615524336970322949614156984381542105380137868951887595421724498588838616113047339659543792358193081307989120786765153*x^30 + 502814051789483574603935674872509984982014072504376543349650858325567102536597167956678069736353651113762513582403084724124312539953080362799498456028173920092718581517166823722360898094783966651071286177082860548522440143098622693*x^29 + 404615510236825710189667578280983014585305036135424228940564312309358470347806234740587437350790167356959790117962573569075564538657015537083397719467886552202352883988554583201168817584919864169306892996380960135324684027313128016*x^28 + 492705834860836536698990657019855126062998814873515812170300353360432021603784666837716631193088264624748166278622253707998185250770134551428982502577987202054971117740007498244394768093559492270133148427705808487131211817251157090*x^27 + 1376477018096567527995626226635346578544954057268613016852336474381567263609103036164759609357111422278052079729289174309188277457941717644755474750696891641871899832579008692494735999120876494451369625396395612519705399557556196851*x^26 + 1016364743558620722312373336118315416763692644044852758494903478534340984538899948362666786824763656211428286681591614056063249234458376208542436744090140710397657775082661183391963835821214556459180277917450537995493741787867944364*x^25 + 753711988075280645606789742413593737958888505669170092395337509777735590437182867242812018447760027972640222952987914143015238494702984630692714325161629830719785133996937400082699253723249789456167167516447310097810662147982710371*x^24 + 910237783307671939504494725933200636869884518045526173940449329484627539942137773747762548876286734516508024196324250155984188995634448894632113812860588734251465374490175865649132012801821280136926372950834371798913256165216948076*x^23 + 82679462123291379109430940077973102905438478918601259748492103162404859723906907290772765980628247710024755163205350368247794745026566282968980730740173677319847808894866082471201764181683787193099347461936158469206468986028805808*x^22 + 1309250864198470044754182507065460243209895163597152810079541149558410486013017886622382300638819582863586350271430110783437961911688125728236683750130880558047916187998594603412868240363118427372431036551045407404859448842964784534*x^21 + 989149650465074758266939259881220481091171620023688540590383048996337226885398996070313992958499253732429025634422082767952498589880823000745569294446163071077245973548508527668079558412420897244187563129386705585563770698037218065*x^20 + 34495759897610609205772498485660668185676838239771258444146982183079394679283388183308844292144806796828150261906758603628727173470317184949190588815532125674000407794075906388593322866086171408323790141598318659467134449354286260*x^19 + 69214483791482524984757842621363583933880997633287173612368627662923653896401858688006606717579324021989282774478877099580402610341892437463995837339683876953166112467366074336026327175065003675074376955005384002301562480261520271*x^18 + 1369583005508977366769151292125760911080888440765126948243285960280323388347462714506262115863601582342551333831884804683084589688985651613676827451485204457284410106376039610316977895810623491487010724877355416488507023026354157094*x^17 + 833597097076285324406089065205286967455544709658475862200737767584618929960038487640588913942852803435590093432324313708792714123577862397696007254369161241822041113570255987984498683429252224193794223216297700542934477755551290209*x^16 + 564232016955755806749229051017372210851706435271557213337191385762694774309075239245790314767042211136025135565135004729672464762754776515406392538247477488548231895494461652382552220824509822816672940956819851334155014614271998595*x^15 + 543300222172044171754334390136232842741977153105069829139659143257135842657707007933168172768170839472489220872245637688917481393126548984342703359464082762716380323087300166426316322060451182576806610110306973143639701377252602325*x^14 + 1913333050041452250627441203631452613459276537110289577575866020235975674262593001194649201089362970518689446092378479054005142188894507014068867705399476926377270801416974883988392305690074212822823652384107853663107253260472988*x^13 + 799220954022212924550412879284802707975450691928491149265810840091430919600393167779562704273808933204419007960821898921243124382202657861182947059993267365280881409529058603727057998908131529340617368014184560921298397628069196103*x^12 + 299614802529729256434566699871039109716006696684027682029396393451371318937268599322272629669529697994102674358194007885034350897410733705971475442207582602967976142450624528652322886368348694482300097613244509269631275468026031274*x^11 + 637799442045693024553539658561197284902229951495674080457727450137534745893198129193599831791866395913244702329534938698166992225681376065257053088657458656645597601832475333534448401519612702143514230747767602528677565907391925416*x^10 + 313601451224547600503710579009374644164766399015987805409244269426281495742380489712378609792184697292309096212828938417512633540171697159958305283588561520254949723543131700110008983776592285123514766044370379786077480659999884482*x^9 + 794725085891967697124866487122896378261807031959243971377622641482567430963742438720880110175280688970011109914891245880189712986941618367988114621912183640573700001397112317906278466852213374317209569866971677157530095624337167563*x^8 + 639180499761621290729908035886020364162863670353930841771814465818385450536744544733224969749444705148845864142687891744500648492384667982550812025086635481348405689423243936157371722883594988134692649772020971527655877409721356308*x^7 + 893762112714363571549985411963810366933257346851251510852008678853276424850822692128897409072538506741843476713592052216044058429445902863557528043080449339668499666926383335726599160091491008303434729106344824428993706561358085531*x^6 + 1175770944203869303194974915507155647618085488223996582585393936421162957408038558044052749932090922090296394485189842933746579893173105259531663354874934800417868727215062361721054243692688805805428615148301952403033728234882594350*x^5 + 527478593990377902102703891392613014866374979064485580216890599631033373986180855838514258577884751749909699056928368144642838252772297540448302726806210098496746874784445476279346183962367338852206592439996862805230134401195405861*x^4 + 394044159876640840204417556149192157835313792848771709297819763535549109377454172477658368103308852858812322321218730029512276008244915412787018962197219964192561358118357420487196694214266604765929288593381676610542343838664512348*x^3 + 95164814447533079003636557156249131550253120404757260758849593452799866042060559242012647971577245530513425344634816321628443697273356965142421681381893193204992717270366648338479103797760381792219363414967640153813135887651194502*x^2 + 1256051804674883934625971022300513783748971762139390875682221101433847000246950130195588776387482556094020185216090915218482035699434159093054438785033827066264394179806650143346443393545276467586529704685110982726538089674688891509*x + 818893004207977413782290682344139213957197212596294051713281409405425784000477628557588977559642312300110268885808470703886466387194107349537549606783702800066077203841964687724076762321655737918895895273126960014018125003646482928
Q = [86445856488295447592453935099589006138160321048645968614521808652752651598976231418099862272301020036145166439832903008366214514718323422121973364434686572886436444252051959222628644215750580676867464563263618512082974572133966994, 1348449572663130066711031450849405589987493024055363348404512043104296857125438647183307792891614551844476502917430173762253871890819427587262115092530156789121159520474985781056274756896291537009892132230881085274743509458079844201, 870591374621925129268634146090993355774995912811564387832485137690000701387001665140079344022617061771779422306857696280133008367470002355178268088926279059583121222837862690435251776287980775618089577032754703891237295508624167686, 115500867435582183196768477931695440024089586117051250560637767255505542781603449363449312391689150642663518738939318615934236716528172311907835967867182255730460495437890648772718569757083499622551211407918205599731870989347740708, 796394492332067459814814473755372336167258050057995317543499311910868592728880650675887366316568058908636660333493449430609840510129204661366434433658963401956734806553377468837841512483549193434825556943043913042205859013836850899, 100911429934625059310427798944529788284531126204205810957318185366573411758008878655509187022403559660564471800689711534372940148532617145493925068141444312800633334540996921261224804705125202525105426332387499131447401944291065847, 949459210657483121670288120338717615023809560962329020367902903206765757410637859306210799159614676328563643976006926403513575534315259975101859100334697943959944886834324438886036991061584783950373778464291995714927062038800039544, 256480365058206760334231872322440311684222722455228724392781553332497071918997873202275447548694831879193770771619475549456688907391079931244481548808846398308293421395079599173626163956782757949741321071831876104964841329669037563, 975919135355443772880566336079319947683270196544209586066390801154700876058076362782428079781166081384698751194274873580900980948588556326216658978803055381124564291561402903561150640324892983028013766695280573417667534462441940685, 694464825931407217470744284421281298316265940558610104180090912463527419536791287196727269393793860079555299481282794689499821913822355873445849459461162574561146851500099292339922071756566167093354885852529580209331071432190340041, 789180291381843844358881144273670134177807414792732718438187672912740508793334631105014892833938781525297799502416892131260205020355070180098256414947038776966268276920225888625171362854969212505648383323643578692105581740737125088, 892368284266012839398270255852705422471077111516492414688124350592413452319001006507539812058349397668186708088309099135437660503495132210684933374063441305055665373223849562554931909657815938933165726508411551304565750912977558161, 687002317426697543057792807100242592632288157965926696948970581557380583126332757425913756826901787860606641476649674860108124502480018314549940920577785185542536250908907840305086090607269419790152538430379549882158124262135456073, 287213485827848837390139456928952517771552036638412179971312460255336388963689815228627587696760113685095604603590455413234880839416687483942188115369105616705146805036313479051699386364185341512662990520843038966899790519425435820, 1047294916867989519693296501640922161162707024271515172692812119719858077484191770932682443044572076715881849158046711170971856023713705426801434644921981346012961400093042334961658339618103834958510743652761177429421260843437953014, 437583343819660716284556873388600697145658686453290804038512228200325636804128141521377801491007451828630183167934692315072851739698389094227296836062183873761535226852199039825190031772921772723765451708803928447058133696659702573, 219714059998009806361440059399469296254010159685855289011301600079849483163707192019398127780518475978770700083769240617929346669269075877688238092695451194756107305699578134983867074216735881569416025019926593320762760896651582343, 239562200892835052211183893904625990750746975083378028775798082933322419783985376501621747551006818477990867741137889611486529991716097327230328400276921387522595080899955246540260295517254859228947550674399891494890947648648926278, 1083173092231327204903333326154125237671782029680154629350409978805857449222292862193229748759294572132647318163346148382311008512917011351471859116020454002343338145315782711982982293199412007046770671096137680526047129931053939606, 907454752527096309986910374654323976274163075297576358574243591169327640324564918758432694835976124175779784331596787629502202239928493149979050505286272413132696048269940461676629314473746474862680660046761390210544907933511490506, 852949771410475084305321788341641381975368111784962251410018579779126203074344380175705985480411539495494750280140698959508273939189829710283241893823613966032656672542672043385208181762798387015884754331403750752138062824953390005, 1185190622581964539766256627347261869085983798033594664859219750358681991257756683839133204552582499173903545522904970042697207563883060637967222078242906760935465176417568431791654290519857229509943843212374953477177297426946342197, 562830093595863389992284200634578095759364977235903523382857722989489729453172643394005472453353908108917804892556703104000367557000209865071312718668708725189299206734067529890909274332086653393149707664681813463701549543546787773, 152716961821429873602551894190661552966873348556737284030601030120359350935095547639951463857798291935297733064687019840771857640591346533863830886697831029958674283899248529374142963097608082033023838540571830362240885862694135229, 520147252884442641617732673611108119328715735852488062074166923769901527623083269817966032271022305600867625644751317947556415333866242743643566891172324782912515798375673486071063867135132935299509201422352156490685424755508483730, 910281204215608600065465751750266741894766240608841107579990299445478419815000791153074169509750766594586854579075327452696634516409961476275800766528130800122630050113674349472975894732045248919809273268621405163419915640555513197, 729551974452456655090692448277874905542040174858779972709037508517556903299247503166621564209528711096327078635604892040106212157334852841422533530117323882660048627523875141252678852503473575643750385088052529548668491796379727191, 672904479166010243143133264182317781001032035111582599960721426377348107184743040324197868233517409345698256215534259542846291784697361875442580872826688065938253065270807600442344141073641366425056605279327453656690946116785040350, 1173233004509488294102686627015301651712042828658049851078246706358086293368766564703733503174469660407852004658225660389181980433828073167090637583418435676197981109691242278967603025312083463267439269725737111655637745068449798156, 413923818822865009347599188988635170161585969611522993784950785805271129336511418636671148914226318080305296244585605363905872876202826830108488752616125404015859461034118944679899512685466583404418470976922106938722201195421526210, 471674671847339370122832324042200524511313441127475563941669445606929686140136297231842681911431626850925680943946634372148190624056243111833637812965682993861263453175926841239960079514258023476423710862872064589918125128990075756, 996569764778947808098888401859352849625474297355509704827477951288344475565386802117980761442316065144215081511474212062036486106098289515919175948994201964940347223369891705359542912762820671500349218966131689257488414261739469444, 284841251480656695158255466779016163116261744547177674339693541370354296846340101595987459877027921723208219240994983672440392937981809410827082362909070580015298004897297563152790980853263437134083200705207618246240855419320557756, 191730074249623719727004979767953178622504664674271671329006799937882357392687198049095555710690628324074579253551698105272480361842021452572072093442282249770629981022738259611208420010729424272930678604374305843902214796305339975, 864410869948999987793141398691343847836863121881738183524451491419909814370410488475523869910739762360891236975853738136341994246036294874026023949632997621913388578767673556688107863765319200153281049248291041696014846883436659810, 320013904091859813848387368759108513428454489404566445735259762052385227107064745878557913538166275832115680187924754608577402624918950462013173342462745017269867022394452741351920713736420723189591489831700758776144863739564654258, 524886215314883721746279709072463347885983153432096055047845614647548211876074692579868773207458128040800437421275704247307348761754376868486348423505134919642689049667860103216384447474184432054393324089023840437822444804442853716, 1248147538416751826568791300064584501014000061523772821062229658077918027654913046293696490821160724673843500013502927445990054136847115230391372860928296243883572639799134042037130712642590889206886485049726248262751075691388834307, 641378320150545404426446256916732366878836855559968476614714331189856221860495087450201431153761062704690038079227224127847590461942420066942392808646819529460991013395994002071462679844540370706545887317273889614839199666993035777, 325708515766881031829339216407306252146290201010947478111726145149014224130983586553905973490920415178101747851641107163348859741748687893506966744535292680977211294210241502691633381912520118702187314334208545332087937943891104707, 1057926301212019172885026718019193844848116095181103135730135276564066976775049929541445792120133773679959353301434890212492926958946554403498471564088793653995573629590937538910910081262421915154640472214480292302986618761512742137, 670942831195295462341986043866190970161536842048789157748843636020932327594436424567290849270269297044754005511392455284585050034430793407259571560396824156003844950699346070968774497286724273784038090923471025163892153461967804998, 851253601192997922337565807718400648700351075104275497953827042945451565687823208764773834951073938227809129817861528631076818686255349738765758613723993694417307166903967882781655686343126153531982550631438122714171089807187549882, 378025909406222685002481079208008064612624384672654657694002326476513638546995234518883379367247097611230041248910194921375242127524090565665236709545656963964904424352078338970134175836734211652520282471215785584749326713116572022, 628364549411675757477619523396009060227550786020786666827428667605259751200294917451908226643604037446756224448487922606472252496809202698214882507716465839503051716629452561096919033881386629845721732583561178607666603499815705370, 197981842601983030950752344253549880231657422650775332745704564463673889092795906082844823192625941914288172986787518031525002045644163962794069062377550263137329837574166796080265635064128508950713079533033372431949856308301805286, 1054188571176157978678143470965106917263953084528253324058705773257310522255817212472372997547402527979717755978833164017476630484368698496731936532346718595167523737127754166145314012803262179203030123133272841538574827433651942272, 1316592094511808503210955320234275039972076290570919000004510819092790394828343264854613705344035094856970774222806704493381202917289965224972387685380225275050701618606475766467000466161644023285886582694160676469712469791701514713, 1224520136427161429544906469937370831805443816827320778755251477324663722890931442979946461218045086652659872770833389318471219448705962526116576836546734710317582575006431823950637333590452123204991106226393552790529584831944699292, 453731507022825641271529325191681090045027528557142770266519675396064010652649728230798933196091534872914268118207089579577943294996847893034152003896893299000970005034502201697275912897677711444120716734576067769197237759207948264, 439805705289834537200890155337444708342693501069535459582497183805963756162528803535942501755178206848276386513662089801916807070493064971354943228489578702796293069086882849198542684663480891458624868972962686909154808839397035852, 383342104176527719796077750597767776738160918168138336155940771957454747654779103428552715575722188245383700192307401295375679757775897175201188693604351803967972941132617888932329054112501549975382231512461972749261197428486488598, 487228978066500930168744924863280201650473609371347478767413790737169115864866920602955932109532303192428263350724324660283111094362489825468782603804324376669483203453374138504487870081670242164266113583957678121720370591331357105, 164099564377250723265309000007673488788050119659541309000898666580132007826707545117235175969903775994390721853690991335445481269399084320793418201526018875203387507244688966549843196222348455980662036136269126919847165922366376978, 959075843041154913702141071144039174964242634888511242172218563912658434382635991395227397030991764430178324252107678368233776484492420056461673741335555306243166859721789243304686218023986779836556985191523900593946524465015188282, 61634613315987960818702937610776829899686284079078663593176430412839058463505920949279682945634979884117879689964615873230633911452155312515929559696142042841581060855512344349236419320120160005143725649373673588508578124496619145, 681574664027058905535892158585795626749636121625955429027124317062394994489624848699145706393608135498008077705713770980125546468817965798426811462523485998211197916848444470558683550661651764565537724241898709837899686414798251548, 461195509287247056738239011959548856618526961025230568270844125704086673562946564898979790152623036060755985162079849508008391771762381883596868973632087945043893761549608146971019704796609358205114229735036123265543407436051165911, 1180463852515929867551174611837373198228338343687085894915885099490311405478746151826615676920110354587407940239003511048227129719105772047100365694893255080175682314037005448189583978354998689487501244784226721304768510285085379274, 687395482645550796075373908807464601969412034758855169047020458862724250836916906988148090056491546183597533610664795317109515128907603423656046697867815542569308229312289195968944510842691619329292034365793485214616972973228493847, 1351002340544019779846948491403208391057245683014309609292937943241927514015174379468391106836754229703784875040285945474480052664764995188584792298538660338704428196980143889537958724439348773270843932461611152518349514503499219179, 827299987464347532994615396527451184287079978631109446182309676036759030279236112342681867357323105787017339682322924612440533772227692072364656309557099378333255792183053209159897510234581413834978636632437131964587149912403711867, 499382777792563465875081040049513936448304447795651197894633421271687165603496958974357324702474945018414591004377930224975198434853844682956411156847717058821863858469759388955858592655721328273759169577320913616701689226207851884, 812168531676188113565664744285165885814048531570691011956119898500408465889162320046410328184560856092630828547905424627511315465296553279322262212397085975168369133528243710760700576131120062256309881169990207501421160846379506710, 472332012157028176967092603987921313635696267159373562267916560900026569996359956853707652702351658714399879589010062303135685445062753109492841475521037860698366287556727849071807824424238539442848302683223047238835241151007383764, 186980933033652946451575156313063716937591078008044263547006005577392031535203669319180550576332951890107709818110852653443988261901803692578428998194532268485128742408110528395959945699023128704138998844792224091257022956498312098, 1200466243798572703342712011178441258174577132342999320061280015919022568777437746317231715462646286252569431597452278785240740069944143063309735157621098166257210926648008948256957018876855267244286729122826477388120499588910544059, 335278569092016495710693095235041996621158124220299665189766115968546521627338939847429392076590146232989282716674208483236496859417002212111669719422397619713233167038385387193882525976606735568321088848944512005510464886868043430, 254094892595215908075107527003862784461526410126938881091265646959879566323005047733276702346973602926283856556828965916289248213121966416776010575798654663508227636430265633907373191550360401969386350246791095907345633862231457276, 970758131473336941432453641810306008964706624507928028319646531789669234726843299002162131040965982134629292109823223954893929461618481925177155680479507843314956805371092041552034023039304279891206222262440531027420311933563737566, 1109826420956720941823787284557680445669447303974468769128501397898159789728571417116686775782449920381131767913768637879672857058693437231134012187431750444045169510044650207019651441800860591653518330636399626490449871701414016286, 1439470950815116426765719352983950429087440384829216440283617388174111431044753185157139200377760667269940126205773320651179160770198857180807406109502349740355288194285339716398685225359894130845326629693319025186972089287107876805, 463447039481273028893453440195541699718233062643286727509632632276636823593516102015780076620174531693094383264900406021831743498019586669013359154030361132509629124606934102854731579773213237785935121178411249892408645027293537277, 458588658879480138031566258293235708206687430882944982121281880485584958373024759868223807162515687244639487910250657595656276154075588762793725535060821201754260801469735590908696832131546749434298274703252888999434742187631180543, 2602336384720512879024134191345927283757462693790031994727690165811651551375176635045020173664595698223805211597321067042890261988488077718930038454274062986105259501854189511213728949431003192687259171347650181357825318117979338, 650522443821635832242090496511966346327230865224574074702815302163603446889052984147969973127289148471317810349057469869295923666648767199190113962308400401693461139518864272083702454706451869819558917979763350652152398795776872733, 560388582238907528139390298237400391410609494834407927910051326882520449924476941749464029456238794237117242476685175010204494302741838337402635319764091253598646783652246363944228005468327785350694869967729522050968167245642871908, 885098286688551124120836639441008224060664666503580918943015411640024488557229526407337254946355683103321157507986490273205518943570944150692278946789898695346006349388035489917962104747800438709449994920958118289499265639530625563, 205686734888806878768441152193969402933948174688419820041170615906133758930021187664998005959720653227722279288765523202604570087407379722404816297472953299993301928362589345046863378869583974221780553982547937258225956836625358775, 555155306369658892956925020467499395193308219221456944896089705891369589292859732698240479700488787388656794003492221892051030196606073300856320756434371213414091374784247289123685789373798578312596201377721696777768138692280298783, 1337296626955564469615894559394364331782555201411956512235890009090032791232610473467696092754640431449691239825948380849754560142791157699021429825441320002836895991510952771415975136498940611863308468232678550086349289001575536515, 527440395598598123438867060412561543783318873935098189176056120763432493288635409385623364846488636772738770869996110795134284426534397699974951724851646065085091812969635080031028725387639112272894372220983543141509723150605664147, 74551053111395952613157752061493345122368270673371036632991383894354020390907150622547541870437285638578151511622342239367876461291789609494446064985704475979723670268802159720011766538770537751301568565064994215767462430825334105, 845981352468704640136127418190255529809275059545168124984571758319051555998445088237706800393167064578093007297860547588899507969892146273215745787713816508488680073549562074333122555211471227473366442621908577822420414497834414875, 629359238630359430791019472887617330798385741117256341654206015027102723092245849341053595710645462218298096940950992707207499605145416694009662005025958021233601760080071589205603354653600350786270807406722431316159161374261175102, 873933401377268016082220609613248953149260966893089255139673606642023884925879401352920953515615792783076463086606139947287159182415325438222576361408579068880165314552349947829468236489010750357587244994889328623004522158459969087, 973002513163691423477052781753422029596962489596670270032496340934208846386495565221864946683430661771923073119978621451596092940347679577700071525138516060187531740323828142564454395588914061039345307965046664299045536929175309155, 1010148143031318781906196281387246340165396193557249768956870241914187877921166067451637637786652235634966933722816350664477136302601715964910622137364828432574355221939542315023105940613689950654679676616360174225881128570228600449, 923415026870099883914632333079139512754302625517101845679585271981755329268385773532993828751669242440313035277193739914963839796838577882375014694723708388419465745241729607664557302363004487017683151454019258018002052701101141041, 968741917386195558656580193001941225643951159457064670042135333901017973418272786965685785868440794234758455700576000136760043708505283727837556003638527285931051693264455014313835142816764910993340436691318380203575283994004955192, 124224527095711974337533996082474698250199783369379854554615921462433919446109461008966568709307819548263857609218295197207427180209996963550428763505453183764274906635531461907441360446723624244738789208287932247051513908880999651, 794687602899648779813733003088899496907438875900746144292220525255406395598488336215293566979711841604054812355278622887198703172513983001014622563666633031866117848666809752989141739698641856338952616597533691484890378787480755835, 1020539317610142617197649578619735810690154328644806400993283016203296436668058216844989130740765264315892809485296599349561590072293731464811645780337992594869542683060521308114922270139575545309569805593301763779833041259985675375, 176708163947279555254756620820135334613687691906118272788847905468173628872558623094749394354666539842002526977249309930807725721163894003733890882666499105538874802148409828537524147875050746864290487558515544258805759668853617112, 259362332653712242365240667958536296278984068746369761483334086029099542925251353139266319570052934196864133874462616537537931276914130898581574260355081589359410774730154731493983421552776542352358771462926222924742228015838108685, 628524840998422107228207378983451829607315814024479756448658455095548462644307041938309007999924329809681798777078945148910654470074851969954162538964252222608851873753862429967447940255107461636957297673907759695073649694459203156, 1211279461784211707312044138078831881903138487423040512008491667003300921304171068567018510472092632603680475108022543304247048599652757012557136292574957661921554898323146532032952507390546178400469084240131766955179262849711731734, 744922410512731796319854789295443330317687092859913883841675224885562007653515406567203809777314354873947631404029718247220753221212042140061279320748909375326494723390129498063215650963458220868023686652360485016294100736035520242, 1249654987534127985470903744733630763415074596804777202703570416623447737299773168081917334370421938413538508867178317139579438823559799362623504264314935314880816395125154250984497135714273003750365417792039731129204010665617145425, 1304592685914954450206620373214650258336549369521361034616140284624333969513254316133452852614280324920216573779054976045854173127326244234560107870574092036501579033705959851269233578312797549405436467107964327542638238424708741623, 270351024855080309487969235407793622262430602831550377222427882546866850538804304199184821868244858815097546405114129268859377690533185652382700174245136860915276383306488999965674792299162582898064207265867170887359949795356624834, 179114578073423000108275585717816322737786015924550890254677205129989368887514243628284293839713369322205861202374357774760415814286543837454375285625916706800219812100203977626644538658742682250813609715839899155557246532701111268, 289109443060883396084388397625003527191453400980971078032334135666757868580398304768865105830323532968775720576996240758971371971779001975377249831640768188632547799867159494800741809297433177277318168101432127693946566110115025393, 531381242916380048599882761862733672659928450226092309477147022120053668974198194506001599460411563656136749222428313718218328197693647256176969305681581155571070593028786548079235125952347614293752721540762659186187197557307858092, 675458521773994535617935529985461929680444291621445659744039928720183323737420386284189205758096471778569201294886256530523526805602987123195752552128990096308972333867291436954002484258376462364395135359628272957710758672191097612, 993367743214278788678127521305607085415124419029993562833035578172562337694577361689950778243205621620557649966788627786389362465261562690915864197320954728038284716691679735816080445385670534739695505201101715114135061168460517540, 453382052521154256893056039462191290864333699276629910823164180491448757025429336083965971540440027491417174802383260133641782900816020454234753269477679650949674990287050571805729643366403561025394363503052342952782307914941815521, 1379804177893688592193426224017612394973167672096257801626823351742382152348641551373807159034362627959617731465233956798706899714029842638151556541553721564684881916366292082320465569739586036187395845684253297321456441724404669656, 187051303407502534662687660354168595054810971160207612982110126428716180799113982065581659037970277139780479918807608794207512707570594622782704811666110466220246438587908299634607594768343433183987263198788316582878349302415404050, 758463051065247804879491463986132595627717662033691707219425986288026250940905725458114950090659112277122341386714030684491332419042339325759450412855055878469159188816144741636560042113801170291062950238998262735352200582180910493, 424059607361494830021384197868256753010519363473431910907181802093032095885116616000663268675471035952671993204148683398297747100342013563372611143999102308615376372514867308215588698978991441665666664168319303594079505703021918632, 1224495396242005567604565831481704465106235489544201242457923097341488626181839826481996937242362763520172013974833226474923533979315206435722508186474844515834803461341328472121077069052810220220893079043167727075162161039009020849, 68281198584570333682623866683837147901810970556995053796195042612949315023896080617481724927836382339437042571243970834087106559461282540483988474379736324654986907856422598725094494156479512498281385881242526795223806684011893015, 842859885948153369431504590401169086321268605180496750052827197326934104693773813656097151092505300716137096779518418638135101463500603336284782733766717438722027287770067733895349220167914391484030395381240268440173193082077600785, 308783925314437997190894400461714833248409041088139839077783126915670199599315718530687859140214828821631568718797879236571296287618542642374464927175496301809504986116796787673296705417316651995508585821941167477996599503368006701, 192491166958294804095713224629265974691676890406566638979275386731326158705637468837842979589745063581126257167651000262232430089653040601705648999978291292387578637059239918929657852707676092133867492009622955881598124254535373680, 777515524882384815713727409307573625657896147659071169643071060104170429269914340275378161353703432052785623560622182133810409595910045876526558426040526673205320996545451537780434455681117653578269455561454569792156695014317466374, 653236131828843726091102365122126018853404285971521059057008549871632947806923096506645092404701431516443991125967765311934228990196859879206231986645514530116485731516000718295648154934995399384049487245299036885426613983811280702, 1119517810679134873406852490843539140486826807079378576459788487311731946549303175138783337351769721501629774075788978579399081221936616086924813973512425410092016596150145589277042781494925069568547116071382872110759684665737713273, 552365380102050926106353130593129310671276048384065906194207591393931819379700643659911529184050972171845908427492232935129058707862915631849336154014627562001192858283515053982247344501996990662231093247655544941963436086923047323, 1266360386384797237478756447501398010664296726254429274564200816525367044114459802498029860628593342101638955482536641780210125891093778009167283291756624478529463323974565791594967562469921444760681563659872565653626079656076674064, 347504569580477308023867444934614296689604641710298972410607761465289541172740710607294023107706557462912657494472565870723361606132433996568218106285658064106133060665760598547684767639126982023240958956410166737931333538089282305, 1054616945375161352696943001525160829018225325780788470801541172549679313094023765252290255928595245372535145026237177212605596502609406506772700454592234246607643085932869873829101910761684375325752723499180604492790717047979747022, 315923924075847284295082303860413743450674052588022272757071966975017932765910656573646172731231824481642362084125212254006024244908831308095558288385172922327336442250659320060499135096313396008758213653054759110312652806253759771, 363839769105952314552603207376286415530223411653244651487877198248330076697528365392665673667303201199220928558744852950885841455671424535583747463878340972382337160643632110368736709930770789095281430409127065055589590925141852690, 339920853898776896044285399014194948510059811711038820469663970810383124839080094946836225364959661502341735994552700246231736372808700585809030880080196300592004745816475514322238757725884856527094564654916524609296636714761626069, 1040262907338379218754904233055012556152569496827282474103370445441664564269603917779190977518976267362760196282551846199331849505787203429100540637619547053629887825348352306416357163312591361638579259087858601312830049020673483899, 477380189709832803680629118863621709481785121198086866801077300557740528546237373715970135139053156061597456430387895001839319325508350641685853058110267759721814285712878144407719573559368643873680761982322584383395494434712929908, 66981007064153425830518919995995630566266818076013649838354287523266615527751707371851096491230406813294326773861305053609952843696296695659171256569755198825566798472708359563757903039408209714372269744278954990530021702416885014, 1022713049597567493248561519228705704573221617852546028777356776607292670421421299615177691947417889994994735261122581097291857059153150717482261722142874829279724728333586536208311363820540304274940483629168326927702917556985641966, 396021726419411045407386127151769032394681675353964018528581639353812565729290499494211031818073358197855969318654037105176328689068055656305825565961124089363986083809694587651417433986873732010108177391689114531435356080006153423, 972857376293149822454222726998638542594915882600241637696986689176727610014349958525468071269701469389439001524343845847342553772141309454850789232808453374207619242009430484268391868332807400311062244359706591281711778681500115597, 319037350074099015070165214590579288554648233732497951340617287421978464236959688728279718620171422006989671980015915381730324694360005291975285982564330405567024363173924790953158964010917634933192775041682369855557615512471287308, 529854354181389611916139102697190937501645107477921703038352492401429330512626596214855258782616626444493356986580817413503644170483556771951374393837743569380092936625156412630170412143489712512529664151700388248614667666359469451, 1304192270033451142903803931200008044283873513910361577240047415777715593324060676820331474353448251132084753246186712760772861975270706746672983643345819203079391206847267625094079465396408232012890870489793881172505944065966369917, 464032080412125677877220267687883813502241315483265511527202093358858107610005065530820398753726189145121294003859924160726099763140965356824020295729451480589851986585396953049549817370794654679320996783575909461671683402311004876, 1420979984904379825661082892892027705041512179755289920598187615832847623250369546444298634959581569955650835664824543169215414271789278806304170917807313702460493046973213972584116533763406768200186095789539044900175582856089817120, 853361428220571675575723449476400233428788436128842618476231087724490014870276776012468173800514841077302647231945934016268160952792208892672744320730185822833226874327816129731131899095847113054225590201066733600260448815910695133, 16306076646804237305800274533122066416740730546701257513419775534057593049525744319345836444213917102056182156029765327490580387182032900541492608672377468206200789717478435880644886747324477134122925779273470832092264761079395750, 1277178663009017185387827703256850329899977074820487457029426343718094290543747433256524908717075168676756001601885210851627735235240131676051909975674989904510700566539922211267905578847698626277749742909304356029824143002644698675, 1092169169211369676207927902238639157389972094725147125354469815458899624606193538141478106459112000403855906090802869898955183085947058497395478261622043401263116901879829047938781456040784599418317346032248574141258024544311831824, 820903061290571943349491237851340792575308334579236386656840120747956999015037895943606498027294988153935424653327487870383678051765427864926776791798930573697831758200932679563824587330070467651263272457270049475686697245989784924, 590170521133050181565086690154768585033340994874633013553985113314703314080415783810196129312338325614051436518647016135551111123240014557591514103574325117713766532434823906101193333774914218016013968675192053214946210807255234713, 715291958418569420555839058136216568532872344545542918712538405853261181927086515275106210701821120855480271570559087458910756257582513512680438747509209320739467500074823472465691581234196573556005141064743251240586168824332516235, 1131941713436378570055068266801129312243662073300784603649626441221533189194801578725462087543249762060076908508135640501868988542490459636008431811177985537706616350458815392722887709112206768612755057695597068285852115833378671434, 1093599751466639358712714757967925073947690438450720466753741392455438667800529699051974153576953728313011102589832015771954405498767518752146491815034297248422614927131017642983486195682549603067964279152437584897677943905975097647, 481258748420595094473383341139528487740943882223828989997598450509894819269543151781448226159570615827152547120707708686428219836744696518850979991631278569096082148508300491267889725751758108524972825802013343949058048214602467641, 684736903540756852445055428197296484061200957579475247683342542913041135791537129224198645057071206812695572987852478054070586577731015706746638494020794001289819438271054942913089609802989074328722698642009853014026798645202548117, 1201845671436195312400523944632942416524631309602579690242212051516774886368513709679643888257442822005389726194191552418448651608473269280810131944496505776022378732382699369641273985032503734860292248111164378817879707630530664449, 772572475287874382042780412213268443128247023505606771529565696282362668203762039826250231798729855566412302003088548693133392801076725777808184389263228397086983429067535727203710740394690772199331227926473725467328753628407415932, 309282104893458167361330464846763108373060966042634348934431008538284633749268992575563939333013124445856977421601723952522877077073737567202240663434299967228020910106723911508140531746364783472497488901302610773927133861299419943, 329012247604526512644252426967541590620186572773436059111787402594218963422677083940108574883221746266606784335514251265428031040601367980006572600110483168955493088917879527862255856950448908016804742845199265881628052771294438014, 798714098011617283361000337971755330138009393688887633104267686470694440468922118965748566267117477765178639490608903005805290994303843625620644872895745477148348209007818539512378445121535163582018811731907250941373883753742263719, 1365231748260970568406463974343592553110399673013183208240813868789692242349970626353378115367405105659520526068514638308162620662115086916855125143117982534929741502448687469493425883457374837334921718197429467074857739149124875804, 895586588378448679861991268029958504409738888218533094492979586029582519823702858433260907768415331680218430124608511107119619017118512276745518459970736602136739850359313692135679807331593219166085301619995400472143641069648862598, 46520988289864842645685829429844557453309366341678956845726719384868768219112108631149893870949381715446320776177824379571527469248794685068046735237261791757825064878464481170095245156263859811208591319058866235245895171254661489, 1157531464802089276994600580033879603285973770046736196263286581456500353358084586103203750920836118714530854605366517867921971142880162114412941497917408645555503098653070262614088725296578283703076301526973870960824239275641258813, 746697878732885048581474747016816577191254618340301922039046231140317692051502703821154574783350116472709347651006192123394589040175458499935865754071183119533823953760302096217021841325560438751499431673274970466041523101089562101, 896140853431949374508388466181344988938880833990329467555002311056484617819691971528737651377956283484794836107361011725669013763695550330457224743270634216381852171890187504133450265482914567876712012313578660634659321046978399205, 1226552293150372338150387907282118739165689490430812055717617852369605142613427828997624658569409381245443951850541078408710252713727924995921731862757682285935260688767301168421555475560929155956483915189878006781405462811435631561, 1124040189025988074541847264323390018334162204580690095912699743290415454115628863875483423176807080706264207592332748210907386584359678985661140942884076241870042140104181063098259123396235367585861657729821857121678286169053973258, 1305720766878755193382294126401784564794185047312593951330070835034652388423480422069636865542443121926580936445290817489055574314627799062846860993673992827129425495152367265015404688572282010685254002958956574474941054903093463296, 1108407250517154651165055309828585496101968114094330385224059434438954472293259786825198142508841549099935798409442625762366888405614513713499874018448473412396808649356028838225143599998863446582286863728247872429801665169830954447, 428145690842955274059973085571844436802976823226674040707319481275592276908577583536668909924871441914144401576065565295815271031070689414682499304966111772490202123374428682520801177441296468268142802063226403761322003476267336982, 684418893585372059349017451969343305943372336260651803918268147789173926355959476599347450997847888498829808827896028032872186720073053598859756711935884157926600319058110664020052860179043694853680198454871003749959439018167395122, 1214237234581751656285345226283954429841725351725438482711779385754542789160268404414748408703922612747453807458590315997347304518526089718600927516498548766736086805142602878102658506580254484632115579022125253287306488724365113366, 295334593017502558673613906998500874911315443769377112839673080286094438931533594712089248766472898355501601715427984279612656018181350602510986884906410148084700959171792925322519749276059336026355720077667822415019927187771980785, 986790893713301341585533803246426330623805405044533247746050785622463035877638985330519301396661716889765181367404981411301502361134302354691692382615014308013932966561450146349860873220646086577923168148453459731936347778952455657, 1229016220192830953791269674680832745307306028372878070198112448871747656295765642238323397317501025086628334492069469812388659285005479111649875089587498339641113614566396247393386842327126090765531086871692088850190029020231363610, 684488248111027045992652663102144160065367140092279917418804996098706087949577310736352699363290623322122498404001842434391325095161640731249331155342594074907233236408533226763059813471068999197217077246469869393518382749798653228, 119213638530534340637226205340159523628350809235068983366030488085946812498109425991910108872496822510018100905290969431743703858499852069709691265809648589705421705857727590319234367731168301557615421365485912504834262426599438363, 1318478797396839594680353631580109186061706649426540286610428583864989032871932409457454810186403290630290003045742048358304206132392864202564525313469126995000994877806497730509827140785610196021513368566132988282884471607889472368, 159190484644835319218957114608643878875209567443792002041929386276169344954458447933131492440090652709274791050267632045224917009324559426893353932584633690507469674155163760470453149751215685499078098426980746167568496592695734934, 893202459679096573740737228457292185007629340838218912337515536061248442629093627045036198332717810396985902142687612857908662225680026383875004835622611237657727926821632976581540528319742367154914291000491555725361817897543491053, 1036300571369420817105256784047815788364284134242823876495015201347700801510136583096344848730353413338000338713265410984677592150799654758840942079118057059637432833841526637507498233362045581534212549913339623513046465649262955783, 1170521785804676340533601503920865682093096924481226057586579621819757433174024489137649876025863671194061314600863732266577288978295632619568609239808675460108310018584237213521412273056156120089355832322801341391588008459025320942, 859960414019910942604840001883954604390761753358103817742351496958654721995976440655370510778710663587226956804466186444959245267032187472294355207124337710507316661671553591700180528251150596371868059796214349099116579689204777781, 1401176382351608479365967087856087093066698467131484428153983356473469295792809352633754430315054234761382389816271411833851219245699983595857840309235740653079945907975122985447252277056112971285823686708559544444694531446897030999, 343118278040888597582915057887034740960199315239963062989061957160858019239483896194971240556350100319948886398893294905774061764485957444056744531995384484874201625815470668100364758081765209533965469032274714849558239682316862566, 1283349924222063448361580501990259130122145858364654818548046304990815566941884935012110109240347337823414262577824671429142473343690509079257491895508163646061539201716128930202915609626557188273375535985618253903915008693967145094, 764183466497980013517577833927279256780264340514313900592523913929009173155493049448177008664674565361177950707204380916356756557409590435490971910190200894495392453818701997556936332214747662333245598619054365169664653352897819268, 571698883705175221816225881136475093320159771011063523828050244085461768853307902761661477663815851710958291267837327073245975310318285729960230247384944822484290050130491968185208599390969910374156704219331264147219510353370346957, 724871905286344160371289311478233852928078806446746702729381274843579141050091043786215952517209328312584574009448801583604823299370285403754408459361527588070029049318727930147673989571190996528500777227345287117266718806723862352, 690022466800037297215329851456485420313757517743806230350137224697140773838751413939125747134924842199947900174740134658727350461807534696195566960245794738320098574392600630847126400788294472516685580312877566363987391160057948889, 1103686842721289052805337163361363512418501777382582710391762927754714472417234222301051315063013174137832486304780917338033432799219579228406584709716116565424920414848718847779988481656709887050224040458452179211871349808273881778, 118395554772058389797004434785102079883904400528199018672227359953457666489493275575804347669523976575077900543294143819496419624547700399838166166180493854344050474146211554892262412555320417506808685598215240013060699711845724340, 817286658902960419508068467485697863449419433838865157356194425312380252081071465437318043039572066666077103934064902036422259780731751914046524743996988248145571543534685687625740996804705146609672551269332631844551187814958696932, 1282580656498407596204820442385850450357580375518363435931136556776365195427255432875620483865283462824913710923122864792048619561219037460584052794983693025322604619019623380400484255882852642376351736434741536622849962302748942686, 1425480367007466340538614867147693098511987697900971140931899890698060268980340431193540427192789541562818190563529541521783447033347849568037796484339698474757507975976649681623124106061548933574049491777940263869946294698306207945, 964194059177077814115857176846975544468098932322785995186498858899073733350018016624018614694688523406066243140071030286781531256904018504184718795681798898827314959872134770901053232578213907280313811381969652163649964423591279872, 417048389127627423357290613845821950752443223710739955483634149788519358410994564389794753125534291192150662878618635205851002229543444677871495381708938511891693903916236044990319627629844763522959940299381474117038213266729993511, 374171240723580232659961424240766457797329719013813991386192201725510506108183471333570257382514995750054000669427896936941386624815058320602549076205097334295015661221224342627079512523004748318295740318614564652037416901102716487, 652338579012484845859041913397198243887353071000235571165855252313405017720176461828798109012705254402106499152840896131220702362267020306707447124142368165273755084462205672340684529683477370690641649730615676468191699482691923378, 946794465142689362799062930650135631998852314222781568079293914229913948352579128260656105520534447598262623984876819744116241849620717492169306340046297134156623518463058402623233612585377126434020059957703247258532035169415596614, 1072009687976005594417120051985153587557213254571857576418487400094261544048344319238778262541920146454141202399575883492547357925910129444686118983498073958372098293349440141202123571348561259532502233878972102654447019603942426913, 228460936991028506479757923189936882550308200416164127889512127602484442986015050191184635895286684779526998432696778894367143470375527705384418416696124291583940865384738027543691345570353023611215084786288101589733136791819305424, 205857022695288346617270946319610479789021423480369369650720045557088760735281524701231509809064301267940968838859917225425186934026860166935147336362409345924141772765008723217325919706229122292346826501212733925887544528022087203, 213810628914291459826656966866686942429057360124061462424181215031378130126717023984910234530293515500396176589371178715179593858842297095418526121687339646737859449777057595033620157323146993562879054350861885252183434953395037241, 145488765021294454539597995586574980062882790170774683259155562571471031443551025518777352446825674142088738843678909465260849432019405735063049119840447130946612373989857903401072184610042806318908010190777406869474515880145093144, 1351387754523697674266772988210482347136068376570759666224821898700438049489762985819132214377637642796604242597476912064232010571412411974897265005368246348626862681432961526494480656153634820634931195984220507412915692309803817179, 138587025861914026128823391740865597866119488924479747729129413276712940750884346695318985856625620362931594167522348321780167527431705381897708684476918718440831210256540747401288354022561544038870071313267806173369299939686788481, 820768553624791180782157432618846295909818880415564690259807407513184521221702682525936985466905927770877378483474492504290537445806549841479982745241187870772257416453685615529291416109252806991140155592738964896627704663452757053, 202461955238323355255880526171022535337400590436346514903439025923133145759012398407459447748117397506708517733591908825904191446366923972723118392735508691757046377298291121214945487583539628756947332367405826545618192870912766430, 504329044622651178838975216562510560333858338776424415061777590829384129412862505376053648491445376552852435882257037874051558026801578805065596581304211287214644071062588536074212934168203702993198879717839056236602432324439856660, 668908234334285340582519205524081570150234639212628763662708710482165034941355327514848420872696665821600804662058072521332976173404818278599996252973191989044005393132428356480129163461966479936050044467689351881118327461489821729, 427415960497831158290314071076235028260516790611824318751749717675136825452369737893349115010830342499141661055980039570560666436326009908918640094858954413728139668962604573296953498160794276022961926665259903123898243168624386582, 901232254290134448189294081052757142064262655927235245561509485248887376212034768480365939959174157495874791543574317967797000433545359127869441247445166526795490816786916209265966925822715824060202153172743880243536659592679537781, 1002051128806305093196561417149868506753127706784384209217159385537945960881236056215549642638326574124449455139076380646316244729296664848243591117765800560222339084723397500353374018762097315080342528861300344366420259520198462246, 811553414487122705443916566009896445998667970781309784187285118926755322532757535035064943181835245806233284386450274309324466404634442997503010674807404560160043087389954857755823734463128775815629023592733991690242488614189936409, 1266745100590424749997786201689584150448195272007360446379196594572425605846350619490543923399276102071542763698691690096343245104440209893545404126981101066108041325511215797850768861725786244434645423755433020807387438627062222733, 22236795743830607605659381174775367523384750716240521365337011071844939434850732053918857467065149605236511620634606280097860023459315551459258441780508435560913760872594938156549869247216789270201404540766114687731955082841010072, 439561818345317936642120966268994488970931047644328783129504049798765942427123403975647805450710462102434735835891025921995951724247284749384348231267343452191274258736318497847109748898378657197604866953652758422406824096903053410, 306298140869109766457025184337575072180219563035921366464933228638032097070866174069456609815656610735851119167179140928872242523732765342471257507923181995292802835271144598710087934707366842495502857694378916516436912838121704281, 1299615439332875974840141013757874166999857903607539107098119016432432037681345075779542760746209953790031326143702215938769866672341830414764729461118084714400054436572424701606456928707971655454320376803610256323688820695718266880, 944385610843155027240158843974104043135157485876457489153135876186568267682027727192446162730386347162697004178165813251758048599601990913299503875405670222444108240615605018515369116128921878662886877059265928777946504765632150836, 973771158828781894381581148475546974497635626200526071584447597127840259417163874928549447785339940249902371420662425871541400678519419713922320335299622914053207483989250614055444510481689497213251619166557858728569855191277422101, 314177644363941478103494732224120414429906862251767631079852300835088497851075881151948636726822905830856324171362437400013391596734610651808041026694954959221175954562114591662807564632587993491668808819944592720977839071588434640, 1431692764892118747399462813128437592690554404237037604482098534354714740645055243233527232867739673027287205297525869277720559328428917178887765488532659612934713457371110824274833470099552851895322233929171563386561230587729476083, 1359973750921954647404338919611534044798722556492209038472044975602916890986166147457396137401648825093120943798022377339044874346932867892677486242633939769434627296481814326254438471014410791280466048454126667357086497197901055758, 720314386894948564267718994650489315283001294141166330439780300139157876262471657016560950400587439760954901562915005979265737064956540272865198518184888798251384056250411813968301460472333782591943428090145118321245897035079448434, 161091703789418028735890610017266063076166460397511214722422971528468921684185368327605509821690429976166883455964090352450052329222870263803573202543513763102460942754073035169974123514393613953878909011133074655039949396855938583, 685113295229028460220340015251737957843374064925516203388338303787947852617570892689407148827396332924341216457414169537875324618410861721120343104954820050784768215632781445015975403371858566455899559783911349258216105862657486362, 727812012004120392129872480169599919646438042025199902880239012251704474176210267781793241263160166078444707711057643062002639298206075707226978426328081343717659366265076623955872288472320852160205185366072915431658550281438004859, 439351065635375652692278201301673454113397256099220375402422969881186114265549419450668089944832043395051677161862301936745404172051175164732984517441376128044618749412468320555421597315297360592904722095798529553959971194556387364, 56501755713518151520566557889436672668390150612975641329364217225469776593717508042635347039331259279577777009551039631170905992391214574079414437716362641265047646039984741142815707965800560957163228114554698482333095364398618095, 136281419780551008568907350416793761577666016034729468256421704710863828213664475661862342462379537941409587608049823812021781348683474510057903846276618687333751366612156355283180867058760446798536126624756750114712751306427782033, 604007883036614859878833347446593891477678516495454537027361747412030005407385667389851799461373289983523457324548271641959920724976678311372086345915068932879219999546180450591821336376412947733530393509559911284759294973784671368, 307178113504210744465332833582492418148819300969620192666086337186306726955163841644086061346992873082053254508323122930488749728073231144454319789954270641998433302667161842243896350730745458178841601932126472139477156265065545650, 1401115841865198092403987124884757459884644320345182560235484579874677705497914710167753374543169471128971472186867999648040968521493952212120620204302388105783829582129463783280332752731890797466579186380488283456442388502095108132, 1222880986122632632244302463554266363418255908228584942156037846894576586757358269272504918496415323368335074170705654081661599878647651425742141048060391361769692857402437366821866396646822520943379297595665031635503750214739166409, 140834926241103549829990120094863954433815664176253133352927921285951274686605470909960050903928879902899322510991314490534569736641308535638793779105578101669181229878194456321552438400491877853567823661460915630202345639811981499, 1145086076172606552650522368966608364319791862286700325682249367957259761065842072776987237894248592585821476324511698659807799600770703588989322310632578390395065049950402197422123084136694421048978561374854064935179969633859537129, 389491226988854828986773112198933188284687685588721278584365396868153291101468089292944095499149397098287326399292013150046806038535306891340237962483177861915550899410091896634541605600492073198571545974059468001140145424672882319, 123155147950715806432466814298324440368372489094705589489111764786973337610178794368029302809634901222488176148850011151531568142057921179947030623644523893019998593403039330193634492949178831019705569930941608751231744659462414264, 663504720669836909098140449938870526399335790698791448977809169830755666345816950866097705644919371249778360281890477502550374709171774889930099983926784239317854872606865743985635068853470762456016551317813803067316831927653527153, 295035691364943979467316069028821869002517568366461771630196637495886718322713924553099739750637647688534682784663172635628724404747122622485712921037538378675474422321248856755161717887084835703737221703811725889520790409534906018, 350127530032982547602909181025170430347492406999796478760144417299996286306492484593756702106706117677452684018814324529350467931439794984403914259071038960582998722544749568578645305705874885687192217635918681928199528075063427606, 755923673408626526885087701170889221644687038565188873678481399882135600623773306820049622492831567986506300551249322439603088679800823713162909570257493866249992095855049700187368451845412196101502815388886411583830175069533649440, 1408581128903841388799760820889091746642134987698097744937688197238605303941776234643236597222054367349035895002110871500177794446777702075608382250054142889308406957264765209008071193565142266805975783097409948479217531683895669841, 1207853374496924369983809911365713362249603100458682986738818730313093048155233281061599876609108939340970217973600280821708783588263570812615668362664616948898819176251422226387375798709017541783561517327400357350107759958087682311, 548695713301805123022934232767583959792417179986269208951881585598029925516949777298851063403028502694548211284425477780320706627237528533115223613984571824094722815383806298478915548218564390517537015760217532886735399245634914851, 515485117655406305584213763878727498961128474778347500113566445804829519508084192191307252197151758310936547097537784599626155922749297487227946795018530142251718718519629877858626366691384087379670496498918115947610398890751504323, 538920021393538069943663004075876436943118037938364851925505830177158769915733928105575549083458373472524321091269105302053522289551605013086684801606052113833335964086787182872089705393958611501864903570254130432372217561414519109, 627007847492878305481810334154107167525479541027085460681644545489659338911100634934858332259559716228946436373352067662729648851200119534704786185094486059478578900134650751362155862051777876159778214551543192264745294200589345664, 945236892513111071675083191641015145865503921751265345278180374591771084998867970547086421316155050301728555892181125323263268893841167877963821434605477165348388425797901991629665042108914559639137874374974028170368058703159935895, 240195399727666637192697651175228879534927258720723489685200389169292514882194604889455287418430913748751392182855743746274304062716503467766797312228091361859889702902875396130979729212699479798526325989077983788043933453288181261, 758106441532529060276373828358985052997660051442884843081461345407059578931049623251747235765073719610394317934968777680521448845003721870965325023452702094902983859547075781208798267855695762973908546975896426586973899950025945045, 570474590337785470203424601393622691208863628014332212883784727081281383001404081380347806419994507392220159221814930093121833394071075410327293573146036796838879569855350932364542060563497638548348728921230259518421193806753830208, 1272916239310752651516196381450985597627333573542372245927708657028485953002414675909445051587504664633085092487012360359123153859584952348745356140324389054824670514210381000793196917709438761117184606185020668125383906016621483922, 152640790156770890172950372905773519334737049974082908126168253986375362222327787597002181923583637806202692698727017130189835067265316607107771969250689378287075391553994260344078811313081872960637558712181530881365405298162553339, 425352320755909563957131202592450287728774953556397090456999081137363782780075434688321147967200629383922904027653750532415841783582647579470822575108929807121663310749738650306533004013183694213146628388172049126323258873002559654, 940710222491863133922018232462957128169776589168137984715508524566915655173502658165731558592519349934473393244563544330215148533079938646078779501994366728715713613993448554795424001215910079372917622093602341923597634904880083772, 139659385971616678126782693724933425945543447815626793898325673466566658884905359580018540672556397198122163984326493416451466517126976303075449283651891833452254405517018625746214113421982529320797133550809018070838503484131296723, 1321188384591167345867595074035504351074550692782415130763004335205356427067793357880743498476358223660595812390087728485187163638094372300049424276891272283114113330477752589007905685165106416730710914423425490726726016158306461274, 1329960045220639749760885246931093310053730502438133026775595070265339163769716585950816541911090374455577826849941474299659146867048316380731211060958572881291261429163337696250152323224552876237186121708372278945894082684666779814, 686899373067868928507163120810453853692362068984792275540071607626946463794150908502370899486975160060459041801782294610653825154006442811065879136725340737933468891474302977252700315957347645214644009979140125767897586357689889022, 1315421713279496852958911098437165608428473746612895440649863249665436492741558464979091278519086617475862156188110647522199631119312065017329818202193120114009936841755112425179261976483945085451331711155077661888897213401393065224, 1256450293838683011027784038161677827409895517921544903628427729564195017727797676829752637747695031857603233701860317286382372115803711389269462917738195014463115040622641183250572094460879526026006504989233616491015708937495887798, 1178941680663957151527770887117587337229607996817145722445723642628352998280508185261949975221512265453381339970237754691701587677937924526545145288483908250542787329502113574545698555574551901364494590090336240661161508160085392044, 529023276777509906598689568874516900964324305756239442790323552016672479244648358608060792454171606496894463162368695047287243959165798910003658873700246586145214938933655849417134989477460228552599445214278755786128307890093807037, 219895557072441645244831035073655370155360834214277311155807608420197455969829767428122319811878009392624584181509163247120722221819238486803142948412637943732139066660783022678491422661275335999146212845513039704757290931888312840, 1104991475968754271155364319095420077280426343090298506584714932023824947749554844188249633450163761686570069163428375133651271501064429735115671095715425395480140751761265303965976971586197391267904691707782259115111475149523541259, 1133934230617033319807256429883431359611550892246325478707924218471178868643755283743719742353576965441702231880237073272494812109564415554810066503351806833311281337135520770937160390849434322364194942230657812363306333913951128387, 1140914439519114250289529262716029511769657471113749049572879157693780709459533701960695045695599169033097685213551097160726925512772163383451274845669702788379633935797377925632174254354917156431914112565057022087460982348289525911, 48615781470892337618727646135381782538420567977775879228204504776224666233882860006343299334013955939568275140764657875871824789846852072719825637652818179928929629010567619848848602634033519805136941245931572724851978659359937442, 35865782670973274863699005041833681880637989090726371006759892053033041492758099415372095776128458151913187161756416388114677316862388380433500043846933481179027701906205434549201057089812994749611439432210810378785969045800074933, 1271210011302030091802413482846955993175003639093858637101491217093024700984906517267563639795989672737669147522422403701941537667524868114440255902701472892526254053160059605617542106973900409282938743854701858442121361227307147585, 491586634818912971924346146714781277628970136112589235778317092436662463596371887421577063724929319685093496928223878452165449517320240428456298963347593005798949219065114066573456316690431530814170872710529591245469853092926098335, 279977978613118315099012171652562003828981884550580500239682995432141369494816857661769653408834806560994315884402434735482764789120470470556742865823421455039310332911954748599008574263197569692963268649534221230887733579593333426, 1108555833039111623759003851808703185742385541268402973353073784048229729003058915118844483711211478528577489330818059130199815668687981931573020377839193217502872497143020442645774065943160596085670900782317803826308770750234572823, 698046839348730924089073693578088271125547246401408248156746726934533979217691124503044253028918096921923515633981054115069850033591295914694889381488543960606291378710280489686573771581182593167704244955806697141568583159944199632, 556544949867225825873939156598268280554517379458621301405491340207977606875750602061629084081765171460801940142593779884486566637471988291054679651178041812034543774187256949099826604522779641356053317364549606846653896451658820816, 36407794328003983186844090357553084102386158858407556386899444192284024007969530661783094386138774942785300129664541451578777117511116458644578383994322402535248142358551882159583359687571226845145992929670494729984557136225870153, 38635410405570978005908084403674285791144139003474052356624208893444587945045854771238334086610738895141902547803300562691364400829430112459916724319623121015550244846304213694292591614895291791896708313900249274900993126655680897, 601399676751199338706430935308322045826373005943490764748180122201794239821279586411802673673356629220129658347003877054379801395949769379396539053192723932317442436663068945870151429748875747200235027285477616673164353458257757295, 520878517247940586553909017914710360099560036712099426276816422888638567288621483952491872180497318818594212558116519650754734948613865113278832725009838199353512280671959046526386086907657095815840247337159372550248637348907363217, 388054584704166998102783672067001209335633816473020062713565050433969197633250175024284120594534842730449134958165539441995433049142545698163587626473210185905481937743675650499964377946123272599214744101704288022942866494638185562, 1134906654723783931209217328708789339997541622096009609952575105304619226667031822040849880696680006547032846459098368505608963591178084678221262531471987592671079994350515383244306523510756146198460005568396446854347874993241943172, 730818447301234634264297027037377022958538565147148226787494430045677390022742380274130477544327391006286153716310927135478419459561388116700727989812191727754260987731062450288243305114644088173991368764079702342242837576430402146, 286160774001183196739209264469382159751747416718142778016143732145649496835773696514673927760919501406156824051622740582490144022341048886251610137932285050142503704150695305788677876861745881684323329038126374875252349057550651998, 1267360868414875478372899812716466835585081113010601599636968385994540327226433407065242978531117788730905501881609387276708047634265156603625372218444344585223071420784659060567182023733054155275972679896930800687471980866655281207, 990182649676097765635425272340607801055441976341788105130856390440444380759130051386761916072694073413432094079683907301109816175690308013444483574821459284597305570920545779957382721648088597115377839648840537428602693580446623362, 550421699054672355503952687345938025089402458753252546026890777392183403721181835928126900454744458559313304541081672313359442838976020362041822431168362572133653923637484715460481567762020732328624895455796438700768052707633323144, 834301074660148759226315154586190279709792891427389960568905108635869707361305781515142569172796331567181639294644870576096045302583450797692034893674817497161352799449850421412796165759171130993945399721242520030784193885337321791, 829033855687378383691699757108290186247182519166318631603483027910992175057648375611575811948885417113578444303622433856139418944851081935670603616340763629594150995043724571995128641761534619970673272205250799805667636434768282676, 913019078858789390699381831707926677551772444756607028803792699324297711899438589099530252655635036807547530188570269977236051352100705224226898238299184928708618303316541506723120440717715474402614952085756775978043888751167668002, 5885565445764562585831497472165342869498297515283891666729133449842944374295204023455778739013045526336773046134096896918921448375060848562058657374318208524276553315708711184579673703341411673851872178857241837882361322178020037, 553154512574143175498316702528101151913794662627760518018968748698312623577151731016854675714532938451283559114771163662181532090134924716973069618746411120394935066891741642205785543572159360540377025487475491108085869030744144978, 630462899544920031685615783099439783592910124778108299193780794614448837608367305125106061372877701823620457625153460005976590885964528764185366864724685639413918432293877903510493139902244024488432052890894787265033871354350597204, 391226827505972956319308587517810390906299918142025065714221160236648028880150350314169600374586162355522073842961493647013053757263876529052012580562374508570688766142166250990585017694282319858516776162120479183565777446609862109, 24510861434108935012630697492078480867389063436191896035132766276243183095124218764255432118959938093801724629439076818214285429457251158029577997227268453903220781477043531790864194335376049907405667227439596320201072167556208157, 626869568306793560012461217743128094274765588171322043110087152291504189449374763298696502835207791420253326897005629194408985696937681021460199222130409493545004595079889826807672143032845330054656994367394604444736503153762405401, 954712523571197641078887991606917547104806454702419080715202367851095389854959529098251734944180812561010905509020274231854513342327011757143496812810374005695765457714682269309961382216589897265057461605921120178521850597956002064, 171123246224186433760407906803368299954036525988274822281505437676518226701596370031861840934928409493190908773580129348429750934050942250670325596001465804295132074072630724893348698188315109977470512726038374419750374556034958347, 777041450532138306075348355831690600983153888603088681765596613078199984625331572287365780418324205662254152247209106793096521660566346722023361905424711495623849157801873291125968069765237381964591952305573777172341439413860179054, 1134124077138020441583783392151972967688824455581796847908344400042881120040770953217134380435702906426128852408097249040560528707775124603421912963698409507550669346160886471804562223680470147199738859242505787976063873877676843213, 1256969062947051714837177512314234181726617654922795765940904568492104008125968034397740242503446016582639298521770414979104434725773931146677469631529150467533392363686400550785325060731359059963938341894072365614206873054228098106, 21346455592575457437640563412479979816686605328443708716549551608700264070412232064092437194019159369835142565570826408720343440037428594763587798981415462759508718062510675814414140754890875659383907548603851820622913625519684810, 1384810708345937411585002282659311192029866370931584796654176312715692411561830891640568822549050609486945533563366740404354428056274045731421204449483261607428529916867395670570950019801132873780039606164540403110696619585357127943, 973307800305358674171981580754662657516204181539240410123829040107380229104053590734044644588630483063608811518228340221040198426604142719596991725307320223705679004568195917437882573436423276713950030435097508188029906120382791825, 204716010145259774233059791044820148363873057989246643315873965668282065316306960570725288562089454481636522684428223136768657916479603057916664978328516250317058234313352115373749218776844643937380650237246273201807300934484976171, 1326425349004630307764420103593744433734830038928054639257465202823323047135060584643537721467000752907718568683897098371296842667941131537633324005510563745279439554354772413153024217067317091082370062417184191809679616618023268189, 760996554205969876461620492472074179001432256529797462851366858337837855640227716662831845193457685503512131211215041775681594710690179407194281949214907061527540924251237721966690752222027356835859963564084918708438639539688681895, 659180931819319811972607146517033402223792181934745900469189485331175751562864185158072680079177990361652349718819289144105995241605845209372828903606452725176071285796730143289471169389575025692575143242284859645293048576620059327, 293231779261999107128525236604842133855159296870720328393532073386218834415031102843820367942192727805800880797327660257749658591790295661243987502420578772533457891552678491203405301928944234426628646866496992257140884488933557100, 467272395884463137422298866963346545351156195147167185674833684479872728699928298840888729245945704669969520760820415693038843788800043912641512363684837725337334006418917627431199825309392432699029574479429688006348357490210864143, 192960484573976529581090357190003008902611333988162183328745565700401174279496143475129879008676623835620825339609789237668632317179888933492245643188346417295280891291782110123027705321935399764448976092951775780199236314690382912, 239349084513528343553519192971973324784200161515794763197908699092603112015570721395134136575832375272633258309683812366751873860200949998742468198787885290324509399868774663618926802336325515681425981598217588680367822741991189936, 98415649201617345701280553106706579925070141172556493136323245891337392336654352286836969242706724636160300248543854918824274029911731922804650048619245593731776793071642016445578463490880460393145934754407128066806219826440249033, 177903360075348795072380785902258755795772271534470812965126079726701312550125309072803804549200544564203349744973234531096117626824903374709555167026837706993941482886714712312259868993147059696456528379247744026745783552537156143, 1352986071674113224684263325370467784865788067009382669949637244540089031744332896092446551965095358588917518330353821931911194261734839943897469107502711904734810582842405270345133378341571334104560160340269337488162948741356772166, 359401723162265518971359366016451223559773427925551230057512503340645725345294745644749547763456577519880262463335479208340328288145560033593649047109817443210071878970257434881002975439188809206133809058928646261190716805215658928, 240683909772717619104210051432720927690704973452627562151222395406341582142763813820260417149865031744256578972022407393855358922282559395624173040104745632649870765156080656811818899511676516373980248748914398765928605709163933665, 405882750356721910451134337827889641947396044937837623444970762336842401687482583834962117985640549332646378545385971491407242990277083832071962874565480313160258608933673603308307231575452914204270757081029011966494191642428158654, 610754499602310466609875795599038127748742432042782737115803771579491230904532513635092134636017095889143646190667316974456873793563230803886760149848365919706934773774776035003783956247782563111371864641136572038222075436258968289, 1385680911210105952272449701823720782443476855408902810289915551056494413290854324943533795112196897158392538463705591911822683752461028674344256411493755109848823474657941098600203255346396940250299366537358115150751724948377228893, 430420616609256813944429307950669180295316125421986387332510911822277067274404405477047190986957541445241633976631108182961474201706547393514733284532594371152939370708457638436025502351316536329906950653479052851200817613159516108, 373136726617196354931591022530616475415067716204866680455884084726593214051995197213113015143539286901805390267930110434702566577325073062723719079789575468100327529798216591628352324179153793021153947157180558217717579248767068626, 866051359622113564047132674053369313076490983041964570719427881568661607219168155700061439496833151071272833223833342226525799005531784767170201593283283470388966790307689832071237989853573404536094784709620809847301451610339620592, 1217329160224830652803840631032386217017181499813300358720244407262897512584532687726817592544433114337392644231034786240603320136715912124210907284759615917014943014392086667506292423049291369197770841037544924668608683873163165202, 860804506295854037670873559627359414925393918045671308038930748653559202881932989833460194118296497144382308676584861121067266939238409843887673872158329197513089719120036254307833450931335026761585081737223728829647055695098006661, 161536578454075219935833544411351074962204041387357110217281089737528960667787023238106240933174120717986802580455162382701664158375557060819282632336245196140359886079526425798364152220479991162393653742148691023196597823086657766, 964740227304444792110035226241574314015578329962453065628581921529261228322149012137556163152394712815368108795749642221804557390319983730565148698928264764290941990423768067944103579293547909627637051917647874267495602143110607550, 959415825357695937703249572287088873038885170772924887587583879680422888917137288861375937902130810244903026342583317901131182945638261538722662029036927419649443851306384072067989018978758907650956399967560420451733705374291942248, 1142020266828049474800685352369079575300842415088042752431779761404910539218125267196776013963150305665690427111269783376754521890034517160437516404260810448179095962769989082725071587369082634355706192869921263336767456748293083188, 371352468105555991577728015844832214273501569403837406381639115829922502978718780374224233430059164719655090149982122242213136304641161181745387737044363960559262359852166289187642021977600144369666935663803408319491448259953525553, 1190711548720297427511381629994463749177964849743736843395148513795138626970649665263262385879061867109238776283654613583865531462909657067585996973250317172887304847380935992652795419111369317029139033641426986541304001884221440783, 1379989129621167815161143636012707466421308828623468705322326360080272139245301168155231589258271367681462935288695082531349181296379311800257193518726657819682975571990484428268272344743060152982533586292224482896869965151606603234, 1243032366659966613187232235203302195309114070085304983789413455169831882578056481796535289574711657347054204692209321974487575736141799801544184288523962414829706504615508255000302162086777965411299463448291396954265736965561807647, 945354961308414023068520400395389594889503927737150426010179152251848308561414760873859368079930840465717082329588041891236985096638102105988141638509308033753816714690520249472012461285414410484693737403091833240723979334648956881, 200121761476790466088278785982114088889685425482525785126657410969606520900662650731112377914693612958961032466082496901079035673309911620510516971643034767604190345912402034073397798403547640023205586468436160954385697143646963234, 186915367741059900673001170225472157595773269697908637808461364359639965650919971016934647292816518229329624741703572147201532160784389667654846751179202735601814552324944319184977139518455709289325416076210016242602938205910570028, 160585465287575498275390204998261101903611439685299531922448203239051763640990445072444089278055654408233010822241401130006609430565803529437231396980956022466987853747489908384291901716887146262325399653874704777230777643643435206, 1297601259640146340017717169094858154255836334399750410710690101187402784911518106889671609384707807392059765311894906588885011577752883372879490378265104661322821660722679615736671199011704594885511377040666962298367739845164852111, 142398682681100506753282727766781835995768530158795686472162865116101088259405620194835917622953129539162098595155900948130154764033296429671022323143044265295769301636533091490129713061888999781578521066762755273911770076718345474, 771142236758397994605531664635852057491958350583459160544957062915003123941319918709074736793854436768138396613545628140624836806382675483494903911429134862701931586743650700467565524104152917438622787198531292659159928147870479991, 1096572894794175242885229993340413807022379734986902907361267766149898148095461053727691884130955999927898299144017963238016168190216109374353944869683587856977803427378744481480306264612038536652780876430361279796371345663671841647, 161107952302637159873669454634619426868552753926777860328719794012849118098991003810121217851885652421217155822664397747651921937261026609871599935854824149586813788724634771486451355044382875297148965397592277261052658327465901145, 550671046682095911171904347010097234105726229845430289353793008688708416014592637910892810706089211928317068511939386401063991796479574442395681816037593102916556623076928383134873713073764076261708231933200403335496315428726618563, 812219748541826617752156499939382333361947025773838891688706986920764660501225254492826901089665370562439515639648103489304380404179949172967833279834556278691622861041407256594741488604124948578923246430558343764156385747453065675, 1041133450270982809490614152667413452723264536134199379122509782780992436266542310562010097406655747838676985053731573851786594505845872902857735600831081666148479838462665300923793323462194441063271934018039093602040426889156309432, 890979082536267889458165105552943482747288617495538964654075008433474644239615931730631115887756507645810650693778123265474654546269631242533596246060043744505779815413714851526924409152424086761527596910567370609452577667558510912, 299167655448973949528231014124724655555907375969414508937145942026239468217658517300303055344789914358269113054254310314329232822726297492726180245547446731447498879206380826416396372153488952667617771732953572193028747347023467506, 228251265685288347542595140214764630895394817377486354310893771730205213326415073292577730869662994103774831413637134902161876821235439986113144861052012177551452399421564326535046955635196218365164201988972037170180092708881855070, 664447264021210044070978587602934579880303299101532680250345130477496038941879543116719086153023090914137228792692199083408772082879639428881082472338728242223872308261834131784888611828789698124357349616636879941868446452023694996, 773791903732676507204615674352574471140403123408067271667496472721336677816999967981672262597624163773447969992331153149402167060258101051598617254406869659974977831001398246143181802900225447261897053606183766677471854589033554548, 40587424017120910633103189600011270620768989911282150855050718181587340274494289774888522064157330720676125420097539968165428169221319420428794320027681867985371780939180347698309387196034839180789997294540915409286580983229272741, 680164423508756088383722377260610130989238039120244665953612468964276682850088370683797512579601027864484823238022181965843824523557943698230824605443258457170077241979006625270370267409979993870409742954175412482002424340924667879, 638059681391407818843576027132717671567634986880314779587247742446325082721245676922770142310501995322585710127576709387560490355607267963400346423492512787263325261853943002392523417247959926699579512588298402083637308097430079158, 523607609060969599307674389390923529664239568632699733147073746183974748958660153927489986392163277409878382511579569483741975728633086126944643070166060015439866090749698009190376453741600761662050530951888182177504537133267347063, 852103534145063171619665596552851093326412322759837916815615114464646693170958751819516496693218680950237064419183236565578556594976269670877445779556229976700762232325411881236676771042174859532728490674436855016799460183028649163, 846729071773731339685325801185327588340955653306339600137502317447459077052498860648774484030756137511609337245273170980108690173219812023726192387984763192397242903751739183293614567171776202804786132885225213053093230387466027935, 545850167209907047615474312336320220061932323428771416982801928698182147256112824129125580545608011892374645285374111976159805563866473816634684571692426756827760694479011368663411955498409860253308809524460735045561749999746540101, 687093449318745251151038470451400752552282480559035481569114752003060380236405219809723657340343553840104772556598574330932586897952193868223575164881160139421519718418544298961319265347521827306780493496032935612212017739886714952, 400383835100911112014116630690791283654920996515322721128617968393281685992365178672922641541346446950944128641835882975285291867337867750595740332284509311438676203018156464265804235968076528722753692015790534980708272588987784826, 61378609426873077950523943493277383693366904911347734660284020052763297754619396388474967050331402367226766733951814976773497208884408224217448759737865749784370106249316212945083420348446092292782846799947362258906962629696916373, 90073485835224911488604878588629388248748428193447170736170365800786470693783209704564703563482408298823884714376660744226323050282411091931529277634045767032972540823185354241030334578704317865779356828084470250965222908078782418, 839872940304181457299708491342679425116518535926491258075615877339290836986180911269337879692933326765824832585078220460440078825895389242844687266259868691244230564129843073307819262069202028493978887401076126280280896151519426258, 955729982399289858113852148670119564446305378148540509724207408775160585086053679303716483511125518550625754134283669017439719851518439899699449314869797648861788227492643730054075954443888913304241381663609867363057069776329073925, 801765652448979763705162344715397154507151316150070457393728849100312037756401643390386382613884803284053255731800970508445426342479916955901625707984208418266185050559390572687325634639998492380140686409207213741217878930895248047, 959561485494063835547723679670596682912921847840436081792784990767278941893793717772282711176096008262346091114625359024760783082085592486741492653383725562822543366105631267794570666938038440973501988632955204098880063526842007833, 186809689706862543835588951677487692878434106502576879953238443241258654875741042830621336791495345895795655889947512599485441243690135151478067054186371226853681742532328279488399817356535226192216372170734737275553661369867677504, 92342989923120791105364136228653935273585770043647883321521072216789231625018270729744214566108694901045614393060796762032509989689330844779668912237649181496635095954355178030129947522504750826525807372648883555605568538993924126, 763429262954175862149037617986895779099357597314958492624748551804137154135951968425500213409607243266020683002628411012088998034775572577147169033324524272484689474206201983890969796122497477871541443209812122405522884346728533648, 1152491154606145750982371504444385095927586273021689139470286520704526680109242194709675935700719912103290346221595386023745241906822026234348303109736110790021829774772747327744338688952180637114932030017382842931317885565687378896, 211000077667369835376291954828595067966483698891714406089651937577576167668775517129020801462695306560720313531548244346382964507246367316094379221192573488910291202640139057468970903521535742458946043514362353119307042155797221231, 564186940709757270252388911741246851544127501677066386402082347813754265690335792070760772587586502689258570510655771729829603380889372547904131168802997448331716867661585400326367521161450100589978979591991689318285466781321353719, 10501867147802953276716322573248297711054410023823695162998962934953096316034713620103159875947738440051794134844868241989289229718030157960106067604579243402448178155216181289762089989222924054999130869052608399497702088425617936, 1112680130922478022135568791048527101814855661851288501070221559592969030524104665251255313805297613873656078858957948640046785232448859732932618712368909465774646126897305254251479353725146565247152108100599154596859503956176456908, 741656395215130155064878162268306868471298620860013457056662798474980866102506919811248845735708722234272381998010135944203431067865989910066819757497742724541064971275308991398545173970912246029219028383661183592825615963824233632, 543508862300009219354184452855436059124198046579910088717420793366213772161220467396849291655305210024894913514672296771970981557401293334653384451814618559540264573751651466345617701027879278973405822966714694149396158100846802729, 1313998892131200834368186952967826100244116049318712555114970921487971866528094375233389012050179537085458547343438050633311518354949906872580886313865864927297257595743845721233348614976332292646407059531972580512560236040918334473, 932920259569055523832865156847885629890928920914695801045872355830317383407447535752864863834506245731502804276878290925471904990754121972200474788864495529895437452963814311366563041669283376168401471215704616660650095475701934484, 858710740214987820983079893910284158157451128547424571387773216849417640025228434299848093448654401597129139858066478507112763276320363928512049597862516562286819486805788092087230882398802320706929710715301205878918507906307308364, 821262989026114152356066487869885287189032005792552418660551871284738057547991153808577845310887224506046892166111924503018992924367891046487260127154614364114764724912492376968723379888408976055107376488916306140002099287744896322, 185925808600211552563390042246954033779269349470463915579650115207626094265641644095648233061653124208445063281248459433817462506163698581551611027676524909261113801358010523865121604997277381023109334351248595507041584409068421032, 200346478132674563837481010302397073148944717427594265804126746298503575640007337914584721156304852037706483792478667646361776918149439191777450348415469066414902493258835140927069738281640779974089407129975541036155865817134683840, 1093660402515939745183367646632918563067813513523085025024258356809315721618568063685990273657485994884037575731091678231314820097064217998172552876647244328232711384388245992493407715510994917415083150105969198771181548767673962928, 60341003161284612512192803310299472094245086717046643322504994512360612485877751163121511773214799659457595511857676567883582720465074682377663793940075166411813205793667039813879838164790632214446675527682462439349442121986717104, 420723691121481958069767700645911156763387820298633793754625205091054578300064997469384071102523270531441938179141164024547125704832654346400246104486761782619363279400048886018617913513314463167343517699318036612899109120150702293, 1254597695014685022935375371037372331486433865469498968836298136674117182718899840112089913416334084006423744429849407440978916173478794168269244690183675568834609243044239787125679345768420772494813528548969766811318406842123324736, 869905890608858805321737182936260950606287930756563830739923222898945610300956630586654604498542278625345587510915863005989791861005277140862596722425849893319700900830118869551746330826715569597207269939678683531844937959058153076, 781959143090391663575756556273737410475504007620391581193754175541637334661888716132895945487685970016788216238987542729205262874087536435126924651497881305162201248949550263152647574482513872297302749105816545768708561696027537879, 850515093936664253655181162881060249621951841194520760483141219809782617298612870215852364268040401957321485270788264277742018846183907616746434452504083969425438268045664436481339857629271373717570295055035429299047611110203938960, 1355462712385617870265315092978537835631751066636828209087991524238321997123429315582513844736738970811169416400552655379481238868593410989185971304534400124666167457423014901843207216947906212382681605708046213702832099338453464943, 194725135363200405168456794495412260883937637882670257993110112421282708361944565336498030050004857018839280745474197423911425166757286100424720408637483561147863097483274828864248631105277269104762828795957329165117916931109578628, 1343344849807734776062814442092099438455630163831261318603185663998481118642525148005413589673537822813998785728280451254273439810361563688604355561978965346575051775468982206275140748747109952512826548052297543988578949019873317659, 942786520926309044974081129912939411595121314769989649799940319799455428782737104449470291090983345580567147276157824539945121640862490603591136168129750547760770969611706036894843525082067869989129033310860477606809049920525511685, 689336658609411225526215563642666118745178198975965549516024333772846837314789089120908101245259588193132217734269347069603650594760031018180695063033167659691846656291527696578981973070003534665874676348624789746368383023203000761, 1330199842666104522229622732776404005059717848417447780085858790658186574080261439618529270254420888222301948240634103169678874253545737624182715128953924733446139169488074163489852513826451283550214674955065440456552022812587552519, 1045645805559487918562741677035016766979546275987645668943101369434631837845166789321021787665800144787011909778976832599170822107417001377357579047415619990896985006731652040153912309063165682721839605108811167409094061981357530459, 164899315390507557743999166936357912746607046891117074294021241068598723486792368025627527705501389776923152523361374939007697429523753125722033874664042275206749491051421247400650605639502499069212727117172143156247492609879487423, 1202075773129117787740522576317914307190069270611256680009125734704502642642900259655466302063006656412268849456962298627536632696188162116775293301753258312168568119699217070494384441006451948672935964353232513369556056700218102818, 637604700157890523877868844905605812374561804199327822544897505920118531120038837469578077046944056453761649188524864253683188439818429728578227926914372906102366784729754981310716512655137160369440610802310685494204142272912246948, 381240570753020375824972986592053355033736405665786158402819897011057955771551537798430011620686899572442265113614937327404005446186510868395696724673650868589929593216295182420884343134843628652711204787359169789562892582592646735, 562519397750338643082814670886933677101289974675146675557081576975905988290129343372208392694979482204542061322598574687633817958587295990449556263569942588692958639817706818228058542675298542507987632419710013418414857679414537183, 1189775025995566144204634000762068476074090514027704977012650740662740759098392280597859866029286164300140514103411446013511700274383887575079037623781904679981331417188425648666172473019416133768191249644850111697001216827958851020, 1300015041583302302691461655494556111908702244076924676889118882914085284401874850930657025356296997624623179248230994874652955671532831204805123662635309936762716588862263974959083376434870606341743383261749952484650153954923716624, 1137435633565537687216870763538937060099161921010160850108104365638127200209605720840240155784433718883412604688507047465225206114256260023229287115171342324741288923556173637538417342620941925206394916134099122919405079250681895161, 1340079361715014461204048771006034512677084935823756318255751010117192028528902649060481818870579243718526403671964288936452274489602050558677804180092373062031886384914908683744013901768305049340498769628499474242833096423124764053, 81993287122066912117875959585683012482046405161208095559882359600181807005772027284797879395195097138386572614788127536375741782645928543707086347846815852514251802609904796913273806906034284576720940501431348673163815250017585820, 1124755261051105017501385599467494230293547211839966232633251370724180054469614491226867559128003244637026502029199337512331543216717775279623894147280779783795353723268971995859517406604336209838809184344039003664694466910449270699, 1155395593259777315111823564611149613465090092134953199429807104576243005166705918397901879670292638763815427048011731564502534343624030623525561614924128177349034998452988502951030625134627416062164528665231540032070816261941144867, 105739899828848409055717924352513042615180174979970244411935480580850967969810632815546107816672645253994848177386497745938052157975300285937535634746943254591988609874286914378188881360831817011412193595545271514805220655923864759, 149927661146539276144244622715173696644719563253290821654978800605493647718689326159346959244699973412989169245986941600817237096073574200371861417191578148095850188475267344475970030758414910075074019850887668478007819316013672762, 155368828933487054274209138086516381331497425287783541168838913623395720780341737107626982271619626703626329484647466628681597460552873001959499416634772161602005152365506405811514571400446047856007121749116427576030040939849784640, 174894133688211760250592622247447506993210109474371364944257293234627877067527925148316374009336466311442689467159842896620789789977328990390321713842090045494958023771364827826303250376730342958116681907027430082043527284166415563, 1437919815948914907580515662667739375186631497525730342671426444744888528971190014844812127875625916391587046219280350655990528500096042209559752974352393614481764635443926816177801572013769925122429894788196062335323780615040404697, 261419477464370307854531088675380685784694281080224347551666693258878379765390402104717044956977347947260567792894311206120061108905874519428945506319972424558997498735677437871900356085648528281587776408422631663189048107680974998, 85183153635082283446745640147126493257705813305821520903483032496718847703275684447507848494294526545102707469511592134814946368857066884102256516978137704452381121644409498866477177981440488726483650800856615332845917787819682341, 617732052939866149328195329273253131503959684010700820243605817424206206909044344587507664781430346554324884570072780937385478934795824874928855282401334155658319180226947090312853297774329469102758348506324378511136884181484792440, 1135611004791548473100176081329555925005408609416632804726427910992013607280035602077897876214134602204727589979445077656040561519084567249897461773947180063751427854079510702525956489394493001298424159293487438004615540581592777476, 1223654807981726233817300698494015643961949412828776378472248523159408320375108225807657262880783923444871114338798871517964915748706839648392541131841803432155779388447189601427830344719414728427961518679288651345917141309311469779, 1361184226632182773711869656852522858728619072815451370189677225472538103180711021292438926089024888759239569692358172965794792086098452167040985327000194746699160872661844326028350899387047667018305782988204473926645249045494366560, 1395006026496445755999732515557210459146514844671838022542759473579330171037710416373635346590500929618292548831563041713515347186848958190153183875692342504798307725651962367673046215750705425472321897350972112774036080901449033591, 892340334197102448455725139447148290827884801195859460571150823971500492579942011406342993546801070405752900576147273646877455423789420305282049767314752571073794807520560928574072869537012527979366592543141312776993462402128718031, 1348585262858007191996352703343029563294690946949858209546331043175539022012036649123038145461743973532850456987388865850166543191133166832324339205042987805906268711954971926426780354583119483753604081408337315223010626542542638397, 279785376035999560563337281151714645299358005421167974079571855822921631562057298408687707281621487946277318147039346227923783593236520788054472640942239166602739164930000327156974337127824200759002462712793952148160743655623506592, 1268039739951615711801455174328995347214665345735409711881052735782169835362828914653207425080002407647721224078715025404928283208067468897382733272972024519153449020433803175968865029822137348359430013224841226131760532846528590840, 794494146726052829721777495859523761755997487803216823334575021790822087235165176714764503504710962034944252846951125433616100766054270427749486241215431101687316395523705816748652722824582728490153540415417657144580305669812541215, 500033942171638486383105713325164893215650510194294861331854668606700832652736168525436227375886245102434676076992193983490167406082101168418011849920762584487172727630219984871944664938691034118101878475997145779239156361249340708, 166964384148973432001553934781085234131589742848754340596039163953610659371305422154171200220073817215334775978056185713064616120382433456048436446349549751224154702988866121031961845440073752036535831138639871087130680644642390877, 588749672457581018656240493450345846652037775956064779398453147125307925390320871210807816241501545470137386875435679685426019106298435631992071893228936173825713911624463734495066576130316127731857681800550796805562209648659316593, 1160377458054597286460359566041498611490583564215443169811796756768786712388488777898395616988368092020105787005516050266820508355821700410787609711225694953535380445485408802610541888528477480175347981160781765133987573360002464986, 326035284625363624338342246716286447555900867657138604020049664618870127201371407485856867985764393451271705659761603042729762995142079596191390931226729221986959637460732653800146500161762141800780548688026532034844317903194240123, 914933871129102362710892149873055360445644781142762737352687895687876984306458586999853364203466011522315585612878855782117858880769601645354799435726038782725486659386069429098190253903502561192411407432824497470157330143469401674, 1149982570911120589528838453543710317579466530481817297171259903488104733105850407485662607852573269165332829356347863476274109269645449188139368413119415931287625647284094023947061935807860547564701374579104530453223114393988621655, 521704091552358395297834124432182418049803657449743896899915406867679102250257030327930012800758796363768575804962101945747350078214795755884533399627230384865925272541535402539616621634769961064552917506560990816424685292076640183, 1164921399646558379283746335953251813244590695728142785939114386246289700986153847188416263645603223596349906226608237531462760946001059594926421186764732439827733770911837419395158722213129855255464862479321884723976004207459448409, 1129682984818953188893010989237376364864082562036717428784645107725409867238630572642625601121116156074817884013822892929619066831495576546808041791079182474724352906231846929899620305349398578857036998801806838934351074453231245349, 1]p = 1439830214451992034013504859825496348425599138552815552028441481225682951310010651304957987750558339128649248859043607574873717185051113737355019502086518775325158336557488060325293103679742942484012852921804371007968007851081933599
R.<x> = PolynomialRing(GF(p))
Q=R(Q)
M=Matrix(GF(p),18,430)
for i in range(len(pos)):f=x^pos[i] %QM[i]=vector(GF(p),[f[j] for j in range(430)])
y=vector(GF(p),[hint[i] for i in range(430)])
M.solve_left(y)
#(232766905492121523584723111736297361759, 328061273411433237903912759338260875197, 150466163244263796359526178730917733336, 64156810189296343079030126884552967921, 6770412720124441447536161401231205285, 81162845572295731961418382284711198076, 145155918563801313155466268136086691055, 295090704020291233238268084330938364696, 281912772467581204740174686468688405760, 39800743932680967156569363938955881788, 127909413131477378514965968460479471790, 323273634212244387051650265924016437595, 72526527203942387707773211040065343689, 140155400147696246508623609217734881920, 285401375254495007747692901189174752278, 176132068091173488530894527009633409599, 290462912116403727629418982061815421953, 275609957223526193497841020687316070508)

magic_dlp

这题做着走不少弯路,被迫看了超椭圆和Jacobian群不少论文啥也没看懂
给了超椭圆的两个点D1,D2。
芝士点一:
y 2 + h ( x ) ∗ y = f ( x ) y^2+h(x)*y=f(x) y2+h(x)y=f(x)
超椭圆曲线映射到Jacobian群的除子为 ( u ( x ) , v ( x ) ) (u(x),v(x)) (u(x),v(x))
满足
1. u ( x ) 是首一多项式 1.u(x)是首一多项式 1.u(x)是首一多项式
2. d e g ( v ) < d e g ( u ) ≤ g 2.deg(v)<deg(u)\le g 2.deg(v)<deg(u)g
3. u ∣ v 2 + v ∗ h − f 3.u|v^2+v*h-f 3.uv2+vhf
芝士点二:
sagemath里面的 ( u ( x ) . v ( x ) ) (u(x).v(x)) (u(x).v(x))
u(x)等于D[0],v(x)等于D[1]把y次项删去,并把对应的其他项系数取负值(p-1)

Soluton
芝士点一就第三个有用哈,给我们两个点
f = v 1 2 m o d u 1 f = v 2 2 m o d u 2 f=v_1^2\mod u_1\\f=v_2^2\mod u_2 f=v12modu1f=v22modu2
使用CRT可以获取到f的五次项 f 5 m o d u 1 ∗ u 2 f_5\mod u_1*u_2 f5modu1u2
其中 u 1 ∗ u 2 u_1*u_2 u1u2为首一六次项多项式
则有 f 7 = f 5 + ( a ∗ x + b ) ∗ u 1 ∗ u 2 f_7=f_5+(a*x+b)*u_1*u_2 f7=f5+(ax+b)u1u2
然后又给了 f 7 f_7 f7的系数均为128,而p为256,考虑格求解
g = u 1 ∗ u 2 g=u_1*u_2 g=u1u2, g i g_i gi为第i次项的系数, k = f 5 k=f_5 k=f5, k i k_i ki第i次项系数
则由 f 7 f_7 f7的8个系数列出八个等式( mod p 下)
{ a 7 = a ∗ g 6 = a a 6 = a ∗ g 5 + b ∗ g 6 = a ∗ g 5 + b a 5 = a ∗ g 4 + b ∗ g 5 + f 5 a 4 = a ∗ g 3 + b ∗ g 4 + f 4 a 3 = a ∗ g 2 + b ∗ g 3 + f 3 a 2 = a ∗ g 1 + b ∗ g 2 + f 2 a 1 = a ∗ g 0 + b ∗ g 1 + f 1 a 0 = b ∗ g 0 + f 0 \left\{ \begin{aligned} a_7 & = a*g_6=a \\ a_6 & = a*g_5+b*g_6=a*g_5+b \\ a_5 & = a*g_4+b*g_5+f_5\\ a_4 & = a*g_3+b*g_4+f_4\\ a_3 & = a*g_2+b*g_3+f_3\\ a_2 & = a*g_1+b*g_2+f_2\\ a_1 & = a*g_0+b*g_1+f_1\\ a_0 & = b*g_0+f_0 \end{aligned} \right. a7a6a5a4a3a2a1a0=ag6=a=ag5+bg6=ag5+b=ag4+bg5+f5=ag3+bg4+f4=ag2+bg3+f3=ag1+bg2+f2=ag0+bg1+f1=bg0+f0
造格子
( p p p p p p p p 1 g 5 g 4 g 3 g 2 g 1 g 0 0 1 0 g 6 g 5 g 4 g 3 g 2 g 1 g 0 2 128 / 2 256 0 0 f 5 f 4 f 3 f 2 f 1 f 0 2 128 ) \begin{pmatrix} p&&&&&&&&&&\\ &p&&&&&&&&&\\ &&p&&&&&&&&\\ &&&p&&&&&&&\\ &&&&p&&&&&&\\ &&&&&p&&&&&\\ &&&&&&p&&&&\\ &&&&&&&p&&&\\ 1&g_5&g_4&g_3&g_2&g_1&g_0&0&1&&\\ 0&g_6&g_5&g_4&g_3&g_2&g_1&g_0&&2^{128}/2^{256}&\\ 0&0&f_5&f_4&f_3&f_2&f_1&f_0&&&2^{128} \end{pmatrix} p100pg5g60pg4g5f5pg3g4f4pg2g3f3pg1g2f2pg0g1f1p0g0f012128/22562128
求解得到 f 7 f_7 f7如果不明白为什么这样造格子,请看我之前的hnp问题学习的文章
后面再进行bsgs求解DLP就可以了,要十分钟多一点
exp

p=28250322002421485740011517298787354630342182411922678481506757706584776470549
PR.<x> = PolynomialRing(GF(p))
f1=x^3 + 14837843646688223376620895623918856834301419791450189502644075689674679307565*x^2 + 11342007530582447297077768070260591643434731986676417772353996440271447424229*x + 17253160355772506039833501683117771635464243068672344160916188778934194482626
f2=(p-11583638164648709615113883733024362701865856309079457013197399476805753481773)*x^2 + (p-14799567073594539924214272546716232642453764116619810153125493046155930087914)*x + p-9020351128638199743425310619576234999021949822922952447017982687315971687269
f3=x^3 + 24086141351204484270563731092873802082275121784385117167214060247819862896159*x^2 + 12580133579221229248448771717453263525988015199573816289207551576399335707433*x + 2025561351219044126154032254344655853662339878505961213456370741923912105725
f4=(p-3024337373411188543472600372581043552807342888844351463589310783585361491167)*x^2 + (p-22142729345652208596100988590287276835636512968984185855026844080502870977199)*x + p-24006419269594097580414614133924457311337109216133817568627246946606650903690A=crt([f2^2,f4^2],[f1,f3])
F=f1*f3
RR=RationalField(256)
M=Matrix(RR,11,11)
for i in range(8):M[i,i]=p
for i in range(7):M[8,i]=F[6-i]
M[8,7]=0
M[9,0]=0
for i in range(1,8):M[9,i]=F[7-i]
M[10,0]=0
M[10,1]=0
for i in range(2,8):M[10,i]=A[7-i]
M[8,8]=1
M[9,9]=2^128/2^256
M[10,10]=2^128
# f=x^6 + 692298612271548618693802328120*x^5 + 397643323133091243928706796910*x^4 + 28687952838900409527976201884*x^3 + 712790217109563929108758989140*x^2 + 590782336913670589929306393816*x + 717496433097212224519651884181
# for i in range(7):
#     print(f[i]*)
M.LLL()[1][:8]
#(148052540055331032007555308590016238514, 65111947052251586945655951983504008851, 93153439311276898303384735916950467291, 129693145046103627902588801753217949675, 255599237312183395091456426063922873842, 122614232309893059905453724649374807569, 51021253825662629461624438997316978220, 109552142971378701505977049590101196899)

求解DLP

from sage.schemes.projective.projective_subscheme import AlgebraicScheme_subscheme_projective
AlgebraicScheme_subscheme_projective.dimension = lambda self: 1
from tqdm import tqdm
p=28250322002421485740011517298787354630342182411922678481506757706584776470549
PR.<x> = PolynomialRing(GF(p))
f1=x^3 + 14837843646688223376620895623918856834301419791450189502644075689674679307565*x^2 + 11342007530582447297077768070260591643434731986676417772353996440271447424229*x + 17253160355772506039833501683117771635464243068672344160916188778934194482626
f2=(p-11583638164648709615113883733024362701865856309079457013197399476805753481773)*x^2 + (p-14799567073594539924214272546716232642453764116619810153125493046155930087914)*x + p-9020351128638199743425310619576234999021949822922952447017982687315971687269
f3=x^3 + 24086141351204484270563731092873802082275121784385117167214060247819862896159*x^2 + 12580133579221229248448771717453263525988015199573816289207551576399335707433*x + 2025561351219044126154032254344655853662339878505961213456370741923912105725
f4=(p-3024337373411188543472600372581043552807342888844351463589310783585361491167)*x^2 + (p-22142729345652208596100988590287276835636512968984185855026844080502870977199)*x + p-24006419269594097580414614133924457311337109216133817568627246946606650903690A=crt([f2^2,f4^2],[f1,f3])
F=f1*f3
res=(148052540055331032007555308590016238514, 65111947052251586945655951983504008851, 93153439311276898303384735916950467291, 129693145046103627902588801753217949675, 255599237312183395091456426063922873842, 122614232309893059905453724649374807569, 51021253825662629461624438997316978220, 109552142971378701505977049590101196899)
R.<x> = PolynomialRing(GF(p))
f=R(res[::-1])HC = HyperellipticCurve(f, 0) 
J = HC.jacobian()(GF(p)) D1=J((f1,f2))
D2=J((f3,f4))
def get_key(val,my_dict):for key, value in my_dict.items():if val == value:return keyreturn Nonedef bsgs(g, y):m = 2^20step=g*2^20y0=steptar=D2S = {}for i in tqdm(range(m)):S[str(y0)]=i+1y0=step+y0print('get')for i in tqdm(range(m)):if str(tar) in S.keys():return S[str(tar)]*m-itar = tar + greturn Nonebsgs(D1,D2)
assert D1*251909161016==D2

stream

Solution
mask在解空间28可爆破
隔8位泄露一个值
感觉师傅们其实都能理解,就是不想写递推矩阵构建
( m a s k 0 ⋯ m a s k 127 ) ∗ ( s 0 ⋮ s 127 ) = s 128 \begin{pmatrix} mask_0 &\cdots &mask_{127} \end{pmatrix}*\begin{pmatrix} s_0 \\\vdots \\s{127} \end{pmatrix}=s_{128} (mask0mask127) s0s127 =s128
s 128 s_{128} s128可以使用mask和seed序列表达出来,那么 s 129 s_{129} s129也可以是mask和seed线性表达出来
这里想表达的是如果知道mask后面所有的随机数都是原seed序列和mask线性表达出来
T ∗ s e e d = ( s 128 ⋮ s . . . ) T*seed=\begin{pmatrix} s_{128}\\\vdots \\s_{...}\end{pmatrix} Tseed= s128s...
所以按照这个思路,我们可以算出出第 s 0 , s 8 , s 16 , s 24 . . . . . s 8 ∗ 128 s_0,s_8,s_{16},s_{24}.....s_{8*128} s0s8s16s24.....s8128项的表达式,然后构建128个等式求解出seed
跟MT9937的差不多。只能手搓递推式 T 了,太痛了

直接放exp

x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63,x64,x65,x66,x67,x68,x69,x70,x71,x72,x73,x74,x75,x76,x77,x78,x79,x80,x81,x82,x83,x84,x85,x86,x87,x88,x89,x90,x91,x92,x93,x94,x95,x96,x97,x98,x99,x100,x101,x102,x103,x104,x105,x106,x107,x108,x109,x110,x111,x112,x113,x114,x115,x116,x117,x118,x119,x120,x121,x122,x123,x124,x125,x126,x127=var("x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38 x39 x40 x41 x42 x43 x44 x45 x46 x47 x48 x49 x50 x51 x52 x53 x54 x55 x56 x57 x58 x59 x60 x61 x62 x63 x64 x65 x66 x67 x68 x69 x70 x71 x72 x73 x74 x75 x76 x77 x78 x79 x80 x81 x82 x83 x84 x85 x86 x87 x88 x89 x90 x91 x92 x93 x94 x95 x96 x97 x98 x99 x100 x101 x102 x103 x104 x105 x106 x107 x108 x109 x110 x111 x112 x113 x114 x115 x116 x117 x118 x119 x120 x121 x122 x123 x124 x125 x126 x127")
nbits = 128
import osclass LFSR:def __init__(self, seed, mask):self.s, self.mask = seed, maskself.nmask = (1 << nbits) - 1def __next__(self):res = self.s & self.maskout = sum([res >> i for i in range(nbits)]) & 1self.s = ((self.s << 1) ^^ out) & self.nmaskreturn outdef leak(self):return [next(self) for _ in range(2 * nbits - 8)]#获取mask所有可能
gift = [1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1]
gg=[]
for i in range(2^8):gg.append((vector(gift+[int(i) for i in bin(i)[2:].zfill(8)])))
mm=[]
for g in gg:try:M=Matrix(GF(2),128)for i in range(128):M[i]=vector(GF(2),g[i:i+128])y=vector(GF(2),g[-128:])mm.append(M.solve_left(y))except:continue#每隔8bit取一位
enc = '4709fb814f73b4e58fcc2fd17c0818a1e03ee236d75567b82e44a42c07e760ab09ebe30c76e6af1ea0753c2fc6128f8dfe47da897e17f7b6cf6526845e1cef287772584f767fdac88e60e388190e9792b46017908d1cde476b9943ffa820141d3439c7a904cc74aeb0e3c6fbb5f00b88c812215978b85da1ef1e216e19e4e903c88f9d62bb62e4b10671dd548d3c12ab7808b52c6724b08925ec648de3d8ef20b227571dabf18e8866739d0f2d13b941f10c11f23d31a5a7c4bb25c724d0ed9edaf51953540935f42190c8017bb8fae61e22d57f9543e9b316364be991ea18149bf966270a05f9c21fac2395373ec318750c3471b58e4254625237fd606969b276689db0bf0bab2d6a0dcd49d792ec2c044d1fbee2221fb08cbfc88b339a0da44c38c3b28eed3ec096f4f138276e0633b3691e4af375ea5b22e765dc0c43fb3067e115d24435e714a530c02473a11fc97e07d2167f9c1730b869bf360dd5bd9ab8bf42a474a837046e9c5a695e860ced0e5f1bd17ad00ce2db11df372d3a23ea429c590466ef0e63b4c6dc6669c6a86ac0350958ff5d33059c0ac92270392970e3fe1af565269146d8c42214f10ee13d9728835bcae0ade16bc44808beaa94b5c6f1d7d71e5aa35f6aabcefff2b462862e44d7f8ad57b55e3c5e8275f83585b9e60aab22ab20585b5a6cd93d291da66bc24cfbfe931b1a1efca4245284f59088ff8fcbe7011da16344cb0c9ac7dc3bf559759798aede311f8a326f37172b20b320cea08e9e8550ba30996c6b961de35619574d206ef4c6fc30cb78345be1eb01b095141337f6ecf37878bccf8ee07d2b9b4751b73aa1dea7e0d9f661b5ea9790ddc195d2827433011725be3ecc06a8a83198ea1e95eb310ea40fcd18449bba1d221f20be9c52f2e95aadc726e49480516dbbfba71465d1880d201bf2d1fd4ab87f7a56e7cbc329431f985e0b62da972417fc7dca0d525802769b7b1df98367ed2b1bbfb3981f3f1beb7ac7754771b15a3554d7a58e865fae9804e0a4f54288d5661e589052bd8af1cd8f1d53593b34583efaf9a17a9ff2898c91145e05b193db8a2ae9794684b80d3e8cec882e4541a8f9ddd745875006e8d987c8dcbc7457cd738acbee1e3bee296870d7ce1e4c5ebb0f11838c02a8784a4596afa8d068d7b1e448a46cdb91e29dce9a9a8835449c5ec3c4bf3b10ece44346b0d4c3eeb499e85f99fb2f9b0eec01fb0599473c9933c22047b77d5e589db2b01b80d7fc61b66df7f612b8b3500ba8f314e8e7489842b3fecd3743d67cf38bb4b6b05e928de3f2edc61733b9e1368bc4ff83018f90ac9dfdfc7f170bdfb583d9a24cc48cfa0073ca512a4f8d87ce8c07e6431338b505bade203c684df8105b8f7069d7dad3a2b038fb57c3385f4bbabf557ac97627fcfc47c0d3513d284dd5553fb61bc4f328f69027e247e64a45d8fffcf6db3f4a67c76a75'
r_8=[]
for i in range(0,len(enc),2):r_8.append(int(enc[i:i+2],16)>>7)
print(len(r_8))
yy=vector(GF(2),r_8[:128])def array_to_integer(arr):result = 0for i in range(len(arr)):result = result * 2 + ZZ(arr[i])return resultdef dec(mask,seed,enc):L=LFSR(mask=mask,seed=seed)for i in range(0,len(enc),2):mm=int(enc[i:i+2],16)^^int(''.join([str(next(L)) for _ in range(8)]), 2)print(chr(mm),end='')
#构造t矩阵的每一行
def getrow(s):s=s.split(' + ')vec=vector(GF(2),128)for i in s:temp=i.split('x')if temp[0]=='':temp[0]='1'temp[0]=temp[0].replace('*','')temp=[int(j) for j in temp]vec[temp[1]]=temp[0]return vec
#mm是mask的所有可能集合
for m in mm[::-1]:X=[x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63,x64,x65,x66,x67,x68,x69,x70,x71,x72,x73,x74,x75,x76,x77,x78,x79,x80,x81,x82,x83,x84,x85,x86,x87,x88,x89,x90,x91,x92,x93,x94,x95,x96,x97,x98,x99,x100,x101,x102,x103,x104,x105,x106,x107,x108,x109,x110,x111,x112,x113,x114,x115,x116,x117,x118,x119,x120,x121,x122,x123,x124,x125,x126,x127]#对每个mask构建T矩阵T=Matrix(GF(2),128*8,128)TT=Matrix(GF(2),128)for kk in range(128*8):new=sum([(i)*ZZ(j) for i,j in zip(X,m)])#     print(str(new))T[kk]=getrow(str(new))X.pop(0)X.append(new)#截取已知的的那一行,每隔8行已知一位for i in range(0,128*8,8):TT[i//8]=T[i]try:seed=TT.inverse()*yyprint(seed)except:continue
#     print(ZZ(array_to_integer(list(m))),ZZ(array_to_integer(list(seed))))dec(ZZ(array_to_integer(list(m))),ZZ(array_to_integer(list(seed))),enc)
# for i in range(1000):
#     print(next(LF)==res[i],end=',')
A linear feedback shift register (LFSR) is a shift register whose input bit is a linear function of its previous state.
The only linear function of single bits is xor, thus it is a shift register whose input bit is driven by the exclusive-or (xor) of some bits of the overall shift register value.
The initial value of the LFSR is called the seed, and because the operation of the register is deterministic, the stream of values produced by the register is completely determined by its current (or previous) state. Likewise, because the register has a finite number of possible states, it must eventually enter a repeating cycle. However, an LFSR with a well-chosen feedback function can produce a sequence of bits which appears random and which has a very long cycle.
Applications of LFSRs include generating pseudo-random numbers, pseudo-noise sequences, fast digital counters, and whitening sequences. Both hardware and software implementations of LFSRs are common.
Congratulations! Your flag is: flag{5c84a7cf-c548-5b02-f5b8-140c334f653f}


http://www.ppmy.cn/news/128928.html

相关文章

达梦数据库入门之:常见故障处理(持续更新)

[-104]:INI参数文件错误 本人在开启数据库归档日志的过程中&#xff0c;执行以下命令时遇到了这个错误 ALTER DATABASE ADD ARCHIVELOG DEST/home/dmdba/dmdbms/data/DMLAB/arch,TYPELOCAL,FILE_SIZE64,SPACE_LIMIT0; ALTER DATABASE ADD ARCHIVELOG DEST/home/dmdba/dmdbms/…

联想微型计算机c26o的配置,Lenovo Settings Dependency Package

Lenovo Settings Dependency Package是安装联想的Windows 8应用——Lenovo Settings必备组件。安装完这个东西后,用户进入Windows应用商店,搜索Lenovo Settings就可以安装此应用了。 软件介绍: Lenovo Settings除了具有Metro风格之外,还具有Mobile Hotspot(共享热点)、Powe…

达梦数据库日常运维命令

国产数据库的未来&#xff01; DM达梦数据库日常运维命令 关键字&#xff1a;DM V8、数据库、常用SQL、日常运维命令 1.数据库自身信息 1.1 查询实例信息 SQL> select name inst_name from v$instance; 行号 INST_NAME 1 DMSERVER 已用时间: 11.211(毫秒). 执行号:15. 1…

python 实现扫雷 (图形界面,事件绑定)

本程序实现了扫雷功能&#xff0c;实现了左键打开地块&#xff0c;右键标棋&#xff0c;中键范围打开的功能&#xff0c;采用tkinter图形化&#xff0c;事件绑定实现功能。 代码如下&#xff1a; import tkinter as tk from random import randint import tkinter.simpledialog…

matplotlib基础学习

http://blog.csdn.net/pipisorry/article/details/37742423 matplotlib介绍 matplotlib 是python最著名的绘图库&#xff0c;它提供了一整套和matlab相似的命令API&#xff0c;十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件&#xff0c;嵌入GUI应用程序中。它…

3-24

tkinter 窗口大小定义&#xff1a; 800x600为窗口大小&#xff0c;1010为窗口所在位置。记住x是英文字母的x而不是乘号 root.geometry("800x6001010") 控件属性&#xff1a; #### Dimension 控件大小&#xff1b; #### Color 控件颜色&#xff1b; #### Font 控件字…

【数据集】计算机视觉,深度学习,数据挖掘数据集整理

金融 美国劳工部统计局官方发布数据上证A股日线数据&#xff0c;1999.12.09 至 2016.06.08&#xff0c;前复权&#xff0c;1095支股票深证A股日线数据&#xff0c;1999.12.09 至 2016.06.08&#xff0c;前复权&#xff0c;1766支股票深证创业板日线数据&#xff0c;1999.12.09 …

RK3288[android 7.1]调试笔记 修改默认的PreviewSize预览分辨率和PictureSize照片大小

RK3288[android 7.1]调试笔记 修改默认的PreviewSize预览分辨率和PictureSize照片大小 从log中知道自带摄像头应用是会根据支持的分辨率并结合屏的分辨率去选择最优分辨率的 01-18 16:52:13.918 226 706 I CameraHal: initDefaultParameters(170): dsy log:initDefaultPa…