Haskell version of this kata: https://www.codewars.com/kata/5324945e2ece5e1f32000370
Translation
My Haskell translation is still messy but passing all the tests. When you have suggestions for a better one please share. It is my goal to translate this kata to hasekll.
Original Description
Given the string representations of two integers, return the string representation of the sum of those integers.
For example:
sumStrings('1','2') // => '3'
A string representation of an integer will contain no characters besides the ten numerals "0" to "9".
I have removed the use of BigInteger and BigDecimal in java
Python: your solution need to work with huge numbers (about a milion digits), converting to int will not work.
module Example where
{-zip the two numbers together into an array of tuples-}
parse :: String -> String -> [(Int, Int)]
parse s1 s2 = [(read [a] :: Int
, read [b] :: Int) | (a, b) <- if length s1 > length s2
then zip (reverse s1) (reverse s2 ++ cycle "0")
else zip (reverse s2) (reverse s1 ++ cycle "0")]
-- variable information:
-- o -> overhead
-- n, ns -> number, number rest
{-custom fold function-}
calc :: [(Int, Int)] -> String
calc = recur "" 0 -- start the recursion
where recur "" _ [] = "0" -- default case
recur (n:ns) o [] = show ((read [n] :: Int) + o) ++ ns -- final solution
recur ns o ((a,b):xs) = let r = o + a + b
in if r > 9 -- check for overflow
then if null xs -- when this is the last number
then show r ++ ns
else recur (show (r - 10) ++ ns) (floorToNextLowestTen r) xs -- overflow call
else recur (show r ++ ns) 0 xs -- normal call
{-solution wrapper-}
sumStr :: String -> String -> String
sumStr s1 s2 = calc $ parse s1 s2
{-helper funcs-}
floorToNextLowestTen :: Int -> Int
floorToNextLowestTen n = n `div` 10
module ExampleSpec where
-- Tests can be written using Hspec http://hspec.github.io/
-- Replace this with your own tests.
import Test.Hspec
import Example
-- `spec` of type `Spec` must exist
spec :: Spec
spec = do
describe "add empty" $ do
it "one empty" $ do
(sumStr "" "2") `shouldBe` "2"
(sumStr "1" "") `shouldBe` "1"
it "two empty" $ do
(sumStr "" "") `shouldBe` "0"
describe "add strings" $ do
it "adds basic Nums" $ do
(sumStr "1" "2") `shouldBe` "3"
it "adds overflow Nums" $ do
(sumStr "9" "9") `shouldBe` "18"
(sumStr "199" "2") `shouldBe` "201"
(sumStr "999" "2") `shouldBe` "1001"
it "adds huge Nums" $ do
(sumStr "2341459073459237459345" "324893458972349582739572345134598349805713475890127491273947238934985793457895347512349812759843754935789264823764579842598234") `shouldBe` "324893458972349582739572345134598349805713475890127491273947238934985793457895347512349812759843754935791606282838039080057579"
-- big random numbers
(sumStr "3226441372086922776624587377853479847337712972974132438337484862369670001239020096772994470225823353745835997639996414881627297151710225511531964096744169250061432745090426473434814265263011969544855033630511120925873835253431438310765112078264467593968343456638192911133572931901932926042173627078284456830703085767045742592993317115675046185180284809523514401471899616946769853999994927260228242529122554420151400943070860074761460449247142117566128848071717626857862968831160522403600462386901876782397430496915236326265078317278631452936131097494809343673656244603042866040943975614996992993520587085036548002953087018993991194781849426678400601490411831817235705553108671156926478191282776803644293230070622479413571679959911888323558935402690306331840974318436488925322405626198079380600311354554610566961766306056972937647749051348396178514181786075077704490367773066043315882572267776412415637593529534357262249109550094145647229984108118304768659043564277213522807074215224057892485168496015599328009072783901019692977449833576369296820712810464321615941927798332258590082178816444403734749168164174836087133510594569703384545341025513617758279603517998810386813517913535419113075595082234374449544850721486588345425521879481088393877456336877872264953494107841514686471314172725775802183507340449685649838402880012792790715394431725743858960441557013441289438992984123489385755925997053536843120395540437317549433890490805619761952242490298024121435866343524586203825837478055761160347824239905748923970364109157705893583000765725974367352320732543822956756341679036944715085517134844963772901418229537280724207014436728365539319533101758510662262036944468343641203383895427006451016441724901888269340283464550540389818501380053512201926650430047816846564342568010763337667175943268756150199777069460378295067986542755103462072164995878468503310270589993235839885829292230528744752006032237391136898377782838238618576508357032364990466908131068007473437121455262187401668393087535758695504300787071951094976484469062723355995558742424539024122260901932784297140420408017039492999661925164765363076211299972329149893620458424983630403913276430002116869458356831324313629614215057468915196259016233484393274597254623320166410756010476612949849489343955230192070246316146210843921012081572976037608055730931333307783930405504568655681999983750080548459786588135074035871472909735679486516482660312877663022764684202365112453866788700551258907699314260547389005524039393128114842782867901659551162186977555869691527949518458800225879527082899396178126741819918557930682550454304795574619285884581636737112575326424019867286973713231499700019640599022728460745466912339084703808126566375196573408549337845947899317068884652738458108083945359879559938121189799121117643722313894293386193271850913412964740762221443142754359230616032085594988332920512641846692608685012988470298726976137436571565163311924740112601089376921184220957099692745577880151837207724515842734534592160979095736813135839536958143036261057108555920201268415112587459516238070774794243021448036344239978494563920323646991718761012624995328197847392231792620459958378306414061824851852850852279288844568829717276651295671818307115859866746405340636898870535890470986199506250399125012957685193680307709580244955603679033873967685780402096381514333517492667691544927736029343548404181882806113908590472267486203571007709148810885172924419568535505430831729659026750796770810976690370937218914206332126115346009783180808850172158972118004529273941316346984018846159529971203813140999198683763579394596818952704291760955013936901409936174190195860070352131259858574290704390786607635822862417343263366790558165751109616600531004740230526537824453637608716161948076913925867023934508228118552235186875667518834424979539199236340875489012660234666627667082845260280773148009247193763437318136238011893351723456957919387092497150280117892700232238155789257435211149782410781886810476175626282088285197899056977685855362374100680902106568460599888714154316530728316280166724489301581779813885089828227613846885950045088794822585666080462777254232622250068279135310883854126649177308701212270423694074569658840409386543097013625837334047955096178730709141603545864598022483935620413209175292836309888103248847425029371814278595811975255185819148220177837507688389749106971845087760264333763792206986691863335235412290290798185526079314071926073106343842905530559370322062547395426890313846194518869206614911773471686413409451594244355172649464219518295044938112010511799485163160365183381722870719717292470440606414319907251275006901486392732222661345187010117981235073517786782151794461109298823393569805782529437325743170808380401814712380868213669806341248403517152720032363156893922485850374792294225299322194587286701704942147385326765855361469777771171078015491681780000879196478942780707916422041307915679980677765847012207005180708718087230859101622708870207122913719456970501009514684010076646383795484288640285382991002797048156745995712491011730489409374042039048590209699987919265619659921551700067945443989184645150739917049124605104422465324035909825978094728117535362015221879439019409906846500818162872420334127541813835784737776390480546152828744382945800419079354245407235432334061168116465399514065895102209424941464957523440702791203643225388302825949812751425955293308023482034462027330358985228561636325780571900642351518237944581754792630626786502094529788598590523760156740261099840582968008381455759483507169142196475923882355604463670016522515080631093634220902716852296197661373842370040701527334103082595396277779398916833146846516212925235107139491771486817390799151123587441341414461483335344206149445674387524824284904999048750039606050875552532364428433692413848946518250917270970760882245277853092754195038257815362975895863812119024972205271368157588267156146600325691718841305872329078430005277652260514166954235738450188997431965480763855105676381072391023439215758859419070971553024068166864567029985113940450884694552548692728373834820135651662228534551434057039990875195517447194985300690433431064979130661235171147779956384448491605828673172207244132386650210990846019088813570281722953287975656142233962583234389793786947624025066930048562031810241030441212300092210907696753026120551870631773327546153887153955210688825431668575862543589437684309914106707802269049998522307043090203428891722800991482438457013181181785729970652922983027242210079128224867901664927905859043360766728360785638459016689433433291171923015128878616369287912321473923573105344074532976004943303996733414891818201567795456845873809975009732600563175638801763699760763282704459480492506728746734849245430007055407137812103807354954960844296517336847109614623251755758518497132462869084606162794267584965282311677087291248001524097107218510067892006783593815841243273497502085209673213121156943812062803628673369287375348834659957440256537778001597937549630196465939839805533633474536457209429309162615897681310973241381569353847135450212431845585732078987166437091398637565845646156170873310263460377032557728166281416026382951308625803467642338200943127520910857104470962749305492791795782351832302466285432604113816324733121307425884256593102057695522295519399725656520795679187849395021841001223436799310616401743829564256930608383506891975771354734936687654324144375245740891746167674612649964362464910522392486324066148163733802748872307263086435925608749749294376467334570717149243392647614466116050139790675820346277045540851102888242171677797916552897633554603924256664083841099338552719530121163892907223179296444616758667323426864770365042142091181300358683398157965286822066283523353886917846141568981651745490388565816679245484752792840463474715428673538776609966179902661150359898338762418877162385175234936135812522093619435848703043138175478254366310805305639752331423690703592367024537230244993951705982769289000820975207889528748264248537055559204053251692259604550521142592037265844713558117325202503176815917207523187987502019340232448949433581795041845622036458102509419864220986657522633574354140880206663509202094250285273851737191986607003544431328272603380613923678511751221593892949594289510966387531522467372804764015396718325650833643886024152004278618550238721822335879708650828282707577132508030939388314801470695322660343646640273999750419194462994630441074136254117315569406704381636693270542461400177600984107485542699672697262793891532678282225612726570539831160238317268448274002923429535871473468493510329635903903390295772089927417113371298359224974021283957239843124087839657135875775174050266656102499759789672632748953938497327641921876331450219076714223443162974220424976642244402663629066240429334258673612125052906250315638521577365489756010407681182754550135085933443593476553427698675959204313181129726697626608859881511207495868629190256198302915797567556725653268426760021461772113682033663929671864583169651725601711728254956787890043025660364446879285685196068738896195191064350261166772288894962857060303008394565339063032377316604955585405815292932560434265643651071755344151924388317139064345891307431320037425256620975648266461367811458539840888380570517805754331731664665054593556746156847972048593732476178315720602017842706739424266165595419695874639846280939637235483688778399505553955280760346493524349199920791558747544446647568197166751198169335117705421231765524556807467368789151878646051322022878802315990075702947600400218372136957906274737526403400654559569570255529046579288507825262600097203033001742957870486611296998928567879458239761752210793636179994646802505320900231197304449372603308315804369100122229394573706074187321921540267430837717979556096235162638017487979414268935676295238437567734248758988648761284770555121438714558800793884447088560480192061544201078603136508818916102646329085557463020957220148995056923474958965130673686658687885463238388207912968859467758834616709820432876929902201557224490328372585914901826408258024997353283520431241176625753433786186117141085722069929976414241802670724930179400712427137452422610523813688709801132253433802876408226718394808892095933734719382443243174919857232552505111154966060311788418619457816826300971732081051226276712275746003579793852795288802695788455783388511648675211224138403953517303622582529608345180208218174482840208736949317416657896805261199708611333223352904878111507307076433565871216777773069078586135761546565671458683475361483786044603708241195141723894080876158913467747476469536513904884769989406445217182602385739396940144651621089504970450570604698804865179511575629566006445553050830359740530421154637192756881157962119166859530587596989847080841538376430017922427279355013901183725657344265807897511736661035182953627387357566239542278725777017776516430506987819804603357202124847262120543804137734328383829185131029524744547899053017184624903704398745787298635527193814222727946820142689140440824496252698676077014752259744790766232981409320847582949881439545389226016879652490489108082071211601594032831288303342907066610508387902894404137660978940556890648345030928570842475341171474825959049628823529882520996250207684644987857456892011651695295219728602943104340081138711972699212808825841839459969759755917479398574849848397079685583573484172553858678835002928272146200573165598321052917273950905952007654851336093635225623196440904627884457622150418734012521270845665791064606729352005879510183628887631586511022729659972321885411700663317323266104695888820590279051898578173593715186583548076421736091895749456667963155078576951804465696357478664345327660025814602983927726817464233630349920579753413686582231967454446487051092952841191996982257600885729045264881113245415380278386572891118294679323808711012740853494599673694889785864591161436479518948933009253407765914518684566124593179706341039149272693719524890744605796114158281361844703348446121692123863645394257281855549059099297758291219199472039915185359677738991198870741383259744934339307148350261313384499555233735512755374772013144255554327502911544239664501023764120018548030383233305855796416046835044312699207922209244985793060563763068891759504962595925821464934328668192165964333598556190640457220088940254224647168289458658065125654202935166570690614167972553161980184559121845099128369285396808791074405066025594236690556262329836978315141790103905938453900870613541453596350653884671878876234191412069925337080538223149273626785609147172819117979095837504212336668848669721646077682557609130187818642742822279573278199351485085650516148950008816730856290409691799812501801146737197476449356470638206210141762773729004873066900386327330702640259765851688243873727188258416543730763243837127327338251060558970225214224554051161856106914219278395733890833175735332470454756909570916144377157868585070079314703918400752684859554673081359890305990977545583064582339200464591474783888881436860811247167040809002863206398190474099949882422339913741676024696356395954550387849838272979346472426477165859045099660765807371590377755964536704784546181911986495319067994703498528093560434424012962108607328880193725391750406798597892099846881589677748728941903054266697032993504743786293374436339784688773332865936921987954127148855716688028121713672892701594427472448934919151814397361841491952329300374827060956543555520481483651004863225927592801939070523725737642917581997469885660477168685499931002496216144149849811626048941454114897292388261175412996578188580898205092068224486996975897168822340589028985893123804142485190422949894016335626401954698814094804695606814705808403609302362901165855003437984521681938745429862747853314149701033036353773144108998959275792097219709959615606891077083757187470039754408068901934066027473768275046391189038806122174551136557798526703983259051220975062223639790942031228831495356652197374903487017236984694857055863236935708179515577929067586774196831401950128093921361790789915598482904743886535170871279409412725045648112987880220371626878300081209746334311800551438754163412417884669594474547242223978516337436739352770544374510824416126239164711738648939894883687105162834975883110020721175068288619520256033787752874543878908057489614937533031767324120379643846444857975073631548048507309645354312431031225188324911014096295643280691162365127364113816144584237805336667678984548268054557321716182160066643462463145507150114835376675289128476774062761313153379997953804721221482271469626998433265487579044731882269344926173687495255457590740447932109253678940283652975948546953387962771176016375986473639751599498496484822484682360366631924752439016459698850697815876683509624614722500554815239157229218366339378767804883941581139793474496766878385251882322647759883452541535353702814433895227284841366139657752733216880533598858551471856991783180427418562073682571365123792851225004743402371435486296504185717801860173664451133484409533244837392833839887829390085785642496218924906959140132634174148203242168630127044613618568230238844349028189725788188214759925860349204755609660018505100484011712005141171397640025222473319115058727328130867122193394509556344225071180687726819996689049919554413262539442127686943375441522022887733460840173210515101963313919045028918827158504195427877980432705628300325914485965571544260273854160919665923907891817279790961645450346323619677160680189981871644541045380308736231898341191501892876660983348969492160864240640820283081499627787708769520389983545848661980212946059514737809125452184629443993949371671427547461986997926050539728565847841236578854817503471200843272676835192967219946654313145903439130138404180496734467306127604254042571382882388182951511485473201135115881670001946653331105438937095040800769785535166783846249668443137511200684282649588352576009715162880010309794748824670729929381160581726368857050073580452517492659306990001587474681947676765026196120453568447337873420274975451459101071122738795525885696612456031852943398366176536864280378927272846439942139039511691200648519246202617957128213156928214010140175922814377271006344741281151805622700111992633599444489980869134052625388909166549434401135561452633840714409094800177309415300333999822670577908565107554871600075633879151786151268893598661024783712803374604462890424766340755564738215281776550896005321568172565190402881978656406860148190710667872329176848034181685570429163588272941915305966109282251334665597958824126768552176514940320492486634532899781845805733287888975283401732724795531327151378233589957688372286153603002024383524728612023568566651891675473858236282080751749243446335586787251130252800896808388088789695679235263165904635750582019985911125460785795750056578491281733907164021809141461648208227224531020025613244007446282251137610726593485116250714174631899024682426561296350409468672791952869249445736670461082085972761474552266000675942932879375471552340658211693812204953101180268885743462995274287829060820058658775035194790379035910778044948167143829294736998909988097985551978349715205497178361610985338222243526801362071571948347722486373901874187456855927550402183010531918173006269813475306771909444146330929981249464259424375920014005183947093898325551496076994054781592773824337891196310285844869181624130726435293499948712313435576718067932605950207067598728342436585602421170965555093732428598051331051434914179455915143139970396617863560701492407679734863721497492130538835508278116888567948787753470357781583585150814124152968146983831560279412669083573754279454388558488854758697291307567269775253692292373239644916516255405270163681545570585209661312577299409119060900167030021859669648676887884778899781403375573381909256037753258677098900410693386749801158213069519444521049483061277509686474654772908376126722477318461551738497151657492283324926570080692995690998280148354660315410525661769080995921123211434389296949259871946022202548234495053959699216176259700343189034380057416610556838178413875005668791877737202605854180066291981869285501851979444027367354996583008823366198239984595579751815328745512555888696245046103849794639143176070076255473208522647634791459084694458442733306119839260000879887159862607664613101730427772871318319484201446920934347856759674715619045144988773002362018346456708614330256952474839987474183348183550275092764831440915869807516992384643694042759217202611347315562072986563458324996911733747493100901156512647454662415088500274302856702939696817457164081740677969731444239387059649254202268990804854136047357900707210998985325411769706249002174171572048665460673091154501254527793884245998669880702309234210868289691285867702465595058943059327431115903825576802000014296042716595308719765989975619124321941629574108190056133687647852844436044794776035606180086342083376619482713629285464938288646112886227839855776910010199060800292844178082164267586022698868982875023690703227644178327942400193399305285420792083181098275503897545039234800470110984241651422284691526785639770937674931503959417306587327437985502019716541532371548595546876098808468506986961685131569043398930662348493980890848740409964866448128502704750062337555965748454751126375473820242372270363468565269553769765980542909082728176506588428976091959459970291339018009930074175816837100050823690965347572287024111855640715250201248989312287350482471729431539347867009808229266849194319196494128442560170345391001685730237766054093895713544328578753021758308585619716703300891046528726910696882845198509827412268696652834211299440032683884136355684615532918038203869707394263748973136371097216000667247642348217510240006656583965724715196992707140676285996443195051462647917569372078389398120638166982947395035620287298867591936512155227903590609077522272285011527967523579445493063039743324000030717527782189763873242538542762455269554042015969257263102200185579117048243223705943807378680471573249664366235316112385399574013623405960317034172220511782227166913143523918122407847294607294575004578486704729488243654299326986213884266279995963643420732866380920876395998550383983170589283123075400658152485399536140873851590922248431797092917338062449414725737927615284873519191027515724494734569783455551813205617479707763922785710770889607550890165929259212894070817017277164559400590377699537014958194065843394297557742223869330230954974940765260818031544246487223732649417728410171410707138188889172139737069981422239616932943198232719917640036310611772767911531063426926902904371947252301493362574121952406580261402770874238953339176284490955955260894164041330078526847414464000605465919683333961250148145987481956013747999367216128027660630660017079503733069281290429444046944167727603238631975958823474086728341493510541345388695643635407601911885973548701337020764127780339271144872269446815801736260552209109568147886470671985824820604656992026156818599955687414734686146137602919181404275992813711104154810188931451706422699992531383039910156368532499422317861698913453330853586703262886746407516881173069280714929239270415945636985973723348174920492599218568822470084531367125723614699283885010841017621562399545050154330175624601783897820422000046319174292714908475780157499233833655204512656473408700990648217426126927255720641919106970560686952505094902349667332625047424138482358356393843851577715968037037477601944106190789300451529835188025223533841390179390058387668657826633920664222161913986228977647235776291970170178660378028572748297479085635147290221206306555275231812128761057248477783564370969323694240556080303746171523510025676476814957775336010273517848234253222634950233229348671421803937485391608384257120701424330190623034994620043661885102752720155749541723898866512414164645188042908639810378279398257099386644554575032432021760842055886656967400937117198907439929376364112476108844328733507360435608873156158103867795805585469711842575187628619741534714388552826424067252728028474607092748982658402297626585313752943865186276476124251587802963132215626497557272338256915260465860790759611808170885283787231640813871617582327188750135347077172609300785401276488190999714601308211663059759540004125569531392088426474499584096031497913807973695619199664564238108984449551553416165115354971350979898773336729352525321374728648471430290807384993876592931845409945515024695601864882106185694934248411644772131509536510767116693435456092328679551408591603890888285813116522073143603925511573942621532880033283328145864784248628348620737948026802621925188263214347404393901512867669221983808523175981465080569129441030775054625024184778046649368957305146740898222491449060680234549401286016843218343336753791999869471514945095928016917714000254163201046691640867669107867557551835830726047908646252674320901388204794258745884377007928752806154827765611310345037082770987510846837013781608293756400063315419692864328149221072248058037559086364551117925128303142682986000128472587940412908538226851112961212569841755687636619344731527057790272996031664783107343086015373007531682423159735863411057848140920061419444333159166924030850706333333962087342361437684177545798726687697985469082531920508857171551031150690934265844258856415087550343084984494211874242234980753499334227708625328042616036224165386092350717566656713880337125199282861766537660615625543605290541017781095253789207241317060421221473610381271597860900639901096536858862144304067446691503554935566170700111163032992470951082361017541747800007528965305700935902169706684466230957433958916423573287410951942013822851442869414940635279993834279504554452913889361573358760028004539145909124344091229483035400119791055897221013676546394794838147949842727929150231900482297571850113934397477205804590246728265577752561264532607670719950859356985318163955535137461361237987614547794280923215934556049704644586743340884242435792237098871734417827454008291240107750958869690149503127465073823409997959433851517321058238659398523222580003733077452308803926724563300080123804574674994192942713647226443138273969073203571045487205537647456614846728025476643179250948685425835087223427510530861581224864079947077575684903311730092523848628476207979742364240068069294299093823386962552889564614268364562495096206599834854445011246847277466775277966237860227276853551645993780264658883545905650456294737676992125410247912261133354490532409160478786782255482404753899173738446958971108193616913585619077793310537751252301746799127923028793903663962809971227621001991476126242523423600578827690906206764492574878499652990843755593040834529971423773930277366300397048146311721623743279739856013841019426966879438065196277062259273606141520000229887707502757937651183327118288745528100694460878160645070940885568961794233771611875092985171514005157334997853653476064194715757580090083934608677836551966791134777110504176689364739945616796662000286745502906507207111051512202085887316978869226499530203017606538113569425204841768002513486411432064577106361515241859163278015497682371622189987834483024369317756422083655708996155253133008617840958976352954889667241623161033498442127017208658863000657892575960958177202404217500138223614706247226651647371780405192082734714107059973654147356999933950304289840497907375369022291087905391517840346261328460875863020214173049801519682130788351703927671326774414088257755945755262684574147492390352894308597641756617514627792535114073904712721005578650347676668938415299267363339630117310283219586149516049433991472633698642376619833098894966659598302920579884286567013300448140022251964177187625707369193170484932042188423551906945400073860660946369812011157331289213815527823837796679524334494301806020771670216168378555366610199451132680822126150260229326554576101076808316961282311386028191967441032030934519726632045570447054011862950482862656825810087818381166946834133511596862652712428426636752563293854374441610945645892851771454443842361146876698395347813592286975597025296557612045538404039474571587717734280529847981481663443114230843036655370737566475523749925595933561289385990261517119848739575038248651514396101701937799264462709883083443596798140124847136220516740780673118315413212321288237697866325887201229045539777424720448775489280149694424687714376675926326608968789065845878246246464395837085020979809533172551061529280574453823158832870651049111349868528852957861856521295854172112887988233648047409808160265726200073677312536355401204449741221502071744747451370995242163165815558379946475327656158010592709569562840676978170637263362333917138668188020830234740549458656583134623136987363695508949306552714292257779687432115056044648509744205459607879178749076611611486418390713878732098371255127830109809048913653041015373065044683891631814421735483073819293268730038325975272782749093438444897396559115453178171373812958625339044585736652986424421730309811804729012620993894083419189779355811056198344236090194954169811234080488412387694799688798173404257971080831365292421680955366578992660464549620786082032502844225889455716123815436840990258571055418799401854996396448722355396178632392343537306255358817649242744762623623332945301870164118348022778926300207009416014081982972267540881001269183911555774617364421279394899058772610038749402459561180091556142168958966067150286983248389389374663750294689893922767081708251188781605109196695564919982783738840768306253081628157271105317222155710441288464899910717758960309617489220694339301504797837096537817411930200015666806254272033452406461154664455517018882245758485832927215840814187636984009118857179203630373725420591201080349661927177592000277425324745322153525426533368347144563318002681750183982911497507899860580812753486732630102963859353043715664787047108762534602075199657219122754679938512275253062303042253828807305062459927498875206966304290151478520123070425884856768305220493310795752977161265552951926411694690502378437267235671098688256021951570037558314922623606108449362200918038954478877236683704615887984078500351333277584342550361398653401316469473162070897503103669760637693562963344188306836342616409852585887529417590194090955817057324296893728435116156929160280474453037474694989562199318607099866045039934359050641641254460264039137788298270752028917965646563979209348484858023797468449729358113085776659570259497951703960093592974058869117715015701628369068328445212241164915337717605289945021280182822596947272878869278318096234780130985390296102190292454321865190472776067810118350318997272323826526407812492732824730202046819452743123057657913778703058589613975913574101713337788206187297206283202291682835953205885544524926622398820844491637124505415284208269994401858101445603147686052029459011798837540354334269131398303559479091922823347893771913543190863915635435588125062056269897391149867962065879056897263001523552145139735705379060426123810421571286143521063487526785812572064418664099086862227735036933144198572157707146242766783864948692860780575133294901694117865000776528295055754083860860457210621039086545108484643658440386489053762147912842522340252052172428714857888055965847749605837073669774540897033568431125792765733869333078134776081297072974618110089485005103228463843056669227496581593213024495552266983234816716272904221443147127794207964224079050450930818369547693045354985879471092537120907687296109368923363993986621941161154052551453506025606537218726893307617998654730278336205101433373375499249466779370571760471347360246325816477877144444186461302040014746699013031519169197391073842673281597753111935293112380608966419149297100045477958713467983357412746167284491920214947362427531719420504023932391992720906907630855309221389002402055736233683488519330119374067048670674594162126308075073425038276522448417536476882593418656856445296944236944355874120295373890945317403793274412834056119992760551864865462071396510837224167409167106450063964455306976106251668305655215911987173656749279855844740258368900283687297669860138324348498178643053751293204707530342049119067319664232265761646328112909878501923929606495658830292635517643926636641396454661256931539356933019194577198476832133218592051969928398816899164702337095228668100781805593517121942802416293570786309226298233711495579741702364692525581299397643951091084746718398867212805504312402960798304525317253057279420010169370854303798134159150416233605081070047675696224645412603695588995551434734841722472965133627529986860993221443433119730836300296667909417263315798552737217107916575077503302437484828293472509597070780204872866763008696698595602565415085826668129263710699041241551169271915640276796579282038857536604101143287082774027585299828844900208182467341103190855377719863808774319621065735866204468484068748373201339755852270051825949949003729599406305997493835308362149996148533370072657240143438584959040919200049801181963999014986156109591980961997488821079658580947553052470452449862932653819194789218565567177529016674738949377272195512901176372612059488871727615694914086365253798003353546725780365930850807893707156717665650689340385855153700859844933986077195418267681619017505861583126855109108250216956454354292907969903940510940365844222404187581603333010382416817428241263012472325057736908171059304873520931332300621269403897063142894779385584774052466647497679765628184744424404553630121219136925443771030577392464483319870089342315591394512990522566833253344390128485437842510955109368415648420137784646126811668008260491793926805076343517936253413496030411301934261508619561014343221541966513533861740439669860632710791340681451362681900882607738129686879710039865874162635488710387447663349661651924403128202211057441474808096853365125473373852079180240339883348733855031076813472099915034513977689408174638692279048569361151637308038305239139287467912414719899098865108129598063518365136777040083086817971744491295240420613500710479867005656890346467800331083132195234675369057747346316851218740233242925336950511312840370373203047390369968586220401190135967838480564955493966600534765313362095232652587169548971165395398188487660935974398268047506665363367373525199506506862350395687861207800496238534070689610562322649859966610131365588817517373361712011787353702634532300869644342379429072625598249278648884636616621737386519275809279669824519631751171513984586737640175212327923240890392487911836939365712836311546891052185235183919912452982381655492230786794204566487569769451044930804417867322606983697258678038652229020317537754558120606103611883676808373814672884942287103185580547634454919152502765866623979178298731236585676221707354705974163249531954084208292014401399454659843070532394514620628443108921251654741750503626917170151808488914462676479043912612136320396151618343289208059444591050446517253122361819721149419269800879591336898063387186318890450359207066529337393301229126808519703539698608634142923298707912202472274669350835676187885088467200240255266267039959850961646995546272296311361973138546923220424725612645543390964273459062742030830346277532127897137978046172645593843861160349959727837661040143016884908857089664359527985862910057337350467114662807829812289575803712694751874859125257906600136352772931705811207630175508524799906943821446167572117824920271519147424387846776473289509352403662883414076490585327930585247873571619014904532946628112624757581082956216105625643995126362355324547675186872718597076279747707319531223664356218475335731671247410044063099459875720860492778548392264286314957951614994831185017952118008200196090246641581519061745041839069376188670387273918105076202657246956319245236531610892026616705655697663126378189083878016786165922827154583396662405765637256484694763883068153257288072731410930050672848070063505066733968205448244861224584006392014539091599412204810010935902857553559541048117953355450146750948197308337788201197279721392513204723623450533637592979496611559618635243414677291543054103079213064205671321481514746292501568476154910204962854863824790363518582100313358382113079822729238619146761490748401923221223295649628888785885327940533101424754703361405336696178295453074716262751738269153987145461129249451354484793917341099134912353451446300665450271022870325663052173201502075291623989732915702586589248005195587191564919774493419498155067184168549306793173948227111498779628801483545136772435979860117180709077509940794695921676343547002480021208301496139221722466614829066524825991740209337165953514767413642829365446566893919408890934633450291416871499340002167859366141518889059070556253581539208541100100287091365775678529510561170794476492350828088042086407924514191600757938539027187391523245906737240979077605280382685415259416487158307093935135700307811484010825981865325449761295197636271677594650186748819409408916357499888350143620171625415673769427052997768372747448370548125158396410944887644363780377420396858646620977771210056450699425807299118294202849547464978388415501630566877117739147309664227869232037361889421218020434950816699588184923698771757112830419098857188697980055781359399479543361172741114295894890472594142630274073695014331243455129774318849781407029611817799118458929330475619084635613265046898500577160824286198744079610517227255296962618744554376183826688651889440120377211118506647841173525669014755501797302023067110675243076680739066698100323034470245029198693352836344348374729054622810315610220996766236861714035679976166593471511243784056398813457735328227647111092285205008471538203957590501029616325753156266216659934572204851563065983292170481649354447011080339206709007196760714223372765150296260539773572235004442863091105067912373484723076351158191011876961506404634374008369256563667044157901443345130175898342726600411833491388907302509611959256617138000372759506286921472027807030251811147078585625375822620374006039018158823687660037581040255978818115793685005116817874900560315182960447179129572883291934435237229390911996687926715454692821024914342443867450335332416532950459612710570187765655214634924236921438099843627210709857760236809650896436213258769155333481508773198546644144560592728124714112160979464369807349755842764826126815973806719664856373375615739179864428108204631723356875136185904048292602811580390504018165698812181315743539535022614377966301337775606032048171632624654734247581439553153038534668644459241808537016845572069415092020217886309573565914454793576136831212737958098537724770826302912840306802465954062702715740116606388667393854146382458188633204819227088838510960578193053521854755852367561431536752615320185471663060880672380784857716474327796375495995344133021397834124258405196408853701036496697813570105224283907893434062892838263830274881811213152670394046283753253427676794961482501711885742700722916620849168935574603344191637807129358431587354932568355035837303663122998046794793295420364366816167230405313650528572534730590511396937482270796231919546708634859252428282067577284586257856927626538374252805911046846483994548190537405629886507826476200329183649114017572975934433269035996038025629543541072154290724961938839540143582545043912433287780644120314705953831902141464223959314819393951179120195238125214682187108861849723133867607270997567856525447217191461169375897241755389929062963540330866073465686924375624979125913924764809371920077182728415369795095842639974283539594442290147646054747498173835561599558786607116192026651330694802728081164401069583256119874999744511860836177010150284075234940244010647192930587834228973321503918838320026873007664923743064176446186333850725245241557058257932867896049370466094001478581954271410002221611172410243224434498070088476685143059714586637211578329324868547725086601007407323483931200015274810513176979233205367967885106549022749064630649043577644010009880788199182002556032115397328914369461926202900592128541390399622681012492933230360349234405100679780681720515059556671271838995811669366773818452218537917525992887544649899760845340171005775955556458478828990370657752078291160911796261675131374030496496367652793793072374920290061714315022248506886200863574337055563541081552829075901666153094466225732702999496162917954023764621965849982121384219915297101125256728207252030591710195198687621119334158621340810628697103565424461880918178716188872116391446007946471592770821460465779960734354131784493834023478240343675287847518020464301960861670735131040107543166169071263908064207644095175743322251831242533413344020756858472652854922340730731252038962700045198536595130601657148924226746187732315197993513752181860238257921351834377549941812298490816193282219453337613191891401636428168421310150239159877818924846618746434080890330007188089093649468828352204363886811741761074467914913821991163598718884799940947355252950067945835686949355199935974384998063576268573770883267641661983321504503876071693646782611286299843132152268864446347265964234085100494299923171627781505514889431288313959788042223643479833652286490069902191728322626994967814241301895264810700545043199864715454437671185652968281206432439059304911365887275798613290154982322514652528704844140266031362364008158315324813383384410544517279548412621104731140755220949648512676657397380037041323380073426363165395793047625324334529164265949176513004392756103070151408300201829501816621931165875380038238842554531646555989496927105011455646373644873535758075622876159046998616704992188783816220713784293747495908774890098122411867497970027409401240672716371568912183349482896695024759458469605566197684636749116548456148433359252457366652171436768139516326516657413159115652829154988218473915343014762547583714971685546046769400825548557065094962890954703003909638633547324462047272165957006989359947262766685131251241975936902385313341994418021639900522598812275285561318399801912014537042125843666190221880845678279616098234541167336261414921886808480826610130750450074483778229327355254260785782108794733303621343894502070878317542764414710889301595997213120762689520264449255988285874285821362911997815219313718750643251244921707954892221602688243043878710533543942566569738840769959488259715307095278483900553042798652971089917116476846173383003039865735052645614039549347488058798133893761288399857191909835410654787946788459056458591929321653624457267636377162696382412468198423408961910626406909403035559108914308265640461086010926565119689195201282501732243930842226755597996719355698727413819564596391868342068106612501484036172459803121131910963828241320652234850900987394113045693255322600286716711221864014574046423829332380347902034930596057459923920557536832928495188005009676347250920448973384907982688622955466868678330255528838853793247516681045268386245885771957285263239053261076546990382800516748875333878249934130888093705700821656473725291804435135603040761247742501881676280928000093005390199042354095863789624285873364124266775970717610191553800980228386770049320667329891711090111858695099825970384942004750740382509094217714798540420980092471070658762158787338871116152306112121265248535016477356589859663476847859995559600592084511652145345361639296261745725888910105838447935654216655607249347329686985287772398483427054213756783870742013058711818014559078339243057810808738540857056870995448082552277733232200597531442635804827589918661201521271137877806607394404835047115175989901952704811111347677663946998393201930267362770597659714216510835983309471840804067827620287012044261187038428833904071558338056611422760745917951790434547003888508000705522179541914490203249768625558042218852463495440926071351728945409125115862602695206866119904674692810057739495598513092523321219198188747228202463572031583967082054703889338501118911850641941071041556462859688403313838011019584157169977058543673545417694635876276067325458498267656426938414179351037758810594017408681081174956532188164373898788553593729372831913826019080695590213379296646350946398436597917688042002383504089689730872539343790236628105067959488288979142850077959712379039134948909665141178657417851340751129073620374786006546256823262322191064288309420804818982732972055311301023072643085412206499524706158920924805943015921904486494356105127961036193632104116821254670725587794594410989718928899246497265913223020159769419102764211687394101383421921442596856405834931986655249547796444527303432550318421630543971116055040193893904516402053311713372180286799321753972428165524619781180172318464606275702612407219661525962748033745784834983503743899062298395488770093756852305632410128110349306987539060322401251197924041043762334174968452727990448662950632451385916920463380768192803232076639673603297138016188524664413518621288237902989954495109625115079184582161092437693387906434952752034493477514177591202743074615323927878960717222259263429863763336175415020095465222742512679302470753094880830618435270510251851042231441882233982141921566200948014206518898147829080514033486952337184952960198275902585339292479730636822523807856389843608451903502718793710629080308651544262224141645760993650734780056589925539269493611400841480395115566940526308305935931494084839884935208392726873171252412852769490350758842641931391400335807584273941925388740037562168007221458899027152238223421529158148634390853065561137450878420097344138244868263244431396091376573316235368382964275323773056587961621572210010161438861152306080809685992944834326358721741286796087250475049173452655587897472136852741827605195706695711159255288248133154684542791045015500120606656476349107914883209209269652803400217399928825202028749759260482573466517158410968711072834141471762436699674117970607336480520886408538186064879056199836597941257155564521005964607258623901871696094178614254080656558548032917846761649750266094220778891316801667551972905183828821649826805494130288516200364016406264883894801010774202581435514239590216367688829072509519129721433771366178160653974390634267084536857543558635513780643634680153790903246205927252900821352576284485762334911513067879158799634576625914291765827846438018618243693202675656754870250865326354706382385862991355048145978288325826248301513173869543244578131957744201193780258692592197415571541239703797280976560582749305396589987194007679966581928145047568576344895326915883031643857491803260624509074893020352462848427912465203658818791180540125645705072183579211133504030488494665982806851801941024965499298989175301386412267634127363075607863073235218714218023798157665842812954830220704838484747155495191416436523886977012990554887714738773936152159817732061907425938813843569209099622701737513944334217571014702930424095795786516361823367699743861807264939157928041718491954086244482147391546354705100603930251579330047157786070155768113791800451300647431423045219947496698266814032297852073977086761391535927774876118041579202039593905466695634037957507825532488562607846325369088135415200888546727240551122238231181822327092760218727260954862111789327754217427118081469347337220458868189130693409511967074276862645190312258193660441301124288328036131140584967742421295229907506723432348152017394181339320319419020026332724830289872270428256555125926632632355785029877362012405801098712193163519341058051226633902061420930774487785771155678888197715731515906408950003362105630297934680629044750416916031572053020298637486191444916619765784509200896136706931798115524043721207570277379663874597913001217129959758946709178998699031836740016103478067914773689809263839892537369416465746214066673481665697488203623798534136113240251733691044729829506130558108259545324875870160350465631450807682996542130126934271704677354397320903660718370745858001332214167029007989046810945014590130299169420650130359614545369187365948598083523924620068308337911700235907077373619721137251207871486762329210034016845943079027498192744070613496934045758414371372153762826293533298782409281481961843699524378153813844521288151921063549792216080949474294810739401247036124530687546753495185872104856783225661681435989672641193706832604312147569177635317569963283825890094195688480194261119538055974365362535408377674362504531545987840125509082890424644482786521246504265680793020196529653689105410064105385642000965286038728121153906184326099033674558594341737017200204958612467715927113630881120530548520619566641898800334174756881729968851083018939731324380839920952700761615399940019462065239618021830230901597214953747909282810987930295558194893970635838012919831796367929709160628335020006758240911710692487139960727119608304822026300425990999345675457546869537506611313731651238951931664534839185222823348388401457361192558831609182020080528794171265137777475643655586519136296660324980989576495029564539273826140034919106918941677787734461919104377635292756252335660083103561193178093955442374924681718282715429700305645775169897236169412073424948808085200526939643533776474564850530085860428377569495500168258579426840051269711327876657512193411331329961696240407391860163971723255640703692167671857080705743423688669900630947440631939632022275533227861433098251375005787719959423176468976603094270202410609877494874837329964996253880067671335101067791443401884442068673973520117175577646453614887551337265390631758300153802421955828437947658180342506827865544145399726365388803842298968031818909932409049361866644177720477717957946161487168369856755393805606801925927068939965215047336479018409968601849639929076172327556315969747888522002027652908777819631196692805102963480298408352204004493181081496583186684781684544008783597344363408896997653910990424898200350162228182711462144961110610314488969412649328533089878451581816406348393432444782719980188581287223663389757242607000533103867990165441499269296134963326819391120969943181810093056409610271913612387754334493426009601528599016218501001263605293791354827941094739074881271459669375804383125098054346218486943633745210252142785494461276369134678595819666384918918475036293690608431631671070025616378446806967668104952506942714604375698709001564828639298318069598546710438158004077732514684947199613920830276194825259203209656966326605933865451044772777508368738676308654140803844366679257176923954033474602591145264203367767987051807628889134530322906786472231230282957169004263484259565508207916510407199834317879849653210784986005988061943893990557281213221386921604677024820557737087468738083008194001171333560789615238536020836828490747938164353648151061942155844654247299346106362315232389900907950805782667053540297558051332456724156195056600516573613441822639201172846755208546766513041120102048059675175113645763647608745517194226831016239528922564801221238425386761901782066871058189963408314412661776621569604169794743913172124746410777011478608280797669284290813153032741214192470567918847374899257140654199743443414865542150884713697184952847571198806370743109518958295667609864712836563229128503407415091229913211158631646728409958264629023614249510657759740121508055960795366586387104407755804115900203749457207173388635021630274552028251784909107768494195679704304234663949899012754317486405475518139959795072018004392508044550550608655574300394075153014472265755742070388637980330114534517701902821851459725471265931588506110052361934993852135288928623412602411522962862953963564010167974431264990247276853411547203502259145465618366831214928379280413316615556953654315849179616161927700736429988182837610293389995466452807502500884736884342070080056747550844048384754592824052056522483804107145634379670404835919260707729102869694793770477040561204888010221234282085057297372519372444173220485563322156384815019374157378913113127761271789516598269936603624947789392758316857014646259704863747327799135352172297023440781662599254523870198773519477767344258486921001234713236878350656567263667298877045719046372977496837873835028061383534737518339841896574401560654840954790075358740121998772039872525535853650161895432986372440540291872886188072097686727639535169340482725890001357675835233059514823648665213078919584474703094054033234293416505144269764026538131090198879411622845911326260926646383265568149342089615928757094642458163949640491280319642559876140635566723620567979223707314228072380479553247771981616180443704023195618996939219709567442928336643332908185435921298641664187789799883184296779508699791587794093925568772472559227750573510408437146844077444682311900464262294738204598484651991981167698435807718852881202964931610817815165443651526943644540587207477445118675670527251746414324301413940813506689956718791185855729095658691963235092853890459546697795332189125411659513194237073988534610151915895762835792645573184480799599994688393608875476188318653561088958589176348210615942133617151099943754460086186726889477616674150033749090114877568836302126284019229505052352393529571512360608524814388663217237964925429774889811840800963848529132547758542657877645254132254789160188514190351397644093710557729193657042980319803602416775081930958646977961821892071251081804346204378630229919416046592064207495522036685006647972096795513397028388475162332652334986960505459661259632402037199155727854055517098681562469378972576391736875381090146963343553868822498061003416419728140428521343032988042748573971651084609904809108786435868437728755132521174999612915015228257467227488385910313121567791852769785600473919601184757961210955971826696261267942447058499069295901123393019472201153528450595045268525087030950124142303577112526458850717054275520764081330534288494166727761833448269009920238271512701961361022562267899704523757829371433309280069153308765119497110359707516036201949094564504669754826756438870477640934992245698840404282110247220533164366684492847763246459523132854178771855300152637317032209070050608373887853982210839457997426823407742558586244317999619637585045821656324559077648729102174014674116299188545511458616386328833858342339377826895924236627889838460166608338677341100971086222639875514498139475302679224514610104196248963921376989638171312957781500548206101888994925308391124997458650471679995336549790893260400319133715840469547402368909814089368535769999021340325444386336786927060109463778746715319158413853653212059502076071211827826298707200272249513022011774192085050011532954244226362444855339396434315830147859792037895796468700183991187481578771864755405273605587125038601607168588403761622004540478234643888789048708720461312895782195536990324835383974325885732267728187924356567754390044067639844380910507660494726526230172274163292733096659249019497522660457033585748121209043417010033496725985764881000472878659416990510442435804677358071465035933453961096769948639520488785920750761624684744724762219610550554659639443244063270222223108272960475858457079353168343085315497653285091253150715943934333682302115035117534633256005257735645267326183625779905312741662126489494848031214518690228997340068583953158626638877266954326561144481799701631707617775048809785582735630980743789755856087229109157954150624032944823306272284781824650931410261171581755859260671240557514958066561765124305743512855075546433755482813428433220994368388617699550789521294934540787874858079469023967573383700283178937391159105478482192738327556225653260545754661789860236197242212973877326711265542150110964743250565829521802384724401767392134985935574779105085311225963786652472761442240361709449540233167690734232240863650256455532074261957918740349335574662310814538802213283551403197406933625500934236574837028564858155789342064761711323833335892558338390547033034432678252250815437748556864603244446504963234258610393204489203849958079879868618010920343684923936197193332562345461105988450009095063398512275452515782590906363664100298842103980284978296809175506205307100425187974679044399205882629090355562053296435154424289229659954858156964809932579126525809879375114637934098568059622799474732081354531781416961419784545517922557550910330699372665853898788433003460548977589021536400462042393177125655726577291456733988020124892696478722352878664961983688246374181134721561360585685061771270463049029707193470221901151027711866591990090201749724958769167827106973269119643467892888701047524895971059909855176528305546410271672570389657730245474824349169291701228425350847299630403604847488496803687527335331923909395978657422555986812945659341240716728964862393945698603182686117019880343966826420163994742391063039568924640419822080371550401904020469765263783774588695297429725995859976504875707830218739469662334172343506951371299535989239997573661802773212172350618273598676926586582162278886050774977374323693797135052963261648274166467205754907888280001273022478727939820316240578684470232063517542972572721862996478710543511282548032354315816571073484430210213951465855460718499535683719292417963631457262861967960139019156905088000114207160182405230636935159202646324172128387924065900225355405639653171867246239045180846511202894526943547717518734759138490822881573089894049698135213143242638160077271915987525747238788722410463669805549619833997638577745472081929626399508940109824027735021976773380895628228352356147824887336514428133303910177318810353735826563639980679742308427614190259273187404157862046992903298824077608081097695325275826515194321682652955305923737554291655238642432897768100630150724446560656012307753623364635745471705641790891058322202884479170117729822945504399738802004959968979884021518874798604729662987249605032252245553316586308987858754728599663015157808466936981559113266417618321198395498056883939855746832969216009916372333810511426537233012643088098734381147706511538679917908252276597539672990193150453709374450364689334368167929536789185162277227096247690889464344001907518291097934414847056675411065549041826922135305985660842357328595403794790710573432267993964212292854044943451758244109936317127095490669503220483143542220987381362738783172437350829274565973719307253107575740479816350997675487839738275805427936608327892180729389461262531168448687158598171697008637822155782260462261055619283248261944362049888714922632860795766790954835679932013741448369023834977951772851840779587528012512083228899843469398004815048075805037948298797753742489107374703797792645633892549413771351952182498722616893496177325761871621260555806095857985591953789569663249790272669166763738856775958438875997841767416075703086404830375513279470229163458200558852621890595267238133942224532233186858018175128593921791304485072171625911951977801766351096209366716734380777563128530885689092054385945576983236378937104875954550559822441789591764271248956398570766654185060539522153148679875551202410926069060506977373130581732283937693621804978247827218920244663304085196543296983359191184569611300890825431688610365598800966316718070640068216660143575315426146816673948031107722830303358564280014741849862769767193221614222475697701505328615354709740296289896044432691837105540790545368979150875371744628975499148057908203450907988477744141634087172204817396521261395371721649597531294142418196558060944789672180756068603140486915902289067561033020361299143584286038552151619941575406469085425050520301494019699026977417252980343909768139968832010746033529785960735212246388324903400141495959786152050606548272338951007527633549581303454525692916164962868052382096599202568665400471329029348628885354926687241627137324082558229016719728732822679893802804671883063032598600136361682324128347690626495496670015433210026663932090381942034982516216163174306296633094238000864403911274101356738696329737497981524138250583825586418752288699922837547049538919583183377338329209842836860451286063376408119978298346801499416657406582372680678201785530770165711488770328770187169141895296938193651262518453301133677403541326302176179597272438335376560099116800060230786544114595858307418560104831576328223346794981263903528118404341623101278985559346209737139834114275377339708187464885068520045739779317724034163189775820002270485849977626916779964037998907417938742520809433040788896869926198682803370137652017816960640230542258902420693163954630367788107547658046926961965523752287603652644306322086965169432632373984292516245460200642124098699752818985952181011425511345468419046642347099230282698522790200599885827801545970092446506208776208190760953079082091579679989682529567197886070017985848652162331618602035640046747628096086038192672177588422742970578633362281686817445627884965971098641634627397395208194622306968581795552042334572089448838730192708987164650158512747233080242606954349118701577831145116480567291353489124466517963569540827480701049987057519534370556413995659454734870025059784186639659611427910118328784915369377697855261911354516314266334307740536508086940062434498773541731026085841722645985031272311436222742389618020304231113172870987371989589542480367503815254576446891386436069165160358339557275134007164640339921094887446919747642419895555460301393213884165955712438985030586253756351459011829885991362699986679754259512166982146443202701954014535348278104470053394625508006899970350846313425116816527646260931097259511235018363826569903156688194545323652091068293708253969558065609127243060806162813255670221248258032599013868969077078928966413685425377619907973657003705361856012026949405743810885494439707393620334061387641149947140333603254377922968208585755250091456327099905840910585538178943250555416236928718244491696919673922135916303298488752197343904523029019659498225798051693938188874101913770824863348762018323231968154489398250027347918721552108736917752182637017251467112064726859480836508531337651170002002562060832497414205046689022927027465289243255905262686179949261019769948436710150780014386924354691319274444181502567689506428234982585071207170796435039215307872535570920611443512763760539391820076085390007316210773609760469016333309044157634218196439126943055745229473241332470389498176066450831380539137860260948348325982736227286947017381680145821702564690873805808341880575604220814575223217444531351504017301895356989570156461492270889417545192225150226181478643657349376390216796067199258413347656944126101515908787471020241175676638701992273143378581929864926937119327995155010203533678856476785056598876761208509994434114536155163050389583200017646514473259557936793256581996852278874070969917676185284710463936474953834341923707970051059202095373249096909087135853748842123181396198862909253009010382363464993349562112668937835865471283296861818270830799152429953388695525025148298931603178310730851288837791152824419417835804045587073212737750918495428775286969119364275181221576946914443078859928543596646113678769993867739734490937587071939802192799890806444866655230302116633476995250049873804847525779590560888616876501004829485640557760144046464347848303247318450989038961138455216958990401397114391700708854468795216806603696784260736367079400355280682423628164771875234277330256272649555498254451720884469686145810375962390862503673763044054373114723682784493519725012439438719735885120189232109349510815927056956542315512633279300953400767160175435915127189915029591790006403249012056617081035986449247581988901023494803953173984957194364894781568298737788662940714728846987801900779131105007593119277882089590757630733922749044384546693266376517378419958886285697872549026607550782827843134010815420759966430374674638822759797473412817713127392529425476872675443681468690706859804956453087410305749022878946941400770129280192691789307169371895781897014878666994234260524559675130844591608673989325189142557331154893065186942334931396576644903358875245885149178782381257203461508715713292118122549189335846469800371417119550012337342980506650017893472473220778238340952480323333163262121225022837619166176362198909293767789185660862757674858404117289188718307567218587595462309017913718823226905316361325549290505431232869508861594089701436801545918202368713076075768573600741431964067308911808245000342694652263753375509629512075371303590067122158940193813200202321389029605766724542396032470474126155018785811510530181469681785380284298935695556534517056677413835387474104903047729464692271511895048988719629377426341246164707099045518969012083593122266123961074827573406098425978154197148967671661854606200140301523728522567114501451377890515912235381371329488389070736512601427743919086477025927315622157444980332395243869022786286231950059033624928781921719035929272015695406122885661459356523664019279019712607288291608700677828840997626564006252275484448183599636241475455595884602200283785909532993272604601813701614110474306502457193135581552237202789868085595818235286394236552211506160813518613685031093009997601003565724536962929839155905410385404600959359809702374642559694940173552092807118322882988696349904851828966410563457871468726924807231548080597280629976933030817779628858266080914729392863295850520289370672167038898461790488879373138347083401528375281814785907316936361145414908188854136846735949501540316093459448175209459568890957099060668855885351965295000002917432824196923735396581822087798654108767276073344813944286533055765353939000169377528820366274472115950638556635823669129407413874992304912231920684878984702418001112160336619718333365442863349076209280994803567744117285445801062541940937155933849386401464525336289544923745666040204177541455684303469330909369041688312938019722507275514981567588348028544875870531028096039799946150790935421749781944416216519628408857759619277608043026643498059560268597565927004931793382418813213866440871072803291056595109255887502094279601120948879005788255643315889331232997383028171070005579853778699981912622154385483594721720308525566286290606361659735198876418134738736678580076768155507306366213468621818972968189753110160924215763989018284412774424811270238343724162530066454127616819232343847883000917937693317241957725502580454005000786064835304579775665816335663266136160708941955531103780700260858272238982662613339572047109655512539385032322929797398600268774441114545549983859631819921859066034971222055259114161502129496289952465410695921895882863764711600873050547192527883759184690318803482528884075179949112795850257913049273899890921537451756226775434480572942415801438494955926172911661377098498134971005913620300025413366220835316375920605572004881236570409202350761259248957481467818058961786629917316619059301723113149987622121997973192830935524025192853712845623612885263142003625941753107238814551381344009669598960145695011361017383267768151498995385703362652222996643682249927361523508614244352219800032733000566650223880693943213908829439812590635963114010795733893368965397666429931484726182143341453682521938529647464596697752297635839223248540994460764851645884836230770741387392659395368524838496795276787388376655594464496153322904809505139068092945743642223899181236354884600990359541330329846902880157157340299388661988415869046765862370100767333135757468951502343234679136906681897844504850575345735123257135772092076775951505544283146675560509941743928545580521165610585378600721338167630104386958928295059583660688993399494015623032610000146236115981053769615716276730340391819661653206762174503806831031754774915101855854671884079668277609945669578902071950346450622433184852002550313619241620090542038978891693840485595818648398456274150732129774558613840872875696881924720976128897509954149326760542501816913210194149312897391476590835312291647895480692576475510502894543438021503132465363946271845664194071906439697228123022738024312515462387374469505696700201278111822129160758791680575136880905571708454230456503626309135403263908695808758433748083075813765807511624857751624556903486269698643563463509350488541736468777127738808718661599985610856456817512550513407952951996459268625880694911956528694693386729794009307704058307293764890221340704095072093548530649405164589261831508511080639805108423260331244293108591984361563609381479178433605968639876544316739197682122658348067888597412781152358530817125157479807860313841814356179324565296048257470566980088330770171698677790444956326779001918314090469497964467683287131841740341882650389271331514457466780006534160976296093278975595291709904791707441430683904124127641489110326138026605580129873766185171707506777288348690378611014813236643947567064207233026702517468218534971019533136894839718831446613397313565449393485215120884665291222282846521362061440578063320418838210941079238519567549340726594975172532546517851310428197940483091563194998646006093584322685289456685318511837173373955558455497672225165026415688101317447761820698525124854743597853797351952648852670575890318479515160038069612805318000528620692712617584252044315307662852629363505875976322629714582247495536710316342176516114037098413829661546713093655418313326976743730283899014959828906715690371124479943439290128829681055625086461890176036227831785353204856178156552087291741392611278999261601910326715216630882538437855655618463274167920974149377534231520530667114856635134792909323694136187535748035751312443024099088822162776507317008158929371113268783930400174158237339902413748870142691480448471435316010497629514472321208933610784158518533759278091330235981047685990964144380351926940688133245740896546205415346505215638642771507075016724176778920088070668878686287919597746826085514763277188675381165273482124706433145059195071326230771418919115013975016520506713066353637482089984946062762983538331009302619630067464770241651989975604852832811379647210087120784595068012127899765647498784476194776804454792848401940456800963820269757003617659948655604558374443315830684676239572760545429535867636913757871428796992333094164236411428377952250852289625057886922682543596737911013047913088890240586465678861756360995478867679264822003120700969080762585930808758092797446308617701043033140107681869141948025083836370097398149583284872546101007642118732277740305130333296648224409455907973257180506210339810654928437979974554757583345960426566866260555119197351084257916867573462113511393020937794789922061243388378598958609171394812419949380619743403822206165407199705835807063575867699531549172949952012380171556882641351789039271993774703045827100011966321840832494112577165978516260592058952599171972470203727741288993730407371358252057168978830613035021772529836575118862428161665282775297377701942844299114538179698266314729333271039859713209862134261327213301462402827278796674511769778597333336647167662198209019136971238094395598466561925099995838114228461852417685249958942262124295424971986102430439224109349899811044014561841453526456932609327188671250041889408405929254900542507544584604733506387541808309790462843524853944447114429952192111837097919559921574776589036233514217949373132956629809037992910467580871533674438690961856518818429060048073607141716798096843450924088103135397255316161706674779880232357470222501520895441451409267589147620245482713946332399666085102373377538183843664760117411521390841830929919648335705714901030430774527209555356732186350671401558854657687812402446638897368573846760761796581073950895791180030133424661644000474296403219382313253376739235882213288797868717392231978317764206414315209451697134639262643313591180340720799350373051300000778787163094603713404907443741693910305726106180614559718341276924008527403940076101888622036767200340744453907607224784500609356481904975237211845743025151568930117975998262730815057210323617914685812328033708522640789141205243003949218090084746485184707495350115910698763968058216327245287493116228532294027210489836531773027039615652782287821803439778398163826446708979500957747699770937707642407616081071538233444449010489901240843408453685925550902424295109094569333449298079995696991400173369616026350493282848093874088332661258175258971291564254822895188445711264802016589951403981095971521475664458171681256175399192034637721151789924235225401048640262433812767983281161529902794697949291503273925284174301852754528866130914272618756822454955061728476432848074920541687629289701884128922464062955290152451728178762808074490752608110725328010410046032744561114335374503045180715380265691436340985179784576870101455155561374205102380091644948951974948394393070258871259232791596964234191269928906409490696966554433824388348913996097574942347249886258138368055740649560952996212708191662278381889703319155121590586377852272657282969742648611464820284937460791602402780390142426271778533131349776969813105702976819276657227472313191550556209542002621121215623298484880078371717029453814952467342315670245319167339245770252412108652221885515575441931889052319520605221178187216684085393753735314793874483877070300482757330787448335041465525488874965012301210393716719632798679455385635652613278980269736659946553928320850178003895635825342057362287582087365068092605893313044736599232037738220501100482615269756125439831267664182087585696971385801588113792125434543362648906791456762792082206407923974629838096688424612021204921355012554238207514268938634472880742357023661765040326674493605201683712608598880377706316824252580969785970582006872069087003583358816207567851014490270108235604440202875633872612721417892068815436728061540864043196276114190808879373642969788725527541547281270253710595156402416194286885013718337508020166483686049242976511510971035433808921405679427692104209907858141413003594032588971950983248947836780345961242585835084473143464369170970061755037976619627374901446454853297488496295837640395363671645422954283255944118067631067310464493466110955252596832106024437193436949555707987754683161372967955868380584832445459662095343087269163288548396537161322681407658461025080876474443188998101164847002049889038259895479827975444452878477259025401094256910071590478719188463229590520632784002374390144731555435647016693703048411024703153566395007094569604579677535086955740043904364644114650031473896124098457734812828345092908588602853311269395026068769667792804165663408615222695738033605337374183125655457421598055812625904142629691661811124890341454679254888253622863273189676927158180475200692835348101167772743124590935367950438432607148987832488322956695057704718454269795329948168417547147747483743412790193551880573796060841092404401947920255303699430599301815552868004650603429936912391612601580863238155152067908725361882036201581952928850749376575611638316308924774542664872813209738338165771717045763703509128081213312549430901441875008593641077067185498145406192904980719066488575600751195523942323121680377750932505394987915114474775748693409252565481098758916210511381094193719671196532044185369133577305170066063186294509917768199784289913495014801415642004488741566560175691387494234925702000347074966328695098342476362631327686437363743547457658219792530512972975821205906662875939990738521807559938743966199955030104085216000927809960590620394145513098989509137489918463194259415640961070493717972848062763724095135134763036494319211870880340712706521228383747164814906804431975533598295699545761753803245281201956631154505382930256729928429784924446728676430211143018088789957521213837888378535132103278427856547280916785020895385920463043954859043048491424900124934210927105335553025671543855120408281316243844857309772277301572290513034880906646340241081625151819768697186776078368827725236893093216917625661871369244643325560562017258010723101261938083336395173445502864296648568960488463725541597051942743214066829311872450177844683238531029356894974684770431108197803158670863165506399791708063724029812156587699953199519526990289021337100656774306274771428317656875885272055740453266988993026273743041278737374230792316276485686350946842143231700593746377293744311610711270130861687115014983589369459810843994592322569980974413245091633881126278564828305346214679547653408374478495432612842158072183949194135049262011462518130634941462771565367115195969279185078625080251927794980010020856135453911322315147823069777767694243545461209559656774689287154348141334174852773361060375083080537768873765158914432305898774120935803991289464293076834973531248358123093185939481883241226735108749584016753592510346538008570232020841728923515044210356439223673852798641101341685354314128298903293576517674267923843198237485942002303931870010473728289513918980483231384799883457380236262424585157415427428492076045221982703078681114606706684763775374502969641000083141933454422746710637860356530556990052313710121459876996794722848917845136715602069763453066329290720080286397622042151684687779390983632363266391209260187126895024806955941157655144125130599176853599856194427840929867417744339630192194933508559776569942458939028414151607282291759801667801244979990417609571560878604090045672193320572192188922377537465902928375017768615501940471148889822311593243053577155128168886623221264723355658477620786990604466373812413370279813303094153339989653105964887071291636327334169553020931668292482376981506234747483085071074454820864803145882203813162433055202776791231346297356817294597988532885664855989924149955839184493369882467290309075261696073487714717541500348791682235246337114874433357856090273092747494104373628360235262019964391310129223759655806289214235243265053402012050022921158291444172469821281371537148795675739717168410708838652280614995251606083041961383812776689191507269383059803500853347600427990131765166473617360141976174413973261716641623222224391702313258077092664809135593041824996847964251084446541200437512114136624228125790216139694033254887887685419819524651723286198589386631454414098971399816152040493725398806665284973616491371623935012722690742095974874459714836581771114298687051232150616825716362485470108095442576351857439595463377271016995862195270698453904585372126373091554767881498624727155645918957114797612461204125355961235766607190433528712018731963913657742119950190240245959646925907223621416418956902670882298886037374275244981628747802400642270744546491196235550713991645278630098405427154358923717622427250735677911830879750557268934398609671506889375045543666284935293076590686875536705052824510491372425278036358207546785381995692437367211894368907368001454376369390018925823786450848468159284369788289871816522886331467339494212495146390476213097572270548895371021970084100455950957512302094226591362333846271468433906710033788974446735880301399990956847023709075019286425894270498392739966686207948838046809316279120791414565810317921418876065817841967938423434041013381409184573808040289593813936405728296356985183739932474769588148332228971828468502797563448461364618685986811725178401960439820312157171594611770124344460090647611122496555904042282577350721285056574814574859361728106931110320129520002125157190184258332248015484841055185499306839163517525403337395297238647642833020470004428044354195944313200109021006634389413381574308914857139678653749582656361109414806854903708678800644205727803940638084744497497448558611452093434658256242413953320040671505626765583333916820165749944968849252307490697874215366671605595672586325945970428106102121395264472872757204457902038525934339224769677965949446312786325566527233201728569723152061108639444626229982378840513675124986806873476952997645595186811455716493010133109367387881766966690191006789877948067311730023765250212222857991302047212447339880103059104382774067956630561766918382071987448355760502924877827457696218430252295544480473653440551525154273391153485391360646606696041287578523491160708469238075948113112755206502651901572329521562749823192026091164984056297019108566111375971442928700508503634710313966754503694082206908425090194284740159357086368891437923631197469653017644977585155782373766303719780992208351124620248236865330062145487810517509067745903512402040515403935759683690531235973340630004882330394057862142392890505647850190909662763419193044424028276239922776995710318816237447314994942410835171755898285337206146353885798649780316482929509974278222384978568469876795039628748412893724088511946456911072485134567135549569899933058173861792929829659933414414656323656541936669799146898636760754900854744995656759551594850762218391651271860342914633718349037635709360896339435481987060323910031659493195965163726538230388966291423788235522648338874626871471280173851371832888836559886826147131285782289397078541388623812655603372487045867617247631990616427447864567123194827655958577432802610978316094013242258345528332986547744375673942897829521557823653984081513583990377382210727674843573164993256655575903068520246397808359538050577869582266936576264437284381449449992807087858536949594344813551668132718606279943862116089982911528177210256283558430038601290162832619987702819935334804904093466196591994324577364778716302725457110687893036187151273982059599391927995036416669057305198669680000616957314435412776565751945884964517176359809702998875231223009294330946109640871978858411654686719628268344171114365244331125881425165246756440377535716530111896606419005564771157541767237846549509944054316995744258604653584620740284426582430728933583144687942643911199095681927471681344794784292933806069680734816364974237184104925958929940548850653880615831056040663009387406357869781857399603098894801601947453165835929130875150751134658130465338036487136342891724569483926437071092848911322192484280761839671962099933953991762841994486691558284442727578624036497688401998224727307670661507454623830991249957550813257078358429052029095194261082670385867819978922459098975483157680557183520350019233475176514469799199915699039108872552378282840554383014814862756284530191206929930331776448023898487303651067615138946584702888932022423408862419591069235371795061524459005048108593294834584517642335872730956326891616461001651578511209087147370544876498418823179027940526773307482657381269377600841183262371873479203941160487491501470988788156850927500183245960068933181788196821903590521833685004296691276821639297134034542956219996035717137593013790123019309596100975051945984708926824143265465983521499859336958836129587822819764332325299087306330732143238845137690665165273834628915136302012132376628887781092489883077509377146600995390138178061327932925035855958709361876061699320238600820242610776874260207949954928537380692223045027820233333411112718365963504684230633205055758585214148092568619839268652901862499560917398547543611344181843148899602703678121377472654778073949681956456028019941596255622421163145132106992502198153608389641322398527765018133082072829973997469427058491313163484717298617058774101837405572867764859769315874071606242664024767382300674686530563543402966980441959807514245479657770859079172743423571372415816361088545147705858904065157054034941788463698803685870335043943848055149525560704294402141202694772832685818032466600033110422491781254688165741725788216862643567549388461085751883323739098473757209538224460189093364342193363317629958205799090060551533845169996686683213515500814064995876041011222782914592965316591036482607765009870103106009870286240372926894918901690960070720960695014079364649821257414218246910414634318772249702950630702574867044855347183169864545415903835329867503558174884487021369652467047138459471405041691481874975749776992290726849135065713370430071341072975106336100601416877236653775909238646565112515576442425362996095937539343659489308052245979208043283167130881163133890811433681038936841212549532053269298432062016735695516795148826500709211557736589843880631131636778724032927170648918056732169728554496270728584983587357540856165436487004081667868362575984164873591699919192567337447236240507593251551561750052460463520839407642652234524047713114112886164489557206514551578216207014728998940244556795410693603365090219488829364023343789340584983893253507219270678865425951708771673009146278201505850243662595813334305446845712679205782246320938268173351487761028150883463408485189665567587544522710655714815033536744525140228976983027859626191769894017456051222980790762104172117246798776206080944459747215483695293406430046616992676477109489493526218543237164544494601326263259153957154505698191404007184972848956034156276332369894848851847803411111619902318766852185663121212135119398540777904735487096465443793347247000153702483153277875352070439239004087162137687319369955828982828846137492509494551105424559034510029546547009695343469274229864186630347903248257040267177081741090413200193305679356642474745487456885282377672342619515334894307222536461882969634417593662527814719437944253533084729001470919725345790739113088925586330177121852864427654192410129809268809253888210217709396450797447303607902982919065637434608016573319752868460982061954138263656488815658481349068433450270770979465790104030037207861199104406273317812044711121980056687794425516928849078058891561871704333976449304651148950295760152110642475730046759574646756713173949835624022673068173734220401550024584626689627626283824678524598347057742609969704511007794028747088615023259228656419991657554516502073570344456019789609565976848831079261564430507715608154706671769535021633006610187772690767349748884621002190464932556502792029154264581142309340912735935068187723472321577137692883807191642298852043444766729043633542735457230354272459151540344392160312115872847148045583579611747787924578930180123901820494374999873120434588520298898070313085980767928490191980682768177419326500396312600743772943398417147029204772302876970613027458321574841771021462715111054772342481009408023453756921502129204575542739002502568072704004738997541070297933059747450045266081883656092351240239695250361236343794804422452985240424766467199539105092453882122308810095758377668250358197926314735783208591643673887927854825920252282396426940661436775296397678775694971394810859392160816177720655975502608978781783780565043219692457424505257667103475170271992087332251460463556162472866171890052272617395412260315134729945797629795753579486979449457862643958325602913717398645929084471700158091016006108144826693578721859733404468072897457249244533245258219963033405750401271366805861357191977356602242499559722319585168137324800777895106681724004976733598357434878494452565068605960512778323234410735526961822137393350951957448368737885044745695192205352432755791532748092709054560356408155279646781670005893325174262728824966161811544400163608712573665937586845069873895633033531393775839692950915085027340390036242029570052348506535916163612496299219954806912152409883567068981293506549282653726040301840356318502648147384396944532243067051628875210703896363710833060145782091492464553113765399468492805290948846124294964365945773293533624322130986730895617090353129313988936441465458673331039808693587494274513095802846782258796662025587023296172810402660409608060862858246466453573963340072463818267555276201526406814466521687312826263352340520395085138602862550170134327990644206639185598450785279638722433487527005708104951905469129163236167664712018211541043827026185477111382840229365050167877585664818215153838499134902735618861105740482552145820349894264704883100324582989288001612819920081382111946472767239265975031922826640474756933887793287609850309270989279051908989230756235693248004340476612821698612838355523550710424107213713768509607819095793990896478550480717027408472277626747873247716369236365748347311799178237888254115063080673547910528173552778749412855081646951843400533836964412979539258779391225999753863770685427951627670634379280898025416487863071823630323088839113150150723493014382411932323407869084145922295303165651848344294077676119381528748945957180358597806979852150562170400430146318799122319871922831498942187150575661666095731902308030535468149093727143318989532227148168478750063151535773575202031307920075781747454729144145689788875166075669387397382775761244228610935933081812512080998389553181419455691303166440810665869821506529580337031457889090519734893773772881762140560653292330008911626706342266804549653174536073822349214987339841018824568434193237030666023955834575323190779982673545851761795476377957524192505860676860225761965144386372340654016828950083492757605920255785336917523198660103492359470880013973345303653329803798298149587065081238306184964789443295364641562373918432613827531877511758045550812516621791774987918703168221084894043079347007054225889008358252170671330441302182363753796891678854561240313300677094558961516007925670613618730742005200499097828931401774231937056860578331153784963736331781422031395251275631343597576145567279189250698273398800980884797250247375691625754019228810403976036959984070765278500114364779009480243617473872167413287744809117843366051762099241193584921149703820180172901352773384653654157615175073493342823950094937260395516775299406879929726506764708866822030751235833384113317980342624969411783429668048801795875087707008958795740814149053297222649476870972064757015447891138654793710181287665959957030266130669297446185561416678104876367447274426262718794057244192429865773240502631776643660721086598487618695374270428336290927516514938320804410033672729740878879173806576490541011632493660994361736772959618688949718118115689621099233089352564432468389147693357114591806307254962395223210554711119333836249715239176858896873525249314089804629797305953616766843322850064169248694560253737621202295700257110063835975822156613578482056067099580806986252155318604319744034023218126469758707874907789199596513111844729676709979818214097902317125736365203162900109160018013265689685311820277091088079107852927936225774171485712702856765546118083918488786058448991219827797093238157580735822423224854113798123406199915911020769137383281562326015251406861082550663725905660607043697524158013048124632653565596214968272400198435885467401851879316026444984379036044624801721286620452010091693780373411419325051919099232243842438524861153620270533835438477012180597520515889781246446613498913180779410733689368501996893668305467819205054290803949484830312577231088933042637632158455744207718712933864289384528979273279998598594450414408375349301935513912366674727891958283383818925457901366184288813526140740458550088164348360741491388072893946795573390745168551336347851700516953122466676292755568461720832866510899468050579394256742761726547922132340910682356241495232979714341713654827593879893834497410899670601500799194249078118839838602082824346571016462975678452563843605868860026107880177179986346705851361273844827868944036511794210732945322007602731581949777840257876146092064512559805695448854555508874496441614619609691994789646354616567109255062547088575222962560406612018769466667809209316620327559639867446515226019940313470760839851956899349146575367227152072938598651050148144895101918730891896242909294173300050524787657503374100102755293741499961245562290678845030635329006759130218079063657233980217622253417644986089577366959240692516238325758167780239156281363386576189515012767152017308612047817532054679554776274065002277366939498928410293972493647768881475656093912058507013669874876788715219479289496452677625616465774676109005940944540996158247112619651007864842264367418260353631726951717928997896094300937384137272271075298257280009013119626458755573693181041125737500821989332217225061319219452044238972000013962111254210381735271250410925022194892022640532632953662461597272101465501362079563501343144946356661455878139891523225573712303931543648095533676904101677894934315688002957802161492900087040263388909989153893433466077197026394270824698198861082510024764875137409300445679255531693908770715538322367392661868670028040315628406188818689081881541861055994571383703768010267187664624624525636067501415347728938298045326382853100701422135289187087523989716854200769163406308733004863654238561993837715389511941880316351325932382734010885542587316496144819566238057684453659318913561012965150134979876855239017178135910091140464956532176024110430597609877642941312282300809899263416545085440885419314914811774614377384199747950915136299192281149301779212643532172147274681569267589937976634262180565751833749347896967564106850673880410386711551456891108477866890830221517577470355732123482652549995246182483107289105943388158726111013668721652225926627556083927281772584361712674483292248588226671896614060189631170321233669551888372481132723399788399056347713673677172589028991217671528496740490285962183192785106435519487758426001624891247145287005710647476809391497984286185941354601915813902552916420303925411865673088874045598610749061370433315809146918311420363283768900626556992580966566097803642614103657047065108014536085328450967692628753617461761343075018564858365145166126800637265790870673442768345181474535395618934808728537183736560582033998366131722244567899285506519052819493929909773631624869567474889472958240557528807197094222274607091373929212240028976120896024266621532688635398165351982524912886684709023425172743140508392615053697729414242769745133307028074769977551225781193098496367624202898217650355318646389391377462498707105144163229063011490109836232438105660024272596447354610334003114692373714685937567725730133736951416025909520113577995049573633410886864183099220462542272649188436555407714689802888117874561097552581702793295507169995665697672433960374704898595418131942489302386789225822124356247375414112774356790900262112147723693201928489237826398036469855922600678011811541318305498978196956828735726143785570854386134660019575258450318843750091813578598675991006743855141066626233170226341855994156827331558149542322547728960427880038967656743113842816981513181097019812876465533342131538314604431550796944695741273329035295239707564876653050806056354799536039357492216766149649722921906642878423033976322562843380439385448591192713643296473044170050873760244411308640389887868640491812957005791083162349637484905094833526212769659789583242585450871334194400371915566266054286111642542117009367538581398995383286824428808426249282023194882281286410106466496966785589233736486529838293500787551299761971482115164565363721478545454021666589177930313216397157103929924288003698263419865471322901612077435468805473658486591194685623128060524080866186908775136335622103414166600501372111010077515932186635548159870162198950138511481067017215761573756477502098217994991156642705893640093186718445797146239437823914802080891705162290066927674779251403908184984233101900059101300591580551974873239628946895288751751650779061041607852834822752017900236626707784056558927165720794534497333779245815300518475997997594344833695521958783069000740948179269991634114073910338237733816423965015369004119206268251476204527622831685618609054202664305366573858903675958741651621007027536176116207500230275332513939203356785410181544878663850618171599411057771448377455690900233583560257305413730672201360682038247978276095482489100449574478449022032911622450418375413268440868832859018535319636183467259167758475406892763287290729310586177151289063398396720619266356188128525868307425345236918878908035083014434619162960270238813177925157997974149674569154543355213730510069565693912861880971384368661134952133959942536457663433567058101024529680070854746214183157231143511607533042547938831471444587724285029712774428814130859274527490955863748580954681580942777946223232016388820238865436896169918158463637448182719109498394979003684925414044932235479799314704451096771712290625269349460425045708668385690856645035774601260907980518499756914895818682369449569486791914027130438049918915773997320941922157461853005691906454083918977635096642815810275029345465644453394346551172445777971057248926968846027529990144793165958116786539428685755350110382371944403355580069913499159260305312337044726610119066080862145634213275222146937425309381262590380721370129923157707120839698943612803341451194732442974754607322281624423999714408018781021380173763811468751011411047661430457703714279052456831595917992967938737529971013829976809361649221726520994372148975899117329646742370465721127952182985977754827046385101235261780864388669071202371241053090026686555851069033138097080951682441261668886908499275812103746755732737638608915813854339393146965589104750307351996779747239129290283241059848962361384470227790309822019589242443920507258384185169008840871625873969778779463419094960182657690597016136542955740773719632651683087084736656432355810882110543982044347262952244243649884647547272215979649717964258898921157950348712411995574987895893055329684481201602970016682267963853137387377727090085164066110229393918681900052980698688659610266834456066921885100130886692692155326704632668928879719275362699539810295874919989493499491238774825595763611641972826557886917823762847525230535241747259407205982215398804091526827007121924245361215782244677208577338976207683165875435050301016398334248885187816321574862401258610417951842480696571595327862327020285191804403025223788185389897543634110378310403314373581346449961315490482732334682592229057196975305303369116953826463608766501370126860162743014626114947691518847912587062395087487806814899119605925179688012466549683747246450099124731955700277130721720092360693357894919671576355861434903149073096329082145066775266870084454885435008034614408721407149273220819250284831898145555142949559902708017308089893689010401608882632226942155634111036904219558227126165979103266348822300770957206889329661843030739322618642135986981285994311205077211561826377435103379596615507244209901180148693766346116920368836012441364953047596616498855953273978866596968077545027087341988677210622674696059736529225595043254122312933640074429444851546850750223136369674344793984662004663700402144325228652572030886177894044532228033406459109252590919168893882988657613326083287163355872352370041199230922686830255047048633137220393218509799394677805815990177702019565195954882152989173707024060264173567097472214362657027009066398342578329025009185732197533829531827500460298764500783232923324668359892227875518313264569695640824500634159069550915565791487151722657991475626054406367755487797355032558133435166468513406400120710502301154143413340964935233346068697329083772607937096415116363292015311602807242495903790395585350068118200125890811841096179240270066833011455471869836237546572381480632014058431149784072284806806920278316351711712788475494191840953366625573993768015128575947128460564256100786119145561800022925234709581676153449647734998959701542213073178166312050943502978617408331338002820892388343485489127866359251191598676386955728234190804297569317868484057117120086899948714654922711896400785642698384488038591549421575198212339498336334616894282643971496750835663718079669565118538604124658817962850149891506954828705827910684120917753000615843152967914224949994367317522935940945777584787414910549705802462861035780282527805083064334913259877162372347572150571990927183516613123708708676183712637951579470210393595899488149058089832562940551976553079209566011563601795214272887394241745466533899045950956051159436883410748994877752051422850462457110083061424386881514230343297697534901513487273862174162827872978380777365017108270278611483629808416154841675026734513411282441715127186420034902456604362968492207573177006880778297110484439675835827602030424788608688469653294519641097393372956447845410552096916931821844796872288511393014532107896931780213093438936552169590345295392844690043753670345974241200927482247566737868579039917321753295889068440940364662846010408226282304076480769444558411604488241433732577211738100094276828878840413414091547576868204643884357274797166453175219418788677059992668055643316823458642479898207006841047337178821852485860838152983854097151744017742616382525910380494622919347786738267479464195556430148316413596707645208328379101116944849480197278478036247683491250759467940336318675248043184933973082632762128271677823055933552780222065994604626934588565408688090103220672307728865068221000785340110375407770488324184578036822521604210728619554810274169975134342867123782983071627559494045020006521371692301385457816772432692519684203191626630927079694021374365554438369896984631218908023846636463816208468891558642617282857554922894754267628456101888921045009976187488097624492684070669380411954593687104541701392779939022311501768920302713512256184942630151512839369360129331584709159164631690604880958888833860307721481883755762068387104053835557345919593998623698053833968748282695669736121236278182068121336317419193822416849924293351766866849408989901309940773510104471909125281038078520173636077040230581194364057520678822409912614002830121075317542379736203683028698288901439240375675223974029384113430763957419308503890574891741684085652932303079914575642346325072126119555357604051576174248830773463737626470180137531191297224390902045023188388879152344211959237686532946894611978180608815499680991290549726382909243489462751771262449434990602319270126788511934691888871017529844113887085748959523992292343474053606784455682453998439060999178365312270133650674873243281607913165222993801063088901111994220370292295406007615957670537915609087793568681560483059703151579163402557554821276219343301531793428175067889330655771088061678290828119321800641498939225261143033147786033809585649675114226795300172208054457093755221483498854340428509216024776108080464032191286658579646247747846170135099198720574968982891012969472741702594993313482147014592379407591372775234016826676616964042091666932836987426910703662024764867740794119090703553096446670381628271037347134591343145504371826118111608645670499979898713381334472795408229619152389045219752250284311537681999935855707814317755732969841255532797026267360525025233609329851733192720963402671586412394524497915361498966315207212127158553968678293892618121043319151296748481405029226346984087463183083302929325496912642041954584146862141020941112782530129496449033120315972097651403478601500616685985832516238274891871755340521856056992746022369228133834527405380233038592232056259659268013543908308908050896858971058227082375479581344466984983479385950785324362469596527471457956470999076006152956170061312571909967338283236578385576539751637205087722697062310059332512715691834971674325421720509824245677934465274260906936408457759505718390875508098920087438603554310455899861384737676295902137959637109181864753553386387646989768421208108111461967090957858099035234377734861961864304596671377661711402212362062381912434065441458433192889688726576438229650265267235134973645377715996575882644966946288032631800546737272601883916137807003118498651369396275924568874666872344379609322718116061851733887511348663218857459198359334866388190085488226" "4507742799908520967012069476315105198277440721327501851872105016946848173207140808841286152153800728558255726905410248077110164813321644554506444886911527723656934375152468089986505750477410061682686670496737561995642910534345132568598229659278131483832230468024712617045245206883526512863455955608773046500977129928691972528868484403409332712377889794483344387999971073180731512065499988042476632052930050724900743181025839375595995773379929196429273927632925974807741070830968197232450769329480672387732259436360205598908497645993107410661556770487063059742182404833316941442137935707067230555451636298240546701738985655177753940704863329819676514453924915214007879045598687389680632186450474306104860242901330751869204399939238284101600962353063057021130136971115671049580986230643402834415212020688129441442790276219432268719012267399848847403083818408665744648682605455063950692189136340720353021076910743962441119886148899659493226049684782179645800338404910072339479931692391680254445318840487492621836196289383629743896606114831142408352448351432902083241040627419849293030050850907077336171760004275322676188778991089155749457726062947322246218673051953264582919016430366872825763944841201393776311469588464881735252034140303937051834205959709070007989036065798157985885728910097276984893420194802842574428861645754168380319262862805815308810965841000147932712020004296150877914385220895553825305758390556602965567540398078096260383210966324609432327375710858866434375891039205098478713252440391883452934758872217945110282885679969985236027833222478868726204717805637500342463170191263215808007090630292262838359127109150465398287713988682756016297010408622164552157917163136918620533221156943917513344470242618085269330469271294975622365450396509651444169475862352169060902231370238503443151502671428098175990241775697174710025786543923771643146221734187198067426286956791432762410744949535734392990197718611120771343994458847993872658140481056699400875242421939383464134796093517851231811820206647937173147127312351594109583603517907849463071115956844243287452894317832495656516313276704818060274593841142646291733065085124311707127489780537699524855358241703239626403578062775482304644324849949505004004104635751314090388286267840227648918734722601402374368636983400983551648368468386751665429897288848737124694584835575912330306789190834238011285674294206468043071386001815497292496670168449710489374462706742761651781975615524606109844185814749300368288960766889998994761499205358769537422851512258562050184287899673390179887661389507088177874431688043269950332387971229673397190595831022778272002843867561695484211258152919428761720101770505108180296128921126277437784924441391719949149363813786363323004166223822660596163296620645477636372337544443999213355929833333690179083641607936869201734663197502819228078972715028485401430142449452194550343457382419980704936569334894004299271845257510648060539802990225289176394147957280359959842558507563470681494781920350576183885070205141590452850968867474097429007532482117312947899368442610441878835550912408992490494624596549837191427066546218955659197287456821850921087246940633895881421990438047718054175061814632041267982512133734958289109645584648070246873838221014373410617680992083382054339498072967692316438041712409241962699062870730475333800709397768300399301293818119275640304800389261652984663635768549504091100973066301121066498969560984503260131614923556102717628872177882795892500117541676439268619823624276521952754192481204483099770593798610959402906695314826011661898471656364604316456883420948129225872662857747446698356896863191056559136744023136114188221538418386091073129546024870327428689912151336948711927167807216166234185485152503765106884321004634462192036730018749023454373760404806327578048303497124732893255743959342133627758284300564262384032380916188123780281802613909871012186859981784934486162022360540123549740790881256968236277418999082890958870358156714563101424340901082492502365051058819672110004787300795494787540803875796424965227140638860751080748423555301563269169864618142073541130017947235764871398711624269717459033588751149915188568224340003279386401731611953143625699904956818501229143128315233835998830551115818356053092282046473598005979585661022967349765752382885320066459417029225294933135264288760400048638399136022352466538448042442097978601667561291340259693056764941836150581233253071287450250433550414258170469367825216518045604452215623944525187131441651907843144786033438589809940625481494766201587740088521603945463226068844304453310369242948625904348558317365154283489965714032444078670966976350188310427014273009731597483618342511679373000862084422733353176939247456143763506606060347518508457606435940198711379494446046358333941853542049068943961705728627242408270354892809024536334382245608165117494759878743369124219178595445907217731024350225314749216241999859461842203311484700940911994480270735873386943362407478068372195304752968169145327794523006811209957520005479801203166839090095363797775047542039121386876376028640216583203495851614880277304955276019562707270547437342851059023922920771098606490234743843750351862610310733682904064244882435930583154187722085901143252161967527595662675725887783540893890503265703433756496999813723595066110270307480222858686278549528744031614016152447946019638956853008556365812438353104193177858903748139472803433608247449654284104361642179220148642680278634606242667249726481283399838168824532276731633050979619224653168500420060191379954644577389307844422795709695867212904486664718814362649062876244606200499988033551340502352017549392320838834905286403927874092017321207459987261337615493149796453886457427872866145800317690778081561647868745909085879288785510209171347404694319664402849084890909629033652407467533277346471053526285270995343008483448794012998518332810143100230526313011749131701378775484842500918522018973086377708311817551548270581690835240554796364091359308838953028100168897167984631207038268897221379713135235958252712757587596989936063360321739995400423892052405054107964417058153991696966867771131246211646102673798090556252571341290481879340636040615973443423621968377966981014073271893610131511727468865933736497667562737950544082718202710840134750713996268893887774614876264220418704499014093342682291494464953274104458827524032935889360376039618070466173335688584859352502787950773163700349962665394588378225400623475795860563030111123726670418937052616772741846244621838425871568817624753138667150789007822169947867228982783262051395725003713222547183367706359380740902075956963258014740480189378809851380400034836964756729350813721049537522130588293562224733291062515971865558905411836439848046251009531111983328061885091315078972983010260814692494136432544348887160023246359871938213594745610749202764198119283968850969026395178683189807548914616307177149003876503121989752398053529661739338074103951673968390647261244582606013207078913906353758361407661750635754823044679128839318712716058498126962162743779770172541492212042647268418186726599856403643132106250726557192095529116587444543523459616985861352544333274415950045845070620794553371681095849086096693221793145293536895136882063779072945220886479046515250564997617367610256722024121262677839434188718540177349885699910728776298218987703618465616105548327232675798922146833330289738984061305406047162731293968789706511342168675545755004017326048325637131268995095027862987077373501409592581000595978125052958673295938331619588808140819904058507372202217290864397335381166454679111744915604366381176621617593582544705691930667606719409269599436374996738606795327336681239254085281382298080166366322882973600211984917906940565772762130725968341893735670690560535535020645337166120343143347653453651897545779931084060680853989954829590883759957731898490134757436311258456488254565865189512904376785525997240300222378129697308175568789703099265948994807925471843446679149786029239554759651405664301497033044579374252868886296754503813347857318136511456297998092510885135103665482139212994821744725852168015372231891822290934729489899742439714685003951503823700065433477511979787559791011049483851557298796992960184336105162445013144643828169358480921532741864835465548782239682825736452500485057194474195974193448539360931512471597698755081144559729020020911581376767029873221119748002562836317312532099731427691630022484614728243789318637069588621958654014382772741127806630016531905145064618231578815280969148202081656458760251347162672691065548859743520423855653206522766893550191671847980506964547217571369443668184538128366239318361216664125365859440263307551393877222316069780997951317255374648586622452512326823962866830687067278665725779102412023205184426101752937784052017335756714104126955914201158865675343956272395949572502125693413365271071479796152535013837275134627645678955885076132417898807422077904678124201990113764512906050436442222305102873624541269382086761960500074142208041948444691904430045348566017473581533357475560070154025717687816077660750657207492876963903934919499483326028176561883349406639324751219980299723708190342677460877066059016045463096678822047460272505502934859987080854242134743790103679444128870286542315444642871614340911471949975478165880847793711278941018597568334513339664002070425921797377210514475536256619871043547861972577635531912164331093468674174992155279625955355306629289049402295902745399036152487533592700098234977171032962588274713321870366194665259285591258300835675506796834770380980326296925584559752749539956128274276044442729841522604933961223213991101519216124157607503193474127308345466159699589433842615976556644128331058668390411437552529413229819029224249738824035161527135016670025274542884765419199808635650699349070265213353303955895094386000773726146314117042743912804902490044590779375865575442501447743011979652330169059849021450905640272774933019306253627303799459700413953005936882912851566411160292340912305059696228533440093980758555368349686103569010931016339194255977043610722705426916175440749079707176422176307103690715654859250308904996408362456329235027059368637064461666221482776603550587743672540105416315651531087116115069824693903896126226910383832584390744436098741330116591701827657150240321087100051101741754176653671542879917879671503390782067143120228316532856156284655057459653761909266638593738973977811784911271666230984205122828484578759872091308516280987021554997504270190153014535012248430229465061364897082793100087761645269220735972966633826007134233642786381243412234370812204662368020328007144358106770672591813329410882264054191026596832439952260762962614396455933147144572116644109850272777607563269535282146035179459920148782760605310288170418392521047377915944030226873861785359770067047310971055692052894620599652787978944366979668023030605400077309173349801374014956008047947234644178595202996667276192331059195557900750325762678993068938046350163672431731734091766749792304350015455844220361280815425822671311249736245662817593955872606522150571597675896355425788730127137662258815794231877569989955215196781828913949689598186798562127081807970205808052930717386276942005266267539529945460851718451488689827673273055003482576219994477156579370421797321127932817488959448133083168318689938138550774649959467966007746462396659473423032541070205175924534769666576392458994250161090706072569003258564306821887838821809100656119164354514593739698205887028677461042908671264806269477829302546756820291273550111499219434389916903351595810484667411586587816552178633278790434096715797312876686483579924305886806410380046261963900316829252937452239701957610091779072501286306800716764113872329450640134244143866813874978136426828966233766118915904712426887903404173492698386405845617953607819035852276987549498436128888043600814043259960248115090814425696212810340940918970055993618873328070508141907489786826306137981742980523716954964765977369687697047238899417135573547948536119777675326275892861347495033091077083873168494398669628469733552301682069235532869728723467389652229310998250110096433134268582535622634192344440059419898933312341908256173844152779974049835679055264326614278998444422897987051658907047432692973156871479953798895359966574474819044868801764170561485571015954914571028064614710065044932851777215774313916802174048953031308039844285589871766052274160128297875237824783849767213471070567764998534035455903968300121253584514234873276607654044210494533086884439182319169530014533035855812965846050392311136930322907636438390143836177564463507655354996480731893782356375971350888184812479122809206323148454477478551346057094435514787955649067115944892433915834386066017775666802896937598022519154967553372102392962536406028215685991652871541711114277316014550795925739779025611323567978678652804938266771842571409381490205006795194968059454694806229332382180766838971466572159007936898917857478631343722819032448779432605480042047033384621780603984803157811713018332697535799058253816123681834810596096936723980192781639304161515723890388438484267473288858455936220623147855126623986299615652544550779180103722577324672350114804185709350917532304465457554616455801914338219576779235218309201854893662673397661178921443327542302158607524155902713541508548859601678865792591081763964739966476115196417214926267853706480695197415478566913643281837537469222481418207245021081550995909908234951540003623285209929995995859770927729482421078599740529185737191619920633133540058162381983069601072602955534574716800946804095772861871942488015220608611229692842607185736793231523451884497742739264104622681645325737107980062455874260248578356111657085205401302334352272775003811250622653065931160456853529611794442646644222556612592809108109442063734375708192552159912087364273041808368760647677272041284758337009322790147813437957435161652137191184188767868066892981895681491269709099695747344442823874309059336266425689897089018740454687808614110359610654965099189912821303649752368075750774600426075032494460878674635227716555363183447785068014308694645964901067376127170656299554455108720862555056726020704371630829145632034043466236125326792023442854849248325227654687346483088056814392097856605805392367888327725880572045524309744865870368583199251738455410413582125779643346155661449337586723209118206789502969743246628967875475888146955753018194288137513616673290433563553115168199132076364989677117836897463464687891334810021316379370927477929720228331160850721877900323657234051814076241660313185825139494080906377082353539563661237644919890333246381661943277086395781386670423699823033330116262622184918699309268264965562293382057611135905764965000846019079146490312414727961542219000501197758869700137420468627604558098106849500409685541151763649743393149316951784056087875141891064777166481748524935271488378238977573069685933654556298048250064710765978460283746790169341700757701387532112644091621085941729988841497992421402056947836175171202901450320334993843842328868590351471712060522391414094052119837955197500910182634270149976260683882919332119480495375441872258131488584365048309675067471315258816263604419122095978619470769796338638866241242753490462402786283490586544499442804023461869361056294185593163304411627244110979240701937450993032614498475279123892683448829823152416355180075416614096671560964041851857600251511751585590527045487849078552714653012927196522352141813216426914896390025116057584523417072279326414542100245852032104545002828489017477341373192808381200200737682054412250296006704485184827911569607599717736784512854193368136437100768106424330918350921369947850856847214711853987635717166276925228952098258029326088203522717658447095021660178731775382820814270077186199822332352834525494542691926531031441266402465502320018100868141760501786975500928485754744488738823587490863094461976067109266607556144171262513497649149457246032286240403967342185385960206903832970212241972291688241450486848584466543560617176235371959044481511249097392777028437883419805012449749054176286887570999868876330811670301527468553669453116249654675146280049695729628307977009647457595847697371091948771777588376660432412222581782375937370567067827436585748246041050848470301898567835511202699502030975483511098533896647202201068402958571211274189899057707103055336514916767570362974524707520673989757369929827909904117393738448685589619625657892707832901713341392777979397961776350684322254195861182916147512836442833667548120678240041594134661534830804079578733988071047617050139519279281176015962752523370754455104624616948361231260143959796822765199600814903296656392852803378932704054480828062329972273904062245877484281490814469544116824458236034272671873570948675397785623997267427786763068692516574661834280496897148259025756227381368797925117554242466067300620629973512684648895454826578238533401778165414261918717791848458115286609598361629766042014645233454688333145034019338154635022756402608083710113439738193032048118846686232443118267956669978000948880209592305807771611256431645857994920543403085324703847067728323037486738161431922148645563814615097932916155072463193407149921547433617059578289608471956509512158956523258467720373900400131767883739402714369690388133339289184851386105746123528950651748882413058454144919288184258229461614008092676296952509199966889239286437887020110732793482739635068729109932939593143888378936873936721128724608771187951322059688367390454648578568762381318824737670398605524613627358700020341015379051126784350818021526140384276299846595338253494718901930353577257845045303013297007580340478838692804403096503754579413235868898557143073348227158412673386748872372812750061959141305226346422697039491139640491718354362579584640430529515017687427472320070673695379979300490891541948617541148392088331544527047905480584170744868552396490414844950233817576261383156578375563575706142657720707616426610672319915996189251015140190913274380950250375328453727588243043936522866589939395861412360589582613667341031058368348374734390275398342814251177323920813986669570121426660022310054964604922254880029873937479029507359706702503079236043074891328993619596584783738484078165017415278763794592217156988848254415557855825272531785421204281726401743536194535674383849475366373828491604451500347836585119284349809271718571453546953485691887217419807951277110949111697107363215274978673179456441964884688418328833163000764168986105101915146613718880227565359357752544865306605840814058785767534793207926848540928276914708190715538913689888735118495456437821087485938089931462547634723168588631457957070752508821523129093285369063945674781660434999465153750055717194246351638046655052254704011399282813179297722609037124888617853931343639104927814944311052287573584589027066264289703055186889103875571254534818063319755118031484295880137857090240205837833743863197617976406710085012874102809524971511487477128233099607471394406802867964052244364807171055184947417949557508734925482663747639415301428185578073093929498824411212836380019864024431620356320459800945348909739190527679301800041553039005879594637024286060654716430614560224733088556043574258806970263532273861829186931032522942019779507662900148374036871983307010110633257245224902927729994569140854393010969309072059811998041348945733635901121760331901655479297727140933829784892861134973675815793382201404433745587969233057798805696702791089402108895867673930112747800299160005758674707949586226055120828671325684378168547405646194849528984652145781754220372172051482496270691512425687710606567439108568664529276253779679383552252330366487003837576555620715147427742060738613238799256618396842855646229450766959761142793380566470401208281792998614312163276202530099660468999515656897667778304274288038049622400256356258419089688492912403150489501632898493714968873510501966799587744188053118045368702002044810934570318524223035193068777257622851457018597727251661936857192178715640502543238558602889638587849524163652657588539667720079917604538712549566891313068759941295580768426142695679814411995792227773058285327703371864285672133964096618874730557566978621976570904156747949753937876918800232164789972600708783521334237743376382933089568300866948000799805036573075571545025994283110972741052454128515498966692860601914121887906571075523299769224564703950253210210810919724406724918335524254275381001943086002450032141365121530636841065677143160393201638303164833896242790167640822473620257228286437819128447529967719568209163520824260979435230167047472117865984857176999977780181174341331202910943784886308354095074901145141030763761551371037694924015954327864465837065944153738634580033943627966201697779698524490610718759039156048169704575503599658637786570193940028181529942781119012248289374892707405766285686504043309575429694444676730851262820287627438513517644949814062327365400427362796014966880988787215959439977733043968645173800021922496022712328426479829036916084870268904114361922658667185160269743722455358614529127314735435374055899594286644682516619055758825970416467200094464565067464811987409616728300202806807494359716575216669486792732505330036332858352895982046660516960351486720830122035856312636313016618852787887543595097108483292259979920262791431265854420297119518321946155001042855602545026451619836396412362131389067965056071309338560817493432006598830514220818107388471634962629384470199839100738418489435529643089466814356890666837571287787097008977265229336588712594994408026211141499332184493489606034021389534484879268904740660557042455811445252469903238434125459972477669585007941939037589746617295653435369788944625112699232091388992953172373429356787807504060916946740560030758221196877057794451549981198795828721647802634259742733625535189548610253841583513805159030163915530788091414781342894943919250992683807299999287497737602529404810715394211597595037738310960820999045396844108734820608329705680452722178545839548568454199453438338047961046752514712902049327004203689252403241422501780365204875721479954636840975772951382642763361455388127890355540426025549266782479149848921902598072935232717370048860410615673453361047611274416323628512646945039724124338749239854453356411978231169144445070764400484904731902240663674411902622791078277368716208276191394455647455702597567633044693362755228074018342540376171229455548974977680451344358733214411779747631256526509835449200948211671896351828668080778710024367041276878364462949275861116414263559929069061716437575040679696804750361825946641969555817253639851435930559663904979002756244204869532547630430235787377423617844227430882786157844299368243050511899630794502093894711574582682212223683286145820556840836741557481961246841966346909601044603025128622269729448755530136442350950873577999342273773771647081080085034218845212590480368592848146210889771351414191677893827813604369970933287191372461346926375704472288597438263633787983065664835232091107493486598524649992967836031756635914232335332009950863387494549504870973509177031340356462928213801769698298620434453212133704829283082346720542065659652614869597646454243969325827314072709075673792523756903473458917760844678320935793778164961928236666476093935009753636059964558622258621368310245096748579131934533841073974049718036922289666845195217349141002553627280960954429509580889028454013566241638070001301449267853894267269620250102518338506737707277080170107541869323015536432202256566961746102703611493880428258999349939045770526837649016818102772803208234601811938947676176544462145101729733229078430717022979809312870113663731493685651176179814210080385736429593755886542565388788297835588742314179340226254876328628960823101315524071861493212265466342105118797746875940987882622827425413477992937872116875579895051972179718298821629240706649312467588319804334734513818783799149238607033352477469930973207209191006017833979389203784420250680790809448419676034072554111985124489909024998548815488514253136321788184397234771379969163784113145388913105788697495955754035491733770327222328837558111714098383779474579542648185152649507005645964256986478627358265582557172507061842815289806042546288202498985090629685725572540079527900504220957154244207268993376991402049528178712426133204545757092545936554422976837730165930725891453855121464894660544328746334586268359834496164782693983967561941443585219528971216503530929877169908635832493505857739959219858903721135072788993955998660419125484069014561661171329009264002222225244367683436889409712983606939565416430354207167804576065887817588467071322369447585440642205609049842325857576075771081862704077222079307071352530298679164976615506350445595036537540274594381545714484321777169111545666300606028390110914564870715400146307417172797042964660830537899948076065919797442324071257040704314585103364599327848743612104114889829449710980123678735890250568466794035349233286729041002084062667633518357687228718525620958605597107835466167424744502783012613192806845839653587460499023239760747028487299677392473941363440218040812630709935921637391754290797469422554533177858861885325545896832878073840498655489948012335874176227258661401837785549301111395806148969005659856091944690823108559477468238957002503781876546038859363382931473920228062513439122210752828042954642060864949384307275027645290387976945550462901263378788346135171523832127436476487371682131543061396942441931663183308460083018023979672884920678840534642152562375389580227366930578525833801823155496705412617258071286033868237374827547486781336681196310748753876145401175454331307697498052121227592766662139632143104532060014001411298231020488751710399586654968902171212099566773396188431571017825879571952097218321176214064676034909483502645219910267685810489786975383145725651351743175981221074497067805222778439806234444091033958253678991815188033087772800026787269036044672326488286830593173223488710711442393784783984582563743288376120279015501501433775229973985346497036414723263455331745950454286889790958228858666803289984600730403603990058923097266192404448564760661486519994953915652689307441141871072972816475811694945059297619153656769155529251573961565928661708286067505693562974506264839205305894615849457949314204072891584715548288690408947505284321419166054054663777510482109805536215573520717145154435670064323763311525539275394467239005027177899576588815687298694727824790074278254803034823754239623152587898511789103588588765328652308072156373404960257344873140660901399214668928045947740541579694637569980051232934082992940554698792533003069347175897445318128065624617929538231403778934914028393953604558868696598174039943538734951148867996326368768110239259265676651779688145547548152896971590229036408666414046185002360640616504226276205928920286677193373126512678098906393149336538487370661295106273307174107714877076786953929412425496713839391956432826654570819237791843278760831666188109178201740627637995179486913105401174341508543656556239640163468560608625077659883213521496120253466816389630599932594011438649887804030481464050974799589157957712790284593647167244033103435641960116742175036961064741104707561780207837252998866714875073871808752803992577758000162900760303966679357619045385964814290417367336739798949722972386648829100781419899277793909546116838238797721052339160397251005329908903896720814457874783615695247839607424087055949973075430272420709563654410785265068738798748924850996309707310127429237022130067903178860990948079471059401446730684586378106605970604938757898135184476852471322215273506748234196283841722920999725595323154432866946881762542694447295357274014069733062052074248417759383656495286056576440263044265256637749587838826930338845854339449419533943442138084921065502790065714681673019631540010976787819800123572432911767432547199379073611805754522032892289767138373363252310867493317339980234998168874156238939762723220035240037182078625028044679858935017764634101201022710961731494423025904656113519338696464151225250906962308936039821717479761516437310417030032810852889578544237920028751168018238108818548264943486316697552909575701950173823996258514701754000621856091050422963475814002418763092939844020115806003828647194272305417496642942228063252739644405304408612945760211883080899561416234034835376656353905766076091656486090836766628358247557648060067055508430474247063705639308027409000910761134945842131379790481319680952169685810686786775094393056406248682524551624641418846586677103532683659877223504188020387706228914107920623841868912294203881376074686224777401950455548047655315137584640575725200349163526106174145249671691204941069647495347613879969972423302601002801854477719262365021258188396865587092459665543344839091685892766451667862464458975856725231333727542600747697081635053624825056525866916653769781960160534655208147549311182819632253158707605942212768812213997488170140677847930945852668745458155247829168838768430812720989340457824493610512443459234225686466564805354560714617703224236442676914529665745090282380660065467080542107249569624094076645145386896345614990972390766017071782210266508974398252380323521990958504378907405228876522858600245779737965488079398956946577588780964083711748373347215011083158633645747981706410622409699173216988577552851465176929262538077267607715961213443407776409703101334645284522856427543516864600158960021618374418889817943166812690764796587998662379234385262362579899983558302913629253490561088580611795271299729023169975713652121529786925886984361823903983158192403689691872192706693212585694462598958308534465678887360113075995011219049013396041991334829659563044128981193144454605528693609495791317440803427969214670178390226785972990845289783279778156453443921156943227875716849893052119070687494360005436684938404834567097123163827902985695106541574261903156581096989514572005188450952452167691612027917749864478086578061155346435728990936789705992189646137478953997543526114515409557561308961203964827392016651759315941771199913462823728303198257815591098249145760234158804248175204043611819219089434975836672588001644961404077122368923418140759174861511916353391425437333870341850468868057292139143900682231097089190418545602185696891456232598628497170525776010169891764725526642695298118676450805771373353231967021325821197591788488693189697827102043458277940007567112457156675511475207225125883223690786127036586532919128656977434161593812289326451158446134100076676218055604534726766085588686001461589572283121981741590659680304335862489958571371215663021459920156433037490464910346960015053811452561671493600955022325508508828432906467189838830170040761905675608526092024977524618540496698831422294386360725807898576272914604518569142534700929687491549299605750746560880259380224555850407560611301987637144215294551814529719257700634122258972572038730437011392237270443857562861932491144716967441184929825136023573668563396705849076948279976568280007591708215706645000805252551004369765789824035956020819218043739087136225486613207453027233820930214756655313445718381359893264301720058143575768391031668283666737258877343489807167617533786855514016885069722543658773781279239105985494544507273646443405522057973637458466817510374896954325206039915676745315937574238837895980152225504613628162020532117370714815469070805181648195265584113772219471804721380197027226064076784407873828467576052932728225706063881801484893153323447437138704667617656446714150207551322747089462686234826043613119160199474564227492473269384871179792481172555804214841123223879787644521001014396965191133128368373685906682496645534639556927043687278703852511665246663786749412221554041817740800506193153498408259027752578361680316554794446323915550212055630997180359524356795067373762737056920488704482217579174318594308797447395902927371746013625764500106727098178329872485206702357112412775969361919487632742803455791106746282279778271120191769154264814463583501514892056025432783811252546585337349975838175399536237434218895435772587348532408441477348718280954840929767074580885853298239966188636572581341500995323704149841004433909277875452368259369041975289313142998543051783595750299899535392491886750901934209152087062934483573619071511944033726371338876897309666566141049681791774452255621127629713232529220034973539482936937028506545964142136249842843945984565122737394773151338673518207053599003599934568082260320375280610979953234534258575551528987491601016116850694269797720862721813638413085159956567618546409621484220493109327937330889335357379210438011465026506723792316901032143011246293120018760321559412505809029551292850954121451011185272104344494731053174851604969599707705920481840461430155161615435324008610073855727232663531383882073072450433955678699367780381682305139914295383068303610612743406307840784583458759516539014046832339182659924174216484832488673209344887587338218213683297202568999609956709527390143555514547089982996313202532382545363272398584766788564492868121609890788264964174063776363827758532327215897408597023478396251578502092919414834449072492772707596934937383991062120452478140192939717909420131611188578506377180488320141956328107035132740665003906766893591123857619506079000151491250981730393190533283405969587058690686322461544978329553976187697708488165219085367507964698848311399338334392392342946163183752428882697139004204734677561084392280865511264602520283087517809056956487428676877057718325969105346409468977985204229025480858469199968917144578675360056242414452001051764465879265294857349947455081856784582893087997941475301660271098302811930331162253402310735056896507491045307631494180460905547851650112608495288240539087638967552754264406294295423444511176689437665413268269458235370866858441994415076433125509611114465784287410136155486912448769759605859678401529072445241929547174236453907100057157486725124081866470214854393204823236724040465785154136284187114889521512734147749688760953031634956056573994508431682336770988296367804908265765221002388963833397293350067694722135009898857177870918084172435941178720594009804127718752845072157752972493087715642219960692828835535279697368060318780521343305527188998422813157953741163738584772044358222893131101817306098636129147880606877996202177985542147329223681948529025059695424702815741222406260552830976601595366741081189858622893603076600063716076345087660176218578727449249451015927369868595541229597765885513938329391632319839322908209145930737305807133346784219231659553641141651018344287967878340100830060519549478904174466756187895380097296978767197294523212123947565091862497031675946539969455504488201948044049334334232400466046424616229504830832858402034759619437042093352589125726531971270611711227502601840328144825036141368853090121487047597245476420011130282407494972162669920010703336814930769319743235106154590860004987597376983710593244513336489224076008749556265031942833636017545142984600352270677166342136330257745084779074595529144636068837137253504356332773231894882288598536126144263553217630059512620613004386509576072700405842140315293731891455666749478227386647907053894095469754671915428476066862879121202700123269218020824203637530245810275155387196829972121704171688808355504574071500891041341158945114126404368861407026100563381848386155867527553866012968128675333682307989239855522281416131636794644799257900476939633870085916036432872137044007419617052331201634388672910764826746566921109420867545214461744972333365971788752497120741555794724228863898993776694576178987142706952977052238393814530008855651476487412755327406146328944737670950550257128145441701372495117067693377955554435581404187971047124045717858146389251073341095851382772652027004806183288759269285715284140719579914147934558840983480053510014792131187249197889240347656179897713418104038958262807200779497681745234375464639812109468900152643341757235550778816103931869701221577131274160471248486552060186703796653912001113692707457600602392349872126696991296628964195036298509938664768329363368343603273819031747576157971420699087109946976269377956697405312673889457773462420488013879462331233214614049665056123308972668070808469935582727715805021523001018329664101886931199653805232044013414009964233427792529672019682821214190495344930041917362979581787387310039875638497986867538392995524490313601894318336055995641226597323453100294089089129573074604598495123855249890948507668819540142233862486253589495362427804827178304788333420345276986255915156213429856871703978978492787203391157196251689215755427044709659930663677738636522351899679000359225432586099768144651225670749108733112124998371031138690890000601591007963029504392636984253176331747349632422146711678534979817218737519545075456834772312666503616501077646115200355560801900383175103861861732794630220497134457046495047913469382933151865172680362649824638641978442062943153170666096788404446370046726797094231116458659375967649813662683386148439902738162940749067494162955657732360800913904663308933880702345208782468221153412652689881179626005570965000255814890417191818271797749196275741853582425046461142993468692790274785137251936923556871702164788121373174698441304682665615035434546121995052822722847736314009286481054686106252264774955939022433217892013577338196701473724554732815714243856356792850041546518563153679164234868446442675400740872471256076196952379705284937451021766870997995208066611571352471252064892385413342125074068270260154036837236241548360309467509139739164473008299469609608287926154768271127729394555834520030365213047171667629273325770312761000315947666215014010973702812951778066636713148554027852842253105460108190522823712321346732606837602334870066405353847117196133368317916519514911623864585943226949450762826178126064277505472656175972440485057462357520981893205750403468405086337422918802621781510725825079382407934580298829993059212724617783253483034487349854018304280773892821356983324958888449571106961882445213610528593206361356733582664044704301534035684454281692543177271048368993171390662186173381359914055424110305586302586250420313921483229099014228360939212307771057164240296647631008685379769111318249524848372505421961823836898255802963880285954700009795590427002783382231220649025353815001854126773140075137243023122573802296155932639851104445480156846570411125102991296741999956579955207371530897360870851205431091932236502295533660870347280139284108935901461631390892078411298048992495469456916852175926538756219552646804851746278379323226480138108183027419594194031138119567529309450086383370238835060808217390343833896845817155601587081602828742915163697795150886404037265547782849223475531952499226544681718316431783071908804887811419737696656470635891669369284687488218228164340308613899291679996254927804406604381751975394739080688660084294437646524591318971697264441126950655928548148448068884551619798402316498574318312953178727927386235797318275659420263352675680262831657741125761085779761362623197555086891930338298701701190478281638893130694430317380874325517259332201406465125940270446045384179723380973213503024799322196256126815696004298773575182422931514143656054284328064244879209859327627750981560678319708673968790021576016430845223427254298462921851539203956269894842097663904423295396571145128048513931536842126214695767674248026970208777016801127517710574374037093009804018109709073459924845560673488441495536054488020446166956635297811395250763214971413990783604024909893863139626921671538196792207559960474130053792851145019942423966310870259235524128451926311496203163923178541204809894410378369292087365343783092344602161370649319269467026324800687374425670431863475230309516398246515758239572230859753258117032567299313171370331956995361262509601542563350869222711862108452508875186427326295827133063093335035137930766797629228968827309194245633844896975421544397663047873927731651196159572842384715664183050335751042287801626010059240686086603004251918549844491036405173187636641979753716585070689709773164359452620423874537283101325123718965400801316583737093290303668298409152406771878693048006168483516881760404103206225699925108497047039767294156723803876383759958400115001547566704155363421096016841562791769278726508431310653892112867813237170115713470367548383298494169810648320977486221321309695452817410570068362646440994731626542244169370683400645090629450551341707547979477425153745188730454475159956649535568305917430536601798545519882124673375208211685909132818474358382821795280413537992943625899624876534044539195158669999612783781535923530968990505918485393594469519305507168147162831402661800128569332946960737256791798457932620362325836023034135710850524497132629190002033356488581599309796695020029332487381944211950019257041122855161071579746607402185525760839214181783252718999168128702809161446169705251912811088417202935720131478260708810570128006863784921364962755710230740557353269806310251695002545584928636991489408947389734442418721715936462998842806761204955389375056033353798893631773767428826343157316419128748962143389668154788944877535264414149387123012162703555872202823087145833040077069280952329035681975791478148984096622467952141983957216545600443147796077838957628824948753492842391369287686213717461847831263001904330696472624036183003784625234603285317858260547575548970411901004151897131157495499395173141282833954420643433291063458290942295328707665633835382779506948981353471286965492106978228352782989041466840670031456063580315303556234899082340234870435153142460297255385509851695006262994724595099484384154139733471551117844878514250049363551507216742063065960532427697256475153153472657511340737098606337161453510545136689834250456146775504935359220988198306637390163280754322041212381277932164686052168941052135984813878644330601996001021214352494825098285871708433968190882518971854633946663916033528986316374958362430431511626598869860478124766804120560059925389742002213378954513394815533655094536812883265339326012092998085530486849864346856101347932973660128031387620753800942864585015496683387405564230672992742141442608793962464316220866356678752028323014593144466651350505916573360493781357703150799871435649588285138789462310141282787872068372403709662085879240476200343921296620689028499318523890039676054328647377187081232053925483417124352384898564270017876190141980701260081452021958844261126032143381388356810636917171606747093445786473330661205648243371920333013880015243866020045744484568864396249112175932717406925981062374804454599094041310114668085274192158496594900486994128877051935038940249782586120668519331148836443372957706812976344089471509903339899547198059414005728392066841863987833359037806554692593286584174773381649263900068887046864340151491156760546428369601595070618777738759747045176283027749337067829027617632578146636969490385459915766751075493295641866023580680192761674844245506062187293495358793750878623719908109062702084180694567105492785766309218248935058364841046544187821955975428291037921090116190879155160934403652367973114289649326992900752754193042583698335713649048852175878119852743485204067667670506520596274703443069362388255255808622438274367693981859066175966959426221885071662383605184492268506543811916502202877187639493631108681448721937868425380906116956323111415652070083658126721248675847678230091365035333015607656475241365975781436807892107594245950196020981947923618361657237201770630098925078897542653821503143703709659794025759310728852861800688499621658207929393889777704862234349792125719357438372419921177178392599067735036067513299060342985160395404947123597400265284275894047647640624150916898119401367955264387100759142904442586815730164248003936868447325404877612318929226961349747254173451497334697511071307480288228272547939127540882515792860992247090702027624171927884959784343483865323314039471181864537704545947624411936034999960310341086096364893270954822945570461896613583668675168380433880133317150088666387337959044093562973948810151558900323136481142477291286955008398831693518588737848510766414218518583646662385477729840508007857328290248711503390698417311454937271410069080117891834588924475427072711609056806810575630633211510281012435410600084230978907546300849616144437363940279858926256001949780069701499990402171298894082869392486589051101989318056631611125886939635389046066062242844525344185672334842085950679519181551306748838023035134853904390454675457515172833006606402853632410828039528069471050556328307950884363120990742618326337526861477448684416415474542311234949412501595300524623036366659360334545462765193741774591525013124966817454768579396011842570175831860433663882260561062653148568167544400066026509254116592625148765886388306712453416215631358969159165940597527901149023025843547523249567742383797956198630238814970480949842704625305512284216405004220072813718472441158095640893086325358849683237850949042897128017348705120560294509494497383730945339737179950742781985391910261821838142627584007531863966347138233103283201315815512319400002504953820219026403659529347084631676603357630138932666980393707194570189536698985211401202099715803326243408643879935281502392034844790074533101049752293462981314812563480012987285736735765015010912745458226620536221560094210297091054693982635553776244079234799355759065777815826954155337813440921090413572792246464703962280081798353154598496286741303334700949049087579939495064752891279162988910459693593281305070404923277536259700941949894569797486577564938161679338964035258233476671526743237678337695951620625051413536799825674938106954853998300795738053659413931407262743477631062556959656891798879774317005093052782056170383889161230338080833973428938814293688462027614137724997890677663839180052575131490263875852801110842739290069834880625356810367191861730559024485295375446399569304034029603096340874714509994879907967505195023323244308712642751521088775550485737446304557323877195519080954595469800446447087390112451696290653192932354009814197459576710998343843258597979583869259075810387421180021285692886475478645295524160540923835223617457464596610857364186019999594303481629296925580316814030216225561040365191576474543232417948952880567131227959761205172557009545579322943752857115205910724489772426176452299824901930184356882133897501065911965093191822484006401645459799030165680573456952543858438699311815914455741338588282082757271232965144823965416266551344650433048301308894999084438943515227446551819373012156723007955299535442808318523068383024063953374926142999675824389080187545861499247853213418070294827727541883406489343183664672123064658073520746633507823107493300983701834731868068382360941968917661720221903694681367817571954540624825292983660731757407171006822412326059745424859328513376840932470159527000236457786431313231333133377020260390528213377098870952762456960964366777996226643090153861701248620820367672388224220360914239893912634151559141202091103830647532290569896179801737380237066862894713710722704242583937777633168994859761953217382009841506389455599060171023815198709074374727246136388952788801012061223294725195769568115555121668005539220959848072314885644914551056957883327648478561160274527088469361924449107019175102243561713109140403061470719423918152469920559470854856838165819156249749656734345831866641247534807549500818860978859285431124497287956077431714127942350602121673414830653269135399861323565368377144048943403448708415545024753090891020485281371801445287069376717231637756699563452525767623322797346224140708406776479025761032399547312104183264077522066991854291137098808184308662352246788359589633815903355588318440810575501772296024755215345167915969410151304830502505473671381049070242824484236315213332834578871454513962174790128410890074184236810845766703255246070638241621754125306408528660823265987857634995696468035662905212022024624140930198520314857082872979115186416258553512389807388433897830176157283820007562545068495573613186668114392258906911167121393898482986583452506940349326408763190804693496565532145960698044221812352125024786281959272615165311469077294010575998055660843866359718137337141589913320778074905026755813573728635863043256022128446461339183428404262321696366986681950742149777684691082193083547197613505786312130111683758167743435356016035046148262371328062477655224158443091511007629849057978658213003833849878617362480811547186895561789974149758874800205211581947789302220243319929678980520121018420823880262359886931477557939179683347096467933229325336480028026470073531878759567309199048628033227103828556995480737194660989830270569744490070066657714224502540751743438480037404308174006561817178656060889999838177067786486213671763170467249558690730062194486055922934693210168127361260731278398783650642215106711516565561349037245386219161341483259873654698184723708297490037116697939714279889862947490510511432743799216024295559152229436133041346374214779521759423189575111035313244524078620241414799161699808944141933304990237682405641781711421401013841800946869075619689791274772913608557650679468983320032157082401026446752885933423200794934348166768248271131548114634927365884131237672113434785203798714280822286071238400239402234051235377051046520682458838033199006542182726606672159018992189075123587710619657322480370532981673923360234576768322681467555605564153862299724396341334667255871385349222785193080668303345822553564630284639795566944355487890069598219224425872748429066338121335843226215740256700429897810245827670686512056924123918881768727964314774459312624974912334570979541034494315607226596152561360752263779490355304685339522180714950935861502701983829501360417850167680733095544861642245643789632150123793755270945452184722228076681845057367349756039536736517921911690069523569895131939864050081311017405427735927045000792625350475924137701411508625834541835842906711563414227217555523756208677789836435693508431399853965564069641353861139477573445372395834120674703318173911029325845990125473382449285225555192345777077680849302010236072590974629167482495003713283237532779904065030157427421886898710805797281973397076535803758146158312699946342235733738348955039201320456317025957587321353709436416028011594467399498111454602574672208004827991152528614829251670595438470495227571052840135603259130480373535592372228413691525992633777357629469025208421699821333301547719007918310909071980579748003896872650067132862633285165805760367946191462407693739973500044787997393697273317993516092562330933921809660441150057319337951980659026433497129389080964290438492713273817389213625004064428039207414360949090812747896159583508842447597113632548418179336657385731277853558503888463099421804969208751369722560935199884038653568089324219769077577029518102932519311817731057219900218861503357587011895872978322580194593673027119022156144949282326195140889571743778113457450279789206327881217009946306388400943538744818152818387262842069281877222465038036159050474561806764146622003768559114739290589217508703930346753042301480882719616688099822577819735595208386727284353579623378726952464764655458963773564364321604760398906550558015880883561165005285209672432871129600939578359735672348246601870647760115372839949999691932404049176414843893039885839431963320669713062312277275928898702469712271135626634793825558638639680448747866045881598450259401109138674214904416111004354947373450212344474605885562257141749671842109573172051403577797619241808102153561402559220023032068283540874887203975888406530316191744665605764839771805744363694869416637558505811482153134192452181611093286384073292032571557513794473332132274706454640800055247905759650460932811090049311781613838675694646440363327921152982676713086062860467585453751412065810570423594742044730464921978585827136273158531994480230431446902272635794231642459455193006083017741400306924175407293010013944425067253671922853605429902447387576802816074834547190082554626779964845376377007981199418439211848688133720426302340451034192015737922338572012848353680611709511360548540415075352518440006500658310546618730110536197797489519114620785486668143706838304350584512171589049733146216493901009226179788700806298319407438538085638150564032007633558568698700676644319782400430377558668476893614907622327185038437059975296549200201145735931760958703833079366026817774576896183272534388876921419374668201682546987137507091211596377093089427027363253065087581276024055367557267593159629922013797564553309772125489437458436526545879706787480112163914464257696600415339908093527904587379051872279656273507886499720539993777205775876515566808318529345168606255394246722575916697329690118606488699243413295875879732457444641479930684377051911076541596698634268130870419823195824581526453528286094443003663126966103829545578774116989629158323684964343002811314719395487718242846109494798205864451284030071910979496573249127087556580581398218315319040130011449451258396886196529162690129587779954367393998201938582317722209044130485178982352390658979740401485536798814156043123752714877501430656072526680519691755141092427102342193726312017099027074635508720434754870658281652779419025056900606506427114791128558775660161138244107213668080936164428740851219433804401870457168292049638437558877047677366045912372821086622795339059144201183301276606434689595824449596772307787272871920435655931914164262564201758705548953917075726852826932907392182753906634724426995487992078878109469012712283397288348739232258998705181951972284263560632150226113621153317597549013390964768802284914687133232193194035227362481168002930454441125630741896521564593545473740992788463227807771231766553992437271193089729904743294628608342267031559164039935185077307493877678366373578606230836431612346859279293297642632517215366204624289715872986621136177679755710556659333496165695149043755959211264412473911744171082726248969925169351331718094578557141256494011638519443446066987475052319552805164310191793298708531844515045175707147725041130814719846146895427374934628051856227344746591406063701622371465525857825678220478147255432980668692033344427665853534755420080170630141940202044579219269493893880657002713141165214328942484416800446100451843705645244365000791650488381308003791906272656057084573468602642451309613565905148894192399138933016953217414099251221417104367631396823587848481480808237763830294733153222799386199360867092249402083056237854516636357704676869357917680674901561773228491781226757605622876253471195628573660084748752346387874365813164371379720970584049280569814969386801502211964452091213975179207018567915373681545011612264458440980079878743117458487138614974685082405046249687184514826326703415788370526051264039102304365297261949548832460279547240087300730468064230978177697611259714333997847604247005547548470953139273635891549255720970577039381825438214931539150015398745543636101588180700154723039467151318738447654800302855856222161642525127663666423697223101166851674035432223444662169160003122920395181965852127673394441846616804128742408400012381330152404126948181641442929185403502077922587366783682329754289867699509261704766954216787146204533078763599334899878080955683894280434630998005156497290818048349685946261276728942890541220189692591902356514141466156908663357913206847740510904714874120421797876103580095609943731695389581349998990544734958644620123230412261696992101467095134057281601354262353594330870323674760338536509224952509766879297670201379256241561490329795797229008132597342398763342366009106541157007912871836010371897323720213552858299925066227573499597118668088458930567484416897056019786971153624706661390155715918224136183460884610439765869371797255619228670178302327056315396076267765716077307471653425677933367757586255447856180536901326799007133269310956211259566707936919031350153260718072091175173253713073411231878709032357070808150059654133094724532537593737077460808731193398447586061325453577033838979840564176777518570216159248476972328489161406429983069127145017498627202390098987005781845997033270787209424565222721841459302948536103450037963253372989713717248017001138290693454505149018987034491391700000767513103262223434574035535588371338706164957821526236385720947085148669326290955603426600534146466526668949182624882900497553129449293856781719876846371158053257945797157405949480678492506882667729270919468298105482706762184039249362972152122865255572699541542479631854188432150321059181084224220467438191912088224093759958887194187966671417542912395640110040143428723278509837242587957826903553475751189050454376278672709301734188295202117190853507070730302590792389943370807580728277709081920483020972975460933177191483647004413285175630818917862898638872861599127252671208497916536867985962668238062085415604395277848419587588960590956264920043790981203163057587186051050745789562565601065435954725667171123452886921106518387133798796003480100927932101943618178830728262322689714997816516467811797003139882945519212115834996847111311711623491423780195806109505815160283798440185629678084596957066262252312072698797606397019719343396674958618865986389726905665516320153679313853420098659250496366620852237599349374468835512617596851000762472743604305126151808474427952496788988954987943961310113655393305240694366405421815570348033681238160442669784639931499866190315103450912469211948318102472135696885809035158258044888525613658172188691115000792734945065484442531865468842959154518298458752356484090490641857745231044624611667986556033127112625610721192257303745362485176814129442115334975601374300507699606070233892343259654950013282776372752791311637980242994682647282590664803485124255860261178156654740514507353113723894704070192696216931731387263403312723173597686159118633355497401451566560685014434363014483140154247493957087986271353132500347436757304209308783744795170198264228921177990743033469965747139776917106908160791860225120938569800491623774335534436743719171996675811180335305226641715012760336500795742488865924763021378999674294061117241417514497492709473547899468843339527789735840040540779017537611058004751961564948545629706297805790413089423044218574279830055929461496733662023974566481877242545349240191658658893636098275883911220040677727408996676902929789778987034106532140478928473207265981029929922785398360940045110963282137395490869996333094808686417316194991784277861821007715836843201714163744292682981965153367542557399597251928487093166008343552116521327579586460135161385331032148145469566480430314888256432601969243744868735683187250462793572548155642595931480512994682545421829888893610847885950256063646927645154420342237709465279579969373530142429163907145078445206683878142604982560052197400580535736408695546949880822379660587673084252439150500350269875766601380384358280247730624978124210594839220054638686545289586254507319508202818249190731222272014113875535526753467854945889121495661692866949031019379316777301864948030998655593765361656084292837455320939779243936899410105339649321826106607254091159192617855042150860865582047950946213014149572388639244903511982381863048671495863949291483860892899222047918883162600038017427888899267742663799570571427971733803026682564617322812024288219510338620399865005096877029028056026713225058070739161771017962102735855112371353192478139723782372801227184568646788359661502924605614947294156530305373904794830635415103975642679696033084283881745229992739672365155507544071067942621985912080346667994072743092120504972829171493255204523741777037143055309623377179549873095475805937061435417810583430510955499821182004005475548941538046959340724963433038743256239226300675361741315273894441720934057605972825888053534358266255173310409932159256698431886013083846419902988915127117007105607155468683642637317419481850117998261187031296656476344216721713204289385719756815740131212419766296103863001577122566729177499918331690771229122856847868360506878573505910735005709360853966105041773334576620241153548779474766245789252973271548754928905999925881639379999078699357832044824198837315393980283449105356609215443051466307302516202575698781465546588502189898515476586313964358983945426945323048039901435037472117266089016074724697226297185517864284605963075344846474484049801467265268005120359600482045184557448361448791474735346852324407555618685952038472262840317195064912215303203990359669825637129373098916035327535301546076694440506798961691991630318325354673109324088757405535009913022064786772620431080664618472929216004617508959857204215120234574012476676682226445128626628668212077000771341586608882786982012020794438430404560853512239368309155965477280002432858545226158438724120903145040248021320156442551341862790750167873352873795528812009172110692323094673034593123684268365085190883639775815172680501825895196546288296546855461768808207327402975530265815966504964426371194070240336222548018961727312723448949263688716125852821770351896609430290599988945863187670348186925646602604882099081732947254460322883534962105227279272999240854807331060818412215931719304519327279252729156986584551413171472225744969905439512232132154353841979582313272534276999456439131062487342874299784401210994933534533086562568138204487789059380891223029251105825513116063536120603568805814897058680203310118723331381125629478086880181889056898477424439739460094614690205941578587445993997564872420978728372275171914734538491829081555224730589974278286136577660760393866986824255756308215120269302146038347308312099755007039068829504185339848315359463312009189386003909775432630369876162397309151773142024968687977882920367247352217630483306408988758573527533430264046137500540033661983362768072913685490873172119424119257442696935584678394960120996249829272099551863857703278383083561929728274967533817931973908180734295151792874945973261967130082099762927251315861269642647316026785898182391957864711915858870441128777922658632222005309160830897917963097245475620391992115646325229747708232685924843011090961454409627847646379782316547575626380320072739519927396245700776863206546213634562673467733048194213756633768728269882373035622794936883436667364249362277977526283856461665912439910152347937344420629251338288720610122856576429452711253552729310176614017150942535371948834291489776763982463403777222075634401803010193461931465170497719320532469628186358438806449394172016513902062335761187437884155302483216921906196111098096077990598639691513761381708459839152354291324618324046079645888983560252368375551769408464634778276241510144735472558395251879142328970804410365912094538530501473294990710636224654915427704809309712747812301122145436887285273597428682953764495141478521206720659494276832303047080973759235436416122525654224130127425406801256886618125954400321161791219084689852138462610231178757415864609301786663801372066674027095760365517998637741747849041882753210543695892446412761599946338807978503281511010041335835093535840642123273920284252317706064777084925382787294202606741929730317930959476787707264611027717849477940270154293276990767371212029980720638020265372222969757455909650540001189793410539048398946704163510019876996996623246407878789832517345620915968070266693693852776280918370686638569444177040489581635404785376788848525925749379345655231822627202175745917546078311265145160240519518750713284375882350627095291498313108813333249399174465172799871100446094699490678597091272868727749707857713687328158602892134451058427156515512035688838826364151333936423808057754930803411620724236220475087224622419399775202021929201146473054919921586283408565910027212019300907752551855298770938063382322439992926935988825010527197478600210963717835800642618159749984226206140678789507248892398554739034274344225820530711362822916541471746848855018335996843593407510185615690876790790924796234609052792018066302876578759450318238046540333337947692124150416052058213251324914657570894146998740541907101147272488829305731977850966274636972920451427801446194884268942616681272618947488483351611657294374929338138949700390157876008518369708104549059069210871912077829933230362035194097573362059843338976042979597679179972582318391086240404544241485738040963802288202825379652079004296857623207430603185700304499434280292070773256558328268320905023841856109498199423324354391789552803155044074946602659117720675714642907701211815881890452145987683972946581507644816824217911819607662048653911115424035436615775771600075639202406630758490963333813740933938462073851498308547058069373812470451820286048930629287553918784177247176339547517894551268271297083439934019499257335069060715369406599056719916394855230807829303440625567999151993876700928837409353394899518387641097070129428498215322265238897958205279656716238839522961077344348753407377867998847612998631176408032233609575467127904345785588132760201601051561092892224791945130753343407682223720354002038009187713169876922273925635766079739035018698427108951696146580910591614053645365130839596740337483921619697772335135938682046339331226935298812969199961048171980722479028765199423930950045521377861774091064336001275775124151691866763317640985461326724639259388712254379127575827283280842784647767001479501557380332010520001424159160655229778330556496542403590700828924904225444739598657266169047438551543272224845135975056574651143377238233609951410959830026134615860534003824642826245185643022152375288275783874941772414639917777194654818611040515183212510640871574003013764951713830510982851237256210141021147363063091321793234401126695416587845261091736894699526340243519769486498306559386876856632405150081180144072160394048897501090770640295216045285150925366997913195390935430305704606382694719192079440109839756248131003535390421143995584224612215612158896976473499521216444240439311423819457749866543939503676282211433574018101171062547717588241092860829340748239855304949436160774641028793179180384193590797216260989056951623169764730071705312801053140893427687678085983582204247373407584991720792060833554003577645895388107946706963155380568689240902998103878189541559593270023794543785401327114515324004029333385056147707460452818223528484754466260043710976456753012850632699860634421911639455624899251959487911087519328884145608852188675151643808006166688919887069733461574119132807107790714609016731331082874627708933446156531185262510293131070479975017346355515486923571274163940066153807157188170035925332745447302757270664883619203711831681132880611385060142246161916076212074683224550489391057610778958795426932244644680039765999584320452929883771483798833510367302776611967449461128987732673562188221718372831367861409139123434820734932188284758464632410687243087172569202452275996600612973538813771926397044236237726907750075916559393809322552003204676472729888949198918869034510153819552901904146418519871049528291785915973175916824537959538234732201781236873100154876758611779456213603188686554410766537068454303366703974895254365338567416864076553867130426403877410166073664713141744578649526966762466943856687153900027053427444328584553601681844601195659329487834251197789904676640521826891979991942547358506186553128396822916041332226069237768592480220625973385537186267835054313256032886604092659060502351760348094038887732335805662978032032281213591132661907429171474179885828671039530982204568041760220245910494620381489415425602157417684898040481965707432746314889510851746307396428718568948737763012161048735770130133141173047291214594361854796321944675940321559557941586029186501512219598626382674528804121123096370291245664116945774583802462297702870845769678531927167830477450736651411792627220333615019040792761293229612047232300236415998355628136951325718529285733008312395890334201518297919241678805368000213282212329283162229184896555048585118078689740196228055859332019312717750486897891925833199243880691065171107913182502759498914892422149564113880249031711599380282202913833231012193507667817348983296762181293029659235137016359588968316595887554413120547205045710310063722529257313577413584817464879870827705336012483299163792010016693450885408738529130566190703515210394749430428248326423284022966752988089103680505161117796058230109179973059012783546138521083345922946272246683722979395400700608562685537735189610084293747096407591687031328935798619875713888529655826328940311983345867572616331649631599578545358736998716567097542177653442523037611476493493651694796694197592241446395245828043109973745255747675206640171433357881362502381502471840724886487857250092334904850045065990118553481730880190991700381475640712104409612597441067975734719116651948958497274511825354845229302165084158172991853621517095713604984251380305221642787267368112055517707722473299210809042757704328556384621965103590865194572432249300561932154638655403126702113873739386340370741152838014373853477791759009378827316812124283657144652974179357288062122965484645018124828176239958716697743632820654879495308488869559164095980674976018957536177446964889124050556225430916732771922444968593580675843066931537214872473746590045612911987609099068359111783289436950747243027813329804823393283727634674178247327632993167610120310888537235410282439261707130889710147257141989164113299383580889412536578467914847735243451324074044390990916222045705676427074662945930726401552721281103374075798368911850558988991570344669746190565191195361189970104408356773539737873417057967862321502217997554091279626760764076361081034570475937655333301876286604195490003330629700118923709401053023785751531396311875296815523285437317456050208955267817663380460651350753160868773752002951136780735055317908508239434871251564277188064175735591641634339871556780431406065370268903051720175242576763934048368898215833172424822613576039837326448311722921823349575368254076833712010703044438364495038718191589609210951969993118120288608624936547664111147027872358892258511524012891607095258270156981085442553001221849777364493665156986382792909808484811493670120292801980675068059090373702917024158670094738794786217146958628392595719082852933621419435733703895216606991453893150514990522822301359829445787966184928461958943267515015347964586659384324353922627712679546216165417102702831405796284494174006995186281953089752097676094678683635660782192129035859788955368829491987136555446310956927614651920507166338558657160352565959541906515254870817099637881590008312559992124833270608390499521605159424548130806844563285224126747577293045321852905600424406142803891211372485736662830559739384256502943914958234341795141936257740259822244747776395385873935596242269228202141992101198769147348424412356477839366529597449024099566779878722608821287705076761644275236792695842743465785668461032190352007559248310866491188337179071335777357389995175476767487789466837282629581242997325197966680095291220059477143873724594858077395292636067504925245607373531744903771478788848524579173801605124495330901965531503106668282569691292616730112679022194294284228686833635943944759530127506075478347756579286309310206787853898332775343916644381579205680129590069875911661945587661683054921956890094482945201610353601883074631597193981791885594609529294036821351641222703636328970060467974030748180579530194174915106603120973243475117712118956566391124962403071463168339765543124021148234620441471412585292147487061310727016408861940020085473336127951493960367389905236186638064207512963513587501768336929783614448994100808170496790821783533689122043108485854191712352921108591840755616581142883926885192000190417060089294947459607339909554153052516888508207917351984645550471189888440229047853412118153866320387084612640419852798932062087929331552805674190223483174878314393553506677503632030479002108191259006079327058298696613282649533744027403344391096510368920864879199886641713688710972750111422255618576281617178197478027038372086198292816129693127861920795644789600370257193600000882301249402973850918077381710771439688956904515630603393592817591954359546155467415812920124810523384265762337187818919286518911122994887766968113768155940449418841019443453427212773094451354738432825282824539318472756054731868232400603415796657897290226590165229486126952334205132025852230946571022689385588918698475966447438171926612454044581958806293851768379020070017920025599666021018142895752350452451249390536935854877177277402954907422363371705892436653148907633474743314394337780792420283774045456397612556680924008937985053637733823288335202535242463935213507798636906529208266843122095607497129129311968277546826042529667770026610362737064690786423518182554744357141773108134492899139013248620871637165863579090273848255405885707746992874579184631129931651351359206598152233054940609020669009592246357017183774367509115669598892476559044893172645312139880878285348056032643797155512122492757386525249445429073277773413694593849396804830564797148706028416415818541810201015105196219666203614968386709452336596286372678781583559362919219017703205188922377811949080542466274015276705797908874910184173597853873043544432374397857730286981198555589478791642456850545842440536303567253956905653778239974476382145441475152864630393764318455400693129503450264218908164932296814886671675513861899821144219094194789650413354733774850792501669453568932804798374024512334116382182519993429892549368576261831489781337661414689699876121356226672236454740497346651061827467433385861534268599720503881638059365457653449511705335912341651525336177025930822846003099364426447181581466602728661019738743334438806831031732617785504773600615775539990090036691473446723262171431162779501285075561772565109966915491899954552517569303468264770351752731230192756283036426713772789619519416995360851941082609713619600813248944959491482729396698695590417761683761880333799524585062523665603123777405109210167682616880531932166075332794581239071989633799914306230956922123625434544951787412193090463653681522443752506421446921741247438635166660490874804749820092552149831184885824437089989859685321037362065526168339453272538621849164838794362870785976348805988990363178750179656688002690812714793561640983283450382818727239975590538266452808926567302846708300580883536878055102349171250757479108025851754746803446103683767686806415206470455914458817606723364819838935118904369433465515034126487054174914126878803604715717782850355810560573456735042318520751754954783785912855233910933579772565613500172605646491224998377123933660594281974907126213883629472343788264438465757938455926535181956180452117807308305895831089596676675063293701927617696633885138190490200170017705887793683362257842503254300993970040083741778749847787422028402574878180757837830614144190470873817701091319234820972686287227298929568256336779994173330315445282684207603694801864276945533800105971331521779663688416690615358783259325132942084234245164984244804037292220895169557884901571012412532407838863935033599773212944970089032504860675537825425521489061733937381971444837145503312758465843794131980245251720506162021553922933305540776083706797588910476856091710704233668238147826465039172393698038558237586850379226563284564847474669824277032389974811739035280276745637187733948988439468928254953350610368204273802315143877590203103963180391368459720350583013104659973588549685858769583333053258426233909711884476072391152464808382873407813209430702686375898394148273657133207706080184744316477487029774013975260514588612083994621649882097744848113837744703279501562830834744436075571031599712392530787328585054581875747628978405307748208261496165340006327651953500250715563306058742818658980570241082799948621090709545875424308971427311502073131430205568037100554951917078425242714511034336984354585337902853965538723365530359175056653380534311914149436802774576399820433955358350796247112380858987866314994808078715083083963011670936973922850972556589302621044764999691593558441590268510433348389072820236070727203763170873097180349143849539945222817497810712559171926038371822981876966172640319567748998162147557713388877201839197339211144564924253841142818685305717060924863588108778001485562379258063426356362352673453736368526400168594372787289427973574374862075570904379431537747402040991675577709545730010535575731147855054186270108326429571159844383808250529254815693829569687241599793053883512852379931534128728590704538801725116687713171952616867369243911208416758467319799063621246994818475030061824750380688120867281738285837830905506847333054941130526579420565066711389222971197879432916075455783300585440053758222572477565798543676917180717981086697454988027562742557743476543927518419562194208892970422442876566703446929202569040454929154402228277561516233313837452595932145650287735771389548060715273748581908933463272335603469648634146262114624978648332708560551663219987971087572447798323212199360902958359995677096310722083978740290528555576958100748407765777543124431637621843925187608802421932336129836849836851193024730162195062686519826781592932188486892104088568831165377559664524628866895058729141253373252077512546752500680097378467515198457937886674046275135779907639972407830025679859114002687901175908945158393141015717297907401147738698468264038236364503556320877566697458405725857833739165770125118194916532779928829034698495939999712710205392571035493281330825424029816625590114402512368467181290999404654567913877548368713648240159928191665046300500800063319361538716703541142316218396252262348923581188868776408843251398719364275301311600972741714394943013356041820499129224929073437571794325016205033921530796398051327241445882771481864477240276606946040991314064783905591125612040815920412151395609846792820258545115522668252257934894077866399920919724952272176247033535975436271366560238608572125387841709038619077769937227750462626622232663166451295559405621306314165343645100862445331054056524474303496720768286552265402548056463992727832556845721079426703774659777313432765635507945152487393646583375429512070354068616805042900688680968793355371582163197247602005931460880671379289652116388891231966553549667603551053236809654632244460952751406525662451953786546376618790762045565305520257404356107622651222362857134823142696706588349317599138144765241284400353662898674331610985707599149814098892158837116370627399832804082268756471315158204306441010600546806690333365107800649431306602598124527293204920536046672472960117608912389074369607595156084845700209832265876551950633529132751182100277358012408159429404020465111869061796409910891578723378000529569350522826329476862082186209972318166202949275307858285696880358520722415474645266490860952843087315827944948669157323423876988902804523638396867792296750416129772425404277488874655130885609865373967846460435903592686990234354030105924547234165310520239100990791007089694915998437320664359142757993894654303359720161406185108150060219202784614948283667178444223994062271568729274054293073733827417571402150560591984354530537146849878883174005249613887081667397029442542322029257724297453653867802648892246841771562823684616803953033225026568916050399093682468947672457264455996197215978780443977844721518528622731288878699446826782000825073155973883391424767431917474868237855705594391559448913437636308928875082515146129548329982123005605686639787552240232096700159165206996746057391556286924155031015395209963007021554084244780182245907363846481131138851366386649824662964164388540032729207082836152281754331609723767054459728928277162856260005387432381671045504666327027878710295717722076585980573354801563944940446761214709228933238621970641196602583693619590519059351075436494402518976461132817584659827989662560324523968036755203910289454383754446384518045937636907783413035423565244107224866427007740831804294677616841448419967108382046033057784456888271876273307718139884790804435860134907714595954983000254528767250756083037092253172448593628236488760620098940007303439094110189860266910908705872054895115040727726180254645990447386810035301618079672826277482279878264361418929110718570787076719650528164538288770124684362195839191382516615619562585202949568937084686197219765278860175175613854573924965579103529279844997225779860064297222465574889462192929541451867029494643412683846265836855282758530810661853918133585368597737413151618858223769550490596733351922445149120996966885390012057044247670093913055695351166626869981665549331637460404191370562199375120075180252578831880297499956563936920891458161482938335082362854014309102463947919288708455231825013800292108645012656878754805200332916804360552432862067813667379113533004914875846903599934735932955619478595422209368206228373599363302666082441586831748992840101631549093069411202511187982189865971355456336874628249342820213012701652296209437578814739406423349673065010815165613185912266551531212418202783921563301324518940234146626726098182650525937906199815958450534266162886250681600923331132224995670861967174234622782440505297912222861335817929829162629221792703137582364983672662880809327951810798062947964614016273505328152376629182242001530490941199045783676345293073878436093536361361031766943944251952214278145738778563448395267739906211010609103995312165820314862357767992528995495625828747076514596725546977692962084120838849325667901430770058200820866564323501010157743378230297760698961486863280302698685127301396164520714301474055821657212826364523667575780498766144702825292278062762587955075589497197357995947005621151156310973165512543555052351353357935355942241648301231300395579157672947920683215531539225891117094791193070925730677539204787402172699566643885334847575382116107400820096900006954379352571496581864590416033149838684074128390124268144038331954070430762694593598539977329900825187895810486251475514679934772881074225734645400166220886272663516756238312425467605376161159650179524054003615131212155257025826074256702250139483070060290673907826669309249072612753680885321520134703411416178636027402614614073708482645271390606475329947465482039832238206929299015983359559261433010591423347372703339985971498202973304092019460688344085341496112768390552275363326513857640148441031681631080918974780313798702909658628328247583182695121842339081624842719955742120260061346118967345332298643879863745332621843730866106520400078661916365411770974392417674495625502576945832650953154760189336218983145629525292420517717622022446504023602837313149963022261425290544176615732202814831753156800024855095674472448759368467083910969625072737207465753531649498112069903493380517241282898022515160880365371894839192914331033738699576802731571133984299211049739497026117655554265749870713157471198051425346801268470229164014623192052745894675296121558500376546610165445232228571298317109658690497434667357680396166326424884229748881524241766165023733478944646519921206423915454786275870757610760012286826340465831267862459619599528787789550935624816737806357873878249417357766979526169614948194304719112887305433174056278499538815233300539842643119739826874916390506301492896842969868730332740355614053551028724643690132235493073092352601416872797470175714741421974060568252532007018362976173508678861205775255250937984993050950731570852263147696954793056971594360304325942082418273486057428090317740530130515026281160536996468095899325059845477259699015903766686988524566422253819721459240975176950060535267695349529158714509610995702561323866186869390868977689665959642187188495328786618384459088701609058877815488332966203620603723608653118458558900274343176341461944824048808448234553955404260842557480465234108032810658651730905775210730331088594049279315583400285368297790008131516088706011350134887279943843193013588184475146420608621972463445528183476778778784954264073747701363965482961412119737296282720791865338696346205592923948203504950101657386339761965291892138527628935680593450860381129393845615799984664829965508171250667235819410848957899838941105922666918439942838378776143659526017203069496261606568735295679154773721637957915320793370301337921295468238326333308032547180169111890135830926777411652639304737536553678398009546451301371873682976909385590078865881926435097551219570226199656251202524655663014878881822272610319950055563756081279671569679273025042757042043763835179195289739060979516653379215453838389959854802690567097618686384793762295893594472297995900757748639599616370535905604171014996376404369619072111609399613736529592655507499346344834588086711878349931455763077654093425520640117215644121054552165590336204898855588885319389767883098340131950572164773407498034439766932687417069617395953322409437342357221261585952131790271106584566019342720741190589401149518459951156181404329316086960957239563599940248515518638480092850810158175434158647916614671251411426368201474759128624883570017235203786479176657313592733381686351274901893625779832633332401256607265953981592644096580490805494505550981427671216829895290246999150428922598208527817593533351735449236239169264576833964059348884204413198618260501202923753000773971923397665044646148077186577235207592804079034730132041078291763103787485459725007628774914634291013019071766735225137978712213051351355462204118621135444633443287908977112416934264450421867425669716220669828136681227950592392560127096873853954852535822114715160122759231620123917160331819144950531389272977292646808872097173017521882668467888019153770579896497164698075693343967279708113112950720546138631445576264407096309635855973849789595993026242616821277082267972049682868027738402975272067144145151141110557410325277137422422935088343664081322103259299626482399501258922053860572144200162744587876904450052507191401773231639707476622601521292180992932503182255994926353015416389649337435383922190529883538902252311659720595311483979201381109501256572168054348059709137526189189824834011951311572192084347305180214635785841881172534243537561310558838844358966975555186515132500772867388930956553961795188643759367720508943854881215574790863304608993891415772740990546600453760079485857723276648425756447877976658240803431390750260754321973389589061847851756542122743345449985987614193302304725404438674259691418358803115768786199331216046714681287025059238683784792038633075119724093082377885352052567226815609804020321052353649661220431756679487421885926218482773853578243132565562218531488587592863054000332538060169669470878653978885513319617740247565761593209728724734643400137682630598009237981304251395981884204357016627051831031423251749469474532962751889466173577857043152887068729156694865682275451480089481083337691657460678039293319481402004490325487374634522432323426289302885773836988502882315243460600790666526717320480650062599224955654600774290168575394532036753945218957305902728660284866177502324491376504245293741363268413338856511246984750744923135859959665194305828971306859538460864939743826353887750832551779528285991635517172806879174835640388442250200776373670219404297632043001021789251755382724228837440822736314315099864977303297822344377407975028671992844278005794859913063463819806114263855308812361480757113384597933723104021680948354391675828972763364464082348476360338132981204563591683085371612641093393600318444318872032882282454704293992280360312214898228598101067393011892436372100603814049637949434176129842744431480249318606398002392442741967221707780047150748866767213518457927781566365273441515258581896883720573705027443346598057752915197535410885380517839062101216259109286580118397896342389317728089506387247851598923836363719718380361940743642475882051018914980067150884119401066047849604617997910063794632571487435353028286611225155683909851076851682454348115618814815040255406985192881816163549028042682525385488635574516736310548864016839717146652313981927084241055697442985364968306393737672725097858748831154824761736006177763069773184731583172993845278196539920021412462616591439785959669308969663503422845920009403675269023466017509743273050246790218498957975881595141774803016829697979481110288647456154634810085042649923837918317106881260556430045523759014980412801979317701655234023577021009402162794627792176866021859097958736188490686770478555201971003163074451436996184004851529252547430876595497775542123756253346231319949400653041332125879065527441692975762862844543314550313855842467186175685529930981550129452854214264213765778831450898510100381577259950477035402136945534440850263602397569442817460194672469333060921249615133929495680480774660924406543551846580644343081071947907509542440253905759112913399783449091382915323733712860742475339877709253595352157426382953841972994704539148150555191381218188918886068809987534595370672209845017091198877254873218169382341405422076349143775984835703537376620496677057807862423614165455715219746484371136878222952117707941858801464736190449279098919769433656136486342522981336085542139805386693127996979248138050650369230594736044972518926803787592172539082106270545834747138824136894422120429274490720216549713231005855963821627407963896448957387606950198459381098976841593036778218312102137092488290708777805957196130978232268185814056352954761516276407231235513684894031489901844290579432839689058396922938786806900897018439372863051780579633482709566556984106980020078877464989957796660229019453285003654052327129827447169418214541841294035372365857195089851847567752855469434212009830455828250126013593023143898576814500312904805866625719783600477126593429780722312825650886745109019097503346572354557785802541417987458872265855478817705309726220309803681132328418366662519066774407177472990162018206924813551051971915400416235989525856872026242951321320137845844305031541262561839964961889805424439855755194674965970651670501477239418231982141698431137267808401097061686363408322299176241453249535632690749009597258513815978350671428981519489388853399712780560410317894199398120884697057369686421943068164665889746118553162504725274900513392186563491055442901978419885346933393192269522451771901387389720606558080623794247379458602219699005730269022598855194784011874813512813024718804466573161398760311240057297686735902219406127235188639255973309816564599283416727421561920136471380637513731884700734334123127312234753539938549043980000547858617829855160899262442988452601985202707352811893725785831560952783062736113793371715129948595016939672833183427237558001682303676917287970582464434277205943199753646447498071910612422500895901023234135872487776690872935701027617981067305778878759144334534649560544524718084313901444613751430189914961914172844505516223812644089882919669244370755695062965167257056108179992525475480775882574761192597664240336726390055327041519333126625518658617684587592760752673817613735648115608685004432017429087319885121746761338840211363436995861211720660071982907879042249357833641022908980864109714145678284899352485515157277418418215454924845218574059971992936256332279092527887563639012224865999915194437020596257819295544530540451658902692155108489341897548026138410943621821735594220388619545106427514953079306464523166671819776978624859479195385477134340529932268780571202170964950050025947780947112267968701531574868430332866291501354180987840917736081368822477245707622190432559227970280353228056204958935797583007499308947149580345643136549573911122552572951789850094423803393084153652451146860281957571988820921291749171229310265548266001124273218733668379189142364468656454071411243652014191924452226963537204820828780619016453721035866980287602851551614800088864165274717982911382599491838339578440601627416398626527428506929152851479550997903718367596907516264250678422883627622337775617571369739966056938782736580107377543589369106280659967615172352389616004529360005600728476668631771139174365370259696615062650844289227629457515189379499677559182204936553496553829873044866198632817502159963271444807084515634018754098883205056798902924217632141921702521231611617403485669589961535404415025626687111420152735310392985118261119510041398473943976028403871170558919248257531126202710862378719061943389524584078961002929120395304211214238138315446202131143939101521373010885421296719398722799592335132672055861404991557792669244705027467511600731960846588750919916419460887781466189244833671312187068107506815625172480263250232883863942175342814206827174190324792352971443381007252391508868075551050179718430373749911899503577324492191548459830580735138233276532649641152122105051105835054972234754230411171650092586281691032766666610934998505802149125841194977521231370248608773020850270587728555543415430874337139109922646886307750483874285388838332177983615044499736348011767860038976297694885243722546004977972452742757664900130542121446144211867208883327275255237386321575429809778077005312415227156485981638455171894628651621429415558601090059808358599804989699226159395215963500569516252687603061444744210610262250919446102771544274579762991293100822869358249369685634634666186617272088558688697067213989458103095610469459177827003547421820881325949063399334628650407537726780983029354994222698930820011196586691675654616537355795513287722858066622584845790666973107314354132167898566380722812025628648081701387764420422931188514048667962490704041984553067433897628169645732528674780336277513576597925714399611232335220785100999543644135054386302833933238818906314720615268205603848000022283669667747094739115240557086271152309093788943710284959869625817470378811465640987932303283786982993281268030922971410092784078320172973204293445430364969373943181315393898697449516924537817554546125601555410284841560042591357080302454706917711235235252529498905248566073503240776459622999567085167010017794084800546784746752087770949145564289574148953167977025564771452313816424600772005466498457104984496293597904270092057810159573506627179887555339076258729655292542714882088520951175097287414846247416198313414791678097185649012142263596647411032529832394836453924230237957523614102665213304327244187120799391523324151259984358674346433752081235565963126236418922834429535851821919631835456215554071986507316299941437459359156320403799953711142274499366345169150053583847214047123328401939005014102231336995180665861190302170234334261958522815773994726538816879051938599242102214162251918860687961243868923441983833075466774749836204354938374056753002215664601598533403056682764693754229599278465566383076253027868595873937778536358744447940322612449878515924923417232091498387243064553014859110398208064604834522121754568178710535539990688986387573465598643512953226958669297552911620104347933566207153893249031125095283336190458999212590805261862128036065131417312179713975566576365283671988178206650857846616115412204537324191803276409981069246470862473030339768672279108627797919575890404426220465262744244615060050703622452898867085861900280191433578646952182262559064967549579481609764495163466749907976975071721624195360982401907805822903556171053461196645938741733186305003504842981751762495979290062150452134166176522844029007181872428378600333343610345847002160297029339423054336141907066445233797641462036459363313635596530451078377085570482421801416838921027669089933045213287178726942877128188368176113027267833096443793851765611059599315808850641098661787848700060204803529115190507585931250314533109718115522903393296768912887418488688193750530579201257858688633183300712692291496155993504193483510577348717966913887994412248902202296512837044733425029214175348496352386854082883174748378499065946975893365048707807860296827227546262740159940442163122027496976841699440727398448153397612741320155413102905483510074740449622404728867225676842998181874107180617962489020504316827989189394690757763198230765421117098116027905431101602480448559474833374478707440397850427407300686458631125810535177754927679803284164735164014791817832774599088710726251301253120936598560501930976886331732793251758170019264027984536546794771112247034058591925645134448086475659533869946847462424570302960256644455851083950634042504094770316558508880961685455564758775578224005536661463144118134335072671208664548803325453404384216373519609787224971561484216308173066357504007837758221346498269636907105904149734748998384490664866115718647296257103761324238123544308962920365851861309935481006431063768813659244665470943224521333036533737663150853394402073934266761911320527038200383409447468221932592975561765363703825601454464254053625801604610607756634004238159819340237124052397070339971335150774591031021515189985046580329566096446509511846960854891385827418579017471472269359262485325632866144156912014063731445388066807742326724757193422531702457536447878355758238817074731746538946589427098900543892100389787335095049002543889931676345448434743977190787975288478524879108461058538582788830184910197294245464487068541699781727143895039874515729922695658609501723833162307466809812151644273305360701156993262289375853539730873389759665504420032541570238078223490257861383935421238584396225139806577496632063659733121061323608184479825421741235627452449608296046300607894035552243666664531931506443984023227037718143364108223974968556709935080718396063239429184763709403801535999841032213517452666228709492515127053442671589181913772834191556525004352007204611667240424259694197740853289061097331751561972184241020705633951183484483030841814178087812282900178299672447321611248228383964146576392039652242503525533598723532622603876478532898396168841524675261182349540876622938567076266437190536108577690985523207210144884883715730476531544834923518739227732487101388815403240964362041149199456097953580931785798380171168369422109671042261713827731685594862774661686981061209415765865266310514952090209710708285131849584905263446477039329030950081719720314814097647121675786038534238329573204986607539229276909495739585504593499399429653294716424027355645213273435432307389744823809240043138738264358559203130519502762214935846292454062253671693922308546831465345021012811674656557769100070578037128602867340336468403661630503187377639121916538397839502852723933320513880686646647654759098008732546851327347491445823996244380768108125895108351262433346753436643184068126107510754650118696025244359846675784336793822136221592197760939183718187219610844241758780864153350830037093499760056732756048641875314971546129336167381827044881634873062121314937473837119530276316833758421109785247310833375486867499134372861168696922684885957574164400119789266049750811723555386750856970370256614195166088509100205232701782908676776662387749125242947667728630864997139612090604150453568449429078505417055660134062563397873260077150274611742561221885063350750711210632341540430213633631779079684837337838068341373166135182112919115867181306347310098826238259905616767361322058192594203171799246363898908572020280112875889773472197261397634167943613864308955662207862869983522487313458925364970645988664665843471906614024996945768162402257677418192849406956668367017313607909690382662710516197512189221444212230702386685063683217089014620953811165831379166484952237808163509256031899735876600161204943873559475057636438036428093286509033280269124469021751084069696197120234872665549182172309524669443346875746704347059529333543157107197123863924801332647295094839782362545269508566181119111937099543226501347634550516947968203805864958287176149039721677310475570970948484532275572457460253377381216113941156873594315541751499073356056216276396697001889808215573374463715016282594659440167073405331910584000673488805746823656601917104576763016713482733526199969888836170721021131890248175154878115614586063665109427733852607979786633123063346645952687282804373322435940960382187699206342611852653397691891727028607772266478946053494604420016787280208733547088324220028053748822082520908768366393671074497595042454384166538925876233826562817988633143277833926349481932974147715584065009441527076589974743039999783763810654622796920817686113348798289593418190820190009381510621070397128043624949414367927448330614100405802099249424237278002927425875600565987418758083771824373085224819942158424048979505137243146563420056239306008229549667703182678533650512261459086214275791658381310017929106582859503843687772919301053892409406577435013808502161858621336756692763357814937063585461167129493266357677313559130339989415117817280545470072948992620786353554585850797217669301456803443179106874129917713255083013789459103712888079205993565547746903352386611301240206715217137693675050885217230489586937760527050952376853216899888984813452136852869430933065310484125105817987543403802808454176915298443653209099885572604711834646259576681755387393939599602710626488479044107267489921702360250") `shouldBe` "7734184171995443743636656854168585045615153694301634290209589879316518174446160905614280622379624082304091724545406662958737461965031870066038408983655696973718367120242894563421320015740422031227541704127248682921516745787776570879363341737542599077800573924662905528178818138785459438905629582687057503331680215695737715121861801519084378897558174604006858789471870690127501366065494915302704874582052605145052144124096699450357456222627071313995402775704643601665604039662128719636051231716382549170129689933275441925173575963271738863597687867981872403415838649436359807483081911322064223548972223383277094704692072674171745135486712756498077115944336747031243584598707358546607110377733251109749153472971953231282776079899150172425159897755753363352971111289552159974903391856841482215015523375242740008404556582276405206366761318748245025917265604483743449139050378521107266574761404117132768658670440278319703368995698993805140456033792900484414459381969187285862287005907615738146930487336503091949845269073284649436874055948407511705173161161897223699182968425752107883112229667351481070920928168450158763322289585658859134003067088460940004498276569952074969732534343902291938839539923435768225856320309951470080677556019785025445711662296586942272942530173639672672357043082823052787076927535252528224267264525766961171034657294531559167771407398013589222151012988419640263670311217949090668426153930993920515001430888883716022335453456622633553763242054383452638201728517260859639061076680297632376905122981375651003865886445695959603380153955022691682961059484674445057548687326108179580908508859829543562566141545878830937607247090441266678559047353090508193361301058563925071549662881845805782684753707168625659148970651348487824292100826557468290733818430362932398569407313507259593351279740888476471058228318452278172097951539802240146456492324180433907312116249021961507162750981773125529888575501449359389920502815880358863125048612124706874312363877201570865803189181053609927316120993719888268123611781414317465579162260332388487193376858777027584593314725849535149515975201869583423350805141114975441626685543549295337531403056967701641724816598534563940033192277832951219840583866182989397278701890374634256799042278316840598768224066556632566438883299547194395569380549959727703037953019780070432478515241080480985988789174584318559745460882341542078942858911551176779013152828762588152397227390945126764235842404225157368751885129009847757294484806283127109604282073260429088585038489814431741712237418132190405767188472406484356001173507961827881014938425534468971809881715604415009115419193985715351498231866150928461739742369527836641041595833465362141593051007766916522557913151632311222321235108475399054271380566005357196310458734243120330999652147227983565276913458850282166475425418945961982438203331060570996418475369964836397036066067432969175235296311031440870837008569435388173140892367146473397351247650025937839994395715287986524229316512511555279621883340981127410994005128531205984927733750532425535358884680681216673078572360445336730473119160470160838418785307231580654525485304214082713707706899012202295483815289900568906454350659200870985259163429406776596225505451394475587510737091550263881603880498333781179352455758161372624147621957364845641732936838416255735897090912101817891968985363047011669648348793443535790777544359021771577304544074010269877384142485404071795637045755285761744379668948693772582871054760590645600745938970286305133563042653363455217775123072552275749890714160985541633102284797363803000220462815544948178576954618702460635258306799365246754996814375267374046795829122776877680765368887287670692056702709502699821543768338220906464712022976957402715600482952711376117903753953257251572925995591681995096882728476663932129596619448354793862424911967647107644313154064197370974045239932046109024080211705241892405549114857690403667633491113495124025534854210232673369652244967190738727706429186280391559342736914182046210685689407363955387429518030112955693543420805585240382330203369186653097397478465028023586218812769821430951861488878502339709101867886460799042694873517311980598672155306027713284540314343361598242768965649281791095009281824959959598956880068957533626392794836315803659653855631732745095831231307821106908390450107908620226475906824412101573510293130202362312365459768278032123028292177232126948766759332385359376323539894257163701028738147279065441031342529470139044056338056563681314831199442890184054295798130958985719882785026633614457262711232004669636692092113668343196818998923779474190741240720933930471403189637695375320544995508083249384265770136972788671824255654228515882614264990626952143908420772728386722127412777188602228532214478409515227864339392423861238187005050821829694972059834956409863100237607077942888665837894235050904220057791924849998438940772266622664896222677625308854410316665409658999225339372358582257150485321197525342696314267652179221974178318491099850242902996482598251323585085807854809505536951413163425924966238340204502469115511536431977372900720008747352421287354391975664128345386095134516316212838571867887224625532613121923474151728936748746026608056213442957087946705303986143221878716527923839690922345057679163732432147784763182575669821546117960895703490993701555054718943651589245027259678958369117238393646412216659893365775469831788662169883775434856005003993697458093224435071265233029169344256269881990361928981272537831473633947627606108927983927229333576430568459744912308092812232210947843998120885621531214945260537618448570540689560885443584947413827171719755668052132920140799327124460699231474078728414644273383895227871889356201490006467136452469086472153650908134629328391561084723879769122753356816698031409160546304623168349778555199563807721323528810705984379312606132023490538081511257818793469158349457393097616790714829996952024250738638222478771787286720770688267206035560219197035689911344051539384656027403702178591292965388244280165221072193163642282149538628791734156560131052086120586956488165004407933349509144161853071821679642711081804459325727400351297674930370946464713788180687556008618588957827033162085463891854465015444522075970460250797127744331030342227777770183312745806509924328986914968475128115457525134645213314064822011107161258414038212858367557936238583207508150483249795292661621552786473080206790553391557117389369707839080488977042348760081776649653446179262695900966714146286766331730612178391481499452789248024511603381158400905798390930012094291625544021106940811703455273878080900267254748155372007580377646837245908646939766461951376896688339285830349056844929192771555022700612293754657266446903453388821634919338283022729387832415820092624884066448252654929676811756244629409154139523178877057287836494012199643381076069479094287185466783623390157889804679234213549716243146696210116333290412707361479300508628348087517782360607611144628544102819698201213195384110291280254108438001934610397369471368343732097626905622753924057628379347405353163691255041208977752406897430502358989493620002271689741033012244303852959077883592384046013748315464228785566811835402186013588927645369197603167496383186761545619600353941134821590719425305779017543520988334360229867906389572371726701134165575608835389447448029873036156710739567774693501568266977393308205680651788054477461643402356475704633586068147490341392196489370934017867402290949423002982251158886957467930548842202202065943552797735638947931495724404784417743068393752639507058964371232009378470208290637840705458692921097425222051831499626632448895880991755405930222192107046281396176462682656763564524288169795666495508271793858411914331112377713832282301487369806020287813485800640835771816886430063618077448441081443959019616408831991976058994893867711012228376872159961499626430044119555823709682425278328663990925970496721845405813783654805248718283808746447051336207898050277776610318855458915993756637595100516844906152141468061930673059821313327373505521280498387154443897931088646576616786571474204473474741311686511921387012533316793855565210615013025794315718751363716979546398014593915179829902177606883862847856384038906094238117680324868453055209237640229564178958008476570096386509209198752814524432170361696811221122425981462658277067759959409226382847462352533564766388276562586736506995094361868765766276601930297650493700273762859164420054191983756848613349329689229167938956150909861040893695718741912816697077519795436675614495084731216988917365982842426670283845963761775397620335845576796343464952141777971490327158018352539900539909706919410051153666894948818734936448644897296524918072671589041047406029804907492255307970181766041089445613760360426549909104923586072352625704321403957169273356526710822531035505945719169966792969747439000465716143563972761236505560467092572001047089063620380820475691758715767032939666071898214335987136537554213133965256413686101785870462998736334734930090409795445303158777602096371755261218375978854588366555713514267795885358469273982531860642633132147289164699571885185485623950795463534494601849194205123361936770527998859472716893481151201321354892312781975632170674197249883202018206980499236428360497759443998569210642059163514313296783725336992600678935083697945065768078316847749959225035019376597503142732924129056261364251885027421719438802847823122106504798624167107717134510923592959954902381851976881028493055841390590703397573313795065477657728216207110413033200235424940549896552454631139041257365218728371479077444472799393091545258222142558980977455885909818296829654121955147971480599820631147065349159952444135427768512640832126235487417140950764517169661753141083231251832663292030864179688135484930889136916804513972341952717179864941122212440705114910927191001365382682106134980454468711951320363845658308737887632080806241599900697196249891984436927313962487345163652341213849851772319325245777002161345181989598430090664584309131141283251512511827035928369622714687218220236476139213102292581834801777106398590548906361440585038651021332133860785066853048715769169769317895469097891003321945396635768473840135698094774262035972302377199015051092287222172251203848561262399713062197642928104369425986324666893903897030556872442127326268429528346714614920471096637531939115385764629835265677828244749475375543056390635708590172471374842317428475733362690267179167742082152203799328066582856325914561100683707113704826545150941686501341282903369163301612131880101573483603770156691266013401640816029387264753759724947289009727860177562263900015581068919370538172462005958706316013444756196463568299209309400991008234896774422800122879135882260301458525212778527737567525432293704773035260209838124385598446394953020674698328621931595173346376670564495374873967487827633962602202156435470345178152690336431776419775208119947544566329209515684099262299496113061314520262752269078110492574420874532591246045003026092470596480106071581658804080632097319195544257139345098623401803062086783978426637390324159968950562158701298488078377858109600919489892890246488835143593055652650445546979527756676435905765535148788535780153145496706308945581839324968350223211179163098817237718082394496533936758659328419417892839085798088512988399171729645051539491919016255338308425960813216405749090133090719493666409900202168745557408662638484187503262792466706266722806537898367035864585363996951635406813048788181448435157109415813569486480263595435523199882751713183008047484631074946463485165990145893819862338510518451889208626143151543079384463758214845742619442564662156912963266842685885336909243306131636227380470177800454561418094580731194959766716170133409086567119495164180785825672303283682560065589504700524941762318831776705771587223193325914752634762250522778909181124344222191610731494907065512149762334658022600764227666798234392622420296263104825227065401086458101233333091304520754966194672845706827338977147366191078221025234024289947825256428239333008935618083813615066568790766605241478842161665373566552577613007977373933083559386754210892470442653204789108757955091218156851987896259080664848324890377347890203927860582977480371981761361165322835813552355086000423794563759299093448932460020143636141609117506194635305324233017486013757400333435761901302418238428116830918690655897360288964716390627712216139925639871119409524468635612075489052254622184793132460748426285346532991124748717682360511224791466342349132512131693317178182719240980858576400590194047520331654820307285787228633195832216979432872524921359704915668769532501006135650255624215748822506450906152994165790829889673897306982734772393348478307062662789286266392882155811788646123725780243155543024242713430511936328501870065712652032653998304007057458811854388137408721528752142325525867362875380265047374158613206982017241735439920331356878149985482481982439817831808314293816337660869466291289214074193624643810382993631911662900755037449540734278512480077789360983946774996959539254065781327374768990049204291639063666614420472925407694037038610481618683647248049307273664157001337634458722133065903076309282711264055446716302683504015968305721138272575898887887167417183954553357783112231075491473461077890667668657404576289706987506263974465559167438925050115569029323629695198433024497790305627870186837358018952873486281433172613883490066433633972594457585620755095590473164545270858731978637222749590340811786133074035530425928319337794979647789653501160626642941287943779992941684212531517001113732415372178033030135630809567149853839196556834068800229496351134140717282425357040115252016340633339023950831165082205586924704844286976426210040159416129321709014152606259829447689676566295579481818142444610126618187385855639319432997407566769851823177842556863713306049199034413019658801443079222413020263224719090356799168508506693794552803207679759582488574914195493276671285850142404815902535472150400570563582094656707838820623647485163499646074188020374681250301513527797765109517759585619453062858058382785736970601717898523532971446157601907827270395215196046955384796745782115176020210479128605689825131435248375862414771707577070425885609480349271275945817340818105077291633865245514215028057226812086958462089435424997658586692674525911634223214502432783660905611756331989292032731193558354861967122061884727847755279735275234842594539510496827232672274138753816368108872782629532750925431734441449813432320348876333589144813096545958511005239359512634749538497117530285648817340177928572866281793335049906048262412157373144063451422531826601085106867279065941193017404578753080908308951782448474625460741579701305551571957179908558379269002642811281277213943124371436483358731823057445424604305185097095963750847011340929241281548817510383362282123793822960235230760753497104495728238869413373857561990983203686118225655638204943419189392286308542754570351263233678890826261289886337921960813699120375227294133976476503016793593640342187567005032662282358682304225690635970822484909902121033087674941779499000475925883970136629755762688334897540790430317543591735286244289373129027114021409819553968062750179512322340696753125986627129747398903391383944027646433336514926729207424898285730856278151536809926353259556598311749155737638381926724335690468257591226887949743674880042473397035936850665165009758742696524657468241902660878045114768106398282901777040933492909233143567055362383327351659892253772348879001023190035173021327259715475491179864434925450698434556499339117069586715662835052582759215977673679622923927802119194194046783043824067161366167133539156296415329409448832725335453692457565289041329483204611690217248583955930151747188146475663458273462589583492696316566608050248715170763155612068826043151375328076938200917624499048618336315533824391357227690992976413194244842966015141808764236033873715085915018950412156327357401417550115392566663692909587919707205339086502872847827990897424909615273929641308816810692651452391888093687978088219519115078948768798514684396767679593292172469052417286394437010780113599709759450229447141861072817905830213765569598961656982917937390004407782236531385925555456351182470124569145744076310254373631051117390250320047916095799729427742284014648794361948131869396092079654982852139525420712842242162322560332709888560524253886639396257491954834740742014587283770556366252339877082316793604505530526780874971639604995010182488441170726676127034443380636537367467709271472780341845670846430659409605920440895656908058106649000473089843283712526448714440673459051185377408142096249714519491305611080863226780661992851941556719544656719105294698844444147159733457669321005253889067357904431449595904530340724801886365300522510392266472038478518979524518602670493180241932519654655939245945245864295251030486271027611150932379799877821219589838875599037572698921390116785795346544838846224291255815291642146071078984401268799013090706893881881022822154178734714926168092709504329304717759709241983624207710126040581446935689185289971849838848809733380269871131937716489285389772082622865376417681839720439886873053596380381400655843088937772722727144749820414136951830833301039921186465127394070777625210443637319839236496618064037189180580212788132970542897190726160608902902716267565617581723023489441281698348576472063666780440984374507323344294080013907117746588169472680359001794552088887946779117404270659435713305619186358994971408942285171155139532019273768182378300938809467850054126049726811983573660627644884825114820556705589380819985395354948209673260185300149998445530211134442482467288058579703408608542021489637946738041086629721996078948747177393750395453262990278027180330673230756946916841120156756657488986965546314856993667870869406793096265545057138076454069795122477183410535948513965930921698567104037332656702063780932142005723559932191862018391799249635244872973597126510075671642761968300460547079704768353270867081152467319816273195211124660330244019892127377786841618532320503822810035768361411255602061870293350434810768726118983582879301998849878573155491516283413976628411055669478196926811471137254538764674479377019596512867517288283598143850104905405728647336091392954210390002894620355146830853622797957056450915376236824649259192754801730503760784652048860723821084627941496340801405974492181284526772004037871251876653830074734511662087006258427794068381295316065633660609247805003423297978140526445504524652166235600577531116977181520393049737246635825706455423146499255644338933636719206771834049304549111572007036615407375091955249766254908992528724690751021452521312253189410965477770956080280813399297109222014317917756890878593473055665580734501923134367185975221437433463111059065738661366975445958947874017531692605220056320130408766365696946017115848032804663490462154488874352598896801678507846535178180355877277935413794600202173249473036447988269330688844962988792309205036466905399061699992954971217844031604430328370630142967347302009933640072861992172493944456615289336147808787003238170574922993567686634554635607279354970189599536684546279008869307819498022316580313306506343184392049871131465417927806637963849919193361433751813331903821954029111145732028979239146235628835141399769424601248694047356013511120012977342182819097180211617445405247332730068414241974854818427376995299825145351259747499897553404167878801894194873550087253460971344534640740545374626575424697274316343077694727494479558050450873206383350922528954575648781372326139485477312438371923540002752815754649468331033734646185794065860721804011707785453810231506397294682839298841280913414877330514871769964591039375264740393649932450575070122036172624227419247506745300576559299566017145979701849321458833012492943120678271691396771736253511635965771520841603713445316220245554281119093054158276262331601715664642026921989086773130983126825675560263152495749812723055020785769802782111767646571499952195834242724658404309268200793221190640054973825561860764389786116412680792916668623771608669310873961147408747534622249104274266698440830212898819335953840867092000326333525970092405257474227974548849962238110952716545120114072565480507568959358786342434633545173276902000265348199332516243857420002504499587443586033717365612618862261692477079541041874699347490179153555798521868225675735420178442312775828668825730237816880230374623877920097777094475510085280858784232029996197968882555374432872091515461465014186835101387636747308874888740223810516176262271137129602225366952273863413155768559075506611060714097722801519183682405971968075863833053193971814369294597113447361035482988209142571434778446362277788024128528049590328000131297111539328723825165350383030898221838076229728169894066025775188181844876510246412991403471929855775324984189630774634666984357426584181395970654295723473362097042896914448244637987511126077306211643780132902529029447467910179060482894422080985046859183197053308945317792014061142952255228968875001573921787035001395811944139815375014957164286033634457494148095425926421506778244727416234291049192277555484366508482954679879867082517006670661013545030511636470135546850274057300544017003798099131509686106847518512073184961390857806470827041057350710188227592450590102194752806205982966783933093108786940504923684221307050360349408843330922313025142019442857868496927372339153657691557075695792004126443129541457965757387005837977634067798230141698247417448054607416305618367091269867318049250238228434901113122759557616775979928914910940417747813679858525790173290812381567528882784041210748562598090840475646113654596703619979822802124104578831843312750913970738600956660963964145843983871630287613012539140990724921834103185286273605274647214916820882931725208613688782824320283363468792651628732794858173211402560968819262007403180507450153536008627665138378823123373434753772933180750653152932297551112601751064923361713990617700989378173578592006652384618867920059052703461790981945815427600587581122267926550593096201999507937867614775684613859651759149707303874561126232431971357072073675432993365173180805808412054987146529135755622252557213550072556076542469278128894622317816650020086873591643573185239352143603598743444856747621685263032449579190499478454638877779923675883224646561866163703960619749811960880869500331105215203723585206061244040804839099957709468350741224382635535940983898411244496232604006981198512188277689799664464377662604885067964709230340543482423486475623659959106541128985548132197274979924157571815208282436746380922990968329105277606904979602792451797916474012845430648503574452153727168779214162738270841090904758528652887709635454777158596438855854670178375701429851037830555745132323883719281702524453235907850645529190249673251356103694983224671379645170591741209247506468698120154359439430498906012740255590213725741406316773983194137423172504016031713449637611205537677787444272533577066859067741136383526214287978316595192404347888145351373537633109356468575373273553149162442249270751392771992986576956940007891928146871626040760407061142875055677412330630468791995369255201638037021377015787009561078429221627878294945312121592849076935573139364615356099919933424691616374750802626792044478079115678663169252824566244970527361984282243220807558698491222775059649125492128170260151199055197368882011344526861611096804889186236543365289559432697185064629035628228266528315244746706429007355701284333730237167151025385226358628118558284996544599148169713710710857259313867323027553093067044411204184353355989510080520823238921942685179844195056602418860574135064402826171356889973333216006369433343326199863819310923387993604206565635184091958021148712888731473860898059007507317179660059616855254443593390804254360384439158405527140033481042825589576341665391034663199297257941730348073474569753808255883271829673993506405629306182728568423521771395492247330588630592111121798071460092968358788139581855819435923939094028004564937341372709534375205568328945111804951222721899133838075342092869391767517340208583129662504250082746746127019898566394916678706964832993925793641834378621723891183510043808821537357939486498256128013566871144451393034559321214520660837065007019482371885234119780348440566194785041072263260485244744077043827338458094350604064006311226698908284829050908355594803601699474653544838936697031672824041295702797788342154277972678524471142556630265993698351486891107037468237403889813704057991308853860158648331658928652118438495096299724951741039253755361563949600855815627095703723504188958745136548807360938438582757026350675482744040298212245564872832773067305269806006544461251099330996483526664949171758182510157968556969818165535753601552130114513199904161340975312992421655331390462625854116280804254569395327776785679022635753474974001146400745488814928319062931894133048560704835256639190383810438875837979653836176567360118974708048705002931602958181394861950734862970324046710230363447095927036967883842944539478350730643752359089796156338892360327452563105491741074498391231450906189538278393727396885016544032775952758767586554161088394570199004664477255916477402189261292344279783921407881654470836865438068408774767583086615848257127691862384631515095626731572961714751359638720657209134051030709319016222480330785085013438749057689189477556005567896029465661668371656341823335978107897981782679685672799813516446627959825274456854139082032450356966252693466540295407431773348349981644450771005840322588801161700500867982984163416016318569085032216965193006383813422455562309702567238223424451648426505706401372794167858647739396381246182151548351001998340214936264236038078746296718584647092801173003575113166683382677695707853120067514859234641390289097100916844046072060158762022166599369662679499697462681424889782141205034784169134603563213848228626345729440441683723933871302477098459071787586030884901075889294851173066026480302268371454401343089509839945355338296879127739984519030827481790438826277781335259569992164304203703542843808872237279185694778388656095759278503905376045992354634684244074920607355743391429300393466068250845672040569906724803484222586009403262665366335274114253110485011932300910241906319194826516025106693268206683716244518146922144396190324505817107533880135761433110111541470807615813023722325664611195089480439696829900434867190308038329986830724052819607744400202420510688699040847874542325086056540450111142535314548150688496296416910079222886813363237809896634554028452751202611981625047180710331649206286173641036673924741246683784148998342830327617072937980254528629973144408750150943273377657961945885243270051781731458730076634175062351987300095499197650325003168645909261771537351290545895653940548832668919231932513152300613729773378351142735308518568404577426720737990009017147654334959175902278304132371551861718483591874607905089972514912801627637071005455890241563991656652543678071116906335499319233856489388310135254086728794289052519469774201444154354161512639989825799636376640741897318934391417781723688364437652863650371955601021645641175280881224766885975550025541043902029487878235132236409807244209189476139946778548352182533566740385242950378865344944196529365227628172384802633850291173772411617155085502419567071479180615230623346264855362203054703587543526026785810121226553533638709466683811305927196530821768538526927904999716678402878279486726207701002718038784567760635060455776780380942962685398538056087694385218205402698902124630099320743745633947296543689720286447572782598759391886587478607616764903946974497967806760423174541773156498330400592313662968948818198802463249608229185193683600104865265371900795774311478523252040882103165826261719072495007126877948818772058812184370809890208799248109079172713810650775987975330139709190866174417910537618474449314296126732935880886587802192416123646317070180856623943943610592396575380168767113234985462660269317406060030122915090711733499505972923787081647907680666444730981582297125384607559896169283440438993292144264779813315838998647729056972247979583243950267039893458082502043338722905869873687128631356059137897402492102390527942676056437530911406775862290248046274257832303826385712018851852751226745588788470588451840531706929184770524132102616132034084520268573916248478740235787152659973303916628225048555089004883009874524041796544784714844078963284037059453171342802010196220776511846914114041406840745354043915731746947004433732600003480460540069523961229416850922428781912497555446728397856981202877576749465996269894168458371607096928717885211071848879577363810624405874448895046104258503083699173360817291070011146954387282323750497144876918406516383132669760115681094953917016784615835661017057797656731699694450918525011313584831416363784054955735060975696926490419995364516767832320382982866101982967002970428135583224608358559205304239809358981368258923219561491145998279990526537774986876366129368925768550110738982493738623386241989487667727148397787419687248654073037629959872346048068026921220555559389630171673139098209600993376327076810940106189488441951680817244807140380975869928808224107654185912731216523126895313920616364116371760815689255979713468895637155409006568429287247502240222242332580632225350907510851222100121175670925872395843549704031417658104205997317109512721467464013273359057552380408624062321559927972041597116206900314419900113423569801672585997393343073180549266246362973469945818628505698075071565377457831565724365318826543978368631795180680533911549777021990575848401697168386997521414516403422172750024816971616725914623910274492320964663850328448831047606047465018301300755126415500536607164376953424093541383701778804041479037948198359586051858978055177569415153109507332557053316414523564202449252085159031584536642025610653411835242605095361208101633311135703277399370854773778457844996258873824965716365149937958995522493118170354070352317325135255330514907406562271714126677127973218314877919727611354316514638286357858738379300462775073778369438710393185524644029385840270249285767221994476239129350331878894783935667544988113185027018907854795404237271589911594129418052223994695762627541890518091752099179826830133600552586793218506950884381463468447310861870910591315825927708812306195930899387010772449190228508124208412169003316285254460078688432995093298119651175335371027062753498103264777388125020339089658165737183606773347318252043880812733801664793023196046187163505949525430139638120690935204299996263876677780744073183263769120869027577366006818895608866052562824447385396907013889635489551581185618440081688924139634878400905398171560297672807090502413150311206174504854137160017607985130979523656701810678252627773291362402411156997771356211442038452407856577848088600736697929438673750904794604521221615867158298939880933795763069226157275393235661675544201928276565278691000408568080308089771354782050311851867005456380780546710580687506121339425538077558914991060443998729469250876602269743932677145025108824673479116913710623125135286678998013066689249143046496434910351496050630987125390984019875284245751637909426650263776823847804620811095170170196601421629401676771056799917702144767282116568484947276380010008518325849593023858305640798256641469248891193698556918368524122738696586448634738237543451932874981215622727024862362570345335968873901130694495317837539924236542992500480905969299796173114053989792116818558062665190393321506261440684257597901924469049825048588583379253272769243806753727144578015147153957051234412761883205966220869002717250594973216355881117703835054168633974686663798898945910662073993831624271829581351452145231559180983530786940325955902347102686535190395284160733524863365214856696241848237621983742440199230747713853214728053356304166270973751939170124738920522852286460049138952559262238372876651524044495471922287861288678545772739284824588864021992988538668376279957913673774921441464532387942981085950827135737607737976739689482984640124239272481415943238819741784568548482151663538686404259584091988833970225003054209400761900819283452651752000946980783523731387429005871177766954008945570122307390023730904505764246334969915739310782819152761456660257717478126722987483019158312488363627787261063175612883919889910550490986753317444240287733593361608726765045369756095475061370467161781498687665043469705510897091123812185587936084164179604826596721211614139263150030264152725114650607054358247236053534908877870272298317491558145088727516384257267014203653405095393564118745894185713017922137364114328334363590761713084896912119062241178761882344641695340010427794685208770830107297042656988441126896190360812636190665430333892825577641664174795657579926200365722789541866990703553878133717800017864591127036826847826220501276911812428984196740979231702432178450196553457798649585323123360231762334836789179483583029335188184598789389009371149496600674960150627853824673783706399230897461007094666336633867946894665221652102263469363049050029382268948117474098635843727647602982949786140396610936453359755781626018849030457755858851931857302458611905901715333190349791033226262804147381816497476978364034474181777674571489030391378775338896727268919640265914565178088285375510809763761785817633777190017924860637626957844830762704681775553563708424584377249549633461564884804709656451639069543957929075689777637357223752320528729409952666759297064283246975358147651172103426164412149742983314371036459768690085848436238456059557691376141744022656199658110886116603210978028301692373305026705010466122136150926812059932679929205940572505818670556342189646300917531290064478581499859477816562710645511994142547501451540369171810669689337431929998801470595292189809357246808105684033461870067667494575785718027960347490999422747115780798674508156756148825041231815056110848020262245315989946428629272556772522715113228620084827179327351979393663426076835214832628095797017679574920837864399943889659433016504638173012690854397247791077047556656871124288609995960119798587934508488766656438449777297951871082262873497125495804523558581372840176424299181321082108953287826167718457849915812929953724612251260344477309160720561327736999525908388540689308301357402522404560145200488512324947777356927656237390044146937603713415598021250806067381653160051858247148905847734200886140074471760648114197862061025000208035570427235222601328631517701559859551646763540608275076954450653550560306405835623312411038930867541026542237117334445947855316289990130457258848424001223984963643416896354078765139275738697042322476038004385143019129577705646363202909651812155651018006694302851416684683868923071070197879101816903888520169808360846956986556184993512662159152359232752435967925108868989655458224133587856386169953123678563811407227601593684026159569795460544985877722723473194576226096021753807984446917732225564810593784303506618971076960963141402553758284377725834805608433261398385897921674693211434816839490592523281538379648036725743828366929759719521992653440052481530298829838623322096459576285894240022810095019020204748849632641703318151111408268596455907732870958745045233714752452821968763366986034201707186493797690089184105291262922632956659208317533711497358223511409878899284609389269216485418736474239862646811855385439147626540782246897276014339056458245801371146823707116980144231833840999732700402102951367195605795312895863219193712172966019381571921634768657894404681853157409283944379957747017842368814466522791377607466950190558878444495293038959497530440934497547442085218057357787407026035374062746955803427187158629270895478256874534970674474868960812524404090443866335889613107162466819185445911069210073954279365123057567854749470678830268292587812680922797491529596931897616874818039452031834475654208933731189759587088588347238343083619454288529107804564947721905639072831645371630926471615227942073938531368929033666671813079409520542714320656834029614766348301748887148226928795901996787078008975377775206777789770235469952132440615819691425492541931837496807737994520475262546938833669660152218045733321108563978433720312285632794580999363095740729544295325326922332654253604799324643144425043696122938256628565917495548794265131992097559535897626146418646674013587144073136200522073583274333718370693698991547593900152575653481217628640222811231048958630896330036245539097833124875245392024362015478778054266387622902713452518433591004083783436431615679410904249160648817032010528465583060908500494366375271712287834725849413159438358093673480950989901852573916330040145741427818081049012401356288609505166358950256869928754441076682857272687643083898020482710901730204823841326094853624406345056737865720220208517666312947636688773235358363517537482264018809760020575299331824821627855596858238446045582230094783299155166445008326352080420812585358899175166710574355780364696893399319873851039920479166081508809654684982573231749323686227814309823378739816814007873150008399982533612275335318697570539717567677186408118620023514638922400619502059566214554741360120267504909956598163732420348661957103820121300403156213894387267910819093586630536688095063681787709543281168475020672432487918488536154945629171090770535968313896050480491974147575085097076514369171830769666170357959587444091543716108144853155232671329737292957111241292872170303686149889448548243239713620255480856742602500101050898474672840057238220712095410693449771956646611725561189223273271943841598862322244160638191730508299262844474716632518433747258210391435209291980662049456703616932176442064681093404517526922235107795785958501759963939805411331432245390579205198721505115706505935164991903086538602650407642369538316131536150972652027979974536475970698452674071705657848143602717439588029634700024795833449492628822320770557816344925414100983131136521480751011256494428004215710077489592142933110682913835023126660154083186923861304755390410551791763099379374961170710375635798251347521114561802786644826620705321849476706910351532863577543982227847868668339915847601520221652946001670174615306896715683730990634261812359220552502622973460931761415947871720226139226758036850818567293317596548292578357596695762118202465736540689561503315391194894329445774767220084020315997962831208950874415149043444627800462155986475505693087671212779168683418459952100240309505277504601200720053957732177070883072618130789161739776716453536196274115685436828574560399250582091818197651533151528893901319559108445917248488499595928667184211017644785682191659104363606564935178217152799134894999508831346125298988096033256096429249292696079254130605062890398881054868751761857331819921230426030043860020268822644588167587545468147708768612639250052652324140578198402409688616341706470581817625075193350469882418769959343434980457185777721089029439720873821985006103031207373382000240490430023817473249453134432589695128081419368717124047655844136311593238727251816618782685884579390300597935486411109138210656827478419322688962876507664212599652877628263620403844907299394181783050849429189739670088693088242603464295621842995277902369352062942467421998433587561345747658132441270034606993534514897597176064648901374652396839366360265106020593082506731123121164719833569719096431564064371695101486637151159145419114032109035056962467322765673702147321761361109654331072778869508579128872657479536689546169779400893571877067943872273245000382459929562416380545193376246662549894695808744778502898745173757149589123234612481788872384402346111216478632876055858073463341478649194275234769391891664357029346585337327338946355308525276286673814592845159614247421794503293208067226818425945338378896353537732678812166271094670975384467514690575255037642632204215210189146573082968053668994846414633124819529271615156880270845022794881336307873262444346561914722715952051352869055312582283810472462684623901876412160411568922688035716780620115035334380344535225376253301374009460121736926716702027459448330142943976185188184823804142318251194709766602529354849875516591847720949707195229156148662455602341116766785306565204415180512725005147005526368258314336842354952761739969974601943488957686858149199823038266786055402905358033451647204929792314953356269911637352634113099166620355027690462698406002183405133565025273129264015618110116273993015443314824187393168990934161503953706244241779313595860750525863928157584888413992599899500492757787545543036929747817773942371554236103225607086751960198633057064520951970413604042718906906005270308524645989602579528854752661468043795280873169626867696042580791986617750620997473026566247423923371909946913624857336316413854544915003439726444290972563838412202207417447753794487369345203028725521677303062906433917631149658285489229531680948350748907070786538638465051866252258528702579520806084834268389106657941213739225315855422670187915477013446269964290535926216165214273468725240870227391924684632145534737198741262009382682612754788067524348168448785129301822795169862434874129911445694804591345969797639127271729615029027497361552861709699641883660571507401469708530744024526200388688319872899778779024901769415204382156677239090145448179208777070241549778810759291535992542614571163043235538765531991110955010456684144225596070436231495096996017784964662943127769559934598515364827250228505269503935527621918371914978995645000292025304982157030968297960907689393609496466244493220657526603006603228912477189196607459659174479414109911948929185865207120507314214648751985750034661956296795084389655974117168273801332510850664843436478132838840247708431719743614010444526219288951748843222145999595809530231573280206878063326479712620151252036700051059471727001476536380535715121620448221693360215163511956159804343540424888941173714980183417206410871788178600131066996515778319623344825409352227055575954117160957573819465992714424815813726972108609037696528799411218794205336144570303762191570776929816004463633673082271885121039849089650807339624037665787552063557005441279519414706163646166721775922143944390266750498503773386904693323043129297456680290230195129243167793886602251519478293309142440266016041478570503153496522339822959284371553813817814320717445413251578503082565929960316166226037285904758863948630543787033892767540445758826730268024552092651478486290946478427265406010531612429994897010916221150825043360770293224692850893615747078213384541465484133960809395380074975976082702583957554573396509779811787075824343623733439724857664313135416539220801356552021916916731255382609121596940796509187702911699253957963810356337762274953299292903525650238060605960804338145234101666638707762398542291179200831165203032652673611859712003064762386519845956323914077136533832531234993116726479488204108859696306807957397521867737189576735571133031752058452984042211803588227538095477869067995678345819036742941423808909901508235469585947914592114760050642977727680809344118581853191947114490529247291445060379051791139999161755346405531483096169942533640668108578112789033210335913250466511774543700163810460402421167352499489965442839068740426298716797642265499534514283075319303801003461094567979678896501479749503294564911216061194366688808389603569278047451376137220297960198188403931943140855308306645359648453324452245679272377734485440125958355885531314855500721470469984141109933843184164449252944894010384361338583457707008928566708025223321394578321424269763785826773781633809502318806373658196431541737046712593721765611231487397419005809906141329266156958979502383843971294685253968544127071227276573706497543481042006305802206369344096347261337401701067119589349606679513787699621682642073896196157912688128248976190608367760124324813673763300051944136163992100765107509479440062519867731071431608797336204728981150441212233803894214523767997303879569633543886296994384326525094637321235234649549021636090921531634313123459346435175867129010107421194240401532636343056195214390243191281603759649368986743137703238784583938623362469966546668676620852970301649004226147171872915307561988995993349389627568894740308529582726365508987848435271151328865663101345357482205431923403157762412839051899529901783260290429917067479761034751138245822055658848216160829508068757531321122576272248137012210436240316658088802820590780696079841621567850434626197193912284005386549012789369110276485934034762861413838490439239304130213316247387109230233657207950561850210228569434168164502707686108809096027827897241550564365912373665937875575722240928821418489104371640522253788882213418055608821693229079017465718353870239486371399472760959617241244959324194242973340245790063600040235871933285391630350898255825960746204507551878121871699854110771226297973646658248739411694446985098438739495770137679139586936302382621602254716110991900201848969278496999412509991731169175363086452196662557375859105307380145846506127770513060443806078108547062534800114314827052971833265136862365015132411101375909509856118005237733926930005675596671665199005861914134747819874667436545506850851005656144834153621531239621187798156695789498698516613905508733937291610116706041058056088265851710924708279549772675097349868847252792824004885837710179357301447360840669211879913877198319703857018682998575546962088797069454823699600458161687942296433609384783138319696967345523540834487263986263232791631611643345036452238882032010807639983489412028740681450131181971645059370999813977115204463932246545736655956061534197015182308416954280560552517250520175006425266949085178372935972175352670964272598359464424048076572983325090946488761187763800120883469401964111759878484462460427321042752112119139577225878576502103512793568190470182800968075361510712246868272821173441266287604304805206152412167129674902620071773889367368107116093276468555249406209201693483211920799998449785839065037210793039859141012700670985036965430583896016828253445704991143305111582980671167125489785280078979809588979992872974285219868717565987434428990712187350224799600551462729826721158211773004196921523359016985952773228925047243900678163451763649042786531673800252461506972631135064767540829043815238002664446021685478606991992156658763283375428650113184620304781333383779391400073431314395760800653521700779101463866742038919164175834155638363343859503788969720276956435059242919749082172785058027962057776354519011010208343751183561679748169300101815388425863003408368785359824731801946066679473547941328528406488020511466115434713305465117005127573829777873099869645544026016528488053958380546884684257862847136493814450965327902767650699084958741284331430437380717615580849036924036031352705094191900161355994949615848806720566036303383274335040364835881909772451978523166286623930336266099150906228100765793715861082498473339474202828852529967761342840943621899857876042144772097230834617969351426396410255794858338912418548431853848329450473446021477874593398885248296960449380514966095812129257777615155493497135805647062990392451633001793101027519407415953436357952941399952001621998678335852173542084249475786372409806860543715515531096231499418377604260659297786103616254583203554622998548717688553255764275690609401451727221296578936805446918292867144711471237320929868277671061638629877989748153809829925415008306220221270959764678163433546755118543929263101002998138092172340197530046108903567945706849119905984031005825252415560076370124441296544966015173688975722417154082473848560953145419272666735757772238962348993234039900257216923895204740807475195533749203193073541062073109506006775249039235684323753532450176659653969992424457143984883184820500346097849198600101196681255672166840637972626307672133954614620815798729734771349307122574587826407749238984544738801800716618189367329201753014788758942067029717496561076202295043856235676927205284256693730770705713878835226346405425701187828205649350891237402489122763095112242584118702121954327037072224400202789548809990570672286950976902603989526294911132495645705880266221974918878749393435070750652589896517858613273710664706951415456069950585501517004857528622008914974039362087810681873071294520046622090958002061315205669245831134268359390006371645781439656312897929234526082799215950091302587961625556481982880747685177028510170595703290953149746301437453282185475774333227819467124783139112652260794882283340606233223644654519265686049492675084626986647145320582206510371895383241773870341598115582785254336164943916333392098815583851941055518780280666003281258642733560768463599245527119079963246491480448262835241367340261993471862854808605263067401542974007837411652073884311139997843112783025558891464818489691445129662576207025410758368395369676555868688843487441049233238185530557355223347995972927719431710650382142647291672993102624737786388446803824621693072984645586676202210165748086913351897737420890441431862848955100056422644116352975120860528797559768968593312861885343418882332786474568806501964892845728495218799326856211318798879787122415029002518898603503427855505173841779044395356803773141222090861959522501308639552630734820773027051141831111350019274570541955052029087151720787631753745360780258527334907438079027468147085922436779082241580137712956891620910187234528838947120781404733334005391174923674635262019751857988774806482561294505929495979910386506090436050267796779184234004955880207341091347976184831647984638422758085251499873829862922555805261626091791688126599040325781846315585935875170324059496901093828078697133292218582099437964042797957073491412401876288505348653379477922929107443242475625503890675936368927566123275517304080776408832691304236806773482596431313748609894451146782300022497630499185503985521236149026965676438410244467366404369017292914263878207449829708961229362081561749398550442081894153012363761517470082561760209872658656636919327203665960706441964108874220405424696662155552396064269306884391134311752259030251414327731659315687876068753682813545094071365431315486692464560852788616476649586833516053380908831179836887179937593936811028667937508796507564842239381114291898306597867827001767210862096057757588313928346655931148869694504323393059013664670315101072020001485619918202549830188696775781932108258480145625163690230211373334275317952602381524642048300561069092884658641570911123073225508905417151571731641934284480795438634768232858185668223984742563998132844641937377817619352858484739656253673585567164276935911420336253553450866927555186164801282506311499404605283389759205732898978936652074124886729034692207116660510763558385099580338503068817035138597322549410406495967054646192252966268401932608626056202345145522587092064248266507894092555202197841507685373382914207755970030701412544741961986582827547748985758862264078561177561132052935169550462480973399798475534265445357839761467249643737722793599965590451185990372393563713082560576672458348072946927112210136507584467707692003900124312742054785711379287451725160918625033196766358803916126760606075114562446030543977861601409308252219747902921913604494846307605287067488255801361293032679975152623148065928502944694948218399189107441817444798450928511617484940528602854123179735871760207472301517651646355518051444159070349630186731112372272297394431949281640375729278581729342903200292704618440576490608747743384111679266087861409937077307589047622205421492470055134292149640013675526003111284507705724717431684537263029569311524567501732250764402051503570402392279073549996422426696779376209467556494118383400585453178509930453593891861059208859013124856175684399442199845940241632322885606388729098019640474203115932584447132818043824563096566274553066474749446521910220840053298784014270654812119915414981040474595838521472560811396087530265192983256798371624204692654535001155528759895727751051068016252522479338893741891073202743824622551304372411181653909235296353513396559782500704436668939665412534002990120001837208101439879130429669913637959066516989695300757512242608303371924837615975386520073276603364787972895107859220151972619498040161709362391858306340758840948213698656093974485480389091622721119977352477666581472752890123156341238096942204631944949891314658137891573179850501770397572990484090007778429823687087465372150980000645085813550739923145448602077906111408029693442999860887817846370365318943353839765333818368944187040606233017652386327207197354355849434837430753984938173127173081323073283541383225706304874777678654535932557318760965149845964326859282656029877794099638758126977485164164057500564477182206861090481239036691354320604866920857376403830895681652903934694796613601592096288754380116819773479912456419104664275858318220348260546959986721671344022751422236460332353946132061286429669725570589195671509739208037095582273366691155931250960028593814304211499915170515585348137787957794669546831366998281109211927175696931264522226136468209075327624879611975548741988171030593242284816060884605282177888627481794830527460295629877109052454421447802947713959812931758685975451082364512259058839098529403212692150273674491984966504479979559063660317404489291851411436203758942908196023337564337188624860861528925585068668741420625170603554682083533751059524393197098172275873712104434926396283186157939377109282464981654140672646984060001657798806617680322752564115480804221974240166495573542210516830440052902696911937437454489210155887403937997803234963166937948669941750899830606927672966164713051518835231100371522673425342359003708806912731707428959886554782732299078179913838358027120617719547341754946298849177606335981658651351875415406342636919447284467267976687031723097995294979851769169421775560466909415665414816298306098274275569565838586379050408010312230705525723702006523883113135055998341686774416569189429774145439653328951107985808624859169382320244932306557438352832803451618422271453834167020320071413350404734892306730279652437882757093026886443510739991748610304462687862162255245578693565401347410170372379866898971212406326242763013524124895601842212739224913544326655622628757390115916916935390449380733856132352961197973884482435420768233046056157102062708836421527731062842412931874836655238034362763708872113552552710875426506840946516411753033566766212619524861834640465122625162494936458438076227271261938150440165345547817187078656483601482852758346903458792399554411086518731381317184463907368960968157711083343027141737419775810641378677796137458093069342892748005238808747317421702628354045210323213395026894975958104883774189507500755405011173647851888069023836760965300844007805460831380492633863056658374214898274444929643553071978213869681566896664969179005733815107233774910706160808970691246542007843445568474309218045069715764489512246600380078445106804490605693893845483702367425056169468675381185158456361591989733247125326273142797382303245761080472453881839653420633230569027267798547958019846378968730149599030111267842438125513326105657609343557063225382518220055657086592103468644920450114710397573953070726441720936363636588862245188264429684694975910396678849560100806550971638915514968418417550835824119112214587095467498502979153337612642221051948600550140751622251485318754217095470696186525849702942326114891431814721924412599533796083606314231333478352389198473365068199496474557542019124850986787688244100316218929458812386816599534323957876608783627427739552505969755775866118730292936223469230633735577654110732609761756187193311715190928435735937695223430222246334380348866371933510633825573944807933798908586440781505897274550017945779740078175284007175241886500482353344433306628082369991486522562169156335728673105746921832998975930883243643007305661523849419283190030200506722548212252840214350371047035495833507704974944566352026782450500651555161801805269928031514467680302452582946506824487140657701717950423937598431756285743189195635840212254769266244107052652554035471368927272610556381935809331870240992798933305003455165617040836116242466306345928606515047003474928900610982501267038482649840573536670136459907446928900940183513592719041218740062307555609099256763360022846274944496504161053359225307279448735509446509620948325927112560896262725439117368504724435145346622554702935858220041654268412821172710975487146167966779676421856386421619008339234309678146011771923264083714136045737760653545284176038134277293173203238571029117815332895782819571194205840658351705739610276818068264473572983144693772883845038567610252455739472265494573218506797338216059293613602705259398626798996461894831632205420294123003059441935856220790311822282509388741968556596328267039028402133675035346065079731164276017103081593991822088925993360945750331065487639425335368258657568948142868824958215536461228127430088692047912792765037642734163547809879137694434343973315664525720000454047871423263353749922169051928708232884886795501845403640799957578480356501130419350265353025669402739227974987865167430040080642540259244657418138009668481071985405578729834154914118358277473783873832581509117514437667523363630380786723207955850693451055208615923912282941039561536216300261121183026854821997820931114731735310901733620257041872353305331971195219663732336267395899189945239796218255114825754886990867568419416462844071754147599392871306747808570879556095338455824533731668779020416180872583892727747260787785974283189127365113490014632466358660484058814914312110966253585559426960719259988305993071439392798574533196660114701962634148498431529058059055402568963150286623672517667760529335418716292883883889606192840521466404100873282560341506374436116139460252310759038727753742740282286872698391043239271047554187874530385948990807765996862135785637007091590151462167757039582332366134748951306485986654246742275067237564829126034685560143820075313754467753335186451631182605791076619341929540300538794649906804667283830812040463190931043440100317867630361491364860109073881786692156533204495409385325718605662798888526914069381993901458434719411510009388006912204040221977742193862666098665181630061531301421203084170239104517322526258319270960425931786877502815617580533004198978646687704681398026934109012014365078350622574678161168207413476718648495426427288452956241739412373947859200388014431624457134322926045263651970813170442365568350570121720563403551746738828296161382012177495957420480986875662275467594965046769179835049486351823084801888828293938689028722933949420604979512646114962657369594660834943469790434203341640813875077107734525063766609033141570339282235929993814584381733404516337076366463734888276272916782487012315321153202318699170094161796485381542187202824122773976300551961738150995197966828809597119054049104840830954210894638887414351089561829289247882700167093388949833336041243304112762504491320772530661467820660469983686180019118007543304667341312302479230616653669617506631468269309309208105694540895959512204255491090054850916563860462997505455772549772913479122559906514227775861387017581093767371570974230893746271397446964876869906860376734241227404024274940597216336680993365298439305034085290382716785002685059732075081070097688567514828847597175562505991687253865780873729513134830438946569756568247258174697071274394062371215959442973773885970520212571397940524781203555667365909042970853907704887975590971641645410306144719688010931966222418743654034842017222846973745191632453559650725098271425204212723689244072435062050542575682359302018512536813200111540049521401557460847243789945262153328140650984571179157127900883318625742774324763685138280642097665101251433700879934453702590274654885573986334287803540646370776556178208238030925362881758800578851372741866351532932486814049854736090124784288846637962735230806057322352039970509970307829866837679954237387006220767826921831893471232996307871347785187595037141311114959357121355341850010067548494766199460257503943183534736988648855819324315713616382507619130509630584000266564819441683103369715460989046438409672690018098685986496827489640997685937700088701629969766361974591445261244026278258376082773970574463161367171585339280589020204964517654851205138006114955304742494241618030788327014220923294325231803970662502408737794151536988620185354263192455043074734038460234769784169658482942275557349759807972074355095311674916785778261924622876818306774840335617571772861034053313997954364303549112138167935066409072365165301096100062249174213701880949827919266770361895851906346287202016015377319003932372167911905802079156049996300598279717096025796060705337840138827765023097781643979424227163123402747600376337788762671580939971174039422609324826125229237347987624118419998952814934157684743513505845863165922599028111829999061032773108661210631930437319736577828701385355477495324183541018972398502377268606348330314760286134756239150061210690599409646659255213805415731747980047895974400824963164393188472964156841876745469172474034817152606580206129924146759987328298662140774561695445915481144210970923015568762520116265900479933935015661327831494149295992563232272321749503282867051475590960160022328036844225103395205654293751337491554859281605373469686636101751340011915175959429208496607681305267573750275515374656636316253226268753795038285238691855764804597391607213935510550245931590394930731373546883409783272813928225025885588407812058609315410243090209114633674033303090028745014979159951071985998514575146467106587523435063104732240548349786928327563223768069546029733474833944815124702050691650082619599892607300911450781533375105415894192140891065591897340035681037888065001728123383117474852109718718040219902187676851351115389137725208676336091197369452602719011462541435570985043800922989832567677186818933152747259655407043986047566148717404788643497490998734400795606050592794965226874905490475963086644379399700739377220308057228433078213120394603441047848701171346153342350922716105209994053551264486588373736727683316348053752031983889770291150825405683717760509727697984612901359635761257326966245913233888007158604617251393456313432712844460554844571197684149835551137231706926459144285679005548735512250358020012343878483914781667737987869783174339681851002201683099147064451556105212285754428606839152348909145931358547473669834214336108145703827915147027368093686004762577175220738232123858431374003931906615654780323717824557878932381804044892912818377912482985600331357160595535665051861964077014967725796152640975779797447903771806207152630494677395308566047587516381989098791434410947296638795588151476122210286384031239762142202986384144640037375482335356598772687120346974808979425244277283309858141123936518818549026068102647484340671840849867261082002043607057913539994376264718656477241905178603730833066564613451660061736827687351641628594411569711116908321747959059635065699160506560201623820874884327610296066190104939777499850433886767933466913069814772940273071726101187691106608611802808436674374139499043102269853937073056955147349539217776475524529784491992947635179882231547919239931220613220880302187378572837478698919482846975189162510405932444984480994657783652093669866664791456294364568139331679766932479775790481449785443264416753488553423806311398760829222477855021562337194187680075386082013683047519223472961803896823789507803864478263580352674078867274946784924369795308116434407177977434483368326352496730416552517618639288301091063290472578493078524310402360557014201187404357444915815467662616797083784852681799109133387902293771626917901447164912681073321931272243402086933224521409719425082558813528243927472475322894541580710439289152530335791106294581907773070782325015128006181934996885929220514953454862688736669611250410150759579677388011555288498058840528146129151202116893517831100580473906557413134901250849056678376269529566590250089948937250312492498537456958734269301265546478671219216262924466157207278234561158060808766425129098063777483869606678555359163337322773751829113225799905698446412607035866859802164287997983455111202466266189517340091743651090237702179124362831408305779731338196149846404624195260425607191953447871754693299274234525323867269475719034739700274997361557684391614484148953420376969633196110725760173602511807768765046985696059731495266938822191104650543186073846764828269659049501038913603701580955513869573042344677823410532898607768862859325930325837525311465837523648701153625931236168711538770684953791870114351301004297650090157900193200548977890155181997235019833927190589124176794701107055499483878176020042382519931291924546982984338849367765267721463863259699662809851164492947009580910353736739717278245874663275635001375286770872528386932480276633043413878533876402425500232797447776825782304672083673254585103877511342337397849701585745969039788005866847072170776167378611294930825717817273511898150215706185331863594619693711774548286641482965193014891736877042741514780482213782566101079750103367054035337004449672921357751753329400769790747184301866909553756966515096340355536119052646198789229034045455346591478798756254416659236186682404081092436770600899357232628446888854213134013776906775758358840277356711086417443237112710440954623455030925294109368008168565251832705723016540581510132722152780394512403564654192201485978024254669806116508612506946466506521207759688021143766117441035268084179194457254696901450282047460844591186114059817546916589082791057350957791938172811348469404278561167073443440292448565086635606584806453207563657957593309849204388378291859050958436991855664819947838916575403249946158228542567981846308533375869812254052021129606440681429728162672304929425495980485070121134223380348152443253273733512983986269740867782991392403251812660334641391478745912829117136457947241414446137216439511628486699389200622552666333102348198336040345189345369880091109810336434051470801660154559943522537917218313361863891487709744287271272259203638039256220991328874049888219350038226350573545703715417584013288471712620516897888049343103207494859999211933040050245137433049106129608295152344326703346897055583156083615552576629655022172214432318548917828979713673466208235760112072588932369451055357778816249758033600342846243904465689668080102229124577683877288582795749000702044455939455162349000328519249610613988653164285513698349903403186753052558276108053143931577993556590114016695166246419549135397151195101644084883617563156517213139955142775950602108936510214521611684750538432665974585983731330527359540174367225501943751727618638594858804544993602758993253103399860671424613517759938849229976479414790094556111626483733263618066418093075507846420965832866223185823544367512245845778240437718567861733053134210242174008235225206102005597880163046000124908238009068658453359732936768331543505344581297833410028138978781018583334857433692220994185880138244474841279803938108930696740779569776879371558850660898654479604722905212470077526533150747330108998852760125030442756618181597964062913980424240640850134634027806977621869138894452430513653435002848552750998754385251476867422248882740304220177266956019599748635597501244640244303078841021301620803539356230315309440827517242143058572116590637277808290082805037408921291659893863614121858747216612756224271253384626547760289906031358459373750066200658933683825775144587066779432752771240512061456246351830401174777487319968769645062370624254513640119364273881459004998897927551163139647604573746738404072219301320530794425283090301611146308135412890984553172649869482655954550632722026604380326464472827426733580387803615343587172655690855992628245214566211008131919391833679075038573324762029908449718558169286087159452326127036813952129465621335451529931032033515068385828716149007478010580652342783787438523157206232612526772016729713578851138242686920166764848323559323107417109731009633789894599705549394883462148109532317898289303627177637184642768706598351379607386941114216083934971092470558604429966074070628812560735295973390409351017458325298127779875596233974979133159645986321856950157068052004812225800159024749867979353577458500112250762944315038347999872581032889265476478603814701118454659648856010159548833641648243725104774688757101977266121164950318274493930714116725057003313445900368582037366652385171872803706795114097623972994266753216173843161379757141407453956694343611409527753479829064306602467678839114949709667777584863792307190285543525467833310630215809731375451756118971454050967524908344046305323199000386682917754609745771809709668762906498241163325405504067827776234249668757217219560223892615627282394873987398078991218546505757754921733399903187482899830172095606593329617259645520542933787459947512457950934857824777565894894406634143478518799063537377010444401858808957564416893912607272448421722672663030143298905757252872846672713223924213392196366860788466097095300594838951586656205443942327279177154944252077401921589225027274920385487414186758748370895649433062679080616980880667689457330279119796503109947927554986563515206456407989028280769213728046645676022340341407281896404632477704479724301688762909629767915626522406545927787449298434657915956011402533255277505649067678476729808507314151900257533887326189332314798577353415349691804717671875079645568619282763024985988085838319764948812611301603244675449888689114743093116726796538544880235822285574749815814407614273825311751787753809747723557162789931751817731344666540045487040844702996113433638574964308552150166777583489714556275656208010372578893971893269135713969036090644829772797623839859751295819805476015284337146097383346448893912824572598192229602390330609296405597010156010833543513048125276265525939626810206303520208179560614933065964639595953066796617803839510339062510080044048435759238292655735520703969749068723714531124644475313785168430911666967211661239340359801034565420737497523014152102179349872233590636426424075919031087550856658674373005385349598198541778385969215102179221160925036555566862474164820291011365643842224634703856000527749163529485779509484001917781926307810366054677779800189354753045266227977878917323943367605001088174332627336625953424208702951466404434334386441704449324983355301481460162551266848822630947849245225670376461403477490154247291282302640736298090893327960313207562204938273233116341818355476524547106151024829724877081633615117082761928695278665451680955007554987823993329951371248956888725082575492490066943734631644188008350921450087657567543130658199667945017577656026583213682842777834881573753206485891588187834092431723571834161368232340750680762242584068727192046990321876823989792350316047094049941729405088337967470732918454923300359612780054045163383825952790188610323826895815615793736550120195001732813363012567953566374545495964975389718916620765445328180409898125045361773499024654087308860290982708840708038557298957313768335020344416982229460028666333868552894225007268949118328094187804560507296386700164242915373632265061794025977098066304017817921452897564901705429586232088470243401906758239243710038140364390510924511170306862371388409567817884895328648514790756387965829551722793541156689956476886677273563290504834283863417982923556327581295982716406444100966149927943614749131545526549339340888485134474844553474206099422586241480394152785419055855846147116418196684980143975340596982150029352748284780237263709899837087001994516259310654910526200250200056439445933991346489466444216195672035146018518427058269025061493313074213496953589550373161036957014121613469746390356633682148633412481276043161395603395715763527510306977552644137483338352459392953523354240012463215866573981617143152923239269344618197149335727666453159833280321729848012185292047631618049621285248556173597492506035445676263496494355651334813710646342311562453771388651105797508458624697319796266802208040287692393151492841598938575582232121440078388241330448610948330036013336342446223002021778803722608517946601633902413465929799455906205568407415474686423194487339017220233091738753352954994945044435024816075120751752279773335974359361216241266162714759317058851840119846867757744012558108109404636383670673447856937991278622599006133907502520359974752418972056459130206253704283997975010022201361427691572506287953052732503552509466047477554584478825869230354910379860062231374900355520700680648656840194226865125482129959462367064418729177506880244473672534741157004443518720019615302545789545339728693935838550861444304666537084508146825926041703229049873600191616455190175621242007675994826635618673217911534897985646467980642609367743975920941455359660136998836802106962636024016703112965175825112856699491254718908583787894033930052696130491449400459177362989414622403809987425224710310247695537553905737005004460430746157290159921587816449473176431731421135715275902771233799559730409726417306124976763987346898249548875001497454636663987418879055829674698937757328114460215410983480036207468072667993563931230493824781091845284188910343252904238692722391937885525779684781499355552172551941689119033099143223920222224701185405754941552500410438634507723127011076423083014704334475579145039455649664153885079369296071798720274605469355048407406999532783934343201681918243930247177841759284734398222640878888725830917168680992345363600962509596192725772165224214101703180860264461852202898074049196878289779269761399524185245143126146870555061544774373204726800135302530279111373792130221029536942859480436377170347617513018376955908518173697593796306677699057086628238417581139598426268127307519166913263728606072122071944296828634584402618404770335477321719268676564831006775395761460078089413367869880282671430813483688663115229722690004350024526929630501083452151930549247693728487490740630514230972490818170715581476502453773362556900833063562586458236438258569048295281302111806605874172978785231324034538094398422440609248877222146303780763597144693136991721780340095453283440013723710905046125783998654275444882210018559132402743993568100884804461379158588144575631815625093893317278776201969891858820793380165883045706739680201441954730258404707941856461121538593375293567224632823349916696899834009944434411176551463961020143146274926401032543276535416156925227436518730158288882496233994075513226988360210810466003021781988429437643782054158971701849062801474609059390334201918824267746646615468353802494269491996085286814721959943066272553889054512721440841079348145344295148305064647283218452270344184168411714379713933973683356347198598345033817209171989437896435950272541618946071309652430544247165831388975240449657352186362252692982748587135978712570479778886004948995793643115022717265571818784245406480589856297742711865951974849270411104634265449371187995724352402185513803751006325236100547114523109964173153157914806931756236544819008456426265701948649194962279006227187183022042951852459378371217531294073661748562787513060432695276204074116135528456901726735245881412756099737935642061461809621679721908027680367305482722305843408908636980899207698340298568692687910759639824603447538855717155927613124262254624563838281001722120161900335713305718096567608235613668253677839992753845859885167841656315652256467616710284050286803888525913440130750567848056359158289739203671397236199652216901870161087286459017690786673110685708954363948104031272256550212195259725502608670481361839942469561167448503057031034406850882796794420426623353316402756057031457549483943954186732454423883633813400287971399183431142148083844245728892619269251171777633440910712822606476913336212024933366231236555719227725629873510557965906438287240991570656075024547589601277307911044724842063113222276230574685905516612675030402900887580593092506779542867004411925598817179858009225413104230687958857610345972185391918675497822619888396031141458368211802357837802024443798977340800683795067570303426909993027308270657811600448868846100519610467920126078111761896403936461568640933288492857987657294421633903147734669146173735738294537501740788743804342964393787899357355227899697031771829281547394232432061477875069943643001444662483205898700120055215405778334629710766651341871781468191155387729784320813838244162517565151274682026516678670018976325942388530337102687256860059765749829195832865284346340945541795253931185203157161903648747474785756488982143907988605138874751678816785134285161212432440967040517914823346370904706537627012179714744166442451316140974839287920959703916364239675591156805979017314882533524177825943485106611323032279875687284852376091092675565559527042465779807737896546738244973605996597393774518457834910308812151671665452020275886980351393572133224416015441768392111523321220367537347773377251405225579223657394040111211938067515555262669486221925075843349647865825693546919429784688448301930285851280972576148382727191332408358515522403712269838513800014629867155222503082261730334736925959578023482974858602801492642940387955662395788712572209475004677317938357276338466184680529921102904478668310454249655161924137383526579212143389025043237980509318523161884269861442350843872275137512999961883222970935618912646563251729736475455604793893484583378037871369696728649218785286436423811852766323036639901325904129216573117987385887883476552796344543793014979268228695415707371881643622995530277230156354932334412107188602351249424713727948217046844585685563383248952416955164602555850622035313600032906767840980027749949517481795831231743970689152949416404259068645750482698409707358335782593079499810465236130271305042018561654675070074751045539973189137506309179023785953780434306142120974165903245644798302768301173201091092631504563057224313437952296126954164356253307864281638375478084800714226273716478605368502849863051406403563004312744006416632850128545575963213082118437455126765616031561943899388865393697365217936624777192915250266444067297764383151575831393938845241082581946048824646381209873324145487723035956553269005215853606151521319211505381397138837182413317425648434891122705145258360583259196570305129757030498380977092334109928967822630742629190098119846508355938024440970363439010967742460288669363969094903602600940493703519551989170619345936737594846517048554234588740954741069487659241500128918695041715000052685701608398343191228542818813620927624576426962272739923931342093921743419781402675839543905369574904148234299281069049815748331185867527439951768476908894430640233656757308278503968217057672009819458818158993671449367259690061038652068851601087245186362953676998157955129370403832592360739082392968121327477604189951332625176738629049797678127390217257198529293764702448234137407460064394893585678437937621673578170770460406249244684678582544917853059094434007624242614613288085095972920683223415993682561417904941782815733276442017149601286977524385595413285901856032892646438554571209780168578767668351770649612061253545831462511847250267047532886616369714511559961598189364396419353802059240289131022048461178794209695755712727657247808639995677435881440904212014546400812173789787256725637458804489193161396366603472238059750233266280787678795320159492742029531512121724158533771252014118318938541672318126596117130949349201725849016040775803064624973485987882978819540849591113957495324471619012371023979164633649409360112760661752862248720811598663030676238927846531357154203185223510548228729529192898591055779773270500603053812999139497549783316253436833397481132774900549520850835799099334981706170044076271764169362716921684983733386387627824439282084515908213451432626639232471492301055371296296200434116482888009392410315503764764211993296465527205225060998311230195754533654577095740725974066807733614111655756442474501725517555407607010537275499132517526810024685582523689461840988443390801466681906208042740415011115111076444863773268436113466696406136276670025657535204306423143730344940428970055529623206307473347928870614069211990692927982430227654306284727859037578484073386698329596394166641267665496932083302112180098919418023058553712785100153181174936765523892249780052687272105420286944054215791783820139223033706881738366918779710455779115123542454402755546355318566070537717740836235538291874556605165068641456667039533009775769584369227453014933058969444511881331576103200194175087502718663101696043913393656315091327976404761381779327235546020749262705924658883505113455593362311273937528907037738489672125412202177941885273621777557772297176521590130498279335922599920555229723613685886144458442475409506012959247565353928646779254951973476359565222923978329670159142207209672193190875362538262356590611578781509512239109167705531610848276035677693521239696954143991000784206868873907401319898510049837281124283147444424276147543898608356249568311559129130222285547204707137170921305995956006111977218737376829152612077222187109294174064972748682532983915337822097038435874859532917964465398873337324196321366180312198613264030586759927392650685796486992063606633988799599135384142691154682398778262771298081095497630473647779212958774333762809684010870471375605739367241445860612691063392155461911824432004002032186935437474642473562147575270258954672723123695057424402623962187993179547375372563997468604936984791103637798204706512621711315676756094590710124779323650592384646023858705158563357741000191604297149322279085278524006853412674411376855727571124164141260305461539380968026229972784963153769055090604269239123979969510146802884392928099126943866159861283617739414597031587095544294978703302197639395890588679968340475158767330894314987558105287201905067549389654551919154275592060498573188280100344904600071351874992559281809794957744162669130201189495465097025236733209397377533093525199177562017730401022946478545480339475414213831959728327568714422066045274932388399206495653594384508091164533868252181368579502064712280816038319151389046231467054852667863057208416023849812829479497716746210468636514062014607344495453267274088743679370511486706596182597308014000975767826628117209814529560947095099768845816333977458480165620624691229216725505139466214345486001127033141620684692282969870193682537765981286321240753803238555167005120053682370391685463184306736345914326614903755156607148065525270703544290779919054240376222454730969900819090477690271717035534472367474611009366755981904928966880604042666399735280472969593751645154632494851436966628688761628249805951702071961045778758687931109706612000380387872509428759135947823564959162168732789778794905806067998666554136931211225968761455709234710333777470626933826817381144911022332601335524970857794903707985169725107288306481572024174398453090844223915295350648980496370511075064405082036022868253235742333585915112587981036409455223551460857724669845218287830942500567877043641591658050767962005936914688817398313227202803367114562074461956959834300674256328948486734962321282506408946717561412001920044561266636879350361901770514706098962789189563564819924599362424164525500809034799047517240754650988202118511190319125708465372527869263736070339339253645100416361089347959484817875503840329887241858084922290827142154007685042051675511072847770056189879139805587181363524439542688408241758139045490036041303196185541509841482687030322202957636466930642334267394836695164414490065465941814076706033930472630521592926543105308684630011747062410039960688104849885915343964512896752813187232095025702193902304930510500189916466751002971145470461091567432388853701768568640710134764989547236608542588133658944983038321511443371786110789882203817213616137333456038302699031067350691014409138139261880640187814708691093580184026154874066861568426557182286733882222429559454422716397396194732410850865442947713380854309171962457531001855560443868062648079725983687845636570901676246405419392296241420101985128930920468142190691040435453770170779829782784608899515230034742389368365695575577841277805400132145295886232198144217513996496714893155920897569268770886540011007777687280696760589886903168695908654448720652221319808485168441338113292557799572142087448914708038728040307564317770737949247396196590970728037831770034077009787370733485171629860696015741360347511350955573840293758081010569566695335484669490266168939135564790836069355284704099451999435855766099645004014035262508447084385931833156843608172961221162406814146666498297847094854005946654707547002973282263922010950149969007161276061137118331094585549024179881622731161352790902242633306067385880916497736044400118190341473707472086206491502647773940092622869787989418000765933151094214761611321485262351647472183762457454820727017331661019487231059721225582198846910089699022054034452858839999547848208038587728156978120353028417539859469816124115920634740787129991092956336261066393650317422295955104102334391727371763985258245369946990280066195450053945346899578249254581076203925319418077591499908874659016526150386630629332397585101857508962135054715030366293375923707566841836954101542153900266044941898407209982071866505500661201664733193397673044433864199523602225116757410877272120480264025239771380252243894941719102000379222890864750433403016539142123632400385979493371633529568184893297843188451215180900923935177846565432410842020666768566625661543449008098609530308380259247371892341946545892495216261692358723980270235254747815012480889314440451600171107085199833591520752785387204390552014235287032852713490928985766717012764463045610071049216479985080206481111072616030972574346481543710196776372884006133588923807301373572354503829322716461081596909399313915885242564558128087498535457964105085570210172387441468050040628124891169984667332241555451730835470381754800125757915824463392570581637528724635905938952282691838404065044090890895870302248057495290080288905382535007949584248883970706815350101634525058597029417289397140078291948834910240341175183783631119784035320433046467428408429993729738453717181388914942766614998833615351026992238128882776760174400069480371799222560510741356197458351521851162586648800172676519700044485085323208825748866030344818039909167388447019447725970999840643141681532079097904462177842223531667406125054147303376816932925250186791451226889740758264193495302514901813966561149733215219198813996712299209081769518880342343465385405338181728426940639755536188452842462535510801590788162812845283144720750164306349465611740857046293851160467530137579662932522827171715235102566502061436714999277390246680504604690266384114766049797298456716173518646106346248367005559841984251447867024300830235500577729039254428447783750468025379577895313894566298245435584273057432050998141213112115772114504246722969829227327375714334919289627713996101704059013868497256605753892879651110400309422751593043007083408311461672885016928054402207231042504339516850483193459679126665619202657150491556234879980506744965638217805929598988038129061627159611539652276223196203990980334744435068265342485091221635992558404510213645033313442015386037565745722983153032066594476027754080437652944247517840001788786750714910250626126995277505665259005111614196561930137405456997940918261206526176730401120003254716277498979906913680174809572344019204688142999077285543755869307362445249269585557508588552617428760119578325930906938700174786151221505846952511710647255615057227818880315314161426412316483601059242498477746102772076933163419200927451798826233289876969416647367763721771745613268968037889852106298595837825707157032790152223257776253140725023279090109766987872451591731397181140830291662268067743545542069209635086380049543501683699149389876145078985112117345088199449328936120371723887969744004351018539394011718310758922848605135147425502814988872416975425611518706431816810453856850939628772037306475559090216110116921759100788814408958391968014403411578518065995272789761925366425454352034105762740617113268744391663873347743949332034452817191597105479855006844453899108316915926714345992429547192306960839934860064160812080990392162599556508824352839047511969943274864949958647842182164735341199380953064383999062174068297692217974179097830848868703620726382621827253989615108103773526899556045546835556808899830513123810875384626863753884865714564973080529017349938983660084297048051865112623987004693869471257595550697637374658816038912282523459961798439716992568871657351865559449312226292858912205783655634504766465564808362254338957965879356938353322552737264986232325820704607219973471529064935555111151166920021859190427505539213628449854981110596692150158487852038729211772567315957708632574149287742427034983848432478539227568954050771717787465506240007403987745236980978245859207903104363755415035479914427926528563874215549999756961553707795557450372782705363938488830566888694988762516284128800290190363781687551849258287854446794956356191573976896703339492997583489212159416149936315275176845372105051299665457212129255975765556812516067714764779762708954065384886811898140671974390515298433707360819603780643825491589145411845749418899740384880370223826330667998237044086909910138065831618625473760674608447067378973439197245140196684442002035632229033415396257864434062401077858094440409433863934568005319519656687123949033254217548997713352975402184911581891732914667124150526804244448453962159396687702155021527745468725270627812379645196059360892256561508451219268618615013853143090553677678787819750985184941090432774097622194212975545122715795357554680075594841591367600321589234925071407398733082237522705023905856111492696165887087476032463305153153378153800521057819071353092636766426505755971858552631906431214709830066550017646884293013956842761477513007100335529641247826863893258745477664308955091457397234219729231455212363271019676934224925439121204074757030211075085338528835705498123269829504803337743711877683301892018834077688837366583676001767104806306031538930546571739751521478218373801194746129876353279464751489447286899370218406910746657278804164148360616312606117678692079747733840200646786116860887083153685402789021375883696214991989840277511286038345767208660201269906628103942545111627745260975117471744850573429379249425953915417001882186452614624486274504438529736994073287386506860599826586992899975205414028460868426617469991049635273134205924073535503669646182906733881612681879274675159121642382219896881208331795179448259946515233633398763682924650505984184745999061880225593207789285124439201082463886235342174398309166622214322164122716077853926448468511328378654359007315355291248420472207646133763891309529291127355937942227209213232670456844145868740992599463085686016843991329238125717882489815355141630433703607777446517138830791881580437788061203936420285376273281697755186253539314239721546377907209458137344918781245165777236910988811755365374392530248134750010500589040677837568526428880243380889682440393915650341309161272177054240609779997007605134620097242535527534656781656009416730519503467981924488950863935383472944916856902517775756081517898528293878221645152863479906499702388218364087061380278354018010913801115336880235447345844841450780637907752231304753003165006619583540720348035144992043065041875338579075916548159640459567765225503651182219684136544614493677660467136663584735857046873896745479920507447863446853410900146969795799762778838361623556780079279099462766545534614465656278609595406755866715097335501059838905539426823396489120763149356376826506566396163672266694296532511084815387409783981797592809961198232053888572562267111013295092234022444144984030594395425461080196006972664569155765654252281912243606899702608093702017745809645145206255364487585700673627566063139744088867822594824422137045642830050657281795167139644868366278333297285293808337341468655928133097324589547708187756807343254159520495037128542934399798312451115919846402017333587867399547529616507895440729565262140357700397212749045082425964682344493883627307111003129532982669518298325617427611395242245370490134842202521386844333787033374154867528273250821723866741484533052081873535431613802603847222835375013189252292027429538403713652824792993541474386018246018296692189696024823989361366040393337805363469880083964885539689889178153491829332782877631941884880720440677586678754981232677175781561730639836438824857084624514391751051946394586806623013815272019024484915338299591269393374394991557432967869920375692311300477185549127249018847864932562251065374213943337880058101916877941864557784623626572148601948630413503855554280019336243503920526570862331600207642277819316616568576089283773067151239403384999534775485512718835514633166563487186857293891007104153237866229666077029077120315792184650317113772330477191059908197643194239596052005353137177539893766243521884701337821516039985143412622009828420459052825508537444110041558949904562817869274874218503052856499816229735815365955529415729246226562867942307369711664842156889741253268168172147856928794160871155846219009830267865865078981635719947593969214451801925241274296668625561999947780913050158328152556133978603580162332025656201005038642873455997655158182657882420161342805639610805004532461674295354292813277998731324231560032955293251739730103156977369952168797987315102242979025968595081792026974595039871790722249080806079568979634420294671526138764502322286023706904544694963511781024945818790092462233647806964887231423883480283885147940502257316056159302522616444271638465103236652053100651835071936822724755849053468883681013223586747832217412101033230921252788957683871706438703549434910929156691155443351019059063448834454265505021752174890518394678570234985280688645394530293877556188284991462187733317280627466878831168142417709924387735517469489410802575599097001822865028437578487178603146848197060059803694054351125311582289226432371917198176695053585116495190113688893408847320385895473127159101688321088804217802363518146112214173749880814637087083700496224125286756443227560406326627993310428189458500880905393583536168253253668425865687593969779860967010854818868441624483960769770611497654167014081501087813099015054575501178263522166389551924233751494362781195219628054092450824704701340744528615667774033334239410692812680738141489143830402397345437316684015121998738887135138412577918285041488602988097824970159722094495574641381490990419545193413265426854685386103957660164206602956171148727217807954542123774951192688728677019337188063216234811673085046622225817420727705098046980383467077151691367917509894531056915784406780011719524271441496354777171479416981476453610227757385031095211109627039257506299781712609732437545750887677912719324746583012328671581681044988921823637389679830136064742520912201296589767827532139998584133927368808189899561606975860038345235839302092006815999764007625695991212801099805163839507049253115314532754964820333464484097178571519119347427439469545639797855470790638929748727193506353360473117107988548187335641398536994554252048696761067961639051326102146214198324827184695214377501693969642747761450626403108206850303298738563091517249209356349978163219060721850065945034323843465049820068937121920879455088361013336062728880810217241127026205416592403698377795519645430843827861567483420816085814799162403979041113796926950711082813172420379457289532530130399230188196607717914256295251406649278728092967894098292784354897072265412063896262201061149172813344423844045118693433919308760090105042003929041429404609070828093672477849381008146159605823008380524051849580414076427066134551548451974602624493684204718972314418047262788649376124809953345131522487014683692521649342442463490987804790727561206299759670727657862048497365432801976312940504557953673814186495638590589266412745816497208003089587734208955037150505299890723972532676291037050934889373100137256219790789459474666275586935958298370730080385749238662852484519974164348520329683328595404475628059796527476942716481433569699631591067830899605931690105229342099715271838859804504926875820763930638312526419449654241763686587780445695317761614632928922417506956977244902174886250216183836847422147915602420417363814375795931821323731146173027578812544400827717675815255015509328139956812054014862566182877568126107715277946101031968398538023415350393157231662551482849387401477389488763207477758060255491632963939702032413415290364448013842949952559105929033842407578328532069457432455697701110523347810619620018222876586789340753416379605412532814858811834725960132231030765192230365316306614997729914797034784212972652521461046228497374610307506768465662430704514446153057899152435396886505051276345428098108540975904321677847022686008532950106353120851143071830251901979091405584190004930820157043535005759993522761600995534655038960384142571456821973824865701938473088491491310343600153261403908181599660070641164042234414463144987250147998020354079464890873809126267020107274564235639262305151984622330201659718896763065004118613668053546046161849741681558128551205417226282386802841535090712445735504333518040668393517819956377674867766726928735107943836678935161955899275952150405980407368563405782649117689051343076251861724622529461977530750626271203069577613977153479361735581399962663658974960100794293192831780344253391461321822900698745982384947635348215577352393878596845077406015145962906710103715178504102836765691379507440929283200944334859995062003976654703296488203971910264122046661618833504561365941802229494788541230245793083813372750747384961017798959845429414777726685578537286374165493069781502734318240031268251726104463498806187361454726027748232110815643941099958676817688349199184510370527795438089382746179446657952306103552388709474187973775833188084750158897593631035099275398830147246518065069518016501632295976691518486424553807757454091327623623936395674734561400558990529547616805455396420582162980742347136893099641339331486895146742573636764846054501422104988165957333547872730454692206182072104464427191790528416750042953978418525518017618746322546495792092982481341370600073107000276594999069397267401553580167254600943412792895711057266602173948427281342679903681513622170735457840455371738486279699079044257817562178028483802314278797533339884250995002393706024096638468810135157275722592281417506729194589137555254603188208418514616516683509655627998368868071961719486932959833568818978306687675808017582938433393556999568632317666677972328522635347419576853911903075659785726681190684149643793136026095878070046676566227994335394692654347946244250583352252189951586307565514459597747062543037104145841728643233114850220835045222195781756948693635170952357815263220818937496307023367666909425716544036439763317504503777934796660586140549978379902851550841902556819841050592337986994450215914697028897908155306223677876474431936370481672384465930127541295827685896861427494995439342186702808540986242828228667913156385124124682395454326891087461840704622448092865403031157310319120800847870820531497239279567091015306975952037181080077714840752184172173330247472253751941511092008850713965737699737332677531517792408737820161662478907838622803150062475680442880873591948194944622792976419284145154000320256569118049371288396713021889734395256613071912963969055217218696330702410671656180828346364107126910629615296910535064981220370648595683988069777123825042249991427757107949527496427593984108993935348868414282924837527209698363774958391287750829868117543115393207996839132740535918675134776828995920536460517657353004997025006385373347658183634687218660081136753696693352028954739139638120013922717125336358459505459199909456166190832411311778124095046054639427240180907376051199202660984514714393648891790935789195765272860321289745901291562468774746568391436517121009856605006122224057206086423776160315755861462058101398421434372099181314527868310062575530531237567613816419497271758783941773307681369206332462061758517437781186311835476772459537045645840459251405717552209803421544374834303867606839674034878012710305084235702623873243991105560479599742322792661368198132947223016829279921813903020285634992888864083731999155523632747839793086611017599699766272696569303852042637592186445115917113440795889276502554956841372210908629729968218308139237184864659069878011551290568841220875571354118248167193965674752383802664943209458305564748673683152640780658596126867940573943806927816588025794286087350498594615885560696097103799157463564865857221397707701903681210805926952828284694719577777974552444949091443968977692743607121281450948265929483947677403442133878111787848476"
(sumStr "6305443897060938735484380631182984167345927125712464156063147249317187461129451558961746402141238197256284600437959718734426851523559334060338341368042023068461901134715157103733772993806458899799381167594016096733225141373860754237393442582460769218183376021113560123633095381483873101121066761139719106545693490861644224265378830601564508207683311297897403206231203874870167660602309415719357853575512002090700987135194055423466698775675455813902814523204141945769364574547327661268934886819633715985530524587476885927670648060074849669173009665620619167134058452800879903134122341428394154048007414836962902468686536891446895192531512583136032085585908750964279175325302678683354190269442811791010885997625557814253359913085433615251029123876512403859499569098198453248571623817213769957711839358732970894815440788685156633729786281772936944755900296413543015510616299462436743875416822035418448858401790071993700593330951428829421525459155093754210835889249909097366914071355941934101736629947236183045654995543873435918192908721494208091473789351806366545918179990824851964034688015492728978546512143948833181926073660236282115485554784872283843112282104245220520985227555096305069011583490604299540586492429661218217229881351083195255512123572304669348294698429571924837322461436943622268162986775049926024495003937646254202997022327034284014659922572380615002587105450083038504840779770461712239008618749274919373897639271228962753523688761157421846688278046202515869524158173307134321859519770719701033214014148388089571283912405804289120812579670104905852254607738266347052543851938588645601688410968904657654341637155689573724059490856499640629993930956954110846148603051702724573526592866169277007853140457952937026219328199369909470377668651335590735529615586469426171644894957449006883165339566197131278392758970848934237294076000763382092477048387371536293036011447098948186010254681263579988409360289279329992921261048659040265659367787784071329907603839216076438891917661595037949913113626410862789573589017186774719843840371777171384345756915955376458941831911523358483974711499031546496063087584149964635969347482309749536976628124286641538513327624497469315356915696112628598110673246190478571206574222179193925635531092793451109571838065721035213243965111146035177705440742476594223915413974684727621335781184306379536236780872631953717320372683265768481921150036339026919622525846577282011565632732127736848092081508344491239987871381477679625018320092059776469441126592844017790224042658945091838296697376998595088246087283086623746280863801036173038870340717353465658663568925673679777651379688448838547886398673654270778230436407865539943894310312048223133960608575291150936224268665857959609268376100343940000791845536924324262478463358502568643770785996704260329568826670945703033090549329566766294513488686215391316057637253095771221144447293462318103553286390130703800659063981233731880084355205706330655049900058245863255253062854009886928287612881239392406658190962796890574197485877371743909659748240682139246704197317295876050416810440457873177193315424238315724216451103218120342149496179256361211220462534889859800578078910140761428927966498122094648486421389671104038486291988649276561698160001711646216306648622380293154183520296970635461249537844455240010778106426219216730843946134230520359217006332104340114477647857044819039058310272244315199790383852910786785310613401196968499177926611306979186641808590406792587859064466052985804298920705881018653619051009808300410151916911271634452581320418051824015254464130967790716921003761856901541895045981978234482264278398694984808678662182268029231858124935882874132435538535179751012940809231173250388852420367611858133245696439956830929642999397258110066235296035920510982916606492396173310751460997237782763315177527795165168289689154417542320004867955528505251520122254990407130096206162424463100106779149077714265577080323041731643297435018271157069862303520436010325229474762651053302257089699880352500912036775392378897010907348267538788316179083962416986283892303048804302274132766215084774231843896039935266902268090939315326578854388372414315664893360370622380051171899314469459588502169724702361746999816154590803823372011844424066726676962597170612703577733479978192429067185874578551680704634205484684065092144515844243073162868025642786692948107988277574657114781024610668872917168538859400933749175267445911289324676010663460272841830359797705158350529408257083486514257287764668130980689731950892777591649495304881192008053934777153057690935711971760361597733336111372807792755275419809269033172394555020899902977039742656039477219770384470714945953526330451079571200630128019014221078577273081864232843469156154919399865652375547047432110407693746490364755279608019771286348847735729056359885018284691980142227978434502867747614076857770309572226308133108807999224423888763872739274592788075555972515390805038987582933445594955406511198258635267367820384530353627470856882904024342493064897960287094617273300432918679181133618939824702949843608458137096112244427200946496955469624656519713362940099926572702976835546319928105867721590309385647892361209995536465581606412257832012295426568646148908912439699397168902768603543904300954982073724979527538308599569051693284041598346093306544363160549481027082037961855558820382188517981607030706411423730852708376321091991843039287904226287301958609061347025899591678146649248997025037662895018024281157745466540982215484245158125549499270743393305884572910245545303456143149699766271777402399076816076787970742786535504934713359631461784942418729301422413891685666192539346677757380524278666061053329692616144061825843598434385556791992522939892852415392896785153596420844165384030813619233895201828284621430176886326057052881071152891962839037034502590562847708160290400878903023715714848803321145030843403150387673644076013410733725381350810188280721326095450899585048902328843363597680347403044699931197122975941292436298292460675874442386562938952411873866758294884871539532937258033114334162130400270269646916849544113613528605104211338316044527462641872075713793593574015022766265652738824197548650108692068648783878816363392932397769775755879810445162527803960953182836258509091102976389224825238084756221672063592688047821734006308172199005413337150432097243416083943758478880535951099384681826583358534785870808390096068534463018876848601991908029357957000464965510853010735396957184991912798343209799286358860784556888012505713750352679798558167529220900742247399525327434028939695800966343949008181284464025323861709240907955217435107365800099260778877326990652860594629880961152184309454418572409467453800252588369987101276837708972505478792237844387551967127057683361299459083656725791611625615199073456974690124866186898890044812168406270657522821978088880495013266659929292107042938437296476902017265912236883511029848065782976164727804703643020272953195559726213988183309674191328910009388701108327507992672714602922888950323118813946207695423090637583391164454896878308008263326883260896951040496201624642076318661985622443389726623995115918910257747636082913074271947392869751028371245828448645291621971981259678354360181786059669193346201094417529446682245889918143912570315076961964295769876515805455536710886679327090061833650662019267761886616639610432651404871093034781378972170452655389878581321921604528782119237402403738330624612059707299611712541074732766275484895190552893896903650846151527223872085781969219144887018720302875409554085061942171077943630008858015341000317641329449741098440918805410858633496507681627791914850863185571421829394809482433220172760790343919262315734355796668865001498892561683798702834312177238761143947294627778525173270717410739417472361616939574986963956507620454186576403645745627395725836316372928740502938287078802764346911991577260276101761622165458741434015302063451069195716703673174419567739979185094273842007754231523604602071434624686656899221471363710562584915196791931042834123365549733234254909011918487386847337335797821557542777135725608083030987615887096750146986060412068615566624396031735109853479140051103196361862978626503786642085244729581496131513400663514138248872880200418357431612366735919456150177298591691847770963219388354853185264567193310606592794316343988676465134454951565839444567096024672939833568147060481122224998420408158491201723304805755354892952275645808092664183250652783784114802916201220942947090584820581771485491491523151631003860551207854763475467897239656692406917569886965261233508000356959892999082402823348070995627215466874763286276941748171504784519046949029497237625754576568607138878176788393979092515268970718831296912698383332394717444310461443377638512688580312987211887307154209269980090778261867602091624045922828983468458603086886520837837137190125553212421680317090449120601960332076347854533974844420163919636738867062153907292642738334013167188645445031857270079886426517157151243290003025033034824625928587022185974718743526191038078164177983578905058748625439334489752673616944359795295539185492523196483071529620273754407584651630554598742606038746633667531786556432842870737364668031652012022175801770476540812083234653884920696856304759437450272345430493031467974866963592000616462326527595780337605524029153969572598859395824235490171560825652812677810545286101772030774869030568824637666868915623641405756677975974222344956212747781657356185565308457728248932809833797808558480357138015604199075124662042455040414120554724761936354297186365974986101685665510588593041538480785338089730711864649936239088610517353919708737858498710368843872863985456853758275931963161360890396152289801550016434579437637999519725021402177379362696905584772700269558806459827104781556940923613219160939899598240967678576505959678009735735562569162891171973620471004324388751153163557143187443816744850414159211542733965692884307676103896256549781854713865131821865705684830067808264970177307277766185606647030756712337484301631738679718816787568139499004723071361906133863869926122544557535138901147263530664560413742992961821539251426248645429773480084110271352651023977063239681526231497648627307069104232974929101856282120667695120352354334914625748260406333004469217428938106663550549230470146832247069092178291404968668940808917138642980826743706008378418413344480576752041606999897505665843653483770713904511115560109535644316477140174152469909396559096939520428347187896650244182394271171274075059848169465432477359451248592080155010493677967175100724482173272307284891603209003416870851613268117099092069013828622397064264014890974648078201484832673385033268876970736766634652100182503308001472057536941886665311306407028197752955163881979843527031968877989385599819068959228320741722576215307533208051296910738689546953494341052667986049004458496599026754383887913951241493485432735550453859324956237415447081287011912459067375884369017600802358777815887835636290732665488121685821976448237847513866910650339134188981448059807545216872114140121677653286553227739722642792527594715106129439010672175653933758176874198567772116111719010107131680781640957759643082420472725470454222266781553115414971591148395549257401812230456110253796813696568922633732286943329693730698584539711573098193081299139062682270490081174901624168417034474413174885441219281953309353893083525402294301337628356922235429130985737018398229097278641330092439762707460774579694001387527166765873973351106331473546065819002649926725784419783837505680880013388691273871019155025252336140923513198616655155002484156515111750973707851600301518970028268389624406155317251042752012588243626685377327510878497382155374491623662104162659835355932107224171343751447031884952831192144668405337848332815784114150595170969772356540461685899425789216877457095094049547576425260758293792849487137041607470165420311597574088210813860423422860941189082621256343738244080464246919039475459045941452223066687473375294938341381368292301020784822996054686982849909445781715376168026544946755230715865950342309735218917333357161465621875073231090471653999533616571931760161870916285878943763348964546895656004668947440477127483093487001709500896207605899261156769874412202795112822509910906607750286190022573788204107676458613855583038813330013959414227792801253763002399339650872895564226872609152146063191194671475260874818243413751561067749140924765398920722974473320119463952997105351982441810797117313312753107852953281805314177560842976305092060122511447959255098021431683458956433545320828968868262644068603709996738209970695264956572443162894880338698527957678334376897098448674284720041774968400036101611201473075426692109724083072417386375526096517089433679529905784804940751334783714899321409322167451269399087707954920129226400195860145956104950010975967276115085608995261313734110030628872193305944788736795250500072172697975892109745081400801200746642573918642161207938837436954698704189153879651834278332216908443332104703432812722807378041939227098660835539653281364676752055964151864109532912308531347902056603392653798559354552236662630172945317179861690342894786173721355807054474395409683815781597311964618961996588951610219942879322873733927300605138293744472860829832709617369107955652237191063445788857284772639886299706875830301194342046631544350673251344276900789499444023806073118342900196073899107433262261603985049851608863296759793114007970850679485039946490982195803268845970439923941644301341747115097904064320363787534767155747353935061779911295615444895708772456451298115449776582360807146778758384929283272382902831964852921191227011678376976118650812290678536706594997166403182190443012036560680014726040276954199457021307420738185630958463364454955685573107697357065569086124282655680256632287925783462252330617934068208197613167413329557932630147264508073877373054528455737118876998350380871864319400583605543106223952040820874803193087150486072871782154966828011435998288875458809513065919556109649621959283154725457893116761698957906830242821259202889656837368681445358386498831476255509820012775406212550890776161335578948719255990412071849778387984513649805221338152842938926101572874514540619358514819927038803830141200115904191384379861645948314654372430317216380460677371117731915656095180654310868875831742244545662606710926282969117026171874530526712767699308471807111977880287084435455461630752982982367928250769263789070891703590186029573115680585043230997748204527887374431423044748852145296754844049182429800120612408900674596641442135481070239784100154352557717919242782862156044598431821822209782725770093757300149680305420757176209332552145730605081902242297707216041328247444564221910492785263626982778922126168240854381254838562337417117148755607998572364985812529872382057461090163162422620352792027218305730642509687434748394796396923915321853530926126857106003708176373312226819494140602043555266219504731400943859482860993752511631267869189512240357088128347290976779142918200416878546458552942401657875919356983862856382515385157171558176789329888540875682218203399486457368214136077318535382891030108201491658082491557988672348238773229871655350572260248165725750264375380983306516239776130468721316546711637714367251676212245434834563148974387831503995730063508624843057361739187866621894614449298931093853810263099351909141433891548454415837875437270813066256878562299267316548088675449751915289320130006048419851449583571973878158525626734395922615656101143257151082486545226809332401300330697675401157355625694746094788970298184215367759960108210522333885487535070413965331505154941110469995669223360212552038737417676271200450700493600589092856941612995029931627179903301287445944913296575192834138833662452481502605845313980657502347386961627704181193269159495133340655855757855217323247040715469922219799309231260153872309370474148997804373507770043570741734080280100709953095505521951370357482325348686222134255040071230782856892001095478881461652085990625117290080150153156495820712402663346676361730865440721758363088032559910096820368502562980319544352727814025253525003306081382543115186975711450160396070179794843501486594845188984877809069261768795527128724877125564629494163736189667655820654949385973138025305834653769464764359275760894626727216460148506491414748250227618182803921075854378480155658500090091953770057847333848860647950226856479326088158574604521181335774688439021568071921721804880943206558612161548486901353621107276604137600224157740131746381230092644096542795487994249634666028947781842560938636426830505243560551224344479842847380338856199063668093707496476084670744025127727838838545185576249431946708755651982794545693375487427542701514914572715766444659591302725492551745983668707621426664444293112701440887144589646130929641610386931267346987348718443469066533797509551735978302362475191512144011908129823658361025490808475613916614170302636389462127377817398203771879688258138146897868973083499560374140788758016325041611186499362644546509584625728151238436900361359373443611009934824046683322012470130894631913422585358521025066452684615627382097055329356641249934017732849484442462844322405644439853533857394083218292353046716355137467098414125118816703358600294016745784389306349030039422893063059929883403212764030340238716157173830788818177566321673581967497599291632694301548547003886859295649887705464462779905643640792399146176145467089866157951270232782296723592981789379477107943395553354819371479735288275610196236075310383511180573987356028492301580675916312427712873303504420023953001779242314675326615007259492863141368867470043009526873721601709679198808940391769824087813017375235645665878708687821047036515198470885715301732345612050212283964631615715601672419925076928327422117253944612289185769597382530435016974563113372641852983802668801178849931298542367427906533429268261620255578444609572184513606499407402757911813322292353127817737326236097943216232337677366690819370764545054889095316181627425762736169600418206597711025690463764674284026988481444209374008607536946647591863347595286587866072052587439823731498890109369869149556355491617599956160390751426244282702390696688019942319132643673461751115205018456709689906730699015124039813553107916021194949442191708666203937646821584712213039393885630062706977954686014912347354398841706058161702258967760050757590300844045503567200009984789277389270076857784016834127128847249042538900053775354298281754448828476724367376147683645636744987297647172071089553258351091721378528249682534200343981021560411382402697416639268060420257854274801128862795286729136776376025009042724715446388856671308520939306122290814802903694640661417962044526345066014965429906860068589328979832362571314646115430800578779694497629122896210154685488744155103108078238665379407012304531171649983178908742132081936633708820819119684001908295301950797598883084917538776876158236257035178600198464960417814217869497449562897321840042998403410050507056159334465490482932364947570583977786061359737149996268975572701692238986598256749823897361033376084909767103613394587794441850000472273852387555845631472276563699592614142221004282774613854571039601882338612474066930639021395917932940448958161961276630941542177534308739700758003338640043101308712814839841687415691736903482448655730658200885595097952701070975338255195990528523702397410812401493076469929408218727426593348028728717721604789780590138337445435662407099580389547067420867151205986528010328906460132965990122069575045553688094270219958604463569010842003009753154741180143617387028211917744990403905642101501319297339651536138729294793312793693181852286834197180955401026497452378171111237969156077025145106133814301758614759033958249727808660503150860769649527154690317925085500049159409982303911680244221931375191636811238516511338435340692116899216514642061185206427908913813071522678156466223524414484598788765054078210697935254923406649618988802090840797923216356302747318596886633377115266933591614890742319409540617952399246316497423638225324259803490980896581737501419422018625297052824169815547122447805690802124102900345426514615235433470521418281922469797743779093525410178609185793012514276363826758935568405775019461578028944996090926626360046874087007130125702167181250926630320017486927090367284053533008359859867379579106406072429731662060849366441955787681993495127655951644969759485025542253432013869201172966609787981938331941447425366461087340141992243206261239526672881934008809731248309294596541587198239110476479736226425216460914652305585760682628117025315022650894954884453671667655026604668397562882940920786846000333797029713695093114785652210965905549391445160677612503760884416808217139247839455648905302770696948203672067221688711705758214572115681659396105106081567195361892064809703018946494461321183718519492435083450899842337950193744518199277630044225546037359222706163300453703832081545855476940823611980166052096036569484735034122328374790286794380073983243124780178736627194434036680949881759102991561559971627129972005288751488102655379188780556694007514776396769905552377024337579093519925523163692798979170055263887983884425742442209727514642318848322284928737367076705450253697299624955929507000497094170472872366674936407390287391268296124878221081953865721429226850128996195050762947132070959989420536060914378558051219250148192488836446089828788845802678007673039870508307666942763930183068225810876963955932138638289407157637067408049862900115401416409479528215998397767919117409599717501071483930819697339552775158089898494067019691360705693190586904813405082395120772107286356640327001496256155272626831780810327391262215669962448409211869841393738684047934353849787061776337842392437896529434002019028476874691043780998013720194082636377550739260670035905337725254155692532130164104368923275937053429373312115381016780316174690677458924542285532620555902541497800352842193468621043364946668453235272300978907493248587342783292013643521568710265512731976980706237017444159366011447299818505336425781772784944353607141486235331658924579211292060741075276640434578560958718601180668275235014580414734080724061339718458090098665637925768597096351254974888259544127151375074943323652088581472368423399490360380205229964219809403238043327584872599543220601180010815493726138083046666744514240665979744720590900697654264216821739971888085773674004776196237319382975714739657787717804700847712694913182521255799896727493317901524974728900719921587813964397448418797827557660998585642240375349198437293555582139729680022869098905828108490670661295207861889900778823771609980022523009207769980709981602522773772237978943621412949359508192972008189707768047735362651051323769620429673403477794949312013230133888343467895811070247245640522768669262349704252340646425487331023114505442657779706402247893816805622381070166688356038644946381655686974648657276681996457628180894591190993949341688981888440569234571909865549154077746859764476246299798710450212428010982419738097464762206781561821241273986777959870371183318464193508564823948644593170606071053571105626694063428604652637476892016310783623552034549995934839206154631980189481683465918737533842969385857066902998644676810848387974591217061667316876847259009511973802943991750630404884762606454483796728581415571067877084203639266637017683124944622358530418316225456011410022637837255335135235871643719769756690286539707184056020381549884099565408735015011087263628111710828102611514216585993061460955392346970846515497608397429826561558972275682608523074640956874188415357366044381902694426739845695586152677793780495397294679696946658511976039699277702059621628393796325914583327194632593734832872258563557102338477664109259150819633852714829683658348789913117842662634808016106823525969940272064645804657013013995701144298330878805071576053959693281259788377173256718562413648646940995724719616293607199939436631644403676547904478023491239254776260010889002733081207242405725396173882377059973899659991015550815711884634366400462014590815940874161895071513436692956982746362939558497184401363735737410182513528103918684167037820430153423358787239078715733503365616243086123504825651781411722267782638512133141769203936444275172430481017436769056911120172552075578012895925271489073634858315668436671373202006044709710559093402008711029985752652330952950837925287484282850080382365892962516820260210904625198035826236474964940243639852366872595993864159869198467498584873375634836606114020152491711842173789441251510059152933116983158616775984032183717396209895623839945634514397596513695226336190532393053568215246435304155080276806663705607877237839397946846734628641627503492972969856305585275168132597537010007691439195007715223660681271822306414211095214573545018391817267401657942155274147263935594862724038339433629774603941356623490807727342450792696357850173891729284626687006407181695080781475089468070936747975748948571369920535088340872943438409073808590236022189647678870822422742046931686319720781325051366348046732818554201932203224402639195090785594287384821908192952095826938359827553779596325095196239471495766207836098364231658772662854240718059645944191739073426843337294586095495027909967452599298487707256219660404034192601102978453083207466493180277687870417927909459719978046272589744330234666767493123721463408990321358876711039995241379272345452308357178263015720272741305088360109973663231326964818961223258180745527204658269460178559987457498398251044009823477809000021306219065811815896952031649500352806043003867513372069262394068914935549194224737820705511266399966219453182902361048384374646108951205301373238518581835942672081698295918721531402517562122257133727295285697587818410821030412285347472297149594332236397263267200208337849023210352011442498995445051484548721927707012092337144230305682904051647822354812837197752517550093400053563388301263678390436556104788111164851879012263618310529994971788526015500654774890828185698217432159191729247956954976438936192139646881429275436206206444486301348036556810495506886018306119973142554805313121243717731381201488503802704507706029095968560843899028689862114771321589428896961817402435532337357786199394662085628199865719218997143730517193990476280161958770796813047955619510701660210704781069316806083536905545975195314533173202853902574036287300185423251269575266563011923013801972023185563189019417628029382403412919726078613105848688898024756568689936430658392007970448067483277260296351101960963775671455561341638469922847394491360568761703778969345781808770503772272159561201830244097948424950466647747110709171298046687452703003698595079742242177927657706311162171484792837630635101217414222838234562479044068421100873090400355281955545112413138443250427656787503235812206419959784320594429596523537058016448515491597583336121578867252088376640866345330738889452999724826032369201076426456352691965246418787720119062542870032498052276291937394546601517068341495020075800903452614722182970037539926403797933561231028270265097612065761505080706613710064074843315505765571163466620489255469906875973366739313243007056847778720360832245283291120826217979373751618923683876806200584150367339560775193572597558807944590313288514471643438884153502870507374642295213356545312977589634200831844397516216694955365434372260691254252183161943268722373415180534286364672133380925344473790857124912378271475608155834841556104653306848762222352533785912863600404177575311127162516111098579069187976529070246271328355330771224469199728912959907898088390946740194045353292441077120419754057786487363822261151000296106020221299819837471455546252174556316335127089929692462606465568062754146508750707831107574132061030113094473449257299167855787680658625494969813712279598582672891565852298818575821705644854559703759839171281923619509208882634668384099408889360559402977219104093020297194062867333596835296253140725801864360211982802454856871765537931549741459303691636031649756848164284905947977439853949807229230364984081992812566962290351727164391774330785958018249474564929481421611617954525757576534204805161272115492324437315084736597035118749896742395109959262218018239187737283315458235322004066520363212225890820721783508941246331033341221962841414901759245636327109085059707437455726647302464226332534723061915165160624448623399430322704451145707923391473595612333571983317155210419202447654048028376625809928134811341291961875063292555152632457658627198179005031962904510285280972294431167713166210035155816838775518790724385203707140844315598521961325584887896003434108323443523167342264825005028173812351081963778534720262788825094189077435281056408430311377277105752863451337282178960344411513003382795578361419866046601506872884158134732406630788888321648989785326541052019423884853559684033501074900985679835564700242533322961505849594089826880917307413782153817284538195531484485990021057974218398886734983907250169018734913211182093075275673896402355550924496338315141894436531785420663953315575414619971850007469974035053027728091833914495354133412588698565641868078557327542142684214414333519772539403585155364721936015165079740603958553445775544647771525494364883872485224707627784331524543523589295177435853228730585076308101884606405947587407543600608878238468934211225147677749055021837899779473812232053002082693306432927186764529242489180825070988371468864118940077177466634941746815015023331287397221750526941449072051143448307768667181011164919756050215215084021648939427042824320816509731622493628986864207636878431776844377538899792318439306130980719067637433269788684902040211599325015115320148135637867313172586369663824256552081541618138523711141258719916039120312209136370382965543928360636361632930765237927978634003880139937347652180548745739133884757861156620663300578820712850609057950958243647683833999863045196250124453658219957099361739208210639464823954080038855664349709085580701009193716934079195570878896721060995110344873585958119866807474271150759023073500274111593657018673964684327036764823534901563204185153023941629727053064719118739126289492230077675746503466657049665825806005173419818010083403562038817031259185197718452965249060844017819523862533029740420935558711926201601141621602594149236287100330716719143158975673914371074080404015658329337820917286337648250474748288597175291851990660432771356752866697065834720033414344921850382886530968290980941191106133551235091598509844375605998690408871777373638720234675546857995291821991381482025094225697938381923702548826079376939629340206497232174821667609347370631448086450614760299690987838950988520044554428275708171637135421372770082966509287843129300402770393329897863631677128858945326607829913387311538789577911117952629910483837372861983325711842522111661604589922186643425621711213834745019004507561232043532522882252989606848864942110777642947905897398731774136524896867794165803664810917546158520346946715625534801096411651886480979471244257274013309058435401776567641678049835824768927336125118038528172966689020787787753178301576603591508665999055500238310456727969592834507068060753095756050821559331548059211426796978027086476118271053144224798472456136131356624743676366645884872027407653377795548894586959226660214957474031238943725638400257492723796995340766062334589043772129917754709649404160188276116154680952405623282895911210395168492957248129178915356507855774882747907294835278413342806560885426950928246398780519517193216957827086662250271780494597522448303992221102369250243315822321542607188635056556593688110274847512763392190874674323247565647432598026918978038240806976544535378103121823273249117681335472095326588735570150151552156526701530200795561217879294590353410363773381253355861450614936672198219996965697902502349174999789450881055096935886730069304581576065792283600336483891648632778097741335981165815071379120143370320296696206353351593643655162361816032354340646193171294833493849068241306397952536972535429210797349874492941605942569015114713805843841314145971189064014042910377487216907070494371106054070778057676024878006604794621722693560588786591428789042734298652861690218209757176498797909580667360305240182178711504045193499253159155097465624759250621017123176040447670071344656458533529119871953776167603394468445492453489241580552351902514806868166842565598431011638309109991028630205262557933880172560458436409226373565423190437419340417034326633656990613197998922344670001036921897573764772405670411319286042058680894633244042432203197585909156148057220568486494251343146992305913744725765390524251531972888986946598392420731483835606652504767806560012672942231717126801963600981506351284629265085244084683499958056700117523602044700745814839768293504908451677789014052894863746595009970660944328668686704866059536260552015975570861583469359088008736846709852238469190496858516439930704181700993810057532141574420455176050433168669090867132559936705168592382585317936741477928844739121429679324542912573659190079598993347889408004703501251018250081934803870473890342884249018758166309006108584580597346740060507426174673832177078904957793309954609157213439450034563699635340176991125616482646510537317353246248276069805032310550986003315596610950403925724333945041471869734865038753147927785026313201384006415833321791826768542070375374148124993882965401492333694816976404565289701609479942972894441552948588090376660455539108335219355048540267226658643820790485910009404987417845035728904117295227503525744666552571458015327777735815907262971782734775072240538012866644220282759024376385275987203356483131935476023503181308575722704111704254976987375462079142508461028551389699941102385634330512664101220737088771861935356666974094205762006086022931898375351455531559374983926048368236863374296667899603644570079258846687148586308354685854429246503759442621334128407421290090151873689955039666199958564500320850127923092188200497206198505252401396937487184667431680574476686057803607849355424930775184998661203678369651797435656452725153774998938646108007290565816541446835511305444644891860893745919083826421418735668066331700258558413001513754681149386450398001184959223051230420396417354050600690573381083951905733094199787676908504526540270644109807556279506680314425259995846589152005068539766397459273514802499096025398756208471973657969915733739944861840961873910711395154119559990003096307330177143673598753719679454621114993086255597976515595170909586840913014524405727949694054376542126392827351913605271518225934565696830999525312823144353778970367245025003816338292808746354207498565606771322252098658221163008438535874817755438284810819681798342443995919779821922881062507870912449536010291966735537947448028341549562439841878866613068569820575189227761658338014458029289620562472448129064679142301857410554918848060071082169192771361317527977105576516562602823218145303079355976107132764526349749749288828948269061447641757044690687940454952660507868281664803060718913374237240105708127747939678367821066894547638764685099439221088333432643625796214757460295322518849268669591723456175387008062242296467278631770184188880066466427899777377425477132832463005491966698335974198194324923425771232846409622838810010120471262830121758469292213088179382005513105264410250139122940699743024375230512432213917565435635004980623213910726322509396748854182093983150636232090151681737420693758908179479098273734286935086761815367843097835720754328120473052894100014808020770014029291626857655211694901957346760534866562622338954568325561176108288746619331809436093666350484944201328328377542005620625230786263136710119812199276709439680884369957095186082509707793477999616654269821097888699840741755501627215651307838266114361692728857490380258751158240951811064439431489812243262114094646943942109945280489589592042627527560540159774036400514031357257575042953896470477745747132161849012637498218633891479563711485268924066766860233951753436188383955176688416496654640056339446172522278280492802101673221661072943615355827475133372208928017594369088322001369689795119555320305581036206769602143124407061087418660122974455749149632054432860285411460558850661767546929985620310787881230759220937412101416522925779303737079067865141327111630142701579862326616929584231269313473256838194681908135310200304134047911869679350892051499096933749746688562584388898388444788561979259221745551473599502811627295194128563549780087982420154081316402005738536066895603014200277146039990160402625902490049281376050327099616822119486482130310977127195004485409121996081326290682398376914795887938255096021388332647392249418900962265919356166304482240348583095352663795486162509535318186773568839764219769300925396156793024322991126353959195868247474294869243091336048080997967059305089017329136011841820666624531749162409438528782531394971178814024278065765535233730767775577785974824576951258554647553806520367064366229966664585132486268443637978658868160189807850613500340971842934528162460301451589731877104207829132489796573342808347399361985445489539368494200948626804088398504231581181118912686870166972333362435218234916066478032624381520093555751861120380009114234820349212801972286767982677169123342838487579473380638219218154010474488922139482069672407786259734079275281115023241258836691386049089190725022726968232356687629549860137520073332141333147767037246797917165759434055535053392850777136852714025780076859874517303769233786810017345755873371367206171605406367372782482273144987676749063862527637806792958417170566287082666918894852402052400784976794981097497837748262437736747374625484386560952054911912274865131151873686703032705346884946785306752592235509158084421775071402886840387399935741027449012017931216842512786991947306951281823440917989210590630212692310124688000586739970208911988955799629894498096287105752724611535029242567584586718319442367113041786761006405813537940307227412532153998617937962762532234573136156593386244982365802673094834721276396516144302797095494969674591143502236182832693934418663711169891458170561398758660639292615482845468301147890769704696898156663022281126675440330943839889667323426050037370336497223952363036939548766280001018034778516122893254392158758005972548462658471351387853506304401514224416800420753958206693515597149589180328104238428921395372374105368221883608558817370868522876375541848902005005403253167526927288872909591224421747381541438096014133455405224225943726733213247590712414324039720431402438021156139229433772822643972344129444674498366573214385344742259958360883169145164828651819774273088029960173848602386725191807112375489636843634687741248963498972587116443082830469219789771567891512796045092379634760289733170968663107222389712830238592004982300792062176183174547510466785837951186164102300428733114490491596929791830746267229247423979384128103760911785167534287127009071075367834233383007179651801836315598294244286491350531802796452980142782650713441381629720874057516307049234968392443536970434966071873685979990665106158686023498151551244202839548795777382734905229024363237287029638993726156919098194888311048575081239924275614202180420557694445020036309842910868232243471154520835235636460212671162219634444849040938001885378645034574041318060180162200353791966621448157226922353132848533914422860846245053976591720680495324222020426590126158496292427793522766638811429571969723975153423387141949244327050836568903213964867470810138517784393491907484324960117030436122280850171150111909186717322508239912801955895961752610173541404021287618235759297313755259730032780683505153663416038075370373780876101529422716732491721350496401674680389804175973757439837927798779051741600895462630010279700483532561095339353068759918673139814921074573097192848586103702093983953807332359802292522740050730207089731736199934370696841103498884739944365352054579838293131896709888154072224005239931976977168557407399932777339827880496345327461954237515133780389830628713445212891738722592824585253193232268390626589285070897550197885567003474729392424472229856509055550634989010692005325135919172144816015780238585857669505215831464093279345887777661032268280297366318369947538436598306012312531539711944114426358577380703418782169355943102833001585239298210440631933176580671461924869719170235826188293111427203430678794095556154961343529574357766702264234000532516769830865146314289117634488742141851291546206482000275490869276381368092664090376302521933998766993727032580836351956346746716366359096967160202689546294113721584236194145910188699294585084870949715990407453375277485058792543811647837833594814667591004841031752300052119169959737962359927940345609747954623251091360263982998906171390965227842978291040117611309470557223308415218918365067593663686200745294031338582795249433371397783482949486030643952398008070175206465427699655195536195565411785693721898166335923662275364859579526420570603318939673035445314155566735680397285724085230472568616285196351069648516747020607400666902465416482032070334302837987035622009315922734030652727259755118244972005785478435497097273442294735511418183498629135657717833716981179054744086593567495272239576534297784249489169800545245790592396853506706010326309255597990963726888087488677371392243933342877324342674871543052440595236525272721570193136737957021557500829708597423305774216546511086203414092081646658248898807722908110079218271234272578627746002169116913650419076743994289311145659441275191361625600465814520483194122011701178733149173782936857036206341604992680412272114646946038277118261768233585842759262340375515142180130795996687380500054457629459908344536675721246169321357669728056383232915745598366388553444288521801667307279307665837297595359650353701605698898704598649527110202278177626244880420365716264550630072568971757362913908506199456256085181647074175849678810175290654592727775859824602400857598458960465434994003093391306074146284098046392378147039886502045745317330549121103881828247482133050590577534011035893449451111084932373894297288171956208079789395534060871003516332033904696978032778827389425960133664782769212501213333010492219530979776194332751276393462654911985130691870749119942349392808542161704381716821315832036336105512954544476266753286627798519112369526041819272917846793069790361430791699168690213029965732358784926567751756834619300505508458033182653904963430933244477516567962817295182798949258277343409473726257284331594481196857326525999204093303284657340958082316118047080128425521969767156658222877062996812575922972039478069494838648465063963848397532142511545901341074453370417906826219541640089566657243359916401448498321479136349674182202870155592189319017334314545864448087939865294110980102834748669655007143254363206996634962509056343413838773832135666635707739082042466225580156772653631194698422345501443193944010371645973749857338676691450065562108020160170302803140384605116797898693795371336233370981268030647256755728900073782668824248351702279796104579930432218601057596383208000662326152776489477643764061034779637726841344552089657203236247658536656065476684360440725238307441028550067776615340970676254790674391454681147450933277277247822244271652454441285148470180916269039139755983758025075736251795188191244529006694297997742135630241797056415827504206501678705994171624503397627563510725628471228334840417539987355121688230879396685435295895719211261198858915590042707258407146457865711976155034925866187100614387115738101008818022838288854378701791215050335458929048832251883622807574225001122381156743389936739914803759981361107692588255372950705571042246397461051703659174864076726619280533076967524314730493903983863653594256460258205290961180508180606763244059417909819148770975092557678730390462895890295420741073259666642692389432893114107938173901275180823188196363642287621600917597113966677009129355446608565920411059091427185561649635907511269337777696840049121749011564022498422091742039282657802044223582734082824182785651257780521954005364920341741025075235160464209002497445699636364585793309480555413568258832215100829403948523799467170182493488594560985083910490843806417854504669152220222132267898628661604966118936003508739459754589581726431062505974688405901222618261927788508915046979363107925206462515059852595278658383157366675739063841691306230505582878888614542389487444332988072285611223759798269211761102328568911125900643445677264832188481970148177284266493372960436665913314435122413096290595268127804028459316145650193915482282833099342613145846017485044655564257115368598038182868905767340055934985135889711950487744945149207337033545785246237819895234495522333368649158811177946606854096846726230718427650915827247015005997890844562902367774888396437547987545086462232195619426115450575812990369156036801644377198271188771539403256935274554912228340586300999750226427939236741334739242142451069506297255080826258106548447098984807795340694290996301293748138806935513932821123254156127710343214334254121010692236447467820511579496193413593593818261753110474766189142145902921814668775424340260611169962012387147318169069326974195068142680958112034062751120576171545969415602623522784210170255749032100654335669227251870193578204952575068010735518933817655902262727366475138596729247049011430558628754488961497007031321685945111166819254284212358442689608282510183253884067180819999486965415773257519133602192794087394060865934660850428994546127216279746458759149984204932349576773883563844875166133256330019214076866359783224918421926318148721049371839218866339739498642031238378809213960306584785478536724723323293909140480549233961857350067359747259508089806807526540259851169634542625041467761377735918956600505764856759343969086844615369056336331851771653848673910973486761267096694809616872257805944221163403146983398869317209174209958408976761550541054637937302331595126056677847767357686746999807378579651915904562859417787467466154278157713896451674764214234792855234543944590848006325287416914269952034071700422800765496928183263297320706604109816573083985810261400381753019495365015220916586250477066989908084234149383068902507249482675727750920781591683160630686153843021157866537930490703411307398946474986265536067917198987014082912138108028141008148536166120641939992895529581712459777907752115679586701105369258562028010772533830190471486380143394154163222860395437203438426072837983632975659138412605481678376890697116149299176930883609163385647094904701615578456241759935514882967806986114765862165044216055978837351934520755037640608193043301030064896742439853177845323223573729307895433199452354664880817025836757197607043790443443475981455711429191043511697836489187496359548980354401935150394225155377530168449084125151125798170000490929582325479685610906595553940273183212549092160631956935340662451509834129565048329199471827602765515870097437147117961054663733828416057976915260600318522120049537220701931301739673688937103284825241752806898555532701224941598073405941898199336015816391422918818851333717538341816644943892282692408875521589343275581261138169557139499619763454074649407934728247164047202750186339655587671284391068897992431661063791779195118031006365326726860053022929642307424288297714034564126250124535270644036663308911610664325779660199851849340521820240312043089674541672771511524040899479253691085908940284859001223145093485113019955709948123031348077408679214727067714976427127863566877139531424718480861888515693860800303426374270216467159928575434502444112538682188890986918054324860323770594417264475594561609143124928548269919890998753512364885241291338782883181162355351094225402430007614061901937453781544694948309131623601959680456521091925560893445524245638465858044715635539015101028588391247774470008473027787245699299382537733146751173623827168655735588064172366944352161251882679312673472302226992698339395732473647977999540878098748992359816581482702406495087545985435629259014212535603282483317745682179262623227739371908054572228838735813363027491152035091729118876350011873797668507038723300294463130561996371125522897671857276694675128970219207314653964201583966495270129853108793478666395835646118820772823141228765276849831961210933315197875681160526547789203835868234231455767987093092468638122726460420160500402923973730157064579625981391405081379343142382166680049398569648318330793017525416593804658661113773781766807955574366908177689160076623157246768376814113410157845816931267853760431716717235703689769027276407095105946470955753371332198356347108592900103213262189198810794925961563375413202293093026906276506324404368078881710562656833537113427040913796073852216313944991909203006464987024742039941554144842690014617132809034824502264299615897439396603315658996373263895057309815269343837454559640621326170544777905133012732289509872130661516956801995286099863890927588910536250476147787550533001122613182113034570663762235088339672213590842281634474205339924403824927632200968355129571892793758328986657099289975928571240423680284368678672979684464708683285637211404280011175702354592687945559119784443446109608467055140522094616882893384632130730782504599138967195943499355530491036399457976670899682895149230149777073368340793448004366887029041506537253519847396729461411962332344801237295830709359837239448349255801194759346509996034185651181886143328677920176929117644252046229362194282386353572023595287157804743978165681187022957514312622625838059873455585082262673723317932757605136501650077398243246472494300885652228105164648307135103366107082252701464347830703844872896559807884677365916617120648340582367539176931379062401420850128050155789194507847889468104367669202902646881835030436376622603297285173826505855791023920686868999228078332834635441833680320816161176511167585147426809215084088967524226619780191546634766061462396736197177083698388645127822362772819350191500394966801292613220230745685350420372782391129319008086180835996409242005283115904412631551825597937406032507887455056388195540926871846278941716018674705688336786912946814474850098611738956023375649858442628005393530909654904549390088035688690309444858160666034994451503999241146924429484708216207763802300303458818733605389298473900869145237474247828680177422098317794485619718422569212459525074136080476637625965529294748792692169562739095202392819879594512836488825335540406295355620203667989704384422396404107534994920879928201850912385974935489692421113530983597161321218504584788626816905540735742073278106786478192180666586440466742322156369211232378316560091015510109555812418084697250892286527281696173850813566134341724501396386520354189325507222124306820619209240352485851218669949643420951250021023615211025402885894287050249130247777908009585881663016842818223411559424202619638793206771885666945444478282774327883352571850759279274958658938069108997230018137321013795838020970519616118487791540087111461038889973961352133868684080541730896027101065616416272983834245382524176954380550300864266526877298215390340624508919950154648682621212052672487784701725103656014974004398448065603067956219663841889538207298948796076281678213325572503235222308623375601074721384500418541507854019432882254672821880502765737110003011043687997609397889149773639775434250702279410256538451298008941478615072314070267764072352694779659817734204318683073329799296642940211244121913321247899565192502239824180244209123465190573104653967197697367571965316820152730231036568493893946330264984785020733375580819032508951168567841863313587852860284931313094875639614214411548279801599804190675069758177674833354053620028345010047548418543777048038767736329739828604871897403863954003627425255847465340942401959548977230947268622247783746690541123055790611604626042951230682320873767596058105108821512879455844472091587834649831688236662675751577469865467645941413192748024812490316221038130951119006766373294175277177075581456193872135696302113462019329764355864955878415990027649249022913317961761720350325527545622578509314335403868363920177870407738514684649355093472110537389991874452621904372042477958730623144086944955359086638280524162465925924055598254052849065747569636851916607045490160998939920660527025528166276248428654055708299425933301629004977764542207279248561285003789537197404877843469328049375409288997254359460835199299358447968752417482492450876631606345137225579982008204382525358449193948667703214954147183420405873392641179410456291193402064519472100246651696220682553488015598496465467721311583423687319186257577866814178676720827789499959467628458933475534110096606062004096672822144808297715916357108175889374037377525525600748499541015539516940656085405605201387736162482994930773282434567735291951124301303348744763227295364156865282686695018164711912435954128167855645669721105384535982978764962860261660102118175330244214930605576673658835851996284712988878320849582519376966907981544491539801584222767727945738466785398843571733747717617981288158563657247834727968051963425469773000752739477349616515736812998300089621549234208231727717013710690144708902487550683676617055452877764351987067046721551576550835116272460572200857190113015681693304679133996684253677067157471943200858226490113915677755544985623364461264584465458088889055211651007425771244860374867460051575565183084602287409109632566084174486693564686112932452111846967252167146620676696377579405455484612865866950978789008307803205519079856191779067711977392909526370548837777481750810586875173200604001966824641915415812838789762331011944525036085317035579676579549825472669655113153539108966407909478631171123870158043174941715138408814202372933983996088585079405609097516689780971157011830726342289326555109844630865191438899370000857875097189685556786427260549481830697447657929599331167908642898129123191704873825754519333044724007487729147815866547281052481944213437379926528542067079519708836944450093074291276649906530156034574797425046969059274183573175581967747292900900891542178131968914463276701583714360296402378945848361825336708282284003200897196029510873804528406451634600770617050294012380239518278023850635886346201980634211974703098935103435750451571225027225086334690513427053732276230224645681940655347037169062861384353122058969706377115703070548029226485315236470984346835199080235223497566146366754734994985641224802954201413037647645654281260165105077841961171620892146187005720026452539224763686284665401586786711323709657388577502228390349844987542025277420482473229701151098417464770760480689033062231492628628966230741833015566739533084918630750434240834094976264363951234330508420540040794265615419679246675819436813366330852643961295195975238821223405865606231490196245807873993706494143306002533538402158773018427700706613843752023068039124044641535509628741668429957429005898243774110113230698229139508019601061317151315403219792463417761225804718471642075756742058412516173112626669415375216596164305675583959164298984699019139519531630944153855066759056445479436154423865980674145594041228322606183331991177513981932662554216072028480139382517396405732747817109973914196198508623118629334651891056040502524853803449872655581334237492513763425762748278115958754562607196415362721136693104574473046278385484140312179193581339878597176961029896555782936949771153894744154909046608332590521882862540884598914779020076394278296037357150264394207158710551656227503618135606846705455548642811321568348682346368010417866609897615970698299723785338892848898497021121200587558350786947072734326391029391818483462534776220132421263268667341618272519401411611522803696682645152668567483970190819643338052477453468505738865937455507278574918222070960280056770212508994539022823577459958776012906397741614810239039781398349897373664849521973444446757260583809224701731350041938315304056539963290943152111829413561280677713950510333241221803411855141869904190811841050887510733526434518898222292484839009209651927567719334360481673846003789567286164225575949631142707010521429251604941648288087900468111172521739691110450242694829267379245102320000317649777596871102742014721399298919447324927694214645976892572094516115742139949026488992416947853219840965404180853642943070789792427592550239869081132363261941524132754216961329782922648482229224899544299136734217501740113811401651281451626652169837286650372730725014344200323025611773703084565141124434145838360705752140143042149756968417790702088999345962508620637985129453621934932793817825612776968355524770499009904040378229680262059474380032044598507764225307506538132661448065629771966546911125978442914710843163743116199767994725962199970412964081191005708139409762158976479995343140836848441551060483573491428433374370887151994373291625882513311486204651010566761085538963816093302137716908004019603737729973620432728751568328258881321059974271153169979121499060999352351049347864037696484091343042469986021423145135801001228644346826214862335148603883484070630397166433314631939264907723664886281958358225222494665529288322275422961839298956022539942312123072282765190051632393669696803449619383028414550613402258543256160247582024901420413416426798169791339567506126134071176216274468439934482952676935464427795373144006553754224741063401630194384232978968487504146221229313233469418764362461756793130603331058005905191500677761738370437108576500262170948296216493084308345226687419770084069491526522630615029598929400334595598057887005695333062963564211958658363657623100956840962850098185532071497365289330604347713073554775280789112688800176779810508220056458381801437000764299558961843041126890941529643056281179574759402712993367392769786445228226178838710223058425729172712110451162433746810990765836051957989162420173412706938196878234256261366128098963204080271416473434736028764178420650575091115571980570367414829590512444246979286549731129515113628720491685994247931601637907469231026870770095793776777607152597359256425777826297348161396707297566994296710586949162112013513686767707369897437314986590394380450467200768389621304538517161730844383008879149528500337163754351119164295126160009029259200909192448785999739089014217877801903146457800829792444067446272349667548298524156031507868530581334491700219705041184590501068330428022920125661829553677186149285823131128817482245287007039253654367847933694120020145482264106466445693721593372148650268255939253301468489170331163357894037242865142272854980639612566619229857077857357967052293384900262591429656854633891688943805326091145921193190183943908408871236339657944156367977540148302764097598556434586473505657681944795652110091176205693286421959663393776079655313356698693398020580631167716310028974011258298970379494477453444913172753680163692690742639208999404534827517325023344177581474735694095330492915362513542480306195591897481722698157337595405560311285658661732851710144579066815795981225189561278806160313620578497125389231133920473383055087522849111574098360194307149705406573063240417064130451869611436339817985755475164676896579301959984398221282447878695305913588198939532014149806531423901020037525588665900777594672390912828152824928274224296566980928868296980371074297971176427903703777180297811488049957482446652342672092012975290991946503674776929607813279626332967672521561574441818478141940553168356672566193976319881301463414650411146331850385842952580813414300538771789631607443921006701461757331547212141695710425517551618930825396028981144262835841520596409684307933512029945698222047221923492869020787877756556505307989539362933780496116092737298496109005533066416107688305943538452743267686795093538645280521822205361043078051725733840628550541439350446098551791890731860242584259915266348300652816400825931620293229823092321177439047853192303498509499086225040072329169770542583753259596364040961180433012844029982151021379138156507307968027539004351501649948962618143001119157521620939124709709447756061999378852279961249884719260677943399349801878013970790618564529386253020204823457014241100402195564697819253870510542057373222199732424366610067893367127400017836774373925341969492892749994902170744418948368942072863657986904127874086269706240449620824448821056918415502530864704969985320355651808008177139484034280746436882358139948968575528348425139507023257336174931463406969028586882499551634256216543104297694053442331890204856115474839911053018849898478309254728054142755247583419504122930423522891384020370669597124448952226325664273515121942458355585525876481370443330113298570761842356996364719101642748470504285041398646318944173957721617150106538181402710127047461291134029633054532134752397248989638704692461530732847893998206525928679012574886312428444992897864438672058520283491624946296424622848292473777025744347019009179995566064421775466803284921519435027545559765985421148620660619419099963279839637122454293112008042809373761251939515373661082872706460060223706290291307776720607609187186236988091929269011687764783112041508569232311080163689429588113323925855109954272496429338151570269760727704341781686092286769508126065739855573421705821115071197847337024227915273772618802677035531535328766262064398584184358745627249579648414077980231596725669882697735820318713834503789057037203463097525339618893319751119731790945256021065158346869293523355320476123030959568858125158765712257219675465635406296481634681680014669174925170189540261144418108529928569285509926970236998213332590504229365456842368722914761839001600000327799652930549652184841989934825372062480261709849733326117983359998335215019031009284883572106331715129104781363098306709397108125676857800111373114029104204437201265602370506777770220564504854748885609769563023532726752033769398451314719680844667945842589043921976716201913148118791082343554998003531482569028332001092435062509187944554977589127562045848974692341513433887054936867984849811692375778754679457723863946077202395871601750984211293990309516300107612608985901448905241593998739469616229104487905828886134021825938716920654309977812869112768891909778367070014715997874489203082148441392793577044841447924323536137939949075598626577694210730917833972346711650031812503874878851571711671371759622631086087592531939666129587441886617548797053346282319878024962602910995486455911926854381556605509394478228292154518300797007226675451494493382185740530053099495674610661339349108623554765215751703817561880921197005666180954649799810127799080819892952426044172039376459139092329505980687056701804722792498439660717185214268867502897062658382302454174728891264540586549749965344400287074531184729291447740813037821098985880472535367685604883070104632396573940225719976635502496906477361373298963152268117063661931820406025140635656891420553111844329729418889151965741685205451127444468158271541656805515467243505685166028688112853846822838861725322088012931320734283876647867676227999234909450479403197076042051235880484708278292630920107587988011834330664391739785654704322725100713199487241900790317172791613756017085154566366652336785396848631099918612501592425465511865265501558596485707360800415116179588408308611783665880054207157505931713174994789334476007611135773772044780578249999619639894973709950362917641018216087224150037503873582456762690981577495995116026493368171832153726404275655328297261124439929489682999142067473530149458188581282224387920372822794546315188358586990795071168653587458867112610305231148247037513987550101301340170335860427670784070232897193066798244468778481750664781323435368400073282686513550296017491104046831933154675327888779751245901121950396447147477392094836535303713336962415951438129200229933674166421598977755051179567904922935541004268992344598844122204928527162964016492139893863254579897281516896515367721001053523877847712112224331690500357118055894470330116270763005264351948884779421676367656885573689610456570386895242274138396429415246955995585279945910899157559325434600013381169883132452448037658368093535177107937975432084651471488228766654764863134646633211305727543304828137185117198545765159868810784374240483230234377686275268369448712249794813095167734317723240409022295225665287897098590124278876749299833394525365608130962930347201157297718855771509710183217426707326952986325107508841904910593919031500164352457770112692928920338685790412766827812871601085813958578884432570618853582247885593109235039755686910746125357105008686427086539362757239048497183876345444305917213442500630956697538164711319728723252303031648589447978671285166015660976745776661727383857044521288170647945488926265062555320550807407890783697468613489195130389254228032229636900499244423825478747164643545641625766979298016012556747243658762300965179300684857557744947166458304024507414227485413701797608389244961400180359960341504129244168724758889367606121326811344869166702695844600917026273804866115033333084029309609466998483913644811631992048058397643479590840878721157748513653100310699700923391754792885412567844011906760474914518470344705405813286372179454433324598907244848988471744510461838275547738700612796409589403886437218374067670953582000918970282832598028444354889611755029938937230646448475796909944757968910351530853534075504549410488166353656897588767552769165322976822918850615619091116202137544073821751772867645477238577913787602623470314155351841012193324843301226210967704774591480263656840186662564993377693102172636249826895266216465130617089004606969393175388177357437473345933522599144243739547482156018114872199827619383515949238379900223017660744976686536444376505964979084418279518775393332669248287284249604008426457478085605606748974582516091605631963751864780945504207842496993679983497488456425046497435127349045773900447528655355955873223671749014965656296203595065845599215999973137222269982860742663768745971178967158025614385743214022556781297794875996884497143389417110545490303286628322036407374618071461105719633542651929994394264045784988800494928663214402060405112041719817638492695241953181544205125254932806787984729386709613658627363551033899118229566744988282848031421447871071312794268947324009535147050464488539481906569496331613772350748279245505356305454405461458308918453671207239274959708102315337009375310797718326602847329899611773945257112999115677846577778951875715629570695739986770696183707325052617000305601183158608551488994383922187183931308014387237939491015417487113858553734967710667695611903186730073968086888829415553054103557109159702253874811935249423949587710601057403128791632772130977626993670665151387118073147799534814247748871075225094959426133535449526063736683331007597722262996783697252258024458578460548674543469665680635964535996744197295027366116717521906816693210804469289109819978537718145948066632678315933445605055476614334926410780472023325989860106924100862003802578983306793743112836502620095436945058024362654330034454932050786909229088775354346281785335374065578082421436159943039546519654776195249645987316577922261406255485728725414331279666430518007810085542383940792204454705249950376831388222738867435714794859492449417708096409665060251294492208370582584180498003990013125986956393835940616255082296918152960833772821069169485927891855647325940165010412213741234609468411501671941896982693693472214626931478709570871632347373371254287306023216995511036173941777480547988646425394070645897631855401047830248214111377715151444883624139955428557498898379229022390481095556577464367560657324664122657871794727965696508244167667599688540897012068242094980043827603996054983713246792331220652721806738551442029429154677869741897111045475736293067801529794627267405270980210647733542654917136316197647321031689824834386816533919330390846886157235715703445131056315880092391666437401056274649278588784754885109664820240734969403868276684586763714112435660459710818568590296505448355791123918751990660841014256616704887435494703539606247573071847241638760658845554737779440544101884335520508730166646013566217914176898237637200832343541809674889684196900104145302960757417882529620879309077480038264845014348679320122425493217794401580197830415987103517953566836882595878165561755019466384292361487933739339662682552087099174410536997620998690319513692824107742672754691777002220913128719057586543454206627023552385139077307839305960160181873653075618099216090627922081285606815654494952691504738849616238231030791415824167540828034325210096467111680363613385598977874790573208678890714753136517825964004787047882988572518913079341555721223787009588184632583125666047775176277096352243390787381628501639374364817125799216918613667066162791326408348903244444989343373048825339549735279751819376560115915510780264776632778435490334551515579563617037364158909961337379855814685429920683768346665501316007692802002265653960048667714534162199499290053910850569403440154251398655946915953658136177692555403587864311316741092901824789002859384302108510080933989318915158731338222971626161735149630436364106364936184342427728188210937484841229963970383002442254961132041789100473300355484904903746973959422344388216162702830230857476750469754515910744852714395478721368704701558403303998423497744049646050187028377350967906791328475867670600923073848869533352284427766209325215389072268605583318343323331435784874985558197674240376000157687284575113649997580568802682084845106902383390779499136956098717969488133017728006363724847628019765598086026552550159065803847968140961410722536511027344561627795242495497451791751095476914487354012568666582784758853134493875521197411633333442352301219499559397432217939818880629443750134463664491732835409474187128172444814504540685185753169625906838725635147966455212440636367265327636918521327231173240115749094221200546557794269887577455375585102386333428608977638991583123221537102008800447006529689314270078578007446930624203380257393946647313396684293910941053147332694252160987310196743390084926159752040039741619471804603292982253745433092414389291573429304606659378770244925569949833025865613606434801565062378585940316524159727602638763108784179428225421654787387534036640041554945474191730566243592535964343932538427840261164235026730481785706579271704892358057322576689297796940109991871067936207395499052884107715109676391780385834920761489853944382496564565080564120906772950102435756229901607452113196054361501159771700208910564937758621454754993931936728765722562337233000330749390273243797284446939203728428189740924632834458741021608330740166707104024590665371817350516310280683795022286218794484346492830860184247410156772147213796319342597054929533001651709749952358268606198834123116891660567096076438103579190810924955232805147180739346247991501384965136010106217501202493716936717586941785474837185982996033398789356067194352830092645686563086598523947202157356207084318191559299244885666051010079456045717510495218723977410675799398532492920544252227631752735654629380564860758213380601317723719450425565020178871436571928634027048847638506267698784636036302049765824123843954126821228309839450586205886048073626177906360738827818685245850936714565941048281560133506922735597080441413764694999319795537211762033785203707730219608325998127381889745747772368904094326478030016634349706020238216754238010121260361093202387952170037318098533347001583752077860854796940793980335096451953674205034750872825596906709404792218708403761920516131567093898443731496088057171516829405262453500918532671886609806540369033505346590685469699189561165702180267636778404623934750064530986679079846385575177096570449694562770075442356468003108659499380932907576668240308775824317662686828789496960358402286815648156773917198273207422222583184837519234320688750153791750224617107387199883687223293734180065025978326908066603556975388250407077323850894343943780382288872124574969909444188262262033726204555026887939589390787418662200528288581351862102940490629478152570293405018156783368754096618648440579468634781540747628290013310385551418593407360751434923108836300088460309229812275630463830537182162453520975632622427699830050269323066327986605921029291062704230851410505733503899243355433788586805549446841899626396638582733841463742526329573967890257927196295627688504145200254848488615384331290062883287276646097065615718226171909104070167550481425041898490009944453249983592097437105459896720803053592608316061394151265569165335691499458070409527621396791201568440207536988644368354056450711478728009170558934851635117494828211779423976404185351025560297702417538290405536593800715294125552805943381137516433150734830475365761848432266762336320922625226926473186661447946851048978151379135314290519359040755081224782379009705713498673459091388864175622726803282599577059648833410102478960445294634907526882809118113111009232031918533020202690125533313381349397953123774042628019542485331171344825053033811573809648174027025581321358644146871841970868751680421317495693995072032872965317443792621602485344003240873968897922274179418524498561799724186628191991179762007704852552004623820672271944796283255512504823847838225429451641063393693608080540673699282366308841229222477029049971604450591336225596744601301253728988746514141046566780876650203870099661140885466718482653402773088216982539569044653360299690965268064717908024088755985077568675695846575196024157454586361920072601931011054078966254495098484339967417665383598615629250612327305141011220105816892913484617715690196721006376177300242224001118194747316458411535813330576640991974856712818353260826995887867379471364006856327478849695863383026647521702593591045549485951115038084404558513789453754421918649066486195958679030511852120023362325468660800883351456310378781045641332458731485482747339115086304148380429664723961435146585215920525153924057979748395102293142427052353146844737708119616426402513320370699383485719631052686672841880096214604071103890396118904592304528433397126890834445084739474445251803356592881259297477048928065011661411645844214267946043000766267403840309363585343796188235293303181835415149899412299102897298394445752965019854916424552033740828764945128317164854500402488906767971155461894000571118742474795065967734634897250851684440303559241758761386411211405461731291820609482891354968945048144205600595185927442364021261804340091045668069129249587953986453614616183912539346784058796982177894593945423249624807195670453836950577403471784319119810497216749201645790072728955621777835111266875480989415950018640523255377917171125607451403069409537085076108032007526953915723247661235133936089663580309363493361327953244596447952025389911305931636624450004320015296885148043474874896505667126158773607572442264704837233777151664164579735307255890387117499010120799726111380464469698541397483716785146923955016542373392905369725449915087643714540987699012179382671214998076435084181005858328357166961257106348723299500082939690064665532726820406171693905121765130067852808519391397093283399081780796585414342714561955124627841316902592168200964627438942416491829448057838106043382445544383174608038925900076494927362567768039344970980458298394600008253075569473874152308700493240842173109156757001775281752698910133791939226702657662463828452233155760534726419282301679085918846303801028739598159390431596738470361773042786013712777699460027211628813599749203060322634384595221548682228956689618350622824421306211141563086252191933213760239393449075922589411512132327305527839094995949378564554067388071562838580317142521125591431548202915290319184352676412979517930011681266572371431939871620487635831486854303883124512584043927111620765050247235140335944952055803704543630517668176915226822635812388443447470260626828216552997558911727459586498017704702398517246257273770729659477091248985894690488747592770813224001274740703666441482520800989312638390295438255779278525118974214984564077874632369858817352403400166794570026572958036242279899430981584208430759488850437888296212221663583986058115432900962826489275328214827737917748516164898277851767431287215465175521796651347424129791806750848792632973771613620547722252340757725566227030052264300855182877232323666769310348318556651027507131408855972312781846503780486110532185658534133161473887565131014203023394270786886247084022189469184710714622799567941316327951953818672877001885911375756000615080584595181211745766592855359208321557089711730238969495094750329261875425708283533388798482963155545552603011656415320815563325958490864100637220684848521748615850748904785870505040346468247838502341381696199946387083489827347275346104364885704330414305146277343174683120847257243522528357868965481174063408097734244238960700765573055608634244957063302355127467700476654634716870339825571936590966785786627371403666482469097341449237226721789809151784039529250272445433151609319879617095514648887662115722155606309567567559938799751878921425909361521040979302867801528056134513992833456894376286932418992419007551294358043473623006063251321155228871423165617859701390785953231722946239812887990344807898685871839561964356294786977383169715528244216532004215323296514206372088223066612892427268491373692939586645287373013296750204111908061199862896699544542521664681200408051221106609582157146027045913716694441509203764466381462830601212649542246138074432930119546087098923371487261106439366386921608387459111414824421096084021902248357937291769161716436576577933222280973426286332991076227675493500151377793446185829689404572439857614399664926798396509591421966463013687341616975722329065084399183652843844649941288814656927459631096656394646680125999881522710129780523013888404096650461811894206718182572353494836153563187949795360633402694211654169163823252947775636004825926016886513880585112169675821808380463430559346605938925602729323815964265646637492889899435595140622192384797548981894079993355208858390855251090296418296370027196733743422966532010556385605944519673912717718417215767849313196840610979763607117540255683610491812405067354478606060898316517492012809990137428535141289961065865584930805762327627568012888569600500900165261284389337087433673817906873065035689929033245347982965593872133107574203944795823530839869735934608548417326626389993841120563612455494195373005276629803295720187285504969926081235293713464759239795577263619146988613902472619554396739986688042130478088379739786464634327722303593573375737357005127626659835088321074359597721133623405405419459350000431354075643317312060836681916801559370650603550236641900413762807995318762759016411356501949890614696240644194063839649275448492256675050963938255412141894248956174996724133465287722904756565019661892475660429332106680752777573673099614560261784648310170726308212523340360872702359994499903703177132004639553177779855403262485563396962147778636605846591430022464538207963112644710989710319001177430999275143647111603710764208941819928921347555378748491934016701821258268820923311743077101640260563570153070904370316934991233708062858899133238699991695968577398788229844183742955032934130775244264915914908972305488501336459345111355165590206532634895177019549176106450459841997778348219646531996683610123081880929368339024889909801060101047632216735896568681303084109241741096319961139091749276564193660190548774879116694656800755922545530326332848579302033939737036064109653625280414821447593209756186245228384615183381038475548837824350472572069426360899475118604781884723918751996886765026647974606536341270665233728154662775598228694830255468328655716444854304061709827588103668121431963468407332452993286210217887760978623790965913888412712249064797969818536250629367748564112974301950797579338014648043208389594022305676829272752196921913271073274649441739798139041317536154392826569786113745582010586965247018574446779241239482859743813794460455430875719884127048445892668534407299864051186064920548642145251813997698836273093653050307524007416214357158426140769318094813305145967064155644308603303435580496493896435141983430739660403273734063220336717462047837579274860107345398598525199139618181204559806483288247446186470101267272740494925527499652748611314404376350623001315423046197386345078408898327245688950444261232503724366582458273036880142579813555795605198028557695963691315045100237585398887882205323013417864436629118393645371535333395468056756488012899755794153490777271983758154681589147393706003661391262743450171043857110924269806868080655508418499239430749478219687023971035167592847171874955581768550017677423272214561096346541744659613730131810504435581425326578917125445120244797246219570242874619829109493181291871243770375301895470146111979220163720255295683594108174464386558705483644943100449269395182749256690693158572619293571565774669278102170652155855517825376475174725772182829859813612382539809400192810557780727582295644214539140908799202081633952031109962168179381198953394623967302553088330361464503032272028363424099792340580111836820534998702830256810013394319349339540160897202323083509629832794721343162628873562844272885698021515810742737907712471040714591577115446542917995982334785024575117460000133761283590153975574218370766262767095377489144828702260115782388046398586703799643190326992002677033651847706715622099230166997594205354839290447838694934658827670303798268945694823764955373094001599825917516535969547384491217236177954874000940453305636565105297300628264713694307849883535917036021770127223354428457689732542997106488201811207314535444497816909191056899334563628758464128848800853248356573974481301457172716778316352751210191562742952914014441553212710966965583844205259164095644807592141631915387256814160376835929323729936575547025816605787174906056081230636665736090109350648154105098311493043438993831142686093816591797813032243934026653880805360353452899589969086598749934957129857374669975753011847069480983618273305785236874692480490367094723894790242181716130769757375015057851135275651830882499680684631451875341407086503821117285692284658139972695329339358174475724373348587967742081070379493999262850082492749801110653585064267962235884602866928989658216498469419966070793367204294206985287302004503263235669066180270319805779489018797332072928841064143271217099045094998283738169505542640500475241220844805969466622686394455898897835942002975310984548381787237020073967626246548363716747544456968452817576436161328657194050312133602073091831632473770397475690273707552762225662215744621093198425456328727159535396042060821734824930852217283085516259675301982195835248588208981653744379345993828012611593345571420744875106948561225794335961426027729254501330326429002273324137295565952742182598553883838796018344033640600564669945624662141910277357563515551434964674312346641591583871029318697150619845654371575282868244433090737442418804359197783788662657985261654680157483299672021527856599256708092182430849455620675084957828784121553910274593357526148953132625570297547706277324309812735733939236625262369276548343059069917903430625421826195173381800885312390722223895792648253465968510338811964480868139025436865374164029168761999944312183174760292337558403347218591678109453114222303022721158721990510166468051511752274344335329532863378639080235408923856982116722496933117096431463790958681491792572075857416097920723205500954913565904153986770852283355716738018908899549797106299876824418891174458317246617279218745502761112807549615987097271045216151183402437693795457053353111648315384637938037146459273756056007818240942353223768539934081053681705270367305699615383107015638749319652275988853024404011423986874005216506087295968570670317561180888198782469178369124178965791230530610492489095130064717979843969423359327164874096535737946938851181051303913793816497138789716079837527460827455411950478890815850003314285569036367349700607269705879660067668686601059308995520782937427319910964404864270269390316117798024645562313866139735517001294454429681054562450234843940010204269500760077819990241228833761707316315175024768094685779532990939258224038334507487686366386048269785826962831823890518345687360652066654825015736440321494770978389217281368096973477910594237036657039627098173542229151112219727180714864501114982739342623545979161265209640191852563315077319802004349693706932374134628185911081229230717758064968533949438401455633662754624315521950525668506801627025718218105447003392962574829719195699462785136633783874944783882548812824259764490328466048783671355029433103039701162526783488311119912023887118888172645345883633963548733723636201586952800218597975028574936056189920735696222698646245659437551908425636830344324086937768770695727476318641954469603194743131262531922457957755792329255571645949087642584606190986816057007358301072781506494331585098254953796967700363456877212503167000965821040479709735230058896211831078479217132289852001176325503400447896601745023884714250179917747492886467869822129151436962707610223480329068554381515171695516959364909482516218882348685636069752333267676429034415439478961316708600470335526410092154608631824490753834442976231908297665215590436639630450083138948255225227472963353351976740998410884676140321710087639280456152234866344675293730092254035341202268533297299800473142327234188154487052203106812168471465797870225791142054867089765557656008609376239773145320159532298845261710361891605177463542232906656293418832932001894944277625124203939611411910355499977094281996714751878252040848073658848912416766526363489747476704747842019007610271347086283227099266256356826101072658509995568045051838626941275650484684854202985063644411169528550931913973998458546742416257878540190101277030060606702991421856512059868793232387912441972686873714173507502086983354902638684725650593430802856715354001036114069501503025849305604198919970660225206120761812665818870894252091005797959760708716128626462025502224713669809118115014389725954367041311994350466551831834958786453792346805997856017020539033076552809263226745811694851148326899633964131498562427599089274406696887521638836573313762624296303462788034112472552369816217519444522083000950269256047869595690629557991504017599415446334179898996003310874098723479162984646462735583959725529721248260188596768720206797826360817920117734317159251259425142401518878519965309715617418347930086592401910197552401323407984206607874832797964761645997935092619916983295113915869696442566999347293762558577198234464814274925861345072733033511508422867898296323731564527638610069848523529891256952688526690040431060446467330947057989481912488967618751774073069083595522826591238323138967676061718922293871461725324659139296120208676273899537678703700469231148048602739913543023638670713170263638344794156491017252637831852301141722019075832703280587985580291261510719650553415674621658466478653974849326915619327539767917798157021052069280089370620602225650976309713516995560268568731403928455094782833500364402987197827761799150559730194133547925989465697299347801232847436546699251913746512163640412498469655971552476029086123640935039155088677628832388356293585993855591316394156025808492468985722952000105366554570673407640248413547748098336334272311104913870795227314570226485019087439095387539953368541400868586504647764076165999596943223908717603682347300337609900247112929122473147023038183258754947708526187037496750274409844405422570118510110563404845962305478181271921249545717071396852825521991934077331656192377905621618171496075157095489958961985184364689688570686941249668976296784258286760207393882170820594342421306376254078922180747813913527809267931349181597161229609922369162338772650914225177703671258069784608017231575190620954499901800528851395440864449784940428180076253128621045326280491539792617165421976294732851937940318973352583703601856315071280527077291699194890257955150849372535715710344668500765708658391079808326416531598327667671529335467411231488212928638132632938727670781787607176315037052940077615096688665342088999219379276111364576140164448476756432334850494165687993840885592333472174670892775847504426820571031527529106647649573431724404417642691956513314579819417148521803219426844856989220747638092169029002445991179215317849210864945297491219580418539143512648535793635910911838129378862487466878362498235628327487623717180035580958568562305674208544861943148084700491498768790840051110305451141353178896442885349170978605037329561119405082062978397498357858331739588602854446882758125691590351071830101741231341612974563481473522176448694155450843542190746507447969943872658895174158216042685521186882063249218782917189001913630309742905178853352319036912383124931238569003667588282077026077345603224646569659578334364675886150574955707555942474068578734742989474194048297455258250301061953355784241823382452035697741892175918306833021396721488324653869015734368893229323328198821955562986556124154294187133702354101862579176468282992627428733286983007665342173043053105278159125180032208633333494240249593776131762166600976820944925354630238219366658735068122542476462566516315425539830777389062255527118681615649289341672257746489954195181406919582509558630304870599036826940272924031236326888891504258789015919027401923475336519703259517103903173999647935004695692442564981182715298579233062454897431000510645861146013845282109921522984803064010081676162647341780287532244702189020260116928073555853398364693186031708609772771137015262142727611385074772763053318671705505328638952184214667651949702086519157276553425426554508654950217966770278876115243122321832642199285309342800920308883515152126417903016865417521821368354173563104253771521804131761023942873257590719154599221282957227230191527529385394295294930050628405801144236588225222861255453777237745320595427440639715535869143123601498389964453510380771579604702001957401801319680938018505107686528889589542057304131980174380891852102615246035550418949583300001129947427529408275586624671067425824632423498305499003965693326201184510882795383315222211340921387765293676489358391662591255370779413378605971345537295530551495400759241431999171169938253155018097033783982476080366736544753807478901280117121217729561774569768616622567051979686702081285631667590439810019889804477699720693814510499860789207996797043826100174565169280448082539511058740415206009911274068459881243420625084552729847062852852575875928494976266976283858716031874452572715128722906332563545531073957611561820323857684572029210998632715695307348608078463112215143558972378143920828971335085747493708743807809692993655931567150600267856044205932848866135494811786992135496572522044021648691833767564279232032973555776491513673302320454779575688415164015939225995713555357140119244662491926328392198218983898675324316365425718712013948433844889145204497534661198387242291300541998236684814356977058062912521781662935515652112049670034184422961462996507719496285035457286544291206431010921317555698443135425730262768263889393988847537464066220993912440657431000284172518136074551073545809471267225783112671155239093506708942232325868859894776526563744285092176529326289277866312108121355148330243494821184204140311417738626087129501331147554060562262530482593943753305531157065117651041355522644999185869046317335569582057129806585696179857227792977228549299010060597648983556916408738790145663041808664389317724573253978319831399811525169472100745915413404173675370321221084981293707448424451850065059805011286682413067806302121380768261336240660618915364432542612643508005244830245530726470808961261548278143696261968656423540456664441877378585471124462420416886344634678908564791677571361321264891371886574891538677649371008314493373903554009205185194746383786311508472060764809140153860020862576760349322192315359366224578057302320944319787894796892086514105795165609327270137570740806473880019435292504622910511997874574690158771596912754663407077933422013235343552285529729410170764001748868591123983885415612296010689469247461704779415082122090814758683359138081495922671284693774111847094983518618809367509278435911239288586279190296796383523095677710771862799049360236225290906266192998571256213034063580727649085719349598619445693694564325818421657835109218948310619623139514464951381476238229153382966869505606286543607728430390368817629873504688663356589088198424065703193576990087206180906438523831989331812109160076058385019668909299309232376926353663416344253747023651965888014930659624338431931633670633004143166966198229694682410819983094752124764683467410082284838464422693425228203627510046678474415579052189591494633794077649107071838617791388996761031711175538111915446850613074138055448749398561605818625990204954133714963235162879507612230146878957884185917671162348883047055744050921081834631845357931917704270009683484398937046589979227146652226112788646378973300482092292318519573831302363290640173929494620294915235308672697234560613381451006521769983421531347995385404104655814729486795252391507626248500712452897556071901823448359080923653421778173254097613923345040729370269123276117400953422573801565947089701433504104917932672974557843316695472045060290407082432983967168280396899016946875089679745434724475600938444668405052553286708972450606466397998722099825192392597870203471556578867373581632559559818712972072089002578184679347291709110401754458076085879908881720813131367585468322948083332245774863914646226000358501163840137928583398544827060298521461418423077355464115706122573157007889032971268110380486339980682050360475583978437764910446300173290340671858359321313896442886249204308982967081071394026979130034789651901267726993269189674917496578271935988595572827132590564070499257501297931839801699767769392252939369514204548132049034627134792200774908439089352495874697842163528164651023480172876063323819443260913260362196095787796472573716199800791385044018474032022729374515697555516375876934434304627744778589085821037035896977986704543389851036206761629501072899472282440109127774571015914628297375295942955063873231816610081713168910897761278210585172978961808317279809094507349835458099238106022232208198116697868484929875573060318295518613196726568146237745404047477222764515795334271466007924270766870485838993352390154828259231359654608271769199910631647899096740219075502292223437174968391597124877937692454200877425890193753429284902499631022898024875920226428152228230427312082672416621237731433382774971979677471027237319544989398805156940645478383352630516030848875907260242083519964998041840633426331582711212971830628152817207248971162056117526565157467470690816176676106712009678485800111583642911816678321229684710513259821752480036988878282787440581034267613614587274097787713279779412842279755150067788545445536442956418157045406265114652749731609135358619617237102947327465374587933833867727782943281250143877800365103709951591269456066542819110387774870112975801338211568926756692002209189073585830428405294392732749518149162505081103657005583771865356319256265573156276650438187839307292207022470938614694945372254181385504078342960270838295684588822803338369551080596240641623853530180144977531416782426323881439539147714357771354083859419947726063618434094177562624926475253439387869296733134562547209933705746238400356445758768799292606512140700693544989972427129797036692427940492077878583027216557940500785499689389276289295940452996315767909178201657987812772192569387997078361084279691971598192208340712442599633688192256750447691939362953961754221428664951998908862800021567154301036066389459843861676250175911489211871311667077296133779609110886351050870758246655234244284308580592112098176093666809264645652900933014041105563866131519223133076835264077995092293270705222445472564093574721612775898590381182038513721460604970316736839468014211748595614852355034433375306366927503424690723864094036565108470227016374129937528751472808124586382943678358517195902931310799350642315553910237446151424716110413568345285618853758532421198533320590979950948972690277269980028592053092595589097255031006369191563909390261558514940524089560438353639293865283659041613075365176998033645128800457463589586229185213939450719773018084209227202336302601926576147231603853423067515000147119184925036355253011091694464875495097135112928635284157379715067590122899468003214795419396828308646110950093465597034129669772779178803190074225613777457642050232533698082453785020382839627535963249952579601891073440220297710906620173607900983963256227005079927686144763588580036304389369722529034678148521462194108505688319379758035276967120541210440575633720840882296730469994023294749124869519257747482431684738734174424473283703141540210566565591119214585134133291076559769123539947629978437385504207801285332340440649568465526389286631087351661370031677375747401772903816549370480986911806460791455567379210610788804101259328279715923634171596512868217261774808376098236974899205462631398320825969642612116531306666577933316550221739473876796513248118988878466479574905263623195875420391768435229956544103575423943116624251688905746399270244318634301835618209521693382416022278513685213649441951088812278809831565851410187527381487701444180172066027763286042234714205656342711741053827620241613383087498785029687108051654758763642086573861231160496728693347686747696920997394051061474035765439078389633700980640984271375497656238382229864824535812337684572031754663111720214343781763447726306475123408366748619513547827611745744754917533206971203350237439636785353773199802288039779750151123316742002069096311865455635351475236402292669785900360443273389868853046941466615283017969243482804026368441515003495223620579641395906870560412896531310908113435824585362390778955349725234649485360106902070966968564372079232141422688767538543082889848063202144187102787649945023183017508209924786746831237067062758384731307948783224518293224641299786674652997589484218959139940810662464801104840722382654404334879866248006527154441821241406583931589350719167469282668397583673924946964437453648142241052513526719120989811742582824563814035733176099605591616567602597708374624680920525821281804041695119309961860225402878066246755401103803315929145559174154232633007964543605613095506947022459177320051401434513652964986796121526050646227856394859291970157870136906002949201310680333773144863300219330504530449701659100917854373024377931469299171518412193780719792940100304000195978404573018524295646954413466698020635802383036549506966920315871426611227204484874404199926894124077464181243827623157042793518083717246646477184563686258905020483578623962105535105587152975368069391209826607701874552860149744500966291950157205371648673782337819172621142680077072473056939060283550849958758773462320457384750248582694881307363317033572197107661978797735811886199763124352277837860148940818509014371734210526720177688226151023200317861199911485518203462615630641191003406477149973304996290255974673298267264072264394105685633425330501942493215647658548228207977779654653969961878630326800845921189456168606560880985560529083148857199617859643554248206004977700267331159223541821010458515215285127630111781371996380651832633663408109852908586724248727764149927514165096715265369117745113182501856961663547939766336616795047611984588308990451307909853762076964687717708867642898147761398802877276788773807176269548647546054344190463443499496790017491269033613109129895019497937881760706883482529378454925315076086165505999775327629111831480376394933607692180323685122928005510601739038200997919751585568725709879435300188587063312721420103708105407306906256230358253638997773607671074074191396969278517713228499442246609752197131122729694817154117668200811433561002307888828055411785621573598175891080082982167088677932106927765739767971936962753630513868963206798109222627919843448080785572882159239734417563459270123352953564546860698770043471996756628445983735934173105299461809030618053984986482592475198006257674965824580543988115717338809964699181006759314210252489718710251955776483203148601881648243205346305811006447148265481869711857436709038137833472198329163830782297247825532516514893693064566970730118958965711862363892514339386797052733063723174350657666204987926786159573096072333814177340965813321986571053975946138775765998722261345091792086278706620605378660539427196646239666119181298482303051519396210496881393869451820783442765614467687563238726429435322578733520752910828739515967165323789192930981644022312111022274255652894818841092472524489528748789320410190718631156880795646021647321800071120062097693077421658455565345432197336392900522965" "2") `shouldBe` "6305443897060938735484380631182984167345927125712464156063147249317187461129451558961746402141238197256284600437959718734426851523559334060338341368042023068461901134715157103733772993806458899799381167594016096733225141373860754237393442582460769218183376021113560123633095381483873101121066761139719106545693490861644224265378830601564508207683311297897403206231203874870167660602309415719357853575512002090700987135194055423466698775675455813902814523204141945769364574547327661268934886819633715985530524587476885927670648060074849669173009665620619167134058452800879903134122341428394154048007414836962902468686536891446895192531512583136032085585908750964279175325302678683354190269442811791010885997625557814253359913085433615251029123876512403859499569098198453248571623817213769957711839358732970894815440788685156633729786281772936944755900296413543015510616299462436743875416822035418448858401790071993700593330951428829421525459155093754210835889249909097366914071355941934101736629947236183045654995543873435918192908721494208091473789351806366545918179990824851964034688015492728978546512143948833181926073660236282115485554784872283843112282104245220520985227555096305069011583490604299540586492429661218217229881351083195255512123572304669348294698429571924837322461436943622268162986775049926024495003937646254202997022327034284014659922572380615002587105450083038504840779770461712239008618749274919373897639271228962753523688761157421846688278046202515869524158173307134321859519770719701033214014148388089571283912405804289120812579670104905852254607738266347052543851938588645601688410968904657654341637155689573724059490856499640629993930956954110846148603051702724573526592866169277007853140457952937026219328199369909470377668651335590735529615586469426171644894957449006883165339566197131278392758970848934237294076000763382092477048387371536293036011447098948186010254681263579988409360289279329992921261048659040265659367787784071329907603839216076438891917661595037949913113626410862789573589017186774719843840371777171384345756915955376458941831911523358483974711499031546496063087584149964635969347482309749536976628124286641538513327624497469315356915696112628598110673246190478571206574222179193925635531092793451109571838065721035213243965111146035177705440742476594223915413974684727621335781184306379536236780872631953717320372683265768481921150036339026919622525846577282011565632732127736848092081508344491239987871381477679625018320092059776469441126592844017790224042658945091838296697376998595088246087283086623746280863801036173038870340717353465658663568925673679777651379688448838547886398673654270778230436407865539943894310312048223133960608575291150936224268665857959609268376100343940000791845536924324262478463358502568643770785996704260329568826670945703033090549329566766294513488686215391316057637253095771221144447293462318103553286390130703800659063981233731880084355205706330655049900058245863255253062854009886928287612881239392406658190962796890574197485877371743909659748240682139246704197317295876050416810440457873177193315424238315724216451103218120342149496179256361211220462534889859800578078910140761428927966498122094648486421389671104038486291988649276561698160001711646216306648622380293154183520296970635461249537844455240010778106426219216730843946134230520359217006332104340114477647857044819039058310272244315199790383852910786785310613401196968499177926611306979186641808590406792587859064466052985804298920705881018653619051009808300410151916911271634452581320418051824015254464130967790716921003761856901541895045981978234482264278398694984808678662182268029231858124935882874132435538535179751012940809231173250388852420367611858133245696439956830929642999397258110066235296035920510982916606492396173310751460997237782763315177527795165168289689154417542320004867955528505251520122254990407130096206162424463100106779149077714265577080323041731643297435018271157069862303520436010325229474762651053302257089699880352500912036775392378897010907348267538788316179083962416986283892303048804302274132766215084774231843896039935266902268090939315326578854388372414315664893360370622380051171899314469459588502169724702361746999816154590803823372011844424066726676962597170612703577733479978192429067185874578551680704634205484684065092144515844243073162868025642786692948107988277574657114781024610668872917168538859400933749175267445911289324676010663460272841830359797705158350529408257083486514257287764668130980689731950892777591649495304881192008053934777153057690935711971760361597733336111372807792755275419809269033172394555020899902977039742656039477219770384470714945953526330451079571200630128019014221078577273081864232843469156154919399865652375547047432110407693746490364755279608019771286348847735729056359885018284691980142227978434502867747614076857770309572226308133108807999224423888763872739274592788075555972515390805038987582933445594955406511198258635267367820384530353627470856882904024342493064897960287094617273300432918679181133618939824702949843608458137096112244427200946496955469624656519713362940099926572702976835546319928105867721590309385647892361209995536465581606412257832012295426568646148908912439699397168902768603543904300954982073724979527538308599569051693284041598346093306544363160549481027082037961855558820382188517981607030706411423730852708376321091991843039287904226287301958609061347025899591678146649248997025037662895018024281157745466540982215484245158125549499270743393305884572910245545303456143149699766271777402399076816076787970742786535504934713359631461784942418729301422413891685666192539346677757380524278666061053329692616144061825843598434385556791992522939892852415392896785153596420844165384030813619233895201828284621430176886326057052881071152891962839037034502590562847708160290400878903023715714848803321145030843403150387673644076013410733725381350810188280721326095450899585048902328843363597680347403044699931197122975941292436298292460675874442386562938952411873866758294884871539532937258033114334162130400270269646916849544113613528605104211338316044527462641872075713793593574015022766265652738824197548650108692068648783878816363392932397769775755879810445162527803960953182836258509091102976389224825238084756221672063592688047821734006308172199005413337150432097243416083943758478880535951099384681826583358534785870808390096068534463018876848601991908029357957000464965510853010735396957184991912798343209799286358860784556888012505713750352679798558167529220900742247399525327434028939695800966343949008181284464025323861709240907955217435107365800099260778877326990652860594629880961152184309454418572409467453800252588369987101276837708972505478792237844387551967127057683361299459083656725791611625615199073456974690124866186898890044812168406270657522821978088880495013266659929292107042938437296476902017265912236883511029848065782976164727804703643020272953195559726213988183309674191328910009388701108327507992672714602922888950323118813946207695423090637583391164454896878308008263326883260896951040496201624642076318661985622443389726623995115918910257747636082913074271947392869751028371245828448645291621971981259678354360181786059669193346201094417529446682245889918143912570315076961964295769876515805455536710886679327090061833650662019267761886616639610432651404871093034781378972170452655389878581321921604528782119237402403738330624612059707299611712541074732766275484895190552893896903650846151527223872085781969219144887018720302875409554085061942171077943630008858015341000317641329449741098440918805410858633496507681627791914850863185571421829394809482433220172760790343919262315734355796668865001498892561683798702834312177238761143947294627778525173270717410739417472361616939574986963956507620454186576403645745627395725836316372928740502938287078802764346911991577260276101761622165458741434015302063451069195716703673174419567739979185094273842007754231523604602071434624686656899221471363710562584915196791931042834123365549733234254909011918487386847337335797821557542777135725608083030987615887096750146986060412068615566624396031735109853479140051103196361862978626503786642085244729581496131513400663514138248872880200418357431612366735919456150177298591691847770963219388354853185264567193310606592794316343988676465134454951565839444567096024672939833568147060481122224998420408158491201723304805755354892952275645808092664183250652783784114802916201220942947090584820581771485491491523151631003860551207854763475467897239656692406917569886965261233508000356959892999082402823348070995627215466874763286276941748171504784519046949029497237625754576568607138878176788393979092515268970718831296912698383332394717444310461443377638512688580312987211887307154209269980090778261867602091624045922828983468458603086886520837837137190125553212421680317090449120601960332076347854533974844420163919636738867062153907292642738334013167188645445031857270079886426517157151243290003025033034824625928587022185974718743526191038078164177983578905058748625439334489752673616944359795295539185492523196483071529620273754407584651630554598742606038746633667531786556432842870737364668031652012022175801770476540812083234653884920696856304759437450272345430493031467974866963592000616462326527595780337605524029153969572598859395824235490171560825652812677810545286101772030774869030568824637666868915623641405756677975974222344956212747781657356185565308457728248932809833797808558480357138015604199075124662042455040414120554724761936354297186365974986101685665510588593041538480785338089730711864649936239088610517353919708737858498710368843872863985456853758275931963161360890396152289801550016434579437637999519725021402177379362696905584772700269558806459827104781556940923613219160939899598240967678576505959678009735735562569162891171973620471004324388751153163557143187443816744850414159211542733965692884307676103896256549781854713865131821865705684830067808264970177307277766185606647030756712337484301631738679718816787568139499004723071361906133863869926122544557535138901147263530664560413742992961821539251426248645429773480084110271352651023977063239681526231497648627307069104232974929101856282120667695120352354334914625748260406333004469217428938106663550549230470146832247069092178291404968668940808917138642980826743706008378418413344480576752041606999897505665843653483770713904511115560109535644316477140174152469909396559096939520428347187896650244182394271171274075059848169465432477359451248592080155010493677967175100724482173272307284891603209003416870851613268117099092069013828622397064264014890974648078201484832673385033268876970736766634652100182503308001472057536941886665311306407028197752955163881979843527031968877989385599819068959228320741722576215307533208051296910738689546953494341052667986049004458496599026754383887913951241493485432735550453859324956237415447081287011912459067375884369017600802358777815887835636290732665488121685821976448237847513866910650339134188981448059807545216872114140121677653286553227739722642792527594715106129439010672175653933758176874198567772116111719010107131680781640957759643082420472725470454222266781553115414971591148395549257401812230456110253796813696568922633732286943329693730698584539711573098193081299139062682270490081174901624168417034474413174885441219281953309353893083525402294301337628356922235429130985737018398229097278641330092439762707460774579694001387527166765873973351106331473546065819002649926725784419783837505680880013388691273871019155025252336140923513198616655155002484156515111750973707851600301518970028268389624406155317251042752012588243626685377327510878497382155374491623662104162659835355932107224171343751447031884952831192144668405337848332815784114150595170969772356540461685899425789216877457095094049547576425260758293792849487137041607470165420311597574088210813860423422860941189082621256343738244080464246919039475459045941452223066687473375294938341381368292301020784822996054686982849909445781715376168026544946755230715865950342309735218917333357161465621875073231090471653999533616571931760161870916285878943763348964546895656004668947440477127483093487001709500896207605899261156769874412202795112822509910906607750286190022573788204107676458613855583038813330013959414227792801253763002399339650872895564226872609152146063191194671475260874818243413751561067749140924765398920722974473320119463952997105351982441810797117313312753107852953281805314177560842976305092060122511447959255098021431683458956433545320828968868262644068603709996738209970695264956572443162894880338698527957678334376897098448674284720041774968400036101611201473075426692109724083072417386375526096517089433679529905784804940751334783714899321409322167451269399087707954920129226400195860145956104950010975967276115085608995261313734110030628872193305944788736795250500072172697975892109745081400801200746642573918642161207938837436954698704189153879651834278332216908443332104703432812722807378041939227098660835539653281364676752055964151864109532912308531347902056603392653798559354552236662630172945317179861690342894786173721355807054474395409683815781597311964618961996588951610219942879322873733927300605138293744472860829832709617369107955652237191063445788857284772639886299706875830301194342046631544350673251344276900789499444023806073118342900196073899107433262261603985049851608863296759793114007970850679485039946490982195803268845970439923941644301341747115097904064320363787534767155747353935061779911295615444895708772456451298115449776582360807146778758384929283272382902831964852921191227011678376976118650812290678536706594997166403182190443012036560680014726040276954199457021307420738185630958463364454955685573107697357065569086124282655680256632287925783462252330617934068208197613167413329557932630147264508073877373054528455737118876998350380871864319400583605543106223952040820874803193087150486072871782154966828011435998288875458809513065919556109649621959283154725457893116761698957906830242821259202889656837368681445358386498831476255509820012775406212550890776161335578948719255990412071849778387984513649805221338152842938926101572874514540619358514819927038803830141200115904191384379861645948314654372430317216380460677371117731915656095180654310868875831742244545662606710926282969117026171874530526712767699308471807111977880287084435455461630752982982367928250769263789070891703590186029573115680585043230997748204527887374431423044748852145296754844049182429800120612408900674596641442135481070239784100154352557717919242782862156044598431821822209782725770093757300149680305420757176209332552145730605081902242297707216041328247444564221910492785263626982778922126168240854381254838562337417117148755607998572364985812529872382057461090163162422620352792027218305730642509687434748394796396923915321853530926126857106003708176373312226819494140602043555266219504731400943859482860993752511631267869189512240357088128347290976779142918200416878546458552942401657875919356983862856382515385157171558176789329888540875682218203399486457368214136077318535382891030108201491658082491557988672348238773229871655350572260248165725750264375380983306516239776130468721316546711637714367251676212245434834563148974387831503995730063508624843057361739187866621894614449298931093853810263099351909141433891548454415837875437270813066256878562299267316548088675449751915289320130006048419851449583571973878158525626734395922615656101143257151082486545226809332401300330697675401157355625694746094788970298184215367759960108210522333885487535070413965331505154941110469995669223360212552038737417676271200450700493600589092856941612995029931627179903301287445944913296575192834138833662452481502605845313980657502347386961627704181193269159495133340655855757855217323247040715469922219799309231260153872309370474148997804373507770043570741734080280100709953095505521951370357482325348686222134255040071230782856892001095478881461652085990625117290080150153156495820712402663346676361730865440721758363088032559910096820368502562980319544352727814025253525003306081382543115186975711450160396070179794843501486594845188984877809069261768795527128724877125564629494163736189667655820654949385973138025305834653769464764359275760894626727216460148506491414748250227618182803921075854378480155658500090091953770057847333848860647950226856479326088158574604521181335774688439021568071921721804880943206558612161548486901353621107276604137600224157740131746381230092644096542795487994249634666028947781842560938636426830505243560551224344479842847380338856199063668093707496476084670744025127727838838545185576249431946708755651982794545693375487427542701514914572715766444659591302725492551745983668707621426664444293112701440887144589646130929641610386931267346987348718443469066533797509551735978302362475191512144011908129823658361025490808475613916614170302636389462127377817398203771879688258138146897868973083499560374140788758016325041611186499362644546509584625728151238436900361359373443611009934824046683322012470130894631913422585358521025066452684615627382097055329356641249934017732849484442462844322405644439853533857394083218292353046716355137467098414125118816703358600294016745784389306349030039422893063059929883403212764030340238716157173830788818177566321673581967497599291632694301548547003886859295649887705464462779905643640792399146176145467089866157951270232782296723592981789379477107943395553354819371479735288275610196236075310383511180573987356028492301580675916312427712873303504420023953001779242314675326615007259492863141368867470043009526873721601709679198808940391769824087813017375235645665878708687821047036515198470885715301732345612050212283964631615715601672419925076928327422117253944612289185769597382530435016974563113372641852983802668801178849931298542367427906533429268261620255578444609572184513606499407402757911813322292353127817737326236097943216232337677366690819370764545054889095316181627425762736169600418206597711025690463764674284026988481444209374008607536946647591863347595286587866072052587439823731498890109369869149556355491617599956160390751426244282702390696688019942319132643673461751115205018456709689906730699015124039813553107916021194949442191708666203937646821584712213039393885630062706977954686014912347354398841706058161702258967760050757590300844045503567200009984789277389270076857784016834127128847249042538900053775354298281754448828476724367376147683645636744987297647172071089553258351091721378528249682534200343981021560411382402697416639268060420257854274801128862795286729136776376025009042724715446388856671308520939306122290814802903694640661417962044526345066014965429906860068589328979832362571314646115430800578779694497629122896210154685488744155103108078238665379407012304531171649983178908742132081936633708820819119684001908295301950797598883084917538776876158236257035178600198464960417814217869497449562897321840042998403410050507056159334465490482932364947570583977786061359737149996268975572701692238986598256749823897361033376084909767103613394587794441850000472273852387555845631472276563699592614142221004282774613854571039601882338612474066930639021395917932940448958161961276630941542177534308739700758003338640043101308712814839841687415691736903482448655730658200885595097952701070975338255195990528523702397410812401493076469929408218727426593348028728717721604789780590138337445435662407099580389547067420867151205986528010328906460132965990122069575045553688094270219958604463569010842003009753154741180143617387028211917744990403905642101501319297339651536138729294793312793693181852286834197180955401026497452378171111237969156077025145106133814301758614759033958249727808660503150860769649527154690317925085500049159409982303911680244221931375191636811238516511338435340692116899216514642061185206427908913813071522678156466223524414484598788765054078210697935254923406649618988802090840797923216356302747318596886633377115266933591614890742319409540617952399246316497423638225324259803490980896581737501419422018625297052824169815547122447805690802124102900345426514615235433470521418281922469797743779093525410178609185793012514276363826758935568405775019461578028944996090926626360046874087007130125702167181250926630320017486927090367284053533008359859867379579106406072429731662060849366441955787681993495127655951644969759485025542253432013869201172966609787981938331941447425366461087340141992243206261239526672881934008809731248309294596541587198239110476479736226425216460914652305585760682628117025315022650894954884453671667655026604668397562882940920786846000333797029713695093114785652210965905549391445160677612503760884416808217139247839455648905302770696948203672067221688711705758214572115681659396105106081567195361892064809703018946494461321183718519492435083450899842337950193744518199277630044225546037359222706163300453703832081545855476940823611980166052096036569484735034122328374790286794380073983243124780178736627194434036680949881759102991561559971627129972005288751488102655379188780556694007514776396769905552377024337579093519925523163692798979170055263887983884425742442209727514642318848322284928737367076705450253697299624955929507000497094170472872366674936407390287391268296124878221081953865721429226850128996195050762947132070959989420536060914378558051219250148192488836446089828788845802678007673039870508307666942763930183068225810876963955932138638289407157637067408049862900115401416409479528215998397767919117409599717501071483930819697339552775158089898494067019691360705693190586904813405082395120772107286356640327001496256155272626831780810327391262215669962448409211869841393738684047934353849787061776337842392437896529434002019028476874691043780998013720194082636377550739260670035905337725254155692532130164104368923275937053429373312115381016780316174690677458924542285532620555902541497800352842193468621043364946668453235272300978907493248587342783292013643521568710265512731976980706237017444159366011447299818505336425781772784944353607141486235331658924579211292060741075276640434578560958718601180668275235014580414734080724061339718458090098665637925768597096351254974888259544127151375074943323652088581472368423399490360380205229964219809403238043327584872599543220601180010815493726138083046666744514240665979744720590900697654264216821739971888085773674004776196237319382975714739657787717804700847712694913182521255799896727493317901524974728900719921587813964397448418797827557660998585642240375349198437293555582139729680022869098905828108490670661295207861889900778823771609980022523009207769980709981602522773772237978943621412949359508192972008189707768047735362651051323769620429673403477794949312013230133888343467895811070247245640522768669262349704252340646425487331023114505442657779706402247893816805622381070166688356038644946381655686974648657276681996457628180894591190993949341688981888440569234571909865549154077746859764476246299798710450212428010982419738097464762206781561821241273986777959870371183318464193508564823948644593170606071053571105626694063428604652637476892016310783623552034549995934839206154631980189481683465918737533842969385857066902998644676810848387974591217061667316876847259009511973802943991750630404884762606454483796728581415571067877084203639266637017683124944622358530418316225456011410022637837255335135235871643719769756690286539707184056020381549884099565408735015011087263628111710828102611514216585993061460955392346970846515497608397429826561558972275682608523074640956874188415357366044381902694426739845695586152677793780495397294679696946658511976039699277702059621628393796325914583327194632593734832872258563557102338477664109259150819633852714829683658348789913117842662634808016106823525969940272064645804657013013995701144298330878805071576053959693281259788377173256718562413648646940995724719616293607199939436631644403676547904478023491239254776260010889002733081207242405725396173882377059973899659991015550815711884634366400462014590815940874161895071513436692956982746362939558497184401363735737410182513528103918684167037820430153423358787239078715733503365616243086123504825651781411722267782638512133141769203936444275172430481017436769056911120172552075578012895925271489073634858315668436671373202006044709710559093402008711029985752652330952950837925287484282850080382365892962516820260210904625198035826236474964940243639852366872595993864159869198467498584873375634836606114020152491711842173789441251510059152933116983158616775984032183717396209895623839945634514397596513695226336190532393053568215246435304155080276806663705607877237839397946846734628641627503492972969856305585275168132597537010007691439195007715223660681271822306414211095214573545018391817267401657942155274147263935594862724038339433629774603941356623490807727342450792696357850173891729284626687006407181695080781475089468070936747975748948571369920535088340872943438409073808590236022189647678870822422742046931686319720781325051366348046732818554201932203224402639195090785594287384821908192952095826938359827553779596325095196239471495766207836098364231658772662854240718059645944191739073426843337294586095495027909967452599298487707256219660404034192601102978453083207466493180277687870417927909459719978046272589744330234666767493123721463408990321358876711039995241379272345452308357178263015720272741305088360109973663231326964818961223258180745527204658269460178559987457498398251044009823477809000021306219065811815896952031649500352806043003867513372069262394068914935549194224737820705511266399966219453182902361048384374646108951205301373238518581835942672081698295918721531402517562122257133727295285697587818410821030412285347472297149594332236397263267200208337849023210352011442498995445051484548721927707012092337144230305682904051647822354812837197752517550093400053563388301263678390436556104788111164851879012263618310529994971788526015500654774890828185698217432159191729247956954976438936192139646881429275436206206444486301348036556810495506886018306119973142554805313121243717731381201488503802704507706029095968560843899028689862114771321589428896961817402435532337357786199394662085628199865719218997143730517193990476280161958770796813047955619510701660210704781069316806083536905545975195314533173202853902574036287300185423251269575266563011923013801972023185563189019417628029382403412919726078613105848688898024756568689936430658392007970448067483277260296351101960963775671455561341638469922847394491360568761703778969345781808770503772272159561201830244097948424950466647747110709171298046687452703003698595079742242177927657706311162171484792837630635101217414222838234562479044068421100873090400355281955545112413138443250427656787503235812206419959784320594429596523537058016448515491597583336121578867252088376640866345330738889452999724826032369201076426456352691965246418787720119062542870032498052276291937394546601517068341495020075800903452614722182970037539926403797933561231028270265097612065761505080706613710064074843315505765571163466620489255469906875973366739313243007056847778720360832245283291120826217979373751618923683876806200584150367339560775193572597558807944590313288514471643438884153502870507374642295213356545312977589634200831844397516216694955365434372260691254252183161943268722373415180534286364672133380925344473790857124912378271475608155834841556104653306848762222352533785912863600404177575311127162516111098579069187976529070246271328355330771224469199728912959907898088390946740194045353292441077120419754057786487363822261151000296106020221299819837471455546252174556316335127089929692462606465568062754146508750707831107574132061030113094473449257299167855787680658625494969813712279598582672891565852298818575821705644854559703759839171281923619509208882634668384099408889360559402977219104093020297194062867333596835296253140725801864360211982802454856871765537931549741459303691636031649756848164284905947977439853949807229230364984081992812566962290351727164391774330785958018249474564929481421611617954525757576534204805161272115492324437315084736597035118749896742395109959262218018239187737283315458235322004066520363212225890820721783508941246331033341221962841414901759245636327109085059707437455726647302464226332534723061915165160624448623399430322704451145707923391473595612333571983317155210419202447654048028376625809928134811341291961875063292555152632457658627198179005031962904510285280972294431167713166210035155816838775518790724385203707140844315598521961325584887896003434108323443523167342264825005028173812351081963778534720262788825094189077435281056408430311377277105752863451337282178960344411513003382795578361419866046601506872884158134732406630788888321648989785326541052019423884853559684033501074900985679835564700242533322961505849594089826880917307413782153817284538195531484485990021057974218398886734983907250169018734913211182093075275673896402355550924496338315141894436531785420663953315575414619971850007469974035053027728091833914495354133412588698565641868078557327542142684214414333519772539403585155364721936015165079740603958553445775544647771525494364883872485224707627784331524543523589295177435853228730585076308101884606405947587407543600608878238468934211225147677749055021837899779473812232053002082693306432927186764529242489180825070988371468864118940077177466634941746815015023331287397221750526941449072051143448307768667181011164919756050215215084021648939427042824320816509731622493628986864207636878431776844377538899792318439306130980719067637433269788684902040211599325015115320148135637867313172586369663824256552081541618138523711141258719916039120312209136370382965543928360636361632930765237927978634003880139937347652180548745739133884757861156620663300578820712850609057950958243647683833999863045196250124453658219957099361739208210639464823954080038855664349709085580701009193716934079195570878896721060995110344873585958119866807474271150759023073500274111593657018673964684327036764823534901563204185153023941629727053064719118739126289492230077675746503466657049665825806005173419818010083403562038817031259185197718452965249060844017819523862533029740420935558711926201601141621602594149236287100330716719143158975673914371074080404015658329337820917286337648250474748288597175291851990660432771356752866697065834720033414344921850382886530968290980941191106133551235091598509844375605998690408871777373638720234675546857995291821991381482025094225697938381923702548826079376939629340206497232174821667609347370631448086450614760299690987838950988520044554428275708171637135421372770082966509287843129300402770393329897863631677128858945326607829913387311538789577911117952629910483837372861983325711842522111661604589922186643425621711213834745019004507561232043532522882252989606848864942110777642947905897398731774136524896867794165803664810917546158520346946715625534801096411651886480979471244257274013309058435401776567641678049835824768927336125118038528172966689020787787753178301576603591508665999055500238310456727969592834507068060753095756050821559331548059211426796978027086476118271053144224798472456136131356624743676366645884872027407653377795548894586959226660214957474031238943725638400257492723796995340766062334589043772129917754709649404160188276116154680952405623282895911210395168492957248129178915356507855774882747907294835278413342806560885426950928246398780519517193216957827086662250271780494597522448303992221102369250243315822321542607188635056556593688110274847512763392190874674323247565647432598026918978038240806976544535378103121823273249117681335472095326588735570150151552156526701530200795561217879294590353410363773381253355861450614936672198219996965697902502349174999789450881055096935886730069304581576065792283600336483891648632778097741335981165815071379120143370320296696206353351593643655162361816032354340646193171294833493849068241306397952536972535429210797349874492941605942569015114713805843841314145971189064014042910377487216907070494371106054070778057676024878006604794621722693560588786591428789042734298652861690218209757176498797909580667360305240182178711504045193499253159155097465624759250621017123176040447670071344656458533529119871953776167603394468445492453489241580552351902514806868166842565598431011638309109991028630205262557933880172560458436409226373565423190437419340417034326633656990613197998922344670001036921897573764772405670411319286042058680894633244042432203197585909156148057220568486494251343146992305913744725765390524251531972888986946598392420731483835606652504767806560012672942231717126801963600981506351284629265085244084683499958056700117523602044700745814839768293504908451677789014052894863746595009970660944328668686704866059536260552015975570861583469359088008736846709852238469190496858516439930704181700993810057532141574420455176050433168669090867132559936705168592382585317936741477928844739121429679324542912573659190079598993347889408004703501251018250081934803870473890342884249018758166309006108584580597346740060507426174673832177078904957793309954609157213439450034563699635340176991125616482646510537317353246248276069805032310550986003315596610950403925724333945041471869734865038753147927785026313201384006415833321791826768542070375374148124993882965401492333694816976404565289701609479942972894441552948588090376660455539108335219355048540267226658643820790485910009404987417845035728904117295227503525744666552571458015327777735815907262971782734775072240538012866644220282759024376385275987203356483131935476023503181308575722704111704254976987375462079142508461028551389699941102385634330512664101220737088771861935356666974094205762006086022931898375351455531559374983926048368236863374296667899603644570079258846687148586308354685854429246503759442621334128407421290090151873689955039666199958564500320850127923092188200497206198505252401396937487184667431680574476686057803607849355424930775184998661203678369651797435656452725153774998938646108007290565816541446835511305444644891860893745919083826421418735668066331700258558413001513754681149386450398001184959223051230420396417354050600690573381083951905733094199787676908504526540270644109807556279506680314425259995846589152005068539766397459273514802499096025398756208471973657969915733739944861840961873910711395154119559990003096307330177143673598753719679454621114993086255597976515595170909586840913014524405727949694054376542126392827351913605271518225934565696830999525312823144353778970367245025003816338292808746354207498565606771322252098658221163008438535874817755438284810819681798342443995919779821922881062507870912449536010291966735537947448028341549562439841878866613068569820575189227761658338014458029289620562472448129064679142301857410554918848060071082169192771361317527977105576516562602823218145303079355976107132764526349749749288828948269061447641757044690687940454952660507868281664803060718913374237240105708127747939678367821066894547638764685099439221088333432643625796214757460295322518849268669591723456175387008062242296467278631770184188880066466427899777377425477132832463005491966698335974198194324923425771232846409622838810010120471262830121758469292213088179382005513105264410250139122940699743024375230512432213917565435635004980623213910726322509396748854182093983150636232090151681737420693758908179479098273734286935086761815367843097835720754328120473052894100014808020770014029291626857655211694901957346760534866562622338954568325561176108288746619331809436093666350484944201328328377542005620625230786263136710119812199276709439680884369957095186082509707793477999616654269821097888699840741755501627215651307838266114361692728857490380258751158240951811064439431489812243262114094646943942109945280489589592042627527560540159774036400514031357257575042953896470477745747132161849012637498218633891479563711485268924066766860233951753436188383955176688416496654640056339446172522278280492802101673221661072943615355827475133372208928017594369088322001369689795119555320305581036206769602143124407061087418660122974455749149632054432860285411460558850661767546929985620310787881230759220937412101416522925779303737079067865141327111630142701579862326616929584231269313473256838194681908135310200304134047911869679350892051499096933749746688562584388898388444788561979259221745551473599502811627295194128563549780087982420154081316402005738536066895603014200277146039990160402625902490049281376050327099616822119486482130310977127195004485409121996081326290682398376914795887938255096021388332647392249418900962265919356166304482240348583095352663795486162509535318186773568839764219769300925396156793024322991126353959195868247474294869243091336048080997967059305089017329136011841820666624531749162409438528782531394971178814024278065765535233730767775577785974824576951258554647553806520367064366229966664585132486268443637978658868160189807850613500340971842934528162460301451589731877104207829132489796573342808347399361985445489539368494200948626804088398504231581181118912686870166972333362435218234916066478032624381520093555751861120380009114234820349212801972286767982677169123342838487579473380638219218154010474488922139482069672407786259734079275281115023241258836691386049089190725022726968232356687629549860137520073332141333147767037246797917165759434055535053392850777136852714025780076859874517303769233786810017345755873371367206171605406367372782482273144987676749063862527637806792958417170566287082666918894852402052400784976794981097497837748262437736747374625484386560952054911912274865131151873686703032705346884946785306752592235509158084421775071402886840387399935741027449012017931216842512786991947306951281823440917989210590630212692310124688000586739970208911988955799629894498096287105752724611535029242567584586718319442367113041786761006405813537940307227412532153998617937962762532234573136156593386244982365802673094834721276396516144302797095494969674591143502236182832693934418663711169891458170561398758660639292615482845468301147890769704696898156663022281126675440330943839889667323426050037370336497223952363036939548766280001018034778516122893254392158758005972548462658471351387853506304401514224416800420753958206693515597149589180328104238428921395372374105368221883608558817370868522876375541848902005005403253167526927288872909591224421747381541438096014133455405224225943726733213247590712414324039720431402438021156139229433772822643972344129444674498366573214385344742259958360883169145164828651819774273088029960173848602386725191807112375489636843634687741248963498972587116443082830469219789771567891512796045092379634760289733170968663107222389712830238592004982300792062176183174547510466785837951186164102300428733114490491596929791830746267229247423979384128103760911785167534287127009071075367834233383007179651801836315598294244286491350531802796452980142782650713441381629720874057516307049234968392443536970434966071873685979990665106158686023498151551244202839548795777382734905229024363237287029638993726156919098194888311048575081239924275614202180420557694445020036309842910868232243471154520835235636460212671162219634444849040938001885378645034574041318060180162200353791966621448157226922353132848533914422860846245053976591720680495324222020426590126158496292427793522766638811429571969723975153423387141949244327050836568903213964867470810138517784393491907484324960117030436122280850171150111909186717322508239912801955895961752610173541404021287618235759297313755259730032780683505153663416038075370373780876101529422716732491721350496401674680389804175973757439837927798779051741600895462630010279700483532561095339353068759918673139814921074573097192848586103702093983953807332359802292522740050730207089731736199934370696841103498884739944365352054579838293131896709888154072224005239931976977168557407399932777339827880496345327461954237515133780389830628713445212891738722592824585253193232268390626589285070897550197885567003474729392424472229856509055550634989010692005325135919172144816015780238585857669505215831464093279345887777661032268280297366318369947538436598306012312531539711944114426358577380703418782169355943102833001585239298210440631933176580671461924869719170235826188293111427203430678794095556154961343529574357766702264234000532516769830865146314289117634488742141851291546206482000275490869276381368092664090376302521933998766993727032580836351956346746716366359096967160202689546294113721584236194145910188699294585084870949715990407453375277485058792543811647837833594814667591004841031752300052119169959737962359927940345609747954623251091360263982998906171390965227842978291040117611309470557223308415218918365067593663686200745294031338582795249433371397783482949486030643952398008070175206465427699655195536195565411785693721898166335923662275364859579526420570603318939673035445314155566735680397285724085230472568616285196351069648516747020607400666902465416482032070334302837987035622009315922734030652727259755118244972005785478435497097273442294735511418183498629135657717833716981179054744086593567495272239576534297784249489169800545245790592396853506706010326309255597990963726888087488677371392243933342877324342674871543052440595236525272721570193136737957021557500829708597423305774216546511086203414092081646658248898807722908110079218271234272578627746002169116913650419076743994289311145659441275191361625600465814520483194122011701178733149173782936857036206341604992680412272114646946038277118261768233585842759262340375515142180130795996687380500054457629459908344536675721246169321357669728056383232915745598366388553444288521801667307279307665837297595359650353701605698898704598649527110202278177626244880420365716264550630072568971757362913908506199456256085181647074175849678810175290654592727775859824602400857598458960465434994003093391306074146284098046392378147039886502045745317330549121103881828247482133050590577534011035893449451111084932373894297288171956208079789395534060871003516332033904696978032778827389425960133664782769212501213333010492219530979776194332751276393462654911985130691870749119942349392808542161704381716821315832036336105512954544476266753286627798519112369526041819272917846793069790361430791699168690213029965732358784926567751756834619300505508458033182653904963430933244477516567962817295182798949258277343409473726257284331594481196857326525999204093303284657340958082316118047080128425521969767156658222877062996812575922972039478069494838648465063963848397532142511545901341074453370417906826219541640089566657243359916401448498321479136349674182202870155592189319017334314545864448087939865294110980102834748669655007143254363206996634962509056343413838773832135666635707739082042466225580156772653631194698422345501443193944010371645973749857338676691450065562108020160170302803140384605116797898693795371336233370981268030647256755728900073782668824248351702279796104579930432218601057596383208000662326152776489477643764061034779637726841344552089657203236247658536656065476684360440725238307441028550067776615340970676254790674391454681147450933277277247822244271652454441285148470180916269039139755983758025075736251795188191244529006694297997742135630241797056415827504206501678705994171624503397627563510725628471228334840417539987355121688230879396685435295895719211261198858915590042707258407146457865711976155034925866187100614387115738101008818022838288854378701791215050335458929048832251883622807574225001122381156743389936739914803759981361107692588255372950705571042246397461051703659174864076726619280533076967524314730493903983863653594256460258205290961180508180606763244059417909819148770975092557678730390462895890295420741073259666642692389432893114107938173901275180823188196363642287621600917597113966677009129355446608565920411059091427185561649635907511269337777696840049121749011564022498422091742039282657802044223582734082824182785651257780521954005364920341741025075235160464209002497445699636364585793309480555413568258832215100829403948523799467170182493488594560985083910490843806417854504669152220222132267898628661604966118936003508739459754589581726431062505974688405901222618261927788508915046979363107925206462515059852595278658383157366675739063841691306230505582878888614542389487444332988072285611223759798269211761102328568911125900643445677264832188481970148177284266493372960436665913314435122413096290595268127804028459316145650193915482282833099342613145846017485044655564257115368598038182868905767340055934985135889711950487744945149207337033545785246237819895234495522333368649158811177946606854096846726230718427650915827247015005997890844562902367774888396437547987545086462232195619426115450575812990369156036801644377198271188771539403256935274554912228340586300999750226427939236741334739242142451069506297255080826258106548447098984807795340694290996301293748138806935513932821123254156127710343214334254121010692236447467820511579496193413593593818261753110474766189142145902921814668775424340260611169962012387147318169069326974195068142680958112034062751120576171545969415602623522784210170255749032100654335669227251870193578204952575068010735518933817655902262727366475138596729247049011430558628754488961497007031321685945111166819254284212358442689608282510183253884067180819999486965415773257519133602192794087394060865934660850428994546127216279746458759149984204932349576773883563844875166133256330019214076866359783224918421926318148721049371839218866339739498642031238378809213960306584785478536724723323293909140480549233961857350067359747259508089806807526540259851169634542625041467761377735918956600505764856759343969086844615369056336331851771653848673910973486761267096694809616872257805944221163403146983398869317209174209958408976761550541054637937302331595126056677847767357686746999807378579651915904562859417787467466154278157713896451674764214234792855234543944590848006325287416914269952034071700422800765496928183263297320706604109816573083985810261400381753019495365015220916586250477066989908084234149383068902507249482675727750920781591683160630686153843021157866537930490703411307398946474986265536067917198987014082912138108028141008148536166120641939992895529581712459777907752115679586701105369258562028010772533830190471486380143394154163222860395437203438426072837983632975659138412605481678376890697116149299176930883609163385647094904701615578456241759935514882967806986114765862165044216055978837351934520755037640608193043301030064896742439853177845323223573729307895433199452354664880817025836757197607043790443443475981455711429191043511697836489187496359548980354401935150394225155377530168449084125151125798170000490929582325479685610906595553940273183212549092160631956935340662451509834129565048329199471827602765515870097437147117961054663733828416057976915260600318522120049537220701931301739673688937103284825241752806898555532701224941598073405941898199336015816391422918818851333717538341816644943892282692408875521589343275581261138169557139499619763454074649407934728247164047202750186339655587671284391068897992431661063791779195118031006365326726860053022929642307424288297714034564126250124535270644036663308911610664325779660199851849340521820240312043089674541672771511524040899479253691085908940284859001223145093485113019955709948123031348077408679214727067714976427127863566877139531424718480861888515693860800303426374270216467159928575434502444112538682188890986918054324860323770594417264475594561609143124928548269919890998753512364885241291338782883181162355351094225402430007614061901937453781544694948309131623601959680456521091925560893445524245638465858044715635539015101028588391247774470008473027787245699299382537733146751173623827168655735588064172366944352161251882679312673472302226992698339395732473647977999540878098748992359816581482702406495087545985435629259014212535603282483317745682179262623227739371908054572228838735813363027491152035091729118876350011873797668507038723300294463130561996371125522897671857276694675128970219207314653964201583966495270129853108793478666395835646118820772823141228765276849831961210933315197875681160526547789203835868234231455767987093092468638122726460420160500402923973730157064579625981391405081379343142382166680049398569648318330793017525416593804658661113773781766807955574366908177689160076623157246768376814113410157845816931267853760431716717235703689769027276407095105946470955753371332198356347108592900103213262189198810794925961563375413202293093026906276506324404368078881710562656833537113427040913796073852216313944991909203006464987024742039941554144842690014617132809034824502264299615897439396603315658996373263895057309815269343837454559640621326170544777905133012732289509872130661516956801995286099863890927588910536250476147787550533001122613182113034570663762235088339672213590842281634474205339924403824927632200968355129571892793758328986657099289975928571240423680284368678672979684464708683285637211404280011175702354592687945559119784443446109608467055140522094616882893384632130730782504599138967195943499355530491036399457976670899682895149230149777073368340793448004366887029041506537253519847396729461411962332344801237295830709359837239448349255801194759346509996034185651181886143328677920176929117644252046229362194282386353572023595287157804743978165681187022957514312622625838059873455585082262673723317932757605136501650077398243246472494300885652228105164648307135103366107082252701464347830703844872896559807884677365916617120648340582367539176931379062401420850128050155789194507847889468104367669202902646881835030436376622603297285173826505855791023920686868999228078332834635441833680320816161176511167585147426809215084088967524226619780191546634766061462396736197177083698388645127822362772819350191500394966801292613220230745685350420372782391129319008086180835996409242005283115904412631551825597937406032507887455056388195540926871846278941716018674705688336786912946814474850098611738956023375649858442628005393530909654904549390088035688690309444858160666034994451503999241146924429484708216207763802300303458818733605389298473900869145237474247828680177422098317794485619718422569212459525074136080476637625965529294748792692169562739095202392819879594512836488825335540406295355620203667989704384422396404107534994920879928201850912385974935489692421113530983597161321218504584788626816905540735742073278106786478192180666586440466742322156369211232378316560091015510109555812418084697250892286527281696173850813566134341724501396386520354189325507222124306820619209240352485851218669949643420951250021023615211025402885894287050249130247777908009585881663016842818223411559424202619638793206771885666945444478282774327883352571850759279274958658938069108997230018137321013795838020970519616118487791540087111461038889973961352133868684080541730896027101065616416272983834245382524176954380550300864266526877298215390340624508919950154648682621212052672487784701725103656014974004398448065603067956219663841889538207298948796076281678213325572503235222308623375601074721384500418541507854019432882254672821880502765737110003011043687997609397889149773639775434250702279410256538451298008941478615072314070267764072352694779659817734204318683073329799296642940211244121913321247899565192502239824180244209123465190573104653967197697367571965316820152730231036568493893946330264984785020733375580819032508951168567841863313587852860284931313094875639614214411548279801599804190675069758177674833354053620028345010047548418543777048038767736329739828604871897403863954003627425255847465340942401959548977230947268622247783746690541123055790611604626042951230682320873767596058105108821512879455844472091587834649831688236662675751577469865467645941413192748024812490316221038130951119006766373294175277177075581456193872135696302113462019329764355864955878415990027649249022913317961761720350325527545622578509314335403868363920177870407738514684649355093472110537389991874452621904372042477958730623144086944955359086638280524162465925924055598254052849065747569636851916607045490160998939920660527025528166276248428654055708299425933301629004977764542207279248561285003789537197404877843469328049375409288997254359460835199299358447968752417482492450876631606345137225579982008204382525358449193948667703214954147183420405873392641179410456291193402064519472100246651696220682553488015598496465467721311583423687319186257577866814178676720827789499959467628458933475534110096606062004096672822144808297715916357108175889374037377525525600748499541015539516940656085405605201387736162482994930773282434567735291951124301303348744763227295364156865282686695018164711912435954128167855645669721105384535982978764962860261660102118175330244214930605576673658835851996284712988878320849582519376966907981544491539801584222767727945738466785398843571733747717617981288158563657247834727968051963425469773000752739477349616515736812998300089621549234208231727717013710690144708902487550683676617055452877764351987067046721551576550835116272460572200857190113015681693304679133996684253677067157471943200858226490113915677755544985623364461264584465458088889055211651007425771244860374867460051575565183084602287409109632566084174486693564686112932452111846967252167146620676696377579405455484612865866950978789008307803205519079856191779067711977392909526370548837777481750810586875173200604001966824641915415812838789762331011944525036085317035579676579549825472669655113153539108966407909478631171123870158043174941715138408814202372933983996088585079405609097516689780971157011830726342289326555109844630865191438899370000857875097189685556786427260549481830697447657929599331167908642898129123191704873825754519333044724007487729147815866547281052481944213437379926528542067079519708836944450093074291276649906530156034574797425046969059274183573175581967747292900900891542178131968914463276701583714360296402378945848361825336708282284003200897196029510873804528406451634600770617050294012380239518278023850635886346201980634211974703098935103435750451571225027225086334690513427053732276230224645681940655347037169062861384353122058969706377115703070548029226485315236470984346835199080235223497566146366754734994985641224802954201413037647645654281260165105077841961171620892146187005720026452539224763686284665401586786711323709657388577502228390349844987542025277420482473229701151098417464770760480689033062231492628628966230741833015566739533084918630750434240834094976264363951234330508420540040794265615419679246675819436813366330852643961295195975238821223405865606231490196245807873993706494143306002533538402158773018427700706613843752023068039124044641535509628741668429957429005898243774110113230698229139508019601061317151315403219792463417761225804718471642075756742058412516173112626669415375216596164305675583959164298984699019139519531630944153855066759056445479436154423865980674145594041228322606183331991177513981932662554216072028480139382517396405732747817109973914196198508623118629334651891056040502524853803449872655581334237492513763425762748278115958754562607196415362721136693104574473046278385484140312179193581339878597176961029896555782936949771153894744154909046608332590521882862540884598914779020076394278296037357150264394207158710551656227503618135606846705455548642811321568348682346368010417866609897615970698299723785338892848898497021121200587558350786947072734326391029391818483462534776220132421263268667341618272519401411611522803696682645152668567483970190819643338052477453468505738865937455507278574918222070960280056770212508994539022823577459958776012906397741614810239039781398349897373664849521973444446757260583809224701731350041938315304056539963290943152111829413561280677713950510333241221803411855141869904190811841050887510733526434518898222292484839009209651927567719334360481673846003789567286164225575949631142707010521429251604941648288087900468111172521739691110450242694829267379245102320000317649777596871102742014721399298919447324927694214645976892572094516115742139949026488992416947853219840965404180853642943070789792427592550239869081132363261941524132754216961329782922648482229224899544299136734217501740113811401651281451626652169837286650372730725014344200323025611773703084565141124434145838360705752140143042149756968417790702088999345962508620637985129453621934932793817825612776968355524770499009904040378229680262059474380032044598507764225307506538132661448065629771966546911125978442914710843163743116199767994725962199970412964081191005708139409762158976479995343140836848441551060483573491428433374370887151994373291625882513311486204651010566761085538963816093302137716908004019603737729973620432728751568328258881321059974271153169979121499060999352351049347864037696484091343042469986021423145135801001228644346826214862335148603883484070630397166433314631939264907723664886281958358225222494665529288322275422961839298956022539942312123072282765190051632393669696803449619383028414550613402258543256160247582024901420413416426798169791339567506126134071176216274468439934482952676935464427795373144006553754224741063401630194384232978968487504146221229313233469418764362461756793130603331058005905191500677761738370437108576500262170948296216493084308345226687419770084069491526522630615029598929400334595598057887005695333062963564211958658363657623100956840962850098185532071497365289330604347713073554775280789112688800176779810508220056458381801437000764299558961843041126890941529643056281179574759402712993367392769786445228226178838710223058425729172712110451162433746810990765836051957989162420173412706938196878234256261366128098963204080271416473434736028764178420650575091115571980570367414829590512444246979286549731129515113628720491685994247931601637907469231026870770095793776777607152597359256425777826297348161396707297566994296710586949162112013513686767707369897437314986590394380450467200768389621304538517161730844383008879149528500337163754351119164295126160009029259200909192448785999739089014217877801903146457800829792444067446272349667548298524156031507868530581334491700219705041184590501068330428022920125661829553677186149285823131128817482245287007039253654367847933694120020145482264106466445693721593372148650268255939253301468489170331163357894037242865142272854980639612566619229857077857357967052293384900262591429656854633891688943805326091145921193190183943908408871236339657944156367977540148302764097598556434586473505657681944795652110091176205693286421959663393776079655313356698693398020580631167716310028974011258298970379494477453444913172753680163692690742639208999404534827517325023344177581474735694095330492915362513542480306195591897481722698157337595405560311285658661732851710144579066815795981225189561278806160313620578497125389231133920473383055087522849111574098360194307149705406573063240417064130451869611436339817985755475164676896579301959984398221282447878695305913588198939532014149806531423901020037525588665900777594672390912828152824928274224296566980928868296980371074297971176427903703777180297811488049957482446652342672092012975290991946503674776929607813279626332967672521561574441818478141940553168356672566193976319881301463414650411146331850385842952580813414300538771789631607443921006701461757331547212141695710425517551618930825396028981144262835841520596409684307933512029945698222047221923492869020787877756556505307989539362933780496116092737298496109005533066416107688305943538452743267686795093538645280521822205361043078051725733840628550541439350446098551791890731860242584259915266348300652816400825931620293229823092321177439047853192303498509499086225040072329169770542583753259596364040961180433012844029982151021379138156507307968027539004351501649948962618143001119157521620939124709709447756061999378852279961249884719260677943399349801878013970790618564529386253020204823457014241100402195564697819253870510542057373222199732424366610067893367127400017836774373925341969492892749994902170744418948368942072863657986904127874086269706240449620824448821056918415502530864704969985320355651808008177139484034280746436882358139948968575528348425139507023257336174931463406969028586882499551634256216543104297694053442331890204856115474839911053018849898478309254728054142755247583419504122930423522891384020370669597124448952226325664273515121942458355585525876481370443330113298570761842356996364719101642748470504285041398646318944173957721617150106538181402710127047461291134029633054532134752397248989638704692461530732847893998206525928679012574886312428444992897864438672058520283491624946296424622848292473777025744347019009179995566064421775466803284921519435027545559765985421148620660619419099963279839637122454293112008042809373761251939515373661082872706460060223706290291307776720607609187186236988091929269011687764783112041508569232311080163689429588113323925855109954272496429338151570269760727704341781686092286769508126065739855573421705821115071197847337024227915273772618802677035531535328766262064398584184358745627249579648414077980231596725669882697735820318713834503789057037203463097525339618893319751119731790945256021065158346869293523355320476123030959568858125158765712257219675465635406296481634681680014669174925170189540261144418108529928569285509926970236998213332590504229365456842368722914761839001600000327799652930549652184841989934825372062480261709849733326117983359998335215019031009284883572106331715129104781363098306709397108125676857800111373114029104204437201265602370506777770220564504854748885609769563023532726752033769398451314719680844667945842589043921976716201913148118791082343554998003531482569028332001092435062509187944554977589127562045848974692341513433887054936867984849811692375778754679457723863946077202395871601750984211293990309516300107612608985901448905241593998739469616229104487905828886134021825938716920654309977812869112768891909778367070014715997874489203082148441392793577044841447924323536137939949075598626577694210730917833972346711650031812503874878851571711671371759622631086087592531939666129587441886617548797053346282319878024962602910995486455911926854381556605509394478228292154518300797007226675451494493382185740530053099495674610661339349108623554765215751703817561880921197005666180954649799810127799080819892952426044172039376459139092329505980687056701804722792498439660717185214268867502897062658382302454174728891264540586549749965344400287074531184729291447740813037821098985880472535367685604883070104632396573940225719976635502496906477361373298963152268117063661931820406025140635656891420553111844329729418889151965741685205451127444468158271541656805515467243505685166028688112853846822838861725322088012931320734283876647867676227999234909450479403197076042051235880484708278292630920107587988011834330664391739785654704322725100713199487241900790317172791613756017085154566366652336785396848631099918612501592425465511865265501558596485707360800415116179588408308611783665880054207157505931713174994789334476007611135773772044780578249999619639894973709950362917641018216087224150037503873582456762690981577495995116026493368171832153726404275655328297261124439929489682999142067473530149458188581282224387920372822794546315188358586990795071168653587458867112610305231148247037513987550101301340170335860427670784070232897193066798244468778481750664781323435368400073282686513550296017491104046831933154675327888779751245901121950396447147477392094836535303713336962415951438129200229933674166421598977755051179567904922935541004268992344598844122204928527162964016492139893863254579897281516896515367721001053523877847712112224331690500357118055894470330116270763005264351948884779421676367656885573689610456570386895242274138396429415246955995585279945910899157559325434600013381169883132452448037658368093535177107937975432084651471488228766654764863134646633211305727543304828137185117198545765159868810784374240483230234377686275268369448712249794813095167734317723240409022295225665287897098590124278876749299833394525365608130962930347201157297718855771509710183217426707326952986325107508841904910593919031500164352457770112692928920338685790412766827812871601085813958578884432570618853582247885593109235039755686910746125357105008686427086539362757239048497183876345444305917213442500630956697538164711319728723252303031648589447978671285166015660976745776661727383857044521288170647945488926265062555320550807407890783697468613489195130389254228032229636900499244423825478747164643545641625766979298016012556747243658762300965179300684857557744947166458304024507414227485413701797608389244961400180359960341504129244168724758889367606121326811344869166702695844600917026273804866115033333084029309609466998483913644811631992048058397643479590840878721157748513653100310699700923391754792885412567844011906760474914518470344705405813286372179454433324598907244848988471744510461838275547738700612796409589403886437218374067670953582000918970282832598028444354889611755029938937230646448475796909944757968910351530853534075504549410488166353656897588767552769165322976822918850615619091116202137544073821751772867645477238577913787602623470314155351841012193324843301226210967704774591480263656840186662564993377693102172636249826895266216465130617089004606969393175388177357437473345933522599144243739547482156018114872199827619383515949238379900223017660744976686536444376505964979084418279518775393332669248287284249604008426457478085605606748974582516091605631963751864780945504207842496993679983497488456425046497435127349045773900447528655355955873223671749014965656296203595065845599215999973137222269982860742663768745971178967158025614385743214022556781297794875996884497143389417110545490303286628322036407374618071461105719633542651929994394264045784988800494928663214402060405112041719817638492695241953181544205125254932806787984729386709613658627363551033899118229566744988282848031421447871071312794268947324009535147050464488539481906569496331613772350748279245505356305454405461458308918453671207239274959708102315337009375310797718326602847329899611773945257112999115677846577778951875715629570695739986770696183707325052617000305601183158608551488994383922187183931308014387237939491015417487113858553734967710667695611903186730073968086888829415553054103557109159702253874811935249423949587710601057403128791632772130977626993670665151387118073147799534814247748871075225094959426133535449526063736683331007597722262996783697252258024458578460548674543469665680635964535996744197295027366116717521906816693210804469289109819978537718145948066632678315933445605055476614334926410780472023325989860106924100862003802578983306793743112836502620095436945058024362654330034454932050786909229088775354346281785335374065578082421436159943039546519654776195249645987316577922261406255485728725414331279666430518007810085542383940792204454705249950376831388222738867435714794859492449417708096409665060251294492208370582584180498003990013125986956393835940616255082296918152960833772821069169485927891855647325940165010412213741234609468411501671941896982693693472214626931478709570871632347373371254287306023216995511036173941777480547988646425394070645897631855401047830248214111377715151444883624139955428557498898379229022390481095556577464367560657324664122657871794727965696508244167667599688540897012068242094980043827603996054983713246792331220652721806738551442029429154677869741897111045475736293067801529794627267405270980210647733542654917136316197647321031689824834386816533919330390846886157235715703445131056315880092391666437401056274649278588784754885109664820240734969403868276684586763714112435660459710818568590296505448355791123918751990660841014256616704887435494703539606247573071847241638760658845554737779440544101884335520508730166646013566217914176898237637200832343541809674889684196900104145302960757417882529620879309077480038264845014348679320122425493217794401580197830415987103517953566836882595878165561755019466384292361487933739339662682552087099174410536997620998690319513692824107742672754691777002220913128719057586543454206627023552385139077307839305960160181873653075618099216090627922081285606815654494952691504738849616238231030791415824167540828034325210096467111680363613385598977874790573208678890714753136517825964004787047882988572518913079341555721223787009588184632583125666047775176277096352243390787381628501639374364817125799216918613667066162791326408348903244444989343373048825339549735279751819376560115915510780264776632778435490334551515579563617037364158909961337379855814685429920683768346665501316007692802002265653960048667714534162199499290053910850569403440154251398655946915953658136177692555403587864311316741092901824789002859384302108510080933989318915158731338222971626161735149630436364106364936184342427728188210937484841229963970383002442254961132041789100473300355484904903746973959422344388216162702830230857476750469754515910744852714395478721368704701558403303998423497744049646050187028377350967906791328475867670600923073848869533352284427766209325215389072268605583318343323331435784874985558197674240376000157687284575113649997580568802682084845106902383390779499136956098717969488133017728006363724847628019765598086026552550159065803847968140961410722536511027344561627795242495497451791751095476914487354012568666582784758853134493875521197411633333442352301219499559397432217939818880629443750134463664491732835409474187128172444814504540685185753169625906838725635147966455212440636367265327636918521327231173240115749094221200546557794269887577455375585102386333428608977638991583123221537102008800447006529689314270078578007446930624203380257393946647313396684293910941053147332694252160987310196743390084926159752040039741619471804603292982253745433092414389291573429304606659378770244925569949833025865613606434801565062378585940316524159727602638763108784179428225421654787387534036640041554945474191730566243592535964343932538427840261164235026730481785706579271704892358057322576689297796940109991871067936207395499052884107715109676391780385834920761489853944382496564565080564120906772950102435756229901607452113196054361501159771700208910564937758621454754993931936728765722562337233000330749390273243797284446939203728428189740924632834458741021608330740166707104024590665371817350516310280683795022286218794484346492830860184247410156772147213796319342597054929533001651709749952358268606198834123116891660567096076438103579190810924955232805147180739346247991501384965136010106217501202493716936717586941785474837185982996033398789356067194352830092645686563086598523947202157356207084318191559299244885666051010079456045717510495218723977410675799398532492920544252227631752735654629380564860758213380601317723719450425565020178871436571928634027048847638506267698784636036302049765824123843954126821228309839450586205886048073626177906360738827818685245850936714565941048281560133506922735597080441413764694999319795537211762033785203707730219608325998127381889745747772368904094326478030016634349706020238216754238010121260361093202387952170037318098533347001583752077860854796940793980335096451953674205034750872825596906709404792218708403761920516131567093898443731496088057171516829405262453500918532671886609806540369033505346590685469699189561165702180267636778404623934750064530986679079846385575177096570449694562770075442356468003108659499380932907576668240308775824317662686828789496960358402286815648156773917198273207422222583184837519234320688750153791750224617107387199883687223293734180065025978326908066603556975388250407077323850894343943780382288872124574969909444188262262033726204555026887939589390787418662200528288581351862102940490629478152570293405018156783368754096618648440579468634781540747628290013310385551418593407360751434923108836300088460309229812275630463830537182162453520975632622427699830050269323066327986605921029291062704230851410505733503899243355433788586805549446841899626396638582733841463742526329573967890257927196295627688504145200254848488615384331290062883287276646097065615718226171909104070167550481425041898490009944453249983592097437105459896720803053592608316061394151265569165335691499458070409527621396791201568440207536988644368354056450711478728009170558934851635117494828211779423976404185351025560297702417538290405536593800715294125552805943381137516433150734830475365761848432266762336320922625226926473186661447946851048978151379135314290519359040755081224782379009705713498673459091388864175622726803282599577059648833410102478960445294634907526882809118113111009232031918533020202690125533313381349397953123774042628019542485331171344825053033811573809648174027025581321358644146871841970868751680421317495693995072032872965317443792621602485344003240873968897922274179418524498561799724186628191991179762007704852552004623820672271944796283255512504823847838225429451641063393693608080540673699282366308841229222477029049971604450591336225596744601301253728988746514141046566780876650203870099661140885466718482653402773088216982539569044653360299690965268064717908024088755985077568675695846575196024157454586361920072601931011054078966254495098484339967417665383598615629250612327305141011220105816892913484617715690196721006376177300242224001118194747316458411535813330576640991974856712818353260826995887867379471364006856327478849695863383026647521702593591045549485951115038084404558513789453754421918649066486195958679030511852120023362325468660800883351456310378781045641332458731485482747339115086304148380429664723961435146585215920525153924057979748395102293142427052353146844737708119616426402513320370699383485719631052686672841880096214604071103890396118904592304528433397126890834445084739474445251803356592881259297477048928065011661411645844214267946043000766267403840309363585343796188235293303181835415149899412299102897298394445752965019854916424552033740828764945128317164854500402488906767971155461894000571118742474795065967734634897250851684440303559241758761386411211405461731291820609482891354968945048144205600595185927442364021261804340091045668069129249587953986453614616183912539346784058796982177894593945423249624807195670453836950577403471784319119810497216749201645790072728955621777835111266875480989415950018640523255377917171125607451403069409537085076108032007526953915723247661235133936089663580309363493361327953244596447952025389911305931636624450004320015296885148043474874896505667126158773607572442264704837233777151664164579735307255890387117499010120799726111380464469698541397483716785146923955016542373392905369725449915087643714540987699012179382671214998076435084181005858328357166961257106348723299500082939690064665532726820406171693905121765130067852808519391397093283399081780796585414342714561955124627841316902592168200964627438942416491829448057838106043382445544383174608038925900076494927362567768039344970980458298394600008253075569473874152308700493240842173109156757001775281752698910133791939226702657662463828452233155760534726419282301679085918846303801028739598159390431596738470361773042786013712777699460027211628813599749203060322634384595221548682228956689618350622824421306211141563086252191933213760239393449075922589411512132327305527839094995949378564554067388071562838580317142521125591431548202915290319184352676412979517930011681266572371431939871620487635831486854303883124512584043927111620765050247235140335944952055803704543630517668176915226822635812388443447470260626828216552997558911727459586498017704702398517246257273770729659477091248985894690488747592770813224001274740703666441482520800989312638390295438255779278525118974214984564077874632369858817352403400166794570026572958036242279899430981584208430759488850437888296212221663583986058115432900962826489275328214827737917748516164898277851767431287215465175521796651347424129791806750848792632973771613620547722252340757725566227030052264300855182877232323666769310348318556651027507131408855972312781846503780486110532185658534133161473887565131014203023394270786886247084022189469184710714622799567941316327951953818672877001885911375756000615080584595181211745766592855359208321557089711730238969495094750329261875425708283533388798482963155545552603011656415320815563325958490864100637220684848521748615850748904785870505040346468247838502341381696199946387083489827347275346104364885704330414305146277343174683120847257243522528357868965481174063408097734244238960700765573055608634244957063302355127467700476654634716870339825571936590966785786627371403666482469097341449237226721789809151784039529250272445433151609319879617095514648887662115722155606309567567559938799751878921425909361521040979302867801528056134513992833456894376286932418992419007551294358043473623006063251321155228871423165617859701390785953231722946239812887990344807898685871839561964356294786977383169715528244216532004215323296514206372088223066612892427268491373692939586645287373013296750204111908061199862896699544542521664681200408051221106609582157146027045913716694441509203764466381462830601212649542246138074432930119546087098923371487261106439366386921608387459111414824421096084021902248357937291769161716436576577933222280973426286332991076227675493500151377793446185829689404572439857614399664926798396509591421966463013687341616975722329065084399183652843844649941288814656927459631096656394646680125999881522710129780523013888404096650461811894206718182572353494836153563187949795360633402694211654169163823252947775636004825926016886513880585112169675821808380463430559346605938925602729323815964265646637492889899435595140622192384797548981894079993355208858390855251090296418296370027196733743422966532010556385605944519673912717718417215767849313196840610979763607117540255683610491812405067354478606060898316517492012809990137428535141289961065865584930805762327627568012888569600500900165261284389337087433673817906873065035689929033245347982965593872133107574203944795823530839869735934608548417326626389993841120563612455494195373005276629803295720187285504969926081235293713464759239795577263619146988613902472619554396739986688042130478088379739786464634327722303593573375737357005127626659835088321074359597721133623405405419459350000431354075643317312060836681916801559370650603550236641900413762807995318762759016411356501949890614696240644194063839649275448492256675050963938255412141894248956174996724133465287722904756565019661892475660429332106680752777573673099614560261784648310170726308212523340360872702359994499903703177132004639553177779855403262485563396962147778636605846591430022464538207963112644710989710319001177430999275143647111603710764208941819928921347555378748491934016701821258268820923311743077101640260563570153070904370316934991233708062858899133238699991695968577398788229844183742955032934130775244264915914908972305488501336459345111355165590206532634895177019549176106450459841997778348219646531996683610123081880929368339024889909801060101047632216735896568681303084109241741096319961139091749276564193660190548774879116694656800755922545530326332848579302033939737036064109653625280414821447593209756186245228384615183381038475548837824350472572069426360899475118604781884723918751996886765026647974606536341270665233728154662775598228694830255468328655716444854304061709827588103668121431963468407332452993286210217887760978623790965913888412712249064797969818536250629367748564112974301950797579338014648043208389594022305676829272752196921913271073274649441739798139041317536154392826569786113745582010586965247018574446779241239482859743813794460455430875719884127048445892668534407299864051186064920548642145251813997698836273093653050307524007416214357158426140769318094813305145967064155644308603303435580496493896435141983430739660403273734063220336717462047837579274860107345398598525199139618181204559806483288247446186470101267272740494925527499652748611314404376350623001315423046197386345078408898327245688950444261232503724366582458273036880142579813555795605198028557695963691315045100237585398887882205323013417864436629118393645371535333395468056756488012899755794153490777271983758154681589147393706003661391262743450171043857110924269806868080655508418499239430749478219687023971035167592847171874955581768550017677423272214561096346541744659613730131810504435581425326578917125445120244797246219570242874619829109493181291871243770375301895470146111979220163720255295683594108174464386558705483644943100449269395182749256690693158572619293571565774669278102170652155855517825376475174725772182829859813612382539809400192810557780727582295644214539140908799202081633952031109962168179381198953394623967302553088330361464503032272028363424099792340580111836820534998702830256810013394319349339540160897202323083509629832794721343162628873562844272885698021515810742737907712471040714591577115446542917995982334785024575117460000133761283590153975574218370766262767095377489144828702260115782388046398586703799643190326992002677033651847706715622099230166997594205354839290447838694934658827670303798268945694823764955373094001599825917516535969547384491217236177954874000940453305636565105297300628264713694307849883535917036021770127223354428457689732542997106488201811207314535444497816909191056899334563628758464128848800853248356573974481301457172716778316352751210191562742952914014441553212710966965583844205259164095644807592141631915387256814160376835929323729936575547025816605787174906056081230636665736090109350648154105098311493043438993831142686093816591797813032243934026653880805360353452899589969086598749934957129857374669975753011847069480983618273305785236874692480490367094723894790242181716130769757375015057851135275651830882499680684631451875341407086503821117285692284658139972695329339358174475724373348587967742081070379493999262850082492749801110653585064267962235884602866928989658216498469419966070793367204294206985287302004503263235669066180270319805779489018797332072928841064143271217099045094998283738169505542640500475241220844805969466622686394455898897835942002975310984548381787237020073967626246548363716747544456968452817576436161328657194050312133602073091831632473770397475690273707552762225662215744621093198425456328727159535396042060821734824930852217283085516259675301982195835248588208981653744379345993828012611593345571420744875106948561225794335961426027729254501330326429002273324137295565952742182598553883838796018344033640600564669945624662141910277357563515551434964674312346641591583871029318697150619845654371575282868244433090737442418804359197783788662657985261654680157483299672021527856599256708092182430849455620675084957828784121553910274593357526148953132625570297547706277324309812735733939236625262369276548343059069917903430625421826195173381800885312390722223895792648253465968510338811964480868139025436865374164029168761999944312183174760292337558403347218591678109453114222303022721158721990510166468051511752274344335329532863378639080235408923856982116722496933117096431463790958681491792572075857416097920723205500954913565904153986770852283355716738018908899549797106299876824418891174458317246617279218745502761112807549615987097271045216151183402437693795457053353111648315384637938037146459273756056007818240942353223768539934081053681705270367305699615383107015638749319652275988853024404011423986874005216506087295968570670317561180888198782469178369124178965791230530610492489095130064717979843969423359327164874096535737946938851181051303913793816497138789716079837527460827455411950478890815850003314285569036367349700607269705879660067668686601059308995520782937427319910964404864270269390316117798024645562313866139735517001294454429681054562450234843940010204269500760077819990241228833761707316315175024768094685779532990939258224038334507487686366386048269785826962831823890518345687360652066654825015736440321494770978389217281368096973477910594237036657039627098173542229151112219727180714864501114982739342623545979161265209640191852563315077319802004349693706932374134628185911081229230717758064968533949438401455633662754624315521950525668506801627025718218105447003392962574829719195699462785136633783874944783882548812824259764490328466048783671355029433103039701162526783488311119912023887118888172645345883633963548733723636201586952800218597975028574936056189920735696222698646245659437551908425636830344324086937768770695727476318641954469603194743131262531922457957755792329255571645949087642584606190986816057007358301072781506494331585098254953796967700363456877212503167000965821040479709735230058896211831078479217132289852001176325503400447896601745023884714250179917747492886467869822129151436962707610223480329068554381515171695516959364909482516218882348685636069752333267676429034415439478961316708600470335526410092154608631824490753834442976231908297665215590436639630450083138948255225227472963353351976740998410884676140321710087639280456152234866344675293730092254035341202268533297299800473142327234188154487052203106812168471465797870225791142054867089765557656008609376239773145320159532298845261710361891605177463542232906656293418832932001894944277625124203939611411910355499977094281996714751878252040848073658848912416766526363489747476704747842019007610271347086283227099266256356826101072658509995568045051838626941275650484684854202985063644411169528550931913973998458546742416257878540190101277030060606702991421856512059868793232387912441972686873714173507502086983354902638684725650593430802856715354001036114069501503025849305604198919970660225206120761812665818870894252091005797959760708716128626462025502224713669809118115014389725954367041311994350466551831834958786453792346805997856017020539033076552809263226745811694851148326899633964131498562427599089274406696887521638836573313762624296303462788034112472552369816217519444522083000950269256047869595690629557991504017599415446334179898996003310874098723479162984646462735583959725529721248260188596768720206797826360817920117734317159251259425142401518878519965309715617418347930086592401910197552401323407984206607874832797964761645997935092619916983295113915869696442566999347293762558577198234464814274925861345072733033511508422867898296323731564527638610069848523529891256952688526690040431060446467330947057989481912488967618751774073069083595522826591238323138967676061718922293871461725324659139296120208676273899537678703700469231148048602739913543023638670713170263638344794156491017252637831852301141722019075832703280587985580291261510719650553415674621658466478653974849326915619327539767917798157021052069280089370620602225650976309713516995560268568731403928455094782833500364402987197827761799150559730194133547925989465697299347801232847436546699251913746512163640412498469655971552476029086123640935039155088677628832388356293585993855591316394156025808492468985722952000105366554570673407640248413547748098336334272311104913870795227314570226485019087439095387539953368541400868586504647764076165999596943223908717603682347300337609900247112929122473147023038183258754947708526187037496750274409844405422570118510110563404845962305478181271921249545717071396852825521991934077331656192377905621618171496075157095489958961985184364689688570686941249668976296784258286760207393882170820594342421306376254078922180747813913527809267931349181597161229609922369162338772650914225177703671258069784608017231575190620954499901800528851395440864449784940428180076253128621045326280491539792617165421976294732851937940318973352583703601856315071280527077291699194890257955150849372535715710344668500765708658391079808326416531598327667671529335467411231488212928638132632938727670781787607176315037052940077615096688665342088999219379276111364576140164448476756432334850494165687993840885592333472174670892775847504426820571031527529106647649573431724404417642691956513314579819417148521803219426844856989220747638092169029002445991179215317849210864945297491219580418539143512648535793635910911838129378862487466878362498235628327487623717180035580958568562305674208544861943148084700491498768790840051110305451141353178896442885349170978605037329561119405082062978397498357858331739588602854446882758125691590351071830101741231341612974563481473522176448694155450843542190746507447969943872658895174158216042685521186882063249218782917189001913630309742905178853352319036912383124931238569003667588282077026077345603224646569659578334364675886150574955707555942474068578734742989474194048297455258250301061953355784241823382452035697741892175918306833021396721488324653869015734368893229323328198821955562986556124154294187133702354101862579176468282992627428733286983007665342173043053105278159125180032208633333494240249593776131762166600976820944925354630238219366658735068122542476462566516315425539830777389062255527118681615649289341672257746489954195181406919582509558630304870599036826940272924031236326888891504258789015919027401923475336519703259517103903173999647935004695692442564981182715298579233062454897431000510645861146013845282109921522984803064010081676162647341780287532244702189020260116928073555853398364693186031708609772771137015262142727611385074772763053318671705505328638952184214667651949702086519157276553425426554508654950217966770278876115243122321832642199285309342800920308883515152126417903016865417521821368354173563104253771521804131761023942873257590719154599221282957227230191527529385394295294930050628405801144236588225222861255453777237745320595427440639715535869143123601498389964453510380771579604702001957401801319680938018505107686528889589542057304131980174380891852102615246035550418949583300001129947427529408275586624671067425824632423498305499003965693326201184510882795383315222211340921387765293676489358391662591255370779413378605971345537295530551495400759241431999171169938253155018097033783982476080366736544753807478901280117121217729561774569768616622567051979686702081285631667590439810019889804477699720693814510499860789207996797043826100174565169280448082539511058740415206009911274068459881243420625084552729847062852852575875928494976266976283858716031874452572715128722906332563545531073957611561820323857684572029210998632715695307348608078463112215143558972378143920828971335085747493708743807809692993655931567150600267856044205932848866135494811786992135496572522044021648691833767564279232032973555776491513673302320454779575688415164015939225995713555357140119244662491926328392198218983898675324316365425718712013948433844889145204497534661198387242291300541998236684814356977058062912521781662935515652112049670034184422961462996507719496285035457286544291206431010921317555698443135425730262768263889393988847537464066220993912440657431000284172518136074551073545809471267225783112671155239093506708942232325868859894776526563744285092176529326289277866312108121355148330243494821184204140311417738626087129501331147554060562262530482593943753305531157065117651041355522644999185869046317335569582057129806585696179857227792977228549299010060597648983556916408738790145663041808664389317724573253978319831399811525169472100745915413404173675370321221084981293707448424451850065059805011286682413067806302121380768261336240660618915364432542612643508005244830245530726470808961261548278143696261968656423540456664441877378585471124462420416886344634678908564791677571361321264891371886574891538677649371008314493373903554009205185194746383786311508472060764809140153860020862576760349322192315359366224578057302320944319787894796892086514105795165609327270137570740806473880019435292504622910511997874574690158771596912754663407077933422013235343552285529729410170764001748868591123983885415612296010689469247461704779415082122090814758683359138081495922671284693774111847094983518618809367509278435911239288586279190296796383523095677710771862799049360236225290906266192998571256213034063580727649085719349598619445693694564325818421657835109218948310619623139514464951381476238229153382966869505606286543607728430390368817629873504688663356589088198424065703193576990087206180906438523831989331812109160076058385019668909299309232376926353663416344253747023651965888014930659624338431931633670633004143166966198229694682410819983094752124764683467410082284838464422693425228203627510046678474415579052189591494633794077649107071838617791388996761031711175538111915446850613074138055448749398561605818625990204954133714963235162879507612230146878957884185917671162348883047055744050921081834631845357931917704270009683484398937046589979227146652226112788646378973300482092292318519573831302363290640173929494620294915235308672697234560613381451006521769983421531347995385404104655814729486795252391507626248500712452897556071901823448359080923653421778173254097613923345040729370269123276117400953422573801565947089701433504104917932672974557843316695472045060290407082432983967168280396899016946875089679745434724475600938444668405052553286708972450606466397998722099825192392597870203471556578867373581632559559818712972072089002578184679347291709110401754458076085879908881720813131367585468322948083332245774863914646226000358501163840137928583398544827060298521461418423077355464115706122573157007889032971268110380486339980682050360475583978437764910446300173290340671858359321313896442886249204308982967081071394026979130034789651901267726993269189674917496578271935988595572827132590564070499257501297931839801699767769392252939369514204548132049034627134792200774908439089352495874697842163528164651023480172876063323819443260913260362196095787796472573716199800791385044018474032022729374515697555516375876934434304627744778589085821037035896977986704543389851036206761629501072899472282440109127774571015914628297375295942955063873231816610081713168910897761278210585172978961808317279809094507349835458099238106022232208198116697868484929875573060318295518613196726568146237745404047477222764515795334271466007924270766870485838993352390154828259231359654608271769199910631647899096740219075502292223437174968391597124877937692454200877425890193753429284902499631022898024875920226428152228230427312082672416621237731433382774971979677471027237319544989398805156940645478383352630516030848875907260242083519964998041840633426331582711212971830628152817207248971162056117526565157467470690816176676106712009678485800111583642911816678321229684710513259821752480036988878282787440581034267613614587274097787713279779412842279755150067788545445536442956418157045406265114652749731609135358619617237102947327465374587933833867727782943281250143877800365103709951591269456066542819110387774870112975801338211568926756692002209189073585830428405294392732749518149162505081103657005583771865356319256265573156276650438187839307292207022470938614694945372254181385504078342960270838295684588822803338369551080596240641623853530180144977531416782426323881439539147714357771354083859419947726063618434094177562624926475253439387869296733134562547209933705746238400356445758768799292606512140700693544989972427129797036692427940492077878583027216557940500785499689389276289295940452996315767909178201657987812772192569387997078361084279691971598192208340712442599633688192256750447691939362953961754221428664951998908862800021567154301036066389459843861676250175911489211871311667077296133779609110886351050870758246655234244284308580592112098176093666809264645652900933014041105563866131519223133076835264077995092293270705222445472564093574721612775898590381182038513721460604970316736839468014211748595614852355034433375306366927503424690723864094036565108470227016374129937528751472808124586382943678358517195902931310799350642315553910237446151424716110413568345285618853758532421198533320590979950948972690277269980028592053092595589097255031006369191563909390261558514940524089560438353639293865283659041613075365176998033645128800457463589586229185213939450719773018084209227202336302601926576147231603853423067515000147119184925036355253011091694464875495097135112928635284157379715067590122899468003214795419396828308646110950093465597034129669772779178803190074225613777457642050232533698082453785020382839627535963249952579601891073440220297710906620173607900983963256227005079927686144763588580036304389369722529034678148521462194108505688319379758035276967120541210440575633720840882296730469994023294749124869519257747482431684738734174424473283703141540210566565591119214585134133291076559769123539947629978437385504207801285332340440649568465526389286631087351661370031677375747401772903816549370480986911806460791455567379210610788804101259328279715923634171596512868217261774808376098236974899205462631398320825969642612116531306666577933316550221739473876796513248118988878466479574905263623195875420391768435229956544103575423943116624251688905746399270244318634301835618209521693382416022278513685213649441951088812278809831565851410187527381487701444180172066027763286042234714205656342711741053827620241613383087498785029687108051654758763642086573861231160496728693347686747696920997394051061474035765439078389633700980640984271375497656238382229864824535812337684572031754663111720214343781763447726306475123408366748619513547827611745744754917533206971203350237439636785353773199802288039779750151123316742002069096311865455635351475236402292669785900360443273389868853046941466615283017969243482804026368441515003495223620579641395906870560412896531310908113435824585362390778955349725234649485360106902070966968564372079232141422688767538543082889848063202144187102787649945023183017508209924786746831237067062758384731307948783224518293224641299786674652997589484218959139940810662464801104840722382654404334879866248006527154441821241406583931589350719167469282668397583673924946964437453648142241052513526719120989811742582824563814035733176099605591616567602597708374624680920525821281804041695119309961860225402878066246755401103803315929145559174154232633007964543605613095506947022459177320051401434513652964986796121526050646227856394859291970157870136906002949201310680333773144863300219330504530449701659100917854373024377931469299171518412193780719792940100304000195978404573018524295646954413466698020635802383036549506966920315871426611227204484874404199926894124077464181243827623157042793518083717246646477184563686258905020483578623962105535105587152975368069391209826607701874552860149744500966291950157205371648673782337819172621142680077072473056939060283550849958758773462320457384750248582694881307363317033572197107661978797735811886199763124352277837860148940818509014371734210526720177688226151023200317861199911485518203462615630641191003406477149973304996290255974673298267264072264394105685633425330501942493215647658548228207977779654653969961878630326800845921189456168606560880985560529083148857199617859643554248206004977700267331159223541821010458515215285127630111781371996380651832633663408109852908586724248727764149927514165096715265369117745113182501856961663547939766336616795047611984588308990451307909853762076964687717708867642898147761398802877276788773807176269548647546054344190463443499496790017491269033613109129895019497937881760706883482529378454925315076086165505999775327629111831480376394933607692180323685122928005510601739038200997919751585568725709879435300188587063312721420103708105407306906256230358253638997773607671074074191396969278517713228499442246609752197131122729694817154117668200811433561002307888828055411785621573598175891080082982167088677932106927765739767971936962753630513868963206798109222627919843448080785572882159239734417563459270123352953564546860698770043471996756628445983735934173105299461809030618053984986482592475198006257674965824580543988115717338809964699181006759314210252489718710251955776483203148601881648243205346305811006447148265481869711857436709038137833472198329163830782297247825532516514893693064566970730118958965711862363892514339386797052733063723174350657666204987926786159573096072333814177340965813321986571053975946138775765998722261345091792086278706620605378660539427196646239666119181298482303051519396210496881393869451820783442765614467687563238726429435322578733520752910828739515967165323789192930981644022312111022274255652894818841092472524489528748789320410190718631156880795646021647321800071120062097693077421658455565345432197336392900522967"