user
info

Pete's Number

If you are looking for a large, worthless number, look no further!

Back in 1997, on a Sun SuperSparc (silver.helios.nd.edu), I wrote the following scheme code (as part of a homework assignment):

(define (f2 n) (define (f-iter a b c count) (if (= count 0) c (f-iter (+ a (* 2 b) (* 3 c)) a b (- count 1)))) (f-iter 2 1 0 n))

Then, out of sheer boredom, I guess, I decided to run it with a sort of big number:

(f2 199931)

It took about 4 hours to compute! The result is a number 75087 digits long! From now on, I would appreciate it if this number is refered to as Pete's number.


Naturally, the runtime of this function has gotten much faster over the years. Here are the data points I have:

Date Platform Scheme Variant Duration Contributed by
1997 Sun SuperSparc ? 4 hours Pete
July 2012 2.13 GHz Core 2 Duo Chez Scheme Less than 2 minutes Brian
August 2020 AMD Ryzen 7 3700X mit-scheme 5 seconds Pete
August 2021 Apple M1 laptop Gambit 9 seconds Branden
August 2021 Apple M1 laptop Racket 7 seconds Branden


If you'd like to contribute to the table above, please contact me


Pete's Number is not prime. Its known factors so far are:

  • 19
  • 53
  • 25715687
  • 190528216559

Read more about factoring Pete's Number.


Anyway, without further ado, here it is:

17930370971489543654105187251384850028881632464840494261067678018017386289534715542472428511934490005550125276758121867430369801369301178370663829391938409180015242663187632049771518651678615325784254727585450295122552548374166755929683415810063436101291899959931584735071132578726912965835981476534355067409009592459207722903960904460223544929617571673314825047767053193510196826009623226502028446423122141864824562302812392608001457851041137623426705689023112120017530424968870528826449563162494406819707727099062849132390765225679586410466128327899214209287707074654329690098381321922737984883355961780632750074734345689694786508665843325713555361874761534724634387353646122826636978479105386173681191267315184501487181300042277568345333657692749177524091227779143384580340690838482549400687956153326136515813998618542296840527642124964347447460105624924781362138633959675410832063016434751285587101667914632883822649989080408196803915494063433482640294984906807232257167234593248489041132531468898992154035527121789530038388545094535954153852657737466141616631043415422887261361034066590863335216316633685244555325333435973832827478089706603116003630536306120324303429710539127918842488162070939399077482802736532555667683393880379107456504777830535480323892639611769685111704493371178708725700891766151568954593787826972251434795535114284808023378856820198120469576582312107938033879912837765556307079869652648913574801054586753815588685153749851564582010151420806902363599460052511166045112174370502885076885792766184568001796446735236158189331940383634631731531173045785105102588071325256522386282634084664284341342231084316958124496348053697346580638090928903467528946891705887382865020937087543358568327042713793174681304118618444183834928994352290066114105319266488459797074993768689958423110023860626485270729288207627929049090655635950149245239985234840987558045812461493532893660661173268045209744007588888896105959524538094202479513297253865893196104603987803180460009686368669941788798094175089468893582719899491355424993715625275819494441690888943603240749335793394708750718416885945454343316932244073668580341465166472848637990407622871881334894948857393664452560121626832107970582784401012502198859664311881373910830804244429736666297435145850336825905825273894981230621403223426122853627838517404779880783573195591700624858227436956979203955424710196153384763223128355735451255076115983371373104959143056313387834034410788424689924477817475143219655370599516398446391301609589013004455795548836275563869484406240623344948901341928844080362652859577375338300705543535529140156862349394669950207430333159715331369675468143800468989241995096963544251887599947855483815031495551143389245771691186634533141399450409159914204894178894896436160323730575240661516067356293231410031527155687346317832626703989040763766914520911430436995048539651107533101684529127768836635770411119695122212279373051799108038525701806873565885115269602342987039584584936245424521875673522062751199368088928247984213420280533245345966505691569510990717245781633052561249478236130932476495529459096123325273909901482120567788583980041861060682552189960417736579114245442425784849312157444049478312081787254945753553258768299954202628233354788955056140441972707712340860888349820124456264436793977608097309181966586217039845185028127733443434825330051010814856392337173698263506246765411401154618513088459367994719899559458984599970748572480683623662075754964295490210130691578872894804552905976118613905157899692858663277715746631563026558179977340873446519380011517841382959657082715401341250653167661036807252792963455679332694149922238956672191716255552161664656413408096302099694913237482882473632244918876727454915229075750255449527767815619573784207733928030749076373699969201885552268424108650005808282656065399143585443553415362222854085507033344332781902649801197132788337405517643619844334097444310118096439594386888314694768646068637784932535224176524784344641090457278874398162609389632315118852830696886896259966412900187171117315328222027119103643840482798848369733295960121339822825653942474882102598215100496608402239387115809420190218078890567147391235337885455194312575445106916733844434536306659224981252092734142250088821068638291848000309311594441153324725657881148224146550378282468638195011795429163960114612015714500882086550079308912472942561192577121784041563853451027424270611822312952186487850135775918833371869948201699959610312796305383196243982298017789316893232563395512958155441476308186549615554187002683556690855929852571979761268675456944442801520386947597244197138515829946628318803583653483885839222865024199568792133035126805506850763042276083368274456901219638827178567441554887754424396695077438911121181791203273168184587562554023749430212414276687098063160819584221399904458503391990150206250627303989415841812473949281526465612089166308483222913341899022128835634991947185541039375126394999099856323399226795004257076675169460480967372981455527101951006396638828441480069960495573605193545716148223116644589373892681880077692130470771901324754453640357614137767323858939153968542445453520588390354325583340225696030160425120837341829091204225050546687304342907603271306098642979175923734347053021732435589128265513526958836640679280431650290390569101651678428109525113703252307593740274970798707220161035110311184112727944158943715380642368712541883606160975693503224012513083157254427525786960454426040604535119739497187344587847869810014331149742683822782160206788484898525055625228835055498057297247735374534559998420911725792423939435918487836392423103463970134548144874162237488928469239884814055911968547146564899510304420539907168067057832749279611349909470382595141632814184210714667300946834338867257077448089075300846706046390675354205641305392350077165431286748193281180385637039783549332853322435322107030588602374093929884494809075203452991885000257285518350299929122150290062979472699531234963815268987825853475015478462081912978123360351093100816294074525003965998179452933474607998113834060166424170951936351986797189719921091336722196592940350281562228670461941837873378839315142604567991609597385462525734370289145162938604752678815348433419508794115585355407200602256066570640914724002121540094693237861204226074999819320393776761630641793024264573129316524993626865841107558696506730802147246995186582809553080536590332235531389760870992682189573861950193547809862023761597229032914136373410681308413701353897428090025299806395875590465431456607830590281051048039785293141321078152143253675338898937680869904965802672033153384620386737370085983985379460849961399804483431702916509271829505539158338540076880237413249376288039872642640625826468338511883881632036563404700929227190343335801365043132528912907231103600005471304044762709998446957520028985550965377516523998038951494620645447086464329568766806992801638585313714329135616093837203333463048392792721285021902551494310506043128203563974459519468914488230836498722135391790547309129403365151563434514360006568980619966358534981600888905000330242381129263210207534765897020644106854000743170289452540502329723187891588722754856135845032686273848652572829383923770201683313381630600102709037303747025944733523525487020335156718618067721186721283470589348908842079258413853326188453557069468829996330091300831627064791265188027418903244468121326227863366952844557654365464555643488702655883581598763935085735180527712926612687026385573647191661902359684916758153911410035640955806782489942303795571063654512809067762343837934547295004629690953552503151858506908772363949923537188529149774510686235055497814930328707376129688870133123172605694394860599030714272236751659001130528811903779594370952970279622699604950917460625034735071021714406820547337347948699095087865640283086405978662619437180948235681988659668208459701787981412175734057312944398970724815431556303274330477335133613527807517113075685331339661057824697841005229728548774500798471283065250545254744426209059061976440562681273629610773036168590819079091539190312774239755768799683581569291919676329354825932164945918686494513570919443701875740899703312517812556880049547996813637720604875686167109785544197004149128921107576849583924570372222509547939968842425864107376276058206879228638791375478651612954028572115442038415043848178903904343166416256143383186005082590180410183345563124887050104630774763061625464396996892549514161280209605385508740887414415667453197002089052496596213998820878513399777704591451849595203527562270395132808519494874156348739089798798694099456810125056502576662124034536472906873431470805863793659637905465320350605011584793337416015599785509261293163538757862541276435446982960908375287947301017546927117154471866098263371562200405633550721938161723850430389975823233422530671555573139882017618793485453437737599562008898795466766195678750529461107706591463664775038251084126345308296914953369328230857307366532743790234842054698220278139787746007391269635141491463074408361509808095008062463587150486089715646109865691770958318428848178540874615620713301406289894151485220860134515458422419868536629525109265016513796790315739410394688669465794697337404740324345843237944152906463750280879876081990051113903833901267166902130764580083562126380759887834786761220589767280266318253488834030654871982885062007516285103445513344470525575184265269344962485202778270093878397944502680245807811101495093647461262129398380826837430964737453408453055361252726554323893866433411553303300488272374666392237397541639486258744258096478226751034713777189685931880826394848116466626464890787246118418403578499333327535093074916816155323283211169127768988822740307315637265303832912391454288411274381525479667098116386153811875164211170584901450795502476947651796983672222325031224591411101597378681179926722791976555671232899593351462691161771040445363377939166624080099889347044307427729718279063437515401624864266121078364488490341936288416325004793970655783612735727255940567369357793468689223834503085466705369321092901143455814958514648100189825577623154597012284722784240912465595947327750616527438839137815865809961363870991413792055079675856126609551685362799010335926557082493510297560116816099607421233556766184648315268789254023701861754714513603046121602958533498176114256889228159510432255330661239203078189931824520185899492780999860481361995900224284255715482925981809822005497053490215817985127950902570577840945881411484869420028132877031766688908903360216466898830835478052186921144122540715094275946222806263345388847608875868492381996434930246476607820932556971511816197900710985242270611188423195034612439959849850855079552454066357264158497874920664159000343706765014473471371071703696029763848585019123186502654284970730804369423201637407590737184308249477691355677856258406688727572311278567212168434011659129355903614252914141358487614669859196630387873622352602458075251106547911555227681202607435387498153917310333222343721485485450517533427518816126584678303574704798840343527468575310924052182789178447304300111182195624817248528787080944223555742067441207073605896995372081939345476375032224753182047182548626396113362578535274690634715429405268142747014303290351362779404916082704227004335643631562064702551439874783517767185132933549824606389369476255916007311097162335188633429359945631166114042065650220816855815109610026708927673215661902836140952894562511813302743616173284731108336282726699224871209578356569487588976126239084575436237549268716265002507498662014150398189838209966757056708886072628870824140097059781665352110348114046857558695754887337686198871838678358628573621425399964446783817081216596330623331825312087503431970198378724382508598158507449720800044650364195493990167694145317997841043063479876701794440790400440780649016026983448034546149693301403575084408802158804338594957442615798030335681863928384645482394273577504248164521822479812093834546320836131604991569371229074759662457215276061931794450194211286118012817254618932193014670362092932040635018905387024024953020118401524745970717465407269988639057398429031180141408083298513915626703030456580533663087598064968283691424826175106920221342380039873672881961029827548266085938954983211521599391050811762062869756651224421281644598719857014878000606689228670802175873705236162561328726188826362321824625385549085456291268219793102030207343443784312550744715867196708671755694253337559537407643648562302871187782274758211764933548780411040237946890538850261004533076207744272404099844624589960230126467854766905785291043838434965953439579617558529498210841941067805569442385300803876921390296490244748746100510123750828953076866624897102975325007388868733146554627356206538524135168337391257836423216885773279976029387801476402633763876628620276699996615831753807076351142723135155231286776325272426673701288629099371443383535971242259459872323074297697870418565768914180258088910098969682954065946581360524639989523000335650574774962041159991600895286792181565112107651566761713825809299488327163267267858523037296875867342091374444663208254934614158900965511441219208355272595734215686458949249446347821100044465419000816601374282129975534384760757188050798793542219023717587217896439659553959043498834558314916087310930778871315504998858447452472457348845560691390736285862876880766871504207937832652572407211182656074591793041359749176016731638991901915354060596015577020394902865300224425490919025054822309811233702777107694158741234642627830885717432008352254750609538813059937747804375134794012861744885644522573112287842158156680618149220432167267701822688412311889367546623338520145690211716109084309583657746493884462562129484437802385071260826402013548356952547868597325175372096333541667917322273354239896589506513768658767006056724431275823252242024008469565853465838688760166469549641723357014548951555557843773866489032385618207648748860745182705868959388261996106081803158241815249996859313569069219952303168973691025819268644821119418306298682511402592965635829479090016634936399692017917872840286504496003857352671789218018729625531641436991021019218767547061657342900890495101162847355992329230382301882760219843973078493568773882938867412595446570614870584257293552270730939980434537271273343556715574536608423374586650913516066233929263675626499254896189118516674309460860774236460186420398575971170318188829965562627183651442295639477441940545849966944007149458687327548080696015879864998776314046919610373698476529912893707518421166808540820789495129946658343801952391842747559751875121960832376601020258527135830672892612615954978692731124153640561509439126861738728320386079435729096098072664874519616796449094696383354817374072310119144204435687442944377890786226409627196246462596491654565852026257702066775087579672281265399660616726544100199819842777751040081181292997001018296939039304011226995063291626459665185575334755070375785193707143937384455909918535417503761910038016905977131983108656413715260106160623687255341298134416325159691245354868844352467421554051591975186746393127841092336808951354479330154004410045388457242370885355518732191426418363402857868784277185352219707135769408729291987458216854440322716601975465783663974179720524227165191171162415777366676704252174719141256437317344950724050232385187898149133520609687096913425520892787223453135263168910277744044583627092604711705682152828067935536590356181415212381576613235909745448986852638878564346785932802389438715312697065693052037682408372775869134518255115395145548168401949585355144269221274769186086855618720189818832496929134272502617309722966959060133007870968651518861215991180295056044177690323471534992263618318338549875961251995950071830832139616238903269590465687125827121020621840839356704282150839437747622640610159789649543543462767405685911282600729153172670734305858285784754734804862650044325183415192719064798017407321532771451140373118501258647493468102620948255493718085588465250412219538964182871227913811349677697209637464543475867304239838841262098307672328329243574095149950148122415246254464327311350918282335207562479498250104641488915483074922848090975586661557266389118871403308038645763693081239667326514677752379936799717062699041641442272311536816469491985649353114520074610367838468128840210688565351022168061545152210206715493413825972852310849469791437961007987720649628196106992317648778068219542957683878309488364977273231957031568806320684078848607958210297235397804960486800800173823936741953738164395352846930402901768742318138445270276907434248383722323837640802380542487176011592670518624035637479516305824882844444004544478567538670216118253651244354437606311288174712336806504187611856452316121615301673184427383664088359120146824588400803461201435695889409018898102658994235384071933445454826296865725781201759285658167528011936699173146152623570478452290202969531805039487487845901878972408022874127510389962987960825039551944204262438872740559273564282496144688956029318212819410536043877509129726187282926906854581392200022429556129975438473441003159036652067059265828395904094364801888263922945677785829878411656995095152113636662144851542164911124827279780477085974121796088531806188830907867891623993407928410086452931538257571527840733333608104245359949960152853088324048886173633149621462037728588301693940027062995905887351484444378221621285657088511286428309392805548901386129407487292271700871946212263076213806784405572699689069802367630098472886646100899238292868380598935825297707112786533916478237547944130802240199790421459170802894628908189486324691684173878523003386659116873217170952646145056630917192088381341611346221917311774717836385066313525684149606153174559937013713005222224882779606338280744285846950041218492732313432674489247153267324190129796575265605187878463714942949002559510561369005902444997828504158562403304392630647252255560971477950672934929916749201399283382004387935121314924903703832161104187697680099058810515351999884682864811295272532705195813263761745301508066907352978062570386616442814230910757846253704291783459693202532741413136259157232517981416979954861995902993526746832818136847309662975675483671244289373985391297982745671710596004911650626960181171789321877412679280047737897002988004994592803837745785033171365505128064515658132945406032742073285765669395115704051192525649435727154314911572039931645373626190197469263203734277759121811192433585130948080289899571402038549779701409791276859561031908512478387142895165109489774069422676748566833918245575230182771329266909680372608355892706422942150659047198102366552688345162391629499306293192852125134276167433388725490607569984700366048197269093945030119700900536426761535648988003879572566494967633283105783871545094944198092417144517468553939752767275356795412611584243529247458482437922602826139323490498839450766559154301116547366246431079216847257423569075452194600769586467926571573018597824270087696816220202775267788870634750778210352288067341008833195929637013764278967511389323326591556484208203055066461685236776039040746853446868004640060917128645295845573668148440174844378876812876014997889776314344832425260888109083511915763501039267928761304710413299471756588939721462172388223521630173340734307197744494956831056061149431008584625748486178035871260852380599960891071425332266826681460878534456733859513950675441722140919963040632709380965699674032443528180261155192729580583783906500004882918886703573356188978544759933423938785262320412443628338084491171731435134951557827175946952597333576097414492490828418995904913360309015953113976431035832572097958249482800927761425468414478547380491865707772492740908913247012296391355795947622387486726046208033718823087526627792265738850410292826473754538095956179685069244808085988881243818969311132508600544380441349244227308555822625793527062883091129346307913773963979038538144672270978488716986942309561395018989364040248109907621657055768275477846979751091026594522426924178846442735719898153568994333579409384052568987349507355463761212033315430414229259308306461903774888348603834035783438382900382162357257319037401385832035805488084503750840418204562944624434746769171839124117744686544880352365122788772896044879984314249099286016989847569640998736789968905981511518901365348152107318555725100568184459313360622832932611832356574944945124693174099969579798316510822843242074332086049750426205467916988464902586836769703112510582650292431373499944157757715035625848198585746136272007995439549013140192471465618091421744368715914490337651435727070634205869426102105329336616458250611321246065866474510477225151864144947271914357094440422829512675824125809294737222743822424763123185249781754646090942853384293458604019465179889056604446090404955116846790567680232065088300784402696787382720100574014263469901718767892212707861566372612125440046944487464236602366234474883620616555125825238529337539249068013588357125588118852870848416968986067904208980526936650100564525205200804607092246295640598852964579753273823503560802868571820096361874401284465756885391168993857978899109911976144154527269480887215872929238918864564412032624812870564439881881526434513222785291752053312711212268484840610881269294150332290560659784187656156382897586681422617173573399435582336496913865946842602401599051087964557218911527122229234341259944801538783062683960891907937514045923290028208836676442894832912381446981844324205425674585713828304130775101552603216971742042787283504887746214883241113977835206753219059753891684760762924964453075520628097561655664147874378649878751564362390604470716035252138184549711976916053561752545384379294451190618230644254535264388103143567314367373534955912907180635554829523970536382362827907847151493310856293948484310698108048079965323873596688012489527624581789304646958876847011012184326397525959239591663697480686855102315504082718027378583674294342970561126780255467103610172666641105419468906710963104626553674452494622177090284852886091402008099006892498648711689999255974520460873649902601297899866978148151008920655391954742037991760418438753177300628423349129027230543259635276376142744031294790976185208216785053847972008807208986124324246280396388689304479814030273173767698546876376651548132683796361837418432977291156048383923751645675123166852422948255251187497528985626696372045075034543685462563823432003113246243368980991799882226359469147954763553806536405733773510082326135688167102348692816059876260195934636841827877968599239199132871551683198151356950540683797899629285027939163350922076861682714530396964500788821499541825105816547478025245705969873748092428199202966690964175444670830239776696685212249964613778759890328932872522259545416896040117128947860539117594159326698792448939936487182701423926983299953454199015714177789511338331456620654866483799717199669955152853964958312066619383513234567652886652128083985793015416647155106692153176138990174628891327855375709596208859903425728008567538817553036377997182771188735763111864617782008765960239820754762377964173461659405185463217431301625824038505889676860807661050200888203589934413103922425328795761284149112512978115308311411758788949572039433892610618782927834360785832144593313423168209605951943311569607543872119494883137432554589976080750220665944888566880005042769317287175296320501589663438849352162740065961197276297446064329778039434334508012819320898604215560872623734239376558697747579645288328160086068928645351708004479016624881745935078488562397309511742849768004825898682938224506320669406240051372512304710929589468576303637474296764871506377353197253157893336351091380526865359570630042469431971314418755334968115944274497188969533670267102483208689522068613034000442711628747973251640553972163650097293110136587411268818486058526989635947697887647612745077358800015375489781707337351035787236140830889704247567302881260125956139920484620971645200163246376701157715380229656802825164147678023833879457338581305563529695736555662353745579489842376834762067572215931741800558021966563793447916408820222549524297229806475495767387134526886316958523951294600897338637429727450287820360425295841955773035654584561311429111018830518056103272969550751267099168219906026400443109415072429578144912405199202637513483385758543847951778595021386544868586853144175119478769757188807945554544567009898865074651244634697455153944418206244349572246046393277468387796642732191700996978584890983774003023931597394172435252990557139981342014808907990385637344117767756172589733863036619295043490465026303760051547576774291048761328272170715606788386270857995225292064872993991682481123743645545555132634734756218787509164742263222642646485678588565877842775246824108419095396237734800003084250054074272785283839709513687962721441905246781897995931412062751241008538985593464556055512527916859699187705752279497326254178890425408368923008583210330418398668512904043763637156670189639027078233755622409315405225175089429529728967525612434283620014798190161359638747854938577816163842772429831773241404026618038781183169629353843956625036220320130751429333343861150812430156412375498234440044819506321574043278976921574172873819575744705215706076504430061118437611522875919123016789037740814269224023421680078300236441894553957408641521969144460617550801019158801760613180118041541377071571784048777287008991557226476523310043597607754641272576292338092842409876542536049329479255917878101982783067837193967226819618326744852118413203902488883430771570517095664230166622981797926807794432870137225166200734177135469477759155104291696679032600100226773316489424099133771723663967362700056282066799346918961907576012183869441077956106448622794612135234796096064412674965781117772709745956747099629547554768819713835024407308213135689609287588854435060452047407760696838564684781010524562261759217982533308159930167448406177444267705836268361156704305982392988680910172471644474142815328605975674336504302991307956408026598773102496427048879918149762281777682657428310191113431966458474002930574443467475726480945042322085284932573802109070746945771869096762308637222033184765817284325400433588626193587512303863342643048620246475362486738848181209472362761672141989872220851418166599862883919487443635222874855331372568530654669255085148070459117503395582823828782287549858799201360688621344854152481547664497819106186061608116871894220494665782637118576885606363839231646448447939376135678683447074702396264310632308982577441178925041965188020264753673501270086618893426640083705498567058730246033454332100926146671187862221012272305263353334144752413469585010224183295204655820406062497155122693027371539713153399691364748081533828483516387173414856782116302389395411135907040975320421380279303657575780015620515901597155670926679670894266233499167670443171086307645158575393464548735562588245192152678358099338333471192961846637817507664175016360908129277092503972665394780996939958012948985298938449773253838484864291955461665230883274501257493338957220520934263035951309294293538361437891217996509605642066769857845038197995268936902518341103960494979707910177579638365929005783820602579489415620092050944802766929159518988399533495342210838445479951774606993615769275921073092401212189931993174369623579098532258529771945953432349714688467245023280172062808848133760747519542381432317706983946433793948518757983583502182449755422844998266257583561057726614100030174663037161762407006464381656749221813572401504363412266982560506304667812633721786963322245428454143520588618305669186351472116042786784684293258305642811378091955996252851027105009145003637436247624877004154270314857807973627557542934069907911470359621164758696679661373138378961706161316876890755136555968314766645059621785750366415002462294692223177198221443710955344164631824537851505303154260372001829366953514974954353810575992472095564242468637376942155126720192475840277962968818130063978219637728442769412622671619893456613149303514071011382420636927365686664499675175482444960984123435425193640761121301469782783701238447717397384793744178992894019874123932469046688789918921128124995881914526476839890361219051572330421962092425196204186731080234576522188133932023702816244933718150069182706820402101894202541010586861802648324448048873839996073293855478262850748818243439162115514303904463267235476772859281226615885434488538482965744577756003706387061310553918595746545506863898718714621053128153851617659648162632823231017934007758993278561684834680661748746342225500509750184958331052488149587217507352116356544615373140013506346504903412733280761632607010902895892993641869127089666693129811914985321457842262147162125684993829008331363182713553982856723182804959439613768200919281326522978117653294761512235318924417844928481658808015286512296129828840186579865864752660702415456025651793206131932645233003237378372150537781669920205887112807512784066761819388081881695283223381582295788525572758152624919490302437636606242038114549213095176734366333969513640815772715219570769297935465488242140359458393166266537350186112244123309094386326450209559231492609404952187069620671313460060920931829055074490816742387983276835929517094798008249197516036344147948271626114855942918359561543308763860638507175910752685108527563607610326638231637610365743901383828207861842645623171035887623437531962080446380143628948590628603212956304716874289731689632177754066435164026586662386174517483010752406601525323251473532711727333239392540470684217487416493924764060398054237669396702106557599156660780303585538016030298321554092859202355934200994941969254743700062444439242569094060527981314914765663241880135744675489921623925844073728872690005510302228542011527427381766015445137356655856909485466067511764310260887990603852971810000733469088917473802653276164465267685376058850530689244393294819397548064990520416388171363293858476301346368630745372398876783939363412057673449314132030456708267832533497350627396857371083053165369127323875957166920378825134158545350490301917220413615819745858015835650019552731795383939387948777062446293276079887858028578146439934538386247322537884988285697368650397302137203922678193180091818860096967977214061947929838904376147993776160957585632141556139036542644588831319884843324072070592588934374353777097645974265162380507225618019900246870948463451829536373899304827275759821352135935444169264098467206811404565537860776254499612096895095193524984673214279793230407690934395015795537393994215677023083321296464273289111960570548823235486136071286852459406617030155541942705336699253352767866866152454772489652381159074274521943457504307943183461831255395542048930893612488494683871305264942411863812087819147180518202681183298050517773969131296845311197226617160249327483130902720068843448130002438783106878424248267021567573616065401241968531094896296970157218305875769791245173578036250604061955938686745698820959403644331252195596726771964042053982089638912099824745442943742247919578328910038460243695519565344805338311509625950938766293552503134324213085285769956763062004292137785369183422624140848691513742840399504672837870295032725399066959486043156454040533618465590712300949428207276215897940233003033625482836847320198960297304465775840008899917151625862025999148723207281949780427518552000411585693585373768960636811866997447756972210808213108722249033830323508325608827992509430049258051142476077856485220970680199480317199995397324847405987028258252596921417139399048499255172171541415051116306480754332892740645584132391887098128666815982591088879352515167678565367194395179282582862072438261959511929559480843364033010549603826932223547663219409808541286475624976555342921429586278872446647497038139068462914739287696130489683199099026747272693296626104245353005489871941176690502307706473797232062430792143307870670537805252555760308124100187564046246996366824799284073231670279053962700998576560825952985598390805875317876479295671493600313698300598607957728539789182032324842125489429972891192061042510497038103026574267108247859394519329292402830833850914423303678090466595183300601604697473721754269512044643403156074608192979476538688930471060656116260700167844259668156959777215175278462708492242969894105978051252003821173599445547840684391815722591641169378779129907518957357481131191390188771494556646401496379544443978053182492505742017966910813660850048439654793686203555374371569309225275387740042685181394227004793125785523134118511081588724762757679862553060327909839545796990385410205851199667757346488347483148569478446719107486199547988051791657372337098822174928971110973064013021868239922103176068449520557746455400494915187760433582840515767479182010636765138364560735782451209754285693551047846034589348948244806781396071617143094368578751807334758445739684806445402168138663070545167552208050197400575123219004328914687033076072366648905475491489589690698447409909896812781757330800990583920954941931699596580115080725677830074341217670035110009649707877877859439860966429703311052007866242130500850105318934686617122018583561610344857635463817566077625726831645566655468821003796683412119148171164609242722127817020269022299493172606990081118128011304239477212533516638613893158124231766265997630038298471574514010404339322741303730293044251311994008477591587601189574999419154175497632903937965740887361929931491755705097899715285749174431018422534541696104626302447839648259576597820512548254636451660789705853565470289892537543882302235493115309381672073286778925266751898535036079869863933509482804134738330233457046143982198421692776073396939224925893567948597247951577335291078121259956603354902457240044735007558410129195785368827636325831972868863783072766857959525192804189406567795244292622143413695640579116912784108913393796629214430641900790179864088505333090722030839794785929534149561508797697421672552095855349254961732493515321092005218630481306414781808760185112307081369366255027322107527067082178237994938103754083900954945762113409065640555303091313985217626677598512237088672334984196651394177753990971011113892619063859739529073275085034371606594869371248863006491938649956585535462842738097085960501907675137959533495283695338510197958036619834189677108776600563834708655466253261880590995782060091260805816331556380426936276076599248146357578881269439164684032493269339239778180450700506503184753648539043022038671340832274374721836758096381815298181982764297289128708776572606374146793649037686032666456727528299995526385315735870627373425035763446379477109860069946009456586886872260511460641981491106205032363697456995558796844481186849745117872619144049369984393348099388311110415947889257427479856014177286650172642036253399599235892236026349097880752150958930174393178427544014115224600673932268179538420895036128122085774827622308314501212268434039586043527946437803876712100416704745264291015619310452904866044741058193693419710790710449813578982311956603373710505553590823509416477955088781281734040525435271119397239917229747004582550374884563003162889488645046760615569539027615344702096874624855586165024819733259122146999097980353078918691226062967951165121406108885903358245450241889870153712774067899178545642730171894188504985866698517338735018759198142386350772677844680992069758232981055359674299603869452311567821849973549092022467906320135310479444003651742063627703684382570480659687341289677659722257235970445230631580857484153778584169086322880115713421069435320406898482566146213341905449631820642378038010462314854290187046316182417804914394998594675503474080758344488232304180610767136846306872952220293432302275998981249796005126883377086585358853512508844346952262728274882992837535880279368120222764075285044317641554014065902939039890742823705760639265299631649526519987979076906196289751753710445729273308299757266985978966477425371543565892375131259101385250297399469049452752839375462400719167840387008578653787244901656171021652290510407547498232844802993996064232067142543638233612948937449986547009097228512409378877021149088059187754931400596196749856204114002726154029630368509941215369954557592295515528538922676398599716802624527932584088716508122306551176624947435079945727306725716628073109413369372202609342482494123728617120414434362170182513360304596035986660277697622820811484197959575903216233888598679195822593904359823323168069253789026189344760834794043284665093066039294429874392708612667136241202831660686818957719122295429408635812233333780399961693537243580405066414168376819622735386479757276945023937948436903068487782119040699385323609989083488597367992050947955020527214335616305928477056213212134165142126335542148751640500091611017992921900166253247712340145063115534599528680389206053838315146218791247116292154276055294195198960713271187562730828664216574354178257523736548977617800046119497106417374241771618384611583067121293509198182102724362806819927950690859611709279544968728909243195999618491746621538336089723570037940169435952257008409950908234972630103823214578135282542041201073360247934260634545899867122862346432102915300859651060244031666343132741720600913292402488116651042832050310553584504131197212061294926957437438813217261614603622074792999750084050204951494627196869535302875162019043751956697514560071246093701246827757189475848922440568508202369514300904980506749142595612536590213594652983880414893737827569831339489860591758171873822547329592087655296242516981988078769955638760897599929478130937902016887313915998959900250139470099856240267984475815439949254851379177776486959400368679345174412012066375419922153997157642587715481316462630877363813298076885030640516435425929272728982925352353319202112521821104454797623990489602983168516238253042819148544605947315651157839774529465293438179924043626033348011535943306557862966167804773562247556737099649268812226542271686012881933931238916203403279765590586397740832190173252161871038061613748910571470415551442602123797948569554952049734597893304425322981008966517432366622893735422129392497854299136099536511095950004709733156929135228181322575612823591373711802990819766332619549721532916364900095300437886024837368125662388041197787889650354002319156972413870648739803978280044053327039903629394005161757487499111199724686087188807855948180160503519582379005812623074372647120167869326702602552997109309428883191225635643627148164043660937494917158319193293453132911117250457202820138909607974427543250100275090055036141041826043510063713911292667440653759768955581285200829025571987288957435602810307904883568787590449326059456956701249280629752142415954020987106395037847092054600371459693300240375036695786505969193170212650373279270573602021692028601573606372747910547138918887356607153633121232099818752881194283236136619068446859744173653702794857588896604182617916641930703087292341721199477967714424322227036419996340152245808176313137314334174411310494531362321523304881155213926473298174862632129444853601466727764340413792852246630941038321537040960910697569490723038685298371003296605700737299590659139018871359330583950830580897335219287790478115680871480513281937231160940746702781095992383245932592295062682554878144389933973805666468130114097043266209472721985617209722686683503399257945009992652563718660756957737517779040005388310264454295586928093282893824263814415243211719540572416692813829051094379452903225606742627550385384147556020375699366743511396296432634918977087091402752815148561272869248013920136537880252146193713838712880062422605252180305106899757655671486483595163495146671041423118299845028951938357623269340052822258572784623256389810302816992044686710929493756403391250540433914976038804668289691848625152346287828347434475743437196414932388165033088380535687058683181070988596718881669999198344996741569438211892821045944282393410575889793466898186197605138899236043368267852963492304867728118819918994758772134052004806947383293157656328285270770799025294967769704644237489059360840022416224184979484738721858504572762190828913145331132644776016099389044213883553785595410047471412176949850837769252456220800012509439729658119425128229885641613806939560208059176783236067579438233969395462202381177446748033912145814244530951238575598927392302756359848568762237081004285353155952776886729623362883806285679198615046675646334626035245227502680511220824385374668667418118516332411678845335449434903556027565020575449878869410813522491784898759301146402976117321884943509983150173311598682924164689330579867595050131799121239213822980880044335090399430767333568663053308329476289263246433058950342974568584922880310203826311566861712948984478836321106702545781139936624036613535865423293972727671444358068087174701850903780586849859340784838680776083971173620636392213013955361627384386308684952500815787107548084919759833655396425523974478506056005325017407643722792839061251047429707583330657372249791347672568770040003094276206451427301295414199675691837162678597712322874454537526597861635871270507131012685796162562375187222283938195239570155837406549084829665611552280989683040021256724481966999993945701986452576446753350985816938602174766588535587958738018693218268435997047906580377365739844966324455335028637997167106014316753366280327928609804455499783893439095122449517612358805818536115456836948198921956215170400263407382880227422540718786190053893463188904065527638446502077439477555040932456734165313876885738613586307606392046167500267212073079285946505162776703528552948367827628309364280080064293398332844324843569217313196986550228560470346103572142431787427090717222381138546464120106894827222728139681753278950510569618349501056421383817171199742872174833930031794335950374192097538680673090649924521925039174743110514217299888469938826856722614656661078963273299978908488997355666938973336067267496460688189949305252351570647284037857542540616369234065257757609551522629321468710800675521473666672677258787625115933607430427493306199492228579771813042462449443156148845446357718028180530789657242895145069812730111543743783528487212877960663692268315180954146380144491620475604557352699993225996574649975946519340977859115006883591942761593181038966527954508140013123962480134045904634544214331116271325661737865041359066205372942960739036905900443587159170964453131063455723888466144557286931730429221429364423616401577717629116887197596001820997695491873783078003514836453016846988463639542254878602505473036601746439195576745886410869155663497280170759713426720901638077940904554095944362315816204179322612384994764283243470756996877979753268143659055627146037278706677376236643289201516345535255429807934775694993838733563493959743822026823253117064256413506854694647431755004883843203612762031222352909431479329506466167832660876635067311792518920068772997831984048818648562518674470679978098224061078492440251873206827207672752697104936060533129632810039161484822026788018278818962101557083290378093265580006012784746831951999804939177332883966413481330144470107548076819314638575867493027695858225224989997769334095176939428154369784491930545893569067704922114616655285149658303970133930741231791954650730330561786760192986700534360402349772631461258916088500539593899059821672375322136965570850998016505766306016850799674765960692733395990223522700714727235219116779615354167571265514101699085226118147795849388753761052089879463599387073487198905453480357729564734140001692380046153075652759980310829275123871810312491550309464652754949816599476121273496054270386009645822856316679783267910685541295783133210209194858682600360835936025799445978309730134876936272706208470569176658729521726899464701543679067489227362537274557985481178448276220163474351449529955747440933040550508352699166989511304410053635811684998099381825200597987108370040033506855629281331955958311802925790074709215020556335738307667364788384462274020322945907513379868599763192628674567079838297864679209492061350769947721949754085810727425428436163568368797526566386141987500763108409389761440285895331311233530895694935174749886782040929798122345001124476087566470673063783948806879746675297285990608981946906997354813759091262088701532558388540692466535800422055135847187090776697939253276576835694031292865351719570707875728966233085593721835391796124238317527435370790351482864721936817548380129111258635294109816632161914357099879611237299308057370127373376181593633282561158370651903208930161152450344812277981026202178968637288995540211936201911090065825427266433893693137400751154145473810412132070724153285636876715460646389284775820644762873110931685603322446217778996976277546600688244329667614266415043619983309614988065602685371919647680442129525223293992985025209613323638219749539575157685766078439306807401719529927637908858415800003681314657023627567999674547806886770391241726237159094785372857514877466018875061251857694468869414907462294250818312059382200850858506218394924946054945495970157281862594840819742283748591920243626798560506745455868306612765774665799584673109546346812334444618052656684559912836795630740124957824435306321709770897522356406437324468729185710739752272755501911023069202270560072314296258665193362534789995738973468168978359719058895836365548667934986312692648425136012877579063965350117177064399788116503184718937975194002778771698510790076424321821352822639836690620141960168614580648722055795706664126162083783892499168462325135733043141074190052299694466932613610094953695243850763013067966322476023995452418133364812682045270624031714461712193395477040273823739717112821655668743457578517537653448784529965583434173025700254669086655637550065046921385376513750940222749822559606845173470567340904010906632622168102508051327550024228569341516092327514075764234112605825650218547007939672742869577515957061887128187227591292130656395020706826978250488239050496088970083054110078364671930178481252557143000236032971813881282693075323947990508488305560504036741520077229704736226475643530951754004839154520070280910557796060904616119428171266151255616332861516700900190116232772139937825385882069462270319589336290505749833819919859912289153569587019087084351870232890084164995697491499071001345678192150644527372249160829825838964803211439793071793478722172064679265741446297111237964603596025817123839265336696593802532096653323595850714229386653386579919323277648603174104521483789453731078296131334838963805544625153909832314164009764612504837720905966495432187130092927834467564775035500069303155059774092594037564758998264619441991729292590549860912946622265199221359157141649657598774504694592891094995660521831878473297251764528918117125786709214535530819019884697921911849586813151509645532501244593155672232774580795146000983652943555602268007295491828330046400864310359884450120130441843315289980632762842736697936798640109385201072635869775996165591835379246982573042362020980354729195024826813893685763300896116647445516538903639365030441871595257089253329856330315516747326328469081246394176697272766000632728281170381338833015148915530884947494631073950220342391326271974443498919665841534706723491414620191188055104121197129279824282568546769786397372767554574931272654911914962313584668510812405713265482144050885259922488472540833924577414961489481340269599560927487692178775186428884245406984166001141225166232735006187627444751411532423033333697562623120238668220809147637546926456681378158157867320775935928430816687769983827778610161249351476652569809650740339644281014604939266751544962077245228222006541689081027002133517981569499067679046677380935171896488215423385403440171498675355026353190499159317812952159474406153553380688748003483510674467309407121666195887980550331613764345876023170263211253968115977297538380195659654242845127068510667884235635661521779023868614889255623239557138774203973739617891074224271272146313122254480703764326179093646173682299120243081300213676917851647582706002649553520627023872458608182950069918465295115590712179758203438602513397045940452701713653124461466299643681269753713802580852789063446657335583340970234276489437066956485351854745027441142710367517788949303510710823007494117263675019251720360256050330723050692395899597484328268629141808583530996563145113320466725331211697307677497217692168445027256112403028092811900718654782632748597666454118739800840176511842352744305337929326357350022137766452036269447797701497118269461469135994643601042173385130063790856156044794960045116062448592120451465618702691001507225548542915690502991854764427599244614468197009090316811435400003228040655369256903792879288892483224063291493062227518065469209030728253503522692309241086582040743161939188704187093450270951277666834770691163658084451053103436930023795394045294034973336122816268455170912189630690079226900190308023590720241685682984450493892607882808390570352838887944252128201237517406534860799972829373332357450341462116080245229462223763285361846609432309408110157632890716930812126782161386518096455443200032846465184830071715950128174138962543098151657402116502434769031816062666742750124403446852373977718341807439771534219800585428118835519236938486522260196157787095104645035773855711637713706894518299076453728778110102041860475297572468637877635394027904454382850017517664942105074372568742225539279234728506990731492280030972579115570375304427893622442802857424287039988358700542058281126947096376305556018859084992931955923299937640359505460001025428362729108182194126573502585754799976481523579289896911508144240311181499057055748424004576995603956559761373984499076763400804294749627597504779692491607121967714466856633694968965815562726877815675700508605711526125086519184282048679449760866134580923490044649669723860868730090465314675896005340583589678155232137319682854575495743839123788422547194211230907353883167196558659378539907866760647168665226971401577767607829195345133400027642625234463433239108664513450383003756411036639590320296861934549863397544479364341769580978820431764127016221281176170223310335941495209338287175521674603381107374664399940013959655300700248618357504156652060241240315203442613098606657990554881482616725655976431287275801996790390823675695554254899315536638842747331927432490610637735744650239477826089809175565079012745201726085622557752038132250253952317822926653040548130627025087482658588429330669239530626961705008571101867040178857989561089503049388499948090291827335154420050679720538766947903718764738361466589965976541508492752219016611057008082625215271743307576350457387408699899191009344439772104427388977959053147910321468528635305173949769911374829144359997651582365709416297906178570992659906002172868159624293427742513984559932576692260197840627678245048155816189893586195387659197328080017638570193647147844654661355832491886592111854673154868069486810804907574927962376592689995614610707371253639011633189217263048179822469976542024447340219643046796688524558906848177507460891806210684464798377472139710416178667215455539568526166095541714061054801268016065900996617127072853770204437032605338815285720960709445167526528513113903741441616657414626646700239946830743099566038252109363361954780733773767950849092366492297014328561452735011496716153203027491397651430674061659786343259139158624784814808616640060811967404412611136158168126822273132503097608528435099709800746580731435322315330203500398884656059061857481468781391099939531997458734753541568817238540894809024671727187044390297002741785703903013374985418640998861365943636897391157026097638120394300876377011422601031533807044034195932678961849133161328883446387488345430581016026924927613625873723783817987158414591420010336227066642682328322334275614240214656011721930478198119586220172569971831742596537230840063595377629414632627214300863905485928540262083732815261134045591494537768182382346689047897913899751134075943565089297676399103172985473937047547419093369763494696327956296821577485927760059173635933978349778106516227168291732263867959841109783456687351917612986347162076504230888390824918214904712873109562951066704073673779740208449077639032882796565686338760216831452167824624014876028576436725312366557993354675957433243778485372224412495626067979649328924675138421456399402424132558507911067881885233393193027329343880210593583906262061268204710907793906355796881531957573849735010752506134053519070142493907410207434817290046553970014547776681071321554171605099614001159686240910157369121577809017000703182135513922149199370999354490900391052370797737354227987351403801684092225179005234365255435744050181741853461164238136674271797924449228952393078265098935611050540584266930869052673688144777670790933412478593522585090104081347000264245530313711683606152190379745117312083881804864559196100098319793537885455378518576055652304677001425249408156254091959069483912247411152954044186910365086455374933917566143360991651653361901562494662902925567169219397165003034913376758119977062980135579650246456563078525386326959359849072183105338153198060183973453549406238087195712892939264921283213987592228476396657967677256025369070622057274454792625450079463019279509264939049234512867084831032180229034267764377888714687075165482093623638804182363456460373685029093763060062056912690503150093137975141554097205991830007757300024622954748619083151241569956444956168848454060095964337703186348209172071738240924700044010162268957613454819411670141934462465273927572622433246159560902850834193869068650375147471096217140835758180004347777538718232089773969727523035196422834646785482065896567738884142766440913269920712968971669582906539398046596851012229883612370271967343664346068475421784400449949283174851475651872162814876269429770450234760527392852440536256167398041966259663782524555375103510124703590196860860104421510381247723174330971828718629221344967375902348955232704539645285917790662357576595620336096320829297788562807039898330959186426707640424337516931828696317021637130125478674582173060178154759573793859378699417614922525709000037588174348635823239172657769442923317681284735387251642789997732249946580426830271891694338877769583548008449775159653427221647845889561152941385032345258812470327940984599562113894780678966107839026956417025272832666072672461284668543531805942292079980107481441417788173986716286758090008153795149888971194866867688463840232847182085165073421774701126385386822315619621779593955102428604101843599312329374862395847048408164734104557449494415061245792374608048533306913982421393731603619998216527486892695939188458262729189194918797207686543670954350381411608720492472359758764818146003646085615429181251334764930834304650398425352491704213265716023167811513038755953405696258275004306674409127588737287208968117868092835853413838703142787622442496203382014325416260022556064694046271781880043332713270189769667706814243350097296154892491413426999190110464550266840393720819477866360175096274514297751696916586352672180611421184852036728984567205669637558861586044999894313889436801026993259332606774398122404877712246824824194956325830686640829187928534303712725393350862008363542365584814247614279383926002208513930504921344070586952924197029396542274684272642149623366702050251016953079925481986093149667391317072293778240727358498910506302083304650321945216970344494310139383074942273253645218417615595078797481168887961568975070022281320606156257262580601127863688740243403254349209360526007557261315737621810617982753814170988207974667835535035910768265831674144027140544281797179277161569792871241115717813886017806465814377438345879767074699417543891477125641264648727906439493169008024014769802300317786424772642692472092974167631487511450350839951856792175573878289544247042217843073815694967248418050992090674521096366886230534273981380284705350709013619532450209320742745389608313479890905693963344918449624568010379403698222026404490775070503615476421187903675220817171960513312465142292012503842707901790626777815433525830257847034555069042177503432808973242020440416920491646140650953977947148713626157358144845897439596354234904454977724125254792924724473974318112083132329521879298948027437494280196379002574594204603171576360357250154569804591878306419975306513099835674735997201889057681075848830018421516470427230936086842806928565100211943244750635098981608656215225129334765413017283518371393949602538868462194516366247625893717025875843891490160671907647463916621731583510887631865614436455466148836503237263899327085340369553011461075970216848664986285654716679677199887128284548402446483337281767887140960931673761721001773128641958643306768151631077254752266271039033482802185943944648428731078751923627125965923264459536130069745616934346957745455190605359014073715553197054208661334822077558149570004426554446243277966175510176466731268352059772977202918865174139151564734049855025183398105051222880155589598014150716277533805041035508500985862170381947460212250522398854239567373600501517699559229156058091422626266766428782565048375247360590087604739168934155872676295916024869771797624750947038324059105815539055558474005659075089698061009572130846355696748755225826625615856291135108162966696914277993716620262320945997925658660541305588186673018337821266368787612630242021959446413048234935444009129781146638292775135921564067493210781246889487450921419994217704587279946318789140119388968619092119837089348390743062663607300416489751326228517237105723487676594751531409192053798449100356481291453215398144210718353023296427430110108461573595504990720833071039663334567062630578396908887726436322897755726000779978268522534034889546879497633498019962546148889003557621623956044580161320205522355679123420262732288922778850690961091839591119485908836906362532008377640952460186462824614241512911589763816242019696413270733716598822290397582684881722145704304114365067589180264415783818894243557733687295622757802951767938920896800173357937519242269975402939744404134927472687448190350552313682469532478179902343517345655256981999314240654965097536135063104875528580591747817291997928224094875528700864715326139393825906935295060282194755100450290166935939458631078991883980873789796844653648127589022738538716175820519301567579650395146335295435556255404301043918468304005995369497042156983951298137618599722551038984127625998425910397688322230767728591154995234940483663339902557319148520373938032686112588497408415651368358445958489791566786036483885453383646437196711398716162342531408043073135232168937741143547377913298754509984531006383028826964534122204558565020782149414157287137034991367811901642071003912529102863233624664170247380866977191856514626230496241954349741029697024749143056920878323365760455028517926650387000205863039970975755562105466004185411262777421339105096363906004280531606121025908246833186377311581327873287431401141160347969473984663935796253883600910783236609317670548305706986619407165505077040263768435692850720617931083236880596323797655468844214213422620741313409091025647989411254264187999243816233528896813259947237891329552320201008702293338298452032388311037242546973108188732754440877788106683706651964590619956181438115810226373556060772938633213130733024417165239096267808314411832911497341491118689481047141410087372680170577598806793477719966548109111107563487886582832400196678665166901964431716117070929981197424558969085582411052889601375243913512191763605330812639366848972160575749940611000330409360360009925669951136095097520839643865513956285347269053684067267315385030161975911306550635261623140863721990395905785142140679701496018892583767680786952970461552736074405669249570926056523054087239909519559239989830387967879715904840803891530616883576693230021758069148524229180662725403288934403348825657932372806311270060849028991784679742241448541621322877853917980073813493293633399644498758012424816471369815969678324989788332570393146169208987336479629655607471179193698860330650056131480722388572797071540575486181802985376734864938325296345247256655398328011404174935439455375182102911188654296882008242793075989330702686639853799669397754905458468654418125402787165830702584228273896457014712445847840822608171365004939012396254300932576153844452582489514904206704409062415898801637986409518725303248389389455291022999667903487373571691210641106253347937802845903122531401549006070854692120814231611913189467117086203647354410027313126942785465251764497550085546057617333227170893175694573372628211095032037177572292838555703663691909730466414113646967314241437886618495950410514255601920089282515618246679045256896020927817195559627597977876988841234785405088180738437148754369485056188308104249197782823803136541105086952544815020844929868555994839577233004417386945770446073586183233342549537300711174964891646199782448678833621411160567738968218385787420413234239261802419211186719631412158883793990919150286330632893101989206549127762341675625374222196919640412277880301013765081640316900352403422746238817991640468843855155545193456695709870510196593755473296628085394276122572007812588373039022622372919919699556454202798993118164205587847780993223896610744386063975275739838677296391870743782389466529755433232253079326615268154924536186391591971411930051570815249107615889589823337440658787628555274905933483308422285579583323954264409443453585924197923451129151509809799885434216485985270238357919499143467864914640267706696468165086702620339920893568327825314103174611364156175761828402127289976280947120188521855215136853955927426862133447606268162176049531777804169242666233179721455040792255974792859756421526507733500711194370731064261500826287337228444103280846747879987795423026412225103620908726988149617383658628791335475001398095276111254347192746397991001048293598923435268477409735827574814814666324702876677822692187700067795874401655513875447664589813583489758846714860184642298538875034510872721736751033672451443359749013140429840115278605963648841235050816682523063168536540251811061817348340837461350715938658608764649959046535923093836372821244710888901468636765631935336277410424599015210690960059183674851943339772966678459350101653408572627943467549970970196037509900005413671354549770558326383930681094122023486747590875735071138800200711546246516216432185279741612139140889742704527482874935812849920930054690538454047165057182053303548627025435795704971149427935022245859308764859684723975343717157345485655915452280011652372035443671090221989803895497851173382920510223118059970099518712989780771239997082005125325771520792760932847539871063204570321179554590326279106000115821336225712512277206317284064142192963142249773591193191715143040722096092217552913020794934189055712509003478371641456713353494190867992197353793066460025175541355978894463114356142602641656161894146519676742294755477528789673167611856238819367806330244443465336301054316841720886780646078772889611543457962479324633326665473869126247690431534691581335799796305223451216519827897360890357992103459701533742868749229103259012975995085547043019496705981999049785918089439749561488323748298616316628797935266701312026222230973210482956223896424457860852646604620655021057080649907831571355948216586273266183947029546528260257610572764202920104408991234605404688477862670384974208264862759964777962899059556327514329903945879862913948240287784444461745281469526467630135194857429965630319078310560648807873895670316805360462677396527400200161733469712119656642326866069559251144124760295126728733946158047925346152914305394781462891668602605578560903994763340701745942099625056577917402841704679001817435946878402213542860586339430214017558386881660737642773552684265830958146564878455394250106546657234209406132453914820286422836459150867579240188774326725193258406468907227303876178747733356663391740824594184115757317713620220184138395028368668888498867150243015084677498399154070899765804450392158428263046705193000055454206164416986479730369854447397112523220678856668340479714491041173504925802291348896735109039681572203736005681424442238449559045352351848203419292245970154258836681531797180976379010791200774310277243889575653024528489245585278616628549588913115424644313796487390984761686378029002874261044890503437673613435216671373842702752197854648252464556969864928598817953427520212495175724476043511861920842697269011025847081207570763181576058705118929134898515660399507653331921692336613912215844297429143125469317782757849845268558517179468915060772513810325061698262872566811097581683239382375711173973470225151833695900142057389158804510636896194796416221525245928541524634768341480915681332829065642396732291152849380424411884422348103075606449094798185033183181816789200002321022804175227036438782681384722729939896318824105252473887766022511656071460279770021687940670425735854873743633120949337237941913076928215891853897607519282853528014048288283537426059706468936341557275101236210092524022716743376036095943903901726400594993763621985763527402443030238702061441600804112692416690171593457234495717801654816611173270307405955230556542713495513216844810305945170108743203034272412091750242140273023608569660467647740279255970923508156904459879781315340192739696700605315736286284009764868738653315858923597629807735177225969354620658421992891291925903666547111817433722928104407219591823943103883354347152252268789142628644541326599488409778609988543867831127087503429537310007014745538330159108918776307845166371472910164207924785113847266449844068088457469248890632628128093859432325385652434175959121896126462338793298121571836953782710048830437396245651568699052127497177382917370428394598572910121364744774832664954210925882015813055767253562619203976749372342009905764877308930774822824769856045706427529608281521033686731216350114845796183198869045551488147031582004636624224397089324130275021756791560421373022748731191128141856896819180125394597401711119822601864408876566850278072292994491072245483498342133670330274083628211826048027952536093110874848581931658993746481202284651611705366921822753710605784519229168221576638629034601395878229691970561692169076642623590966927494279667764140178763101927115511231178713577176847614726890574283802296112196603365692259011699648348208887312517658378489395324981311695231474352221060279937428021108429920204571745004573471181208426530685584929120424229830868817435667351740214254013190427094050332583529782652734674922365866590732411906077088595370462929947450906641822545514715462147942408986778049825031971139704179568699997194278765639384767734010782084404427982884234641510050462324633894521023809713994256389524416069079208342742627043309839491065357434243277744674001602146007627687044245819588673413338501390080606761486495009435610017853964894159007742567968620956634240987052779832234167513872831263661569085045000683920765966047269102533886133747701320032754494656802809615761868882235507788657155171016437201219785596805594511548184790078830173058735873950484709152929363423877499494759411487337162358462657310987764737696537008689701824678653128224199570547839115146368689718013955912624361509815415013687839010784910076202223131381380154647944465303045410718126382328629818315465306768659532764946289364732530157367952175597807615089681178174262642027052082942420136278788851042572118320793124644358890783276910734175297731487231350182881903015076506349783884432949141798101551433077938836767303177683226017450152457905963656818491514864183576394092292061108709891030673792149982927617317536707277636105307032228185633632885471964904078821961038451142301935024558334689444862529093225509740803186661312439679103328226307905301271086338117750425544223595906697963493218732313193524682834598254468726406170779075199695893331122111761324320550605262470499215861450576191642655007689252080654384274718269280634483710363700149524643973304033516841096399394734588721576856674992853293333927061996310648924662286875283120424435813135599808824505033811318556731540207344820049538293722376421384925962301536832048058440615195754004899053858661941177762585163208128603002908771792912778030542175800688937455700409861036583079730021935308181773763057185392456463554876874257558386331710462066466163370546753197776327515053144306689214713365453618401292625826784228553750030476268125718452179101766570882317518091432496445985968400153823625796887519971694222692306433723587064330744887487080822790251700196121371911580196809103268352236098067891211904300917062140763667844205617877519293978571903051170278486427788315049144060189286256454612209889128679060773630283375397428163447626433818850824454232999099252725083482061972894658040295020652120304753881721129737791862312290659969778492394663440643316250612030425376610025282068813134932913963522680664145968197835253760314951816154452031633725299396332452385390213238751569846331463176078548999039355964396129827576163571295147913064939238763952340437785043305332885988610966926539665378441471664584544185454051761139716909238115505923110861917166304322704465083225786784705834601691547267127516863460610516155440173336934902182289719877280924697726774822566334962378987568938348310452841336189957624587144416616601934612625625523230557500209968955555155570882719394649820330910424102753896887755260152295360477067095350508213334615702607109479233139360460178356870557317038668489588581137416148203920671553473362079995007888934019676166476064742643111706013662797763274752535026487868875012967157380566308213568405470555735280595541676224128279961644527624614219321530286735125406208167835291738169221097014056347225930544543155507858146532186886566256740907023262999522246960634416497063889485368269077100374549037543667413780864040609189468096972520239515951342722251542973666268067474549223943561070056459325556095355161712321274958544376358366142872770075383132934061598789997599713691759938324027067378848749149977534927269239075053946235435781953587358075573773193535476347903755883032875774909384086006040044157992867849346440984090220857954733398854223631689943147575742961710655284139868094205932439701452326805055794743219783074000217545674601781284189817253596040898444392478823656093349155072689817124880299937612259207641407393524642997100502069735715869713461846413548942788216610303082604979649615397731201819672504138964762476884571690519188811111644119700203301350337564018818647905379076815308195343209524315116526693045727285634625133413148838397022313989131344865913102370044139767318858525877089578555750789805210187668200698005533439425948269675698496208442808391746424155718246728222483726423715446274776364116345710450182382152142688316509689257967835544797648944357791677925392320758970753666228674694622781698363929039055818845437907365390811942238299249295684533770843614667807163372480190122722460740462310654266101122066994327342844436579428502353560482947835260847908790484888757576394222474632343784972612492150303056041882803587919393611695249600319085400957493331439740423252316808140576178796890643126276179662574190769080249928512780811840234112019456404198526999351709672170129782144978946066249047800511213337769226763670407068069582540150132829474868507210634379532249241868811544104323235139949624955299834414344810473230460096097236572936842001160875600736233386419038594525163183243328243568361384362615962362803122084573453620984472923946590535987117219036868568412900165400651135586281604327638663278437108415823235997388884013142304109850799336143142303161246174450403397332167787097909379947004880096452651523254732972741668286969407379911269972347701023989521308507591532418913728663456670110235663143226850096003646842545388756956801045573259700564840092632739327236033162523120986765841111182892420843371775815508054699842728794881722444817744537645162494190988428080783910892700657148866265453505456081626368157887189773281372142477645839958067516070248259887304515595893373805566477330227994349655577398393429666822897411540590421881724586018126614235625858504813935547538010843722193945840902990459464223581404788669719979185706474152715766013014879661880234683086350095008773638377099702091406533653572961366367460952136027840829813517134164105082629341876722974704700784516427483772712321751518797732929891126511950448160259208555536309862911481091692226695944211660087003796190063652868257698125538392623526972443602027796952282509594342112514473169001290363518768391954567184994198729758368940363990144145341531887623361936240039804371192592372303541727558055432850957515614187295245810327003600903080452658321353780101016374009285999407340252788491795893972590289253337976441101993607545439035609698276621678504708753885000445593154015183178093243487058037433052986775026719548858416658705726538208396237772830887019840936825041179862350135519322393308984915916139697895163341687156869134420377916386240556305047804155699854984489780119872853402153499667273753391144451237504409404605184774838514039065286685766446044689977285278030396500009947019454765175032391573557844943576153589259284498088928016963103563366413758233764091957507084852341751801366102922269738389390390806475137285590000986735690631962837824068166578742862136817795337585711815405373306741343815861804464090968813463741338982371709805391465034943919283230259701087737283343455137287085007255238549089947661872122541187045426305961422969277970547960937346145722814874875258799276642160075182944414218259520470914309623544491121695512139846433396048234551943400269962657243031088028098995021541292683582053528486919920716865071618981657580565097253452593676733466851967014904893315490251395359421726614094874816838193897686110763172405626259202606723947771924171831443974591322401645769894350145160978723063379018622857303206291930848577965931354581437812023965765198307894016628382575894500251665617244983088112106867464629117334941189115248007135540071148334709646496907911429409813984386181202770497006806154382576540385951481268000183380463392497602633125550362469165927845048992415097490303533621476833301026603907153134211241879223478640099117003239647376427398805229291864673106466097812095599202534644102810470218399565767513440034777488647486912432344520142609502530089667738484691914280964334082812012931561741266506187245103363650161632150370929781792173800397366703900493217018355746442496862652678273153171796625121630141746962842086641454743420310348211101264986814226554069022232145022983537212759818288364833362032444390566624673623841192780237436110616812694754428599155832595792107794862163486753990184725773306772463098127169193032373598020187299892547471360201265652396042815406591579796006465156922466490928015407051603710341229118950434692608199996061226454286562378175702960643203630911111092351489465820159951358626079367706808346477458432656741488409923705080343181281234156700278838012195308897449854099868969247899020391052808488309319621947369489477925488255026908925562788243757914320097452217368185970039094560283786490188714149585319901562779365049030498275445984196460620793080529508059876472083256827015696612117458121469421049539479749397382281490966395266659216702740020721884825618795786091834148143555986751451187863409549193994263985718164428514491931919381528465350647668833985336999900206848383038402983036136529434572531222456338340025174481274339625489043758491724984009830608662469972060686931421174847667001574630820457059180761744095464994447496917857986742549829549542735535115785831614258424455890938780717726748730637672265593360690889