DCIC2023

初赛看Hor1zon公众号https://mp.weixin.qq.com/s/uEoGE1IBmcRKCylwvrKA_A

我们中国移动真的太厉害辣!!!

数据分析

bankmail.1



转md5就是flag

bankmail.3

wireshark中字符串直接搜索flag,可以定位到343流量包中有flag内容的字符画,解读后md5提交

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Content-Type: text/plain; charset="us-ascii"

MIME-Version: 1.0

Content-Transfer-Encoding: 7bit

From: flag@bank.com

To: get_flag@bank.com

Subject: About attachment





_____.__ ___ .___ .___ _____ ______________ .___ .___ _______. ______ ____ _____ ______________ ____ ___. ________ ________ _____ .___________________ .____________________________. ______ ________ ___
_/ ____\ | _____ ____ / / __| _/____ __| _// ____\/ ____\______ \__| _/__| _/ /_ \_ |__ / __ \/_ | / | |_/ ____\______ \/_ | \_ |__ ____/ __ \/ __ \ _____ _/ ____\__| _/ __ \_____ \ | ____/\______ \_____ \_ |__ / __ \ \_____ \ ____ \ \
\ __\| | \__ \ / ___\ \ \ / __ |\__ \ / __ |\ __\ __\ / / __ |/ __ | ______ | || __ \ > < | | ______ / | |\ __\ / / | | ______ | __ \_/ ___\____ /\____ / ______ \__ \ __\/ __ |\____ // ____/ |____ \ / // ____/| __ \ > < / ____// __ \ / /
| | | |__/ __ \_/ /_/ > < < / /_/ | / __ \_/ /_/ | | | | | / / /_/ / /_/ | /_____/ | || \_\ \/ -- \| | /_____/ / ^ /| | / / | | /_____/ | \_\ \ \___ / / / / /_____/ / __ \| | / /_/ | / // \ / \ / // \| \_\ \/ -- \/ \ ___/ > >
|__| |____(____ /\___ / / / \____ |(____ /\____ | |__| |__| /____/\____ \____ | |___||___ /\______ /|___| \____ | |__| /____/ |___| |___ /\___ >/____/ /____/ (____ /__| \____ | /____/ \_______ \/______ / /____/ \_______ \___ /\______ /\_______ \___ > \ \
\//_____/ \_\_ \/ \/ \/ \/ \/ \/ \/ |__| \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ _/_/

.
1
2
print(md5(b'flag{dadff7dd-1b81-4f71-bc99-afd92572b82e}').hexdigest())
# 286efb6773c5164950b9d5c3f7e532a0

Bad Hole.4

火眼一把梭

Bad Hole.5

火眼查看到删除了一个联系人 查看源文件数据库文件

然后火眼爆搜73b0ff56

数据安全

AreYouOK Pro

仍然是给了一个日志文件,用wireshark打开,简单过一遍应该是尼康相机向HUAWEI P30 Pro发送了一个文件,这里用了RFCOMM协议【蓝牙RFCOMM 协议】-CSDN博客

往下看,从932帧开始有数据在传输,

在964帧,确定为传输的是一张jpg图片

看到了jpg的文件头,所以图片从968帧开始传输

观察Data数据发现,后面的长度均为680(猜测这是单个数据块最大值)在jpg文件头前还有一段数据,猜测传输过程是将文件分块传输,每块前均有固定的传输标识符,翻看Data数据,在下面也多次发现a5a50100这段数据,_ws.col.protocol == "RFCOMM"筛选出RFCOMM传输数据的过程,导出分组为json文件。

根据json文件格式写脚本,从”frame.number”: “968”图片正式传输开始读取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import json

# 打开并读取JSON文件
with open("1.json", "r", encoding='utf-8') as f:
packets = json.load(f)

data = ""
for packet in packets:
layers = packet["_source"]["layers"]
# 检查"frame.number"键是否存在,且值大于等于968
if "frame.number" in layers["frame"] and int(layers["frame"]["frame.number"]) >= 968:
# 检查"data"键是否存在
if "data" in layers:
data += layers["data"]["data.data"].replace(":", "")

data = data.split("a5a50100")
newdata = ""
for x in data:
newdata += x[8:]

# 将newdata字符串的第24个字符之后的部分进行hex解码,得到一个字节串
# 然后,将这个字节串写入到一个名为"flag.jpg"的文件中
with open("flag.jpg", "wb") as f:
f.write(bytes.fromhex(newdata[24:]))

ezusb

一眼顶针 键盘流量
数据是HID Data 所以要抓取usbhid.data    sed '/^\s*$/d'  是去除空行,因为流量包里面有HID Data 为空1的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
f=open('usbdata.txt','r')
fi=open('out.txt','w')
while 1:
a=f.readline().strip()
if a:
if len(a)== 16: # 鼠标流量的话 len 改为 8
out=''
for i in range(0,len(a),2):
if i+2 != len(a):
out+=a[i]+a[i+1]+":"
else:
out+=a[i]+a[i+1]
fi.write(out)
fi.write('\n')
else:
break
fi.close()

脚本解析数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
normalKeys = {"04": "a", "05": "b", "06": "c", "07": "d", "08": "e", "09": "f", "0a": "g", "0b": "h", "0c": "i",
"0d": "j", "0e": "k", "0f": "l", "10": "m", "11": "n", "12": "o", "13": "p", "14": "q", "15": "r",
"16": "s", "17": "t", "18": "u", "19": "v", "1a": "w", "1b": "x", "1c": "y", "1d": "z", "1e": "1",
"1f": "2", "20": "3", "21": "4", "22": "5", "23": "6", "24": "7", "25": "8", "26": "9", "27": "0",
"28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "-", "2e": "=", "2f": "[",
"30": "]", "31": "\\", "32": "<NON>", "33": ";", "34": "'", "35": "<GA>", "36": ",", "37": ".", "38": "/",
"39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>",
"40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}

shiftKeys = {"04": "A", "05": "B", "06": "C", "07": "D", "08": "E", "09": "F", "0a": "G", "0b": "H", "0c": "I",
"0d": "J", "0e": "K", "0f": "L", "10": "M", "11": "N", "12": "O", "13": "P", "14": "Q", "15": "R",
"16": "S", "17": "T", "18": "U", "19": "V", "1a": "W", "1b": "X", "1c": "Y", "1d": "Z", "1e": "!",
"1f": "@", "20": "#", "21": "$", "22": "%", "23": "^", "24": "&", "25": "*", "26": "(", "27": ")",
"28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "_", "2e": "+", "2f": "{",
"30": "}", "31": "|", "32": "<NON>", "33": "\"", "34": ":", "35": "<GA>", "36": "<", "37": ">", "38": "?",
"39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>",
"40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}
output = []
keys = open('out.txt') #这里是加号冒号的数据
for line in keys:
try:
if line[0]!='0' or (line[1]!='0' and line[1]!='2') or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0' or line[6:8]=="00":
continue
if line[6:8] in normalKeys.keys():
output += [[normalKeys[line[6:8]]],[shiftKeys[line[6:8]]]][line[1]=='2']
else:
output += ['[unknown]']
except:
pass
keys.close()

flag=0
print("".join(output))
for i in range(len(output)):
try:
a=output.index('<DEL>')
del output[a]
del output[a-1]
except:
pass
for i in range(len(output)):
try:
if output[i]=="<CAP>":
flag+=1
output.pop(i)
if flag==2:
flag=0
if flag!=0:
output[i]=output[i].upper()
except:
pass
print ('output :' + "".join(output))

FLAG:flag{9a0cfbde-1e41-4024-9f80-a1570c0a93f8}

ddddhm

msg_fault_sigs在签名时对私钥d的指定bit进行反转,通过sige=m(1±e*2^i)即可泄露私钥d的对应bit
总计泄露了私钥的低位约600bit,已经大于因子p的位数,因此在2^ldbit上求解模二次方程即可直接恢复素因子p的值,进而恢复flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env sage
from Crypto.Util.number import *

n = 129796898134024157099156452709058687368221438176030502692200747714575571701027659861801365516981802018997712595009646737912670988500232545577601552315965176230630625733276337162755295073834150653688782811860047196091202071789102378530279205691266477048001888471022116120453815115157747843722970514365474705361
c = 28155862534483900756503838301143450769414409086099843418769499162080414954518936609807127271806747358186614224609572255012947222354262187016982365705086277162984908253967918708855654630031832484605376292561975959073350547470232906500885973352162337117221695274031310918815529052585532897653072326669404499493
msg_sig = 45588026639453540614209700278011089411155941366441867967608269376572773649222458505929678835171063978513562524842704550251413928579096289510261727050687647392547776693337400122310176000901151825994980601875289096262412881003000600445821033469228193081998689326645879888998639588132546327028023877114420047558
msg_fault_sigs = [113429466458778166644945767044415219042772717711254210322408597644274935171586002639342195758927583523229418327742308160439436895947957916864974638414396996801138175706945050212053508048541944739154964054236306140695812079245294637992314314009077833980161139452215919584864468588483718514462559681775014326409, 43031327270677359985165098362153992403225916428513696699868627765069327549237937934695595834240328330202611385474456604601598542380630113614252881630542199784148104030099903791570261962274498319184265204085272313501262887880172928633212848923149245422898668043490940653356408677953426546478861682254129323983, 966885667599357848348022756340223470262834430902002911613346396218154732271788115784781054266116465195738724025001053091234425896133820096656703611182129434753967986644268247815971904312163692200435738141158444390017732398874565101978877704795576194382410849789372802334687877562834782648487521419962746341, 22270699014092817640381954131819343667553097426486241765114449687913398530890503374656780997871854668679268985145078734255944086281783801986912641877362606093848503649367031903880451127827073135591045234912284308284644450952832361847583497332116449851039433354824022630315650748533096834295101914438252231215, 66120332261266549719253133409961606599558961974400336039136718650963882870300747871413945146771940655357510038008903944342948091572538276991145159822448882977050437002867958905666394952065266853318158990277616193696588690739418996149899024975132132397930556406409512489321942778877975114649963358299831295772, 47507350138153905038078310411817061191139135891760281620215507261123306999391954691774213865603014291633448636096423340318029665161703501568151685444302034900177473362154173266650305220215717485332561732173424079139254556182303786106398395676129627454825040021576800755458735970462468787276384909114928464011, 54399341278003958310498119783426456680200300676394082381259796993720652442499394218761883152787939096761348837587724912720946004995745534168673568867534537159198059551869413473459447524715003367857938435866283229509993525532914875798141093438183446623329044682094085026675610324926193294680595215134822452992, 96372429581066959639274430290926637932604963820580711092951366751121170758841563506161198822743948143979079892278755647263883375276751270285043799960081953519385167794953696630621545257947196107934027904954299261296604021082713283177711700146839734283278440169721710359355251410029841619556589215882022281743, 108536653382041420195830120134181635389581983996230588564065817293668077198810870779637445594235513825538378650157585409941880324662110506967565370906656477459495748877118089491906299715612303931977207518447524180619589746622263838862877121147916191126290740764150244497178740577706793430933414852955843580759, 115536860989602214120850141469595339293699937187420773748756608420330461211739404825747345529316980832123680191867689174639627897225947905653276767700242627626506007433714208818095210892516140096869679053514081602618203874106581153212549309009582749538808803725100939972852124359613485629614141464406572224725, 129556500298917806558074265925431630079603172327705578639940494825891539084917178075607407424394112110903366438189195804697996434644354103478734823595481919497654436575579864165577082043976689560183537970285875183625959575788865150359536888602721119417001216044902921998651779576006162315615290643500043532070, 832632520768935213971391494782292667900597271583021768737489399696104777873426539244972183662051580095610010452127289799488501936719725467238029518112764496771754185041027354946040541234852305345336880606269217747428870604175367194279151046243973588757842740018800747578798674236769496715706839251537502540, 33907354207950537568316953394262555725225682910311826837735687501911428820345354824951069053697654419937086673223383016385881627340043955256545824091625753010036007290045365867370180121751170609725136480893773721006632680496540955167961339283759496718813514188413273114957272221455822551711894978747666040798, 100790385173181842039829979094273498393533901085803802356471120691741322296080048598177244130172791860059356883469121037584165376599360771089533421598136260438354019518781151923053197613463964294983707011699082081460751149225532785991840199321262992913703076332861290675774914962641505797174430183113266893796, 45997567103274610584194426000393146852186479637898380239915812635045652720931213482280389069916568603556438804716680166372929453168364100317227024985125762084078033216877248324509823302390818309347867340226520538770968595432223526955763761768403660741446666104390557516335732868365170219005946450640332117152, 38503100227405417120588529301677440210256361300912475446248592711650615663674094395658229845977810890538098714363483532648897792311426486667653660753437278607127557755976268355783498248263380473082646183245290570554352698976039398104229724876008871435431214607726911990005878990091546673230010793788906612103, 27479131638405053117614943124568601014160468544822778638355325002970342331852372383212922037447147666900032410833270672021489625837249881268875533725434652448168337179202169492792198821046575491409997300388420971726861660155976994213408508822143696061460044385783337010401793112567727717873159368481442612299, 114208575363554953650088177346933241187531531565101905067632067787663575994187063820993156458904870634708368017336997543780321027641166800415981244591395222606931582301949426873832342005170404142725792417615026362944817763435626518639606746779458214402627670072769507484315408827986020012799463743324731933997, 104957040585119053353893215730850029980712525572682321749576442549761876248971506458743436808807887920219799175631143871727764830690781502794543349946534037116739364279385792004831631631478689619240101371326513892693322548000843320837092433363389581061684995001927908941765890899729511955650515633427159990268, 65052591341794092276401302146858712636801444122936479599002096439693169550818058231615833765580766964492353017087572141066544649830914556517716256910064599609009111576718539035191289252345956692779467303921963420905534706002532238246627395877130407833313975679356260518475740171089216763481969486923523970666, 8621742682944189375598769946219858302790626860942949104645772737825922175137636508571611375649983854387979315412676478072300167103863831063033220831487071084841907698228700279411058857039985779007687537511253246330214336133277751891130554740728820451565777362294775333717266033150337133766639855037151857705, 63568878913704580513673441363894196444804071436868936031229909800194714829352282787353699927849263578801413657662796622401496979482592063871314947225659531544686639890960148473258044281972488377472140668949150090879768396237658785473304791079241771239057843831992115610367952626779898134043580054353358269970, 39436994703533840769176402283482727624262760254028154567362142556450916117291724967304158431497541568643882203974734015998411265646497751886272909678529498858606514765294102477312793391137485048858175412070300924519395809451942752949511261628569396857528375028878927121259343156087474169587260159328197596457, 76992604352539376653847545037863920638234329910280379555319631104102811198023369697896700543895390194905430527397515555046538772240942246981879164053610793871565599347525277209132531753731424439374278804480817370118606969155273919686860650347733482225878839430288078600506214887399113188941465218367737079306, 70339650989243696477577063530589294231639761711678726389789807402881813551136659905207837702464470545464362938630087942058411294660983929959656016772558833645092540695542834137276395606877556365614941210538729653054439265806705531255467434348084203948707567658601319776777749257577021387820934321906134536244, 24549336289157691495092736655469142422419477514367241739055164133383220148776136155442721780719016072464081278944198475459840917198572353373193390243802441307062489311016058467602338498584262693222577895203246525786908884218899849426381715274512280772043389760211834940889921842449083424597839622099321305005, 64622496832620064700628908758731926362517296547992804849839662190212161786771654297880016184511036267695848228068574574779273431712180248882831001731642715524237930760951439913559025469265951480699367801120297840832363922794527849165358641808434292129932870711580986168042039507678115973063219642260518784601, 6379418846406647567245176851320075588162971605793908905502508480254390243585843002379550355063025209207653048103796272442946400040414020770944280988108855502684747844396475272773529661487972447677031464764762788921771447372061608262287293293137559453513633242309552705808298213701906778092372689738635268316, 84820440380548072452580438058750731885251400328220132454105795532874550162824205337671596806046514318527978024312264036427744262395719464487707965834986129640400045036446561885565304572459134413217085082078453295628061750986985706648150764955352405539117377272068879552066798365043407431854029980818950612015, 100176680826106180249825078670431246034222622741828656811321886933030062201002314477740084992807765014101935276927796782299908618203404186692111852123496776597437532276124627891680755275119594123721616623128289030505861860923067471313357125647244088541549219478518917415994098768225976386187146865855283114461, 56870592019055769126277080013301159682729487384774360733386710730467738749823482913747906952484086059187261090681229600354539453548358466490605068824197549968485819652266898220723482551081633053916062585759171735025457099514725830759932611128398583928251406077893514471609769403776410356152068061699796109841, 123295267796035277800805301199141358428471333932815036211048400405273610217754433330508766913799708449018108816472100577099202903053798661361452789266940225458201647889058598262158316997481729239862384273420462405175158167910893800876641317740981440305181707484707651118515400033519053085941882345982279095611, 22209250740726549713403823247623804703415920520073529694703685697933635843192078608292161844266856794976302928585320287748933955373352801111681310870867613141397360853586764954447017295507675082986370870296333278490561196181027408999112933206801325173701756166973874999519740991695235281419144670272471625905, 87705402690238914086842700035695871093315377931524822079333076661209228952246247206017435151991228120059081627430139870165346705267743668533997983935279209971878953068520843402981364654107500734771394347102412568141323165998664968275955567940854497583961140352551579101631864581874244957147898706752127829332, 48850696340719441706729198426212465174630848606451730786574938511696541792605517015696919690068926098302572550092773501537517226980062819377541342027273871950561025084699726135800088552030687420907140347376826451242003019136088082954421099230651469217488709418764706107992057413585746964172995638561815342997, 55312091505723240634080799643454107370336705905912626323505507434135487557211037015899267886715575233473960415141449615498002392736109359567233595745038888662106040369411548807820930487080487649523574057097878457629039557635001102774735656111542853372165745389551365454351677688555882035376640183340682213343, 98677427325474420098888440028589845519409912063046166341544420489414519481620830570336728168862290996927641513103512714039809171832218464911133207285091063714573249847473813728011506067730111131279790433141782410324777597485341841594250755563485489246627662662587552962121215555619684130486519803060390147172, 80466530503257164309152651506206931996391573481022640027669460725197794615419709340429681290173860259386243581811489955278300604916896894754781371425185815360746422174362380072575718806137745400272160934732633702383990838466006918173704891881161258600173245176859840773943699812054100238200360351520026375823, 129658038325555541611871859342344478216295082033317798742655787656260238725242985722610200328292654314575223361809809397950954322052959317489351837385096471990605512089355038350020161778754015244991421265630869114517453397777795646804981335619986108582186322030942273503610068454336432361810980280964200682919, 54762453610374667707838320172878118361808546183819105234904974684806587587150153293423696403762337080336648767788657655341213436097722786642688129111475656420071318999112460817375122746239718272480843706908623971310042475832262644829791168263749588876923624614831347773510599173730816475730769067029259643049, 56250529531624548943344605021090913629459619714971350633021604019883641939258184680239841849686185198218694954996882070234560624172514522414695777312364046594394256697156490656599326521245145882396860588067511147806536145514222258082817224450900135896110745186726234443033843719580092389244740143034481108746, 79835746866375678333305781421537527951596913948112870977880243962317138069501719107686671419225009269039405767260614662934041949923881352248845221255364415245856279141325082958830652417248410664003092373713662168234297274262586376763570190465964858871224456582349255838047472669672347127184272604045081912405, 88012391844313081673995199981466211684436388413661842742863829865758588799206691858585886920863334210804589364814539797612923740185426330309115328856657594334256139290761202888806342944982053936806176495221006775486844855269452417808047271532979133588252145778009446726070831424028903038120047308163198398812, 92566591340847201648030792837627083536884081051155103542974219710534795005484760618098823070797744473965472164607244922346137125052630927043185731603609377235357668971673449356888592298885768289439991678081599466954203730097196062186892343876445673224118647809086531693612971922288563593813386973977690555758, 9515506637307988452543985054552881071746289280953110002823034461780053970033500858081981151680933533593724077819124276499989653070347349562047347540645246014328926808632674239205460176623705186924675019159875156913091798390502518016483059639039844295310113770659927209692406761868470441597394675145309773898, 105498193850126778191584705294439403850819692384982941982573624654661992502012090831368113440663495299422400126011496507772471069633856193088784172060514408135311413909220280315374737750576742542363184244368394222046959888665237871820375812769698574460115732867812370859877388150303718764311095608983105596973, 68659909887618169082933233504573095894974478745406213210576854177251114972443192356044302649162934554907741724248983464661373749853411684585517583963748623990085742494665499473281409650670214404673454639912701772436410037517096149311629894186967837746260967659370133415078068623725157144496463489168052144746, 119442784153675460561524572994151277196558895990794994372266350239871314734835931664657346104407206184964776713047674444055968314495562189464548664423533840800264240185711037266537936968891005470149164199138012424868184703299497519265072814488556506147360373223161644766712819181080301605406215623385740399017, 80475321786999118361568697931623793662882579837940350586618965189785849247380104893486694742601161957560243712418510973413548938409330185990608906898560391173159684310423319728182976554090177223324143259105182969831310336687709326011039783853954213259224470595144626011836881983581255842749986295616742974511, 118443742516262089414567716330044275149288487451523037201610579140046513855341225722719759244939915234072806116159243945584020343112531720776323011435442548025013560115929722901139088446956965511331713375697780056839057620252211763378661424460839881082345752114467577168213208242657661514427880189716556138583, 66760090438243598369518063854116157771155277915284355630771178180940365293096310214507589425283872963198904792636918322080269572772172843379116047805925707902996283716720751214022889475182304967481193069510206549139093212119745811442739472966169940428634359979881771526690305508436938584700917329323671087051, 92437914372064507016293890346889083897160107197824428265448723378265077723233501237519901619498466454506995137112518635839345051540462700928896986248521146503297782882387093738475789698665806543451144667335504891909432067250507841479076516180803487635000417556399769715649520647118885474932973605999916619471, 4918804756276849688887474542480391244290661507042428202776631132835207712252676410609429486922767294350549897842821553676541130862760690148081852891403271409213661006567612665702153769771244427219452515293276353477592718282922404444676241043814463640130407516050941501739770091782523884640961515045685638657, 48559016975657908936957816833482233693369398510273918729809276613371334824564988831613486420867134544969588125024118566606589934510114106847375000438465488589272203880656194155114918163942106500311334974514205883100191131449124002661322298896965197763789320905718597463217169319578662832801345000154948107182, 61361200147474417293016515277195166625576790336451381190494895668525779484244154707915714886390737825842743289800614899837997625155872234669984609941713429564770161430334503312828989963377363026702683155177104814248963290478148038604835538481111706562449694121120228316844241872673194634894947409300413030109, 119559232435852719012262003516872124320683120054385894882585109062661326035822713100959727594154551276922309000668239157753847701379028954429981800224756247095836063257428915962850661114121614635186200168594707919339626232836907350401991533710122464616729111184782755488142796595929379915569535093818750300197, 57548501801768842304485358127979656101206814927833807506468463750959485408197029229851406862085067499686769957296994100123190651687202394200457587010173836030273734200150896477472822587525732523702216441219467687252500714508687512833653172886800753967456281927946935928096246571379731058561715907243564161433, 97615993472919670163596074773926246516925687373466410001936248603557571043955903391754253260347337298231764040353565706774165940608727729065036097289133068714547712462674706284196372200570839276265558350767188008373682831440507719350813464265006559838616047682844631710031327303950412370676922817977828013680, 111324902755586294381112529867007580164615327081145306492421500715665040110266178473377715718472608886159843424806889400691646160099479138367377999207613481455603418473731894853337800598156538492797552393068042756178351839841414217790280008410900039254164696946989144848232140586231278074800712516513707584274, 25826389077923652231333036651747828896572734321488844460330716905863765630358259451670649388861065870758874309049214611499279241564829127733494298720733973390464597487659543326749581528451799769066605083855404779916922318712759549426518674498231687644769294225421357728404377520233848164727165519480812793225, 121861381185607429219347909782537468988284403840652984660760048587007078651334686133792645179958785939461881158749910879514996920852760772623294154158192354968049553551229404691255658985945619119121738029788901835888955434657823244622319825777780972725908411961821461959575547551787525354843116955153781124850, 77165373462242069653545056424654921825179859242287216694353244063651517550143722456569197666282364251834080153388099225541813389046619839179804166387747985134321808837961089816772574217505673806741606162735493201991139318409661870121713933324124589808136026115934833276509849827403178498035349238213655547131, 112331912518270903654546827854318709122688284096551031309571227068188057098594860070556797269463071039232721011874271623446617466472984935419344235033110694069296332928397730130719672129365411043200570403260038572204412036767650092917482848458427537140950474611719985482756642051421834088179466782716724459145, 79813991852919203858223569329551125734931055505860171414126469179924250452785015714556986735689684659830253980282058827427237625355319223305758311242725948605895659394664058675805973510711143297750094398376999914711654635018891793058508252752541623569005216868193134191798083855256552047152328615771329468380, 114098721285073913886800217921661917792036926591425819952586981073491441913401639799930370717202841671261929544628933834817832174170246923204354168943711183493193508329832005623814298743822923981043283746808857865693298923962773787045541089076655648994811271940364359226471904251780279498915508760705112626438, 99275382524970049585004802050779535468123559567024896946871836863428457897873156501089234172877063061120803826615368484739619428265546519290106165305547850653433709849553666212211737017183951197570518117746938408747507721749345177018327276675802527734887476329786445166725431746558235940415227423966663483714, 107976068484184402207177380042825664676152323881390260847428022622858677611036427162765988991968140972290483935788531371970220480370384798939902600376339562444488188850913998930734083518102553375149825065080506667892510700913399127548953534992677626876608648167105886637589866430436778614530539354020085862947, 31650537024774990819400117996210232215562367830351237440435847229575405376487226992324785014506181353253941253472267511842548343609996598574340903104422520159284099102762077977192984832962040549699217122822420532639179691726200915992689597776003923083656125873225621219884651475297989347236222532414383404474, 38600026891843931568585268888061379394728139625341831236458893746750140955197521367801946993746312118392207766673460797905932305052307854124182734116550022635043256289084910026362559961204417620221962986638228674410479646712619335666485595792723157760808926970792060372698714895145261044639405717193647548429, 53039263604199504648057055716976243041141652572542509328713250805782985198050707394342422762028236347642858978158562865717619856719766092049951491072101714113305210454684762345993190752890531356235848895094858916664022345340273129301875294319669815971285805097832633381197815643076589707845609751998578120425, 115824599040154719329144595275163659262520017517907837581646023238289354981484213371880931691458762186717517906887863134373289213825519689754935394447006647669036315216189090734318925796557296128757817300042057024350750278974901176178063246069598299675760151689319093696691268280141979838142484147447841211516, 2254170698083747691398155439059772819749177665882784988696638912656846030053287861539272563760683156548100237252524822726099551427346745952663518946313670988032708631746809444956331467614051185408927760054134191857581981720976498081449239382595530528958863195134514168915294118573936890820891844295729604596, 63446984856174811015825339162712789572165027191070687938468371778550389726282163883313203836652569607500256513047507701954555496670707655805826855414572428598646474493241599295424247442046405669595922521214183322935405831263175640598868199521835597661562963194765647101023356013769909316270193625900077677571, 31205191394862690294310922553619216824385206899141005636938740761627322598259085184797793618084610764994343046583779102472330927205646419601481311865804523374901835282696889164482823839560060763992451912319482929476342476458506484070507341784009071836739438452933453917959454426328664000075736279083025319455, 8159536871819700676028512275811282824641272310953917740744166513813980046800776387362426252038996192841757216829006073749316985399955847879452129271137913455761895262976630353087882040475199198090715012432150790255439373512778961932714759715651888335545762108936918485875335981391661133114925476748675272333, 31237382979032988054471203717992426564795455421801053432961839419132063212406150673136789689602962421156419235987116309515146576086092561304068617420051114548129321879730172110378639773588882915416869477838316143225411221123785367933628160728191765426508276777617058464759017201804581457801447085696779154680, 92952304961831554357425213285008143202557990293399905029077870697836991621887011537569705837468267645007332917566596514477850969493086991455813985294472409263280107210924830981942906191854740863299612849673710855376796629795519234768658060392085674449862771876595177552914984058646337268761580825245772099068, 66146098855677569398060251478965887338173641676682261201926708573266296088619811634393219801536160168835247203505649154566532227428232017028725482453947615467040568898827209484954392103881316357677874715297890435013533233680757253287240010145917677204884613210533101359312473380935517112854760210957659305190, 64572984952244445746919931371467311883712851145267235983682075446343034374853122434719469748015547796655847555739246385474810472129766108263201856779933056791403457367786709842514077631714392074461632615269846040321192984128388364654611682174466763816396160665431723006830717921512452544381944766471898793833, 88022079435610112714368471281273405498027092004485023674570273894349303891741877093384250131854931049045835097278575556154304848356966180916808436690053320210577135758027006177795367139294761324375279886250756794729765991439053139026977539408234468935000403560764037183299439828622415420694661466254218102969, 6410897973839912626419477002953550624163836206641689989160680153134130171047774613742980480971215728984780801300925846126114156580730455150165816354610911296547515951702112675084060501180075941689112592939433044966920373755324208205159671726123089644625368865867048927038335858921613074988873143912101876233, 17966962816780951681520511845694971837446437771892212712381206976880896922315726136602048883677660325752300002465437858871806898851993124045701709920881820639096911648751412084574608847486188018271047067475888349456155272748518510000927820939473484002592003853302286887504685923527404090684044344227807284426, 47935467939776264520174509162332633120923145692362391061117792852398389803532597219041856432363926566668740253632592355520592339106738877471880825279850852570873831225524973019104325074559059440816300682262189750702017317911801413047847517225154207443179213810997895967160969501883882165330574093130227499223, 94594966631531486883278631738006406882694408764830410968550963167604072825775533114020179275762773630292009227808657251835090076331760215902637966352154825110873671336566552784200514936201594890169180553162027303887969901720725984894896460008903655490623706987009199184030636279000090607965597889960834499435, 58757582679426139905409065357804371872974313469341992685818091693454943387031365976061179990659716193382922187016622158956808546817885371139816800268332752212075477222350630881399721623151685532675043182700876528361465587472012887357647810293217751731974176311817724040350099491968035276023807105244466242292, 206327454829787379672994609698963528894127265586650518509627399112423145955642156109301621225195677838404498116837117306116248412179899121693223353174024613620018232722214923564061194008369771773917109754964057418049584931489740698283767601711981592728313641680245699422903281046929235795062159675960158317, 25364543728830612608838128989076361441729028075418450475502954361335884170227179464312527740766558384636808412069813513984432780151260518717586656648205751700390141080891503382803280995208172281083567929995655583177375126328031708450169377783122486906605160596225714058987950412600297694897075092779021258627, 67307908831911617482660478619143445348615851545943706335873462673679401204039530064308319965761568432983399968236664863530276690296005637010308566692130217089213637825636700293353023226073726588714898456627191733863935333450298244155355486992019281300819286358250072754863975549259807447296447353081171294674, 110880399932977464035155203051167479757932956322996649300769519676740739799504571754957808037917261100636384596503566567134613046897272464713058144946877012556946289446128437986454206617465103147350375477230839439663150483485321394641264347154992838882196901498270256857493536074217552262212572583683893757085, 14607773958797162204499398897941490904100178261482377205135046803983899791396781130519595255658805561333352290483260194898599545726399608807531587886712981636465303495058714768389865902927219284972273247437111973597686710404741968855914026058047589056933508873230548619648372038417641282879564638761368128914, 26050177310093554157817020552442921545305752709722563914465204866003702363698624563917671220942658324186003793540051515182631996248001138462051512947370165972295796693829452132793115886508447426349616179117826654552803251046653304336493644026298866437661856735277533054390657200076581259290238312300830287174, 35273954866104775549091585394102040707772829496204548670342406376195163334008421957747449603852628630311338336223634494291610756669074796185132408410142636553681189255750214073994506224286168973820912202822698021467725824919019289845250822577585497897080776029039643346805823267064521441762349477790258941077, 15952825658775129652489526132721562754645244636099288603259283329418748475504813806420275747509049725026022836659848103455357310959096321497178034926279706764083648098203936929602034867487251026444143425211312478283760768360408752120806624601553214783149283590390242191923575752017260579268024539626714289312, 51245106845928105739246392134459457969968202576800606633130882115977426514779733115901022765985809738174946881278485821770463046109593333339025217249729653482893743570386895511250852866417885655157984276652708503379189324376738482402514258107080903685469199382072179822357368235492155884651656811012051508449, 125638447747313018923447283051023131947970968306983855168105133267843212886008687065565101823881086391620627002499801056907087686195344592842861333341824161626821110325112011687946993006494761721781932506764921330447687008769954054601351709479764497348745365434874769121820155996821002161390921785878375868837, 75205074386075812631765234670209685918800875802245304094655309441322545611643645566975481110473007737644310929009885242823459305375600663980499489665052934203658226368535395151637995082388417706484639511540750958128704568390620256953999140401092414642917283187828279577580884631379381379620561972996530334684, 62494937939588459749762552851842964372357916611840850359394702753184350425998306592599260912214210743482590805371584610682519117316357151213608773782431757316423175530455460218581284838679530657341985001736209652387758310462970906718489522004511805496056890951317429269871902094364187423471553958374837891514, 92987558933800230010274634408389207871264998491676382646179459802687151761954730278034829615310700324100912029387289999115371201006227543547124972483271473960746911649879983960884903790223589566603842335172241034674018418002613002274423837216158226869559661624617058150170248582487185896158063655805798506523, 20060862419204078622571838597871534378680894966715619067822006087208478859386335772785442647756817406122841098454032621291095506333062947608314983055771738012435596478021578676590769925895742737505490105137300632561714176552046327079640012295110080721826801193060542075089558528756048373378283312701227062327, 36258220594820611675886438669626108696530890604004598322934605111841659495169855023076317744666242295210016196452317857771332460426722439236228318835995501999955830955310978164336459637325789441513902133776047362645730855574049051372598123330398217526815420767331858903940396764747861583369743941693533678108, 45052482150238483648517696436762125087457452710076872512414369821712482977547229684092423021601663635257185905582135067160378689433195237550291813006873156776360208983294641575224340606080985025218910908111199358264534935577161796776708390335055529603579565028038012805879967743722434806515549165565858925065, 5279017666928830362871021861205540389721548297060801496381775427201478204669098651931474226697312140830521175338400049839811094253471006355917873107011329058586724057334421824182520283009609546244603558284834057239905102487870678620742672149575250859945353193928277103703951805975450382651124854549160885808, 38757421622753710931400537136219972203533529740667009436303751778352523826652639065677735970561482013272815222894004843178755821477118040488824225314172195027373712773037738967174420500077059222439877488123804194955472253933336299315533163365019735328335135161827585366207594770162050613644454501492039358999, 16719844242251455805409142621443583531758067219320258560056287055153542013603150720043702400534290081743875295655141178417788630359019936348221205764550893468965212932130368500022442321533560332606082563834893937180318918626758345298816908955963289131775715225512369000470619953180616624256565698726006390315, 123096517724364447253899006279495617472777216649944456512857156183923841241837929591328607098818794158117647688398143752404752803466203419864350512516203859541771683045712727690088757884897125334663691558155137349861604216575233055534028252282801960156569075063910334453118660865828109545572281833553354209485, 64494169527526359044100452512094153581416030677078822045302118209109832202556201188848378676555942888835616417575038592488705641362091948302223465878503830465108814877725216235918796467964233808475678538080929769806703891848333483011316050026297200660851559216522336976873467078268439380080397519797575530249, 82681441068126601411954464408443150999712762634973076883955506994754457112926293188317178076068521195198335233108489044150237901351365866877368644827672434944942091608386169080817039896546461889037456734187694329276964362517938204588970990898664801955696070898060165986881157001872087943104032245928087472812, 47680963300093099067006614296599548743698331194865858907602241675412856775640832846609509367363998888286422960294710403746328965388835817410435226928257176423029984277731849690441692925133411486323970107880823268730366136072387394263040996854836524424997309269849032822266003852595321905864998590468763160733, 11628384844217619633271899044151487741515120121255241409676580425251801265078499896387243252944729230740617085195757107008407725221241168184312958746225695804568651452785037861654400717757570641219813658998528605579966736348877015616294813835308249641179062838774989912412147673450509439141217583610883984843, 47947016196748909147380339199617278537806857367655869493718043380354569629870112056475424224261481262587630450383826036368447544647044267190866445063313310228104423288794055549224610170291816871294113947170758407666992360825476816373449200516591484916034756337207772787292906171212858871215207118594518347638, 97977057645101454321315164109711657600613172090566472501224260105251220186477418767252592982841347802573019108868497022122807551836193753632408508020021655729647467264515294674995080237878258554601058388818449515581667515051072650782839593168723314613900554882283519306143463586164798606140909532628920213580, 94608213627940963053173491498476670659709835349513523552178581643775212839376709363414685061126023815249902764006422428741436870387700357029839090175143906456408378953983599807594214664807804981796949023136021163497996306595879690344705895393410348891962425834438326627223378686100627998884924412993705107738, 28428866528308214723734613445810838340154645529867849472485526314953873013377346055437226123429990041838941584901771409056001208959780108421785561086822887963768936619264897881372401707527441763800152523120517281482324537453735362127430928668570049762048011344832520135688529497462847236422646345031814938944, 4056462257678887930004563909451144915903038363782563871423221940601088060021022870541630869035040138726065889027830882775749249828398969607094322197779757219138353698713778617496340258482538497811066448623206691245892156732583843656382253594319473328286844901968810505712896233384564472772226557903264911125, 43394840288356860192324599012879970121474398744094374734739826156342364792820515555725847297486500780091204228165159696806371038070288381017901768324489736596762092506783960193782227258776725518548865903842655165567415808132616817631784642285353404976838524992136284452323860597792897418496304466197261809522, 85768254231810597286508866208783557277039977151399326482088269678108383893643059018902269519760587205127345712797555444477613381148492649836228664026366194766788710557395866060240376120057080735571075542299702000833444343887302686410918975203380844971208395425467750049905811634090924639724238769009304389186, 31099813799121077685898326703865479144597159873595732805926163902988288809267160736661219267351953406983813731657418174564331529230480042106485039286226610977711489088781612780538664618619849735218350870491647759483578857261928833572397820158719354146384586777643580625169274764375893876146177021690113039678, 19039519710302903972517838186362990357213180961977717564020759783491562396999458784183096221992805440141374070764136603405737416428144417648167398124199032923981071951193476806442692351052240460980755171133383034087576385755161824306405644245038915232528405578553601931406996267407317645613784437884883929756, 41740375943701564451188410352411834967939839048405462793257216141324887994766530497977589791407803531795432099952794105799905257998989550740909526761719811009403558593300366713149383545342160916832223169775483400871591068551963929892919908679371419055781305720850090075879741422581225602708935109723842219142, 25611317940182187059056587887296621719561729650363839423773777264908669875382081038637387118836055722603394180001536629839192891897523257202999010960572047537703176974536280714872723450761927229099827021665411519298374540386488487006097583471825865544549029910876159282725657841197893753348012006977966842084, 91481853329356782321431064716375279613179830651317723035164752497889114385208388810344804976046669003666417961306628377074640367278657297194325679528600968942440810129544399830506160080474839440220522700353175554494427543375576333852546492377331165262870395728665864012452382690600510714784868115596285977971, 56117381810272684084307975032101700425648385428880289817744958661167695222207459359155369716377354361812494980124274805287644445692632508074831792219930002969633778027613695666117140649793215968384882683127947382006380145876227060820011448181300581316582242110335904116303164647319105297898155343394105322743, 102610187438363350142066833649724662560879248540684494897886760920169451502466889167908990473983570940512529628736072692332132004176891774936994280875624395410559212261288349949357317869746606620461147813775832367863649488873075410473657393203688803751108311259707156101733940049721018120758798872281856226440, 104749537743177388344429102466207186235627314260025731554868775847667132586254918822065225845080988583601213085399602184200980595043119647665418152839959137965855147045651978981528951045802037274318414823425934480445361046849716437901621118737933964056778172352600326272435607456462143532835281388120538396731, 73968958701690220391241568887488694320229303771254544766420501975887184560476297547719701820214198854353399545605336778047686964051777233902783331374480704946979352065957100747508953926855421680632773333489386979043511386570096388460391615041892637034606320189104582149522442306973291258594496603085421426087, 80052352106100497895619368990039595893114569343438242222686606033816048306423087343397644416426712316171945024801538280460071089784687968307793904287455719567603856700729093499898279626787299898588209112749693736514808190988041870048123066125392935161526857646707739045570949558492498723178615881354893664562, 68594734102204548932287644640298046143914816535584118965732936137234291083830371591386689193740274784242818754276612262213182407639567509720989401871221275791808941056902886688676780926411253763641789598367941755244881360813622111628964740115291166903970626087155106988119788261840876613590797711994941153669, 71109551963302016274645716435742882473797451843637326835944558246471057850002726533214187401445744865783933114137059986990485588447190121576403144152529124429535889811463518932566724572540700975423861333605576732306810160166395543324209019763636749465210847320952368713757449172709864620628148914683445545743, 96215302223680179572205178811159266858293120907521579443420039003294366982886618233129081835492677301932329757697077066115942770396515217272689011666397365546789533663790385611963427189385715149194538371622117927992755931233062172304835312329098544012178630032843752743945766962345718763242336131214384325994, 35437804484829004953785321144380793982639662967208003879402381172606037731833859373165482083991793643940465402083808962233921944078933917626737442592345924001184205931979100391175425861495222133961266142928713336550963232990856893004674835192704538911987327359904853286196429682856370783994326131031872605346, 107970288045072400908233696309881622489568078961592266781551353498842049732923226872576775263645120740690252503210220473837862322103056485711062109781014461784820594468093138868398221104082582354975070893207307081567514958982521041494722063295041105521970552750530445991208659136056542762036056693962206443393, 122959607030004750721413176995354334351009904349416038220953893975365666332722680687003445711054422683735000466124164411876633143738423418119325543375528059336249337131574084811917315244486493751679440909584333461852500561844116480124429774219224919184675439184960778276817953874591834417846354547071456446232, 129751305915272336822337807447607697581647163890441198891534527955043178320514918989544507157741469413043705350543586439420436310224040860933034383699282973549745992849147091625480748662027382121051588341579305540412091674354593689938452535579613320670478221895365163894628509738977010327594488594453093231661, 23880049106116824802316709411151894050006128551596351855473686969518771511345850762998837510422366396382377483696091394509564797055567245737690459611487715287530069490637438762387350236349894713209312349396147341387999519646036843441580297532726359942580271165127759657485344188382824278343160826814855418790, 5037323285551764370366139644029665558266349651536172404903858250560436788407096220010190666487705085113986805671458823910052803892398907433730292745355592394429456880089677983797159119178036055811755393748470683797699019379060934837469509840377287413908664860218515320595185335990123220619326335806130726329, 46702269036586386291909574998954448691292007601419316981599480858928841136733145899493396740551499738476471544179362325076155710520166401963975953785336651620897454510251741831633076305596005057560614949690385203695737256907971497537229041632957797695853468041972780359535426450880352208891551230142931551323, 126142904707268312913780669389766844928624051465535851231604294286057196694068191250679073634841794357655843445887014844557625726827051065614833899222080457904596631142280083740368361328702578168261332665899160971278552413862892172982657984381348334082254189876773635261709494299873018916104290472205546114120, 45316750834192943972138743380418590666243137724695663224952664590722240753279662083448597549936036825608617816313140819958670462623912584598466740302072589769602635877727559996136003640367850010652595185236862060530203130744853524710453145777538520021945405729841832584818667049201170454737403720007077206572, 17026151921873247146768261962321935975142030767026797627287729296705543666137603556378841804690404520547779469276922588233449659971060485808566866995179595715079922642094992279146865293697594925945812560322432548195787723697605368213306711864470341271134540598675550846475693341758455005081569034714777386472, 77246299500809050302044192765950458008232759084744520438375156794994479191095556663566450650112282608815949019028309018414870892787772776005113485365617567116911688552744056166035535641315160577554106048534303824861178590419559558230879086227134721986476875685342743441066812468438025079883747460243963631673, 5571802256558863587030601952577822735389823846970885581058462406632788407818262550761536829930798459239870520612100680480513031470588731927680755113805035707392087521968349971739474449348240002493760745726296248489205818406867019572699557737835259256040482726609904619452941340011377949427939040788760252409, 47332642831130086663221492077424365714254662891908167582056977572208988175598315547029563904311951344618760422358136683519400771375015629413273749837189522131005324670091577726730828991825805325264030601097931678862722472716944430854243898017552765207212403215459456585686719736710459224768115353281048438584, 127480305157622548456418811341678479653106041774112346332007455622421608791465714474809084264884912906212715114186193374279346086193164882123717095881107153406651088391205805666099953744173889581843433360078744585630016343596331099347685487583203922235620500785939157704979920904117461819338860003222624824690, 65209528319955482956944055085580854719156179019759315805712023782135680344148572850940037994314995288337247918439157393543272967862031428343206269558068729408123528030237991823511729595375662767116181253412368408159222926008660663083262509368032999899989370508562522057440904178248622001090119065224399571022, 111070550071083741330721629920047025478650630821002577798154172800735351419086342862370439035411230956271486078954763774948799437912388391818284174448606712789544664923582443195366654094581123883458986162443645275726904743589567792472195286727737572775253831625382690839932405721535689312522524552562303260478, 33195556671835110560638308856485384283008841742376003122101200554229778290790366850276840481004365540804143446856033318487986969074087553298918867493499565890413668758462496008919461188245571664185227334797898708972455891747329560917106803243179560380215577442825399364835431392363251174484157649085123054834, 78022223781392738889496587643662636173085904954426291434356875446507457855297312331241658683434993939281145777503295045486533257125611400685449647379129584971965346841042362799742410897109549904025647661271974998180123170182486107095408834179626209230657146381321255365255380009847988479978172785900577710700, 98760370589025227380005158205797168636810595922881172729076438680827450897434694385485426521559362920545561448173536563642085533982081880174563303198994410557833912398008047922344659533386025545435897614958650322968269511804273435001801484682150300183362725477823754867627668319147990566584607068296820035821, 123491039014197476879717868721007434694082120689251364248232920811082934684335561745634778129782352466691442166779918373744713963655426242314549363299092432600000053402048226468364390140916207319438669798027090965096018331007974608748556549865353672714719582341004752309656710762850876755628564925200649820319, 43601001262386651723533789482388287064677028013089284215079528265979942203517799753674472095127685110619880601470268657118997264598935261666143493323878207175340708441570464144663243735976890006623646530714425718751948598823861595057089805283086404609735899943222456893787768095833523029774878565248168089876, 54665507069962922913827077092165516771000048532403945622615258489229036633569628105164100313955773181682814662417730286542323602284344109087582555241168154170515198232145647302676430271801706128024059060356076005055930168871850868345258984974893403278098447659258689650337876775718943858867871975216647758246, 67843014426960778302819258913500442809837253211009550543822369910261588425535418730303416967790690056036737105022018314566717420374102395519977062614607768264248262952839782648172348384096759939631559969819081050346764284796302402653390889268102442832336480115850869187449640854494679322951589012451982388217, 8310185208374963721519244321793026254709248366760803188826404196983451573283523509916450714657076913670856249455120015952529331065550800300268132552412583413060174011741768035583403139305896530724617104066921753992573152378408520647014154375386473792194207523635582284730345969839875844404535365653448847137, 66661359113377684498687190009629191523317876227467734093107389679539787125459251236960944548003963082750134171900304143057168511193583157663294531079719666929794307818680538695627431803075317787451696338858766411500842879927615130113506128136956503872329581200448452394233170387506453298639921374005461527381, 77819912396553277352987338430310990909698583861732164392884113781506847338104042961531289120561516791685578788661377242463754736065766979782113689007323028334246241419320806402366676907205483269669852446724490435648002200401140796206597044814658653148229634531655629977736564356212613747495063637623791873531, 125708054488853244442280969332221602275965151695538809770206338290675585083040525982756794536028054511462580452444154985887008908703540450825516323106732535959853694015766864417405198425799158952404692378106746314892596268710891401172206280426593640874477344670691263374540257834790825921252478424317126986350, 109198393549928643474692862444893905180622709505285523907340598745587232505184383177253779238574391750405510107040453609089871057645307861243763250639457544100949145932768956111718055183096395301529524854290925873938928135116631767783592304282667738597842580411007716858932332250328204598215021179931824309344, 15396245991084666351834812231061521218064434995164891515315717058997535765380212959238479532427597082960204117225241314021609576732366946822503296261055150694873620023211945044292184949366909862266735463270474720669468303818931794477822448715081601587681317961411489287644221676370482465723042926582673856519, 81840301574356243891707771663683304855661104121534328905756058710229850431213617604446204427096362412418791386667745121885877481238645451471678986647857261516249089635733030135295863056193394210608353747372671891186522404922480721077600934899917042545862192356263544195731084606130067880861470038395865583169, 59553366120746990017727269446627640516076118843947557653380524985361776095650087932402821933827754401573614836057627885988498067762347912093461675381224347338381671725875945845927993390824611825094922663862435784511856790856517251083396164535178889862365289572744550164365253646111955733692735821054674439250, 121586350984067904677808748552602861860488803248126248707940611234881633883684636752029240242359248286597555276748439498236439854225780668997272831623990161415015155968268894949267638663048498033095603482839581997606024832729727085760447246960084230316396442354046129695710339980067865730568166478580310141712, 63673096786501149647987117580531867701457429252091690573193655737246962274131145009794602654967952821684315610991794300166115511641119837781440704740420222162253748733659748485597348722405337785883015593148075630614092787933247719863069393362217760401308045949472132056518685203089641614901551846024798973468, 752295473486746748840459406919006263944325076029167998592788246211555141512779452962620812328377734575260363700158894326288842794463765892960241241976551040760455000573456528690121529923206861851098222170741771045963112556087928448816755314111257742454322575635077825919452679001753047109466589045955549659, 113104483676601240112865514875735689424606235932725888333014251868995177476196403660936342656139164723654906211133715032479629684721406925704975987087642372130703848770681876108662820120776952360204553577316157881202028025486944554695072164675445721225771250528234467217127087489779602979846113903210587955248, 83046390642983888304244591565028152428630173623239426915557940831958733683846579745082157364520123634599756142999742666947752485834842347957114692899795421656849552373818705303402221176381736704888076362474046535624457323832796102261702927305681690987269341857213594001010482912197714171905036676214458688564, 72221225575432997474890730491095668529706366048708905634826395745292465086782412265117514953003974622588001093622194814260027835229556277478511692055437458459606024706936780588171431800594351246820130548382164336571167814348371668610904915303327260478707562021391536445087343079290740017932090836222969846159, 77093211226350456221629708509069232805551644137987723459471039929125314792827138114198558891545724167603423006206205629255654316082752200484280458009128824618958804087843304563319283218835263197798447195182801669955589709202768512095840543571557453711909644927552438717263405342034440954116099613929914202758, 107266789829910028601510954058082075315416870335769583481874589989404189647538437797024484830613346093882532348476790693956257048664795864404731112046802271646978523899490768182119605231246250423273035294478495034691554201412442591246148215578358792397538139223712513488116904153852153663072032044497982034749, 123268722305519247166249485259141066602582892052716157776734896100399241183020130553019394261050452635911874405303886940609365811959539626659461752555924862034470372000771040954162285076681475914610093282418403628462215808364749578938912832250642612077799165122459140565518768833772066327829503236666346127827, 122781023307958788050868910746445747788186511632067383750767980430968174110639106291068574202568410361134083715204923715815786456663255989765256791483738846342548216237820807628070126767819863496855465830038361572848481654518124086287540494098161756630966979946502059601546763702544715771972845594909519307197, 15777492202327249892709914882218113289027678761707498786144117369790037567797009622753396467618605750785610596987408273440317159702334529014110810645535719537394195482956507929966660320067588914538453130090527332530538859098916469774398033691202696139926404402931465277564609243679879781489661851124487430876, 14338697333635151892192180813367861255478419165593384690044063335579762241743680781523578590841820555221952831397578351429186594141586017324176934967423302025926656629844953666972612253962793951526550687876032590103380341574808000198369260491743958202235424914242005028970814182048389674428459020599847606731, 28624536385983678637521405304241292786128254150301121928848207268232923232592506428976718619456176805396257745593760211615151883046291820863379664650309300696514902066448328836665686423060269736485951859888620188736771852910661975067107236210382260527785589408703680072857713529767785411206057364444897295370, 81462347156243335905927395418938610868691258163993151247498367741813583000818177056839280903579574880371164954993553488235798196299297292877106760418025470319204017118434587238307253612326247738027759911257774309945062964646192804892544836984660453684910409061271170389581812900429081770662752158501700954510, 48250392680765567555318759788189168457380653400953988090660333567122089322357956172334886890287170149195129847588318030775046009035547201808952284717804769476001463895882794787787228307490652998874076245287498504394929170872936592721718072562475162042154400646660815604314488665618258419056092338249790673144, 53614125561935836228051326247818104677278460383653635867012864791895814146314844983790027523829727383120134745186298324110116158418811591463849694108181071473558024592803262155292785913864184145367739999528170191201986723995542535218637523263798776672896822921036759288927385464003608015882303924332268113813, 95805440036721827272293012489489209686566255860034234416414487746185453993887452388895501563278515303939031749915104001291470452868875758347645962371388920734110751786738187728251059794435066748360511187059771855035863709205565523532515539103897642962212266919590095105076019597952007415265632593489159614883, 87926727281708248650436983659968919717189421885276085682249899496378303875278622641686915414010555286096396168565474806132949738306683239683019442780412536398988663573890746001148438119321735983531573446540199899804197622932924622271926895051357995821631171619931609907308885704947011098831063097000274688558, 26814432579499814475574672841182388920864031758480892753950089341023023614176874250979332277601476807991578593975025354083652855557018123596895257691175635421803849082166859205926789060975342636885822367424357878338518206976924156063492990913294885448591165388578557077180407504108946156148922659769263345777, 40679057342347854182971768105101704012387002795762034705354909426862647115828647885088386237171964880432274944849079286068683481839549906952948506195142671254102994914985684572640564948788714333805575025610903149635909333053067712713446059931531689489616189324824753854442601703481148974041811108487648100233, 64708891896143870890357013306493509698276211056074902142326136547271334641180661390748297935626234706508225929810110033467520601126449943803286372240985891164202743640449765683192452487068695547889450351445632103516433048834073696458342824305269042056895604833530568357235711191249569058737111677924464942545, 17904631867275458821071107728062474203962713273583208989979121869919963606217644231415832962546696614381622788033943213516813203839174499491869287720832143978428417870820114112533048613927853140120912960742452798580200677313537296769440772484304856391962170370596448310132804833695414215319474909963293119669, 31021393667093131080856366658886604331406429725053524151474811791460270429972714625441987856563216519802338500096904631934739609446949349237476423005324151451018786773919176145889727959421625709866732874070510259665214495432833281632352383205178832030913236076168659976812973963935449312329832550687153730548, 66592136982701353815841008680793494445591926801201223746189586688460147046954232332324234234297659567474368079903161850971378164300815455786703397405441036129909141816184364631827391572018195297515839747259802911361772973034502063045487722814959914985451370108011044532310134495130908214752523996673455842935, 25606446274530727467072099062053266016098755967529290664819781188908064787658318842409735887672771605709929454078127302250397844162469634201800142582128317884121318146458629847688935960740679485996619583327463273533919084349155440029241386101634176541742555324113652945846002135501126344405188011492398624627, 78088162335991486041841556019277145674035825081819542666018238877112145419559730748417190907953065473385778530464867010811423039177438278336692171504688046818484007554416640138865769638964027545187787883185090912690337714842768057488937761908314790532130084173403904957300341790218128220809727656147412902641, 4696350753990728343356501337391208288743695764620455555303416041743167076113694133494903066430420349128601960863493282045978604963633717505647879404830488402706680308693960741594089214371052163874655748935554122798142604434264021347796393360911750401112102268129638490886886998145940387680668292807064288835, 83707765820450277567919784343631441442856157181968233055585270823183375451977511032635233810586414776149649651351700790809817517813004306405773862772115776904953995106142714460595817359098727753990741862281782939475882371030156550166563002235271742335031948785609358345176876146140911188733223886314747855754, 60810022842503353658691486462606245213575499526058522617957704561210088799022042498575377955870627423921664507648886278455851605707101888956224536047877278911307329360743027827210255777888379205606659107535297787962929727988750357020724868250035503180735395160542166359726265308740441601842322946562505575230, 80111612201752091263723264503165041817810188520229090642894162719260652624460683289420012733521225810219327552648401272416001341762508112829174973359863781656317454727635873341633362708668289738833263506530530975787654272304096931611143417741238278031200762260812785771002943155937688254727158907211769005799, 74816520664469509923155104216452239615696835821226815203675965673453151805225605072332598565389871297961679399031176778076897254912247099726400012556522577568586650024149167728245477452277224318387637697498106992895697133226021051316850381696112590394237202314961959088327156972547683578270915396668177290849, 41798830389261808725096440359935431042419096432158135870613666341098850985600368593648002434577207296674982864503755576037497104987563246364353326794685231962269980677649175955013708923927629571756840180368462698760380744523031765810296565868825692779946299285755431351404568012160587895570143227014480803399, 72892905693346363806944136388229003655078974530106866052786834240969705410676757910769880950854930618372212349133226430838831426763864607583338549194155124917348267001549492820563113372679395845640859950857640596222724835884135670442513902303019736253583700192616789873819192627621090024901670804454389320414, 47239929175447835147979935948267759001260972674591736430137201685689284301701468578386266071545497341260255146462196965888435411764016393820609782054956862494428074104838541806672571975419695427037145063352262489998628709133201325453267202850838450016718548714918853513232959838013828785311013942195449978202, 118347346085897938017135461250846187307575252475890832833072540662857395642629625773621825589600744726172794785111654043808378817117121450269120711901535698249823030179083677852683627736347341070068619598041924493794003835812290910206810665887568753547504655480823167984587872394227945314525403525334581849239, 45652720370381228701900960064011932493143763856010949862347516937012210897995583698538274198634803864288325914293525246402023208685096982927804578866348842337670853679014716418314778609460067287536154351179772148227972460901456529865446756435468894608710489351011306668387160569053848127696527140603533883390, 61846324127097572412596200613383806350128946350615874340634473405292673492230387157043516053755493524633080157568769466921258590475280683636327836057866762251811271326135585814062711255238526661392050722212605611935106658170050093091352416216991302695402537637910547303738325265910492132112789106039335857775, 70082023821297723326572104200962641790021214136899838888680723512277346484682922214278110699720018881574375010187450261987276581652054117107693146790984731118574332857327284535646392974488640555088940518341461638609152545028062030368020311873429338742959370723960487466984128690638510746737037710788112075889, 55152817747902974077405163418733285858399620113890271520656834911325946044443464847925270854928921875631179360344635167817937516929460092253647432386972174610046152415361836361278186822104817684140889322652203283397613089426218227218530903082895880301734583311824906322094253751045715383222774723008084492256, 71943729436624475378644683181769771460021883093894733806920272263962613727164254599823468769555033307391484109914743379826057578337682103397075270928343847863884043310609233542622472147341306080486473672567067500266422788811080851351360478785331994788807924874517128224849484102033200922429884998833201970995, 115621737831031121979412209388846650593501122827975379641302625064608274869856289532012836316741423959927762387007273419535064442606813388186888412137301357089770134727369227687830230374219091086064799645677497358569865601614086087665358524363799658382995090279490669125913991215674320648476424706133891782349, 55552654599716303016603318002389365346703540839301251671804765574151968950821077964268873675206498648018598861925067796204848510215921815228839388099621424292713234529582570001188625954741322832778979002874821047155080659012093341022903132818872146648910763172996609676993869077044355518971232324822962942857, 129309293658315685613552450485868942698690593872603092177754437131882017321724071200811496981266118900396353579851577284706572826784629879057258322658377721114234341304254931461657863314684762496663319101612390290397190371857308262575524338336523521006679238823588744974515567635313778680527181486733986744163, 49770822927496721576802499378394670295827090368922507055336703374587283519164880675709774794518978995052318076875187713909946105776065115442188775108679927114677514245660916704030226165057791589760147293012080537322429941966547503277658002688432396317548714948500936859573057735437838439697651901807664311493, 128313762179823119483891725764637861689547247075487356457096988462628778312921800372922571944125692898140866371552396710182486869506870491806871104679156301928708362214321564003431031924792900082088519798369776877301340830716631574375088129619654180481302593094721940918771969991913420579920141828899529873079, 35903565124213144953961037474823108531995631134292872217644842142143116711839555579879847148646379055636265474445220116365166723075602246271285139704280184957449517107257781475272436590043094596572350800077155107709184587540187210904729887696670057935792589198404180291855367832416106278392641208574176178589, 123356260463085111023984271102081800663356423367449655238036908474098115335502156532381295227493791602781336350811966799644345116083520492707972525996077946087931011261433017930511433566632127962077827004037768135734342177669678499229856306971526507886551310607157152253927652737955979841427108852237419404700, 92798214079143717240746251097399686328176463920094229450303500438193687426199114775865634842977785428693651636219879024376234553178221124422919647040931762037847695368028172932151394539411936285395567980961204700812125049989379159107160993452036981014240976541882889104732672117695025514173234540808487564443, 16736020748777469533611432068910636975759783186326792691950901031693847632186549258784304169620626009875146599007995901327044679166338079720825551222952044018602967230981489224675402031427633014782769776288105604034878133768166015498334878251278388145406536688404702785371538859298254634389843793843789660514, 10462161888080272794184228244070026634760612021919398599389030430316029858760005493693835748645321344165120537626035316352185787102396635783694541971363711282292156491447364514780889416578955799139916196054023946959405899092915011805379226202969548086163975999906583921318561747874740721356800094994470997203, 127932176966559552359637226056472590839274465150613396215315642434034920372688664827072235596402431096937410352969077561314008575331146346538075004544353158906554596312021135993129414544543402937017980029391181958375364949360898123937145626984391595236009833918482763185546455658907315114276549843026496670476, 34779410871231697713939938278807509385479814518196273613492946112708960374233655764952792384566496519472941632125219139096394874281651567853378613453766390613185849274385875943256709083695436659448764851204818038922124730996939277837925337227614459913869664907216160501680734132011053246759850054130949668770, 49184152099822275523648130844053247157381535912784377979521995188181577269503402385401989242938367133646644876593050063515472772471529307078132998761829356436078680234779131013585270817020386222700193858228139791458523200977470199820636112439684828836739554647392441820338083613476480611575625587733930263294, 63085563683201395527116951053019172758886451328234771827266248667663344136214435384780916113542566584478342777766684019015047561046902366996028261747030861242183059431519119168775637039159710345175884140924593341088096922541359655030765551163688355210578702108128159262520125238753243992064997865308148195529, 53394717041382446424517026908315392228350525790166916762375982533931819751554749266785395161643455702420179369055400771255587363647601663280612653467318728919922890220249389559386118532188827792667219082957444094001116630034987035651886330535804605606803182186600789900166070068598866156066569487108843320473, 3925056735895806163252243297223154672721655224934161522660275023019459479091819743422893868912862890703159779728231593024042953489341299729324485984154444746595361670950156214925081694225703517180978176231744439227426184980559200688340321891213119455139139417499328118384998178836593843216147910582439871344, 63358642176666950639391407914157893801881551257622555841555267452179189206613130877594007636627190023977624990947549728323488665349707117664959095036339972623649027072054295893441186759696830063029641125633772014717354134540399473603774899268707297798742182063693474437205691108009782976466331531419795412030, 84097553361516240441804694441091632017034340597799006536209920068291144423754748945657505592634000659254055417023170996029458369947607955452246626509811605979851495613870520995576110594020950279579523691533787263399566647829997758086106297358178243249060846888739471680605333566294576565825375710088770084734, 37232484074777352856538590572637686293906113994358790956583040360149307733754083891545464560589134185103788090168414794690277136212274279327685187937581975825022227600719087341146539352311636004439097251689497416082068696489446669733569349362072070763070643099881010858465975851991902516591062374099970202596, 94170058319608684217589344650109306617374196756043024939692624266041502236676091015260359713717015718124621095301341091537993773150013858735199396149238723558339523196409913622987569631791403364072141863319332409030110273336916807485732017661671814370307833149432366895216142584780067281258134584708611999288, 95047496324831590666534489553562395059882670896546836203833069245502991250686123266564982952224443269635900649658053023611873512513536919693430375836771479414173568424787911218434660690362479899273528022676163472124756394766800457191921810763788266552652853062895138114617927040353933075486989899160377781740, 19112602713661293472373379528757092698993708217262362612860607101289237008991835479081782200978874548845387496325010148513166888158665322167893557744167338280143130878759272788500906363227811115969337339195443048059905930702569689634296648396549082919211421351823068183360486826711555320885710585900819764034, 125920705075333436246208795531426836438783264970062560328755085515647594242904241073004113481883043738735520701587581049060747092733161651317775750995207980777024254397135961260623201018922538211124165888689209450924542830677024670340866407583452825074522187372666763694143866904785313576599429579789605358149, 117705326640862545884785014924321319765426129515584306404045627802917743241607853759312209304721593371587082027567061537333366890721976204296554377838767541605183636596273372283104599637681159135909372602263538019250173566554793594361118068007272073771466265502082145365966383636624051437848414409504535468909, 7406931314767081679898466115396853675860176540497615963588600038750222916990675390019270533200863583384866363061876630508984458001017446097656246085380477381171428997045111615827162187869294558956788235594341380439053785362932448042529135418576497975428869243263972395391595737998655338504912916417260064190, 46486525727568809838062369766286660811097904435177373804644330506151303276952983930074306799174921059901455048440117055743667621638939451680546566702750457595236105514013934203316299022373868915433739209471539332411082090894664676384526733900011573382110745269987810035518210987555884063571374737635527091152, 12184116298798015099760402492215009343002677484669311081799969487905983167409562201065394948617377676896557489985970434138945376009331276655391636039613923536092752894894896315281713651914555195634151646638290654935080466980194910676719647728503750546956439059084719368212570710255993990588236590625149208542, 29225266849769097179960890762509371098257631929924057517631033230806121183840015124442666672295239403934191321804904669608715912070455313616659241735476146568839378399692418759167132505414281031377525319820213891510799995900185864176192529818144054090459724518764701029585672094870366235349140252860129224345, 102942094334189267694471948094989532398234490264209153628902199197894079563837007007694003813915380248076286158011974894809282704397954437010510288275376110845979580680639449828570896961615298213798578249738605802820301945974944586033307548949223268777068379137763303496376726262084459290207043393549730961765, 113275800144907772436936068403006533632535586998784277193422100537155554106099031085594194724046410087945165748916217014949914838293586636576564558258182170776319335974354993153458605264473877759640737300031163683021419476495132463771877354036626064682856939102487846979881332157865615490878012552816320397361, 90359863328515381023672475912636886639813271995871415586962751440447582657051854021318374922834272816454355237252856281370344391564082360236836797815629613522295699073688466134225588424725071949567791358883155057564859860138296524008192056677548293045656996168033534825618254300357139681166919326134713892824, 1837509783065160612326622567104166025918058041352074604235877466186947321372346090217239346397724978568800630073343119685321050181914610923881086869615754708967331390054406971809377062428563935060077989910127502982181282567761327509450464736591681272473093426847914970085762852240992682752592779737640608271, 101276535565528486272630237034644158029409979394317794526163110130828630198662588827006414190760707617894789377857673605596682953003267725790295951854535820773461187345232381395784710965049513268393325203631397916876453964035002543341292073600684514669329657996176487906063919665484860671454905876805788328323, 17564508966023844515505714603608397925204747615098849906079975960765159956063391327298756368930721967687116309204720992298105126507513748085219733939966690186926789774881326268587104020987357074730411369527960685865243578987313806967353114119690824924884121696456392661790905454867332204486694637555520200805, 129430035194725560618886472858813821502348460955899914435517455277405816312669586699405727273848004346645038929281771250778681416415950614078583210689849836519633429302317063789884156951289735519480032860707009124767668476705340467755654575279340739158850492927926832635270100384554649819695092170260284482413, 102487887284006234387713317012169923693456838823410389318044546088119341606439068342311681264972356798216540466839282917746947326421435621171700767423833207326515539131315602694715713660782094636006551093511084313931219423589935939677719865052490324620300216959601083264662170737195638290877142357532369697083, 106386871292759718227693328217704968014476023722909009706095044823718038298678313676228494545879883812154536882545105122479853500254551676911345813405586310316279269815832469628162713269072041531678469939114944460144788668069991239685927647270324778513017052646023249690886144242795502041521155767510012628436, 59393669751954896379819936242066965370258693860639477842277374727084279898499842593548745791791865222523773091909205265188414166979928297345234912616370716217816791101563270029247388381025077073564361170176987432586460855449161462629431265845788198834282145909277111015302944061023608852182899265366865286893, 18382697536109548008291365385013265275139245321371059530017117703041131722097822515184720835212241354574436880735086753661135501057360776132423812541615150511322001867519678910225353268288857199558705172464807315355121037532041405975869980520828923275967452423199929255451822284833320657415416793025539205888, 110706239239223872876177433647163540705217353311405631739779546840843694935068902959759689714181857577084842508876751575932188195290094936774462730699953352741871700541842068760977725365505592220076386226102128381928139272947817188380521879888293761030618015267300628013213916849781344221503723706949637984346, 93280665097525734465613936338573163874030733178856712618792121010293837805577799476348044783367226677419468409559256438898437213056752945385194755328658924472296364486846308126212683073773270464842974373678655602486373442444815493007079160936740117916715501191715383655824861912887657370972617674839757711979, 37838262509421152551134019951681317177437945395461779751534090066583987182026801270487751198416193584574480746837497489613649426739114629202019643556629979669927302120652839977928944621291649564593419458267570554263039820609817655578534441920664803294379701497222069709474453582453281097799611529569417485275, 1259860433697473230075795787672537978445149903362221299874289551934979482362579255472803460595393970332204208008109707661761870823851811597921988185052055337268909393303706847120260961674111992849214573419959253026626868113700505106032140784987948101331839590797406275578952533460401469503209594672065494898, 18764699764567783218492745116652358800522988190424560034114541132896127947529343962865991852563684997355185215226236369849522496913514754221256177503990217538130951332089124606423974481434182648426561398468787543744442192120835371714851314284077638650308275794102624601278153598808089785790034916859574161160, 48893974930916102501173817577748499509600528840951432458737533477059005497757792348647358114501029872722662650886796578586927899972017547923012773622313266728983279747748974751400697618718460709872734615677809366313335453003013346812733466055119188148614947433673996583525353865983265059960966793664865431874, 10478424091560861094036942470239434873956701931952935334693509300973687906414214760391078360609438261482878698281132182490296027789970960233648510278681534968410957544825762314858744205462682646103124745732454900055534116665156067243670279275211550351796246485814517003566298130946220646928801892103511260153, 124851205971912134099279591822260208943656084835261917602728260984252938710264256218657982404231557660588631067949542068959618650561743210832658730205983946942387972316588375415713047694772835666349556567532091700130215867993719842800015585558102805098973574239670668559284794991363161680062453867157573954921, 104933371318328349763322536319815013532739503540695225376717648536211635281321451250202316725308694735099831451161034876462083821989854611298697640349999472384607126928378494470151621801931585061616990912047863431888938020586010100778699684229520235901055955040099700467865103421050892762512763474416225195940, 2677152901526225887461783309589557866074089568273318787169630980758183127286600545143368709124821501981817914568204360890880409753521054165155416756831704349764355554203892113812722641820202105014288550249673669285889483199499731013388917629198817371636757227415929404262710331306083058333981184423150949160, 21249546252200009625010497098248158327745802245102893216085919294888686197726442597549940215005711387802832989273218248980915668890751913091692022973111340744550310282576131301159957409585680863484127077416277340939509925274573527848338315631248464640357590242121539476424058270023544936657228925143696377132, 54016971939078808244288713332766822294651156070089589379384301985735036487083472670923188928830115318394331952473480701215119109050163552759851945383605003454496915820550651626238469617001571917744509072176119313006004829107700261526518159021243478852541035070266893628328755723278651081781820227120124234759, 66454622579191843597628886908073110719429625138768408070132685519649337874025285249034412567240280240469435903118248961956172821718618610535204011713010813980043081220596512538957208625539719448313841241828708937367781384862336755571972033412239231192054052323593437667604814072017834421336675626754397379397, 63362400182058423726932496874347471522715029495383159891775166418571734351210614276501744792894244370174690764619130680225741797339320117336677618875005822723859212574337347819845011035236385549552133732439281377225510368379832338018960131925267046838005238194719964008892355510358369354477608117125976583119, 60288519150259345608577865348486437984390450472147553787826689347788116109660170069858267249012458417837773590250656658431461024154499447065073637542194751384671899746136971607055557538561806868851589409455686266237476961211096585004160408004006946724904995855836437450156403076128022901515404964120778171583, 54261822084481739350380974235182528423462363120658575347153400143059022222258598485315642430764063529978179713892033228529597969441442788042269387280592515627168253361765687008707762639470006037063523941327297686760540183208883144431696456565051013889578453488803849239743517195755827210344386784604257796826, 2216315468818277615036010837334796314897395845652020115424749631555129736279105100785915145184424795761309410335368761163737629960606519744651269764438922243250158646110916858968156329021256981195476805337955020445453046215436034604271061554061206105578935804015944732185899221345981514515856562227313980357, 125963759996948746181385945898312761867247577321778874763314378520437127570182323385760473913123423857828086752841520706571428546503246436467667392824234425035069071877854767830231094143908049272063112234042067517496243828478835338590134211413958924177709955569314294746114329236715481622185711767783725226323, 1193127777001751866470627497042826399644153552859418246240118021969186896946979161568160357746114797954413416320852897210551162472524348314489821547692724020373726884761869732984874385144447200643568967857642216700674065205011615752613978954047850390649249901277249242714240673475859863743068948786651943075, 24867141242404232383237155670274390719754534360553841303378358929041486847575461525771211615867930229604293983687328815560374995995093232927063029411455075026401447584352541970016906221351355405380286752174028795014321098127330016884804006355979792765175605744902210456217443527878400595452881983454619049771, 76581768832697821941134660741595317836356135122175679662653132970941420485760525380373019436555333259242981067714221466494641595047794100136949203112600656694844135808267208039361925753670976395203129697527898868434748094248056767102801848866238950328235133241658476181530149373928471914788419378323660456760, 88334962888041229777565533786222066295769669993491722565445793200823980768771214491991886390482594230465753237642885053498113093379711359082320839999962826973962203072385130914791190625926491530720785926350224139815095210051743670925139215000064788921938851457882210912171471446240843860243618342825734740815, 42151333265252842322221595943696789962427363718080898794864201033353371708832679822606430418903958386074367181565283477698120325092601257775317402814129850487266615486845268661370436964342896595292526250081872407214328917944353728860027274638310543821915177807615606031699551471816309605183800036492773034892, 35913729077231368170948133565823852858676538616070884606437095793227846801960238697865721523352694614318463776399873681714496774603287656112341992528537910408057189937774598805745258988749347728676222670909621378596986503378785682545384062523289144575731022311478924572988679738860284724859352693110335895421, 63012466052556991953346942184047827153585359610046531094681633094029904919084702083966466482195912327341543360391772875498111101743098425340445484317693538487860928392292733581953916179261351196796147719620405989544348295493924333425897873047671450241965757173072122399157003295363902819103690369476782995709, 80244600349981828140663876614360591344363275095722805902614492353739003503202808493022267851070251261935516831990307246730052689751224120524707597339952225983752375989512766653504824333621530215667780746790508699842038783585421223041922089747836812870468238358472535851845598860051956577113480736937926441720, 113023251361251102491267351409665682135997747936126549705489984202721770127163321328691326361509593954209547742260014670660553260859563527607721660700537900333604299458218505735110319731317145066013516625787132477351217090986889714979849550040474789876568530654890150420950007126643542879934811433964310422171, 74558270740122341252799060623160225886010786909075077620780438136108811200960821410215393461363170125075761498291925256724117603153414165325401615557316199054856373475223214764219831123012168307703941147437349928653707317985159460849617624617846700408025614842824419966669377971753219836743062396362711215077, 108061538133722081276164837903585285124391897735103386238606737624689818570313509171967798777699446478415764809193931900857127567509739126935942825698945529931768523995611556488780755413834288315794013815590685461378911539956493312325106497786064450858325358416646125059426947053590233122259466599839074634075, 124934685340550604620554569285675408256652055421744672496627579146625806283353431124416899846317517306562180017028011303341711354837072483521972672665096430313184092146038335342970398834977789337186863551604335532384245789200287117333429818552087274828278175443112540451616252277668411131714364373419174377353, 94938957052623112319570872473968207911662047858646275552125285194524900527921556896121334968126136307378075141737474969628188351923713446007906873691749776315399062142663725026867643418013081457662534772743328282845017906392332555364055007681383208748218018227786870200962142012740158846268677035499110570675, 70441151278414855718206300890705829360183543725142484102176339994329567491770714213035436080389580660973131295881044906783508487073266121792762837492648544764903181500056922914204144455312468953235218141520869418111976460628364607244030081921674040750961298554418076437098395922544028007212034160957462650519, 22897281981585238573302490763299907765904795016218799242878363513201947933133900549326824840675277045862093578851338557967666092568376339841125284927887526363710164195801251050153857348117102436997797090643775644368863630349309828606515810992587310310308329214980840212976569292160963271079884331168706468763, 7500594849367161061015880374620322480126765437318022398923210785299868390508610556947861820117333023795336220436512074439208208526660550595003430837746571458276574207475491562482106532599014277189977738836058824141457989374798359397752287500354282282396074189797907926438892642340803463693129166526313493686, 33161887475997586445788829958721499594152756472767261216174854351607804918463891979408922413435804729461653423410017951535716550547334644573380547284306259269176149847166156189285618936097175362442775800452229587325130164336388097267340363507602679612034172298241748397159341364926035159446745642434980482318, 107866559263994999025216342130937127765837164173799637553494045681010738324052114374584860291350293187478514601790998162227331122409372655251272518504093619756507754527620574980760141833931945287757309646410394133052354699975485009637888392105591806863070164440810300680466113095440982875314182283097615910319, 57230727016144649682216249474865687757090898006690450609116141510594918684237032066533141036626357160324877591899849288214805591958870943867144549043766429614560624008765813443538852339879462674047116573051370443744021507024604081526270812540977207988257853704647410372235885877447852835532603083799643386492, 12462334829953754156380569989271284771553999205210896683177560857742723291380878963903054381495923634530910664029296403482194043643485359679861842657506528644396562257543237996482624714956903376042499897196545602059595629223739672781648010212992421676576871948074963056322288043618248086493347954093798963724, 27612958984206015399992576749664497492577450160463372674833488840127423940283473771801132746310277658579463667116112581898111157550041354718121610524540820440939365942418086784321503426601096247014963116620955675689006223401693599702167490986866821643167617124952838727385695230549542269132150111663344780243, 122830911272480415930168874725373485619058251144372725744118036958637984947984145326972477242140846020595025869375505983457345765228886271079195513705078358882622310487140803172559098235729775828184304891721367217814465919447275168455544514331369503620801608680751149069700287109540768740288742660396125160851, 29516424532104076260228972555085406283273741109621656399201356061341430390500237181149977448623187820481784950709563740909132282100208440888489381615855600739094161377526221365177785187063922740190010761956342499369137116709184583840458499785328843821773510716431549464569114308893537961261408653099050212040, 79922618672652971497463987487384307400683892365933164444026894709048975139575120188035737319174432540078572293933677686473637385808557523131147771016642048168975331383576368751800626742339666905971093850028464333093932915677753213244603532262550659013227566579485623992276416088229041044451958286067484966322, 107720509474121132500962855927302433185029910378884179923608753497375530510355165073356481100834243577008699696903171473304868919773892872620427075104592790320359354317086759997695134632648504423928586985262737134480285047681880468812831691352920219640770836307408835775518623693882598715374621055748829555162, 101211681538497396885465077515877278120820820054607924672394781850573942549873700669302277603963157977311831428542012545105459093439996980653235727199568343540661949368531483224792830513662545918941327846008311673630131238771295632660542987079168364046118824982136167775778034705116303397399731948037555003066, 98479559496133998496794643040350054821934817003038532017717531487756828967262441796807626135487963907847329033678598725251448975455589322848319278471316391396534278704168539260789527494553644837293814430633107308270990153061084339476293957567355388789175156561117884613701930305576162499356575088623905920713, 11010589422893277009343875728278197564019655374713026544643627570415489223689716526990202892964343804780135183942375775018555155778459892045088041739970044778967276263307633380595779756440192266364749070351931326382180790853493016385704208637211829406659307576706934962946610027607232838878781439733985742554, 39446228059267159113308928751560822336304678188410270923473225984641804742981499454875972478145976857490650919789577226378576341053742749586710349091876411209051271440160712345651890236396510168535926538633159261351249517209891836087755341767183651865974277814444896758424659841205532394605332921816137403387, 106404239650985914928976542220996943051125590487344256297657770379301160392295315855201775666329287756233147631077651570580475078648497148256546834055939043434124632457651539544793499798813413013068700716831704145810779484586864296372428719319718579249700027659175513330643203666504466207061092119962869500553, 27630606773272946230580495547260598433098254862165695054083828805766130042671343960590965201211656531646104302018162614700449060670178301667181869974964588757054741463706022765477344235158823027007594225179091519257656650942109521416111354743241373376552391957958333891787854454366730607674310889323673424823, 76792276553703226520072404880698343627760962431299047039490425080375951318328967403598912372592369000019563671207459018923897522541242335741882827351108516532969192845884827290584954959419581887925008496076548561612868578885370331936217858179479360157645143615847462948268219994241499275147281944402188325295, 100397019653627757299466313336748074624648091088602438459152569666540715618589396435095579430410001287060792077999483642610816985768615291513614970183816253002352035272879784037379987098569088794766689790518771391671088825981153825926277009920402291761253609986428891109683198822461434706727871833836736721007, 1872198700463170856504829735352772989310622812427875575620858447064692632742234101869846267532841808612968107513234379107743464501660869904583074804537152183180648589597707171984936013463109640505576446625494063638806314925247151552780049957367806062539281438709135394394189508131147582829383258431234868226, 104276446163297925191600791176457344643678204384511820949568674867002882454110591107804171378562066890158162784304177692012522008431885349848352649693943349827372510202131246977806540784433632497831723953710809092524779085819571123358011146024093101638151250869408438036834452755319005645743801898770130600262, 57197693672905674810360811847309772650105956062677372552303167129821991764902194199652084422818292272448621096476627372346781416795540832042971620223686871780360165182956071231291136115052286948550015515349754289779080233585675821107019979370216719998288233271065391888438128646464647864677789385744038998527, 107474112811686617413511394549765198416686227873696657578482923206617862331151671368774444095027371759092871519592723900303209748734011564699801019427005867305833045863864438030184459644073406811998453234114281169917240955845625279018039132019025874453643895167143664790735407755978557696194454115046426183404, 123470608781886452889232186316432667369799477779572583857270176563727458531798862116995054735804048825924196718312323709629415503656144564256321285297395808553508324962952259790693839142032265585348338868966760828551524692452997156855156061640542104645437159310642016245040858977048434132775513066787376223425, 113219316353579705142816508075471468374598392131681478198785968804539767174308688111702337579174915066196428388303007112180581870454657966819576076842172999557908593351029406239886554328041297851929617915515772423889461084991519658227378478725852030090148360999765061477550256763181899927524605775625147243334, 114149201856524143499240468552810318645721365650951348230247723872735320323762995264790727157792154710990672262907298170953201965574000440335775665325411138529894148924847035714208512625066843101419932487180057274308960706925021251160689463888088191772088386081402655963345819395183784424409002825174575433848, 128647085183108829543336494939276831635750185632532738894738055933318987911383275867650604485719566452731567190281236725827450649401554942888666961557443890798325504069821805376978455587200834210811480230945286114867036657163777811107267983057560819599471903281851892707467590729421424585228068772163071023671, 58091151599212110237449772390817441701492562852038395812959005541624816346716795773304037367138088378378695650964697115194799913945233906961993229753088140144653412327648181072149532492237107892083455642525028580888538523338704480360765225866074215665138424253433641956723207160136075674836502200858129697351, 111771593266434598437355614601356818127209619096677358137569956578584603537941603673025458554098743366966847288018376240471134094967027453907061547251721454999439599686986535727698217256282947812373488161349558503236181892085488198697053205437269686958638205392739017103740514455323644870930283540797625070484, 50937466921107257514189667236739734160586263453277865103677646981637273781496285158421326390261449509940895958317922079776175848946954784675881970417852721661651989897462542826421398709354782043495862235495590944252099907433724345818842061342807938550091714461972452456874593737973168187176009510096982047889, 126256181382602197969855184259072409088884363170341553338529731420831562205942147875142878828112753329378336763236460489472107344333818609802936190444557274525542407761675393654229555112959722094075344700968003142405679107142254684416187565254287134543762244336171102212187657361288074413954396888756840634311, 68453226180021510449981901923869081136849579657220094011656883021958681984038113269577413355174335128187455732504129243891719052739684831418577013685325417494955185777999441335549196694324885605850356871020744311278801016525153992219246470804208504967873681561051618694210533604676725708123136956072206468826, 1265289258879133823378627626108780103707193400485822524814902640786133258134857811458795269856311782747187642395194205707320676026770694901177362841440261144780430948945857900670365843104216532053757006592665201029574105583129702577468954709106184135921456744927943854402629056917048796786687110762096724297, 127725105836340550692653400135321537709230736766293348430192431824119417494946914357573813295853942508803779717451964144814626800844548781845421665638836410585683744054454882687049995821689581991449158082890438484230016148534439795752565837289757985919982284523914078462311465390518946212031514051914666420417, 3883442254330142945993727018686575480363116242148787129986399267839624109298900156211516572611248241383578787077206161976718478755853793627594242655849845707484343256820863341389801316188331050295888521781934191591981104045404471173458163411334130502922662416837276371964313754084600371794362249516144640719, 107772488523962798601510446215862182056860590488284797089513905519735778705869808638801799919817512520385770681814566663056877689115108454770887050571950387533172845875824591260914096434261659359577350313150068073499529874490649109078221147593397675457654573282147705729044244991677754470907706851885003401453, 17180787550734791312193686224021506895457385552456605247214661185236124279075217453999085732824175387438884699860296819313919333855147971703389371204588996729196003981471262920544283012317536957078933887257781280141359722632299205644739428363405552432717919263120415424899360542635178631777629104759049315067, 52811262569814481614582888818263605504466961220067343462356562685097373579330628449202610301972818536921493404730722810151124236041925773707996263262296628940001730554201089715848424041523689655961046319933718681206338612315110319648582924651166405330645713496711688422652141390039682275362871744174176835184, 78722020588680503821740995044878585614666481212410096687745749799493654691258565785324029006505655792562311978482346963258449545133831978007652663768333038432621477832983746376310001678896055880805531096520889466378514468031208364099041071567603360242100675993210974579454121721296488502230219299089815769794, 78752917218467131007444324759222725111388587294360356926430102619298244146070807037919756145755311807331260801778856213738949775688179241543057998907158262507930261816069245089527713740444655178056600017374087818444879931496785254827445628814449435610590203325498713325816045611111942482099932990149221058395, 36103719646952066826125264738469340244565211335526346940407341186783604719474449750606917817855741455565315846908421563767996373849193520845140848657667333500149149406387122962116082444686055224126890835644099911136309579214564841245960527748411583128736333237419821475541794918605153352466759928369271541183, 111203534105277267391721326048215834227347818933475231402624443156759244932433476770494890288334837385390017229345711007035040363003556260837405377682942726353503212263963057436913780921361787950419575276171482826923781867701552153714898956587001383974588986234694871317472349183394465345541178738042198134661, 49779151345748218956401888593515136007355314651890779550470288009925830265182286133717030500701733427573405098752625851050437749814256257569036696211660456113968429234708760493767458860936965921303754306208974907500830543580905527593825246821796090155379669662209329219150363847198890047805689339264911576276, 63459951664820491478283195502459262038530782650916095149667705563944985466013302591153111034857982643363100736446932923646848075213053953408482142982775097386626531859547715748608729813732680175003479133782478840316467170462135152564640555192422339040426148155599172499013441242535444202516842888575368153312, 43486069340133105655740236070768877692433882040854523539394961356746833800885908803169174744335018494505828468649321585443684866899400936251142394856857484811125123404590729473075509943628014271128475669284187985020371819759756877714072772263315651786243776939612307459582528948976108065498257372266901769546, 10698256805001908169351755320283896644952133012002624151501514553559977636808352633388212928882824260577989459950921046049072656046882434615626955611321621965350231848326502759163506446831390454004094281949102147599536171640444737058924754179707679131130219708429995020155980724713336548349522034181081809275, 123232333582882711514106069273365765341300842700745110097461896490760903467560065266269591768876908254271422671485911226361108380016903727873641840912895000714024058106573588010526822618917545507858479509085690151683495721040990843930136128635483380379594821199265145129322670342648711447633158488767237993092, 52331088959485330216195848496157210858536862524830859455432334692482275473400251824927069440877198056910616679077897770315965498311838669177961752551328725374076533572369125746243693512935520435675384195546245864305396115758509372403897260861697128970847986728500007887775225240803797351668241177378170179225, 90402198359310807284522710309237463887408364176250052128738886055856622750830444775744682515700871291200220348567524367865821733611709843485736479951490048838436197925653939039600370952077836989471390758239175987781095714568384867874328747509735218489487015075501365216679179874338988559794006000764181428177, 57988826181902617161181368455663461409150934553471460525134170344726804740842328601541871029214601099663533571565256906665844198635503451402670332920677559321644519126378309673453650223467872850389390470397796218645851655227535266854324752799471932147831929777840259444583383473414421146559883416669910922299, 38625336605277355756650858097767357801934937361024432821490116793568753107912480048758178570988473748845501473875232363935634062875278523655411224599620180349159318774225945579054410093061888753994711474480521254247220500218473876395391219799611980230239669566143952722853705162269208324131446308941832989277, 6221218524838768462685434563369622461579579364374985162529655573059969913246919193075728819294923482010871788104116641607780546145017154217514599840267777475339107727469559319851075903156925458973788486115439897087412367557201271055473930393052292907700951511205940327503334102076465563404199314651251817554, 78139279499787432023487219078712904378178928758772912290927072449573549092871312553759443967902012432262250282347478456768309545193802046973273233013779888831946945914175700350395558627335241123738266320326485005065052936706137887053060218789978297230940513329237949974867413167412643013494774744172770180390, 104369014551601564838624802843096499631893920362339580906657701945725133087549530265547177135454402639471263146098545081655708177847267382751779608280750282959532258104783780675056426208428287187520851035597792011741544119450864501647625396740238417382527020636592169095027752828675360302087394940716654289944, 15797038844050074867054104391084659749367217905696575280201761068070223984190760224437669269517500458689219624502937536703433066167733491809878553852915339515466512316471951459543401293737249813165248720951861637689924147504896491506116510737523984490404097108274221498983402740664146952779354161170113867778, 129241185632934727714155704447203178060964923407386897276888819986438706286026129357863330600490368154462863754206861650734740220053380339980426366063503494471773450645183364296273933371803608951838008501149666176814578722456385142791110272462952185746739413717954864862230194492146305148117413827018537836679, 8266256975290060252427521809764948660924973175892551334135389088875041070807672258062881008642833521892142577877467928470906250306971866681581762782387440012634307852948471121707790703547910591649973140465750178894603863240992717613679332102191232595543452069457991093982491082926620463554357998301282604542, 71253196899316144214223091728736634654924437198749278346474926695469270785501795838818182004362352347782106849325255814118245705650691318255634412665165283879212491150479126802616994738006100735482112886621943392665296379145713725052502137877952357540548201997673247308163379350653813828658677824441681778826, 71922330435711244662827854957852361983079647187444102796774527064567200139382457903881798210411745530994840479408111291133289239776394272670189469676044845811034025988242443244951222241353046794720471302576271023118838082680520472999831402976499770728005152106232790919117619659634784808965018967289517306448, 119089056146723030877207023852058617835022954756406913050166186944083127777854427792206388962385393279401595839051883563178064274236872205888704103238040397018180178595998107670632543672212569611856044277365727039054098780301875741171920204372461370742333903247148561891945044523419621638512129778501381505217, 55277616983385312288745532628582155434088200680989198108962788750540369402344529989130335383065755541122703271208623908527241718802315989772058869001968335181380100491610429432038257640085460246566921712739289317815222000677139169872549934998476886164770550893956043544089102227964674298418329072816532063120, 5076254707494187843640688131207439302370648614923683365774377454042564409561850958254806530030116584122298955441517228244818247422711357120951197524486151471929506275707564578174089328722713407035455495237094113131318254455391950454384374942533525655155948671870287715548987672013720477518886057945729994831, 101686780111964729154834407848994505010026306193233902331780587435657098145278944181214493798610691576193384282588409001988729174116504314673054139787194542528136359030160386338453890843040450184315352525553790451067537035097059659623152979926683942725996808180255893325679006069962002914557583376595361794782, 84762571780316336195597481468112661080418894167056467833297041145614561167840104227449988689893441988651291492083864349424598978660941011309469807711806639923345625421268499061043565739317820225284526057714248417323059695044527655859236216045709523288496425968344886225910571817342990563153433243594037322362, 88561400748907030255976649163836483915260327697553455885178589345355332547080619708343116049413789578867050956606700169033300658589016569795296567113703198809455890104661379661902628111844446498146824842179656709380540834100813554347080024735608468325575056560549751410804200272013411482326193365543734531671, 104088641107520445170618244629135138617417095336272088902708077260379056538698234251719404238033054628704369285857565218052449507316969746200282429042172118689433358010829288336853322791146716091544563394648860397497279050206337570538236678423586872626617018171645364311952267116077625090982601096892703701383, 9941460960345380144238463668500118529927971121488810897751147553649470299884773313814403451656747906262677462951108630411467530414281201940112949402861842713560458945325444712555003337583087645302425930861409982804364113623704900971733677607402180275085835703935864744782245552211990278794143657292183992874, 86798956939490069542641492461232508424036587296732192329218983252070398737893355038775635179684722811951474986232015607197473408738843687419734712211680171847820329877524668067970309717822268967044523019152006138564372882572799180368488520251800899990812674079080443191622480811062124822587797471402379907792, 59806333916458036666059650874245952890688584841128583536506124521120740376255521894304945104628216882861217067439331043010360705153320092507370324400816732410495976883768433471194860568215419836266211763761221904973397074772769956733191302728786921528246709929451609381891752415215573958085750085532630038039, 15105790144614589740486680379049522174548364311791028628572998616935096946318346368465578391771875112885575659736866604375150446896596654224260505505826910510892516956800616120930212546667878587664756295470647692631719529048825935647201775377043314203009691505300402014342914521862956966199476348790481169179, 22477160806735320595955988819892359091776776887937215053060481900155799438124304671998517257362926473267617620365851809610366777429466489254325705960898919918650975064936480814501238997218429712496323095417792533021878083902867036188117318512957991113456479187966076460330671688579455191654240685359092808858, 126321375041757526514167814371091142844909963760350729965645881598312987126804446305715988735797029174918535251303447415742779625367753102928588675229148617488713988131973539573757154221750484736497766219099032557424144011148784854802634137378010589989839030538436867466823780384692605028756037392874122090099, 99467005695998995312251667059850993955980123786773377933362236426991526934486453572965053878975000972006229942405115198863120379320264607013024347685225121962381420492408225625242763132423046295340652354696859588401530740206245788725930876910176129434858208747817758065711157165500557321574259457560422691472, 86502575575349182448761704031964249628968204129275894353815589859381927832328665773366489075736589913744134397283236128057969148503749826925015357617956262174571324081748192169484437511694732954849178725267667144109259072085271133248736987036133193773713454292959819798016947718177175670044137048122664155535, 70422574618722187129746327303945506904639910327824388783442990366876949881134989004865483389001488830983352373890600530718062671627067623376613573889046853352967965620138536474656337240335290658872610769521396267233869567320087040324863809448255249483161906780312025289104439510871321983606712427332632642717, 73451148321178316858624760698622717936193563118146312439116619034081913351752888426292724284544992004924949057249064813620518191713420571337769622459636648438140236158904664505059041671510298353917791500726268722388968021386320372478272991728908860022000934170833964416985785401633306139544229702340520578857, 28655777683624911922264477690567332478007796127863944295382997465927288610646564135883508454841470448603013148998275382952382114669373990171395156397651169284978198168568348029602847149837230694293591194037941799715880545772268656516786688455829435624640729369794244902433991157576417530868457441164200119923, 23259987257231057651791428746494504375885302249577752929604238713434131529829173731217287262465892355096054388011453326649749461299860927635989875311200789184526147170815632317896147604802774181035932023065466873282424444920182225437448278717572886920803669524154386532213927596975082885228572376723412684847, 7088632734290017077221304453919004194049839124181564992493392810172228014179590104849046755481294406667604896640214437316079789945427938639016156318620062792316516056388037313471972410817750474199830930549649377546070314987218580195535485881550957574481670634804156967430144224873669786516301518440869573789, 57013177582128262793637113129648937815602503187400923960444204690758495700024773309999815639700513723448265733423348686224055099831887043474367381810296776876692088755798548720365667968140378087649269706396801039320850721876687211909709405267331883841518595906710383980908331663552672141624350424093493869789, 31713195028617737689457222091445358434538383850780235209383723997776273269632534049687684947231722449345874895104044185815115248067633914316565762654146954857276933301224622747423657186352428948903727644951610995581417283031014403119892710372404793522265904847511299520427587171269103183384895176144575059196, 58450400599425156346716275767384071021894629332977100561619752823684109671557213711222232254072748795504704312738097048961831145049078258707985320158945022810029368880539691503421993196591789704084739102332162107638114144969766460207870267051218206318910297217469479756033037168967418189427789053126135003391, 103527875210053217528102023857747125795282897062212419682037175392451720406724139348017926498034610670835447904188844410800640222391536224268047978298907224169766038275611682048982831439300271730702963154077494996945674549516979698354062382024659360338727417566212095407373570999845475951470996526049332202396, 125070873976521821285473441289169445113140241928519842642060862045065508109704835215091920268886558097454845935191276005551082114077758373160931688759487791109443035048816891028422884846258861544447554072397837630495030839557941492185697445346446747142846034982604728750810634357876829482315665914775688212673, 48424598280393146900448875698021136783706392238108330729225295290288660149346523462899743438976384358827872149238593711462111996890712420361727409616948190297616941605322464316624858660410307203249216383130975677572567321843112137860902290573594365918887339267140160762789088913853659677118991362421739077790, 113877075706173490683872147631609211009272505403335711599562757258580503748895775952293876972107414777728970154193389889357614937294476810568626983047183903847587524137348437456921623425972307374106842523638182798030181709571555813052945620255569604926953077341704829891912809090985274653571752919409713488779, 36791094829731976374423572504876529353508142121988850511510675585324432934640858587165085244778034625537253943266130758447815294990489520733429380116738846186655296486394261055049775506326940403173739220585426855489502550988207184126296417217528827126453764153217500560598993087781827697682826097875970733232, 68367871296181971239296673979323621730633901549695549750405044658797292808009868755422687918832499242726183451435689670381045198493853952999875952258128284467338735844519519509627877185905712305495208102411931113544881721599194260038069741740040854976514200587234549379148288339501078101625292391516425494391, 41369156347547501347396975320439578414007618124971652077269420183921838785326953768304456191010764341880261397090371620474388516482565013219114371665758933338471073802895916757434489082608558935123848849690878623058313095077069950329401826214240460910870005574043315423917011856935934587962397320956296157475, 3995243632348322496344595297182867288807388709795957923619986602425870716396800585105866772314703787966474868680500052561344190672677798959208937110295069481564591652021273194627422065287752726509058398714199397285077127426575261751141223615352182950297649476653639579482035546577294064502840444402414509484, 28532687562478776972244100724536604486719481712053121160156302157625567925159501586769207105507433050003988684985860858303616630206205099112874454619599302358192777684893441523767812908810256180193745007708189497013777860807418982900357049534927302006323385662609505514802529706022096591869020028561612558197, 26206714281073074653897334293766324751758511262698115505717569812928576994063241165872981837697890768433761914960968374904948737867003809096643200141321216992407969826769706985852595441505413317362187066315768454651516144337895739062769881668760090249224986637945728863440930865026708931156897253824224154480, 92601660270183809418967612685163930850691373493612006206671617949046403436069801726737761692632087426822484811769437258616649981665245407634650561051792560662540979811910850234302956033115984906568993731725115925441765705453965002811468408151838152560251097951953480325071234592618847136684250831898980479115, 14395695458392022539671147314028670193668744141304889497524634906439086330402892097484595650114651408356746099625792870943269155108491711051223157553894853109421738655658746472968789027202220113509153359648895421254633440387791258565720306713695427267782781335217326519389802056688448173509689349868113446317, 17978077039842283394412034790531444091124802929828982760366004250237014668496773824376657155625050994080321069501067375185485629977133114660739250952527384447645025856274777226060821606031870186360468410536171566696661329272275630221603367824305585550634973068809290078937162702563752840143981567166100921306, 6062326029371044563469285576018611930168912042751753409524099458991248297407138166939620704778719554229306817758110747467253677306807664305902213993438747959978057720704846929195926239046811783989690721165809150735582712811084883912063661850836747839677266817449385811532405045262368087648693274270594936544, 114970045950154840222472615377146732061401361685172095644563289146816673563505988686886123214378670998511199486526961940130938908486013329049416971417451118235479895967359270060260409334821976886335407772029612308451425133344364151528866260042220522644077493271400846640895950735555352557394230995399839933528, 77699864868420764869668639505596980443367421965166332119309936025191754346680943847033922773443360265925804212197822675271120715043880083450531705413722175866231651692393340945087928027593697119073575765077731464032135842304336656130278366461377765364130843324760771740848118434414559211637694341950521704726, 57132933310967561172494622528833521682387517395452692771980386776746309564250705384761929558094160635888132173817785898291048048504883395656957943964295289463548535996883282699847935239772404455531998128586492997090872211841173277393614037873028341760532521606193021872401378320067348203913778183730055275847, 40048424638764959993992865389136770845637414634662919454395470614083452531739575838681808700298984967859693295639471480707021369551732952076197776018193662327893040326688395683076489947253370023572870567411463394197137213800228109112949353265261939129431902684252652918360769051052424878874990849454551765381, 100944341507812545845112319949822751948025258120918439586836009056248341636670962740085641928099440218286634520727433763867852395110194813743470315927350766552658172654068756145833409656271743322105473714975624209438519435392053737030973181710408911920675217209529676487098825227635189807045391453179447759609, 97629859215173596522444295630207443243137138587966936488730618814264189511497477865422714523927400660426289198943006342723954570305127803123534205532120948144165506633384623854572492967439695433838974945208900962312447852381798797813168600711299883977805465849216686115702233060622920126044029823255592625478, 125326084201485043887058882675253168542101281571252157916977005144752737071340956266448261637095784403121238719114728863489573507704571320964253175890239109206735063999315354171839336711524393862392453003357635991317774868484463739708911576286298886526154090994595508201752657206708860858785240533791207426387, 52552202513212555592557299918548419086479155113444282438634290845666513016546674213876628362228170217281755140981417879073967176625233102006166844782231087388144371928942599969520514503740291135807231939101434083409449791335965135603115664568799424050233952700624737127985094528065131909952899881491210928062, 19173647314683507967530419999486208618558135083714307668700767716284854203481402035513395898271287442722666284915334323835643725318434464722485015765546976521106834284351704316758167222828359012600764946380423778140279342911910829753746478509487462308002052133649796082237732148256010751852614818570320947291, 112705404835065158960640187289010567555803521225979726967530629549172775603160301073947166067168634084283704687635382754314405084916865116470038941506167480991994684864173050248603194406851749647744110378420124660371297389005811517200598536894854177308947015037984313474215703046343515144430880930186260277747, 91733955136231143947903783357668751665058167967165905794673755397925475049647417377338167887760285859513003225280435967694552411139100063824999113047637887887930789976130679762077200911060083842602632636456849704494351840883168851107635733401790205417553274207070100545018002030872438583697635050126509217589, 41821131235883740181879836689882032777487450653885454676505839439416310432121602861961655129254078355414390175947139151539453895297129242420454481644726857825597735352580431403661997065815330641963837340811747545803081986410714226729389144296857069839767587080092227919457455368042944792011945039665942855469, 42760487527951104895656369663470472445164941109205180934234501333085091634707352201987371236145475139073900728385445041625720732284374101449438231248592835037925589986987087854249774203817800808218437080764966789034059831149049970153623393225126350645888285356840989384578627597570788661544342348913864125893, 6157871766420679829477657206356272249136432703623464280232696287516816574010561652807735674562746894668711185702401803261634826763311030365581848057586067395296833634912932743946341010399693421099875999225032619504288417432151439349618235616728348221849915344266726217189078535964718098978017236900728960758, 121082187417176925842835000001172888537250848327352834808032032444280625636804724020108933175504723170632949711512940755802454645279517961622770876127730803728463029068103996143292452433846405973094853645905460110130125972495356832298581309599260710514454553817708965045206297921179711463195052172738877347608, 44526397116339062573269362437951555101263649634645126449492172854620140575760717256335276075281241196668348521121184669370909999220848815596703101189597211246717895379187426495684597150618603828781049137183448679487962633903491776983127993089447054260169392056861350274971018167069345333153748610749098871243, 39688745008216596950984906228181652987899125904196974380113165574062533437548847041744165647053909128260018399341436516514662092530896405728927118955871576144002318618303104616990696996971448607507766082706481704632120449373195276679256020847421842806329587231927603977909868232576928664821071335076803271352, 112385673933532977813462249923170503616989433154733112426897304418644432915232917771390003373024991129531229017912468258532484821367800901040296702421534127945876407727751413008740692257906187675556873223774683281038728511756037246850914299410971977107744024484463156158593977240818837038109805928780603722330, 80763627207940564740874004072593795962486594759625162002466620760984440083569819140365785450947962739981244387222787103248081867594267286892596824364426559241547965204571024380425827951551334080579960660762901096699265933454755721839840686532679076659494504778263356080429608274602054335654352788949516068034, 88940329143098403380943061372941725322536164918103700455394034936211888764376619760141664069046187537907077352780238861037824467054488420205461391128409762654591163203460335711032371473294778997630698445433446051989146592056305376391176391134821400323717121681150892766921733659336491505305226188619887309189, 68319932106289886282743025638822394588042170140027443607604744560965625575658682098878270496328265661940631091763361271775589469516464380030015697621891065952227093745840360185233619478511723028451262342754664277783226909070903743362975566456239831599460318224370622865570313273085082424688966955476768240986, 18246880400553437072676517223979566349205791949691619043780345790431156906510783549846863844406436100294300267425014852918631952709552054621488467201833624844803981960415159819158746265495265768254477402342840303719129439797901685198985991942748919672625333677620863188316136704725030620680411476240490937314, 8494108718972886041766638275593204119513570256074947855155984831597658643931300694118815376747008849197175633985602556623888187461235790411943866036238331302364240707084964311591310235134934591179843240248929143849791775368130670602360443112932150533079257030228899069930700871606755935146626990098449814318, 71985732218698409667389652132712413229370716373534434700828943714313933069750287879079729545466652494521119437213073775707568748002346538156058184873287028167722519050862078077050433813637459041434274265216109253160213015729622659140369733191371920284516691847206388416020404483812335064389269448875612675279, 16183825321608840003793197066496703655248533558028219893973690507512941067568434427941853288977778313067895495765420199303044859982575003291761083172993977966017632095374856273853518374682061202351425926977515200220323235137502012716608123404479901233733800949541904639676028283666092004482107040009944953802, 31247238763684763701814474207251896120743783592409077809253219585089418577533339413536215218037247698042441011905253299980174091865266499755644505763655247558347225927924238233401681445635795470315159827390159484553037508901397661345472638174946230552066354571012916527236756024949192982451521986170572709773, 99171285763980460595256489448514882236928634995962087423233950485865433582845034087376234997971439861322823690993085890380039433928263238364713644730100551732991598362854913370363345855194436428897686159472055769010879804262958691780945841001318522902682147459817062489420587481615848809138089621998341286830, 100363363862405749644249834080354714768104332423545248153323827547093764255430499829347979059850898157877127426626608813864685461803089827013429540410920085899222329395775300427811164755458110480422988436650956205388484901343332573015182769082908413516111634253006854615174587948271261885594844140896772270069, 65905812547022969173427776742058393891582878713590492506410753502942419143759244350239914846375112518560097170661668966855434075348737279766219595811392565674107745452306407371839305745753044505385102660301950452641176101107569437095231384369339827526555157950721346075843388035632284311530160320795633578303, 63096470091152186405684251684437890339125549440977645317939835884624124105794827747908312436869622399133306260048673385685645336825355207779265791704753511014731508455451313243924992927422643559022780551138062749215698220156770993623483942111764073938887306240088249250309554384732669648022101429195614560915, 125332080734634013002474259658759454615836875167880658164507474404614020858774722539259213077550066963144407124382721794428967502206897201980135516849698934537987166684364005387653180840937472035548589059921535250649396118595322376572330911440772966604991246340847781917736631384702407263429464185417745652531, 20232373114936529413475006042914788435255705762141432185256347267173059407642739624479452281063458672023681370652633121163985484534235193706899761065318704810999437250494681691536790766790480680171533875234234117582430047428438445831102345552680085495280994315989710546977897525863855500241025050684916554878, 50559198421919716760230558891340032811080279062910444938097126710439094081433553172481563110821512834510100955526786337450787936568239638400971641181810560735275699631625508241583539437857995139303930204490569492967107073419558490364466664986216622992789757766568909747722052451082315672936885278083209961236, 12053716426349106018753813141910024259884918335162148185764978688051325725914337485484280544308626599317827376682919969817326581207673835577003124298817095159862463676996144661371934258038714581775829834856221432775973407658407771244351510396360309759411875166590568560976882062108454611244771748910789567149, 117734273594981635013956917167935247275970330209428921570805265104744935752045774424578328512715696702964262315605346748286579019132626012850070777217075366516725448026322306114916508194165514278579654504358007555180118076475489735397046163656237170246340719475573824877554897032196411325118087925555169631678, 7529414973717069052240696848416599520130572709683112469750506927489256680754731585581638787930477875042160587224143253443677916599952670181486179979481959824066850361971567589907710161857085724793393474069853393624148486879143101640644515881734215524916923630656162537607693169088533214302853534889227258549, 105530914212965502171745432837380272077702832136107037795214211913911199321538537165756558638272569586879977315453476579195194565653155539558551992449905075497877585590556721388814042193085419807806290023503755555219121448560382300157577572164598715990515115875144690298416122267703756284115393168944544651938, 99813595756265839716757620188684726070879768225810531964467688384933200306215179054383449702911147878259254416432298805478827782951986204038532418847112680083389728313469343787463786821430204236362787445726567866279623421913502563122388273169007022311586143810922312156145672291338253836145189075986625763641, 59117046315836062289699353476748082113122942671424677709911265156170410004851670348906866934173452134663024846858421963642881360738809095814323503318890321036151991146205048136240238494019411317160390733618519498047652358593939238359879448139945059010856806537821452239285928476926714084496562531676202356529, 48450444588553912773478177342829921217298326193807762313472345963802905524282821138626402974809107193664517272178901212243781169249763612095701884490425616585720852879368565058719409371252777517921417829481685230517348634902317451135330303453408562338538598561233201329166539641139939774401156796862359277004, 34058634155740841867052658118660101651530668665315675392729014760170237289473933209824587116491797946175278582895746638933893801717201926292572609759801541020202669642094611695208921670611805701628116573165507850805321173503915317329566915944697401098563315072414968790431189941663024054246668553800801471574, 82392976140968992162909019567809404450064327601389855931173738289978372987520469337786711428797582271261641638017668049742448371341010660702492200839069623713484550467871696750347645224013143936452459519442862400190265117556690468749251403031485685587337894601748056179169690808133707958584897191920082173617, 89013856561923432341457078633360833188146839378283554313888471161846821646712823801771274121835871077246966431781762504496402234532448772352292809154820356218441617882794239923467497578322348869035698878459279764895735742618409675621531795434912231259999649349403537664837384480490279792898441149847310288193, 89274499266986886849702520021198629554580398423646641137103538472964859683505765912739926108621291535763877866700958925565400586769287617474855471279134373289039258313585699291976779714693512256320151583982002471543935658778906834654592261540674437427313767437090864684712531072448306357785561406798701569169, 11050430946574871166587181074977803262109588210286126878772598674352357484676544423262237656192236950245109116632141997969067036170777890929777354123970921620510494639007786883720408338112002580733609017787676350120182123352826704665367262135662382853951626216004212973238651443888731131165474306316563806897, 57175548781765241336478091976708366922329074273872016240600468126176438996708649279426890187895196554956909196787485212945883998886446166802666002046959141629640450059592060832598180190721107028536690234062999780270683413610557072704115170324379424072549472188881671761423151923828702311186535042985010177686, 84261325512560795045678033506258142778814260108971527954432228582542423214449316301920579837497944161115207940114881819599897668115382974223685753997115614882410657665317011130540677799095426934425359474817470657222473456942864983288351935986262839572747521114007670835877677135940511701153737751569534747774, 61387531548812936406623015316011119715199344347515780990756365618549448094303901817487690535383057980936893095915154682228939107889540409358382557454282753295738322217603975022848280802009756437483284138894558502473492034624776902015514205550685603457249534293052636464633425929339794930741229437733858386187, 127220647780362917755721270912559645319133602196423802765513703505953707252853100895050890875555839806676993883455506815570888712999984749916729521651951732862445758391064822424145371525039593995528190390128241024208810252353629930546754942177300705833377539227134931964906766845723690974470027892829488774960, 80682766355239285127321748292977229426080855676732210076979845539863216927886017994516147258331613964813263480046675044019753592146107314024152208260303470478078784191396973599351767029344859313266513078072789600761455721845191377110911621752726242280270135995357551365328646423948915898376549882033808694665, 21586948446160621741956606403265311251629880802963715200036137457570734363830433957717442021691287533138525282715928114585712885056139586378989025772197739760708144376308211273240905964561511406096565642699483952544124810738477736181291822495469353814265981819991497013289405513515070840242650370320991427789, 1381511083800867827822139105995818307275544424020979427416536250656609552028907103860441739044092882962294123741815953075778521218232700932505529530811086579492518710585635181860749898110162653039791204257330886018814150989635440040035468557743844284757131280911650108558181713198254376738732387296600159952, 71045747068773243274178341149477004720363652357753970563678906077028992730759020998168797597167535052435214295164052960317364351210484496517896911234639142067786503863541140934027400704109005570848643587879242889125804121568838902657448776392532948648598252325398625050357442228928298566659021116176372668210, 56011478357491949660516468281207398170375193623049829912685074354959292247000621628805166382030151402289101702434941164755300501600174012885676913120684645541680167544440829686617411150064412109061707796837447299442434026156479522019883434661651961416934549144149939535765907383544686612015010759232939218644, 107351733875243952278953126885708569571113756014660992671710046358163927476260435408783353210382527948575744863499692941457397817624785435899473413566417952438427967875309419565177014214268654910242429719255411181504163034723225679326104747607391266412280655669526093615521712891400085772797677830409562217183, 52966453864025013571293456870117882013242991299160986257124090915261828559772976672676866845449471712574971212236493400245400728682654620995580422240348587748687035505102508909676100268921639034236459929558338053537568404789252904385476443587343508309530507004684649245375501963532993151937512713511447361106, 49784267202227344495852640956121157406767722226216327847710857211777979380177783901241272692937369272137115425895010190410194707140255142367442158509052118178419863536004465316111949448564362458686091109141975943171149194667045849203526234793006198538573143752030886189735552364410467407402389846628602934160, 115616348063923963612553559736542587370091758409431616960133703203817076993445331576122873879263157768959927808734372770503599585482483867832477106287106151146038040968444192982502915816516335794896351405449748631383816224800498415554346537724069847034440298359393395562200719471426851550977454884437847034630, 80543281360601341472679453119403921151454604105961572476053405069624869974699974972211035745091239663743670606212190316608534144601098681642395527731433890164305905403289823141417033896915453138083827283023637494241717787628218157004371388783521750628466922961960332042445094388892781690401194168588356765187, 64649791996528151060955247738079226632952219496466819785649829428709107993772183131064702565175833895094873389966917766938365498036143257087198689353359867245847180589111200494112170206031541792920659359898266252886926997938705598588143683581374182680747606900659844312366804349960367297464822339272505677638, 31581312836415009517505073474159841853212634467773901497640195044799148333331681222797688255033545050421866949298997335572787380460906533109711960747223286769819573320564372391518391764740391677343670375790861498798001730374018659605408119881583056055000074472611129895558217117318449442665862849459764618645, 71575079293346781701421303968373680674906132060414493796350705383864103831175474858421579093774286185757191765427823808685844079165398624469223903617516924927700373527369490259952783571385993449311762921175338942102861439725127861543782815755139939025864356124884498807173898674690606099207933893723916139907, 102864885874083113207153258679273344284672089369913612508399995865749096575331547308217468304744115122939937819711169722864981806081069206591975024307646451345758045748228934884803872993707357565083788320607577566104072903908067424396395828298729584415031450214375137382095589052270738113220725610387291990182, 13956548114078931286904873840217595346404882494662085277886516079933190054236927136805225669942398928581766849414975114323978681679510611254021759359868984387203072762906888049719711953355130494626193909043091629102169009474088042381372201565117506396563566188782857047857835135849732947337297400069126684237, 10774320927542674965150891662080850576845147568896105428791912900159898986579170770295806255536867711624693460826532194276867999332474404218543624974317617130600368042252047722875160294458751374940157411089762566619689107868669713775924289405856483016366605582487344931359071836263007393846169221755624842453, 6468816671291646133879155995007609802484521591697295378517815946155126712519674990100849241864949593207956460539206329392110806583316948853951319935547851344606661143699297031166116126337426656714025535868704395217273434130080814648106091194898227197886702138532533271338656501710284075849434175508133685370, 20622620606382524048538800744283404042543221616399622351543571568910964388898326042819276252908685354068649439180630403361205866197871662426564847859356540996298391251859777032957826501785171190467646273756984207762700051416229563405454600115134232909190459218639687084754218336398655328391687285861440071057, 1440953344991495777485545445272161065237710498464465708331739635279858270978839997082406388895604139169054943480399690164140143015876529759766832990122639980012729304823352958432633326930231881302892160355542243146402122916521608705093889186949281873986079553625068399563055804511886195299735765399542044971, 30104036806882322191732527110862853784754429004167086481482315328588539273183299368218326840633217695341618181671684459015467386816588873168162363566932015784555037938082863353947396088773310938176497264361541772999698997727237654194165845082204685456235699455959268130448840982880921020399695131694590974444, 9611193614888707907708619174072867572265336670925165307548335631374225335249814216900027109544059921393111910812022513443156262759097429182547309619106233318522194787189674412076417373620733408018049027384665912709510528114612129104811838511512777855491013502083678648861453319395187280003256619586793854488, 94337668953688438472534680267139675224001358691797787629369619154429810398328466674249817727716695849826060536517008603983399818088598505982210033698775513894942005777752420073263100524712296373809389502159198141172571435747628537843065108830386142768382080358801227192248020399598289849095764978375305120898, 25958326191579696873848204826671679816907969592672560285252644866640692050492910969093676192673945274993121556872079664979372372034723756783161263811258145924107733064260162654283498409222357390582945209429062761503298249149695560028025477281442725726699337074524275801509955873159334002802385342895124600504, 42358004035597109663193381168727767065984865438084867585121297333989211206982442681584123659065012500709113560568338848661492149009138290508737645111621683470606068415595867010927597624037780640895224608081680943788841066177740342045181963263718178230797720313636896789077715331865707528939186231766001768889, 27207829617653690882193586128521446043389960999655534170103772516899004712255066469430544639476422142527367212934357067083299639370735940739774291465588162222754373379829587446389671805785783243036095651922520108314322192012058109415124352036573807359443925751657240437874141208531743615386652624644110275157, 89055715871068947666110395781666857113074170263487818420277689240209889758797746472360807955797919262387724160690169553938375238981172272416142612235943960134305938850683653703804321771656890951561217046903508698810568900470910417845591916134647550837636695099499695395125908216732471867906488150002659146330, 25883345415844517062265264548095801017809335493385239397582126922077819179964323797456541116462796938672280987530003237442117254887618838951326964980609535470975896524343049906040681653937843100775588295105847996425708046678205790640033772421231456262412992015530385758534628634255318670334157848288028926646, 53831010145533239122948156533050571671815755371140075957717351783681005704858402603200246797469315084874154508944364602515128497495363977731166199541848876456730866875141270111373783192780833205009318931146722936095782730211151779330898066508059889780352888240404016804854665919510854970941184321537570027786, 45647788435524383781513271338448859243802108799607440015148610916293517805183113653527598070238599824585277557541734718693282339797266181826042617445036830006776266896026349601014168956488181751570430896195912943926585937059343721970132799722235360400965086558302186812226857878397905740896646481467569105550, 59236107669788358052998846168122897298453184764201145687878378709705652669034242192520949653573303253837209450019524288134827384828890610677128930473542502318430406483935898437021917522597041487624649933409778133957644389878711534611344961505814055280772488537337318057739366693992007344559676680497212796280, 40470649978311800048483569746350708688010217876777549674380023548411396552514886144295769721317732050591610344488478021977570575000534591091564606078057852582609580014461324918885969469115645175973038884215528259696805244607186329964089038391064243307844141574007610063791575943977920102163990534239380785220, 52737590947487639665288651315009039433912562437359196479351166039781719780495680856334801957266431065997479345568886564477951047888355614217645021966379135919195094329991677127194023251108841484781264673125968827956391526858469131146270986224919695853755370299242349254912793299652034915448460521728199973653, 29065809784380570949360909676315335499579377074653459053452874433700398102901101057776748478164778100230101591399760889459269338664513641653458548695573387960480595927859285327841030571829168102094968421662140542470425559438191168384334927778690890687236522742861104641339717341233826697780350946080681628722, 75582919629486299840948391060925066634175448219198872244243302939668897730131204691608165035850570256126059113685257295242493748932574601067110160029829180479857709990798005209566787521008007959117437347080798139901553289286273901132521004042933474909379392349190160875498819072311003592842128849814766874993, 88565181028461795476892634712416038598576950476177464683971316474077684050122855933915733122249786351699801412116234325496175235850550361897130587573342314314104520889535215115830600028986710742134716193772695734741231770251304462641683668807922853519484964439677003911304694866653900877050007409030418302866, 116291018848474032532645687862005674653864916780124881324094501993212535458503806215034233166283272510629180040431223428338755128227993528123772571190091883905343444604186565022303851787779507238279270901066934809095799789400315166022358351268112256070384146868039827421392202209034845826098420032281276787395, 81033777000966144240108367923187830239124519344103167245512937437125632219923022475912489299342786879969328191986615557575907353978427445088602378629054394967997140993993285046375738334356358261593146660108276816819851180015952831915858917665615162041031213266373095799501169221999948741235468682442822985724, 104436068394839396119174524264659667566547632270723101226587672011959973088051029281728757369796963314055237781156836659024766665982506900781259936490999050239237870247961141442460727864855409003943604956547096237985147812642351509323542824643116561094111259091366501495569138620804083915286218634002685377548, 27303935556749890619649799154684224357973145325906643967333328406614802846146621431210439046214585774756111706883955215191263619916868345790011000957735470371944745922630104759200736541568599913380383336447212280449983161313203252090361678587795762481340377637057142096309328826607522047697060229555233255982, 107865003652062461920695560591267188149485085024735192674881826622049129229254383759028636351923052019448754314787404834196158945489405903510210289372553037775793665931008056485861513904414507798467056226614991874789610443069536541840233130262303775238874368200952749769029395167728432730666842123810614743901, 15115789601757374598861222188528894081258112269760241940113108769205843367903104767404922083028364965688974198784865642986810108631459568302058627440841762682680267511454825013814874398185853521131534370400578598201201869677318489023958616287330494032494363080249178730550110268046385933818241042516242254884, 113521194595750257443174155621466948206727881851591544028352072724226957648459387115633256534353408904536490083588119673863928829347139882690424210035061005502795345090408378579544235437833046868627786684264335203886669505338188396490507908623673013640365014532304057398369775733605276088377431865261651169241, 10269804423150618177332867679455993662003217218023925799205786445196299619192777710708243769258026829816723687745437472902526505986359190339006964718783047226333799424110713046082084012770138109607465267050827986493856969759007117555456236972111539131204420954764050409146115814044212088555229270943642954821, 107245725893038002292273394388363747128631126588540994403846495935494721963256075044629604688603482579368975991740438133672814871972986778819699366103081207271047250687224415794026833919658051357402976540276734369987732537932311220154830549122367454684787000855736800056049888038344763346300170309896871184708, 40153569103224809444867109086050707168864931842203294142238899437533879344716289937537827403639726325970341729508309666773990190281160645482939326774366017634151534585957274726100030937915830657549239864565922196517194113448058266217520151004902307711585726894484361203402017384506130543970004394327116023486, 80901481594399133809523128560245592261871000471306513505692157182895054538765800841706193507653982273285628705677461380393777111610575686964463009477391837944080573785948907753285773027180295306460117346153592876817279625638819683953812271471502071432049676227587975758046060094652101101552761500981961855874, 99923286728334833109339576210095097237265382397723752964618980608268015645306625856158816369114868495624070554092572767460814655710686475707716391106146417500393832051357297116846703054148231640756831191888389365805825726732032021042975915954851770294119325586609676743021518797571843626589589428935547740725, 15458256791179761610253803243417888529600465485441357369476829504323679850768407919996847664204918643608902727405441052907501552624793296623771182114358165930800539855173668523688258624127663793552220819184619191605952594038172657927019013262676892198545145493227820274590296909793329596375296100917079476644, 83857076666945192590720212651565181456143978726795194350317009660352860057707995797535662234894137708508599430574490386912495761898415508142995856527104791331872652991699124885065676334666954353683510999943041766692688720706998891396468786753548599061744141352641555990822859812607031976551016683812569025437, 22284127193914965118722094753121730802827894922728520215522223468661676291073965870696066027427590214372886889206424411267229604766563341600536953378787289600083726725893248462157005362812440825484128618497906320762899154350532976421442640930173139392149299091796812125525344982719274974803085160431066279257, 15563808168291043155397888992901287507376923141572376737755339048041217163480770269470441412659830939077261391887977086626077804033009194618787799704492523714731803018001297949180854224059705225507141964618115682996565075089867879581364295572910077930707520296336028600670022134591606637410508230570365111487, 86087359461061398605804306898870765005638840179996496119277071770818749709208183983644451446906319704286174954222277943458179555063037349824974011024993482574383352245820277221718790900967360462808278000065361086282441768283765710944331549977164600691502037309320581281838344771357207405177743918027747901744, 25583238215248836510125304238028884256695350859145867527864937265317814634664775215930176870402407366697815416922497887506058952419720080540570019813710670640454437460991945539680393559608281841399872778567693198219919975626994792231756196092533554923841057927413823284017669384819176621568934839704609214582, 40212486638630970589499319821967804279727805858128884111102347878916505154101054052607237652608388182497247984784418420372148026583249612363114312121666716116436683701797400009714903956392503564202952981040414015144459295466365487941133820466832903945036313146805105253010810045928238158644586378592165496110, 90410734339168594895975944085835876302499149652131045323448827467492386942892522495043008435978788119589101003293262077235111335739057203507977689016241466869408117333637426444371579448838923586164242486693514273411795842283068841704181840300961165429204119502648669195132366284612486959437310136625296221445, 106646280291254588373785119038404714413168811294362612118827876327453184966427850329946441683892816012007792842910994019806716517037208755421916829446166663410441645103615736769497552499702610714755799703468086661927534896981167638466533931551788994213271873109742917721909564461954981880131613855132610214176, 44665255002180245560445977171389597256944222327069150435133883832480244848517077644494792639569236144938009774159053640978204656995093287963972378238979288377181089753841468259320082536700450987429708640718551416913157444509510344375277024100851015733535869116472998292529142352453393943602885653676791092670, 65111344117396741844644919280878712372101107639181169338005937729233488580823539442089436290750810406414997900188857207594605705623165908641345002268879650274362029867142456837915531884733465164353799675828453857539666240882213312318694011509695158561291897156265698236429796423528036114850585538953990515650, 332763133004178508648685428061201111138725251190304138618453227582639287237132724788584268392539059930878001624828705225499912549883254870291312375346443562195080201486812092606976655516983386513720173390289737029916946148356214447604305340752396304693810282477475284074273214930712232839624737214579156497, 123588511567528583147959132341089859875435133866796696921345066521312159355179184711548838890349716437465157699645720392742326837724748189246273730742556530023924030848740865028184122362194519540532596138106154734048405194731432029195627231102512007929919036644258597225287661578176111087723894291659853534930, 68625021675629275791765005745052612015235058831430176693486943388009668627312249828335737535125594866981518424017642011699467724783887700095540280334758272205495386965007139212119967484209053825175853746623792651960085058087378208106722468411106008140601300892571774111004450593254830235392624482917372397455, 3084589606495954591932957527764797341704970749117453957744732695801089527983674680689572634569846974906366651192921370512241679599816691906049904455298929086387016052604033575458217251755304727212909396301428256195297747779614511886966042661021464172605195624765371889433757857143799486996240369875905820514, 69815973251876725542252838167311718712988896981340325264883200479954275837919193460457641959438608983200747133544944578151578862868653767099926586846836776239606760635146506964681318909426524129675118171110541923111198459099119377872650252154961270362809712929388915927165159902893275967044183007274350830938, 34968764685805427267631620575148406130654601772585771552953047582035450530033714330514253048783972768238854124037566416396803787400789469688008602455799064221115363118166980982668027726249766857958855045174559145433458831132027301745250401273251131271878910372521760373893109508357181701419286039017493901409, 72999615961235869535949999262688683532443336556372122322184344522791950224324482475635926576859886606728514411875271862969534226254782253630163511594826309930834586264791425121182663154920191806408829571787328321490798343780141503198097784327976112648952150091519125713849609422391924846597918276768115002244, 23574506055053037254106989365493846723720561290322372887521779680919291481656151290060855848130876841627766730221900349102565731378577430528650976684127640525657787948093085620269130499687596254709866890059293671807431415770564955432875028333347488738185783070110279167555460321896655318633408782145962248963, 34240540566886016469040548825339521697594084874760565851005444962792258823279004604451048230145456841073907837631514107218220163410193492722819770100055794841548304820442362099040198439926171079457720193560161084955759459112667825839617691050475207204612470383672454692725254930345967402052390837776755243573, 109955457768019168860881800542879345571896893202373458274196038184242287916144079233596352983700016037382367029265513931374841502384827843411268031897914552144956881421760430248355422712067405783590931378285025321817538184951149784544006681644457710430967495624506353229961724833796882197333274010740549734779, 89370707317067262658541689664391767576989410901087872242146644584594965300325643654612930469104899212615129172765489867376579158281170959566828580884925927313633893973470329486305021070128814916109240194733783369568008777408868978020345533950687377680830055678092343159022737022866960694084026845723377185295, 91294921778378983055778558487402548913432162432886435918254736312078508385496217245787136386358055626678358821505894790610423273184283781331120497098482193280538173990981546577615018710016186117059194567034269940495843355588222593357003699837546065745322434056546072046104823039836506042326496139776143233092, 106836745169960609742028910619250086600108143464084823678857988276990292235244154180199006479082297941940584509571617584335849380525298503001389426220864321894894207148925429453268372914248971531378163252320096751611591829846302977429407203393886305547497273201079099607784340936048422428385795068135075682289, 75557290972833850108940451270435284982562151008763590854234592240793355395587668141944170244016675256303384707554878866217906161252432522962111202427699055164392965706233048053992344165190912368748928571679071526869528612856761319164506357211026125691054859453374157209877871131266527387600666930420760696263, 57152334560583923281572094464330671780477189728332508387749497170600432305666374338628263833656161031480988512313959048938651217052877703456736040110736887819577941470427781944906459491710186954488560489329617975704966445662843322179543896533005894037994607108726215943080646533792163043587996706639902504073, 31100776184352823419150640382868678026429063099239666058663527514178393781222921546276065009539197711556780589383906582325868811446907190008805272815595358925550570139983815699274920078010258193269532271066486472379941280111794153995622150204432531143047740440462953095820485791319396119722387876105762238669, 53746283084295070807021348434765248489666061276622601240022317583008128566326348806612143149777664575100739684309626207647316835161429844779780604806095138864237294153304656031753657861917819778130907057420547448876845705524073828412208131725426084107559444234388180621322329448421833440564818570976862954892, 11082614986744836564792582927087927073033901506399825285761719876971367060367255984400920969238329132204749072817569876835149567741663405161171168387865313559899995196324736134739323040476263380273698130941653818257994193917115332822537631574547992385705832742225480174036057387825204029205339166121833732551, 104914635042390666508722234728871583839180882274758319461430251525817066318535335238592776769504181193754217065293291969916484299423053292972701315405261002628595356696072825161153035539695084200318568500117226049657024904014837316931675471666557371913373763384640531766481586773005767120260947835393011161308, 129344865572275541446888979020413123354360718150506150990832941129107613596719090406941089038467992075293572759295531266319272990302731753775955489566732438163596822055668749441264730768174274273510386288909413557564601791277585383229618121617065177337975632123867633867276480272394165454791459616196583649447, 40061816951235511421848673162071540141606125402418890664769898657687734129416716756661583188230438778015147837983673812219457286583755266216365179265702040805774959546183985188375528655484319106554372669595633542695898074134112464790399958156047547067514128783779942968623073898286938226545919595828448981080, 28510612543640620055344895860848054089743101581972119847462788074122870975274570816787438874302391307121660155728584202525172343609437880672968562946342761070425914618532060166162831427321703794436079442351361847256177638420134686677725510258330544287970877371329329590196330392090821253628715390193338626949, 32820317662471400219083159728803464045108805530548665637153415232727315218214043247399223767462567582357133300608505726758746881259429425411456880539828202162629763258280347550358989380161205989165027040023848753500655529005823969887004756842876794733288931292975130185777950915749478322594961026348349494741, 97480095398053779994591764459470134923254406571585072307217782010671872009497567329308567047792210334256974705068754682339836572784186506347601609881522161854443945290360042763147304219193447798530510342996301883522722152606665247809781045507761284817619540805100956276574553350109545922781523551076911701510, 25086828421849346006589969166105594620444131691499899963411158248416158331097415981908747695313490658824063027711024926032026661975583744615086726642077890651565707090663556704559114781712386966449866584427851108265475776481686352299607324342407584747809738491452960068714872789048598794977418245136424438723, 113805563839810842764139932530947191646955773854785937210205644858008718228464020604148174279415134982403956591497581137176799824231627150249092412278276582747112599072879564746569693786857104010673958121813884306158915945759665542286645645440621684650604502010207602168096395069777718176289523816157427195596, 47822144826243029940532410141984820132814125352711552445025237812164707327368840020303736528347163451698252150306027305880309230451028612816014335649500823683103430698352557762929540442109054615049156624911347934269304474038464939441086906267661637839409592914895781954577303771111748881238624921371663092470, 92752558241610127329047102638126404634113697320576765905515111895011644721791943448416244137878642658575301733282918066186370217176968552762105258370419066390646210019593593577910667647123835175193907904754158068204620738108316061961837240264983258768614922920854351590565724854116532535100363027792864388507, 100650197656170801222157356253737464613450224247811408407316622782395995839048372736446017433166483670978002887242716200888938627931698709392459587645650970840338769041503969196536044586826462493979300549834816975187648752997478306460214849970687865734656215981929557788463851438973240821645757675437357729479, 75181183171036321630594238635268551435213970012999236086273994862415577984026384257732614632537428079318187170373537319454847512748880490709547465945258425373167094790893812610777295332260065943686594981682516513372808288296873129860058099475048114495579251767345811236967737407786483967000563957711999918161, 114318493453985667519037994394399047612936518144710677686021500050248728640662951689283733524853266598150431576797101062157971195657146014381416805849184573710541111963339227133324506373905253780808910839567933940211727456314805549914281569920176184809957054799478719210957532606870263625527422613007616347434, 16579790695116784469837156953124120162642958766503483494910148214271716610548420503028740911929134176219631489962500578476079687376627934361891253154037204418821317002545072888464216579430974099289634293179977760264529082414794643060817025116750438670561696513507285593895614461072060525885861085354081680322, 69660290393183581803985136148404493001651960327418752493896327138922647449449475957535575539880447856528206913371093172311464696905812387611726329910691405513446658256298785774207050087860122609690998081069905589759380223894674254787614049898341599023494462220976884316818614962016206808181752989509855152291, 126193402659107334352456630507788595303644571887299788303624758231167751952228057925792396605113147881881709328346695855158835646920225689240658301279857509972420782549720066154292558737930203756508714382428791445505593480634479454242934165291119339142142559933003553128532428156336286263037212100037483258846, 70457746260346622736344048385467515772582725588939617619384930491655279794873532850351576273057997968988939085815539214307058563182240677659012345955176595510873558598070344026875074617857782799252654143854257582094320379545457421237964338953362249948380107075746399364260486203480304655495806449058524982275, 121684818357386754454424557415568093710228969413360660376967592921538363996026106772284159912377271282679183885724245957878922065527593081946843944625023430191929704487239444685490380631039403356478435795668911333025542126992856964479642124362150510826951970139193897671840142786466222110910632072797536195037, 111877682042582153183913881322902684166635358059509435313841574389460308139426012567748958059617967780314717864140303922818639290397352533058865429467613081776764845729942787834345307584958740532643760261767065003097687664439399691918758922354608224567858512062032653969518524407465823189592253039882273112874, 58929496357972999575963802180909086499246632501971322263306878973586654562470085278046000626473680343080074066847023169596193042528895894994395966509991164201443815801889001859506254047065228780629773462811125385962141505677340257516994273783405243869806361710000709518615983057441855093967285343598152397566, 70347555971179775705985958787569756143711275485392588271976154803346048462085524653713847753746549305068627799435780910397949018127151590018752185283879522538215922692032703145811678971259310828065247477737001026712835926575976664657574128573208307192652563724604961322105950875625950553584706018190653935243, 44506377470770921746715204455348707718870750366661950780469899679420354920774202321704326525866422984794871690666464877796211568641222339623613106747685804950056884049472325166545880901749546189178152250924823977798099693058747424962995431191790388359870183676631857238588167484130147561158083662788258914757, 77783841234904366954700949002778461806546656713220755352371365032484735046671908066200829640885496745556053721342018782348108451170346392890427775364961524536348156194776383751003970504440408595079322793820309907890578960459234709392832876873186122092489684265921745188602127002503507224923991127685618441953, 69271347306670373494173308137459881014144531194663184241263077870675686178199838217450545299207246391314637845781167624438984214951808718730090510713742083191783250507204476200928241106692577819406823190864490764866980345205386788787506580147052049017078062862547518559188699831856015099082596031042554044748, 75422301094669140370622811755340165115398753857165018940938013069074418350534776831139539347156831877023011740346244996899147594876400310966344091007283579235030463043502406418413336272104250901849193988859392066305028055392180211761867923164907945319964535267778435671017539524881518133345914322871579329633, 40063549480424974240178342440544015474205605959633772680634412152504373631354459146706013282364121164377547911567799733122681976446091195582642812250125488575935007698225336227098297229462592392543436603832165550598724490539072803684855925681849302150462449228964908147592988888164019256970660255600318748073, 105973878891059556865473823637199774558352660698488788233778290263479087240489868950681194721958568121749658012116642153005621382387529183123312447305054805382794282273697107885922299426418504724340412715957567283469870709228358113937545716536818620743859084106998580600955215921122989803457761949794371543213, 16103134547734319666201708524616674300481080832012729151545633899548826473135535356925888780789539958714287660859205219725952478969048817535007023455733082905262487812148753469906423348801709022882218894118087239171562208407584207990078068835080691830366027187228838104647723948664400449921582315611019485774, 23978816868733408483279331455259869905136718638520517570061328756995611714065660954886806948332061006351326561973125854289050520562482380950938429915415660129592213808742179783973524328834814490217504980161703912814060276977024358459042298836643662333723546308597258690813442278260378831581249418321923703607, 72358390156577761217109402158293502620913877078261319369610839009606207481817598449003249767201769360432511613278406696930394450756026134414808598139552303888353365162042646101377440218323423091431030841163593522115756992601450180942698880821981882947252942597994913300858404228100409844084718894946407792488, 54739639313612051022443586818126892390465954178637122040456347149564995042661835077835945661692838376266909455693149062554307160159067241150217179218155259643587513991635230782452688044481788497260802218690658352663487558632982762568838543250835105037938204813059026199463829898483160067825918253501224414988, 4144991939929562271094359416639003880321573502260760788630069838730083062340307705219917947839135627576927843838455900164774417545032005346083097763095186517747431460527091816885617644065906342400849972117884831882046656477791721356990746740684686945494041052897552565789583986343996279982361859681025643026, 121279925439531873823079093245678582862067054286197038416458516338817070389437764373019041914205319423124111096346794948962264942436659721249467599271993092892714500349304637501078694424842232023445738086008136147375515934141163232449753955877586772110006176119986551644498472132147356240094580861274452524351, 56373564259182630233095309438761684622630765534767386105754846754194857447990206072817438469677919175406447960239757030919398307048346275235046829861626092762643461006125710048476972068577323711069955397354042562750391026971826593357126526745100944423901673540875452633004993212898649146978645508063856223056, 80470637142534692586965890999384028358240701117917217742921517447507640748723450269181484235997345436605658672990064348003033078164268980861009993624037042168556385378545380936334158824595024285127197121205194225470097414677538232690343526375338743999589765662612030605256703317566085715791208022360619228380, 68785917624483927722599391110450734544031802283724937692472792538875239689244126001996874104876427178816631801674282390843237611824582309262187281904680609846065335856808451092003417945676966908005963593742789750160374911866503705482730357060585956597227670637764314175582043568976993034528967988164755793901, 52745489055593210018629890659411641257072134456124207815496110295820054316013628259319583307406298996217670702240593842561356884840126904127577043668328097046544501916184761263655311715342026156618699886975730758750195378326595699407058110175215915024427275749389965621122646733280879712600834240313134239269, 4829641367833586059878898412988881532140175117551233410898326151489738354410886626431007998797384457223105954082088757993780444715372039937499197705073496171435599330246204247424716422082025180592312516227495091434752435445721542565179476842109883295788096415221184632624055297490316048687345033366920687670, 23667906766363723828890607879904899761919225333320133166499124932491045681336944174463573045216284491781008987949715692227452142332147291560773388602472093617919148238940826342486035951695612568109889904665090302492827327317850207341594528069671431856600967818363989385760209531417335844759576674670979737249, 32818330483117574229950423997422178877955627956718811095729794174317649383711983110360964694649746736950950516306324319237969227053574391526486097426069259108331754045033416203384542937387498462154670547571451496466209527990180232674997844797840780475472698861390919658193832430074710408036745546880642673979, 14575462177123321213989832757387763704775692402418414021273065384699452243986316952663361178626611721989021816947311551565947576443484776406986065973844830168820434673717113489618631529412412283277326429516769385529440830212173881590746969852449812686222459057857154984305004114565055040397042504028332169595, 98110579659739707730324235285413449032314606707529801332330468602374230419936818873496627101861633943083958129684793548178411575621986313312713423546949241196887376578915011178715405533393668554411127543290565735512277893853969047439175692236250503256563866572374961847339583692724916866721598262577593374060, 119880746310035615531576767734167039308424760145427475481257597292599368005947413202252457212763011033905923717858069155500505243813336469932793323155683972535837327675808035881925333941028691382964098836117481793087398074865269179142850232447927503132530623386647935830417255440763157417858695074809860914749, 65569162463867580225773297215039899718753461467132394072830188336380070941992453673443573894072423968252675309758201445749721619776764139836572383062131906662738999162248355983485770618056243703500033987053923339522594690753758037035237595759639583982329622415444689830035305601982404737307477540172241196016, 124876332392174439129504502457355922350237738148767564917057098306713487987035572635364330345586015473594831661682029281691790165984128420379250569889949799396667641636829124665544404667743459406124041838965296534164933658504647840292896797182935194177010310890894369778473550537538487838180233364075603415225, 75388492787515892761762432892153317336854599087448993692764223193436882107595596519673750159505382838817028467840849995958567884724509180472274841169357094344464387396968057354659898312044044900828258430268565341060501786915743742133652792154701806391418730277659931841799555838918474773757741013424618947859, 103096704727526468044757756397997460168717246448996254544805647841273339539048025107397757132178073893335698789429140096901606437868301487638345359488800541124435425783166458954737260010593449631798994330609423710727655233404588674136240505860642240404349745424956476046502918221318587013411717631846061161143, 85712647585193126251318931845545474007196353644997572779158507212104109958455658624841439328988721745574211205086270448604656108238603942073294031670615605872847458601110528820674672296195883973394780162257631093804274106160044793193655102155905329545110925616007601642495644693424007718813250942996029752481, 41806583912013572072575294200909899544161243281722657121063660313310787146393755550235021537622059121187079982007747887481057920590179862975172770376609308552143695714498381156884885141163029095548874730582405887692631646070743554341624441578749538974967272738627803160648254156413061191479726330667685693795, 36341694388709945046923326207119699102364442769581768480362620685348423045502112734911857145730630781816980596714845609185415555525252682859784455740795249644122661774829402049426152557178521250239306695522836422618627625934723625024753809650525291740925641789021732328145672431447021624478005882502038403253, 63798787350916832121906730651392358450843349101350584802829875552001225457277584531208477712670574568875114022709109031901482339724493388723180039355075400744707583992557180107191764844596767198130357016293924035703922261138105443965950246884187859575520972558574156595907123672371387802282455372945761858194, 83665712854284340553397254836703313170052635648624064484016004169499519190647986653661837907876299704536378736737462606030960287724692427435152226462819986366995502553470210013029101333681913569459553381850648775496838190568795210077665668816947229352089698717466780662474328761387714463190088297220795309096, 58724040588555526883133263645955960811054186898388003950496820599369977262813102107878121585425106829826802734322259177296979970651170324827168609687851157184108479459616627449292685227195224145917201221803579789056570076768342947325676202482925283100491665620016716655861790806541087652020146026585815929585, 105119576876394713135509261694548446971277193684573511063707697727862139317214887904877625508307866258654668848717084745211428627766936692409758550230307503323957119244462961260005286545766170892893159301364524142072284632061022178188025502174358361847059625710324682112314216772374919444067040202569915797752, 82618897042112491821736300330561748251072976449635753625233613616774114239345562788666542552557172906215280056664570821966879213802356510709359765868506251059433090814259467774315914057709358464400446022990377086828969711390206735517286947207245828983674924804358484455229441500230007546704542354740224875052, 126814447341137805388199399245723824149130739635307663422157957377197000627080860225115586569930251937370680423429680520983736887981868763291466403972461439387586761646134975155305409636403651327206123238398603293501029032864148969588384061909383672227551051321550179457659242096311957706474944251270964337260, 112769458005724141841621337537434463294322380780762954629318785577103887985668529944854241558650887029311543693724143743400088071696307097861886973103908095963082612902778313508082293567193525045789889136168163865561675282152994076738289925391972417580626555851862204784792984809367341486640022284469778925031, 51168034479673988889457251291593776160215174689246245240912248132866292673806893702206271338671818273940256168942465344840108022291958409802224014133886858190441070553682523159921055177806443588341300574134685359089837093851981860621948558401972296835185553038565252168583163410026529113049964940228476006727, 46439651074771717067128317196419277889614243996845695406873333581407286091643521628216876927073454142233656880600081942474759987592951564290104155830752424519036070292613289067855393485399091139585166750091987608793338153676039962101058351152410801434578227083396298534687988837503241251811060362843977838753, 77780514913520172650345596571904439214294523349762462897289354397694599091372607358857398938766292526845357026841354408343433443280925293802888387190539814943016033000432011914731199287634704058223384827584610122822041466125401588138387291053579525679474778580633038581832823666661294450054478104109655595530, 2904312001514335151463140837378831643583680457196878921745361423209717106110564188004762432046118574260206145273451467097478581558201247056281036956363277758670559883301029166709973428316004999289946796424251650906635082459355456355072290128563375488504154106553111972237267435960587465298015802828888203032, 18581806752649743406268227485661337630405468236870001390058540318376235688532332169048114815358066598209362775275955490340881066941698523294747338461406991818112894129914645409926671300347361649975530426702865347403050428135828042742293521126414758541752895748956341034767120466755666904301553026857922413483, 8964185910257716439842686176319802843915587065050329331263537063413750431382427707509274919705383281151196724587623141567052235340591634446949003628811581570132238083944217392931450140810493664215643088078606053196108743683355622859249821105675671485668331361536456535949579676947178448796519479105966954445, 70313846964265513808554640334816334293161504116825374697436066539224830210602922723368998870094749776566677058489064012156793347809730658182705031586859049780188945833792830140636008694568595742193513429818853906952328214772352178379977561167007859818368045952516266412258870318319926578387718793243404641131, 109224929551386661144321641826244282388625780944519703630462137931470999412729990903691642496116949974255358661220724160916488748171650831345883304460036358248653604804182709066912788292322068353160171312096683683398297954030532421971433549577159353868429389575448769815843484634303613245090161991190572241759, 89161341088978846053363883737297960610869131123516178911064319184787852603590756962657726661245139719392853308802610551998788876589665734290585690791944082636776716203162085538271165697439997945213642733670164867193946396670518072692785448098510328058367593057255551736865800812743502428005274540584583774208, 29919702310473134895354893292234001762152789828820525048224261557056612242567749000712773131553321321617664850095928724216384686336423879490754184641890159670104894239143770060843889550624409209552455343496176384795814564180910051394725788480950351091282110148561107908749754945643456722695960720543901280048, 6697998552990242966784087950945118673423606194397183425558002339581719306731829413668644683652648958632629660512043726793657948623237937369074698660396831772392287739363694758752914922710641300265248121108393109731975041892920776016106751861462508512818290575810750771683745854309414291201961003732424742542, 46869432186688238793869886017461499062354301560593080987499173023187473328069709875421237078007134467340981366052046369077510230008892557107884422250650668422936437433578611390460805270933144779045415351654167211012332281290457824182250730527328892583578135678520884774123250190447842767046900070033694020835, 49382223725289479792101202572780517987946481362329970547554004547765308128992506284186739148605874312008618494425209070091820899624026110875263333653744947644178804612423012755032733405778263030380305702977746859938487566962493365106912681408558403010605978342908862469148932281329300965599313925950632827998, 121394475982762118527213680438749011491890065862116136610345032952507948411886185414311033811078098729085657653403685242827762371665212997022549691552260344520262828063545160702678819350232254369606692383690731124418924806066033331715897546955409089277773315253596548555153336401315174424596733622048620270231, 89152043143900050154488150719215448026014937312634199984526657902504426337095809697444865231943110884052328650403877555629631836253512089471857010909454937404232312593557976905542328162268655655564979252206908668085867861268420924799514325682446114767541677431116197595479400371849907972035745107064018658507, 10416995784992940677894587182695410439812322544581259526418280636246042005890555909608185476275598186442500126381386518525261237485234611359622640298308434543151673793339991786799695185125714265778105170427617696819876767543936627756042576129857776230324089225861012127470012724236022802232862693396683322415, 32448588903516168997072830217007280011304994704050696836795778835033607771710735783044578580401747441504514611729061182246215826515858379947690702848030842757518640301454804089373407592566990147418760270313468418589097579591872458623679640505717926700371246041779196948554247544263806888633268176305929680952, 14172768974738704741495085761548371985572444421651963964488198347875499056711470999158316596786431725665610160765336495724479722543727803721370282727871183108732257256015209507444901033398563169627639489163049969953584646042864524706354502156595160820693447935585362694205201230716146808283469158592838556028, 65061815163934915030220694590265500822616438807705205991963593497057982342946103194446992364137832097277323125929333210456318736592114770476694194944465744004208593937145604553585159907362694376386552604924427814830122048225970855186622700431779011522023266882499756596560387374523606932294937050073751093218, 39808481335333365545478359260895400921665402970053038443350111792647842200349750667824523332235389109704762147895111065321335278514905746741995788991267202517935728365760355730724826176203721007737252657785119892050664504435464839750119740692655667748095892987554153479297059869405771106920184415931452784241, 80721306411064576637047387787939526243707265405721463205147539339579964003244091740134117317418213162472918967996909490899311636399898085479930241341966215371041212154878207808378299170656160568060794953136924773156066465245501386325052530260162769811021685987986524863350567364966861307747925617088679073884, 43664862619865778460824058465975562583456731025836121187982552892561676325970307312052187260254426466449032979825877190864702419619016711236577675899451112352291889740073595954364557534805360260145131025403134748487235186159993983967346277224078744987442321520243448423065306746224624274296361971187541932088, 109828706298749622059760537682025681993835827171191783866491070458498169866638711238396214768329516689517502757275129530060648459767027995553702613124639136250436824055475686416138757838119943991081531909418333290399649673410982744033770787139392722601204155018535242963439327493897779920105725797474761371969, 105842595683521623746796444903152428231782318265179166199135230239503165945099935583962799799048941693755580458514790087460101660262519926948868956324004056501931146582904657349127589230193740300571386425192467817444902043581225308335313501653418909876685741877748005001726505543190699329725964368773544162083, 24737674740614609887473476912710030816282371685191260479331131577067881137885078437029590992520265002672909494012971494392931936858999062323679153394514216999707343867411934711084363663109188945701020923351368692585186096006614878783761682044308179971076631291565492953339331224167465396512860423237805201901, 40619248928842253296592119377786991786827713096889218727910383724576164530019762180526882368578841841489942326398737291436365262318742546874475308765778475142556655771774426403187308321052877099098317901029945250904346687514170976096583078585700337372339852297175442816626670631247657150810229180543904562203, 9225231857510187586334562759111679215004420613219757205848078882971355376458070218503491627422178995683628293845722453465437701114975285218337278126657475113341674796528977384738358650119863665095643264724052327355684825351065505532914708575602622249280130214615332974654019747683071935818623374310827813265, 128377023256760369440858301140875975289401132845949490413915027040836833815516133590914517171346711969333126620195951198467030135414257273923641915558933890040999535121410759270309310347153137004863619251556770189137547475308766514024661461447055541444328914119353107033376870516639222441968625850582894865533, 22771261983388534885396450538445608626002338182087317619063807872525762989069876088543559068300174514278358508214487542482765434278244252158995037507288098723827639038162833569781564178715482576150392597731986568706331617639904863130770862900405331144864191610484709519797725255897101601351191056522458039428, 44914461089905213720738044140728422628746105508869520806859130895152367131015275703858052755963514255163090122985192885445300182516811564366253762854514901239092926461929712894489391195906871505412694174555105958381452286324161045215236935919353228897306888727961839910568919246030299227639913055092373674448, 94821751372793819636628380922377424346226912910388392787172245487607684850600493778692415631939583795043412770975238033990571283341441737479206761178855713642012878599377314758533902403214692681948466702592030350071304363689942699071404664317989831297882248946156668828104893404873189673459759455779962706090, 5780007915153782646354450236202439570984055993661997472979095960520037240887135511189719323858032630436030678511697519799156437410745773882285160422674410305672786701524461045650057428602868691153727120778156894042245097878402054058098575727961865007791259284448441354254115623894678656753948654864018131195, 122270830387210413186282873716118839567312228655927692262550722646260642946379100414933960853238320995930623707995966374739928775594918274659617786137096691095317243421288220334894284756091105489800042751358118817180284263732895352213208682164808109890111308946031846788965979531068953167711692533598022821730, 31006999942153795397591540756706894611118558420312276265934286256504155281774175567926248462142760141104506339698683701000588267446042849704491168203436053686893458311493019338344229677224681582019385200556189632699045511926461765634472975899374366000113418492505595108972846639806263036058846010354822229622, 37183037885069549002775585119481806243042995417142392132501506423159306060106231278039195925933580836679846044554596123593384558898938529451500480519483282860766078596576234834748931672372452488343191337294910106288518280359148368802705001756417434656860377222886484688396577127117907062307245430548541956643, 69580127860120053903784975731085636257749017082132047353745167365242420622005668245012457325089180087259923414737105114722556474672473444151455243698196534133215293122285364476773165766569291727207888749626175851446175983890713976699141303470651898302807395319234467423855562385584312964375716611381646240982, 71740872035457321743556962010582867161556234105160811556013067531981659025208799799804423602109292539141535698003988232186326988803455126601329393552441862459897276755900976490936885840666735871070549471527174068584107977477657162829258597914128585769981353052306846150600375283577251099002496444029780241531, 120815000686283248199032426015356216564156638346925022222248135263537574891382946947925288658659603537000550122580684103352171013139829402619722375177858513022109795135619975180975784419418246656194018730626451400046429838412189156614247905471939860295579969326399781149726716970063595026028502736951635524047, 17010407460343925117459428915004655832595073991400852405296757523430279138306289504112458462895565604277597349418807110916412147998363137434251112315260886442796007662293350170059531779948441691582081052202635395116328768052841393965546740185174140146448868715815174466120418552571799816252581558022006139333, 18062907002502688109869188112104021601775117002899207819621224714211540737889339023887550591224653971795773174806535825306445764374578218305482719482318329815948442882616387529333447733778247362921066013028712936815586115483577472257925913528287339384851470359791885253807095961351047501101846017819390078126, 70092678257698151021971279148371655908426204309036745817365467840467965907951756764798573170247575264688023305929518692282942227485061839748258013933480751131683831678802457435625328563215457709013650674710510093124052713826805488155824011471522834381339596491233068834646610424223653679823365862038580923028, 51325168469091098553250890709612314575969419114194731124440953833141239815496003040121617737271831640383356180127103470333193961683041299067540066921711439689810957857106414422552425080811663795526908785907991200548959150588423754647658851299765286894521755369039209071938632572981239121670359775550987014133, 103482122611379282189750784315872650830408816409132855458389533452798749676083746764680967372202956397136520488209422192163956273452987384160054638252098044864498780415787023446975157353954985717903213100665866342378024283031141116346019349604530688795010932104870284446105278261826093859557446863849609757262, 97158777700494742643691614125750198872739306908935242618233602456068503400444685008520723391484890610421148800761932020320932616766612794871750819373149899530128857939268716085262344790359846606891711924598234303926816880846600341493478645309018531821774614756508633198127720263161214474791502666938308631417, 97714448744008957067867123681880329564712345933037632829211246161903191146464300284253121684321635717495219942234852446166963187969099735371993226697510535818048451712622071261236930669985966302008037445509663744661505266375932729352234090356058650016674477880471906323128667624743450266978048659148646290307, 99169912743150031029987034816899192550195340991044981638994307388740219201837955053625910988746098834155187063037923000728793553155938745790582344024765678016776590722871421958837573452799570971066074262075576126330083775135033905878289487596551110766208900691956446359734335198753821200540738918554540129087, 22180871063568133060186452842194348085900887346301386269766145507640036774644423237372664547619112867084525074470454258344933612673526268465374197144680271014556332320507906268820316832379238179387140735702199992645759009300617207497840634020342951899862759798172304043284712134956315360194585374541912972843, 14613254236033391846632517982519687561885016497446461311033117314849751381612473837966170872745479942537062710923792609732214846461496797819166207392199892026780358915816384934446735953540406908923163057812249989298936009630637836115109864076132995205905944975567539452522485301357948622484717007660344672930, 22222949201389364996272467786857642591812885300760464437035713858984268408729677461094517732032018259466007720158185917513351851052637460650129589510734425395813601742107917260177113097472079963800801692707333898722367831985986586769902432573388033520715875573825930429406335326302336145532618628606516830240, 10466755663775588341886411584455734643263524452624591349835009909639975402448638680599624704043764260289651098670274452686578862434897259412944079728158653825856584373083726345872630780981442105997969913177379520950441884424411192358641726971676533566445432108514953870424314152685742070041420618701943047097, 79993937934775054432995147663370276765269680761450589837519172361238452746554783045547198494234702543707042760067227029486418405013428843870678703154819877437003329962228667947280051640317392934080146114503626388724530600419524226468856479685649004293783653811901407893304265316746247771002807998953052492089, 10041832313296329610601471038727422799818624446021878687634285635862251068358371886892022100075316488226782494082112094299514127446511686576431950328326895897539979398507683085542624414388524388395406708502409126351335487723114328038453907412784331685547345090572937267237726952023517923203049429406496337975, 108486730555445298128433550486923614971448373968048495509861005577315651745227314859554340604691242418291549185905939246236146824748768155774872618497029971447451332359204532858308175045334158530561976153174477884300693631301297147809158980743120903994120387875549120263963517141602891114039547294614245979459, 126448716258662659657354422471061292157665123908791774272957046562267655066510414408580411975429374997158347598273932412264388719899083341776669823135462522125096363317583885136058051821989247628666585470675017270533279767535625334773149219422324295010667889943618546569320197789352972946947343585476027885257, 54841346868735205886427817569570536795395382730934195484265957742475233439379364872201836167194874002411717541738931458526114767406629480785065535145392502462424754668191489288824720283399633870250851977954320446786658893121222283768167793880812960006534816439942505714369715546187903055145112682659722518893, 103732334914995042787520945135890208394101919525081160479732445993449959963815862551929608126826995346552563730208388818570791983702519099928250337163486191748156027078694143876002351653358975394161962699319459440912966004174599129067253642599372008303364993853942091910271493010714117957735564656128402702963, 38944825676083868570174737458613898520054294352672762435562958241841741281715324852138452140456838565852635156269641391711606596898318236799937521989587409310385109805582768352004866378355565941171397804457191121484636704740418085789147671334020412067877533345629587874919620390276781997329416291594847539548, 66840996433155841206950217578033659413702201303573836849537232245478666994684606473295726422523530116355848478845358500371271853285897522178965129068783507502410738827570319653962169665105523017302563246436837723746604760566812994471193655912480315854790131929229179101799989144428595939440687558299271740689, 47672263614993808101980830575018360950112598737453550981306628877801948421780596398228784369259611752018290474325213157884065687600472887254661806092029623765707264405983460777447915251747832752226807653799201540465770292748783548743445726553114076917215212760940946922654744935986993612552585674531716520455, 55996261766397390819090088397568064597098360002697394977876120907804199768746337788322540954827604807738862220730644431253477971094956750412743566900932790538553310227970283929466988172029895179796782712028890670562408812277056195654157543431498398276325712491154793205736059379930697292916827543380881851542, 46963543760423634470549324890300050578273649257556202899985904977705560175368159015953698919955776507623533830988141534797703029826780676550723799876933416559156329752311079700477602379589564204303368277525905780570538383049933582220746373134270673022092476806409644292100043925697047601488614300932847588460, 89643400486169030829113670880183206457924211757449781859327006526995923681196293724846714395811473111955796672870927889734466547248125624091553201452021805021391248114248542372949695716021519972773633673495827953163259499966052114532525603515879894964322431853396631902510541094506157367940887822840935707590, 100544155043147018930993379374193582702010059963090695697781220912872986630869513082363445654263481261120018739441630809181124988136783754950082896264678706904511671198977567204814979970282212447578442147459785185761010673252929476915529286258521624592995345536003430211127164060146971550976547757554263200801, 50729451489604517533251241533122725148042007677068132227095080279804799624217242118009691004768249687926458821989801022059698513225511019514714047183022122197412709851216655892311289001683237649077722856347808824726514141554948469078582165995196099059203632672023810422892369115994286382123062028270732171803, 78457815214490048714911835125611714259903759905800425998176016138653455699611576446858395961274147309117145440206669105273591221339753872744948942595403643040198732035350770555419832998074153160691326927260592755778210641121120577029274673069490773744876366413841600153508196546943375545715637074471596940347, 119762514788280378723247448024074563356516139025887487251010260136381777717007457433416427274895183139936750985713376742438467202784915810640119503726340392501587880522654749059385808323309220919999227995193887382099814545516827486362105386161648488170446235296350164599803556777074567519773322713525618506428, 23407350724026332610527547823428382050441195854858582577937233576001818764220252504069981146520850632306031988575627093055084312532337201399675624553232133881025554338321000010825326406355219961487218358065642124864697230390195948391313415825636126158881375908963450104335482946676835976519644907926171588502, 11654902878083984957325703684176074145769972812520572220603705484887488246666303543988682097681189048749803852900261040555792688447098864668458032589410905729372580132724171436191194591215494042960023953790291609562792427277680229798486169670285056019594394090677003013920790363540215029351174262066377244630, 87371775722730545128753300179246784926083890126001564474112102268833230913532068370141141462323513368273325459898198865366500650521549234044661454556803848439134809414907780050555788771321478342563833161759354665909166838941852640163811130697052399677523461878030282235265350681262805806262317137895870014225, 103731474789984217864073939859800687688073612211871629508442864828199246726093012818870904806059804391253951719776750946119394186622701246028187469182214015733533610289830783949047098501266422772070247602910604704956729488689352484619936857614375868772749591367467071776778461191710598937430544177631538022560, 41179323752303690186374158017250197597656809675606206057644344375016759766975406382116816177264253784002011237771030233406480588667838228055407033372968173958638068172996735657403341922808376973312987040759674648318487849566700546419738041345509665119640042353177183938954150067967279682509605820253602843281, 86561291231382667244576895073607987111427832065248788390366629710353120695493739490155535332765164663490883084358659698682397995899861639338730667391683834577461980113259716443090133084113484613368198722036371283353428916713866086876665205606242014079411513855530362902486079289719312849147710225433880787337, 48475466205898664846564303359586066058819511420906102998077276329079800162418690542387027357156239947337622583587697113298448570116351014798523740726237859005223002554378724508261410019651106150105292249056020488820493264842822440637706002854544715048244008447643566078332795488832666064708287582679292383449, 32363405466799371682659405949187203338692873516497763657542530478142175136541667214252915724182923892772191207047597622044040350711992932785993677262383902562373651157662296292191937833696015290175155639177882513393173488673913093538749055365735263593146350845724054742667108448661301873157063278496349136492, 109591156710355505347705652156651831988209098988503983625286054505200069164318080269941211786976016801969490021317170912591626571270642677901894258092120060378590683255347317745597610887510526055498068938538108619548864263167478744060135602661482038954678359431163670031599914902354696006490650090635857034598, 71237693553458363615725743965152982949974716662422527499424931855876263842788851367191902420746074707017923827745661979755861450850458817656709478115323679313392433425740700315990918982652339028792112795349381188683277647494522691163612346382496975109278669445918786930325789734277695652434376792257809512495, 112971738494784818471225550748273547792379015679325096549577892720058072680054260553326791114134820984357141363004834855554623670181076000070757883684319957225200860380825349371528755044513460878320267233290204399014219496774356013295208022703748283949518158791857605518767079814708127544574813076000926415165, 40815009789127939498653350432892335416812516073840243031678984433365051488198071976927932127220635844982921921612680164066221893161280347502694704657466061725954906081677398902342023201204241110902124468640947577489680018203044674672688619863294426602853452545279246455147567270141144443240851717877357485454, 115126447826635181718413657926147839426525559935744598441497948117516527121093702027238424453456773135569607523976375708625945587044387629209226442333538556186188575436563273838846614402379380082233782190430298957562360332490818316409037899883577384048413419508138540243902642634440586634411859662896398319599, 120868864456746863866673950176186663305831025515938487876720645584758856710243178262253750493057918881627057692005575776255867428936147984485776332206386750239181872628494783917480220176427104661884930580007325483212266540305176943408291130883609450725194720575141217539656287331054053260867286980443865162728, 5868066085691813095313475371738340258854514070739262887509492262089987785878494677354956385381121455077511885080741460720707741570417197721563205246825360538105137669449475710148212565734314719493987247767620053617684925767040714557481592923679567987705013279733196839272836416090188027256904503752014290244, 74249230270084738234727130992517435559098205597954331964206067697022057169218299520393297293077440753199513962004022238891181161963316928525701622603690059028800368552685557006728244691139001912218651893110187430120727238194560322029975011872970820380190920228158162218254864043796900749057481494476866604463, 32799535882519680886507556591759243408061270947032103856101792841198283806027631313665313130771228477169977124776469204700312183353013185106624915175376070605960251991125685378766931176935477564323104382984037610904253066177423934203772398823987802336959784121123538519546160962526142064387894460121283275242, 112479722191784803716967662110645999820280830645551798876026959694418542741713232800593161525326195362394887573437996081211442164276258177204046643153760356435187128207149115264040299549767899060471410217546544522196551186002915741109839989050742980198151007628845046477239471720119877957845124269435495259182, 46293941294682147875425443727977219270392340222807068559242814321053853753797434267674440073041455839067683940969663422229641552354264357007279862846967297737092168116806085778154036664562120194193758850188629726101247041401314540151444878987221802470780406202529005121148485581373430119405042296353346376680, 122898342286244884105479414816286476035432925694808212798107047337154343459671463131116363333427945806339212742145369627863863068513879956437352451649458522325509028650580005805625924008256626941824412959776206142049565470350456798775584582871402308133133784963873692112340089706199072769189607124740589166161, 56031949169099875002817558373954010660748477741678515290726899170081898306971701127442010489240698950550387606325586605854721036213800945494411259725312337978011793823378668442215764789133848692216493074217962080076477968002503259631043750968487415935156131279002729504623560374507257087332180350366747269816, 16179028458476136756023326932619067210190146061539373926508875199274727169024301748998203724794441969993920742889711061079165865147484358972926978119413099129294539050447421139787311938143785176228343612564247463842546984032958016745741256808298938106732103562771326990977687600287048905949856630879958677113, 38543274327553397008462423986271877928517292863276118020573161677989095279986165288882818074984935633434864395014711551559598624572466442072197893520111964909579263932113483657453820394377766543658919284413780748119919739558509092519059537084571454241500943657378946479521879304577375731045184458119892448336, 194819956760666309386999975203874668109199390153907442683169122207119966510228979881525224743887240066382157416928531212740982730832462154721488947044882155342535407839174120046815911303417517436959615329729504037537916754822163437627818485512197276549885811435999617179317258358288455637559408551299557250, 96828693366189787187013059401928461999559276740869514446073559350459422890706118658082094012867690524025393801765294743853818618303526953131512206720902130507722477252102377826662137448718831951937031339370292275196503228422626875340830817978966223289007141522301541057035251241499217582906796148561606324446, 78563652796217002925509270349938224282306456202935595262305494818996173727887390414979501412681666441919281212060376899857989482230923407853163015141105258222634321490984344794164659942986274336590750502842629338060094872553082206849162307685650979700147049411670110109364400178533507120143726455685531041633, 74069706662842326662193887533538445115789541638223953864888226909777019018497182413513081184847490622410544532298485061360516730840652767317695636886227923960065968502299274878372642906626246106921469850773920056776286157270541308115906116020623893106556234293596037559353592429276340111337430485812849979473, 120943950032645735771664400975485401371773631735432295532588438607977406489644704934232132872863502862815278473214982083348628848319141104422064259508855823885285303575023325360306014154796240120634829208686327932978362947420083346059583484897239673057966502883101577902200662028056108317984343428412385641519, 61257556224355540663013909988703268183288670159522131840798257376392347654221723643143679147418462315604314525240597596428486313938400424598967536653629221279119360940712765144943134463125429861913709652330879590948749820543725782132623621852103984337075236863938447464510896249078530059723871593871831601084, 17538671465175956370176278371371857425553345988462413216716444020279988400503186149813462803743405475885897569924176478078583519264828715766402974909699238927201405095972464599537074041138944632929177807152179622365850677925049216071103435593289744199517273218363545153594439450310488766227693102425123406501, 119024833274558422013711562941402251581889522795334152239813917816536024232723267646292355346341989523827134310118883724932788330837523605461835995229027048943449978439653012022866221801065283587736678911435543680674017979126306041700025742360306412825254852922797382822418024528424296633914483424396878874024, 86329653720279059131061060406028897183473665282446108894746102805894202136377324144816805607852031893076300122781637019642636179778533092535730929965702276727568660293487466901800663174839683719423954905517010086195144671424622087512301495693916683253189864333586920595182087944161749637271412025913810197765, 26847897664327290272666463524613865642796215997175208481583143853255176967839387663424666022643127508770460531164940862399389658698115163679950651221973560531373665514104481717716583316796169976360130669429696258286743840860779123274740961019339046657308124448488878034768832538081909920337943018696405218969, 15776127370269702652924850281930338883047646712417722524672333695043163757229119103350099307794859324874326246621037197531197552967952931177347270019482032711144212841029970533838170975141328968619795123742490131121055847863582608854305349933342382428444455238865796502526634791415279739982254162038907925741, 82465481891116794941313074670975108622374114873542727893572850877653622305683457003206915934963337856469884222960281925769346817270653278011190351735674615727732532371733092370440003758690649789135102479731701378186401095535006037405162021467156135133255948039106436221553708472253602848589606504550694605678, 118076137063838269090177336257273614483013161795354323660372745060622648404840165375763965456051359345373381180872837778923107432847527822289778123491380755848215168391339890344352229041312053236458727521926887021839318215261693922819268849030352537025086960819870516023402598421784549576629658378015442799240, 73726416704339995858207913527983979137591480983643630655767675313162677692621631282122594716551271783472479754662561573893558511563005468410923907514989426007530211406501722104463324135158779524828888097314378227748117114448361841244384438150784594243192392834393592350155672277162730541251189869178462973342, 76775554870101016681046117666689472757424836396006154587185855962161082566480233587666261061413668630416222801526149178535527345714211178725571402702954723409172726161030946265626139818921087035605004138921403226490228657268453760809894403146365936345886667573320286850857027385349008436439192300151229638832, 35105200013033745064698144583376032748326959535850870706226290076417761080644620513540748759798869968720566639302361746559800548248870934996828154064847756666037955564350198474453628433320583544571826502833093620382564477658571823573826085709985201182878509689529393601382224111829545188311888304973403112317, 117305979732909615679961283974497229201792731701386498932249843807270219995331916140411048487774245898581996027126549043629917790199165880805639914031862525326716317454456540903992864253751858080005697252696290977222614318439893769598636140808753876726985134467863680138570429059853511433457200443572141978174, 61760670068468840498457336775733074114181033002435946427055907333958328650554127726502825399886270381617045254885548358678921866146285660857736263862924521048311682006579779521914796930590463830331643522139644393250279038641965515820180326284124333136930297812774506289281608418230697902216636558746451073094, 33826090534947450391006289487611253483625777900961143305547867131126078612152820391697942734968180577978865286982458215529334631784601089614644091813412395754447852044691153030042593843028580333977084236741452053439119075505257740937594267192523427030503476875302148297512098433808751509110421917124217726901, 43302109069901394813566807267862006418442942643020011320209781876379681238691261234737146448028043971847159173636292793651222392949261472047520728915125159265475320092326060656427057637310134753628696781570848228578952349014320788818112322315440103658271704463168762978750273070429315650202930816885964461056, 129471064876520150546455941856701138259726635566593972825982551382553016885426730441251266397562120833367016464980281759741579122631410940286947608231265535395035944305009014225188995273373704809599520655254603336157216608905868005482308148656931996408959260195923444822318776490332137853252833463419474179133, 7546982068189005977591634601706404795290941233354722518763625862654596155345912345729161660964232945387321999681571535314864059099145250960795364530889140353585200985598549709595896043827036321820471054360893244843089678507138381713637280178416626773935743828230338419293639954706047251726443958345296286253, 93106761455552709981784440761756127766845153743064912105820038407214619544725267116681964980170761868354637008048347503789772184084460955829116944991636860736435379290766272509196663385388219695419950622560986908609445469878801522768133019967261936331642573240460211250804869372140244002455162896297539551588, 102494632206935294020689123663187202878431013052196175045265865674337044967316795546330659801098067093764157857196289024783869455502486853681521747675583213652190339331998648936926722726534441025441159308526955515490654338073383494975242703700832807764154580981160828939275003604420433822169968177943281987090, 97707196275830706571544188698858803551064198932917612812793909113204549910229872258444267491202571334456798460837489283671182225942973056911780864722172672337364798355680301584088335305253900212328426056404269227960377443195735677045675990601290240072147789650576170245673761593999536102419233086642445167689, 87578979676445764714177813354224410965081547901517088773079737429877130607777083269813267355895802221573089615115669441588513540502003597163586375991048735230120513989140579179734697010086401756799911971432085322316581599987968796666882085230905107061894372269162261282358022241046292859165730597225116850824, 97837871187716943630015932088157170022828381857232532763719122193760730222498157729509173563193985872835331599849419924145021612088910526294161971814292637516931701982257434172425503079263562277898453543177167015007278123036188476734748397102975699436233768683009729954124182691649865441155934116273145653048, 122486402162352164164617536986347745883140013414390289937530082472833809716567827511350414635527940074357523469086778837976504796483765134054124962845260123098531323433711139704281511345771374123278351571822122792243844480065059904186900009238677477387442839671931892244495324455748478810278740584567136440000, 68452263421303226415871971483359841307830455504672515956319927475914154802300565843393002364553339715157059467041068479146855294921849606835421519503663394999036074970479016424812750518228365695072047833953877443772790219531511483913091272060971738262762705055978300619078069803471603546060472480202805969304, 71055697792792852995971153063675319888986346699848956483584329661205173586570042722098050157818613276398100378766690533019733719069484327876344433130301195945411968291787616568465597569867675069924496479539629942857082954178768607608719733870290373363401469227691742026385830665465699834861981376937094678386, 58053497804376033438901335076756766146677614008314078060718994322723711218316261106625096651460238242887299609903200336650700194546093716413268920169743935619736904676274450859965734433940917527872078233796594605756411180055656185259004552660740095902062464066735677377463250502584853558854426183281118647851, 53568118043799995580686528900070102353734019632922173821515115520779210810515145562416449689266838810422454215570916172532895263064683386888079860727732868498254542912005174566170362133818823925861019773863838875659268091564211941244982697316622894096613335432112379988949024120732963880711563937725640476361, 54537203614069356341247136604438177803196795877612936299879896037375103676052089312531059186905697542477287206589644969962217577367090182423743724737368096471570409725811885262736475879686692109660354277052184064452755896339111412164304039454701739838594721858866829468938907506628695291387340560142006564807, 17590130588133520049104993524745938919046647324319116233160486991341417005750209369102799250845847433565950085580156621674894808064633541333461770020696201023217141901924674329003387795233875519644416655441404337298057500097676069795236000599051821817807681193769369165515926020288210814851592732875195792529, 82561711769540482948798699156535815671234468901236599054088128669570195084531079723790670675364794078193264875907939091295680038844865845972511307739251080079353596855919970539133100998894123140397183783073823710751753474348435606939030935168826249985089073522582382413668746543384379090327897183721158599228, 128682463199652136199425648721272867550492854789826935634772480660219255770025901974293101786685863282355449901134552146139063629455022985318295860855249994565485787860632700413579779960128353741757411853300173731540988793688123421893871512104626353311528089819064472469725263020890057953755045317640684418412, 111830614157587399876103920049810851149815442663274529630764091092256716623329981287104859198334159829176308539774003950578196400683103861463993204850911639451975312720186375606903956928863194309419956898905169419379202400118890610166748646089109453281819194035053227357019016343077049569033479355378153190650, 7743466771894974008407519719433673930581204670149400884336443280937875457185577322742373735218366781402710632291775468915790021876252711219566878042000111398629529348167793590059211693490502060571519315790679105935243351233922477504260026036407472967755360184115911427796187878923044630015896804599921163214, 83524834307009730585812953283889535123689200939071254900035103102226704856203571931707232466477380193697283773523640602005899420942935510298065436394592130275571735453003589570903598224135866273305287314765184270870615188040687981960755329673715894576462441385847472134353916941404172983131492173550423547754, 117912393762872878257471455622415972729405272869475900328719070365926977568077460452534558219870105558670973233219874972136716182560190770386203998758955932105188002083871549276318357452793540787162395242828809859745533555997452025360288506303635368830870973603796642228775329239299062970380049402050440749516, 112890954481863138614741529632046582174816200785354159050640436720840162169771877928817003677702686523786566895561663240741230629448536961811362017921188161215377519942530924005423587969022753352449642252200224944558450458685684052076779876116571146722870042366903598365144085616642650272423012695988174890823, 66668573394165091945062434979301337554998934559040587110970900587497739891360985799502499630543176216821242214751649987658458294591732563307421470774017878231435307325863408975452929714596017735856887309630858651140234631657353580845011566043021545737238926316820848105005351972108553428921809293035357265589, 42428504447557190426085778047552104840357112149397197959606348707393426259013311541481129953589569576600678807050429859867284448153340235186861782056748182521050512869779198168422569498947138326591669023971488642830973224171671691417638268986103269046265492373746830365508636415776781186103761281360058016154, 28329568884461415187792923483114455528351589246553813588543722492419377266140476588451267652083755549713023914804709960724677988807524866633562917133878266288107465756862344673137546233312006854100386301059735613069614731276106307614984613571880266118277645052377101372686714091532938323262711643130226241848]

def get_lp(e, n, ld, kbits):
X = var('X')
for k in range(1, e + 1):
ans = solve_mod([e*ld*X - k*X*(n-X+1) + k*n == X], 2^kbits)
for x in ans:
print(x)
if n > GCD(int(x[0]), n) > 1:
return int(x[0])

e = 7
kbits = len(msg_fault_sigs)
ld = 0
for i in range(kbits):
now = int(pow(msg_fault_sigs[i], e, n))
if now == int(pow(bytes_to_long(b'ddddhm'), 1-(e<<i), n)):
ld += 1<<i
p = get_lp(e, n, ld, kbits)
q = n//p
d = inverse(65537, n-p-q+1)
print(long_to_bytes(int(pow(c, d, n))))
# flag{54b5dc19-5037-46c3-8afe-45394f236852}

easybag

背包问题,但是结果对p进行了取模导致常见的格基规约难以求解SVP
此处使用Babai算法求解CVP的效果较好,可以恢复key的值,进而恢复flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env sage
from Crypto.Util.number import *
from Crypto.Cipher import AES

p = 94154607166206368507849450076562888867777996786776585204541315115554265673239
pub = [13558005804894620335697666695157375129697290797741397021993594548263141225185, 59100377682228233248259149993117848589507966669415965396505753313255772484735, 47203140847285209690197775939725446140228935533192678649736832535977586766657, 41931934930013700538175901034615026851307155264693289541912768198101883139200, 34600830342506187749361900452651328134776307385652325752852473167695972843115, 87640782336847365756484674868883213823373923714943730733375997668462983688038, 46665325617149847662294815433566827879247054902007756459977900724576956930238, 7630102294629000071648786320570215400445944873898703154806156572372671923081, 28527795592041096912997042180130633828658042409636021884128608005311625241616, 48817875040757505575226334137591514796302781418971911589454396062223787201917, 13255147124279970300070471647577356621503689887387302226734806820266747474808, 35402792535703359866981648503422240071754439627501334894850939689231868215135, 32096486738038490474299531943010354951480863898639806169937034178619974350617, 53796403150739214931374312544531149937237602632833613136878306939750970956473, 54983553100507197181500293731582654525408296950106771274995347122732790613144, 78089465497793663917498756488988307210150642639541862861838679893054295887504, 72102666461042750236884036568516037906284283594884004107747986408795866699372, 25205929877393680775925192899276583872943822522732792361803075959348555266633, 73569982812592191070543881751396722110823057810338019363134145063958506216983, 2088202935774439157687167818481322834944309182788412111799843369630242323474, 48595322641271785006228649310883337480428294554328113174151951016612527760846, 51760926243228584037653924308259980640851259284678368807891664272274451903042, 60972672839459660624733547945444352444564866386661657085629482140478629017252, 81764834201781756833426691130605289192895677482907294866198302409014283345719, 45564921427256648952930549595744780922450728606081883043890551086293741648704, 11546124315022121112010407507682750282699601646772973993144675005994676860886, 92131518253108261083785500706056401679992613109559776512718290127164091431412, 51389379720849274237033447110263198191452790814489779714421318664581053598808, 44312622653933798618054908129398899008892235276397257672730716870062818221473, 70666271772579353628875975929849785989895352053744867444867924961771176550910, 1022761764417929351401227837288503469803327306746617444127801609783349439735, 68627432450132640523862810752994895413427816006228852597818417524517732514350, 8511138383146897962027474703813126003023440135100045398587391499968626350422, 31835105391545548957341476664214356089634342776763639131243986103325636836303, 55948480159418323822671978119946237891780186582911116704975552528012107246904, 55939548765231641770843516606677961462192677789127144112398249578595518236030, 20278834290551726759933704289080539150033014812784593972020141194417541880439, 73338740361159581768576605670854710647315802795532659722801776055886181249196, 76030530797619429775272782139815361420031920989903555900304383499427424691028, 29434488504120326762494784919047205002020356219284552062468984751289660011144, 70227628106756168643766787327064214794880142284692886739392137490279018434102, 24574946221293978596894258842130084362477010338545022538797491453437090815299, 6498106168053907890618186261665652189349047912867389234926938720401618310435, 89544437087791083328953917039272623964595858289587652369164257989512245819862, 10160703116362866249140930173762313868253569896922018161770610214791827114729, 76227093331364018857371734525542577074111530213433351474717923617789017495624, 15711426473810618056409128995696582093601485048202406838767589077201299123260, 10686228588336791778046934061860194190302510165978184916374294528370290854376, 743613502117417805717788796940788273702216571188502886117674965400126386594, 78117535452041628513083051136496582640102481347370178358531807794866005852302, 65422888907790441789066675735260369825243738808162289359370573767294073389543, 64513441837802159954407971302165651403055502196511115018903417756542405033208, 1445954148502126112702617051436662059642285218246554311110203671284796568239, 78441138130637968035058014810800340697720095799909152986595764312261055325612, 72602744597138181431124073095992777463769309366668520177727154848781655032600, 9786934211176167525996495418302215387385800641019822009416705683093970268940, 44943695239822266941127148357724393787078734075722008436487144680302609249634, 70781641195178108826300599782282991675945297046163684928015312469855982285294, 58235271417245212032570174014807598168239520942582767758692549437338153222204, 92877022115452578515908587738974006957886472693342404193199518045790086717455, 70767591165382026255868033108388660762134896305917797432131257129495704309297, 55657364531211200525510486301527531771575735049596151759833888509362181870297, 44336153977928031254990878584737529363699845706938343159951700205026319387000, 68798336155332657027923387549177788534756411943373654774711482160905197111316]
c = 300528310281431128814608316680537971945579270793936168485054801251195415271
enc = b'Z\x8b `I\xa6\xde\nF\x13J\xf4^1}\x98*R-[\x9c\x851\xf4\xeeF\xea\xbc$s\xd8\xb4F\xebg\x86\x8e\xb0\xc9%V\x12&Rw\xcc\n\xc0'

def Babai(B, w):
A = B.LLL()
G = A.gram_schmidt()[0]
t = w
for i in reversed(range(A.nrows())):
c = ((t * G[i]) / (G[i] * G[i])).round()
t -= A[i] * c
return w - t

M = block_matrix([
[1, matrix(ZZ, pub).T],
[0, ZZ(p)]
])
ans = Babai(M, vector(ZZ, [0]*len(pub)+[c]))
key = ''.join(str(i) for i in ans[:len(pub)])
key = long_to_bytes(int(key, 2))
aes = AES.new(key=key * 2,mode=AES.MODE_ECB)
flag = aes.decrypt(enc)
print(flag)
# flag{e42f0ab28e1c5fb04bbb0c797a2cd951}

my_fault

根据正确与错误的signature、正确与错误的模数n进行CRT可以恢复RSA-CRT取模前的真实值,求解两次正交格后可以将向量空间落在mp、mq上,暴力枚举小系数进行组合即可分解模数n,进而恢复flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env sage
from Crypto.Util.number import *
sig = [(57868553591400842657953934041706334225193340937554557721855165199169945727847060414972568103211720176449859323059273929941793344251833479834662213717934173466357264302430567770503575880312216409600708717869166323749494662227007011714825238815533767351619457577488576774216589896882247144186580576769322097812, 57868553591400842657953934041706334225193340937554557721855165199169945727847060415002480474701083840019628098504782471742472878003307770253681694995900494158166847376315908285012567539039753200673812172480963463248702937994864056409093384333043514818983342609877792502603164027310875230850936363180326485874), (49171975443469873067078117247671124300824757898648824685724862006418894673974653477861829631616668663207300775025813798519528211106532439806622673174671840041045015466887500329521589935229729869447630896431801023913778113776086701569185508523496369045834174533824339611510846306581948246745632394045855515543, 49171975443469873067078117247671124300824757898648824685724862006418894673974653477887754935759654246224691224058440593298403556234079690622978255834790607053580157662746913870927058288528631971141333812416872857128658826869897857489519289149723701056750182632616557640796007814610265598601314108660465350822), (38242241313005635872096329134730773643501715973179593684344944669861621835322893671510668610916561710464145576451084213748781501562898044677155086354037634151146975926910732294931667214775888370183278613006165404346282267910323384214183821325033958088995640486712160815256007901130889124999821240256177509502, 38242241313005635872096329134730773643501715973179593684344944669861621835322893671543112728741142451715760057070928251569564896434599370771272769443379527534836540108405485526427315129094656595278659234763179717306423683296288876091069064531141480153855424552759676659893212127130496563003755007639019153702), (14529962850966926265013494701360598035306621650370915483998414863695479047734704457537124092168240054727259566704408889151822965259868779592946037044793943952884456034023040427556159207075699863245519955344229822095102535935238724533625011615807856735054914491186371905743590846254257379647320058858303951574, 14529962850966926265013494701360598035306621650370915483998414863695479047734704457557907857154897077239558389206751219461340306460195272540014186372444608143405801242117188619488853524198320122961039638596538967640812566827987326738775127804411349740574988352808010707562933685260033368965010367007084085224), (46844163144906587257330904384060444104125603187729185163281199078682476263940806954229139266637477691797500851914066028261452315570532337660596976227510319237947989981504606429566779427371581808326526352823915816345490500824599417299410614012353081623864591870033718008785997974589525604908340240257482326486, 46844163144906587257330904384060444104125603187729185163281199078682476263940806954238213199098343166530691122399994896552275344828907994592474709128083007917633690793662295647064430882589511075787692804972653225088197681465958997614089742860102991696115379470778788176774208757942210199295088339343799315802)]
e = 65537
n = 60674610013465119171596047337991221351949398323488704251815724751066355820934754032892829767526766819900836100708471380103738011137899584882690614504864727494195655113621535500648948534952721102316904897394762248022998038598239683088960476724400716401202961110466846822677768372714386227950788963059019784893
enc = 48211625012335204831727638590678221580160171263427537396361490969732803835399523374794367743429208230894595097220265932981778900576899870970624397148503423254272678510966818035955654541150930136737226992811603090076353265139980349537071055762414849000493476573583331991711355289377750277595012442208304616396
n_ = 60674610013465119171596047337991221351949398323488704251815724751066355820934754032892829767526766819900836100708471380103738011137899584882690614504864727494195655113621535500648948534952721102316904897394762248022998038598239683088960471008829172014029481916113353888431454240967048097757354298802085822464

t = len(sig)
s = [crt([sig[i][0], sig[i][1]], [n, n_]) for i in range(t)]

L = block_matrix([
[1, 2^1024*matrix(ZZ, s).T]
]).LLL().matrix_from_rows_and_columns(range(t-2), range(t))

L = block_matrix([
[1, 2^1024*L.T]
]).LLL().matrix_from_rows_and_columns(range(2), range(t))

for i in range(-100, 100):
for j in range(-100, 100):
now = i*vector(ZZ, L[0])+j*vector(ZZ, L[1])-vector(ZZ, s)
for k in now:
p = gcd(k, n)
if n > p > 1:
q = n // p
d = inverse(0x10001, n-p-q+1)
print(long_to_bytes(int(pow(enc, d, n))))
exit()
# flag{84abbf23-b561-471b-8705-8d3ccfdcf2c6}

Encryptedfile

ida看特征发现可能是salsa加密,二进制打开要输入4位key,怀疑是4位key加密文件,软件告诉了key是4个数字,所以爆破4位key解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from Crypto.Cipher import Salsa20


with open("./flag.png.enc", "rb") as f:
buffer = f.read()
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
key = str(a) + str(b) + str(c) + str(d)
key = key.ljust(32, '\x00').encode()
nonce = bytes([0x24]*8)
cipher = Salsa20.new(key=key, nonce=nonce)
plain = cipher.decrypt(buffer)
if b'PNG' in plain[:4]:
with open("./flag.png", "wb") as f:
f.write(plain)

#跑出flag.png flag就在上面

crackme

使用 IDA Pro 分析程序,观察到机器码为 666666666666,并将其修改为题目需要更改的编码’1653643685031597’。接着,使用 FindCrypt 工具发现许多变量都与 MD5 算法相关,于是调试程序以查看具体的函数实现。发现这两个函数是 MD5 的 digest 实现函数,进一步分析发现后面的函数实际上是实现 MD5 hash 的。经过多次调试和分析,发现在加密后的函数中,key 值为 1228240365737281。
flag{1228240365737281}

敏感数据泄露识别2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
import os
import re
from tqdm import tqdm
import json
data = {}
'''
filename: {
data: [],
meta: {
header: [],
filename: '',
length: 0
},
p_phone: {}
}
'''

varibs = ['phone', 'cert_no', 'school', 'email', 'bank_card']
result = []
valid_phone_prefix = [334,335,336,337,338,339,347,350,351,352,357,358,359,378,382,383,384,387,388,330,331,332,345,355,356,385,386,376,375,333,349,353,380,381,389,377,399,391,393,395,398]
valid_bank_card_prefix = [922,883,165,221,880,584,768,908,197,130,956,500,723,881,886,839,922,335,706,205,132,123,127,766,110,803,322,844,130,641,328,883,667,339,337,794,325,880,571,397,123,958,758,203,291,745,842,981,224,861,839,613,950,787,295,391,702,612,967,618,704,974,136,592,862,917,781,278,662,895,791,856,189,780,211,898,268,961,851,131,581,145,969,730,708,693,763,275,273,615,333,113,890,981,662,338,692,571,776,662,724,847,106,903,978,941,859,929,233,632,897,158,593,991,684,668,617,597,933,102,739,906,728,570,715,129,924,336,751,282,699,286,982,194,918,665,917,972,937,134,962,790,173,186,118,115,873,874,388,213,917,740,290,398,172,272,264,641,273,773,380,764,586,217,125,916,293,212,848,721,937,122,331,119,507,250,137,837,265,619,795,953,326,746,917,562,329,765,132,505,792,923,776,747,161,856,229,997,149,173,980,179,862,263,679,359,234,109,971,139,705,323,684,572,276,948,991,899,738,139,306,202,791,706,299,207,782,500,617,612,118,727,993,389,119,261,306,979,931,902,239,791,199,958,661,958,804,597,887,167,142,187,237,274,271,878,715,619,962,217,399,719,899,833,239,665,889,207,141,175,987,908,251,949,229,218,730,702,901,179,330,680,184,678,218,569,384,211,906,147,948,113,729,787,115,194,218,946,141,293,701,266,219,562,272,798,263,862,206,926,938,203,768,141,128,111,906,844,711,509,165,166]


def is_valid_cert_no(n):
var = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
var_id=['1','0','x','9','8','7','6','5','4','3','2']

sum = 0

for i in range(0, 17):
sum += int(n[i])*var[i]
sum %= 11

return var_id[sum] == n[17].lower()


def format_var(val, format):
if format == 'phone':
res = re.findall('\(?\+?8?6?\)? ?(\d{3}).?(\d{4}).?(\d{4})\(?8?6?\)?', val)
return ''.join(res[0])
else:
return val


def work_for_table(path, filename):
global data
data[filename] = {
'data': None,
'meta': {
'filename': filename,
'header': list()
}
}

with open(path, encoding='utf-8') as f:
row = f.readline().strip()
row = row.split(',')[1:]

data[filename]['meta']['header'] = row.copy()

_d = []

for line in f.readlines():
line = line.strip().split(',')[1:]
_d.append(line)

lng = len(_d)
data[filename]['data'] = _d.copy()
data[filename]['meta']['length'] = lng

for index, item in enumerate(row):
_d = {}
if item.lower() in varibs:
for i in range(lng):
_d[format_var(data[filename]['data'][i][index], item.lower())] = i
data[filename][f'p_{item.lower()}'] = _d.copy()


def locate_file(val, type):
global data
fval = format_var(val, type)
for key in data:
if type in data[key]['meta']['header']:
idx = data[key][f'p_{type}'].get(fval, None)
pos = data[key]['meta']['header'].index(type)
if idx is not None:
return (key, type, data[key]['data'][idx][pos])


def leakwork_for_table(path, filename):
global result
with open(path, encoding='utf-8') as f:
row = f.readline().strip()
row = row.split(',')[1:]

_d = []

for line in f.readlines():
line = line.strip().split(',')
_d.append(line)
lng = len(_d)

for index, item in enumerate(row):
if item.lower() in varibs:
for i in range(lng):
res = locate_file(_d[i][index+1], item.lower())
if res is not None:
# print(res)
result.append(','.join((filename,)+res) + '\n')


def parse_content(lines):
if len(lines) == 1:
if lines[0][0] == '{':
lines = lines[0].strip().split(' {')

_d = [
json.loads(lines[0])
]
for line in lines[1:]:
_d.append(json.loads('{'+line))
return _d, 'json'

if lines[0].count('。') > 100:
return lines[0], 'line'

return None, None

if len(lines[0].split(' ')) > 1:
header = lines[0].strip().split(' ')
line = []
for i in range(1, len(lines)):
line.append(lines[i].strip().split(' '))

return {
'header': header,
'data': line,
}, 'table'

if len(lines[0].split(',')) > 1:
header = lines[0].strip().split(',')
line = []
for i in range(1, len(lines)):
line.append(lines[i].strip().split(','))

return {
'header': header,
'data': line,
}, 'table'

if len(lines[0].split('|')) > 1:
header = lines[0].strip().split('|')
line = []
for i in range(1, len(lines)):
line.append(lines[i].strip().split('|'))

return {
'header': header,
'data': line,
}, 'table'

if len(lines[0].split(':')) > 1:
header = lines[0].strip().split(':')
line = []
for i in range(1, len(lines)):
line.append(lines[i].strip().split(':'))

return {
'header': header,
'data': line,
}, 'table'


if len(lines[0].split('\t')) > 1:
header = lines[0].strip().split('\t')
line = []
for i in range(1, len(lines)):
line.append(lines[i].strip().split('\t'))

return {
'header': header,
'data': line,
}, 'table'

if len(lines[0].split(';')) > 1:
header = lines[0].strip().split(';')
line = []
for i in range(1, len(lines)):
line.append(lines[i].strip().split(';'))

return {
'header': header,
'data': line,
}, 'table'
return None, None


def parse_item(val):
res = re.findall('(\(?\+?8?6?\)? ?(\d{3}).?(\d{4}).?(\d{4})\(?8?6?\)?)', val)

if res:
if int(res[0][1]) in valid_phone_prefix:
return res[0][0], 'phone'

res = re.findall(r'([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.[a-z]{2,6})', val)

if res:
return res[0], 'email'

for w in ['学校', '大学', '学院', '中学', '小学', '幼儿园', '培训中心', '分部', '分校']:
if val.endswith(w):
return val, 'school'

val = re.findall('[^\u4e00-\u9fa5]+',val)

if not val:
return None, None
val = val[0]
s = ''
for i in val:
if ord('0') <= ord(i) <= ord('9'):
s += i
elif len(s) == 17 and i == 'x' or i == 'X':
s += i

if 13 <= len(s) <= 17:
if int(s[:3]) in valid_bank_card_prefix:
return val, 'bank_card'
elif len(s) == 18:
if 13 <= int(s[10:12]) <= 24:
return val, 'cert_no'

return None, None


def work_for_txt(path, filename):
global result
data[filename] = {
'data': None,
'meta': {
'filename': filename,
'header': list()
}
}
with open(path, encoding='utf-8') as f:
lines = f.readlines()

content,type = parse_content(lines)

if type == 'table':
data[filename]['meta']['header'] = content['header'].copy()
data[filename]['meta']['length'] = len(content['data'])
data[filename]['data'] = content['data'].copy()

for index, item in enumerate(data[filename]['meta']['header']):
_d = {}
if item.lower() in varibs:
for i in range(data[filename]['meta']['length']):
_d[format_var(data[filename]['data'][i][index], item.lower())] = i
data[filename][f'p_{item.lower()}'] = _d.copy()
elif type == 'json':
data[filename]['meta']['header'] = list(content[0].keys())
data[filename]['meta']['length'] = len(content)

lines = []
for line in content:
_l = []
for item in data[filename]['meta']['header']:
_l.append(line[item])
lines.append(_l)
data[filename]['data'] = lines.copy()

for index, item in enumerate(data[filename]['meta']['header']):
_d = {}
if item.lower() in varibs:
for i in range(data[filename]['meta']['length']):
_d[format_var(data[filename]['data'][i][index], item.lower())] = i
data[filename][f'p_{item.lower()}'] = _d.copy()
elif type == 'line':
header = ['phone', 'cert_no', 'school', 'email', 'bank_card']
_data = []
# content = re.findall('(,([\u4e00-\u9fa5]+?),)|(,([^\u4e00-\u9fa5]+\d),?)', content)
content = content.split(',')
for item in content:
_d = ['xenny']*5

v,type = parse_item(item)

if v is not None:
_d[header.index(type)] = v
_data.append(_d)

data[filename]['meta']['header'] = header.copy()
data[filename]['meta']['length'] = len(_data)
data[filename]['data'] = _data.copy()

for index, item in enumerate(data[filename]['meta']['header']):
_d = {}
for i in range(data[filename]['meta']['length']):
if data[filename]['data'][i][index] != 'xenny':
_d[format_var(data[filename]['data'][i][index], item.lower())] = i
data[filename][f'p_{item.lower()}'] = _d.copy()
else:
print(filename, type)


def leakwork_for_txt(path, filename):
global result
with open(path, encoding='utf-8') as f:
lines = f.readlines()

content,type = parse_content(lines)

if type == 'table':
for item in content['header']:
if item.lower() in varibs:
for v in content['data']:
res = locate_file(v[content['header'].index(item.lower())], item.lower())
if res is not None:
# print(res)
result.append(','.join((filename,)+res) + '\n')
elif type == 'json':
for line in content:
for k in line:
if k.lower() in varibs:
res = locate_file(line[k], k.lower())
if res is not None:
result.append(','.join((filename,)+res) + '\n')
elif type == 'line':
# content = re.findall('(,(.+?),)|(,([^\u4e00-\u9fa5]+\d))', content)
content = content.split(',')
for item in content:
v,type = parse_item(item)
if v is not None:
res = locate_file(v, type)
if res is not None:
result.append(','.join((filename,)+res) + '\n')


def leakwork_for_pic(path, filename):
global result
with open(path, encoding='utf-8') as f:
content = json.load(f)['content']
if content.count(',') > 10:
content = content.split(',')
else:
content = content.split(' ')
for item in content:
for it in item.split(' '):
v,type = parse_item(it.strip().strip(',').strip())
if v is not None:
res = locate_file(v, type)
if res is not None:
result.append(','.join((filename,)+res) + '\n')


def work():
path1 = './内部数据/table_files'
for filename in os.listdir(path1):
work_for_table(os.path.join(path1, filename), filename)

path2 = './内部数据/txt_files'
for filename in os.listdir(path2):
work_for_txt(os.path.join(path2, filename), filename)
pass


def leak_work():
path1 = './泄漏数据/table_files'
for filename in tqdm(os.listdir(path1)):
try:
leakwork_for_table(os.path.join(path1, filename), filename)
except:
continue

path2 = './泄漏数据/txt_files'
for filename in tqdm(os.listdir(path2)):
try:
leakwork_for_txt(os.path.join(path2, filename), filename)
except:
continue

path3 = './泄漏数据/pic_files'
for filename in tqdm(os.listdir(path3)):
try:
leakwork_for_pic(os.path.join(path3, filename), filename[:-4])
except:
continue


work()
leak_work()

with open('result.txt', 'w+', encoding='utf-8') as f:
f.writelines(result)

DCIC2023
https://g1at.github.io/2023/04/23/DCIC2023/
作者
g0at
发布于
2023年4月23日
许可协议