MRSA

Challenge:

from sage.all import *
from Crypto.Util.number import getPrime
from Crypto.Cipher import AES
import os


flag = os.environb.get(b"FLAG", b"flag{test_flag}")

n = getPrime(1024) * getPrime(1024)
k = 16
e = 65537

key = os.urandom(k * k)
M = matrix(Zmod(n), k, k, key)
C = M**e

aes = AES.new(key[:32], AES.MODE_CTR, nonce=key[-8:])
ct = aes.encrypt(flag)

print(f"C = {C.list()}")
print(f"{ct = }")
C = [12771329017284222033294687913093982083302103773548989818784028020527037636621326663856651683936329976217272224661832409541995908118056495519435082008268588199180879154052352316603176873354563893306774194669121532690473040553669845915310211679218187880932636515018217620850288318397783267572100880900150240012798214789291676521155706300597443230459562870020565112296036536067951842415294760525296686783667764679872421208122749931996404658529446838334118101000008343439125040184936551363092709513548846678491051836728787219430545394664914061630889004766860296700164611435205803978466415866671553925096850919409728545362, 8120555058264920029127532266421087850029150490139605680979431262897778794116160093672749911574999813198174893333038822439001179417035984057823497212914046160641081549673206700164185291422977662721825762439001336025458888113484541174572713799144121500072272091904873091278070865352240189254000733947670647840472999820049539346879873657064255061350475560005722627708878704892146369010302425646240999757537218121173205501783453439522398734287583485841973224770369125020259962655454875397295609417846793587823267128957028029559298956547740545922533028233188622546077178070677448455400115563158545088506471498239516649173, 5198045363355178140432396463693325736025098154451042870423753841472898260113194112090028646050561109271230393371461119416304855582698214372068100061510457455369060940383280962569446043018286713554489485553698351919965860210497641539767694396557025654729460750565357979275375722609964189776189459656731278718791059720397447808627607568193502295490306573251181025406105281687436094604976019055200675541206130850365784257925032021983392951464674781776162965800334029448790462356169467801441035914717968270849608237695645580398423350968369922810288153753509541216330035550076872390282871030900242015489794737476165479752, 11543624254899144603466331183577156567222918801305262866826470329396665996139903073290024533567693668028735222815708931242475519839894158883510176742669338674250464428409631472609410673319430370597293927001526604607635327987123242503350445987143200172617521618930317145567161148759219303913175946796808239310949483655359493732830995256472788313465959191834937837753691729956939156812240199280795108805978025965520927758168988181169943622234604950209750416669692306707252635512232688972478829875478651817779493622955477604741548643010092302377784568164074093378407636264653015729662927951037879551676638025370096846233, 3624903570433753422446384739483457408202304485396913737300971614954803150961969519605163258312958308711007198541764223257690691273730056492905211210603304117809311431375479130276657730915065445485241071073958953784749680966619053653070343206783113442956086431744848210793152475101072775269885917721866634784906660173785384824282922318813275882577641466133045026385515366344994800649787140780090836143371859833491845330296118086323014094818676014858932566750400684950265710155946364815567592778688617356646573541665590839908775586028386004567646240463074055547808750666410787833798013844973863416605082778440422507075, 22893119834074265679131243319808501670137950665517890281109753561928582215364416757879991960782410888035985781104052367749741733724909946182866468696324913621915592653909807099094975962591143392929577558390176488671767852345628538439044391342316412580096128841361877841823305254865677759180008391012277798710295341482740323019635983404350760536931343410323169701907359047385082078817994336600954577644615761330843949736968909176221893108048676221224689393439754861747762122368443340736532828276965108353418420990845789353969154148970869769405043601969137563806706053944105930485839534639381268641884888438116269265304, 11404437714567751634921685453196306363078912008587442191496439970455388520112976461749621613095027872387915331830616554063091553439786531215506735626913092958863168681364934004280135214645983694326998804576305850817251189126997028562212195922184928422390383590383620920528400875725990054684138518856093446679695265852722589500170337945677490285112579821868706567812085851621988517669391818159610451325223734480835040427058770632400692420434611282068617842148274425733690678751646014068173110047573645315225764371083660319107595927043947379041492031275977380969104916753603119375590592805184522181977846435833038161686, 14728337055877602955844604904045675590436509917570030446098144210046333098064028702411162891523680031159552599022010448794326096981864630849116171200344465000834719354699210692643267446036515842646506005209895271583808965865697080080646413398920754379589025850173202822705172122673895494131642373854449276365811816729841456252575502224677272439779827416734769153782634100976129687362812382695921567655793570149035748409069587899935108305923903434673354294688822438884078929907254346269690167543959677645258821744308440685169518663999344248407253932207481698034936655623853066599257441571203992790490651157365944420280, 22981475461543605451894550536910436708634917077356556986444680921327452265467375816645430739008271710039072579439572925175286691067211381169751263876674216244018583389261387025696938027077449048942228440895762182306064276148046812643209149514168335066640808363008087233949497595730142839411954508993188909509025544685887758037706947208371868734355342353200873533953381904299747570367074776250321636727196499324980379565051862396090472249365288423527996373148641067299877150378271495028533344494128618351445473285355452509006551778933894622231045202976464093231854374152426375832738070032117613423910068815833259407068, 446763733624222156045282416238717895449963381251141564886170592704490814502063091702747405196716698023826704423618565791172621393456156668699262935846214219130544015891940263128560781311143592790242839083569525983668424160540170666774567425241599679584223703989204764611656717128330960454772649443174740963750633658935735431285499250681046452885952479754277395051185990726332144527800290930425913498831289551809517166918881308364675301291308307233404603057464088884510238227264377431868013155482031789570616360622419985270766270964051386062788510512180799309184609695069920978825972161196517376945001378654276671566, 1113918917398175108343013683489390153325778259997575438611515866480516900841316832910508017679651283043689691024960841050013343522263016899066323567061998713409158379757865250792361596791594950185857100618357322698683727434817783645170392650411632707089642684189269533037024457997890679467015215873207160832044019584011717021967045636152425352403090295838592078406924234403246962276292522002028609410197847466199602284530456094125728335200531282561106029862334336428910999811242569456362788219142069260632478982349730559277051885402460070272254666384590820464385301636428443845555737726610903490824590472652113064094, 5816623095826199596128076077425863859395912779881165935334998101771790257192973965103145045384765831606740317574213679417682472638298934233594585747935186303193317073915886464404757928632337116081801804038210299843495077871706881415448303297263555898006616505924233898821760402283164977595395013143338552190120445436159174329514547114587783631867191692269094436457117691763143494489946116866277827550813645503005202877283666358901211807631352920744269722719793975715979557569236598364422316875113152541621180673560127860462957922560585011323147048767501476613488883116508349126613658707420237494825974329675197596316, 6693239210880852351648706543592881348064078111976017155658945395563244002514466294494754858265022165228799190401882592105220361663984779619278948433297350825173838259171844414475095253689014259414012080363184383128153551512256506383832881860715032516211516019567394467963629785895166566448053154104984522838998622735663499841476982528294745558353790570110330359119869589167765574365900424538882882560021529182583292505591307694096887183382593194335716608204278659200105471327850716250168097263458360168718390772917052689369152589616946626011772876216637999774444660325001636021023745320916266853194207807717297835641, 11426210288201671990084005947568186935566300196444958382568348171957050153966155304863561302767625269777757877855971314663481035958304143912914809618127662940129360311439954045666925899361198687316586385034954336245291649425575644103320962840779753767319653084002797383854014891927379270119806342329749749809592048010639828160393516388957294456977636414188730144339884268070936899130020081810588246814991260174038781249306807851745673587415183411883105362806432948957837596495035814697951722270002713259823278307422297878099134074308612882911626769926213282560900208946293124815382962463232641956251177773964798883125, 5331145101443590370671112257374327096507213623251156255758548730576986864133133871793020424813352692899761290155033591987956023534070440645128194859757843418973359885042807081109821419329626206002748042499779333001541205735375308633809929774795868186292984058861217633404195460091520674769583503647720415748970148940545942727121240663775300406707673227810844312774636704417450383510779578597851589862884627259219290856835300131616973621628218143518467764334327101205151455747313658306678984038126819340439590871095436718282510964969683057523106695856790763152264744783697171184487159056388739375626177017763767731448, 1520350246099565808017076272819564387452601056237805686163198013886018119935035228121412149072393105727086285104039710273786472355154407215626508171775860898582464943613040022067566002441057527257558908802953692128927879414539621842379061975821802442240237184653285399583355470515729863102412051705455717432230747783568124543633135426645756507560398220540640669223378931362831051788210840005294737874942372366524638621560291598443540559760403123989694240674054137033718786099663015548341790463961836810805679309683468790630643697928217519031771590543588060213886469137013905889301896274186497032567400203500038184773, 5722664638384603678271160670552112635178846449476418937963308149114799965078345400984060020463342674350217854271924106047494397515190391707190993623504952644183177988561014770726498059394109373896297134684968535542503575714866742647676325492332344006747103119350107596381550035756081525346096905608501100920095867584578239418600890928094851580679940067519871893895234070747780814564290455756051820731177723000632258332728510699693995123448412983325785477583935359400022343762626630605663305167806854030000111286965090034221270992577033359311010020754340990005676346414133383435077798704502857299361671160753398160559, 13004162384895782756874091841524216695881431828823740903607443859609137276772325090225452867336606203389920386990622095382986074319636371354562700290951752662544499123780185250678855627975769366814024791761205085274500770827818981096894746995405673951007746777313570339806853594129846014932500411229921577774372419785356305137649189123242672038888745494862573330342108102131369867874159787253452180311147839921279206717330612152445934663874264892229212056813784596442548765161081372765752655787247031989257452636449662989790402915465941400062004328790554396439984430822734948642368304463826105853825691973726230924545, 206416543731911600519108749946394210637327024820344320936392251301092926018242483178164199241847738388722449078077704515172632665374978304196093339170609209823994009112172121950261825184993346692493826553253981605802690204976121411496907748952677991594767841337930745934993485168192465124982795303924022142774819110156459515268468696340471019691312415638629010430869172690379298893951111984986424239030465566367899235956680488549209622631485929735894401791519152202472991923158766907302940403264545913609607260161503145666398031579931944559847399063642380712189878434111143443631338823710963318629188634197393178139, 17174498063377661409903207590377904850101665696357183810124865734735026993339117409393938515362110431228635262900838296614669834924392618033912315616512825126394131680892042022289934479863300992259155308719305045518361500823759691742999788572788712026971447708833193657994976530857724070331126386624606739023695031855994286967197693694651203113643428813607892056108422068348012442359523868464508213021920873441027110230052736146472942707641413686096991373805538394534863878062602010602242997800311082581862800439632571231059086878748246175784352453324885556537285690810652527003091677514375045756857206416284787038188, 1515093461126216648906023893616360583253778922362254651046699964541758425008525594862094926421598497495543553166650710208995274120887800076192972082573132251464892898458046030236171269886614086963529076216532504445867162174507938677924425304049207272312488949038287716556884739198933249675125022712886618893028697294951458848748457084442679763620303157437036007984179597289545337102296709519671581286817855809520373027521472422018932998390325288469223053167152035669831165436141304140919703809771582899599591263613714009245759649026225462016721583492129729668482474713343897731246747089912661701035405388561637029709, 21571991301199198282512583032348157750444970364022668498961894460442194583241950549595118666231315975454175647191866262342855818158454701117647159525268575758232490160943507400173285217008896381658900563289261335573076602121263048795106738887129355027489459555216934735880225745454553542080062564801716277754017801688658040221205821954802304724782942731531624182870958318514582907437414070728647918933479241343037891348713672015093102779692977340454113606618492966573162372345154398982582016872563329780913234419358314897350089906216918199460682367306504623591193669353761754290088518976952121751817077939410650256040, 4838100837772376251145023114525795005157140526812085005959483768373015575227856140347559789252103853326117348228170293931862244685127466046706642947914293147209529962837852980033446455777079118913292034227263556008182250954541830406761509777061281367647086328479794214929740341889561029396187579094392586781979380938874257424519899659763883695106630849019982329362440163303457067757330844750051429611680344789163321933745342235037910503921180606689867547195334067423806104933956734713137926258475930109423797229172040475216195549938211807183521521273506531419638475345253391218213848038009607142894903700191924076928, 7535734242641005836993736433989674078266827336671515466472107826903046563014632936672009404370985510514898561418320756208724188564409489899757295684072703467994474135628720866152685874707723981551133915831873415565665592067320024778988455246367329628033433666865513903381658113650108260283074250077893892113987931089139064551686256520802895697830280328595460625830759123278735309174610406832809633726585787744267713767196255796089077691824173416540132036787945613719038129024023849894760889502163757250232260254245723493031997161384901724575639421206267210753417253940346204186171211502329368744246133652026879304277, 19851044371370049931630249274603305756333242947622980885387589291760835337303919989255544708562745210305273220619329472333115138031580825593307985774170746113750543575303275211242725369340713600602366899528392761294037428973032693129219221882606116611380177685850443185829402106502315689098852285603834739592606653272887650156946888145141748516119602476637374649672696700341546875599014363701626334095620401621835864539899224914531225244738143541005547217741961263272533897037409674563692501986908607567986654217290095574211398104584280877109087838235949703849343304092275385594709361833326968858225695032783051637011, 13913575892454715982330447743593193972145783631888329701789380797961094910189232579052508691425921119252425822766402255597600714371258768235972372188967126637890691923724740320180475102313513661645545386459671599008254394964787937065292596840082234962418397067298192401350609929959046076650534238308888745697694966579474185307605203968158131222437683541298185891365425311540159038045318921989708489740814628781117999739694000808461867297462733262860006748060069444707401509225724769388145794157637494769443116794958794601670295216900890654628782662712812554467698201379103038742162764604888277495216901336708730683999, 17431558919176897926722378766759454774416491723742650784378870558008396235663083621410959176294962670972722953209582624319625613948098690156060694813953639518298125215058140506377768134003971409650994137444549492387182368550844998992147845649791655394348446646070580468909014505386483974498574974150123296785827766040150537145532412425475886219128861768819099519931328534972781126822639875261708717200198884789549762559029118616953985614264830324008850370996312487771469323336087390396726443668352722276453601375120262535609102404887183829071620701811624064554562160483258467537261740464733477637132267339574426603329, 11081223815867522686151168171331541107517432343537173724503222717754667768887651235689299971203342369804198562742395031304940314552913362452759531476143250646809427614242394924068475480874939503210950754638790175457111027741100908953641674617471906409259453096801959734662232193810793266751777743939615296084839802332035005975401279051435920733547761865594748253072186262748352290798009016108496835103770131284314774927067399562445218375758081032958801559787289717421587097934627420529450293659453287934119087975843333208702047751752187128289177286490663685904943573968358147380801294510597008248002888482377456611595, 4392027825280443989821265923953826305827162279302317103011193532249880181933323231069065347299480828660709754756645070162522652289693112824964051826068930889367671173985322226651977285591888731244620702970274846713125267101910227535491912348913710003427986402836925861174054961505820302446756057056358200025869568982951160247115337018635061681909755231887443994070271155423566211536783901081750958704865762488524597859535323947359978186590542001411048057346580449216831847168984751858779016943220625273518279537953431541129671781854579053629157173405130617273457444791677167503828020685770612527856379473370824224739, 4407222709325043082287052167904526102426031864618855481477689407991507714043835932319113221952713852266769620134738479500401031965984106015314211236912998666934708546226743610088577680305505367782166999528395503016433679546119362131657273363546637782084080003608548126819432030734913599032744032340518597117473868135229164703009490913223620665480095128967858664882409355707731371990710428827631858632152077712501128136709093638267143287645894858928801491862266576194404609953066956787436019958259220741616529166513052327704753080450350718924174114266221540143172308575858852027350224921753750000339137797453837129564, 9942930073705187974052274385054055869745135109701830407750596657745022084675086995706315111326418670951204877134720326083174830768212768590435896380695367947598541840273256949334109232986909315217772786893235572006398807787125305468622049097625942540173422763766718742415060361547224175089035003550178194012495770227520098514248961919786053099742108602366575788294167237201002130846746633245551135672163355940139926678392319867320430148001826252945888640785691243443652709323428202749246095691242929283916869769891098908452861290596008458571131072058931558116214791376081696410870027916424786294628929456967338519076, 21854559697517255692846302421072385903368780184029313226350682555747639548857258222808575167044743296396355146805663886448894792780024757870842440497393392069701217770702590793556183891619653113012669841013771730167275525452824426885043608870081212977968196957138922258898599032273481257032033622271148798221188573245047689274532159266338675173301478003534216427107467323648139366698114821518153146296582691651882520978571222899239341984304191398581118026169565040307211587405092291915642752901069072564878963284275589974814277168736946860793297757100912885617091493026720388409570095219496051655328192170656214504637, 21049292151056502829737095457105153762080028586027015795878086442600769445353500576702415445635049429775041640426290719728605221824023750884007152409631834630784233137651154318002438088384172118816456501420472365100159779007503261302542471025743803432767260282007311735295891883260369001960167831304422674977268383428611623916716441478235843494088779931042217186432034043161837609558985530333826401995556877472849070921384867744805839846131830412268783184701935399460463409388049058377724954634536042488653950349625475140877752622357876668073180546764025240486981938522854687124359166237941786260401660735021524952034, 3664336174808526225053158402290730579510289509935559088912050867028456617273968904122492865370108280065549704737161138015965887868098947869001312476482140959986760226108291654581847253234744348848569852806945530531497442793750745533716284292217610359834794587166130079097177707692710799974519374461521620213626259436209755193496894440745908684110201529755434691181373629504727881767926260441344942858920640747549395405147016600007256835351256227848172241132130984658665141772206229711108062297236569709195329761826819782895523415997942487216855765985086452731070195945323954236422208231735145011652929881123589025651, 131437861266219975907419636933961238608509340814508203486084362289366616405470953872828536813222065423555849618502282294627082747953639324188919880177746855849916736984816616226763785270463556247837013768638754563140833504524500280976104824480812968609266096401301895638389486636043367895954753123361141950456747396447547428364998943869404518295473192280632064697406083381927563949126557923062240289033237281569751013756129418292300651922924359972425272388404381171993112512619272508912245400126833064996579319565049027276179143016998027575158633695795717940549596521537166104650125019671564696616346401089838056090, 13333369031620067868732637506438544284717270541149970976476282671208757180496525129351907306028566413662707313266809688185786625109573095272592904007830826603082679865243640086929451185016209879971846231964998882329426884329978541653555982134064260670000975832460623107532767300893070032254436111039485744019796228204383720025884832003860967142543941281892739362364174679555630040302807167495465596450116900242926303969612634301878616844704737113608151069470124855584415328466799638197689112030322057731354873023539290402531761243445460695003613956200473482487587955042453927774234077665914608053252896625429337212115, 15059572716597387703885064205040652956485701937510442413628081243521484950052706108099833647469810819723767228966434591276398494724196376997357704312762352007047850112234665282214582240887624473896858570340866260113559981490487724616074317123583642960709742929859444604937523736599101138119656312487996511293087887971941484356885776245927758879482673092828346295480279771117702697195142987132523209498361196154135400487623156925916630044805545499542394436777726284985228024009932331257802386365131851844300750514396245185986745377421024542025154436966561042989819006151973731579692742889485814352710795751464498033030, 21630816431635810721548877243196216323114274161856973963066797809752498088112811370946664440756138095263125801853577397975186250550687435091278024590025401718359316926874433339831440216531008413837886692193355023509021102774418138438351461266597815175653568874805430717112681578127636777725732858484865188395324232808848387678404300440382545902314158716112372715303653116510272448726668569478916512562093939769970429913759206601043090871871789323290942322078185387377169295712186364919224584088562028198929700390628732042520980542618969387243731002950146473454159458806974671026405636706118185431399514254356407931380, 12633584860825445183166419331025574804464132360075650095977756636174410704121198543151587770110321626875886605941575244588290399391862542940390595623387309652323293575246871076764618491008312957570927454870033010518957584054961204699520626451916133893447616966445992192669842502989766405594703615878015117589779253057132513974449220218923761586628931232064939338511281838829709929649086179773280465927949120074461035577987769045618907698519468120936915094633621888856794793310228017992079125283028514201624086400995685023962223065595077308248610698743160252230494141356099898122895351909647112193833379011837818882784, 16180535173511973234315855656212466958339533630239970592997045531637988010414858906803443552500054673355563976431228073032209912463244711530917992246185245579848489531453625520983120560368075396167462124570351568945959423207262850069011012547467763436943737327944013126141328680636152331732837726870378201768960172061913028391459829528832782658243311420384800061595807845703054579391099138034936774352683191496008792590868418574550109919056946862452401243529796348869276594120502432232971661016041650992489272439822226409952999948701498757310852808956058926071659376120287305606891555036376754913025993809541418279425, 6606222723479333770281655759337027000921607210171784768070067066258108715909684922935403195856472634708936006159445305969456630480500287855904132682698146252644729250378981138255761614591713201630476779776341579120367663578965638621253171544122818873909231731405024096862803507686804943451277902800127231385302522916390395953701332978770349254754514207426369897892931864589762558472424699670439956566536006496528896580235344324547499071002083121380479435296962399573491451236875597168828565765258150534584460374196860973486540347872606984233668527736223099166369921129829001235487911091047218475235739380197099314510, 14001890819562165991672040612167702148244168686468261435091840737065193398535765506133315399713972961076256677919278608259821943117779139670057211296465849066598334788852138917154678697577929407555262207461100643082122810602820447529789763410385203295463248711666145437585906422406600573139958742262531148519101710519379338793304206778880980478955804746896607812084065760476015364671221514550013179184454113946918236038623047339077998673270230138235405743265783311462158708333396076908047819830526204344973503286950641878070329280653705890957518397247204551901422399342748867439504821077688117829614094281627351717433, 20110169127556282970696864606596600520299095626069773740431601810647641821117095564087223960862614856485694919777199009033597256781019182026289847847942999572511000151754562701668467784983391451047261958729334750909000852733012855916092437516002899398302773457398061896893040064925581170402869182370844409225037195230654692313711116127165746236834464997623773373305625271073441980282678804106827351470756872637402644186553850035495290266727186981997856996683509239169119573598041890077474886050296130691579055093228171345409713520487137523404048321153915170422614115328959956741230281086081433010913566251300630621691, 8623289421187339985950071100287759768502240876801696057876445900884545723721088946036036196877371579812247065635309387978126208208264778674577338443028653761419129458379244100408835387623677845047351581591346400432492116996581358609897223608288079466841313736966055903367269731818798067063866556970974969425633997042991069931308157139173838360236687188321151001432121262593765370168972439280384420708518953656123010169432847624381776464989407545184353780207088370043656610369399789581467429464137558478258104420967557292196540094469922636955698998343723446809197888001888341472466837326480051914592668412767042007096, 18048501864291842191551909629719065372675849718759606414900945799505317205009889801151995800308969005909111671043050822529384931843104026437098356807038810681937292363775867195745232484762668078020463713529380093145843291524989075507220263526576818242916300130981111984429542169087020943071751704244727615967755019885990619136093840089613596835081378210262857184863134830057984234067223265908493824478963339971976917062969183466153217283492634415841953414547633749936479728709420672165567262683637748110102162733149814170570681548926424909636999909850622902292944307722394804814074073300123961370052340525902667522986, 21714310811020809744157087925015510748448403272927579175635659799815084214159978104749332848625516634237374572926567564584728103976887583209324089810517297113407234860370583559610963656861632651864104769421578254129650529827623739932560728529536866052312641161179078985404648302500478849090006877180128118935740843344428699622528940480960914367060117921331758655685864296745116770417352404006851405149852345891972250146935978989772325017801257732812311233106811564207957304255992580278198178628122827467456455866502910429965471120348311886804080517456823577814314737888549534256450062436823828325991473571614309447993, 22923658132577208622303357472877380402140829882666642148893503847437376716518733508717658667210320386984866486429835700824461981001575814697244444000683599933571321986630401246202666060951600106903193042725181586887302245395334466124506105781434594802353190283797428500267241553391565025815611745270239092417748303780752964527474133502413474571854203157569630679544389540318565958066136747698371403165674834216853477665291528176759266679454102993589954531482572307722188136915572698943786069768237644313090126720184349471381541881995469293878348202963178768874949203252381373574679600689070386352467467948369742340058, 15272632160497802718387172221149182423888911407372709931479217349449432353546982473717349329437853290497108622857453735204332169125933697699962404724268321629184484372248250745603841569762319420114257734362420885277773198090380581871169453319725005870423963182828907795811128556094783678496868227395816081583499243543885683804165396755614257462798104106265873645450624500439602222368268500850460159700020342517785465991896852987250842792895384515072241811496099138340737319814180162009602668045890925709503478294460445133866668103700867992656568850291743488749757219515730726268147167704666670758475357574245550105624, 18340320923511739157529300244167328417787700045397042312182314568780531461052011160084205712700659686295070712384058057175999460191341440600141131991434836727361891683592479654129306634600237722423427398102245620727151781726449836597028477573648462702865919141213701906380952894127778325175635986824797594098068950050706583316205599199939864272518249701671717302740413515380543426497596937639211622566864948333591680092749178332700147309576973204205991218514345336093379013136887628271412315626521529693857837732383002019038907500524303431468510824265315400183023084674861540049582563239657740603598329272659526349505, 18403183042757490955424000728824239415900077058946073215298363891296323306842230519916813370565753409496679831391990435482712711082099633504236025186452741045867245277202124040328695812550259964195273330146439080610308393698787231768701160100913742581001989519792304217329712637771579423971600471665265656890349535024147234736417434660640723921348553967131585312539904863201624172546452990458643596023237119509733065397779083459908586830843242991484805125354721352055588221271732921100496363223977921574650311207663307883391444465856494847425022253645073844453291157475063694968022794307618728310581994511660547561883, 169119260806075560765424933276508971244891453963545522624010654127140101465841037807444176690116827596714552036053068682948865479562880005228759256837861161487667362832185913240874415965664649590442759793252125774801234337272782037621371018001125042001242843290051743433167418415943822965282631436507957896607574051026684911372665332362721518597582579589309263262854539115042305400857588798962633031295057565321695910536849070794975695729954403563103726323850029622715807057428715528139975549494062672114723842637166273176075445026100994242102946608786872021359889881307317264054564904842995570908868315199026150395, 13727710680699172197186159141007800007593694858482279875707854785208736295727433362161532255981286358712562928340721374005627476685977001726886076572417233836177777407192776812579754058055974809238709930163117100919418665533266760991702206539655527283388175711048009783422627356151843595634017819344943832123067513976240098791537021065693698128271527897520905597340234999890536856018445000868040753737852607536985152307664795992517302050699218645971154931329857082393253155960267726863014221184326336426835780316673547171992901836529358228093812851586977909351872404661295625717928503732224154030566004083134723982462, 16066011326001250828537866791913295898530257119602540748187503256386205537394736353455491138566715228589338577073655617617180400177901907359498399326134353285774644706790941013819139609808645100758320605501005554035686206621771247355459641786941552176764199070779095019196621429051607843615833850923171790498680664260833009137372723148875029546173519879348209087836076991062442742949498467967335592643310383788705628190354481482391736610714310885728954529889195566831426797646268028308743974571268167403292200446710009039374797932210960882956486635394339256717243091853610576812186862586031529418341990361688669017336, 13162483286099089254195825795639719334162027857604689437554628940155056721832248413565416098553045032491376620587182611122719120321464626276326099275815103036581860766466230121362682429458242461931918921545834313822489834918777683248095862978305268189753042808439628046560984889778107232871584349736177797025419845689502741260645289473483662763629781073231072050181736829737160106415683232375722403832890136901938236278054920610715918768399129079901127547164960233599203890383301348682147496394640895740384362520467871826070102816478231164567472904793608450273637143470201188338600927118111875778207663625144968726615, 2526775069903802077012932339641135790415703967323439871434750357780523990289702646320560626946221830576469617433844202912227694569308066826562652017950299130069840612181688601925686098201858606655077324070509362639694177981444562624404245245238472214886428894039750139085204970541183976599845651353084379791576235246283879000290145555683734567145133515400576348301437051365781303389832326712189771702963568408603427610213210731688421232218380183743413383171568725137222815387003975050095050480554440385872956889439314089547715633986024479075103053139076877331619465170522080365689963544617833876204046845069622124042, 2357780048754096134577488891713172036859309371836833220005023286456121278484986797330963752834294189255633814342961216585407427979606687921740037483736504737352823968678012750095502863889692873460826947828583977761614994327663840580941804513129146737181495312994049948966729121650223683397292862570617469557130904119220291243230023897877278904276190721688784564851209833718437669990346972320352815028277643018746956669068802265821837298285607989917209590108809845448750602679612672752232846794168353567999673277303392258639640410262131710400585360124321089209832937180397556516634847914609088893488858980584360764857, 22889191116076535520679239536607488181111680644432185941811888517129758183834671147625535747628130763121128425675214757166228709512271141645871365616113580824512176172378992904850125133296816555952042381081668366870641519619581415935723588124470556734574321394366045509706035636658309047369404381390271316453022935230367758198761844223285116719410617831628195516245416665192086825056166600400096041188808968459472192640433568335613778255617809664906796032484138158401103104524061584955908134207936825589659175703124019509695878026872200252885864965386961175907059601956314144878081379021081883956358195670975977978797, 2003372223168276598184856736597399729340113341691357360160074543057513878863939683043801554384571229247982829722287160188663328069449931240178322494057565214309965838508974867882012768403428475540682941330967961177137449408259292401234850050272676382436210699249655837452631107656595543642304533049247966924152251923529301123951345773987954704302060831341081662140332612472921933314380606958369156825431782043014323707530580320810132550478239692261937629655938840555470373247740726669159783504629818337953351686988961879349121697017155053831520300836224031183413905839463954777391936926873088852528287987363248592860, 9234453589274819982571285712191674798699266051709180692926853272860136666528847214573596814512175187904321958853218753370939036528598345254854636965433562593877498139964642586164076918577322018373893665178828407278433882880243257993137270540360150354792757057894891361851537483148859382938937697090010324996563888401026130153675831676851788226235235814051962275168277254033568903697064895145128220790612055333506591299095789657730351105052358151732019554157670557983233853037648544370641621606593486820801602686472009740297915416072328199078861034749440810280040311660857989543787589794162396901834267839495913466933, 1177426441027795860053067066074899363561787999209494546235582547898403695082367047454495203623505892213950355200886372853870474658127183865204132037515289526436929454948447920738529335654597111026082220574584071148633661335564631441599340104485165806571377960903393157783505984461786576070740098244607448759303985356754162821030444593363299009437562244109856487785342735943391833407592073864176043581353404058014517053007248459693945695436720176308274487211649373847623459511424243048592319548789869478684251703847881797582412697359177273502601000988004428534606047436954463213711107223921052958334668086664782644520, 13736462147094471764145164287934484469368607114776744378179736153802931820211082654777936079772362989740845658174569388615213851622773738387287921187689942226348734546123395708994455105232458680349637368545108726111052488740399996097465681902079311329878544676886756438779426083219922701472730668384682107040285967490985340169452318200866643463518599071898721873107087878662365608036134731706772887718557844823789859475863169916024840423472409094721752004769216875530087020445635347764137035508411644596614074969083625647360819327904934794229370010361251696215434902666520805932450882945019214174599794574022111756340, 15508116934942414471662722776019413561087889351121658877067844238711475999506254846802594246257410290378769664234712604112790520001512217025321513179784362667507333928377904448062328426150420839282887104278948728123132744166919570944051212216326111754971925579775517236456850727272737736903742906906821096832215273425730549255103279044164446363680797820186621052602667275888093111099025405025876805353244048790419396798483272017467207739649319969090256050150059160622983047940694338757033831800120577152170376692991711435977895364228968034870836231007223471867249838522023976854432493856529702421310109855337031376088, 20930626143594326421186862667977573106045691725051413083264830908777176937662698774047460563484077141077288242780896541319577177183837175606066151581658357534192178288588168549135821662735507636673458388310382139545695991257078498795330560308891461501720147909316075135452020680228791635049334269406953662783312666176799082568175401647535155077533887134504165004513548809828587174744788375867049229796837762814132477232150897998557187533476144821981430538444197216364061780159279536189672354155795744331175918691005338089415240220420617875747786700122642810314763932222443715314904602695319650423478466889865704347352, 13815332104313343901758797252109178247498259081492019808545814297154406880548844224362115337524520954233522581361664303102205031632132712621761041365866201991603928107635332070268242001631284523956092601209780145320352964063308689915941116001575020904639184935946917361436600714922805018938263044334862842966371400689249613800940392764394492562610001311143290230675140996360584013083716720458522079004660539061690092673108305888075665889775532296035994284549188717394247753884712615005505528777845237625784113582672036795552613903409142641095365064640754620058628387195031994843778690037868272001377941588670609793654, 3370658040637969035294351481285796589929437483981396178521446941514070874955175178317202997166429295138093583236825119685644141221482859520458237160317246297209593713163337923051987557091545590265057347569799108494533218618618607068254760201893523899167767461108405143575355825857883574822064304249152439058231438951615867977914647674521835330669055801806187962884844805971687064213110809145138020459457274621653467452737771333827419866539248103034242984560242261829937344590251681865481504580084306679906338296454434809972036833454825525873631297958554374421850020889412125271759308977494295377195882670473684258555, 13380780007548215824425634727704332713245672264389600363659471853861002112647930427519079569014092592600212669914288899203882902670855682506222878138519586455035321630809158472240353513276044216558332335630492729173972605396399519676301228370414760882957311435594903632540890496817014041554522978167026240006899819868504456884689864041424332584921651436452472995340269247510016310180308205467904945101072692092389134827487058009774907856460265633453531314451844465646280313545489488956481979759678494633184704954985399629076660551098904676323695322430611168275423347926360929139418499287426964299729798466389584335608, 15782221671555850550858225414380434684515258375610069832399135209994181453515434779872125455710250334544110169941483181698209314474300685310209782434214729984182592767814968060298329486835142909243560647413273735113119398233833646929789739773093692831774617140302239550186653176015169230080317938657935449338481382629363611487160817547555450409437780985895318702445403083444756924098693348747905406056266199746627661573418948765012152418192415295752382760117116898350051907157348585977349905612548764477772137256197079705726557780370318749822779732085164729760584619958219775158866797284904448012478930982812018733143, 10348593516268899245116833376662277935382118268415285364833804474841240012526083926590359687023880073962455851146669213368557039611697660815424543538142342837397153694007964991368661107664445026952846298581722242824720608376996173664173237569276706754160418816234586425325463750121182618568830449740345704970484595993761271312000666185334574698134083312409644411130491468796207490872151378332419146199746158569193212306850520953646449236696222990242309421434609904330032099071870515280312591242428984539210014590102678111414897453324204151416947687052527566974718208385174678938421481361690929224179311005787876162164, 7741728494952628368771937068995369263717439221139764130357816363178684400612367345898808538579851377860744415567674233567188500815151526358362966026177591394706610228055904727352313751503204057554937791809598255538031937796239487981641082572866779139418073669078187380318600942899324533285906241583808880452763961911291596661411091819435013718721449409572065557213948847083816852374218726246737317175604982394598423142611494118531348226485524822254865557909570904997061367371888963708373355062046472709306807900446165108753000178953692345830773748324142910909839370597655649384722801054928891558095940701892535456453, 8221452351830023663112660919367479877227989231912975968969144593920332229552755284630543063081279579977313863119066133040722777442080844534297086049149673999774789852295397792946342204368213302194235842185121210917068121624086197917188803080327100660286414851196223455540169480875069133771584168588688644001154176034391260969057727060185572088480373384045590640342292237283410344398985121484116385292519595742833769302774701720371545024856569637159491459921782400292047907934986707914812173091164043061418667443492317957152230542237925187650376377093878463049191996857389801326573128402325470531109281829526439615759, 9275218795943504350067089002540702601835884897370897589762910979026558136021500388531783164109686635954090680646796481461596057309924744605873996738109312639551631777947516620659672238430487350941731842328217042068775126994948659121536496095960475075519979301890532021194527895963752116223344015335350686340942692590195180937096263563562887194599659000688222413721022686564400307295899152969826082178312168859018487667212225650505868709466466231587943565851056464378452173703765830187282860495395227058133874211022410840677309640961604458590803673863634838192382374005751830954667133387168045878588805251276469163992, 21536057681191689358225472172676928856709300113121456140355092875773821005404099708791605902262824762346104320054057001788944620119573776930756583381378120548310850469666712695510190841878798850666802471630093888828209638426140779239840230371916537320496425135948471717457994566776851341207406366777804358102166041910880338653978656097038363390319613043442387690029719567074969836590668412520383774495904164673578266875991618748035623446048876858084584237953855243540247189624339608268923701437886593535851061177302455009129743122676109711659091394043802263670505241418635435450341701951389608158754010355776983518124, 19115746551032411832595248296508653994785349234202147518362723127736877937349741338621951581859259516591469574927421959166097189365174078880442318749635015005616954280742061522947929801126743821173803867815607589310999245120638211629561898527891282889562600331344162907757125854129795434797368566849405142841429179216596147908846940162481987415813233570827924860456273285654450399607842605946913463028042183787816257464239782395115837246366994469764732291987761733944214544128677583938522379418538032526399673128283365408520916826159799249294674070550617145016676321041794349953864955584320630726290115770981130058867, 5066148652924002860198885408634900571661991086308540179945518274940491253471678391453512716195920856015990068142512267225939785954771481697294583225180280929613693780446670593945227942495506081374618836803031238919069410795126437015199529373017759752143384623046774621784833109771936139929331766846630074135347731944996910455231374115909932995831814746220439864800214826644081738048101352378347910781957387879028234889468077979484454374009063243464824028804945533452362602430547920083305779583665697752802467694668344594140680340307182280756236134583327674223085961779541014343181804097927090485027101110509071987508, 19269869684463817456254955857072360064422027319113973999825632346569276754703193115752714187919472153225139719056288993191790909952045463037542710702046729423386455270846480511444493393542352373730145030485881134913907341499734904284923719413178746126852875065568241757119838928597491250666398199038840450159554970368922647136249089173618032063520321450559239086845650884610642457018908705079367286699432060541910753846023729345370861173554803273049486981617640398251951020741787629423195235382975783608323727922115357360269394002459807991195905784922562660290071414085144830358888049619847137365490530620921985238465, 1953328102082659593689020079598308826144095655788494706675242995952491439952034703073250127326857199728775956694305273058437788621303115760584828453616903129085638747400977689476443491542536088933235462336856911635852827955968626364649555714960192439768817988764859275173472644663905138589109207288409436684321034169890127331896062915296124074980257654859691185417477599421918872852394385066297861807349813075727918541894824397317333224448713512144575645205681362657581033867921792082223618361092534939434490574887626916786866486770195575141897223768005782025196825179862451935456027831822489566334517336462441090790, 16279155657489506277215894389943172232693000189847377998168018702059411092239205621190931019361991777547432930154633693033431814216638939072668390416787467090497566458941785469478749998897769209396219520091100848788945315041219042866792463380644116955649401905081474272656022600458191628457441222060397397767755372978020973907610597943963696520066028692936132933054820220251959747293970823747255064399437324140639560558367384387673193792517022081274711551289849988956381446976757662864178604076831481976918939042423859223600544145625076306755550446399666842092189953351044534008471540113268475959140565641869152372920, 3189135179383195856843002131689460469610115842951221932752950095336813940158908561096666093518198093329534823843281041023457605661410624831373996767184233919936379708514100024452260333886106659665681373533552792715269987843579546044763803722048108692707269925575519389564243206543332855458045723796060632009502724735052605238143454616268295481854217808013398807441159915864564727942016874555934837961982962869291322601469148018072818985664209928705799280103172851704644086815398898509772408042421600147443096202455935931702420759379274587592439277329239604986472356615047680946846830318323646159483675574915170978670, 14866706361476542527158398938569424698764183513859581299187784520211114165940509264873750766898323701506077981524715763731252186688825020847057793876405047523077367764405224326283992408779387069272622728522876810611288755266706585738722501979447149857846318555249614879638838223056098480407702680750625707494548424728972925146918539037366244268582896052404529383264874627197201697556541303910783606996598134838689043904606804159093394022401162470784527557234995254568684916227715809229707308826639483274336689604845380722310611178571812677030728765263444660220372330770102238763363740615064864853255478756877090970767, 513931693822263536336781728152709217894923615191363629471283631955318134469655177312995763168050698140881008987300835080402200999229071928257215033261630996700784631837368887415844195545180940979942642427530363499234010867038609513039861532336879148972695916063064419119615738017131170804372940636929119131756577988093311675628465762001833063973067341269189594305446508807326369127996563378050865207133468091567518794813516028593943937230723424906353859900581998035497335625778191102374921286279972808195349513026283361542640358152525738355626332840294105049325755336972504413286687783531635899337889426383934708494, 2031510804000964708103717678325203558368116909330011704919118659450736238392132598105162884147208941199533932738083234151250374905556585021371624698194889489132847589822933868548476487965459607873001557197039520736574801107697028522593020493330249535246959587720950197214568803317527586570098128701677725865154225860362847016335730275429439965684868696096993104838026576929500657581793012323553430653633397145816586034151459339867119503124025336137958046298756782103421134981235400843013232748953516627629114517929459564670908461258181853691080606602983505145706497749612462032237631395287097663552775445351017390585, 1271553735404465129250941009281716359531814607466684204843825739566758800479413577006261678791038783360785002291247272296159212528638526223560781114485577503855942072716761095735485028326544557155435698695579137043951307159827389946635601823013639393726798497042967618637566941243935862842660476860331318484950947324675430846033119200626797884495007760235235063908704578546280377442187767480051117187286224197038054238789480024600638274071621795959632294107503001172805528510934869590498761073863422451400453095535464101268701746856926560576766821310643278658775781063026221432526477094759092795783112615772318003714, 11007329872009391877049579825473773789539413414095181032854636609288653294526741080067385339606802341629636035238174295091048525453126503433795733073796039900847039382452167912098691271790192861675420845901530856599010917061789320224724749280807690558915412537163041107011277246857558028920592896315774458529603917586217222056388336656037301468449006286294619318877352011021064449164472172182509568279339196383086468442331544068953959172807676679248904879181036322950441270632549756243051590833659892743866568276273419473503811995064341675883388714424104894208816242412896503145659646354662018095425791259865732230807, 13700317243817697233287648897821257591984539031065729267502288818474485738929646796648773206419819686877393091999248410731683496680752240742077187039489484919951378141030795005466866799166397149570476684260110037180374604644135151727818345401658379102486615955932799330073837912761721793211731212827969879354364547309074167753874006238363377009638279999061162725569343811056475332416954534581411530984770762925341327325430065746959201034368920719945691912971475900113513993192946428506812035362514200736847107419257131768320393938323239033208245782425068513325302906042392267488664787917978684318375605276738666743040, 19015002897144189867415394774346687137901685883238519330653068370904797176397564443996027746631362864198568742034195613029215483465654586523270252839271121999011656874969809390862640435364864070207760189845212941702521816126224955307227042038748628743790226443327380725483736357561446412239891362340260738026672347272142727174136778807376971262538781693205722360243761383479185919242666613987728610971685782880477096669415108983018131074533533180547425270512772746657440227048233934906962607376245654114382643477330783189345790513360303796746180616688210044687348740865875498240973485941565402412636001860118961286185, 6814367752874370811403911054742779075373446248076469978024519311704581698150489736073901352241969420482521913287498293515567899162309938072328317317710521245633803216290612426206406845004169583762812389719046458819112598334621300742115182158174634554517671731668112686968158265674433320425557281186431319031013912650801207212457379688498863771280704056608039995711191129607574961806046014084829000861821774868341806929244751986935702299594073148576642496829641254530706598920711190501457989349623494942922543495028141433728420777860488447127884673949353020000487933256007902032673547724637397307672446363184526503323, 8358641203017551732436323253919197734481673184763944497261713973397295402988217290571876206768750829085139314353744857246046613041599521121380107702984319047636584560545722636959074905205881397546304562526238051961798592847919977187738618025667357226926560888895631313670338662892862848021575469265034070054543523145073174739992509887399996370834269900968749176764674771836554619012940726782658667944247517745155456211928849316934902422655107765105079666930428053029530072498042215527522286637052620666128202942181528642784029294354526223891370601862852960026007749043975267466638062831950386402191935611911471460659, 13804573526748750908396792315070752792015151133279797334237286910735633562765952550144555061522731681978304175816376256860159494522356143824371095394826003960801200500535476103195347770977707268560620707787969803979654020186548159597801396287296475899621311974520016408427883684564533404491605542589962589248716789417208505227065534314392589803140264909947515525321677973509318026552088964942727002897267125151529834762022892400642662038407894728268559823458887113827800650899806767117496368503319193390784194918466301623064363572057007828731676719261888406230775841971176335932229128866038259027885840832740865827696, 5919068863258501551702297426455763715210607346013672818122113165636333252493539616949033858250235823263767876136634619872372678498033041907659052371291879423456261979733993762267185713994492718740021099150779005575978835303068643903911690879339667254067386701639672189095182843498652308467119830497684110481134180732807255168457149865045702811873046164207528989930874704232797600836411687364842732693820641349784388933564700758031804049910029128658515229323674841756916957860691536636596203131561578824194832719756269349306102641822086296154367292349128020190626129283309614351708327195884706738782103413752141085560, 7160426326789103700749443763015359266710276823826666802761323527403423556307765320571606000978889292824767463325972919100322392409431078723975833388305065192384810531602687845165890795798869207691893442114354416372524850610556719333546650738953728890036916198616404710733819185086650069676795504300639758466274411073703941290215999670065917818669563575823280641816896659726635173969460416959829508652842830187189144521296504567235512785598375922414320699597249518074799585217004105138639071886482927154638085514272059330046515504205017111557251902926480161531979009242690700918676020729023545399324249664161556225804, 20127718262282319224209937859865674682312809951624203218206887553764625519629778002252727201390273028848786263928710799055070166727256542838197859590836859036027396443875698034865770565376512145114169390918461899487999472276849437120733339964941781589538385171173546732392989803536671006481120439756988278704999281503860953943575898021240665234622732128416800181079070738675527659965579292398929579972571331635385978109935359993143395105287030256133323165837553494990035157368766703964304051430432269584091420791497753435921545195088089047926290246136310560095329649671667431830573081094908212071237696925783848721876, 16983053319771363767273404225098452193729724956482828776577340922482442736317311321206747975662586611540123511338010782189076093039523640834551274110910709804087015652232648452813123333244656020077156642663221233441463338079551756649225173685014275301790371406896575787475722437533692680114733919796827265520453963385608871103654997794683844010964863941354628773961694411588105367257149563921653091696955326256792853089166770342068907735881961572227602988312080302872598417946609314907328174542769799840417514439783278211812561785946817721670803263991884101479844226203958678178073203027159179028409834168126241452240, 11915604857440773829611169226792817141160291487518193152750352526825552695274275781549698331647187882303816317324793294003292346458732944814195700912397706246102177426303096454858499775634693218531837758653421337817084101816783690569161291368106753659434084349898764315523632203457476306844764474022622884072535107584613680352107478871853808014515297548429546071466643813821534965881256597295085234418055294744581493456422628887144561975460780082067984365425958347939523435470569470462700992439502840253595184234194981634595862441477879489761543827150507851547558120404680373329145493562221993669545266040756168915608, 2047469721276768455081800170088718014665996573382039626149848152805317939709478825427681454988954848361833066866481531018352203160122793070111954840545830795133215669438111107656777760896946432837341384981448720698695108942138578562146040743434422859212625743192274750319330548367010479433771331814779918306777598556315212775816615617206517792981824784124120687838435124609677266293043494155790182928529254750464423099057350578850714918229072191418994453180703346275571883725351439134859084778719501227674693805990015004078327429970771136755873240144315253076382527529526174841619184506494052796535330938940213834141, 984226720488065870484768282817775235625406834451672410562666873365472777208418209760172360285463834068874160883737232984197369933080073608967942172654645093267622731618002310263363405115220002177777623540026697632495483201597760522267090422942883262485200533562126859354999456695060610183021595234252410432443184332850778538657925583880313456134251848186634078633732688474977740848824313990631970971482056635046862572825764381317316804912091239870998134712145168207561079603559627139451415194456467898683805496458316340632044470537353710093881180682810275023537648631813624969740994109513209605421173301850766506284, 17846797674477269629857520392113777956316973243876301459454390066320663228931776312025672594767960090631796195778919694666969932187277963463755970938791255824757560163688814107286872258302586976021241633383905800436411946356915564323765828164489379253868508645535059967948997198079775935995418585915263705230460081940375726950368859377541010407989157169212203871880753633773007339909629787899532039719802103029617288515747162736416039585426338683861882368011623403049113494474428575638443011413913805468720060804628332438681719813555464163548640483234940704448272396397644648815735490498010067844190053166445449721427, 894771940367174989898539669097608851304821913390515612720898972543666441164323943678727389534214607084476884775891959311993539103970403972579809951092767485267402170583585087244369178943392394926071939682232225230063271578619979040810992421970877964688772769051098103146968190217172303104053893133826508957559547541402237570862971312701233986256069572698451262346903075969943143502039076384496616244965536824551799267782259777989931106803127200015760867082399728899516051497265433709775704359725815306696221921965467697304471840882775661213050088127792173113982505172230604098109054987192072787809299661811269169351, 10892268410367707680317681143778447308035782605369058090428992061270361415993177838047670238983937155117054111709677528276925617316730393261442631641137121929774897389865617835616415934519375545908748027368244438919837196261188072524595757018571285088987189687690484803956784361200160603568111956347334456857980604846679197929608185666110808284029658264326873717786350901095822211664411023983385941743648687982145578578669548383980281282177862378538069890816856886120975399064097034874659435109012209435031771851682820494647530076488747085075470417320763635553805691968590747866258438992175287853513444498497141018093, 1613333582691763458194120301558625811328600339637365404331339136600565896008565956804093357742776195887461420487702824822368153360374764845152013616099299922170104959620196400770309507725651380475622527669005882981428490575342363774875667626012627481833704604843178857637037048047056881240607799260042383881748656263896714460096304639831711287860808548606766828614295243810716541626463356659256656190348885809973804746706615598992074889208376222950258473020675744864975241766179468136558110073580239863686583348986607284251970423988478911153871309807240987542039559970926702242730541144361619174445555341616243254294, 18572732645781452401859810438675443842979051585167224759483468326357151579695979953813301920303407256556098148194185349806448695110680394903134677076751092539421868178572310561599874782477313508257772350840290921046210185460211786716961542901177245158094870997607604053192833555033106842921954539007017116005942583966746289937947280225212908156968775276207648749190603418534466067448510004442061086450396063572996060937668880738114268331523852995248984283737974511565000733071039296578103713532549661130500996256633928232720097377821704111251208371096612699178668508806271802505065896828184928366226617902952215014526, 13966998178968986823171269928480490488871042615696856777163270764351503431583086364829552663005742866686647935687484707536581203993359776620033815004476915872832366588648702730178604828814384513605087276503863305094724329165747848358564971879654606753512118737642415418151894667741878259333548800028357866771962186760548999265540194316468049193262330055937513175917854263818739074048544346620648169634817741501637181184595910668267412789340322373721825570224506024086985209494448845699644373927774075643483913593160732402917423663969926267508022622406775444180058848755463466319729141864585522934061090221881977399706, 18012693196258367866039301346455315900033066650753965419958587298907587903842298403045991755103770458930263079066431762953709186728561643543138754377210455400490792594470788176552617968385058437353200210913680709139609429934159998416608221417544354048537659133793444418197091860157812047154143557875798487742489752486745614937220946193690411204896904657308943127418712528938196774090547306576249933074322982287949719171148692401959542352357136471922970788679478030387006466936345539745224676457666339340676060878535842820273223446053323959819624058368070205736702332826628982532592635769099377496769837777753542482410, 23246461384708682890563141262111138691757851651505096813634979045745300101967869055758811600473713507288975965799280036171844514266195655931838418403765435842951435980079930581475102301683139140516394240562921476495061101785544568754884824787040975802710943358325391173249798472005246327301911526851481166193502583152375253137040333189231378115959601071827791442437301536995625858972540584917438459758900736051564045179878894295616634416307063079899394167816463497380291938223725337392148814434309309655047825625606143786918483219289027907232766302569268801216682562761723973386110209660509677279523830849007509415092, 9613836553483819158225918363505754877374455038875383164606748537109609749578653117491867215939505476905250138063537870130556136939710956660386544231290928948755437888325327038611571116995738580744915508838361394711422520063896916043268914536400164666093613742661896908548403309143124985463525102835442451975043138637540586603285449232475209498607621697189827509517390678599457017338732658045365956594817274192863026991308565412031148661906495728406430125247460675445352383974399720996974547315752830494253801305666036347694679622278765909818507923261533486661990788132881091161177332878935391093965145285161928778479, 17434044683730625379426097577054316998039755955966949168695697905992571609734117189921828229796611855097840225062631417252736861686591041158218804926063022511679504665265753719717705754338564866870896337893218105916289533951674934355926640802287970304701301441573687685218836834756221255676188629836921385954355212948100733529194709155359065027957265290294610025012323672362745242705744215859861245033609917443525712723936183739370923676084825587068844607349708108314319302964701674035918096767198932991049426773395120707597384306007676320886712520801085026368319052351444599966222302539667015258626226744482294611323, 11481084472485092781260991531878211018991912655058278852204948233362241007694816489417660029567360274780956138508251621545788627561634166913850278238827888829282651688978516860149108911898795545854692543890690315143867097335320541146280004738632449892713478506977469062224059743583927655208978873918726082780781890905401466711982138316989548667719834215539856786052115211126692276600559403171838077167677309749229692217589475989553776431179656174029238006966687055375774874069254898945278224598576712261915801859767926869896970363009260349750948043158523561398482964698916061732373426028753519644005769880002941078997, 9736932511828199009125329824805111836828771238856234680643894708016754808783596043297432099010446133599260165108009285353378155588979768960487195321838262019879166421015808992281885873325200842375353752315442965801690261246955119784881470315162989953226468936318104737828288367617676660330953590574280893335330552577919323418722066148093356966237502596237066461618847760841741068697298762439719600255882767635583278274245836003334376209986369617370249901822930729555650078651744352569943970490254897487161901587514055879699957967870918586081750133645180283892483783738053983164897989933244685179546587100502389559126, 16731049106866038887268423717450567248643734510712956620368701453638054897700469670146840128555148082772845231277318386274157700701916559089253380489694367311650331089601527179067988864322540327276060696633123057592862421271844071124269096807980258094742032698743684133127562166504465977309477550556276667267469566342090076014332127430550209243396657657960890198984797148570864102713531151434437483717165055705176475697774040290839690823687071292030992828419837125930814062264681055146710956048742263567125146943663973301517925396726037436371454195354803034065123570647985059139001390128425049484862815946340783787551, 19063399261297445498848636430517127420152419716296562757360004039514276347501804152172419296993276440520266869236013351161228887271477545895077850812174153581158395553493881441492420078684176314060532042224128532291994055344606698883409554344801822660789313044183676919315852008710874292574734097562811234177221574203129530587847735081069791651382902852378116704535806560685462183515930800669618937059269769084072882246678872795624584916035447532341651455227842454144029673017003484336255998467419668344116712168731950006865481034727576529297586259969000015479357372207141920610164914593552349223085569898562471291507, 4090698141219136195532286069785522567196109904206883160218149812420332426173938944967061520973247699019924730989357702464191076932316664723226991755549866356085851858579637154036084609904477683618590918353624012522975695878302714398548729338232326703470642060986963198252041661278246962558880390466314148756092648835135353973516758244517367811243284756959841888618017106713660316653773574670668120883648021392792608215595062946672809684426348557149773154906846172531354374927336774678255074423461301137664391828932691956684292353647678527421913161205066121351231562587161840865980502125196322254203697325872195585565, 17229798764512996331158762899329870686060663299189316686089443091303687700540341277527724914639966261912690368655312323864552622875216512695553946617303420150373695703114295369943697108274247926658119971798291046236784019760537814189663181207937880737591703062970670127820812350888149317839981041425057753796430429405870124629811724309413165201534685233799949637222160932461845986000936264193093957265620586702570119222118986070935201269913131354663700782192236021728547025962950719810500866719929380093051416832813523840975013659158027917325973913361598287448586245814060056453746389379711761008992217512944849937206, 11839910286178829177806724981522171527890495033957666897929389737465342912465937766139405512949412962355308117131137222023621432632366301407885210903394181127622547070375201344379199435522858899216561980363221575156776933179495407474921029645659510163395190883411904731348169362363806532950130867218797210942176988445575034958595913564777277214936020198855533239327155363517191970689101797015738884474879312413615400570502733529684841686521274428248931707357864313215675405698070099822067636883152746226820077304421094078442984836279226387104754909380833165566838701169043758482099411170569153621813292042299282019767, 19222273061050958538903605651927813249624712082552944157168451302384168174285085452120794860470905473052958705689302717673851306513894224841072288063462234069169732449870509092585768394207916862287552424589364111725414128141534398466488638518037552325084397210747332186570748620541775340350387137208223967639553308084046264600880639994033136767458148187276030472983406828262040080134401784878591503184963634198666823717403403146672537565623591580424047289262242952699099614238367822260900264181125824669397562307894468016942493315198683211018777879466242626925874652257402556996623808389282625285409847161087689427356, 6780941990681776453120668667416859334405624752154589484947396497068495193228228837592265074776369867156834293696513562812223327172709593603319289217105031769151375228829740353196307484739452395648863919666192696317797418852687182309852393950903282514063326953060657848080746507539412257873509735412180467786746286677585915021912395317775673991922239218898142265625257433187928209801931507825767225210637521087824288532090072228647671589225410568604374542388494995138852688038909895594188638421064176692301484041114386082031876084675726520279829134175571616719692602921561784843033937165163852227901648900660180400827, 18361534038103569087023981213778246728212763119425113986913275485301004619545060729659608206621911570231749095985290024046735673593826703762997385001209139616078870374217110150170142549634384257429125133805582563489705149730975939862522143461246629972824325446621218927118378490552261441718287036903399424212074771376784468692477807381664398980170654210596748551461450417254960244283049085312454884450036724570272649443555930496342384884719367031363129065096617352747359179941206200960729659273749524538916368429319149439052321490996613438954891840498984468735264462495495555621389820150967870740644720216006050936355, 11969046440876519118717008602491343113302020043926668773410910890124872458931418516869514367454333393908913449059099131478202462734654968801016397335467305527073056672776051403572078957316256524882396978007269754233912978487069215120821513245478572458850254563395424806316034381470862437569991134315257026148671470713443441601590360174699597341433758044166977659605037512486067348089702942374043501351231755816478471582951085455416239407640926800672045377784677712482767398160376187483702165738299078906741607134568486303000285723278533986764550444703569989029155744537607270728356495020021247372792219628422836949892, 10238259866834815968206068950004667846182741266325054446869793994551260224154785746473852298225816052095070656210445059485779029901348623639457473946475599245462115402972619775405431814156507977317144898869148732806348061449045017294071703390285353140634652573460798961024811738798125192050170703418013851006180035048019083119021138076949340647203060702912398247699111410065856039591173920796163518894984045503771897867799698165605276481359661189574893839101250597841545628783377434261247599885656087037634647032384158309867385784489431894630735122937999231292667358643740524404048455007104680212383366457243453230217, 12388837241647698111883077560012664615299692129905506978779396752933496315154233448140283796769672276050152272924925475712174887541607109324502523331595520539090470618980213830076646520590841788159651918732667874889807284205506250136735676786614767499489960515738950184065376522446978425977685312414076543891304728033238003249924936438080832162941129259699774813377654110207930561258409418585720116023009666273037204099467746707612536499308220454769853224295639053825241740567682012789208224087624031668970603025075411450577045693390361912961467678967976313907098316351105880553965812814005838735875441228646193946338, 13975136511237897246749453384821399848102256505020534904278215925679808670290089055918229453758909460443588350691090412658404991407059776896774513951621942694152954404544914846521144976953622586864986404073613799681870098117827045434842727020979631186273497615846395998652398628233853066785477633776224619430226275045379675143846114591347324355404377877966751584252788769923442855492320300531512877871369698709874567162277881146044225638824041727303508320298777210686825660388269667434924435239585316141836680842070174439633960174388452306807801692398574229852124195746980438546936299753727043997799935282525223591110, 21741190442877275364651148260081717908136726159424396786204710416763175463469782697616036627844693956498129457260961621537843424404782452746035889306965994594486389528477173519681759021903868519280660258820282120995379972493432181424040770652229174980021005984587387703490766017460003729275866659468401453110753287896220276134024994926048899864227564305823285684601465938053554065107649224710287072496330211257468048610736501475491015200997775332872654241281415821289493979157446610182667854303730454989850560887285096597180752410779195278614444260113632905429366844087104828745316345179893919438118682480372458865850, 11953350182695793244695383432520628040956416317602496033852827942335193231790772800281049874068248259767549671627468668824340564842138850039464334730263190077312751638991617938127570651985873338801066765056567044854440819113849087536686526965628445013253587114148214260691438748466667061496082882099836036794932566145743479703341242352673598248254359351014368599685111613604219168497484911769899006576335713998351132426040164134267003730153602538584459443032059436081501309353539236140101030064957112706379141905983382183707879301411406014299613581097966101014076470781261216083296326004041657291006259544004640000799, 22103978987408637601519562778090916066251624879245460913229286065302029700872639750384071007066589660753388797641620909425507420874830596969137564124228147494124622433819326480153011947265043985053895774436304423968375817861987354182405949075573027027040288028020396267474039816907880914296990338321014960841371249565610020763630781359110152481176651454667173975059107314459798741220627784363249692940346941565067169193363461489990024075070761658970273693792413819646568505258668165191863854896640743683053662618460318926060587624995557995684231800996620916767841724718979855328788228711167737670043080382896955394261, 15352425799958102834271708403509878985864133074191995349449648627433625020497800625038829371547720696128357785686623758538042491766603588054595796939127259048375148445349587511019947660838394140958205351149353730327181113911225631217578763609181554745075157139406886161579396517734651476459667611320321322685141980938514424505989098324501289503457398413100891659968113418701302696093564344093900429288254623834044230111732722994622429002248160186039491117535786375046903242987827293770548342169978633103398499947688200381500595957468255447090323953750006461394882388336548862666331217643049324982148128413794777020825, 14886563958721899927177320176006951828572573872280757259997442468531965613340936373658253286753575443144200186265853134896997590472658540884007362019288025296392115584076301657128349751947174175532531323536818935631052253651751610167878171250671737478792745089477155064006632450599784979542455670755972877080028084200968462950787344730440347156954951787232286925404420135999394533055731595789078453616890062446788458075141472016304087314899561871478273862598444739688717302623887883787758762861700089331668904123408836110793310134398237707279025975357251038046458802279217454101254179679624405411081986443003144149199, 12528124387861227672808688383037164294328970856211609869718905885259280469889171288924277405748425675263418533521008215499012232999529954782635029769673830215728321006137126824999547996647747820917818122532724188412819941919250554042279221124432493348739837237585026176077101438954676252433475411848329277693636243330112376754284965010866382396274959172843473728585212919466076197780072566516655616662066056309762417469018984548633991364065463882977599539457504703196837805756461895976387850436178398788902144682617822071374605419823857498932337300155011589096569876951681678951663994444367182341376115464546806145033, 14681788127456891107842408502687012555828990523569612802258374149117223794695741415609136848955707364427474217951883062045280906544897501561643105159383845784080023703019372439981866917366335312685767662642195444060334493974318826653257307242226825644987257455470521171997880052433152037001572287198213907844040908412074323491624239495812182119670094326050750154754813531789888590784915627950567178442621917526163908295186365771584247147441347837609317827512156280965889436586635720291812944520632881154065518980536865778297841780824318718808003995119511803793139056793165519427165545587150493136349392523354323156719, 15038748552852651131720779605701389277580850280683367774536866178747627459738002926983904618078175141366100611016354016750973177655600480501955621723790606111164707945555208963020448516048403709738041293050858489869902010101209196018455500920348135481210414648745576184143674443411684986063359403103167309752458349881208116000696833680861486062577219489504487238783442167138195753189639834503877363031438555113876527734098357396207906676626586885488307377642501175997416228302706719135160870621690274101186556669267409751831581390242704164266856995803576271711641713400529153733257566733662116255176486323343848651627, 17961968687315709957431648876613426752759003286547962753505146882331477094672044908738975384700026492568964048929104774095356812097019794117538740505657324569711308770776031264521375811454334718945552881433583801418547961032933390142171680641106312633510837715447039953974386157578666840982940654550623347148457203893146610333423483511356700031029869798087214042736093070306568138888351170363410301186426443665506766392473579140673190295034650690745811008742341558781387981716860911111129713840624032917178648523866367182946712061297049100466525734914651766831091746526071195053869560669354011408079029201196849415214, 143909916253534709139411845028036906871368620749533383128937870682453481734475483354169638927687454105174721320482488401090339454084418713718048823582162140954834800256671120138163799486347303782093823338556902316791229411582953496293500297575604549770839280318241673019650183524543427443656287519691394406421288875932918379983788364489661472055390461324178160826652482009943906804655926541711200886931725768040486303994440526491727134865281726401413332655718978916276966076387529852378715130074702819149900654234238600059490873394196846740268640579726898064649252789677201135504608369687936453352159981584569055554, 5876373487622115728565365364187486604518026183329649622907173058430418686689286231566651616646911252975076493441718384643280408198535532388133033542819358235558134634573830543734351841308962248679143307160175207757380048167420251316914737579798774060279163791465632927747312958661993248944115336828172814399172238261413025715574788945227664262457975707217991228292977033515813080632423633248671009685277729926267895075213283676700357143574750049570847240353552479389342793771026381421755792957327326877331586321160264013259026266753709073477620294565485695152267139504652082123351210204591679853324830574423646676956, 879407532287036644626765693876079656022864020573374553422843271585951525692901717789463228220944898574175806429583135791100591433952802414309924836839530530155248299584027724449435524449705534109981044170264537184680683083471637272278292042106498292282709922707896202000720134857962973472898180327416872118281521909186168123879769311144721121818431672719351435459584664720473440477103941869002699442957535221597721546659904668582472964281090338852522087975674341384529553068278405609579995595241439563344950959790374820822107275448270229329525535721426507368566137661971134244094332948502705802807214599721288261685, 12969451701971072474616767033613582436959148393071940507985110955662777109462094449409223586575128093304083359253813464138706164376933295856188292277757682630530391028590476412411256851287272498403254661501287837010098227040587641577341113786925666960532071613084403234772830844960420453431554997446479495970517620418076258316495878654200264054796389071103116876909026648192847398516716220262042815836862150362198413293818183309177081642475360400450741034505778476817539469674212392453537577705479338405211246470488882298646155307515364087819884089619589084121924452251396033871490234764864968892286992881159639735408, 11071617029215462415468097060204917218239087561366217877638524869492617390626206041825168407250773241745968677328306227284409381019760324286130824368739604425746978544809953500381786985154405343068881571319138387472664392311143717177266479181184224905034419239721870708326528911054314970237713338016022636317575040996451911373658099378050892227651355294535802344821336193614304173974709803967444910383692412813695204989345894536447296465724440468139610838867781450666308524737697847323012676861973634887957173641347926738834645088953846337922000414017077399771163969332138977247336001811623015896022450799790753168630, 23270568849458653344098195928353038861590949775021899879681543392095638889300827152244258097126886381050904648197956873155935774782879694285345788744770703731093653599252583641851803956696439268647297637005336224718309305483926786475918949722904712511507221684441450726278341669727418500421573693403394800429985057676827840810965681885299382673739453725147276091553134877412471440178901440960958102388865074231383879653763887815722376744955644816203485466205648958559027130601977199648401249138797777923364033811793451754865902149644110797172958417243068930673073390457509541593886994004391261762203163630275061450504, 16624267637208101963118343857821507063828150622234512247979706478768376759259108077178939515046070496596302249775869879322467961775806149223856909541711042722084112615157925211897997142773695579020062916271594890186546522280736436746898582358896270879469153314026217352557221923845401703410137132759852591722044316916282949297283792916964650505651689231245946057615028964408660193694412251195932658147644190480464101098709511899305949459440315109394410983298658285633806876793523251407548180902791866461229957564094990377705199901806645622969603534347887249032731778025672989912875574151064474824858130503715645834330, 16407862323788822624615449341794895338294052024248152569044489019477993786929482304053635238746186009351716170569658547441477347805518119898665941449183070031475903447013104612152394651606375969504247981304048753292957110878609832702791758277011541709861210330193630304503870678071450115787148622653480797433291525069115535813521136725411462762913364414684028210183614161353267011005241432935797367818577432159847858958451719770905483131383844061094257609813922643820555594547855797849300672666066500296253592800268230535511559146035622345053395046404052807390287662538039636458827079763571186888750488223882197999437, 12295645328804081809568043779802843673871540621874101076713067018078661105117140861543042029146573769906582555510117905257524357629419646565892665739822033067426369857959751769375391305655967348822660106704616848767026651602212563276960618309839058837765108222162116042647967022523651520828365072923499057183322085530558752160827841427990067869584073631206866537306163450863304791619856211796244711077760334147858545616048589411688366692288357270591279841522651082458641926222642597488451918240288414281820229579557158216303566043407721709325452534015610753943146135435370079017138209876727884750923377140122691795107, 82608368794227300225399532842467089273644202345492055641287019238123624833834070474128060210298796496598124583152261721500934480198762172867503877692282534764619153733896502835248415061928343635181275633925508791949487927391144477862171539912796111721351239672307763997674199619786985592227673013478727926443240121124811531266205523325003749363396139188763169189849244974904285262393438750847630809535284537179277786547324834183853898336892343049403655745292290100184034119196698782289593889928586263613612423469766749733113190385790677820719576121673675860484653394637642986998814547876094851837875984049163383409, 11194599581957550851073384047979892890103370128461543496050861024434960905340094192000919206324990722303608762479657120586384369117623374368607964271508206417808397213493971317093507420396631228563191035135932226332116327680275437336762341881718000299985167887460223980634238667197827081382162613356410689227597149027838468575479137447363367393870049090424423050924100401900683649417556004645813751283766717506041163416777422594105338129401896978029618246101468057323938853323910071862823884922392766981201704951504748574310968171781997806317355257799175213096265106814936883442499135177006424395246404312093455579605, 21253769406579495919247852839805554990225909183248062592903514630128902338780156184146508362639483096218395067947871079287531090297058473262861797875645501943259429293045961971020807927241288771078900514577348575301219599565203649660909932095704890137073123922030708503917358427861623426903925246864015110480670652050813689516771941184012639169722335682091116557651899241627398843891673608474997005609380839836524539968188201682410607818783415010966778799390539096711220611289787336219546339374374640166699330163044566095063444577565186783885701067774198592399898291331798675750084655644389763151739546068232040645317, 22945917157596877982013508957889460802484219807659757467550966059430377514047858738557733101768775699949502456148398161920506065086218328350177346511767615688082717716795055308767399358397914358254026814506380044514924258496349859796599998339729342834077320363473765439386453118083475008785869940863457200706710369116854989811088020990027889186358647413419673177339295888807008779479531915490541442161180012503512883661888721973651529583743942054592752476428358385944940752029408073536560446911318043111605810803638981646791805051844288605502390612479119722911267500911642940439924064920739111914812267948623661112713, 20467373844342835346675724586401065328434701675549806047416744759688575251653332089444090435293647924423232755191660219530936027254328138879292215529223810595641359079819892646075109238555494101723671484737926271981742502014263098618026863278979244165814875655667767746135341361451402626755062291751034979260000497349142389083342450234590264950950017934599542233928501960066252061992607389622121595515587501642372442551516937090005350583535887738624046316574098551579695379707736364309716323915728764044722852433956573280243039403473874061378400818267965782353273489339169437917068613477740237574097298543486914696975, 15711192165599659263699483760981769328289920527942358172805569994686269412494193059006661164708887618600126334717914019955651158434790584853328637480779727118115882374316860814636156801630469828315467124742585546707984772388386040246654431736517409216658019976696070365390350496428086880339742232388770549278382641429061972187896671954023261254057347071909689225037543454523433096094343460968161483365152447934865810419985851351323804857982187080926119599282123080348040025588366962999274485724731540984675096416186616988080731957108918349855400901522905205586871886689090515486681071144019692336518375241555411993913, 20285757757216270223718919786599766205444398311060902438134182300162877787140169303549072927748274370245156527974246469475821384762403442904046065380431316470269436091933873448032812012489009077324802944875432775848947135866686870801350879596699701448078848887156356667771141824068829842527217960294369243423138055988760705807559800727413366148250505213426493697684172289245134619265394863590094768127678564817514552351241909030899397866296419197394228300752421646584561301279197824345937258382755945942663136372709757455203169750827601616060359177214048299797931727518932101867016879540687365432879133889179167359286, 10575300258557402561350673246296312978160029678364977610696908289625882249494816725164767596104693953318983570223711815077601714561761961435915993302910443860471915578726804956584376781164005170391035055004913625672376875103375157970421836274410767749748030824564810965205197293178303947438439453539634984829094447426707104502754572258220632844644149720725812643564866832793551387499295404282118432136438757380689887506135751923062740233174612593682481866892977783196517784076393292878044479445752751214514840428021884102606382823452669529328161268740935746054105499003706985214344735039371685624599288123759324715056, 4113117091162092666297344293212289223452334991689150524037556806725314862465554695898928922334466962614120238222303880437226015650174701302876542113197017653328367651932911152584655089085292940680760380428041583835831831293433505020429949204695888192468863140162693231224485524846663647818701521166566012309742953711834661200214824598272511780160728960868797357261015152403513212317306308892597711451585723889432593718887167067192097289502310249725562592515729790488888058207050148410667707006848410211537867769312707869489288276150147906992330382522981883199376996260632150661112577283194934968361666666841787054833, 4850042265170343558670805302837242931220438011144039503437484139557133212142593828669808746148898232080099197545589259660256505339937067824479092275794043525226434765995924700637092085859542947419752721869412507563405533953128254461601366257996379995654127031458904495471031859649935485270284971695787245777970447589001784200523899369992471318376243693286491030368578751792350537545159469815093225654556163510269907721613725970224652300408296400107487344201011066805843857477038748883239453340866854599655444572626865925325245591579222022362390081977645780575291244544724356837455672795448167257045159166587004537509, 17173258887401908867884866864605315444674612805121579315532564199224956633994616809158012509853276248204388867044445620750702137959605114296393159859962904329190318547138589673922881174767289493202023860609907363436893092481833242187464464731528293738944100271555680060239406229142356847808297151500633342464866363572783122983723143841888109956139018262644919225799976421256603300738010186630572612479788191325345668735283137461382744977570467588301994778855775125742868743512604139695044501039322594570389723653178325829203675247812196832580738143474474246048644014086423657786641282317123526133505868494383330268725, 12632202508123006336876717020715195881701602964658048459663729329293794470756649915760567267516032360730343557598980645759053680001698822064642219094262648040287711707326246127728515116208389666996605900251641809051061283763594272004477635689196762101139556229596944555823637237824411023241237220641427633321720673947852574099000861142305522119820945982346359055579059015069105345170552861559424416943333610660454682249478900030970941261162436052166630433939866896031766544021181834772484853280621244827269906938854566999686479330877227772619116295308513519449919839480615314106599818796683410528448038220865449667160, 21247785805619561806045022168176995357935575158951977350232099602333306644969973608384116324657183811665729364876071796975773481403515361821950963362936524259556068607024245850606887975472833102257254604198664890399591930256032137977203251360965493883759309831381366914502258627926216263847116468893838477171148672146618347144946515485366562718089810211429088936778012026559864745317811414793295150219911384344874509644349237999436290288128985772115569884173567705702834277219376523108389946743850801624319459521955506118262451825937111305712583474166848505553565019277486706964966627743270558133435359620370074669497, 4809937156658900530585488909552875281218181714133961427852321225521040902785821242166750108233868960439743439292569299545807220654325161180469359351760993028446788852495337601225477846875886423495691425958810536175797833233943199515643680050218861247252083971922160520048972184789746816568694816244940126279845553853541067272170794958993916732072129584309031202301823853824949050144553457248718064479339927049574924678222771150996998442948075292898944593147244574318338233269726088139484981805241970151679436495689078347714044701722139476021228628597704308799701539680764751998756569042632716761610703224297633258126, 6491593877550895714273605268382234115750353649932408704866467631333510762543624085275201807136487490762870809100109749818345986491416855582498473584638888869200925633006384355153568178703125711006978726343971642510196759387845529594869050851423452143435760074029748797731032638764688097172477506229209590943342437268724384844420863298899464517262941096983300579835823347556345646657857034322143466975668599388686446914550234127980383087613452605991912087311062369926342581476782480648464307134143808211825848878789275306884816453381885661105015858492394968470853128263460588715767026465385549236668677432211895311161, 11276967083276962205071542960189004973527114446761985542018165593744521459720804416405258268845887518772392578249124084078004560792827209297517504004872251253640723928828611118956855701437834550988381746260348117468152804138009085054793916772886623270487561008572297306291103678049450748475127339809916192180459687471287134585916604262301441204111718364250646649516993222901275203201995750393731171451981112671653990231985455628406662737819097595309136349441951225039016431157931878490215502091435304379894043195849343229597180350267266352676125521897061227969052961429114183985576606815073722777408478287293830906419, 8695486845748698335359184051992668693775998128737132727168046831771699224552900384494613382897341935224508052242285822497233161890019415925157733890550881243992533401544387656431958564966552861886162706940573625122204924311371703242583395481466053141437549854593392979545636702397033771657487036436577796734657234004087832500190929135322348391348990563733389331232761877922442486139163487728735533471614815556277880030114195527654608942368544956805053763151851716032431942920632632667895450932725509556703114936151579801676119420756276881912373204861373588696721022759158200340919467100869917701449593552208223900149, 6072687075163847302854703208238282277326234566301945434339287929000841496773809351098697446405811747573692734607987945853065386449701414868615018550278277712455765984154469729815124000727035834423891791851601973701789386854700945353517941374287934705319638946557821267483483423350224415480883884898876882677193558658375325330515179977486846839779792252695098314778326118109063145946293129682212820380265953606957001172840005505415028124928943114724164644925008775912382069055586858838777267027924416888053221401486261334983635822951337842418246861869405783862100830524605903878416045413058858252251481921084852175105, 10538897562076639971056379881488104035449566967955477576282326948344200051966592402055813726910992115750422868942988819543978909674250638048888405744187816984375483359911660053383807704711726766027675481569714173091813035079010871214853999384018775404155066951909457078413075845033301537097801446775567647047418716815861759722424076274016340954959108168410848869370035762929379639997030987808077586814897729878534106472933944952597086952241857166343705971280455471213285471543591000576192905823562669022330808374338183619917474720260695426016888887519050462743430341943226924513294830265128295301583427520152692400430, 19943841837741346585292229564217045050263066068106568177958942827207969760593044887966551454292272925617572435453731823608584794312699627149340678324911470796281130918305055405699040104041273331643350544350439826973996750406863799548088029341834909014935620315298352101457140595061527909532091327493468969737780139453465593478968678650002679111641931361361417462690339469495329206961911248283332383101129391239117332315867465829517567947080096390747212947088899894795120654821632028830337836346394779216387663699654599209669902202287089935432718833648306404449872395532069561106611746310575992895460589409361250285956, 22420450142932778447227555716682211499720948499444192895227737361804621105049771278197874894689771764865340288038828427913761887801962380377306058722097534774080586561397992783818518130623629755163680212355096927595491955684722515654308570571629157590807076414638535269347910191244182731299069650691919418222570324791322928317630241971151837759302233254207610124464681967286029668000032878060277437813268605143278904177966779192467612912478111463688516073524755072765299719248570569811196398013602742891350297693049811302783929723185487844185124025865341197212581208452601323227571110063954460020258248991500425952061, 9175406153442151860348459181578563552668787325226522540887530392206679866492562053892964799646970570088985666287722771851938524394960794316957055294060479908129502737009876085386628864614485719907343232477512950403303477375029667496153972299717735487640461605991571489069538520408445230257208271478479284855942012643218590820754047439309462093204333596973998835330649575933084022938808804180421644774384524491310082796603515186004028087136553247890747635103140716404636244046636843625310143226614820306375253952052488762564576367738593615490934562511058111019763934737498732743266203772119419918109771349322385896581, 19374423439493516076336585706458842741211288986252128573090281364294031148798172812372209726347824148223845870326241639836763308740946336324491477649264773342088539264948302318498869051118743967847865480545728002241872168422798282371345113009512806822543320270669741165062302094066883323921819667634467509743338139154784757291680148690130816295091705675904627795583720111309246100592518534263568984161747558167140552674616271326946941995288307100039043372040284247763965826472283942104286352494459087627093964993235336974876016243409033382727466385933934965085271552387372952664322441324087132285410431419649875130664, 15856132993668914333039042946557326071297875319844301335986018632574071407679453298086711513140345379722053085576457169187879932528355712610641771492664055164735070260901568156119087429988158042886269581619005202538990196244531058681857565377702176258469341701195194014753567142769834563840478864871698708812029148381214223745515225403900069901254620431754036304049621256246512993756419682576538643488044025782697758275736321693852077213793154501145382778296519666065315914788285262106442915831087292086032611402735287449299821177850802246404557676184553767977236404047194265808439390758639356802398981413170151207250, 5588699243648782197580287174325290322530735391063923928371395779240127835260507556092229403154872651973445008026001814072210881884538138138214053497321793530363783649392033904005202618336348168229258051585232067890420512301157638643757406338029445924960238252684883607265726168048097624371248969533444558281413570602728188208290734230644907164172476872522134021468052678683499587810299184459265265000220776136996235681647874198663516290492907456500322431852210036830995438449685823781240813282174332802792461366773361390165922637662240028260274381226807482493893577499356469954870838709655534877243874509498898292016, 1598783313699089737907034449049690206048844750897048395373464592208651333120522640057385001154918314409170743815867780400091914939285455280904683057807526927809803968293945047663214372384435161799259880748869536610854873607333649533317806048157391564708773898072519079653215115573771640720898469725743831345306767644087516696573645434031941740509018925688641027578595235109374841466168982456268931827036200704425034194759805964952911725144363025075366481379841222947057004992711445875588778715884019558418246142691019464376143233944198369075819887366683293764201302980122253292040774879343629655430194712469767710422, 22063889023795379111266967871082244590489761873522149194512200483331620002758823171114515081353341559929773190275632755911783618780558503543380592882277912280524219029128406927535499938221856914778552788054102325254560998920922916395225408631003812353345423129505068599991178023957450947322753732832507345397044630188975258541773408251608933730384860225206679195984446480032840127704982644947456053055905303618755188005139689998300204018117603310199255042991151122101133739318273456610601715616465819601276658573443112764435349161020110145756470070798702500262356524721996792067701750503081287015310655954565699626679, 16270930476684574988766968128190703127179449063585247587136943382501684484407988213639540884369177230209294411111216718636437047223258200341378488475290282155702303339136982475787506981524174373791867052873111715836092326048880369461397935207190658892333984308633913063271735030951092632585574324869266481527303104798603109552619347025258275868173139687341056490894463579865850160700077919240270982535693909109247045539319730093373017874498810018272915020397677049575327636768584556857449602135690795723009138529492264169834722160835267944171957805989214134277934820052839059856805393961286808947252962792293625537226, 5508024967954513930325566742407524329258568206178423239265971722286752855401908045284770235954348915475604280632423746591021827760168462315256531291641469895553593512487219665706197379667985804656549096827421564767939651944905876871239153243824133751657740703646032475514661823363741284313367013902506047928977423724461871923629195045811010540080768960821874130928190877120784785913025092949085721845132665152280480461880072264364492073968535000762836168152427504431337166088644278091573748599708885039664707915441521483557390512681644161281383279881098804155483933406457581292725747319369824812761342391703222460224, 1781297447142585558255288206813562405941784304639653706175808492353424634590092442738731175936036713010001045332019493770986993926596958693925355870530855724951047643497775999841536210763348180260531433052898663860510415195240598715503275410426039801551548073552693783002155213649592017606106358986379672544213307250165319270031867599293696060197793085870096326354921596661299910679525673534518906486019628128920306517303695008276758594641656031905484890478588572242414757718272365048964046692363856877462713626153624124116983391952222288047897125838693503254782874944281164395394973847329743872338189271841053549310, 11281390815012584891525765005167974224695745442438225416504720737384845794868352285578724557991918479448402310089084466686735306984391485689894888344883578987483486113881998643510287845858590721164382500448557271145717619416604135129307133370498807472450989307933291823635143031585323338499454900207316320870310522049693445902019388828874710387376385741896857365578853217210833121692180070776080162036357067564709020647689057980905556989509097944157576123838877039738169835807933409659488283184379581044611772840451450202639856119553734642127829097082974477742833258906565194447952734963968708080662473570065930350474, 17179017073267873912999868834973175954068066982690906078289338515689195094785754160392767572465223517838667489735247738501175530690588035555146724061762391344962055340290846892253131907027146660300906572780701049913955613452289601846905959559894488764355499144739833349061328491827516763044674400357295329625926329535827224133495252085744607290443985096565348993000336830309923935427003547547500464877280309019940431871899867896434122978493133746899206973112470511577609362911553732813715704837543674657574847531434280455006218020568123502446408520707192460327526376525626994210532233134747598936063289309415558043837, 13971530172507222743155158310403768306140200508209546421836861079504493815668113238931048442915542150978652950078343743686022034160959849804075398197499195681401212498872939076134269550203223602530548202396059591231650021690892611160778838672939366255377627858779110441141556278497145725926289302441105346575845468509971549376754408800756742219676422794368143435082428737776808717214729468179377461055506842256922585345137352440365188771337529401052204608346098673799823166907643352684853064306127284684150335152818771549386941301076417470792114809251013931379781187044656933009247267470269158636950452397748949551942, 91473978720907580421469060066932737262099371072857862922683695325306521347261269718117268265388714082620960667130919436338097381887281100337992920956947837635736976517379765892902417815510018288869030934919595084234616798687082365994832309307736171036799450978468259810408572127857039749058656335959461778704490572378390090020474067068478508702781608186914066291975576958605585648583258604532438026999983649369146141497687428461333944701430480884332948469444677894939557159797324250675860966763490022590726477732253322874420941715806998692929302558185352873420254053732521767921729355956073794202582730825274646211, 19230996429920787392364445053027098006033008716972043554734878349263783743249934840953442517123240457114648553359317948270193101904348836313337677644930087504583622165703083968366843764545003370939047708193603536839640890148068697248827788265597064458240820351238549922709309315720522928716892893903399449165591547451858563150827514807448933896040539082768410105263528817977331951633922194049877331273039929046372071314538986154975556414187126851862188631465728096995919402197698320216280722708546650399854213699935175402354823430797176921673149113703170012793064424541745989821858930261488790959553273877159126989534, 17411729757306499352485753087096767659453180716444624130126773449354155696385791222760209961614170376812266117618948172552372078368189485327504163955193500477456522035851062882032148118723926674881466314714365361907862641099647954623264356733607244821517886400727087007361961871166559867971535242361180476178907615604055867223816072908600694147322302885838221469484882101369265518677500731716223869880589563085957211659760541825109504580789522558676511633964079136732178999224527585387839333358191442884960887525818475330627496023627569460581308497865520115733963688248095925203503875732377343878467464925352178718889, 2412596479513765749222209699684227584203514903306037233027182182235890638322138764254238175645211374951473157705709690279043004080132248102552871340723513971449475105952448732584134456478337366963825314587304251477323232929720281255042765312840918520952114341401684569286700060076288339217817886768755645844721767715148605595309606161915047617470756041531908596724285361015771186670722737530160381730915458266917604621576983929154311366960229051517357438678983948300769182579536485524343648391906914331198633650913844231286081127701987286361544834997531309087952420346245633867224393371448294772612358018334395517594, 16883334948661201156688557698939647107010269724159575020006682365061833999492173253932335971614342528967050311000811763541395426046234040087265698428087509989423038719333884332677585106309604580393580247419134222387312243530317481465565250830726643076809558339543121601540160879141980925633155106063285010664649068586004063489565018629347439462265969743689748160027743836389492865414264848528747649889913141035854241754062135106339164928869007486655661943865256228129083975706341080245010702603550381480788429374510145823010545328167946010877209247576579747129751166865270285318249289466821653476222591743628756205697, 560521974729295427290087966453878650008603265232171712930546437039458569051059974157578679575985453824451161201756961739917627784097748543822607688883628601384497584102312387437075687594704044677911825010250096328107153873102019238574569443519849431428487900056253706557517972257488619014950074504160675948123734896212954766393612048792927048529686415934450703737572407148615882861047234086161861052933262106259293416558495812853482896880314019366061874388123596561451862199826398180680022904772437704009893222719871745654685883222949510090963407954035992166790138553482873693317774297657387770893366365691223663232, 22281439115208232998571952929143654398565242918908326383143850558372567115480647154406057087893138800355365396353231190664960963354466407268492368655721928779806360975061631120729784201250687603580011568561598017471439597404071508164431314560964023603218351325168812686646930772459591758299373722444230819179305721837325607368399113228316981520249239876527393742171043147427918023623400905382173291957708473534658970603699020782341005469374428878671904796986240290195629790223438212211190573461756413545610778540655387531288628539436867711986216246159648420394490005275034761142868443843058522804341174047612915180241, 16673838626954258306727321398472095049849525767230793878825282072724996617928766037403964355199460011539679036328710220330263317141632203506897931178304654478651186935343832676457435004855512640991161668376151381130641997485256812289840299458634548822589345837296865139616917332244471267307029723834158806007430411052305636897964455711691671701576189062855828303856483941633445705485164494047700397808539635746837764458619900439428528898053435922160986426380458818663210623444330745869525390569607020112219125424754138371065657800626537964429580179310176123772440311262565835781532897386507204675205602873095584947410, 17583615224875323245611669712765010256756185570908395224348559505256315242712466225313837384600262795984917602280701744076763287640603230669562365470017147341867581812533687148468220992391194529725855326795490913156640170212228164865426197344793951524506367981403917408274652658872961090080268412793288926298172576546381527896235725708344630256029992647434459294332844721225797458612156827620717595959409265537195615501187891244399325944346654619416937114972183951012010637967968591596854489948189284187362137637953147949722080863079956428034082585617091735489740263517930572934692815319550350760191268090066638198625, 16466804100588602226274608791128309994000572795258142303734918998074520967866013413581164501297919306497372343060586142385507224948764002280002491358592902413295752998787213805682058056372413546081471872669938745144513779901263117404799335252495885104759796873603214769765885603840198884266747486344653069013625228766033639859671163246422134932340618034132212600024793304748686923725808794082288120873132494388281013819864781624404351477119829214499670979253328692106079767389676572515409592425910695182264122396145946149428246565404745830364865260468239629442136357079144545139451553546424114661252647143412810568247, 8024187035523470752990391921314358554636846410526402286799797154609525528554722356695169901386600112673992840113536899304032939158584497645313780005593486226534564188185254256580086886596679734658554927185664345199050420174894788449358590285291996482138514271032574929765162721656268548859831119500375118750466112477368594751369166123905141067920909004009136176784799622644170323571045021552137049925687810135607826061369939977803846275828261817602675463064750780792161359285269151912862569979842102711264685050663444653113235663125366156920761236802867958379211748089168587980896864036544498428738437056849178781068, 21520760931208195495343806466669572497212020803315848361775468611155854965244009340990621878429169863121346938403716184391719470306361346576992034117633360637950027664033770774611574807157088514224275379039366587619654742816438644041320909289895538188934383321971542460641828173993339472281448102798924311106261626590364313669624533734453730416538339601602242468334204456446648320523587791798845777434640999312761943883134499521366063414090840624928431417595839608296697651385865881109070291770013102343792731942975035066765761352800089274337303443171607633907638922931184178403650013594353816446536834356103878821234, 22415371524893095089084794843358730609197812170992149485445557617497941457372287589852915031496085316558194027256728466496682236488393292198175539844786757959075359858893284573401788903297589681113308120348014492565549248714491015028487112026736306379063481245774024894598042983722677387339164700472865906222971858780785164338769887715469775922652233556030826048015249358121361276272157242356188917479304713946899199601850336718632765923599858403661672667190907671285544927540045981409750610910529823389049358005319316834362978211538792119560880760636046911507866988469843932596392161617056349871744353163607153659653, 9352324800971185714323213273114904777457578657065481864499448250255128175226395398098066837956850635527392343152962371776869992394018861688187233349728382797445727564868997820565800585449027911479631125360183093322407602176592487804126827642067212695578179501314619816778135192518811333149776606090849453859261122767986183926562300103440724491917580113095384419973077505978101650455505366167648900377118880368733740099165568598623321908182872144635516552167619900669999966433093282226542058839875344088723823165257051070286867045510162526760404119393047863632473369542605783235280710094407209486707997587060326671779, 3458033885714621925599707567001180866099322783507179548513112836507825625131305914034289686388334149673749250679757081209723643115161401638039871998904038992756577113248319843302073056298222010876146472424356527452660317572366951924377598772974363503032345062156062728031239691965217509752930256928505066152995866854876737069965130578038749972577218620606847732385986931755118269208529738440353975814350086436378854630721709809506873480270504056961002472252833578271771577440508901537576543312089516403272518435694653201376881419350154817995810213940133449453578090185644100532728453910649647902686802225212901417354, 10977078847924264364817714750840159651624329526062124369392536630218501725517298942859633993961479234013825170197181707675650486838122263351614353089961032213919078872707568643434822636998515384657951898661398690714882104327043718524214068882649688394513428295119419389516192028871614497022152145924314938907011395094972416945852523422973660951276222125693932555169511592279528297595003227154968619676523092107470797443438761969641322882231092060218443021414220185606652416571463454647738206085872110406157761187553555885119793947790124312026262354211836470573288972948899468108385411351801672677682073706028363420018, 22434084849360659554980525529271268151233586651053953242317500790493245594879931095668404098206186893431358474672303548287252653364976950410886129276534125998250466504329488853663132794592165426272887715157326982342378126230332138736636626946031538996879835543972466219640661862092986243176851243773058251804155093905280654300128670822609037608770347887366399572370707401350794224175225400557244275717093048709108379562479713317449585759498413227057764363790019770627506942379861196732640732893175007758930018719709575898103970326412859994330359542223145785314349072312725101832633354573575962368353035685959907971835, 19181447354341067853007404117232518337116647836305470783578375452835260050346262736776396396326455616097961960576309052009801862595488938054730464808097449542830353789071683839812576087118813800120312118892798690331827950932563679267161688678616890534863682945819812054020725744534347197242854517514249053207407983541220252364222506546774470217346014886946336045098077390488717225005060894342954292253191134696058464710181428932735739258051759387404726422117102293885622863840646232153756488514954812076418336870206929394564447610130798991657512942760671927020796405546831860511720944519563773277101612603769239850285, 20798514914148507286450179594730284588916722573503391686981113096421711180280395651793224050748535015597562353682141091374608116136051078323570043109760245876361458771324534708756834685305238107234465979381997992791552392385987801377043528014716344957603057849953330907295200686694926476635980010779941522611931033627053048083107719618535916366100124195311464676907017395339507419493932737342471709990053448866836641250766804655586949342035155330063470058041159780372868833376008032288887152704821084789006339273447274465402411826012522649269464877920441101935962157387085704479681584844840812775085913267864916507818, 7492970995104319033876588950620086907086356334471571908568568836946694483286374704985610900178883229055681963112684789288180966123762361582904734009942400178042229379623234610006556020661371240960579217174395095504190939331005493724479772816908147754499794067301117077929789113349627594030682786127897444647232091239094328922869114658647087602768684424110268810788640922321874457860484933419383478623158081850480331465109554706399953060795640837536193870219787152346675652301383751194697776596813700710931410514695784847806166487706581698709523367646351490274987177794910855851852950693181300598268579804991937516732, 20293055244514946866535133628635812363463381503815046349101720325123753794860410676527881051906269086074827627791630731048853881964640132558907140014997940178692736598125072601337394541784977316568544626529149432002444902008012536379955024975946995944322952518584022999728854093051317553216543801367913781786204992562999466413595456275515812152695087325824654412298218455351611122480918682275892703291600325086566822795474891476123163787778617240701015590986618841422824353530487267502565392822820504974923948604253983914368372268741432144450881051242428834129804132732117715896383104028019059838225283738841748214174, 15861618655397666672625894368233001188289822641637631620627969614737775414659389921795205166347998212789500024927113550010275048265714730987255886544454522382661882842718053429005685992691803745101252549057409341816743971871910713910235291862328023615549307467895906832004418700628294701764489209472359705897537876767586893640405903893142187625634317498891943863176219472594857339153767249185182256359790032582018829981498435830553008973623162508750375924307497337841750508763147693562153009278357951302995467700793653208104004841569863483070791719700210579848484806080320925145238010179318250805396545528859756398597, 8852972790529792558575966704995742357325626921184128355731223322172277116744590138980272987560663877103804977156223321452613756694533617690113167298932899875940795898971699935498438659805714364114711254545601684808896830096125090160799963344077550877237783735882136772648809988997861144224207235873851262644617277367743803787665796085178332888062524418121046018183375150497154035559519117670721441580974220981139341204537569492562047176548644117183912093995438673525001079878380722571281111944679330783298620461941602694546171183435701029117380999622290075092081051510755413004853640620896634388023359327326834143885, 19224811336433001983688471423025082843801134514889035513945844704052516721333900284716110011665753603455906861876745400118108629081076272595835867953652245337805062786654862747258240583630382668675718106473114483171851017835293374745418733661875442909151873673966063970302815566748621953268568172632926310402775566236740384603397465167831437873634922069606467008371859308266671753099449348882984531852410509979623821130784554292958840145946842840506210940427312904573611068424252787933394826162143145730009650949057329178876093597795360794677729967934396391401281944370181973237017662838418545919533160568917884790929, 22259136952165765073374860770157461142558799624589521358053988191205435414362277912330276037161846747489097600092846616420111080674656053811951365282186110320213798271711736812840818823152683304715870242170101113361104559301906666405559228719961650595104766840171810391634846769988255809195409030553988823404099388359461856950315196868649114974446004544878542656810508399524856191191191438406666900534472532757478807965646152525663030281453037181515114844423166463284642753552903662790600957339318463717675673750810464299068252168886854751512694283051379601786284945124801826978519804765916252556637348208628617604597, 9118220864114177538617281905968395392370245467584804417347000209917516176826906786268984380673175258772930287471969631499545055540516523227847103061623925406128716612616007763483644017634052995815823878386825597823326739637970364587518031100576494031155326835206502439582863623502279974031952476319447797318770484645260204274329090154030187953073164614276102567390832048668214759995379692928018798249456564343022249263141790306998024724026720857761626584465283436810295655558267225162203236607115382432686208853758679573889232978028232187031700338520658642315929048399933289387229723538651017380228025510806212163319, 4983019105711956865946287835210410752194596075158639580155917928731851888068730883043808057207641650204323879060349417150304148802613683731953921485102810281144588489012950416673210479948120566272856309471804438723902342874254049309502793114196123314248290774573746082597233698331058305922880444173742023735485430642382321740667113899768307722742663480074122711166761727227316040031979100988371703509298774413102397411225085929203240047258290710998694774870633498583439462512934853202891680762169641435491988455095457823232053992956973096670321254532512147801257518859325420403736817296978982191721715533045177769903, 16813907789640345983127003514714136790348935426732945085938507320863165001301673219139356371696130106922990546667180788607677596688958331105786548073660357755314295076295813448829173745379619367523606194853301968769819572108166350982308016208474042137986367058109200704272037296059755497461772925935254426573188286144098896729564593132673721910480584999554044428185421585047683194068025877199600721558877444365555609780330086976440477501366012358713217828304105918323102066652192344685397436007140143664518756698797858848091352260101251919136032241753733823048482429872308034968983423688920196626307465516882593936673, 18495456333923309906297173521556845298906545429359825407649460425808418052423687456623051142831967577571093866541513807440971952003643141163843321370610261536751801628164348114945345286990075666736959565612156489101006871473786283391829780299118567800489551542461076964847238129119138639586296689785297574761638587625289258413333314926591523680062111767227723599070251612621229427749006561714988302789304468827361265491214295623605410598572033738025495549408067723760191352034639905318077248332576320295307791665341916346464676665498302328414531761214093013289873181111850559860814568087227596534204987773561831006480, 4163783253031281439232259416628970078831389282860481511478629660624278922851068928889691932250328768251080180736785797531610739147788755798568502547341441447346235716597062482189178875895771470782178333344481451351808115112819325703689179608996149029876601495555178105568287812607130604633430705891984445914448855997243681669080083051510984096362915584982594213245720892582466612365221922852560346981016379258021175811117181255517346473040765376647808493740313949489907443525378210019553202946369398719033114111942148229692511177596308566768354760306225995193010978642913309173829690254672559077044529175394412893636, 4809724696147259858835900686465089473254170026979014310446141510483526313437162535155559468465106909664313525252258029377733324006352736071814950357624348982311614721603915240181810054361161552304974351967511659334249597937242618887140999632784765634964805958770069135307651467064174479841373908603857881787310673388030550722064951336169521369102404307979930395324317714697049251925890077893416027155038753637387935950957536073862123778054561901385203480883797024097704615739537508784782928978747964087491606107409365915716313442984492450238640233512908266580719101340040357929657691342337308297872675141055594475038, 5569159204797933262506827269012158273901324890521280452628342970652905253594944289899990345026392795229303696262037836051000086854468211288765542182006209808291068344397730252372659770325609760031964201592207490836158190740948539800907798732409210050913541200592830834316229231473631699109669711506082251779842242957787419462371846604873323582917853508838259194927460802199968045234788867159337165533143265174920932222830842359111063474164798157452518970264530276168714529754395366494847556347469779951062849507851977743007963997802377355636394204295044920602687592504462365960722068500493422786899109299912884727310, 23271048890716584179789309574405360414463730040601285242207372574748626425145380903939852077961586764324505961547674000314158084363404457830034941726813511312652677716711341260460688726670519225501566225918639586431256844944686505239562583542735703406833381829569340939979492995175864037464130593247203674612698099800940354577911819534471666251585914339645044569576367939255433764238865858377473058506241927791680080440809313292168646692886674774677229433845970314062756560405514280950458804012361622718073568718786464216105617584770342677188207015640549060491987555990272454984210768000464374897631347934535596535576, 19866942547061762710504699664117950146739914164801562489964395132100435050502639431516073068664343760690438425691535406381596032932277156951421829866591786513131387122013655114657939566962716335701161233192859419375763335492345289815919595502217873693690018381077321113984829994966017106489405750624666009546745416112139917071158016760601529924470092008367046181991067924809451759030878236897712550121824072285909272350323618706879523590484566409164847986838438960097248913198173303168811955911030204464429827827473559238777839288309492196130454913520799573552938668785653833983121761441815345251707828570415715108810, 23137312341749729609797781100242639557131903188266381433328342320324195519309454240449794296175863072095059709414594723352913066089006337214046340569233933414229396020959266196606290748232388043276932518878047153139677020537467541598647637358302844361006677053460386846408225343704359380427190445682791197057100451651499143742170659252736117083558511449341169112831208368400101248319823510018946732463503159362697573907896503654908556683721875101903170359249877436083707767509110008233764773796848426647590762837517403635220684419948167976974441162481338574448664279051779993386790719914949117462885714544768694747906, 9073868735652837019369042216063442871494041178751115813831056134760648724352661370467763804333156636740046200404079672674587250855165022384616311521246393745285488111216138199213691446406844615305356477792192384549717589879496412644815276032537211333968376051307997644098321376709052110353457597067736616210937243782596109268592102791770651417036181210191063192622584013398859346752713768937755992344838025443048577073257347744675203510366875249206395875582176232703392436396037492134738700833247393072106523320635121417373387400989929704024533736753218692330492502578073927934323079518147131305421003502132319125013, 19410870585173706880239239632942979687746124868621446125015363731789790678818810407973291849480916470420997503404590721079265230693465470336533164996751874630158779192319300393768767506913969308326455796293563561935196914665704678210143555110449538530382512938658455686479882074353239166897353512557463986178530325677536050576562173662444911442374518762725049250325305242523659958514373453498646236177776213616390472655825378173236256891937983365637070514509073456937420838877579880462390238779527218933778619258424994716899298685948223289008420436870338302501532920670707140221666764599514264766997001215193542036898, 7764707622339070768489730111552584410331875810933839460101686400828783803492503485172978405301161405051799604931733964062224549355031218075600115635468045176951547170585710970662412669532790443842644657409276084205074867256252514405930524979167917438909686439455520303041884442014328229191358414047023828230519781149678055612755142844360943962975417478549487373744774414665609129483394888084872180929806710579826625458809521079132902991201105353146471983685345459017217361727801065585394736068677320054050362966460551660419798159324381182255155084299178321200401115348231443881626777653875777561229380945562219903770, 11674258282925538578653731983035164879899545060092019896688503532545859773554181435994798218758475415961938673781586062261613794987853405792940275076787421511676310750641883586770250172613387750892791325897086340815899678739927572225265002194833713555854639016707242483309261694350890118025845273516595666890446478655064469031050335374047786216088031092764483529767150866353938262227338697078608934289684082630271130329351395172104045619891046128481274130803916586822290273706218309943034569190333777642172705414544965857847314307201518834704710750878607251082959686248098228157292398939424158218052483600784230396576, 191584367783965964713428977739330925210983423700250115301510462627584891249092438092898934065783132062358819828397121730018443450506976382522533219815814997502377339186028904921534843182552039934243557956251307951658951601446795997331378926000743848037171400814888693944098266151052826130083485205046857054372770296455775183844082805893113362233763866751948786651048396507232211472129591907578661352490035830195893367649285231876375157650578289414628127479918983846477444556190293281773719806425232244315151080231647132180300474452197106094590513419122430811658551411808108345051143831246786476574514372899771528444, 1925193434751828268582188867792885185128086517288958923403516042515417001597028824629956873317553687687167587049291620694159042508117203807343661779906909606769279735213568390832597711050250482551729508700082936485623255371800423397344540139139691546216765193347456052867237129877124558899888121782795180310826510211436368334513812033205723942422236412946920068593146042717797442277389528496837995475292671254156086139730543467874222887097242162262812411248983008907834585935189338234126720286454116338995165614278019140711570267512570762137616874443884155338287465444926838934338450054325438393567242861961089902185, 5325251087832734400120783674759818609775679137369244958703781411814350890709445882978785918574048796622176435329058967198858519686644238187572275003834877483616865314497195012211015927240697996376749697569252863858825600871395723208637345314154965272799364922139821681529334684333505243389885699485690119476259432831093830450127779763745566388852984432063690983219448333278249949308895412445594489140001028622229058840507254558534220643949680203950502054043975784738393568137077298820652812531649724673659700123685361182629097410560797466094341099287684317935416096335542670848196787474434279183315366479588901369027, 1810260741118071219837581764276291145178937583111750663235222443227548566773724364930670063982360695122682816671486145370738517711798307345740986541025442054757120237548900739192590451099473428270827713167823453621433132706580428615685409659999455605633473742858151266330588231813329339736222159477200461763529010940118514880262388035072434685739808602611939827849999952716864102072549277334300012460142722709230614618062069758557961196480272698793673118330529175513419366931331462745666121584265233272600060844138487145041858076625897893506166587800318695171515581670914779764808417801800398452055088396536590131399, 19580134364986113034005052268674777600184492282227676384396845923577894074150156254027151357908691415085429395576974181093318012211195818801180985853438662011355127823514458500056734042041711786199820800400524658495823241474547713613365100947153809840955494337675492832041600605501159773275303845895365207782697362552733768280546635505150991592197059025844627960660990635778827374256074060631931287388785343743038791034768654301282882551542912019903536893298989230464542807649373714573850917884954688565486530103555707803998430098120491600193073980596311946112224132931815406491084404902971117798674272123774775348369, 17233351834487705197511219611973500504755977986658690365787808557519825100147297018900174977195725938214047226969726996756488819608227624008399410633336315409651844137400540674062997370897348829968424305706567854727968304769974759412193435366977814314654189506343874711071893595540501349463136493648345040224575532161186295698988480738659371414462404556598891695599290871508649101788677462869004976147754199196090708622775278938837087789621456307414609304553491793599983827479094685163339309843349698801602346601362364998146348351939126784226606576068582603002783159171434346840445790620599701527341226345201880161926, 19997925164504973087254585943343255865098881977574071690240396593340066202830188658422460713404284365173913134327134480222193379394814882750011950416365397403340898544263468274478482181380229742389871474407285383341591321403098108637865246226032194152731176068932352645085928709616920506838605955332134432385798074344880059542727060242148772192810941274619090882270151264411800078557699867981361763963763527773928403912976820319076235921117490101761616620978581413648121795738288264550725824031266878875132619085532015066487045018609869918473204559413661310540571086587014799636649899775129946543664870651757003662123, 14135159158460462065918649635236471371999520489380969242949625284816777015738106257473431772923752682418271117537200659067190118188210742216388990553035617725990385272995103064975064891853665537076949580252130745156299976674013360893066705478796794931994271918806354591792569766879344002707807237580830411163284155407059220260782711960315622291585277692597629784811570614946764531008165361338473366101771176313057262097982978400814399055007193224320214723038775095747406225589179595267184939307313745924100777181029727190094567854196294877625053217808773649470010183486538525574406611826538055948096784815849493353929, 11113218187030983653720904253061915983785240721952663175033397746477214559533853139257187844232052498287273856348468363785981635335904550674674977306885599269158208494397778554740429468743930546834989526309463615674409117039606545529697387630311171084767700344574255357528072740914780722505510498839413312311894093817062880932129157291237180225686738133709234694633264499104894994867758692886981130484228980293389332336753232130916703504308615704457487496005902028822882232951479855532273759015099811457098864861040584646404459674768486065149160593728301387150348496344334327667755599781238563068131904597362341793522, 21643126421107740003955005265116278965228534937403496981260793997901431148267199766857644835364257330148111054538622845106240637299712633393820404965601494986182486548154274130771951994819153566912544697477712710351033980024433120015647895923088818893171457251785997074120203732617152340255950434041518019834867201318711040510584949517655456423973591770283941583927185745416460875878946608758752609172327392606248596630291483711316661220272919629267723699550646611347115851694236619972190640574820905897429558386018369705607914383007318850454294324179205934242916142958900979392583116564324811986252038036230874891235, 11088500987183122580046013623738988397526866634499892324981959382528676224163415162600992346990564680593330553413021823929616217815146058066123364789194642249175322644916674861729907503429734730405339207764943729560219427325363352629281139096478765595074169949697945863012638089635630533742136266717852718005300522551142139319429542039541059424865393740882761350968127262443014720438910025659770965031259229831969605397347215354549539639205513154588798345193128762956623073132986180727213579605955647704485742675779935354624821988590148771714927126013015510695970813039685242376272963569493855786175907908527839633083, 18897493365616226234512515463681741656865544985182284061375255085335592844302621112212707149927001436263899115538529089577664371603026858660565692648629131304670817031080053704424561209119813865272965488451658493208861875760176400496508102614693150349051529724053192912901459873184006124166125239822603815092633633233924330954295805713540348809527228219646869842862047440499497637451570866958054515265883863206299642677151270525520808404815830876553766189176010041148395227913539604948441482503083290201830071037212031397860796407808143544206095289590507876940332559430452642686495408844961461992751809635416362471943, 7457561499707557709634421737428184834858867619600404557473340430404837603806435632283272829319213914182837265621326426130961472689501556406655442457540979651941276535244499955884433276793373340551849712845365587940473473379687312714648729401033166687554784493400936566508598740751712525040760046341118393287739728367888804762835754357470831363428332337531566886181080685871380099813898747393074473058160583484698983777374858385622650071232171921743627071804672878019737359820212745846687298981532416110163698817998420169098583306648079459152806673562814050172677841565147247651819946788741900583193863749655084605673, 2007600800631654153709639836260599428398843812245829083393125563189187651985240003670736532837318689391965335083628452717437172324380505607188099923188323141796934401925625587854483106486173375957130003947968720403399349133741803013101014370319260785772417999268092244099120472345536899325777610128478173401064434234578093135596263075696916673923133188896743686641642800732492790785524448302497373233965653822174123099690782932332089774936359915813163298876408834721013595505062079608263325758559873401143242817893667024530204340521279131019301413975040065677571502020297752425736083829016098011501588786290081794007, 2185800648741007303639235035655643817240886622199537684075271144276240546462777187704375937615574882261202331756088831257435833991713184214297573376454152542669974582973581856854894879252504414309226653977604825275583227476096022202153932708559897872625551146144533818715338575735447189206111003604729343985020402820165967689834245065513055096660578421106727127084822824199191145634783070351748297317932353257603634380419050302726174842603636178209391751058824751430884831894285184820477480423029778777262050044083175010279739214991371381891143535343787718901759811751508055172043818627766780710770265745436184558188, 5001651940911094106040555706567370186594263005236384022721916083171894651835880745333190744036176313453780070189278373749026750035655397291413089978282939174086746209412780903432833085526606154830769823741904074958802625484884171046327607753127909816830776011044885418383602610219975778135335246238690468958076766626567574962031942125323268491435281443363477167289301260573248787557298609452261889697636057851858836946364868317424811241535058505547599082166997036187082109144448245291132560917453912283422938255300076301281738114816858664952241599889112141813852351618265937769138639060183737510286250461726322960362, 6981830035294332965058796662792488472544024014862706055096361889228492617685641281007455058550136177772210526025133934678206961812338874890972619577863111640402775826536436418513575663712943728567498828779732467901356580921086599430886671038490643991089307892646852131119450998225680078266449513529069964035643046525432834257841843836118709019571719314353006116215288150240833392933140837645889804441053291350395069452878990698846489672237480785300210321615407482226743279892348203433743935386237416277338108430964207858179879662911214847942227110018830732693542543896355147905867709315846713541419951920608676318956, 14062400586747894582934772827717659806494162839457550042984798028052427977309484516339521508866654263370622079691397198989872616509603727411775055197944087560619780144034527477237107321905865047612899572246691751294462455143487821079042055561005683413916448472708582917033310186189768736060099610285621446278188951291009332069750072094181837034561943693331671594750275519688481929374737047264207689657176408231421934923258222746235300030738260110671730426990259243547613474185076390587254178812474901532166360652741371969300218874637738165545633191419324249740297324689017993466599254229517029616071522238114276113385, 109634227557487361397534462667546320417263494196157826076837599696525270687803060991551683819324199843083477910320606490499710947918846468130081580730701259521080729734821765834543104183524940645198667042437718756728658981207353830065696043743884800592480709587235320324705161208311055263415631221319480892010332146215195717524427787036118006628532500734021475628478439503031993641333438150660934493140213842761817271038705304431207574730300979630749642958402695193292975720169798392055276141672881864359363001776575053146508780613672225449719814406424720174086688425824940231517476646655301381654686052721196628280, 10860364208557879017017436400707627494291590502909223226593936800783642753009584345561359048730246602419000609793776911156428396931128359958287810288943447478137912754580494080067674835582432969872651867427360159904589750208550034490482376479612025670904652593318715672840774101331440236088228886641268417658009472840113299026479218037688167085565212867923056862219538389489790112331058183172630888489880023882401621567701513065073215647509925782683742781068199411001775524656902374661128955895995831147185443202860569499591875499805689893748133627864237513351373565856965402090731990192660998588510611492813537954817, 5550057775116520897544213644927271565300830268498610370488996989768397489673035681969576207209757679709851471396376486362630418402728956438023022161238742479964686859114943921101103011163886661365661238077342592594390086668167319390341123752266857188105830332932412556709515100684915246302907262148141391173217848736946890395958687360947022813341524404256235921392148888418145822049046974416202593577878475278845144982079934915280137651203279388491818926432156163406931341832143007482150774181194605617179847987945894710437911011460154643765718424348684002093233576792141079852110220101722930440041435674261951809866, 1674423093755250527374881322809423604817551748606003142790185865995327326665335630100839807674879354562571326424987897121195918611788605044076504918189158175301684585553982031447628334640367886494515639915922713167170035714324479556116842583195710603426191693044930153075751107110301796183042606650318050652079986322793997977745837283437576919978072967136097610422916746911433987795816100290630818395076042687682052361265692151182706756350081539360786441289941066069029225264944238185013057813406951277258802823567034512896667570703421082845101719285520098162522449613053934648383378633760394138461439892732670845972, 1072922348549370522967250001168591899730993703795005168764715979505158411115042646629958277511811103323409631146352298244534843245421898158672161134394068681342911330610491421713628907763278997933283567180499144842461735281708694407648095541266239607460596061410264290083911285805117086110331155686095319460656242263856729184496626181318055645467169590651194827698868544917300756616951885451558672617459889592023261733434363357855916632922616966093086132009949879653597758933134979140346541573688232896420701745125143102711987142483834988911080220094273618401774751432770322526080212916968891689527160137723731971524, 194600616534024852977997998592169501053280391085953375863143625943481724404369330826121667364152100492371318391505837605821003050108826630406685632810508845183581233366473248518745350276006881289571637819410775603399208735503703919806621690852994577294595191755892853405312016579509019071762424610469874254902368224500631668875507883318584260328741300915221453166168989578486839072909685545724915063708068963766082206586583807173665330339565939380159588470182908899391914229672756871338506892936415084392609885807323678107084501660979525983942749869337527536190580347167656346786667475652135958146610278891832791914, 7070609058786334415819949612682249034736108177691388192049804308839790668929770037710396152374451792567541737112668457659254770898177966537690004520218407017376239885761539496637017449823959443725874464437795642500463090510376567583224563341278078277633973579845088193453714867460041431294925187922773779992774653093307933580631564306457442833927283373314988379222016313573143525077029812231638662778541571811578353378118847037680469849174424711594143642923087191878938026927677437372736413518008571285928157896786083462108279866323515335368312744449325452424128627949855763674974776796784500853953513344307164094911, 16319651032782578891058737446188307002051540589278109518575924659034310799138345666550674652233812590480674371546669706056248664452451811879837311912158468168868869776853970786481210541386653517654286409135798678560338458435568011712570344627975936603276411134765834086259124795421736366675732919094424756970110613024061221433760644025581750209864270602940463241351054222737791930796365972677162315493655700164339493735485012208383632015026982341445744666175757583732006996284882827940631139588809501688672674367951648073297179771645743744863537498009801472842800065298280231408251951617966838328714247723449834280240, 6610871077235922178892107245040178579020582280511485104945068592479339888902517072990362450640425314776387896866912195679344247122023336611888728946268739450091889531381301756111421029941837155667157677800407072027043320638255331258768579743224413944349229945045486980311420362152224185970865034942292801194332363995462285160519651524613472906818401314940387042865709867843109876069599601035421811220043650417372739889322508904345721223229209869367787819200032219828124797342263693870586798163728919981290870768580026975922702522213886646599778299003449536678967234775197967485232549777342709024092352588872158237848, 17322269530615157182889222685444391095245535576585529522619837560167063827482018705246022779982446052876028712626528495253423932468826051177150597447902656083325000567076722669551693163601614926236946849711179758066506523545664899092755378618862192796436418609735742832957415288453196572335449863019515267956156962160165123256728227534755646871270547705159951974484550379281261417850450252380145174292318893414117412216194427037863722208097853582989369577468721897320683202769388970728562621879428435930410304344318962807563359651413934097992630148883664889598576035503216548767459259978874091886823696963902692539916, 17568781660012120872246747904270189196639666174267890262674546550140090455353742562599289523291167511609446878690794682081326307083333578887158303782632267061820065346188645434470774710456140925099231685060915357117650252293987847868066996183686570496806572738587061380185854135609928020546886711225483868715472621265673477934333157739962214390839446143225834167015929217372022167285817098267881575312958590510202786618537972852710087365491067761602574519262538676539949587258601240327345315625282409238809648190806254869990931783962350458465982803510742891108588035969613242741111754732524391688085000569189158146233, 19346559713839715835946897115975178600695807834922453770331559702391160158663345491300982675094608358646870737437825869318652611282758115301436997744256533808914878972542297417886847886123512144438887428012992667201231617340865930459519333331436460820127299753555499564579427690161300481102144607964239312493542215530612019646747060380910626176650260156926571786760771682678885773193474972478445524396501175389280683267531524597673938935240069086317641142159245062403140575912272208878900401414571580573624640889654254006306505173516335167385637442291751941190414536579817775759107330999116337866071742927703873663352, 11557694848073972420449587807815196292301296775871876434508504861270931969640741365093980671975911153892944521907483734926393213767753592905363430562518116279853699130044899001661746742743014354133539834135855929223628075070894478274574035207856940481486522360303887513777217295647488538576158642951481242750015488227313602023258076267167700219395175969774569885347856902196466322355312506104317970422981998899485037491981709337377312559378347519650761764315234526611950515596786045970111262454861601019804770503944641280813759277584453493955721443478832186929592953215028958120565897328692096130895112833893567568278, 18819024868845419518177075357345236605656910862655222654725876955641009137148358540095640106687855630104473917604205887237077659712336853873242389206675941710951867977379498422882411653202597859967540071835198793810466578221154281464699091555236831876551006561025325326105061605119749011712138248739641149897357617146315837049551033425599639749809011383423177064548882151116652989768408020694603365360465281803579061470596180944895268288055725036274958834624367523261925595136901926460054013138487787714898677693661815675954868729451663114773511477362004147307560473578421197933962235607730612400581682061755300726946, 23076354258556271690167738470907634088127309320464225613678294360993595388034483385589946806374022092220006669171100349192748023449587069933089272961543331498523226955934523218954904224364573906433699763094267731344128157958433389135088104531573188549009602622699501730563276939458556008472751477011843040168110847136994551083097314550485758278906425789273533722032194451123112641673574807428429271950465461351577939475767485542601852190107685955223446966837440926653582328801792339686042193535950965310464885632304806372345111179654633068726320154010755894252058656035197685196387737794637603099824456587233481752665, 12028643094027285565857883283490943873030741906645614584204864851262082442319278731579887740418894947065174338326941126022175244115754301082342272057712050405430074638797610559036660487023704566738199190879456038778502349230870104358643437443042713194965777449767944248140664828044914356415756911384155339191490815789974549887134349780619384813046218841239668334627890805498300383518812343130948095729143844136010639760019476851537843532913399880434773039512474766603307719878144965627662516933157982779170543460161417936520509569607141532693451414042807804614994420862586500381439094614772939491323593868803406337378, 10944146778823308337817028954492628003335952672832337670563077216160607895772520797574668127797405253229292115785811577867081596120694950752788073760014577010710147310790348410615129969657306198651292176276904931500027336094305448674384198372340638425103694852455372392882233688941551124986838889712317405500387305550997954952578422025774442314229607813088970728926915050685421553824148381133500127317759483524182528810753121797778397346876927594721780480542135560651158673912297477696126963380635901965777736338467158358505509684075199076867748997312663639081123766796788810696045408800362011018506025767431933384646, 20169478499283486389528092671455495992228955555949846472483178157907461075414248282713333210115471947677485709473971313395300702005035298007389720082766051694603388363497962760414583668155552059859128227358820931457692812939200901402874422434975073804925511447404047756914481728746691077825321075937940655062222838399878597545399306424232532348491655976882895174632705408976760325245397421337723840731750827440923856379070010156478277993331324699637917302848563854072818343605160853219403727098278157677501061990667700364495400199627072751707265788945832057773089086033199204884386295107917142265723706282656501717010, 10488701670005709385408509296829083700529265363744460934635749570040698263543963033387816945935338655368632850449537980950668078119133388563043410665150810651125054091595493913074737912385979106415670881240449763726148327731860341529913513106159536627288999452321677821300736633465878563769130651843670149498209595368084342254377794899169542379327181929746561652339143710628909534502757688214939317212784900492168222166165840763194625187317064773864690444421981822004195230651555538685774972004731153463276478529947179247019047045200564899545967266275036081055159804128448554440621981123587838036669298258926611815737, 18378465409125528179223223800487795459201566088357584855456097981798077964493784854085786773568646581248812519383873474187467805271541546790650605064941887014810988965945282478512836439075809806470802515978139907015486147467611140079754071412124393560448787539974556118882970028165500860363110867613862102782720412994379426009746636741902407124725776468866692627519994488417276897618885933572281503692294208003519379505190530226028858597060832471574680120147976829733240417882621006070351854414114130207818380278895338013406206245122605382710666791097625316901028194984113542740443927708077906441385242347447713223261, 19301683610452806386536034758070969782748852558212179895229545714790792832481082220994230739794865362513386300346353151049996566699079375186919255054018987266629257899825888600045635212648099481824766963626141653410477933249886210847281543255149368843879470741633410388913117351570109727092709151546887642900803661137915858559205985602837049773504289091314363105735967092222996244063824779808289593949378890492709511033876876692798898819905033191871728689054796167368276843838224523417606201204209161172492726982162795230436315495237345161832330051019930051430507945252114910315866632636485950034751443120609957020286, 4337736401654231200879327969430663393856023248170321345392959112777585433870221162991812782620741638905415401571995920559551349960643727034282635973971396687075345376288052430582686354531135726779519535685664320009256279693346512853714241356500695810377737508270937708597273273214328164588343635811391877329871211747216646477423056405774706358662418679347540664339282635011684195497839792054746723342965558009519402065053080932298471841792697356939780545576393020004051340856500124890270920316932526976205608534953699684381914468339696905582061924369828956758046041210001449704859313892437271932135382220219333485820, 9307344443026462415530006118804940578116209962286100262475552225985502778234086191595085658678978253833398366362369677959427612182178224236849212358311113545414240956229876317556492606129878220642362369928247477659502301790476137610043408677491185097503802544056204591297715663321679748179618065944066217372093361220005465030185087346037458496750909362688236789662502636137835446125043729050511571690721927332958875017026175309531562040774047401256814383362143847574217181531329249410986090963450491616247209844688695229898387615586259531915311013921517251070314711096228240486839056194848625535088135395547643412466, 16280334898605898119080397815950687356584571594208801674982293292368296960828875512459523743917245698385684168680302557164365440583275292325677211472787970508435081802044079092239250901091086959743144016075578815922632960051305925857528049337434839167861838258535563896339360284434922775522803759230754504932349338675650526595732636987554821880346320462107400292230707067533390624938571048463137077679810064620870030700757792653390383430757953595031510998865536715652416136152853875824966148790900921223876517831027681587668291214216638712177741743534597816975615837629478306612110862176475920975165175710373273059773, 3008279179266521592504976698391193958199392298425246498938711726850272697077775250040155676310903253612997129689351979393691000814103911734060827145251228677881286643234320289940114400750561012805996506992117072913475804589340506141959641132386912438704794357215611495301937194972249785838963674815762430441921805530134203193162247530304131555794397691392636625108330676517587465691136002719514249379971522309438967053073248790664693314247977408393794974116043735076618096476782063061765336919996042519488722031392217048271869406429307761022080722298946848637525765889104384189723476784925571531535488424357348009930, 19316678883302198901541230230667906650052343731700583236187055943046929765717196188557302646739027169407209158242889435897994874818495475473298865888841363651997567688898791542939426972230803433631574737378194673636465695289029056164697759037041944852640812642856309588532499947139849782924278183571547201684774709065009403469105544795787448940574535716639979855952303865760810677208358462738714965075719038963605178027542926801237116141978213651491170571226871015647621607004148073458909438508343488225030284534445341172374063307912029300177462551350974353022027389647143769510229060339000572103574475061499499785662, 5881745387327713801335811581985741217456049056804932547135523494594883931500874576186379609338930631572287896666698172197020504068018613179366563250951440907383157459569812591762855125955241100311761415552669776138772754140307904783040860820697415351084493122436234816303269090923452740158170121386488891684069391892505796488827182875701731499909800622544402655427005472209798893778194536262943527586142667708863909294051302296630719019810992449753232216612560739149513524601982567280565967029825310214253665412371730261716825604045907997932165873227833732667640532507073440633090196352322643219674354774149277258580, 569855751738429561025079335024411607068381489989341472692323219398255868216019828916977930926605804179953760004097022672810553848505672080333468958721070671652329629827608038996602938894618006711181164605513730505593531167622951105359293007801638537659931314794488430585980154769699709890155119683639135971097833923783632659645881880661777283887866235331597665660177930776130537632251770424925920072559751811410815416756881731558585784683536835772468056771492094952302841413953182660179507483078988482096712136718886509462614498273547885951599018216177188906713341342262976019300982176151865388858711866262704938322, 17380300073170602530250781669140761875351381443316395060978600404406974356347043278679113304545799366164035321245195545271621839171288141185835709479816634210297480990650527019793941644488174232794874001505786662514960905587157899265115596638585946570887915771041565276127188954516557472987408191270247025873547548997615096729178272118603950481681747836228368808688906512695367113828099660211793665494267350919751683232180370486617318635678305895842199926089986288112238395085545353815545318023193291530836674058015868013727218611311969757026552302003490158187296639123601136779796622346633574438646220745495000094924]
ct = b"\xab\r\xc7m\xc7\xab\xff\x837\x94\xd1Al\x95\xf1\x90\x9d>v\xb1?\x903'\x97e\xfb\xfa\xc1L\xf1\xed\xeaJFi0\xccs\xf5"


Solve:

All m0 to m255 in M are small, between 0 and 256.

A nice trick is to use

\[M \cdot C - C \cdot M \equiv 0 \pmod n\]

That is, if we let T = MC-CM, then each entry T[x][y] + k_i*n = 0 for some very small k_i.

Picking different x,y gives us different equations to use with different ms.

Suppose we pick two entries of T, T0 and T1.

$T_0 + k_0 \cdot n = 0$

$T_1 + k_1 \cdot n = 0$

Eliminate n:

\[\frac{-T_0}{k_0} = \frac{-T_1}{k_1}\] \[-T_0 \cdot k_1 = -T_1 \cdot k_0\] \[T_1 \cdot k_0 -T_0 \cdot k_1 = 0\]

LLL time:

\[(k_0 \cdot a_? \cdot m_? + k_0 \cdot a_? \cdot m_? + \ ...) - (k_1 \cdot a_? \cdot m_? + k_1 \cdot a_? \cdot m_? + \ ...) = 0\]

Note that LLL doesn’t let us solve the diagonals, so brute them afterwards.


Test:

from Crypto.Util.number import *

n = getPrime(1024) * getPrime(1024)
k = 16
e = 65537

key = os.urandom(k * k)
M = matrix(Zmod(n), k, k, key)
print(M.list())
C = M**e

PR = PolynomialRing(ZZ, names=[f'm{i}' for i in range(k*k)])
ms = PR.gens()[:k*k]
M = Matrix(k, k, ms)
C = C.change_ring(ZZ)

T = M*C - C*M

T0 = T[0][1]
T1 = T[0][0]

subs_dict = {s: k for s, k in zip(ms, key)}
real_k0 = int(-T0.subs(subs_dict)) // n
real_k1 = int(-T1.subs(subs_dict)) // n
assert int(T0.subs(subs_dict)) + real_k0*n == 0
assert int(T1.subs(subs_dict)) + real_k1*n == 0

print()
print(f'{real_k0 = }')
print(f'{real_k1 = }')
print()

assert abs(real_k0) < 1000
assert abs(real_k1) < 1000

a = T0.coefficients() + T1.coefficients()
for row in identity_matrix(len(a)).stack(vector(a)).T.LLL():
    if row[-1] != 0:
        continue
    if any(i == 0 or abs(i) > 256*1000 for i in row[:-1]):
        continue

    k1 = gcd(row[1:16])
    if k1 == 1:
        continue
    print(f'{k1 = }')
    solve = [abs(_)//k1 for _ in row[1:16]] 
    print(solve)
    assert solve == list(key)[1:16]


Full solver:

from out import C, ct
from tqdm import trange
from Crypto.Cipher import AES

def solve(T0, T1, start, end):
    a = T0.coefficients() + T1.coefficients()
    for row in identity_matrix(len(a)).stack(vector(a)).T.LLL():
        if row[-1] != 0:
            continue
        if any(i == 0 for i in row[:-1]):
            continue
        k1 = gcd(row[start:end])
        if k1 == 1:
            continue
        return [abs(_)//k1 for _ in row[start:end]] 

k = 16
C = Matrix(ZZ, k, k, C)
PR = PolynomialRing(ZZ, names=[f'm{i}' for i in range(k*k)])
ms = PR.gens()[:k*k]
M = Matrix(k, k, ms)
T = M*C - C*M

key1_to_15    = solve(T[0][1],  T[0][0],  1,  16)
key16_to_31   = solve(T[1][1],  T[1][0],  1,  16) # excluding 17
key16 = key16_to_31[0]
key18_to_31 = key16_to_31[1:]
key248_to_254 = solve(T[15][1], T[15][0], -9, -2)

print(key1_to_15)
print(key16_to_31)
print(key248_to_254)

#for key0 in trange(256):
for key0 in range(168, 256):
    for key17 in range(256):
        for key255 in range(256):
            key = bytes([key0] + key1_to_15 + [key16, key17] + key18_to_31)
            nonce = bytes(key248_to_254 + [key255])
            flag = AES.new(key=key, mode=AES.MODE_CTR, nonce=nonce).decrypt(ct)
            if b'hitcon{' in flag:
                print(flag)
                exit()


# hitcon{neither_e_nor_n_matters_here_lol}





BabyLWE

Challenge:

import os
from hashlib import sha256
from random import SystemRandom

from Crypto.Cipher import AES
from sage.all import *

flag = os.environb.get(b"FLAG", b"flag{test_flag}")


n = 64
m = 200
p = 1048583
F = GF(p)

random = SystemRandom()
errs = random.sample(range(p), 3)
A = matrix(F, [[random.randrange(0, p - 1) for _ in range(n)] for _ in range(m)])
s = vector(F, [random.randrange(0, p - 1) for _ in range(n)])
e = vector(F, [random.choice(errs) for _ in range(m)])
b = A * s + e

key = sha256(str(s).encode()).digest()[:24]
aes = AES.new(key[:16], AES.MODE_CTR, nonce=key[-8:])
ct = aes.encrypt(flag)

print(f"A = {A.list()}")
print(f"b = {b.list()}")
print(f"{ct = }")
A = [117216, 78269, 826750, 194944, 824452, 96307, 339754, 262642, 544699, 335139, 466512, 992092, 939999, 645304, 476780, 649936, 799648, 644296, 761364, 783700, 414680, 685600, 719009, 41767, 998249, 589581, 80830, 374886, 138753, 389952, 738614, 799614, 672522, 360857, 320428, 47706, 433931, 667986, 341863, 1024310, 667106, 460346, 746128, 377078, 516142, 3891, 1028617, 862791, 884555, 737021, 1001694, 969772, 500276, 583250, 184619, 718719, 505777, 5841, 574057, 922516, 784379, 332112, 604796, 167445, 314019, 524402, 280472, 614133, 772309, 448042, 901932, 906295, 776654, 65868, 112621, 1048522, 958823, 123619, 222573, 98518, 838962, 948664, 659170, 615617, 28151, 53748, 922456, 126869, 267573, 60395, 590132, 439714, 1025072, 507798, 482680, 343502, 554938, 435296, 520136, 962134, 642132, 532369, 435065, 183151, 166403, 755342, 792397, 694119, 623141, 1028305, 897348, 1046621, 25012, 409229, 105628, 660287, 939355, 506107, 118979, 199663, 850901, 482000, 668507, 897628, 847126, 775982, 732462, 54086, 523211, 413360, 892563, 596266, 863288, 442011, 851137, 608133, 115384, 613230, 41209, 286845, 237539, 874185, 1005291, 638739, 858877, 55646, 103350, 135516, 240613, 436547, 333336, 142587, 768669, 705165, 943278, 562595, 848297, 996128, 117402, 930870, 903, 674804, 841018, 1015195, 252513, 184867, 904808, 959339, 738686, 677415, 801212, 360945, 363668, 53711, 360687, 137888, 712906, 738518, 648999, 444981, 453506, 164464, 784514, 650719, 272749, 475228, 614772, 385256, 736379, 228719, 906049, 1019082, 945776, 1028923, 652914, 430609, 142080, 609040, 1004760, 724890, 949521, 200409, 161145, 288719, 559519, 915871, 551305, 286108, 708027, 37091, 163139, 294951, 232289, 371752, 308912, 897436, 1040591, 536277, 711891, 571717, 756673, 393465, 31312, 48593, 799530, 617097, 827860, 1019417, 793259, 220475, 172430, 1047820, 265486, 106583, 783350, 480656, 993025, 988169, 716857, 881322, 740026, 230428, 775262, 621944, 866821, 128392, 55491, 318259, 828844, 545169, 546166, 704453, 1031639, 209961, 1000311, 464502, 635976, 694826, 476227, 760961, 620219, 997419, 1019886, 513517, 336697, 335146, 565136, 338426, 181566, 163588, 1043024, 291915, 563627, 747312, 568903, 640042, 536052, 713919, 455594, 596586, 668518, 886987, 285001, 624532, 721152, 602648, 768967, 800624, 129721, 31729, 307059, 523697, 949572, 796793, 434056, 267297, 480390, 673881, 838668, 1002089, 1045544, 358085, 806317, 278149, 783347, 912575, 314968, 695127, 650442, 43222, 278050, 374876, 1037429, 157044, 369205, 134778, 16562, 442617, 656192, 347185, 779582, 836939, 881651, 923267, 352727, 802151, 217028, 154029, 704955, 614228, 100110, 63893, 641458, 262731, 437264, 944927, 281120, 220474, 966083, 840014, 276889, 546353, 620424, 396410, 562721, 78441, 775039, 2162, 213294, 1020966, 106511, 63481, 608830, 649183, 979305, 974527, 86837, 733763, 87395, 444756, 562806, 402316, 195912, 980280, 1029874, 1046919, 595706, 334988, 577789, 105812, 701299, 80309, 1022728, 449814, 517466, 866689, 196318, 133427, 89974, 691863, 106714, 75602, 246515, 362561, 981662, 717094, 42662, 12426, 810820, 1019649, 679019, 974558, 385928, 954384, 925535, 693808, 173054, 587116, 929032, 810467, 90440, 751380, 786028, 304594, 823491, 4748, 782806, 220681, 37521, 181703, 664265, 837440, 1030681, 675587, 436695, 326931, 338214, 655911, 707249, 230600, 560436, 323584, 539064, 858089, 378055, 664826, 768946, 387244, 215524, 400226, 1023874, 388697, 120761, 240294, 411652, 679474, 575756, 866886, 399493, 225041, 521757, 206248, 195744, 312235, 474044, 186847, 318430, 832033, 935414, 23991, 347783, 832193, 502258, 534670, 213654, 789729, 391516, 847922, 117841, 500705, 571168, 19305, 907389, 792669, 281699, 189774, 830868, 973595, 805091, 694585, 787048, 1000661, 208915, 303436, 292161, 382361, 632344, 403668, 441103, 1938, 210056, 602870, 582658, 612143, 181098, 89341, 606385, 352232, 655860, 475757, 196161, 547939, 356309, 625925, 68747, 125211, 672600, 857114, 213114, 611985, 424396, 1020904, 101006, 879284, 477532, 82616, 619983, 244302, 586010, 433163, 364220, 675379, 526799, 287416, 194220, 535298, 68620, 996282, 543516, 517982, 575779, 701537, 441992, 451138, 365405, 360593, 579112, 1002537, 921620, 427583, 293727, 637707, 1020216, 988214, 190689, 966457, 607852, 647991, 997199, 474353, 200335, 453171, 478565, 458429, 101693, 872330, 684036, 794828, 121966, 960594, 601572, 780416, 351143, 441275, 700178, 330113, 884537, 981998, 1004976, 304515, 584918, 868872, 803130, 589390, 727183, 51011, 550250, 429846, 517043, 460953, 98847, 209036, 844231, 205432, 911407, 918220, 889580, 297971, 216485, 279175, 168325, 315554, 542889, 233775, 633325, 246337, 688260, 589507, 942872, 152344, 226513, 558166, 756235, 667162, 193843, 301393, 465053, 212198, 929467, 423520, 1020539, 629474, 964425, 921138, 819253, 341841, 67391, 493989, 634493, 669635, 503438, 845854, 1047182, 190774, 1042090, 454270, 897516, 427152, 221202, 761032, 182426, 417199, 412071, 147342, 799121, 734078, 811087, 122728, 790962, 86882, 442070, 580796, 838826, 462019, 283321, 948332, 2474, 874486, 101791, 181872, 1036027, 882305, 652613, 522884, 743083, 728488, 72306, 745874, 944159, 571437, 127517, 464086, 406250, 1008579, 489878, 127033, 636131, 17858, 416041, 116643, 494431, 714206, 66683, 897915, 1008468, 1012002, 525255, 428068, 801810, 594618, 557920, 185680, 200968, 599992, 796636, 677546, 805187, 928372, 634712, 657970, 830230, 472514, 516503, 572345, 288095, 799949, 687284, 169438, 221316, 862177, 670274, 446814, 882752, 778309, 324928, 689919, 93573, 485615, 443069, 503675, 597836, 395775, 808744, 218924, 623459, 594927, 889442, 301, 1000800, 730035, 64513, 88687, 731872, 961997, 866639, 702106, 186502, 911228, 152079, 176817, 958644, 770237, 924971, 842893, 406823, 877775, 216677, 642570, 290060, 380579, 339392, 404729, 110916, 634977, 27149, 324172, 364439, 356917, 857170, 920204, 205424, 657736, 493762, 323875, 134908, 637633, 483221, 759648, 15190, 963379, 735925, 807273, 23825, 510163, 448381, 398348, 766281, 535218, 155816, 282948, 659110, 193240, 979385, 1035422, 716041, 594725, 855403, 908109, 828510, 785692, 590190, 857804, 142391, 93634, 871599, 319373, 841440, 103583, 218009, 149334, 985405, 301917, 1044375, 883015, 617574, 368206, 186911, 383094, 963669, 735606, 937212, 405971, 8556, 80054, 811909, 927036, 246268, 364583, 941478, 441609, 601807, 845367, 746905, 246240, 973095, 615806, 652865, 227027, 376463, 118484, 1009331, 263455, 547937, 141060, 492779, 831286, 392744, 328819, 346373, 678557, 629008, 691339, 347546, 1006799, 862140, 674194, 602862, 458576, 634951, 769516, 503483, 916650, 148806, 573648, 768544, 32786, 156536, 285625, 537447, 639179, 516241, 7862, 883528, 562446, 367137, 259121, 956022, 51212, 18291, 19361, 939720, 782006, 655594, 579916, 701004, 925631, 1011093, 494803, 242723, 973266, 1039295, 655605, 54247, 531154, 560988, 543704, 343171, 79422, 610517, 61441, 232757, 66735, 312788, 511957, 526543, 303952, 393092, 563759, 242756, 206992, 630327, 705906, 43593, 237633, 370, 801415, 821981, 624001, 250218, 874848, 779586, 341232, 1012352, 801948, 54241, 715218, 915554, 60472, 58710, 99345, 75933, 503505, 482214, 567671, 93081, 635321, 274580, 216359, 627242, 771395, 7538, 131530, 994954, 981043, 65589, 1036255, 520020, 1040504, 674862, 801294, 414333, 64549, 313642, 344805, 200578, 688524, 741986, 41036, 551378, 581637, 829264, 286863, 448339, 983940, 197107, 53746, 274, 28994, 1014217, 672653, 260908, 221118, 784567, 664126, 917268, 730792, 351953, 713665, 835344, 658366, 953969, 934738, 671259, 164622, 121033, 518018, 914661, 776308, 513680, 609765, 102059, 755902, 440182, 175763, 613421, 903245, 235429, 621400, 180691, 294822, 786545, 1015549, 280686, 568521, 64710, 111818, 392915, 721816, 330371, 336611, 46956, 1041871, 125324, 147560, 688075, 258201, 337343, 983570, 1048383, 308447, 33582, 371937, 1038751, 749444, 66269, 615144, 631318, 561663, 415952, 804931, 192081, 264624, 115570, 246483, 856813, 587898, 455845, 5610, 45714, 447567, 544379, 56512, 406857, 691537, 1028867, 142008, 478804, 963037, 128756, 490624, 464383, 267648, 930770, 401166, 755143, 217500, 277623, 336901, 267785, 704530, 281432, 3462, 876326, 1031120, 915231, 396592, 654721, 94462, 724806, 673236, 995791, 742929, 380296, 637959, 356425, 774804, 784147, 53383, 910403, 475792, 893908, 640025, 303673, 377256, 898152, 153323, 400764, 860254, 1028366, 1023112, 548470, 466108, 27270, 567831, 1002416, 959051, 966423, 423431, 999156, 600496, 178661, 182953, 786571, 996323, 882007, 362242, 97435, 31284, 895283, 527089, 505132, 925880, 963096, 26945, 729107, 751261, 678685, 637138, 194735, 921975, 105600, 460200, 230004, 23281, 769179, 431652, 474710, 735217, 753305, 221951, 917617, 37259, 582975, 953984, 249556, 825318, 249800, 186793, 61946, 964934, 170149, 298724, 941636, 473210, 775996, 715743, 327678, 259173, 692264, 390385, 194256, 381390, 872071, 459749, 416341, 605477, 617031, 645696, 673802, 69432, 421544, 692969, 652375, 774057, 779270, 330136, 814802, 1039070, 640086, 401907, 42431, 813506, 865131, 744511, 230209, 1023062, 344853, 278478, 534595, 115633, 570682, 637833, 235413, 905658, 583416, 492205, 20499, 931197, 897265, 267510, 760043, 559321, 449738, 425106, 179808, 934521, 381442, 297792, 543926, 288536, 803890, 772648, 604108, 243509, 584570, 946713, 505790, 98318, 579742, 887831, 106623, 471773, 420627, 150460, 45361, 620926, 525924, 214520, 79079, 7275, 759334, 281708, 918958, 252661, 950307, 393074, 756917, 524943, 41985, 569017, 179478, 112235, 746404, 1034477, 712206, 268244, 349690, 820279, 588521, 345151, 633180, 18265, 491357, 210273, 49665, 417509, 661836, 631291, 25406, 269009, 195703, 178759, 890477, 138999, 553917, 504170, 232490, 894231, 343049, 310909, 38999, 705483, 467401, 732856, 484415, 783773, 838427, 204412, 606298, 44556, 116620, 217396, 952195, 612147, 120785, 697810, 375708, 809775, 638540, 821511, 554523, 916978, 188147, 727602, 624177, 870460, 529555, 271978, 802116, 843020, 971108, 242, 226002, 612911, 988370, 599394, 604278, 505172, 980203, 435436, 1021089, 42008, 420685, 338893, 840592, 257850, 862262, 550114, 710871, 546745, 442450, 410463, 700213, 789709, 1047196, 809883, 447108, 23479, 989934, 207335, 715271, 529825, 1037379, 583171, 229266, 847061, 686247, 1007543, 110844, 903454, 161988, 446852, 124461, 830543, 850129, 317187, 743801, 64151, 550494, 768500, 396415, 673512, 692826, 561991, 730831, 702333, 714679, 664573, 181499, 476456, 884630, 221109, 221012, 857562, 958859, 137231, 533749, 117924, 1042514, 488240, 650012, 36396, 93404, 648990, 31745, 67424, 85185, 686986, 775351, 668251, 701290, 980230, 586237, 438923, 638073, 711107, 828645, 48158, 192958, 398595, 905889, 367265, 896518, 247521, 114632, 357173, 302, 546976, 713208, 429491, 753174, 501774, 806818, 180885, 350466, 856298, 394622, 670058, 948864, 221215, 341380, 108, 79668, 1024964, 1017041, 947914, 574656, 126598, 1042608, 954741, 733405, 496422, 576822, 726314, 892550, 639330, 656609, 954410, 818564, 483369, 523182, 1035110, 518276, 952710, 497790, 221065, 509026, 714317, 211475, 935793, 37556, 783000, 271358, 508522, 959960, 555094, 416679, 897331, 333207, 901675, 583539, 193619, 484295, 1020228, 538402, 578001, 835734, 15145, 595686, 430351, 99262, 1005046, 285560, 575020, 685334, 233239, 980712, 673443, 842763, 788585, 917575, 903001, 877273, 125832, 845201, 943500, 432152, 640822, 804629, 933521, 441413, 914619, 856523, 741328, 542117, 849640, 275034, 934291, 253566, 290375, 467775, 960527, 443806, 567064, 912824, 907005, 994887, 560287, 227326, 705701, 823473, 926826, 119362, 1014415, 234274, 525461, 120732, 715889, 793052, 245804, 742817, 663928, 867956, 434147, 942268, 668529, 907352, 198705, 72831, 127537, 1029821, 767968, 876573, 285739, 25639, 272440, 567427, 970332, 60884, 108045, 991106, 815951, 28705, 1045475, 673428, 836647, 7236, 174620, 774524, 987858, 722865, 152113, 836072, 864008, 82596, 768615, 71427, 712032, 222264, 613374, 702752, 94221, 660160, 176266, 591228, 610752, 863084, 310561, 744336, 344886, 283522, 547082, 837859, 427679, 999423, 499007, 466379, 918382, 243664, 163198, 1009659, 202318, 936253, 960850, 300882, 815100, 329784, 550857, 788320, 1008480, 696304, 488347, 367810, 910372, 964152, 63102, 483641, 517791, 933911, 392677, 578851, 386995, 968263, 623264, 121137, 867047, 366063, 879621, 822961, 640864, 599505, 735162, 706652, 247145, 253134, 100588, 99299, 264343, 1029818, 205824, 742234, 412963, 138459, 8093, 543270, 1005463, 219463, 492975, 120862, 21718, 988174, 296353, 297100, 346580, 994954, 1027056, 149891, 57203, 369671, 688453, 604039, 545803, 530956, 435441, 200252, 746142, 109531, 356476, 55834, 939103, 199708, 774364, 622409, 195494, 43908, 654836, 837634, 577441, 658632, 336567, 985349, 244261, 690056, 381753, 534599, 778766, 674420, 761893, 447905, 559505, 641334, 722646, 776737, 587614, 815084, 807395, 231071, 11690, 167574, 429921, 153867, 806318, 22002, 666076, 796192, 630820, 590664, 299151, 616349, 18085, 748616, 477606, 293538, 879634, 745476, 922357, 779867, 786519, 746318, 900024, 363180, 255688, 39034, 965511, 836342, 271684, 610810, 803320, 438458, 101453, 21108, 665905, 240199, 502003, 892939, 286233, 257665, 913117, 756566, 362666, 61413, 817239, 81727, 372758, 1030936, 873078, 478653, 26121, 879955, 505018, 524162, 169712, 258198, 999850, 443840, 830366, 1034488, 429073, 433227, 996634, 369492, 765857, 113528, 194454, 376240, 85232, 808818, 529365, 117669, 745009, 702943, 420572, 228396, 407706, 131793, 74041, 575820, 684692, 285877, 542181, 220443, 381667, 78253, 957602, 6519, 763435, 701198, 280499, 1030773, 702447, 810760, 315422, 303964, 238426, 881135, 645384, 21521, 548708, 105968, 290404, 854821, 371251, 321051, 41792, 232013, 928492, 755961, 530316, 429937, 577991, 662587, 101353, 930793, 689595, 814611, 1034375, 243026, 574225, 50362, 247823, 144716, 662325, 77214, 416569, 337107, 677672, 83636, 63332, 116355, 859729, 625682, 744093, 35175, 78925, 1015172, 564960, 800126, 130276, 97258, 437663, 271610, 690365, 115884, 901843, 19636, 446304, 337509, 609366, 164139, 802027, 1040242, 631892, 212418, 15258, 672921, 108329, 934580, 99187, 281941, 1020628, 220396, 506758, 780168, 872199, 82802, 1034594, 470793, 933246, 533450, 473173, 347923, 634894, 156511, 115221, 754250, 561758, 393038, 775428, 233123, 139154, 336386, 384576, 386565, 405558, 752319, 493004, 871273, 424315, 558418, 560169, 532376, 152822, 912037, 580435, 467412, 837144, 747508, 497499, 956459, 36695, 73293, 284251, 659018, 870941, 911487, 750189, 418181, 1038701, 588636, 835524, 450717, 330631, 603018, 1029972, 570526, 712506, 673547, 837662, 195978, 679448, 670966, 641151, 124189, 912549, 51153, 1014026, 797932, 877493, 908196, 823792, 594308, 430174, 324195, 814101, 260567, 681816, 633743, 1015876, 389999, 768373, 588598, 329412, 832551, 214092, 310265, 907103, 74198, 83445, 917639, 396353, 524030, 1031529, 259366, 1037520, 185791, 52496, 620394, 748347, 368252, 230572, 547489, 611031, 866910, 340595, 501840, 110413, 235777, 645879, 213573, 565928, 435149, 90150, 98051, 958157, 443490, 823509, 716527, 582757, 285724, 497997, 136373, 673327, 228746, 316378, 561768, 798965, 560371, 493141, 135137, 517464, 89844, 359095, 193710, 283199, 211172, 758346, 183201, 613642, 31212, 524785, 857364, 972464, 326321, 146019, 832598, 405802, 363246, 524060, 919831, 727215, 220884, 813078, 714361, 467407, 808540, 732101, 977177, 71155, 200460, 86666, 135059, 739033, 395644, 302216, 231206, 144060, 485173, 65016, 180613, 638406, 1453, 138465, 1029577, 58004, 856458, 418994, 822262, 855048, 573528, 709615, 977568, 1045327, 979023, 1003879, 913131, 681379, 982408, 702499, 440712, 933528, 78498, 552534, 513869, 925336, 869260, 434762, 803864, 1043414, 731744, 871230, 296868, 744011, 261779, 813033, 482629, 895364, 893443, 324375, 186800, 1031810, 551079, 166552, 412444, 633017, 281247, 980104, 56742, 430490, 51227, 278234, 334235, 216153, 388983, 683839, 772545, 165785, 441439, 664969, 1435, 648360, 326831, 635840, 45158, 928880, 973830, 992924, 112209, 885974, 892802, 332513, 88776, 879184, 848749, 273864, 143447, 247596, 678866, 241908, 958340, 352708, 967078, 88866, 399295, 132089, 25410, 609650, 857981, 314255, 979288, 878556, 987178, 786611, 624863, 421145, 237751, 550375, 342867, 152171, 316115, 778654, 677709, 618528, 941915, 1002027, 27842, 505417, 314493, 508886, 523703, 286622, 152542, 206943, 985815, 290260, 235998, 505763, 125846, 898736, 656942, 170491, 206767, 68734, 787075, 960622, 825016, 758264, 185353, 909862, 822697, 221534, 880988, 107125, 867379, 696427, 944568, 984913, 411536, 312919, 223802, 660467, 354267, 663556, 551945, 224038, 235084, 726948, 263388, 278216, 4189, 944761, 936250, 549558, 33327, 51477, 304579, 96589, 703709, 505556, 643880, 805842, 144871, 662797, 59278, 105330, 447108, 896822, 835252, 713204, 764945, 499066, 785052, 1018813, 74202, 801926, 878636, 525589, 476267, 1026278, 197930, 294619, 1047091, 880541, 968654, 727334, 804901, 314280, 148553, 919462, 970135, 57912, 8976, 148891, 646187, 310441, 348957, 829257, 712263, 733908, 567575, 410635, 229120, 342589, 771137, 433968, 996060, 392636, 908773, 601346, 266034, 982964, 210585, 915942, 411315, 543713, 686560, 283163, 925133, 106213, 1021939, 824116, 459385, 733136, 215752, 57977, 54741, 559989, 1020406, 616267, 916260, 20980, 88290, 313420, 824660, 408471, 742205, 796387, 627334, 917120, 69511, 522065, 51654, 75728, 194811, 550028, 114225, 120413, 887894, 319689, 560216, 520833, 412486, 812525, 70343, 902263, 51319, 301882, 406164, 394275, 676357, 372901, 527531, 207704, 142687, 920065, 554825, 44962, 826222, 20988, 728988, 780456, 53334, 515656, 1040434, 1036625, 197217, 262972, 936108, 828701, 645392, 710425, 852135, 186763, 879097, 476593, 274190, 1019396, 199535, 562953, 96154, 270636, 898432, 517450, 414615, 769450, 869924, 2051, 789522, 271433, 859001, 722950, 580190, 986503, 900182, 589215, 449005, 859365, 76298, 809433, 907125, 768263, 865366, 442036, 594410, 515856, 941336, 182288, 345476, 774390, 862133, 948033, 737437, 393843, 464691, 683851, 511801, 110757, 149229, 375647, 2937, 1124, 403222, 368917, 724017, 530074, 101122, 630794, 402601, 795177, 812968, 500881, 294412, 953529, 909593, 307105, 204682, 572260, 970097, 347254, 22966, 693219, 404160, 282197, 146296, 25302, 225462, 596764, 181963, 240391, 32619, 704951, 840800, 745652, 744169, 511787, 809640, 2879, 405073, 891361, 105226, 1009617, 169225, 12262, 43576, 602867, 964191, 125259, 883746, 61871, 216350, 167213, 30248, 172826, 235838, 516104, 625382, 463543, 857022, 1009252, 341000, 25433, 1045301, 784327, 434012, 655376, 626601, 852483, 605739, 670965, 212805, 632336, 243175, 1008724, 185963, 802241, 58196, 732081, 455852, 652710, 493909, 559027, 849230, 47224, 583848, 404714, 21417, 106623, 657137, 937550, 256760, 703134, 962383, 312957, 718921, 274142, 652213, 592491, 935507, 300801, 700161, 578886, 437193, 97324, 404482, 488186, 377946, 146578, 415673, 474764, 938688, 36163, 215620, 789878, 123874, 520125, 1044681, 871993, 149957, 432950, 444291, 149282, 515532, 512939, 789109, 36425, 163727, 1014708, 780281, 288708, 697947, 565423, 262938, 758566, 716911, 73343, 575344, 744557, 849124, 640076, 44900, 595556, 438939, 108037, 332443, 158799, 336867, 464026, 444694, 186806, 116024, 578455, 621348, 732351, 139695, 544029, 946822, 843275, 580314, 371488, 111952, 702369, 316380, 241384, 302875, 474755, 232646, 901238, 1008345, 509752, 946784, 372382, 1008041, 220040, 869358, 391580, 523017, 532831, 84350, 739189, 106551, 1035017, 67696, 897486, 407348, 580244, 437957, 176827, 16632, 140706, 306878, 807504, 274942, 550203, 1045934, 943789, 350485, 1017162, 246942, 708063, 835973, 125516, 553519, 679443, 438589, 526324, 85899, 477536, 19255, 622479, 280329, 926546, 115001, 605472, 972072, 246171, 436138, 859602, 1028983, 148858, 574715, 420642, 682757, 254306, 33370, 68507, 514393, 1044733, 33967, 127310, 986919, 202497, 774099, 367843, 419116, 846204, 849153, 211434, 645015, 548164, 639104, 684703, 899237, 911860, 327665, 108072, 1012340, 932732, 849826, 665982, 353722, 854219, 666106, 895740, 283100, 167595, 1036130, 339969, 167272, 143142, 503017, 1038591, 703876, 254968, 750722, 742079, 329291, 134941, 16570, 641127, 798198, 311141, 976040, 591071, 772897, 85001, 272521, 856401, 279602, 382736, 568682, 725033, 252708, 829773, 906955, 1021070, 568870, 162700, 866800, 836535, 1023379, 779626, 238271, 959328, 476274, 250347, 300097, 305374, 1005215, 403370, 108426, 315986, 396965, 547283, 349008, 581342, 420327, 780823, 13733, 363701, 28016, 714870, 505530, 312735, 183213, 28807, 603104, 1358, 643803, 754211, 110925, 34120, 768380, 481708, 422211, 112846, 749231, 299594, 702756, 257941, 532848, 499366, 201736, 424980, 828050, 572110, 496247, 150960, 559195, 1045155, 717025, 381212, 868261, 957472, 45858, 531552, 964439, 767099, 317973, 337429, 51612, 1043534, 34355, 370399, 880339, 324490, 90397, 327236, 981730, 263064, 716426, 533523, 472181, 379104, 611618, 788115, 138774, 132288, 551611, 1047965, 367946, 544391, 795264, 647642, 934120, 904775, 366315, 441133, 1001885, 437583, 85480, 328077, 1505, 363901, 229737, 632798, 932102, 518782, 290142, 158986, 610145, 204713, 101306, 68919, 1026064, 209905, 536185, 1036228, 1036726, 141165, 736106, 227976, 465049, 141279, 855750, 459075, 476056, 187747, 223282, 820835, 822489, 913522, 351032, 521765, 115830, 699309, 708141, 72407, 333859, 894298, 335590, 868499, 645040, 443118, 370550, 98108, 440194, 415129, 52700, 381141, 215746, 884832, 938930, 141626, 31635, 7679, 441965, 828000, 1009587, 1018529, 305068, 311430, 473984, 141379, 47391, 391393, 775526, 166096, 21023, 987428, 78021, 525754, 543501, 65181, 191311, 505643, 750142, 273685, 833465, 1011365, 321447, 184667, 1041191, 288172, 529384, 917545, 256659, 1036664, 445649, 441518, 985021, 1002176, 335708, 182045, 545798, 326953, 636506, 368702, 967158, 406815, 640079, 742105, 613692, 330534, 522917, 28060, 482490, 1030643, 819502, 366645, 501273, 335105, 879986, 410777, 366850, 67034, 536706, 572113, 202555, 626541, 1000413, 624824, 1037106, 981121, 304020, 604531, 1029145, 477004, 916464, 312910, 609784, 92701, 189555, 535450, 955048, 507888, 211839, 691153, 451285, 575364, 207705, 709805, 171938, 287714, 955930, 22628, 435333, 221606, 939308, 72794, 672671, 521383, 177979, 709421, 639597, 910162, 542528, 892164, 45320, 449077, 373720, 979619, 721264, 925138, 123461, 711485, 137179, 250120, 697263, 493597, 672416, 806059, 838795, 801534, 751080, 23480, 750885, 356833, 315341, 603134, 413873, 562923, 667248, 197402, 334620, 315665, 291386, 227759, 810552, 195635, 820127, 778502, 619368, 793327, 127536, 1005415, 387207, 921140, 910945, 772111, 767189, 36367, 204650, 765652, 194991, 115903, 968953, 1033326, 280792, 106751, 78013, 280825, 994053, 443898, 239654, 142810, 615074, 42199, 219284, 976709, 600475, 268693, 726284, 152240, 554624, 61044, 209439, 693858, 715943, 694013, 439199, 992290, 246621, 291283, 431448, 305430, 833433, 838564, 596592, 879550, 45867, 263364, 895628, 125218, 261900, 1009035, 992209, 457617, 464201, 557175, 435345, 166509, 344774, 451891, 149515, 711418, 337023, 797283, 455572, 266463, 619994, 475574, 922796, 285099, 192778, 461429, 178588, 622949, 880403, 557320, 482311, 1007772, 590362, 869249, 161876, 20028, 783575, 77742, 963301, 206493, 114189, 52171, 529848, 1035724, 229072, 327834, 571161, 999639, 809814, 500165, 214573, 784263, 638355, 186266, 439192, 187467, 214464, 328117, 737887, 383383, 256878, 464809, 398787, 309060, 783292, 1035041, 555994, 710038, 812450, 848638, 400022, 798310, 967261, 779867, 478697, 85950, 895188, 38995, 65428, 902913, 550267, 980713, 1031250, 786819, 847408, 829259, 568998, 244036, 634606, 212776, 750819, 389215, 643701, 130949, 113301, 982016, 277802, 597851, 676420, 186591, 599219, 520858, 315528, 654458, 239171, 437507, 589341, 439968, 284696, 651932, 198835, 9132, 614771, 645952, 252592, 182264, 400951, 39260, 539930, 837898, 751552, 749795, 179243, 443395, 805693, 625757, 644795, 983868, 462975, 85547, 1027953, 137168, 340410, 239210, 958684, 607377, 839972, 128640, 613260, 544696, 708494, 439844, 59684, 745378, 437541, 693111, 702910, 293469, 573958, 467798, 849812, 927961, 1009277, 519770, 755221, 528698, 420170, 60095, 272102, 904044, 730940, 936550, 244368, 622919, 415315, 25760, 591423, 156359, 614585, 40603, 182322, 615898, 274500, 694697, 674318, 485081, 912808, 793401, 931992, 225067, 375762, 648720, 585319, 317675, 630897, 110759, 757769, 398233, 378656, 626564, 81515, 949726, 822338, 287132, 616905, 647013, 935849, 850691, 383254, 719916, 23811, 398529, 943498, 133095, 159800, 126104, 426491, 955061, 427810, 1029150, 951497, 578987, 103761, 138162, 970706, 933329, 555931, 670306, 155544, 1018250, 133518, 279742, 992783, 555392, 427748, 804215, 122418, 56543, 10747, 758543, 602254, 304042, 678169, 892950, 948498, 687020, 610715, 51681, 321477, 631236, 16504, 58586, 696639, 729136, 524983, 674932, 670902, 536669, 353555, 615597, 442835, 186845, 1029556, 459170, 365633, 947597, 350033, 542029, 418866, 2064, 316734, 28329, 874717, 632581, 656608, 674232, 714777, 339410, 480659, 946881, 130981, 1038014, 1036271, 171292, 582124, 215373, 411033, 510683, 160647, 204195, 738583, 196553, 407404, 647443, 757546, 102327, 447132, 54050, 361484, 1016289, 723504, 327358, 523170, 635563, 1004759, 371873, 756627, 143335, 231191, 69900, 45876, 118730, 901284, 850773, 90368, 514749, 653625, 601741, 557275, 319671, 726395, 45037, 451131, 223562, 120910, 646719, 504559, 820075, 1046760, 319503, 483952, 829632, 872662, 764766, 94979, 915880, 442323, 221655, 285254, 310007, 685907, 754637, 454759, 348943, 455114, 486145, 670442, 270018, 679614, 751629, 576408, 745503, 452456, 203793, 920410, 95907, 245434, 839080, 675918, 922242, 495274, 982166, 115368, 337743, 1007711, 14698, 580015, 534103, 805934, 245063, 583919, 365938, 835041, 730120, 22775, 988460, 319396, 686923, 106723, 921288, 467677, 499427, 128038, 302716, 184411, 1009732, 999376, 688772, 628380, 955459, 765398, 34818, 621636, 855768, 97170, 1046118, 445102, 739685, 85591, 629976, 912769, 388220, 144677, 627463, 622051, 341796, 662400, 724486, 151800, 529590, 707057, 193123, 915129, 650197, 277659, 1015818, 82058, 559817, 915376, 569323, 512549, 310422, 40834, 437542, 862983, 384529, 67393, 1003200, 174414, 160392, 493227, 121376, 627013, 760803, 280601, 132423, 1037910, 772933, 556824, 885648, 1011172, 230446, 128318, 512408, 429913, 84640, 820822, 510005, 631424, 370723, 878252, 233767, 44809, 717107, 376711, 249638, 445942, 1037558, 576318, 29968, 117836, 704640, 13119, 571593, 1006560, 1009187, 547851, 399181, 1023729, 170866, 188173, 324807, 908376, 639012, 89737, 2293, 712761, 252383, 387801, 929173, 410111, 1020023, 558638, 542389, 780742, 26806, 295434, 332205, 422612, 1042588, 577282, 960618, 915850, 105603, 387285, 643260, 207667, 228124, 5891, 11487, 753743, 428231, 219187, 821890, 681775, 50700, 660768, 284364, 402120, 333078, 628360, 130309, 540801, 832131, 503942, 882927, 139028, 464900, 739398, 39257, 203171, 377557, 82761, 232416, 638364, 127712, 818348, 966022, 219, 256894, 631962, 523152, 676719, 791391, 282303, 776633, 184695, 766505, 915772, 34852, 775496, 208229, 294862, 844200, 190190, 52315, 730417, 760911, 821289, 1021232, 652358, 1019124, 230030, 85797, 755149, 606105, 89713, 204918, 179977, 83876, 397597, 522056, 945179, 855778, 198410, 354763, 391169, 475889, 975993, 710099, 563190, 438280, 950686, 998061, 967466, 104209, 452364, 632213, 957851, 825622, 259587, 207494, 194820, 321235, 348862, 648614, 936709, 482357, 942034, 332432, 969984, 318407, 292865, 731569, 811607, 228963, 247799, 167517, 893868, 478106, 257896, 569132, 69150, 119252, 453716, 819396, 116326, 231744, 990164, 752488, 503433, 565093, 306783, 868985, 886556, 53318, 984560, 794482, 428096, 871856, 638333, 860622, 758899, 178021, 155897, 716695, 468394, 945460, 486880, 182086, 452433, 722223, 1027904, 138932, 910456, 966637, 186946, 1031049, 777869, 722967, 985143, 75823, 137314, 883491, 996067, 35069, 766024, 184124, 905374, 103022, 954869, 315107, 513089, 831433, 1001153, 430087, 126879, 779523, 426487, 522445, 161171, 210579, 175267, 246319, 186233, 899398, 470831, 48563, 861456, 825577, 475717, 853428, 421206, 712336, 438630, 363493, 451179, 171240, 886612, 712856, 297051, 328468, 418173, 615399, 722713, 98656, 602126, 582136, 632817, 224161, 973360, 270848, 264170, 472551, 1018654, 952560, 939554, 749907, 55861, 522830, 7091, 1026993, 909727, 707705, 149847, 967931, 260447, 768342, 905433, 297961, 765120, 444760, 24800, 869971, 819889, 776757, 330780, 23782, 42757, 969430, 80908, 805631, 408563, 165650, 99103, 161873, 133021, 1004614, 815330, 791142, 212141, 516311, 655107, 969317, 470534, 18815, 651027, 725031, 613346, 650801, 475916, 458446, 729528, 642315, 2127, 565956, 581688, 733364, 193688, 932645, 856875, 930239, 561168, 876452, 983928, 372719, 135881, 1038542, 772611, 1043857, 82998, 372390, 738141, 159944, 323030, 426562, 78852, 284765, 724645, 330122, 710774, 365899, 947318, 771279, 214302, 737707, 819909, 458952, 195012, 397192, 247070, 553521, 324368, 305455, 1028665, 706109, 993133, 852944, 818626, 521371, 468136, 159633, 200632, 62543, 266316, 604121, 1002927, 379881, 671944, 797816, 472825, 911101, 120946, 483503, 222248, 308990, 275953, 635630, 53115, 912397, 131188, 859769, 245495, 275029, 819444, 602454, 159690, 894337, 187659, 619950, 705143, 587029, 923992, 314153, 284710, 136445, 171771, 834706, 216635, 720439, 100058, 149283, 81761, 583719, 173419, 855804, 6628, 692059, 373127, 339307, 318613, 159493, 18624, 717198, 666587, 955901, 85750, 117062, 896315, 591294, 724379, 873153, 544018, 1003304, 509318, 883092, 834502, 967556, 643157, 67011, 671180, 426807, 321478, 313156, 82724, 334903, 310519, 80153, 686886, 937134, 341637, 793651, 318140, 50478, 287493, 367049, 1008170, 679638, 765218, 15079, 1036613, 327383, 299756, 162329, 894905, 92665, 15334, 860080, 921910, 713926, 560103, 481399, 823093, 241181, 26873, 499345, 626800, 765353, 599114, 703314, 463233, 1019984, 60188, 869236, 358287, 78586, 304867, 184516, 73254, 473667, 357668, 158055, 1046284, 81242, 371468, 420457, 862239, 692044, 625086, 942489, 378400, 171988, 335656, 366381, 286358, 729506, 614852, 505778, 996290, 402779, 1003012, 925144, 336038, 957454, 768962, 200365, 113282, 18875, 133346, 88991, 17794, 637934, 860768, 534593, 610695, 580292, 87678, 716633, 288994, 240316, 70667, 211883, 169128, 191198, 1007317, 249242, 26755, 950832, 568078, 1026854, 575875, 826656, 658778, 151153, 394878, 1042288, 65751, 676066, 157424, 54706, 629609, 327895, 509936, 626173, 428184, 632173, 632858, 1035941, 1015749, 580854, 832117, 388117, 823767, 322193, 706954, 1009614, 51002, 937907, 116794, 515517, 996726, 474321, 789177, 907418, 899193, 102021, 830552, 19182, 234185, 111461, 272038, 847373, 227249, 622815, 648853, 827746, 228648, 417058, 149953, 47562, 1048555, 407956, 388682, 513619, 183703, 29274, 105122, 508471, 759583, 886276, 720895, 844727, 890957, 164438, 961589, 718398, 756813, 138472, 897027, 205355, 559235, 13155, 363150, 196211, 859349, 247986, 194379, 892223, 538416, 934585, 455065, 842896, 532578, 720618, 988611, 26364, 989911, 505985, 530355, 265053, 110443, 1013935, 440784, 696173, 995079, 710827, 137092, 496206, 1046528, 280051, 431682, 642006, 617139, 1029499, 702354, 714719, 966586, 901717, 659463, 861296, 953922, 972297, 727243, 505933, 886073, 577593, 376444, 98595, 607221, 236243, 739577, 366346, 92563, 861551, 516016, 1030864, 737524, 249130, 653096, 366643, 332701, 256096, 532099, 372437, 378429, 862131, 247391, 835957, 153539, 641405, 412144, 120918, 614365, 610491, 757270, 114047, 954184, 519110, 960613, 574217, 869744, 531754, 640528, 180143, 502843, 735373, 822730, 109789, 14334, 733656, 417106, 359010, 36791, 1023951, 581797, 163840, 65206, 74156, 956992, 9069, 8749, 176872, 961785, 361320, 200057, 28464, 970339, 571869, 129435, 76413, 1032880, 420949, 245110, 915779, 270792, 471322, 506746, 394229, 1024324, 109362, 426312, 12954, 963330, 131659, 290574, 342358, 905409, 791361, 896464, 664299, 711117, 242749, 450287, 399972, 145955, 563188, 32124, 876127, 890419, 655341, 1013030, 545194, 230048, 85036, 431357, 812532, 138984, 70887, 115725, 722481, 278513, 558552, 359351, 31040, 564020, 2892, 1014398, 430344, 906909, 529441, 137680, 342081, 673000, 221777, 747913, 106962, 786026, 205351, 850718, 512880, 668724, 553632, 1042002, 436100, 200862, 3676, 21945, 898639, 814988, 808697, 66127, 899383, 626636, 423159, 828887, 903917, 151334, 660099, 884259, 465174, 539015, 1001556, 650079, 848040, 1045128, 517233, 982951, 967470, 189684, 383437, 7809, 459689, 542780, 503312, 1003589, 161207, 672494, 647171, 269535, 762147, 1026028, 592881, 255265, 780799, 78303, 518223, 712096, 733546, 406232, 399754, 746776, 283930, 323422, 868195, 45203, 102463, 1026114, 419818, 737804, 999622, 703835, 278740, 92036, 272668, 657321, 923595, 91140, 27683, 236105, 12501, 55790, 435958, 992320, 343555, 853020, 72468, 317304, 901740, 118073, 986934, 309434, 704452, 61887, 210857, 407330, 290159, 520155, 204381, 374805, 39585, 372310, 148976, 714638, 216066, 738021, 464112, 938474, 320329, 111161, 981765, 356341, 838002, 659594, 927766, 274180, 906285, 193308, 81978, 758821, 416230, 575350, 902645, 141196, 357547, 172110, 210570, 182363, 112291, 908017, 472268, 892876, 899263, 120940, 1017440, 610012, 688376, 6890, 730273, 162683, 6656, 557347, 922780, 987973, 354637, 43445, 1024827, 258328, 969686, 1047086, 111054, 122004, 558780, 447771, 1026370, 217925, 1015776, 1015718, 635215, 927592, 213061, 280887, 141680, 915435, 345744, 632966, 568837, 972569, 257610, 563554, 454360, 102945, 552661, 719863, 875032, 26462, 676012, 969343, 963244, 774065, 243514, 166955, 820134, 81044, 412449, 385863, 217459, 46179, 109374, 832191, 539473, 796031, 1005908, 952083, 732523, 220376, 261182, 15036, 99806, 734351, 616910, 880186, 443596, 522146, 43223, 218237, 532126, 60330, 644205, 1030785, 593447, 99509, 305616, 529169, 731609, 903780, 786154, 373694, 1019445, 108805, 462461, 179906, 26559, 1041639, 1040501, 290190, 119194, 521467, 43316, 60730, 64342, 364185, 919890, 432869, 495681, 896398, 488108, 227352, 430463, 360482, 620124, 531488, 672590, 709966, 608545, 847838, 535429, 1032487, 354184, 187667, 991449, 388785, 260350, 217029, 874199, 718949, 182462, 615715, 1021002, 157903, 817568, 723146, 385632, 651944, 106520, 785748, 428194, 661240, 1440, 136749, 91255, 591383, 451482, 308693, 484355, 624462, 810932, 812616, 822864, 773496, 130872, 356844, 725856, 24303, 631053, 23016, 880751, 781468, 578659, 29506, 797281, 378105, 790170, 1017501, 426582, 442770, 400393, 213681, 509112, 879835, 382974, 994883, 786121, 328823, 943164, 602322, 625058, 315891, 707375, 956463, 398875, 746350, 1018273, 463238, 467581, 175604, 266488, 1005194, 562471, 324900, 579289, 711976, 608930, 580045, 639984, 980459, 672740, 1035687, 876318, 49276, 732517, 876345, 230749, 881932, 732072, 225705, 223238, 828725, 579935, 912823, 502267, 123978, 769313, 462600, 444284, 963682, 295553, 582309, 769171, 409135, 36979, 837831, 430160, 602823, 1011228, 581903, 224883, 906504, 158551, 485831, 1026423, 758224, 73933, 593340, 501450, 941175, 744736, 998696, 756484, 1010116, 362559, 515095, 1009130, 463837, 1024940, 482903, 218729, 900174, 778074, 673327, 845902, 470316, 105741, 664703, 26110, 284516, 363579, 742298, 465388, 323771, 960286, 78432, 346830, 585849, 144877, 459649, 163814, 943083, 931051, 484857, 171342, 489087, 173213, 694074, 804592, 250568, 276069, 77166, 102766, 781338, 168939, 753133, 262641, 888202, 936282, 581911, 105530, 876791, 670465, 690181, 519516, 316235, 82525, 855580, 448913, 837146, 94967, 707216, 39325, 582249, 393012, 266659, 452594, 726260, 652017, 755877, 229142, 777894, 773645, 454958, 411479, 148445, 244575, 924666, 1033312, 843268, 646317, 336105, 745629, 184456, 408929, 197107, 64385, 92024, 160856, 937376, 898199, 461464, 795805, 483042, 97646, 33113, 639535, 951510, 140392, 773151, 74066, 36755, 192473, 165474, 706951, 51880, 805737, 840471, 273639, 321924, 263927, 543371, 869931, 436532, 150484, 850255, 674137, 494286, 157619, 324978, 951907, 429300, 8014, 406234, 661744, 937304, 916439, 611145, 237643, 1035647, 826110, 804339, 665705, 632889, 378705, 1042733, 26155, 738073, 519068, 1019872, 47880, 740317, 336661, 880230, 555824, 438798, 735635, 663300, 727456, 1046320, 353001, 471694, 134020, 450173, 242193, 752370, 290595, 819683, 525086, 932992, 845098, 862847, 535981, 1032543, 945319, 532089, 98414, 148333, 1048573, 628694, 852441, 294941, 584351, 716106, 770497, 1046513, 147273, 693761, 201741, 489535, 720111, 496910, 121562, 445612, 290212, 744982, 8435, 207314, 329767, 491624, 380572, 307944, 984398, 912142, 360058, 13056, 484032, 845635, 780934, 15942, 409416, 121502, 155934, 89466, 249673, 242980, 373169, 508220, 457571, 439546, 592423, 619410, 203047, 374082, 369761, 298232, 93642, 42065, 134401, 265490, 439381, 125128, 538834, 810035, 469497, 816572, 238647, 247467, 1035426, 790938, 168387, 873161, 737542, 721576, 237850, 398683, 243633, 21412, 427537, 686223, 1013763, 527510, 220273, 588132, 167960, 456317, 279585, 417872, 19877, 759481, 890691, 494959, 887075, 770669, 670104, 1019431, 440720, 207329, 627180, 87041, 558070, 565244, 429855, 985325, 676652, 663086, 685982, 694591, 1010218, 44382, 34195, 244992, 860206, 659726, 745852, 138582, 529163, 114189, 94725, 52463, 238187, 43167, 276139, 425437, 235122, 1001621, 424822, 160035, 713011, 1027436, 1006827, 2315, 301733, 19589, 662497, 209995, 540046, 202214, 739274, 100793, 913551, 602708, 913583, 158551, 501489, 61870, 145632, 989537, 661273, 353557, 503434, 837770, 951358, 774141, 717777, 862854, 187592, 4355, 382069, 808296, 852975, 184248, 333728, 231382, 220235, 926828, 16588, 620355, 65927, 394812, 67825, 771773, 344038, 1013148, 694791, 202868, 151280, 901930, 761841, 321201, 988782, 814939, 729048, 646819, 261876, 53808, 150145, 873495, 340711, 376964, 811530, 640225, 124265, 150926, 526121, 860995, 5518, 552120, 479476, 659197, 736984, 489248, 160193, 192318, 635270, 294815, 1017910, 916286, 593395, 413776, 944720, 807360, 24868, 464083, 952447, 815678, 102509, 997853, 42101, 312440, 771982, 955056, 551911, 868875, 632488, 364607, 215326, 957973, 58302, 205449, 370001, 921366, 946155, 439874, 715750, 294457, 573356, 379692, 455702, 467706, 958416, 1048551, 547265, 686772, 514597, 607434, 529387, 831922, 1027813, 55817, 1027822, 779176, 332110, 789373, 344824, 104627, 434627, 548305, 261140, 509344, 419115, 784709, 591742, 42218, 579013, 80630, 923538, 1046807, 1000973, 925853, 100254, 573491, 411954, 788, 434885, 670202, 715318, 310477, 743259, 16291, 435586, 682708, 298958, 67379, 308898, 553002, 262691, 97340, 566593, 917831, 501423, 263105, 128295, 460203, 333123, 823347, 288349, 796932, 903205, 678152, 641820, 414352, 321039, 451971, 655909, 627509, 805511, 440711, 438742, 329252, 746801, 753375, 142434, 905926, 635257, 777386, 348617, 389057, 325718, 559647, 789876, 897576, 933194, 240507, 129991, 1013265, 666846, 139599, 155093, 439416, 782058, 388994, 723651, 862963, 37144, 996789, 112096, 394651, 333312, 175385, 1039735, 179296, 322156, 775416, 374837, 207824, 684957, 579704, 434066, 476242, 231551, 558506, 431650, 233060, 258891, 834564, 1020181, 359634, 1014494, 319603, 72972, 64335, 553000, 481909, 473920, 281580, 468340, 152307, 949602, 724779, 1031525, 731350, 1044170, 736987, 471881, 154378, 922911, 684766, 73010, 97788, 238649, 362439, 633576, 37720, 572207, 993322, 866442, 778753, 701809, 659198, 66810, 458957, 841869, 183717, 72685, 679264, 750197, 902261, 496456, 292194, 894084, 792579, 36908, 8204, 813338, 534504, 600634, 560999, 174558, 382548, 711596, 582403, 687481, 769936, 1010517, 688072, 600603, 540823, 331635, 616576, 248219, 499060, 987782, 966596, 697620, 45064, 611147, 1022830, 817517, 872652, 90066, 34347, 422459, 159, 27680, 275498, 145479, 556019, 987008, 466930, 638914, 357193, 1035720, 756340, 476342, 201776, 334174, 792180, 422726, 650888, 1036069, 736608, 762953, 21248, 412804, 933759, 854347, 545850, 575068, 879883, 912444, 795151, 57113, 552217, 823011, 525979, 778564, 912914, 487215, 798974, 495674, 506304, 111183, 314693, 298504, 568075, 958851, 542858, 423487, 371021, 2160, 180206, 466967, 49298, 72665, 339239, 546301, 461701, 6591, 880182, 58273, 495313, 560772, 1045429, 170165, 181437, 950012, 509026, 883872, 404478, 326870, 787555, 5180, 301291, 805835, 858489, 396271, 650341, 626984, 529398, 380339, 901577, 435715, 1041883, 859683, 835159, 307819, 511108, 741403, 322480, 899424, 194604, 68984, 394290, 935878, 1025578, 477130, 369902, 867078, 665520, 960423, 297412, 935709, 624690, 447439, 484862, 1003207, 365204, 843642, 70990, 19933, 20154, 745513, 382859, 404210, 226238, 382663, 317436, 136762, 999715, 449021, 150170, 815825, 308467, 138920, 467486, 867173, 854405, 166384, 979698, 792791, 984006, 103196, 282599, 538434, 160131, 210975, 706392, 541415, 1041179, 387947, 245636, 445184, 497073, 1007773, 414283, 653094, 342756, 708102, 398496, 36886, 146102, 880513, 773534, 62893, 420847, 253468, 605450, 724779, 670746, 447141, 710146, 1016736, 458502, 113387, 1043436, 234189, 878926, 342930, 81348, 413329, 274821, 976398, 986605, 393332, 991771, 222436, 580568, 900202, 91164, 331160, 92021, 118409, 915847, 478153, 760123, 720974, 921039, 185906, 440814, 5713, 913836, 354905, 771885, 191882, 906490, 503237, 794167, 93271, 716489, 371293, 122483, 266276, 1024780, 583763, 600292, 747334, 126945, 776956, 1005165, 615978, 203769, 626507, 494939, 653759, 725270, 352568, 153293, 681711, 250260, 560370, 97268, 555299, 388270, 573384, 78161, 861785, 713995, 134020, 668821, 510904, 114383, 985431, 110016, 545107, 93919, 372546, 95110, 1022283, 687886, 153529, 1020092, 634586, 243442, 266273, 852614, 523845, 662296, 347530, 76293, 882509, 280656, 440525, 442925, 13143, 646815, 120822, 999145, 960527, 57500, 622382, 538466, 130405, 157274, 1005196, 546237, 759481, 191410, 668832, 962425, 180094, 402750, 784705, 501197, 464871, 338773, 218292, 995078, 979616, 232188, 465579, 14479, 312498, 469729, 532964, 235924, 541324, 141815, 238054, 636017, 260431, 35059, 497204, 231856, 186309, 11390, 590015, 676513, 129632, 9483, 910177, 600295, 153427, 935736, 197140, 995365, 446659, 719190, 648870, 938624, 804366, 82731, 739829, 324932, 152987, 337367, 751782, 704755, 742630, 777320, 285295, 58739, 572287, 83263, 680677, 257158, 277056, 338908, 600968, 44042, 1038296, 18913, 241625, 602480, 630083, 2118, 887683, 260846, 853111, 573475, 140713, 292640, 106258, 764698, 440245, 227371, 776817, 793530, 728623, 963762, 945168, 286360, 198680, 47566, 609211, 986713, 363706, 201590, 439652, 949814, 772975, 91670, 362647, 303123, 693871, 553058, 726907, 558004, 390171, 26474, 536585, 588485, 689841, 1031516, 503082, 483907, 541324, 747958, 327861, 921246, 987911, 813371, 969698, 410168, 866603, 255615, 590900, 362547, 542899, 475954, 978169, 132012, 75371, 386134, 931400, 599943, 336941, 644971, 190236, 1003401, 417444, 917685, 723655, 110022, 214240, 873016, 1035378, 150052, 84165, 265852, 919905, 172851, 449312, 282666, 243789, 133444, 971651, 753384, 734904, 426227, 412154, 868010, 554308, 39634, 917710, 743882, 67457, 162466, 743446, 108516, 950623, 450059, 288064, 762052, 358950, 5476, 70108, 1009666, 499686, 464229, 895080, 742571, 814666, 1024124, 296487, 506681, 390285, 619411, 730988, 347592, 491467, 260290, 651006, 379356, 551373, 704587, 903307, 292520, 210846, 659251, 488825, 660018, 702104, 127932, 933028, 380638, 260361, 756484, 188419, 493468, 960389, 1041278, 813164, 113272, 679786, 338520, 725386, 763479, 242340, 328738, 112212, 633554, 724080, 674155, 675055, 196805, 389230, 331440, 149159, 531795, 766006, 1041951, 362424, 959897, 143307, 25338, 992497, 471422, 858629, 173763, 173875, 244256, 777112, 792405, 357906, 721995, 59058, 933747, 318505, 120536, 650605, 608881, 404235, 997989, 693742, 338359, 760943, 67145, 614338, 767490, 24333, 950155, 33545, 315009, 649887, 206124, 311931, 49335, 722454, 943025, 657183, 177018, 497744, 310684, 1047119, 94565, 494608, 22449, 301290, 678560, 50935, 400421, 492610, 542047, 508584, 422579, 585577, 750717, 255068, 141430, 424320, 825750, 139268, 332458, 326708, 611669, 217730, 541064, 370261, 51215, 41451, 734236, 789450, 440885, 668315, 498897, 417835, 68438, 526784, 809705, 316292, 5971, 348700, 35629, 539330, 636884, 191279, 508990, 651651, 448421, 749159, 445730, 70334, 72280, 325057, 87939, 725006, 749239, 594931, 574207, 615664, 816977, 412172, 306541, 564138, 224109, 471783, 391075, 803873, 84277, 996859, 941012, 99298, 10243, 283445, 989370, 426138, 1067, 361310, 877470, 603987, 549861, 1024994, 246503, 863662, 510750, 207922, 389681, 994401, 690317, 184840, 893251, 648141, 1032558, 127179, 535772, 348840, 744947, 1044805, 949587, 639251, 961134, 339616, 114706, 770019, 619757, 203600, 719818, 653109, 1042178, 421630, 173792, 955403, 64752, 108669, 684562, 77165, 1007821, 624322, 458782, 8887, 106691, 609892, 205263, 749840, 498246, 599275, 895176, 553541, 857039, 854107, 755978, 27885, 485191, 1016620, 424152, 728974, 276442, 837615, 293236, 381552, 393673, 78642, 324370, 846056, 633571, 341414, 79897, 122253, 789047, 318081, 754529, 1027285, 874277, 983048, 440008, 945570, 973886, 958310, 212425, 190623, 815340, 41623, 894428, 408714, 967411, 692819, 58003, 7236, 165013, 605229, 495311, 696195, 864372, 936579, 844401, 650212, 40218, 774260, 91178, 607114, 80794, 579874, 303563, 452320, 1037653, 903676, 85602, 98305, 671623, 206721, 793186, 358180, 234905, 673582, 1017059, 895026, 819996, 840231, 1001706, 284326, 565886, 1027771, 508489, 144288, 190783, 434311, 1020705, 907752, 318822, 589326, 987070, 448835, 553687, 809152, 658502, 1028052, 857649, 221997, 697547, 990594, 466859, 508422, 824003, 452580, 213848, 539551, 732544, 471711, 345864, 913667, 236980, 141551, 569145, 769187, 1044474, 993359, 565588, 952873, 565631, 233912, 1035719, 646801, 775067, 716301, 976860, 772087, 1043318, 917497, 799566, 175543, 993917, 717811, 1001412, 139331, 753799, 530002, 545703, 110240, 401860, 943069, 778803, 968430, 836963, 941080, 965247, 17900, 527437, 998977, 935709, 561471, 242516, 542634, 168210, 1044622, 540749, 426516, 493770, 780988, 906533, 860082, 528567, 1031577, 406561, 157999, 285948, 850271, 780729, 636140, 404946, 175602, 289856, 513095, 484969, 714892, 1036686, 747483, 744443, 51752, 250952, 350434, 354548, 164342, 109432, 262416, 610817, 941259, 523789, 354093, 404155, 385216, 364308, 624944, 22847, 941789, 666212, 688659, 471721, 740210, 286175, 1039909, 340722, 16200, 351388, 349743, 470380, 109911, 899619, 817030, 387625, 752373, 917724, 623814, 738783, 92999, 1013829, 674344, 513564, 774810, 82325, 430792, 942088, 143971, 766225, 680679, 367400, 319394, 697058, 275017, 674511, 891587, 446464, 1026764, 42467, 706347, 715814, 260954, 735561, 93779, 890028, 581607, 604860, 975650, 459425, 735791, 98268, 18927, 424190, 463604, 938447, 835804, 1007780, 678259, 152461, 932171, 660916, 829022, 775605, 344961, 893489, 125808, 354545, 217492, 200260, 46882, 12029, 755715, 934383, 956913, 226336, 178527, 12874, 851233, 763560, 831854, 430891, 741235, 329074, 274466, 105507, 761699, 370716, 895075, 874334, 845310, 729706, 470062, 913583, 232610, 680221, 898657, 600374, 330948, 695469, 311096, 768846, 273789, 1048211, 1007527, 378793, 535452, 1034608, 1014497, 38830, 976461, 395493, 15661, 756270, 187752, 938070, 160888, 51873, 550527, 699145, 948884, 705315, 517299, 93868, 857549, 777881, 500999, 364711, 1022926, 172175, 592591, 457884, 629318, 944453, 955588, 111717, 609757, 446475, 156713, 911762, 249010, 396179, 680649, 951359, 187934, 56952, 484380, 530243, 650890, 686320, 130519, 459315, 1016210, 256351, 913806, 456858, 111286, 424447, 130652, 250405, 877448, 642903, 499766, 850767, 664590, 688195, 677635, 953779, 8054, 195941, 581350, 40127, 530701, 19434, 355437, 433637, 883265, 540854, 240398, 376046, 568516, 552076, 995448, 877983, 586697, 753209, 598616, 940281, 693718, 271487, 98154, 275964, 146241, 858444, 148303, 544147, 565645, 575097, 232362, 897332, 583825, 261677, 600559, 835524, 894916, 495417, 185403, 263511, 728491, 270634, 591821, 572005, 552453, 433207, 903482, 683453, 630630, 567643, 458551, 28368, 681709, 207996, 996794, 87606, 315312, 823198, 105307, 612676, 283843, 998591, 363284, 554909, 564729, 465548, 149750, 1033118, 1032837, 923585, 598240, 146964, 220695, 569849, 350732, 971142, 152133, 455393, 936455, 633199, 909142, 820137, 904837, 736905, 582463, 830848, 467094, 268322, 582040, 197694, 603347, 769112, 956233, 966636, 240442, 1022970, 592036, 844181, 778702, 627838, 396997, 733478, 256485, 835468, 248370, 726956, 629263, 522692, 386896, 20029, 816330, 285874, 585262, 292654, 138881, 465324, 737812, 1039842, 491815, 521166, 619738, 801527, 497363, 943496, 772063, 410072, 276781, 670295, 177543, 667614, 672669, 575110, 951620, 471429, 831615, 27798, 550196, 652862, 662526, 804709, 956969, 1034005, 366692, 877388, 417031, 958084, 596143, 921636, 1038287, 191882, 3928, 845246, 320035, 242567, 821687, 716393, 800931, 672916, 709103, 461578, 130640, 1046318, 408467, 206675, 481608, 884328, 467739, 910827, 618740, 48113, 350330, 1045719, 274241, 932397, 667413, 73257, 463380, 810657, 313207, 741011, 703929, 331258, 713694, 137735, 328915, 529274, 811133, 306616, 48646, 144008, 829408, 518035, 736180, 962830, 236749, 396187, 64149, 8362, 1002106, 853802, 865975, 401327, 953693, 1019287, 830718, 891274, 30358, 661247, 277661, 608338, 24539, 467883, 581995, 431263, 471561, 1012592, 355163, 938719, 408033, 199261, 114959, 800680, 56705, 8524, 558162, 266599, 501821, 45829, 359355, 881736, 999493, 259686, 491152, 715378, 475138, 290831, 368970, 712229, 3537, 222138, 919609, 858759, 215693, 857767, 584371, 459535, 704287, 245169, 231472, 472873, 419386, 849640, 303942, 588605, 129960, 325166, 712446, 700489, 310581, 578917, 668181, 813163, 123393, 995128, 105038, 828265, 184660, 19886, 939135, 299043, 928915, 843081, 362944, 375171, 923170, 510470, 113623, 649848, 232977, 32649, 502488, 1019993, 77846, 110069, 867653, 340271, 1035244, 907282, 992472, 561855, 832772, 74734, 812768, 597587, 144826, 833986, 1046419, 578899, 780409, 185712, 400888, 433654, 583627, 522204, 929779, 81363, 444902, 586485, 637439, 25108, 826495, 125795, 388640, 240075, 828454, 185893, 627163, 983666, 203903, 1047542, 474256, 1015099, 883279, 261165, 610984, 924844, 253325, 608923, 488284, 408644, 504556, 203862, 179567, 398832, 62907, 809306, 753592, 1007753, 987684, 1042886, 445604, 996870, 795155, 626368, 638617, 491104, 333794, 1018979, 48276, 164302, 509283, 607945, 587692, 455852, 194485, 395725, 997330, 32693, 742414, 888581, 455488, 870597, 81154, 167578, 978368, 305675, 211350, 879237, 156599, 883680, 158158, 782945, 272077, 869952, 414762, 644247, 750225, 848084, 167093, 920973, 788805, 988895, 479185, 602948, 628924, 1012135, 488355, 661768, 289678, 345112, 255783, 579600, 608552, 586896, 898015, 1024330, 732962, 480167, 302181, 1003605, 386681, 606786, 45011, 778587, 150903, 517893, 165743, 673447, 20690, 23280, 1033734, 447246, 657829, 711867, 368609, 1005053, 110659, 618400, 117567, 493903, 794787, 72879, 295408, 64968, 731403, 742596, 718206, 393504, 850909, 682735, 140514, 134266, 637360, 713487, 920361, 736752, 814369, 22964, 737196, 463175, 557240, 730035, 46945, 713569, 699438, 575665, 683211, 536246, 525690, 424514, 1025679, 394100, 575321, 698461, 1040935, 626975, 800235, 482365, 107062, 819368, 898544, 999305, 653119, 807632, 188329, 584250, 645078, 1018813, 193822, 403237, 921505, 332956, 651618, 704780, 428449, 887204, 814240, 541009, 758588, 106272, 517169, 112289, 1047628, 49261, 115365, 327344, 806431, 930657, 872040, 515878, 308998, 1033495, 433636, 745124, 329930, 72527, 287013, 1006955, 98074, 798246, 417259, 947984, 994431, 286416, 1012607, 675081, 573881, 746621, 81279, 621950, 210055, 586400, 333846, 568061, 599151, 230003, 519320, 629739, 977326, 744252, 280826, 584986, 798874, 750029, 83120, 696259, 255276, 813949, 756978, 603481, 663908, 223715, 645180, 56116, 261943, 759542, 990519, 345905, 838799, 152768, 1003289, 496572, 302151, 74268, 357336, 99348, 894572, 763449, 103485, 19804, 209806, 613830, 244838, 753158, 39784, 648478, 955909, 981152, 638144, 922041, 23728, 474610, 1020042, 871450, 479685, 402189, 342922, 37176, 681606, 489022, 89492, 613964, 249805, 36623, 345755, 483104, 655341, 406232, 351411, 599706, 114867, 338180, 453958, 559488, 370771, 777337, 1038966, 969392, 356480, 214950, 1025898, 692356, 202557, 401335, 485908, 318067, 944536, 672942, 110074, 318463, 177990, 963299, 528537, 674359, 930996, 32800, 317089, 199429, 972037, 393447, 412552, 855533, 832966, 714386, 394809, 410579, 697054, 849329, 392792, 886858, 175156, 648665, 946878, 921466, 164962, 616251, 863053, 724372, 739262, 439976, 89393, 457851, 1007923, 1027849, 883266, 922207, 1015193, 394476, 152817, 489780, 602224, 662729, 816150, 713023, 522696, 326635, 696338, 960111, 151235, 189956, 28795, 583877, 997538, 35861, 535653, 911091, 775596, 699490, 113156, 890822, 722769, 580056, 264366, 623400, 544759, 965817, 830324, 599170, 141493, 491119, 503567, 3057, 474001, 681974, 518162, 225941, 1038143, 102266, 589478, 689809, 1001460, 467292, 96068, 837894, 757822, 669047, 241613, 523712, 814366, 810615, 618716, 548492, 700564, 31130, 261448, 274246, 956024, 913031, 170845, 9760, 51041, 1042290, 456878, 460698, 115385, 938, 605838, 546894, 969783, 260479, 501937, 126040, 607203, 135073, 896927, 806829, 10599, 531020, 163252, 716890, 950174, 982772, 332316, 651538, 73395, 574227, 437273, 617546, 672179, 375025, 834501, 618987, 853074, 712315, 146678, 215693, 693705, 4485, 715271, 748005, 690054, 85077, 327845, 626591, 1043707, 142782, 84247, 415411, 979000, 573879, 463520, 799989, 504816, 34908, 677467, 238739, 21720, 723671, 386856, 544428, 962119, 447496, 260069, 159982, 763967, 780846, 772161, 100288, 71352, 138277, 725214, 105564, 610049, 657372, 99091, 896752, 958273, 164920, 17245, 867654, 498741, 566255, 163896, 736187, 988679, 872402, 38982, 203195, 972868, 588032, 88755, 188326, 695518, 479723, 731447, 53083, 914878, 1033851, 986212, 475995, 588598, 953816, 763590, 811304, 979767, 303432, 292029, 154630, 427758, 655730, 798875, 16047, 508545, 380811, 1017369, 227363, 947784, 990554, 250718, 1029288, 118872, 883442, 1017114, 239627, 521760, 828015, 58869, 958904, 418175, 666233, 957665, 60113, 123779, 69199, 392699, 614957, 165364, 294292, 353141, 67736, 739435, 684832, 675071, 366215, 875914, 721372, 268749, 163211, 214090, 519467, 801728, 670984, 778306, 609608, 278462, 613744, 721680, 437142, 171122, 486880, 685368, 130467, 373608, 287627, 799839, 946149, 389001, 134642, 3297, 940391, 471273, 465589, 914792, 859578, 856868, 110411, 620519, 825786, 824108, 523761, 578928, 146564, 910869, 1031554, 850216, 811709, 501130, 3173, 763240, 200840, 558729, 1034741, 104249, 52104, 936018, 443320, 943508, 705407, 532610, 1016953, 399483, 469611, 918224, 365222, 942779, 417111, 317877, 575329, 297041, 674266, 394327, 287081, 715628, 200512, 579208, 630169, 233340, 281966, 558286, 845106, 657321, 643400, 134090, 136180, 590056, 364449, 1041849, 214957, 445257, 772005, 964605, 368800, 842421, 567311, 562302, 981863, 600520, 323248, 421382, 1020916, 1004652, 901376, 209666, 326132, 625154, 575388, 10691, 958614, 278267, 768886, 414978, 123721, 308350, 836859, 524919, 107945, 260981, 440083, 527886, 87716, 973223, 797335, 895965, 322942, 88123, 973896, 352864, 805019, 89179, 568012, 649784, 86621, 462381, 458934, 74706, 247679, 450700, 637922, 279779, 741884, 354656, 375335, 726291, 944122, 790345, 958164, 930545, 665768, 110364, 390994, 958482, 184068, 546157, 705479, 602770, 343555, 333589, 454613, 310097, 981967, 435072, 29165, 290414, 213907, 76192, 382221, 698386, 763394, 722654, 306962, 378476, 886445, 544151, 664218, 151519, 341837, 929627, 202108, 92326, 99950, 305055, 802182, 709863, 707496, 486988, 181243, 493570, 19055, 717548, 904530, 259213, 884081, 117426, 875141, 279631, 795345, 98337, 596729, 284227, 172669, 750385, 109197, 22786, 428196, 648148, 766524, 997964, 827342, 445806, 95406, 636420, 978349, 585235, 569249, 69952, 426326, 330285, 878865, 741618, 1002279, 211889, 970112, 2379, 729508, 794607, 913089, 936885, 587308, 912144, 672770, 219436, 600442, 798226, 776455, 405497, 524993, 419391, 433605, 875035, 656647, 583677, 951356, 91157, 588111, 403764, 123579, 283181, 503570, 604261, 222007, 128167, 965916, 496094, 733552, 792771, 862341, 676147, 860802, 576433, 885832, 616335, 904307, 449318, 585352, 1001130, 572760, 213987, 53797, 172500, 667318, 482327, 813389, 539991, 942306, 607518, 130077, 734197, 66814, 462320, 763249, 575192, 660606, 43523, 137611, 1010935, 235505, 1030013, 133874, 305118, 999006, 654914, 553264, 374084, 1027838, 225342, 208666, 840749, 14412, 200063, 663354, 576299, 742669, 493700, 58595, 1005936, 768611, 664638, 689876, 23631, 1020146, 753237, 566408, 644250, 739119, 59069, 729914, 445117, 92596, 621047, 311994, 219432, 826983, 341844, 349395, 671012, 863194, 427571, 755040, 521515, 461034, 681650, 883143, 873862, 221894, 240074, 294238, 271404, 149814, 608789, 337149, 412092, 1034813, 799790, 96065, 716695, 853125, 71964, 930490, 580849, 91834, 258987, 593850, 121136, 520807, 611919, 686957, 1038323, 885643, 466348, 360004, 320608, 82169, 258901, 126622, 72316, 1023756, 3044, 366750, 750390, 230319, 158903, 579407, 1022135, 453622, 553048, 640420, 307516, 826953, 521895, 591422, 546499, 360396, 354768, 915603, 2166, 375210, 414382, 488630, 454455, 120435, 776911, 238596, 578022, 470817, 999199, 315076, 645409, 439870, 1048278, 116267, 151679, 506287, 701184, 287317, 923070, 260723, 68272, 798401, 192314, 354308, 724673, 574411, 468185, 93338, 531327, 868108, 549559, 742932, 56714, 836011, 432877, 1043275, 979544, 1046576, 809749, 355878, 164076, 264254, 126611, 115315, 123398, 173408, 77790, 152445, 683097, 546245, 676935, 412987, 228175, 414357, 1006811, 5523, 498601, 1046592, 932344, 262993, 867092, 616483, 174510, 985771, 1018199, 386652, 66587, 221121, 156884, 100770, 548394, 895636, 461629, 709442, 841603, 1043770, 24533, 516801, 389428, 881721, 627898, 382811, 99907, 499287, 698039, 490876, 309175, 408774, 193637, 883449, 627162, 33505, 317234, 1001772, 539019, 153278, 209417, 5780, 241178, 983239, 918502, 929186, 661833, 599138, 1040253, 919107, 756150, 162424, 1006609, 108013, 379339, 867120, 986092, 157008, 797135, 839663, 961399, 537753, 34050, 610508, 1043440, 950775, 518988, 947261, 189867, 219809, 37566, 51620, 427745, 243955, 879092, 191097, 589539, 504565, 916525, 640378, 226210, 687210, 948059, 459072, 687304, 726856, 428550, 179592, 80059, 568429, 611139, 12677, 1013982, 959857, 736957, 124933, 806284, 670028, 575353, 288678, 177369, 182452, 717588, 257182, 661778, 400358, 447072, 240457, 858138, 729627, 325108, 256402, 591882, 428742, 757673, 86744, 766086, 56757, 182683, 917134, 676798, 65232, 1022512, 376815, 549926, 336778, 480662, 902992, 575648, 999985, 990413, 709499, 475387, 47497, 431292, 469479, 1023103, 787558, 540390, 1034217, 370393, 319748, 742193, 251240, 935493, 775782, 1034988, 133030, 282758, 368899, 958783, 749959, 561443, 292251, 79914, 145784, 707923, 674992, 75223, 889436, 248356, 964374, 1035005, 549107, 1026645, 889553, 226722, 484144, 384360, 318210, 617424, 1021697, 846940, 35074, 559250, 868726, 941024, 32067, 679261, 692280, 426861, 775844, 568811, 686355, 103719, 428471, 100467, 422243, 312495, 880620, 42772, 707473, 889958, 200959, 713633, 875090, 850531, 374680, 390845, 937349, 625329, 116838, 126200, 416894, 919373, 1018571, 100432, 542245, 266467, 1046876, 767958, 697878, 675847, 363394, 627753, 25264, 50673, 209953, 1039698, 806825, 144678, 323257, 952613, 621792, 953948, 199315, 133946, 362962, 139156, 847215, 326869, 9594, 319495, 992522, 97981, 577335, 247466, 936532, 655717, 15851, 229718, 849453, 517438, 934178, 505660, 744379, 937728, 69781, 662872, 957746, 815039, 359002, 52565, 426339, 355661, 850400, 122035, 812651, 49636, 267119, 141208, 851197, 1046520, 210423, 33120, 461764, 671830, 458200, 88000, 639159, 295284, 648624, 1009027, 565094, 962987, 612851, 476194, 704227, 423824, 575469, 108560, 278173, 622573, 808007, 388407, 484432, 848128, 708019, 807704, 758834, 199485, 355511, 787561, 700201, 467879, 553253, 958407, 289243, 20323, 864497, 707167, 120240, 720332, 846722, 423589, 575597, 282939, 633660, 181154, 775893, 115313, 291966, 6422, 3439, 158457, 872392, 579805, 444382, 46912, 266336, 241643, 601203, 301963, 903441, 572598, 845500, 285486, 152022, 489325, 782080, 703336, 998763, 132300, 330682, 249205, 811384, 491240, 676729, 145825, 1042109, 377830, 780276, 139553, 824312, 484590, 180605, 252035, 755761, 826937, 62909, 278967, 59601, 305383, 175067, 643915, 258539, 449156, 373231, 660271, 590639, 465852, 632074, 250766, 651044, 750543, 137692, 924018, 524795, 464044, 405489, 131388, 933091, 862322, 911341, 71748, 529466, 369496, 166957, 332900, 22175, 78240, 817381, 265062, 738031, 686875, 502458, 434578, 618906, 40257, 921656, 448583, 238167, 197882, 195970, 517257, 42178, 395051, 968044, 453846, 945049, 730516, 86699, 68313, 1022044, 1026981, 477755, 690795, 184996, 661703, 656044, 606036, 413831, 70927, 703224, 416490, 544332, 759966, 697529, 982011, 78962, 867576, 1027773, 922128, 497367, 921432, 920831, 951177, 1021723, 131719, 69276, 360727, 540918, 616002, 847313, 736749, 456272, 705313, 23205, 753705, 386526, 215198, 672823, 109072, 810674, 54160, 935179, 40778, 154942, 287931, 667219, 685747, 58499, 178537, 590727, 152689, 398111, 713380, 449597, 197769, 426280, 10089, 217148, 34495, 989195, 397588, 997416, 479399, 245039, 671073, 224131, 483299, 998532, 377568, 540893, 632324, 1043705, 182172, 776479, 735975, 548762, 630593, 567237, 911473, 985729, 834393, 690814, 303173, 466688, 355555, 485395, 582205, 954232, 58967, 116048, 1012763, 587559, 814114, 845819, 973188, 983273, 226489, 730585, 286139, 573143, 825843, 306647, 382949, 785747, 367140, 56095, 637197, 904874, 573905, 428021, 88100, 101757, 116592, 761120, 528657, 72083, 297541, 613341, 240080, 911555, 440108, 958993, 140581, 218800, 236082, 839800, 998078, 569191, 854821, 991639, 672702, 132140, 466506, 329845, 374127, 636553, 979804, 146598, 790667, 25135, 853737, 52256, 293094, 927794, 457082, 265056, 75409, 851947, 984580, 851693, 568524, 535650, 1036957, 872938, 698762, 353542, 887567, 984095, 592686, 620107, 182155, 977553, 1012757, 778588, 350827, 983855, 669434, 906307, 1029953, 468800, 817929, 789578, 421632, 37506, 5709, 549559, 348615, 999642, 652538, 26748, 25815, 159975, 805993, 279805, 36153, 491359, 913049, 743231, 16727, 792162, 328533, 703854, 12009, 629109, 1028330, 786569, 719356, 657473, 1034512, 781877, 56343, 348932, 4833, 135614, 458008, 154386, 226282, 922886, 24365, 1041389, 859762, 536282, 267438, 561332, 200247, 570619, 462024, 1034610, 733300, 356658, 461328, 910183, 953387, 277947, 821871, 235095, 806979, 559389, 43365, 1023164, 404445, 514616, 575102, 883222, 52380, 287504, 628023, 450763, 17269, 827295, 813061, 241949, 815126, 535746, 115265, 170904, 36074, 1027331, 229431, 626356, 106830, 440574, 565309, 763997, 472663, 831735, 620906, 208754, 686007, 480638, 91706, 155544, 867656, 121947, 495481, 778492, 901707, 768184, 236971, 517145, 1040108, 821518, 770721, 517154, 1046784, 887889, 518298, 109387, 461295, 149935, 280241, 940196, 692355, 587650, 994711, 128905, 137171, 1030170, 922724, 837211, 32493, 60701, 224972, 232828, 869470, 906676, 438696, 902294, 822866, 393009, 122072, 306923, 1005362, 288505, 955504, 626916, 116396, 514083, 1014008, 728429, 712859, 956057, 922291, 703958, 597268, 667703, 208938, 399816, 159453, 531445, 328740, 884398, 901836, 965157, 925697, 264230, 986222, 355717, 391412, 440408, 516323, 1003013, 12197, 401218, 919874, 922074, 888583, 1005522, 485716, 364539, 186748, 677866, 115059, 185199, 423838, 560842, 225113, 554716, 734269, 315613, 507615, 182370, 359321, 271401, 251545, 182891, 840246, 168883, 750339, 472653, 681916, 744110, 921086, 605681, 251889, 312635, 639066, 866288, 132942, 162903, 401221, 321159, 499222, 528208, 821229, 623451, 422602, 359032, 796933, 39675, 1020898, 200844, 738273, 453076, 295368, 586264, 1001399, 478431, 667175, 397487, 935840, 989052, 906103, 134324, 358016, 121747, 480789, 409505, 349213, 678158, 815406, 610916, 912337, 88726, 31442, 13334, 965282, 660942, 762618, 848966, 116798, 803088, 707693, 182209, 884452, 823179, 568298, 814729, 57811, 680525, 945305, 810048, 296119, 865588, 511475, 79490, 828387, 690464, 633762, 620391, 755355, 571212, 689869, 1048534, 912514, 87553, 762816, 909355, 130687, 268719, 726990, 506210, 709638, 1025748, 720853, 655291, 97210, 917319, 667920, 364229, 178816, 688476, 1006346, 3277, 251936, 595019, 593446, 840326, 646988, 322374, 866177, 137195, 882258, 488788, 137747, 131883, 609719, 485054, 537804, 864246, 219069, 957047, 387714, 622724, 755100, 926524, 886380, 719875, 649372, 573239, 631037, 501893, 769315, 126969, 469115, 457428, 498022, 830938, 1028488, 201186, 371744, 853752, 736335, 205452, 962973, 449903, 804004, 946093, 726145, 973588, 771004, 968247, 14760, 799653, 494932, 899904, 15391, 621553, 45634, 184414, 915581, 798253, 661299, 847486, 39060, 221567, 1006616, 335103, 10085, 768772, 941897, 988943, 402404, 674223, 959384, 553010, 839560, 172257, 916973, 656425, 930582, 342894, 298503, 733435, 617027, 605636, 238796, 534446, 596606, 624095, 21335, 321938, 688087, 552167, 570714, 94863, 535494, 201052, 688583, 271605, 987779, 1031237, 887311, 669286, 22887, 378973, 873360, 860329, 522955, 879997, 841013, 561927, 57704, 629475, 935195, 917017, 292239, 911797, 589134, 605121, 549905, 759030, 282878, 828476, 265840, 298510, 760018, 287414, 665001, 779276, 332643, 937914, 73776, 199197, 124068, 91517, 698593, 924467, 580942, 637428, 692068, 525702, 329831, 122291, 32988, 37869, 783386, 898094, 372110, 785628, 780094, 848201, 265949, 500621, 226105, 297771, 1011009, 242428, 32121, 190559, 529572, 428886, 141514, 919949, 566046, 980767, 355257, 440817, 780584, 260719, 739937, 448259, 1041974, 834767, 382538, 435168, 607743, 141992, 924620, 837887, 676451, 163769, 45889, 934095, 262623, 742277, 424855, 7359, 113926, 685585, 254531, 580963, 297760, 771503, 173757, 673779, 133220, 674563, 738302, 456744, 985141, 68897, 147907, 684973, 398426, 328158, 114173, 87867, 183294, 735196, 923572, 632412, 975383, 453920, 944495, 1015431, 918410, 438062, 783627, 330598, 193890, 447754, 649474, 715612, 479209, 121452, 261787, 769943, 982113, 449453, 764106, 936853, 21998, 1041995, 798731, 926821, 700101, 154234, 600350, 414283, 663246, 1007655, 665813, 145124, 760214, 497582, 266924, 279101, 840196, 433093, 630949, 651629, 262527, 828595, 530598, 669548, 143947, 844003, 779213, 611735, 539676, 346668, 959606, 14771, 287941, 287088, 975705, 59257, 159319, 346291, 221336, 419683, 980699, 948659, 826289, 796430, 384391, 996436, 925080, 727287, 340285, 103422, 634715, 768370, 782611, 636385, 247601, 716015, 825819, 270340, 967142, 202172, 1035749, 424882, 526589, 840979, 73326, 894166, 841916, 626226, 494616, 449730, 866880, 1000562, 161591, 502689, 268062, 321369, 867592, 89188, 505724, 948579, 322314, 383259, 74916, 898152, 177476, 946768, 60902, 244494, 853559, 811281, 258749, 938220, 475627, 8278, 574812, 9493, 440100, 954666, 764361, 52487, 421357, 38989, 915017, 505031, 304152, 21866, 188118, 677354, 531532, 1127, 766881, 608515, 59972, 736287, 163378, 65453, 416736, 810119, 914951, 671810, 868302, 216287, 330741, 608254, 27461, 359632, 149994, 835072, 521223, 658549, 142414, 512327, 836283, 578248, 72810, 499842, 699967, 417783, 649112, 867735, 59273, 228332, 758100, 300300, 565264, 434713, 508550, 118865, 320048, 420821, 539082, 1018150, 247995, 121125, 923685, 388579, 934428, 480985, 801840, 124672, 253287, 93054, 126112, 555555, 179939, 1003734, 122805, 180221, 27691, 962400, 923225, 307818, 726573, 529354, 20176, 131360, 354899, 503734, 462695, 867435, 846215, 609020, 800123, 457584, 756629, 730906, 318423, 400637, 132950, 824488, 855495, 148109, 1036675, 199817, 329100, 167144, 463551, 559779, 250456, 16284, 675948, 101408, 1006528, 414460, 591046, 948849, 917534, 544525, 675725, 365950, 859039, 38984, 639523, 1008235, 650124, 108353, 334393, 368824, 538345, 513229, 135391, 578004, 377753, 16925, 215081, 2318, 289262, 236790, 1011691, 626837, 359807, 641481, 605172, 355024, 152181, 290291, 1542, 970984, 842286, 619960, 720968, 41474, 152609, 550308, 978806, 496100, 406259, 1021663, 1006643, 731038, 761504, 820111, 296754, 291162, 636213, 711271, 431837, 408759, 290388, 565572, 127649, 153165, 86360, 638164, 661267, 997535, 993291, 79108, 717274, 307772, 930771, 953040, 805909, 629975, 621427, 164606, 1008092, 936736, 960221, 1026867, 245892, 623605, 246678, 567573, 253482, 984309, 153073, 701785, 964451, 890868, 906175, 29018, 572329, 461342, 672577, 102486, 473769, 453609, 725129, 855793, 96135, 310452, 906510, 741470, 696700, 350291, 16215, 163301, 612399, 463748, 362918, 867438, 505864, 945557, 105157, 986793, 608995, 418040, 640436, 370590, 365316, 911010, 722385, 775637, 862169, 980558, 963073, 475610, 403919, 1042579, 125776, 594399, 1012748, 511161, 170360, 1015193, 45604, 69158, 583273, 499481, 788666, 805235, 476551, 293466, 20317, 1012638, 318289, 849888, 191542, 535085, 291410, 376354, 211535, 307741, 702030, 408593, 299945, 202126, 134725, 517336, 600551, 552559, 449467, 131059, 29881, 303327, 602937, 569188, 1031886, 976905, 458898, 813667, 804741, 323946, 687472, 964611, 327972, 892626, 204431, 172022, 826842, 267080, 98084, 271960, 870328, 763837, 122539, 495975, 981400, 899322, 922459, 46853, 333401, 1000947, 72136, 30970, 495704, 73606, 180894, 603266, 172459, 521406, 175334, 854397, 710099, 1030812, 681415, 160033, 755682, 81355, 834137, 845491, 654114, 366264, 526763, 1042066, 156629, 33269, 375645, 843027, 172427, 519436, 981727, 692281, 142765, 368465, 295929, 559179, 408494, 327309, 546985, 761879, 393642, 962841, 260622, 828681, 666716, 1007708, 97767, 366336, 470497, 521350, 709554, 173897, 257571, 1027376, 392451, 817792, 316706, 208523, 1038826, 731902, 661061, 987633, 835783, 205868, 59108, 991848, 6698, 764387, 313168, 524287, 28580, 984445, 854701, 142516, 1013150, 223578, 443272, 716352, 323045, 219162, 919806, 332040, 962491, 889736, 1008704, 706037, 529256, 922967, 394892, 477043, 80954, 59081, 591719, 444543, 211217, 465258, 565836, 842742, 70583, 839195, 525780, 1043174, 48059, 810236, 977157, 548088, 116088, 93010, 1036779, 943614, 170440, 843832, 740823, 966404, 331083, 306155, 938050, 961563, 285673, 262049, 912187, 675564, 812104, 126061, 672785, 52162, 7116, 398324, 512983, 334313, 300941, 617881, 718938, 582146, 944627, 180869, 88133, 659587, 772564, 822134, 470142, 301721, 986674, 392939, 207946, 372328, 1026406, 331035, 933466, 617138, 486048, 558429, 170589, 51815, 193250, 712412, 418392, 675414, 415745, 435662, 877405, 904880, 88518, 858770, 24750, 139309, 810220, 657686, 653980, 491422, 272696, 619450, 429117, 531207, 563504, 875791, 207062, 777813, 438483, 273923, 190493, 59390, 179670, 48541, 525457, 531222, 469352, 966070, 949557, 210898, 444945, 559274, 982849, 996188, 502140, 587002, 964299, 154721, 47935, 346481, 488144, 958657, 209483, 85895, 168586, 553047, 634869, 929833, 573428, 1032670, 88569, 416355, 789296, 416860, 809540, 88015, 44734, 478400, 521761, 443063, 705539, 36519, 864221, 74760, 201126, 624435, 295554, 726888, 238683, 848471, 122503, 669782, 374427, 403200, 677082, 303852, 703691, 25139, 1013599, 530794, 285394, 545591, 217175, 135300, 725894, 19173, 661942, 566601, 371508, 115608, 1047834, 28468, 981486, 305686, 393167, 949116, 139706, 318860, 576032, 1025509, 449121, 260952, 701529, 647766, 551494, 493336, 736852, 1044324, 371888, 195830, 7059, 242110, 562055, 692190, 1047229, 793663, 746521, 836374, 166006, 226183, 948242, 717497, 932265, 45084, 1004092, 117802, 709284, 713773, 172307, 164352, 667265, 826980, 487748, 688610, 888549, 765486, 70518, 24058, 430626, 913570, 1043203, 1025079, 558931, 734509, 838077, 116526, 846450, 472708, 1023889, 138008, 566305, 720216, 160881, 477229, 320853, 961111, 249986, 1018271, 629955, 366035, 1002000, 328481, 217822, 872399, 384013, 286266, 250735, 981817, 576789, 856250, 377463, 210552, 1021865, 266560, 603151, 187132, 84370, 367122, 213720, 511088, 380536, 416416, 1023098, 367812, 167999, 324581, 9881, 122411, 565584, 269637, 224901, 242630, 955679, 251467, 520087, 389803, 711123, 702822, 390561, 784599, 416871, 826677, 336842, 927809, 157301, 535989, 206126, 863580, 541371, 762078, 963154, 642208, 769362, 385031, 313984, 464186, 1007299, 413015, 263550, 145948, 184319, 321011, 185362, 646702, 143714, 929319, 311687, 265328, 597784, 595034, 611905, 609635, 368795, 1017105, 698835, 888833, 570017, 171605, 903751, 430021, 15962, 215248, 724858, 102787, 350403, 68246, 863415, 299181, 490584, 909365, 428100, 281219, 412178, 290377, 862120, 706288, 533990, 236515, 372960, 42019, 95249, 831463, 398323, 1036086, 469302, 964376, 942083, 532119, 879775, 1012277, 656512, 715734, 902041, 456920, 677394, 410293, 453162, 942020, 181480, 731169, 315141, 862322, 965623, 547702, 963357, 589514, 221531, 755448, 792305, 802468, 841628, 43778, 716814, 594438, 854325, 369140, 440694, 227474, 46425, 876685, 781908, 785893, 665788, 76401, 1000879, 464111, 602153, 180852, 1018447, 510422, 464860, 58683, 121789, 624364, 728086, 274937, 492020, 504875, 949820, 773927, 266406, 533277, 488291, 1021834, 130355, 102458, 915461, 953051, 557792, 111670, 954127, 395668, 870047, 862182, 1029751, 945368, 143833, 83393, 293125, 69627, 594112, 962034, 239644, 110820, 595351, 242449, 880035, 501905, 497248, 180121, 28581, 484498, 375109, 459877, 665185, 125146, 155955, 907495, 222346, 396631, 5451, 967902, 659594, 287204, 348901, 348190, 355408, 39927, 383524, 31930, 501907, 975244, 467526, 302676, 466998, 309216, 731566, 736189, 406638, 276404, 286985, 524700, 419677, 575831, 130755, 671155, 566596, 545530, 64324, 773719, 664752, 969802, 250287, 595559, 512550, 145424, 935659, 233857, 94634, 979481, 986293, 745422, 996651, 35476, 6845, 569400, 67947, 126348, 229810, 961514, 388597, 193402, 593758, 665690, 32215, 290603, 427929, 639964, 756422, 309813, 115209, 674457, 706074, 926184, 650421, 549332, 875808, 903428, 69502, 915693, 895690, 352643, 576608, 313359, 803900, 657875, 813405, 766799, 299174, 735826, 880420, 378081, 405120, 602699, 214578, 577135, 222293, 199045, 81735, 628549, 617802, 568376, 790562, 229566, 997854, 90118, 651292, 436636, 398345, 118147, 982342, 1046893, 255097, 430199, 1342, 509031, 331972, 761200, 241327, 100569, 706033, 366854, 131475, 964126, 365810, 392440, 418004, 543771, 629988, 616041, 953242, 191856, 8678, 745405, 772933, 700407, 757374, 223489, 353408, 570468, 237653, 996558, 77360, 351363, 917462, 553086, 707099, 688350, 379269, 283709, 798238, 164088, 369678, 783070, 775642, 615783, 574212, 684673, 297696, 632920, 120588, 838917, 933731, 412280, 978825, 629807, 100291, 531751, 640810, 982498, 940198, 586668, 970396, 579623, 163843, 88218, 44638, 608054, 852886, 841375, 513552, 47547, 590478, 308913, 35594, 811615, 933788, 702794, 455431, 545855, 443906, 752730, 856573, 627555, 546792, 610578, 379379, 222442, 710585, 260973, 394826, 800020, 400093, 87964, 689614, 859682, 773263, 871913, 174976, 622260, 414987, 778716, 982595, 701661, 901246, 256566, 130521, 75152, 9548, 443042, 201130, 5054, 825182, 808447, 254872, 377214, 563516, 820296, 493341, 220162, 46608, 458026, 955533, 743833, 269616, 651126, 299126, 587089, 332875, 181680, 282502, 827858, 356827, 533010, 893055, 115094, 349048, 364656, 56318, 130174, 832704, 673280, 947497, 221350, 45667, 68008, 92928, 190910, 855366, 307131, 899080, 974830, 136734, 553581, 833313, 683143, 327183, 834147, 101818, 475479, 531364, 306251, 36456, 568238, 305222, 307945, 829222, 896814, 897787, 784595, 771385, 681924, 552772, 31707, 704084, 457858, 935461, 195997, 187337, 575898, 359268, 585619, 667287, 884338, 843633, 8993, 336653, 218074, 205623, 959099, 327783, 147580, 240507, 540194, 189984, 874602, 317725, 1022423, 39498, 539012, 1013184, 522694, 545798, 864476, 149014, 476804, 119169, 928325, 403100, 111226, 634237, 931996, 250036, 198091, 1036114, 447944, 764251, 740845, 711091, 135281, 488232, 594794, 800588, 903726, 156682, 414307, 1000784, 707963, 910471, 466199, 581286, 248889, 948255, 735195, 780518, 127908, 303335, 250752, 480999, 717600, 193752, 220544, 93985, 68659, 747481, 747023, 886606, 557097, 440671, 213341, 743642, 47787, 1003227, 552157, 457522, 1721, 689428, 403217, 536897, 794296, 937996, 116388, 420495, 524744, 130513, 755572, 578627, 767770, 180208, 1029, 871527, 991137, 404054, 642584, 860892, 818615, 485994, 981354, 882117, 744714, 476494, 997732, 69369, 927506, 476849, 1033991, 311682, 492840, 892801, 847117, 629453, 354261, 247614, 925194, 673042, 694235, 464477, 745005, 591354, 362103, 412502, 999534, 22670, 201304, 347853, 428438, 384226, 727152, 792442, 905100, 979583, 708175, 768045, 710236, 479128, 43648, 527842, 982085, 198978, 34170, 1027379, 146075, 41412, 72912, 582593, 467462, 1016530, 211842, 959476, 372951, 382750, 635072, 312511, 552131, 560410, 141295, 650455, 624743, 591772, 1034071, 532432, 58854, 561035, 994109, 272288, 785773, 804406, 774583, 889522, 702935, 417940, 950280, 5076, 13788, 499865, 957558, 432150, 50891, 983655, 291711, 793436, 201786, 353067, 462122, 356530, 402708, 10445, 329375, 829694, 474830, 615593, 717403, 185585, 917370, 372668, 271035, 451828, 502579, 852143, 945363, 89303, 473221, 829920, 714012, 295948, 303820, 694437, 155669, 383502, 369022, 753548, 243720, 533959, 139854, 556705, 1033224, 526105, 610085, 872431, 415777, 612137, 837757, 707797, 829163, 117273, 121603, 1031315, 583235, 379358, 56843, 627433, 310465, 835476, 5555, 551131, 93653, 778018, 166597, 272074, 474679, 810867, 255255, 636385, 577987, 535632, 115610, 701568, 151521, 30859, 247793, 523896, 149837, 595012, 987589, 901957, 683283, 274146, 205622, 855845, 484385, 331587, 263965, 855708, 826881, 257525, 7883, 644538, 631091, 223904, 304424, 662698, 387768, 296654, 82907, 744068, 288402, 1021345, 205348, 923329, 515144, 374144, 7433, 185250, 107303, 190211, 968629, 643359, 365764, 120416, 128330, 976701, 1046776, 311075, 509116, 187850, 176821, 701207, 128234, 850152, 177497, 481803, 499217, 350071, 365868, 844577, 900201, 775833, 496058, 305261, 120318, 643978, 868925, 364056, 531913, 351526, 528375, 42514, 12264, 29665, 61533, 4717, 319072, 994645, 1011808, 393768, 926308, 509605, 1018392, 254416, 209202, 54672, 641692, 569708, 65433, 481520, 899272, 349716, 635294, 586658, 434757, 133484, 932002, 8793, 364663, 360481, 686493, 396749, 54899, 445006, 960249, 150119, 699442, 671508, 130000, 182996, 926326, 556312, 689341, 209453, 525991, 267310, 116470, 634455, 35842, 951416, 260534, 728954, 255329, 975126, 827742, 694459, 331703, 373922, 55838, 411041, 244940, 191424, 270797, 387936, 249904, 65603, 34618, 567108, 812426, 46007, 504756, 914283, 484530, 392122, 391740, 328723, 483664, 88199, 447798, 919381, 476621, 330147, 953145, 146570, 428972, 550982, 716410, 299789, 725049, 12989, 782638, 940382, 395779, 778478, 16223, 761786, 406486, 619144, 806109, 145702, 770244, 145030, 728576, 783314, 52668, 717672, 548647, 172567, 124356, 252683, 700091, 11414, 416988, 747733, 369055, 689845, 843361, 574730, 787177, 389640, 819016, 271884, 232706, 86989, 1008883, 1033230, 789334, 377281, 407821, 870359, 502633, 906589, 488714, 554492, 435086, 107669, 741618, 440190, 393380, 138270, 83569, 675324, 214080, 429084, 93839, 421360, 655818, 480723, 263076, 851994, 168792, 668950, 809886, 136506, 902869, 443668, 614116, 207031, 130902, 983260, 941918, 886820, 353182, 914115, 642482, 1041811, 442362, 993397, 30212, 710919, 414249, 515543, 250579, 965189, 918107, 667720, 242560, 369352, 977943, 900755, 273621, 214834, 536763, 950272, 20717, 124462, 19990, 621884, 773015, 857125, 991681, 3679, 760678, 94348, 155320, 813179, 207764, 16738, 994448, 4720, 21127, 536790, 212387, 466560, 350980, 979510, 759864, 587713, 339330, 868339, 925021, 694839, 483043, 590375, 917445, 1047902, 2722, 947380, 1014651, 810555, 371359, 842561, 436787, 640406, 820777, 894683, 645958, 554034, 62084, 8581, 713446, 459454, 947097, 1033022, 670525, 292568, 358347, 664483, 985243, 465971, 6347, 669630, 619370, 604556, 819326, 457665, 530228, 87041, 393975, 537694, 876470, 980137, 678432, 1026726, 42871, 490715, 813671, 473338, 653867, 109675, 325051, 3891, 428402, 518318, 719711, 494890, 610378, 922181, 808164, 722406, 980682, 858185, 9854, 967853, 71917, 10483, 370624, 153022, 201411, 329932, 134445, 789362, 778814, 9780, 342336, 836309, 337531, 215350, 1001386, 548947, 788958, 507113, 320614, 93216, 513781, 549026, 385027, 314546, 922016, 906079, 561613, 665192, 966240, 365907, 839318, 80804, 323416, 201232, 717218, 354509, 251088, 4627, 447920, 371179, 990665, 584824, 88943, 964223, 203671, 1000430, 600208, 589660, 904108, 897865, 443408, 981463, 906231, 911203, 860139, 735817, 839277, 455652, 1019316, 158230, 642270, 458600, 241787, 136499, 220175, 908397, 517663, 749192, 236368, 662309, 370946, 351345, 751651, 700048, 958942, 551437, 196426, 743335, 887740, 280084, 400224, 820218, 700480, 692509, 5870, 158500, 620706, 373036, 837165, 391767, 411466, 503273, 510278, 895135, 491602, 989465, 713678, 908305, 639092, 1023498, 348635, 1011537, 268796, 163535, 810837, 883150, 12660, 153236, 670118, 770838, 653163, 1029308, 923511, 773196, 286960, 531423, 776431, 370351, 506017, 555151, 456753, 664588, 836877, 489330, 932641, 276804, 120745, 34361, 559451, 616693, 441393, 1021184, 679848, 710201, 477884, 988964, 826168, 712903, 615165, 133208, 930999, 997841, 63781, 955404, 516589, 852667, 611854, 991430, 234848, 34974, 645881, 968575, 811764, 779983, 47342, 497453, 888152, 902260, 791132, 253605, 1024696, 77016, 106159, 794726, 1029200, 172852, 717549, 1007276, 435323, 655812, 140704, 337242, 221037, 530197, 206224, 366699, 151988, 222866, 155632, 179160, 698084, 328048, 278937, 325217, 989402, 483916, 835733, 711132, 870481, 766764, 318720, 54820, 448356, 302781, 63010, 141822, 609191, 746611, 433000, 207283, 843901, 333260, 157974, 736159, 732538, 178493, 373716, 223113, 118530, 794030, 255212, 137069, 787855, 482941, 917205, 494714, 1020907, 982050, 622345, 549603, 781817, 49990, 256918, 1026838, 613753, 302706, 240613, 1039292, 162981, 734691, 682692, 234692, 10331, 285490, 442814, 585714, 480266, 283455, 367179, 620506, 52590, 932158, 109056, 92727, 118873, 444437, 492084, 202041, 464181, 738581, 65206, 324685, 923453, 819040, 131501, 758537, 724372, 974246, 31232, 309320, 676935, 398739, 1000833, 726313, 438009, 461417, 844124, 974896, 509494, 329776, 519895, 124766, 1041005, 207571, 790549, 235482, 51009, 516790, 20169, 152977, 920832, 486935, 126477, 172256, 739131, 314007, 839606, 936464, 639512, 281961, 226584, 189027, 687213, 195964, 360922, 95491, 127180, 49068, 1001147, 424539, 936564, 985069, 752417, 53401, 58293, 367557, 16669, 151896, 566673, 1041099, 35108, 962342, 335050, 232345, 378767, 62237, 945524, 81842, 100057, 1048128, 449994, 365549, 843951, 250257, 536914, 263446, 754126, 792834, 781873, 849918, 99564, 159403, 235824, 818332, 507462, 348364, 882883, 364625, 807271, 223116, 370241, 817583, 502828, 564017, 877543, 899071, 602960, 46307, 547689, 106369, 573788, 814108, 81885, 1001862, 55388, 187578, 34420, 955493, 34928, 551021, 945877, 811280, 456691, 956767, 178584, 372502, 279154, 119469, 834112, 773474, 177816, 203882, 719686, 866250, 474271, 904536, 697205, 634409, 547519, 1043243, 102363, 280760, 662310, 8489, 662920, 277917, 414231, 1036657, 553365, 855845, 1006950, 846513, 904973, 355880, 168000, 295314, 467937, 334091, 250639, 475225, 294379, 267981, 963390, 237062, 561001, 632132, 71397, 844914, 571821, 467105, 483499, 640889, 805724, 722103, 661629, 838362, 475545, 323676, 31849, 475794, 278723, 75327, 257362, 554775, 346319, 890510, 826230, 1037250, 873532, 349637, 749171, 74734, 528796, 173319, 386801, 827820, 765222, 621656, 798066, 600356, 733951, 641956, 411449, 308411, 691505, 138388, 862600, 1043035, 994677, 527484, 436663, 667934, 255878, 927232, 222001, 532217, 544314, 379222, 842470, 87016, 1012087, 670339, 260861, 819797, 724671, 905177, 779510, 73630, 856849, 153975, 446998, 292672, 381591, 354225, 828047, 584699, 736723, 993547, 293763, 379645, 294236, 423246, 373809, 547108, 1012355, 474834, 708362, 663258, 878593, 80102, 965980, 580218, 668693, 936319, 348402, 527886, 686314, 652071, 437759, 963177, 364605, 151536, 594441, 212070, 491501, 179425, 218484, 611654, 234505, 680970, 1023186, 854230, 862384, 213639, 490086, 884640, 202919, 868351, 835975, 988944, 973292, 633592, 387119, 715781, 596456, 905955, 1028022, 254473, 734345, 51341, 879645, 258198, 140233, 529626, 522619, 52213, 1007884, 580706, 916886, 333025, 769166, 371622, 747648, 240811, 615958, 769619, 721134, 456649, 915724, 176594, 90754, 888895, 595073, 1015735, 157803, 20300, 839129, 162481, 319631, 263396, 707213, 132889, 252923, 227243, 99036, 727167, 353420, 376160, 527439, 70549, 438164, 512457, 160606, 605889, 157582, 419619, 100059, 518256, 482340, 303709, 644670, 586816, 180662, 183404, 703237, 21807, 437603, 495873, 794937, 768494, 227254, 639818, 962207, 450872, 1037879, 275479, 907745, 708792, 274593, 480950, 517403, 681246, 903715, 591990, 531771, 589904, 573476, 876412, 63334, 285705, 267867, 601080, 795698, 753703, 241793, 373323, 759985, 742612, 357634, 844361, 128828, 187297, 853520, 365439, 441069, 983046, 576867, 516932, 235451, 899869, 509637, 884304, 636555, 896087, 515846, 200967, 910662, 115255, 404664, 649866, 616700, 534759, 774636, 402857, 305710, 463075, 360843, 1005834, 7545, 315688, 290071, 672172, 564827, 381633, 393600, 134286, 80262, 747177, 346667, 253391, 563783, 985828, 214687, 144086, 452972, 89289, 595695, 641726, 59246, 636818, 959167, 51959, 546031, 467809, 900996, 287090, 580852, 164499, 329462, 445726, 943065, 42252, 872808, 642674, 841377, 539020, 48283, 820615, 697290, 866654, 533255, 507162, 408330, 136119, 350873, 676330, 697731, 515423, 365440, 813774, 423691, 912409, 308387, 777787, 768951, 354715, 12224, 151408, 678415, 876196, 250964, 127589, 693114, 705000, 175884, 135042, 285716, 987498, 42912, 607640, 699220, 188587, 685313, 601827, 428588, 1036979, 952755, 846973, 990932, 632241, 744134, 447235, 246793, 224422, 204651, 681665, 938591, 470245, 185063, 229400, 341, 353545, 989948, 754110, 1029804, 393693, 677033, 502011, 226538, 57104, 893182, 34276, 662547, 309076, 27705, 939296, 68677, 593784, 151613, 703102, 146222, 982283, 93164, 928076, 380565, 440404, 778892, 962589, 605752, 589713, 684362, 961250, 246006, 516188, 457386, 576622, 212895, 493585, 57375, 712013, 103253, 821620, 737440, 494505, 1015867, 473258, 125729, 451421, 12643, 907489, 710982, 498206, 548013, 399111, 818024, 585397, 454756, 587754, 403322, 408606, 562873, 774487, 190163, 223786, 564536, 320297, 1003142, 122056, 63301, 890680, 872000, 674376, 1023432, 360978, 147055, 478661, 811279, 583281, 338698, 927854, 701127, 81757, 456261, 149387, 54860, 476256, 431528, 434518, 593015, 107727, 1014188, 200167, 596073, 666222, 51952, 68146, 591413, 786176, 243950, 159613, 840157, 515024, 511227, 561285, 721483, 981482, 968468, 752576, 283592, 165507, 355227, 805220, 618852, 18547, 617392, 893181, 115913, 818592, 142, 909846, 1020817, 92174, 326904, 584542, 81150, 636349, 559337, 658161, 814745, 667999, 290978, 1006478, 12595, 656970, 927473, 807663, 524978, 426128, 734485, 1031218, 366163, 618805, 237587, 529537, 942533, 158347, 879590, 672806, 127563, 7485, 674658, 935448, 904801, 104004, 56144, 293572, 915958, 964269, 715581, 1045577, 177719, 449497, 934656, 175805, 291702, 454391, 140376, 283204, 249963, 383095, 39550, 544488, 361556, 86474, 491074, 905490, 252727, 567772, 528072, 354962, 796523, 754290, 67415, 347987, 717430, 469919, 733792, 801275, 500258, 810429, 58202, 751466, 89509, 635467, 634440, 101978, 618714, 312525, 936241, 891416, 797871, 338414, 717358, 780142, 856856, 1047382, 784301, 1020721, 1017486, 1043568, 806630, 629366, 1046495, 443193, 488105, 281964, 820579, 68248, 930789, 71751, 709568, 529143, 329071, 15876, 622503, 587829, 355933, 94832, 965821, 725669, 216254, 433711, 390225, 475289, 763400, 536552, 465442, 267852, 212339, 322638, 690634, 648684, 940963, 927136, 115548, 512027, 339147, 491667, 103709, 425203, 626005, 262950, 1033228, 814123, 905284, 871289, 272014, 1033778, 845643, 995672, 831353, 347873, 109936, 490151, 397920, 898498, 313046, 562481, 316553, 920437, 1023972, 182307, 808013, 658421, 343405, 875894, 884042, 707289, 928786, 57478, 552625, 659249, 971179, 353377, 165578, 282055, 368302, 748976, 208722, 323728, 285369, 588739, 1019096, 522337, 75466, 609461, 679104, 991525, 600719, 118802, 831438, 435795, 604703, 449050, 742753, 933726, 743330, 869161, 809582, 175560, 555824, 426534, 926456, 730996, 180257, 970694, 959725, 500124, 473280, 506179, 761248, 110441, 162428, 944199, 716047, 16546, 337493, 910722, 397250, 734896, 486431, 402069, 1012680, 191733, 1048516, 936260, 699555, 942036, 1021544, 970350, 444455, 501148, 942959, 792080, 623837, 67190, 634549, 674481, 945510, 126517, 1043421, 701717, 51849, 668421, 171274, 618208, 22523, 746770, 1037753, 903359, 292676, 39673, 31266, 635304, 429053, 468685, 361384, 581302, 479166, 952263, 260426, 38910, 980014, 764753, 820811, 652608, 236190, 190147, 729119, 118161, 229112, 25290, 176012, 203275, 626341, 368423, 555005, 201693, 1027692, 868445, 408953, 133015, 130225, 558238, 865663, 986284, 63958, 308481, 595577, 226646, 698483, 133731, 281159, 658496, 877359, 207378, 904355, 462317, 384425, 490242, 221395, 731702, 869542, 283444, 756697, 917835, 203850, 475808, 711516, 831098, 199095, 506824, 854621, 686186, 365435, 254913, 911463, 503774, 788395, 868930, 724384, 401379, 330999, 371492, 95082, 184324, 949316, 853320, 492839, 667423, 1021833, 441376, 811981, 922665, 367831, 775544, 827205, 823604, 234365, 26315, 225009, 302376, 451136, 846698, 407108, 398195, 956197, 569485, 464204, 831665, 559975, 802984, 183596, 914106, 528508, 70800, 620881, 200279, 671932, 123181, 101235, 690077, 445457, 629049, 99041, 497116, 359228, 892120, 156171, 1005303, 789104, 588481, 973878, 63639, 661372, 726469, 967994, 102654, 496987, 723573, 280443, 428953, 158643, 836202, 52237, 784313, 980870, 392556, 1023612, 946611, 134764, 313119, 307879, 895355, 542970, 104162, 521794, 82107, 173980, 326343, 474868, 647278, 963744, 755173, 574702, 862956, 817699, 696802, 284382, 469736, 744772, 801674, 1024025, 737337, 939073, 551332, 618959, 157193, 806325, 943907, 758850, 822359, 588172, 394159, 22696, 222041, 104672, 810866, 1013767, 553878, 1017614, 846300, 498124, 484711, 65235, 279715, 749235, 272796, 723618, 122745, 841128, 737585, 805125, 58504, 53214, 1034266, 860987, 789948, 322215, 872269, 746533, 34754, 414416, 1036174, 914615, 774622, 340896, 929784, 972726, 722119, 368646, 345157, 79102, 319649, 753469, 57571, 914289, 623625, 118783, 728890, 1007462, 1042377, 958505, 351512, 539180, 128370, 1005962, 537073, 609612, 329355, 138671, 748104, 811735, 265, 591615, 604193, 1034149, 211905, 62053, 1035579, 318676, 909799, 240757, 313793, 557677, 255429, 654498, 642436, 896789, 613283, 472922, 294422, 483019, 688580, 944824, 518977, 957335, 938978, 159494, 379705, 243594, 548764, 442263, 799184, 867420, 686078, 770428, 612017, 152918, 852754, 252252, 727349, 19501, 623276, 523384, 408602, 1044054, 25787, 799130, 889782, 440963, 272198, 306411, 785395, 665903, 958192, 676088, 486932, 931334, 467032, 947501, 195428, 386014, 53830, 160170, 606297, 172834, 992190, 842101, 679661, 317655, 523527, 952558, 927367, 600391, 35944, 646366, 473478, 854542, 238420, 284627, 990310, 745269, 662053, 691557, 947802, 110972, 192119, 486885, 569954, 456345, 541662, 65234, 267629, 649646, 597232, 544617, 93654, 111738, 534057, 678890, 978843, 840091, 65546, 946934, 176907, 896940, 956859, 81175, 846441, 160588, 55573, 933442, 875010, 164608, 851247, 456113, 385519, 426572, 352257, 100905, 173790, 1038368, 492844, 258509, 659663, 802689, 842321, 234432, 390295, 594726, 734564, 876144, 267899, 559573, 677007, 529042, 283791, 608196, 905751, 766459, 353024, 798590, 912635, 384898, 867575, 555439, 532306, 979705, 201658, 56588, 823135, 43012, 737713, 279225, 234392, 805861, 656480, 263656, 182885, 860943, 922041, 264639, 23482, 1008531, 893454, 869785, 435587, 672247, 82524, 486743, 494070, 993809, 68851, 578826, 436409, 62707, 916201, 449889, 357597, 288025, 549093, 793019, 927800, 546032, 926265, 97134, 49601, 187162, 482831, 527810, 855279, 718588, 910544, 119141, 75036, 458944, 511886, 486262, 961984, 592823, 237501, 495968, 244603, 397063, 729984, 499319, 371799, 29642, 585265, 110977, 497963, 269701, 569315, 552442, 14926, 913973, 522770, 767103, 974273, 642212, 27640, 508596, 219606, 344021, 647718, 558398, 12164, 129127, 542497, 217033, 554067, 516480, 980013, 198663, 475335, 957608, 1002584, 373632, 940007, 589073, 1033368, 28809, 625053, 571528, 195041, 439149, 112280, 189923, 273275, 87359, 115251, 932053, 1040589, 645980, 326079, 597661, 270431, 621129, 154715, 365838, 1015417, 809000, 783229, 1024233, 511971, 566646, 289252, 762170, 942510, 655459, 550707, 277109, 825047, 149149, 220885, 986704, 126642, 747706, 709889, 922877, 833259, 711387, 719926, 532605, 195773, 787928, 802548, 87141, 113412, 231358, 53322, 774180, 1012166, 583376, 979900, 396326, 254871, 216347, 387747, 539768, 407915, 241926, 189829, 355578, 530319, 357807, 739820, 869031, 604681, 779898, 519181, 404275, 495062, 298141, 511653, 784118, 441620, 827468, 777024, 172153, 750076, 666592, 579099, 424381, 193579, 573738, 824252, 41801, 658811, 583935, 809695, 882757, 808598, 475121, 853242, 549188, 584097, 174255, 663818, 513520, 222632, 57309, 8062, 481750, 903502, 414531, 1019707, 707402, 195624, 208021, 395648, 169104, 374224, 1040551, 873568, 908579, 309924, 944659, 944173, 460530, 560219, 1021085, 338570, 830535, 45694, 153010, 22562, 514710, 719268, 198248, 80294, 730952, 764291, 22487, 329547, 806465, 166384, 194233, 297079, 62751, 865180, 644629, 789438, 687013, 792027, 439359, 178317, 571603, 261783, 420344, 925018, 569306, 492082, 534202, 550916, 242180, 1005618, 181131, 7381, 227026, 272191, 114706, 164013, 115333, 658081, 46052, 851892, 560428, 736714, 293053, 246751, 981007, 956678, 750713, 1046231, 1000897, 113959, 143641, 274720, 367935, 935124, 485848, 358462, 326358, 88274, 892626, 11718, 771377, 579436, 94300, 535916, 821934, 135110, 243096, 346940, 265179, 898540, 482976, 580078, 792061, 433391, 340416, 595962, 940207, 273604, 582992, 432862, 235020, 100971, 230440, 811840, 511477, 799558, 524541, 149265, 167214, 878885, 331137, 920074, 918322, 1014568, 728297, 528551, 14610, 132431, 574007, 892671, 34214, 108723, 1002550, 863761, 1002382, 109047, 614193, 634343, 474239, 353764, 719856, 1023044, 833661, 838705, 614346, 69655, 341691, 156074, 363030, 329911, 556527, 644851, 341843, 624780, 944397, 898220, 281080, 19366, 389854, 958494, 407535, 622347, 361111, 993341, 1006673, 632548, 701625, 629813, 322047, 276259, 988114, 457056, 90509, 514309, 798346, 113877, 1011314, 1020413, 969394, 888720, 175516, 118562, 426305, 521465, 275003, 129301, 464855, 681650, 853993, 926843, 228485, 815421, 1039860, 86433, 424800, 416409, 460244, 1028423, 500948, 496393, 276479, 279157, 868185, 850018, 1011003, 867268, 984167, 1955, 990674, 943360, 261266, 592581, 110034, 99390, 158515, 9878, 418282, 469532, 1045966, 992201, 171676, 462643, 778965, 1037437, 33808, 323804, 288513, 573125, 932266, 826006, 402569, 343549, 744681, 846426, 111849, 766571, 718103, 35468, 408852, 50141, 917639, 1038051, 395925, 542584, 765713, 580731, 343747, 126800, 112510, 328821, 961247, 499234, 80458, 873380, 818284, 75434, 65252, 200733, 460202, 681103, 910038, 270522, 466470, 331936, 181654, 796372, 318219, 313889, 46464, 596655, 236198, 181411, 373818, 283964, 171168, 932438, 143187, 865284, 239563, 60168, 1045711, 625951, 289912, 104641, 484188, 85151, 345362, 655890, 103040, 347191, 133288, 712378, 169167, 388905, 842134, 1027400, 987497, 306116, 376848, 117233, 1034469, 104599, 386447, 466086, 939234, 583375, 711224, 756290, 358494, 676686, 176341, 291589, 683358, 397617, 871340, 700929, 602796, 439768, 516469, 796196, 328158, 584974, 381573, 388858, 1012785, 842035, 127738, 779614, 575036, 263068, 985603, 702118, 538351, 593865, 694251, 549653, 595136, 527966, 919638, 24015, 224396, 278802, 13464, 421201, 680279, 100631, 170022, 81450, 878405, 487718, 848335, 872691, 10397, 387645, 627400, 650364, 1011413, 747949, 548650, 44834, 417267, 992242, 1003112, 205232, 365629, 382064, 320707, 54709, 214622, 874712, 828895, 357664, 553584, 865567, 407748, 42702, 866593, 672400, 695755, 7675, 136168, 447961, 846086, 527906, 276534, 87003, 851623, 581014, 191459, 481463, 465366, 582434, 94697, 1030781, 997413, 744621, 691457, 769059, 262321, 196747, 296497, 674883, 42471, 712939, 895025, 911407, 10192, 400898, 844962, 631549, 160751, 869328, 728699, 319621, 215564, 962126, 234595, 974975, 635293, 887960, 558518, 496146, 616730, 280966, 577453, 939705, 451823, 348144, 47572, 562425, 800638, 995336, 814076, 619223, 59281, 314016, 309088, 983913, 375784, 226034, 680970, 302121, 15407, 49299, 952588, 253081, 225430, 463976, 489681, 158798, 251639, 528070, 503325, 756497, 369864, 587045, 655031, 521449, 292669, 416710, 284738, 1009203, 871281, 650688, 464679, 100813, 903452, 761818, 209169, 639396, 19574, 913176, 171060, 561541, 418893, 224861, 701631, 247372, 160400, 456395, 905380, 145885, 981452, 449252, 951044, 770718, 199469, 277972, 960622, 160370, 342065, 778214, 616078, 796471, 544939, 570050, 361664, 192921, 10101, 757062, 917775, 885873, 57921, 318434, 482153, 158724, 34423, 228885, 737991, 69830, 72763, 187811, 578002, 441271, 483480, 807630, 333900, 577294, 524300, 425662, 27710, 1031750, 626892, 790444, 774155, 857368, 602387, 652537, 454368, 360394, 145634, 342764, 173803, 102428, 505529, 185460, 1022312, 516122, 1039746, 723793, 596727, 284177, 740632, 31485, 453991, 605508, 762257, 682931, 118784, 628998, 899660, 908878, 121908, 838642, 528433, 76268, 838333, 845199, 692765, 449238, 1003844, 532625, 665571, 889849, 419521, 447114, 50491, 461063, 802352, 510394, 19419, 697518, 985835, 613595, 574362, 334203, 200339, 683287, 580107, 128093, 434972, 442458, 1018255, 596528, 872504, 32789, 563668, 4877, 256938, 638041, 412435, 598966, 822071, 942587, 495185, 367459, 648977, 114625, 261594, 255311, 646187, 477020, 528801, 232358, 574192, 982175, 665136, 659182, 606954, 967784, 966262, 506376, 302616, 717537, 303052, 927855, 894722, 335773, 714835, 115120, 113481, 86123, 953990, 144273, 1045024, 942168, 332197, 651198, 763637, 810733, 241476, 28017, 666385, 661617, 876430, 1043339, 857428, 544734, 281585, 688746, 1036050, 453243, 757313, 546058, 833516, 76075, 614911, 24172, 126128, 175162, 664444, 338888, 274001, 527050, 810843, 235135, 285602, 557696, 213618, 347959, 777832, 529545, 304929, 820017, 576258, 210684, 280630, 781269, 567102, 39792, 61092, 926344, 53842, 510219, 160784, 49645, 390842, 592168, 52347, 615597, 582656, 995531, 986139, 246919, 131058, 26989, 370862, 1017142, 888942, 647807, 711725, 551473, 704529, 488094, 13642, 289988, 136010, 100696, 508557, 123950, 947566, 929976, 678997, 11177, 426317, 1026926, 363445, 205555, 781954, 162608, 613224, 120683, 486950, 324524, 552710, 636242, 478127, 977617, 71154, 1070, 971753, 205970, 379033, 957029, 342613, 133788, 1047416, 27213, 569308, 752439, 713529, 872915, 201003, 91280, 818550, 911171, 528329, 444068, 481988, 450026, 842014, 191554, 255212, 276693, 61278, 983075, 695330, 326058, 853405, 208094, 448577, 118358, 573247, 292760, 581270, 1017058, 122217, 531705, 870607, 605102, 271219, 904700, 820941, 239978, 417419, 64444, 449296, 67195, 40860, 858769, 234589, 20068, 471829, 811688, 228795, 987607, 858966, 710268, 316404, 657936, 945549, 479435, 743293, 762665, 285629, 244043, 242001, 937085, 654363, 183382, 402618, 645462, 31986, 515737, 886062, 127353, 866878, 893575, 705996, 365369, 74010, 626183, 714685, 139261, 699165, 676284, 277182, 286530, 504574, 75008, 380488, 779640, 563678, 790429, 869195, 740824, 104419, 62679, 136200, 443299, 919702, 931231, 73044, 844355, 1039072, 92174, 1040296, 843764, 715806, 282985, 631695, 246827, 662353, 43610, 141544, 554807, 298909, 901278, 133821, 620112, 1044932, 864195, 1038628, 1005139, 942791, 57930, 207087, 864540, 233158, 498641, 720560, 856880, 934198, 863286, 939566, 881120, 577229, 651166, 373206, 454825, 251863, 595875, 750203, 1024701, 1025406, 617367, 779980, 532884, 705909, 837635, 551882, 505526, 115696, 37422, 388237, 42296, 1018658, 29679, 601967, 735708, 823477, 508950, 658764, 765236, 743499, 779311, 125095, 891381, 628813, 237313, 863542, 189868, 501852, 149861, 272508, 1031930, 382952, 291120, 612258, 805160, 396024, 615163, 730061, 582295, 115889, 998711, 581229, 758791, 665675, 581319, 503996, 675373, 398781, 1001762, 1025840, 421055, 490555, 311893, 258240, 340309, 150906, 419360, 307695, 566385, 136707, 219239, 690777, 334567]
b = [939473, 45890, 64980, 556875, 268121, 487789, 120415, 500689, 972932, 569025, 826453, 581843, 787992, 79921, 421444, 47819, 389197, 903556, 777861, 184170, 714634, 619735, 239041, 399611, 12501, 155413, 197588, 529146, 872143, 338230, 117214, 493693, 559627, 230171, 642989, 1016186, 567080, 197130, 816343, 77625, 805696, 133984, 898758, 713305, 786157, 767540, 421644, 919930, 104090, 1012069, 678089, 270830, 287403, 318279, 763849, 733473, 470088, 985953, 142863, 767785, 378977, 671630, 726025, 5750, 967368, 111599, 708713, 990616, 592675, 440711, 570312, 442282, 766166, 803781, 241259, 158160, 257077, 988339, 721937, 151222, 851575, 184431, 82130, 432278, 935756, 14515, 792232, 1048439, 520528, 190809, 534751, 870542, 212227, 579067, 289808, 73769, 1000798, 914727, 733097, 620322, 798343, 100293, 971457, 396193, 633862, 90161, 1045002, 313578, 288065, 1015496, 585238, 102285, 521191, 461793, 43307, 629618, 396917, 771413, 384194, 604972, 22342, 183105, 500442, 487625, 544740, 182959, 40589, 432772, 136403, 291912, 303872, 251344, 668751, 300666, 282208, 107837, 910800, 197774, 78199, 225089, 713240, 728670, 34754, 3833, 43790, 82393, 509834, 586293, 409552, 485951, 706383, 878698, 513099, 820104, 581925, 1025439, 128451, 1028907, 23826, 454133, 874264, 857222, 400133, 89556, 188676, 61919, 753755, 746868, 525556, 978878, 205248, 478200, 304113, 739849, 275096, 230946, 354157, 871295, 990167, 1009973, 859055, 554704, 576130, 257308, 266022, 352824, 487222, 730853, 562562, 964373, 5998, 990611, 102753, 584113, 754121, 370431, 256269, 905531, 827585, 423488]
ct = b')c\xd7\x11.?j\xe0\x89>\xcf\x15u&\x00el\x86\xae{\xfdv\x97\xe4\xff\x905\x13x\xd5D\x84\xf3\x8e\xb6\'lu\xdd@N>\x91\x1e\xd6\xca"\xdd\xb3?\x92\x1c\x01\xbe'


Solve:


Usually when we want to find a small error in LWE we use this lattice setup:


\[s_0 \cdot \begin{bmatrix} A_{0,0} \\ A_{1, 0} \\ ... \\ A_{m, 0} \end{bmatrix} + s_1 \cdot \begin{bmatrix} A_{0,1} \\ A_{1, 1} \\ ... \\ A_{m, 1} \end{bmatrix} + \ ...\ + s_n \cdot \begin{bmatrix} A_{0,n} \\ A_{1, n} \\ ... \\ A_{m, n} \end{bmatrix} - 1 \cdot \begin{bmatrix} b_0 \\ b_1 \\ ... \\ b_m \end{bmatrix} + k_0 \cdot \begin{bmatrix} p \\ 0 \\ ... \\ 0 \end{bmatrix} + k_1 \cdot \begin{bmatrix} 0 \\ p \\ ... \\ 0 \end{bmatrix} + \ ... \ + k_m \cdot \begin{bmatrix} 0 \\ 0 \\ ... \\ p \end{bmatrix} = \begin{bmatrix} e_0 \\ e_1 \\ ... \\ e_m \end{bmatrix}\]


But the errors in this chall are not small. However they come from a ternary distribution.

The cool trick is to insert a column of 1’s and turn the target vector into u*e - v, which is smaller than e:


\[u \cdot s_0 \cdot \begin{bmatrix} A_{0,0} \\ A_{1, 0} \\ ... \\ A_{m, 0} \end{bmatrix} + u \cdot s_1 \cdot \begin{bmatrix} A_{0,1} \\ A_{1, 1} \\ ... \\ A_{m, 1} \end{bmatrix} + \ ...\ + u \cdot s_n \cdot \begin{bmatrix} A_{0,n} \\ A_{1, n} \\ ... \\ A_{m, n} \end{bmatrix} - u \cdot \begin{bmatrix} b_0 \\ b_1 \\ ... \\ b_m \end{bmatrix} - v \cdot \begin{bmatrix} 1 \\ 1 \\ ... \\ 1 \end{bmatrix} + k_0 \cdot \begin{bmatrix} p \\ 0 \\ ... \\ 0 \end{bmatrix} + k_1 \cdot \begin{bmatrix} 0 \\ p \\ ... \\ 0 \end{bmatrix} + \ ... \ + k_m \cdot \begin{bmatrix} 0 \\ 0 \\ ... \\ p \end{bmatrix} = \begin{bmatrix} u \cdot e_0 - v \\ u \cdot e_1 - v \\ ... \\ u \cdot e_m - v \end{bmatrix}\]


BKZ with block size 15 and long double precision works:


from output import A, b

n = 64
m = 200
p = 1048583

A = Matrix(ZZ, m, n, A)
M = A.augment(vector(b)).augment(vector([1]*m)).augment(diagonal_matrix([p]*m)).T

print('BKZ...')
for row in M.BKZ(block_size=15, fp='ld'):
    if len(set(row)) == 3:
        print(row)
$ time sage solve.sage
BKZ...
(-523, 487, 487, 487, 30, -523, 487, 487, -523, 487, -523, 487, 487, 487, -523, 30, 30, -523, 487, -523, 30, 487, 30, 30, 487, 487, 30, 30, 30, 487, 30, -523, -523, -523, 487, 30, 30, 487, -523, 487, 30, -523, 487, 487, 487, 487, 487, 487, 487, -523, 30, -523, 30, 30, 487, 487, -523, 30, 30, 487, 487, 487, 487, -523, 30, 487, 487, 30, 30, 30, 30, 30, -523, 30, 30, -523, -523, -523, 30, -523, 487, -523, 487, 30, 487, 487, -523, -523, -523, -523, 30, 487, -523, 30, 487, 30, 487, 487, -523, -523, -523, 30, 30, 487, -523, -523, -523, -523, 30, -523, 487, 487, 30, 30, 30, -523, -523, 487, 487, 30, 30, 30, 30, 30, -523, 30, -523, 30, 487, 30, 487, -523, 30, 487, -523, 30, -523, 487, 30, 30, 487, 30, 30, -523, 487, 30, 30, -523, 487, -523, -523, -523, 30, -523, 30, 487, -523, 30, 30, -523, -523, 30, -523, 30, 487, -523, 487, 30, -523, 30, -523, -523, -523, -523, 487, 30, 30, 487, 30, 487, 487, 30, 30, -523, 30, 487, 30, 30, -523, 487, -523, 30, 30, 30, -523, 487, -523, 30, 487, 30)

real	7m20.429s


from output import A, b, ct
from hashlib import sha256
from Crypto.Cipher import AES

n = 64
m = 200
p = 1048583

A = Matrix(ZZ, m, n, A)
M = A.augment(vector(b)).augment(vector([1]*m)).T.change_ring(GF(p))
row = vector([-523, 487, 487, 487, 30, -523, 487, 487, -523, 487, -523, 487, 487, 487, -523, 30, 30, -523, 487, -523, 30, 487, 30, 30, 487, 487, 30, 30, 30, 487, 30, -523, -523, -523, 487, 30, 30, 487, -523, 487, 30, -523, 487, 487, 487, 487, 487, 487, 487, -523, 30, -523, 30, 30, 487, 487, -523, 30, 30, 487, 487, 487, 487, -523, 30, 487, 487, 30, 30, 30, 30, 30, -523, 30, 30, -523, -523, -523, 30, -523, 487, -523, 487, 30, 487, 487, -523, -523, -523, -523, 30, 487, -523, 30, 487, 30, 487, 487, -523, -523, -523, 30, 30, 487, -523, -523, -523, -523, 30, -523, 487, 487, 30, 30, 30, -523, -523, 487, 487, 30, 30, 30, 30, 30, -523, 30, -523, 30, 487, 30, 487, -523, 30, 487, -523, 30, -523, 487, 30, 30, 487, 30, 30, -523, 487, 30, 30, -523, 487, -523, -523, -523, 30, -523, 30, 487, -523, 30, 30, -523, -523, 30, -523, 30, 487, -523, 487, 30, -523, 30, -523, -523, -523, -523, 487, 30, 30, 487, 30, 487, 487, 30, 30, -523, 30, 487, 30, 30, -523, 487, -523, 30, 30, 30, -523, 487, -523, 30, 487, 30])

solve_left = M.solve_left(row)
su = solve_left[:64]
u = -solve_left[64]
s = su / u

key = sha256(str(s).encode()).digest()[:24]
aes = AES.new(key[:16], AES.MODE_CTR, nonce=key[-8:])
print(aes.decrypt(ct)) # hitcon{why_does_not_hiding_the_set_of_errors_help_QAQ}