In [1]:
2 + 3
Out[1]:
5
In [2]:
3*5
Out[2]:
15
In [3]:
3.23
Out[3]:
3.23
In [4]:
53.3E-4
Out[4]:
0.00533
In [6]:
2**1000000
Out[6]:
9900656229295898250697923616301903250733624241787567332866396114531709483309486103054614551234648391482431507034583723883510658989416314927422565031572905372314869377232871775494713664238970125842914489614716338412188631103792398056007740136270960553070538667179812336061592179279832732236430322862606574309256916278582042834772001794493190056995140975103125269173943089615493140378429176713780793147953357424131614194925264632270461031051872671543446326415534732828328844476262966391361012119424025100613431716524949459232757177220781095411635556324285623401399844018872126340393003478382714500015263923202290122589106172290370665498223255266570742364678876281944070178196967564313268473039529471786419977305867922878219930648823033450650345967912215239175551092757922030316744363444481760665217392500046261574561285250191078688855985382395910910281904752437827169322142114212392700345639503812353502503119133229035702263721456724737028852183729673865439926655978577772441147113534229818712960636023421248382580720066749580337690655680927014364940044770097986900629915741754905390213872294859512527457258435686930574294331876148804212587070508121098981067309601673311855119053197796894882775023333854740399691742971883475765010217412786166070991380920261381814529687888424435227457227458101653560859482748004650385413813118645127931044092396641676473053009607268165196699855831639249602534508038462262334150604761149537902203721111507607914097574578113395769263576151288262983431551415618254050714509049690835693882437350374813680237901473223489645859363030917593796614865907927235675620625129699427016356478216022433672904344807606952184673828762029275058248015293274931396581899857266679461433306593743364113813692627810553555141318609189614864029747787485088801605497021003450960246787423088192738641626872510869920522778387077213048636102779482608560687963039051922404046465266132189059512323088725564479604746341626862684240276143112253638933142585846098563836632037438775955054200978813776042326316628619102324598113841300603753775993390952276982455476518137898587713078425308571330225253178917068683209419560529835520259023126290003233592710939792988944414652093825497024880577990050489474303866748090608267245501749642844400169343813191709308394603548028963006454622273127795107156202374076438424901060805693079941635557981171624878713897466201262652204378955603898688141184224279952612411255774724283387259399407640486912389154941551570342193966532335975600648916587397746210803262067423480434979262047698622594329836565370079340033961049819673065188275051258918467632999650425329580622773470588731693867109528956563867109447513857323792955119042424439044508858711865043444765898942773529329887549027551330663949351335913390842238721891720761821448281572918436554445910237464143706101581595434557024511357582725139633535893188960025597692385576985841276255385408291268999760677877884215664284885756771798407957836158681048000846324070322554448903671628893605406269440968355872345459470717644718680744770583632389642009521969166278243014024561141637192528456426171652084914747765117608693729555384109074355546509887533273790752687147714623912453461044239297773767990897123738074707965037584054501224756459229065992355614594650056348921071998519459469847007104223354608673877587847240134150524072159194770500076484553425246124488159372784733573741004915647023347096248524904255810459436975263439593863159918850970863102548401684410433056106793796818024467546346952101719442614647720299438673368929187693680360003273504371011274672529052722683329700102880981115578155825011414004306750961063051892423266312691863313882247145564885271198983054964550358021968016727342965768520579711327660068353356597518217625215247189091303527817345395771648644589243260612825124916097893413217756349807618260032123465733049670911712263038439015896086965288398395591018070224208744317897600195701590500245097416967757542134624470565141007790543678075797223341207554934179379437536035155171335511675065855861268449269440994665894928715995444934094778226391039236826869063181234615917214533715541144866865484112921539365609711528795643809852066529782942057639600835643944807955905379479044565609818110954842821707097945805932778335469101639474482769212766576173025433224326889179385078294598818750360238365630656128234020452153161791764490715005755623173320001115033498768169575742473674936831245284048780256469783991677995945454597433246917726097035469073307457816590363454393273168701666498159310455402443533077464130459076496819042238087490701010897473759172822044695380388761841276770929988723999789420891609102878168855645749258956636783727774414530489339524221035774076396392702023652945153813708495713254070831807639278891823766702062039447546082453243552762486083967898350274273369575293754596932164878391879596214609298878609882076040897874884490682308547668720906379499431474882025306994761439474918675031818458418102788047602460749079056503315333851587026927179964104938354348883049679301516772956730409083195657139316549535758337161350187169375578991982377048214962755263278009641725232757973660657372482170134888768179906623213821003426279850434765495327589579450279178534617254603441060664009216975707750845465363098258084057797034961564627439700602009766044041706508196725137246377392289312787723438420952964349764478747693678489898481842137408688281577059827009709146568596277390832616302186042089366610997513926902434261278271452139433682607213266713466287670626365898431473816261240066570344928945007947787125697897800581382546199811514259906439473632721029856116517442707515301749527603316128916401713521301741137624556190355090151233125189427348074822381703813167000810631699541530263930671304589012239670812521434412777119357397093636553009794591844671442957108394247905163524643986422079911320424406024858032652937684622189798891886052693859109552613521348302910216399130754612564741995157889064276763425823300869750948458847684366340416859995459835198424155538281745598481281758341884723907194310655548297270758216056966472040643835225942879641094333233288586882802846130708162074183836680733926013278021126412756987463793119915908131510289851116602672860624801520282557440050112467080081758981186050764721378501563005142176575311170503082432547797772570486242777753057858658491394001711147118977314226053517885513815698540285174106697841714249527090249994461359515025378980299308484202057185196670792683935977659940783094740913292778697460398952835518200505471758829641765528142914595900896308200167670512643961506241739868186112958563880661406360053076808176426575300662830032617925873264180076638075781748299754608890594744749238964450489232678326783169674493513805644169497490178407674512549680097323323659191098281605061396538121015899328103507529607267013752032917225551484115187108248132290838434130526424680790027021825608102022301610773841965527418347317846691223175784739833320016166078387204763976131535116455110467530288231868284836386437483968219487609197317828462120704142244781418451930797220291587331894676431640615483996443319853721843203843459511551647732633798282758029264437690439822445020949269902513041563434550010428829784014231343805529065988875641493520524046258587472856238872989956366909511721627365156107233499889414784690798405100335161634566121378277193045319429959382768105750909900564539301830367226289697748606833862635595495388599459723384611497499172277578492371921402912215413012301696247455792211392983859209681997274832345782418235935764702807137965905160894831574653216452451003669524802483679770525393677179476910665281575056428756390843309460058136970540169770172672705647303203727176119102423229219857675035950789837051229806860402762850061642402677372165818153834904907723685755392189187208597727985597845390660254272612918505625275403182767812157892915535367546947564337466239090758890383758367106206895952036525760408283518229928918042362843483446425616585303974315758405314325548095951454320257616565884828173782413443608781611617413820172415063639016802015094248454110012342888984320679840662237929771689519511651960019370033780057816366878075376367490789842874815680472898528828462422338885966710228640727926164153282327909201090056814635671803071649421500631714439524458995217005415181107466580128051686179216798570955669531633094984452687516819541690462076930625726656279790316819651055706524430977000396037580055619684594862344340084851846684378549073067860845256140168027609847040976113392433052553997218365372491823434679510293920760911872601009242316737685548711812642505163718465218418235465457691789383036207447285674306717690159034045751390663575843093165096852601581567947589148587600661813946728758015299177990899095313190220231918867120556610780642630739388845441939872563698971499546773176261950024568189570282018658180993357350921722337405356993833843213296730092753960282012928730782537119033130836053755107361677553345969627610673341148323766841910046159952752539344056422287219760112192439365159441883877045129199786625536526126468294156684366707385841236398853749687949266798008662464388207327170590169411097867459029973058428917374930850295816255869222329687697691096275023600110716543291207316905761404678326037995274886841739380083512604940537890821101352610751450705156384328425409015777204352704106929300475062300902273770947363858043101373825703608761163674025286813880183862664033940134614167954031253845507176317780230434571509230404010699885111528781291786110900032694783506551251644650501549488671358863706930695511323557796125601293465001399870541331339535227329390171367815062571694503350834828727712700268485353075634763854795944250581146167658351327484027684711788026318841096153201834790248946576842197600489395584212464460968113852816869491545833250546555197170932260018648137142662267224377082118070014057539861402192462036322399469201688208507372745855299334721652851182337866132128465365798815392149215176387979966069145607974236938997814337651407486976626416937865743700198112200755083202127714395653469457097182054622730153783785121603967741722393189153535762838337604331799625716220540733481926976337649564485445536163273947676022876247479431516146184687724124759653707580963123710189241162761773729130431975056524569752823482569858814714044116090407652007409575724767164551015935368712608486458931524899400829476363296883642704982965746658358748622571024228286589363699697534976813307971837216695712618067567583344970201607285197865577944750462893858314622966473165490890932258134030092193222755226797461238068031374461023477306395143257440910767219601998243452202023506711288622262518729892888188119633088814775607628342800952907394346084368307026320316271237453757197661035086319381060820612993651671139585951255922192380531750443664660497401671695171424421035130012411008490752737136715225695567762593016669842565773131135755256729776986061431309520409182174083350722948463858568195220916784597748273173032885194580904802060156257391701644962840265932870985695809774678690529829702494476251311429010613327500023938340199932892358553700734275177168613148742944886823414378411626836142258855851697994842829342260298294466191467110309362582238508619056667308356186732585088892113723587116597910469810938554121722253198565685839505700235302245367552680072644955413789053586923932399353593054121014406384889961279683007022202369231881525152437309650423283059353664585763575610052048582053425567062365363406227095278209892273560284504230485209352923735324129525989477466297496146015414759334884789718897995282158304307341703742264942168097527381567749208586027528223210963054128613785141451319617253467680093037019606072850570269521528990541026977236356748119116772576292928815086059337516277231036680995956984396713861830476666818394639442890522385775785679607952823660427708498919849262870346323558580187781040906490773511191224268972636474392634314073797048171088224035268203451603840014868329791750483055444803804592449840451231244207382415626238525890744457033847616341920373117395012639905153625677916727583894837878512370383981618798664029583233602737736582250398264178679550237163843531505644560509564497798036724158365225639744326736245208564968603749818880037062462235762089636779667737488131566927640797113911620093920486624775524387111894830520528924895043813287621634095306415539608161966953367087299347018882383110563391826327839804544901558275101192269648414719196194274676907105173304399580513976689475672205491908569315397519825571092661253538372277273653491844444437407202073115058410734659127309323039353894584937307192089393985221684368032915429270954727715257346773460765612412867626134963981694265955545186995433177223232379903213234005679217892496872087363221532680061823549123009936501790067105989231413332732192059094121815331859044624934603201656400684135616096095544206165056502025709834579299871091436770714731484038579906731403073365750147800767837494260009644267200940667114522466912523994918943814419884167668082249233412444308500295266607182268036547674706389269976076192838855375868421552961539633453425261036562108838423657771055000955802031990358482995623670212262926647457142315417350193719780838063253604001036467181264638473595064906708734596012231257243360104710489162688268276894268158108245024577268540213423072370017365287912007803082280033866490879248190483441262417225658392807708908421554194490356496357553033034951913338105814986965932631955642493223589144488408781907193554765668104160049932006075540683165834011662683053497593454536429909557394407532638396398339219200569646628620631380663991526566876076615537766824169417092267175781748002969397799521212124798302391929107777849707867484070844932489620613636093287512496772784908974685190009524051473741398151517579969577178878207962283276524441911609763000009888718559609702330536773873872809394054504293767084989160513394905494177840775741330640818164275139582901162983150975426432489143845106585861494542045252684632641908935757905468506400249120419484906676950213506542160256988735977455611565552575956737423298212167926252892694764930506092039575165527632581154565375266973061399977718849686394152302019882942195287767941900493258472510883223463645157723548899030267107683027814105374531983182783657204653395167628740218124448655868299497149532394237467129339535559644771600204688488100858119163698045341613866158148487790286669299966178368460376053604900765927522095532489859039159632377719330513896376308754290259402681537502341893022083221855052660416628665708346002974115697328783793822794324711597576719685663663826177745127572919214828069097147575147711376237578122117219931196579184845725466172817677948768282418339903643487917797294480369735544732944636851674803807152627790707702769979003219301033880328259708595846976376538726208633515020973203080983891808229525885521070411529083418918313009514350299515667248816765994939101878542132202707006916863198296227327150900555548468661630735206728121031134017683336929499648619236615523202184142205364827386858986065268348042800454887613568770054889359576343892291721933256717393707805948604172209040868725288195890264825171920791191987588844072820181675541832713348206675757590312152159435971326760812257471769236147711115955488684207317193007231557373011851053444822319812783132821372408131952678794872042501780024491895460382864540654291124734174108434594802252795637203117412445790634346657886251923294245920181228796251752598971987596908404123598814567679057553243285655281716367537146476547926693997073858890412131524512953528121465815987534585286819134658221406959720182770227963257238527627482849611595803056198988533679894312419342551071821139636468599885554848570048969532487681625461224293634154861158457991450377984752586495426511576204092492695741682767452765259100659201200197022616142378221747142174074056233283374458630524474160837033440078995362088954036753548409870391469109953392580770527517080794684563127595131140509474481026967627831381304116539072283344428812287966774228635053393084830263182428034210471491783452367022722771672284289319967050798135545438266657711299697970813339309917688320147974752501478041940310531325891082666823633713536073199402707568680168446404913956865626975668755754455551472314405226469405114477191165232742695265714124694005481533177355296005881961143293969350339734309461060894645590884632356725042154036700116938389392883423322359138570308792148878514143593342539531149193368639140474600080533006964520984463573667645179613366882554731217900594333529493957617522851397340001083120048501247262778192859022175094862193667254346624013566146063523789692266651498081178015389700328977425302305126435520864218000431542453673437287016897547179660527387890990869916989362183256057770471653831948664643653641567923247202971734336489627421604803763973300510299122431731365828421593516542197759494628034539895898053488682355420289287663970635442913631676601618130842694981844050446146816993634309739237191924041228249216734312308786583609340728003526141577255915312052246069030420101023027697177801387790926444344091548284410841424946968637010745298319430635454613276538732456104952919016127318439990221924154511225701804079093905276513660917452672644232321071257843328378614432937582684946430917489742764407099893444426009649258897614584875251179101417746772852450104119231165497718381291557055854465841532378170456524465190816088141909440674052115206094305599961941602011793209696243245860344685411723078285363819329320798307861526519068324327790681597984490056845541695266087475042331251995655290614716550647707425985006924810465570684862791903569427988866036384155715956917900204296226186708940694599638666949153135781319290500553990322686490535151980495777374003551463023995312253589239185279487987420436367773502738827652303844082638315657718021476582969251997688991148069660693657119811975277000415394164295360734454655335791937818499595670279898342600283367829515079107972586208085940906200357890642488800283682551760701889238728729189253132905257026627169955807476504341810371767501645342095319433348262221945386452018344748794112354990605644945369064921619438825003435340189109568751511924210341639086000044381989831425911814088702911494219813212015320773320186198604968735078431522087259764822298359475380374881881884429294033704915339548901202704052821441928375604590921788640117876035006991627162132079343834317454395153459294669357443083130131088595489449949797585718767328349293484646762745624347575721268422312290573045014788400174975211109922717775709399499590132183051899710457200825378825055190637664917946734881911021854388212933259247656696099096099981075640942005709920179422836256041721650970540551339039702419670483187745461468854409894423810711784114798687191390110136570511649651394777071920104071911308443874659248980350134766697590994649824229906887120755450768723695422534589524952205763297166631791866896553879770960959510954681793466094122583781261023273771993131400170373159081451454996289021128703925203732952890131882542305554398165147170123523430692636029060418583713592555793085455671061431226087186763576508267508495231859078956028850260431696890163081815369629403262725119899262578289894397823159643652619493702202270789307859362524184083686889995439072986796554403412252249455955159418978703980998567839365733334338590447549158048884391824625272124082089216483714216029809731261351960320487576225654187802593052821423858935012650390357574396691016916315132385276554723423566536900926647824468102335613270645355513288309840990863012191621324323052102165261546842378388425987446944691537973572166552958445456481227817412062414940551687045533138065625681695609077648835310817438153018317825986232160950521613295520531300305351483601616873110927876086123236533365013468294376847295205789648885611503492704293422935960168921107092437737744113911324337556760659282219339210687237346592556005435702470188160920026621183907187927982553439136113838916776847650342585052140343012484852145343715104635393926468036033472153499978908311259151066047112840285871830922529578680235125163044477500033562684234179055162504295621961215636135413233573718862876009274613330835729525334138658723278550155840352130036391060741687153932705892989949157753211208344190053499774405064439267404901267391096155745391304746706044769007486385797085401001703646315342748901936089577710397340897960404882039395065516408289987458503366071048766505710093836702612686088461598718974670669393928578746067719594093801189455753452896353704427199618056608786292112540847261053330906439559268198537776417165578249200276280611390822070402726987791665064815647071055170807390916243205030726901146899590998008859794394501192860848235948737164734207667068710764484995315996392711452203195331924868729402363042320924062087386571233198880656662803217073544770872082526122856184993741180822536029667968565421232314467213621642236764725279786451785601090645667632606526241086350526777822987461980875089468728024899131445451902344194397298300815418571503229035871285251934424065826924612080734913372683893065616436031815383718888047199144913140844179056052357239889905675407598027108367612452508118162666775686103171915521486986685537675582043059210635930676432050873932911628945698517143408985247464676738063314511289135185390951671345693049051614057994422390360754004987624071441704477135082010279512687436041357662669812572264465500612883693686231967357806868058173102290437208132401715559261305180666009007330215895062149062561789469642539241707568958067940002011146560054205644922639024361211552545134146278787900613787960395420169640175294521012688240416309484531802630365528169991759198215559318565454540385349896409782337987294515383720484877591291440761496307150233744929546549926947984767928853731801087639484038032127507619207896146310606047049485670323957288806762320417259332260137123727311602543107172540346421469240177449714101223340301450105185903989144208284049015674423984267387918685886187805132370434617542182303759772023392603852441327161951701833504130563874290647340825627939025724395547821232176607965189396024461914050108994491952766344689327132476622275558100033110024194328033689220642668797829358047498958681941360165051291794485207498030311642076366060374190733577532096185346692586575612689421008635823219231336992234132852633478881467895171494337974914961203441345585414178203256286337123788271657811411403147991092608122831915233318478856792818823701025044711691254780619520356389302736314127872752689252842841931335103439923978716493338405720283116285767742785703422114783402856715166918600533043308785208922794479555807517564500342118482044015035903087819249543573437986025304372556916682807900507890629284179362483945391230290487663465057956934462432114157789431454597958186792498131848516224833931150057305009618868264157108589712501637700548226986257549461477106989330072246734825537232438951443378531372344594080269615124289567661942212633263140876226853339902313639927483811318437252144063599378542534136972501939363942791738147427223990120019039695683594523461526371420079854486528437352649651709165878996277048807760458922125913155381110824803635798455883251826877395654431500193223560858130461274914564512170032608549481906162177946253515648002889651342567359417800084516269064416165697990663744506449046640858003247851767432719528628956278822413754025679376236163894016329662231902339687275935973590229958302141533431608930416501800094529477927731073388999417631513469062553414946048006418853130327740529637533216908744513120092879702811982074769208532602038098892273479724018127265801053075612047843245857509838181433212828714217216539203622548958769217364667328873474263449224381543807741281335350766223220023159329229966221920840360317267519465926606688362431057813267771857493289327832351820684955475313311833088386658056811785251018747657672524443459021446807699454658172026891563123181765262340188888609515647370751924356908604886899138261361677578017895183433871038095905090558503440724360151078744048421021547449421555141637681904922047078666400207623500003141280498335992108285270578409143422802111342432759910769501039003983483996062380717866600619071568017389008311132938390832409344546533060226364812592070446668735856978225559461885275461001701301266652352145925289388582666087633817122327499387659281000608450312867140583640938228395122619154742851641491326379722421823755906972170007405398702651119693498364812527894249899429563749422269634565469141170126625622055371608309619762633886823238154257350236444064139473101006071131357899601369087679045163278383797647267168161649051610552239636255282933366699561028709634861864001227516484662539975780701649493582705924131945078616513678217303828053509321066491075293412800760140152093498350552536668979895402779112535453099075215059872999413966866846248442955644085205150897427350829805008487698756808951359630314786365252545414885676214315487259791858191349648332672905079534714878993913544945021800563742631433384108109943393554012417343082770965128393245627729978382882162716766291001869098251633779339135919714383602772786516516192286410277192142664663154698217157825823322734414226745594653703153511398495483360612677795441337176705108049087662074627375570463388214837935363307040601178282841761986459646122023354189175132510083226160422929212911822390770038895665609832465387812075545281434082474575376993869907141723431615366765873104092427084007703114018696913931796990067372153062843332837038790247050440094253032119793744608819113677569039098382297436337170301731347087261771028909068059884287083972717695163648864960804122064772457607979971810323426180986834874825860505657469053359153643462323827454704627926750347046241658367397882073411395000246941720885487580051911699597727633994117079690915799857617375497492176056257963668299129681723152873555274225169109785282394701033108688672721493666251927463189298559818230618676167071684401562871597133938240568401897753769925423603408350473634048020443074595807443450631902273336009326929971096978785123657260586570965083724875320794290567828023075619836268598005174667930251236731784358166372879631117799816749352106670616749036020860118858566846452324887948889520811694188489685757759151250093377958195425222681194694336631212899092719691244849220963067679966736168912490379919641365265195133455891919035108582680705149359675630627925804158932562621903544722153223532954980849244910222630411509867649983291179698185683052245648888700262829197878028582045939883293209446401693618561932512401788312841066983949863471004035649007022279705328026242889559377046926930143714940001719625385705755696478170655142745561603090391669910022056317489534836562026938297430765062633837443377375766979365685905818914146434166649782908903849472867921071096930846844202102361319243323019799174001843745498069707160796800867902567975865217926701494037029503827696440244746914212208483643677886369026470916079711313483511283673059274103823588616293740523299604228142119477007226393870601840814856695066995506101079360864082122925821024930780265600063232539992827276240778747757152251457184920998388960760468266341890725204678626835475185502032913468332956055770602567545640682052959854504315019353518967203162818272702814055383050237620683588619521533145631404534483039240819030729009312195637771660931728475050697914774837080510979545859794799023953303544849433426562159992040873006952040664083461123614031349890071589977993672128959299514487419209898401406347772851772932382977932624166683141308168138265644683162477613814284581939689030455008859422681792620750418617183069561679007720670405050186905697889209427027469770300008085286818989877042476354144665156775988726278248383628079034705065984812361228402105881940110573735570564752047634671331881571644555856091327457780138692597542225975853579909127862079535681390293828958737092655050552149820142519183437374802745841635976292866577772726260897201972795987962082108078046489577522937092778221699185227008661276183788283849362389783217571330471041140426121696826072330310268011155393966426279658081828396738791537476057072108857040475937432795953450145592118471696749675211578612553663282250177439353346989967026327223490217011741269209273074055037648797791866998375357056134411097634133966693203941751822722846727493136289522309356921426119729468518769800354944951730373672121126585100832523542852837595577000149236474262117368681077880625917862796579790456130533982796092519961730460981882266667984934244322539979825348262928419108768413507671787904920077459374215112372156881995615979646178239917095472941881191995230410762483481831696443237585478978876540853694628879123999651141785038047863484614480676999400053002665275536718300808914727644762280129547728551135250373702885123110854279950855548164357678041585154859907026212062201200118602101089804297460121312452273284215161087812516748187085838198098118929893132580385662081561221640082168487788207328967603954987904830219701151322635261453251574366883030973543865123525502784031080197233891360451182730579868602810456937021888332431778208171316046111483219083521775040854583908153405031299737182837877368460891601451326215905742391976519096249655084382871708680217107858871185702071035384782018975702068057961607145644300859246684224248371089132568852490721110851562958255703672231737493769585037277281832179773360085176649623002717075660861357712910608976051656527110934857014161820943287186379356761760507443708882120507840652194455093912339515370545006016902438874733447863130727319896373446272725272763427230115607032511802377662996233046228193009147158852128196403484507671722423623315442145116429782401880369034466933845430291118803373411953680317023328765939006205572705203380411722305480963629822697352440096458606218187939417338276634593290407898777207254436125665743720673324213314570940381784801809816396474242661840295813395473752688827885862963254709640367929760226816247831479330872211662456137851089657787564624946368628698623051070287735364830582905698369720403084150537008599514126791771849478572749486307053582234739090417820918221370530665934644036244138884836267427275737283590189965947677203599698784385838693008902494699508463550673112109486730673570062681484564102725387964870390660122243226815569392322648580877213831065965076890622325662572644316655709808070796448904993869318722066045718784032923311335301951867359056283303730375041110114625797759114301756560767449914496020013395491660897044328614873152768115276568839976003921832318039137036385181069445208628013888895803479781393037949507289205216174525851406086905386361218722669401332649481855173826740692141558161379464169097232298535768488931002048370684381495964535820354296567333820132408684023409482052783344302157954775061451889091741407005806309852690687766814711530962887972406200761589852356224678723096930146523098845952784866620569391021120179627429016722033208442178745103464185360413711364101261950344715763752470653372871925856027751103644496232491983644604022421614233272219482015664891284606157775527177395849840679286228289391489801508061417324906261623434945658726919466701782803877544984337030318258442061661497505355526349692763558914550939771137695398022309160547485557863099955094156029834390335862893666797366979439901774096937074406382284274845962214902273903683115580271818033982915381568823347646368585233138239537228381581753299708462154106257704642385834173219864497872451043382152009649977429764746557617940031894685762712292866451757761124838797307003866107627905644150269213990043171628021663174350002721679526246546786796804230393773666619060497006565295530689339706790876756400231800707769842958206943850465419583344316882988282574752030141082855771624335224117128802156920509173844082474047602964784669865745002848871691202427036194159529155125304026516887116059062706473892264095072169861043910358816197166365481958150109003315492300103788085265945066584161475173022528174571118878208822103035191598679561904914348713123805995457596477221994644285197089486015152750261742068263392307929376926587586728316337994293201254860436860356501674017258392968031226714064440903754498153234388635474730145074251551668315748246254876643796136695914511827143445343035256803850200199292030537844762115075428613554142130619530457256039899842068412988357014212937215499241154764603531741130429862823097718385537737612245099304856606861299911564839112917396850268532448265798020028015452684672421272392404925530105696951255209298521549609959474052363641900423653259156668666614997211058514584550092719953586360678746844420737830653775349773238090523265167940298739377971490580413358072404350537178616528744492221143708699579719450520842626805124652468564642221202214515708533040737704128808441267297896749810774907007339522050644178892547889792995849522157132038270638678825427462152186075781173944646447885298245029241445791008943953066010179142224654601727394792726310233021449260432643529717942232495185979043067966877889733962815645563265273241421953335628673810905682156164663563712606078673740948301047449978305051971447911815482218570965877422384301021439797114519334082847048394057350749288364260431571827564514447126772023583574411270740412696639590324064357114432550663930659329774296928570933203192211216248129763733153848680721995819329637899602516216081545365813026769450450173554370001107676417176046219915439780708712441114139591438274639655980246843566300578456985335604252377870308390192783187607783063028993303666882366511076854574284394407552416253062828103315002094742770230945982525589510745201750888921342835322634317218049813172891317193373962313493783505109421797306135903656426142704682468303579270559189511140170169175792279906397783963345037916988779937935359387964618944867262476779139697807707064072115414591001168653563970335412758386857664553625758396418159003737124225497927771944431320665328261941072926266846727831424834123236845859855161431357992112721541809806390134104637184285928701781803649299852327475553583628823574686355142366660704393038257497305698368376470133547895932324677529633620430318806081670967069655397028104209879675151272389183786026782082515464359721339124082636936934745858516276499431493947487466014402739131586669811477541085473075726213844019217226605287870675515717042551142557564842872080386317193769803965165204266554826233550106325813709522868173820066061261239035942806861170301446142663481722759355183774911363250418018325318534077966495930333673339622597305179657253086022733984251601801577284516994767140569178133011555531539699057828499962350721349162083095718198605416104326257290919572112330828780558518757818355225322236893085714126740636519121537750647019582358188856840334920382449110915681655822905591200507149074003099376327000236923738428690213446981710193200366122674782679690553885596898084831640311913786144092045381604677651504356378847179073821226898816361817008890154254762242832852796638786080759759166928978537054008293166181813039418176369699588856962237894748759348832216755570284167127032537906162343343951357887441052050494471153439622521570766345573210762021700873767335408856688470117158692337084160537062227140383877065048513809905999757535886260298336916365210287501922467074580083586102706262833834943385211445061844069526200184473418487827250188903832446565518528953874684191913378537128340170542298183588298312687107086678316475220884175055328616177049792227209135695533964875447338778065246069411414153371887006539660835431292075015708735755985207100527016963810349572297471028043951750923914469039097523714769379108662802627004919879017313207963549698444132127371690343863818015894075941006989441229080353529571744537393681609674877522653474043459491731549730493510889978050094853072647595566690522608263377307252776014600059980356028291460861649703729698997871547532935345099164937038001140025489588787532835843529036704837044920846247140577550942717614630700328095259868427116429363055933413461321360448118155559252738902332497750249715437437749947230420081727159158564176540038685289739952498596288671761764017901059659180244010731350721554383635363029073014586595319952817941592905113809754252829136522818528375671932916765191348675723841566669640519797262776874742053840652061177156819925731625487218102854505492187889352656901064367111666446672598862834331749950707302795899106206711525195854366732468155350430023853755454950701060016629499399640323627931240280542245261001078026583292307454033766096539212680599368937256520422060224875311775037333774874339720573999733924553784598271912680961511794627545247971936534546482590099896675906479871802044185931887240612664596501240445007663891752738319144945943667032908579385581918861491241910541268199467463337752338981113485419875312830445393999105289131504247384576710755931734957511962071719920286056272553021223002391759325772709460260126799723861160908561782037238649902915039003557214066100314379493595561793992385803246136765774660920151088572700222030839189928909851600417897828477908311478107699189932432193721624138067742091764128188209439786808845011631118892007957842487863991464010793304890619143913458504730733186011111710266838415685872527206612933296343241418699328200362189415262151204333050121918827891278742751602520554007363413135671461850954451022935094848605413399854800095251607702588805552379008829797359289387124206204647316249931772886238242031485234340835521412389795930043953794021851442637740696408327790836722387072183920006800731688643128868720615760760416923056596541934544022606178326412648608816162321486924185992227445045120162122052188146605962156897652524078430528916998342089755209027107593502359178584496152509764964799832526566152197489709211654953684705094196796595365006128853341670709634263817909388758385658577997140231692531956269158763112695520151407030520730268105314805398379242988222750624429261966638716656582160200484937774969666500139636983219402122144639601831692805640405017580645859054803018625550697842475575098279088890968623129114269701961115757356174985942160392120558911064539511916038782511545004633027584087357485618354314339245693354242963876666911249824412668866064985293178406657330808234539982417774716488772796593984583786556002608707524198969011227403977639909968627166249549101523784655122773867463934886083510153637868567653509449403654305940090106872986100826944170181926096923616215313519850374411159552590034266219414436345998145490226183970991594579374077739166805081841664863512651853675472683809192441477746979033627926468743773846251283528073369458522042828218835770768351626653124593870221829338405603297474300367085343275545981583729476674868613529698763302671513822596118282442698690815641253550447830076458822235060866992496133392006560704095135279335373273800822805943243670621313498623197941842970750710687140477874594686126425373696898444614877932308971652476953752165821817141944722439187343138741268372167702834031710565826072169295070622732700192185840005582966272644312570286183595968257496791051160419259027117294346163961023966538568046023583575137430501182917582598078593203305000512462215809212168672396212163244684123128973384455810630630723828270516493946920930131069356716725199613925850953900787627784497261507278547064428427949229504733676232143517563643371664972032012612641952917174447056728600352940808416825165598395263330298429270159877898263723981677565168567751237180313181639954795643567150607204464428927393604185406830993372776700733110025825721100584356252454615291942715399365326447124612326730984379730585824326098019378992623251269769264147847132361532833047566210990475277235842486071487753547102453584355859932653242011687108129108239538256313614236487666415427830844241903371916831958451438481190223527159506569937304151849081596349618998370881458395789297971336448137025927204010885651051512157026599167128709859911688792067056735670089067621646861073958055239345824132424934340240304243958642453976644435168763837306006476673423985968866872795204492773395679728733971450551367580706852348495953765725729418372606622298479847994756578376732311568614216045692252854347196297896084588223459122216749850349927208066480203993195950648644380139050990153657279750727144653415100549768318700471840092314656943759860530163912612423680366448368481709531070295529163047907233769497871230953348494013254980945818247338879397754421761611695390106709546537784656953693359507873105257758546379512413630835650025072754390861165398401145636950002965646453709438526386564752966985663168054552835330414878491116532137831387638714975406950662611531627959456078095371487721610927912462005035730826328101584786225878214207761830944417004168246582591881082447702683908241084385062349444043190514752703441332170548837658399126766192023171125321795777218387213279730298744313101643985633261391068558165972376091928563543415497027591054584609222723512876258461200746851742294658851430878985451070229524820997694298883230772683360994988030815606622166921505070788308720326445812625433070107756006309507030002281597065216743636336239622497165297147708480010440593977774143782596020298504298892551347175321228442514785837416127247145819695227976973765498397400629503382243124624515076846284412619244899230956006464469264447884206827276666548809473621074744475857564558259587979737784141716922159641462577578613518531539017978722492632209948295895777499802198658008307596840924513882022507906347008968138870932953079961482296131794276338861843083835737059679291507468179477214590658688398981967078258438196349748593426199744541188083317355532841585189728274048377110385451142190576497297814563850841319628981604176030264449612427519736332699927142871384659525546467204815904193937705514429763603716671757171010796025637583139103266500633362677015625680194887819592725248974811886564729213116615232889755124266591625540715360594768039907522058345862693071387169175093640454893053503089845493278938530350490623523765678436453705506040145355008781695020197836983146736385069437116924247447855425863425876357218744551458509171391208731658314325468429442957860403923306108486900004761365620571363332906434245715022912464078971426590346785340938535681173638788054388133960524241580497358626303381367757239957822250110215532893389531284934852848003740435901678673166286354408213336648641300076888929641342691043496109609281449734622470191792962888389835697172684710384239401670189140793575446371172101260192238396430724352165377683012512983395254191055731554622532412478126949013682851630558954708553434512214810649686237354843373217554243527363279468209972621861672398425271626576007058891744725898505419615666624273857805066855208655403814703417928794652815573369983360092064207469386121231775257065078094511465768186203597787186480228147929993834180552668826424299273136761469998914373965013003876046188140798073407394063662351339663089265731760203562310267212583868157694470822339383405840600629603108920311001352739515155640888311234586076557768729560801105287084842599775936048557509197734060231678580807271606878094862494514996469799186194344005784620842951917851625528367093993804847436577807483422274034693957638102252408763286714748748930585617947469667647349720060894510109777459130905392437290194133560639987630020605586699655345363620869393900740030978650312323513890941638755062947935074073910821159805806256607642693661023432369150136064915752608222312924392934288873183696614457787551423067233293909689333427337854735804004727599352628389662612987109682452418087064901706433689435168167266022243312630932653479913320864781720342256259585935697499504472944996876384711568916242801417039121941323675476132604764146545148688180204407542894999035330534758995721246103175581429215891953292032324715525025702436801641579935709384148884698428725875103875818784612341156388206804357821008932947588005322544192355577882848801587529283762502503798424056596700799190662620219978227817890292136333043443185655912173574599533167085694555015087255714070152123558352152760462070715504814516061835246553508992652084350708921018151991270063914635294854942991350611382369431970072090386596578426319549181391291721561985096758568849484575621039191331483117286783447248435659736819072916213277453367719883207546341644827967348141984856791960794842424373590354505509002572831055506845590890122791919653396832389681715192544416684056015143954784624878227524149766007759747071159229193344546449422680575274302739170105302473690327306548169841805773841908727791929571393561161698858986254758891624530303742135479986397767106314431668209001249949474293045010704596945217423835222358794846958938952278577627744262865720188943734968486355814550244711681562017583822699105457959871250511276804955993585921520156577296891168890023430998878402789657252868142179399007402216152188354922745945344155515059690702816806510369126209312419233507655872894328823992060846163225495414023774649640541120282942649648367151122689215654350860224335763428483165649343436286411266226223919607913554389588774692061001005538890166780725934581484607132510390729360552307821349707967471626749497326717541417014278036808848433577342377984556540267300109716305162530618318720400149072219946273939909869636732540077572046319139627341638222675295402302992445885445348787943891287776325085075671034573912304784664405121526093634986328264385087833628580570712832072220138900732375615858570769691850728069031582121756422574736836242602623684645084979147852330175434651628490626722218119791946197730459234274921747569264879054661827088853228203645682674477613044114554457540268098489963078106596814688223018225783163623181269830145670358903709871940959477441821212572131737128733687878545180097302830045658664804324457663591538137298708410101207504680562142441380774613864767634519267205322617319807233209505402375944192010166144726961340858347739027544342887085991896519044849826710122426415117971736246749062080797403124094607127115953001020916038790296528295584513130412724760676222977309992566200775671278048420300760125816520198215327334079463500373371564648716441286597708477852820460704746163328611528924994691837296076360196705967460277963402557194774589539490367866314024527702455543716572233649380831422772340862154537790591858805666202904688291741945702876285906113674130583222521709622109587271764224971138463822346165682999935326597298938622572422122746051059866622881631005698281081381503978897531595613500810794570308804737386860723778126244178240325034459787432629135672952015038995573151887431978433816874938028984626742454398847034126927420782807121593156061098341013339171884541430535476499009825706062036545974290718164174526475293754353759359141981033897105842297069435045324963729599791953891146581027171100293448012926761817455655754305905166332697803008694770714990423242303447627356478207760872338750485001126269948338557559453811065506745295994552661717408198368475103133311437865017046829162643221164093186269489308244885795187832988063811449040214171478189243630518823651571149007223616650278853628592059525699884505288381800045241803177649551979737888862253184191170429479371647901218683674072402815975311049859225283982108262680631854367839193799373120965721218758474328080512028887726110323841145530785103659377486637776655906556513747544768180342782003021552714699509237152901791434433234937447791562238005400754847733468340268946797780359191002112278972193742504010285525258473119896026307842341696007691709303226481427855179588669627834224746733426933461283996403232313290078709310813954346485220186866166802299206424021369015371307085032562014306882107625236596262082216946830962823044397883070337093883363134446443407602552253560432830741830650505749131835136997169128475823497205537913894194937820506414892175307086899771617266712046449337534325864520809315330951732178858629400765566384769727602048633518590860051231511844017844599012192036987386581027393930648712966361496453507835680557288404073618170043339361346648662219592160059487758998850436378442973069432730321589870744704812796071223316628304632865540415183963143283142973018722789731695588260739679009283739697239597767501257244614463983358228131945500029207815445920364922803877029664489010682229485230552537421434149303519959435013003914881557507969808228320508913101988353722432155641115207190146052757450581314771413550573430058370157231742084046651760854379414500527149091345216036869928337883833515847987126916004209654121481708834708994493094453972333562052609664013741309955840052374006691977004428307367368005235120224415992148590719429756686262438669443784248156832336780944576925666973199134380647528824243279209871213387144499308435628085026327127580427493932815258154653354183071162305361553669587913331249922759961572240624897102450446524201947382255198536887294785477734911945062248558947323066854047807568740674173368130374882835026664501721966478894388269144527347034662191978507385436162888806528487894685316042966394848543283644303066577682617433530741571302963939441141486242202041836531701999116029498692131562341120472885667376107101266355199831384758937608932127004448063710986157286935284521344593026378897453409482387185628930332440727783564990175882267530283815315579927669215397729071102180965240722486056186770118368225765143076650002310826547624204029116981830040604938821526999239904922141399592617060664551434734889439885077748449071814638214246294542753474936996622958191401705357801356635739432006071349763889468849352948013845253432099845909478613055871207194015543892128932882501789012432894119169677130277303983741348755525041212599619935076037036805413390338933613446583762915288827617365739039593721497962446345376971189260531109499179036546978033004724305114013639696725288585111529775395271336041189753852914719494538005080873325917401366047768408930282786284889607776053283563131844114942413184526776552969627713437487166476213371695869560716722619881622089714510758672459121496057266173004253935710843405325890787570308735375086396802296347878327091600861684725997503618124927703412435309195533046391573931652388600437002823658728996371940342616131330657476723392009530726757793382308902905879476863162838565886448628913230272174907003142147723435346088341165480584706401183936491774703038057591224110978653246264953837839476062789169219616745703447568286862137738952821569607348882664710273989849777396175931721195677524089535347845383324964182895462342893305762701499407654487006674770408075628695527194354504367970426940983001037360510993600606043326300137209567581776156363727772959068902564038461400731490248434168268837739716138916421929002381031030179009018865249452519107728460987506080306665783925901813154495976401336234142746263491200999423446703759933437435571628071927412904977154218882398406222771141623973362422249540127709918624420240019333692882765762241148790225979193947964478026422166417685495597198556164072388932823968103139802294267769496542309800064787259959402064287783909939981799458380181085670610346893070129588928444877837575997194277919040216142861661927974393700425692025501794097746231734603645331172842753913050410360699443917212315571799072586391405001189797514704598267241681952581343240457738524450081423530172840361712043171473295850880414517027239403051474660233929427470317376795138826043176533070272402454960815286077524233560040085962965306969226600583915926373265182297004605098569802966454984438452346174842424924149629174156116384403141947096156487205969621593682881251186742681986075704772248105020381056499739261061219048111514617998685731067648749349988522309012025004716496856449061368677851349473098377896297894196146523681884478582283658590057912901645852847654951545337951143875773612129250642112282433630635357061169058070868137273653806469686342876101025395882460944749299038224328495065991996101745504895355912464339991948848225089946065477778432388943993111732903715385362581020666465928624641248903526716427195796167187757588136132017184552265011945195971401610156834682931670937502176963687985553467431355416601141352651641154669769328447631585106966331398842462462602892994357889950540690721405462502324294336913120060387977141246328465350369838078989780992698978395572830711481236824054388595567320651203999153052597653842055240940987159607251940293864649477036012125957637644769489508537799299117749861417784447045066780677833425810046886925485370700411542443521182111419004040888339444876655994391581102610206635090383930725209696950945292176043025802231441679422908214192936702945630204255376683269132250671618892320497811851370082896431139628789093805137833955617824405594948502763650964483799860581785390878133410056611362168066131181396718265360527512045720674817350814529072784482039560874519783347227007213024589974076740946757648524471002176572970073350428790048408799765899446750672970767120317271297970048655377397116543634200050114394306692325605894350673253957933749462459626423163498585838925768064518875360572563041612540270662092233184757767549982122524348711747348603389133817245592138549174958031848497149198310306244973501323352148384224004383948910205695879114719726424072589211463228577612571869463313521721327875244885611199062263311777966180805055507544268764162196917907408961619206954104823695733078694897887980071383825938900541271187145850904753631982885281261801964928040620701059635917500002720178490875204234212300285478222277043784453288228452891828197043204507147760832129643739475384759557633486017236386847674016162039258993618336134953678502728992791309696359316359444344085674711772111649019882862772918228418429681991098835956549071250832399447519615763202872684712198300337581917132123690237308417669484697643905936995555772740462845360445911319649567018993929251206851139299017672079569676594340569018971849037784000125249748774271957099110382206845978157944234022926095141004554045034637053397421527573443509770894405203189833465255565373098510230946495550697386085744689159836792162506310787881550237747656261026813139639697069454314549150868730547485515827358419722033384535669833272578266433718952193968677243522956692460157075314177575277036516765769396453502576572848881254713741663980436509674515831220781983661668819598859608523232681888561338916414104192259470079317359985984830956858950132920738966738690491678142188507810040610286625718198070355801749786791956382535249785418198519418362643786594147565756801745178168592893482655184629550886727084301941847340550192438979557139134899468005530681976414368458501484127393045614089428066436851758354516527994968680160223343628547934986888660547745632601890039835313444457561447075695055435438191005592471352191387017967348289924488626580116318514675451036931807976460425932683148402912425242723857174405531536271599892694048572177534084408389024403319533606710074184930477748108432917712249163401842249286164984883622698939770508809234280309117518947151924439933086998926617702463731737198364040445773620254349065810168345074659764726862913749973599280294855773669914612776277624970140983070420141904536352820914651841900021115019986692808434920391422605370589104398809537310075137360685826636266376487088536610038113203529276577387469245892609896146189842020597464802002423901910596844211937365760585581707385369745378828931448721100238422967056987979323117119802081419247376117413887356035900602802973840546224141962259543380726012148246298695180309451210474858575105726536238324239002367237518401928770266686116983652033102060132700914500651887898394601960618730956895252413052615795443163037186631389779129528867910033983123206501043093090197525437596174328696453910211713890045801316400214199534995909162363667942212434903966031177190680907914898512120994377916365490709480200831175563845475450378265415816145606196469860049952352451593962560933357114886246438055735021425090795003651326878250678895270847247668474420367601152431924463205819076828555558346535411571861317335737500458706076710868527203521651848008004895616467090939794712613028458923088107278934946905182802316574739819049693548047864160683713360174792622845896975233420560551247746911253622011734493121501679554233447245168235678798152429428630758664834210518824151544023154782809758545357752603918969751172881705683338903766504034978241689194497419077228242906730212535666032154918292248314783602831738862990921061372026905378979751885792789035495943567897378709434965455507553816532061616062951433734941479900458219604359708038886000494649964629867180819537003444663208258987429504315325840236144047799982452336261483972877148053414901209277122364985795019059685388415179969103802635711443779597525309551020030439716390776589762884385887457957686016908531445687826521809489127758555472133809908165455967043133175164554032121989735602144139925030578810969953873549567717900599884337616320062263272718585360882922296390379861719323106067937026160365654076913429954243513654749336128752441227857314653944947200870718074298714977635291801815538074106908125534328224411901940749730323040694684375102202284774824306266754345772298197093900756991995227656745787556209232367537424527207776474291473533160678519439938590627767960261743531093735903597979097818223132411726380853424340129154184242292245273833950105316680159364477429236900371834803619132648651342047671551923520975062496236806846524488739832516832214907404846083837988342000238587738562005057204334336774357404578747034009899353842990677087422052438974369219427712516203702703867111216346082345904569315386325172560744100271621342921360535678409922617990379565018962108771295385521251619525425674406427408220942708998958150058549804049627734440784083940345667863169682145712014187956306296953032903967087510410441995894490578143537021010040441531460098068881506842290685379078216788155497092219592627023544059841945005923380211817354580355197747307007811323373523585636555697505686956886228881661166869720038941329394015226860836941279359000204416993594290777154130034322036387680761123412374585386266104468400545990581487348604912746991647508449343981995216210345896059239292017096424078598076890855579261366550955025134561781713877793358763781670016082397230833187815317754512336322145594696015486017560681173160939482840028924790879588539146439942708624209885306981338517049434787210339254547995842937514492885498625958106680060661203056134844414798473274089276950870789200741342267454618309533948058870809381747264102143633994621687662117177049950304091344437019599237979325856107146944201667128783857635862780472364850074115914789208197648652298807658950740277725008085911898634537071627055669217515131886515344390911570405357237343285253997623610063025468316414480520293035841373715584522657305859588831766545050313826362515432489722040226723109048861791879243236148084927990381846775053169699463377804706476770925978301470400529257296776823878538834811013652074931992064862812135540139676143014685045272556603548803438074602787734630539404316387072750221934885254667702642716253691196499532777455876460375295651016397155954224095143230986760944511836704963698429321796064383092380321589157032291430684247930782165201263731707717212904233573967890827050507282055487655450825713914052897284395040440992383544240330125982643417996789128230233142546332312961162349210265866655294529059568164868394728243955640575276890883126161400927535473918126117700066555534870429021301954524243619767988326842619784652087555578425071158082019016987958796076387517530660487916120872191004987518711885164954185585065837979396878693674680216941024530457350486352142211541986083573569938574299496673780292481029571826040022183746950671530701609509676708029941159847642642402327423716566140369235348525926253542280566429923153136138963160843778571957885582702538095490179889844338233432964735755598211492206845611355995920488294117299380509463806939574623626690703352856893922017000538858060690596894754866874168044985562351560707953432952763976128855842688626693166262254362250763490324832749660301743091644240083595445355270806066213708599966799424184213046613927947212682978353496735093073744145893364073321421935030466628555250014085872378299744999522501550434132371009677546895790383097708084539132730436299967354483049557559745989321263508316184144915857171409778206016175814540977977293508588716540505671218821362774527145367455943577764283728117719102059119672527859757123029713265823820944886175947265775994598130903757796605644824083733941680191693000733703048221701087758085211592740995547604878598139124164172150332115412544368158139823413350467810947657206327820439892695617846625500463209875840547957571371831955056154204073586843748233936547487780390302416551825121891810351374087480744546405873570665558510021015274929428983768194046420469079081801528974199278198149163478730434486652783109568407994174026365267542657297077298544356403091170520181525764720399101895515875539327238332609369114077622631744251327751580005937837331381762677320458669729145258154178582660759033546209477513940385415718633753931217062379229182453586915262119400480670391940076778169482708875419125784086298962558261885587718115366526575105294531054946309004935979144341876580269601920791960999428649691854082026782460395975854016764847352115876098799416062661132672702288956301119221490171054390585819555535537801760650281880685816050538547274246671825550918834705934435754514713632514492119928873654518545331281007624216970974028052648132777963507638316131610714566406256935523090579546522449356092382410772526165217433546772687773124048993696006008999794889320709413745876223522326769401371219746998861260389332470956316635329620509283525072935160661529604414171917337260662181706169128180786023073901704700676652407619763177333991944855336003911985574415681623008448027232858847293705753215609356504403014736228776961914814293156694921608193057507140467557843127909774323641426913683648653144807037741702217670671964450686030039711870127281283583031320958424672854926601619142164296474146246365099233637742722362200542039001566042238081302534478885511685885381723695285215291969984155739758132653120625872041887576828186070522947707868506259113897950614681323842489736381762878870919780033243704291202433686752597140659510824829257782036787159974443023008842497297152153966190481605416175246486292493575332715522172329026965316054265580354328828426819777036195072320207648796622549186231714609642036361290610410942018813295301445719013729777300921981896371740457794313200257294219413904574759792226216929655847577751186816341039976672696484027533898110810505179534932339936081015315516337214867336444002427975261032681451376079585395557778843883363595194987659429324575161443627034882908190327812186311092143156506401252467472441214356689364516528097736505284689620095941244594730291773858532337598929504937225783499899930877938576579189523915536619040043481254041512327916230626297015446748541102070570583258219403130937233744874382500445384735786725608002725821183192028218113882341349386446858226838136287017904503751694370463586506935572214521183283184364723473694327908493419989670310178322972288917997270836372921116919967839800509562321227698100179670109037376517803938318748246581507549368235742641607209259241471291243013383060289122404520136890992695265137414663950837230098868581286728459685323381534082295581436065307320748356978353828825141815307328667142870597433150786519539544393764398998852511075380554373409129892370234180321738455447753708979123024966204651698131562811060128821914444792451163002106849545485553651306141167520024541619002148780796957383262793862604893965101382798288206650118428354252867928016489935600532366602862459499948940391936774512203134871534839874990970684429463273221496671079755967010937680367671023697385618336483925987159040638073996524553306670344853982605319669549741266463764677594206742705702829875471645311710057477856103918342515847281358084144450995228825062786923638649595014856857300089575255785022268415960086620219764814024389379245155453320323996548782302398286472855818683061588190679883311062876600602949079982267410873832249313513169162479297030986870420101688131663014380089423224647470864415597936768681675560895455674066747865816730019934726555184986459230102299659827998185158447903498250518761822785047294388633481340985183468918652822593729742845341555970035555917074949254375215624647604403403070092139783358313056875860597911258902299713180374970358252704188699168438335544459033350865142658719384302773278926898359287672778269212181680034638307142447565503516735218617683408692481677192692298874119113714061495791817328999574313139992287368635012803549301077237977669575311675748546424634148059591036516898248885446761474167257298204034701630315064155041835515374748057183725351366110921966356074008989914859740976233373774024250091804872154251772785842703341411600951635371865731989883092377479503665613895262725645674704893888601228561090343810585264230213841617842651281618586075590458894192409006088008193802200309210221796557267926899476537668636979831933276960452130942710849396656104713876003349077719114968874034198127158626574264152334365058691591041101127890488713477064026060499731310266487314448077740580582905153543754703786700205833163582504416598518794153871392913332127184354590937969898280247669855847742782659072191937008311055418626040932422222582794414745627837451852036589085715582102678572850639388377528717651103073540083894074170747008850366816753654547350873746247266171787910663392117019722906688468806545425287007127915978663817934891235184496060922977733193523689147451279031489901920125140205527759756407492625455803097979122778807658626485782892180161156509016525920910220116329490015146182700319434145120335183707171079805022938168822313175703816977234463396029667747820100092202888193452461354928837562484679412049655019070850741791731499806677507006241790616999411474270279183468695435352896993615694570191473373126370951855448011952343367951267876040492430403108964089007755043831726842744216004621520679975696885786278541293608195244843594333325387427465181629817147914816420464541749458447018135222288755405219489463862057328508303564195262501411788633580395986787139437051552587280399198344624067600296619454676671331419861260040949323628748128305473000639235881654137802751772755812444555819740141630274007508481122215311531145647893674320725039994968204091800033961216123948185203879350454056464757350287359598863185553435704052753754042446698095203121197849483303801405801059126138077538503329646429951009294410466554504791441158750205550379821108349494724341908514576073705565041439278165330156080822627288471120803249445468831015596948051596637466556873344617286850226627911507314409507012372588265372809370800680152061220961467548967995264353013354669132735938644638479423310855813160012488485972395024616784417220865467966960721587502830562520724944178382272984189884447807353154233195902416884567863944791667691052739033088002326454052025582712110115481061819836536785061816734148342949238568049516858617034965449502676788532967748921802564822520623412829904873914329666877927770643500795009227616479280113306621997447956031914468902420107358400210869384532413851949504497651607516086120898307837453511227405064174211477591562625729063432556685902033294411074320515892192511888226908906491078068346805922154332547289818445576933000754189279259933774738134477293583865646416713244183725269530144644842227456525126739993605312256246732829698305166275267395445971062889378825479495460333306300472935212187833569123504511226704734054255154778226861382393713121597463223279727906523557165186628463708415369031136261747700761881906108361100607258819511874698661302117096437828042208488971344463407941083360987423724514256989153682544393035972246289173296502657771639780328008017962258652213465360889423857743655285794168403650105307527324682411213521197955870112524691646446183244252898043129613203408546478468299734251330317454183925171682303940873072693118960673863031979685861624604467223570850570502125482355471216654368480678770727782994209186706186240463494288392977095253182787910632844159827295718192094503258748424953449357746541551254236708859614588581807890862405464714911595467028765801594186051296403878124458971602588068453457021050815349002049132630107353077426384602376839025151489068555435511652629142307843586700767316657370036649218946046600860135404107986865945666183772975738041590705275590978613145795672919944793546532728042499778758513562762487992645791262618763009105307533742386159052503429813966060342154226616969850441327399177339503643108627592685332735618908759380126477783070303048130745527938897221586911631527081822356174454459152745436413360575694230589956689846311448455313008920927874406993475373919521593220785554797900138839015755026207201343981625462220462609822804445912029966523939678136603571039565895315779523166188088297761745136882994714172039661760227584106622927555965336930732222978164020693862611924072460239690631385783450054764384649850244842095835397251830648512348831764764442997158455167286703053673170126138413097923115799938877272805801038560472444742253682299269435432004177795357043512486997572070372999386467149416461784653547263780114680925867095065503845649201306998888622316378677717421740247397033344267602069803927815295893391390140786790361512293066120147272797274084898221411535409204076140045445038999530131521073189926118868701992857646056046307071154891311558772728484657451567605921001466527627856341199419284782560836945948402724709514075204014100516464474494850787707644235116326911933223394810718530333001647889796792371257583000256988703205899340147147142643396660360256660577804018818771725833347455435470559146881918960618995741022701797215166269055150157009514630447548817768128061854111003923678371086339812264995072325497235978343032855014079671460748075744687321893965933112855272056351600511072868845473110911538873371582396761643886658659957266770184016304071402645498472709778379476461050787160041592235174201794130811632026159426756627482801987252616233659701570918520664406760762821809694272183009454871179306412983767403015475838553834786019750325259423666511289380145109534530463006365015282887236613864691191698856939207777009733068186308771959650872294052357806367308193475926582914873343581066833455184543559537099217385040386407579250673909098365098796688102966983960995478602514961445597771765363376010798142724071093962169510689397637680459424411865316637933400464747607180000076523008311333404195877635473443368973165149641300720834824161514661437146812181271640279983826717202204447437520677450170700326444038929708060349716980963440582061061267290801497035339219948544562794226187690361343504513741688127427428873448657990926234472685117328237992932203573554723954805875968099309786868802525882753604196970696719552065867764921267788665276717730661859970021567140478615597538978018562957610050069145966934217769253682037486721214240551715106329938894674648763961856734435384796759497046880080749880948523525043882827429808411286353901813293840109315402394682352075091359518301501370409062784375177004477552308734568132296238679863355544080492685517953875560173019219545813157483489400755670026387163171905230704335671837174032288728201632060157091388301537437624673220871892690491779980803111129243042644693885011305415737038637406660861349791225354236097644389136240148098869879960036936999399645891760342429601337737661467710517689811457793014904947936403553926404476069588854902448616406621010831684102591303074326692670400329447884031127283442355027887158296126191647270820748482224195487645933521489908750804742753924657617839438902288406351362292245337026254657325588728290477957646099934438860526314189441159217477049056958921563651400940730287873839280474310965770529031023517041735992541611820708246053817177927777366927965818904848997879589784772541454329663032048708365476120312260033829737868649536405165086326129071928756188596358517981138710312834657698571270338164719434511354453775936537945596915466420734977859686883296463643031518118373281940959041784851720718883555094518580637785351569209978049149352340756293133809229741479629451329358823281597307315279041697353049698378404765914820737689481565235036844629458325284081723481973971561599898078458246235328806103173646577782899959622168939505901736702471976053893366156582163600592918020088833742419517558540089334924942883789754409253968821289891681280835896829448802800639320539222962519041673517408695417085434787216854621505371923487492796812062134686145340871429528427790910692043429477718607771983856289724797608370963200603282635174857271302645762888156834004883229115205227366468062729284056769997871394414630424072881789907479129543892537979249697329013363311400954725410832356350745918460868893123141298800742939304101951274349948949046954882859335696581716658455605094396120863375280809247365834784542610103055163139614706041539140572484946031731550250884714071312667195200689281755593736783420157484547471089017814030320867233754009450177173305568488053934772122656156374444489652845552959055493404134136430814791772483629060913300933567082802380203325847901088917481873623664387079023508122467248833465999022775096990125889747893609077650393502504965114373591021455957212226554501061668538593015160172270827461902597503831014018157175871874810528722210769737392672312838269519857599178850098312458656592990403938698307460818411762742223145932061315390877734434945592720879224779048139678232097378661523550008146973427855632906919117209012547846489892861193188674097622462149150397970949719521664911608232084579040996706139556418596087575279774689101892652492582301632146893162708614791306017842597156847953754987516249628332331596641844766405127392670130600748364129014295625380359377347082193432535065166259065743153321906836071294987697806439489785739840516377871074769827555544690870353968256784988727958591489761746116108953456754752883986077218805139701636549125177199928157778402375212597235619094203401217441639108065346347056454615741576028818043159265059216726707134391974286312456905097682143775453855569666910026668005489652902397092406239216584586974860271379105145994044284377834351446249067078415190708714139937300696926848845569159888126956659748666944889603873932958129754034249794868005012769913117758049165628410333097892211399507765605839477694651372860430445091489272181472173542009408018767766780647227507640710964415252849263148708103063382963471568042211142141196412041763901544113827226235421881457112500081987732992168171880042048322261992997667044587625672452887879998468143117381483550238350503818396126682130620458820804072174365533657726528803407431507406397998597768701730938629918743077122200758211778125149204928866150887783174047667809363785097974498400463774271563134380682934577366159082735730586500469600065504450496414769443480072304742533415601252541271692803457409856467103580282129643902416054820462602684846558806468060858297016330069528255290181792813776481352675430053498238112118845099501939260668034770640647627985267218562794666793947667343378377354468596136513265927564658959466335054292619917388338834322174533316291407266790409165611302861849327350309977955283870530700520294475795072514692032596136017017802078266767305056684391351072086196465923017251763965287869930180342418296735242795561149629853717144167679651784055730092505593010950208652066396648836432582629940379161018096617608235097345613990476820369129721159100775742834039331027490168766640012859123925653788196902357560170705759496393871857003611246329686216454786844805093511024569050048357998078993546205927558029393073841633260765834051625951711422175401543924964300640788639765376707996560172062583356287648757014005406090367228642157461683838206852074589393932961479717327190168840858972688598305277111431120882201892626577396914811249440671686098955355314085641793594239042950573128882670436792053487507153588863543583658501416704720130695534840146240684115327718078835597978287445327253023430952951451844462165250511070055237221787323548252250197413963488042708204385275463072157322880429872364382304639589056763760890988922440348281743505505501424822162264682715836737556812412962622418263376237468238746186211597793839668043527346593332379920737220271215489935762883076313680075919836160968467318573113285167871638442493242567136912508989805586871807647203291824731608233603724396067564413264841600660359022916368996421115532381259596999286911491749918493655384589509542224468845093543413582410937067051270063976419933192640946761522484431727193499316605699827506359019568418829695150564351678438333487189402421199901739316569491258908533482989264326781349982694599624896116272034756029710259755426764748414156012024138051047381674715103319457500028279690315857715280241978716975842362789029470048815225317504781508400904323708648325965068195321575532574246506731511580874634334344313236668498675715706073863413067274921733041859934851354177977490708802876280411608238242867528577201936334959719276135752124003840850128803309394024119078018171764840308076129368181663837467925290172519559742679824020716365289573062589018193770748110892458434444595515008250874293456161592089404052061370910581561190164222890028712962731788775727578079628753970486334645957718528989752167105105876739432995408680651084643135608483498122130677322049391064861717370550338401985006619128257454972107901271579865617731573920168784863957911981270676673418355867062979497335471316507525332897034494265144263292002837094153181624159633246490835557750191885857648168004533191954051422557764920038740516444833358957355323579768127111224120205304020915019434152368710797210844501684316044907429049701861007925328621322974992381331134574029922996901467481242806056829109103456369980803273584053496354843139845658831728632592432432909399764660607102075033247291225727461043169246718876980172345088943195887900720907931462366310275318938539480565766495207865781373067173614222349890870319381428166223855409479499196800789299880747667249650609079552361459799949384124716427997772009879675457328018233836281843628584371463172910760886337980760897281625741416734563053704045598165646953295230675386094026645137551956812301569428120503461283747228016033775236323719691722649266793698768457967173711248862023616988845459517670523192252351348773406636677339099593797055264666924788496180926227392021107224411751572150994358227516634109714525488572188795022807026027365822787547860312630675567201251942096540429290039889461936922399737747768933891370246800401330107679597982428809030251631501090235825587700181588349398806940771142078706868091592859319271599910901428146459821001787336195855513877959063125240063227694147838371268472409422840402373169030419999376786089879779016525697858744266978081025735033913394259823353240033591138227243776366806503747101302918474598211141958353939328792010368014224357158369985437449297814177978551366294858364775031643894706397776741586098336096215962971129994571714230108957721423422314395720856974893769733894800174463491950374445532046526598469416134312987305525047161331876766551019269772601216808742081011387864922777816299397204577889199740595315196305368600891063083522059197212768937615785826773481756878130544817258712172631904062858381102474366614055298166871055223302788547960908396002339752275184142357807638434062981779785352694993157374710362439402313611902155731717000612249643956215575120743979393764896917483990223142854171640844182915804013901793641391373095302401868341972539421327481988204611769632903330305471241031584107472838777395344659099991587268820379986956360668490007066963657276968834174962754865100030253042952503683573212973644643481943240108333942776834946298402438914960126256595721680061635074116764858692602533332329001372201633238618787846110978254246661427331449834465659055309210663893520890395299716583424676397474915799874422800997138823594512309033217862804043342588785524043917354148897505212691732574524406068093914854615534910458686232250687890647119842278018284080101136325703227370653193138034592759573638127311791078327043993507146419508655455990050161729023275233516673457581702470847088934366716672775844530116591361304932098787394685577841501442358770444520589449657714627177343530005505770301124319177506870608929091898097988754738766266405178223494598288842706199753004365073941630202609068962721238970378323992488273749247739454985330159713279870622546459778673896807976277303563416251409605814849681290990663057914501398439586573871212673424956786701355155648927046085863334787820317533304407010449643860322230305331228936590868678333772981054366698456919135762582705457027766505946161244288075537784270341602703192676832071744786258645381942531113773713605013227453885136709586709903348614232222480092503994031270845219316959832252632263432850311732018986651322801034084454291851198454601074731694207418989695037770633637128477678640249816151518752263409166828978333898704242873912928861250463663913320936911429161534557199061153267115176809026694648981406904262064923645625597970965383758373159395542335739771041640844514302769456736124262471236921964959540355581983773583369441481460031124842271211499868891578973211265640465824920938252423854863156855784394599837033368835527933160344749106702791011940844809658069305242457046912517855122885880428432725531277944033606319591738990533621576447126539825983283181139369180075515348952504196475216146496235236337909475893213494684843444283855025174375019936784684223413529388468318835674950563210352223090035441696090656371877422380509719451517677606124151761513931981492500850887216168401698197162257112237947896605935991792674039522200935448439735140823233255529272366643210098551986565961080270833514542688017261304417123452044091956408718704383059850866891602576823995065950645596468104060506653664728693258866394762907364667421341904857548594153633801236748022760219943990556812148505075083927412288345071535766630558125787929960073950548950783126053502039848674732802045026801969271309675000943388866025164910166595141809718494839783022158582617398778532178486842451493706011378694692562659495264562428069240578612975546404726849607554814269505094190776058448271709618391280630066661962282624896665291795615144970432924065121565399114767187613537929992490475255443885415070132093791745766684340866938949581482081561985088474491276612573678435030342025976944125011051937754888968638908385832655621521506260885613634626454474679408558591100390309297378413712467145245951278312856177289765799799520404959714488239209459180002531060323002514360883358434597697605663286969062745560634410215657897180089964398928463731190454974292662092081232366503020313323680274353779204991329336842919030254348710067853664705636587247808874321089346709527020689256141724902015865956540100539512030392538045768445161378152940425111088496869839031111719227879476697968035111929363077355919474809598687135077269824575355988955939364039741614653712434130583661460561320869164922289036456267237644975409171711247731014466444613709199804689569029523255745206451517896354984455456112870673022236125835428238263925150003033225494328608114465566546062754969056846191780412761881223914498104810143225183834290412892265803704680339480081945477294501219667165517400827960946773886316355821425204188906165179609721361694542022847949309211489581775707476954865124201136861238328239732005080491792142905804289148833736500223052001872108018213201610811225473971649462935864454513741917457549779622573044216749045551072482819288909145910720682961209243562557259863652815246232435311119802545222022943674347120915700965538455584755818031391929035187296945341201827388655532311135564116559739832330547673063988394408838938842068424794028509013791537225368319155430453067791284611243942212339371197893589518949829011021015095763880420836672371489901735063544451362792632975335728529022941817505339471220888671783970956964776077543363763600384219483770945471532402418753618164432138579183609464765053202514445031699554149173292808139533922790813907254684648886992645853770144274276435653391207771401788318856887592747214104212410671161077564539519709773701074856364772108793247657533818890418734461159264368445620715958046500258477740055841258254740323585526638676697091408302874763004409252752820622804913128639803819409156438622516541188123476190789885998157704712441710725413390751883925021027427344134285567538567940816661437750461019063656110022177775128417812977892319123601964868059420996059431988519859689055072641270111946370466703922354204359992272898200936428185335884154359668940521668935325033781234336658842217869248824816921075541381161815159447406849377462283179074352291000641572222946536301019461503761272108130861031442675905044728844436577738219031925758131650611589577266565911571332806499332599725868480434726435162569159232820621674131919603065836769882391892391683654333216097482262713356835518678126987495679794430657449286991833675473788055578715051414805181616920036696464253260685784317948853116183003051236034419929714112371823428635463043119634285722414991319347505063615714985621286713901826071740397049011663829695306413419762582980282100876064475908875606041967057446106757453830491259147339885017878909419056707043187667545493515620778856369290262102102616149700189799228331911361909448490252015566108859373453509528368796610114219813183774401344524032242433460164169584875257392354073110714805140690517344313256372928172362644157945037184619476713024166883619166186466723387857693066456683217385593123942159190414809296984817802622973764643261887155746425253234405739325460793546349609118552430084273473926997388027696429533828645952450358234178566346024161661652376768978263701436290738531714479349782739644469812877227887285688026654544366454750933857348602663106399652000428201668031255535577638784647964591562111966423644855701520337604232645827848424036524830400844106769951554710184667476512459808429900965008633197183283604842864395543825279910707964856018213651281391521022391092757927900775358856692049623694385059446645968065001283768465764727919518574869986861389718611835682351431724864372581247713620552517777865526047654595118176311100350308835926810816503783065358799401855550816764381014449728951539150559616736608803737857720958371078598352579942918486426436134971221626942330608587518514810382685429792009725184529205186118200800590816124250036885243887711780272389729111577724488267057914768573090269436482455425566522730553561959338095733430736230208608117360147437546415721109572602128238743290832368013950476263958049008847642243484000708444096688376596458298117998227329474033133931843950951555030905388795702372215201744778814495010758277507951354674811523827453912664512118720591965790275458131126052741838061807979585985329847273346604495494103203314762717082180906905055459103998267852571739538955456374964687658087990303984905535840154994662580472466314855047246799382967666174887623371495783726382452982831992142921693221389313859976067930288287490577693246462900835012080011505303943142333547594009891096960853867795340576432280731283380882395767000347262211162445514856525374488423125836517974617190313245194041040016925089255423180048846861238216029781982410183087063763499382848950897446327694728653718318421080196759392396598077973878080241246564777077596765438727076968800631781828811218992243998734710385935141849453823641049986661875639872700277137918063839473202196288765064399548787411504292804799471385625177910144627471348689737169847594938617190785992538265625562525683329242840651949602246649076418720438572822962128307232167259819285416975663971503751874538650186304669935546188120780358464766611542096065418099545088174245246978974830615631709758345657916178501848942624011804217651982492397491869217894467462684686178294576195429756319181934776437228888973939740049335522914397569706322904449430850088581923286270723274520074995673179200199277693877982163796755259869751470166984457814626811924033132424078914834387440233801108576843048736452524189074035414821148046221784630584772305221229425551637323468704402618919226801984031958769968856087872146499166868835836370533542792536688294870841575881108372917909715827924119309178389625021492260419130746929735421900378731684687508852253241513745499634115644919170309216216659451774594692915138139474492462932987321213708780434136917561673675318185907286488045948288892397253015516130300621920285917097580286594910337514662670859791534712174408352464111050797788374208039749736984235188205724549265667180799917956742861684783340536793703221792012578097024576647585080396923641297596768553445292869424670974191044857879806480362184560308543492042829425548272446632641370152790648297107645151204331795821244196717314343536947652296019208562149917462376078953293742190505518720975237737223347174680775333835960106526672490251120078904921562665038344703056813327061651688183987411519853405283002504299370761683572354721563893652076121908792359777339902492132860432732570473417170632056460533732896037516025999058409710112980820280638310184638072286366602359091482432951236482342494994552256543762499883521762805496157062061638334502338082885714161697634272314412545757260361261763384015078655482017091654684236743415630394673082762705454874560334668163619756394825818216530557594338488652302811097957744578811109725821382841545302180416879844380082530339775981302933910278816468792200801725866787444160333358669828251864179380881409769077207437211871299163008483412043112969960066480430160682501270210726029598092464282147781843499376256632996848090098753016375288529584518271885002773544606412928702003987788172729384402217408154044133129615784443923611874762629708731745193060953611271174646560725622154119676211076788882449082594275032878803893665222111051065532737132849723209779044231743961274931257423787671205544308645629142281388775960613513129108142656983691331448074189808435034577033101317710556378253167693107122095303449910934812777304646677299803333384272126137378540465618677934990213326828510060957034332734980828251992835237097404484735724331345350350896492966002637960068190480812919957125335164610107050798168585693130736374885559531661779826552789601607530026762371291746380106506103679078802461040069770333780453839782640328728848089911926319079135446840968713294303784976861971818820046069196910289011732803233618888547919297127323448075729013749128987998762117535906691113048002334468632039410258910415192922078705987490731025585205263438406423686249047949239212811060658441907593259282911544128194185586304255047386030772410864147077697160880629281918162960596621207066543327840480294983973228582753074463531551074555309279318430924066488936584015392787798690130415847392202611914469413415244786171738176412738606119395212065565915316609152923921180304046489415732050938984734493714235827761939645314728146879015962274281776114747704919492655142083767401661717761587896911543695999081607872811164157828358258163187552751081336784648152116039391890544371946080282507956958055042963020377497519791149539048827573364748684284608292859652264462831124230572155326916285368789220777398918831641968490208689025508231402917809845816487180126288427939362515154391983240439084424137479090231713952258106045406138659632511434071796934098207587909910259063089905886993193938129354229335217167958164454578038939472730609552986050938135160956022021905841833596820923519903814606458691292145105855501987294815972593851524551175808426803748374075491191514541230729711196487409072197171601177617711259608622238550841394496074256828811619138737924818948260652797557778356797781429384534311358179996401791465076938619301176425466196964031462412304681876860807880721880630403045473890856004875939442636024839254711708226040893457060097653807191355634689094218565341556912093689250370137150663713415970437108945624084910712697977034309628285290317122403666579249486875392766717167218425263796864333296105211038120456316517782971598205625152536828917593242046891269452067007032287738341110597434670371715118665564268479712425455347002127302396668754129820676135087301102832586455116438644442071732481118580295852214941929915895511409307613733933760964051024648844827009725515293154080301572686411316130351142367134374649839187646768477945723017896601784311789693119273982806047064339009260152873915229692771750692001046868528293167849187769597460488926061434374215678493266664832899424156862497363853296318671710990006037182606176564025644223300145436617403285786964149545536560078303573080090601867889240663532612986644266032864044730923188681831472406786801819855550535197904828900906303288231966372973723206822133351583888918624319399461537828794125413424092774358236753124862697645263985262377908422556757298471230457173324479467917594216542946512499801259076062094299974658168549997115411033272282460562693003103223405991236662538311439129662062155478209835538064608612924868537144458778746927351997337343112145378124906625913163650125915144545156113978236832252559376919303726299785945726157900943255316607642398155290757394969365391770602096839482878526642817486412568517687532183779502410645216500834753364620587865643876065763861305771656944176862357706708176646702447018564838910166782725009595543700473178002130432511579025594651930695787129554339127860260024513635043701297782689839988901517416407823084486265949997710888638885846974308070440142059483700091441849911721669888676603462313925559871428576825895723696989663275467658794939540927891057041484375876140101910041685808131180618082255227675794022362617575412013953096217771662346445600511092106251652697207255936480341578594138290781899594433949739916462192566329258577238289438835152944333999659251213822880474578198247703535664850963580150712547106630624401618119966643213204791616939537558469010725185476415577915484694112067565164491326527992373501953566556866560316401886113171831014968709119233553777673254546684150508449978284582870132542034386569648890705564282622474887254194626267698989644823837880557572346187250326533901904000316760938216757172412170102563583222075353889383905768088735127248169977400198769553433507586223378957109691123916924121710739339468354492013528091123380041893962375901095558093637975201266722921401679547445272050535033532173737385669195627104732724387915059897201686480031651166077943073786556410867879462595300959647726029928792820657844546606864082696342134488009329058621633886238896992667057268233093454490346920335333688608356336792570037581325095392485587683973922553216571456690109919348061301886824070207426338841734888222587562578097136749684614741989928558082471223277999813219339133311942532535273030581115120318633734682196472468084566953940459373232188744050888327202326731496306444650862660804638240747670342931447400878015063608575744833465202363286533161569586497527668129289690780391893074818989391413346673397032864133651143238580813758390281121046089215878691579718224206866357979217476506832524708902994598256460185553640432630409177252131072405345722372018732472839633478057779896057489096997819385404115660001128278115316214845574312478038277390750251207168793305694407088054043135350060639765959953954504613684247159069103618599356980874610831279858185174753287370882428580612043523567993290968501124460053219810104092341191552985809450535537763093039592636589698670277923161203876178411396363857321016173707245802574458847901632119324763755284411682509728999119017393765423678270290831359848681200283936350442500298439190346632085689790001295183909117872524656568832155139569717869846109296968804720209515278351356486968153418517633684307797002357961241078116310494662226968238347013988767036908047831960831370607810260234681387731989233884081608894581616301565287327981908604658028509514099426934714447488409649419750416583377282812036130816964238195122885885731641724297141700476437674858973160226443121871718475265806074932789159859668158552936102923654499067328440953318492691246055426732478514154250065955557147587468531598593417455301641454774130502078254199884251317174674338874843582229506232276457451579735800056049289452979850699411513614409003015424282824590722737927600316398992110923334931374098257313752380439401696675210117831199286466210689766627730967680858998067916052542849949620508738883760446833769841616019351562131253528199038716855139775537380117153110493002022022693924480442031090394325168479071666941681271495757414443039744390452485520175974194096113132005599250401006723792411415971626297624725197888687312462986695333224965131063776509665368429571247757809212685416644073165201482316457598506926489715582261936030222686890248338332444988031548396363173876374912035960364398965382208788127969084099526578666484079059199264333278376869101835387584814436552911176865108825145482270281446041201230551328542425143097672061464948665722900595026513754601541974447650757940231782991311676707283893451743112569138081986912821224724625876538680374131481342922555059902788512186852649530446927448968979241162837605693596584783574119579993563436343350051958469940498105980405230491804813739256316628468876351595819184258755035651455837832769276984301624045167764574160586550020416474596221286053187319681754894141873416287065471338036727632666337151691042789190409656333485817445417946856156918968220033111094070770631112429736512424457210030684282007797074297093292044476575495158693651110861930897923020622130936134646272900935583330896579289856379845902807916723420493392457348740332287090159919298864646516942671851143824765740574960309208492199599938378507052603681280975085005685896660377190624954654304518688333350604178932571542149960676433557287642933918417597212154143309607651982856414790991992994720224761829003246053768773525296543386151608726336897121646568539594042827756807838549697381040375845434247950823880370813490507189200652683036375520453595636284001838540160949774513198961141032678919722605879442261891587295243902393192100006031018091192491223751355460126740195578218481706134218427120108405643413185069593033497786381032126095102131600215417661271461678088915393044820695322772397130838236188586899879800739601062643123801661441438059402231165120570305579516600138037601770402193325325058363508680728024206669501907661913629731918189464468140626621801763468918135222646912965129235429719138846926836721476108057488725701343199206366361438839528537436753354813395814193294113496365981161216002702738521866570291531142516328874686058786287137432340837518818458905735098790259509533993770561393966459760053552869931029550903097987071844169100357969414848031229080377098030543933016500828257594818044910396553274236023882424959423292918090905138607946566094873443899745938474026900338810599449664372389711704538875191671183233401235558596754740596060017419374737704260190031764545434727241618761133075150862768777406799386433117997518941029855338671530522224878086458693803910900234349979602534998549088727942775939662705555596356061576872860377422017008611729686937111583636208585396906429684435379522445497098533742415089035731648455194110543888635967585408480194681572832097000665509366918768558171726810773759445302886148064012725731404750537377794901180790971351699969350004333208224724358241180335916255071108041478148916420274616971176779760219488669180246422218256432081487104284040063012356370867456616601035401685204442773565258659683955543876676136681754803333404782779471065980666123952019999453855945178721250558079227808767830399319895492790067398459241003381568265376581148288486324374322079513613134228781575952976116244156299937714028789945338660830084146419913530606385103741347767914901925373719690019703804195276858943758440000485384107969176353216124897617899218557458050454825761136707101088918044424325885869513229266059345990629563754114950428985606868183773219985929127354039270220430484486819016695051144676063778518384430871208422082878164232734483391079636447427039267914970927836923316109072639628415976206571089959283961469730397715791691687328569979418903802052283538801168178095487134061835459406204498533582061871728181350519904150730361134372531420201262727107596442366732545961504758215465673828331987326822389620586812122440338681007375931969011700424667463781002196529881898881651025042824630018003817165050141900811248927764075468603738449337988574230737137063972244984611866237613676495585143837130128635767860150872700799284878945921313843107865143778682652121535626677444300801223790654457084720280633105583202668299938602078153430883254624491327960373530025399976713505336976160744330634934583511178662641177104591358523776195423917600557419221316016148772765674188802554847612641280377843067570762169834199572281839635211389573282413233767757921070103868856597499327613134266686476244778339921585308982978760026623334936543299162512722936648333142294392843128295310119093215398695406650836280412044161277519084170399526622216502080885705448858908830950541830272907790925276362164697622180324384495425874919474978017218612345823709110256716862837769498103923981623987724943007704433436943562256561384450652069055702019471187366830940652802943754938349315544795677999595476545119149966781650086756397759132558816363700030554730989900600554019697635687159927421379986627034933167424420974358774302392513693909994167961190650110390152782691704416375097026073276057202802897791452721589824947084301485843445934026679584042039033025707735863504668267882834403094067526868374601205369808080994155834926522505726100219009406544468643446170726932899431802471813686521766563764974451459155501332182120000603158285022116434778911495125694729436428097283354436129033925760720969432111596149698126270737482253655606334014808751761373528877870767256414740503239781525735813120739110557678409284692677143525057624851512861977184381109902045768160867368046913047783736379514619120896721226322688225137308422743278158984033647966338390005418857198838615883104493011138443032000501543407170941467808455355396884493349023998508811989894433880750646635458475554235979705454455417590640346502294082571977920561617523227962091620688877513009300187864768289221326470825560792245002386607786172647781566060992696022152288954937087769285141843497785302579313914010906813441462440704116980910356619775587317629789882644915870331209319228957054492585607752667189655056476825816462231787852338461329078584696913178749040239322263638068307979275767135348174390983315423000180131016096425166585497842071857813220663902086976057079419382448088536563080814201054033016139182632173941541440255874307800328506544655340765410839876289526447430788672331019126478038905171179118580646007454244390307104595147945831169203227036492073389749013511385184545216416085194536310160286929123142631031284178788521446546518365290425365994291386196414273382858017907848063883042878496075327835956179580953734959295148975427832959400198875745035517109562694243886135449211264883525546484080370804233049257879181412280668953896199183521119101141947746679182829051604050322723019505611564975489168397383905548418949517155769444714236591549090809164210843259354349287938826075298226338196685835335803788359124032460452794248042900216918512888379182715341234557421347064715023497447634790398165279009065517346951922034349552541341081428933138596662755290900114383997762645635692366875156025526373902986796601586470530238957822703238441439940993295894334863908884131364505295057348075607351701623843829391843748498400036211900812278881093935417844622297872020404813875793295780139853236873823989117766368356475539730937319717052250533448948429901367473043503572255318999000127922185646411303288405262335000370331670087279876333816018749261096412527913768363785751686865518920709259858951065632325610774898708851940294300616666052452046324070109202520342660488467234128207861057586549919058969735290254869844638191850548786102212840007571559171244106408254944578618336469186907986269723449624858273591565541130421194495040165724722213549074270186797187347956751693609668559903426806549845102565627360796748482320332606511810743415709004460828268884929154025828831813315194920657177558392961913289724612097738009350049004103134343304857709359947947481882610932260483260305807440855823148783114954176339745935552814734343553633352197015720810768094867943902702312269928276945014624898319779526924743799501903930802294745302354940019405599210569803725157549337266152707616436265216682979066908548920354260894526446496657243980838569808070544929258993951841290677628800762283142531520853607616401397134064113469387349393558655701274337343030473323430353635236517486113742224485634693234151883702976500215163092317876700692326214800325469521704745160358188355015839542381317325402090774891634465508470107623240227911952100635579441412385598884735174630403845311484592848193990770770242967195620843953379256466431856974623681840773422830463009895889125974659532602321876674071141818936379244682952546687289890278330846736906929697330931328155702198460995065712047046241099046685947327823497070850736976220096422238140611895184165503247336812587335179916677302290888389261707883317515945628575920623379616757920092605240721884182287878866401303555984481997306629234321278218048663824299055884411346336935018211513026101446811517320226683436899216423685854612350630974415220648102414124984691838452543641576769407776685760905140897795701379259850654054080423722232505281322646322095072469263725388547152413644354755879818289589090094056818365906969773020523784369123848923240380088824574677553123160526962992208341338274548479043844821558861092193211914549825400931773310561504706469192466430693742232252138671407376744899285762356248362031483062792664106446535419404349661968329700100235379369651072395561161497660186537173551741118069228212940870970110296145818355499282230976940705475139537170496335731870960251342216257171551850428273208958268321323791885071784184540420851599202883151175903744146311266072621050924021479144684031841781372677751895048157871004188857966325982087127817186505405511679570937068305396091662866409070026546599917397439054418017827065645357060512577286127245724433967099359977967311883045588357964570808805388341522307712741228109620608587463469811878864333739037358648674240114235220439870740156526098191991720104118599031361100036572892220217376766344573995682348415141391930885106793576228832796048111248637653152789728812189363588518478655713516165049627130771461697195765645671446547513675007482500411574029204202912476595119435758777698995474595136284788679198119328626552711470110646827124155832970991014851977810166286650107944137513978597015203850927843328085132494955374334234587279716601763600235134516552658616213821846736457730997738373442331178363885345987605259501426700943754555855988475006113101573858658570527001821637447450969299286612254948103269852918655402738082791741466264156597285081728165869029690867552299870654045146831615120525894324679907601268436152841586905960064326114396828155502322112721011368538517497720740360120272857239519733811290637125918181798494336722979776555577234550021272039146711264953417729880114870472757530287469965625620936392195436290879918540801977960472980641926008911965407730118379885903354046291109760581277504159546694502927959316952816416010365500704353721920915799244450744979192060917541559520115536400384735324542465781967297574768733259970751976472590533491798387043331004994295193109112460928176691095735704883864383020665199201863293363589984682484242725112967198583676457872869552413220376816358053521082552999879597976747526556771058741565124593280145864803755490658164130369436804463413928591373646155296805749420659490325806772008331048645302873843053621240044900666743881018750226888309864510084692628718514866988278508439392135521705416940582365316138489733462498442786947853331138979874883569757013517008245331589718904478433214864488839607214228484978836480895832965809160303422455069547229961426828705321788164207293513027841259547274686143078542017034841307600735887731619285985632896547233258635385907460800585291650669073899674341802205927567679807058955890457738578984050776839205534832688148398611950240049193385732421782438776063834701967632891619021353358513089903240320796484248447174876644697603329417362259368013244453797498479305732683405306694401579081812895599552026055592599984915157954107901989706793406990518338372891743979211228133740951397817893108662851297236814463619255035195166051091301065373365026339555925421187958928460105088662475706893412113832519917559025109030634974518199401768113378490665529611146346702825701336657940656626656222489480037430028600244412315145544558796474725857990566587991291052858571359785508782891782816585897800858419286449144857290879103611521053514103404598108122024028052839569467352112020288959394451527789984996256210855448545320113751634765727033324285997413043801359319044645149564468560230275620191648614960635267400121232247889950486986155628864091431475279518008577635049308072574851057425459205647207670426234217718790310309234901128363256822925446396750359950680425108625167903255629077521068240507624689623355063594749831674352277057862163216725386084247308726901230597005244974265771650581006512476400058497169402550290001151983606928002320695397223735445379932278661598849933274965509340659931743103670098752335677539245031920904237026907849364745034662764524672688850232966538736198191382846077481067614890807007095996924824275689061803014653826796279946157351450679727198893860644296796111314809278906446280240503840863805343717122156719830673870503046394992002370410863591345306094645495719345524976050469436922960838574917081448933585583877065913073315459804900417425276260384486629685872726691774261595182140989917829275458135186074412034509726888424426729741247415197840535856726929788650073622066604403037105117450490153759678792694773559726502876820477044800163338276908643273065469636688905851230474068410169787809075791257125540530703397705588507904678501209848775791495996292079679414863093077972003105768186317464204513837769887592315418382945024652790165634794436194508979061563420232075891716012156378094917985131308117640393744424463483039306516386150484549425084167219239966498649070568985401296105060880814801981859126401965362129986826556664205209781724599391546227426173860633322478768801784659283324918724354210482371055845170879363929799857009056051190417356029519364059675848252769946732049461200595332950055986651163270410280247521857748768250792607670829156404251699366234435058291281174348736546927608883309697136436693618908225608970201212831678543156539194152628901282687306960498071437024148602728043188097167903256213106583780505567055757626225526514366532559876671408725707674597737587427897672719644961076243235365977168463359744731608140078835327104993249332532552441420995212797718040381671596182135179179853412800946589337770855813718569668528564930097033109493747600023803824349598299691431139981527605893312416686567414076406050071575301405999283996541738773902720595368764915221997738472643564624832459522608396516930227756269193502085603874658441997274894363042945547568981880407031669262604471620734816736293487448878428745697064324373392784629752168842984049949040993252853064629073496587165582929927923837724280582606556636813544343750491809836372762969273181742875938509919906994315834205613934408238518709238408396976315072908689049492582478020503989785753476342417312955894378471759474848508785168090247118921181254316160834302657346657332678902696049490276060709808627416186990782641077928450777955321570549173563948667693941869023186949598627577636971917685610587788262654752888293646950915315623353389416880164123191396982825523793901940905763611350398400861466541699238601904562721714201044793537112269404575019498071698094558160612830335157814037793119178273307314311917012531400033537113894521948586751679230890701561257862839547450281866644103339418684651756595463925769767739173325301874681939652649564921447318271825623038329189244321526514639875455040711326581955647953286814456394671568755881671233305220035966153796548469683562702711002122439777846996963985647895151039725588247681787741079505854155104901104688723369778894075924100715593355639818389120713024447858417083591627905762047914489579400348837173013160791712307583610021551065476152502489711499126282231456538811864400888083505627184472482004610605319037986685231844711293990024553900390338439201265620611509642809643815003018166186678989272561234114244076942242909938719462661383540731106431866707271980989790314339915235334336734884399673683507216723136389118393347699281671066776095546915056351311387980949833277404580461167141105344127361216863770961874043943793205414417597263573121360023968053293962673911316604565611677461740498091219177865245056841188317351858246523270129128407105042369931755547257240822743173678352170049631583323796071197410040117723705372679499723442885455105455030180101247451157991951290081893553108829820094741408868088813102833949604736015857457529197315152695591412928314600855032034580206946375230156400505421197818108830384289990054410958490726491462417483878153335071100433132238283554294414069889095768248555199810353109308686490080987152335965022203116850567129216342680573653474666855746415511757711911555060426369161169317208740154635990201842024366104747355004179094287535530536974379540519965001869315601782445566051359035786064302536592977096681074576960874147027221426157680600519923739488959175049854343243109242818314799649150058183129293630917177025536866796271571561043919564868591415207855517414941600939395737592693771151373479753314402049767906363581067796502403035178413673220056531817270170243250051356330907358907324604918534537735588450641142254887274063008255291472801690436912986405815151917113695258611414894930111332077120971258892048725444607861910828698168023513292828329012592123348268965067207063908553160892610544117837242428189826522888811123706001161824587266265808227513993413481079821713552258166439047740815353033452479228171174587007098556410561533551518677293621616515661908318218771664545144725678380197135123514536227872660413958706913523197265373478569766979182858711172849417421577336264859433019891106939447912589348516540514350113311308248188154741315932679323723921145433414859534281501468560458107490202146538214285938879985377571669601525401618942456372415888987154651062463270207271349273007048993730043697749100878291413996951066001319417003036145246212557389065983429104546663571108680751321634432372943087120083332402796772571631471645198936981409417203044273278190983456221409990588103227298228060877859907932881673944761946635246441847788933009642252756480774271103506034271610687553872645623519052347800911115110663338530104532931222195269988187848057998383051453249751076675492859288730991916722004801630470651752933868039610605046166212452495319859489083473555236453043949481910116067676075578935047639701650121711463067596660940922150631709640774491417622707097189837702486942052573525291498877061498357011392650365497879304864042287571726701212375727831256504910405216354393671538647097309833119918223096373354796872968871982321827760464115800516275303965195009151524735788756550926755149354350896719502132493688021823653870848095812416034358958289835394203918682569386205752143082360014180700278796613898141890945565442641741822499777728817062924134003729946621211861445134033464799598334753923283751835334740577460029636496991457302875900762580585991853957415011939421054107785913334173518497503206599321847354418844536536507318408226677364737885270731810191248581090274769098570825101768349290580303635890182666358764866073577953209494679649112448920072185540144471470444113316081573130850922166379163719900102253425925287033657955892123254507155462018192926438349217333837043488073327347379579619174320430355576502541474616075317863329892772305448760376343414614505347086978359685324297204603613247793840668824763791122395582366784569760237108235347414834220463477216096713706824074090747398239469117047991336929213584289764016701718208229120443261150850119129438219529186850106832296092701363734778079406544064188566946094790701976319224753104791308725536515645320599196374078085992878447278082145876618921063250413182351416969266219439746148150454306890301894856674003317744443341082082384586648103790599227896424977987931074210736041499536813753813085466401332879240450373350195416567918589307776660563589737432682746679819206984418702375190854232777201036504898795034697942525892443422234716235211563538595772781172667683698357345589138836375062077402969764995892516476336157370299130817523911172454780250588032773411172435214378901328483278637788209276274678355711077836265152530624901823413216920142421882999707670352008964648962020933021023613621405793305597830308458399547977492005652229135533715227133491521321998113961318530097089380184227917477767008914608713318861254467569797652610477423377726657504161325670668695634089953088436163771434276114860025497869256690440330055393734504026303599202199077584236774441685598526355290586400815413055871393145634906455059495735445618326578531573162734190374595063110201670328691551664377113431477331117168417401947659831836134773324070648360620285108981904880903484322086593809712713194051005510645022700163881903079646873863663691244926606870390462889429326694337401588790490863288505128406717599029572392615320143840044661161620187129840435649082197375183996671692289290344461124929700107225584505160370273997441092787079605945573418566697251595912022568684889123059557578671323472693656365683590640134929578330378202866455443365792262622246766175874618466675228864302194598134338835921923326758901095800655719635692068914900451188636971312467331407229497824932726229483958834748329585148634271764532382807088591603011255081717300073960186951036391639763344891843234130847114967241930481124624995517369243164864047623191397623351339334252736922111246686367687257149815950302639613325582211334115629822443332046000972920872968817107090225208957270097128929254295641861342764542737741461509425666251673783562121865095538942843412872220845098315342059478289969400287480623567182043921088621963605819405186796996057627703429227751627997070343390405553088412492003534834510659673612267739468924836879094355425545720426341769911480396846667618957888502531739324457216064509784676333439325778467460606559476774077239104164005296635309025217547205251020118810289323448684001371995296693575281699450997218577295447531841849592589139124927678590836140796623991557651429475469314434507009857621162591263265405433324855672198461545510640808793940093851014026051959619872491897936257255142379372875117885883068146628780619720331856679219261026172772441173545661623717022234795069215306817362913194141080297255802654181037078388669295608236461444356556191917113788412891499197410567411920507553760980691286898919934580048528788822490559775536585093755079800379974822828684823109626642281034354100889981849767734403092104935435509333236527630272588774151113219200323931141559306111665952348609950598741471005687496772072368167502739152615752467618318184942342082258391614465591606044335360572219414664997442970680545103567409908974342924688539886071717907409049259360191670505803850131256650623501819790013113111618524283514520759160575523810135133789488491002627986928951783783738794560483724701611630723215989611740623155240522203508493135649850052913917927836713439476242052062636479178678861196490980304379988488632874739881569666969466153169363847545880687131462165775331776677409141678309627124197195061289837685847670050821913970563972895961631490758514313336689755609848971905214463152982041842385500405883210717363424771818484021221305451947728898112902910183716106576405526182965211470122190305796942518971333389282152927825565395230998438929770356217178547778612883405624108859359698041707960549501598978852567854914913675644889911030705252921174074536959484137779785530349731645572088201943460698822418573354866210295323562118084805230669608849176757780943265857534505212055424512961259845860858961885761498273672479956738102014490539311026463155966861970535308582693895195914365090394405260703379719867406312643141224439460072175093875015981711103779699018545499921692927772114665235608084828541898689215606674502682339215225037280036634080987498821205672083281862041376038860840584141179240100845033730301813561332647485644840286381066522229123674457495041725886349423313992798420977434569095286528774815227638282605330869825459910896975627967229039500575567643127486730836433846249622666991357519628197104652239186246985459562480613095275433650320119421888017264171241805656713612274961439958059200467256228912570833577951319041925827236692877827669078075830413943572790391772070774618407868871729754632729914257016827577290667330808306019101499466370610414529473505534398336443660090217113940831466754945570297255764425513995621891102882165817874304775268072949184416901080951813544487988923468093728351908865448916147434955591907712599409787391789565137000798116233227580354821129603345432664458185897221389609702877282438510435250412757641892477225712056360413538771919132600885460818789457339647152964954476989004285517549063469101557012475459754148853161713084381569216910538801907074016343608657221734038076788696402111930152090730836104545013414036420261293203849891561816852897412683748988679136396566793314863296643553440160299624998265336229979289134102286516134171694547920720083879583705888575840168375346760045040936866051237031414834680245199184581697442664805557203479734301797470155688992727424197953043725244541801123012421060877683900390877312497044659849395647064951614369575717343590010632175862362566678638641210241138109247100128063722038893654437298638689336394070582190733311756873808087791716691286496435172564850223625680825895845666116240719154780101935980967179319898036970212949215029696691429528275911452278393352422827267343537240258292493992270104435095077917794370333669078681962915570831877109211868723617755645851413925596920682308063001799154393811817671415672712291139203767546048558132287211093799988857094012833057236421021569996298688730740270136570802260704100836366426557924738720935975676496742243612519399428934963165280403618355152264248737277285560518948268571522305610621190366675318425428858290383778891960215139051836836456335472625023500110650652583689550365561466722005639669451043618363179786169263403862957273817465350291319696232764039430006783920491515128649776902769554647186227568503163066738116337953329907860583130124058767807091971633695485670340456857076303043324205020781836773019125680394277963433941296731790672557597391837883382814003791856793027216910618580335993810837571347153703338284355604462435313874858271235640184920930478413021748808398615096795724175297099917148690561401992108997470983072796931091076378186399852426959573858012980089282371909822228974431930826111953656225153260789683852436110334513718756049787654738950647710855508394055513581716376759287679099770115924821405933556676790507940159939321073700309602631121235595401620562540317545891176802964768012690971406171278487852175163678103984969640853934591970163361914313805056673088980293004453981852431149801893308329785339435962855420401140025997023721567779960328239550556775495148891238543335134594261695168920590673511493739490374296517041468752416300459795342562432728983432692707219946180737758241179065427304056040610885184348737771112438197240169489337301899415804201770576371439862613514567441418456370951356941088833212217042636933725304445573750746339795957970533518333386254580037700781480541516806376233948379797891026184509362928739013700009109267612491138518357728487985637353258786879482809745904938634690143720581464473253450296146261424124281859429208995330922989374640171455363100132904313231185023195104747331144247317735188930724037028289214718386463663519337737206739506666121318544423482705982955373021831468876444456487418499489365412436423283259916620703925327505747553903963939556614793534544003258635250290827524757964342006556106518871447499862949635084861626128258733119515604378275934830176536254072573127435095294285640503861072655804419959322336345615069674692756018086354862097527774770756973957558517741837280078482599852728698955909050843681716562764945526211426302182807211898730144122103868800884598952829743046048636612646263690360391164584926456177370989409105227641414242815056326927064531202575734026557564263387140448039835436110524399101535220042253281746152591327379674974661090690627126057081061721244426522128445417681977847106495401720509273101782155482440735279472310945157161672249796590712814425886659606986275966088004138795247949104331485276732286517810760914170821451667686389883539101476832569563797073376701187571959645824704275636008569944323784137273482682532664297977161797337266853956413945084270974697114024825259005378788894068193490413249297216435423938315170062746945074348999231319381212486076284758380262716718669818841441522449725259136748221333517646832687131403946154698283090093746277869911070934898088097853370798206995595009009336504787448311784849393616680283511602379450601278651798534838623858727311611157727423049023649192348793075045329929831725452079081169799652944141478762500794058496079181173468340242690249413699261051680398451949134505505441371911198187532429596617019556914129831649529331831891828477419955382749566353821678745035040971115409156958557162964136054102662167061990914529963567199945412429203621178923091433440354012950185028264991433595432307823122245424782725315987557537877802291374074588431152151333203761229933048787868376408152198662208420143920785523915283026067067839674122847676338964007778450021801497218206042214748549821092654487233394787294721525070805859608048681556241197599067497086587565660759692383267550184233490184744779473157705941273059768252562519868707273158489091758549947611520802874914209640527813094984500694815973274421893443657033285790749993427411864490682368019068490169946147938810993518319625128517169323676056533516524873985543604012977373284402100843325374708823714922327617526772648443902687240747118570683791729909430452386728688298416694742529695145926943668114100494856606307958071982798042919951656371085349178134779587659699197362971618023207664129480220315780794634691451403498388853487419980871740666226594949500586389501769760931283627315798244305104045978438062458381347955438068551213683219846521034641014327769528902131605656040665890750115939267562242438771343103059218085997305398107946471836628555823665415774096145786974071262420025139785005446632212689934474365598256133114314531984532090687098190765192296339249668093939951427273138529136357538030578038901703188885510566039787342224123091197226398731640752980827728616547016869295495793839736060051691993470035304341864708661983901893311400762326453300918448921800707433868702362668208900499146231922725144161317486602017376308018691229548466884346710634767858952228460929767247135282211966899230398960297323768505425196127431193512647134626613887254483505913884383374476797657349231671377963942566802771713266146171497516400110018949890428791819702269335672326568992867930264978376563475291201217773008910472735901701119898802957786339854104462605557265738799228270028852805104470100813302872508532338498801238377276665374617558256124590443935487091238525756100298125059811275080292544549477207562294205302683186348236926218028339728488525942109755348432833067879271702494598073372619567498830014728408071610542286112424346935881308306543949187035309979540254964838629728660419560023546448974202541946286905911583708717728362942778842258135039243759232635547580789234526664341490373886383621174905777393148738257117380826152662271697078732094219103509807912718857349165780768812025494578860890574443924026391875964529568802439971877398109633833595190231095297454722218574702493549598971292337666697907671138503068493357862215994996712578299523196972334230999583735584477319326102864535693255863645033984514605249543165777056514036170346451321133608502389842551920847088762138656040304485683433367260433863415066894521755984182523746942984857126401232159135565365173975027593855453371286328732302280495125574315540399950298498058074512908918546700297032044695783481909662913126017292258256751417200762397898883434244485944144894007812692485093706778916791351701168967328397420628649742501227428080580745766479173946653952590539474366164420758954533455126012889655711303351434824724849075842275979842616611239876278469134580607532038756799284996653798561207620899025945728411024089003096176489458705261238559906844588095935862739314300132355431384355330359739259018953404894509291825687232338248629704476659073722835534710025849366080846320789604674039284793601857559899996869630932091797482901306952176588543753056523815916010516436295869546348268600486270241901374531069690175323927260448220482489019050093177764478825921305205080563868516292085509149724005363047555420156374061018471716215875265904478685551805460264982386854674851847538498633081415049540849539748354096855704849213821709476609914922456123265758876760810492095990522232851255423978603911228265154418187966986120850263850773814839884791023593048043414964340831814478369840245565478552855695000875525235712240337896780098646976760393265424833578859481394755910938656055287502621148306856859308051416765682491081484578028575783163353012494404681910212028825321124492119610441314706529415913110412861113480878776909289409867704091520325034993113154567327844985636542538200479211764146517697022668348090836076016631086487670115666668712920128562430841501288004565646943723546580242109163767085960047261071879754196109360501836039853580209160297838372630646906493573875111383633667613410009779667618199971191384201751227939576717480120991258937005455945828087501685816466903340618954210431548643696336901331382638434506027554226773502439712151497917651064532620661787202872729661976091332037670113764620905823021910118534144936329624456115790716592620335964786293880085344426254526644712515293350996491423750964687773876457020712009652208580033059632635467575804372560091896008459397592516065146973858242805409070517467525702771646110270594135628294358268969524021740483654742635045417801040776232886487090107895620357948652792428679728469584141575824408744323508984795733180126180594687674097009963548906486593235910732752196522597623654693921178181692921581079938819260967681959415767876305074655844106680450927148418318603064198880847936787935420795913200773757738614266145980454001692724819814130090035866218442622601469015562896752771567298440164273925784188809014227426688100840423785189161258509156291148166835350033219923510077455030724606237686924822109088648933580030136522099582918376099205799190565687767555164854229688953677979163057284614280837172756482442203000775537734026841474212417792150108191884981587654083716893737497259948809083125301090383151506789193638877090895258704068900931895171998098468922129249692571448084383981022689370365010456314144458665859536730504030262853860375269637403102027842626787305484989015744207433346813473126945533630034089192744133199091338956857937376591498542801982592361612773398070060560559779512195549272540165714564064499936032737334452840730498418332448731601586918993932104273144715755895090288478096603593001688824267811777054108301854725003196557068254937043053856033687995136876303743538372929805808535707084246535758917113222273955547238599362311562222889576801463211447855807673980166553895767019316619100907950420959236667054439325104850206059349246237710467692798493323005745363875967897081279098026382050527525714406453630864093529723155537091795233478015536160738086678112757732908055690239987578193231938923784536313595534572147968163926838048995888598916830235711242431810327876944997419358590457807016849462047158929683606268858619752934342222464925918494735510628221289034216876624530261240235749362267583627366872836667710278133753441359073610135927132670237090941446431236097382327928981900047834915034926747168518728636198818176552854712618299036885132639089062985674520908501171061743044852078194532259525310324070097104027057304158349043830056105643828737825187667555009460604364904454665618297056179402569607351337967186925750711051183636267252823838144243124212303961377569468105072672985838653080453133865147365387892459193476801273328576847349653657286937629861869189796773204321934970566259317981232592066045878982436764425489575221502505066367330328558947778450628631046290439272678974602910221779874721642879105380253181125302558196408616536642764059357900913604532138342796517540863949783019561066421344149060852288352628353567622830675773771110019304098222027284373695674900597076575023143688462482084778357192556129120079912098897976741132471379972571527857934881249706013085519716590400524865389823545980365976291628663722942706627601843094683764075766963637419752851892645887615102219034023973325292883739591206898653911135119996754101762581263439697750237726362227546536458772386359259806455318750318791740548176697564240367029784105960386420122688399375083754026380925759861685997510472829399959553811753354462677401591218137850766149600549896325395690308794774243548833655005858187442095079125101864544210590831643507169462133971232973857780825979102716688378609651364436107862648235526509074505220700710489702516946126303133398851183608621154662143970126902973255152219141491351165809640611029920379780620028606899290426037846494906445568087747479786186610072661457980496540719154007265446196009494395133041048232614316011379757580547150098076204854639144034443688235887715095332891264175100955653364309275193916141178730788340295715099537942699375346421899248891801633425792934750423535738350609603289315920217536448352705966142661611303961387648065117322069801784341871911049465267881650081241027951287166593536920815304238181498979971998781775404905278584726431735758688760272234119544541457746580920383096152294509311911762138901643786307361496889160631705132388779201327201815745666359238423189898281518750488035573307799916978973040953143036435753545031952734247262034235479482751631639531225942482707064182178375550562047979221989584103675481096629647358501602659718707532129591818305205693004762245569571535458247216683604820757729509208644397847548690380025783547284189941586290975691848592685137498936707704534210316110354221195476404381309261343949994033069783606949716889303132209935105603285339749015553062188157358654354795723605960658711402491805217916104135217723057677760735423389244055341036419310079368501026711753722145790082994332951546031613724147207136943583401802251547572212202737554385835021505185873331187402897702268234158735601104106782582856036710325854104535379565830847139439087312115836483358583982143096520989001194337222404817908290396133784837891443218382611823109366430237966610826586565562070928466873012907269384997650686407856723977723369825340288920400131301534827827245168919377166346428741240707780073744855964451601573039395289931761402925016198236028581550690310234335913910956841120522523464096864132243183312085665641777230711104829095078208556540952949575592003344809482907500677211005641501747102234631009310217284318403412926107332370283656191408370072069346941076274106126281808423028198186337082525989976567967394967418701381161532238246112828938492704614969054463794705516758731863076979891419026357712329899586389979153530945188047889491959505005953958051346338228694555247667474689839590617575641016050512221553354427895612034068358086862681658041949619306719023843691153362899133471062648758109159906175366316439993437471535385589182840831424849429272181594172794677120291112391282605728510601662522780953680952470870615682215237072421010132593764189840221271412894439152119375461092347238084311523509516934164871539206317646649614122549430632206661734223587978024792570150301249718577393710741702076248039689914962826964249148622835175968189404747595795806513491405289602032238762355931052368377318439146367807232096179290448282912220124968375003377852750210840142417410824949414707383410215114811708792734030819213604549830976568039299954407724947795091602147196234034823166327013415955902493084618013722158172525782347700670791079563197417479133793879596417460309454754883140801505298402907771466690419733896742905683329649137251986041322382981438824942023658913657762559032150316949424450174103460577575471381062101527527798091660639391304413117278765507758245755940391853032290687601479289151805412256868955329906706086473464442660016798927835066637264564178063273241028822143306610165751913212218646698871386405989107357794897589112159339756264805510558755379879617203421628281682434574749434097189184978502844420122513519629045822761464543038021292423710839889117075040507364296675148312357896122979800976991198795207598619417369302406296563312898607234172017248921395892644108639423590342569800219678062009662709416337438996592650481536851506963010866539382008920909322386992547389447353062345724575779847699771138067394444458569059061173373727280179816401217457210210643845350173302592349960268193739773849757698512932098474125080219797666574376048576445136285023510030008318599732832266071372035207011360128942070782818851094203983510922214568196839700906298530637669963627730841776305096095303939214458316887345677271652004466729773829082225045334492470833778126178364680045544906537034675306042755232619613694086145508882304225852073424837516469360212560348264477143934580788685804836445968468351349098491718203161547139900311465824922938743703391987830135829270120765229515408430768901995385998041255802022075912214095121997167146752921513722307006503872385769306702164182674683778509181146385116434728925324173427158998223007540514821935672316138626805314241193068849130878226284624651687832789262030493580079261052838582436594448357038121998579617965822168626492514098150780378062303436185242742399742879541631567824432899858454007807531965488857993643910568148870113061904913153196266009622049382720995739665188794366541087750968412222264378610701871254032535047789518347479296703078654515034658135013614210952360097452480062885454415306008051203878009230719695039122108271813369034975608071830867460499501617075487712133759839833882368560588471795788317602091450744312490342460246264784932804950162894549780008917762596800668252033495579395406314869138436095330590405346070965550296851264672469013982342072900079812347862769846647706030421209459143862155009559954390308759137877809192794242919532442572026873906710383790119904421660466929777290350505820051756528157356461483150905855191810844857475818362327214086050603275315986046020264877085954324640455943313855508132302169188661821982333800105205082176920386269398378505352062108892685856101403383689724304749527385682906075490972782722338798794682507272616752107902631268773059425021755090545802648972398011845083542601243199469140281888226002761413897217094091178559296339589578393042306225667589463763455477701585440004885078390669044882159089793326765466975147782932159781251636035157442264438938417488754264425894617654804851625344420398445574028506724430174256736451922482651947275297439084733084320416489715329847437510159647471929347305030048530159808525926544375701409429477360489727578818606684687522864993755162633459185020743746042809837645746764815755866115830034265320159706684494610819287842068806722710687805598451820412817691852119362197533090025914543878773770223150200781008375437723705332116560438921935580346136070193715501831590403909485891299764900794660235168961397608994106252939328847298631086693015731379758062121083104343440857257519133045536912084532186381013314540266400833745869249141679885974838579001914858559923993412257947734965860551491139384587075934972121675090625915116975084996882409963841444747764759976159990109925259217754555773331562058166237648986201648936036022769078813129148159838779501130503371749353810636176257658203108181614354745504090217820149026578621582812839415728339261295133453389880833134199046935710577140432131646305430446961252034660218906896690013966880066459098632460243820995622410900795949982135412752647205197898836360311313461470195213205038761384362781165066454744426368795547239505390423063603938499258985880591216595146002162020533202115299079979128631453665598100641535765378846475858062164788919643494854579884225997889395998222845617267553563231550798249406403208131124907820958686091492103356887370825514863300790634488050572545665868306188290345289552544433633639023460101928131499285417497210919509664661624646700487542803259436648641745610116463987084075436531956892759102732240736546883103793470056305908669899226723013092708909664273286366011462495418941818516186175075443778972004972535862134965767833324066773875622466352680874599713484216416130519413628094611363257692512078939083456321719815853952358974355739462808124541174139854881390117962724135307335412671208581763658075701395618827868235376030831313325612282736730851998178966817834285242245121057545287270676577269995872274372072423972559592673655424390714731060648589704333186037974180038020057575469911082522372052924097112094456556952646886427429809196725951131489663738417415109358618591402187944671666057715173916122881112131462572993102025872245450212446157589175051007303691589967022610589112980410737160518335060900734056225430162400928207840854097142296353117408236519150980965678546767878984754330169084777847044683738714825619575618477947968704760755573991164933667488694350269572391308543543591999992772275499953929152106591115994900517021449627867483022491877629845644282022522576160222452021415616688044769192915940281502985059675799141793368290617123035515776811460602190860360136367938257600530474182440719396642434944043735581447606214541206347175961600172695179169412652222748127719455366920245868902922450562787516096279813653643870600086593144215291470882933771717400850839226996063540377221336641202973971210656519721701936567771188120127763439263407684680381550043362660323968056812534489727750087328592552088668864935286112894494214414172706607342274769684520458574721016012308266449500514164884212902425384436239659255428426690263525478220097773943619456590013532857848592166536434061738833848052336216651557694122956852556626315301654588028646279927969830580062828783784277499328752302088071107039729526785696722646615736604922095144257381237449807401396132158165634762541495909392763606921734340718904348876900411682106633671101087121823511439241482009129327285946646184595488579469211880378583731690426372955635641838262914697381586643232150695453472077947101807460355503498875772333996335076946428197999509622881355782727066615247930723115146619918450260058702939266565915116578063489345558268770239661046866961347847016114544804759817711036469002580201550317127302951050729539449261953061737261238405045216086410016803798151103244687442177602889867442313079241735052795337628148003031031908650839136185895330606206146666399383968784334420439827167955500333428736357397744550671408462468936109535055548621120045106536222928696320143325790762947722740545910975567435756105914101776908509403889366250389680316208773442886758186728922472607726719648761121450748548807309366545364495331218413979805854032381224780778021785852114065269656888570876447064245652869965515956784815393317564578351509880946213818205269990873148911851258629600642850308138499303259656206878990695756778663705381136657640033155578793920092349408093482311914568757568042685177297564807985460774005033813102254484681076609386243168398188493665035188265055106274307825889172675013886360947960844504255649214434443761422163102907490369518841302098196774335988412034215016392264470821360787881621286595363138544968476255358474906384342961768834829862468857260460183609567470235028925591790355723883984256385748683797509890192067698389996679330688831239657116420949630509826986257839599897180371846499515894400609759219500851819915393894734700531590721478518780070777386961949977778710903158959713174670173550939478082865638281390121080128106160387231833536938685584186778519785747707627211881729761027777805456886066478889848795209303847721426296480530209977198868476041352993450695616919351926231955275662275540115297832381449281851403468894032385827528812560255468596685916094227381922870044756239704373902585556272586084719845844159782237258279099197301769997517621759466928760976561920016280591983497048594615177959803196675893567390145662068450733857213377345524437282023348642915105858978111928441164922409615184136052611756703934045991272957148152624768629662608246356117747427254243154819270667644363880032568933450259366766445180144028838033133034195538845114674189888693090414678609539115564263775528119192149959847972442998072890285428696465227766288343052636965051108418453661436378109191271793552018916232620038202850584331139214298128038134849713123814895874168657793612451841691713418470742968544441325881663702460243041591858746925857941861669139186753494412699261376824022218249754309954309714401009439970488356646643907429712116330938785580011202198162644905083697432664209005165693396212985051766589367743903753486764987484971829477371261506282101440846752062667501219550558904329736729113183222220982645443217070257276263535427391130825296629418453673688091196547525106245467016627467014132632922622883776532128666101247197022589272313420232760018116200681924592652148530724502484139669162343240132299238676173428097860376428038265533941532153785581459603834939149331544497451753530257296995810011634490100441670456204741733651300572198153826512046808571354716592966885038664029353399676186723827205384655612426199064939935539873555696540849554912480429211760722227777486392492497804047905862803459950169517314493227567124707151252720668114983739521756084549110171825333075403889969535233428825748597123403622602133775896011096995795257032222060105656408950678527315960361485410999651524641041585436432051587803455686611909610097704971548706195301072557521190769637815507971901767053537725895878428361229798247527676547488266581001855411977074868677200508284153278347006689218195203581994408256758414513059794326106636597213170188894876962406574900520501239139470423776157392026186485561505086884601597849857495946819727316713949755530215716702707968188883076713660698267233955582672615435624895662615174325762277523218961887221766883358821772259366864011303096884845060349953912994893855404165851145733687588547494979673648568305392504654010322979141110946625960453480495588862939746992868536235371448604995033766889774965320132996959918590256934182875189491725963474290464844421154903221109429159772856843738722458312683312861953393365893819376170625552468822593223440949793064458951189013322629615241642475645758922766123076692327553297561595545496336643271994194157309388412363186959308569184074682724673606606219822233618542541315406705512693041221824646207173979212664538975489238628451863704118408019086982572542270098085621422688610017517320210318543537142879321682571620443505437004438419169224686030782545868930940021144142352363383699180220544537955054234306279100167440474189361619164438624465631694101509948317097033968121389419344827381211895328354888693467700048258792591033996528213637869671661471004714012630558846560121662393060655577663573741819988766030180964939310967850544476042034651536321298645862755724737240764004348394500978610360466690390507112444900168067114077813280693517174645265836158242056779868774031352431345335147111201016433755595817089671070367027226916718921878633706934490360708611134946141175784338396884747740046820594284001484959212711838850961288325407318509480505333341430083145389283674836518128595821363643578112263871218485338402977156206434647845846086370158001009812699515312531294026834869630189788399489851977187066437788103426597599510553158519062023349420068487626845446208180099165278760192490086918448295959065439964875570217725088812047366523584327100638567776126046868140193398293186630304545493977547687518744400620737806184765636315989462060872153027474628804720502319989529863241057614614289534263896066845566281053187016434588617773601789695250212686522176412088912714124037408917534488753236465248581435702387109440071206366182963947342449213124712841570279950435314418465094786389972387634754977562227724937725996038881860615128719951586370700761001788751811734792854880697852231760803097522364949622145583712182533607672380451140087119626847130130003383460724545035662621218564353538925833575150330130259697933627663651655269363117460490748817382081357129099052866214281592862158707193599046763608332864271883564937552300843007572197089367632796476326353659041642471563506468292635086067986445091887775311172704582399752363875273110380361037188161194345543188741519295358285380694164461365654759961386799197656391176859971281386080173530589130466889831265392012223207894073377478571219994964714349253962076265884308884274992036809894390481123934134248746232933132417236705570898407510333613904895452167443415146942545544447748238455661634339195977070619018127512149055202591063235827941934389643067298083272914601116959390840328169478285668916339301090003462247471402039570067527547324959160716428883218447843535839581860007503735550656194108952458587803990560351592681464956561442714827550245834611698176761138069251204595672976044600888304233052775057768712414680400983758683638477365958217208198506991955254923928014780797377447090581871180359605939574698815393332732323214867831073961348547621913556205151548053111510471686673658454357865570586756590021119773972041653048843443490198355584797431075551484433433380492059029081097061498542477409380359221205097557892990754075403816900531235876052974345167264266622575956814791607239766087792320792514093472991326253082043152592522256874513816220459488907557689334307312777714716440801855542976868447705256217988099014121169646148278305354115885454209204078112058430046327984694136605375874455781325415093188490602877651022708209620222349027861765034556444614058070643820020914748167616019208585246097760916051172490429461533259585427367907015250951346592994301912382994641038300883289175688385754372545032035966947703949615335877231491881346923359637618390218476147639744560220704117220461713596385934876724672014465468014283673452850794164769047554727130269172165437226844593291475301770607115898797282319404235126204314841325101346536752171221701271610986104608719995446451593216269029308419425744245453951587551309859361493288211802844368781978226829461349239677830611840040719563280650323634976758489825397057657341685996895746052221987325569923794637485242075827621217832022634662110216541363731044813407691144937773924690930238771758096406717649914017068861956543524652407178972057371752725721434658460837743191516070254269101708222433886885279413736070340136413911396459140295942286411468909412400358453322627561569222530692367960770420674448693751060889238459118163362325115845831783722310973954595092061023889062381313905722052022148532240216649402207700488264096648700309313400932154029264898808465156148924373310695834397242937643766147441293398820591486659705955869730120749757252613965650440963672655695327368464959401462265726653047233391225922983405259489498139403524595336230362413752524488173555506468139336625674548017118424696278428393605066245566429681821193312255190895532506054354633838720147954803408399803170270982530627218239431427221782472265694428508517876355141223539375580656336830877516624729293935343078297375453895055648057477479733815507344169902762660572893473539433270260935486251035775917796725337468488016517525164250037660793120838589075151136350273909537900994873994904320315831834974359674687716302719421217682289665881634791785566469328608795769066223256634251112238764506978798855935723322754512928239302862967689034572636140615144613614749078493541929217921511640138442538490130759378436846830474110152052915817182657281510185783137361189793589962106686514579737635330204087573834661428227370919047305221801678654937582221096446683427275441102593588581341952190833170688409707886459157762497874440719864122543921446057025965532425490662452713182692495890188226772926094835336245431816730190335417459697097717334129560558231609482899708071199636585897751654033507201579401613153867915295639669578917990652147556519417699772012769401108508519098758947554194023119709700844200408902625835114118507838893793234269184987709552680237473275841054751777059553434949514133696604673845869811208314654947851261128936370356908689419486960693819460242447829352275966409775730906126734428373778655645062366986099363509819121600675295616187202307637684280467495193697850288798303193297191658634094715464481359986430719355592470554831168083088380816612608040822326210547471650562292185458692186156319404628998201544029610420336747563675194994047529671988487181773128424677187152114621501899209311820111253986019822513374614457385589950065018244342368362596594316178272020746345148232529576505409995011724646700018297117746726080974846103353758593857198040112804134023576102908999762305362363011500969588160562216769719391611627663322310820553116443047512282656513822115164096896644802581347485361850352420338215528678671874883021147907978062554609313120135963339924500429183158238935098206493450762292857782136171873623766185657741274176606294560809022323521448792340590810930542246024731366982611352697925236717641074689993293382794835442328698692299405039161441448452661632822305447524850719266837698052636844859844469665814964902993948555198202611881667649993167883809881220203276254119523261708471433134872962427023066384738669658290482722550247635246448031906137498970387092898826160808027985202961664480862129300695217830217478816506683660128519314701457875786535810812900184029652054079494048838405624557906900519120027162283339986999051177420342864116582653304357461800293763935830276007196200071737708308372331134175853239725068580586150418343597228541530418146318583971634205451885598426189013012156041098116979484422679240599064954295905466027623404970065180118244405428060392340950704665529490671499324023751453660622941517655616738494196991749268704398509819423667398984365123410494533985148356079554391635830420715373024270244470429113211272418695837967086725896111877799698206781725442400513788651013014304638236408723695642889192778706031892009820579627919354899193523255231268833853610217084355307516371766069369200580038045144434733996694620958963575620718835380269792683196775121506172403407260894211404100667167467337494734428844507026350117547401644368243465962312934476848420683218170587998658923223674704429598630193564526149031534211040928895449063113419452165464362442813428792933837848050912788002457675687683624960839759842267141769299568581177603407464478586723598709661460005284910732611484384440444801165569425281889228273701542479462980712372022823831839267358617105592750060729940608776694804471149821838904334458134896022749611697244352299208585070678935777996303278670385423296526506420541466109095077763839469316607823046021956432213215905570429354442749916225960231120910845368382903772153661315042687491795806895578523873445164646691490917303598202434734503029833896857724742152591175095939010693418048437637214143275945855772208742751627244847570045982168316514512979420918240662418382409030499932926925246180140825952504660284227470506263145942644297627258285059800115218802737517370631981452737250448637989234093955920106270829895189757884022753639513338954432755030443083585689289262839699935255462300848579977743660674088891673420096598542578740652437119945472633732635522403574662253196361379474232555749443247604786613578414172688177878735130962545450612241720900543093073842734505807743765613287175715167839415366045795702397993709566563497416815273823598823976089768433719529824090165502563150738067450688671993636804075852079156004561868748561456539049709905988469716191525438733299064406772709891140250558053152366999992105834151002334470328250409035141858845544666321685109021117597159125090164608775718916845578733514983090857110038077594622137047002023854965395242855409406340863085215965614189246059343480291587901753402398463068977067016486271959412669310779883722166988036623879074942576869257875628781037774071859355790945210135258868316494886995462578098156118214266517069565870853423362810403549734667856585066879344186004173099116169970642624319707194557963922083955718517572348062648997484315503709618309005243810930247587894280551915144967457016820662630779331025836636468044799738048657568447168813290901975115735998376881733322264403607794378547046395409030574293346916458339011229482359535640747551421930404328952855073487648572141622226008450231566472389172910912010950707303760805075113373239934690196965700858942694631957309213984274314574167412104620840467314396027341809513970536641335550708671181731655589563030748825758468162532191756715806263597128836585468712762092985813727685852926808467363344670354930357132142144065826950934824120132058450592186557690597169300624368820353939608812250794986129769325183112695545738905090943469591544022030587899490370089045972491035424344303673623901334457143468858371661233202938424811884189002305261997754032266588256415014381965126502185230970853897757692901270465301112044658178375863948668723215237647923904371716086937817802899481577612931871926049964066257320743688476595281148512218991565148858845634122025212752033315142930752155319120955172883533747699375680731325971281000406206442979687081004393767874171029408028951570394339809386153928494245385156508920643346075577201474388477305088248094914680418985338567485504772928190833468767367595187066972589484250329412979234878046371783831414082066971280815084995558757283399872701745880861349934455902550370880353482904335007546100941790117986760768240903261819323184036694322477784055140628923462859816581904810814671603580230592141704982987884510595211695713131777815532552485131194000809503574156305757334426321364160470569774919793214335778304504579223611356952680571161232459237135715918748321451193462764875608759803767546745627043316138771616109447451007147252939949215556968898814263295155338243267166584973306345942482497543083901189329531619003311968346128347409229722258220543397248293610491287776567671557397202496162765502117695582605907605691431265117231304728898841668161543101870792369261497495814166165336831233693558085047163545333334514443809329571181738695950483080622540255790768848127752463144819095250677730188844601624354245082335868576794289230776820764114303200138632570702072930819185543717000432772847982956740912329512399763785327048155038301216418845870201488680023591116775516257698481751156667368901937996499161600600855403670946307661101896191856344171344018391976207175359216989347971435585667206871015826677938881441708216378084992816470579744228920684229029407486331917543634078794937445886516914436054200140111825566597856159675284787606012948485029879588239736315421108545748303236376509234364171714323610180756810141868090018251878444411191779291931489818956537132390982935795247654973018958049979906018123496198757437537351277903414670485067443369671306353159544321255404606572137231307665911300596241828232089919707406053306154410994295661391924141541676868568870237342451193706563109257016778602442799801851503022723844725594852521430229822549799705557390964656566344806329543478678778790765967063575648010038567011333888948653335113936097224402535944144578090854582656711674997998553502795699981425656899930382339215885303595394811217630075167742923167033154398926477463131023263657289913464879537839244410707005667979768373507471522232248636354613111956545995843781798262594391471855567130758307138967343626530316529759343331319584821514765738398776162480710068264215022454299553423481755407083225011387636780879002324006506537283353309625086607991866525116122169356059264498295417554265380938278929056465838775407929745906357211754512867470502388614421704232158627322147436177644229935397474901911767405440930000734771047644040916812129146883112600358251833891116781779916863114099188228771824722742889087276478804261994609206316746235638258627944772138628829578916270479108628231737674959543782518132810654508147320531949259225103001149252508190557044269104681268475937601040582120628426438522319731442979568679595593361477747849691725870834642044613485972691108015663644103066065207541509769945783438080377689846087438658310159728967244817870131763553977407161598255406240053636236936389054758409038920861490877002163472975868986379383256743557055148413264175235134069045648161127007606012626471351354707115210966791949930861137320526546483184286622134478420880275089749536545564467757392757064758367237335206391387917734787837018338286100044212052534849513257289320461416591564308062123703951437732435403205481978752856484371115486131450000392410207805072995863264228108008518812680670413416231759967050791688542913079851817328195785566414635128363167684186379596886094695223950556033930290974286998000289264245159712462306791623848523030246820494465454364100692376957914035593853658509197530951156305083326370490536486253805507860784532626070143597356053961527261199660175188777686172980380682610792470547884568570856945632491705827825201798915742370451837375786823012219749364134323421639496482073680595326903465730105745208529452647978085236701102006948131338988036632727174974016828836111222531916738561213491501621554590389470924473994743290770798228789466600115154655370472869406638536854930367020888821303788078141000186501655876354371196670851739179298698725522088014602716560606080540181822286370480306700477151868849356004968848878445381569801023406165251389098198342706581161541180356134649485991602092711720301682172838884244889034606746861687287543098026133072967773958652684686563112723566349942736173378597105622275573153580352176925933333159165495170297477327193371136955800741753589264580290588931573121843045747588758864950003230136807373683289024251249527514381846081754312411268396638298105768904945887494939025299030607297005289590622051438990221258064089904401700793746889372750031271618284095449129871866088200514583943649742473303157865768218586306747991161996240357590287429528298093739185430799581721371587997187870957200879403096838600942655081920485650945569543377751693248267631458637931853951909651435368663492356014423081607923334678193721467890961336697394858807009402712816969960758007689384860064667807718605482335728477973950202364640861924173145924585495192941859438672154459508552408253233987520218551222197000416153264549972656089855425859504434488852930791270818089563222912857856451296803204183724431817745832442206052837007814176715791930170532116298818467490077759996454889519000509046642205699396257986118113415020149104218991473364422180664544387373753121330365982448233191956182580270985543191887096560953656975939114239713327955555190692850639994654222977897993055535965866607676624371872416561834271891647507140112929685759222169044829233651313056056733003865007153542798950545726519570479945030711522603878577741145059239660666011387537101984194570995671767436521927825678304983003523996151397857848564360592830966786679400073319242936233865424936366117504797286830156609426743194875195797802877977670116707222808380658817925265983614183628322854063977878908626862089684695050575844543363122790083341539756321413159689976403694661244809709004297585441584416409225612832091542529282684381845167421805524763903251536696979376639013159193869071731277544707422389923044686473591054575752294365129706315196863216864512525509811251788875491768218037462385732681801286048608455526357929210247572624062352643684762868930465627997718484480681238240155306816274595135485224063401305123127915795711797476547148625410339656016085228446998866490474905694640688964009338249093094513596800398754290204712803224709251952300708351819489155385433534914725904315692260083123040065589254735923003932645975615008730626566761774820764336651036807981041645062921990668197193182514957193666658719357330295482297461542891855401980223138635390303501514037500441836943227492436728704366026786986146788197835489795615232007701404097573007484419426732788194924446748632965486065344319078185573908372414782556078521394455267834718534693200331443962139913600587396067035301111965295052086191994555066586647050514327586825576202792111744471168032458948598803505739883485477486864474538286251232789856238624646235279359621008276926315383659318001480933248526353088423950725328003635649315225603961918276736317024346612752754374706729554078636712222198309823945762441996085982573196695796049602790324646451037415235088212564060101652707391792583618849233502398787541716563695185103101212800622806472770782229471554260411117043978716263022029690375642101345779189428294560258511068265180632842201793366566036086126051723752897862744574640634528425819073908996293808024821003744600985020179398732777181170924800796142088611866514010649128142894514363432215941358743938040450844111634259993046986821466536989646230384123630863134412532801935545960707268166610805836141063719453267625348249448097219450178533425887657176623163551118346540699217459807429366380587707955123520113268329463824190378924448736633460335885866083934606798320357787145569654213128883853234047537899939174866263083668222147444737713251879430525223480521009246213438189453014102909045400952095384562942567935344673273801318679389899317059764973388685816260469952914857691771985046584483432284905644960813110511759402390915030222079374177830633069251726501478333428688530494741071125213111711902487121875550900144912661844634650497386136268156398901154366977384991498202678702184744877178703997496353257717768517103853775355365508609175774266357159009148427596364340617522735057453170003604202176448151947485161449493213136324622368282054229769507681250143798485285436796225438773345749650706143590962174683545453604002674243368343670012083195040117502587776372600347988474593948438833455866618363264385601894722828739054771522091173100704155736208054514515518945266530067359481129751923317506540372642700526137414396890522243130689957699883531227636439650529119382088934707469114438527113593709593822428403903827676469686480761180964334194866526750663275650559706313774940052154968360831607926840949061439187950102130971026626166621972259256169682129093799393020887481186685841212851738410489394764603603229302515116130349703635409516545234684865707645963986689538728475630960870350431127054236242163420211125234152785662618266358894521546657236129602887460521973085300442716901912340258753987370756146296365636702273414683351224857559886849130676308325101089820998980338187967079684491460554077187772893615697883124716853206906113829150585158039081142675761794700454260548987856561343445342292204651865961471034301917514351309443800920818759892525736890757263822227845535156142065324818381081280093785706886885848504628194326569832272301012155365791680486029499430894500510591386915233628110200969241631269301833273818106273257794179479743094258699862324192321863547579090587629828725251540336522387587616802791417751800302841863971832529066769239955373481216578229018151540710503130924346930293381050640273177440730670673738947554614325476404574523988144141365750539263566717413355981812016179940167810983564649909995955092296943022288794448880477061459385248275690324666500163401941448525816148644829220220060070693069815989344206925287810532005349399067989988855451311671966724160635728080753279277474649402731708219398111388510729180940056872980954987162021201106854801570780154976157270199475355489912680972637050244466085233518603326470654790877687033037884970646227937798394510898441161549668555320025545209585357574826885976468923812327506944590065177165982176499215913077847719031004718938668161647104158946206206443116646501972201040424258604190890998963805255909870166908858300521307704368508166871217750195757459967668558392177461774674288361295509253071220100259849196021923528250797712224023450597173751214016471591740759196643546768132084457952381348309553262635094631212088456878622746348411213405402863079279006783102677041503383696946184305470941507725321194186200550436330801211393159919528913878440243141680909064628791118351183758151548151714276626610258120823543804059288094153428420888462293439828809382478363423036105260061829576566609208892673955700259234764802262398888421061153243714654712502293135256270043384613939123137813064091659590438100538058276041217900646843439844230412377732874721551319161866461914577490031254488189937264162067025483001533627190501927155766567121520845037749622704483799400751628953890439133062505717481932493716859514585066974448384963023474615790123116254751596652104170115592166303514783397563971037659201852011448389888635676289890169193384804286256205718434059157949527943819001936462417392407274024858425734948144803851106136513301427463628414473457639769374372189304187084310953364308477389420552640742197090095199416016330754204602126353441302082006719131060658714769447752362546122161138221198387524516061519217537237300190395197640025237579403033553324053907422857465869638655471961895450946668756031897654353797760225619088146720165690350362921228863516164690795719701007542874299335839039729942010572971716046459584164858293842807348079531062095565350820252819597140529077780219773563052882597287023347279698519945951220468468677343957608289492937935865002880788782101613117640135709674741858639681417171955235171428740786197362230058469987954232597552514929733459531542984516723044619526926006620551823984019728053974583719043685355220954145684486712439393807091612347105852962000899509338444976824436541733394144084879377953010485783054046253850774671439109906322962230946451520999887577122949552016994304533922178670560640101104896789913276300873520853972649661030997317405181257542034863321983548831130586127530110430208873934258693686798841736262566197745130725885511090135143753445910401869704407198391199207602824320988621749566480765937875551663898321894728429376358185784066708798006655650327629271352292889655859664096752253012502649620483460016065296007962519028875723986089465124359000786682640358006056711441249542792351395749715577620109062997873295120857050685614387262797434223964705723556573491777059844817792436657606495475288209470553434087448494873629582252086509197476742351305898179932139848954317631823533231902774543378507511488888890535641240076821169261876421704228664729594432554702797749565348041009318868545928413690480822680034279695682715607128258074954932156350884432442038197882052090537447772911525170807879964227146440599951218013571749916882450831259789636903930354508125490234491246754428963500395088031315065407758070711350641383519644832243330583563567413098270680711964955805245058199760546873248206658706977581181509962717259739853518285353309090112345597313395544539266415076176420523887872460362215032081449583573670178657071740054858881525634852889361836580348768144466454683761890311638141594313358393017946034816457595718481349737445095381040477318865843287285746964847649490669921569684273564904562118936093745725887194124794371519043547149143973425048761876159521420549154599862105358033695856037294565016455759541316773991386598693850726668451267081345431406087569280248000874773239239365002957133170941014915350389504996846914998775864000997662953968187362682207793881898136488539532842710208702200077737007393444205256214967900311768815930440632973042659706727377905720434036807178532041675537171057020770494991441133773933319331190500257284224490379001532099489431297638493046047686543442382561560954000780961741188597487581621232744254472226001050994278789520125777041192957759257431864215807844886356825468714423907647015203769633391121356263927834553344816489088823793808225081834623770249269920357245265224300220486957129430868689821098939993483652493141421469925007486765785696463162771319091136754708759072221645080053300483288550972894184373123271006405462324492498643259669497307088092258998162561218916853854686542081163599439307823523122185688444722214045020488877947500500427156310810326365006601453851245847549994503095591132019482332004083909480235755316223111357590128102889060693835742695983803831985079290113892520473587354361585352071990189623779572989115077600636754349731001608777355054881480384413087831045879730644454726817620208562990446476126713241631292521512769330458643593972123062387082734390266156199646839034046200625427402477191592345995440510260198983318450286102825312758798691382870485268131821086691868586538285429672259923231355044400961980098452630745762426757493156385720166758563276657225512045821772628230256610812075870090118702720731968208700241313783363143339752212273903025397761903184550812525452686244409550441284632522462879543510669596333727062128562727442110803167803514466536964181627337865294367487982320224178598414342170411764587207829989293214200340543774490970350679676111996527603173035222015640957738145561578553360449451375516412183168639220616660490226418351527906877696811745930393359482792490975035373714855441298361495587603259183833860609295483292972701216928188861034603703631872696318370031219926074407886811479207278839768512906718135597065307097575045918837858411915527244946025798877625734529855862933897549721704541393373741076870107983726040523173603909053364419817363434423175175796686386491924488246259558636126608401346347186097500756207500788031321117160310888751549382218221729593545723102807627926055604589902359680535535413274383660076197775653853414029016401794954912703288301866215895732526656982327930127931672785137991578264010218825810922253914193019227724901275681778781494476912330759741972915457702998524657406858499306887277122652250319933310466918416867861164417784754898524649074175525221545152236011029230851029789467034168385220093560113816442596016286017442415136703928445861158800410122826550610764391704465665445744399582761513404633501351209632718588081671467109379872012477424179172932159539257652173659041931284080898057453915203879313346943959060766586641449161722333018406766094803552801235895618024657478549132664140121056607980617353995973137349418390868117354415208108879701758564530334998489172906381393338555942255321035357666774078350695672154326894218049282434981751525712687874539068351412494388886948792214925770216281031872277022446540188952690257838809109447857324032877070412797425607752342749318451998551530362914828945982700435336912194800673418699351114660879566839996177538596581698721564594519133242382128657830870785774368059457277648405227956464749463532633641343614762205458653845094544584159679588854606659421615664365898624213411071915393762710655053354560282678920920471500106043099169987609888077106520074931115424129702090248322222861964315489511323946545387396316926017894621283582970421479007083480150324336642066516975511850335984272846802475231849618667131907057362173435320104146449900027259805606723479055716298811524095660747926256096241795031481002896565406351219426420437831755058247884622361238376112803366252035293704658462221491204403531778005779685650009903989502539060702720169899799441087560502348444685091930869567015516570358610730305737951540752793529637233509107062749478831790144700453243478193474309586291684121447082061063363000226503479142120359305417729527396341199109060165722818364937733322100417112158590322221565320300364746753976931801356203137899671263680219258956995654089653228447390523613072363737218699763089753768815669484254660677793049563612765731500868325847116169012405287116257376869176979923680370877945657781572053896418601114125195586326589309267453536819538313971775386332265719278595465292397866179930918494697549419354653651677235559936923624716069701898645125471391471564420983012629832690224243529491623201130169291405334428053125770814835489021755033976457446644783851735276273764404444448147906250625220480871208610003258806492585799363975572765343017339917727353646348507443961142644578244833474591382120967072620548294995887245203968559950317716451678675640956565742755069764943037015509660447008549981026755772818162208865032343723683974062133100720008702896085167851885303351920873491915347368588244669421365791588376735613866483406410730649044616828351104081070786258286390785917285352430398125543034989172619980624694531732993143035690021167615704970238662048537615634501689810812294108109281220118953405245077468474782170044149375413525460110508483406943163675891416529428101462361331860981208306467426851454148082488829717174303233569606820713796484220383257855013665732550206604225512340515980205810960971550038167939140810335544530750034387204176313923845397314792491460406992547021732276429369594734853873105007926351024321819808241061832323998926865090393174318829135560761556814436364618156501390434669909458626325385493832849197576408371547122010360320514300539789750631057673554032699069160826772349978795808330637819783861443382543748037811463778564684706966501994795260696956175072725052259151264772799194479315578881175567986400144922485773153744348738152181227762224759309247973640718342790008224861730148110159715666679468917236037331976187786981798459279060432120527888708098552557148356452950638233302866622509363664375375038198038110343256133217773464574773492017777464882505377757204514680517678642682606906853441115764962971283857348778729184341852930445112920061485999404210072107992719836374322797382969193695670684890510390604415069152797195213411605503029277326837595647388656963855912692095086406117037805875613997208114100607105489674351070088206889730259813515831272861780933550239309821044784994340755395807010144227007689367584531243308815902288382439104717753184965132282051062817072666265221021548805760200927901131612015889409122899582713761225499449558857734477025628882453592875883827630106724280695933322052741356367265550698331855607812758684114526637872316894299993033767517387571620833060307873134051337827383127558474862398203255817335370749847497091800872817891860282652643940222473204769359027819601158113374975042988777967049381172615333638104036776874341339970642008028720336945877739502489800746938558304052628789813691979579278685656866368148730280728884885262109153722794956172218870070281882736493904376033068338925665833676074305651617478480354874445426994759763441414737273800025720984838562217461663985757863161511281497574876085232350770754485761340250608351015596414575304931488786200224887515779312427159446653789633740128934485078324831964711902708418687951211284565718339193548773832490356533262941217846188627209325865698591175852297967151133140130657202742787991587904723123640645105457464882176483898524064693615905982203054257729653601570445051928603151328251719640544032291855606636639717597706643028951243874291346566603853268181900083822436280661417252364071039185778050192357194922519255295027582655992220125504380592976123919239074561185013700986347793169691434372485560895041995305982167010691185244256724605160869237136181572483670428624195769203423342997686115621492469268715817293633466194996861001908044186964563947807134040343498492601091838060401032693435635788507239884673371198505253521296760890158289388044591483684359364277437702549880775511371906063459836847814427173268177029988333292479361843861828806005581994561158460224533226469742949768670551866682684272175718729910202577678926698101196821507710500027426208042866793509892952860773500428169672226021790421565933266163264695985981824439206115289272491397280167127338752016381973326277075417769058055431438936963466666832556245998490615879859458053269653309804006903516194918235706032778956310156585730159170540015042070696082782809452873572358139610937955484772356677910337103632277496495740561399281264395891259460631376143979984369847626994682013096974525384330742205135344433191911852296202176972645534968453914596002920006772858639281350907350737594871964689503787558473101078039667383784329948826331176761964868079482828563282039963194910131643953901131807248016837188321952744583768872055726563308462542766252648683948002220004231849027731514411675952731130916248793035051261351770945194065597618708226009800433453677383728059570580567593934159155387607095629685681627235862369150365275563450016790183744410233794721455132854221241048782089776571298332691859320153428354159325915044136312758617492885180182633174185121087639655483806782543913315655194474666121557181138729520921764906005290611304388540513588457736756800626523964587026670796519119375957551539789266646748243746753120896654894975400502276625792774342125563315767346084215899501161529556623667449387358369185050607106755125693420151859951549423463703623570044431236673712149029084192490087122785710678931049975772395255514104453216485827207372994883523842062437035362894659178275786044624593032549115076510044300064245389453818160388681050863093877487157782165672189226927078712998336761057259731490734458018869149458676666618313934308052070557452544182462820473035914083765207898372664826122983408394739607220082013448957715947280056679874945919655851945949094613079143592713016742727251500714089691521587061325030401562572193010401336915993838994391004574950341309037264447777511253340866982548723865585744404361957825361822339464813134827266998741973626598485419368948191190424476130485571903196604570098117363297051619644634201551825659937942541943173511803934285343634887982756427040745767500501309114478836254586637013258650475746768227461024554908939298752546941708141836958259641203536927508591720061098062254230030950330560662890820709134219225564846041170581540166376024615276853383496712863720452113357362582413447105215433517947875650729955464040504063929216355991929580971129178550771703329162490952320875216231624886826753474455948746877517237306986676025991637287000173108492035005441102661536683662639728067141677442701996835087279063517231975486282441011386809480566063880147586357752086011346501173084031892089677078116408709079485903045641071230801505685364704272384554934375396644095716181508585982757491333137548715417011054499049853755567000059261222861162088255917888433453238326769202765762964859416642013427351769752740526593539811103961144757520932421163270928396766090909458640310674120739064957546148216885718240129675132308349659107272121496641919718354711471922127170875795714772422344832067913469848987228894927888110623310178933516341957239332281808694432619140102302116212032485127181406183265015799701843520383487618222149242391859022785874994161088282787839628520228325256823006043935572732061433979615277746763001593193659117307597669582225370244243530217520160042430217843987597324302872484955959855871479495329929900574396603210273008073669671056295181579018647226885457009662338672842380239581011447963067015052122986108027553371253795639310075583257607903784865145871944320538133214936932417305477277384635068795819934095913215372891661198576314082363770788800214454858795579275974658016111300113955134371332605527916748878763363129059771869340786199943074664739818497748265146253569741356868942660955099486668477246100107858174538030087882686543768726047042761132364604027803016457931970313583282106204500394521039594279459526243159704926344138786199323332455691423445948534397445629219370266804032259800190989005524793392610402426135699244274546278624400531258965337938367723872314405370108386411794240184115750379676937603929959606688028776515487058660356700441129993374291959279756892418526591694343560283196697623034104286144306019422551921021913736991063743454957029939519864342113886652501391932897156539945491037642950991371149651233740398443268487885989254362777273485627718549763846865414186503926267338504596663229524027970015882730219989348726263090573979580252953892048994480451813157944770535580309701587681659823701527770911598011343025056653932706096273544927066713144530873819652341137290315731662839761180278288749106493252953178571249359190201968963787150548925198060646905052647546598837144284841431149195049712558309776493510862446823359318565686991351354534872708784554361129513059489360508051009393491352055269897305538094399369852586985336356496799608256848730366817453662702191745105984280631144221512407821466774026169024294038269367300846731125020906419608854810658276226660389216577280823099647083194268661549807603709871296436609790510819831640062290946824356532560419708671528354725120562940918515366480347190989856930432003610157328188264458856970528282900028010778116870440327823419191522213998514817960827861243793082693689017058812663386579699578165342425191559509416950378584335772219503851802880642053073123953981313383851572010280135477112087541303497969497419477670117020693702503544371581585716603735996830300398820664734691416262157896208797157561015947679797713932786762666504443345361595411324455294279541908705539667557430198749526043927875089885166371392502407519985418742982169909312688743859954984209332172127100988680492518647099210360712098247400939742607502062972922803026707520773626379054672190882740938271933293148876499058429349018487577436769944243339766925010277253853387495175196548588786395354150333865370347817798904900166741994440452936552586789833598251045420056110865349285411646661789526814783561517527617592353776773706242361484595191159923530242335191670734862434051011830527015114913075657947036055671997502454789674375106271772611472627982742230435152767679742138605010218062451883696928317660150957051289931810159451042533379071029482574835465320349845521628122066118569344214126614074490881843023737601044912180667119986011296667389316278854390184962163900285981036428878597940640969229354013847295006233449546580260968216123332578782714818748276733389234594428396074019175791731618518049340106394093060083750328282602650283555252919086699763638546373980823977762227311902077757541899455538403977770711844305714231781538514330622021188974200078695620089760767970967493496064914384517973754738090389964087030486603417952355922178681016444628559239890300928255825167350475466115062550584272845126663783839341235685979849254779450921311897948124899512038633386548679087875808878404129081472033136684446015116280264204020106576017939474171260593651473752792326666510910495465527862193019680017102891779037637318204450134672453915239649447997325774504223154041366372603765355119536894709509492799804947073344022747296579734693941468206771546067421639854155675548872707793962016797760227933929056450739403824782756565641906944328296978787801694261457338786731039696245494906526421443429879447992847906066648354748678447626069915468247067810208920351764270473068494850504741264852179855524257876432265787821637697879772760390543110445434475516292904658654229972622896533382913824311319298769645257845760922376225493294161894433016609413673463477016282926566954603115910798180114751761103813008750831426427520599720172951553052967372726352063562061703843268478106273078830549074756692100464963068495618737462924021043111492163988862677165674123689683794833007787137121941191206862055154352596343226675536000312405059388769161659770219978593359439848092830625512737679372118180133778773232732964719969888772927427569797089726106130414296131695599072613013488502482385076266175470558214891464989219939792041877104239499861723521714370137917296369518907106103089832590596507983924880569018301232959552119256337168966802126340531361174481866461727590707223268420924116110760271343345858095334462903154924959136495579198357801095653443815800774457332764836220975081791802302155272954713679796645490526541363416115300010328991805494198067558006143876014604092577244415866846283979496979523759354050793001007666059117765785887943809617803291576023594711092970236524994978649730645534551230479138978920953774092921868823091497454166557894421272140892124596367929128786776659485314626643466955992222496392351042813697140709136017988469641940410929214647050202116467904787137363854568690876733057271671537033355706807841741508237373928160654058092374409526412912590213348694406504715525652430597460084005729375555120224807531755378184630370259919889407121878963619193518633402574811221396618077589498077762595854959982086876216077370330136563754731940569688625375111882719759560841270009316383620313828018216038260265046001285577870872398320491112211334913905192721787509206806162791739356755472002749831632368068403466582210541091266132836640016985165816682899422663510270894414655282934246716186013603938289907407510897812291472534970958743489781112314549725244529921877809761079101884483870963953912093487114124571582735225716230260892245489667271011404621926159926385487022740518108108044624522027434395055720714469609078248138878160484525337929513251038644860845420793482019961588571434160717049899021291432114709575188247812054040054258687798175961398633133605357492063854536568074692613146577346201106835727296428695778430953521024583544982777064816108653831046558869384716947879399742984144750295658673250749792717199080189681903476522461463567445498606364998885670410373395551320647257337873307969839960558522687155214567807973298746641905670210866466785195355967363579563715667701750474419322886076252902725988265949983451951016643315337619773584535204290084063629943394016224618727056014626125449384409146662425886350716269068149439597700066301587924065205444529047666824536253229915846580537213843372444077279473390215937240068693277160677096596244850440600753055350313537870045721521229542046754313182616287057055835993894423910617061628801490942186768703937473015960660692860933212458091238407462956662056763013295149416370546003590581394379943890925897039676372524475755740451026294656494810131225077260353448675180806344592642378738296230067671264805131671849811829656198098268911695499531271755815860300087345132792891075916192946124069154718892831476261779541300138358766528486980749577953061632704407220651546081524003569443767314985332219726312292004390088817599960737646235656553350559837824952269100489997023531962625061364259384415235184269220785753933073183949821168650900385654317855662759632050414413998195484621713240429587531406374994073255555179996555849315626194769714109451793911682648449256641411299218089054503050663688817544531669126194871881223347399730321292619287828308581153641318501666295975338232420263516776585471278551394250841595911974506044103438027562530051582305714446404842799849570061602744538191682085465978137306337329731863748520248418613998091697896940674962897010157081195033358966615170946449905795129761008816365962369003050666152587698203220068630696402365957575666927404571619696015123259325851933222213664241288143338631838583260105858467352306222837581632529016606520964934112379052742323542221982990482985593003665786277519887035389821617911559548854211775325095837345063031530572453329975938330477432608374574008027322939840397791839683897307499283449880887202085349816644593601377524187830818666694935472731695184850084453018061949260008078250800532102660502168004264762295570448420376047909466964235775689213085789747769082598251955821216374682361755793114300555518663345619255810400849506447464519489425415709512727027151605426999364553590106779000400089763007218127174652879730316708833412607308435986798338437680475940442779030669084086254172151374632562498780300612107062453160089797600860738137182183158748100010862991779908786476010969198372246843015572376292454683794709714113470932434669875104106674336663780448918488470177116873663026619181980157567009433584704558421561803057825931503658804627473312987267171805503197826801770696930151598471528455498508876091863987685234174956985918572635719808269397816355190266615943214732382406729704571301125728562035099615942470241868327036941458672651998737951761851960656608416792147523755615468280290697856796882684275734165146272727904429215811627054545933527762986819075464694725777967653809845073393970373314508320470686597591023661617594585733259312243036034362133509854526372757981550610496579396682767874536040709623722886907995019073778569341715612171827903051111419395456976002898946311871740320241065874603301000241510551374360366096683305599418758079113943234729915349316290814735501374612778835434388796484721970795473334461159187867620219236488106328112339706432866180388581232598439152204849421635333304326597942333175467431813147669847409112621688831940717939970078545942860230560019343626641744403414925202456851225653001259230623544774342387116677361646964287796030843324313816630232779482419227042071304877333368330787604171465584697286187457535339876952344358638987637917838073737548431646930811558602390042566707407210409202119279410853096933244681501490401048598390935056845337696507530155116005023771210068232608413870683946004749090568456384869774531460322580151955938143584750352508026746147585512307655347701418243698063102652737454359667454906704622410597735096653800017597608240843223831492882315454308386384226659980163429596021833075080341197855569356652089043979298150196153592128735845514814350043619422200505427832704332428335502505533904849041130850419644752833047508454203010383027110628979703542687679870374263850306403673771552331411264585350111416217238699111842986495840732707676156021690132263602564426741408046597892984809287133488751930607229397533836681386217560030189369924689223285425221543121527344353035709503652479943100935389690443339991186762818201693895115781520196354196213813640618738562158653311429600768653814247104659484028304545458099463254820678738432083380044214218850692767330257096442610805500552480040567318329302446790142968565604958113174090401759622771901464874751260630528980492636407117079335129055661499355035292295801745948387146390150209377324294261513374371393091827225965991183172116168190897454892808767814533620088931132928123770425202399068985269994809647283244951416755170552691937008355563960145368845360037217201636570341322184833719523580335081016447254333561206207351020382810440389268245460800285893942158381948239080594703483797529609214420100489634640317417085534119514421824070773577952829766339393577908727376116431801432700413503279718190323601072264656196354710430690492676750373331874412242835821750011030334231132652177813997641219451727334730055654306290722267164335203544484494925472346152720790935453487264605802303265053384197926725822401616588092693753900552474281407352889016617150049482260316319884704233187380209466054934555067940823095174179688819727588693215245071607653315337964729681070916586640218293999780427339357985508818558139675600126977903424879144661922491436814780207373465588400716649919496235241515106292608309720818915125825652388143896429707188390389384635895514531711252334993262067886609180682884424091837992724154122569513127947296541990295186639357877270510892316360373240332145313830702764472204098756041967695559333296047781079714044074333813366962654738079299629141029100091846996927427434424647657930352112766849761810657828575742873636388228707521567611767816479248913465693219698792704381171133692485735670377298074904994453661859831053890245955543888123952357340948745029342314053394017110017722398310418260388519625713882672996078960600942757128804892343485336905876762887426077696052207685384474338354732816776166176170672966577969217883520956251820322287970617637336087266883103151974099091842617718889545852190841115278556960375224857816778690529678587245887729722551976407321080856648947319298981091080142926070194810026422771872239773444012042828557014777539314244064680247052846834502650661167630394243427045166756913418176631686857850463408231693882356381997864836516293499492410099879456428680524724275944438297478103995375018168113206145432694060961396454078769466422729998657293897381956902477575848644457497776176413478700204857190518390962605746140628520287095267876677903658466714383208781593692361480289675840344069314729480607004155683612775931045490325548824115454570517804549183268245834739259124396996698161877931887216818252596650645647569691174233897126934927580035462576766108682887517299209687426953438962395257279538967245191878409152077421843182627826010189011102796523416883687372922172013905577808435056341723385241924393923945458006740798850914023220530806998954025114667380861818102192306101701489161365583532826786267448069202013164174003826774838856408516889774953179497274444493744581351506327350082625844514966892527176083670556587031718334180216330058633200396122838443026071894535575377412165996447003935828209797791470948509551376734068509477204184379223565209132704721334569450569915280270823565700964383890965331497961004081985850654918894347926289924489887335329717642655167073657526518919616125427434910839120030502163544699764608846964879013648183348205703337824678297374624491353949065161935986940364384806088652927189124103546927879143418508125302495658814260427603981402020771140510052034710349493174268933407211528162831665643858085509382795042747494190066793283204583532580960482936576893531296201813337119529102459963505757199152617946908954590469141378380849438339463225882447524519595483457839721588131603872152944313284083350452984367021214594939433672523862675610128680536774799609953661899216711720022576862257654053575662729456253638965870638946467595596845103091103533139259060463001791643084040899354792281960577305342821053310721185812231796817801836677967414670372332345219751256651576875472621677843280491612563470143765842993515487114686761241888351817154876659917307110102648987551355924512329157646587498332059838013449131192203461753387471880695981074315617262462930735461328137341047587259349785135670409049990859762815712439314169369679906455353847432121810162888438840417862284313400004607024769950581000699482492945254978210484761193743569770881250154963274816517261636105135670634298103250774380856779378517050980134451146174959139041087927867116469453050072660524602694355803248247273488796418436211244638396341642128317791550537717959728241298492447725284365440074303944205508013990383592506704511269210328719117102700561584405299193735895396021434936140920010965451376122530502179020070816333586069033626983752637302150087578356891023650809185985744227233821499820695428892158688114117623415660563099222268632787257674407464027697634078837544782248000355328715060941557806114797211607833839458465431941613903154005688353895450803796341541244886760371188949345195622850231758996750106034150012985521705172323805642356566463924207274822860829846396152650232458458818905489373369845028103057685261448096332986584884056882133135696696923701664285068495973770258767176792232296335779351625096631530612860594199406695647403927622733824732294093037690871323328053531125778994580016683803545134966591293643657217269272457219517123033952159043467084779426496355116984964718623826954011230915481452938272175240058509773573184666384290667461677775744519600082824763547308156257494107952254346029217172356358613252273171630374260596958877474306842444420279856478185777559913498465727761633930562332596985294053082182339399514084184355580112202898984015071926007328184037874475016466319541625457769240352686528186530370631358941301933766057645705214742256316469211607912348975370992681712123007299744680010600058730410864130431111732524006137888340160429175487083602103118922472329336492872727552029332622763206933791943561960043060617945869590669046363955174508758489791585101223260578759695192481939102596212799081812985492041588156221087158727455501710030944360176493836359561281173522719781556915386965981066357655897012525052568930326076613212119200468465773486595283293820545444522551753979089975936131061310459744285970482892142875075635392320798077523882421947634327248648835288483266366399147045401683148667101708678471466834506107031888308716559082719462044623000076171828978163793025540096807906223912405897238156241052962277425568125832976377912739516816308876654607141083788578458284470881428402998672588192001721632113131678824796959526529251007298375122585682185140272828435862129478808571427179646519169644783156994021033431012343129004558692484020672592739044687272575416916623382573383235096101241815699352689934736189742610494197190816193506493044190829920229445919928109366783664853671365918199688066030340929732818018637944600511382406745817312506374465053598022179625452611510065853744569500556561492924269239522818276592708247854373351979958779810874681358497834145017247999717440368726424929980070264271058831653434910507109283122724499623101852922692221793186889866285751397747299736671043845251334255350392252073563161851004045489502631334282515024589371247195814781600855698906818941330916362876751189656659323801361629243967668146862540127518695463077442078575415466712197614511951663256223347223814066152552311848772599985495040618297345933257749803212107228511202498306200884190304668812462693003369901169474363386960283086124056712545899044917463441831030178777219304959793713930416974387597577001228743071111356300850057725534733641890059479793972892557440325556445144857112063223373023577927935258022075170033173971647116201521993037978473076379839956237259958341466287658606248177718555719394954089734262371318386022710164047073554385346519636970132718913767589687889973797469736530499638414031446196026423736600157071102664643533799089317280773857016854196887702079923493548563177381271092488192962725437441286041192944318846257216164377138738977728861716247025899638227634887856931061094976529935747837999802380967008258180100816168864993862617569879993684122669580987902950210706173523179819797373518909465354022580616605674346230880243088379794783501832349194539789568046150006172973308753438492014090163617587300869131560213375633586963799690494439278360491323098582607611302812300287648719513355380768381839441619554008771752355348835104685654750928771355582484389885343054519621086746355535903153940549740533302504626022894966821672618959142671762417329705973691953129432758588829295801839378360982116646711668094862030400978578619437176975466598516179917834328676268948709876562967049860668574126076088353260420865526617706518393944419820257053800617513987143900148733120411622239338330985601334657210981213084843316214808553507112003313407124864326196688612384869546522767641405341930860986022386553572310811601643578999408396403663297175407791562893116371172969711169431832453887833416017883626686106865111203563973308910651880424411432269017907810421222039073383312654021638274684669538185438253878348873976609132406152672534285150537559314510612068246425383976495190753384464538674221700444599182743467298907663605684957631487684396165392868375936534080507941605242414229711022985527624128776956385365630168239839456307821712536847037165015509173444866742309847308974612235169429076333708463949528534564387081950023438241297316259342980636988310236164917225240548655068081395733844187626052502862123039101421363288099693248354608045288469051474298314089425293724451132454349660439426704767529792546367416312586030515210505223628115432352625799319583426038208619292345070710571973197390687025469761222384909143531540639298510643031141692473444340873909165190698176912012961147789618609212974687433606650964759495099175614158531178277474583315499278439893723852530034267238007587705505802450874077572115715660529261463123675387713001709757615029932586970409597018927350963402272893927698457414947222157640292814111480566295555741661851114953474640395060496784045307147240830198176610805734151896963648233942554892569458064537162222044543131063246449235749478355260347767591439552767566151999138478970870894782295645844421356385652134725916507343276997312702258765204151788394575698185010572210499307745662464992466735776837269028917769154293399245439463341554911462363846809227968460342187813518975464836769006420385877328103525234568439828065880401022388119709305135133284389993867232506399414613075601569273439718789476374388401337813373275025567420666043163090201317326540689208625004018980013857712009772567798770149351667380429429274905943986088802971067243364250082150894775775874101082621190353975714629199647726389499879372677995456610109281124849679257390382154803012680144938028087696455418731429277385893937064317550220237582370532161122773061918608814921761859709902242383797578860952511723793757752514409222792487346303588170279934941318013532624752441281827117257670600573076620598504965531632093352720299396829750545374899710419256786127623727560026687045970015411002601912815299255061124086387878132446173321591799675163487615782595079624835275426749447426282307681701077619629193649239763328134284918811371640941988934753043637161584278183844217748032072475248732820255100489084330973384595633171123135215158092044623964596108758580902791295141575602046582099338192669269710188206035260148176334503648753365174593161532012677620981147190846854558849771974431999237148448557304106225202716583366587976459501139319458267356917430763839286067338775724269585608350916882618450338365999574021055484431760247866604626580922137936923951584506771409944437211369744229193765630067504943065966445576501931631244724589827857664165117537516364489174333319615769509261615880536061207945227747925578213514817642311639257580282905163935443908901247389432862423487382422315790351726591747326302518910918238646849476764051858243951928554545771941088239257603704937511437351612927545715057410678258417876468732145858675131965445941864076920833723079382707646178347373645195920877343525008602416053263698786403381579766995964073199848198089870049796859342389862037572636787096435235613429184071183048558631864590698674548440102359175815025428826736774596657820053395007654320403124645099534409219117899905195016350623020312392079141284234599690818543300332789776209871147766667198737945016752266346884772772249247404981445606240596143125615864732118479900175863610639747210266936298650874922887489357037611675755462284095366901131998684820290181750024368218333327186353092412100459261325745607763229758645764109368957610956942877836038345437208212805493236979003955747018413964039710809489414309312844208746881178705718109550168889804586628736441362678217341018187253195702982191495028952721418217576364098956313269363884182550663965991544426047369659491049767071670748640106980638264702894829236638037474424416244578660683396060676797860452462727366237824643468710424413857833163938964157322327903556759755378207768861175618104944386695298166427506311441337330810960808897673080022225816942493067373072984361874325916959902302767712131712962737765271939245750973385553719724969639753033329589127828792751085320482310359546244368910627356622663030526822633542991480483511261422891956244914426373168449357381182386897473241426969252897880250321930868062202020366439704165154732815181020792501273165772196225926184626563526405409940520390102618820404370074857479028248745758410855406911932198682879497393379900190555718656834182736388930019083242386239042689199156103692896198895459679519727156563044251997647161936169580740408609115648963722836196354675841577622017440219157506092194023137617523993476221150740827577698106335860993345056516329955639784427845814188163617201943629086903340725722278915970703286399796186830563471655890781679367217237725074061158916327221788647101345391428247382037667208038939228911037252431602533005872220901293587120657823124571991943284678477245306610613304241288926304003924204470909336137080429794646976422165446894582261865745920686885200818165124781301466392764573921039632439791930480663710886776303830023307713940524467983327152403554112158477947126560894967378128013343226553322903350370545020046656525035293837181338083622517226568160018274162044326890192312992465583041271534420695380183623275418405993775667289939577369503761128849332855742891930590011444300656180273582671245918373022420369837036170099880623286321894170326788584278694330942073574028466250456263980085374782437583460673224374057801027980179674654820049339448673844161648552594881385024107543727745757942161027454910834385959072689677204208428637233613055012154759389137421245177156482188084729879712517993918340742164548937467652006146363123887291830625677402548291860804931924832452392782561226340878663477707109508996628114496953784608521431587521919608442383436947636407043055032805272097189943231435188782189149116011699042911591727141544989478263891642167035796726271400882629807403641226247857349882190835494819444912151434539143422233941243140470403535713790707079674372958625327375007988760502264358860814549926263011946425213625224876160760663257770267546278608453636665325812775500913023837100412328256718569070052761169901799690013901694078794650816509405809051810191329426226283366806907447371286320575344978941618758921169726857626099756719798237445136293154529716070420117461036404044987734436176609063426223228162900014245692209918634329154640075066913801187399797742939961026158076336177302909224103157506099067578574319950073738601853685079118544767677838457473478805635329774669947041668777879568212979865315931054644595278715035929775749080663258330249634459203878222896618365721382171208810914300088422357575197678074283827466274656692404488595301933981693373447023790472713772863479669807726075217482637157790840054480149672373535253349448940811381230453535756480732621072467280204299846051785819935244315211302705703196816298664392480521901606286288556072887970109202052927417407588384154933497072002192127561606294898644733912165416680798982558958406263234501643809788237135374296946014781846769382364285066850151516067256213017887639822087109066301709829457375024591717463830534011847822184330804335110903778600610609516326066830818173220431702276223871646456936197659217007472854024624420024193302974183652900191617523731705401019428602337452636726706803862989551009957636778478676421241044949472060438210868753055440457232747028441280850697530227159367422527274622905690305535214412004079665792463183160718358173620694677434427486227950987495789749448881161841369751726825444670806361084876187470654972462240923066008764037068667756167563811727856358984493852531632605868137516762865703192346026755276340608963115452514924077353497649084366280043500451340845538569993398892033591304615104303567960098255527510449425656568571007582409849930136180345932481524054638642925688336763211479803455877978327271945844710356352281327798470077513181267997216062053842473859870248659508512583366973512637425617196637751597907039743105985892695917386853796102996207484373795351902905338641844500158405992427081657242381247910297195111755353552257040921915175027127054458424020490624835522142535739836839187229123545016810390555598724927999684849832850723754899755438815395199092853457868963473338934473476843511602835682278912345523071006070975082936326949337877371290455989685108841742846900644780922113892427574570223590474892136398625956282709173755419430546710207958378621404545492424236616311644044224217233998204722030451470665548628265538296073818621911026255161564578747113620258231462504939491960094520546414142098424857402784186235669148226104647813111548739125349650702997027193831444018369447050191467225282142056463665250769933914938112286841950884623110532272956494373847716042909368009174490486224911164083004246797338572693873057593262869745324156434505309694329418234994043390113096232451589025237015224828591046557990427054512046265773163998104803279421939648273067436583619639954385426856948635400934652347677354952708661464138586133598044900502862555700804478544183286002780810057612082789417182968816768425211803614399316832859923135503316874060455062278058882677077847532831696588770512943309968016433571790638756235223313184839379338501165123167551577829362189338103995702240249565221954255491459590139143465491363946315864388561186683498322669839611750827435196531153729517968102144736409153081768405241110092307807016482010068637531590215634608627000206570654575979905210369070464993731287453161934891099781428349669223681931493421190278239339277256766715330514183861399928858157927344688686539366661055957660616907373936540414916613924903854252247943086785055374680455526968456914160086197539511028579187388479374299377391139865971986270201998887940186810679388990380588497455879603019808023343759673760036440099827976850919633708031797570432416420157572914673866564497575326709395170669359201250452015770998337407058513004428464100870568559316077876539471086558465888656071154723694199668590909171081312124713966561308308307621024919076575209120773641714948344877632336055235553800764219270321017473068928889661290438349352427761247856712832992957429401949783629543855181772147898809561175192527589702374051398266428869802490980296092689647566948137059268223071681462013463497279068209807418655626934985440667004310617318613525667096746217374311045650582797981508300199673501708607729649518131459545599131039714366619786046194509885589760531916248551394729962208006974851035844196089693602493090075947996210744511861921912069226817007756869667575141362067890312490752253506577654351096984768595109456347226844237073064967594133137263485906383299715971556622069766478777316420299607291575206979750937969682665030881149426206903295120045483681906896756350965664333189549183429666353552750197797489132957152143030190302805715050716197995582641160080014232265196278017923629061439867061249333620751241186695303244601539259088218334622626633109611475491416107236038095810233437222626314963813688244874120729238836866166810563131411971145563019457110929209344770295685344849362575773979970376926892144553786962214298932696663565013840458807537734027828432033397793341669982572079114201647688887259639710653079051699095367146429601387400180277466656900355104617487623487383026367138228260875502358736243743579173920573265223302200892828152174767218717349941650033760073726841431431144219663211747497492527179610485706891000824719650037889302439405263125895628918251668943032678814488378937830028880341555789535705672585265985417018810475624690008688364113745498133752946524917940398442865858320386665352942739956016916682594861238187286119704229042154204540997356794637161342775362743457709010580293176490569339512049710923095561016515763473143753539348816579989446078437262726708501990340623762254871453411269103512099488690092993735275215755417067134720514074046205776142008767835546263309936210403861680950637818437304472604182427201895939241520510345002585252587765150945527835998610027184202759073182995041433814430440313676282127665777480597290842486166841975448348410041008634458008469364398155244867847246457090618514324568234060903403045355454522248547432587427407038213101711562302833459795379490190209630296437442981621425419044340058026213283694525779712548018112492405855978655984395354234233641545000738301242439465273753923775234084206549795035082535973516546697047951126856107732118035164153772399674629211617253689091088062727020361954756823047453221960872664789197396774025397992544552396070951745001061455100463125546454334384431968517979126138757325619626326598356661829944906680869937512195174230586795824381372457080158748753826759489618248829734293394701358689043566489242380634276717198058826489929470317590219570417266508750236755452658953616135242593655853424008225694359220686974322895134394829609644616948698433009132715351995254312565073100526614940815585927668756962661984289206004671315797428396356721706911912062036532206819972665254856867537553682590058738808488919882550729192369924808855883562679794549894138696046108895047322608247413265869893080914768468954075763725183935974605210776483360415679100895945980586002592871602488526511496609022308325023092358677072409105503810752933638599974477171777696551046780617438695865922925791470368971926486608466362896871891637039210376251594698078386791152640662951537402582818531276190422559925542096603848501197543241771789422406192262297942517888044421941817181885718360875762302351208063439230683889221625058322486022205015017340941507800437796559372624533909966473138820704501597622406963063068039213107696571249406017843903033832901381670240746205590874405631855167688834088253623085124289466359887688266076496436720088353487048215824810799078670523497136692108331789665810184219136486519348841705500233018086502172336925644776406659504626093432598564612738441306445019808102791365650656633334481698201118432621309435162030485389580935322999943605528463289902879532281556497931188387385560390763668412008802377833955878709424233588777027246337244250988628565604813914435736841896177406916826300043622218613572113358007272661197063570847010026972213504577600172146135514029798376494535166333167838559729776901568518781515172769893311201583670863071062304368028646741864989425420124587143938598983028138082183193446913977703721837543254812484851092135293054187382651621243231023812386330957000431190723823289782710264271991138612124169593781133523369050270890706057255207480279896876242521871218352515340198857932146412718416232453697792410327669151254876901934273943113486982971486120418700418165439617514688817286861649418042627369364774147965459259488666104595253207675163642224554915071102179052134723115025798936687200690547040286192555428950304685513324655461192552788142074786456423813598014335196617636456853637499236789720898740501314522559150739232530180098836277635619771203959297504649502696634312417606324090609511538186626716169386891127545327671938332406489113545670326473529126406778360914354404395357895080909468947980205395486122086742553122969731520274760482127043148325438379522719998245358835290545648252564783132432740299316179323247995031538152416963305103460185801538348238840028134553842572378959029791034147232730751785731906382644310020147929276244791734484503793565138519011705852217674427669938953205382084007761776622291014826510212597649092930765841955319945988983460986135732518288286641732689927875539064118965498388257345957869189923443522230432209023243528859847204557038180426621099086656334749873136383214017830626152948162314447632770947923938316002846904581464968028114461913619641878402879772928820388849968334049954189734197092659282953010854694841408769395452381646514000474964759454806236908111390380985944462077461811409829841184846538478266830040732829786099042572929179981658109649499445362645368653237877602168311128440581635579436543284304685228698087337224587541480994242391249883724841961048396094336161696271601342751530805467002098069470466930402979758225994756855058812929963439713176399110415870458866474658343394767648381808115437316538020080042045603302069125679045731775057065137620913898762004121936900016539044910082110001349366593872378384619771931928866495887715105513401899207688844226754293452449886325173043218074752312614438013311743055232141450868703951229359963519912783620115102729164225753342140938331098050491256024559029632409467752728728547381356911424955396648304506527694230032762943830515774846312178217067463855843652253658232908612802376989067064291971925495945850929858301222481423347706970687508429240796461436234280955627829690946269909081824833622747629832981594164263261061562278005540350704757106515697577833475178521768963460495331894385997374253042551193521096869908534989170337747149801999210151918888806183450217608203584503762371656802584746721504950240997134617570598455788997904700856198327108619773363387129994997880005875619214582509118460753986924694458412036907966619523036527574732418923382896531283563754074350081715362713159245665650582548727309080814616332226907284968772949807630361837426889101551717962118450821053983373323951390906011270428448190859860506845660698507639465704629049797138193989708304912225803639494498248661156858212945314492862178313656996705444430860084239324997643900323105891299971770117608663827946799480706327367556159279775924240095841825705323436168587264030899202448268139652155223073525444405913293922348969388102128501269887044551046612258924262571752765175671300978478309778398768032233746047803787248171585543949327224461598854808449105488692233591795857732924182058597577708852521308533434256042981148702202614351321618316948336690236649988279834635066512241386779264691045406637658450110351245727651604733453476137196911396575990081547531676629951922347830945392322264239226881450012669036838789446998479268859541967121336246377949095366013538939910375278558150331038429186952741020569940409839624364251100138470930207890304619244348589729888998981573185804420668456403533312932973823042965924472902277778535769767117563067472614287649872529060781807710366310796909620354247082346842990821537048334230717810279837574302931531468519791950086218334480734136019506446551343308801406707120253892057478173122826078754400377663638391215428054012478879664951877381735674992249958611603743648340596428467145668748721573707142561869709632909904699763113487526452038717131361251944033477614252341463978777919482672865800511150505388959491953253529824638914822144510066541615346215453117992924648663506154082505926009980079188812102570097561414450282855625330669342054856501492926148683668159483164893823336633723761094665704613789911288080191482678790773074145096856353191432681159838972894737082153615351926573833777635149791326362003620848955849000293974842218823100172782163598206092479371775918576463072246181956895530043741321143229982610431446604611821111432696168195413523534513352353671601806464263917984641716347466299631761000372238050785797040091212987136007763692036099755360317758954169262192817378677995984902661838571293912499343541333177281370756725408438612728411710989082238361799878139560691058159958837874678207261259789692344775744528305498201073727428677005401092588535029086570199924921581769648410545183268813528276658183274847678665508654376462938984099745309564873558366079365923132623790359530977582913183062584251128463331487910217460034197786619637125802788681579787699452704580406217936915921698832672650701830984169118508289442840449376587013027329742961791681565769941393187089948445832483491460962846191339588560496262396920771579904883134130586856621266016188155503706552260111343353863438492582489443609931590155532331498198961439629632587077486579982264562067946521781370227963782000974218940598100789878889418124476879164754352212144808997609432270939446226105938238318398251924996077722550713388499565173835328388814592215466489625991590784046871140103771939077841295991750614997868553630521483353269952051843417529558238591615793156701452237926824029380512178592547275690511737806558553409221872192322521512003480329698111401283722425251545830619497145042469336549708480699095422983221872816822158254651923547173372783505945456785864688271427393560328934225138392586448353378474895054095313602300954237721915046789643560212770048924913894643345970560811426709112149752267304955093127246442939933136671671639454887284963219638241168610711156607676162629976371744672924290045950513818825150485846499766835544641313403028525370318862620862463895697861203070564365293258715733478632485903847210318627539988289470745928959472812665421268100861478217055860709125742136592610224308136964784087618262644481455738122857075492429058278567340415464748863185343545242511025581787772098119503484867167939425057633325382266889243417915999647491725417903079802060460903323125539991919806871462535607441888864080135749436049956832797525678074640701689162108094652816851021427316092289446538279050870160806806689111329975601022097323815869918177750816034578718279701747303067320977551226642387642843434406035459963482845361722594389431417301180305041879126031489294194977586815569808370593208461744378941990563881819735256929188941546977644964675065725423413913922147778186332585316764768822174556035172101276167041582951246999627949004070341605694117523466749903047532126519328179360688853490870519490172635991807917127062909096038416365785543169437323209808454517705370791009145906222379035997762628407314042748065091467612148581342841990222021301507004333660425231125164206408500449741563584591010449746741230343019344412597614615107333043962894313649326267910191442414972766675481356666878923444926944624059982414645818087350037230348629191110945991193201063117927131432027832523648800673163225963537654456532857831248729636908778792878527655764648467784887184100348968217676611604536217781253982835332975332762107173049504795928243773934653794240208962338951239687437914394868906286866995535012817472327423991004279162468232638209836705774930901821779415432734057816838510368698509023788931306883867750161399926987493152189158327488404890057788184268456824646553412025871434519337936558896094180494118786035956415013463582224114460098953149099620539752525862849115587901146838583180624367480107147952481087372074539169627852188064499436890591023174507635990249730796486595337285763694965543631888674041379412576139950856145444167809191354134164826168420849525847564032278466123104193789038868591651192549193490914447760283230722243476508663994482944306342712812515958089497707600872089302403771408215899601863690250222101529648395640715184529721751973878354514910596105501113976116199807566961700082497007346330175476082780581677576099465190290975749584425805646819674470441964910887647170713672423563467730303406353203960708217215817045336260414334970598762103307495753552453219811962915083080195667440002111470155864025718381036886119584707278122743425896265424207750728663542340748230393107028767486841106355052340781724956915620246791373150095195590863729154798607166238682901222340342329029037489953709527435220047086352041890308652879178283076212608659447457528904525895264710909538925558941852158214214068896487286892514045988986878892165745719499640876426386221848606183696739311453469483721605984414397515462906668295895153647628684591744220698984690281310297603493163656659590711516238548920940664506262384235319725177723858809592839975661852671989691864364099157492979349031620599863510799548028338808871761455355676564901944949740743050145161895975848890813711360318684732016692543714327551926063880053809922740746205588714823273701462212968596011234182539548549298705693218810161845892875742012034014807783290663183768477585566441505289294695372872167797828376095923569733714562152332732368898884635587792734396971715729092408337014253869366256774616331926523912442823277011778435238097601907349415118623899101310889503535641953081810352442701594467183626194915032776343836510982113255647153048778604006277198573763062502740361194372847183747223389264800017700847231087022602959790201428578642113660840572514603539737012660038463536090919440710278575725528924470517229541198944165113878618059049270145800519931193072513615023219301406030455482498937799270859052957523373769989669924310800644894346733920204836455030476908480913906678517855570882980209254987424449861446627196914533768029888913579286703184829925180871651921424501788678711707667470451857019247137037612059540330314793719287882708903304588874808141521897002579395788855960965623399393954328004981654595782891275688830604236161528094350181558904730265324627875802069490442886240237588358581908948854075323237374591661174563909394534593236692706253441262542695934884647511038209194017904751317786549499466236363053174143570069008935663284032178093644615580502998009052828909457295033687515337966460124768270170183542692690166965702034901469846889799439210605174602177422725124699050485770705029507200037600661194336901728495768799594565186165894664822670028742268619547547174059623470809288185036202727042547992014156260555107652764109570465940037703039961461720624120900430711581937248217251753248405717201893037324044359145017824487982013493763505932822615794444947565809112467951764620737369281330429213807905265230243931347825988662365762437920401331992581434826708117279879810046334917538149592082714644748832690707966373832407600115354745035167699995108856828938756949191196812425241437638579460062605101192178268659619545232871486970039043775174133794804914993454736638668928678264525321377087220417704318017918112124123201213246656896059257753493050357925804247832164091458410788063902694749119167579728858830705665152226293995923449550958952836991622266954138537851853807851017855668300007606412036688500346773131684203812489923704115759044156898983824220194920176244468168864734594752019057988892038021248761304448031304865131511696759498506476758455592958844634464602212937699822549338557938288159254945056226806864273749824073901402950434250812958140729467743473971069116899461251154461252393732711260183844534748425070140992186470922607985884173659875027587827072171903974559947603498888113084246808142582843508165958782288505263383875792026049436538166709187668630596532655939089626841782274437993159283711996533209702390384071086472180207990784099859663092414306258995111470506034448004995471027120631140959612501121789046561703003276744989686851796722754691726334793067255644868476083670060492710472519515740017795585619152105466207592952471964092843850973596857519342016581758645038614502293832913521260549487883458749674317086554579963224502326522756992791562147773286687167078389200910896728620132688965718271930185743128004255324421411192285937160916564972835041404327599342429752282538546611236391155809113517375256779050874642708384896365657550474371048708062192311757152188035247919497793847180546191185619770570364541760749619246323559146875751315233496724522985418429232379231426851674905322809091846069173104551829809979145983103556961248105877870592259402944267173235729728917968750740097431881560201551000352899808621097907325432781851491417329612935002284937105134782003450107488315691188610085545980783999143132034950731971117009834827554528600929535204489581123987717367757319652500387873520058340653384727470632457230758992154883880946343445306562436596612184396519100060487118706516239590855846158225259550368331207092473272843527349177835371510507678191171015842395914453594115906304969876360266834463282517548382281053774045215558857102662956468827441451581477651285958217793419438058444417075290779359715314868962127163706593883971077720883053449904601347824172766895298244264529897508997872969522938349220125364525542162562099372824273818374109047860293666669946920693372766536147528071753185610348676769899328791846324654366337443962750242372469040110086472944709178337897620797761224817360850421309988752576820435184897581271287347450589112535316263438319952248575908315385414810988222612675923532256711767808488087016842348329622692132339614788556706513473316193704802914824415755989501584229512325941795023332208610655755246267595884417267324202234789833009389529368015641741336715839047422630823031970006907827811725187509848741326114923608800318503308994748185005572468561018248204807973675436277645734643114017341839148060862442769043372505248426509842427466453373599808055808516921564730549943338121082947074123583390028183986972660522163527011696883476778271142493089280259852204551529994652758176869019041582165874062302853636301251232143843695552859169152952662156156921883047234666775154164073487253850060979319639117821412131291000999091576336504078394334887850542243767810646148147404159696678255977296524501929390633576075967108834689887312392032857037204406445193149334520448869437188934508483563214010684254343240620062654657568878824400031016798965564018137398554520713992576091906394841469322655869364442008149657456927272222987464609816662712552234453038343515294295981630813632876659854019066198143134177408545234952326660605089238215112281647568322892570090650788290081550351040726833869123755984049384092505717938367562237622775088863188214516563772681554285830984367187681202761455868559930558064665779505519863112992433402745998240584752541313923414791884994988541914887888648708511766667676282664622371236628392474437413397287510772549784561713862200156283328686394815010194552323696961359897999700063621152476707591182418808304111873465720865309416347179309205946246095138287214733888879021626491108839358955075768665689710158586827784606580259911958113498109213074526713070320534874898021318237992506704278918230167805213120590387839483039710068545028154245781308023486561337430523964573474695368753784407947496496295397008135316701831928248624400748754333753585053994675705827536207141744478662530615937128989600360914301364503067787023666419559091409510616697123025972138226605412296374314701305099890436950109026491691921108992657700969398782562528740180817620680024269314027239524344183419794069264878128196792361135755864527951153151496663602554486728024791967841253661934353418556332244623711345088274823719106487441335922993719344854491794865949541193276911447773575771959076022475175396913580658846959608474555623193555973437540087111862367342298677843432783916415705760948590935189556819099766336276368509455006394039605767429761985706395633756765996513978862426023500563238682730126078014645289786925499855877149758069237141749936495707369948219737739937632870349889074073511502443897502372367270228355745969745379591906550304317748660884500725834095004217549838098803400478219618786433096554576961296984399362844031382398569718501955718119032495767627114413734947043412013858918930666648244261672089242009485681935273421838840577230076321400495844128717438959565831043752593819029667411847845385363269530091402120257092554196212581208423408218093262892054473053785765938436227719146054990965052197603495455369123256529457532900154230237963356921772718999512361429937291496310243573488118557111584986167163334958794939413947033170777885131629247262391600229876281279085581072922646369844657170981334817412155558119101801851918589729717029773620909644205245124851903065011380345837141108253350528642945258131207840989038903201914790113397521997108872972428368999970646159679201639651367799489533854890339810582014175275182838165608624659266388242741204561170702501076819357915497904143121289151128509124388239498109776271076268252686161751323421723729770856547599351528352072602246576094703101746698928797684221583997504450814413767963982117603545608374477475611328912356325246872954571302690318143560224172760069977361999533819602658824785996870871113319415210234125025493087913432055155581738552734905205582502531788247675885708292371611187821804594022864132024939186800412121510210189589437075855387247618288365565324053845818605734554454491312162171872146698500840614342718569273929236255414336965842777064823165561201094704456644508209063461929936635263865681670433102583881553204664971732080182087176645434172231574899877009727053907391516179484797141233497092303370860800113299764975371394965121492844233884739932493803435190826031234298222706615512157100693202731923918461657355554004053260112593817681500951269245976809316848155114392417519185981757315153363524488476492965632881594044168818297815417745079030959401821766460785524150852710499455036302165672892379367534971584847520574000837598167938039548345759685227880078616324347653552496057798140115565186412912798043052885912549008973436422814154762146671408219521985197036584710065152812940488987693526189002725355669059588253160998489887698032911674468355292808681242581680022141734421737498714343308095843230018498738706069923945364597315627720225236106711330237325025848769054172426568122172214910067845346460984621183725579777589390547086555538783539707392045218402405121049418010442280234868462321900751866671727871310082115195804493539165287798846209118326793550132292262813233393669348305915803141820697725118959671560090509179112485998708356396246447379401121681073314073139221902391679069427224452097385532581011330995856365217773041856684775689039257156718609799753194743668953293604317723415690685936615216928619476035174013632747103213222127902386479379726631365954864995538410263323752253771221643725667430089179422931810212513595173548859347510550011544606243249207352475821918863527983189132583110414840665775833587781482851425553189358374869032155866765598390627522411884998304807647523393274461369078198734998136527136792128380673414471377698267773147623047856842494388633843499840702802555127438164985913531263875510888146897811537284623561329682089710633764723026363458187631540068915831636507709587179789873925769560493205819769271525953967144768217256390212755303880042844620195817507180230241911237688997524669303574429259332710733563951655268788924698110703127881941213583096059143850452553425357852282395113609987607970451282906061207417249066793271381109133493755902636520605845258961213492401992017154598840846097989117114263740530348932921463323386406296912007286131718440018534646644832052978413684082744390121004995454999436181777259448182087418850122982700270864271506235479793812151468863734853695424307545105796982809904480657595851170250030917817533991241872120608578814966699274859950621796300885769411747810448765411935358002401604424896767507134944971543039241324685833364334039551770548760858928350000196749889402873608748501372641759025210543160187983160297388772743068490706470376468248500369033784081751052054196061470731347038256994467880105632011922451199143634419397465758702914900807594802471652501174980131113761060060234520852439312683898828876111289737981196812554526696800355939557583510620292643591373485738945770204083952032429671238724966178560069956513875153424253751199339161930554786037297450358593579599401705643546500409574689373079839350017671053898906245582534611031706652037494740456667435194053686899015123056333946937935515131921514373029575807878391343465850802418686387022186500155374328445657645902998776755397871437039223891599149579300372782531563183761180767115419506518248448392407022325043354932211302698747019917444111216689568989253435453191199407974061794711482342879342206263569487831927683480276139913771767928590431342896664264233199160803128793025239454850179254783582235964211975622699748914084370790775519932577735922609707692115939560502368712633325083843320861746986625397256477685896085658015317385526499881599887214180160721365947811370197685622137709275964007539389459415519376726901010799844557920679506311884495852003100570299049908927038284519768372234855451742773853187983257236187552929265079263725589177144190203608550371109823962923181179170418399341238651268476796904588458973113862795145922036297612132796349612262646235750274421939790122167048316476283764299856361220320879030556629537157872216563639953300016843372595376368456099177038308214838534721368942635659898334159546218910043548525072334541893926377023001606339885223276603292748395139277010296202645829306016031198614488321192808201028902977761879878853118600190727419903457378714736830074440620003002414903111820258158861104220760548744545463734716602109746289689102927458555946109865962690692052219833934409214855462335444169338804582806197430550567449537058295298156316933878554927120521927094713779804530536355795019626101670456553027768887332046497221476684159301052113898513337112879629887687408073766696273075084942168269536410762682316504653093313043307191593630120247222446206180592298664734173060680977041169563463920338236917734795420023309449085855779399221016097445968197871685144644749774064193510034036879195061324705860417682397253544609362349862887056146271448422555677475964305113924453304031271274769704479610860009481110787327955976709871988499474244225064881144441384493803908154602257389623023066434522086107096342560866098394470991276428167564056194456203133493577798595608005400405749910024530899286197205831783954131650359814216584487727164168064727350903800892453948141799387324424332347309911173985544894715333613196821576434849323344484268262983281554343273421727084695075845327969726179016166494969480001733459663751419302933348978745246188032775570185335649286911741866940237232958527551455856967165341885527578291587674170439539807888338054784653349834557750990904651175393144351781282802826805570026386857545889638116794696813120898492870093134958351489865653578308248491455552690408883807153379924720640141451967300196141872790904513444828938016124928952330028341974632196540030999924513837468444054016533561188595708978154698610270998575428047145489873057485758809442029883754124325056442423937897714338910955402016198408807320067663990533416590457101953978201026479686765388528670891434757294847776638205756504841502445508369712762777326783530822671388934799246267476503434200000972155421020867519527492730543507141809572242777282568498868525828051358109206055718095291571001536016915189107142033950293925480621525751086649879196184958442009109896466818618916982442475605633847774927160921369121992451060639409191038459015434472201160681248728428085544449907743262262470507609750249176071946209618374433161448092107185714072098499558023212817707497475761503427782404459593697747544431006530545641025308492484497969883523132021010034553821515292323274206171339970278949215687555205257060455110107321269904049879610816498426166946726788159240463921385529096625295440013197666340088643476152216291888380068405591842016716584458550311938578771738305028857619680539450479021344202959162870064456667886242329788417975124068751532714274734990052765120343843152275998782700990241461681015039992128525550005522235658955231656849547259347068222508917917330847245795722267133510028802342938909680909415371984065461347863335381533275304027720705190634471388455133870055798124624497828323927454447442619568814033485245312323439658977873388694029837794347692473550546836044803217320240657611761021079583459994663595014739282850279090972243068620399259797149416532217890658804241954043089186565178472565504020058497351110993386855758694777759170489363789239789839783128561932550820774310277636657770409580691170515566099885334747828280205818519021953702344419191641390351914134799222667186262359642474291236221336769093335481856811688533841547768769596272918861303415717403059303277446682293976982102746703112028176423497023242074241026159459009469756975951716861566082462515993320680062042053742301887145503204775113498306175237720240799136380577701752121686616045946819746887135314022188202989711047849168225931088294804487031651296725747426687462424830786651685751449211945376453813931605857628271108327682032508848953283600875720492411008501778195922804234479484830180612407921463923258070922698185313190457448493010935910602314304921436615867478980391614021522986978542052276237140443071060668584970262969680141863148093024969857140619571380071208607188341116122363165103247515826333691128977538249015202312502161691742496726319333581899889221299681989872820173051405545846358812898435435755386446163084034725488102213340042335880443933576833816282472070684113751270928303075814897273156672170880679122766031994486006278121680051910478578914937772004429547328627941190662118043340963344765392557247750409506996473010948800647337686288414263442498721780524089926132045965677113459717258684150393727424611422601065804370966201503306795643734920399840536993626380819368942956079898011356132727749598149358808745837544904693189727591752833460023318573381168710686937157793661367718163304629403151704504690398524828203174931186670986369803008669515733452100121194319966221107640270809514280095319793089329439857370560311248208161069593371029816558599818884625212648891297675603733797964055870382321527932967432284012556269837337804140530892048619184575600104936246300411183679999562493245612213997877771811686822231223006484817254248216350374529572655828273380152948674810654990388625031573653427072532413073809934373095598376356301948503486043728313229794384813164009930228479760237725472479598728240132016748794456185738991950098131624210492717725191190968665470738510031930976923504081765323662623078488339515436085458304653449255545280874432809733009467559127377239818319035308234764506053534852561620362437818687967970940018094041504721431176115763520230674763653318130169918591680268824476795596322261755041275209005583518461431546843289252591751413779044048796008402960496407060665255420038512689583556620683452481670237863039765128180149818382268485741215062535307795592722327923961305227887110875340340487897015882546810636816439131020594667847555470626604801299950724853303835701175513320315364799256974693963194674975744212591359540481872465721902673568344972316341889893476236974338581281228734103081656737488367075532578668794571500380659761244156749646337826981896399226467681370318510466928682937299777710960552728660053705873229502944619698212998401975607273159364596105828688485133807831244984524418563413470802153597751091621710860299484203770386185267000250073359664675402556041716111690337271118736287430297296283807095886868060428689743453598808991626454334964250155221131348830175636302242197826706473907091903389182757579305334492745130049073404257577617548322668548733999674484496692736211462551922650363596123471167097131036530435155904153211008984074752478608029740006691848875734933581277787402812032102284145145450034894795895999582340859950060437497861475339704865487499808212684338647139101579488288506172872059322320666654554319082563112353617865997765236957864093911787899379333967369102415925927920492251681282137738860934955428267826285619201368580302287968093065263351906741704092878140438166385903725847759664315106256369365032616760217435650322737706287151213224709662324931340106620182053556299285418018047515366515404939907767511283817572505616648026770641408123752831875077893388954101326951967151524565256224271838514419086267743607233808169638644704275777310099111125589169551407012822354757181438896663877258289626787247507127190292884814009669191082984052175052643737061410653213276985419713312453663054232216141624918767338897222005412913919396227811030814864936446079496285089889182362443429522844084495862599047712695852454531356785869396124273349737642989462455527545213508585895302589803041925556825654021362721619622095099903541391050474199079064493252405360194803779876958453602461009444945729336465500541929544434902994267967516757195576679446457632577082097487994781358556119619972094487540105806643856504879465221080256567861886898232940831757745410961575615820446250036559066074147264349447301668137457422929444724396628436081769818618901705816160459195895334785444186171005662402323762557665034034337556146501229129864141457797398039752566400352674890115328011829972903236171833225337431030069206301095116376948720818224952047784899611408761065665900184710212511404868490931664107229205267947926718863744919313144905881912478537989704383892996082284410849042122428154152104366074920746969486559397889349583856048385379988965326954528609434508300566605519618832312227377565921179686425930004638616193259230611647713790608213706697535946971920293293441426257703523361832575117137257324668668740746358777702148745209567810094641152650476081930382466576023303930026855961724174992298560520131379799265556756009338412446560522804947138628357351247569968293578735626161078371528453221144550905536063548828133195232585570936079438231016886521016119928110824533030320403377151621248435906581831815529894155615254543668879186918283694287083723853484626255109092588114760285036730898357269686350368638822669864908260268648188808647686742814111323529058725772436872789284545741546789286847729083403061260016251241580231116215741160295155843555644513235395208808397578480862850273381105559001961528655933483319995158052258936667863448800092536294825216018934082458323073763028810054902927676768053623941426120549133620101467971286129209750223376417698338193336310440609957986041710140543977943540519795339088338710287154524966254942379722824700708178560985010260187029788379156345817661044637811543574352360535635577489281515457719887048751025219868109281153783150708086574517184160542356900838238527807122149312649164397353099046886967068285743743268692987521581516112645014387815297998284651029999216971400964974027523583659576577489958771930061843371800234756076346087915512216234541856993703797494625391235565572274822313069130671160830938142177837647772626844859739301184749395920626081542264629390689969645013651630670235302195217810503980784320871690189782590164516589515775516834018802838786671859057541495595636017246391736202892575524743077954463066094339538228855331005021740572118479202244738377056809564699847535218246535815589792270982322050401998218041425025944068657795295996343242106962672014186650097587703507274558027861144441750587733869197880899767849642722221111717450763610489524473202468131948610561855455203916086627497592951292290725441211167913493101059837945174339081612488199311104832746801765357416931387177052025586767204683851738451217682367545897530468762915201225248481452016789849908816895164840994928879233156428187674679440883090303104014503244527703932793060013038256354845865571223309779506768314883613158282295637557473586823071655596471472247882562122251540885446992194667501041160900196357703442881859009113726752548376464768652797169410386201026870431691594319229348310080819821635684296614555082001210059301348926879608654261293745314845853997008769818736919048016945703716759986522599110320845242287682510650934339906533802035129585838428094821083194382934535833246938869988985809259384131115117606620927861452247906076953614908375679844774540669146972669039209639228114067815435111017054671331946970913218151747784238850724628442567740016104647270574998365414012910702955420479835856565314718713140275070888987468054950718503922951282020186211441391192214129188001758650746719114590340372550823872332857140835813683996678350033158337351529781442721882023418079478515538595552425510660514555493457175578371598071333292472912966072936257571148306374182244891435278905352210048706213344120876579649767011428488399022762644673027168746477192034847546284459943229196216099919089136233689996072704477785195025203377441251262276157156805266962829182654053004828339877964456942361560020559546584189552863024614180565845415964184011700673315692529137106282507275272531912508988897628743014938003937375000591805909867007302620129918685330661385842176257746184979635628178153970124511545823655667633376411674909818146194254980888887811918565070126681797821852567659233801324539707832696771056710771261912157235966917762144005172097353113881784893544562662037684519809127564155241303937489268460014344406104048897929460545179209793990330697003910634254771560001193806388516886725867439507115592995725892125729326561367617699096916080895022966110826974361252514366071595114866338359094326931554009213199178082758539953169512430261367291185750433179637546158487318310030994909547288264418475138427713616387375984054634185102583456885180966249800187083806345886364975095916988649621770811472595537011606840692141925387487658378986536042903884022180122105268329663363080982969015374595036274001954403417623503010336733144770955762968142522886072160439255179211776636207080193928637748446420368002739356486395214243084630963087319027663220565100051741387455685536998325752674753397511087717728286077540620185485444977373591294351309820019911021571809383068987744124269963152218064390070870752859380660621773776970386038104452803195892760019879777077145885466320137014986266601376547518471870012497626306525945383980826479099983837077095338462242549133138617309484841569669408431486712252152617596544099205216183663197427670879410908282251688442625353544175460215820502180979303948364277985433208912057104908626609003546022223624718479195661418006203713508635807680885081597622960860087771070976702107648791170118544281074802364847911606558369300912428101935746383931383413327972323756859329663978641321437660185320313185402185903615746536806174557146049084087852482146143709950803405093543183475242527333110546495930192462678051166126090439896224058208342435370566274251933610226094490341366473383659702201412448020197775893364750231060681267158727644909187219132152785158723401618380112584273138060905883830410362534624793166942417528392824615426813608062634285423537220600509638507141184324260554485919350462754175688962052244383455776873703869501539175705548933956656810374688938240478489387137252108593682622445488727094496073401689903855611885419736892077422388396740587373772114455382773836515634494830794730063096339411918618333114633980329900102979378355939051453474610143362361228142478139183701030894466561628972802441349442673364405956856231047796127585395302496149761228365805402144501922991273895815140051366060020196339485171090102986367986140109932523246622880832953361578406114604894933278372876480904101136780049824353594209934601966502153046849777837018995820071866979034382537709034966046192296608945364798544738687185055263428836449170882924341044255371128398379317186649282710528715222969103772484452906003542392944586611804863761861077716397303632674815293631975703477490749862066257959243498780179926718985469141687519378245545072741927823137618091662803785763814391799505212027633931894244421919654535114290497511136131916214695001308974106729300432867507636729792670284506355234811889508942666769638728526524901050165683293105531810477989017681827032488833736484766592259189344948694491351593545517554837467312651915819202342949829680911115248157901967453984009315149945336835334450729666115406611140661993259376865750688381287166326936505806018545331589132999225667838401178770546777532526180880822078655142058054392556475406784058367558621850127905621892857310581840010805031651308787317062745422672190302415548135048458640475103322813201365025360250268977292733162531184640019852391310117126701534244023810051661303394228140533599211397458947027992272134666645875334084206294191645719253143811241389149432634939961839552751988122684907415627459467917162696815819608829712858085390428826011358797835863206437199455261373865411936939971991264428520980540852190474100571989981565127937395468302296430397539260707382818443834995484000945992462217904519900529269262850231420025011407322119078542789867706571857887292431451342557302829132891405279532831791850467974394623857028918035767112464815712488171851605341867412774383000026837324169211179457936187692805260002827930475658511859502413304145076756522273824100601359568890885752445165033561941826913331528273908921786373174939606241229265628386164111171695191821042315238928204329157820827856610611685806239924740759564016178890961582207833721296746766553403159031926150028438087182286739756814837086286291900166239117519099738764389485293131829909881936968850598589195511967233164502705433986257237213426792732616601151015022530012440103025551051715092521569643434202729925630309242354440558199585547756533526431964907612134653371275171360057134450757769655076460204886363539728611230818281057202732776971599528819553547891534934584107026460651376450871096656691187054621236397885946515226817111418939001266917348213074603292514262493492519722549121377081697776538171128812362930760568678409750532230006583383776162587080725233735173057508561420960734752943171754973348542475844214522908165581022220558843232911001983592788376016327907221779596519256290875909197089277315880685022094926945769206527068203412075802953951564742610686121958300657720389929728416319842758583511481948106303133791755141612996612207910199434295305502896340272400851968777464334301675774316682797933885856782139729233313503612692211602680501218385206796801815026742310781209379086393711315137957479803454802044392315198333404794245990015674729963569971847258760895360185914621456882433436367182491375756714840110212702235007499470762977795587645487659097353712025438564373710678575923342611778094830424587472589521264368963838552043127139580097414361967483951621521292012056988889013954627812830376817518885165300394513107467419964719246440731851866852098118018425393993423331184259060892385691984634015226599412604421267952741536197707183095061255804724444565125173032775925342911567829206668496357411837379550710503133941818832680364275403144218543414778013942992390482311077649003961652425928639620219235580711852884224707024552838962791599015473630271733310410743900017314435576961908007558091914489960621125708812293771915466118030242999900097011752260149032938342306179150087158933753780164333412844325080850673226904228562973710859804086922550280859843709211830379001678577329590532091659765510829427651340563319065646571363003911274408827893022649605922277025571610162798257439383618462160779019390923934898221297506779551163170022415768555126784848121549523451808814718906768066078390786147577291401408930927131687715438919371338542810863506167730864864211103467330047462001726219789031401292247259476740647500051639146206421160256112282935486671943965861285532746475046961744876609315971741774603437853852687841186854015323587118058891508389937413509614037628068676860571473277840846736758817246383718551337724841780156290276081599432452454348866753462549228468910947250264832822930701927780145575276876792427561650884762273486427689685269220419935899531303513588166702134557702883961771735389739091692111836893014937167093102048855121396905795206925294657131041407727516568706847129026425463294517875331633513128280632562802243606103592649235144501070817765410451269440665044826987572166623698318227951710782990775129050082286613417115706150794557528283802793942503031673354446112717245847552126404418356131096221226009162702229164445915521987269562869411739017330098477086806767339323891460361636954936531600250249552566314497473365272981312658083609707293346795170732246117189014071807386163255122185087296425970380196595083763819801997331772085314879425960163711150354881940077087364642258648710923993288451574498599571663654071200878488527733871241953530607576617351830989225684280243199223726500603991156824296913029696975432546834844004711050393106695338575648351047255294111152726048482283276014012082190940207301612894109697590436522317068031426271083325522320384717744181520919630219250839456326935833644646997823953055075921155619545956886078335243803299200658225487266928348916663865027794263953900329969331668732881039135689899231590319403076637467886657730874203029212182527938741921936819417306678160693560951984111064902906450416860057382474973917880746372851861688801247675231087611364529987889755868612846135066434153478955238779989136987149828275432432549310643899782484631190168330829102605109657679592450476521429842393866225026722921960874040612605083212395572505204827001332501202630430665050434749686325636368625967772826443188959314860734591777820835734185578189265391601858568101850519625317814549108963555337167288493531127616663922544016160327029831502586354428278596119380892453358673396440087932919720736320595573341805106460320759365231428716923692015806305263991779853042854364114634434032872464908020413798857251225430840599891327397888182165247443799316699980164572003080723727636230907697433943575545836422606948640939588315762823024827772517903053135901487793495251068676000021669510902704593663796426496764202679833658581931982419201347295706250616825110719193247433805989240424128245406862821386031317687500769472215919171676014400757243100727038617763666614344960440433894997320069285155875821363349577548931526461373260436557897637435233575502059614594639914267078457534274059411623668543296329428493501015645203718097789318203625053646821129983705661091701537303456259412138856327109652373885427338632807007846108798075647335206606143357767935833412799499507984135571572551913198398897420356623511250714490001915667927899977496585385566766253712318659585995318665746782190832359374115472438367592376673563414259047778086496993847046363303251140401602098307045089501099590070004881332081357038493149233754450152788547708991071465220995924099874981764643602435395764765472384569977621370824606118543380704551627562491122141046867228244346226258918793519223162743466141572447083755974145871716313038208937300885446561014440687990894566388256860175415887473221239971049033581888446728052792053629034980299236140985350381756308297036046215476931819981835951016153267871722694260216655622789582766619735928229177044921723749276914993133306024879947491372915887332814817366331998658357566509351769620366887736033113272827698359291037132776018157102595201335570727516550656636335605016360250199600607017532072981546121536749906915682769812820617542944727893646814788659661798188930664360320235745100160398242949177243939601103093499082433355898961983438047835848202483843474351613953609143499786568267840874480068143453438408652596408681793072055542699142340776010282049293846700655074585772034271536581099313229009557011689563963836575495087255645037803271877345529314668088689934355667436786206070533060739655179794633545074001033418185048602790449583005010437901737201959704672618885299214829981759265879960950358904923608553112128756017267760035246978328470434702516566118534266796286187833517568190448742683445117215134267085099600206931615527192122154825322146061126843472806761318169652097055529778456790900358300729617347617307730439500865140179288684102458451971178520587006074316026832910445677876698526505161647949494849063451330147456996361967077883202423051993920765036012782487354886452357006118573206341491956347733408666400510603552254547422917405693132458017874313517348074959475615877396786797857656232380796868810375013814595064589326439302584204238751694144443126327006126275076714053427163302807342865426860669606548550012544316700179924891422202548022993703239263722697411555443126968458078981400443480590260064506109366995328474535628401224979948192205652464650109469471686454416539531410632541863084039746193060749538768713610203394450363343375660685045918975807429517385160712721925732498822978393357281875230172756609255834858903159078732230201904773970383700227005028173402128514736479501123719460447290580047751754178237095205303455519248927035016069816059479289987180848011774436550026476257716201014544686993323674730717221654934226313506084676331498655857350557662943569106664029108369769606597531621051733026734458527274227058882039855817507458542847107314044753075659832504565989506580489915970923318442062495305562053734355206643557261901255129468141524233880712893003932547393379817596063728309010545018769581421802311212269792533559839380015765288638212253582299314975583302907656301609581219971954129492830349719013404107218496411307076195813150471075325668306743348914752030133991350548269076899369178991544684114008681455935796751493957391790855783680364865618977501553267687763464613748580132758100918949076565848343172558385179856597373155310597385060500972509042588254910820336514332921583939644077522922155631751560137665967830801701762331737635061548880428191749083656610264629924507194850182056457832932461035342599816410099197056526109503913030606708227880369201308427781606797147226460608894293507870077718981988962700786278323133666474691326214121698953979459386620489145831155316620543030288456304269520380621721492656414746042473927855879301175602164451290566742130645566501905473281904500205578323875752998866162720773651867844192822291752274790059162803254080595952011851188742566319718271893219705736686095357685421706571845929690068698090487491456714266252615578868239624992913749316027034906869272373182784041248626922189849008974390394089978186103860460870417731244159545293068653563775962978243747848976636525047277507616793831599548438684062374287958223543832979255680200322951009211503844651739871842079862645320949084439046492240874391991861763327978457352583296880860600591621955094607882755387855138859609549091882218669321643386863540739903952124684987689171444574390915511672232469294459465405054611166114523385358948470425254783717257102823675405731843077836496165659758533564457058091520440695777771982180797266359953811614940278206229397692025602686479943681219537270528327362658197770248058923740830615153853186764963628392243650703566425705538109618635069437514648564534116158449507804770389839495980270780203629833294932906472785940321873464225729636025299260925866828316315534726297373234819387497751903167089595953797313962656728421040836193793359751472210652463760606657312254945265554139516764654518782029592517044953687233243741650630414198962431426623495638710042738359441762108864428240134721796374271958654822616736788281899340293076425563987638486521262400579077418306163408934326887385288793813829788821923963655133039641364983248172681015448068223772312443883273441480761584586329853285393095509266055840121308229140109347569976391964126802728755595950994854794483440111260238066245467772924052440059558168252530996709352487514479583433947487075467521736919803472176145186648907657805860132789381930193203806896768759184947958175346319183476531724460894271196591805373454445141313406096730168695429555062354894393878306316211997022129402357692741353508572854466638657128526339399046463939925786838878082215233894503605836902060522196495146507221141140836331525849319324603992461159521812444297843443099018165372336348925755220791983317133643267013729907096874057815317353138842878785514039330869608111941503333729164606226268459824375008454252906642049971783244678376455354661948591549947041796730296354302398768276962414313636520329805223412615794309226104721128456879650480126473516594417546589688122869334910054128790854808764087456882784682276563755641859893718251456649309350263182774622533999349433059870522046380667476806466278830805983918488425845920510773022352267650748585884919062904267355986505228926336285002099365532774817054885782756662109908076924101461041725087788538648019085897241047514806603105877872134130616146777313084198203727991033592936247458401831737185851065684216841738311394294441200566890362013441113977453776480255956606762935246777348764335700791755861682672445142567711482555761245554995857961079415314104771748059755754966296147017046528219417137788052446472907896103629803961982131029177579281542109063156666317342824830155787475105047789988084912958027252197273967424414210125886744012052329729392461431315133909158032731719798182578045112681329070124893048507544473286152619482837461999758390914383939226938385038488494483071532413946660773092945116108795440602755182031631378311218877310882737078215295416833692119680679035681797927953063854983152898140925559945378906111205577052311730819069513507253651007546717006838819342280064285510489035101118101933722287642019616331232087480345390865158439800302190088396062992521565728299517179824137927605392547353941722276740316431681380248962289461810535621506460854566739668741511108290129506681681763244264938219751502500999436612268135033523782871916186424767728364060765978335863270759911099769736425438338598680819772764834629340742453225518524706296721462754526999800648755427894541917222750551003247827927677315555254180000170590092270472561869735896251075522825247291257588311172640482015919306317665192365650241004219042754471629898678533007496752067315466308877530657101198228183721267088768390490147587612507436936400000565819986600507119723065284777032217896941853836752330283452137221119295647429106671761628971890809134762456250572909951937967603667164415926638107246412658836142536911244724562553759519816311462593052309626235041061761607014409099957809740685832043689929947895178272386713184434721254934765122447597029975892213705223791826392633752650622803501526402220062468624290049461460262370624485556029139391364867000140050985955114846782876122424515487353865589524126729435990122368162128389008849157671676477081254423330260043602227110988171738410500424556687519416889781277606072175379800368971928989435542505322753834600170806672983146588936963112873231616139332779674552977074976978319288804460666482055778235396715612528586017822770131140391583474428215727161865465036974806093381730713633144642774805870057762554808752485818056866281581982019393089788790228950835726238731969120619751382304123103892408813985519875415935393494460343672889007380620873300890104021910505720284924238773165291375211573490149241449322334951744415075651293172976290072068572469305312123173556073586394705205973485437406412037122796592846283497978501246738310904010660045497979697582671076924541631244169584904391389698110658286411606943386838174586311664339901468258288265421066735836011499486842551273354809544336398124817060506046640857199922518289875086560446320409641375160452506688638202563894893302753460416193556139441601107813730129913041733409388233352723374586179082667619669644713462722130235267987018460195612900711280010283579105568374843595721912632228202380402454946991898434710953202749321120083247306623091222718081807601525542320421312981501714180500561279537067847089069199891815098997899651905771361903039518147613525416123100634270734263652611006947776613217015411537149999610340595318572028671858583919219476121002886771740830761700813927079682552664360158921433254540756611061378749388299786464150609614235941320225264800592971694059481624305625209324695106643078916176036263057323629314580028184758794581177268754585192647008189400995084128832514334540168481180822434435731702313283083688909838595835765728729361513556011019130904192208936837848947136212685562390470816322237120970765000657193068321635109490676102544728144072522828837006406550140153917189811297885172463540880610316401148057997064342873452543093929098060637856475918101204825054425343426593022899862169791715019169950460370077208282924668853113594399280506997610305476496982958560248944250319190041837789241633072401676361020746423215336395282413001140698655225272054698055674305868565304335514321753247344782358912481590814293146688922350087066034426204374949331729774012025528238472767479018255077096391554558027034997799537821397534805318534658539377549335728144465560347590741787620730209517103726293520099852308065402676273470597399983873003831839142923378320347305901057330087753418510082371299392018965267342598908058326377905821986738682269004018879775131449613857789229849162237097941283538058006123118533751200693650016967702041643437402664192714613273915212803475476971770324366895453098735547750711647827515113412929631594717569323594820379420435184946356306652741837182059758575100127213953163179607329131638404047546370680418472862870070672258136663002122076451870810744073193067355318771614191147146639579795539140011868315503484377842091493036264580521117524500471768584807264594782640659802488446566283021126722713214868272964706629846747888968359262399609578076816823701591052135474655321715165483784309696259488846828760907758401326853221193833185658057502748353229296411604456961939069529195297137150687664918988488995539831045237577629193200403601438885218430775430618303300398041909398714197781555466728938879096958101077256271004028351720956106399598662778480486727190996617857862160436864731671706075222554258351940988686507346491965108905279491157630410089516797849630156369796642689962868489648349257317894987149760391584360160516937375402668664064080199201446220754719854423892541115204328638930067865801149105684649837931496360956856537911785899753854859438512754204397558532405897928920940369909601851559914977699777386255652352283620382287334294047762900541014558532308248831700732163892901361393959816124354170219565235117128923896011052260875370838174869357477935321625969953430707562119675159613494635475167129000027852325126165254192450509261504745412826212982840842786558209264762555831049896423522509473394897406326325153506101608332094187474929684027542779967280599660906798460087443444818127454841091588990031514533808097690435457229214336813425825605633842418416014903643429628787517074657885490293256805788743203497758360078027026957373547537742100839899069143394775238814458659211896594723368217452026673859744690118052944302451347331152478904029985399182201494545828491816870407913076136699230463001929530462411999685391549843485254668361375314283231565138876371615141531283056928045468500688931690185303146731504893665078864743304410189339106254992977587694926898484017424390373295167944312046623999890566166600860196817961738286882536864316731072956959220105443898714204393571183475734282192727156788844549746076420342972835281606488783906767327342249793054569792206002461692177500361039088280222508188149158035655025135205416341364985238225742665194447032087820856171742598925800138135744165567607403304042186029466225592741648363176954672249507271917609801298188184684043253777416347479620046746937199318764554247549641588626808227309812423434299351430313802757095395372410500188124519720940516021082854959876827283366899431776947792774631116746153455474686803798366337590405946386016564341508922894778335028348546841203736118921704622814539310566992305506073906897233548854814067727865706822352232179089542537169806322264554669590459628873988141004537373933798223965824547801446673306947238129781692193641551656247374110463724093775169406048313558157664459962801447302929349984030800995015147044793877083837617945163514984216492671530917504614850534103518817920128136795690879267348448640994858379209344924503618748947567341174021283995810720911200848800569928871376575369384467695958406904716337360797942302975406387962895701972614992953089138917515815835038322941281263079466594351124103586806840687254838753088517161862263251342050078259968446182599317442811819283985903474898426104676854212081141821130528288862081922782394421386748778208922306727002727682868415069070145258731455912122799849122004303039594003002934997717712183673561068584022435730899834866325854006389599738429396729219993214896142020985755342220058480892232686566694495638290324676928137210223577190253594832239240974428650889497898331439178592385553480409211665255949053260591890156434074570256784944276824933171202710367970170000143557921179330152870469020908895878577250308068861598414379166415885230580150022103093727603052736959735764755713559989297766908492583961948591811824334144181762866975728688431668486236534769412972873312323207888093006731089978951824036916375583032814625060517233204838414475523283366342465704114903008866086590740091418634296483639754823262401027260854290234250130334111412960063147784198221076833276135219697626003059049752632353850020717521691217247942193967492932686010119582326321844194848596011459221657611241049002597229825659511093800634268100243961256669728945838199501082398992517437047223217373001566317027125715213617534428704631487340630938762999389017566048380312371757885845539459629672690093085066986317627262457693628964391929591395526377826736473995518245751246927501531515372540505769550713003797328770397144987340325263134615113329762032043787269795948117823891254570771958684603496598909981391392068488126524740423582955804799483932079488479110344373180175596749674876982871173005046008581344113555936957280940517178609164020482871804582309353595015792906065331044316359420593127837056859280012209705912335463400531206756745494557982161302551094468832682877610247024162350017130024980144097990603533305511785523742054609826165186753861459328079969805380231992905303716390090005664821060644776817782933316264825991401644272703696969936504327482710314860575468860673533633579484633004980214665873419490403062596879036751461916487398636353470469448046993312556353644372451210977421739832791174760323730888113658099398660071781205906599682784195700406448575328460333602219334084409310292541198838556574175205290415166194131865240503816836456530657064875283017712587044952768353851030440638602201011603541933054027820969190912906864119479960240438586758908200538111949645091285049908637799499250523443146410954868360041605531259662449524919596908479175394328824592066471832617801270768398954022735385394137305033693013831870892269857328881347944702691459146377087169659963383939591195196211165253723995703351264033540795545683675509846042750991120522649414615087063452374279763958347699312219829537708107593742483489948469534415003809666241162701602817464632484417496481792809778011942811286202033622951185196049156522471316578810410158843476643436697384487493267387184511819557465069434824629266161178892547856307684678740365563023996604971342232971000611749768792174624706351347084846703949909178745214081550770741117686290293459237796838180457801539503867684863801915687120622513057963555463256083073093259173440381697113113680629111935040680110560990743006040439335853807491347889717041048741886613097363265565820115154582240324766745591993584164243036770460495710637216091520823580999306327177225962071067382453765261460941667483350120295876440409276849369709298373113094421920051014715374078665366895608849727421148307678795406468280939567607120851133236917815536166586150647920115880973774555044251979897620656161851267023656167997492028911213684080757332995443523698062275419159854158523860213114913900807257189575559079023808419699774894874752606945927046348153546708042827107944937234418244802206521117507330491836946562817427196044049777909489957326721912929442423871074731184214969978499595142136589959255955156290699265246068765756999885753180025324631998476530321691451101161653661784218061232897406146400577333943246941027811093004246369979527800734286665108208977987344003820502000575119580568266014952554133568561751284295060176954681355416396524238530766097971783820981899390585923350014344195297355365335155127055448747774123048747656920296866278860584190726304794832081408790847156505037095511136858777064883538810181855212751345946784006275316047717645076234355615152761896172829402992540403239043906672322592410929221379474938643065243431159030308893849054264832103757275130197882428300149778683307068042360310617437138566245782375600953407100394175003153844333710253226538011376441234438106810321394743205441384962860035332762588193731523973076361436075903377743458656910678107691890596733142802973705534764468454870410256179240004077096318135191200718924837385875557776074520416571683565038845601419318281402975663524718513176154915917727042645304951335437284505852086676824489056026422609219968720080011152355639530248671202135485641261926699524138902807997658975201850752489385221370035922606833723692894925194932003152304719858760671526733105076828810518622579415672942426963348855714166686333563354165375415644564578308735966688441410321724487152081723547411843058208653814878254514776026317622251033258847992871542716050953386303099677041748384119131589421069926038661450273108871457085941780111120261106182353701854204710874273549698445105327520737047326494038998890623641786465395504348149936862537618176881998776215422384835567611209088352187046749107182701892081369924939325829996310505017036463652368729894969291498951735164720754667372950316009417624785765590370264762241755482178130673672969860786509206713845068117062301695963242045089868195594947570196675873818456903305666773654473121942760643484593713771262809544405956567689630690994990213427316481327579476546347327866853423141210983991166983648990396961243495648128284372032592429124767395841149613256545594911142356885395985551631667100925888741404300792970930029867813082835075206504156665752980206264888635672022774182137533924958184148779154499201188150785786421596806383891728610448879547443162965490641394696278626722019663913100818038369005920500512175896903098793245533425315090473728393516190706252229619444892113938472389385055076636424556899295855507716937485553061482546266610572540084456087830156780041800319051986481292072009377749210255127893085236856618778078403763910697356299698572633747171579577174855261622839384401043523930277581444285405068322018144059602343475163149439877990944608722229561374652272678382265722045917818260627405361828321497531565314538515656821180761469524549148637379925363431434007446654317300320829171258312754210755962084536476018230256137294569684117161882778435438973759530101386402858858227779676112968715247677510244129725221046001827281808886297240357435708997211368210372868334371738882470625278124352600395460736919620231788372617281914199143637850560200195301888640561940809852657490018499384786407877680454545108247349390605262088869827405973031602116566542180254247592199794174634275353221811650406632126541157638947006968080049388477489842687749454095139929737769713277182591121363154343281523161854339748181849023755655534800319064653189906528852690001851665279775947774627609601036630530722030996588531544993288587856912932330389852755713412111690332227413302769128823246276589848420171889616232899360352313196310368205008643916142932815406650399323856622828874734226314856259097384889360918748231000389094138426546708237486890214588282210294645365089553329382256826352215162863204591112440130113789707756097687794228975360884878755757526994956024187271492412837757204213678195465203543790437689009964819917369061206450575793767436855567644599831415607196900519599337115269046931130459169467408626013768838782682545248228668435696252083033699638955255210414369733699970055320759414213231130385895028876272983737973829829170632309508843519421174775048433813012478250892414687157736754135762290308798166651847228533832161111495892971139387662466835137748982971594665880227563949034342111067442021784602087357211576244166833420170934657250297532695343838183153146856219510695026601634231572922259414896934566754728755644996977161945969447258568205779734689400597514560474623311761870351001406372528264936604216454600104890057220053191821025543191501229214806811514274583828716542994154403139945678796600612205704818239193306614209586407388080383326953286177241486105490757491777040167286030449342614668116362638022579263728979730114680366549746137075781758894372356495192636496202149108536705912304351130023006734977987923165478835572921692717065357122136778199059797997579803838743040047463219171234972439962460757067668386171064177553149308001839020087962219959377030677736526409641357475584135147073736578234678363907331702211874843361053510242158782726658757669310581639336016681699278226837312316971166007543611779631257757181211202789869818364696015153914350646472908342680268576191570077571067760123344819347964495909482768074689955568957336650705829748570372008017691105247125001506439006653856313630957734587746609243285571153853839743033178782853976186817644712652052749025656686874180077133497337832417710260914608863616301139418232862715823137467991318042405176492344817112364981923077509936188240235350335073279575215403264471970015745842646769127741819163649005368636434806536803359966378770450354921622259859273240716872518328270430145422204023470627256919910351927498010357145806816199577082202568979393383835044721620876468908478502874568802013708729924677059245813920001658240671211521240255066993904121713623972660313141828175798685251972121625734900837708694273697396467002856280899454187744444320492952537595108479895045397531311485366403366955378678355515761170131257273447785643595365309186185300730261006110617984508225981635521575962422455244337379714135512145002448612756439256099317631690909707324142990077891509733821863761705955687510660015060060171042702436174074329845536602157750169590491263381697480037202514064318970901997014080957071282372078817765597377004616224367956628000801141514762477925052689113177667282909278642009871454063412572284733317011021601717379625319663234141726125876635440912424522387929287455143984576376902409730336907351392301837167184746053864629256158371238707680529079829347703172695195113737250225908301780749982270362509755272265826861030226463922807914883339050107881630472045502496640650057618358787165615807062627687400759296992377408931395823845458886574937214656977358058304750480281047972895780883193934469776919618759744592516349615906006206214243710627532125048699003508729299266732254068849922535383989385713591205612508383736952980622022550087060938734443122423551531484380588724493868580182500688085544016918945319143530715139703017772290801583210756391033227258954290426150867017819319233004949503515628138614755836917682765597644474732375445821367755382247298900415666558174338781732928123507558856257235210700161939486164066145040166549423054670040434218683786173675483714640593451399639491685883330367973533943523586712660326409027903690629580287201969178509065498295663190010026057279026630064610344061895638484397831519158498295880888560912556106599816119695973754514808113873026789054499375427398534292075125944283595850459940629942127753188465651214666266493493846873762973470657912337733761537974125252350187946469123392132914966794422859557562560152330082168372491890080232106142420362659304180045558806852129032587782720496261598443352813601772442527157801092989257387903596768646850333578700755289819742430102239707225428217249536133207527428945056598211848067761573029813999380607058453050198044743033464041157928856331859783760836623018317201488925770972799389402274621125087278639684124952248216722218522614637684766424814600016000321538147324795528445376285165732605873098332321903839923988501595997336378588797253998300649243780322456585726500204510672479858073244320309297285743208865963480311664242175520125388848116798219826717944206802835232384186090142044135631812401480812716385607743054826961158915502284216445774786252446106428343370085378945697715964766569201693779359299472851020180197185283036022175162031518492093014390648802205588959215432165597459608412259966649546544465899561802286114589470941148481555753721533830861740522513448574470815614989024349504532291770925214707728000416112761125494575504736656570385742863651591988677101961926358840213175244830343367300696592958541463246538253535442801749550141973838302707039635624936117142398360555457277697189908342773559479401418231472642248235868109068118363200859775689657092243152887173386872733442403083551198358500298601751364935782013758693581171920801919246331785101921409915586429269764550332202730595975281651490799397977930370060725972331443732213103020780963818007324632891789635035645504372112397089623552687372339793310295400822578069032117204424914513692649547056218405667535473936988086743546263141758840983916635784618860022292090051555230771523596658492007858861512017765194223168920526300569963102390901675105846196595049461831119122563918446756365989409218999296856435818030084906756945358410511280894121088210630938211978493295572312666071494830841743602415280127284581103068835466869652225050493571428495218341173798278445951191903898848116445315053017843921855608656027791438284467594832588378629407566625405300978349926566375639787753806811053804651491749329136725316222166095904916683496897539314874358806463797345220236646636333073335150483116095202508406555656691019284373492542659196134081915259941473193441653057283136517687215274368275297329699398174670198934851408080360904381506098894399528124859554889485917632242466593732702215861948142928149069166203663320057365418254826132162610311477768210978114347859569814293885244591643174877903399969649737973181188394693163401409708256845574034250989603906906021631482997311834427230155343666128408840332495524146969069735844300388548318543565118479569337154093963079847729896798852085415799005461971626402792434902733844122965569470074472458371853267996518266956596995878642866804795026173684098031212284785264580890518401411889878137590448347367920462852950261429883950878841862705166247052858886272148300285460610323481801406422510025079722949560414100676939525692335070560336865493353831984416193340004105689103970547743833458476250940535454496113729294138245860430332827577299772696114162463971619906012937668616644011499324435198891685425038721714933437971738690312656373038780891917959355485055513651002437317550485948321182051999713004317796162890007259104003139573486920978812768075674918551363471671184762875192913539502304465747906434962915744805058839136235746894536556867073615640733823335795205223826956048781788408338009751924362581379707621800924023658088813126654500452791389240009738750563035059406215937340886811745024769065728030128893855807579334532662168456606120870569732517109755405177833551215897554696823718621311651361574736880337430483888977544800079161292347565532174865788092370346385640923597827342787093001983274857523148837679802282683699909801066278327680701936453815718927764800228474425637407937488726476499743965130875839818651319178188907327538283101914364643421547476149649072892647066600825549031109356952526313938596885862159310096134197979180680179816408235530219589140784034994334968199038310589382653846338160856233394039319154117850819309935288784656490602166663945060621587508945461601278610563752583489024728935859474484254229048465180632266406532638521106146056754651232109104999275792061513333054913742328443222711673405246431782608107414238207878028230614867525272779545445969327553517857912084281223413004749618620364780378214350717450787555675557110794943427813016849471047286454366181027870884946495614087302223687097338449190178598020196265708825911643159452059154486977850548060564991245160758028671510678537150244318352016600071230450706446183199752111065399832835726743420551936592286168970776382853827351625475610312968308771232885454548839797080854712492664367675280797003650247550176857851464577369934606210827110214301757679392237621282814890314700681873260082285528727937302033152420662142255588713350642694319440065142928912670673347047897773447661747794247472089929085276389896542416838721200149257534276466068223835090788097256739938307244521127515427881141851769375864639223728082165420282057361333298811527382574582858736829088014823235506893202879301191632077435007811604511764585077284619322296901774506480378441841155298972971185050821397051980987211849108512037968965180997247434179975084746035977118147826881326057530358275426650709417574237468154080074093175585000936626884655388589006114752511344646102702309935525746249050937088011237770498221693820707204662725579181032455379652787070256366482280227359384822038660114346127337259286983539744848832972626593964242743331108005743092713363146453346977611789518124417391127742639130503538807731919170011451900267533448230194838195673626100769972563864694425394131156388602862238575776297180524909120131858940309444649567652087639648706749573430934912827707709090008894553327092324836103187584425421490656429379259832453124707085910879107262044329865265697409831064139093084865096194649771398611513187578369176256051788611909254828729145302601639992574490726984730777053897321725755061640364572111242479916553968610195859083277962518991527993328944451933172814259267366944231371617111627225466700475809512935429819790467858566039217821540930686001957542198724412551739569751598655385153955415088946837518998563247834665030578381383433083428546231099134726111481247419052047161438182362580780541292664884443188381880112841396731322945758600356798268251159674304098156705101586849708528590834230868431926790301479698973343942143241958040505187034195814783809395792615504641055764606495646061097183743663092691277229221615559323717309083982367864276853944585041983139959309114294738193759733710286125135681410113431121091012140322628248291887056722378221686734683372965280493508380155948195580993957387769261229525351924330918044432503944365261794008341599919783254169032560306601796976130434469676019455873350452363036560598906666751675698583539762427163161659255614968567127623797137844945717908375429713982817718001019978533758761485563549404004299950046427488275089845796800326336975746434711505250320981065140339230088948125111275199653667874370241138630491782623916632538328143689828017710498562565043786880565715154116992192244934345671903450141989578466811246250397294306588163234351188826809113097013926658856689799940302784625056922070140024617282946569695311592424549540270140323285312663943040463296851044211713827296424586781684867497092676389070130147675544955250102974338349375544338718060555919869283437765648155445163387622456579373340422094705749455132776840382624782854734675734706059104972774889662877264266166182055437160176097397746658252156532030601336939838297918806848087363004555753834568804705491426673144765363432775502384750118426443568445165959647745818946063558918397614711936226939964324043459891549961732912457473790264133148055994609063407958365133579200750849191639540935559156882799589230541227503164548969520187130607032688805819426334246160788294730466239601593651375717670538438717801488746613634184325033766986974898119937782658774940629787051036761109182806245689654866246028088729329431553348972851695652643296342814551592927424887021918764584522352503110634447484986633001560225675009249395132021414458375820467116102087684318110928985238317635904571906405878933604267385310821520256398560172021288581310654449107926497827295660126938591075006052525921274458270797113971355495013712693226592930490040163000534325473536553196906113373022027496461485191933130335121053368875614492058391770135431576837801097039782333698511266603406704043223882914086061278246913860329488309404605810438526738428208051773406443598627334752107586739929088401524804037484130271488370036444064160796317564667113724027407869780750601064924068778181820539758088121058479497061007361329808359594439282208330095326688920466681575819487277412514777718736081106101389233219840174953001151399124078936177091634188831593524174575773722264747709366886397257986119851483715234649801789626599368617689890311044097129911562053579290225990120287513304397669201982317757517752008824521457923333218023426799509438508355758692126897123401112469351761980762678116108382779082582690972539388917990016885249681629943420025485479232384784553918822556261286450173552157811474690021507667715829251355805566829447014049959155863624059940626728751326084602927177319622930095544060303014164043504225839780904126400958372671659362152159061341567984265915686403257944064217509551485531876606359288511645401727521561449976139660019392907531486259185016148508157105317973627112682460485451502087270516722732166361944540123297268081468936198445470806881520651079207539881259587159599398216087443177279853481132859099672227557244135804212828057275889670522253490659904687053242213380316995310425495255639578243223440639252865039764221217528932939523357174039579838258836360158186992374888388535578674033444698384108690535582096945781518748832574342667126482908348091994564138192628376111196850811304348340582145516721142014466348280862408831994005451844560544420551735148979861285995466751037977769209447070524109066159581907482228533798363196484730098132435507558316827529305356188519887515910853677528191186354049868736940371308990049497191697635302929233230340299476868872129252926402624362537587050762399909731916688464367068678637757429737100791964315869545906589301888420786594846729387292833864932312834104668295619110433934928208566038652244546400557525910717075031070839722210809298597640953159751871509044016123087353346212511377456780365519019166941842665441746349802566493130916619857769348976883187986141426471944048830484739942400535452665179936257820588052361560636263434243591854944273533015590424026942240719510109994833677503004928314979337460071481236303568460581379802982520886377511252287964483499675066092029707692740175512740449628447069370865957999737687309797429116802405324331904522308660347997023225969779142036508306656143644677201308675418789536143682901950121418939008160443194343417746692970907268664901329832340045022700669518386103633931879784613839986910815507452495126838041268155697491161926785573487148238360513911748736960369249800020918590999138460816937414920047727943590234306671904681012736942173285595059721569140625937425312874347713709863447765834421734695131297087464465202908115573617308859629851456735410576920663637860431951300935189614894536340896433026446331496355202043164432394877835127555505876499765735790447694916420369277487163301260731638098731313536805158214547900679489180637893983046217103375557630553119534476041846899646797914985400536887172987244210310004862102710956343409981118754728149179945705641995313695068783310902546145459876956219516844344174929417431669184202887548718809619383707160556364098440019385033001852806066737250353178088278957493405694292491691245061976051075087954297284308308685176063785846033842764313471464559987457680236444869020379438649705838058270355290596594080343109976084690657221373994857562265518527183484297772965651249280658330037385439487373021024724584311938566607965797958963343551825895251074852721873251097136381588377510682006771181110168596626344609548417943768256246192181545205582754404683949078570860677659551617064943271962219194683259037222575999649403249747553960936417002239045818541063475920542874005271074664098769557282220018747535179702173440299031107042750201958801129445643438621860951563918577095181407819122866752991154723480620719781501732727948859587709772958425328479553594756354760671099874864646998319751214729362951284611946545030205616811483898752969173479123455131150638738200994020310574909072565206131388899903487425545992452912696711161287282055070870667101813756154465666968114248880060465825766494760314085362939499004576107434156830250994533040841011504532871017905034253176174932315965675777501474715131068214862984415565819516816948727606876226725040628123900016003694914958912056968438872699859570813310277105984155312452759577257179631496198948197684189939358546610835954253344284677429622753170370117719797701126053049043196631240575090820971236564400641122303521163854913358221216871076361352923517691985094019703854781777528690287949319499377120476760276725386096093761618013908277211748399000613719242612949458613662442575315833754161417181696283437442363059752639748604362973427383215664750556213209601056438950163589943141405338526297064908240219484072413056718242324828299454764958908220315622599895156803338456908060103797739223895668663113772884628174603473292800325815791055007211663596347180246295186485022150175833399580180382596322367685644883227108406135451690538840863123901229887789780506474398790620784869993102028482553875722058661991391974378119770600850270598317336394430834936955482063698046924451530658093114146868407476211300868590766221806220755852537462069997167234101561499422964561897923970738798426065844381687197693481117824516259349383839379672545255233952737526724381962267590568275293338261687286079199140696418270902341838120163363543114030393638775180197699999256409409580219480423908648323912875147495419973723739453689247206969592319839988905663707924092344574428787133815761978819433239157018559788562628430112811636071773824641021720030611404670980879185217862406941552529260334747575477586520318025116854715232286672003518521842961998496780048522710703127052413741824733082539467134517113278266708179553097844732764160070790318358116443336866546907897053454248169007148250327475319065464280824976840718593678426612640949305130374353264410653189802783616065572981888668618973433709417095319196898866950928389987657064146065715091185781201581379553979818433409219568253661368532872340089308691318379117818440330147690520163371813064939405992035786276169410054651652130438776807116614243919896609211870898643616505110887673710897180726206792280441751190247599399425140571378729585082220577180197041868430729734836748475003093810652755426878780053799397304191012696136074282147365330479809749443220266401168335042068821920314636061149410223352928274001967871215969074485087156737856768613452059046611518583440701951588149884962732694336960176685427869851057587667793586170804892473884007299887607686436780090910322713911409107619860670533813465647110842194199470763710261734340451107722645781477704513677216547065590870082030595886673422973506218535699036250490096333728093987864424739961214369146538584913869616680734636354746057521140975088754537092838323054266272763418957019571498048132599127985829099404369406911488277389085644444576508361767996760585107705827172005558682862431655730624490530379257204517931805139644085985468776476258649568643161005510957517689374385985897170817517572370376739307861090839245647948933289876546907767674649469447266024935617675083187281063140584277923561591655499355261518392995848751915058096695781494437362921595282004690039241689685546086872285924168521145763878635415977812062437373089686577947815086211989963465539489146135836643244658952124903528102811185626429125415058241996246026272186486799030748030005647179560890126783772373408030316632051171051132006312417933120882546436762314897792026174008534292793911394374990859090109317708540397986337305723121804622819478163489902541927602500524886436108940743049062144510115133014081687467186866272139054564990567968648163397464618889527226553324686635145258688765752358232285666531684459259203433112319924000805211701071343546592971495675078532803664047289361339755125629037531796760910552296424123669791572530120259366033073362600495785009452832231209771651949930078381172819232959576492598854637123171148720654845427865171709018704436470288331142807637404470838721862775946702594333232370930293593888820015505512186840199087378463823648294836014728724026926173484210843819335665118804267738590388961723310435946436176254215109329949293796628246696029621753349348315534599715106075238114432824357958756046801829936663346927498252184113139026154190762101570232777464912829167554131237002272757628421649388240673741858577571237989895175986725568600702493511694682921171113852563711376533487112022676879462444600041932855783251617241085645011001036578193204466256314580375135866175958334510775841705204022698031471290583891295636747619296417826487441672855818541664120161336264596269328635225914285144229375864163429343101487229024976509832906753689215241457079293625964237491439317020877311008625357775069148569092075651782488478598420407064596334261847462588170731310996021657706771510081099833511546595845746196783679831720727072683207591757100428209192420228872667749052301871236104888403162747109376
In [7]:
3 /2 
Out[7]:
1.5
In [8]:
3 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-8-2b706ee9dd8e> in <module>()
----> 1 3 / 0

ZeroDivisionError: division by zero
In [9]:
2**3
Out[9]:
8
In [10]:
4 % 2
Out[10]:
0
In [11]:
2 > 4
Out[11]:
False
In [12]:
2 < 4
Out[12]:
True
In [13]:
(2 > 3) and print("abc")
Out[13]:
False
In [14]:
2 >= 0
Out[14]:
True
In [15]:
2 != 0
Out[15]:
True
In [16]:
if 3 < 0:
    print("3 is greater than 0")
elif 3 > 2:
    print("3 is greater than two")
else:
    print("No.")
3 is greater than two
In [17]:
for i in [0,1,2,3,4]:
    print(i)
0
1
2
3
4
In [18]:
for i in range(10):
    print(i)
0
1
2
3
4
5
6
7
8
9
In [19]:
for i in [0, 1, 2, 3, 4, 5, 6, 7]:
    if i == 2:
        continue
    if i == 6:
        break
    print(i)
else:
    print("The for loop is over")
0
1
3
4
5
In [23]:
list((range(10, 1, -1)))
Out[23]:
[10, 9, 8, 7, 6, 5, 4, 3, 2]
In [ ]:
 
In [25]:
list(reversed(range(1, 10)))
Out[25]:
[9, 8, 7, 6, 5, 4, 3, 2, 1]
In [27]:
def test():
    pass
In [28]:
test()
In [29]:
def say(message, times=1):
    print(message * times)
In [30]:
say("Hello")
Hello
In [31]:
say("World", 5)
WorldWorldWorldWorldWorld
In [32]:
def func(a, b=5, c=10):
    print('a is', a, 'and b is', b, 'and c is', c)

func(3, 7)
func(25, c=24)
func(c=50, a=100)
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
In [33]:
def test(**kwargs):
    print(kwargs)
In [34]:
test(1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-34-b54bdd5fd1f7> in <module>()
----> 1 test(1)

TypeError: test() takes 0 positional arguments but 1 was given
In [35]:
def print_max(x, y):
    """Prints the maximum of two numbers.
    The two values must be integers."""

    # convert to integers, if possible
    x = int(x)
    y = int(y)

    if x > y:
        print(x, 'is maximum')
    else:
        print(y, 'is maximum')

print_max(3, 5)
5 is maximum
In [36]:
help(print_max)
Help on function print_max in module __main__:

print_max(x, y)
    Prints the maximum of two numbers.
    The two values must be integers.

In [37]:
dir(__builtin__)
Out[37]:
['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'BlockingIOError',
 'BrokenPipeError',
 'BufferError',
 'BytesWarning',
 'ChildProcessError',
 'ConnectionAbortedError',
 'ConnectionError',
 'ConnectionRefusedError',
 'ConnectionResetError',
 'DeprecationWarning',
 'EOFError',
 'Ellipsis',
 'EnvironmentError',
 'Exception',
 'False',
 'FileExistsError',
 'FileNotFoundError',
 'FloatingPointError',
 'FutureWarning',
 'GeneratorExit',
 'IOError',
 'ImportError',
 'ImportWarning',
 'IndentationError',
 'IndexError',
 'InterruptedError',
 'IsADirectoryError',
 'KeyError',
 'KeyboardInterrupt',
 'LookupError',
 'MemoryError',
 'NameError',
 'None',
 'NotADirectoryError',
 'NotImplemented',
 'NotImplementedError',
 'OSError',
 'OverflowError',
 'PendingDeprecationWarning',
 'PermissionError',
 'ProcessLookupError',
 'ReferenceError',
 'ResourceWarning',
 'RuntimeError',
 'RuntimeWarning',
 'StopIteration',
 'SyntaxError',
 'SyntaxWarning',
 'SystemError',
 'SystemExit',
 'TabError',
 'TimeoutError',
 'True',
 'TypeError',
 'UnboundLocalError',
 'UnicodeDecodeError',
 'UnicodeEncodeError',
 'UnicodeError',
 'UnicodeTranslateError',
 'UnicodeWarning',
 'UserWarning',
 'ValueError',
 'Warning',
 'ZeroDivisionError',
 '__IPYTHON__',
 '__IPYTHON__active',
 '__build_class__',
 '__debug__',
 '__doc__',
 '__import__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'abs',
 'all',
 'any',
 'ascii',
 'bin',
 'bool',
 'bytearray',
 'bytes',
 'callable',
 'chr',
 'classmethod',
 'compile',
 'complex',
 'copyright',
 'credits',
 'delattr',
 'dict',
 'dir',
 'divmod',
 'dreload',
 'enumerate',
 'eval',
 'exec',
 'filter',
 'float',
 'format',
 'frozenset',
 'get_ipython',
 'getattr',
 'globals',
 'hasattr',
 'hash',
 'help',
 'hex',
 'id',
 'input',
 'int',
 'isinstance',
 'issubclass',
 'iter',
 'len',
 'license',
 'list',
 'locals',
 'map',
 'max',
 'memoryview',
 'min',
 'next',
 'object',
 'oct',
 'open',
 'ord',
 'pow',
 'print',
 'property',
 'range',
 'repr',
 'reversed',
 'round',
 'set',
 'setattr',
 'slice',
 'sorted',
 'staticmethod',
 'str',
 'sum',
 'super',
 'tuple',
 'type',
 'vars',
 'zip']
In [38]:
dir(int)
Out[38]:
['__abs__',
 '__add__',
 '__and__',
 '__bool__',
 '__ceil__',
 '__class__',
 '__delattr__',
 '__dir__',
 '__divmod__',
 '__doc__',
 '__eq__',
 '__float__',
 '__floor__',
 '__floordiv__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__index__',
 '__init__',
 '__int__',
 '__invert__',
 '__le__',
 '__lshift__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__neg__',
 '__new__',
 '__or__',
 '__pos__',
 '__pow__',
 '__radd__',
 '__rand__',
 '__rdivmod__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rfloordiv__',
 '__rlshift__',
 '__rmod__',
 '__rmul__',
 '__ror__',
 '__round__',
 '__rpow__',
 '__rrshift__',
 '__rshift__',
 '__rsub__',
 '__rtruediv__',
 '__rxor__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__sub__',
 '__subclasshook__',
 '__truediv__',
 '__trunc__',
 '__xor__',
 'bit_length',
 'conjugate',
 'denominator',
 'from_bytes',
 'imag',
 'numerator',
 'real',
 'to_bytes']
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 

Titolo

In [39]:
spesa = ['fragole', 'mele']
In [40]:
spesa.append('pere')
In [41]:
spesa
Out[41]:
['fragole', 'mele', 'pere']
In [42]:
spesa[0]
Out[42]:
'fragole'
In [43]:
spesa[-1]
Out[43]:
'pere'
In [44]:
if 'fragole' in spesa:
    print('yeah')
yeah
In [45]:
del spesa[0]
In [46]:
spesa
Out[46]:
['mele', 'pere']
In [47]:
tupla = (1, 'ciao', 42)
In [48]:
for x in tupla:
    print(x)
1
ciao
42
In [49]:
del tupla[0]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-49-30fa2759a7c2> in <module>()
----> 1 del tupla[0]

TypeError: 'tuple' object doesn't support item deletion
In [50]:
rubrica = {
    'Bill Gates': 'bill@microsoft.com',
    'ff': 'presidente@poul.org'
}
In [51]:
rubrica
Out[51]:
{'Bill Gates': 'bill@microsoft.com', 'ff': 'presidente@poul.org'}
In [52]:
rubrica['ff']
Out[52]:
'presidente@poul.org'
In [53]:
rubrica['ciao']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-53-b3dc3121a111> in <module>()
----> 1 rubrica['ciao']

KeyError: 'ciao'
In [54]:
rubrica.get('ciao', 'spam@nospam.it')
Out[54]:
'spam@nospam.it'
In [55]:
'ff' in rubrica
Out[55]:
True
In [57]:
for x in rubrica:
    print(x)
ff
Bill Gates
In [58]:
for nome, email in rubrica.items():
    print(nome, email)
ff presidente@poul.org
Bill Gates bill@microsoft.com
In [59]:
rubrica.keys()
Out[59]:
dict_keys(['ff', 'Bill Gates'])
In [60]:
rubrica.values()
Out[60]:
dict_values(['presidente@poul.org', 'bill@microsoft.com'])
In [61]:
spesa
Out[61]:
['mele', 'pere']
In [62]:
lista = [1,2,3,4,5,6,7,8,9]
In [63]:
lista[0]
Out[63]:
1
In [64]:
lista[0:3]
Out[64]:
[1, 2, 3]
In [65]:
lista[:3]
Out[65]:
[1, 2, 3]
In [66]:
lista[2:]
Out[66]:
[3, 4, 5, 6, 7, 8, 9]
In [67]:
lista[0::2]
Out[67]:
[1, 3, 5, 7, 9]
In [68]:
lista[::-1]
Out[68]:
[9, 8, 7, 6, 5, 4, 3, 2, 1]
In [71]:
numeri = {'mela', 'pera', 'banana'}
In [72]:
numeri
Out[72]:
{'banana', 'mela', 'pera'}
In [73]:
numeri.add('fragola')
In [74]:
numeri
Out[74]:
{'banana', 'fragola', 'mela', 'pera'}
In [75]:
numeri - {'mela', 'pera'}
Out[75]:
{'banana', 'fragola'}
In [76]:
numeri.difference({'mela', 'pera'})
Out[76]:
{'banana', 'fragola'}
In [77]:
numeri & {'mela', 'kiwi', 'banana'}
Out[77]:
{'banana', 'mela'}
In [78]:
numeri | {'kiwi', 'pesca', 'mela'}
Out[78]:
{'banana', 'fragola', 'kiwi', 'mela', 'pera', 'pesca'}
In [79]:
numeri ^ {'kiwi', 'mela', 'fragola'}
Out[79]:
{'banana', 'kiwi', 'pera'}
In [80]:
spesa_a = ['mela', 'carota']
In [81]:
spesa_b = spesa_a
In [82]:
spesa_b
Out[82]:
['mela', 'carota']
In [83]:
spesa_b.append('pere')
In [84]:
spesa_b
Out[84]:
['mela', 'carota', 'pere']
In [85]:
spesa_a
Out[85]:
['mela', 'carota', 'pere']
In [86]:
type(1)
Out[86]:
int
In [87]:
isinstance(1, int)
Out[87]:
True
In [88]:
isinstance(1, float)
Out[88]:
False
In [89]:
class Persona:
    pass
In [90]:
p = Persona()
In [91]:
p
Out[91]:
<__main__.Persona at 0x7fe81dd1a7b8>
In [92]:
type(p)
Out[92]:
__main__.Persona
In [93]:
isinstance(p, Persona)
Out[93]:
True
In [94]:
class Persona:
    
    def saluta(self):
        print('ciao')
In [95]:
p = Persona()
In [96]:
p.saluta()
ciao
In [97]:
Persona.saluta
Out[97]:
<function __main__.Persona.saluta>
In [98]:
Persona.saluta(p)
ciao
In [99]:
class Persona:

    def __init__(self, nome):
        self.nome = nome
    
    def saluta(self):
        print('Ciao a tutti sono', self.nome)
In [100]:
p = Persona('Fabrizio')
In [101]:
p.saluta()
Ciao a tutti sono Fabrizio
In [102]:
p.nome
Out[102]:
'Fabrizio'
In [103]:
class Persona:
    popolazione = 0
    
    def __init__(self, nome):
        self.nome = nome
        
    def saluta(self):
        print('Ciao a tutti sono', self.nome)
In [104]:
p = Persona('Armando')
In [105]:
p.saluta()
Ciao a tutti sono Armando
In [106]:
Persona.popolazione
Out[106]:
1
In [107]:
p = Persona('Giovanni')
In [108]:
Persona.popolazione
Out[108]:
2
In [109]:
p.popolazione
Out[109]:
2
In [114]:
class Studente(Persona):
    
    def __init__(self, nome, matricola):
        super().__init__(nome)
        self.matricola = matricola
        
    def saluta(self):
        print('La mia matricola è', self.matricola)
In [115]:
s = Studente('Fabrizio', 1)
In [116]:
s.saluta()
La mia matricola è 1
In [121]:
class Professore(Persona):
    def __init__(self, nome, stipendio):
        super().__init__(nome)
        self.stipendio = stipendio
    
    def saluta(self):
        super().saluta()
        print('Guadagno', self.stipendio)
In [122]:
p = Professore('Giovanni', 3000)
In [123]:
p.saluta()
Ciao a tutti sono Giovanni
Guadagno 3000
In [124]:
type(p)
Out[124]:
__main__.Professore
In [125]:
isinstance(p, Professore)
Out[125]:
True
In [126]:
isinstance(p, Persona)
Out[126]:
True
In [127]:
s
Out[127]:
<__main__.Studente at 0x7fe81dd1a898>
In [128]:
isinstance(s, Persona)
Out[128]:
True
In [129]:
x = 'Giovanni'
In [130]:
print('ciao', x)
ciao Giovanni
In [131]:
print('ciao', x, 'come stai?')
ciao Giovanni come stai?
In [ ]:
print('ciao', x, 'come stai?')
In [ ]:
 
In [ ]:
 
In [132]:
nome = input("Inserisci il tuo nome: ")
print("Il tuo nome è", nome)
Inserisci il tuo nome: Germano
Il tuo nome è Germano
In [133]:
x = input('Inserisci un numero:')
Inserisci un numero:12
In [134]:
x
Out[134]:
'12'
In [135]:
print("Ciao {} come stai?".format('Armando'))
Ciao Armando come stai?
In [136]:
print("Ciao {} come stai? {}".format('Armando'))
Ciao Armando come stai? Bene..
In [137]:
print("Ciao {0} come stai? {1}".format('Armando', 'Bene'))
Ciao Armando come stai? Bene
In [138]:
"Numero {}".format(5)
Out[138]:
'Numero 5'
In [139]:
"Numero {:x}".format(5)
Out[139]:
'Numero 5'
In [140]:
"Numero {:x}".format(10002)
Out[140]:
'Numero 2712'
In [141]:
"Numero {:x}".format(16)
Out[141]:
'Numero 10'
In [142]:
"Numero {:b}".format(16)
Out[142]:
'Numero 10000'
In [143]:
"Numero {:10x}".format(16)
Out[143]:
'Numero         10'
In [144]:
f = open('cose.txt', 'r')
In [145]:
dir(f)
Out[145]:
['_CHUNK_SIZE',
 '__class__',
 '__del__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__enter__',
 '__eq__',
 '__exit__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getstate__',
 '__gt__',
 '__hash__',
 '__init__',
 '__iter__',
 '__le__',
 '__lt__',
 '__ne__',
 '__new__',
 '__next__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '_checkClosed',
 '_checkReadable',
 '_checkSeekable',
 '_checkWritable',
 '_finalizing',
 'buffer',
 'close',
 'closed',
 'detach',
 'encoding',
 'errors',
 'fileno',
 'flush',
 'isatty',
 'line_buffering',
 'mode',
 'name',
 'newlines',
 'read',
 'readable',
 'readline',
 'readlines',
 'seek',
 'seekable',
 'tell',
 'truncate',
 'writable',
 'write',
 'writelines']
In [146]:
f.readline()
Out[146]:
'5,37,Basics\n'
In [147]:
help(f.read)
Help on built-in function read:

read(...) method of _io.TextIOWrapper instance

In [148]:
f.read(5)
Out[148]:
'6,49,'
In [149]:
f.read()
Out[149]:
'Operators and Expressions\n7,56,Control Flow\n8,64,Functions\n9,74,Modules\n10,82,Data Structures\n11,95,Problem Solving\n12,107,OOP\n13,118,IO\n14,123,Exceptions\n15,130,Standard Library\n16,134,More\n'
In [150]:
f.read()
Out[150]:
''
In [151]:
f.close()
In [152]:
f = open('cose.txt')
In [154]:
for line in f:
    print(line)
5,37,Basics

6,49,Operators and Expressions

7,56,Control Flow

8,64,Functions

9,74,Modules

10,82,Data Structures

11,95,Problem Solving

12,107,OOP

13,118,IO

14,123,Exceptions

15,130,Standard Library

16,134,More

In [155]:
f.close()
In [156]:
f.seek
Out[156]:
<function TextIOWrapper.seek>
In [157]:
f = open('cose.txt')
In [158]:
f.readline()
Out[158]:
'5,37,Basics\n'
In [159]:
f.readline()
Out[159]:
'6,49,Operators and Expressions\n'
In [160]:
f.tell()
Out[160]:
43
In [161]:
f.seek(0)
Out[161]:
0
In [162]:
f.readline()
Out[162]:
'5,37,Basics\n'
In [163]:
f.close()
In [164]:
with open('cose.txt') as f:
    f.readline()
In [165]:
int('12')
Out[165]:
12
In [166]:
int('ciao')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-166-77ca068a42f3> in <module>()
----> 1 int('ciao')

ValueError: invalid literal for int() with base 10: 'ciao'
In [167]:
x = int(input('Inserisci un numero: '))
Inserisci un numero: ciao
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-167-8bc078f4ddd8> in <module>()
----> 1 x = int(input('Inserisci un numero: '))

ValueError: invalid literal for int() with base 10: 'ciao'
In [169]:
while True:
    try:
        x = int(input('Inserisci un numero: '))
        break
    except ValueError:
        print('No, un intero pls')
Inserisci un numero: ciao
No, un intero pls
Inserisci un numero: hola
No, un intero pls
Inserisci un numero: 12
In [170]:
x
Out[170]:
12