Last active
April 7, 2017 21:05
-
-
Save inaz2/31e25a665186f11d10921d30dba1110d to your computer and use it in GitHub Desktop.
Hack The Vote 2016 The Best RSA (Crypto 250) / https://github.com/ctfs/write-ups-2016/tree/master/hack-the-vote-ctf-2016/crypto/the-best-rsa-250 https://gist.github.com/Bono-iPad/ee91bf35e4520283d76add6dd81519c4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ python solve.py | file - | |
/dev/stdin: GIF image data, version 89a, 512 x 316 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
e = 65537 | |
n = 6423578730916034637647348693454081167828233706595393617403497212319721278531423600719893799206031269629975228045196860316110469232184387926564139197124793027964964633923436775384862126172940858076389279481503829195633694236388705403317796530555977354294056354581396936435543650626098420534284313359536296212419068026445653832950627154373816396801083825269690004749436007313246074283136438229969185652447355539142931977971042934855926013026610936471997416795859203687433643734339395180731253082868144749948066982581207408700951447543397162397483301015642941127441249673840292844304934204405540284018648844793640502725878913266975312049346305789469820711084208121612998793845653373333696304528115215734369253366684165449468897708452517687784060384017641952747731117317081502090322336811038288407543953922650668303372488427333399068933590299067370928158900124089470477847240257607849643366425461652944891267869170261477789236546595567710145255946622544894663968164390643485706558142301420731583344782672035785939642549533656067857373813172853770054590302692517670418771778020603791401986682353038971222362328595758578044661961246617003105331592178347209261429526592425544877653508887738783708562054259951933049733964052867494149105122317808551788016638980390223894012224034349154307738382289309837678072104201757121288901892164300885286603572450345688367733874721618028529626216227286875032957116944765966862880673098830772939400343466027284882509857291628418468781801632907252860195382331620742155286361799914773096697736823919433925761290989983451826831156981465102677096856330752428441323241743249973628639422880653691257411598800077142634460661424594128767876879179961166692145479053362696515659838557497520506616454948442906221166530633407193639588107056608687882551730896118556912323532375793156198249638594948689359356370732827165183697281821994143872223961759641491729718169029548801692675122687926464489452335588400534843490019062056257875180519428173152610363586848045875678876430259777506754771750442308140943674988215078832042286640955446521306070559955920122332562160128390336358533922979630415717510147273946738206522329093333805652024995250213692141873014503738484205794171259122319587397206162365745829892068351681677379259814256337194712560139334750418378732043605399841389090132288927417897607255800412980614803988394387532425151146102342839850541894515425287516636935760110287595608795199481389818148841052882503432241725459648161637540510152291469408029459317777598808147842851258057096260260575923435755912165304413910766266951173699982603812044030648987708415901561795789354142307017108677481288353661591526144783757378569102367184711016593531026066937429341059216571639137427259639055479236118899582058565336906207874929002830720989499266208419139526346925324703342145887133022351403863610940817823006082886557787272675813182147553184168800786602747622849893314629279252458448112730246345836463818218825653614822681423767448565914537837872256499249269793225846861074650402185954106014619828357334044193894956150656811384349490365964092570389514380893213581906737211164267005498004876923229760073853330544798307497781223028255631896860883814276469433043152534232191760348010974781941461436678872057234316822618760195930902764841943665713106381137134016974673967919911655752642248235828255684836962175126734638678857049536753946464352604206391301188553530600195491629836288651774030138222321459040573410558571377543153611754920263093817323634180282351915261678943320576020790154017853904686608761790750882082602041059286149926578443741130196279228142902787283429435337404772111445609115703473593353732484580742472407002104973788060512614445699082749199943293102731243963136332327067535293490535136183573361960792409906253280566916342870199800416609415278361603539867384871435512506673434123430599894424383068634840121581697104429978253147265794796803964025810402929424001702774536936224646615650684932705647088251762450177563549117217118661870084220699877407241441324411105929888310336704732559098040770896425482731897921121721125516768793557826207371495457775824533106718177051063763847594419028102902488740950785680634288065417284126037733585445262935607660718072646762743268658355004422263981567658479957868522301533839864203242294437658624740983911925180481578367675320920173124672206398722585887966850238719586664542063675177246595164857503164771675052433745302135981281677108319637972887361319380763666242759088151726149708651146469554307215721956625417525938078190488972326735992082711064507914782165503817364659570370858831010994859001390150938707513410460865649155046715715315644150588113500272114892270504366345275467826206804786541118323814542660064267985952011956758927052951309340387381328178956536154108689256190203503225727606488237639151667728882234803516596652460794322674423706383943511864578771190663456021024423561320868394223606829032860565304224590241536782774937999679612589338017420740004486732046347359120027540194145740016153682340359061903559269056107552260426514580011332759614902204851954761301467523176861543116489428888754651405033884195680979565632181155642306035191042163966381873002555527932507045733968467659602643447637354496382234724684974186180137741560911750482137804047303391408695657414704012645875435985208431652278690793052459684865040014098532192781335141201546523678541362483213878514054143226380151871601108974551938465484036830235489551452533155178964057674138829517872053980906537745671527091437352473860924374240118256637314374134547646515854349197347697024794503375142284636289383828901499977491747081811952776959289000851519569252236627881223068744192755883035524299116139800070700535532726691994425326696409439796507690508742474379600543099668787667894291951282901678004295086235458568607740648476621579159909196336438776698430510260027350052247889995416950736709041972106977783250099049066651654123284547530174174631592627669931214783715579499660049285751302006372987105606153524272067729289806924982561317887470387610052663057518020003354493935492718384439231198980408980617872851536746641064533758113824833256040964820128044373292753490270571318490540681416618050585870539242058864201948259574996083841512025283993411266033850561033376840012393530071151226605048010052581934488805099791095715692318309051379852698293175562102401675774667184909997287868728025194458949489484154547776688471788085604983070435779264588607813990188370587516968469144690014185282636302353166579108150442529450502992028726076343968373377617232713524889989323919355345032134070086495760609135995716148444800715288736827661421590575931290816574026759825435928963403800239038320463050723418146971142149757791257362395314120546413053212061360381983668972568702578126119927857075406207934003970812846219581500037294408230908567830705545146952619354957926943066216285040819883901435959992152835024215452410072411413263087600955650587094461910670044437617553937382643629961388144737150535796782364960842442489088426383926708942415420694871513134784889493068627254376698338795869613078337579333410167899002207409439950066060636610876921030617836536098293589346951314879926429441986655266506111768085310692196423159981269022210443778851448222238325147335748364575396887905755674614951869456471139584188131519285916104441503412007429003223022889952007559804306453290921110666498055898223715033044921599970970623207246930461595294733274826597701212051309602737025537196581307628140029275273459946337618859308398366468432986221364628782467911329835797046590844200588564996692440673293169186131575000193515265891510683608724651586545605491573947051071223880702398055520287648795217829712455334772839405183743384736021666748653274872922520008100752768875370557709450939858252912471562409512521626519049502062239826676893071156203114168086683587174266396197676754402801692624722406284808262406863778397582483941705160480855764586948940506272523962251544854790607464852840856389511577463943081588718443537090348029597457372302612005608818317736896567955295263590235359611044599346008099169969823712847510924821704293086697172878925188162613474449795568317087649452872573568401610859634954255744573552883108760670498517147480320908062161935218544141450787059890363441229841983359392346785061428095347852859997270229455042812428241491374659791195884973633266889990566118788553891790922955206314637451007339884540063043572483962973016482724815036925284940159928635708683920068148559909106727994527171906292694280294741584030990563379720115426585756137152689119940541550125973228693877840857094821571134445037408656964710568944577844147374534739959891597566194783052359467242532262854508688657190907990311948449553270380491957767565970685831270980589440188562649612531381093437701162908532862985998019981621732992851364471161040114331150420623681176612537631391183730368192825489116647662225509276883346591827314963305356066818425307086012873695888151062746824420399244997530929250758654114588333534777544906200371739008468412133996060805061496964434603305330860672400259669330189963947702988852261076188686221463426114993618081668002262295130885166097251284419832479445289062955589585795088196076491280235839692677107402641946736908570257309161520268492192450709852400068520781590228330659877975685396263495617810669275936058012524687552206220733695096761538154726451472232978317200842729601557051265153066015694733045456435296634055036940644721197218506812419556598066728223411213525254107577982760761577712466600108768150328065992827993085168389045079753258293228205893730274687738700077677960643698260455329726117143864088112872476650649849662947352290518647661178002580416092479574932490875188397925650400857442052342668848506218622327837001032528233544108090152861726336970407989742664254872004742546020901921664042830215673236670580821717738665702488476526812926418161006624590245445294381860099904426115203573294114446258140262352931570300296546675107336274820797175654845436900506915904859606712556050362597317059504636595062334933716567645009353072512227316269186507507924009519238961544292351874849730929904170132576665700615735567599175497198768603359521907115705985761255249156299283462892921098525987708170727161657505048270270846244961898431591116720188062156082064428233081218201371176283523803481269618150980172912220330400272553996942370080577885960811236859756152952632448862099651234430583120787521838185382316291345099327682215838312179447270508913182893150879849380886036230618079297755382944787003984274199815611169938310136385367348153483370486428979307593275804452186490900108297837527352835830098446115227758369882684847707160435673072004552404516108491679157061023595707986664198928113878283122323813472372494532965986291893252254923484610092480121714572739846875349218401604487404029594285177947456370656622201977253354717462801863724946216805056026790667511520112422225232650854257732841904125314604888663325773606815212543905643253390745104604210225578733909458620050915353143772237085804968524312017555707622844563025387618754577227181285084325113290504775968973598876845556910440749659926773574348073868683304694562427489082459132040584943527635277750495970316777707499825810671013548408901455379549055791360869269865668367681364415378544459111929694754959289927260279048616565192017877289063827062826166056493923473434222029685031403722598212043685554696170215021392175638749933452782785339735543909999164687743176235789351005590494728220156898178631303639811726803091760498643506901716430094221049874556071942142043984104777873156561620854529964768065962682618057061088384612911100581108913781311955222660230774161799886731989772149824365139444300207762513225937277244051831622085459655903899172022920235861914863761329550823182040364059144863751431002691513182943430065032240849400598382001505999661524112579261455332837177721620500123460791899417539635869298374898534862612999610983373702877800153985771200730461779738488353282436376584714123098969389724403122058344155792471083708432727069278203580431510802423381100215652546842272549096706695765914732839664377882784401990554622608589163006531366634191364378534729825402627740966241358113054220525569702067157439149772255204957131013015208668297635803784346844828102476541500139596849370862906267361523734610256319917241628642477776221545950494885093531260951833246144804616749082942558117674223430584177549285148826037371098989274939742471096455517965137284786986258769273764612112879930315558102317350978385948649929510000182905430897618601411462059209276434265510317528771719627846225325586238185478867300691808949741148503222323922363926295209578293650639346008415483838688896864102437775176482463404245718771758345990941193864641319689045690084506764959804001696803210088418708794790288691185973670228338130674951202493487646678219901398636580528537149175836050199102792260090848645712469821087850265084127420475832600719749406336262367070485039158708994247724496681760436519037395942242123115167555459032157562951830873079503940886025849379649043705296359443030046691552207557475818588333593494153621855685248095512988213651393803704634422788380687744807638142309635751729003708268439348720562031243868831988637939470395371833843743239989910951636166423339413560071357827274294754546538695757152242480295858604886515577766371976317998464048835562925325427520197937665819467544545044152345483864520065355347750872232143750710240779301104001832456694558359786808524750912165338250402060927364658352724116602813146367318455600617179155303081711112783753447630321633554721992966884434321884705165818275498615777681589124831550127952961240060547059363766459498983686451300554184913413701561832033667869056183873442256770780994932851151953060090348641067583026240763709466713802030865204597885289757347372384902637312954992606823156333741624417481965020654167876649883085090928514991591067523395808747114738022289904644067218582206624289134859512958967113811281213275379397665443002194533511171846642787551662077441592834892620832594915462316385713376937860546194530127301560305811503556717926295183380596647335266091662967100982494768155820736703878316936201737822970749412313156496799599108464663339789504625056017358390326318038858234176248693257298741965004559744563224763024632292404177524682559240291886081730032224268967957746396003361040206261520171968711125275007000323302098906630943029059445558716854082136707895009949529782926237471208038967268960960015283495678679522922511642321314713557021259431930496526260376036956276393167562314703100397470645408021707557991136315028651897150786965986230124802904438066898716732032582618127335748806417713994144932932965310917239100339455184666664212262967256015037216080553590870616605927782262421220096254604289176858135920534113068163444411003259869382303388714111422709857424913101920442990568608132272063968895246285598029417734699251576195759360416259081755303944085570778958546675430648747727698938113789264568077155649250482666356522412086290698040570139466411184936803331865221047710061224719721997803383276427442281792635061019855332199783244038210529236259178675225396927980922167501368856853690431041067850257986915013097103633456787773049201768185403273923890381714701859873660973268912528962083607628817064234446993684928952383625470656342639524601035827577006556254006351834933054643915965445764509503645564419334101674560428306707136055440757480325787134895521170597454910807549868619389994178887253307751973843944277746244805067855768479955552130009005338536143915531875177640046608285651346169520645592343213069758326426466554492056416391793996369577794655334299619132461929215943450989055035403385844863034595995239030735192556763120845422062586443904872841127951944404828716165379676946618106413765197235731174401686623244277492912406882195148103616211033602969291716552412523210757248974582065354409656085329576028836520838375468075640458602052317732785439277215181727407523616810541127785496542533801714393979938861485783452926456625826895720677806611414338947775162989158162576629877846608317369945380812795369461936128241809282043828613021203677471396438075694117069270528414972556558374188907892170418426526138917366146616632016779320865395169942494017889083565885263757954727166115620965221270747474098063097793009944151792532889188013385491774303909979170351752527863770212786072809157249327420190507629730138555859662275423035383844485520333213935638388566186817411402519312831719504108673622097294380862825799397929324782032068016515079238389446453492043047519608194794909054417657403666558092217758602739204989063441014426092715249216998710102275477045855901810640698471799343219744935274699719858117617112026461614271673459374427077027235161605855060959287646534106450157023328286688487683945324520675850535371454198572965171820113139232886487496466551173039852425055638508666024690882992906184141187505096664697968201615338334501478188538148763723794956337518647721421932996454376204570395283137058488826828299920810701927646671264148262837722469214728971165032649664882401616609382802121884814054640039529344196052108218465847549767748507509108197228759317892122185604950198717785601225485669638398816891551266093975618900342992238206082656684705824177850656741772226651143148501160769626136509896681797951902665945373393766037632631445138613456731724100985678204899976879062947276572347082421797176186988622710932334029494507335103215357026904459750845298393786477795802168416405751950657992299334547110544759768097646588019552777374560788582314248784418809870798783199135682546453803560525732607219930063632264314334730086279232253448511099972339833504056716198325771826217014678550212190349647997843756168348384991961433990096038426511893571057884661132112319644419929198684350111945880388811958654692743285169139058133360818584423382347881693832964459627667112150542342818435045925001281775273776248767467942254168377861215890905306803141334681555865388816452154896097687147479460055009711552068025186018445183604061921226907475721933858956010832762901383940254096281597230972793238188844106725551875974304208031215235477956247317945570164633151876765104648228897909541430319396299405235776567448378915345711086468000351990353203211601404623824916820748763878950496901935388971934985027497368758993397732545666447579776738842475992321706185090337559231315672604617642040951537310069276360976518260954172277962757026515950525375852113589845245616639377592220806143235498761769019859258323207599648454199847157800525007018868681450118636726113088277018433865510527629729120437922881623292612901862104671170513361787394364991452083608404261275812454410578416841316281497722780776917558355011732554037366489582964415048621960776337171725979831316166188330989236516139599988327279039779585329111713179962410999625717608033187289533621235097230617603437105544536629750233869154770731670809879031453819239474841955812109776733518204086537028707730319455220826521246974309929298132141316311446809666080245198058875757318985283189413565531241669464225647837511652455147828795542631650009202710880369656313795337600448131028027061238607648224978725809458848956320068359489678857616973761839808144712433382202739716450118802800438680379864970792861515820859984103282253803060529135496948484605697062053141134391197125479117341373673291685758600194076299346438736041702886831256618868019621638385196366422646521638492080265059492858521522398690005071758625126194349008694406170255248916754029900210755859058838799117070683451228576340109709373855446310316822009151587546407550212283445652643777672772032575155748351706533724876732860948062427045010087852844527854421309590870432077421252414366504569692230872750059797903009404228014526970972017884944172817846627531174001128927942068825667555201037055659941499435119136973561123144094625401491593854713824989911752534068746931477027998933193847015776917940217377443732664726509596855843085578733344323309223693780064422327767409174525788985935742845487452887670639723897910761579957218981528075070464710688637860105038650606496083201435809309510604747130127242067015044306408518715730768214771689648217373733060484370885869828436778889629714121308086318925823264803020733661356851262114886040381174020009021387576368686340547746312817055001668496646051297189919680871892983838870719855987906606661820080221618045793509347845545712490232803754069331664409481160106298956287326246970520623069022567941555691335420580173799810558327515610627345073281370228805659245060060062322601593351518570032469872364153403603470083682877951669943235267611626911265141650661975437477704481754971226934435468700425029294219648797337319489899532225073984319411315863263321151525803118406215760984406546904773637865797452129926223636646776250050671284276077513319499444777341535613134397485949130369917955962662165317295428168736760148217631788816667369757713749063806313020040690601917490724291932288238071809778662312857911178953713602734208766328107037130712507367033866545551038170390708614645289997147991856199593934838547912817534703388689200772996166727047373008005050810188111050325164535077293460815741187375208591442647074504054214287185574960562990687956632634831058010098591059227059187391772500299120295498178844061886341976642034939643725735406436496719655608673581233259152052666460146515737758211576860932740336455459321902843141870312257995895854959414771815488395499693636776840184270446246434916654558668497102767707334395525478424291628850814782686582054834142812767795862396272921979941897692047139500029343797427979928762876453147701716721622703253540042540735693793737962116599750397012528611415382909395497003564792871799006077531269759192963324846945161347288276463156027227513124779549150998094710945813517436076151415801710142229825685817536837865385688300061319131480797655303527523919140026658015609116893861631809413274143564871469332270136272059524368007727742711888324765818541482645178928003883763522844213327753815596134782422782681217931465205665851354800965088800616599026389697267464767450259024901668780924682315124981404042579139989811818703974117035239172056137784271107449031277486999413602650860582254557184929906604298381301491542837935969415343165471834966792907773652245966636295333282951659618717266815340745881362939955804146004551619489310361029635107856683548285819317552686830909763686834204366791639735491280137724566260643145228042885046514147228309320927338810269533251898051348925589677212580021688731300812014664261822541700341111163340348875277270889205987175203066198886843993173250256802473647856003167628501796928571495132994071590065750921874283537794850113025413224653958225100481239565634532074738968938128389614396668945201428572963148667466621872162207020311782338335947121241638565607405574976883819959311291307293807425959851152670106797407825992400596742521458342329839525917796320929074745494634829982447385119639022026261853895958550853696684392154809749634721112730955215891119735485365511078271994638027690280655941274607971346022734799452736818995864300075114876721956759876067491830987306112342738695655147260796880030157056622523953371163522369537453786860173385921063622316877619638726756389567398161643850274895085875678924217357639870794633971512926504518125815669471654555842633863757133909046024618240432731216602272551925989831895979229768223874567380206546192729428344672404060645905526315360208960840376012630512701025597416635683518966965779729923417962662663725393624136938599386009996967179117952463611348381443275102488984368170708704774989158720273148176106970245963044979914799663954659383662056315872872324598531063077065963517296427005862354552798040013049333148360044166378407064835838526184252746251498909031620617489056892111812482880427670236558309766623532902897502774178873959406374383425656622751218291376214560873651745685037467068027850995709011033570329415780293575229057042174652256394108099904421542979612992309535206264585311678056670237838557449132123407599562164470217601615536843582144410066210956845195674998468361250720488388280570647225376351902074549699686759962309263163454529515844488782580949696581678913317365961573584838905012277203462356684425040052420769985562808488437450757155931599020060659298285739014554101600096818088317481700806422235976722086478645532739931226596165814508668612500326517196120379732763717319030126676329714772747719745815766032257514702787837107366958324658383505028019642158006365708301403925597331285809144378717284044027814672350713519507936966845089723413635015133987640514953245306857607426163425618581622956987952975234204002560131483303107931113277935526428471900769103530445850703239840737458503834967369608147916664995190009540994765869512377420808793955070060219684750615737421411383300429203307535315478345764296887158366877895119239649184140967631787912595160366751790167567170308757285635995643594402051642178488345113915503149062765956475113952698764747384064140991103083568220382093875881001823444690748181055629644659465460542658545076936929706060457492648675154734813918913958245233410060157719206817284104831146613264010691230692108838788955742780622648664275589706514424893292768102814643563876062628079016685710641649443186183134517596362586357560402846366905793825525187535796489163446880382694795029545118721319699400737829469005687037034756013631258902663223515431261971606823082307326282568501267580136791130015581227734078355665361392219822578686886542037521051408483186021956165081492202031706280903930838040669814149266490907766368564696644677021209576964283392133503173182617698361362323058169783130072036218916393567450801456401340769597821428602092877380532647258073328553275847884163216420873491005059975089613823976114605773485332873002109919496485780234628815010863996864920787445219375720436379740706806050581691690721096619349055549229592426334756355536627256412620953591843020048319621017948734423681376276036670630054393902117650356593724784642614838113353409808420822700528323315117654872240008604349436693751287904782313535368450563908158127180565779384148722667287571779669346314845295560533691986254338736699411006664110086646808416591138577245228556978589764930328685304653075001013971068670750425524059975572723931789702544918359097266537864019468079389605759738278878201051602320659714581948460519084522885361473325828745222518590716128911922518119958621596771882398702828161290199770899295754408626500469787659104270034807705129938523589510337347727497955762622006564858894246438274907442926471336833001629188883253960569376690264068921301100207725357607865131572989209374715745722691463210750018560711763338251477454228677665602407564141373954927972094092223818267827505142748542228466905824367481021036996779904745680441136284337593787186634365978807140795225962581289686645703377595218195639160785967355597473264038217723169113520296744054196329522518296369128078659984942440955228567511471128333769771544967172760352821219720669710804049627036124033734491624455644836092910199275094508432779727804729826565963166720035990327752500132730801939343597683158624091358978723441261653083962314792780453335364888144302213539508460011769793734068237714323296436292866978254694209142497465394614449824677579690286573732289488357340257784872167382864404813202049814527616429356329917287598416430761657762179422076564885626003144513265783877755755938302448026124113404318480822922786078736067393932777448174259462664484057946892828637763334639326318736402066711161818790353706636764905425788401563161494418353467798529147030391383342951056376247465829356027969739041869479887359731332819188875190289471815204944896987448861832831001766756857888829524365803552629632665129878831200484248659822360049816202631982784144177158046144463015599070280165124059530566588350707999637114658796075818978366813193258504981679965498075809040565020186350414090080973510872714577763147839470014760406434132214894671400279067955163437615788195308938796340832834554359596642336608832696388686953624477295922946532926395626506075001266531743376688162560179476772992731746106727074294443170180501308389790716231019631480037595271953477345265552685763535403807574029868890900698317476709276595915677127627789899584847796002576717079660595266979090532403991071806839065929195756943388752706548945045810076474140959133199505365191102242275211342361907005711671905538815467503843453251898750316133251588078793386641757726119789247012404835324602745462818657178761847521016555420470882144900136974555227036296173766463417117870314642820850933374234193043503151241681051676293030988014392713376016320333960420941716812462116076908104391441371567500246803046414161103103691753431604995180219873584780118725692277982739268164714571683098633589171319798084685030393191710531051273943262938780839610037438450758273971741594463796057769314856223497934348736450773369146617055567155646904907125530485918263079545883576820897432815457606195246057084066944664735115017224363304750035983421014896337285047396503407588851407251849105346955851480606446043323794636784227077189148532936719829001738148332276920798651139507775653197508850337004807399130541996314215985290634323632398880424979810270471310806192559536334162449426681000372834097571635795850119098757082900538475973067238650263621779342702359372037141454203947225476187558820766059369972217140790004537351833492053238435304266357870632138142340920456061818382340852260548870991961630362951497261148904346491538471184737291279215745023969128712977579852042951440547303540068444704340805444029191195082463912140794610093856505734525342912709449129353091595521336209948759660124578790045054623704340345993326223292841329774023341594467770866846602240170766349927530366623179402408356158491845121285777088074140920033090108342268507284071845445231106839311522932825662352587495097570045813345146113841812472621152632738725533095564299995633940393704814904231976160858381237466131057797713473971224151651096184099960832587840576827598771539230298388474506342978985229042735246331248903651971187689583819053324263078741415269288187596043482673080389121549948877736303747083819337434004939625759124135520120992656772868083445953990566160189014494812370838449721439420501573208104288418296184514824909188266868109970870304792367958706370167180022923194835249989438746877403145321908073917996930546406898352748799401351802466908419313812306145784553563784832450377886710682645090950061239153344288366198504386667407959612180304531799900511188189285697031806828091338288136990352980022977518485244284649483331059550853658171532129467653015510818795679080804341352894121541166738727907283826008566565252962689580257341876781663484565650058931136858447100977933035702189597685950131703569808467698460136977585230264635173167247382521337687020267960107496439499674020946291394397713368872914797603745602544833115266009037418245641580954947848422590521607492381487566286183762367670226094621462639067187784397201281361999984844334464772264146481199166938737376122085049556885445048016292512043563350293377968361636057029049318323422055582884497581548909135090234173717226655926070199605765713440727234048073036461639807973944612609886340033556585513850393875545971941667497982950405606559571650900180809275763110309958653778996140102258429511026112284780603140248930681615206955908449778657041412667789804875665353250366761899295747238027138300406263368460050416432718122196005234041010691276757897397095897902700713702015706326210517312514659208172477857920254397401205257021234987163411984972513484569359566280183682571282652292961285672313255555093303438302620407316053573207401276336338145469702382669561789328060915205363508051893636299831692129213053383857723835309130942315719074951170997531748508683105547971236859601872726989489201027754084285535585477195220316592167322228925644151944989085442370156614027150591271492237064344351807720298074981650657678637881062090434062657973919237971792921630867889561565768356695158848527322478703405437551539702448605307042254730928226004460220833324103253180819335238683931654234606263029679830501715209557049000973176314178180543657466995841358125773222540483291769808887730837291780060642025837162183921778851887602666259902939392479887975875730478295675842995248716726517331838284671491168413740923644497263306714100807725000821162267000905133940106199271330933192833986685363800309843127869257752189255654531347398622418801985158731539877194691730033722358605914547441728479462692875785316118373464695528919237454464023056379344200105072765875245663607539419579211383680567207388374533050740428668273633886567579828394033304616430773780750625593065570523250987883079238590739562514606020426218332721789932791912015331431546240338936406289180736804432568215595441882097060207598901341149362281408251017937032941850686858578351433858552648719885413832945297962021536913921027520419681523948113588394674484857659533919424390545094967770719614050274379872321737209913858347702963110838702545853247133519766571477671693145277739746563742584434804968526724736769608078207287120138557402067197487367145022860665422947640183835709856564201221576200054643377058541264337617790763496791786283647787012911281365480026236461042698098872256792465361153646035769480849736010418462907190736363747038324377648333305509597539420402315726429399370181745513693595996624372825257613985398664072212639842744808825186277778646643661467971452039293370834856197837043549426330515992571661545362569766738185775150196002178836357509081570344321301978682118684867633355252184512937098686312464003092143767810638575547997555674896061747071426037457722214871906517519795222770544148567162002022854849516581501037629422048969962094760762977010218834803218484362028281887007082755923333750819600667780078869887435154812001137455702042625633930606561979162631752427702733405858921510988960168431656885953278858404045006972978638858440975916832871974563416431808588333275280245266398381972329666611095790868616754232347457674612679017301673473657266923667998671916461773809533037651331181194071836807976305282352014673104307895385109269238209759029399021704998598491685579627721633187069116145085006255223580151035299760086756858614766850550064130664145397672621629217929480321092130172136781280658281092723263374424638954540164711100434452650195595930621743547562067187021800771745858134402568299023050981334306731221096506437532603555080692760815688880199599605122986822170715610134663466355473570241489106051469164731520562437906603301933769471425828103793782550854569976537022456731207096911488240653402296410572586938407927972724389746419952603662469802221095023998050340240812702704051478163230784794791684598883599679988643496566509825787013048394674401142648093781946799406080999523665424759910969325522589260976330983952650045355539865297473921030440632305354771757083926170240652943252813269563264914247653278894515216563435582716252761176375168777650687603635271597252981510612814594046190906722529715173223107872931338495015100710203460611851308984730856704316660171256546726163547048355068388759024997154362512795711621656919133699687911398916892404048599252541651272511109342952128102343019858690225110202294046855075844605608176389134480534324347065702810602107208320354749792382972445746061768063149063047716548943038787191295981810988388521259044812217702125114135094197958360297199040832834137875806794550679341824656822258705943047801823585546085174894295680735037949736445727668305320696691281560286956364975720254679385870562613775643718040767191181545637909512582638430092902901802672205073146726744561015561480627594529937473221036693267054739784109834614125418113391508232093517955889583949380881713618644343460896152465701702638000067269449013794475749208954770949257495666573984689582452870581121224024977346041100934251350219692769952003464496010507094150691403180786286788569918365830188610119047611549094900917546311422804180617407722400088419353016473922025226028842379137963608014692911732554116430346320485704372325265543629177451102722099926389908420647559592403933403852730838562090859334667532433538693039343642030998635887763369213905121374352822128939114268960489059719605157085809115865917248770439792571784209916859462794116499502014735766362025837370013398860631475784303421703113278674102722322448054505877506650790179207139574148503242836358664964676315841200661583378439063129385996461771187550325617915288479566780114588664852677723505249117176557515285592545770605882835936944485116404100069940098721659453245418321351168435802017386961063590645726927874391518410485471488879393855225124393649252436918235017182698239557666585716124365961578185779434752015843111277996863649730198941752942107416331663947803374087868787085038911527769320654330989051076237657635357186819259133057677089725792717875740413288786922473238485747830511580659835382726880112551959041327878982968789707874193314025455818728881214149811067485085020716301457776988445635255724798281892681135412579315223072226985651276934277874191224434765629487173524232542812726883890622690610683110391323931621860298304554229886713197015079963125682445828142292616864819621707284055565494726304969868235546278742871662655067258071842498724274022677520985247326580937778654051658988011968705836243123894441242207178302015263754044860125933640130010161495914685260063314800032598048100204780226290590437062328592329015978078673148685995156082134251504329551506721171257419992654420663871183654597506263600844579494659376014446304319776153302878566629855680849114506189844034781205560172583195403750086616169456485759533539512625088370710812224660213420175431057989547541519622975379691221495284893053706000837660929325880580871036139734930575803349887033244708334062325918939241910635434935660358995144253868418539107033747592479702288382348045389869347576247464241970515739289446509597269731565294408167826251952190648641665422013626221494955596616290188465694983553575229027713862305843863485799046881967309790113085586329882449478910445207885563308419762425021919015948260573520430774969823017113658113128279052979847337154806106395229471083073750401419572807035034625105165191976726976222024406837041842420316510311247004181448447082380689217873487922651365796604404158985261727810676640857378909933497927389983513013712236258506187494651060862576439178093580156678198495895743563194147572567381851274444784982449824032353427467135321618361024584152957926283981466556190609370367501184483250410006261899125710427085703453552806764502443081771026724676751455557456220535209811443525294521407120267119788442016442805905920722934824350629779177956513866587255177489178726887979819006467079911100074062777132908790306179969395490060456737640380468008385711134907237212125400823707484835897733358621401155798660568109229369046125051560700335248849562372953853479997992937025028506781027488195373655379970614453220589484351978952850906719842902158293560610873076670295620180133510034511817051573395533672510065759268807063201519808244174243878942392231634900335304862783319051766258244852888200433280185021047520391901298668743997707900944736239526856905073833590881959304344508259605084792636437509911934398548441349921587475986985614257207521637737664989576086734225465157516404563299715822533212858778137947069214781813933787189605236979834137993030512753263401117590197827681587204837458188467350193188687982891023208037371089706029153237196804562837082004004918192877197262319567498371200751686705517342709478691368572812587130582916179429700653865817632226490474693521044562871940124987035578171768063903154778434031084883123862683124751822678853487218689557139433671870040010430509755246977992233422349967480008361362018961822173577446334496544280448468881020013448924492816162414633832534237348288320873994220516808125361630887518616200935519184522195951358777771352090649358904325422648883102237922534643193786362573439225551374564404501696204787058595588934298375949638906097684527480221425269861374255868143999455900113060032829295215483711351546689088346941726589229413572807506889671301449473711192966922076307243045878139861087053658159440715904978072985088590224161642627187537690146828609525816831931492871419652717980947821602911220160615923360173631805682042925451608216566940816167577268068518778272627095421895618179256364991087074544727154896107829242681796029524620427533659997166695498739231395620297550250556034038913426567809125928353912743279752175828794610995600771427572355935033147346573086623936660700783818289637683430424892309568686445844145763218762194972672830578129733607560599281930065212301966328296989927908275057929451398914965367193698972817828061273779744716216112226592947926292726910825623259802512194925481713432000984203333777926616033753947745918213490496796985593708441628431445208724477569391530523925389961807627945658414228933829993020653560522888743656202614737392123643513747641490629439125492083549432259629404649819200833186718921332491231610561140897529525880409995810057800516340479259799493528435531932270700887089844622551889476896907363200511065920677222118524823295142552182032514372098158337384195018665368566187614249211488716396674449124588873360845251630621635341076991920016091591104365201038727410124050736805050510297385148918561995577766452332889943744665514157645918153819545153227807996260904226750821723146358005629150246559368645504167977006491613943928640858088427110005401760046138792285255912258155669607865688269550720284810549998932634989543918731449330517863432572708522051175001249524405854810917207073537088197996418735124641883837251229617144461374587214861370131326483079502512914622386762242656243785825459849784714028785501505773473225044741753344124728651337791603189667658121113350913240917734749693682636513246075556108486561028545537451742028336663240345486304826741429981469081600707125558085974587745149155061100853578831348539785043949085887366700046671143170883866115614150086116576827990622537398716274206826342024285456488854954681251345001961611872795480510730134364490104051440653597188017215914917019965044486648391446143902778506256491023840979702399211927848763070070708995308538896158775444031587121759087073453078431708378879011260989913319510713261532342889048895751869971722100743861466687630020629175538602427673742412031887943323162860998905791511510337561796788609290390693065730320215302251637278250177082772861051590145007715685392167405654840803947023581447117719142089936878378600642984092830714759361928223728382464039972179994466741525974508428525155091174683406382843045681302732854629634772158205990086859467803844608771041994685814294991327078523575610161934527993765276410500480862007024619127897479365421422515454925488079648591571271849518411187528118604307339209028010457131920408139195241332090075533724256709750423592838286272004561738130208601247634986198717188687957031092575069980082043685282703747373034579653883820903310765662736549503652083590951994033688418505128853938879264407120645029899409981763511328414824751570158814687198611527028381019832238559021770196264923168531359028146486995789385863253733611336627471809152198394066669442054098472715631469340311534163615188631412842371051860077330992130602242871588200968687026593037000382227446143502514045298367197167650925068960722265096563913155056692745764139026907273281145310085494064371387094248231269870060227011595792575630205585306642713943119762762293380860892694279556690728487665355569127792569834254409092187860700208136300095118245649855196378317409880164359538488857868999459770697626326276311333548302042494758290086445873890521403784409444368640209629660170543441642081670587600984520995944932084098627014345695553853041469794197177812732723240091749124786374465712293214270774541349049975282043115529775921493889776551624235639228772233226601439460406891256783691443171557596937464745606883267824931232843967484560530359165144977198016373938196786818140572243984011115262937925653683262564500490809714314768857505328462849175826642927863581328741145862082774943447090301964481717215807830832625145530768370499165832911089909480398490671214489827001369071410223714381198291152551748780597354629379307324142266707086641332214798289250811359994472377347691753578684712562361928694768583157765572726016124638267644359374094744535403322369602717339522819744784501126505217306540516491827944172296097136436518753494420125677860809323350467787689573266318186325921742970590925311197624931156039220249696011007491508077035554589077547021282127116471066263074710939386495351343918398103841713108361609347081135141977873784273365686347719374356261054023387048767801573524851351789168857895742221885278520088674490786465444742470252210900062704618909206267083039820624494066674897256678126596042413072952762118699515766116853187858256161587903994622097868240511525660359253116337609063639174062394281436160302192468104153272874212937273162308828286217492393186336593567787968773597601167547526907751319163042524811557593318859378311413534327931371580335727358140833915327019880593255810020899428787016430427848735252250263049208255504050199849319712438242492237911248518781992696272124839382166726881251680801847489447033465588923857068490735866116534421016504272339482472145572941113854486306179225217269475262841032248316919983541008276145273757241720315138708437418445438039634064039733885533936937920890032848954433003671646314716245948983483954715322069826171549506697970724335076696733374680138435057884703567119878484467730516038983560159803726434393930009237597735761132083292042364450730594158451644583694855860858902833422257738740961439501874581270496509470395472490391166391294722820546168789798035783016191981704901527189737517987470130699225468876571062569563844097376201371859186509857464003984435892370821385712378983571761343917555324674215584237363889160237023340504469026760095191594784545783713401537209310846433991503165992030914112601936616971070256316922741051723215270898832162650180979617610989663461795842382779191996842372948812306303763188933192996912682746813290644151431196175278307100967224391086366741301139466719589750276468281883234093799537744990150144618717502470155973133946344901991831112713025388915108707867722987905970817224078107358715264633497371011343461870986860912801143692415380613250797458646980844953854653571116251972794016414644287761729262874949310862485431821219092147824777618341388538877415784865941861387835772276125952523941114920725977549392736482122439349775570376813068302065821373997020431839172402816787549884931900595226931379529583792605043342674280477005952590864843847887543746153704083462826595008233394382303464401213709255363137293116483132264703286379749666554455171477490149915779643104738907411354666444667012428134126611267657901010557935015837171343640031734182663064423869717621341206620295750640309800850059657749402494515908403652118187722720185397735641423254582187317413765721348998350863808108370077610454277583681540240186771370572234611570159479020837506371002154337713817825558000854944456647303651248450501965299089038542391648721752952250187340118277775255511702064081584904065059960998159609906014212714986335186664917534996280175350422662529363390741605407472016127933982028851876747351492039649319470973637414461902977502384635531348361826162582269561283417636567551096158460957342815368570594729916499456289245436754749470258111281553398013366696286739904558981809184347197829074449956227819046727927924269151153241116574517115810064727206660723838757619256807820785103625519046182757398425275654154572960910078663272311040474693726982500368689636712854868173052957761960626133878383364105982575676045966727987088019767821987967752356761201642931612280063089407178089338390326461237395361917394254090907819560776138399301996719102459041967073510342208325466374173045132725610479931765648695955727412571342846870603925717595009450112684891031702674415003077032122652933267257866657335156753172237340732728367535658983027901030554105165109478200586414421240825288665434323307798482013948003958016162103521824195756262444681501879849721221679924022925174173276321356958021773656432604371023115070122004457329893448124211414536237092675049687039375337432499594801341665590469999036481177617539060974389174205428542929018038523065641034158170195832298666942789959113790571367585725357216137416370514904021552066850441801820854623133003366769466377812701578124020332763167820889892017287681283080934078577745051740466060125279886513949463846918268287027825215483738795652218047378715755357530631590890137767309110089800751762990806913371288614676303637570161470476899583948959805399072511828238535402569584840582651349138008660572614042192401007059749445705586171595602298225921896766592920860000680672191032208602083976436001066032140632424970490144053868792388679054644587158041548396948155097502067081169400994360855350030397537914031195446620916845353603248523687973480202545585753534430293325200140412624425359916134668849357808416000910115743627383536694220752741772647871332388684806815411485812947902307227669940619409203966472689034085073418824812695667633438867918856851310089571728098254814312035143240218383201072593201300404963044141364271989598908457909640820955589247814035971133516404798286636332111853458242483028584339507249323535097010591878742964388728543160946551809573259084102852568327451254544577813847423707305673887405718324338377898446272446608305692999256815422735730333322020234669281679043250186651068783044405272983402612575409870936217749201661566167229211864160284898667194696629937356623532500234631363575446002414386532205539427114351465979346533006348248954598548900448636354813442427156219701488229682183709087335614045536621843358778069430191812387957107541786128038771188407717916625367860094164438633264148551194244739738781059044073026935591489911645626973662566025338696862741678227705895951077802302742222934784900235033788395899946244779813410431179191206779988740710056979992468449057225677636283868122738830738323590626409338023384363051058326280552794874002958835474949285677226945850958309410178409088346335959700745813620331834448344344722194400931480693564338932960445880854665080835820804282679189381569083844894270690031770243318639702773565478477681336326234840378196761678449711622172619312606996124664481135629964912798830918611680142596645870962197885199526115196708858155289009289733935290725064044737340036851032142633165248643177537876601594913291050154720221095351355017049746316674711213829461529292133326101033126393745577693795990300013527403590728101498887381234603132535057973301013039798600604817917558420943198276807384515893765747082741141478377738208725526394752886095360717705740506776201161258802734938395332853288487044326566111884020162098799868208530962516219427386388341170027343255622323855926124997230025798793474532073505489730129487251134324235103791811700632721289937213045283368309054815041503619142768228449438431434297728788800320519112180504258862394159528903476852552171610551966233753328054373470162242709903065985093590314042980294762114219608688077711858144635498589917807505895489019869433770683518160769119828604641509629258181730296622284537360662537867220819975563756248624295189915265279211614635437026758528851626846907798845711126404989156527171637057928831032052483420423700275793846744441801439789066698064169546838268869960172615094823204374725052966012788436848540795031211590584806751933467760794732219242932839741903242322087124707454032230486991850029913972445633175246651004466172230725064857827438623176156153007659918022884572739714946831947805588386661243745936909950941835335727387674942672427185073538362039833361365099910525808287150940692853770977560366578233141017056006456805966581543795897815343095702108247734264693910311870300594630848883914846644736285669238290689928040842953275481279430895517157683471496176400289987183905052210925549945941841539906059905927869865190817073102535431634813423708210433842044615950030930225385132005021772562229538001435590714197214212021630730775543321881734078981743120723754038431055352119338276465032030628192423806053642452958258705930397685036668050190121902042255815496861653577753797994107419939476834091615732922163926737960840113790178349170370754421473380117510167229427663324041674742880658454231394279255387565339089787987965192819543238652586218241043477150116109673066455004750052433824619363307716909068065541561757712762544001616623407972379620207110883057897830860992519009650284499675005200652005353089337894774698936481458233351424778924069085539434876929061117438504338752937224050243204843833162356015758189538852371391385757276945352213501197694366342860924810775319879325509211702841826589518082337536130344684888406632480085560632724145843275465091869209114767473383076598227213160041559393270000518854979308529725280682395268552074431853723478756414058726162121601611365748306799217539064845132136504420592325850540579286436274590508935137377450099014918676982610538299627364106112110448706117775528053011489845751994655595742949105870883547976603617908656949371942431189445999386683568248026147058065113679200139984935138554088566128932187552168388881829249293583387644879398038784788810613796606918354099295413851156520998699848574901629961297286098007172241447721767953498146188499571277055677016276690454509723279653231554765779508187798431847969697950957748490312342130867948539698690394327226040672470200623509833246949897391254537252493165667862714200724497013991962569895204052426824244703375911437836977734388550501921572146349313522104590851507207489612132968026431429693406267721063189711928299142718031082601663399054046472331519131967489845738321877645942054434186598641659609761299244156422278085122303997855393006013154981233385809317626975609391511255140896645446425386534752254103030279798344030513796589064993079299355360412040135567351190601016118824814446945958727035909067847771622115009643564261623697967270766069615188673700792178167019253370189766332836117839469707315848502739663196881350723107631935812074173792494557152032102228729589271300290642676832387997040153624951489384011569003947959454925562946918896648101319748325979040762294565492024477984138138364015917736249095110045943652854825788159240061353644489667564021763901769849351156778113626971576244728768939406598886968031130409519683283922568732925840778041022447434446771908920470076281821704742369596605214887171416235452931575861306700344764784644286221483150600539992047626769958163816066514029668696389981506399349743193712311151162998803650073342740472904148186894458252443146437582641371221135743025334747458946945633968069558904483018653379985262140470977575645791590805066475365076295057173303008351584642379194615173249009119185411496184820271268899546815313856603496337748002182285551151544042550275868578090247349278520987889474476612756142946527303414255989448813549177105380301000483207238486265412635545868811881987726617455113023939949356510990669120914373278882955041566597365761264789086560645422142445535437582508918730932734196332383396200467476746668262229258655961622140924716102888779359590719849757087489866241878411553197640693960491436657679326452282298963709667459640429187062111123036604508542579173055555926483913099646119717459915789763559117594724498579474276077230229929731599034557732599965793605439226052884257214371948525047232584369569744925871097933388536054997194289303571228195948421467882500552012882243067025455823246334026395180456274054974517264721382091771854629998274053096670612954484417848653803090066511436276259615916960271004944893873005222088689165864451340032493183315447199785299694877521135044775178743662570476155319114874996216649684285325280734710847726185028020486209399201050028799134617523762839793326262896838394813926853192289790886653522293693073088403527969225816566335687155486963252145227912159577615590571934230144533643939580787270200751986854489548131792024022780392494573884768795025977974574042332120407659661492740935342393404413075358442531487920447261958498581945111780741280286041697733681799174559632687383939705790000064461655202420332492999090415816669644548643993520518503739418037349510581639304974942147750986652331135024345571138433193371219495205936706986344918495005016556730695104320009658579193367053305609928630312185351961060637057270582777595168497141398361132220280377057609437734104914365826997388320303889670473013724138863059278344437082827432519058835496852613039912748555150491797528196014203977034987702416683881290978612019454134702729495830548516721655095578536200605995398581230309844325090308245156269210774262120330926314731998884847241530648401030447316573880209245990202569564652321617235412737424613718271064608036634053277544767247488649393712934866527822515897821612152027148321009614384434599339388609093271716748397159781620861321142116895249907026132998594422594822255691914151467577882329916015067108861901457379126672161760419550846130031480319653149902666612981318972574526342847912994665803242269318054270269581665188910274608721077338113280964293093378987831067209644400261526520223927547511426509156060519716280035870554052807193963844252958555275345218637626910157400502066288576589828198891223435389623942831135779143130372299791643087274925135177519577789304432280989470373631861147916012278384767516891791828230836457763890863541420813711020780793675419229182514225446167863847118387904304351456487512861703393480357332840589491717866597577052375578006427116772252827917504958271131387446487548197253053560992671386659648319977279626605948491506160532919517970694605936942783775555809191211955561976197711801714849624764545681701416978787573258445233718572923816475009335067127559113402689138481490888751041270099207368287433696314900565186720914039503244350831680075301046767170385993584815795091765567721928928055544447664325077386696981216769400468599407744854780427939202619703872919136382792211026264232183871062677283048175352623448534509722471141665952193464447705431323511663479867881043470921330872259983119648150252166972112543579323001224808975678860161606162597194336805978300308159748484246563633284655323513389203497141641854054534963300151056754292530306208443504780328678673931908580788472707168782181429853302036549058388328329651697146125754386278962217187065846785687417489696402204599011642801712778828014416785986156216120503075232097093030320244573015179599260231622588078605976248587418747972534031284804105496266073115297852059609058127133566288344230824837674664105080477697018267143731722247961447663002998663181861149708563452231698003978484563282277364905977860274936460215770503829622966361629606002870057953404710559276075468845256624556782607300392127761070797071982996732526696078377262748261765206708101621141268237953331773715631812645930691049523872487296772002995696613305206256542434031661525550111522562994133077087722663425057890305747791561020632507200933560963014534982097248973405825894951931058852339776447118876760772630810087117360993526547672246016005332828739168638022280180949933160142268225699460592639517022801561410059238329214656525844019103992513271155943725877422547198614979947989949904220910090172306069646167468144348486555790571259408033461978328889419389507590048969244522157969180386639317509611730428200683012062906880751426685193680575708383031625082541659428935293444555465940285614085635036228099322710934405278825057471923461394938981024907888170918169804535021461509491033795763688500888520647290569646422333194096551225346760520736197052496708473136075806743583736419901932549593601284931370593781012479247066528079742554778021211617015497328893655043624046869450921318940349017082642118568585936320849130008146606188724869344671317457079595987572169536720117174009614529600945610664548604333190402398333421497046580846170348475073775886131857593435509019054982621089885012539870112185347758674932069176240052792832433779944803617322071776025293582904241063121720980168576074548673949981784769988691663229856048350713405345586253420371038927605631944526981751968941159008831414664373488966044653066955301833041717389468100740943573870358219117034140082713246913305278108409663313518321836288153250646407095831098568875841392705339760800829574695785316547761879325767886306950823449058697325067644982372107493223218679064419725244671888060792201826708783615044299986072397932345501493817207043200247279966276634494476044451664052045243384886909955886359872999014465996097941627387886191347922568271999966605172167395564694819249154329719434751262690272705572751054525704149268368848977973456609120200506622425474972058038106541988728951239400337013348182073561716405792998466294764249775607975378310105781448767576524194888043207828555093480667881814904219336274118090372688204163732918738406158693980174070728910665020472731997539054191450737470446671916398429722649627003672212576373915530655089549524802042393614479268982235986735481155417019406541215905684326987111992383222952687163430706318281730097322081000503973449875275311427503552853545897219914349338845186459558438058546121186376116493853547796281037799749032636232140715257629597725396741635726158000865994477029685937789489257437176295090886037017932546944138399132378365008698724721281766492408359449022207759959090771302482861535201577359751713116105008051475450648011295988521309784406522153468814096380064700979508505715342755802894778720696242085947183903868736568474204914981938649763345921319934573214248485392632670672127572324502370281448563578554671942368629716124405931807775767895031310690288971591782712846251824856354303541051057146958525166453759028768277153490643369487793099839532884372381284038260286743525156775038769392514234079048008773110764034836480951447498653001361319169808641841878789149132933386353895629849469042566040150248909011041466998356592004536899555342641432755767183729954548623616118806227069247186951619050373315405684998865814116063329670927157216073318233212344014827225461526345497194710216160103919510166782387176852459520741957777954567392399204693912693603360291792938210737052218254177363188229399833635010111349673036824433035767994691692442573350055226100356271040639403666655044450595067876902922797631904339012050072518247637604955307219127714030400818479313102173723286751309830143648185454153907190425037414546696845252595051251441542683921248713041495218918311881539152493515694885650549839457411829328071180629982567388604114088912141288816162708344358097271438500810659001875289581835115803775882407550969137248817446516433204216752644957045855454556460491214285509366053663931593470003008602565843690939818694108597062605926705637657751621548396863077832647887928586352542965753786121171511657496035714481178371739123286156045551501262463425539897284195411396881727960352092155143476290159788817796095304750618542295773807126364383144161790146867335068753090851451211661189342874606951548968576452078273466926024686853848280688508767624100939216724440384588456747760146251196309496488008680429983630301517306799521966259779749225510536633491969431090528585344027400859238762031587888735429128791609123274981702003795246741276888937618230422221539487494532726855899846387175735238158259623049447124212787930984402690258861197585691536796574166560080442095945777126297290343197935250418619058546265045091710286739898076254113031420276703201306659212438219460593367047635076515143305324011415556748507409553925996182030386229980990225408163958125193773540288829379687746077538349274541849011162239013402142688469907282429988048781835985799676176201869500636576452373208461768636777528309686918946385571467652184738871741184628250809186463424740139195721300815540476893487104545240278211356138394029255838935153922255041838087819185748605528303461443305272090585419701461396003867805293162568137023761781195956723714833379127547555191152493234216795535166242516654959507842468757294721724114803345782515596381427831607177995382241165740809495459202153727631162493250763414835885284266758679568612152818559850835595342569103799065390911448240857442317456376664011188598004253536593144124002708713840374464557853010433487752768396085564843551213331522646902018560501025636467297376950078248789391215058479092164848495479587689831827848319908683386022933361191874315275190338238266512418103710610878129849190577475780509261963364996779126404756137856223710325183673789361521013455071657068043287670412975742486549461333543544124435665764999319302257980517464410410864520618126477697798974095319343965597542078869885286180779076270621541634263679068819856326439985668089699482978696790632175425749848080099966992620686559201624446821407843824428089401859071260156867328573706626043633816861496686607315469149975095696741579530565752823597826686271413875945851613277077873452574068203911808427352240322386474839953238335883134980519764291223246113811500607583721815498263509669863652837722617564399165127495048066013324820264942809413340409390066372086761595335280031825706857857505798379439300266010786308083176475210694711539604064584371027707332089725027130667239926037829450643751710230822842818801769204768777368202331080235873561525922227358972989391871885989497910055119365216285179809516797836403152161189648342220985523099090567499982981517004925045131951440652633482492472895390298408235548402440892199482677990625093029288875702882279873575982670521213937775410560647251307327409472231447080809795628271778920443488759100177807155566244319833897078169767848844436491285424138119026104786527418969792150741911828676757903051282546270350328651689520541357318868919328075735455704704007774942866909384216300531225431288188119485834072031351796266028038160953386402164816964841295367169852741101558469166063726337008400481929265152028220515531114059675021018781749923880766200646991001587848422823132720945109228862018228528071344180091510015747569831090953551239764211259815695672502045830333789997131844130590850439947342699488980710789163912460803193860557836579937505948004320322760484888135789261887850660064331788804355376816411291278460827283568556655868922085915306764399552786391183582816319243478845622240312736054162511178247103740350093232986910292262798563532677961966991989810711684857633122699309551487051968814671943906589738876939714528564599437134439018401524384910418783980718629644850029118172736912727163393377592699753080371310875031149112604449064237119392010892099957452619623640560411033807926415852991658279301391463511633537454096494392823802147753513556611088192943153491963697646055876488058175142465332287577335960296598972148082619599158654079343675741621031695234770906805037675773614447740957760302300696023047528273090342547517198842187996322026605729998091417699119551692173305218381589864130498484075912361023803612437778577375653095682102879670999661091529154605532758267603285623543345005062987140710982003075157377530141034133267677690537412624052849386941402608268280728891640921475178406565833540268164206204065369956414168481757140456570677515648445721998250562328201952865453070215587241482979932150940671992584809887502930739049333088760179344805470584437782570958191852333720533184409661478854420216069932068381278175024465734082346236616994597944782430660990625554065156822694817685835315871584310203711948538332813808390171004441074336587775554486661321991624544106635042487475838225101881308572343509143630527567496700189705670228028495559310391650908401571313979804992337595203156542943303928340901715553958704219068075179548129132545947563463367196156179848563708734506521120530188244112101701560755851156236100738425997589171958352941892677832833105482863931874726589738369032688097014549873384520555615116655420397988128980123642344971961711634100971724117804599915682826235613122535274925202120123000901646343097320194988260573247587392300389242851439026117592122634480265306429351861120967819327860442377946009682794641774055500082734250219415257631028743864822523854091179512112585155278598961625638648507873875682181531098781763361365332198507984383378581630515589437899909920626172937321594410988676795112933105715980581112586342541308069341395363946540035041994570680677715914035061311181547337055394092808124141674909219080793786944112720413429847345908606005286556928125206497980895597249105754090430601273038649570660488344954405011749910969930613069806464423061143932517020501094462095954191965008818693638612043986115775421151770401107353461085233735564181453110273037573400952167260353693495578989564355012568004173066979174020472011695197445460422022797659284330164599113954570511842655073915749084316209915290012050061949768836827699724455940386186227773791891731256057151760553302053170517217553596005043263192919544672367137628999385299097143949652189782133114455850295840865414091472267334058661810682505063151873014566355675225034902210692648927753302217122607032292022441646268597044796907519419070132952720833351724156625954221791195836659347009529209018687064150108805690251097349503519845360653742612985051879978845552140631777669349543112062603408262100544023042305704220515533482627166766097799356351720845333452699611969130389029301298199179916632404098982296571636335600004061248657147172255275954568838515714404570376862414375910427299468771139384250716469010357860951222006366732797103216398417371638855849633241154660482659219524048484353177954461390772289330589901468445123404315373229268102846052706308123231988420168416867428598354948465077679696341995807300146456038313202032559026812583664924469616986794886570143190556808028465720044772493759215763003257364538364012344308578136976709592756474788097048396454176459461635113259102747402129057600868358890180347318474049036202720987085427717443242419940754389922117897502669344545242024073588389989670009214545691990941930500323415138113255595665430326090598420765753891410792661519645976334479937557397552601994993911442826886233961115024294968392592366386657888274288806674473043083976100630059725258690690481998784744524796370458007089214388355395511124381810047071279719912908527902954664510187836041192938313319617757941326581731794198403927114188766665803163831605377792163083678305177564393160463629485236861535042025580503228044436515813603261852831652022159465929805047287295632365868000802489277826615897529402020620069080199306629070564914144398136082946969961696903408880124481797154705398690486919491652128854471166481871970145834386146463823302171521863947405335728704030998400059432816300630551464121691477273270651677309053561761347857794264084518579075591321851209612093720565108852206575473901153912220826548087830362897018745509741298523524954444321234140164310121641064530181640382811990586551395442443676079687169954864436902865020024541585072862531188909670974618782989212705496836734156934962797689146941594413967512491949327066408196982770511709630056595961085245688718140189549063792738629760916061204764811139457264510374109262380615709170039494122679190777920627103793551504599272782734148020306826680637168205852438813741982265076082824659072362241829423931359667606131435652180612814158465833007904765674689510687785977545110002328558971782732242958069512286479167446632363121460572135924941507855909049642154999556200557100869999341870103284090592403237267635356532137165481120935597252963125305285974664362627612948135932637775352621772962037184201048995259035108895580203692124517006373364434528109311807699691754765060020900024474353467609205834658892482845652362648030055699906184564803296899424261261323893089985551499946492005300193733838928094928869282990597516968208348703085729686172839822221867895658701379035113332625698178842873356225047096224288429221977390072256281294436430321349778824688398420855937733379877303950065017145781577979004655035810393671196048254816813564727205981825836056139997387177160667243157303041262316967902617249053701467529736845608767903697559294748417896587906367872414955622785688964312948373886178629036618444802806231068061635086879763586309100798156875028715783548805346963708123889581831159844031505618432345160904314309217828990121449847801556361850816367930753356958631644614552779874714990153087057637852545206561906278483047814272560007917156416705424824963830951858544183551649580516283383109366335656912196304864081044089927942326011109890782662980031922900772996533419541596920718806878430523247324773870185118265972730313449359866650582422808994907028058171708943199954157738589940925515999433484160432764790948178564631576171539231252166157182131242789271346202637720761664504887430159858206233623901437557134549842271989168544853697022293796839515871092673337359247707574875245297185295055479101729526626271918983218532820292270139677080270377777782942145505751919464880469604313233578357772533134520754766024213579893765931643212128288947402002116781891818297516458047645829347386140843482981706549489017587985791342161382591412371274768514629748697547462396540950412673045808782012214088700518929285903875776311850677182320898245399060410197120436561737162767484372227741453856226222338034517793014638241015700618491726216221172025239254407623000007361279799291794516395183427326808699219068819017396074010265987628966866666880940464962145280531382022294549802194583164110081234516499759797244765986035088415085105810156362989244000917333024267516669307600656234424124115840015909065183673819725149416999650159118601890292715806370156912889299367264196184070100762670987074476548345885914408180584370755132272826239360411612183963665502344051160687658239621537186308350970929005240519184654049970502865247521842237724467316308665553458771941920177490589340628082693650426012909089047098777936921150742007552071526001138237116054887760223453974118774950515232040911352116140776101155226695807117876541555386378247203014264061738671639978131700962573984433980922944126864075248470668717568784950811335837297534336108352953707568157443268999804158017311565243548623148211811191849401533688456729696684534638698219726348048816669201443072167049807799574713330496570848747846251891976000263288865165959040497384321586660765359331009650825655544684322092051499783150060724311433652154158112945074329854377798767599108493839508664693433793621617228358581763455031210755757281478407063544965167985352812752609190482297431299889369552927917340356399205402573884312494435345352879253027177605370983561419334150127827946102124059478148941240830825681208120512154139180378381348316042812626825801823885963797116825043419121096520334849566295827688659632357359669730328076850287145021046473611715998036147605424254725870943219554670234496576852769088823893522140200837498804928396381233616331639318125209283703701790456174604277154995608364302563334329277118434781229450333583688889800333957725269846902760143575278129460614641858815292407648326798306181239646285832186496012185221338221180950141092221343555258067835527569039483673952402737015553706778419554773524525091588828120889158828246701963274770736005871610114874428047338066568151183843834904992402759502290220501574909340767937105072036938656121182684194495366874017828162082002902596322710576657910036442229340510674396591139046122406244675757380414573445938103266025259253307703597823023426406276321036399910170812506867107896786710031436331032282606464384332188233823976558095360385776535963034090831420406186194963547716257900592322985152819750097438023242040403281030970502135867674568945782940197135977947910159314513595782498897514224185193955902088047890024989007036408316995019143557420018944941054535419695649038646167227630943430648719215515881317979580402568793177051256172319479897258881222453836278335994501208875270922165610847024199913099871335147219933738670704543578432572740117329206588177067057585745741370164963537175906078297929453965857048705102143027198946096517194186340950848432008430931971546273155518896818453691915066974717401445639442473021201417191390995292595640985281888554600796004276105579714201451911079812648378507891244806004161378367141510182682088885709233997652035933571421157543203847393525005366390523845432524705524137353235047613810117444051341379017617733606162840802198667995850905536637871790606466856273407753114475678567017369925450139880011150617235263814593235801120236567493188112133508756533624081181780866997324649706480787414475288612617615105036629774575010790920077878447032709431358711114173824344743542358429826903254871201741577930667668614040185490284481623100438032950362179787042209505989579642081017127111863756259225737687165560781650670691803769412577841120367736828633964386028454757440123141011925985419990318176285426798593071483527027632191409073693987537519970228135904199690524452287320690229468653032875661151362632071567998325752281002173489195153854253736103149223049499920736656143217926464435853558860218521690911745420277837028613425425855081657578530994887277413164321335936528682828885680034603768842919100632960361527782394762077206987522465487388170056269863833080983207986561552336854600130652884062426355935456576089161270552099812571452830012983608047541382986873991444009153387920728722619736868605896217898007482556904603033984591955748539174257926739425733013842658171571436550310930888618827770116443484243941332079599398537980676149587154988382091616698404751786122339670152085654601397218354118540196294067941837925150034806569692035774447291096916041755958514464987800420637821643121988846516215367484297134358554746550076098682209612302704242870345770402360915173727574487632491217900226146865087832911673737615025963302281416220272487063773998807517114840028408517349773599661712640806053954338416854575820019620671119248816291912280197918232308331464503402633129674698822559888000946850953070362439653972115411684039489729127723915445955185197850819986184903808910808254377444995758406482616012004964596683414080839885902090118783423392313710638265252478835295580408503007789917512148869754514041910923542174952699415078051236221680190650981659986437914824703651554496649160913861266385834438173322635950574770410511126025620185828912830312346292057842192086603921855273071917854240492447997192444561088985480195755515053938654736035083929331401363476832414459090383164983590141502467466801226723293262595598486426914470208328592614227548234685700798006135734167973813493677344556422379423660208004417052326496626822516766686813611254881932008241645325237417853896505266255368288846611382171438536437196659596852002719273665423915861281804943480819545749470846033152812368545318794946850028534064502040236223865833018438520122484026398148890761988017146420385076274105165218634158461110941334366900336101832981105719971016711442548856367043855099400307699070526794847560499041368683855535291043997708926579184524656838755181032119631281406936125126073050714348631789672351682220411375478603790114986042718878993257309940399339453080855981424382326864792674144190092420663164748059429850495006165697148960475313350700755906179785210372182103605094344190101602256654596943970503631624899024900757968682863519663580444862989611771777746114578428431785975630553119929789906753249591826361351345845704847707962117039085113320232188281310605672632103341834802985247382821126690690728420459995542149485295753061327035237448254291983738634374666506413629412128500033441805910188925974328540607572054147994889608419471285572738574499926449978167821422109904660247962232942805802931613417218234583870199935570626804091143969542166251961086012780348243131466917395410731073351513353426648641663523228304933544873680616838732636374495656227928528832470928997999953607962694045786974344680881684809179238096112995462270974647643256778947010955657161661092031760621434288606471287354059010068897723479714015457295125849914839930346689135182819455462370349567137961736134596202734935934120233109715725812292391966348458273983942284526199500885095375168907018790069969104081434896420086371772134471860093643505337846936088246611175599340715244399456028782022693749199667980753584944750564203735244841271792066158402687519809239571808408029514109911884501682782077213219567561883090883410052122518956781939843351180930518002093825988765039351037479136640363583345697883776261582373354604551731248007559190210416477090078984392557908681987685481239119771948378621231587270233511436797995129686702132409973758227263756293218022321465114436281195151385351258077050491168224644261442384830977206412203335953284153527370153863397380520916714166368805845647152867085882311021481062470261440539840426791934506574828044796661387467965752524433597269254989513158471706128930884663003176866564950803532337939096822597735618096029026034630467501353079038057471256259598849599268434007373735908407381193891507217336758331846934758767621963000286986593450391528545214475074267916865101847393785232481882389757061806305774790489724932268567471450999963792083099628337866492972060598973161854916523543048025255363818290633365309722781454400839489834321127532408810552104280448733835375917689800779140314874906501712970783430461754430457708926694946126660263535734125442910615693123151407906186495395048154197994640423009749523387318084481256491028212982418935221458767842290282434127767802495872174827847714525620690476390551878327194897841681443730718505986631204605194902730041499940773664998376927218959552298986070647047174710885354836028469416048420742489146469812551194744153284234001697479692093911487335018490139128164973083835166199242322946099594834872430888116377719265745428256383946138211370597989341103860223344092843402355928377903518669203456900352453251141423476277036918085441827076851491394565518127227232020260998348705142804528579709330921718375975758614646092908404891776947997382353529599804319755064012918546041393379213421902643919872042203506769603000177978678693545009354115126244815790375522615674363105961849070035040590401838866246277915549263554215455879802698468869462730492636377694551900309365103628471748866616674406454595958047228954096178663448835687420362861036494809738024546605284209519976372454581795508375989369084190315018428666918861614254587002362979074814301098261935089048193350907490959665429349032493930813686723682738009538971926151932120581915133678082677595136539858294612772440520049625445515492805678318485269842654276989919615770970512018860707780258985261153996229195859357832682414147565646144573599412378205571729310073331859046129273317454534543500826039656372387581702724268997767566245877727321322593844346729212192020448961165676145162217046503633318141174953418286520533577515688633273646085293952880250121763795855754382709287309780671235368995576787261634552269183663226095548064363520447263516208305659220732065319978547374976114517634636326823793789362753373038608116381122466806796065187095904923643081531158570938802327847712433956260635319319419861241808783361761673513906827442703114507225502462810726127989784042620981883040154393820108373917408267355661439482109982910747280062504271469253346951407943934337919783315712953020232623335924482212672582105140547350878644466968254626473334163933715315724917842559569816225460265716621447301404774290694151956533090589468919740109902182020526519479292854568417299770461819352837514499469927595898159832187581777387835880524464819890800270332011509710019656692784227184817392492097076754304272369809962062066942418200650293731139916914973569788894887011413698394159199272783118460075046680491604688183924601291797717698551351594549920244704696446587410473201382975486013267982846046451408725568880078564164607713887573912665981345397541556281152880572264583194628249180001674915717836313421372849280256982871041829088009724622902020465822951157298426133184884719681116203182908238058925446617971720301699778999443063734260087312361146428505333585773529491202377785099934642146159382874261374255998224673407830397870468504973949469906662216171758608541619036847035376038407696490038623117479038745174772512828690157913766318786993920487331918273176753940077947630692347374883705325081565263684012117250208936054621201478056517587226301235366074197601572483081054979313910849433127706758581572529693814674949740631221727492872795812857276232971446405787791897679080123382487458583288532487768237601028679220273972335365114316500634961508968597169814256704430224961267476008577223797788869793990067162264897829801360517504974062038916246938410455691354414820962841717681782553052753417591340329789317454827795470709849243370712415364438476825537246878759599508276432038599218255817823920893313591812602738813839974529033500138101450502047342653353815799370439699847281919203526544562149121060604941986165960689474722029296866965130694094812975994067611206678739602401459050923984048390019449344365438357231733112842836212097700918743568778639015062375386042385139115719923457562553343820981399765505983955395564041430393752942074075376399789664563949058488438285287738567499579126822067244894683110175618952997680548743829513636440029292108357722760881321827165839758881796095391709187919664772126976849304529586807933431390660013332725046089871683915405121698861572586725384487307703686698546782056970727149007657310976644065509210783813959077594440005207334734346525783285895492972711998829337651646366120125341644074030968838522091598439114396174767997554068936635961103300301435305986650294109822903839130536234310444095046592569784187696650163197865379051453227150402092644156287650720470470470974445719834367350904367264202525130575980688911156994445846717387494749345330870648978012231712131180687100856249036358100670393054874403653815316675675799970328531745029978295220776650989333671540994828142059331981139532557819328564171396525329811479469317466306304410266900199335833191582884857532203558639144674565131403305033766687641290559805428313940702507324595145827193072715982267292040199131301881004880293905404295138444535960060833379530016555455117229518117318627046340690106959442049671749574993030319290675091675161588222714227686805467127644661654410838334850804923417851942626914641036570689750086017493044822472631103619809806332486438359012336461844294602242634556543628617507758707351488490556921112530197414042259136124954425468144845388158971016326525427049659331463253881874767336613347753480141473003334082716687715220383398651583819104264301511949620204929548909160006881932153435565605209467611426950964447591927048841708998143955676443289250351352466405700964334554933540558917311899670340931448523285647445235160871507023329041959756174785750288453392963831386190221952928365423853064468752275767563224558166551768228681018261607032426802859488387640636822666246504114290287519346651821966265030672322343637622353102694962636714268601945405990538528969267361235558135147328053830327700892099479053974319659455316151485286468643694056911609379281055730035038756769115230240441297850808651051120457760319588314854511453459386218201144661395234699780705713333810856966497348638082659341317834485863467475938744364320602179136334677271186580280912976363058021177420981832526817180926739593696662570976515214048311995729450575301275978318031446549641940057165332137365874694940533574007901794650892549756721524025337105251549756129235224422337722750976294536914161140103695170708761875019967915701112581940076479631285567270999861443879870560953255550985050080147898884660461078674849820580544253929869999375949464841828809093990210059940799039027340605609706952486898429509161394017540086538254654951737964816265481237668658023627085193751630968498720419796090728387892664006720615572431823781827248164724860485336873718753016032096493137828726912803141275449873826955877942528509117322851145889065198394052562865862084775186194173740753936815632255980398916750313932962493161832399911692241858680382926694567520971605614995714293878361022992865746526116338772540770036053593711237997980302184866295775607866941505622703012303426336019610843785892822743918195642431363660722095584261058278622325497716817599346300542230996393406050335319372205520089970165573399070179066462484128470869508153977587050604089051677063996867314954258242619508230110770127669686826015285245526678774940729174536160710950503483456002733195913026443606245373760743207190511034221554528845962881762559716825660661803764792269816086995132732092586481397538172229725645234470912791177431038888816611795994109759569549892071096928326677299014088584763368459915862185900134234292412861335229703076157989876335853096497979957371024540835600112745139568912699375830195903965598254247081013918740581508563865181716298776085492262035654049780888560252522708044095415728727158917820352016475839819309768892602288082651009721681801980030906924760469940374565295200487500950039037991247048301080479891092228407432548007655522783191705051208361320608940841148916296509909396549572858794483754515798708522828987447442757394883420840950800681085082316884532768389511571923449044747507969531326542013866529820732210550401856057425310207193141623106613878609017140840081470973363681831667081373727791577059093377069896500752407516857183273955480366071339376822796254814595400907152828198771257490405829879900188654472798851203194006845636956659138305166156315879275115042883361915939681420458327250487631989989999892267076868339134379199746924508215260461673497446753790737610443283159110891695349695014712830106875927326363049920586694577186004194983032784951158351965276897073319450983712020585457516612426828986518942369769131438444500303838996561025898104517200862896320627449496279650087087773796225674760146737864500779310992630070551988587586119181450760982962442415849914172634697664670027680616269301772944813831239468132979690600505890396872748050827503363702459341963852989123758331031594967494481892056765729971295189916572911222202549391477368308692033172867996240853301669315419147589336605226297366784688835727983261031497388342803939879368571703475771888000804446275574811919343222906685958382750524108765714985540567505848670052539683278872112448011588076695085922595757131476154178543522104427811970471701666822197673810297881140252618410263048252302742716274458065406210067544151708223830075609977675481005995340225159784565338423564198194469227252475510301806908768655372835588774329144028612166036868230739708064080523060652801762684346390329076720224109923024826963971894632849264532160651244892157676784603036762565507435589682099269788330071964593857477621000260583100675723112139744727498727786732731281320401860601394892537478945128416819488900917613856369242211749642488080681832588903940634494436479460596426206584066073134954674268528814805264383176764938163202424535802103017885932693701033833883122427853600948997067125128812742036788670383756789547809711670143388990198953726894887298239482668145420716383973409288956945214561672885240486889972280849730312035292081784580810686867048853445586321700533219701331300944187325002617087817167720050742486714584800301434685219473229737643068900626361521049901799649608441810246672399331449701799431827409865279052013434437052076544973310662628010933282115760356952911910532999414100392808842980808484382400990308595617909997141065864902470433123930381974853361042907322027809462912331278663915514322301501075670803019827069733282622407048150176018619285274624556970878003512815147318366909022898098692101515788720515925325588136800849659871339940784926725477820575788912997642607472886063239478299976805625467249275840353236321806677367073853655018938695363393394523044986703109104688592207422645130690774430361344105551174335155596424836297653862415824186227977815180720091467231438606334727067867747435195573850271486208490258343690643790949525856120482101048829934295581515947929853089626742986745231629562854793962750470442973427301034626802163055387564767451077478974983607512470317475956194921366941444480284305581982579398807550384853939954518440880045777084079590817628832984181350507154203004054663095287618092783427326776952461305230640365892490763294072434409066386979160428450544869395403310392999878509571543659050917136186075461731637284984906185924021466186132126571630698841235636227303092460709725792550210514621813554731173606817815494803356408243759767092311685383118836711335188140965532418639502148289534568814728268828796773050525031489854777315114624622530160111735105942880467536733537058013189225922411572541378578892164599453157000796850886206890101545456113876745529547560791969655322494150348044193079912927509319980295265323451699005274977884152556652292908831792032844009926456618765713026091363104038016158386639860663865279845053739702046973911989493847930545461644563522652769031148089017603574292965987422546164812915671550227756373158227563420623660100169369099938209180885613036365559470827612999292203896429431642065994302596704616650734913375766152576314379753394633229182028469898635305506445805110284302787355436087843270309760497487353218010509573011631104006212587286316582297747208097030926369727511949386501085782336669033262812180589211099973918741858054939286747633218231526535514283359904619814331229998398987684706887020496828090936526309819882973125843170796593841828930663758499000356717262623211501971962798096975867639476273753138764156421349683944010294857916687850860619249012447242191152378337798005614153672260181333610291488324432004335024272246426377788805587960934903278755842493377868247714851200879501576123822185658514279310452186504617159199340936252871306160199905402962346073965375883346154005419506631056966124708530199729415685661189622537590431264214570862278461767941902800468265184938774890659221424848791199191866227113929626623223849455169904358525484182191391779990889447379021541605759063317638008761581708989839097628576928541120542218125586488738330243104645010973178339899162097408947250734504023987901895718514261371968621920849444238073708607221492564464069556824792732831549433036353317358844205368974160784658025048615135771878205909008423478816134360280792578958993942313243838148478574079213604425908098508311362524987493529903825739522572612896875470778573875380167155451170494425521068382063100343564739819587574887771025210098933749742156312348880368111839490117823391626554721640622756871676941770077488498267777414084613689407699219781955451572077234290095918816313189615600946957282799063281654521661214192467789002600918181437223476025196845756238844528475487220514058831232385050760622131521310088525821551866001482777657776044503438581704996954872687574870759176979968735015601409128140537274319652398206252650160612989974688003353068055255013419718484033354335438772360964938570319262560492176957643147438953792625263317537999982988941041980838442218141070516734784081457691773936164026818160953403854713072884447033842883411252638608717220602244943321195541346708424082430349891517534770008193269316128689028131267254642669257668486923012629074925207058954584751006757032495182459788989916594776445728171176019000300202290400088490494262400080126083509321156088555829509324177280223724503147991084394868516242166500791696870095182697323739849685855062323468826677504360035524753279978818889021207901586925765497362052001572329318696247301524098743258697790175941001233616975405459450311321907189731889097542099433895401605728111766883209520503797398356943605430701664476064247604806393875859561620571072567805160341377825250266845021673247915857798705075379133287581646616346022051015336601735635723436333990297840468579760587740323592631092131508371708193659609802442154367741780459088755050071549864419140683570252627370351683125587197303212698407117274067476733324189362427763844049830600291129694047043976277575555518221408079983788887992398608959264171413947927675570217521109378207764489813268509577853636689864990735496962314452819045255280390037449254984199082457150186668967096596618344005447031137351987624391765335063112520265244161172342297519483736686540800753256456871504833297505270926111903671694613892352827563510043687497207782609832067246438043416443329349490024099197031294702744902134221474304336236195121047038085221076369145630159462906867825872214089255913601483126804503343173332719363373422636085503723888351560421412138735314045257169539962424961525064708019236186835489708778990237839539628915964452836515632835770641093477156301204076596478531428468858245725728915343471618096215981479131950261646700894050037388348759183645296366878850185778420612735434611317024862361775656875602617835355793613577916680922500805425329811559180244864874829089917948187078481965634678732782117304821413733220053379703663827866566908120837433652916184167465970665851921425489646243943182152550288981559350395729817224708019828167740097824796960050570690381927293236906517322600929659725278237589228928126425073085367175102880573245062931906535770907206805200230197466781476199772708031265956515919892755575602610140681062132805105216868327038949292685994956265416391240594033010940039997956868407319650272925792149768575472115809967886235991140117459808462577444599873595523929266624739840009089247120737179402040975487973910052138351078056414323496964807263669679342774035034307186920387766137570322410311158191620411459304428473725456954522444237752879369282475275678077850139702576816893087375924661693689037579140629993536527408082313961294926361597416116486664963677479325508742049249692131152375604122910592942357235154776154741775855017318825093681354610916394251730145540948538867772899023693564188524381130287834077401927306929520166595917940549885914861737908862403715354529369073759578934397726316188322407323149881075157058681222886391897389401221109413619633632178566472827112846728808411156942400939825416718342930493542071270780513590640353810467094735018941045763331501841711407103124842260089682451708369514411855195271577743272897262608883080589066048859662759176072989838626226948998108984866155071835449304028166342123582588951053987359926892315347670256211820092188989703597069403583571901630610196803142612139938704338518121093696141156277137734025996242227769430947596428547332499805859473617590132086688945341258352314934298716383711059193585631176607687901380506332163616925396888788875755761798379107854801792968145281711912179234682451263920034928511679350071837581372778060559925257996254242760561875391282943277303608250591657684663282706941700565512524292159003361498949475947519486808292429334868301976060894874891883322294988003677029100529599620037589568398683261257697452902293174502845561288835310256818013369507254174006998998687781990059938933810118256184243557268724582048545758838209708689020982244666874379424185905375686890514656154850773544676230860486565967765475000047173718606656182747318778592699384174268788980437571051726882581542325749525373162375092495628644784147657621227480141596650239664931518368900978846543711983875132946358100172325453553994110000975213296591396430370562349986386984716772885316420526397425465789199649197868717705460823017195058393644886736926826106901231205213777624565067239486714875798124215533537708903916667522653135867476086936613814265898590401897813929411774167100922524200345941260098360939092616922225615776975471590512759051665281577938384962410833973405318372944888671682398085101315120006649536417845825178021544308587906038220843755754806499638928538719862272598345238810849010964722213795969932403271952101568378487640647201344100449400780526754728933617539474793155489875934991651614059468713307923304521025672917126573627242807247564269302812588311571582919569742928921178506197631978880031351083015033621456837704369138248732458112859210321502067752148891318234965736966739949042917511168242374476070922117872037681548443989651303177526040616548536971604080476769681951464736223513725663101815523121543508420157098625812664854434491871903373925960790746035656896560295749716107060426486260777894373690636346360480341708864163192035232947503026211671371278736729049882392202532270637470992367035264822782091230451348073294803301901397723412271117014260937794694310111643095563490333744968468142461351965885870178131846549212698600285454395475119526598769780578587796083263675711077940194441864870269268167695463784180685052915517971830851505491578253871614928341408702226117827310858904535683678388501621952263829511028004500383009799802362977261609955488556885950758479246270141391026388909724316813391433598002928929235283342219908503971513782265689724503502431679183541635262395290424689636693132477815124763818060288401392634502025619412354995475947574185239703722958342920195988066196358116303199612744560766747885133275535815955383033209984038339765350257213168239653934459037162281596580026037350040810728096655302731530846363159994227640029574251487022653199606764015193450423876691974483649161231097324088287704717977523611387467443068080804596445111577106214106156923368827939754542206601168948767480901308526031280213142869006863844869335310575574258057671351597921405564281046386964920020857274434303541784740192513248923376367737273651548393521224106882879063178229052715539330539907147433056876319846831954584215002037295146508668411809929232980970150199073095024515944412426937533360467683925279918481904597653163177575970823925949250104437299039716522876182171215576473625889611194470588198461305083726461684352925583167894506378319681653485814439944946649610489512481874589926018627369455330656567921955991780289220545802023352407766377748960695375900791074230521691946801573451536141877690172276176703717422907428013874349933805105046525283698376456754865446310317672360445901533407829282240022806247157741172443313110375117184457523886090768148323862343255578105093997144672568261532683103853643340658324918319720025522565421133529244443287909878010816310959647166530962920859365291587670717552552772682729082270684120942237817066872798692934487995179075901659997340324779045155705267483503267130978400108106679930549602434788181586827197827146230367055103120863553903217674600379162499032373435178596897127744601979109442051921158775108579762427011097284404584303369857611299375022076403525698170617244979758978965241070889676571094408967945219886591575459369563715832587251744912693755828928295737816884986005699341548451948810866504158139361017862844408180395050736952943376813113447229684158030893904351286827565346429091375667551363287018214026558553353685064774667394392771067252877905658726314166638328358554551108908555225105517492511376439933482121912793315332120634522080326842215390101550689465967693787940171325910912261120250708870567408836660994473140120177900435901689318130803396016972889508567983035542815822650004541915353537715936596941972712377333524734940969801636683382464248193284852514197949528317425003662755335450443236911142880393527948189602289267023616690990375799109005164356733283846183818637117753534620981032308865169571002621990349720895320206498866065674785673576540835663789136967116074183988261370462453453228117407413636479449898048707233722344585911033150868257763728322074885392623115391701139237806523059862121402965092731334868606235644745221703586680414652523250926286020563036136590505334806660655847534413022772423960965292781964407588781636967122541930404917964768159208791772383273408892472143081033767161088415752236937596738276827488643626394976273401577733997543840006906967659785734308481753931819469402025933509974644258587659608815276365808710699926976840973081764149714854946397384795082029296729540307693308987769774949651522662303748776807085481217087906967447758538713313116100685965005752652787335549131247146253020007695411295599709706066395930505969563283295071481513084169207062136100403643885900758717850597527320166746170008122122709566644478772459546757376997201835655467887873874257972672370148551499037202116656740708148525501748613264832623380373830678946844418725710112757575035592970947741375651517526470212734751084424021215817963795284995927207881820779005037557948085807775720549390001219223448719047756771702943565716269535957394513444453630996398852545366753552439069167079028770152068561653683568420497727578850846695392916411605798196108632642771079229407546327604225249357222977024166153659598396512872514377828517214007636194872958059783891974166869947132414484353356611481948629943061109800520150425969398726326995611948577737109920651156252220329429176895810730172226110263845303656330794523645705374742915686751557237393289966319623330879428342764277341725530563907872860342997714177386790715450150766896348308370620310110779958251510917241661339213887256880287326987897232161362644505648744306314817973138348353857450662905542724823042228752020230524636035117212139165877497154831463011845871848361577225171753450897925423666961976323034345859795543974763745769799560928667568279117881836363392376050257607386377569312187176282671103098207780236460737355458689993162261918793537882072545653994220555679575806993876349123044804665664003715017974502354177074374017826733390013049846460922384910100676230078622956003913986382405129066968046217874003588945930535963277387380367439194899571397185998088610658260003036766713493313077723968867273880012035137731912217111274382089931904337940337175401385645477974448344995508934516852861937575539944366303188382372550302473318839468586048856468069769731768996838519431461642514257240400198626732276024279170940659925368482135382448661972140592633941442185805932233901165883016458862666255003509616206133986197462394714979207685322408888996831791240219228630826658306515341399656538346002304374422218021153044349646716591771241585250165547836156856828979469883178782050777415879558421797202314027514920808673128974191954680697794947379053773923611671456284330010766716190370648806494495288768637261995740741498148690629032052500807656391090716470478546113208136698897113709855539493061040857052102850187842152552082762699362779294136634227159637966500378654461971220380653749372709508395011629126108673507857977379976902214160589163008497337165816502711416993580188128626325805831489535077644392048128702241493833552196278730320307651058683631576707525781734728369134880116752448877758927681220667524218714208652063175644705511704843160585305244484313745696133914244076217097076316731103726238981428842413651694321684900033083954969575433574377599800274286204727560105905289127596709301719711053691150660231471660281552678465948193134178271977296943376122362284513000281505663692166297934801183699707417156252148927142799154363509623875354128356398963395565580821526390598772053529750023797359443522199566976733654056315368922464729791406086988290672088188060988743511477777568657869574654252087192445638789054429883067370802611968270750862274535973573603781555695560874358457700906141123388017500925900501873512553739172335655416547591706700349195582071389604068848618002628499648140828636161670156251965752328575756664675512770572235028171120215110413440149934781467718550035783066851489106442280941597276189349894989364241109040531469613827375414108491858998797881100451935897196231271715987968454686741263785010166623821641735892782326614944704218362388216013004692262153333145402355204723566094420154990843208398822496330665526542730627367515039799028543861425701384591961435577674120049362214517630037670365236543512529350847615902388679676795133239890173924641047666655747089030182996609585578776841832537518854151561519655735901069165638204536235252726339985091789450770349937449787021856812936163817707897906515374738638497718996721228218165194354383130570938262699793274041287144989966059284118249868941641443020404321697092440213059920679033169955913674929185134676859227211119831188733160311428780800194184148436829349410424537612070671121753022635024093703133952883238852592413536727820356362398931430976234591323225454827014345704858280952466233773226797463296475059316564706752510664922913667824080879880751881000283159223503136628982930058017476946622025429817498954166109260088779561722255065434212248031778931471679424471139930368879028037364717325739328818790999618451650453829484334605257999199354022340072867814875268384980665681262821439377201666746730839149031404512927389040000948247713723045477963739978678908403793244806795948284729537773604445419578282906587436389519832376709276195455303631244814938639504233685991022210567882518911450529074850926898231232385022308039594787898111646820501388321324300220723526124551164941435706193818134210778509824545827673645546483046367498681564421751898934545291856209124610177627776566668559073470996769018760417556215819394268071723225591502107496332586540441353217691849207745229807408339255364685584123616255540602985982569598789439536611247467684852191635765830298479718879264025743894956227463184074519217966654641798080415462847328043505944316154226819372607661359214828527987405690162651465253162560012782025236543615941055500955396147031197632036236640277105083178764136239742832968541450677831080142547687225229760649471158798174844499686999859877962187333049793751022658222320311214336611806350015590271791063934952877163894668672267597940237844686754191641225267915493371607236649837531217663884570757192085128433568489630328060359238706198575213200999067953092091294221466494989405155643715225968287744973895705801874777318122339449798415910234361461848192815993720969393062788605438500962880224350311033621494106548600709188979182064195569323236156427698118312576363940637878689412246750959008207990934157698561263498042397361904058064964998600934878899756757473828419409408037027751442488150941949352110839123128360247447423950928036383616383442140508983084804621361411396555029588589610556312142213022580881075308946044169215349894366795361771343778094047873331599126519317975609164970405098546171731741087448723713376555605430012374366294432622609420901070471603877442381311912908726903902354210792322720732023318084897947313880386020906767562463915077411727359203207143760709846699066733078838101232986429013051630116038259557477466957522407661367779991408614075720210950096307171007992761879867845411011792028338510308700281232911171365476024574673341871294643778031420967414550217735036107331812937213760239105624597902253431662596124596782517533672665311686727475984325084986946632763620189943397892871909931150680208046325766389560119965814039491992187156900887206991342898439097134756020858462303299274352800944779279967130714718532849169375120521687211019245682253612001266345641328621816399517083106026042918806218337730694624137727538252650627680940903804727994647026572379411623685337744665685653318409308716299139072169163082829978002372920709788943681999420539331825157399881527418031352338008365214661250073550673243380909969824827520676690068135380197118119663285253274872915980703353494488551528028788641087264457273134971554400027333443776261217592561346146896063676041672864548268564070584582527610597250296360376518604017710298468540095664054753842765506704200229356389635523780437355986472326390329653724440464654872154519891891499587360627050985150625201274858895048459044992622226635757728595866519442112211172063516382421293623036803516696807617414319633523786634220548888122581064773363419171026609070912110961508899899592418119024458845738345698448391902139280737085390586831270437213269194181581077086103831501583616435766790090222102860768444044759252332879591359878533160033959322965621755681101492034597566796193553156923185176203607189075406324224721349181427118203369570596064902250561373760568766423224137596609251796574106265540816917051085974288149964399677109114615562858718474809706733174909394840073371928383346035403705468578584259528542960894687157647247730285893743995410077368766985178683904647906596032482864803108332959246607087909215218286892127823941609215074628186779431286446887152773089521319296411092898992715402250317726003203280360516423899461029481589311873412046131018059735544584964085982259575164133023376940197495693257444867884242266487051058594969037928994325931840459171873775834697186669578300978692203644467483186646292182253079738210493201596248155413050052004348085676054846604335491248750783742597877040122837312299535832717363891037600060272644516434616553947485366750356752318070557677058625286362407638452730428370328392998157179324837616718942221438798315196807148542854904326294824170129053640394711594196404306405675830654606582170321651344824516324748426775310911142756185785077705237829428364241792473001977956107377740695463610948642012994335732806296598676847865474822544053001859938135287908803543777909003419280519659246455420038040202798409260011698028696825331529912542868361573315489045768292858044081610331430419697948860963094940541186929720727275088974409763394109259654477247305267522736455115023750733485725436638026123238442067400606847403699123209267242092841056847565599697532712005283480561860438597822038010090857613728593633238786105479140294503149563325875194832068615828570771155417961703139874261181753064971113888577856448842593079399650947496411416400426230155626653658664833700913126608180268459490497242822024678591333488194746277452195994903189586943603458225748946497570082449408664957515071112330818096815057689004130797755896356414092994993996812017550161904691404125914203087067320105660455362847445138328294656060564681468481944966247263159405580641495484593435035411661851868514561326355173718629508101701956980855599083729793675741166793596709846490975149022461256741287005124691080346887426632078229899283034978712824199660731133835003901814486380555701282418839981262791320083592013663284846481216213923488007801127166012898336841469586789552887938637557036916068655616270373390783331629883314961482855129912826356707601704684621099366547501973567558259390955143586462065292215804528190331027502243299555879678330907628191050374238314537090352890307323053550383876544715773471785794956585550907465934451380444721311588570520237112970565515525688567161578533204885387860719385835854678690778335178209017337842628130689513343020673814523072627359831184093792608429222396188518205461923533205935749860424688980626746548454772023720216529392988536554186789344630373247988187562834182955439577973095543119528423286217812078009275049034786396579738316909957361044095169179615784504680898114314822983647269477870599760567010574899201263590372037228321695686123052945976706251538951074447327338573714560275054305262528337322087338817921295477024559439526504220064171333412401732420842779617027691390375256153659286896052833651333368927793094170739553311360055116027398297847657298905623668263287319037700572807666607718414636169435528373056285959052709117738491869441742543802443429828743770629882537590880710831123522574813825685913628471702853143924426428162290591725590250440077685831329330774814804461764257258446663233864209658309734481997466508407771669213320451197714349430581421932780058924721525459459108418561589826028680521838140245853973164732100311536458955135803482109858074175368428289073249912262825144480066874718826274744090187813471551513458282352618183663396958890807435171060412046868327723223763584977886759251982551670167767765672846556340107208247171667932317297031042630415968239742677688241790893121768333792662288977003098830961572849053079903286767518798357568339865324085248826227652335427793723583323650226058112068783811620800336283804107119283765845323146412443198100240500159959849783245546909693944681158619155489498088568046850261915809963852271650452533459243123621710362686957918117788992563347643794792751329658817719409309097418760170592862596143529173781876722380390253689613627651751389696381788699104197563979550608699361900585888098556370246018839329915735505514730837528327098158446688583985947445738705089118634524640096427036230420690612758299330549260583897618429094556610243946299363922707408411157553889413790931137996045330951999615803833487257352605805974443750330130442403875076814197124268560900141590612742838108536943799598631087415141846319217169454764800560986651379932847752692235500864259199013728658736321044929401484638943958704097844314261224504355168866602277651945318857073701665956143511366695758157540964472877009112418993394970071622100244162456095456788564923814858758744000414578913058990853385655348115568103303020834852601688407468770291644613754059049832492686596997231647915573291026262854673524314634788363567476553183510076409717761168694334122009685407937623586503365742120427475153990950214556162766656373376458641817191072004611233081297716246596431005819513795830542451807801269260000453692060401100459668865413348059681039164818785578915696924903396224946664449792545455635565347432944967550264342663337676633697204974010930301694208871540783531401682989521110644402400791245745586069441463504408613342047828215700789024153977003004478445208487874387643252001239080683786001141503146617632263040628915167156959058630688101382116484693384926743512514382672651639861284763227038050091329015924969047205625408458391004004257750686880993846347741592876271931512986217399360993371325760535412852053664902520984579373375103479210215303548946454672919394294961835566045240482868625291280209873587104310728016933120097272726577766801005984468240297928531495938304148418651455825172693089930044455355179145227350477605155224752459654849606996913306028496323761439961099528029446179952882654390897280250741960616467199779587991293021359524735351289484069434336971238549604844451605941383976080659475003201126037565292648486027828131022119639077175644468070103538936155663752621677819658212755089829889402827512789270891928337005848773344854231092063107056225552119268366048900962871876008641221488928381980781635323060551068140004163299669281286618358574989586430017888575696264739902556678570010887415841860601931066590797734464627504396265651114178979061152591466826688496253329743135396164062494836943635304258986829282128486976201653628325563010713460705070221125490047964121104884416507854243768429358179082835865855365341457831730041918486005841899805787901011410910474716394321280375171688356508386309042536449816812008444573475830645499120180657194430111345781939248820445442120589709172352094730870495616328324120681654144349693011311989330509328976124314401381509161002901841887476651667377820160729341679911462260594882900216698083496961721310259033049094149842045477718017905742722880839870784897817648140111756194478711752161949559378678876198583018763274678236787839207419126981374405368415746871584381873649246880888689617141460413953440527053183887223978258118381693055694158954212638587003527492589684999903342139761458383828367228503125106752899945202995384515276665641400374859539568588854380832620538232413227423144663725117241131550627381110901766070647362225545692520872422810179038371584436588988579359175397321069630856215449656445033854980302988266925591383205011170453189193195863537246043248440409287999213000402733910992884266177063271578188923143314872978218138313189137390077861990663467677454845037741560082643825087043021157440571947264119764046269071315270913492040961509093851566915783976770972186177920779678139399461165657003876898938180204838090660511354789972606323787221798268942811214325704400825015557537949897308621497241537088988858556112669291341268808099870918046494728143114809210176760252843823838402031689759321434785759135385311727345549489429125182354793328486333393587143729275399980959367968904789449622009319171320532210242985078706559672355443636881161441117490345681421104777549291103724786196634228641106079096192978682880445685086400265123384398753418043459962234408900876874633147988069984979071149466857940618122674123540170167143952217811881376275288236043002758145350136801540944992445780951834446939134951902848515449272450577068491606471586252130181417643426686692508151076263007757592450908093682858165736986073594680155661652247271755891504734353554940590371200729275673803280135122292561711394902097366978416625486023397784754615583340394849065646608533028088349027637304416367588403444618722078664817054173732423292233431151484193119418261716826410764420586775630410444008389518116114300852056210670441162273399864441499948052205624507283496593859581646156654440417976140211768011263449787228856990866294225971198267381053445254702352679532296738637533588388716196011453443327900814274510958186247578862213647659501488884369650654961930073511825867201103939051582672924201054487669769018719755913906907144155143042358355723206576555355953220434122063641715371575738279336143366523058192849349644659811879635812919239163682943403612076475567935969394094070969917445933457928144418997803235971214524094249347641708308511592758112845325511442678552852447493428048152575142038552979804094055783192233339161136844216048425772848126752360334804917827821325922469067691146014631578234285376386205883979181439155094317784696521274851756529506912365387334609384703152653947588792118454631916575214094612569399619398539924728095649470256232162257381544231881468285949132022065904333406361103948968799688629938237990893624144063451980661043827218178214070497836837635972804937546555250611199790075695534256546285675695891443457668612174729234424302726354452492061702447891710621900507609468057076399801477688362744408232636152980988798933832778139419473672237181596815705286598937402637355571715267823594472395492515981792419769356365909503185048025037910271728616359466934584359068966396351902598530885879613091882724695849459259825999636956886341419215606554802025193780526772048129685786176574315717065893778171328013694669740854234119219864519689094846054499431182653445674693810713472330311109804063192561690140138879839736111105197319241810428884520327485627022150162048190819331883065366643079566925001482034807031904754128204594519564672510959137099929057719116987048233445359304983573009593509434268406929994896377927006386052145121508835901093849726421794363700221799576489147689812857114071856755264213645037323928845591086131720811396359275928083970506419940306054350384086982461691999395395611859823167806414003253401015307082418165294208506336106695114957636918438773649071770735868654468400327306318980605369114501025735898298944733856473185877410211833781239868347134778207230578992414434330183007029929369072927627575575269966830159945775095074270147384949221321003388758493884020435698711474911251072504882559805844704093370632930967972940052719889570433051951367793063338570351322348441982170054227747223084046135735192821130763200769887690445103787611084505628090852173550134808796130927154914560664610076323499957672955730107940065514010730864085220777651839209882215201200712034951394137318590001257158604154489328181539680088923233912055845913600952877399894005656116545769549797548877402190041998183733194676585300715100347096105849494169811906399451252544511524993315069890620439499670832006614266837617972099518222540853257035723264077822900397408943871799768894169052348041732660313964525167689469953169050644265661091575943873301649715899335471723603765862431074489976203223586922512844689296361843613774488623465018234124675158740660583127371179034280067606311636607004655313612336245772381691298019760181368764310581994811849326116084276954281002866459676290463009517225784177586336246136191387331188171610829602545694298634337103359158690804603131209489918879792229400305449197073941066085229033947519643518955750995561146609601206555636338452383975983151973439295821121184593175304902289913235312344220319548823595556031543867802510663473482650133151950898565542975330158077347917523742307551972093639483519034932175904795663471419899092152155102321330424570741091342428971232823919904039377972594055928822133686326503990573733610960503310429417212959345376075107450497543176828074262612418892940636022963436969962691392491955678624441512527229246824407468640469063463994971166819570328807740243459446389655878827135020932541437177582175903741985836528462593632830835644159108638873624087187692560951325382485931108683401605300017325144029136702701919554414500147100592126513267690764364555376940545977625568196768541708645894757011809808970558504338201873306417282664211418523045086095986142263908546330721644580612867630354860222068549579147541138493673490965003898369103904940347700014010796671064668583035693135058870986948725257685790686264005209362880405910433586327334978426473287840112275073624728549437499520766313094354133702479517098639182561165067579209989129665600536150817343721596943894966349293407327414076400369841209945830283530841670811219836088585560767041647330332090575471788412420539571494846298087136992883718108422246815545234620301552813500176448625199607100869176064427814727696288486307994073575472565758738835314453387312832584613853242065309334455688723361151458715249415612101926133603893143411785041094279660001111284566145130427692792461289480839099229183908557774967448335193578324775713980930413176581844578427179632017027020973290810262936270577039095763643709842845765357952236620544372656977412612597619796972373844291698269214413612341492503318307328503897627397653236584097360792442000091342830122956936577092838578344545632648026208196916490513948879606613105749350540807043298293451743375637565011001115275474329686446138233236255990284331320369861856401531477577347710981320818243128351811032141783162836579604538911282173127376310430845725811121232191782727769889943515642856454342309302586441133423275342251426638382684912653064415401561067703501980077698218962203725564823507407146539730620930209957726820398468121867429875460439828862483601895816965075516046548517749932382123460408174257887281808743330155750890970724593985695810204391040296086948846566766593885307697902142783544974880422654767218484499716921658953323781049238815396116617697207561246599566057093713586339998539034641856789322399888364227405997183323104990753081334154420829105156745039691519277583129681166396978053111785632166843935844713659057448754334648966760203228154128598306289619852060750353404983693134178453383979645560878736165057657204468604556527404686096280739220824936400232243906840674470733591459139141691933810317118742147981954725276898117325504170136432645759239943950115257983453908993685127093993426856362938631431122843493678867283417331759068408295441814222045876610080171155637889859323556911488817351425759042436150855654277695288990970121757722503398206516779585166897885688409004730845897112814450475928729270772979444892937522068919890576527594799915013817987592507798763479443745958523898508638710384621827781437768135839171767135996371939166071122774274113202018419641999048866319719427120571860534602893149383837050785888042092521964047882250380826736758969366268483208219613280657117708982090462710683318281639468799054371904043022836613254316457072648417624386672201385376980256535049831278243464473256982753298556880381162267886496047579428206144990100720562622850182952709908797383797019414395025046302421868890593438190527622478743329839306179184134144156776350366965814649104824974490616598952661366345603291489463057362943041642033870527699496318715157861816248635651999954896955104300174718843157526955959152873623181279221608546975923578159939159158390939551031547517470676135123563959470376261807282825812906907168248035181711986069427479371228688970121310018291684068462639939410496799750123642952869654380536864059313475566630943547018098286712971848858135558499364062405890731637734810889790435798212068967153668463296347529858611723153160969231871585716030765124540293487430979820328470422577407660131160299835305765807230922755036039591537983645958113331991041901165710500795498845253776602532685012203458354282208399474897976496373551202558854707779136045383743413771178793380002801569170096757993004124001568934299951867807687803104396245388142624816339394485019253691079505165795997839213978095659774714965837212113796422235096539986201834904695031291496614786802484599520349238996784303947985085977728133514430726225937229234263669877167951275569340943593167086565778586568987235737529854298473461021835011370557450537098195066898612652425374047152830759075522043439982618296590178258820340344339335652853810459667355172753574919944883380863115097298589883713061776340941845566205915002496901798068435974870208317791645258548925323013710453672274139761943092108427779443169605444286520598629352108711789140245037740823290159670643196508291362330940475137661816391041989149764307614818899630423468766008602612787515179028156587891224458059006212308088901390699198396734941453154939214722795988822420986957713094026444238255875344610168229039368498064120615768814217751646516980880526283316503875781599058793646313161894054333850799887469136514665208441294796182689311394620001792241710983277642252887587719177255181957817218784340700321832202771563327543937948027107555392800382645710203937489379992264330985120292255721119632143688547413629100875334913618477395413430141672275090905556145935487051344566723052641753824965435202579246488782560411703808712470849534818799496200518693050565609584748714548494995723985782430695898511333418942182026124545698929748943869382345663066438511740631331595487344043334294345265576900509061117487201959931868537109745439247616255794457267638750322004511683517955034282672649283099139853428689746356611975060372943752716392976462038776333080128711280324662137664332944472600605867008994123812535853716574760711284921783083677557894845668732888879536023552817949893527138979275739901186422651912933060718133186192219462219164929381014155931030786629601195767711390321038082017237654084058847525310589348763911543234035203779502997268667418892313446723033532065048069927101123459870259847070891367023404484510908445874240352985405521099779663609367340184190640414618775143227676782286210248594293278459381467017437499607179691269701280458150461088546426280277882362179872918571406963661844360294966386764464011478082878188185652328352293345877071738219630553115169533873601259992869457122063299700500831918233631527223856775832766009147093449282104265922137581484774551407653336579976605078066047506557696784918143281872301465646962303133632563247664050890727942948873113550069982749461026060646069371193912417592552700097390889137451885981169380839286765698401841914634821019295706328353985403426871857451502201138536932815728165420116265934794810616727381546703436645685539416230332565509168886805717246379333469177056440739960824458618814035513482000895507416868485336548698442262170655064380884255179272408551382217728856923733089150692741156738315463394552269691411402605880673471648548970453142079584931021120575072990308402802320382295155954172314089736798078370842974954684213992471966532441719644845401803466411658424202987378348317382857110193804923016683365884123281626644013930034063773518069979699893659309371553129790090261747585124334529312576162220975358285734057729199781272476285112344484450264801897277985481779825840466933285006420777137219383524956746253752913855590490152057239806166312172238964391460115775813834768689042171590906981994392956744038561948070633424736798436960815222772167701139708669103220015862910607649081950588547047356816164521418909458968146302223518577010533487141159565042847514090482914737720989409968018400307222767933122101707733125413904980124373111963897119920014789090000842657667028933724584190252814236417746829482167532094633975232001545931076248500084600044954971565732531455037197842861331177627702637410655069604240738946039379252278611249191748289860147636093261944080928926432445197729829219220411121288663772303842101086634208503271912772231903935001672472785083062278325404580969337865522809418032483076213478642955600134532845264844495154018092142792601198996967985036559194617973581448912981459071841851505566009262481377102316229643853539485771912053131371078782284083039339906057428835669441205851455672785557855566602015917770034628797298958914430869714346731729318524117676065100112891196200756121658943487222051748582354559526868186262801817151165818961955076155394877829200653159563030482650212978891318067949225443635155631241578525359514666879271607832998049476525696879626130215264258554040303408529635102017858508639943646761634215856029823701096158077077363244071867323371147071652921982418778649374453205211581457213899023619387462027071368847464388997763544153952082129939073016268231622122861228511869548669482286888732178164916255834823858365444514577301508152717709265142430927442785054747961510819860597227755803291831945211698040938011953473697924633181060773649639051071393008347621706397966806940708845161797423986573711636911616975309008297911539288996116807684271265561572556620089836290889220608171139489734206680296060412194720959264947230681859447369785755031333007898867863328176844746932458318036940215951259514083211917637656616211526379084048094361452132614884777520632153448994220256818336760179457078985474662712499427191272280903143855408521011523586755863434910658426113997294021655402195147818659361671290909659502494591536821041570675044941736996978547159847209765244979466764662763786413863817735931991448907633063621017639640554817456421574954926624513883555098934081116442240778107586979948039748569646453759776353412281771221127811563471774561312135708903711575989644137844269084396744274522014711787085645763283601036486561494347285727593306403477681280413738267715741143695309362518263618986801757657499407348764228367841698774607029001559631832824118984299712786521522094927647473413047025498359932864037238609010054879498855865423421859028395585520506109010925505705867295523454983659295888119656801379416806604848635675546106715848751772413358359493956166465273744048483945558951052420402646342079253522671989153995618072650443259839770307067442392357009042795057633743013002966174965383722407140085042561453369147128470139573084642338435601441422808233301628046285293172783968410111172850846392789853284868790394159588743982745938840720259769874269363495159480171242462934030673901116065215864140186707512212171802317931153480912599576537909584518285517880273486867810174070681282419828385493558128300387555134237928993354435998009520292386221097521634945122863886334156557227691560417668989010829038393619991455241066170729213658562715903583807475966313930680713278657691439197473015231029699839972837058756921370853753689127733254024772867611008237514598964780457342481927062191543681549129202298167086163391391348203333368442632016808225432952395768141769010644972312147463074979839023766567267118968736400079974128247041735127815342956412701011078416268612006867959832117051428472257028508749638544196663395903686197650166945067589411896181894584573368920586873582672123697376633193917542064431754039394445448441752855360874633183042659876716579526091774218152245612902861050648480246833049698676054680816296618710433518298223929129026840164122163374042237124162488998638332481708535921563021610157203859925004523312626266309345254017307308068629338284702299988906183190316478768126286127377148893555249280876916725344759098434634313499816838501064155991873681587371411483722324215556961561728813051245299575951785664382773733689211010245258961609952136148258650004518372319187310517157272607238386899593114620472738531968693677353504407059512207530167398749020022685910338623215487731061330734495905769040995144486952556765700293756692169207278826949052898248958917019264972514977408898599250116251223441557658947653937692901159583449375726252165087462091438769099997108972832547289648881439100847300177555609728683411678624739567533714309392269239167928822469550447813746570323635734959310069735085596615153572783612569109974273903143843389612314483310776889745277816912607159312934910393342686614021377189829291878265449443947570202212398457312467467833460936048649638872795698482729635836901551949995318693003051143428782255741677824124969587952306264348920491036501244753097676869306321099097075893397511795402039485869911914133110396784255122372036492609758628323849513218603112392186167943470599270352292871596555009894022449266703391466100754117469930119780340560750696277829376347179950460490492464052039517247406664973741890656283022860076354068860816582429503610676629858596573859350009069524854605111727846526171027072200483889596281568838989972062405856863345622029585950994184104505255943829345655677573683959335331644331811774503603574265183878207243902590385598734885612714641221091132116901643450936128757659690618256743304968982090504658501473167411382122384119195424394144506185593392260398153981180203597263731141567827892805678145815986690467154516294629636918219239382557303290731053418074073117493819919212366920728315000097703032644172467981504320557534926396317982987311796383819284410855959287055913887158745308422262439367896822074592581877585194755892766307816419425094777493432431675297216401696846870657761332554566368937751221286742435093969322224243006653951896511690837006297806287967017846492368440716104313643395682578226170925658825305613550836726704120930269771540026981838545175600596683009056498575966118370346631444579385019866827971648390087489476986837105681444832665287846756580143494501943680535318829726070168310465098725992823342476001848145627248535852597148246572093521465337640578855026013591971268460705376940645680506539702601253919723320989533113671099051357049669223553729734524236736172400149414073268928681976927872181929664821751249409897425708522101670812978004110370405952620842610271704882552092032493753844139400777121705594439247548579739176275368178722460676234304805543143635775520458269310612754893661438917572614145011698017900672414449969308863894560829553428691534087571561135611065584920531318316325166415619759533527762828287342542163633405862393632510973377411235428734582994891648624988802378659123868963919755088773843705954211054819273083969439432926868201816108990588653509803104969790184100172057561361439061715234196626954291849271298373907984252988638279631418217214018129199483760066240039481855477597468913688869882471318788819028048095987393146569445273211000416559937562050179968211786627224689369155324283132581347274542901271214352078485766865380784682990799864625931683306832123304082782336953694784250034611004327231379466352046365864770987185862996326867870550026180252311538869640654015700846541608878279996430896580116395668545872089671775498197921505860261051915714859919875075784722442517096632331316536914328233929628439010195362022476085139692657839235358293691771495572271561035060506418869335689291202872591510305311021740032841136080391011335906516861971986928082150275243323419586712682535227423528384539004850294553726576567409168977127852785124414140102423561663743826669926017765621495225703939289033994094231224930451459357977285774223029663339493102892178788730214082190407672425096723144397338473010423112076854185417916832626705535288485365461841147125276905108719626143607962117451880560643417086940245177994036517908472129552923836523030547724052461970348101186810293731811428857528143368206455840084517710740698860137674783051624424903160863043201020367676538805203726454124312977522315459432151733386359816943245994550975307848225344200820853869939383673567111827356761685825512482801632324549951254576534374875103368946183461104364853907309246492743770489699220032963078831994316558068576760319239866329389057833550642940556475411301810130677666294544084487272777948700939077937841656261912564614437857748352424758258570341145168467666453193185556896973866987947637073739125453836664429225606622379764596167778181629377664964897388611175261870826977733515369015880282235772702510988636137570384043672506270669017666128903676711893197125544131158224358781931818081678481098597027962373356479752629897847357640082381180319823346043386871444020762752265120571452660124545206792584384072673085532498967499149539236472662882629564686599872633611959117017564633178141532325962091089783259795541349707706314646474850416092696115362665008297231200357653492111004008467959162465053172552660026852165443548741068297525543920597940845555717264922285113718464550980510271911760583950868868672678896762688993431711595425638359541676017729656481702633801222609600282124217801203575409858483743729400105629787198385341523556672607340745547186142202085678219789684708139507223254519135049312895583786167506354350443791584389742151817798799531235289670831394526807899754284282681960216948735927331905371047884116313523628005734170456324534950891112220972918778966956741639637591346156553503215027028209159596702362628174748717349796001261467484857461734748209855054225723884659294149917113610674600046665575291821650460898725606070996036316890404564542934616833990306646567473529994636509924332238276446843135889911484895125179229634423508464511543943703672870033803460867456728475448268186279947538975458660948257237369456346508877009825674445955480092472009259604800509499190216923362059191337050910104298137772466249814133101973028345260507006714954029441451364967045485730336199841989086750146146151562659610105430787693829548090686402270968441822966456681332300597056792988968775538983928513068750201031170631227667087428263416780126139051592390935388584694333236441060577835146302423995648975203038506511767295426309187777552131741379162204657706554422386864601079769992223408164758076034408185108220295743474614183102741399410299950119046847537141761867442986835155574004413933592067552401986049474343148054847241731565146930464241938935131731666109020754886009179032264460525859982594118804447155778667135986386986636907223601182846723189857253899061466422388989210696900058895850764164247846899257747096537932558721536887304322921158598964470133813256024732998911820836437593601873380804855515614767743573205910560268587203654119027983485197204326659597895484992448886076998736619109625665993936272947649911970839787939085918139081601734383977179532641917147268749802573679062461945170531350022058494064801411734344578786044622890133667749639941080949347711426414019773266086130258490457610000699303075637801178366903912532932634769852433956563210982815330082662762844492827371220448231818411083835858494020730278355254411104962659635729636574758865913892644998899854081607559396886232675300297627111189439317558634232259077237551728366053817893159945969305861522529678152535789981408032565096197876148628714823837654616686992352503600363450022679401544487930030291547088067757633485706536139188808752345120883541251337662211719569931099838023955920638725990847740412291641130885921747109400812081079881894833114026324651768196014838308968318109165850508477219879446581853877302475070017223519488524844863309656718758382560911100519128222866993347204810577925831047057785647486912235210627607174213210419400772666278403560969649499840965162572090072222920723517451016616256176808616235983834744075864982396883065194575294711330426233891863600866871786841959145265310199860309137375777783171416366594535581037194529121892852204062415819338992771487398461094593282362960592969575354936891733699661696026910552074645116492134611922688626402954480841286085811526554791432398355622952821587819118147716244176709022929302265099611660762913422953545475066854227841621057992840528938924968449316140986449072589001377492871258614433305615483696797183754459264593428389395802961233509954550344677425963880851147663969154760994400298419977594993915049458439155686215974968026386133164386169851242594208515688501561186896863812620277910373352340162625052250122071828084193288831456681219581439921426188207323404105046396018248927903079758865082444981810718254210063687522169851447007443078723251222150261030287794870169789973498321715722701356929742845735890123081046418037552218799910591355347394085587380344442565094696954961827879673280340035058470631054896507805754229146535112079746661552343690765869987094597969025128644334060903575914170474172674064314525496540444524353810741316167779245190980207082660725956421358929463909297041609244701449715859821924624735109537528109401836804931353568269102444296002313959854116603661108474065097937210670929692349637917154314855608302322510600741621997345797958010207153178968454962458427987059585928688523049728215710063099361609364244214121739735847322277521765067037699591913712634162960271918655487614968854951254155113804601505929634785347930948392340777973640165257806024519317563400475189715222894676110399015173005363538797701294870248593601920847153245419168113636822055324443370321946225460495164071543525494588183319301352547302550304427442492375325849659622654359303152420490785374336918437348162847881269395514679591880744845306763074120971059732615679936527858486707412978245138445618189720810814126408169546924921382855747298010280816142623390515041265297047585409952863280337080098403426651775919208427501442911496037182966536185289505707477888145897286846547035262280125410124563446345814192393003209987356812076189095447666648922067479163441466071809853202389968028908081675410033724583257928152853980099347786712208560240718669579644851440452806272025652103627169077638543964028374891028457019191892233452323798095917889694113166548157823441876027447647076049978627492431784959183505600651287308907322108459291934251766559913980581920518335626767696748052422497307384300517383753236647084404977347570639927777340527924622442027265423447010679526216057498209579097403547504493095132580763660006878410310440306901671732913913421330626242389364166674295540159072564164224667730369423483299181214727382497802552848045574876562309276154336713317609520462653336565347782427197928630055305368892407038258084295955592234225038148566696255101952963592360663069330130678082786621061763677664552824823896713572369025799458169200813919674174669169523157019468136466043524582603484368572080708217828448202164536408002269345668203659225626784650921042080656692522153611764717150716494424748254859555933945065665671616104310587163631105105921279956110226370181485410752575286885583039395018853779662489810961560686261408651806415121507520435415174191428256024635280642305770395756760753689778068341474362389955765136537229443214291809679428949070624051227016872510482482165766945603864046337270652085281599334373121081262022040845067191470379490369538315457478904746777172327369257747194825319192713515361878367850674754138749231693374073771921858556775302594711402305101787613837451182864085872938566789158079186233734754962153622862981823791752850564739157309407218052785870187181451675275716825158107938721120335025764106053807042011157113628711450396801881070285778543310491913252704529172987227773843240796003835795861316903236474643744450250067539979011701424848662629116699741440204644305201938538992778190351088733367487510886047649737293168569148259327602249964621582028643570932485788978407849303535349953105139209898758593448096636838731690321821331462002989112788725702841923181305663232218404791336576862971202991026101764778967391655072377150439220765428630610534876372982422583082619373370460150417425059897824495532215008534457283277622311273665881163868748265070404638173544865374712312022486522138650839269497054709076559858518295722872750685972006347252070883355032211946533311877190410717741406334354232329737012882574582438381899780937433608837809072136115722368799266579186435274975467445821989200659760152821746290009079718610536467966468122782451303102503757117140639023139109621112404768032891752857070082920878098428189079856884107388401181098489702469765389164151392099477802319066047267876514448170789447923087471470935349693803793264338027182485891264417995761589116169677521455364125010068839724490319439866229407581734331217453353598401853365569899047739332117094394059564295116657844076775218604625061846759141087956998558499940999393391038463539260131343444319030659456393577213353691796583498454770961829911802834253806923868547141461164784472168156049561784702376892269746634552483295708669915735656144563957454800265378879608779159317888529668294161558497999583170054998167382243862403363075375844594465234702267700227630772313943800328882142249696641813447042373095859769305766307892507861893166493905516508105394824404946014077041794539692090214688653359760569304112958973658590978630093964102066526945124529853655917331005602469194226419823744460269868989817182213170899412276710952775540061777643583273196763579263176891308900121881097182339909178600098430639534384112740245509728445904413849695248840987818946513545255834595566399161338030739657852457780056668082177911077924013095294062859322967625418945127115840132537471081893709258489016410323777485685480661130703466212215621164973463079681463806396784296878705436464029658449359260221169861284021036684232790278436066605322174390482260417756269914172142184625067326452613457677433898605888028926670717901278156212302910095588238791524438613752308688109240301076487166088052199719710713467943962941033006676497901881006335241330392272696260821431462742217369402910377405338419270420158964415493605463762690920183929824372615730468559346091908052935304573492613034586472280740091178487409067380874931592632227493170006856481661450578821805474720309559231807851718190297209766704677949369733901603030233366841826643421104221522811761067544741195621602259275355094184109913620573148206562727825144172575421365064045010360917450520504991323810228873451416277088388502157370548555872126034621908408344370175013960185372597682011735719756177372040655337043874132945379622575845755438082656697848535814995036055752258077810277374555216471952413420135069628326262510031270830119763826071860059958152367033549246039865404505012427308880358565373995716523135235347934071493758805689774836686580610912195534372262343176939192443800333005324717812043095398198457558134080714787766767671741654281081840060412468115449817688201973039447389842509806674346211902443025382306619024425018063040895933699556221541259771576233345845638082204725371917907761717933814265601088259735846845088283307723482312666923039677192339229201645610269120164612719571317300353084682757603606923123988320949891509295860127973791276914236762301200743889325730405798712947852266512191867871680147217786674486852578568115775443641651015741199365197558797990658649171919847719703640636976971462791920270349977854371119230863416004309936519573963741539445000686988893766489381738650863125214950018458599601699871529450913330664505025635321839008435394829197983804402333786683959197988938020519504812741085664616683649914687181586340773210145592060372008477481504805426450667197984045449902469475396055357875650184822182432534146568909311311123091421832914200621717458561242606586902871561952113511855783784983452913428480556781351494731515998202779167421424628019503728697529914746010730409187991200510128641431218894549961105039532884292051856077853599893105653256794063808726926445232941338145832769005905952325842796954244331892521666537696254740630978987612577604114539175968880663472836119829447653429713983828262948803732490429295009781700797974942204999649644171462409851948778017392758756436707841143429576423439319892677502963023038506358970677926945233494670506172666974415146059395901987240851343547729506206588912645415434741738550234121228171275818360421706570326787058316956056661127508749767741881608373536859866829583863441383722968564596438321087951947584324001744218270620369769444142568785942681535539732351004193576839347081847584917461850551175218647925411154916121705125510779818031447201543799004731899827709125597623692123267460414344068328010510972415262476614921841524805938997362458293367676498901565680388581485408160537539970218397105306624165611733321691634116330614795868413291938911859611420658384800361685150055069736607269153491772254098171874177775628046793224004564538308833046468242286427616503553764856372121708877804871505498792315477207076132500776118294296455899782009004057066706254028438194411407467623034054565095758302171203721530336666942660455443032878887073302447037398453611688643675535037442320497147531579114818192706849082102751637120069000782108011319148909700919416078902604230295656556661890275569417066042694660109130830742996778667609358195030471087411082706782500006326703437355962972440554341947192427494659059944321735642983745431508437941672439957639434404071018159078872815927304295299526257639632781497402589473947067734637538741282706559854862931721806555855799969530912229098395977416840370257737013115046860843244517347049470498680571233785533713322691974740465977775949149571323305889421786367011392091909199623954719493526894290470017914671602964895254851910330898547485830189284069086496355429234142853846599567335698769142331503956188484406228214125241960652206056558581456093010481911412779225220487829527056343782650062444417383056133710117352672292824859586470519698749024719330439556484526987834090069055752351790015566163240295798397478143893749635396365531638224518098458937000625340843272089311461375525714622756683290116793863583179221824437413604127078739729759268909120884607242648946100950205348552211772872009310727290825905113070970829727475363701047985670276602854037723124600694005221828839343180122445418805341756857135634317426372502941382467295777232190002999127981705926614965386635603875595469596730822873491699489269648569419651528712198082965414421539707462118166089686478637257324332473501221230012202645599440868360989024725218007722508886664337433965124804967279677823624196035507001803066292525827491240847366540282889363142257021810716248445302098099687195758898264452372330601702112685426084675381380978452002984893280848840631895116894347540049991907080083081810033780469511394061791618103743579737984094292454964365617388614973824775000263104051825868658510093387814201881945569559413344360835092676331453179970937214137118233719891769281308274602052716734517209213123984182645455441775980764650996778664634848814708552736696360731856644189518934886256094630675598587479184346178161599060610626361796937024574912318165039945937880128286884653433025240055730911549316814357417561538501904261777984550727028762244764419164032095476806081639632615903256067368186808346056478205149393837766273265799333246134003332204668784571517183321179292670031048530160412353751862063189346642013075403279702843089592251514345505747612493430720825299076170487486700747726650202533957069209355607370516302908860119547632817095223599387203017257129608702377960120625900391014142062261143173420090724056006425663458657817158528008317566050542947619799011771622088687255232494670977731021817026102209531874305841639283382382178093476373737592744980722659529984347391509108476082120200373254829864795416483503266442735740349402446096814910512997294664304950338722496799789827397565403875320388269543564591414226054313694062213070688110897910612421289207903313210113020754373340285586231076977911314538330473752273480208279607540400198132274838081728501596042668642412243154508349397678801040207856809101698663479252265302191129220186627527914006166277572455396512010903184015782110618300600963672009675562354464532096832792138721021558038328967605787227441803749272350324162625922391433671089552917689431916445332044625616767039921157937207295166330008995846355994250434215568620899633279918156812398036195790762543301120443695520700719244286476078473982220596946970062380110043304166484746618406865854552061541116143563416233838879179059755832457103317379656820188550172997190533316526715053635181321747534286629354667936308277709393031330848004770159364297438053976030147394182426873304594824921611897270993459012182104984928645365320829289464975778330430060535963441898160521810117687778316951332857418697843075061277154952137391431821232293744507994732967441755740215933416718621043024747409026653502429395249478898183308787970661203186983667395755028503809506429650008313274165238723135814273769105530042983040914159437299359588597882331312730600554622008675100000910792521893236048208576370899691668758816738968709794625710875768170724332661444617776042406087529132374810794109518752119809692776825231198935008378655749369268946711186907780239164390873606934524883820240580346663195012204931612596066821021151741722231918111079426344927929229361627885901405188208965658280153710342387426212221991801497652869290635149000497423669327996901798924703290802994448630103263138927483942127073682012504005810164500748933514906859985181196768798689347376984394139287598307877514250989749326891748284890979843058058446922562595633445315343569956482789087243007285348083258953713872300659935989059347734444944374860009437248938331931460218624495161904321609141768995962264725904533820283960532038596238529364277858903068291376231262802275597196786444418889341528742094162282948925910519612348772213689194385283848736010380745103684011998912012969706937506199256672132891130650866136125066107149660868051730938237417132739839384941266691931983668744024320458435262726420896755195459932678174103577584052905029410739022535798043617164557463245917495514247182691659454859900588571308656556298151690738859058780636641930582816660784642214393063518591349492502898722783458456730905232286800542270101133432083499806120718957742326838407407066246954977705756464007826585941756455878097481938216602742788290982906305160502562126855846524459300113448738181457630020803171994961022695684415788641723383939907415297445167287997269835845095267540349897370553912379028028574833523274312509440355924432410387229940452611676060656046157644221848368753107892598545700260501076750722583525752967535481747387143719335743444932753828206729561190921820203715115825783687916515177101725089497541047605125783667731054432539143688100474491427769854348360919785525354814232058887984002737136090323256841693362516562264412485917180173783258078489910298906305410888289071073800978271527407855411846550853420272975175096906186670237746745144592299765141859256155101243545443955241120852265156570353735339670336771627423170064045245625325579287538718334180140241641982846861816886039251676957826955068645028926087334933854832900977245189722363472135014084960691973198580956272404265519178110463014352513862235850979334149365607130593709696197775060743682131581658132613358395881608215519506914231748782801261363619097863969869329039860557808036223664452050234846373910624350855869124643504619598388671875 | |
c = 5250575077350723429017414487503920602618274373565928582793563186763128741604185777015526265931275797021062371508996213850674125758903462831948706876458394209841759930334708972884114440700461827372270613718481404218220325987966754662512486062693867098393221974108885980580205826667705483455055339613675944293633152104575507524601296333300270168604241206722337483926630558746776604296532512351935722360008314217405971280813798432940521501371785979701574195345901254695263017001743988296096577676518783142471924933576409397724101131313012429819196628661953233164310942433656738228056927991167646947966416795007559257127830575665438297256470313745389088870109492433595872306576862266875654743721764439832458625650340075281534592102300050831162477705540197240216284042079982717722577052405018517328949330062323965825732111838319970577249759396233361115102437708064032259014020123194244702483839384331023244137614575594628130241118604624322285037507813160789562770425203248003476485206300893857917325558569123098096150986937248352459088819765219289890186823738569187080377686567230262758902628839059674731962188015796909870477032022658409124870794992565999495860492861615533284314167411311867476578284871569011470351542311253570777695124588144594801537568368479055546347832040004266662886983275974464540973156754629141015416446497113068791779201884813162566830263685394685975261184669185185740088795379943258112756888428437366340676622385010265583432434831078624272438144544505856494575863510012021592104741791237885353048203598730861104439903279157772510815547776584106391432205397793379709330617145169315624940393786992872996735720487902983564532642348451606176078728124480493616540992972025245394583823410258572905285482918014454385517424492436320478518844014060241779081121831997482922015273431388082206198501683684453647042076869593038548407103797375110729281747499695452450916656467498633490129060442450420577103152427456227015180628668862521775232657528884942878037480582333154056610476880871012233842850780688881705210201924326439720148522652793549237656096675725917226330244087259041984263481591992297782494089970933072533065781126855111603006542916919435305645243854458549054190626370819915586571730128174889378604474376995691055373200730891812052495560002249974714487254615463214582793468474126743009386909548872459118670338714663351246084660299352676721223425302604001127316656569007769116280483927593837250099759078209533557514268364972442352991174933627997512412613960994063778512615955598981393337773194002291822761369355941286848870444158685284756869277705037061548231481896372839960683844972212851766270932499275383228882808004044678656971511204473575847178799597214901915893649109250302549804516565490185019122909965926999719060437086797311087716512122719545443342375363614588118980071506838678424600330310459553060945928225061151191845112058000668214433176279237881153875421161137080549250878716175638954226502204342652231132401627552409664599661767947581275763910275755443357498229174521648484637525029858504954972702421470179749386612198159817681193418816863729075433696857869783395666038112050355679709529984168419774647881400422816982139295059741105093932307880346883386976331723373467761414863652568019515026750614600338901335593903073879328021195005167590813826413723097032360671622281893328709153971487711854294002024158002337052392100834877497012427533975807451469179044097292627757175695526800032684771493290070216236353610962471554079789424624663193882411724365495699868837712812621374364042228184291468913880142722505468870431241172613852762894138499769434109426874948834053808296690008695429095378019823949951885181137007436017759614462882594148603897342133034626314378728981513499517181785497521180714738014697315477076293401546953561586494274188839835030395159774436224841214007202951702422602820753765170697564846532759158906721593340951537466346212519469616624137678462614255658272186328966944586863043238715849275099825277593785333546219764567371134044064818990705006059622289492815025614382216181304813171132288001170665847403205740147252709153327532777500025338851551890051019443979990900602832531864051394802602949814749670697590961393418112466134544785735864090508862730082762096378054271346743283918852005924115021076932845827269351374726940424368817967436131375694400200891025934552378381780434113964003854546201111754447862029288206623038842766845232598649263764520731026260371704218975850288242592491379270362116304537500572132493266077664070522053236548864149914526806792850669744780196873905547438664467702072993417485639554509538693439342219949643316902593939716319161572206213517419962433122058000557598806747580680571502393510908727749738279918763180857586000031592787207038566866284172791291266251273808087641031929170525842052841416999298216024864160480131059017730592824300419055447476151118253113196223156093069294318826526023442184990257048242785581021328827436601324930315651766392061119929201437409820662300104292166066811968937156476716005197338412218555901245158419413299078429323300639418059005198867406047263590182665984890389739611128907098087071470306579992826633363993402885765037861879718563800605344000389193913852124046766757088831485473243008593750701862187338944795016614766966722184185716249525923643590340241974043135187308601308569004325282734934955458129465409833342781332543887065680527964417272483924235480094635537531740777079576515921839054549290963116437669132075057613560083491269677692120685686577166228584915311211779757707292779577046595316218517130818197502247316408316647999099874978726671592522656917333447178589405637110872118345515584898787064509514591241668323975350403766090115333765654379074203898861027043606982022109624601077184828000395835264847076541012820499114924559906078720931844229320472431183365678986214830635535691624886481977029013898105403743290603616964607553081397106013351938888049964526736628791720457348963912652113104738433046035384239420840115906215732875859340573076552850392525850324282409739581997604002599403293252447870073697431072484851062833153671396652879093913628445920407780191326841499010079874524997085131481468904182735050485557041254645936735796717838070321098880127494732381645582449497328885553778242701695940885659423138548546333220486781574689886428104363870002249817801810976236940583121481794556093959079089129184565335612637694657368924510354333679525633301754716975649116717363800609895013316225997266313954420212731782950648001043656402835111554698015688883400738631856669722253183124398895283236875182093180446462943511666574307460570403114132203242869887498381227905802669409449941477583938276470403549643223687036920316608843743029025181711495348353521112285040995309646875627441468171868243038179907731861534755988276522246337695321211586780301704091013179278376559140816223988904509262690031442839521846988164760771064189436747889606729202802595694917888899223638537854868566461882502914916975140121611438951304837050169417687614748801928080008684288255093145201239848933485228447641219121368292024938639852902235971158907197187008538269372542519124770318895275392247172443641223850694436154978993445582546010505555934011894414130872096020948442856217414869357911188418236038644481615182981341351976406863718978564736678178265523197252860760045154916045848283920299499378511307215826198318722351007190475268388749673064663279179321291640651046794471081232871466483954088332077162623973245597081025998500487526222848076914023474802187114822354784587720342791509369150412984236905587473579043486910149521740255081884348792389987770123949053296040930785657570698895567321377345064655617645359477222894603122699032860890729330632091376740262107750428697822756965626535200051053882678796628297484804403080657952094689748966999286527804676345329265263345670255852980982716840483821038453036257976916931753601295492065744867434082679752362039163190928794110270452816214116694238015323152970614063370915166334991134824882543967623382245869797268114978629767041932283815799459577092608393918045605294388304090545259920248924557976115367463951369573096283300281796859841605856061048503281109446795095854972065860639577140496304743090278422568423892511620777331107368607327013552912873227898827900293581741656765894276978056197680787744275967394093591259156195773950291671447320760747708389708041901664787293131438232967462594554424651416650161929109872363705339783781339545161772065936013053130915753982779604859137214002991326066068664472456001965351046413224672567863704636497650660058298643465568207412196055112272567444637324987962662836899328815597080030869761381220341418825547857839176769843224313183001503503761974462792552380641217062004724369866102783283369217439145141844739018629304555600953907661045552498334309476089165379472979302084353525303211816492341084789084882633781434730660089903111437479074628423626408308765964884606459564994248193283704054255659523479262864469672304958051771563227498450717633199807270261497062086213829807026717995822190756167094438239859358274742470621642956043049886578754758791524236205111530377525681659441144494708604194528256601538875785488859923611840792412963897303307986331855438148691696808801883073426515166835814225743644998687742585971234080892524616439281264553031653044916428216582080281382086088144011647657111227458359361404910061233765958813801862654830199756335008142873636458097772815378677864455141903290409331490262466197898000687259717357262161333631838565399054321493369697845680867931624578931083384954277750141799078932562810156056565229034954173085496942439171630679318654443472962343186446855521076707720208622818276526318352746687017032111213833011076953176891961776839403990135933927118024789930745471241720773378780676627563110589708872388686877354526837577678513443905485958462087887217795619269046668164496708155310482433060552274361462406112853654919340632544381625738320372291960376294320656019881368473636890184043286052186036987255807443556337389896814220744666310372435405739630148459311276783183525039934888633759295929358403122306271896543592799299091416395131863275696509461941786105123505540068618244387010849858389748927615202873328112671771151234941244556878523291726509333162018115209570261121819863291326968603129231062322985248455113481186097837675599528279326858104714811053871546534620921961819006320010787791238139981150179595591330252882417458524646009049012847721798893457213906606457586626668272354146300723786559941629232946515444615895804071283813469721654065814453841631597917897693309617637564577696074048101768479360777071014779472452035754670978163450021918047733555243966673679119510118392981874079081315985594658221162416679675498431839645408914984928078394132770649712470076295690613749439232008179140428742330977956384770993785284882498823945599089117302519581011369643264863154118805934230120799878622808234719742570610698301455382131770506341070586397447186689793522232667387289654002553880735401239492686530966123372991571147950812175746915028043352929599766475155624198575016494453398023836768082468389956916575489650285675228470035751472783661268936745074893914242184901977495850717402876680494408994950161942226763607856049090516707051303723695097767773302328300305782457969874463925185979761677112868387991857427596288572508934951137388176470585929521626326244853741967771414903733326037490298985920627784215891396757540628924707713671361504169744567921771294082256175497020098199054113382212423481699713853276911773156680534334730153877137526225897156522161308584411775239028846576326558046117185045147217557800032413223564585753517371186887915014094491222280592265860544749791893734190611421007160166310516101531298875841602733267188540705532036646460982344471459136558235535454094930874001133348024859993593909756148746819660384920763565605021599803837507010275033547418694129252743778441225861060659574788773059335293038554985566669493696041764690878455758399760828481924031526277342709575852704596308542400429606106343014293175317982814043847765993323314430451058222731583482421086768565215946838951181338879505429346476331144149993500938982853992431440077538995550567637212704647147211755615636623501657150622900877692257701062976797366771483981319122097905308172500019278813732993708788124095643180413842494196781483995977104773593020026007990865911096650272364690422386084972997306342116344707497686717663552214410190300791322273996105194227056985304993644903880946388579026547320353717206149717858011015893009084835392340170449466588084160499768366651413614270719216495327037123377556613358016000918821766265244625154786555674673880107091682092758175053980080704706597929208287573356441317916273361149136328412570141966467599865609649398030181394805840478629968511166640042613344825773594663006099865086525084677830274808501782904963072788670928075402083686453407875592875229568257187503657609914868572690848401033870172952239784328075401423659965531329003801179885290790652633000489183453518769084999697740209276304350462920304553857489513312995089469427165095398884612775506997485758976785332355386202559699474923907849910462543116910496654773119744902201374948294355810910910081901911534908860890663647894817521804570103663451435268821173813530007743397858419853935445656362022463499217147130755286577197272426258321167660232410773874538259424109617493197515632117533911534945766991283600499334335227583264253971244767423166401731726404931569120203224552013085775023168333196526820191982652222538240099022962391633657808104058150615190716424409589418589039606750327075918251321948844504310452352412303185340307056153690684541087321689952586834090392156447249660800285818717041130426599883513878602403306832387766125327053444371412221684598224953308334434527756268877550861428498327991579669498096132123890512002184715458383084196338738285683161118001934962240088556866425932837320800467177340814155256778341787496084851338469833940792691668335429829569283961191111268363980606749750711564242690954979848344088421150020487726519229569350699970398321140470741567808213452689261752544988273929270359183516531806043104504803752239119290720018711275587491988649486308606684057960069196585556255821738149608083743566608501841553972542713509372656009807837422480505449121332850345766414149453843980872419208221456415858534498605516457605359849073018979364733438188971323228795826976270413719544283586694023466275631963975164786387535401746731761485591875657612754149062419493437045568831423542167504730021297514486363246286999122458854347123114327929936805403982443303996293099347915886923946434218959971886276978812211379177732291937287816938847806074287071970343082729724323723520036096731451144714524437379861149243462595049134276091275462818262737273466671192637007497582245943790201184920744200468254699550999888066416507303575523318963229160473389193128132896846272991275123336491945321627332812109283895195932283519957094161259649189922236490075210937469269956316293462764068984704651421301068029161457252745403638958693823068044504457957794737813038513630698309678761873127291043019052022929780594793537722288069387209965503630287601708540746063522869317604150136029814312948648615891189561375615391865904647882045847408016743925931108114069410269921532887814038563230529598012804724178002374128787146316188782798603240827455050894561360887419560159742065191661042830402102446369983040115819350433858759547694429376605239543186987910770901805275021554400208801008006611807852031366451498679452691410107009296970582636369003151563472061494920455812390396144210869099225894958881611926269698171379776672820703923661509003707018370454312000457679787862340568467378512911536527257971648720945797286733496379913029023800978394763340417784482169168946511941344095714255052532705966189545586703283655469604471129233623400744304609441343098007805994434448579053313165276929455432183299395091940226746419403802888737980212454540306086272256632379737080196892738894746803086739578147122495948386704708347116145854978439512490053771672053005595800323351571788938665541316421038496352284123326151185130827282362066404354404861637806727314554524126671433092287134642480120126294379269536318915801975529210723893987997228285413942180243865382097677577748930308913569276734080422344480969354549752560700890272297568020354700372152641990789048925972466651434936192359365088446323242034592955453575043281840920848077824348097171176103756120185872190163975213573069444117034891887023097077663757357530958012417366881142003507306249385421997172281546118601951443528571617572275240392620773588416998281323348105753100622647575915573543004669897848694041359685502052226565469630974741743794847312327716893932920558287500807832457032893336967200863574420666026792929035443156296078774275281994821874906379495689959738814576877653513709990174354207843381757401581297279899801210116685327336586744762620138331979332806443357073587360643878997230322191541827798014927561254621114310085150984687453535796250786263091179364269330792353133275752411317652509870999201974168094633050723340818427033164171866310293407528750312340653360298095783614372599807399845361799075135087767285410474266083870905580875918981833787321970098043788009725855492182192744199456196809818612746565634883011720768178055234218836585164547545736049851430633570396103695607538071505783190208246844865038968798510459079419688405842380647993947673916648563855534605082757321666191792767627066826052936631152724518464341411692241187753679471981458297063567095608737354262835007660650260477213996779228172384177965990615677776571530342614224384785847565913554388369729472775215584891848882247383137175731120758941310654050827143306237743496849364213982556775067123374829377492802262392369028195101104740031479890870610588646033280182280341439614980520096054530468229727478291394259077114288213073340594301307149341507334106819537226729038529526633924777489903115681265791483287225406826009087606956310779161154140897354163013034829515326581123950737239811660917966039304233761722841404164295386470871793475829651048919177253638877932560308980476552244506404437525683813235758123309886859693160918636309145605980212623833583185209268667237550031056038432027049407138246563982226015195376684683920728270086892987774132979539916237725847742272246980805830156818459189728599852605318968512410441603095607330210463296600469746209303222560455644275952930950546438483694005485057178417435410186322681096897948420756154295967958112279009919624848584278066060067349494397533522852235718456145830555659930811866145943843696068038983460517605256702446024294705861910204548924355633786198604835374204290705642431107177005606595278895708690138506438741469587108773800704970315026898365061515079272459325780159016756257326777678045230127107225163292195938818363083130997683262215106064525489685916803391245029956139786632072155628536951069508158188357690196000426597172729959665744028271683558907955442333047092896951239524413955569607365352981418517526353771249033215275859103230111189222572592177060881296424318323150414754891669629072706807675301958745190476833351152791469310161083400435890029582668227007100819171704519937672857316484275386941201876949538461568550426538171725092901939612489675535215413921092959905435085099014579985880524253144528067561640520812641232752205000425509452582759353697264320571721352506459819404208383931317672754878764118292160553942390037524679401880171357230431183631130582990073459075883033937544593116797819559449316225110516798070671176885880524176318706891179683910826990376340693044774326224087498016432455472372280471881826392489045513845415793814880205199069427921277249481929395563613287997807138357603643424220628820982198943580234976955630262345829538816330431886073586209941932049313400542574066649876740177045941103762038650847742431399784814832709394645248434308294627225388948432789899309490679086579275760214682439351791790415142157635845699331937879418411862889285207650820647900436616556395441491086246931634257223841755430482673062393913428359612914885354306827030536873926620192929783605901401472315613587832835820263689412128140128580306743135587871730585256254503437545671491890328730333529170063462328501662420896674702300687775543022380799385438262555194842546480321612694696013569963649491932704188433175796706594856453474779633217544608141446480250102239815531839542774925501491413585872453747853051587803616107610838773272985410546457955543829635741408944891807145261285019605607063261556875066460914103280666148101000204603047893415819681546376693406876431642069854939048382243154278613705197678651669486478245367825393258322541062442705386663181801158522396399346452457355620238381503909109913361086373666970872181156722436059153376541166286850572773735197582087714156630627780224202201057021400485651173095901700225930721484945917692221516596628953164690924648790333713902066542476862854022106449192471411901780617381678059506996063522067515729784257715815709249839272868820439157228686508979374928194798962959737308435333437335643909689977766582830642093938397937913385872809358220625794978838115222816179743277666543992594044404535562433910388602790515352856822946920637657296748552871100885424847352955247215871535404815383023135567789899329998333832191190137385182367286143968558574842152244670508608673282757126734996934657555414067556843975105413830027542833729748279122505919380439910301024011487361097595179571846437199827032599089342314339673338449157830682963753542319823816393996732741310415923157102249176983748548582677145344815219866513642772573786026373837199025512211168779045710068516661249277589596506347221158625557095961436648786641136821377995599634160760447388643836248875335381640608364480958226891839594446605785152588035563353149969628709542691156553681101034380164009041636274758841059859136137565288554673599630037950554241434937761541416666894357539668422455863536748600687818307001360744589086905594234828592423599581960182170865507044944102116980384234734927438365940967282965004064258306591700541004395540284792170456072348943436746548224838344413794066529307051936915587655073463376310858007130648421426132104321624216464466227935919375702289895821171239493176121601699575220468570537389397637470397544378894988491094326667689871594735447191490191854040034144400689473994473829134778832099821820289294076115153648460216737797880969545942633611148318298644898109289909622573798780719013808734269124701019682194975932252566206841798912464335947141234345557976393249025391118690124779210814039014028241958330870634790691555847740014321820235601768959187936022741995162060024355049873480483508989172603005813176804459497645011260008077704886150304188688728328905522246942563366193564317909763083077527100908559367743176625308548735450781197955286034807872537774509250167483402245114315090798851034616280665213018106066505655789613867847433430344724888051817734465134900283643558482778903307289032250603429586633047933156741373907619502018992405745917289563749187224484175533149742759948513684011051719012630510903591158743458385665342926075243504650448374196315732745011152673419725864401843960583857287533785531868353192574672179380513615554934298350072608920495033763437059410203116623702733771691794861713456446274130356751462781640761413478911392443485513465884040353365705438689255250299058581507196224237676300335122746412767245344122393329824256776253245898644048798692727653511563761843380534542811083833464314648649382693423709042147460531766646198805415142503766067225642297140115523629674470086150011388044956620170830806468890757575816577866051982100354199276883928051575959559467372760993804710091144206350284693795759215267178696952575233077023308121874499986201920790301734984862632387557160133831878761856874837487985280694207206518874822969410292390626555663111145786480583142649753413962729802507638567587966737235860776481123853171684494501269694406879642272805838689230105214415334392508236315159612045977273182422606854553021601576413713564916489645665211749814231739162620336098294764747466821876830855273987187261916772422666470754100469021386665617156164498912393813101887449770286797797708992128150519074360326036356496203557678415257901852072871936471153478516759940615334192533345195789497292883861456447004255527270574458591517033269749534994603789697939102956135476716376783546227299626709961934386714819249645829085721331304476404454612090425041719930884296005756540432726422541540829681942822547364914833058054143360881519734068371512403590933336414019611789397367684438712291146342611277836783707561921112795141345171865673148119430164109380268797351097039893333254134827030003409177599402435040402756674884594665035643710543091817396284131403669804239653883455285629152996766375147856154235340305861830370910878828632417139453437422022477868533258283382851189879469690793531314182264051968988362479825474914629523391379284701638171773417075655518774931871085250960736099580144984449018288746186546770596473143824921918177294453328360663226363814379677905889787338634346247363564784710406835878662227843894453042098137948539160905499148669564082955468306229254161031465383961248066235207238990217603323878558136305430137229263792884092984560031997626989373068695160617237434996435250206460948115057642134060759500541249563582039990641399748838582672382912619532812540549200936716089709335497785336769905000185615185395324641687614677163746081489360524203261579516394845369378183650735008470559792071968675595966112122132051021696817363136814566390673276661265869242091855259984480402549788208149551026581366395625277478055826331936239491563596391603779153928098116623062214736044859912687270040482821397981035110337933207954743430250155560945290803604883815724370019026130239717840848608980400208408425857678294642111473826110271009390440689290987344478045833600665053217472679382080588109893055992763185575453447431310771958163474474535517870497745287958522843137267127991000748153378133982447061066822043515819470897075448774024670113561347340234218120137254475320472853766031398811700782357591497977777132908569420746001018860285417419214473649441877491007917059172050274906617009089546952756376137410153761670344351929903499657198456419794847620243748909942092405915304268135187050120472351123956487021889330497881813442811041462118989971275902652373334596296577215080239986059590244265521610046111681466270530668444259040614302797024880896161420798694819650527769586305050495754871728957322072182882726271578535777743380658234624145914374761770090229651065457283401747770350319366557239464069362952875386444532884511544121415646203314258995380545092583698672036012499160163119660055958706897499581597875993655959684166957962781269064028903004387907997708306287345797161434216875928617279369113019900984979842805860736981779354419698954595160849935904628297860858955201027037321506765747732214963773331861291546187717603714898688007608409965687494945341373996448172749410420352205300455741528973759095688954485169836348660441222071406284783780446629184511306256202145864571300211537724858685767006184609506805247250429948645760006730802732107628464180158060585946007495488446437989254082546664213814545836202254225519725647404832832956738877073547297554933007245603196120794201243212035341522195654361261250070509341660617288388941656037106134179267524669401785001917179253306768749574122133075562777197977042066827542426930216090138429713921284975937049029022866060839900022127626699648704544602544602320870922869540478587895483445739319605998538952119806916463213059343728314710745243497915978081868944458946262985409346508500743046708004446752728499202990271642461954676844317961854077165631711284792430149224705960879217854697225421337798749986256183121027793241652430669317751007965225406810530584318044764870625091674534175736536096828643975429125730385631472588733938000653603483069020161449509936769254650778191389136815421414345193355646717193803278362806238700695531814977807788081745668579175277579015224496197582857235283788313310899381727484504210211550325816858053245709698400573004025927907693894155549613894875633739162996874931081922957913530684587261742105925605532342354945442803685900907774328662025810458132510302032564919868627340161218579294003911978228012590261481305898365845628926468106403966058200420395347532151097505104548620792903518019483579759668145239153681280604155970852912338602711138581031929296610626894865189036081142676125769368673750463371557318091313640629287795844527811508800312769091329953541949986914467975230693162976915453314664740273426783535121837845662188700121284217749583680286680228419096555560927069808851515394096969216702026076093922324782616675661293847531517567245566660626835691684312165090276658685342448289287762312316179536623192506155197224391307551027377095730534740458936717599823502989233969519279251171727976789956934759915592574084256646747266313765868802703077679683771908743159438965148084514744499161832622814849661344590472971156441276247605622571112280484731858343625571412933254732721450052338662585704858440953719633086803438658585515236680567405479211488828838822369691336316515013762522447970630950819242345373243790580562997291797729151570606235076035552648607093043242752020488967922584049268591282158989960373992582452521817343862047861433986153377156564067336380273081333382889869033829703349500872000443031122265467019143941636642377638464660992473257273670777352267570930712844862005570055284102686703902474901335172097415162232608449975861043321076934063742869073092057725139064423206322594802212660534649494220771788712929909023027721301963144027408176606416100618054304871902079814324778647192455543365796797706634380987970895729839340378435720613956963692670121050479956312585868899130561032186023013334439820169898351499695734252011014281474686412269150308625664276866822480091398961706083929420847295933754479481236686349591530179107089929004218963886408964050227729628136003638837929229402712542761064431045988454452792072266427348783826468328910108384487393830252466407827745284110722965010704453121567107426240842184968930950691068366311529566136932106374867887641432347439345799948892451713089327286651830348491320562490972769158776453843166150790230446745408883968793553004765147624872552045243455355645300807026595833264282323762282809258976187502586324143506671196609916144726264632235690585178266892145964161672726966489041393538353150448083039215377149785094699073641012216237743021911463109762021196706374475085277654793562202357041436319302189599767234695742482361046921732883364605954282158352339312142652845406686052975815208152873592905982576751958572781941309606310208034843400193390360889345922597588401862017528186680746530286959399898613300243357629413565126364891402883366837562127828593350572226060861717526877756729724541086310864099496777577180824286279762394680047872488316924167687853682208859670540001010413399670348315695781201036641201636604124695725608990590232425966438004662867095156930492712190995790467401419747588025916988634915359114329536014758635043460600961672986217500560112588299994169601917036852647805612572303173527188216329120061764437035292197021907543479762432506508511206795142098823687830254361027407111306277198272437797483231467584131801076732398081076998961529244808247669665403802325945834607059967370624980522139669169722431499370407283275599944636265121588040239665611191042724629399846249407594749355572939469679333876264360635028731962759673098337870035106924757587791688575049984041998756068137619897485440618682277791501128476505901524774011017961588590739217963837059092555178114651214662049234474130966572147449970504984957155401113203019743239965521435896203712278585140244294593220688352926708575755386942314683931809325277596618003791930771563232700237027890549512041178304765273477328744173497424710487255126953540331382080201190528441723297981857256804768725694939859453755439258418871964043547609440519848997898511065415689552895565806381601847554015155635081158656703128354645340257828134412117893180799826674005305468207788143696075184223053564679062447669072054180785588112027034975009182088459544724215342765527664209103546853483561978741332805453868412829317520021690330722549534887354503964141221794576773156921419768667601966501521457066603318850836834661857360684127744069166330070151474658988393428676297734638161096676101133496037940642795574041712501616300339634302351921318449745304590740847879629456014295159475841659360350609779335829566165857363144572848614105742466697285093771863920232703208064464509562099918948154443138752306759416885226640506641427133382797241676181621263050257541619166610391708153396387309409341267880625830413113282735272140157849209749781005226216128206117719319338433673793017467338484686663313923790331465823959791653446943273640209217627089705188556584555716567717493075483309790446046386885773084740756210925856458874902656593623186632110998671354440364724262403349409686719282573293426296606442565001256609786968652997603981371125007762376574962795650900642588270715535882131230915599104131367685729524561257215392291044653800176633132314179636434482788631058125042817753397482356653886756668703136709583105484469221663115460264381880489081594563569809001589227458588934749193727050084974889547508487995326886105622291136707009777086222280650050482949516070089168317348397702960920171263100853251864927220389803115774637299885112318449524560206632637509977334130038839167123741227115095423305719522965910546809576491954456208281631426644651071494559268409208708010290850819498562028993815866529954428527812869942692697682270869460969064108626886209505522153802460366960034706000745328369532859505206238371687883042101639030585277559676730224710266457991384375921061223224525907579922845868145924268145416446566943124557657671310436143600567011982552852759222394006932401327239618402995511023607582606356074901998416050795790302290393101870024775037076973613696163312250718832900227336637475873400320243967363908661173253187208508466848720672822917504250490162159893665280779692057144533138290053352510784450113376420080933243385654622482338605747593300563714635542145282067336078350506821778943879512891142051264160187296479526380602592210967509355151109179003000531672927220025921788174232286995748267283668866249609592901599148530365961408393095993062232264980655478250939581546707731809468378939170355231101730620918966653400384906218114378330694402972322026765025355524682354698578199235661283752004493160887118591334594686319530506033321347529269279631123916399552528071601406559346003314201035405011413567142639733059602624452880785715666212229406803218179262549391969832843671203722802474347447926993733780952668056724862976135959412280086466608579089521126429548127676066644900404306001437814495061223451025315806655137171646078656929080190663926542155654877500557288839933606264150262802598112919613907778664795823543995234794682722779320092077346392885929110603143558795455474720135489221324161459782409349468820889702507812058964883522636928036245295138126083389327607298718637149265487785666239828086028837644646737666351761231688144971363249634101038399327559535796661616588155463615218019425571042020732143138535468995842300374657016235117341717729146005695105683349055753999420861993148764801554930030014880296083088231798678092851598085572437355010951188428810924234666361579976891887596004085532438161579727021168039771074598533710723411386970895481298134168921052996978892817744564332119009458432646305662119821600765911433867593579142133638593704410945668422153655262937520817213390455558703907201425427205091303044041160546428804845468608432103671849787190627434875285258614558885318062649507237359548557806237270527471498119084165041150256138564557150596047362867085135636999130295931600105080321240844157347579435206758228177372084378570200503046586056447538516833394381888228426753161466717727767250930277618916295692735976363701498581814155460397841898107185908882017061455860105652441687108611003216878310142017614924977160679700643875595180770772121597917243444637640506824654468707528059676111157967572955415748704857684302374343501820929518490767354916738652056577909962508346922126362527420618112718336174613463685694363157236921085453672164881594911465338427437035077356129944374445407278311141166971146883699917724082495990367106071426875871526760761282472727617839022982701660808407944228541077960563982021063805514134785873059991741630917812351189578242825446152873952808981426305636940512823461301633654150647864799129195869983062064976347677226632900639718882860200387429926941201568343626234515169048142258132323631247702083164919641577258928263443147313236211428268632775998775234722802081270615277330532036822250318151150312846065450190759357941353200850210050731194902639482726716450255296588824951044154364755335416520890448671523117051760083857363277626572415608704926285016594036193193344469452149764000290293993193312377886026231015449623740064544408185179646126808130380122203253787941659336999954047822436883578661312938013101371777886408672497494957610851225859420849176338498183361461339584531337828121686984998492803927405746684061593173242822297486479496059237079976381939332596755568580042550190527604686917351676481596973968299543639170166735004729066951633685489704814798021016099672375450659593125713933272493209814203104141285108432502241424464615201178246881254608024910245512005070874216630581200826629292472583901454059029367772773599770037850175139685500494226297583056441035347264446380719706491107985154920176903965059256392028206873757192082055336346855071932760630557419984508998032502028647900025631251618603357249904970959233954104636961486462545196964907038679338763420631632674816889885503410664220472448633234744169687413134477465078899569713612868665414652997108106830366101614918929464780116808891384754130856499274372883505222348304838013552939655573272501852525584535874992852886028037824235058807227834555524263576390536469677715995631715971328358401981996509368675701243664842612904502195209924287041065749556239821083579990830608594655024784221156480882360784590777586399126915955315943215655130003396711731722697677373135579015249753277907408760227668284871880373723630803761020361126586124668847767015140514280531223425668206145616259680591879146146409084892506128049891693364962952146263109432212633947824860641932164932179494622052408025172754667817915586371085251699988979214206942525233811969153008692720451444313874306063860859494327694607093170468363440450682676626221975108942365997706612548652962339788762468494340398429887309002931511403650190191225542411677029609343287624450232811846039408189303890768275730762231979200977005498179155340325841407782540528299320058645569617531270680691481268742164357677270531089765320010826726007051414818282523235564637537063312618724765563742675318837885831010907215368916287974319086591465856929051348217849337066691024094756605120110403513057216109338323143053841802956962316097436194295056805479669355127019922569980987728045159899074204218467305064528613117783708263819739918638890455546912786001143968237493679517983129999599245862948358066129665003477143514422492353045229053309855929932402579168520022345826358298733498161101719735429210371813808165222384893699859164734573868259413950713896986664643806613246793157680523730029172505976618137799394090588762351116945845430593904846430328831531397245847648137633294008955881085342422530164228615694665262344911835656867674802775730575066556869001220111811963847003576333792935840919338915983244347526290500596041365652684980625781304902742000449628350750539273381693706385972980044740119717617762156349652492171769214803516406383471223825704841354751662628653005809863215812175760200463859113157039956491194533736964189755292526493108855293556624998171080697041439845102919420450962685220889600644273785048873939340265244735087597206657757998973047478657652642514559723315808897953629127352053949774739146560674982867961435810388704535297411677675825260336035826091853848357240958277934685954587053762928944502270147233633362417916624731571724280685876739989292890378894383030182765176290643554829686671068836346841158929298369555618581251844212352471536539017968345189937873739211065759952087770975468649504113485567141515709799370724242094800398796503996971714295736082086746434282798793353149923383438687518223919760854644886493732026106781289364286935333507030379788106915096274092495098767329241153798598798129144758969426817626172041484970268752971264371833332039586994155613333504180822682042960074906121429131549405406913770367054251641281847488256846811421968713316871821773710360100891807311061710445445364539897017606822308161120813402110410292403228718632241173875792553969533734243931689081908679820081698795268495653805446837154003453143006467259946656496211165985048524542008165169416924452013022112915371759661606408919057660178185567867661114248148653778234070207460874788953382083117603318612156992891063117494757211978532613910604912290752432236608647970280655382949315421594844386852487907787892203975141982082062109408865895104106231547580287153297515937443341650814761458179128553803084645013878319964725305542374979918950170769527969381460245501621609806867440555242077590119657649652663708027118486399378055915536274239022661364625569482208364322792625566943630803972991106595339101637183812744564849209706478434705565283664890515007719845096548472614495823630109320766684988591965376110521392437270644373451083274770135309064075109958906354983660311328922972010891129415184925162639025256811494815766786270315084302006584086091993325801871205709771928782769840444773052268534211203459587815454943286399862885033474900172661087017156945317462816615140554739294250855628205531639981838864482123872533374591898062973716738330564773655367234501249866495018742557542060204247030618324222956418240513509201881174758686001728015453697640607872295232697980962013580065491598144769719810305158419580300192705372415453214430947884392795557443229641737642677224626323363681581628527826448049180528500752729972294707929305298227790898380289969248529534810920940685150836997196631689522055677474992404047602544567093419368723650219064973234445476115634315350476808755497394348708795275692209716502753605929858911629008194933764401255189811725810000612229143672117106550066461279552728411502057282279961972109393484476623588563615175313215901326715707391674206091567858994789595432915363452347438849705230165257874302134219175149396315522742693780955762381250618374967894930854480150105833240188574923576970637609035843462795718330639401288727837285374027253237193753945226980158637497502138913997353757848769457620567797438076831173887195073039942773974502389413791710495545483672179043665019172309640886387702403664275302135997392979256220453417371965131176149847426924168372249430803337282729263947371627011934183328671441779284918788745606503774948347288910581016489833769241932851816089032330407006299171628582420145994033474566096583901805744372267958361234528284135218452492543497730977850810565149374594689133485048353469055376448086304910046018557816860976829457276899635668021116160183659668562039429731724318908874526107877571652080322180297093132308262924400109367134694481479758383526757120859460531153490129663712729900476339051110675576120658624076758796878366518975033988940211762289184938650594914649126392950279020937675314023446391748808291193837574804023251775850403398326882506154968642728464455244767562658382593765674109517756371174820996922117529055019513542760678624413318688790517736008860637257649326296973696851891147339753776556031129817439047586957423554744884595434741754552093376598557754628202319388865979030654676748252006488382044859094126759890324692429650098038866501529932089716237705249364468001281085705428723114824942879135234760273554787423023035202720381038661458606702786395924184945868831857005169837889365126465664794931107439091475346013431799354139549042596725435094183364398035489852530301298479684270175297142225050505797820396634973602148819094596112678150044901429298993114595456076437338962104587323849854916682558937776513156744090942233461974603573466498842943561847827898173282301000720935601622642623874668054854522120260897685874785072668046463218267410086013167034858663158983950538884745443040813971391786835837234172356090163156509197154298197927407596316730540504637532165275373809460141989072087788772081320036492817316215141982771004665920586485249621779895743003169831531031825685514839620843911719493619604593233324143174237191923882294394555907562568679372496545613172617686728081663258725260782062713479297088272048181515046396431401690037969243321110182176699069265740870094204970639047041412952161427484087153160426035920504563969678178920271910709442941253901849107540473288786401387396368268202232949418854540598683559737484570695607634941475437668315526612449787854593090312500479592141110043871019154786691289765604794077180561644992538666782947263458094897382101711379089707438344869924772696441799902621492117597190198222087139901838728676807561744502186484162899496641151590824622334826720195129514789695623752719582573559576168436069886787181183246860014616955696993452675704455734458009364075275509506018705095650912428342056521142935039382412257279038413964986151419016834134220208754290485038026917691485277726132991481963696891774274758579035601091314164288658581640303020840244784364280087553577649247290768096628929742882090861019887672274105500594417924627549001313305686485905478506304292349379321111362387581693522287284013522726945510230508921823799418031671358925335616795422911381821536472998252324736481274961860890766428743302960443831870850288574483050526754983096318976553410760446959004810110352743731838216334338416524615158788986100051834512003026559290806186397575426695203956847777195680341328294235015866369794993592016261196259874634694583148559823685412287775895601999445901753568010441505641354643730125943039915161998669539241193911738735678939181848801898454030615796457821885276675826215633710061262927451181844293659826496387519158275384816303784420792026796801641329509451859384366778548291512430506694227892935901485073150023102646898827570269379265336266789117026960805384154921057377024090719283453306111451081541872530523636302763464484412183810299074189241719544859464390768870701129864468993050104275002984942456943994816708153439511457134145344845756752832505199944540636581268870234945588364983797758509122159725987225266583347582074152560023231906853742832210989190636290138804617327888336932665689629375754398397954721340523256022212164480329557171421576396895422365917504557309214668889449588084134060870213939380375139873213518680282151941102512877111034513229838821548511781359595025251680462773864986908588470542070216919703127653956620585709005944241976947925867788854194446411853874234871119920086428641871845722640018674635887707052260062072400504927059428159089705470372620123269564179132567955563959791868839933996701943904798773770689697550747561370887530196210270517330215106023205161503027478749162764564752889454453773945392406596615262854742927744906657486949405100715603542727410877625217384447406391565376184830893940825838862782671606164313828175905566895581945512113182447023314707728903937553461418475545725300106024615260017491426748035614051882472152228165159558262351373720419776801679314072651975969972779776169944354323154773931545917606464086711671303773015816650964747132326145165744814398264567998504987325748720159691297984255717483540146000722146359468531545028054365006800130243113207207585779983589815093997691294227084123514625533744732812835136449769082053523249849747626998638174953408383073320893321877602435508059092729734190929701778331609285213437318688119736408421055596692089470071987251859767335368534895739563221751247932420628763981048875476272496567498881154319628608608255036126949341354517643433169965335558847913742182101005614381725820917334531075357911458479348905205302007530817213065703773388684617066984053684233304017549357984359225324872174670116631896012107894926907335568652030888606092028537116322869099383776056105993285913479643076437934116673649470824439406742486819667469107220831887971441917132629373667302690629992495043920612273234286700526915230625142367821575648989308598534387586958621342919405013846286881100279295450884454990023879393591099461170524974976120004264846075946658012392509289923016105893149269627739271159452321413969498710981846299947723244798327995722481844516449924836684235011484903293446802827148252424096956730040608459310004810968997729618112278144358667609856708778997173795650766617064503495678902031056216370568392816754797931339537462764570467999646688759516934454157182173067615001334481965371980152748410183766878958049803561141859262880389584053222213292002715410862438862187253537060313321227974113254698000962735497330493266989830020513751053374422888251238360899262040130626849888065240251106995677098970999689560117449803689637170649014478341834681956480737127996517291736128084549601200601654781749774931297962660221447095982398103939484566546256089867908641986209518455995425314775000381459459772163538414683451084915523136871747544865379176464165849003917057617787538973694137174700195164143273966157009355366915204138771524957085425384222488260208885866240669616078294612683841734604823205885366926035209134392764901895713817522477178742383331270140309466759143703471738824991281325255171921839645093476239801001699151137434434919221048871033530012878549054250333294925680015596662899076820422237270137138108691713279645661680085973189993392592766281810607538398052354932681736706656373798354445775161517870818637187310031850036829837137786835519395758519748087567091687996831412237380868293190799837195754077894981387680462024736458268442194616502787819629620629755354027390555322078856807597067860391114650129279955900521985067243810896806953607029238103507655088382305543104491437450007875846809295450410823654722862548669068452099666937181680627216273604333503425336686185443332474719106997572597250969480287913926790527280400167990255307819960376857906350209581792490268300111133212213528098975572562692773865737447320577078351822959080212105760125123574986190784381695775173485512192461829996296808192551666022467834215659559445416463562616102276619839673054867059355341760794566058265110794753006292492467592487658631360835902304569752628835421445506892698283060376944920808291537147998070723927682995340625871202498850212643360669345308087032734186329930490926989301712498460958996999138044314314636558949121417053449857710747875394062735067794811993678994594422346878063872188235553868235878848186344829083360374357878507857895775051574578157701216362648270715368566040358260881373417766123218201429294103727971876516431367839589529344466063205221731002054285879154322893574085404400825019415627504116457833723406585991035075593119287673749138437815881193178154137979012435621761981175392385811483539295447033558255309906743974554976611778706243353610998265081936834719685982242777793689901047261934022785558919256060810362905998490743012428708716795287982679805328751772574887104482665660924327001116877369032614119939257198147028107924890752001088354724829969620127718525341111940376220209683645840065541512407411869738606448416308415453336950021043288417451055751057167193030810195770853478373073771855002417967495872184180422061190541015337724936269592093679441351729232122625388978573484988396963438790626227986009022794919925956236244232013911276507762589933351473241821449037954038066778984776712793260372242283350063021625915983650127322061396113715742325863804847556540849879835757231290936194991595054561517644768930738088310999288471320035794558496912949596123142665851960909595540809278924089785991829316269685724822629526531710305106171032398449711355302749687297311469424299201705404722637537523723982270601379252084522948579645398933193866592047609243736601259253433569547894121677482282462835983362523835705123769041681366410188427641245752034479523271707117281302825452913153952267949675892668233424201538945819244981102999506568481906020839251640637694894536215834846762445927775768880749965356040148398108464003201644170159671994540042950216023699585602568492971698898912803549156955792026836991120671034968107311340009255407124700012429134466582865778676717364473628725769409440479034572726458269201751563071811115136231894888026634100614503925310534981868679661577838764743460524764341268189517017092076223704637913705641573574332725503780237940677952185836622125172489604035626438849634936086156494658590993556182827801845998942661383389203355655335249388447920719995662088821859296515643160673763859467113410840750635475154678315864572700967967310426513788161322348381102102309291043379594797270733836427607145176995641257312711777043677548053568317535041379562512654688078940169649666214326377007778559802301701867573342131392227200135852567323696501567405236718115211974514404380294479658699048535011962539411539498093253612736511000396996254705742555786578563124788339332976450548224767125347696219565161964156868833651311301339671393443672424976604805161255882733953474084910533268030117603595801235176188884170265462135031957681548460112936823782314358547710099997913154574831328164765737897249093114166363870869958037757020925775097213259322534308214047825068258322437521819435619302353945111674183060482846034812559402874969589215960075602003535874359582794228031045854690905301090736419667962023409922256901185873378542505255753768405629309666999838966756140319488550783937071093081945121112787648276878532351678328623592506816217145300831431928472901728087324460563855701137848184712356806409945057914970111761894783149084632528224203166637535915997746119882664053027110096023899456505689316387692356708377614747135015875876401472330462643017912262043948581424532506665677724962502781707153585582650199041717421245053583272905317509468959808468637341476203307408679268531681161833674367334916307951522161732340263973160173875418294304345163690696376619157944607537853429488092860434833315769644076137899676461872415638737411648888273088558565676470475321610249213994338439451441292058507807060747415263371353050518032302174898622781419705511913561606682595609573244207898443983422969239874047419205384418470235639698533527670804474369086184887970376507188151232028684435890780644931821403551864415237389728414977221783187191875189348638241109100302126787533569657467650753369185444872369633940714842474978317645590352124023563342683796616451880311750193572446913287099503996704431163148578123679342786641877607117252870902832228989980634096891339726043892040897091970543144047044739685420936385044316316485257506666350294427383631422446537666819328021780338732181837236861046317109149738403857133580898269675588503666520733313582201683210346829506316825018693748064299069752916801515252995005866394803668830855876793758999064433013980392287238594942635073924206235063893537195311564952592760959242059246261998586137523361849716777798192533258951765447121757074275788928315684355958861969326856786559462688445424712286290183952755097002108312693838139422605232953225510142911391839720422237679187006608082156945787284336152478764328958114882261267263027198437402473129515198581524744912679619306556878307731622229421129545097183878492026467305568924089599974035413862408179885179487947954106253478489986461518315037789097189925290879928537349350345744486276717467617018603259544778129746794192905268341776340229770766521360085766275294138841321084786065258435803690050698165547326759792148474560859147730624531313102053842526351978512242900317551943442656135672487542300677213245381653765597568432364030612915685046865378348503717998871140925343348311951665384839712456922126249046528698694470050402611891953221686229209340656872726054269999508980386804220475021073107790737250926475501335989351129874487551477113520552196802696274572940169347797774220519360505066649573727521463770034033425331806438995958337017901309996723296109418383711856890449871796217347165643456644141534431797262268141295020810265907669009177102359194893346018838359726159322064231914607457882101988025162657969360789481890472512624406724562139644106007712987979387417503133899806586796235510113510785848730077793321046857778407343817618170261542608375537675961977393351098260426101126163311280369717528237609191216423403708801294587923709359335410961547883681923761637550688094251628802595086073331150516012854090610336831042502223575786807847007620685365136613932722063028370637724096787273443079527631578206307481746803137341033514883898942014085270101132572186869912987462104350968431997528472477316048001972699381685069749621211680652161397730675399816773117361877405831261467060948498000098396079280594288623300934343495079850261400793852878631096730733027662460840488428796348677753448370932055995242364934549263021655161199451215541779892273113550610531790064496315949350090490264946456781190149232171273727934382865399127608905416650537867198484160428468703778961003197987245042579364976943402797099429684494307490082670559876917877275211689469503865511528603948231706668362988625082670230382635983909252598803305199593728304622460357613817556486897945731316638963295729435073725313488445331313903109990971280232858164082807943518070131786304266602763075511054088663290969877189275517568711235156811659578358068041159130640766076522360316578798686926347476680806466337505735846073978067838070704405071496906054931467749973286384019977210416138327637555728084712071134451715106443145016291405749933157225381844380732584768093047532227249468460135558241738068432276109116244871761038621428351856321815902984810194700561052498683431050914642686068764649984830462238765116677480403310303204786452077095980468053816325005622599988387704775722047174171534075253817409984215972124727464838485328626345776419703525174924799309091928221156630573734834615288074479692801467153436530564115608443420776377068019510438011838782033091903070415141891126103306791804691260946947298049180580903224027559540331598044456552178926753821028845305018649361234172647051306184035060042410367067423712665316496037729256874295603891394923490721875963673340464257998387652699770063409668469596111373401937163642283895166801695222721756099168230207302766428785118150652020826185671057166165893196523277007773896680048318813414513778582986015441044933880979522063746768127918980554859104219350705746301387155993377192207693396214712937457440020377998571474193057038240593199263450833214259310243642818354212774722260449474987210981749936175787460155715917969386141373173567534101725284703576645646065159101789803488533279134559160368573638781521619997561869998202533702059579039945013561254956811420987377126224405691080224928511731423552602587070712812741743578554303204690432033487555502466757676529212371684726357772752381023324262498411778182748028603249727496269530956609425383320866554780945157190514398675986243035642373151869856110619927900536102658373755058733641620450737535360650496163309976013783266121398854472248932272528598891130134785734009688115516816993540328718724376651299458903065983961221725364421826798555277729660251277555344709303699186857899793574967107476334212799720713982592152345752242252591714241766252795834197414258301547910124058091014414378773568265819671621309530770905299964845398945485398035785483528948051082952448120769141713443667156055662216230615224601451173035290569626813780914803971947120919427357809197329919893873249556023601185159864429944961475725306654369869238458059641863046235390295952620772260576197630806603791598093351673718183341834069038507777823321424735695164152822978897854911381770443560866836599468069757011633291645393786272466990512674932352646687816387211061102724574933565532284090150064764983515530553187326771771847417293017666754619167177578858829791304379811601825451472677280222774856210376329531425388720231647067616982130311788041210250331094854888239348798289908341443165479334376009811515493704970244260185616189771715652668538279886032765373964912897676436477185443665383884498175980669277230313854402172100163991948424144816035650327353883011789398732506794069699261542079883573291651428477984230155483092231962661946304652037295094929696785986164676981595276680706034294045531688694701511283317222216168556141451608899654495977078789093007257265543371967429309837274448774726539437310357990968320387310333022672869310408881694867522999181232056730850990581854231220940365073050393219693042729088756777407768867261864336024778968064427628523466008514790290473253645808887892754197321855289739484109028230081275986665565222688250233182065176136048585066934744643440512813941587695482473592139234162614282994114872119052204317683842845671380167839999876585116118086068245315788700290987787348056908424084784922556444785539590045184969842196854297436683111441658070189824046020847556158628963900748907397931159486258332184838327583983142815672424102019284721401010487740629253318378996772126358095947643035552713889865525538572799788703255112873263454412736007340827055959156960870250529910389166578358823615487868108228282517970712484328759890281488428789912164719905947676956187279825627290275973214866261327053114307871103865689164229324446232150468344627818236090822052287209668725962523336469430321833377413854086780291807596081602450903890449302238664764363446029474132646102020415641909295008133037446862687695903380492133676035300554409507251698784159911017677831967298053757300808087184197148947266091119767465982850798289472056255452494967314038006313146222204595690256293904141375558986122532590421917166353472332717853859191468398714206051798455292558430678897632865972919849624423558109993754697025780406384594031989637218337935823162425449870091185287232734770773621626398726117500155568329667918140018830549148291917067986929444933779115022986604691432669380648396095442051995697708490768335585423499997480399620820420879809379088861095151124000539102779048683213908267792608792822910816234003955362804406581163288769203872211424333034540865488251246107752924691284016109809423343242500499339565519517129320031144798866979943114848474622022436988796522032866445406194907346955200566635450176211409601273775903174167687060305886679195720704162363206850371471069474990246417771053224391194366607226830313262777019414435243842357459877934783278386563005278975191673532354296897946763951309959952520128200879323132890352349575099011677951599041948081349025643381805912309934690573067628735325418188992951902638988452665172243028629947293879999340064970955965145478942188774281024504645423362025298550538251381978677043675175430515295514134606054813829441994516694072663121704983127737402501682671036224387099940401106683611420930576090476194522324682242016350235866691530463670166939869272758506849363005796645592551177691448004303295084284163955022536161863227326984349334045384166886963260677732618996604755760529090064060236711879307809978785459204154616639394833938099657488904004290608120613445588272625168768994526612934210550900965195629885271371816565099538558598016687795694723605251515922142523853589759730015218899687926102299345968040454661919074526224045250664222176882161203980435918888513355236441630634740558241764567112896795945980017382085815520953423758782365214572034640678322439078697463415507076102777139834680471843837959839700791311762452680158770256910953993517122799802885480849060289768816276310766774060024260091948841360516293198118889095367829434593392726744832080461302771057894876813075584621664136238237646839565043002879233605991809567527777244583145992508501729586728111208537676929984477176997325370868646351087252833291236850629870125146501015057889305713794155955389594013059839886506967459111290950741237970793822493922310790931994673092267434494841438492778483393461652559698910202464449778422152260429698144481516349180023867952921607487126002959971257273727084734430050073313670978815080986836911454620505728707580338392576104055354338434617514133369603713077108227734527453220419314869165286744912671816171181757601440004669524145163595094709114829044400939904371769317324001950624771751256793280731902822978817319405291917645790379097467330688350010441962287734372305211813886486934490292422262640626506322518689057022867132311295127110297736685923828633685940328106077843686257697613102161961038831268449281886241999545358671078402517953900646830946848306007850015462531529071310682460009506582385797495534361207737914227675700661312269478867129825353027753256507327716875660168732236316495517891017634270786360854062099287228704142865682583667147654335206199994818983668907544215243610921193665383796173941563643030249520434599830404923320402598199019267881153147957364640805162675008688039040067259078436894401627299449668612700778089965372797474209870408808586974216011887555231710550311358999838110307663555746845767085225060550388210569641975198042663913934413808879692543781985147716988483437956090150630656902773595765747300211479327447565837771070977168979829852262665318100118093447195373684923810548453432818108830466078976123344798010150005386045549607169997637313204467238370299404994422915574278763377174225986936290213900183175835553290822499378792014379584091185111790800528424557336564992060332381923752330750460334103721806286613674067041043896937773424008484178979202737886469835661999582741577411638845647200178816786950608843388958087341973590384967180570600958424819817703645199124109204260937329904091319085356093730879643003489180619613319663320097038178249188206030777296658584730633247112873920353817691976926373329648037713841716816728078855523976172626238320758740292004772505025673627731844094187780931159389489960368972067912953141483418812597891053916899328527765974025853633087183930888117920869681103214962688342188682634984212322817812246671311827563915006752008287010878773745904303251372575775170670227647623932807473607996921352734699224713115990143317967169276149393054882447596107622123790497299036470863393474427202328772246580505670019890716511673705288660780851108541113773012763648482424153805218539816558274680696216494518836462839657469829286976349446508212263968456031718810979950111171995029438170251116399624417277247685434753494489862357005369190589669178060403101142367188104792410826366382532476821949269860168652601107350284085138615751262479717664978187691372434008525716548049342279619456078487850322838744520133589307501656003872021739730659259164982491579686909619698384257853765265176935434964620815094104512638197886655310762066268909840119987454409336048410000446546756971343034074372176518987630643104218343359969590531276733430593760380736957532569963279124929356568013395945168187854884743169147887022075524597082231186030161784517914682891622033537428936202662844933869352343422304670297280667682626369310649410097617308090826154914482993614189601602733037204745367020890363399769629813185164157892725186800224552209494788332002023453953657368832781238233651009792385811846282099758783439176582415590356674757788294008713116249232201472403559801855572561535866116070049336348845455912788400992275715473312287449902954664295525060393350558908530187224271462083575115399086189351179371332981789712008230805630237480076105200748013508433772946497191974632936184513245391883947672621440283505009128396989112333970133289560010551268235641793051393139840064787021497017460357500170785470704467977997045578380654118400595010322805583682060832298970357692493689327843361535075791066778084957196833597170225613817654744298450151833115845767439258063822878168387873568731360637136996534373558686321608115677728598514858429348683165988794707315871264998912185150082766843767799823351694175875650385691521430079604073396898015419449547250636675912087406926844993677932902456370544258618444299558137536605545714067719189973138710843852723421707985270684953214630351037727105299041597168756199908774029242547393347554059160674671134512337417890387824259814255363337905577722498304406493441460449242632768707045552000841506475488437553686109502688434817094459555957855457958682034900087069984580102717730043975027759141350061834793280084861162470678511374613640921164758914851851902539748633555867118371823898385685435885906770269820338620052906669367255609257704587078531647968221491918635198595950703795979378981122668646691194735720958302740893719531773871953134566628604149706642068374615318464906024724161995098122646915186848078695244653637954365018179522902520585688893489072035984032338762457877068284831466336544602795888004163951082588743409115655654475602641384024271572949004570489505181575411551939763965719103323667222695695352329557258845972229241621395366606067764982497088581769825600820216571564625463575549662649345021565579606030533711210739187097852515054286675738722625944367960894630084731492282250604919256159448835269850079565218911802920993566208830311243936390409516188722841476516179842154800018424114829407537878546217940378793647891671472333791503739066076000118762682743677040899868742129376671055062276387060981716220762409095059550990959068013267216910688213921572990825605306556942825057280771673703633826686695222578697275511105589876060472704844603309438860132378103313236904814197895716416443118274204249799589035277245174880241436542197758053807253817495534229496323716638549101504630426056351924194504507614398217393307069062240592060976192785708173847720825696675963629587077609788777176923392936147871816972635887375408260700366173419611283549850755888960887662710194641904382319467632561713890299927351599275266362014481173411308742975649536247166332134635611751804012043185355746394230601735968803480699000580072977563789219105824315777651875468914668825999542849801819156868317093842041325836597881604272908332461220797765885002137587395152491524496157504416570353362718943348308038401811087221852569909168984828552417777290335658309489647935968385599832749522414808492641999543204315805862279644661816493980797037162663357822161536128528703767897049057247313986461135789585056276159582346324558555096930948574367033565622541382914124157185781073110121149940821637051234369800823956074178243496510453423435746385665369473862077123996519832631070726602436280502370257589722107679569367618882980659332410723385020665416826411748662367032732211397777969441677694334965067452100065222955740016779454205910973834961481764065155882565632137989423949196272019367352131862061666327880948254775922764325932944843127914788993706021538837939947884806306292722753740226058448246472998590841017417720484138862701572895738097993637420616794340630538747249889753584436046602557967342182580219067898329902536180920661863474061180084492637855768031657562362769827422401360414646437430965400227661278795059181452613302302887377087175988592300343456197452149026574383788282439642779327362668844486760898746444482727630460653093173145746898546132550154168143155937404049902520532352185081821295179060724576458214356553444297019936268492732171775834226626082680595909070467494834211036920985351417760005141580006505965295939344499821803074785777265146639246042576642004994049609823517299331977690644686068458868130217879674877649564819061817988328564725171566247523277578012747119660618681671169978450556957739452955265403718282518046284291505212760259190828839375967796398424027323719012030535280056301139536091042857061384227270629274861072711085014383294907362227236673252432910542732266536955537924624043783620115925035520010849979659202786966765008341907706262817933596372039696595760393458695116440627188560791869420085581705583526145206650182884401406124956182156142262595432397080996504329396098300505371259772854384378988399350805377138164575350652937619820375945364225006231739626495976662235345790170269253595515423530237743919681328768076278366712190380595786847771285821435535114312198181971747068830746521171098794921160544614489731640914868083984976183301210632777065814396422038967362471875624483885557544523456142459912483288408763763509307659028299149839988316528310843344840710099961215769615421182952834771587970464038771862710850726294196315995088538003503723988964982339662808836236787920448398364501913944567301933033796860613622405532770871397502474055008285526173675833206732719560622936328785643503824630511646430760045689103477476730444906403974237999632013676785134641973340125135029298259302393097838037671443677746090493931607232727528209719694675806794423282422513648381732465530883837247749186906597209009557594175655700496397999478371095572484040490680497307850965060603941607265175858525053732492417920601290937775348980139334940413484538239358633000939755540261989469796912401156858348781384999992262430300085885853428712456446142062679217326551207550147090398187456238373076221133215738954318566439955307370118951845956040747018994584778556279137447418996102774390952592971188884764076441375598946110685886657023468912708926614192219950398003785421444580965566583522476293427332406448419328079244748012262434227379501699910060415308200120415576479126723154482448678390815288233905157106924893619318492259482454278048828181117219204797241596704394500835034274261393783135271603824127507126842198400629580403122115817436851586484409952833516384931611382562536806322063004082382565095126790743978782219457299087933299333040157240254360546578217466436176799124084558727423801854879365167125098136781964497281859575265456353504037142907844645333846745112233566547637592402152556303746194002355280139195696879030506961050268619742324399014470400689148471413676271515738169108883860800821245604938714596500150522277963678916614217259098095745569767801613262535360513128230663253490136654244885370849142718403697699915850961589535438413709870483880689202629758798427546545538915392471659059285317454710960831323939420515698699382400326099029054365254563208179687784671257253903982158333373185460839681461004773295832427741143834011283905401710901629416185339118834367178500945961702062220643792294232347523300682540629754589851564585401528605952873266831595506601343939522661504327919293713278662989815115414389611803694059900789855246038420366177739213123948128331502207024678936272864661672868156163626306480432199379526216489312412814434610179630109639706805320666147769335915477828494701896421175582130213059211517752367287825750645611814515446375936580235752844496089646228432079795651940892960143853608511103330659264396829847809075372612282555712541586193182341011614413490970384928784162398248258062447714471254605404362476371458889594182319763418344953457922586338469277345743156300973869442114557613704714533767668847802527600056845098514069249234559897479237050462427614450460859278765279199206004622433287377787156332936563135436339945853489117594643131666191533669358925798628424474187506461465196125477831057164236551699289736364123677941930464228449490666793037056727502302844073078250481858628765814227338331425669621732255106131322926634684147238426049427119903624632775382285663829730953898352987829384731490401746073883201879280510953895110634916906828784534183084204369670334631011570563662376658842558563350712972770759667570464768239495646918668199676932045216153748926305802105205004806469022661315671819188489553593162111310208022584978674241677670828539217628080562132398478309068299192379060829257133314635033141188843247503007468792256511600906115120280334961372097052236785199713803618023621376614963680931280119846316089917097760121712415420133430216732086926322979305593814393072367732262568417826135187398038973463403450384026680787984061925256238679669631634108185407847000413045712244544272477133608540731282625180705610629814279506876618128368466414679787971821703729715666113941791276947044456033225615510736978020918406081597983419793377991385316054060112768987098346927735842070275412747819518482542714781701409232735866046458954175767265221271384450443019951090693893193688505840681595030736539259536925950682260697481871388850807508862819875632072587993901568896980696374991420790955053487135076283724730249515171999614860413209197495121378533616418160097285658512445293941519291017163180828031364457609073053797079678505884237021404475618417358482013386550224846749613981727435957548274274687205500012631531345844717324778539683977806283464901122823838764386708543691190600037154603681310243638159226738970382138687648599592528419821430963230716442149672813781077417516701912014977589474722586806612890811760690422976375796658599318939408067043812931852990204085516866466454912301861518713305604594770505724924079645275456147713988779510615582923787767596426751230758398065596287903923008268325628536847186145087477067588709067343863242497735667554526896135734982878501647427216847849490762875523579322571503221956468672921037315618885976019308502292616019344547042488848955643725115418999927376367793035235490440541315662560110324306121925440569355035843362470636188575649463443432342393831816505664363297866884209124069639379789087527718568677835787130058529742743378913095656532932841505107801023468730968913984464029719210190439980769082922378264413668721928507077098344465128602703145413136086135579228200304503608415167432370314795247952907455450484335125656367833903243132383464700973863270286961454002071985508253302760140540572338529762168063727159013378173601671418712215728811336860060288694183185127028690935230249050526670389618714970393982799189790244646005495759044619926970614620268604803368196642480682569911625043919642898828427634049379084708194414109414253918838763350314948176753378028121055043956339197677059962446063860196553035960320139618612797229814888420109310553180566449144609815066978299831687451539360786088910818129165284477022341035893414639213810359727962339130611119350752713401839660971022711682224295094524095218551432582931725919148193131793214354584409184495479114192411549368959113731700484666982829360704902824506495723918722919047441633017843336558614145361287330701626200214625819078172110660229556988418714801765058630052116866537663072982982155547514267809281353618462488163480727145177055193232502309747921764718635479157577482426765226349676983505505780220138464983915856377206364551077786211944856010138424316982643955456009568013705374504307131883008272070130297661816405860580340620374350376194247397661869867358204160285911551170438473379691261423180055367849959503500230651994226866528692643575236609584524721639494595711877889175098783611479721958005672260260011733405401455588067885877882511320641566412907826684511080357849138462656987727292667080657261175918504610765774231537313577999660484502161753552823265899302175030435095249686060084586871734495020610237619581217928583594064639113889368213220897830009120558690547773954527338759936277766692777817917573415543156955824213251533044167006668741418584690200279681321957471253031564072668940536805216384597675176692841197948041683012780892482137775367236180054341527046619144883652169395531361337221324583777836230142418185368664299373548258425998295556418295745152970854664945010746916258725298770507898652977086964076554492204102270445483211913183690197991343350969735216152861722270158407487089386218323029594146217838125308009375216679744378740181251608928780343679395074302605195824643283402663850838751426764765441668154221277391645434898696996272107784240324923121618382902869197258245182300900158704703255124114562185455825220355438259428798617664397183951863144709746505854330465126525868561556212529659766735202560344733933421625360676442917814194223306035650013355737926624453331264520627111352896148460925439722172880735282982279638555114641215391250985618209142865878746076340910298387134045468790162907219199705686395616199360805957868920844880836421545152911418976057848054895285276770903122625001753402041967745151839197831709240804368786266021004060266243688054265937684598652907661188821652905666524615331975739026630390788442855741354869304667642353246081200188781273975892172555319411560297346735054888216451962092002119346367136056962857841964147533940556569816760529503512475293448354226740674569742014639666887699502304176581852695145951598722840129856860609733280676331329278418317480515870206206432095739864380205901239665965081928373637897063964868670623010591377507354929061668996951751623801562349314313954685076371484315404309751597778429771813105214775894633379481976008796993512173240608848833796295224987637311692348394677467122263199847427702572204556967559859635251176807003383925831814568030682181381261909424485901728377640815357973878246602098843405915403644278705717603870040211556310881484277674848230984956045034700375149526216466575181922610758024140382649705543197124721450841162902471760173728039866011902301691290556190326902693504802823535018271056650363893746475487306696733530071305487948136716762327886540384089245319903708037892755111494993476189095568538338479277607950644739510929281374079008029439185075621836070861005097679229293377599211522279239307242515420265542357599354500307574623570592865768391081926257842990376102562214135885196705194522865166193202330355445448480674030454885051514128268950544130697381632210105378570943928962145671703612926092946463091830798237294900069344641365351925606116544860807322530816377871555076463381919841579878224088225927728719106769721251900082702225527829077903925060646086541675499381761822389766012062266989416257401856338787623554473836209405640142201190815733119256319294587153743964852638778452054431714474469538524671229770424931706280862395210959707115391140230944632667387021562927783503859256260210710420103915618384170252623817884700423461735401782152627863619550327383719403618515910026582752502788821038790191490479701810435170049392993488264450821169310172264496438583197904170376923445608049291751332070687199838263092206054764783146610631170440019785232549938617360765652504378804817721328625111602636861539068907052250335621915641264696940737215376708084285742469898784151519416241987107516825621701178947907430500209521774378547135196104390192350019561388315935104354531211809596663274679488088761832383746739576326575285371510871275248502472984071327777197015421636276126679390314110391833529645766115110623102828554071796516817107450628024623558022218690209800667126658396790354303051308661680257619328369670232531909681181563422268541559645764648013165092845927308162895469331938929585413385466863383282876670735696186598683570542990442915220196798919119925298619236068658083101652738464323757164487848980682489251714084231484135443055441164625666186046222431005291159304963500652250467411894784654112646840034810970230161127180764574364969584622493244548079708303204269029269236142030218729036674910332616100698812863735534578758176817982609999560033932087606960409756921821145567877049421626344551393047600185473792836552499471154234198513422726378747225395260655411214552796776707520064092566451094575631634502154623309326066685362247220635228964747145876835341285328467043556085320382062374098682144025035682690159161726797169015214908754993145244882362742521953502933582894876161428574099674993591806281917169624471085315684965682498436870512747028018420044037844920176241867595519859034063798273258219263630672541853609315296676031040929720499979073274356545731971983458268872099631590567683745141476356155080005862404643429419756432152909558994397634898822642260912866807027366658039799121949778092305097295059600632216711806251066045509302837413462330767247785715404149166759898741568880336508185916675993375579886159315761396435103860386240091139103995912217756711934908711191543926857397573623216093213977719955304463772729429506136954407297344193349700053532185637279530935075894136770879184100768930385383953933415858972964089708715485233915341427187967335501079737913765257304300919566976066880630939212150503758718102609064545522010261669905990829428299291554456882185907553291861508620889508082567125257567683229120060993347317526206109621951140922177082352329747193439252560454534836990914584249927450985835322683139962961656767355449428116419869052411087941151800480117897630312421199118446954243122365170139193044229142229856728501647036119463422025814362602877633294968875926645167144018473097009102648929708921789323522691256713079157323544595852752662260471542422170708716228889106776611351566268745098772226100161880006151917911053946328284864458412516028317041254201499939323292182713421237217101138878873547805723065899618767970420960978929997054968218934657674675194337354780407424591708998326149434370740149534191715666308688825314731721952430020477206633226689793850195510836468153152635122105944283330956253581702456738280562183710986146106068010331700781784724868769688789307048003188851951027388906210788673943592072327413669358296989599781866026741033621474316057820862513692569735749921663578819096059104485705651480158338563902971485118398661009497235251931796358596291344276989006994998067776353650007275225817652613278864095338959060043778649933893467386260914085017057114233795165448382504429011743424931080281686571004324297265371936825608694589988938074521467982055288678232801471949976339593332269610627127802478830660476808697469996968687417280017512286896939786821863049277367992247413466334359047789614355208668455448483567025033577171452457014495004824519058114294736490265189240223492988377521796205124109631551212501247852868192552809524590969337625029945085174951747169364185258680527761378817628500169106686971484300537555002068632911031112786514075147804362251809424364030855106587078765195014880735232253703758501454562658283292350825219821578963457331257066711759558642176980977266060039218358586460253784728094760746697370474833940137317786454919286052015473080118817920239075779678372386558781525110439878003895438138582248561535293882093347064308180691275682231672373741179290813274280976742218808029041531872108987468934266617068161211236988479400434270886961001221643394861976001758100967471736492531999508909943584181710801977290120009506711870567667779186619116104568831149120132484804394008549198574301706465058163601843091434211322893758838007744702280948025628365261483029639780774301686223399967616706865531956945843354930415836557061231295387580075649100225331440324636772371538899074608464007712446211558061233971510220283909087265278504678966401170435863218996813266641617840436813161571242364961771053738471768519125930375766558230724947290276503448426800582907488461803752363923312793013235001337792634864157609252272550949777498150335318010279408917443763407758549227888452263303765424706273410327807712415656988409039898800988004038882386461272174252405753475688960642620570826024875757951001769189864244438769656295030657606565896399701742129694967913171399379796338177355360003714473566321357151927854596302488489531967708087518616661762856857014112580617722570037767589781447844504757428886251879154832713307878622677616806225342583231741848160327083293286772787162906798532079893729938621724716201905333101301872671486785489450348860509355816014712099755108625113271959957048550196278575600242741977124546452039546897952504707092679431176976353616164001661018623925340734934562367740354263808428007742943179381906183071314048532523565699558446850446447676799693548356537529909415139673816417193829817413793593393953845935367714469826720436754696532723428320976616017230459079550377615161013354921607880486185478638285004597012435666111531668067099036351602916974662915522881568386193443213195459757837124326917682474929414291842975804078319221582766884405125886251769117757039414974693875674031614031415991456046475520322736105465619013163891407680774052729832773986743497090205936429287790287085927902235630477990273093806164159739194852265433443039321030558331912266252025579662407367971479045588872545814672542430648932810693576563319113012941674595760265891107748535788207539368144166610420839450019069313314570207647762902569969550126106699620315642956205890932585796694151014144931064394079663851271930242756486205611373597339680576496288345668567563676458273141139547491509322589426913772230582530021789597358905496300085127666036545930873666091815122234410889740243465867343272642197357752473563789997881669523821662595770823269232567979558827312825668872692131435733128694299176824154257981914301247931129033015717983244654559697556294828114187644099579074542838710144541544942601128271049314798246515288146389607490535678415620679371087921406301164670787086097248221972422014535481394054926846549945543425812956065066124949394028218159320896773358310116343163796288563350928259239227801516365598117033590142096693826583282410636614505230520143042202350446343050883499244145569001058819349951570818712648501633495602889591068171373362112509703205050717569964345526850056915837239239249316338616105186269685899522383840429166866460644244199135836665863483392284396672546795985848150652487158696915648968888411512987154890335247857177580768411185024159426381950917031152117652873092564273599660276068109289635318829971839642641111479575741484188037354730127061478459029247796725390051976807590493606688514698601894962286860172863732834466813702759395792844806233064758495035278040800765747107315520994675263952280799415505321178685466193571775046306351083322199446660063644727587403184812521015357129136157911816188674213597736761866077250925640722314858953956036570861642003598300105682447735398809396544293403458538981581976707703035830448921913807612643316034287540104394525547933683455597349526520249823914540824490329080095244507176464039820011545716414269812063285605145726291124479592829171199397487285032946725377116063813060106471346443050540516444805344366144738895901859324670391304826494504676730987401753194331151716536211407647600134591329802189216313656428286318199121608441083763374884200055266255661137177885550239733506578285907372487568125046297109769244042354421745068335442563305901965977127296103967173747922058588366104345845883139430362720290620693416235678046674108788392660022126132015652782030771379269007100398177852320084852659292312439525269192939216402575665395301688828047845057934341388959343366064710504888173502991497885081359075667809269755096957594884686325710679389450744428968183792505447985487834658145587545859298502278379455216286791704314267076407200742895749803969317893329240044582917617861018926759625163377624550112439917859762521810965859411715558280065077367832204807934457483323128176878546530056666254961366329979814527143465151726811624525103816033123444903715549316715909900646622608519978028314490705937311129083234710378154587216677878212300018839648387868768805011289395409346006206934396260927049556911868757655122561356752127834015767276198754507723802068169437157293249137750412307981954188429186187366328472458683592224167001608573723791601644027518666727572905440877671488882706533214064461739488887735225464991634419020072723728532297081213501265515385671808412202815324087343127037274564602532815271998589623114842499917368498574684931226563677722395523466281424319037689900508527297704043958506750644953748520263778617319011443535630091330050632041617543081183067329683515011568805204920106907658909506127298081577306582079130177185676284929362205326211701635366133029009982514316049340056620896653266570415346139313484142697926138931234864030569715529176615983320478717249460231118706084273768536262142305197410378006082795564084837122900879682186130613091306235227108190964896644109388023527942463427556422460507957946028601773058989710348229416972204992728312756538069733045593056021771564026528221639239038783051537997659908652419536640095923410509026261866679195145040307470814022148071843880990351619845743777238705420512012659292177020069630176609292780530871253717783090540098122054753295993620125768406852704697173595779621353063752302236204623815120705854415987981782137974090916060919512770214086537658603726895678796356882860920843569911289963884724349765429383585292953872805165527082410339921755533253349783979773680724232184423204407159936160144184271963131749963312929739431425634513356706650743845539077801414994416632884630600587843381443656506055087124946788535401251028155105322283616224504825172003922359826157303150184379719722280281215239990699624626348142116514695772711233860640450452317023283873061951311880631991731828746434598147405543476187599527629498748362064591060166570706923692267848536518030250285860379440650790398380596072991192724785781744996388918848356214706336778616892879643883722819956570654059124405112025943167317834110555073219347074857887639040079727529236016646518740163593727395352235530419579989020803358021339324937492795598205347532697403898765317589787948213642530451511249338991746844556340100773559978285906610779540323202635104158224493631053921837584395534253172510555580750789947830647745761759766707079718466933229516836660890671301594202463821617800895744447339585664891347452971089559003351099555822544731633919835912664385737666188539900448073076513891895112231255507430544232912956357768434087849266036954264597454119578536113754389725898705845287907352533604811649307143018674643919607802126890471270861563260404857547299942250802693514740659265569171945584257848183223978329201666277260174524147932688795700573977540651488249913242633896127764567263750894524030327075161651214946570554785369384019007954890981820128785479234249571916433367982223544818950092270323632126338834293295584447865693866261251947877940219612397452033656096591427317357891441347550226303137601674161708221339019567862805397603071899253533428103928158472279010799329999257118999818243911337764636772889287786763897802718367376053572240948302180564788424769867643336276553275851687168831140941645487990738693068436401218627804387790431547123136235226453857490462660666939911437992219810245518179555320140156703218079349329257315530964459123101923312857520376472488332160475562639171759214893470403314427343574337730229575839769885317317368759108240207529803835692412047250352111362237675454732015379636731808532352811443924041643979213868776798203363981359773614468614267335104666829181812192318092145370769349621335932711382350855046729129545036807822982775433236028370218429469177942480223288652276340132603110221463103678347103893911122693880780394503317066890674767448656706639940057295510096261162166825666545407941820614826693679442568290422075741489958227685516683777918686351496524508738334619979777400300073491200092235830118318837148359720760316774195212305751327576832615617667721176910728444794652182478778429074202287306279053093118998460881276273935939094699971597363193754920404206627318181781451998798321179748494191869308844355495172916913290177911257241970788637690545639373693368768468520982994956696219526703651141916099270608892639817056068419768250686267549316719839899578937663693116074749117092568455646167119003334129106152541769869167976204749107515911661566820715701899137195968526299135934148029096031980806426191855969713353711722980130244202742983632297457877873070807177797829623876030697267950809650991501771242500776134415772040747318480776396890182895463761903505808319937398957169131823818894179756106720685103268325922387626597374173784754340863483799632532731943686395711896176203148074830080406126147543779596600992070301501569581748376710091741868629230226183647280435349417882636477581296283951448921967690143312343671762848412224250019669084640382439002203977804307693241500361762339170751066132952490445594658413225910691879868191294415622621720369609181544732939997763810824632446294569016326408166657327070607681761024267401541437034588627256062880692947640518875234024527624466175479963968282248006264270259957962442445142655260944817030156454475899853211263021547632081160020500970018924174293342012583172019318530196141761322102537599382756281471607262218447139169779174912935076990121290080502785828190550973819430009728707748979888939408666044694055258357668912938707307703813716597984093063825955597416275647942296936086508348933631025733634246743330314689272618445791950381952459127997977509520291293856148690191991150004267703075603883043106250064091257040173401841080834519628244611089295965263476626873118079668789718216043727253959900129630567142448306023020433972719184340746077762646080457749912311507951798950762689483027437372789203735687662142864084702733763849022901977321214349578441258756060037180402497296102817284186228512747731619522526790136405435192266112591681045078813054292735286718023740263638818417323914800976375880007703812232739726809857934526341813300415669830995277807360500025056981843256320580690135019690690990998873723727079008034807604729341747059412786172431326480013032889081686757214555682486553756863070474652983728915558512499390850640193726951146806975601093353561288244211963411290106951990301313753271785283672536620969245909293021349726272867623497660086287238731455276726220175939329045725524314420030346058789449010229306663416245750095023856638381934301276046394686517235207592591084398879432768672233551442141358311157934779858484501694003817585771661545064217795153791989033205998125585482661414826804562560109981546599573125760854406316188742999426789428474019915067382314252674804389038758460662708136657669067988683223025395317383465749247247055774571708632961720364799907908122888421302433600907740614195602078625366016952188807879537941307668351569324099600723185332368551352333901357015278295029430030782516253899535864847122792277880025705606451647057287664543043289104993561465437969962006077791822725557751642837346850310328270449621250027672382931706503017838087351292561754586447609394011931088318041837830180954219326316537825470395268675976594983453492273141439892369382499694938143770260410035965397984122070780696769198358507315269182391754914149763543263013271599607077042009280444653336087433523004890862299907886797246284674447357107293778018537742585127666462215641762751731937365862405272029977746985653949451627271862616161755024727498879380994505111783388387429240120469120147934271239640420784369221755202163679548750124482774846551982872097709213934202099559816236719260221356909089137879091902125531188173273823779432160365050298336743005614836888565613853081479305021213579742235253075228512837210515801471241147185346343228634908639433465744767678654989113441688775937246741916961574623492347261740176081724403371833635433877078536176518509807628773298258912111550868153832697678198964510043357681403878403121207381344615826062918735756462853708004401957378055970559704912410750086176833467661077462613530830527354538964226993408676705566594642610374545675954974891495877255463720376780060233535874385540913984262611247422726244690528106155980625250841610453432142025763272910119303236426443545762596730778647430461198335673956893258488790341100979134535222910604192447724596435549020705287374556844047027937983325311175950757143641631897040198353642739947819282390965844827063578322588251475523733377399694883038625237652990474781194124044252350091968217055550326055268572545739100524625428721014851846144734350732670518078825707502465531697486674885796384033380964568594035664899369683196064041836001724012391857892995661674137911088069136133137947344333499721910841784397955549348451274248375546933673734090859822760165431376894175131351202166921575221465451671327662145282140824341744964006444677217873844851185121868846115377828730794286352950411476158936320204848357276119413502256154464360632055470377228132075456634668378010201111230304977842902015654888404840325806552052046561572360936877232515547951494020572415865157965318367716199818645104068433932375225433341857324381413823818323343661661764172259605098639993352508838011526088814945449999764235667662189706295702956134774515626020424261606165857311836390973720014563620733254602532702444651522382547685454931770008891796856067172173855545770663256140616857765446849363529248234500459267408515214546224088638457787387477622341538468768061537653441647125611055331864557944654860903705461775880739772530140970480589489190481820462893338761847405530331829695586081101840868974845952766822979124299118595901867602793073551202184634610156330633692676088436071759230348178663586036096881015342727471757181669577156461489604349476960096958624674312010006760974349200795126999059199284969100385715974497028501416823644779773899025712207754290686823350427976344923611060156911361085917935019893868177519366049765531271986904576817574375927309755769751756172438263214649839886826501222428284128670382980963260618786385296727031958109513574857464064614842770710235959069260847965365815809051394347904965150845612975578926348276224651223192765878730976746643252331120247378354204868405835276415847934882588719231987446280522319380717987801449505713391679601230503785477202008913779670397190396017141696841301708477801833373374564666513034711238314910772635500349537398991739116855205979579830820899829837405357402982939037752477021991629487536659394714286228553370145282134914664626128794303194427668884591414803462237582563747532627739000166350010199559772744745436659437453712823720660054022898057544215695381038898048972160300120619907318299755660295588287532507678542283987343243926570399765743530270615430716804752232641711337263209180526568886907481392891030784211971554947702116530485569760995310279785867859528102261766323939478000870185246706732142967969833631080055949996435566612205149991099030008343659922489841729419011407465737946562326224183403322434042131635299802010091645496393797194333129707544962219682061007765400512131811400012227412114839505205827490187460476510552261667987356248697742644781639896158189312262752082556952849382708995988074051792839660858903132434056015451023202042798044281549305530952323303302931856454701354136256523099600674197268715986947118807309838766712766386771876192343984655389668404593737019068121597104176268951955009001727976759722855247098454432859172408906832644783885402504091155211064207075658863039030069138267984032557751976203491845377541051355644095072896280642317011539427387959829893704121612020896275245825485503334156285112179534243328165800996989550208018611579302335417029729406001332735297852246620116307732854370351446405032795234712890516652007168035518313339978208471258364960774578264314114533380605597705702890219374015038562905435894857559606068823116913020339679444666659803722884079514160138866148272306442005740799746220983625632602210334392757868636952174924255262218312816252091990016865470835456075984732882864553155783864004312809080900812857570698574343755660167121676341165364577043942237817333924801067929796844845468018029313423894419566470919739208525498059020929436265323020264660941882771526789878197417026343472360694371694640537719536046483790801171777794602662228232007886861454566387670552275937883995642205275101963166242080813202322753475158307047317811996184350878511330748440271730719146634771603267856807788702540022670847461109032065170969507150395739233300017362315859551578237886326436133291786146489829020719797364898886541724816585916249518823445036951731712200480818669989346103256393078228742260941389795769697816173163089451836544788482398389872630662533521397727200740195618225279661839423765377164086487380191836004629535205077583819689377929559679328933107152988695387472322387712403359415804407628449862502353486005530276145414155444574525356039142919743491717263966109478836147388259645645709334902161068109963753806306245466032832331604881073233207682472406657528029702740452528789200360285819177558903933345138473170454127540180809438998558278713083559812173899827692790099273647665705056483532057557198811229351590061508136414654393723955332372859961999862862575308371146054448553942038964045203673602374730635111905551319652796911503454161203623756740097368195158650290876700831348911279455293577944848475617458248541618711918014520832528181104015757975655752384904819072978737674774395297815760750468887677496486414013606354295632295087190159936915010750724175172850950897536169492220470551046417986566144268066875015803260226329156040362557419891749452079793541998225727839016012746579429710885463715601459335493045278222120188996866387842033416606642775305583328376557801767699322417479389931049160452569812401817184744188130168347159921512853031264753349024676730461432597921403158470018181361260281403378434333878683589008222760070740965063189547327248004554779186390186288956076905848986249699229282347537962322846089244156197719081102507405700234553004045273500234549972063332436238759445690337003881432250532007423234642494468241865805779250323547730895726965660901847026100605316434313298003911599172153282840948137103471112211029927416704578708993134397718077782065225888024994485025972145771505474992350451353260321050307351597815682687156911274701508327555122300426283732188472060679868104633599526376622043417358007600580500632611433191640597832505421210366498583369970947339938972353228532723040565765724207644371797474915713041874481221778139683038827850131513927886529987158732813854281970335004602819533611685109947298601585878520525894186991141848287730327409094820036009350656161712515796452628119773746799993568188870980702307110426681731726501452125514041222357353076296412747600821859913302580477837920826692831032819623985026940413743592988569516155961373513650058518647181571016161518419820081534884085469243164351675093099962745123053223629217094935315793136796196751511864099103588869184650389163257756961670791086758931079892137170556460625467784169160687240120549826900923253846072159125515944335215066804112179235009629936457063693122851939417670972349911406762211300332133785377496642094086600413817128311892260708606981107455160200903389771988655560885030265046736488128559325841314232961211585062248764373449689682366263151819737459999097600338203121698115963252067608329517813941632375235359088220015850126159857072016405315926597350135783295203386749027604100157413433909320260479853203103199310848246753976571037999410546417638044397500909707985070266860074716956050613851880642327945572186912057339770811196179991106288328070540590918921350958106483667778492980552713940970531363859206247150932416197905675386863271330008019664202144259687838534318730661243585723615598804926548530635417451685155509881831336093010727666054392889036785576679427338051001362837084857909007666296514711418446361265320161381369019155207958001931174901955404964773802953628476522963538123731543454056357354761235101985754540045141995134718064635021793080628526486233821450070884482110687594329454265057491632191477117204581724135513293223985767340589296374976502176584281513902204572248769615001814212341373226297857273120526712948362802165538306505345977786782684629015756649757648006194594725063135986946983058199013636725300037003077813014245661694020679294553114796730766515005105172239737871344811924285884497844693344640531536808826291417130024014864289440107519571587307867654400297842946948220015629998352411077836730682923423264714384884206167702748769785542699546118338129362878885860379639602270204606251218830855386316898556588836153949820899389818352654665416437339931446455823796704641617735920288399572137809557983400385099272650229794758094941420426565658525132475950890767296543727152749277836830666569704761547791309999071472072737985739397466203356714742819819453563804232686006452627133697812422701338970024361489253778599356307866961006775362677723295164415296318643478132549886575781157381451867184589274424236475059930621009786906413659284247467622151825150279147130378316649770454514116006662004805920970744954306899414816611403489575050049540185919970255583252012798537705283004408155683485510193066911620682331078294031364997147473633552080149602364746506754089493506873421703097667745834942618881172894656320149691773719385005457859554363267360997102405884025351549915219344037711130149815786406051853881492129411693621763348546941882076593264396758490054420003537525111222546552311736243210165672354187240102943868189832709745220965037500679275706207266927961194289347529853319358049245538232128165177643192418586368801043606114667017186300476346395125808757925943782679545164658354124902776344838185275046078957083962049980439238347448633599402822785489558002494856669661744585992507980940216253583977269320619220380487795631797363937365640852165975251630779554482405960603773529730719794159012793438373505091843005680323161108535498348717231414006382936544540326734678032079599767593750354110353350755387251465586780954424593596069947706948308748123115917832886254705771450405660352073921351404585243787606241875322779954092246447265914814563099789845914321180862069574641562903183266678396971595936150006687165256741815637864677335906648558408331234091187273753522884375598049996482430245831501849900881741194256475692676818626390535748925011241707559693080652982771342040387623532846662918843202630757381719881743792512597251612424597501489381401843707381812747467524403341598714859401201781039333278096622028501961485857048807405258591325703189654315462449008978306826254512277746656023661338459826440269084313158686103855733915278250646310433960901779103905858375484696456930022040450113116307830877234930790212241363809112559225012259332813050383596525679652765678554777969787844124344249000900607799602675625319702129354722648294567915997018991477850552236439225909175128587812517691200698032431182934733502276306336450836942204417653577519323908693202702520245991565667510655537989284378772512730271329516128046678739313419238663492493017119791934736799105319483594957880224554627218946806760574853974408288728829169826442607731300932629599630369659569043622437795093092838134217697648228192144395797319568900782925094305371228494510601130655161244076747184365641422412018554331000517219574385655108873562739979770917670081165518421967013837718091708607627002389801169914856885776800511956357131137752036960085348378473162321257354568292600834250429679879400888136592298266790581856537643049082598847667613546818052018274553406575466243523307715656107990958197856707105609955869174057207891245537285876541133292518263938029869532761235628462838895150364948445718069691354517682139148716689355633788031862282501324093927889243505847138095325302921224493981400221037065529720152420404647527428496064811243294615563001710114772190444262714444064848984497520542246313507545273748070760012421841577151679399222814023257616371537226331223272833897956419386886857962060927445878441208038104895610628674071623431398797845571779331913439010181106332105787056923259625720466253856702819111252673251302187877957422016301886863971975762541074532724854757354163375503736661487989598834051512948773416838209460172801489145023882750613818003036575680746859717510147791164875403732341505001982675489867163930469904621105019188058959304533792926275221820124799396669818496824763412017730828434712190048285763137696389500207663634309360905869495287410872757817780569947408142042212328114404931675554081417117357016718771300697430426679327679821414409462006313872251984444543808072164014844057690904299803182804784357403628288100635398700004457833522332081815899016241715412793247817004281311538715085852384380215786108609068689958181162550116535729254904854488908190494656504865521258007990464193553659326666571710658386657480830475500123198570288722457195242035070201984310124046296060628384606501752528462464068600588870289986029258159196359630362750029463611571756791312816082810254149789683820502341270323246066873239175561591096901350950410514882900320651023116153278353570105255029217128019638141021821706201369761423753096437489610444203981394722607272287287480350625541920976098296344313772163576072791394684344628869658100867828679221655698231871889282900845152798324365845570884847971596107201323245845296999504508102133516242776552465515879540900158529857533335205668217966575211248278903630165128581732560510767671792694588424165143661155971760774295467707829877907167896748004797895652574850386493027593111795993216385879236331775142406965647746346441192800544318793030395144422155036724662777962487001900736452629767120408541545889888671179283921520173299537256229696886040403248151654379272973875720758821519147553467121986649629327063830841420182505757637562384913726063166033525400631903389373364992229254431052137277224451676049804230481231974556053205605578371009653694126334382167922342354467562949483933530305006610330081317719022807662015478439494327613553387825556893396473106834322137848722065974005437434047462327613570902112954843934411822972238247762792812318584899147692813342947185500990823636756446410162191469209309922421904350287614998542689233547597096042101672096897830767853748612301993995031973268513078719435294040412790531714126767214173516156953440746476230420169040231479920863524799610435443862256987012850987123362744771012979754698340875495983052997125327269264873883158595681270404522146005658527254627124440245270725973334737779498956398243566433350103513605861418895422026449676603139578467395153801205043110442159598090586555798134854687758849938430849197704587095061502697874300591759282466858671402241434119183729746434628063888237114411799883567580933242849268545340199221411188361407710632607941709043163900877601920203351458346722211094762546464830567505773252869031559808901683064366010945168253869713358766997820156065728659253366682553391005806241229083139978136859672390189014343337447980312156748781916178604374378079790459263564244026906821990504972964340731508630847967836318889639885939866893698335580179579283163440088280016820772983939740734062458817002282138450754817386082171018942997702294101417652109755041959875638787145940928609556412556055906616691351271818041621718251783955967195874833951271965612577945446782089446372094733838192010536170534505199050433296832496090888776205117176313379352324129334857537899840267228506591043430145946397447730098359565234791627654578363044362293499899328265325716822525299446483117177617878391335999702523213261726470772360531941553149057656351990208173969499607125985699522857517770720035026539606072797817039910747008141125106706184902983396399546091733889281303098145947307873257720355861515480508565529809382318363635989880259823259651607724072136781310780702982332736375697633658957374831325908214203491932130822358065634849791132550124713589386904632559766370360333616806721516500103163499743368108250538615676633050021682579336287981535794374968211847799876658964849243666533204125604304653310805298598932263372044281190619276579854923545742036737981580948294759963752434185969503574275040041158136159485736734662066164993630647783288495893979705759945125132440077120205140419324238654748441596395902659754445757171570167103670251339166657660796786477500713764767112048521462552291412550039740344104381685831730062472966418452534943917128982730055214442831287750610615342237598230493555366386781083620683715320610871658764822552700870905435949901676574087785290553235947519392301158085168020298306124186349793803950609200923065091130601600737632093700045502481634669275701968178705922777132946818408599387577519337671774760370056458734573604623446073196397850507643494691732701242613812204905122551757983654574990774480357757305127635333013286431334412083242189352721496157728699427406561652732867749095830693357403901485601412149759390861186181691522164041345198599311439680749980165865611324810979494062801414501684763409774665492613521419097698827745689711968782045152064632283389931833180832471252717670832211901038826147780648300516020855643126549427793154010610067325705087465776830736858259659818753153204605044624064353069842549678193411873855037025874263354947315820422877933001547072916477450371466892118222863596607680853131703430329282817639246516375090486069281172879944460529522287921176033685965300005275368461724793725444991390360211912843861492475423158147888154443027760355999197545060029007475090794407830980504338781484185624485048227403213231776252763515717907695038727796154876083065145724081053098350988423698937800996179873380221345870671865458035508177624357887900455779069807444934354081422404108623020998020503250410992391169080024239329609043192978744019892899772716735038343395665870910587359407567713936066273123604638611831321550075589968603395145907041551949601553553462936922356592190649969046288812066838945940863484100838795528567536437801427006499074403551561873819839293606652485185938421146894513522186094562876869605241712623652164518154301824503425948824237871211058170704965875273984727974546359535987987625691424225312147590699595305468725581821635761306928480653971111837422415104630416919759207962817521726952385502906129263235168706019724995881049092473505617817669251557453254849032857735531894415656559697912958715097347238932172757348986715141165713203132850446363051131103974543609951558708992033307948335730794679502811295963059526566254457515152257759811303000473770181221921874460701079807185351057589183773452029099058205370274896604326969487672617657553903154172701477460774605978788908308461078215915279700237466828040601524424287590570864493452768173604855028665692448396096371616467290399873982167317547510137630873228901890541671327943729035717338392756762386434305709211785742611071772077792072514450581433517074551248645294079943572642656065944947288299438110697535176545972378707111015831988374292921898766657965229433141926096349344198712409574098899611256089107307244260978040948232258717416623461124110855260165799569700170375704135667328615955686733077333761485333646284911408769596182206721598737395755549127336671703310327133957194804618060594897759398926035854462002313674015630350665963488527161095823454711240747601730869775307014173575317053975015349836461268390340304698445370148230946419538035116744109295507342674805607746081153422429450477651007504026606081655723778455852111634702784803239193764531902323854026543554281277900095574300757681532858538586360137402625147467606136928796058912373923602959307596034640617234335564346347333337350526447078710875352925049136565185260626699372689860673625652541384880410905486774173267407694227593380005126058086757188710967130852101632399903301338290370092081550305956216510523778074971738901912737141817897724957052083243023906698732200190624209287642749605115936479992290087647721242800777299500748019520575361565084569194051887475524027104911737732116075457999539135867176923529589522798026887910162213693264497066489083464220356085496839003022201055192788708071588090514770896123089356386161275408241580264358406128773205116513362782085143056184735400089423831246603606886623838289218904691366874224725853624827248442934938023026250040541733297847322672188855092388307058437654852260765353139402104914727124046483711553076928930819140326094641381218562422258612064232783600467717596973537758418117107128015104145888239793278834060859381736623924715058571255153973776780345731379135811012139438197864368166338818786379695373367921821894021708286869936868661799813709467956300066877004144017364539124029168429967164753519465261942170807635121290719483140750608516854522505286581508156767244348305070153871778936581058227024555554275295032019888395890975462821700801907138966915842056499275397493365852854701844870310374339498855657320103341710866655526995525021210090992315566660325176965133789709784979264255013554363122197932723461857970078697756839423166185135216423414697442017206393769242692125719798093933777218700037211361615673731325256361961609186029090697135199110015808008897292698614505232052347374192280120730011118721287137127566564085714323892042301520574346159307033832272373412498639172786237479678408474743717063871371155451899590059318941992738493409866757550184347055094693604862392232053324465491280283465007506424750001398783528769209134882184990689984701682057868847302942355069717705915941504596440490459842985847933636568628997570984434435114253821099059667113674492813040410226965844879810720013085096821544472140498059753380546351072702813831868385859536620522849971122557489985595992483311126497073036211796393758008102399380615164117274002362658552854086884109690612424127374257780915177430960476285987171945367496208884788200046959648344506082269060047109616666895321394097440168096957160576350561762771745856204933081088409232471721826284522851364392466346022946533935075590173840769422276273864983647330099303329251147501162087707805414996010659638875468352319775364965507415968298130360026359161605422370466614359572848113126827286904027271137829808180369155510868003169487863271340942521896207349946102307029327662245191001407190177240225720581816844521991742398430800463695740980774283223467802037619961310431839074121824085103092027369876544238550570863458858178275624786670932351905899955916797087270850095443448852099229048970571956219231079532690571756451910616624164967697323542677297607486792285013434292212820564361979891956381464090569825138920930017314774959098225686509141358368336794264629164281740776532987256353075296466468310156511515937359786360184423544057622724207153569492465474795547094864942790505084335636074493687589025299533137066807492280116757739027538646703451008333893446273038945871205609817129031046602981469307592281226129273884547561726148786519651032049862228366645718102169470359723493235553694940958140385530201941674738058641761040558058144761877188939119582303074253142592369264127639405838925983358095554672471254523183096976362616336022647067866593578329763922994225524583520942830429083978357609887240250602956948604970419314437598046498210076285525193278251394521545147820733380151401414025433290354299392027062589653878622903508708163409606854680446095709425737160623760812173118082915088829177063715578284213945992223342533331395897703129502092829902452339828240067673944407066657306716725498468696307047451136795552119152599000405704224010255631944884787810781254423999370898448680358386029633701264643005809111619074629306406088243722428334014528958494763786232124536344292297012900443718026955171468628991843437843167734546603880764896349008658231537913849579268701137411838969734138099273153510819098841750592402005102569662138529879158911044384524883287070276130511062114620980164023664853301117391192298938071848644703432809054043565435924473437772090673820673934052485134142343981173917853986194914358595604615695501348005325411492361664747777390084503275316735687534753018276362039684825745094226536113380710032094608608561214251996635301189095987145853356936620879086021753174942446958059354338193651491173538453876503903774500897283963093189854368162466928828495603542362612057247179324258434216874184791243861398208796022046493464267579658959538899246506162680055030044724142572065281605504060454303514715618007237197228048746297966786025848897508703281020636053800008885563870474333802878106578235265086963332966834667344146037945059368418328345044587155138609389643596725082295246402001074823940997511187174550685203846316996784228679514367058561474670637159831493066674236759287429836928443414226040736489335339946006360136153308158759564365967402217819643163518839325423805069060139362279635114181672269482444049134941850340876104490531633090957227864615615072896331145463092639637669045705886408236572238523610058610971421842667907248658606024151308360098428688721275795991155401683750717788160186497983349818069060472551480351498288873274327973180926670961105539560570981314226807583370602250093279271590351002120707333544329336065241903667900484164472443653709337102512624356483653705230784007215850174875406852685791670545871447920850480904981402823856029885371932517468683557749211702415774321174285169267337119280671365825506634310000722079654198411361097549760501849390159534367451314657615819071642508606017956206159172448314319290235967407501754704565557223345921871762760581710347871657081769863856028141578535847768454469803615528242258366871098328061832453845276112018618859513305061761209517595540465575668840138922145106696430550570230175766048446716537261046775906561374069254519311905365413064797930888543519565740185450995141027204177599660791508310372921745427641987861067566663984235779110137319952096531234359442829525409849233024222088077196055077646022976031437429455613191850445470884936800355533446081765124935966698041361457252959664841811840612188616075275781902720767964580116271085008350238219213410276805049837387001478322838261719150871363746703048396056313616445806134234813799916445858239918162940618766366550850864294504398632399520208431229009218854295626197966290891033085733316914932840073349760987329855880345934208046232071085370132720862616643494943611133476742802173195787457458386472067637867303715116672099663646787130689841495270268907842513207639441428409424923794500575648334190207269944162252402793032631121598541524772317714626911736882031413309946328194036807783657340716238938731617413828228828047851116798401520755169215244969183174915905322071161849861923615610079548433048863140563984229214111725654459587370102185833802110347861952698207293742354341529397777716062046873920646414914633097947432386468233745628036995323010709671403712369497066381916932569334460482549405658603947482110062184726644078049121929657522859947274010871314512336008108602115061124999486664618176406329966303401717140357861602148279226630270676325373280426480853539575983744794515598282185194321965883051878173245553589485806455565827565014228529802559374833152004968275737451542211497794730954984201210474514836896355865478023005695381370655330662471725250799495690335476810569711911463376018879593915402460156466926835260779722383042467918662480292919581155470598495256091370436474569997572252665608801658752854020622649657313806349699840522165390404058809428724407682360286838555254137514300872403263220297685467075321336599631871499086707179506116762420286847938816571109963039594938203492406481001959969517692411973248228186253839740593660680371723364478360180980471476116535768092202220152468437356310250794186216341917585646521903772655050269199462660288821353807719481616056784508687486087629100235427073649013821194192325370415285841132941848133227641292322797594729964612637655401412893276336804878486193015538742045452608480055593894603614118201441032083035016099842757442138836951024073857293179886915251129772714762881505743199469769552657173898533864653060358531342797647590432606246541958166452272598288327840477107229336692945816984687992480707763359941053417309346163949645247614391107472826782356407352975017959248818438337647960883433677140021333222528940874938595793018659072274023307069320286232036842814703612955739577411732084408743023690197946926593070308257438271292089009111588398271062638045820463156309359999768682826196811348617307077095644950325839868792600500161285336048426001509773506865510088097475978425772534471300211544776215418644609191986318461080802669049283984872647321121805785162416367938792595219999404085141282109820934632032178030887344615033321743634870977368915173594154674754347020005147549616505949289644730898338216043702699456233773067181686272638772273991087294318787306520131265580632849412274360540316239203000426791736726932561313415975440015902364135071495101148260756444457991848979117216449467236227837835644791118265057694649485875577149749103022899771785021573449657419227288901605409388159572656820156061978404217609570689358234575542577188354181392969378290885421243329097566656052552553973979103049425809216812633084543683108629562550868205391754703082818138875903193068881346069597427010785924590568926122274891744149877176651483786098739866882684307759911081871033004490383988119564104422886040470534410268675171146199107186363284598907563318352967004572842285616879369995128600531958355175453300626147382757761977749617251290530931305517079473965582367746052614903466278642275092264769869573109313882427925598006978587666031117318808277409291544869349777585216125142203056982336162628494594097247882041409376451114665302032893115571920736038170708258072838753384709178972583166527315985741880638186258896963994834254216825203399611341050504389150207557584055027993229438144042051306561642405442408277496750172289090991985961916257496329350462559198997076991165063301654996241064459584942759296071015771552648344445950582887433658672163609754613781195095700529779779922926657256177702448336548104378582225046076154011872884124385635571357047820726950752048151036300304617126712718794903429884448950842960150555731988066975071971503923186902882071428016777978138234095440406928597251852012028462254755069342842900413093460486911583330358935877594423554854450107115397958704485449865648586159608404553465030786727335275067385636903011078224816251339542310314888015486221021593763611712337187610112719268964571879054627676141015385684732803012321815231731983327320728766779555964861695232548531756162723006772427383924534193610047030696427296516511462706574743597603561644512167352181225414554449120552283801918018010614767844676318407179063284483850119334307527055837943223053753902834212664962163032984301930010727988195054810395070004677727273364278156777570606447021457502990510498273969057496950853889341701005900255513226534982828307688317442747209825131734369372843561175202549683280380291057165751120920222996068632119814728894384303093325581374521369583240747439050612310872338298177509630338211365362725520338629732150372950478435152911325284576296758657727075502455007315425561448391837871484719864162454067151460114785802527350111007739971899388281308089441849713203027522913668733187722584948545489473128202537392587504213613129207241904120985799077661285343038430305378008207465966129715772252547946437154500522133174580250862844439236917200772982141816049456253828221432566407410410401637002154266690843772963416708606784271936859080911903698577418105005184960303476135537551912315937307233072586036414403899266319095216402807095238494697814158930642495783430868035944658005014776263543404226162782177691207454464789271648650006480125246517406162589854818190997554770492715576459344446640900559900756304852207522302954136566108732049365789250133925291173009530444810742012547697457821865931085456311904963535583133302690238245650507964540874780022213436493991155246364397841206654684821514616092411102981572735766030160673952864104804400551705122505475250582963126345577100485699914709264070107920413651909427463457675443911459372358562213144410451610043575607932849992242364179160268945801450908513551930682283290454369779705867907778349092659041352188656019760357012808766750174171279376484200562901945903939866168653748974518706853417361370602443230333234127955072657006945947876866692631893979082132311855494016017694999392949913385498418768055826655010431030314588422240008898699053527637410399118921287782859803247987263540804176796169641221217048638915191039051488106350796178421452217299074490819654836439952618932887906423698154012330145220213695231032453299335281296560477594329578427912548463980124107250508624512194539098351353503470777982483070461689846551760315019604024700373318887393270140943657691552244920052165971696320177660454816027669488337355196585875304698355560076107184764597155725083386252941054799423167873483965018735555635585471767074339772204023693830285822574266636829853216623802804551484062384807726209413040743084454514118695522744399783633262612010007955651068352172839620238549804485816224759799345532559328496407543587135815114739618049594840142009392132814259100086742459765828066489538999534509043526106283985671405045340897314143836570485913139609860227923611054590480173269474479207264560047837925456087589704123243104056106465418701387141470114738706394633060017285161525268271441584526679145156540463635130032461575094864326348791819601984586288084820244197412170752180825547433561326342527743548475468476850540921633508051415502603995811291100298760008817346509956563797201335887328729429279472674111847049445068533043966212577053453336967102866997660010163544430099480061505248367555082950573388546114399358106369324533842894913394561890809159666302075390275755427113859397832355947177281261697464861008053149556272788040305927978823951157710552393458025692084096450241563679963837419611540283884736647291540370356387243300020695048615102772433296448312887957475126943746193803800037909634586765910988180177368860531805866974013971323410927653405401483144613189368329936831641540136230840694867727639602944256189583127363872929803405996692700120726679551316199218090194152523548353145712806227026991792743083618494231294199860988018830690753158487944881389997295619367466025643273947794151619320180151063768727273372426325303706973102453396974485824014794713956594689863690596971132026319819732303912752115861792525673628598143918555522461631687988567212573548149508475138051390117863374021798596492350463875810925851846017176403419848617981058755212832665576648965855969398175913640895072681395590406521288198244583712811927801056472528827831068009851295124678500128457123128561846167812719990403425934199583421248233233293831050180357987790009951941718476903448665651164476988279293605636909852552483601222690853131795915602979882062020932780402991725743776002945642147198061029593693062532408964585899977758433652492523036295497840931480155051237315585144297528541088967792136655529173114228542996232205267788237269145357706413442715869008725491753934849562915511651597813208613450463033525091058391763195948038192235196580376815282700253852356032519186602247089532194075928775293748978289345215098343839941228410850300425492761659106001978041904234637270933694266587031727800538907409405180229415626144229060288587936771038520737642897768429549791193377946346000092293633110893075312908805544823062290509405775714585661026415713343378487381098699695711617323469929921307332523872211305615950508831017737911183796430643465570144985433309442893809918904910769466076560871802753240387789522913243093580581294612774893300453567727770267244760491261988168303265530392002726330352913897740168095575811319701109650436207729197407203826243995196357224907050463997224752527066191015107659570751618668776550376461694731402998146391558873012455646821255722419028429463653608672163652165629071156729284746537707786512093287307674938170514656025330262440490297311220536909683280983544969511780361885946806407521018829640388766049417048383578816159079186931372193375217950080750593218917733799719781195919892946319008649562586772744796122802229018396716719576092740088631415315472860852415579962044519254328430869482261339825468195966999446883349589552611458059951377145904780277717708129740652140786923839024231296374859427452278604084761309480017519867856161147126248419631359399505785287785355637913545765527524623509111545692116276041807922120947668149856533044696670184270521955903825429349070023575405134987124628342064000367727993590329618205530883996953483936876325976432651943686260063736766923886284582782065543930386086247948995566810258651704920625351441621254107524632899284332751893631911719806483521526658075741241415370160837269505610705350868084600169856109990228881674480836378867853545473188726705773604720854766707483381073048734843200745284248965805017634879190690055480897248803018990027688754238094491314432371443861089590994286983536541631220190840371478413677758493553035572985643304919161429075803356220742425485863893670664371460185543007492628542806831099397411282272848695720792348169529346742070592303751261863264768644707447339781879208099856192739828820375701180229697083160536323349387658621496131814436099001611945905892758939030415805614215133424870589240779593259725251297646883932820483178321086902081171551903824250531930812013402454525363191001577051844344593158648614850388799491077730248398430691935439244476337007198833507877447609029859037195088832227496958104915486584561310996813031326640100630341818618938225533228716504253262524200579644073152627565712782441828476891663641014132291282429669202402951244132881095390311933645140002887974385611902985444649995328635669131231594308659352518545522037293660943512689971488308550946101347591984250616252454519187867513319784297169337278620390084864857683767724710944922326682301135186850110522839714953146700298967236000550291149112912736433051803271089665960772712546556257682894032960692734680527706239991452063992539336610472390631647026737315002136355102118881648928459412673939156715612298173780215300449645659226198672776079549908301015767847684052793108626097268139046464279739752330399368789575251596671627078261808156730549554511085411108049638116537510632924742105498432120066081212347475528447035710720781252508153365586999413236119258892359325214184053666498647100935643036044160548144587415506033643799186491330758238498394830827327979548659680156627001971505733255070052052673337458088539466444523118620791585007379496925871916163392664928475852264948276320050980571875816517213195231418170903851120898748716973130959303915909282792267739617752240187074951710272655192964557984976503989374235632283361681478731388989369393210585445941465072392624287697425419198769070198151742207776225594162390087905184921094163840922485160776273158535526583851223286892003948008995437628385413544283964974120440025976752403402910699670614082445737888032808182488556273632519531066756226694024608112664673537417830241591800404018618146635105998207960490964126772973317183414984888835768290187572551158020614898767027193557028702003698567855811591227381552816847861384659162170401002223794502374516339569746629887103286814499571850006309010869336115850588420110841002870159176965496202093101655208895697702535716686063841599706482534850614579153571472842269794316193337801685585436406444217499032801785382942677741920610558532816084331595450603236296339223190710280804302802754835970993727314248335041960191859072553886094369574151611983139101252195035206489063083048517270738484952698751916030768683219812775464066370402091075082769073358834173480705198239504257576474682938825283835307895343707618352038495503212940593835808611243222839674497843827426537341730343313450172338733038639683416454465899826397627077175345934001186137720809168209660785384859736766037214883951382944044109246785898744842212238497649069291884750628102625792265261573712990644902770846353241492125127634325990225522893518045935520865199190814120636632311347564684716366068998483011282796376967504026962908549093854193152178718243392677189676755897070639395126017606982221041585038090487832566397696514444519111197554141562859222482653271716423046308624953356977755590403830592457498879871265037369451053912343158492070632111075560649878118884665961844327784714844525980833715470561386644834178891960954922026701335448245879206683355359760585252200736675154193420731100268080924371398023163188405520245933014926842904898084466815419121884731332680805743128119978320938243332385223105321323762194984932315686729373573855085022204612065431419780646240646501597901686378847573802312556063156302609227025637455602640720911813758221488268716111403930031576112316623818853922168338270792331004233060013962600021839553279082865192800674080761301994905143068930472641640677010052924574637714991297275429622823736436601581511728601833913150530832624883540494382778169851405038973974996275513284496505650381085456111057875781318343191850592513884963953642855999931094889369081764003611292862344321731294008933333720186621361534992106086095649803644309288761426505543372357701933255202591992155645732489385147518333082600845332626472505666662487476118895932477592847968371434553646665343987145749456126264252068205438289420223925332777534983723692585630981791565421308352810534623480310417668712739710236848187250428153660845695241935683467150919639959506405598177022268613668849173120046163802520027106074858736722509494099059292109225941881056588494115656551676341999379626775958917263323701023814148244112597752131374597426595648679698611292165113177769869994524718706390775970300565376892689610870522957521717585568118427126457774120506186443441028615721257861609267893034374919054066664788444238650137404153986330128377763053705172233616658491204328859167413896036065617130586451915159154425534539817474640088319129867944226988877065502491342591239241351604011451415143515448323097478134521748319440037762274007850792445541479810141245480878402675727446966906954529754106736829522885016910241081259292021664618045688924048126738311544574753262081643317625467618984838492123793704510537135657648498924479029738543297106042848656059396396488944677354954745530404322685494912917744758904640784154844867594141261555473580656169323880654776633023454106240643868404097293410734896913929944746684139003139051403004710785715248002933172690307056530452967074758519346798865444239767859282055248030952155521522730854306686733789337982750512783961670680242172977415034877581389986407094840453515239842317030272422560210203628788870022604623489777274291580773314881918933938013440906158694273208777399573148738696862734703759691587690152087007718377580674299761395996803378066223195993514000367001668825764734346000355131823443503197055400863084758633102415057576211758971956253411489201534083564005465220531507516174860669792525505438199288228404763023241139089863651196150848918102893377206721389913414898317073527956431546496316960113829689541177674978151035464352897943918199804056734576439694148233056152917704475817694991828288891710841826293166621819685015050850443422814312056494364338482639808934018685510785098001707014633858709218693136693589917427521537438604062713080227021741375281352211612819217430519141654541666618784477011687719896253781068902146826061029032806709516266441905927752559413133534604474164044653070607831873364182658783472385401452033520250805958828183419735680297539056983639426503349528135276771161696838261493770588370767852847789859141384375838304298423052773118796622367104399584445579223619262413757333492262821000156700007519906614283897768980396009045941109468749967635073767703566471206941277573711640008240693388918368771091381178989028049528204830984216490794705649245487437535183664434214489511734135648294530029247125857912585691435251706866958814793705155913031521010783778332076533622604061957427416478043501732308861204907077317881364311019704207033535611878319709294250072649212480795853920676905704581159497330646139813053717516220869189320312152741982530725570254697648212124896823714910413157697265662438422302851706927634703449248923693725104971413518791491662048996910615839186477039749630593344595465971418237439124904362798901586726931481211134165645323392235086663368311190414779822598616767451043859958989969050282107710070584896830538836953650251414744650566934091919221229499677454812513852903521651455709428269043357552990904029855244485744720140086955096194923156188235581008336587426899634710200404222095272799338266840288850895776760979172756069673327156730656540719718415365202035104834529519632755467355198188686898297767924623499630690806465820878863354544587860352736377696560768033556523019096135893835748827973085972480732891257486290411157688429003293933806338554929199444014066371967000784845063488047990886901446225369897824878469156056798369801604134703098399806533867660515215050140962714127742168101005578481272886603791596753400372396269963358370262624947187674600444797300265597822563172703706919030038658279222589517431049570839488457857010875492287540220717174056874480316950000760675536289165898998917019901635631358918833181873770850964525607289432211552453395005068417570624624071066381907556210742516852635980801332792507155621793317090449295473983317464063270228101638174005392899032109774478700012961064740143241635848305013032999697510600855439058835546820651483131137028733968621133171744678427464868781636692228423273651482673593339230690905377911706726362097044048603040706809052797364376966919386005636953889209275147436524862714428244081497790473156429307217747564408772085481945040896290630231696205921625066935650500954737839573927047857277752050018898050871817451789495650810825350485682122546463728293378705234108663762473778593538393109546138877498047698610574478338120539978226122380230874565076522913797402045464215366438183562617739373787948643197633026240424654352839818300464188845180601083091701483736490860344470357380398550133427191086908198418736837638622872460582491844267112426239467791374368280612656671266992696842826027915793738456573239642567187676571899893922551598819822650856438638799265853457509347641011777473124885090027735225764170914394074038300202183957051976683248304033826799457157852209016297485844170949555353359654756775859519621897405893386012560203229935111199119762963294805152882693410875627900046807305611348020959973087509634790496749486307467801320956384008032612300841938632716425681697320932196421061501219455747726645253587353455792063836931838102957858010608510172637397932636933469636049530009274135317868863976973677292568158801106501043519957109977250373600542447523683572481019310945741963960286364858111475357237067394813833083533075203265150218483928293315008942604090065012436836357730035689805982601325214971349299286556417825236316607463160056149430532703381985288818442498765109021365653002270319830711332468659682721014519872237095576461550126850976838004646930793332546089534098594342230050974396596203824302224075967953968593308596684385996204431105388786803228576709709577343028122933513970409602825669003504296596664272999521100732586099908698100846702916543203590851606899003357290037704006246775714112714058438921471099200590955560778208133565462412887911896774810738305350900236111278101307567785252385020001231878735004277382469636206986261657852239463169065395103102375020916909389441289841515851560000350655488804437273081602498373614763809897586854678975706487223981062454000768242887935413704495907596554248123121368969869323200582347965797673535254063607906207573998950873893185757159173075861299440573485721982633781480177888671645192370843948198844748708178670326650627233400415525554387999611316198467247176069526741330553437986071629757786242926050668500068897938617038644713953146770924629861252056563272126774006294434116870901995386419656790770697340053888675147633788854483143777523801210663279321714563478924387406860600051078664431016092449772778979892111516077697129446507891080698221303852889149829059094710250315874538590587502227904256467304927565969873959987116923463204366482706162732965711107314560904683612839694600640077516549636953656873905475987883869044466571318996557317138776474978498504678658902396532872409284190925002787340892435908126861701776154774535407412608373086004603574086305252639087995993541771171889650704749698444615888951759866635357194097862693620392810282832538185585499423440062838835030403943115510931672325396643938688368207012800642599992460657385169062573034222787632488233224496534928064578514946959156760992597380870322616216282755073463616803717855981213366643685503936777902627317661751362161449986670597512612423438279701606313713623635615703069239895969820003936778126759724887292781048930059335036587464387226393375026957006148038926668569785708371120498429642775086582486016283546667243188509109964593666507207773287798391306726212614632302556627207339123926516877980883241753129476700131538311503142276886091901997035450549295704160246250453158739695900146140475337663311759591748549021174558692690180864248997228893543305635341215316759169015973285167415796644054574456943911039558414445961590894785475960786682536334670916503170487015199151390347629402074174190900792839490834074705375654348732664871423698881256388382648426653098148168680581355881385574452213395599720308693190221918077080701588486211781695428459948734681198374399852943812352722202037756300397966411820902113974614233013817023396695325136187733958931754037292231139251435766755887751533999383708489269920983921963717690602855731580277042644739167545420774330618287560575565726549374839889279164760641430030063325176473294354982576938106507644972180535078237880955456084256466782981695334319380708242717256510461359301058638405895199319170592088354923218042446565152542557579849215090222290246613083800827031744167667415353297026819234134208621705606471074735054246627101018479891321416698519721516338145959268366739752611373390880232128438859887107757751121576114199904241626303109553758457239912287177474531119821009728586943753777597257502594124290272607279645162521745652627508825002413724169367464995459831404790530664763535766093509274923678991469088029626104057119191570822762611489341658275318126471034721913991962283753302544388253262191210471472349432074472516014352552763258926281504194529837714752947448902958405104083720322218029888743233134949480731935921827738109357963838230960134821982479133788997924971814286697626006789008452991911492849106334372735639953663285084031538548543600808024740674206489837545819537195172336074814039747580982360703871043059018529884570192758088307270875470856834780169440587784429126765811241145181597164082512535899121398752919191071229912151769689863858651196841563691705594033422280379227690909926642216851335377377365404899747899399753927785453489685962659201827520084526685208308122598280730072901476935492982278411256593295747712216416489584097782312275604556229796829808186675448454343920812166339115809871916110264057775931236792553027745142861036328590433282397680260113342310676211056820505678203208510472312767696618258206379700564287560288311118309077562641273800509398810205173206159116218966139565880033123636665075108821871822090262737556433387912261442856543450359183701400008609452379779942171097297647973341880527806173131603277720772405017439177555764181649514783227613596540151203704825965593683338274169426376033752006426258751384595597500765503870384568949067575459149987460418757479239568534193213495742889948041200458273529899523391146373350278964874694592887243148099480690196029886595883908325138545074339827418596399096009368038143150314804511064395515251756514110933480258919015719732132356571976099684426604215431753828511410199940412238133319034631101862862951795037024722592793015115446175927421444332771044550169283738196812724455192992907227842646563850463956890344913860994526492712515235894224392155384062647794203319637963661563881893212394790369579504525408355074663681419618479858444345191845292662093498476347124290076968537603156267015457935166403197092344858614932213195176419807231442267534437047406854993796180198971419990757428188374628924843687130828891824105605841685868236681432308944132366479835318567423012616193512207822919799354398068031862219536785720733297321638272722786581860278385108478547899885912269793926782489269625893690707359622369736939353627385142794183597211763019473365285649895920059054136205808186554274973711482806823665114488550821224003226618502574323556990825250052880269380283188851496228089826797252640582948521178446743666944048938625886518993156929567542804684483327829261959116727326810263928408358253967847228121034582616958024845385735690209936829578137680334587708220286292543017370490263793621349111178082886610479866381190308166694045214353014707686333009264515437432286026261249745070728272173843214996495266425212045028498293200733976943123333670693588651702606672320578180542705876460615990237864355045354380932842793589275302295474535857217280126360034724579666710494065544452527190779015062406700394540255574218083240044608559719865277503774196757707840551630686483746698912184390120217141407563846660598879922408116912558396617892608996656866883346531138170242998058663152313896371612140736468004022249976071684302413022328810549931077461676364889104266808761299509635687023327170981820867435742854196696487969808553320772910499581494557677838098930076994213408356348817827461271682481878387150344964814153864453077035233504118437055683967808447845128779864386430995135423421672198672539401300257639340302754963929873843750213844040455752549141473826404817369667365610727645516273980664875812214869357602123667698026543083316536013212765999338808716755645599172836074839157527618836789326635289166484629212501529666784649392871475416252790546666165039399600896673924275208082164603127770292015860087374699695736392493917552304121161676058458254557412000276349537627986854217288620228302009429823166460629182181406143997851925567666560244703542569928336815285363523024800948460326513096963694388457499403757323602592042033627993009232250247305694648109543886677088149590528716049280995935106232097927654819720799160584342953345368446666039616574912945713986412245048800083654261598211781436421286053647920659245957880995599483290165220471334285834467587019061747586472651491135197585827331311273166930346890292098641006171973000246840018840987141415683750743453174822595097309071633525765779936547258167537632453109981444315044612676217155865043562776065664161608409304460614372595617861249737428762509757521697018577865917856961060064567882075166516240658047955918223369278150268402225096200202491476665828086411020171949879443523616687551284130933718980725369859453247583447010404044863179768647721700586393265050530427231804850852155260974138888026177981993187070511323137641407570733252848436745566928057415398657275855751110210624465293574896051067422176247189635401835883250120842139752053608904280373678552410286853058752244546170247564996865597801329928847155072507226508366326521853576729667473846091500262759065332236580309483194831074902406531290999729393457713380206611822015754836833978396282782262395637776207493775572046418753464594088900044347221480826224220143864778855425725780623687375191773871514367011515281464555253934385466783327396112084243383413640489370774005111470208728207532803676509398612064157702247359972322432689033643033316680342515758180746553080246118030232269536709483912991376263278268351284698635364028371956036935722275388473395570407543335977372828538356530821970593948562490639753036597131803095610260903976320992475944344593147176844309442143216016595931693848268879520955925073852736766789905140313463924009172976703895807715369571429956951064633368476097032330825864906671565059404801868674950843711095054042310281032888854540415561422558278071353805878637182446104460165499684974482680937537855094857342529933880433599230883847799894737478574218538449432226008791592431576810711215990832407070457482877055212341783735797474151641085005218157956411376069104352603017220248007049621051640839861877123570380946013657595842546139797054783517913536013611942540906042315618302817311440689748835979157303531994006754140441568576262071779671161548899170047569917622996014050518227878996330795527126374491107922516680772913043995572725074315174669381823235878058266149144362942256096198348827375761191693773558094622177381399696187722539768614955803784914998524576129650014984625445909181216324396953322937180312961629779730869703466878319060644520629322274871862272874810565317879230959631093863307139496623005326118560723740556149413576609206293321579161363071002947017789186728482980522798998674102426192850303433490801389727401370840795038167287197361392637224102634498685796730172467977474643055279268900792324695012917409570672186236133666038797431268785535100823759433932244455441909998714694865585068405238425515359316694731952772107554337303275427103711911532177607020695863450865600424473662208328714202746141789975714533695357747263171388935500472224380476988122294075430099964961036045198719832176143102921283077957651028044155491118878794463932192767884249850956597833103512469599419570593281066728980489803114824851749014016607701821302361589673049854154914503775425299363686774226474481529666326779335728541519006149506152345217573069777740997631537787642721534675244082767646325315034455117406964092907063679537402108723731766872928595940119429868304359377953880946214903098972708025882866083185241124676349388737415422355890299589279482837994355299597827157702584484973111904303436660981743837865433547956005851397204737529172277635899186591345971691049235122482226886143153757492101688798403923191241759811304132661803844966559329906794421263733210592890351864637089534364468066574726689388093817731358672808559055163041265690042668484410940411582462414992988210520300877993947982172873199293152515536944956153271262992314177407282055834211149787808833364995976833534892572335447695553241885239431141916982991189761854796144834863486042969810653531762500659768167565005894303078678134695206290704714681887999684954944850138497394492975840656260810325355572520345480836365909297087079346903260107574438959576086753785108922723385920602327525728839960287727556994281723360723650929230855589431828817393002764871957363667532690543968231611943614540787741135618738838312770542660204601396384688812333007213878521668232484751206944202407991377610262984767333953356075004747967768201337634975533268193879353984950657308940070693158923793318413636266099503488063673555302151890123766321051769186871324390718828794301606824239760214950792206665573322746498308759204400437623426168904577011018946122639145519431138365081006664108879866866337172012256150699131830556891398699987565609630936688357691367359496665284105593261732400365200056374274936774210710645452841797376077380971866831877301528290065046383935036932877196869946408647714524681137019813650875202343196494281735528260607275655269627827083469388355245469387857343182982942432788236248041130411265232262130440314577667320248144112824232376416337208308243275746278351307178664233584050243825092287089338674312762397913579800135700535728858704524378994213302141460726671840701065870487405540915899006153908040934539328996300689880015814500046328408761310330598916295613391389348354346654215967769497011833613604699121255004829535307291293708522952446638624524409104821160435695049574850691880170972394897696147853683886872835062618485716540335092799245770657106575070016015620565553958329120476374826436338303539773145927451920680697793653874709024573074341905935089419973386603901671508181371626291045292402408514593225346752592788633183117979736145275155975139274 | |
""" | |
from collections import Counter | |
N = n | |
c = Counter() | |
while True: | |
i = 3 | |
while i*i <= N: | |
if N % i == 0: | |
c[i] += 1 | |
N = N // i | |
break | |
i += 2 | |
else: | |
c[N] += 1 | |
break | |
divisors = c.items() | |
print divisors | |
""" | |
import gmpy | |
divisors = [(3, 1545), (5, 1650), (7, 1581), (137, 1547), (11, 1588), (13, 1595), (17, 1596), (19, 1553), (149, 1572), (23, 1579), (29, 1549), (31, 1613), (163, 1589), (37, 1594), (167, 1578), (41, 1524), (43, 1538), (173, 1617), (47, 1571), (229, 1610), (179, 1556), (53, 1635), (59, 1556), (151, 1549), (61, 1605), (181, 1582), (193, 1549), (67, 1606), (197, 1520), (71, 1589), (73, 1571), (241, 1564), (79, 1548), (83, 1630), (139, 1638), (89, 1535), (199, 1574), (223, 1610), (97, 1456), (227, 1600), (131, 1540), (101, 1514), (103, 1583), (233, 1564), (107, 1591), (109, 1529), (239, 1556), (157, 1600), (113, 1601), (211, 1544), (251, 1493), (191, 1564), (127, 1565)] | |
# https://en.wikipedia.org/wiki/Euler%27s_totient_function | |
n_ary = [] | |
a_ary = [] | |
for p, k in divisors: | |
pk = p ** k | |
phi = pk * (p-1)/p | |
d = gmpy.invert(e, phi) | |
mk = pow(c, d, pk) | |
n_ary.append(pk) | |
a_ary.append(mk) | |
# http://rosettacode.org/wiki/Chinese_remainder_theorem#Python | |
def chinese_remainder(n, a): | |
sum = 0 | |
prod = reduce(lambda a, b: a*b, n) | |
for n_i, a_i in zip(n, a): | |
p = prod / n_i | |
sum += a_i * gmpy.invert(p, n_i) * p | |
return sum % prod | |
m = chinese_remainder(n_ary, a_ary) | |
m = "%x" % m | |
print m.decode('hex') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment