import numpy as np
def isprime( n ):
if n%2==0:
return False
kmax = int( np.sqrt( n ) )+1
for k in range(3, kmax, 2):
if n%k==0:
return False
return True
print( [x for x in range(1, 200, 2) if isprime(x)] )
[1, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
import random
def pickprime( low=101, high=999 ):
for i in range( 100 ):
n = random.randint( low, high )
if isprime(n):
return n
print( 'no prime' )
return None
[ pickprime() for i in range(10) ]
[293, 619, 443, 733, 853, 521, 991, 547, 139, 773]
RSA¶
1. on choisit deux nombres premiers p = 3, q = 11¶
p = pickprime()
q = pickprime()
print( "p=%i; q=%i"% (p, q) )
p=631; q=293
## avec l'exemple :
#p, q = 3, 11
#p, q = 61, 53
2. leur produit n = 3 × 11 = 33 est le module de chiffrement¶
n = p*q
print("n=%i"%n)
n=184883
3. φ(n) = (3 – 1) × (11 – 1) = 2 × 10 = 20 ;¶
C'est la valeur de l'indicatrice d'Euler en n...
C'est-à-dire le nombre d'entier inférieure à n, et premier avec n... ok..
phi_n = (p-1)*(q-1)
print("φ(n) = %i"%phi_n)
φ(n) = 183960
Remarque: "Premier avec" signifie plus grand diviseur commum égale à 1
def pgcd( a, b ):
if b==0:
return a
elif b <= a:
return pgcd( b, a%b )
else:
return pgcd( a, b%a )
def isprimewith( a,b ):
if pgcd( a, b ) == 1:
return True
else:
return False
pgcd( 60, 18 )
6
Est-ce que $\phi(n)$ est bien le nombre d'entier inférieure à n et premier avec n ??
def my_phi( n ):
primewithn = []
for i in range(1, n+1):
if isprimewith( i, n ):
primewithn.append( i )
return primewithn
print( "my_phi: %i" % len( my_phi( n ) ) )
print("φ(n) = %i"%phi_n)
my_phi: 183960 φ(n) = 183960
magique...
4. choisir un entier naturel e premier avec φ(n) et strictement inférieur à φ(n)¶
Il est appelé l'exposant de chiffrement
quandidats = []
for e in range(2, phi_n):
if isprimewith(e, phi_n):
quandidats.append(e)
e = random.choice( quandidats )
print( e )
8927
quandidats[:10]
[11, 13, 17, 19, 23, 29, 31, 37, 41, 43]
# On choisit e= 3 (premier avec 20) comme exposant de chiffrement ;
#e = 3
#e = 43
5. calculer l'entier naturel d, inverse de e modulo φ(n), et strictement inférieur à φ(n)¶
appelé exposant de déchiffrement ; d peut se calculer efficacement par l'algorithme d'Euclide étendu (wikipedia).
On veut donc : e*d % phi(n) == 1
ce qui veut dire qu'il y a un entier relatif k tel que : e*d + k*phi == 1
a, b = e, phi_n
# Entrée : a, b entiers (naturels)
# Sortie : r entier (naturel) et u, v entiers relatifs tels que r = pgcd(a, b) et r = a*u + b*v
r, u, v, rp, up, vp = a, 1, 0, b, 0, 1
#les égalités r = a*u+b*v et r' = a*u'+b*v' sont des invariants de boucle
while rp !=0:
q = int( r / rp )
r, u, v, rp, up, vp = rp, up, vp, r - q *rp, u - q*up, v - q*vp
print(r, u, v)
# donc:
k = v
d = u
1 -577 28
# l'exposant de déchiffrement est d = 7, l'inverse de 3 modulo 20 (en effet ed = 3 × 7 ≡ 1 mod 20).
print( "d=%i"%d )
d=-577
e*d % phi_n
1
e*d + k*phi_n
1
ok, mais d est négatif ??
https://crypto.stackexchange.com/questions/10805/how-does-one-deal-with-a-negative-d-in-rsa
while d < 0 :
d += phi_n
e*d % phi_n
1
L'équation est toujours vérifiée
print( "d=%i"%d )
d=183383
Le couple (n,e) est la clé publique du chiffrement,
alors que le nombre d est sa clé privée,
Chiffrement du message¶
Si M est un entier naturel strictement inférieur à n représentant un message, alors le message chiffré sera représenté par
n
184883
M = 123456
C = M**e % n
print( C )
41459
Déchiffrement du message¶
M_dechif = C**d % n
print( M_dechif )
123456
yes...
- Comment faire pour caser le code... ? factoriser n pour retrouver p et q ...
- Pourquoi $ (M^e \mod n)^d \mod n = M $
a = 451
p = 17
n = 31
print( (a % n)**p )
print( (a**p % n) )
827240261886336764177 21
C**d
6202207498023117368679252335985311602926092164732005463029973663654163134366636084932204863624670062525967166791278477897267257336958436391204512673992518422010809391730346008880891905181998129810622137619931698410530423455541080996012629123152942606116399115671208825803288690079085675855454143759322862339443519634640113976490205580179910022911650406336392022203305816867489346251802258978718733847822201101119661824326777646227277408688836648142277730796863446461064464618896569894333132442465184024399217296949249178549682308387875927148462828496345088799759877384256310002644539607695001626241187065429133523192210239705254236679474089916844802476343096441194326326972046968702918059310441778056019148284225836038177068911592411374474587974552025382694865089407659883878303340392471223466381122614501377557756727351672797924118644314337186328741968934608773976712026790927168387128617690301838101252607637888315625602286168555452345339108993188100952922303764682617156319330970598534096658845657262109705191078791589132571408863509387013313241325823157044289900095768419657329487878486681481029667657819042854201480904841909443683971745156685797787944089083077206685985395488451742631112711957063297296084028751367163635227884552754198071884601822661409230391711478153750470621003595096003176064871961626691016370317248345516373583179642389524164003656594489775610354611760161130740796661256769469795023621581943210881564852221972883191378540199324911054793670994254154972056596224575777236152435144380686884598514306228579958146479116515897665029208950478922407573927915986204656740874368805853764462816536810150624512206655842809075763296252012621733705115958768947115305381122535467934487163713452769191436098339253098698254653667078596530696549774012553467676693122259510461122745225156233211677552845088716012650852136633796989445193682059449403059002057516487144445559866642926481346949040178991065239566001758317515928834630465855327578909491741222958270344011192722699858241215117815703240474562656964711001999529960873067296182208399703705460270394802261301423934728693120316648462769948413859583552473880543352977478014987136985707098206975590602631798573689840367793823848540959621561607266707189000749604976548025436744291569566418387547052228785782060048336782569034692316958390182807819947216024011305569083409849103970057380918075345323673003545292537558187337449962701225513343473838667380494181625286395300581624547005396668246793023814266130060769470525926855258157735402827749680858280184936495368365818596404098763844154984666032889453362891269927791937209610013251487083507213315901893012762449933255013631997673755892197220128331652621829376431814409240819625692352731445545576567547216662776097961859400733342913354877336717083684462183667680090418083830437843071145865612205218509741161046352193225085140858200485059725070541182365538906279685032827881280867824820606321808423513512648044872128831805195999554010642320435346136070840047850013301298585208274257385507494681872950856534918358271074517000406876483512885349650592490376374601174034094481587997595984036474340963329314220173890170381029702743869181525059640766030291110249301763889698194378040029056085099367008065111935800956679718173986064089246968562905798821426003742701273942084726940407328340665555076574084655785859576998766568807413682631434722118250362436180295470074481419214524892655228787243625269286094618011728723601673027431362522794729224425812392127714822558697438905636964576115029396099633843724252952245386630782755179596821852940541496124009950551240005411112583754139042948981701044058620637717730616401731793295561188832468525502167455179495861490214346520645984871855375897498405619385672542741490051180494986062031821876009427678863377772928945068348725649116081427449387673924048138392080930808432046672237795598595184279920919204421561094421818186455876046908233016304388643930838499906801226536548968681021480872456460010598224343080081960201399405274592012822079913342055315155577600634254915543642049311411196128437020891798595934729634353085247433655182753004059735857940944305461131220201900739510989568140526313230331973086791347879513258098931727216953323314543626929961498565847489434331423620414382832818510630266975978370035959821136367573073982081031896609829824859460932302317918919051592271141509258398837287987628600142993388954297397643160444031726262218070285016032864558011273951936868361341760872445347911768686963836877423762094827205746024544199515962337260251706891171198084354545532135763909643184849189321675329408678627811122337005359139181740157134743281636303091695703819312010135994193375231460025163493242986024641196949272590995918635379137270343688662931697343898312779489631411684252708887893196218214560955318773710609016651660322045953453518060676383777989061219073023078490882551047854066533269143547342829964421377131664356427596168875216566348214336688359962030169531369404721988152202292734651106419501156372160630861885010883015980254544840257059179858200239541979624108228255515556675222001412239278729964284932708101262141991078892572362306190023805799296344533969680255134073200705378205057420383905002738236345993424410967199482048646252980353644520237581718648654566527244903725450857281700830371511094039666555789241462711627121694672124027047703394717126014898954701855251157159544838331210896652150835045681815799524993453954468963528774039780748464586750147104254248286547272278285567351926781401625683539684407020486233728891668972596261921580478837957995461405550514219823322974734841136718885818049456196329691182105954237669350836761684442236777187299520213871908252705679050455942327184460932066967251744175401353205210133566466563851398736900701484338165511368365585297272316437356217612154224829250134207298470766948938883667472673165546587841584587697935757147737055061310640602416214408464767932267394517230115540659609520297136498819622866165964436426096740500720504895785955559895915556052951211690163832326637871086037476819791648805647824675967069678280583972302147746268347043872713860628176085147257379643392528999980042917948157071734391111814134740464374528774846869711442548705937834001839131791148840812924144754994517675735036120511337545330197368507706226673153317349446635445224904300542008888272532674581426270926426725987042470680135355459461416504325188843926958263476828857543315820903692021488968403310959184498134157918080241637665157650996119798386367683503147492621308306705005398579318341445454307143290400598477054361865377514372353014148857300446902016244837233404353895951995280449741752684942836613417963914364757638222502181080629126955826117188863848514517143461287314588791607925488626758390474332942301612811208164321871422691169405097359060447862416301504601775677811469959376287143241026410123414712362090818119587173993517198575661030421693121509240624446823138624678043678024665866447361654929159629857275926179370442125769017855777168115771625399962084674433126970214361441570392323732903656441560316684222578792701602886986953822189791905294435051787839531317415850607027234812101220379582037297938192766402305775031881862753681276475910858059451467070312097583162891927353541596733924408628208175718974829600797172478457830705751434637981572569135202448250604029681731677022640400876239234382514337029979869785883735033782652042967912933593507288352453029693104148298218677955245928033147119794545120554977512946424920612278093106779033789508074183778501701274004889467394555947673909249697932619492602910441482538287158153687123352320490184792558573764520160626986014036434295487824805209325272204466062079407573031355048823729122349115851896918973533126115712727717423880886909202862060062498019217198823362854764777195605608567640053358594391099668040839000526424086671074844839672442132807158039967887105815022580521720746547637494657929493987168892180974571292171804542448512912490280327450699944887819134250026248573491320230539639653003289042924464906914737393106694683583167315422523861959497917679726403756206858004023441468897952397191890166354258166111293751518201269969559278367963499387143665093888149813211469951865868701179073619801820419002031175259006318621406704951523188787618924614124441943116950330290046464474512700727446935996904281119776963004281717758619654160996390401824026210316153481186041139657482517714515287942386438201526933056336317235464301589199274735303821743758991456552895347530615961333398301622169697853856808790225106198821206556687991544682658888592142350957139496138679624052742861632730863924539413800152826660575827500060316659342602444900480163638232471206107819146607751204698598771567687679352119388931163454592803023649597267161864512540744627266887985851025433243320905366461315512346891093540516688555407280222327717892604445057971503232265940165225381536897155868298869420493483798428950817915189881166211955967303657344505087157462422295240699564548800950079590216578664157668452075804755999074487063706516446151042278898349765399036088064794140776334950119488368163228269694015322803009524926758976780720714843350402732345194724301379979607466179777242186652072617828669032060705516764079766530242277829777436970465588830209473675244964094608406422587910514530550720125617065691081400338798062862381828196294685556573640810706505624904726519261331202756252341481731893310673397385328903553660988191298209892080414766581320679741311578326691953927526897798339862147387238411962422604773207608876974459355843954492789218498679655996993237040036104856757468053774954859459999882208496932534140161293680318281521542823376270473096317686800057611517735872579909377045494863162872508150073026460900129337796597609510218798166946308144552731294606350500759703326199975911550954780354459002425385998580703786120783767135467744216980009828319807685592531486147401232113866016036419656096638562362883405984994602013923643946531378541314556636426707363565131554005761494333001400557670974366125946243632594702047065716766221613997863933863448677753166963571464256592954674755594929615613393644020715260336469828873403805423894198947038009162246992397261141534185793098490740128233327041239921189050839885460529222149050369649684785258395001125593395402683518408633995355763039199017336891478093341900729417233246978639161891093734111508926422544470719556066883644089350041168481243921289774106573630597928520679232656677003982031090725762889001296421556391255768870043725547772674750856396433086863574489126469046288459135523636901906193870936339497688976132591131413496507195117144520610508086352601433405633972490320652252205468931991939346320041372500108024339164146016571957683674345491312106545284995038744361630683015556330766614252418904002734628917748448367142256827244749896777549858193865765851419532384580784239860666426422947010668964656527267489003441921053905494712735300480301686860116499305989802736099015147854853862297764154568653384103553155532474659679001636370112231602030714230364950770007897672764941887375964099423947811713717471984090211849923236985674102042608897591511465432606226207159929405111284585907111313243921110772924295970608612722642836624155525145990082946222600594665129015222389554931453609005584242844860080901123561041828584338643429034136441578764205137445320366742396586616927560833451178912053627778901712247616193536980940280945066057466596676127647097754353586672126489116539844064731126488914420723362107239111456063180074613268141974523137172040932260141523870674009559712262005367431405912887589082021526096197088521739354565413464871095700669642895833036842392763758865479986793255687130204873381992038251233528816714765462672130672596504545784001232128888394958448623974222822925175058141974105749250013060787873985514733997676894433484749751109044235188998355283972591678535661563704008475262522207031956976947384865903923002918047785976275633001180319698027408697805228877096358761746681399684335296840955621998996274363814909714570351556090653549938598008475711877153371004679609964561782658461752700610181387480797839198552422080343743241101277892448240002486735002224527367368454205079480751747540018331112348638942081213653356354297176848642757422031842622382981993264851018185497482614299562280085297030434424352898070968162118099307603020641684032347761685204531094435925600057147846957803592180727850225119481040920987438943192751287657574717404868995319312376240254679478238398006229235585578357354170076773658512860111105669342821282667920010158083168638628524840580320234935105390154086666636220122757608792718725632133447105445292157623259844703622172457475155969122351761556460999615949345001117762341596977309389202650353494779018737428358890038118636326283595431151885671362040158694407251754531572119681915040607079337164109104812830875184927183877912627132270594264971080728077589794135397858206528885246014086422260321675681468434838135499303809117280052783794927937400944173288041850501491353892502462728430377351333255901129995321796710370164776449507785021713916351238332613714851689038416071133953359991453968399566117219605582729869846322159484007548453490537743634720019917425976577319714778472967462217901947294586267379244429016890758180270639933640678703508609253187051794391660429299519356159931942629768054657537430900304849846357067681008729586346320830915153293680160073236141041000742793782436497689858310513744594532854271755772178863927306502749883772170765662710011726045543678778915053039254618800388459624955553388621435550616972654019935592899819042145606125349549121648435875517170905234218456147116830874425178348955881085534849410204177200230098254890581564297426546674156168902227574245034811658771275031109856715611641604909088205032067525352569919008755647393089849952756961231522311586070328094436409553518074836809988613948760137263124089409261580970566605775241574869804728202572623422927365029330483566585713910229741929177372574367605198708233981137742685729292154279691966763768422783989528144617975467633523196743561400737074386311250550734668177032520397111729590753415408500014627678206574884652900805749848368983875027095756591495146167811367953331075293676412706360717647860210509768223806153380765010032153234096836719519527426517138124039390289079570766734751611057786396398177855987485547043493481118102731923987780307863505550882600834974332686612030290162006439404690565762951618458407356327069430631951525965773422034445034215668261793015377786843034281450143029551555143291274884890656995259415873758359557176999711587915146755695624803616506516592116559941701258709953897081514171688307273940449714443200960254847221431507980481570304303203068006161564416534630548391216424940036255857794758896711803082473208236533178114292725978151163434839036375007849849782385679405027945323622883562394905589433827605998510361839303000055624336065187740972162688769382847142978138811217052759126635781020327440442735471489509747139479850350552677062273571861417728510112124250128350653726040249814327975424312663698272533189183061678116723039226554739629882430005098628099513438054421203150337764291933948793091553591382144749615166008530908911185281386901484689312554265274817878863063174695946938776566065520599698391507852175155298924288512279564815001654858560276542990151041750311135005852294981477345665473575348198382682969565083654025754750460328010285114425662490925756666659758850919172065496776039574772813013338436083721007627156021583821396274830100831398976144496702939058557925457684212672353659576788721818853874061499333155881863398603967015447441866665876500619263786538693933750658207557462938239050390893233136816097546995791888344457398017356588605235116057262131563741793920756605099740705404784295460087943463457253136058215359937467456197612549700621696321203297185554595454803059360253212432223404867751517650654713624432671288445337755202894810628779146768823291006337096516592406777223153183674238017810043781454575396527480139117239305268116049224351050152207477277963609821585645559937091848538025509729021442200759826637478786283146502984869072812131334001410315264091128193243027143646628078047061160447464701856090692977801797873118753417519031799027257414941416933046231376432395232321918968451569468420257436301833043466772371158108042058595024395578164998619424290388781772770120241446776497395420808249088464898448510722572882740573277825328939831603547497203823281907248214922669853245080250074103503825454183065424677081317131779918413197457560839457599347087672441869503204139982313991340364011533430064040930312072249037279582319937203481537799964123176679256098122420728130095644605160176044576417991075702191362679110884738710896937177512502490578328473915282606141461222872656788533901909223532382131891805931642794643866249445673769359349028513883901063441848795303395909909703883449593266292280169078185273382197259201780034403278590026765037968226297227121962784646091584347661006088895875618603000496529688410249907459045353658753081731655741343355862191751657756756356342575103058571554089288037396921055104328590045176966194407287203531272388885914251894766380592231924327764145918851743929469544361053495859912396875054553194306662479763687489073677176395421739284272169462499384092498979956096026101776505117257851918266667973290542579990761233159585515235922513651830512016868238742663903679004051904947403537971050829764458131639082220245955738065305439925919371096957844371767860405217485368047632246717780444503084633646818162313372233408061272119029565327059354556359663153562244568324315830149889474418559090458434811997655906234466691167420812040464870797496674181582235514353257013566440295277756357864088522894462232833414883838612943886393328519728408263711198296960295323236181297564562652113229313052419649379816458430953963150673316114495639109869317325858545160788965323881562423471402480590523358919540689225306952234390706764446299379402545423030406523541657648486577685846612163098164234158587366292037261049029925143651170924555316876798168629842624888053209405686802513667801907764289221733020739255818445556508504773707432495786743626037262523484149699343660800105804225315263620496304747527459619793050239285628266998212192508223947305734900579239060432070796045197031570322953519194284319924257290603025966294653178647626243909696988668700663787858397532054517923037692889718201971837960005222634859105379747216463362739285786682054179503488056143945896521584346384392543766699856770730384169228022165404729965309491370052474751852924298053930352081842272635149614249427595323663515002424361493451239976341018635984239055729152784175141232584851600879005170149032151922451687861910974823269255389580108112743568659237967256421678864958193906381429732148958916206192511195633955634155043255480823246945261786448852190974595498299797809091255980545136907279423158643094152981996517419729978918594544678972355382381918551234014106718852119497618135910222931724842315698085624125527707968921915489592248721613735171484283126109905234981673274687777622536482477324001896518730412629712946561124719317877137143039947243371821878201250045570994111243335114502321147461864129602714072852510015920564144518743586086483680752135544362081248350079324269284438738077353445547824595446995995595786604006420661896976574008953029616417281226261698465188049890343248553380858838206444612728254168618909477853378404740681597792699750755251949589062999413279136527615974514710170234958266174775135038935841404078858178215342354438187494181707428815142316251709894594000240973696786637172529381080381527245518584006429550428297453509490714658386419334027016181050927107690158300316866447521276348980252010839035208821334519650154413906862410927816088294945842831527741816000065927321532767356676089806448132552947938393174402487370089231971373749276108431914181257451778175933888015464200773044874964519826498370332483335449919235468291857478269810403755212244681768177811874887356685911070793433365261201644705976973187920682034382799722067143241368306466797784539031621368473308179193927207410440239277910413061547861735454765267517225053371261382168914620503741877732729322672305530571392760402683939872111826441694527153235147550741468381797429063188805173774162235838387140113885487235878576550622842073023848947478078893729344952780496726310377914567742984377872637654302737703897013065817990512882388500817878161444613666991184685378578690081233004048039974677290058187314452907859430118612906882411718381816046657088119438313151344387271550185217649400696695891946423202184571971177565751201671660254546964451547699754574391243840943450893096713137874829263492028698720432163492342675058469560264497422017661320553934710097656880505809392461610394288835343076050332845188210966808921201281544241141139645150838920198800735139359956830206061653875921479323650633709348465446276175378681153899281733096367062616638471464670514426058517660652203224663641563468109493931865812986353088491500844698526778545429582324961169162430556035855581667683623171301947452591758535330141378846130260144727431003522160528967410100744728835886048070395432810650323030926739113613024292022914669587099308244264627044756943714811551850172340478124732766451381613379158466418255587657500620070800315529659494545357210455279470866885461689167546874479689545180817896061012691899970576700506541830513114612973079272125011697157409878520124064623874788297943650868025168055456712302894666360429027320850359721485511635009855080293732588543346560291209572555173555790575051904699257418975586096015325153181165996283143223758995865148498742220287238410924254668292813887517407568833468078601101067551418947391027731276916099126553033251807355038974641296046669814858453257873198753531695379815134867446970271366465698654255825417983422056101325466381823794113892094061806566661227993620313169867804167856912196403819055721011542706569420376153212168562407756954241270760129581687130559598463711871103189162299419028648050205917063353277247468719670838290300271213192299946749788397967858164814231931728991196874992778432618378337929400139562787891043390921535748817402233097068668598479899061921590045759449546293799086365625613546950697111127061380350010434479431757867630227070227953591842370604907012889927995703727372314044064936235813100699051675163991109951780625976792426050222810603653686348250153642590580607713977003654857432880176134509427151349751891374074289871805762392539276093328741008563649642577061260517477831563927374206852018291886705539349106958328946920583508679945272145736469552954432953316470799046564546561974986225646038999435538631601322443134795509195259110028008362387022294868766156432469866371474768003889557213382485487846971326649905634519448564676606993355386319188778789387208606832699900657182021153117868335770465830916010415163199075830288040101731808377295708068515444381735686338471528443481753872253114141559906766160427950168901741290210536414216530118873039193703416639664613291460685127532783360019587477400294626279409879380120071832267821051800656758292043056336312112856821787845090867212131071430334897569400650880810834127842554725006966499775183865419789538815571039584061198470890071010414990545720690263359884945684420327202875435892043083457428369605990812349195317109264976828969243587489887282540622011392884659225478482320691264229354582125353943450514212237129148166060865565975379997134926150348207323421241600221252400135758774095348525978140402153900136595854061397441645706256059642789943817011679310395674779297920994692857759237472460397711263845873144453390199715595668342639181188651495127080331444091507939751647735578468597418373096286279797577504548574752447624991132507961793147316957680295203605599792929436079339521863587158642225667759996149754109112328678421786831930141829882636853619573922503454232809297873814551392212662362424423285238887151166769843928294922454296248398660206367857388944669929345339680569239867081327254974443650140416640859883328043738224017010722552365742842369008362913266809896328393677090981056181331211280249991721374880809116061881300252341610543246500737528569094760178997131053899545609157265456802587069823848320577493517593072854556140103456708353317904676512528288567218977662836790261752409744217171315500850694734995732376121612623415631050075021252555562158881527228686265487790120582154581877117264528869659950320206585631999567357568227391944824705103277002185332318333446995010884902251507396157782202045726032911841166674825468927779424771008309456781284089645133235542613968637556858316327528779583825684717174534829390490612777634202275639405280520659393796424809369761455521532996373924403910982810168182945959646329452153834510374139125282213896639204776484629013456650619263002192644414072794338896571492243523361463235068925653002377524606222592924873335739999788445345035856186611516078989676929408505614454388881267230804814383232376752931110809233892236311044914742924514953494653627564266606299329586004110821085885047458841208090615891616305354551983731260676030361574702093412129906714655508334644520052814031445552945742411259487766874936285529519280653195067873144740004623275931553078293171805821656110298875949689015733755760064374402167876237584304126362285347831493279086235272243088763987354858987646854141736895009206361534964487809368620030797701280492650141445828543291025571877938920322163160694534678033019703188630596756367972514650661581838808299716729691030890323823027736753845105757634364849740079464431475558281765307838627915419877098874090323018319755508063218553227869460537767070796390779769044129491893374057598360655908683997299112495334986889874583360383307255542903153132380745791692086836201664871979386263397461991263055224103180910861290206403715168788156838807802100926695463487302368397743902720970041124997354899983741112291223996923044483557779456709499385755118179343741815327282080248656559426624196162054844541207888133929700468249368637047469139775657896339212678446721795584573562805121047223558522542791239726287682700974774383757886270170730662980501504235230244561373506604204520656389426526714478077440311380570001279672239709824736471977840202362598147380999351942917336497461160891080659321664961183351781408082082542026478131741430976937119091009170821681126603876290450146785668176028452712406199738236129818018486509489339678632695160321270151721194210188509948813273639115764901872340042169594382401469683433317164327261979693776268683913969534236473138489516816736975864655969216261488603859481643213518145675363512671778673067393656922325406105239785767277697585298327794302539855989876059490476173169657248006874619658153221950517506575583901232928676078354055396456178881858429212743531288788052651133429304266177698454247392571896640320600539276274011153488095411645406714864002763604925256843765482801303668287368760379580039640117123379399768133630307069474948049375217289705440937053650271365289400453584337255864202078239366137470057306748374209169611116392761263233499509823463055447785553387184786509799709170865477701108287847614339377964726440508846955251000504447800170440220938125235460137278496048943006096816575895115047187777090379253261598445883071735598264532998272783175670131554380694556342980167977140397394489861626357858667718825571854388118527248346924191138394859179529776419693326945428512111713088507116572950048398079770395891166078059080188399449575229795286380062610614242420601552602328523250948335791738031208239467455340295099928359123818700481386822792683275900630754301436019927079848062420598333680021462159929305273281908899707702114035810583432082481221210566729522397761919005701273121511189737542579406606984922533790753166431893626371495663933312097139490707291206180222279798212607076577265098203332831470725236577030299851826787086443201902761511874185652266395821405188088183552818302557309746432767525046898897310750817064305845967691224541892271882968204664751394708566825009094937516747519768815490252535055972798546073123710038241372758718256311996912889407321960364235535836636243331181507789347756684402685018279380668967171943354516986186488555294569861312930775330875713846523039270432408987865104399908361475873948301852457994211577527713558114361993744307078118760612377315806432469240057135206082029546872995427561572409276869519153030400095847343628242099571281892407378562040427817546262449050824833139573864816322479683154529214460139199211702817711244356563054979337944384289377416942653681956294068886623412856510212899770733720629564257428308226052017827190812605839301370703269436281073722712400535301198454743588025834438880757133445876830703866306303931182258840229544865170264332173987948102015908804703004789514513076177879317322078541247935518974393712664358142885300457652996504190477055992889896467770766751930029503678402550825809521128355521634174626679830912736327396461046632664007864098984840702534352675550471727605398936925527557458091737191658648953412195394110963768803757965509591452564714379773913746298320456508796880961365636734349691963352845143716432112453685343695475200106316251146015253404372530262734943970911942329901683950043345465803028972984642198949405719552842756184990809975762840884417159339378674053119382450819209875168033152746556565304069336516103046513078090780267478421710929475002713415316734822823297228005565324440501444820449485526678732077698467201058718011272851046444462421892785469889916701642175189497130258487411163603480758107223788655288008598616408319462808654464950888944296786723528933281601439317045828254996344586173115591144523374180472142892681619359220452466132636069736253642901536338768058249736842840800164933946721191355372103700229067048760978803608842520208075632937521266562265589465773103264402968804868166586346995689770401172620773426401813504099305346356911411266014131844312308421349049787255132589062964920004048666215568049965344130481939103373936517557754665259572458862803239330979129522665879502392611382611378022058805077248430627414115603411224384394845801085163740365654538672131603786143712362798136339587629405365385280111875569360194317310847188255959663221924481901246172711613818901887263089503751141666821529672763434786479654096244198454573027966739039042821935714809090576987555690100073934809928103112176939153114459738724457917642520624048652589225487061167498148810960494428534622745540873885779423311335377860523211697158010877836956715208551448846049081217286394400836468972298459054678046937431934667725283456353656209655662225315527909787352035578683778983962939592081372254310354401065413116402272817958984056785250875075569174012030849679358044511218331613847180987936479716756034960626505013336845697279848169833641077570666822817355509208245637836888449623404486858298086792269321432064259439438704127978093993158800923515194635476791209007193315148231498864826433713059306642358079822397586240231087471014551910176256485302646905973359797550225018196379393709867638508318001272911003112974439814693208246138149517229812179406924409410223546110346177880352047587146743219808254716028468396506514891728931285790453557156348138013750855990156181691574058932147140737211989416399511788657263963681794122826902545424657364101033012652815627075088856216260064853989042903872042077022987209500689865583738922191687163951591413260832456962511163578528088817118466761682131223682758890350861756771842825541852417532784113666753449397338454706016303466877275979569742801226079110336325929171455439396206473238599428631544844593277711699424544733474425118393118116919356680224860244255771801113078066755550205838196373336450878466440243770449351685792510820593174548599721650225836482254273950545280482669051400151434032012404381130141190455160447983472815223058434360510225892622422967669658815526645512820849688182560699978048794371159709324097928111834415650807356457691251383885515184268073758499983152265384169264975103622943156772323486579706641545688194161874266631151422167801393878357051869354805970936012070455574444763335953283256121067862401718744402083617136029583201152507302857424329346254496359867476984062958505068929013167396289971370212542651475159965385225908006112031426431352497828334992487851458916964362304637911009560776251396174913807464374668580407712646846756406051127780477796527998991982875661017786735289550886267534889590944850485155760624102513326984125075716264787988392221335314407428634026724315152582983120207691009936367026031788275841488932132110982327893638773577385226160810819081586391020085472477890355959901237089248862104402617777332594011826169128416031809295581035670099070846468898588435777026658365693460461936332600860971811069091364664460893139885726087051984436597525443487155781121359836906977390042208603183785347232460670590169540368147488368476592850650401223683582320277300696929730904236738204379433511984300527065355507611567734649374119899584829720738516723890607684611334196375095329109272224801817901575159288679494736972823284609340947615318292459951468954016391624277793866024182475865456965671382479495535537224842379728219288462975322591445006853608271860510085279528005174607968152771074801992302941932048526961685743259244864099013749802122323529361929664335110270941715705053342545571052089172086306887122496666766979201489483946317720912488710589869577052536310971672107107203627395263994018884457205649775296719939730291187144544285881099292872399730981476387189488294463337111114927530046167410639072546070337465003474309096018838751783788122413800807844532051158973673903229471917033896962006947157283741646555572700738491427882168410760425094732505772818952387027567854205817396431173112751460297049383116960660561654957219448884829138060140404063419118297434758656420992086629930018434213903495586133465836895295451848042904528922881973003184987218742492943945863185300199330031104419809618949255915107637666367531338363997187403387926739550770320699176404974850043520452189492007854964498254901013252303567061383174560161121876591173313435374092377970331044268778584317414585405365582991345810151663031625107929263268233415237550567038667560677938757792415959644372470192787712786041815477187363163362920666096711860578977998062637308945294227374303725015769376832754099835929851344432572501368350709701436776295165237162624855857935556117036421848996671240526698263348200362504495965083247993870026874485076633256856697263686546090089406577097839758448160396394324540690604117981784387469790537103974930305408933125871304892177546915311224117698483251904595071357980467796743726887988386032811423017770363001887254936332774075189158747478239351941628602763830359616692734563192511770586386096920825623948207736035622070385053794188438842089404975753534545251256246834136784429300220907911986006504535817801804416941741821248273629772690692763732967504726994258992236625683610053667341794563409352396039557671105819421345551996344998854425717252670803493678912369539080448380134116588101176482262137957945750985542707192807234228381580088222788263235732466659486589916191062603475765812364870808640762051316042727218944294772800071962205370192687193048244469822774571410695769744512769053077301652878245676239978939988762597055580326511387180103807022097280770920748976593764450541089200397294677896607939714835111492836163999756676915865245561553972866712227625368881817816746300404309083164175691276050264279203549664663654004714149884825996602290211850851490129175684033364713505054567446588471129586640302623546845982930957335276427963727991442615001231566624476228442063912190703141600079293826291085166509994962042314352755313950409023289211716155857465703435610818049965349657717034210026228389565947129442096131686586551544021372776393808179583264162783088485802940768066538606986974418967352430753274388962644538791954478006824635557564547567095908404285284873804634187640067666652923142076121586203152034264381052494856536330056710389978253407036487267104371889955095503082522546476830150318574539468663185458358083765610223254576925020429895872459215927952237542476307288967479449746436403790040818104244007105789746981360189002303406996579304894213906703573608840474184273470674690878886923263895004059814862076591930962760241995646975186369199490700400184829149998172650839839579077321770124267877180958196528356934490418831434637303963528017725204267135279087798201649704451655545625897571247517090790065286684546494460051692499252247229228831718560353444878349217826801353953988536573235451865719797052606098928448013486979877186823770352811943608549395366113721586045073170352454564975843253440258806397076648566183141001582969002470754378885075886016644747373339434459667905034921525132544882869645613350188039263252913379821187217228005566393000877854842202781794104694619270255664155656393778685574001896393852683346615922145422091701058216962319599196266576867934252676078860422441875882861589672634135231534904093493900635647335833997417985395645922416425520816953740648540837591485083004021177973366811011125063674473004847892635539276609291146056693751551728681514245853926486253308516039562024948596129367349411261617419978037725777612950554338340531731408846271750501758688680575278515105760645537337445445448592676866062053606571287641583163151155033652520173491859555854385073222104578377265482139557230687176000104705925581087699024888115223649797568641098725728329034198936805545508276542102254734332530804422695778442358003478533809504692683365853930341031930813108862713596113065119415274211118697658416796706620412216098089070284806573490157732578222853203039645625377500748280398493706247513709245173728466578975049749326052454075856496080645265264743793571007096345895971941390003984119493048237788980264414444595366571425243262222373429540270428772412517255613249808167470520544116525492761142495676151288115322415825318585693249939959506890201709052839714725321717537159235026319799453606093557164221658817334417809696545381551143831846155444784554743609582415661432832210564410356297238575288111045771109255248678189068435931492328554584604789332194214362614167545351894956771468416716445666899361987266513920226767006918875410287066378707596789706248376063582033396427130417994598810686579660918154324973119835965354735882461065106879478080964001994544845122420177113666580822511983566705875806989947434283549961090563790962570745290522677666282010316725004716920995271283690707907961065543963966296698479300009658779564810353070227873468353955069258737499390979229910219785741984097670296678507495822841724725654531382062156938204181103184241439437580334895018687048800980521421431080668322323119309154580174952605311489379803252303844305046806206796702910484437131037663130794932345990621548246873862774395343323774876101053838163552163600863035498902303602785413861415144825045561596950258351952814323924964308553222919657920646014546470216388574885997463343218038856555391919575671607543659653303539722960873108374139467165758819513752689132676238623594962564066303631167824378099697281821558296983951583466970975328646961516258046856314212699734716228372906425138804114839960920888322170974329273430488770721260266148292676474040459134659995375111495883470559025883062966609640776792860498857270207707812565545419733677301734718984766818431403836524538587874519613917027145217620595219233022870866605227875036394651041179016668421043738127812538833424848837175209733755824543702746053455336662453581107822531839523871443992589391461476554103335884940786304492815761905992611819728862398076833447346688490903089050504198063038170359891717814984828720690639688004416890964417838338025866685579129697481409789832072620251273312984352786388113317517503412901267247164844468054604280080014498801284007117646511671464699115590281732574403880978339395848881611428878922830937993491683889941808202840088842855042879386032244662543892346913581798255460214469122369251761917364416456183865050518399486329497697571406411675749868740917486325220142329620493407459545811490845204850526047499576048880708826631792912724132153296103818905110285529172397998449151297014576589343275270300682548693972934624373022447993948610994414077142887809378912666697455352633584271781989059177955451993378147636035343248138771602487331734441610720623986141483745262992569247820844872620713523822639922479261843827789515010852261668807562957268447718114836453473533753141121286167606671692660366212678411504659210203171281919392787655763018429024571073961174699855070783138036452502563281949613953637593135463310987381719157792942080560362358676627081627799551129204697749280317113030362095968878750168226017611590096227193778954805192359549628761138274376960309284719725776466928010128635312979490919570086701820568257893585726313222213612623214089932956753086792367622097524020758366071750941748218735001953929037591899056565872778147355346320365762094033360642659868151951889869672517749439169944738199269425777847137367723419642952815706014292616662985559805956854744814589188848923760349430537137046484157090900002131555871554796727243211255974564056583256520569641814710759248361625633373528841211500825704137948726344303207931576355471090497173393416982358228607968739727876407325106039305584559905378586753970085203506219374624276527132151153441595478923730623318480271126911988607023738031586628461645124342493220497118607575957831755912625086744373375256953915933483919192522396548919348007075102905777469130917056144466627601884137562077899969841438056442929493417765648772817664011918946394998208098628092888944240593437099423856307133471564464566335774305201523802723404556076583919692796414281601785111150155013574154244312202169063642840930678550742839500958398979294700235194190768568752919595486628834717659898330683405188484275942685987033336306637423630502437736843841230340822785555485462479871343329529163568416374871880509978978492668630315761278043596200402205303707605106621954186796684928855138717496129056442750955767402480116107506801633638820530353925970939537748613267184924636751148634002209947153377737303703801264579954753712718657164440427070446872898447831671472127751811950259083747193940007564577888869503319191406684869664299565467540617499786059516698768636368907721663903731500348875026373016604417301195769622865911295433370809826575445756372367019219132286970159742076399934270231506324334021126833556158284723914567545046060053319391452525605730878304361097478371708928066648827391074829241483230765419121417822828126977433132922670445437802907918285998349705898215632979840407403170955429501421822801152763033131416180560291964342010853890653724920805182476036705472079081478383704494985456582814069329319809660886583405715210900710728884662566389146418062100022031374630727220796659629290662669079546239798698399830891116979708486543794893892321816772735780374046164801370246473235756716259466251509418262579989764384734507599475420286853360991690108299407303562553688533814509614656879714837275822488372917912004202446377767201052932150482687156653173015692571716221496404605975744235133686133037293154482396571259049695826119775728286798699728060881009292250330270663423248074325418172802150813608629734197115947180536523229727025424497126448413660546196388450511693513446340242957366807024464524982210821241798074266448138793869617522228231697779900291518639668003792084196380613454113073719490255543641290083122830098507533732467334069957068714268095482954473440292419286327412911498868478626860965292018286527443096147281372707490930439244320565221273842066527508028812391918042667456567222669354413351008471850078760934157202993123806902810957850712068927343534839886119884022476629142337254380256737409323751159051787486699998934110067225675495521130972347930471498101616139500055709725304195218441258079333174961211313115917554593797770150353019356203756136132552509740042117175114618773242134635225138960429625460210982929387282008898265753019499130392213669394503997470249586582021982962883051785326240082057508436427022758206706084131424265048755908640251930781494210234931609393645775628389991296554321317745652123495116213441701638693194021831471326783436369447088319293124826081357515990528277377727160998303702634624219657670001114079895089098658387632540863802724479917061942124090129933718896512567767099745896976255801936458455611644020854622161621906772733783189923599240342310180179655819069609451597849859198884178354632311783855160694970554214679246350356209497867394955444827331299503994352063303785122125978934993156224672099860943389370135927541448057142083197463541308297011452186723074335811157937587893932096816001082220375491140612103238352446216021251624728449780755757766205234544188412927150544223353496591627850182759222196098424834191566862157491804061499298004494629542998093330878341850220939086404766003402732963175042929680112096386396667665272930794616205275932844455887736451216505701415710454360495563176377686319858216635100133008786910902402786012120931301851711397230104670769406980989080842257603740765529292224550512668904009985749236719973332175956913414837228759203458885079603469474486607767143148021525574625451143531642461888868949149511012549762579838813731645021239911755388897989865535477766269164690779064097984653908191544712776270111582074740839515163278240985861302081528253150933173907188070740498286953318744850680363955007953015544432929706892313983026423702946580373455688204532996968738361121108535875129969057705248719348273117346408578752491548826602411029759605922880272744278971857159267873623613919949668730674007333789970125212467940157748727823510642348011152384658343780657549015690821009702856106134649501876997559049623667074725434838629370632731883925554000625980923883029005441108383867379789781681616410175230193801178940650320166422316028902101351772145363917550196140085689489454420470528053615805154146229159310623933782515649577274138158995571847511843693309139718748942729497651246373875398377397785818380507691724724213483411635268269701763092559300048386015822610788078172937743844781172971375154510063635615118795446573482506718132023793579187175190010935101105370480730654258907787974841689109562622429454264138130041069712567945386481170231172067279460365281998631845529708810173628887764972749420116188502479155914080059425497639680878692908207627232312919076175416723217517472967766884033956202865054847557161879658918007892736978429465525607972888472545431137809919841885113686966219554283396000925491514686560566551735307256633679016507660472454074257478573462379507781199827402074508723407648779383502546019559736191002405363195051917647577653985571861650101053708007563696150184689933458448674410131595218955548869224813658758562876663809147745608054931706573169579663827248803064459843199180489618960546049933360540254071387335038447438604558461753792372044636863062272330901387657231376755612970903377888830979786789987866069720922209268975865467535333090644218583279074468008144765430287798992018635468076418661325410551217883415562685445554220725600087435919045313359407603581460495667768921757274815837877181929826103314532373530432969467637903841147225199663045380109908806086947231299452617770806575710734684787399053594634625836090830730860192867483259313982875960563197587416963203122643412475081345412452944203216454930133994870288340725023679751977789234097479116029461861503597100446435705506312580200370109612242165355569002329439031632882676093041693623465174084245012844396318282995099527630407159861925071304025981946020592866639617782757032692673137124508653731198924151333807705283012402520232664884311342714908516777428941324218311946579230176759568863894971707372530283119825887964925017949782328008643482379413673443077110145103128322310113188586349831011245120353314570173649675613889130417694370666474603598718116092534491594698683622152668002163507663279341697886573903401878427482850843718206121768319115019936251330002609566712557352992310120147280516463291556315238279007138374951736846196014604610240776817689534686069462362459444409533583799735102556976900264377529814452748776582535792076365602191577476838686897796069433354337694903624779865054779761715141536547181640265826521789926077581641398554550829414000240205425464248553628726925916366779005121912697266811983374952085025310737203233044249216868849894755572604211514002822728821778964471819205337861619571824693134105565372202035111357363515536047977085194622195289224032427896624611068675747949697599667098420715413959926178738663194495251749452389431866767784259440713009281032383939703833573780187200945119713593062851336224840058673928126885832051998896587660705916458054522048480685910117068909118769585871051056660939127446662079156721480678619990014832843151153761597005292367021391285863045987230224709638713408100929763341549364699725652616570091543855801083265888406895525732572857763854100417261354207984559844090811905851415500418811796875046836555479418862130739623200391639224799411441428539191128095133801699082241278513550639694208687809905353130771945753814035224272363885425243394918719359803632699953947598845149270924821528646640065233181372882340609029316259639364093592984825672038915507065441684169049047437590601568022690890995064363351501511561306002054378239656908337132542459290777925658492732610677030624648363763099073269170733931072688665759586247397345543286705023694639624124945001157107372911507545485644969356615518280745421710590353791332454754192350915691030504553120298699256562012351987936779376835437577177263346366167816723866928492432780157463904078993722877939836450477054815562688779425292058544557759710285494950750791724509438726289805822126415434047820856542848082296904899393461133468232519344129133895959241044194551060211517126204769585304999358871917799807982402735931543559448690507154579267333751031564781123837358930662408626001591226138220517821248613614554423780593354621328147882729756547041221732917760836284823436628582759418320762338299208614381642232584511238678106551864066845043091929954895951264500950088108392154821321604458331523796752257019920905706020993169093468428980909379270333625280963749452798015069875943633140033160404486173301147166245041294812460336060028508671301619824530813808862908480604062915528327138256536976014193177397313813347345166133412120381491317332697220195679770333977625323014770173540641548453901864393302450022877712100124315215189477829498665882596841498077488621567661721192775870903488287635293837378446982652766664720246635586107278015215108667393039998724350322870332603338706785187785789654528057873684525452976414234004737897924401267013304964087761821735085261496682151195627833586651740869996940402023601896116970761527214511722450039744500469507194513761567843598462069665588125280218548512068438330847718631730042644170125059840953843550317839705161892809358751790380199805698724812770998019467348034661382004699059620040550958137638651550985782701065658758637701236746645273064667094527300038543279421255665224467166508163017044304167980440071383948432324832410985530517818604324624755237960088144716893691947923314279872207766562544204735756595726818199100148026263854288227704555138678299213629500723868267735775484520506162430715747050441848570140756872827225910396743084166934866179148619760373162769800521960510998771415883889717331384097577467753494088503197638187135270834071718693497773508763359201533273259092029075412023339101682658697652989568978110181514865365827670375249766039148474014913566567102837411887960872872819319032510725995768062239134431755287839289256496888535199566798663392096600097623862449504446438599386088235773059881814086865790600351347595188124435463503402314951297336291644614023272381417878342511324427189419207319637494589195301958136520632016994595190364816387698038460557775113622916081241964721170571744472870263508404226148095098636251607823898446919712954563355443442952668176500036420232144619916679479431556118923911297903299706926720074709473261588573861250097005675138685034571235665309171607153865274032151956291681597887008424088526416923026529727217570077958752388958160603803347911400027039835446395513393146718087984002871814549933123323778816706798611045436221337634005145756983204659998808139187357237937792499725176161632412704989774098848854567978961774305145026670652906827456403200192420851678432635013968422528563444869364843829990568596602658679709170471214445086584581219652591271496839562122286972001318272509173465526113310759959249278009095335199825589944941177273128694054967380095619818239569765097176136304273607217815197634272307792386932099702526480446866914662456078221136489041800484206566305073740788286778566273385397624126356706352216083769683238449830089038385809603917083211873373319852769542219853529718170036502693274365603167602029654769519088645184525086559202178512938445687608338920939756310001613417005854724335192709743746508900673445243339065735034116145257542946672037683907752626335404992104199455847523139071138346652611836734327835500420762829279091152994015626948526998260076109087293804142333844690264450419151841921957187700645766054067869387068568645436589503794593381827398336642082472711015276655029205875106923240202813322376430436283882641431770695124481382135727696580474891461445875115122920109812808412564628255666321230809702764848962010549945628907534169214809385887123514262552583612081699086456163880360984912097806005222203490591433852183766375794475121549388469274206624608994130350639372111837546060007193622497881841470188998063622413293069775685290103878425062773165777833582680293231291720678689277910377142120339043625266816712131615939748470951276172103685571552013580242398685907350380167315561544175666678781536511389095173888582217208682215205594378913140571460697543512771735039031578476853645279864610152125439608030333963383489203930233011163555356588076970143876153541289539141730667881975581578194684999166283724610494488082393316173974026410647449396252448919116967286709014254831874976661239116887159667209076714516056362813375450481233273861333039895797819247002155315536787199940162818157027566231680548149525245045514117998049615966881123081587712143470128554661949604732753842684879357158206082961971929101614603222018878361795384396083413745928503839180853456665130816530299904035747135851302076999669967838416379181882308823477890066902826054034463064905963455287387624582851073362045424742714015099258610027888182480415331673347971107321493946930726190441394353283798242071765989126885752169948626007562887146930186159365744713731440469412536825197499957785605653953292134718912816857607470753739279760634199311578566824229329375538923732538926754461133920901397540501377444960697539933445487102327716545864451910910005058326192298453404517083673147128401044451891204797639846434699012698515538869798519589550586543063829619999400747559542754062287122866983761911127279234564660933330496190263383419957948475424546804403991212855534485394903860449078013345068541706439140760519563987796365049340092630027955227904850312965657857094046579854713986421153061342920509993132314337049808294788249460475849927248035631914133992976246336662178138508649175475101989267765561130039890201411879936802174893862794917881824633354776899380913559610569571998824332352960206976850804046468060953675532498174395226556291277436131813778182978262108970909696933232863096015732791328812929935671291238785888114023755749889718394082500848439940624551618192055169237602116367563159968912201526029846400434238119536449742819046519540941029954214367041228551535669816384755985313862023434682853927369351638334210156236324599335836970580742508943699184662895763175411021169441612937984462542655132944951345855747689005187148923558360219931858166351095113320169475604522865556752649921007986176157477155168816207526585778265566842427088515503280365399949832531772985490646847453633019521690773381372697891249067930435274628931831045841060220629563710628785036398571462207751010152846069013984776547734815515488213076357040054793674252230732139138529000064231192335915067551943348136981611810445925672377210533589291701410889203750940272458683805747135857300524171691284773134286025896619769130737755104557158316732214103605983714558772273105806525303010894856224222727224742895302432377500619350311414149557557060133731536139564229268073706576361595569109963839077218978446578528064083474613318463675425489306248404168268562217814301508491445155733065827207778586577780669385475038932017329035223045199705147492124486758013550651893550958335550068441436285744702120184888924461072931657340236237639776319851453008636971975805131048232629712541682223489740676451336218605756167252681555936548355439489142383728438956478836642309870322358075195498960573905833982433255482347865553192435854096703138162144467140790770703703719705202974397495585331186559925253596912357750856222562805133799220434889379847554460778172224032138637896926401624632260565631712969753275201292297356500280739337535698237412129991306379981054595497008246571513656965268147022971339355206706561372042150762289057515452683615795694428164575055412644331055249485526223201136999792101999177157394806747416024574098583851984528558626347442255976443175142705451220764397077203716268206589829502709697354931152625588372554088388686407073386740972332794595418928353966653979816104700186384118263779210194946949252789332789296429782810505644666343251459382651502727481091772539549351131498264823354074786855911631117803803101780859595112812361264094818569524159010982962458578045950636324810349650902429880915538282749904164546286290801907847384615295791631092275768119916376756147209696563234018451741509007840022457076525414383162036844893036138309237860310111742708075534316092402126503886886164883157118436328541702815810196619129748773459043002400748469209010239463792977935271752574697371730017362790250837339327147300290216528074685813138763307616810287645622906028901643505316635987886675049716143549613981238151970577918584537910630767032459285731803960604007477892836836427324843845496269478675144448919267837918774617239469756578724263798644685908646398060886054357250051348669280148683860785006785927105319303092841928412748477040310278125682382728235388783641709105205783853577390125098322209237661562678418779485932820560725783023009363929154294584412916700735185168450101499806239632047177652512176952523235893670118128561998227479892836545025455194407384397453617869273386700381025154416074766799971948536327924902063595850871760954679944803802936692112788614942657168032330401491796389626773786478231918734312978562923085462268041109618973500518868609529618647201250981306602051942096929036393582121899986248885222691825845785802675779276314014816715464870311072542993472005528647219156886811092090880245582724854408830023867998915280161124126220164743943017583583735999852730274071723835543212976745510824522401462880673225218208852158855706866811144333782432003157031456365479052537429697696262207127290555310816871458782127610114213700431910504062543980650130170256208836248769978321154596225445189664505512181155187858070075402033661604130747217872920727163031133878298063978397476886835138313310432352892757538979155942716923398189196306109164408692516231262135726841150317893401818457279972510158668547380226231444216642953860925540244405717510094779526930170721439611488483750588189835407853122331379328964748314680029371569350473622867426242159059884481056519968424131123209984898377454195402456147063771976014437984413089993430327773650384594351770853853535565959415639540686324163840983419805600161081606262653965160994563873563543055971111918933667585828813819793740729343483161130633849225463191656843293586863343354308223019190174258663576191177016971718383213377344856475413153601306433658127213302808418442470646205618269824920695725966670418256249199584567294071513285397960699756112167022329148670900063804996643900046824904504835833407771463603431588780851094962316388175439888348669498296040220045968817047077579130625365708389456760981436716971163287518815826601368841463538210219311415693996929878300746382704514159436956260427327419989432531335093830576205003122062473639588857808949315949218931221935013976960446361733588213384987390598826853709269095699539163082400145796288703027645186659765279035099201223695354253403171031048991186672312683080033490615292528473471635063952224732984358233734358458453171382611411070611145634851952229805257571181282221126922602979166644442931922802716525384840656978097099938871817389552358091250117917858279145811961245896582755410865514167262254034979764341003070057617427475493315879384312786119466932928781506236513053468201118981989554219785988512767585676425693147372918562930200630465255488213889442904127222656516719978480506922982977968142011464569155125608062923874414358648394678179574735813559156262615667522787556969533576057339250253921134450175422704897534507773108604613079843379788909958366801075525367482527876269617665947060544944915535269984174818169284709573687416368145699072712301947685314916471539746689400474024197461081119728694040830119725473657057962644697930238575489585283380301846515836387026458430746678087057639314574056740968461279558995976425650811946244482839904760157148206538271234322878423887787930893398918481340286764605012089583358200886730240298245318461950961965310339041019374843814624177363370757633229056771934036225824022590583966305399934563839112736882496747696105137886953963454769081521529201202386247893503602030134370335310455863702885502981226470571141578670265638066304968899873379376968896847248599305300802179037743617943328694310678171765163514627532160745666049339677598396035965247383774563997375046305216129126676457650020377768196087923644176447868275203380432404388801935871013715685970578945085576730845228063995670387867347499209779182254596934839513288745712853652385813356895440694267621695144931019202348287769631405143413936546629100029352598423374671401366807642976688437868178390083153951087720000379822449599654472246464470014466376428877298978598079087817393544230976284371444079822663250690575786741857430887698613301545500386246908023024236145539231650702330005984925039363587781543810412267298007605535271593679342353901070239793702291779066598385624624181167107537906752069243496853619559425541624032828073705486505280693013891175835846899568398569561429588219876390706778631999710079263492445387092310965832159363196678376707660750087363368589780240724608177970329963338070144224172737998614439685389888596295601728021024335782022841577361468517604501174730565208577917779712125304283558483847250048012425563805240130363246424884699272797278669021646062408812358837891654955841413787213527652608078436898549894705314161505935914528065899632144756088096572894139214752573236155309390089142735679506665762192699958845289016123060160924676689940201090961637750022502039600528540717740799260843221165826886195654132864116015350758165289539078293819884157937550198136154087188123155637820863872737615639566911462775344612956227738078000126666973392092056748111592144630645575417594874422049094377496338295713278222908095694694793096542636740216638484513755782403891743296163121543206765551053335604601267541161058853574823911336571638950337375472982576830217279265474268463450007606496840049042483791320191994440031904712808248808432616493507793914934819956490669370855738629656471237173180513310344616976274585747054709427078368029261342577951895870908784895767851966133849333665613179788896163367376860647564820547313841859856192545435539476041795562039016764717305253885913725512755706375795489529007170673094529888315960232037453881887880358604680255579406974874653563350502328509169260439541650088584625081303051373907661366226180002617195585599293211994405113800998428675443780555599358282597044606908972109559647886497979799546801916426838201703293835072064675213048654816703341635809847658205369154286036752766726072551647482559050967870465296624840565854187355864869005864311577423553236950181374279837697367112837713465548713727157703904916584677374154141918848385598411053140112804851788358347332406777037432190113809130790378910807217969802754147730969818441305812372121091998039603434864710260944601894947649932339665963983904750884905175360532719527213461626511150583765742352488528049530171422808631519913455181307062150755810933657091115014218669895498322368143403049329793159869656531318189014912068726232624963829708608101030566939773568158474385056332028319977609244089612434427096003434577201527609318044913622838788817592428242866785790180375156780737627155272997753459310066675165934982722265384368034044279143918668697538130582951527675062558636400743530835220255073337492243588115984382654117050269080198622003419129834393771356303932781766114301023751153166569076622610936670442033554786535599951769333201056529504349670454936543898363546848959065221208476404441387993305151611364140538950251954610261007078642873942035386294516981319347333604483545397210357281616528369393322652649725542604589997448553591847423912149202232340560610661354481036724233363024656648515266088065579151890717571063055538494503839364536812063856790692263485269546835985771969786267410031794943391964699896196566411752963994279038834281382749750225789083814584952088502508777488161632424331610332381281549856394157369887225578503204344749951698854333158620385360110358090653745286504251029397967018342724632916420746710836169372352017095755727199383513270034215527575655459292272343626402441280796790457115256592985497959971478381465840551111030145070674638424680721287802228117199981650802422874073341193334953877210368322428962012880059713910346129514235601618062253017185054026103593259055301015487343258280342213560923037469205785461753419421530206852604395331862891622965402416439960873644991602556398391499495860748736103269941857745294748474388758895751221789776413128076878935257865054572059099081039308736214922782213624705724011616007543745174722536557134011037263550503526018280356831425985858898575441876157081883289026954081823874871628333314105532758121636726494747534706742084482667068660316834006145127743596492290605151824225352280612125021451444192320581294472131678144618807955332056848838527306271405254954875467969201576181570358637866210190937915108002538690928492464140635701685814212336201706762261448024009075048908510622528962853722951071161413797917083765508546384637315414992224701770604706224129650757513561170680543480549432673398723648192654925273150363105017001078876119234604726672344830189502075374591177781587014268191632607641916142345331418933832856166391732975911507739860476147988781424475045830559348671152883598737757034804453000029117313535102245828398233689204779203973520572903937544489926000302053653352236784741350257221430764350558413595350817216724907900964853198752565163336522350457694521855507348055727337433581351194196460363129403196808688537531034641841970608900720355823425066813633674362773423447849955031090840692580612316342014468467817522786928083040451023187551105615406833854091857765496518704018028923546100864180117482679781437318536615165824149660068421406765704682843624468938340286566850832518830882080131701260536961537796405722970305007222758227728005978745683421216068264138725451443266380976253969210914721245616447410171293285365688257441959174550259291612226360166771603017023212272047422912880236103011260758552098740635920839018195219206570381791136484391358574846908990167728894951899062199199881866822218108058590396242969476170151940926020310017895653480402807550475934592583981965523283193194335484153381833834543710920575299895063510915235851131200429616125711450449286200485870949527979687975618456718391068659235952704254134783118948331533561321091402210771882273891572530130717938629548052871165464779755157199722731084185585206216350206522486014069443261109035311810838523574445762028061869017982087307593851096483448195643120934916231469736961849535027443115056712793995058355450292952672886930798021575075110379539054272539983023247868802364435438347598070509745325235831949478302648750767760131272392843880951701834149666972066007733643254547554696316789207914194017500414612973342472598872101827694682080167965803230293257838040117872618876197614691891798089597846698437876584065052106002467858744404529314964774000288823954810179389407328416568821305239825002997381463093211062683402720270538985033603241125033781478987373347840703472844798522004749593673742972291443963757465455640353801199860722053488344405363006129327479633261260321125491006148996529663845434335695356115456265489223466514781839482761503577270620451259379289402530828875044389586705527951319794732856939445888173854604745739811556173806990608686445432524264896998609615120888505205222151166355016147777354652326454492588118072141646857380204679037730156316205317260726394673009172786679557463435640792951370063975086007262632677344052824044545190609955014684432174654720502949264512700703900713557379416692916348846344015246133353412826479651653419811906418626854514365948924128034268706408202567239681959263144312757888063188706325505506931861559853561944997461914244339255063733632098939508534001973977090225454844303152297590223470070019213200534108513827531339577743072946498588964902295808412484659889544589428032717394984103639091363128086042198483625265279326560104573993407407882398058072527671630948465490881046981526086873514159774045038152419362872265216988544171095756960433987754725715470048385303833764675253496018571214931404098457762765552259073235621275973938494491147638491879118038909615021513507506615004716586488866604373005427041675934964418072287348158580466743739449995784774959039884480289425919574958495326151519848020137315024255975348090930757959648742988563610076739720753774316418149954085032279881692155331401577787108804706576348298713397935340096577348625904372000889558861736905321133451108981204244697497060668409690478327335762856708152089458557144390954535203912093731593474155853901037336843147472361814383745577767349208347732566116124493838106161560803529601179298011433042068794097933920588628281957021326527143972417846485487718294300925646799447450510758237768796210785267413611180503410804028065272644709854675184465018422044167653997746115530503946349583306143148884185647441450125952274847595312045216431188047101425217335282595870716895855805231691744825700759516699099610638117216295424770843765686842841047150496109637798737608084111371528722354379900180110468173108153187682765168958009693495335581884345334005329674603597934184705132040296681666307750388407662709828276487117940464961674867691771679418504484794704084433959033442241449827519836937414977732448768291074471113755998137634429726303527155640036500884586498766699661013946320821781452216676953507071670828060327218102726401259144780565640263492548920554942420393143350176321201802618348271071589229495073776409808136896959397432109545316163229998828793402127112865523467689051587879516035594230094702718299699188685066772308736802395713879534812166860843165619404403607847333715360579946852283223487410519869812048212076445055232520215600041296242891130779664050876391472589765736772437282624763264604668290362661340301500587660944785831575562340674589065394740218430176088350188872365090519468483333085414321385749204881375528980460706357669696403578010764332043461219929707138550108194939483519176938133502619457329156077317017499211710555041427800877557852818021817313331983927350660506676994376161321240948937097522335457967216476743847541374278808993236432415926063467000576634545557555835291869199233841063946028932778963171498876593817909556146149945632744874399754362028244827976045873571123385500892913653311690658858225315995791048673783680760652015481222911819494048053281140191456316435273052010574940496718080944309889970803461384409269915565310332497836781785894842704221761965877589022284423024761760656918383674467218640000867045913454130033685042248474966101075094724171625282164494328462592611911052623206857522750798499847748151229871970226033534013116317963901718840510318478836556720471458250159238593758795521125402500322492000380218349392452568826309318893778098537028886556776482545240944483112475693241627602729996690780024293111870463198334169395204934484153971268875616965321503271943876650455831737589322943621673906226457062026053739534817820838786695554541246711169961349422519905320464554000253799888241652520014118901036427544008914697640469869487086589655238890217702332341944368410040371689179377307502799445054467672567718655322926810165505923139086646925171155768739371733674563198865483193635286970875177851084667580479277106352673980164997008544472833824757766728031941768924774621195284791095824230046762094094255225771922216823391182927553517087503207826411606944595324237671349590468547341439131391556697182649255004128842655890141317780646126325580583369346262325661232092716074145107209112551106586338046500852646763344316756003987657345220146684250695434828427718125438108776815340335897468554802401615993929967777178872941085426157906964699697139652460726367162794639800201376401259667192131377134050160514814141816147230851440131526597505182496888679361040022943538217530520510275187286244392831299081588751445943605508774181485261263283021217848286784436544012628481053700473773176161871861300525741680970579136486006384118930040451322741625867989468919308708540341557207680119912508852671945863157774787223611233738997568181930746163587558776977012751863246670388453734326618423853079048321517438808283007822038057539592686299944758248235138178154074678470082691034870710457130271068802203997853641233580763582381521202640500138132287906855199968191461041194381836434294839906166528346243848860216186839775883198799338601817484116307248941108398356306282536096079045299096086479357393939783841580152751132506840247521662446965565504246921495042444529391312353951516314284395169500885394568981350326211158153691738487698231371601492387797630635901442014690246834727562150333598908699079469825846623565297786722231145671186848091752958007037172320276122373237499926853546902739977484437746476910064020029818615944375262983337546285112928112025750883742542855687514973202829101044153373611673621722445222967232107761555712870230897737889424500648130057622759496426149488637559203516972758902532391001864558054398178162787426695843118282898534843495103168145388558360574212899621153376095733505710392453678379381813383656759728727843441957528433335469089998945472639317139431572864793715213029612869788692640698719133964646541799945623156604072307864975043521341924575813842140358109849652974079791806088521140859730130361030222451289447987491396708499128870360206389513358412566639308736581565688483780921475669997504896511417050823104256468273608890439081970428957690927983864378392733774994674347172516001899071103663888962339912046065170627138203751610937636957148248103963699134621702830029125536861141803698799633976490017994981778816921164509352005235652037548468433740071020366009456069148771858247439774438058888295162853225577138507190696394580130220879801442018360875013219049865126183684557890584103449203097987672906355944400016071699866651614496906715320930939584164125911433271855955516058226537623700141079183631401388975598706249058349520394087427590525719211715339776901048206670009026957904264024514000986813365928626564684545761725854196680185134629940645573648710875409792387876999573838793066977671425637277508093640455503055091712008392808257891925010702881605499057841117532712971141634216571545873612682083455285437426515552172674282634923500551794376756367079327929185625387608170284809657074241319197580862119945125306687361753524508051832987038357724593208601030835721640879994132916079709260162236939336919556630355391525908674509311615756927052717971556308955285620750449462811778111597667439020575401558684487335845472522941970678097590811931921865278151889930764720867193265027943970373451007618661029507174495010441170265086060665708700680377231600377158091695842367675684822856467814045324747558436858449656435478618304473321260061099028555822765455114116535467860974782803377123089378515814825055240470719111042673018335444527741983850231119691416390026466811936894837229458475525359559786724479506088019131279993695146810103635584375492584079102455526549852686213318744951247209334850234228658182207091288165930263900339553356125661082148480815745001087308799745104120650896478844238310032483087095130461579693957818277597406210435229031815500902998839120301221595224518139465637660203220534916466985058966021836412632207665742472152730696107229503214775764099275682875679222421266214658432883816205917401661057791347828868467936498908464815500899474653096153017782076715782427016804645552584768620582802043091058283474849820044521020086561215052949272164434466249895147438560744922879306350330024500254175839813801337025227993450946868393424562506374137176288663957432360263917298115164300953883099117459119914096627819541324133556343542611806780288916534002989441254006468840535083432658623206394192264242827284573342758744314174376780573862883000811971260673013027941680239096323566662668163562381093953680843527660204726875274831253601701003809496099335200620649766847265351169895295255529378203131040175139942267097165507332253477830592981402469779564201297296299371373197984968042771027731432209336361993076466471993755649795475261712797083555728058434314138569731192238273110143205592024485761363891733960328172336948315505693714319831042778025566419028429930498876020436227903981623839643672613503803061240064078135315151255398243989313191825637401809014205074107882958705285914147605408428350365004074693316942087343359018095420973864968375203978173885337163998434412737822356529860810952857907638033601959276134166764588048234688631822795592495077944686961677963802589497425713136956996884405965253685572582983555318833687310620092827627923830051600903816699139529692523010131131419986582193706433838740140794133197076780867724771785412101567999665594286476790601944869435256753483293751805773043802670319022919151609996785898390813320285230918372890962592029989146907698126582141149252422170522706567847655197012453868108101512814320622087625343554197129977750341705372846773440036218857140180435562962971335464866371640774926083586527343338050870917970320593470583827246653151295024188218781262910297515315906261120950596619840943055627637493758309192208516044598074914550866542046639463408777101329944248458039474345855232642134398556453453570418955778510742454103736765000994911416293594446109286363499704424731249443440234641900154396802146305802889881376555022655313471628842553694845165005595315770883231510702652060677809277054276259657382169999874684022902950293065532888882069993562847569159411175974256003831247788141083007361803007362869395329412217500984267363489441002225764793696647757539172520015534547510558570266396675949217120754241958105590496927343199122527559297376020367318094504463556567002846799520412853958089820893559796361514293694400180307008423469301144249686049550039204582619625098143939729080056804047533770692676004692757166537935001788024167106236067425995141368161181154896437189606109781483555424734805548092874791272110373546567972205205160932562322586527906652989849566386803467393187695087348568647991548097986859839714501858889888810780267008400050522684911285818305300368491937681772452787915455493835037063740172545074304887079271922530428125444776859522870453989912923883515903826706218661796621509227105866143957129513453582670289377544223708101427857238583550616035886640774138760705738161755239341059975097607563535196278670004515821364199171843629199446873047533238786448360980632256424743007996098946737449652606236293317112893249949435512481924489510017378391578504588893600097404360522594403536782640817855768871523111461342314974922572533439829031291906145142104384323069518108363738657324801063713367493124311314386386793269211946607086923793530223570136225259976130754367564839243043583815630966000839818691309379162229492265580667810087890926719688099332545650888579926797608329841155022465198408720237913176773000220995400740814538869815014069868842535277400335693272314642664078575524071523946614778359941558832068245318897840022932441811684812687409205589033853858425146495411141407758287863217750074951130554592086612504049516114202434396201112134470184158380035401466942075716315382560308946989815600036675035886494950077428979275601569323077616128748816266996684890919997032428960982725721444410577763375208658731621325125078258241057511946214658160750981404141880968647192380624196981878545751071346524314990536166206901765969308313376327962015462050743528882644274270033137261389739143765879332610150690658028212423789461613866923091990368400111683633441086648802437236126475585957409591120993221616467005420678809807986186134168875114538925604654052712479951735890731041139926697920456329812372706940863752378474080271932818216088909293613630722534573248531446431625668792230588306340747151329599445083903697082631146628255561274787786967792005805621402177963673143972245940132240665764688955101432712258473059298819116611690041566691096865120630387367683134909823308464817334802555041158801863417817956528136224990459461041438527469832874463827227089121647698849582824086844510202227052351564960461723453448848062477231033129830926632014212870009365785081117987955454005801716463603784816994841535161934228356126056645064951427579389406841058180839344700506203656601519263599023293352285599945527029214162335498096394042015661506085806797522186159126861477584584889270688397273152682565738254919632177160437061103514466279803608427696772050760484174520384600110191566904016519034495055711698117188720989318962808958953726094506298485306690790600755568241851058264010749981864766686207763002088721855084010619977984135316696212242571487408815372427422310367540121278512307565295138364704956360299083354912589208080093926192527724987943588437234595306560701057182987839777603798059607268303928796144011933692923815796906780707602782735442074175057543876339268277680385773366626746278593289457557720545221970569147529765104672152454058622925377336625852314915631767455867593102310741482766760836881545124066970527846398494227509835059980695846066622748337537958367682812856542634277013064965644743629053430972893296103926024875009426011262067754015148148301185962146389118432020396016277422331318175227293030060899056929780440598375727519269155279911910279900292276200138082931136351811247645536592056670820380601864188364928777640920304019906591596201715426242105813648558813749991436621444080449693925106576868057506415104874175436193086741130262666495206249632082935436240810806100571215133274500601202736329767783456224495875671194893186488540332255294931640018819387957852484197114378611067987262019361691374036971524845151426502415018260407903524772666785852181097908435804704425821219869182369129864055924429012676965989992978860332812922517144014693204090034414020028493610168711174238008819389031631419175644741237289410134080151373012411624287014958291905278308470466096045017034302318074574209028048901308991924922275857886485360483553203040168084141348092725842697677997664584800421070072822706112300642080629628110384039378517357603391422254388141600867369310609381696074441234667126758207939753091519511474333129603657279805419201668090189910579676988287827858085161907188674417782568368531779480174963215960374077739883599452771866119308691007985541183014369028356902997154350555471301096512940364392646362057417159135514681271360191709832482196928428644013851411526749883374608264289116353520229398885512760743865473515024269552364461118455523151877055202314961909868397508146900443729770426154734824254043371194701522060102877656550375410014697534731256340771836065322119970129321357456791280571065408320896826805470062285084411769614420915255107626232224515307586177806146205592436346223483933228683447406664441016783419190089400360102875914232639304786697761573136901694655743292503365728757899091185774895983562333038852700622609196223702004167008372197736374399686599897762525527576191780300793402694921070287395141737755698250246914484729768357557254519690163822337978265639876543390098764137336914847406509087763867237891515435849958202324706859359749219056162595671151477270421968375161333686829080372341286939060682308202608472811373199974290321943854853911584800917235175665308618050309666075409751936993454950051871755379746559412570694368619394690577045628255297920249121477525917512811168543855039895369965684158014732872748845498675787713512018519048950249333596059443982734478769720948329438550706547729082749836134071818929270884737205759417244974427579806322401155429505876975051858957422536752347555673452969646897212742687460482064077797185660318461173458883017078729602145066870363931224985279654390480202237890559065425149782498050566266635702766620513441929953327935350815026987860673186670066136001518138592075977573086722974384922211992578982824248151367327337328036475473720448641738278818669004149762863040490936309493467744615345500616663815193560648761205860870301608439205692182421570354563902477127780693975455179038660423849014236265185210992599108001395618250610958569888140244944106586325135648686488634531112763778438471195406330677523939292337907981137817106003500005323188748840786696418631059016308592974679902914491896646905427985805220110110111139124993564217929345146743874555955266824484056023615521507334176677028110686559998527228764741395722551417624042211417977255334885116631747832116034123127674375103827177713277437163802132922246600032466298502541845289191997734415128480593094590228622667161843326422185741452770722079915788470498139410545770523744670369594982949010797056922222537413515124078165679328667832689530219737743267860698650492410570905309900133733520201062936428317530070077274859591630629701045757783181276027093547672174309832566437027675385802610342000881911391982008782097139154986980228187350621583446025552902658546779479319708989820420333320780537617912290992024188885415528248038353848761516308271955211252598761128774556895260226218800813275016855072837053601151483620442342520766528091069822291078423354136818039499756316551921382360288280627089371990477067148607580849845120496660865685568307317421364199717376393180841571382607287895126066414529491274208093558866542340014492860694309626885504576250189441271764143178225092474610938299975387022742416882229737405807200523853849068636086099200924056754793828555641739826001902559196203158449790924571432578918029774956088233735179002119140569966940937272462777188083342690918346237050295538883069079341620014011350052979739409364072392663767884502495230684380522167693654716039738179131237283810918640789973186406279941024517789244808874442049307092553936803579785641038313699673340965304827901835363332083932873791522043524543037428601127670813442638574739257670588726504418677036434337536450710476049617910165835483232252155045166244782165695972081862520045970921862586887534693201851599632265628324552134897842856128742403276861739569325505069263684089217199205568579397890011454917928957504982321694972942544834499076079168293590967635592470654707922113456522034374081941131363494303795809277161873191607335857395800433228096888343107355294700511260139986089062662371500598035777322240270434681570979117654973436567837550996236556880506689975058881659543551814442056039897605253103080290868950754116418270698857579993015617476678941764668359579018121859538506159339672048695656222657449716779909954398042853994367765586341381647033039516906335326613844309687168536148224339332697670029561061079737098745549042785538146424191140329574404615482377481718071421177755577946250415147625627198365272400790771610272914392043598331738559153769736469209104844314998288250513989270178370252877662604484925798420260185736393361293899551795636309430368793661418528570107861755350656065813995627738729739822816206485677267680749617994311153263650686848878736079499788682838901331238164121786846095388314035382638374303503557110240991389497925126385874102545328370541720526825991215973209923588258417449704481665256820552877776356009452582106764502090865354050231382303205492760803092327646226214387782725412183935303159196280100711139821484881706135224631214346616148041524247960734292929257166202572672530159708745703750024885108746161819443231740360672809465366826796189647262835998508226484279351107780780228813477692165088633461600293731205959800394307440767114626019750067875414570261055773360185775588369855828850644807987893861381020700546213419624001325152554596140780647564505227215616558549197004501130747116813390767650954874344485297281844431308921092345412086362555971543354079711467652280350342567176221538616218796529070673423778550110594268781685812397633108990985777360766112471724442367446906760239778889326940895712485408989084914892804529362478988796978428226174435137328051262646890834218617973467266327028529015824888977203242651329973718867355892721633560190400541373691685333094774592353295727903845849346414763595728819174035906788896652409644710930042902223607216249000974583543504087202837422256945694289551414490819871975634646935643455111308695105099672616959387506820556631904371561391032067488057001252615993201108328380291434462169693306459005140324218269320447020726523443770404731756844526747300797524983336611248674008019215307609126243302814798868802500782287134730263734825187620783986714784936957831356636747083992667560012121610642407236351739042012775475106462340430863462536949496852985943556574133262220210184244504741650193067893869320597157844314136202839835169739008128569454871863194405617481079587777391916044632251928630103568417904866058820298040513353864434653387249762770937440158286133709981644742124204767315691821702852263400750652027059677961005641479284407225639012162610817311018930785440525478179311294593075566771401081100397022470098487710826120538553469276815360407886047347267782734098246053509377096339366799351248107587044131330116279042152239475396825734637441181865359762918220502083527674841860978605035641372737215968493904632141023860348164998346958559938683384765657265375700381750083478397333964354568363839024762737688212152195306760131316679620826039702718977137320076577911047096129585195483308392397958036132191478260892047641427525968545959164187576931785951854263381339628342121948418949377756772151992891066492795588683593097905753748961943327749569371326576100464483327552862554260627071159403003453455667417990568073582776884550445196074588614933701644984501541696907432865614706989372933147612555407963730947436797345192874233209785503120633548508595421293682053069512366586761409798598244035171163503819612141240060631627896116879595458908411920940303252925534463838632660288894123345224360931402557661604342494043886721954472826361575102632118073460243162447072037666930284116485031177802322836911333895465575357948961146294155202973243090981743543562249175633021907686861298915171991171218491331047236014012242037657711538491452068291246966262457394814159532207675939836161154099099510264493432078891250989101216939680836172345013374962123450592069553319186157811445959229893608326553077774837308479357960924973049610647676653653836422835634241209298256607554635055722470189764239620616644091627872385660303782848951810558670605110604276400487094370471535009570748624235567561028280716526019200163873829755949884456175299832673485765073499499961244411034434842965556326204374163818140258420563300317384613911790841824366210923189279541545880171183732121660871226042475665813440521707727119382097441407348209044807403793831803464156480589655257632315978924549155044707310178996162359678992159310266008715190843745446395767304356759942786688121644803376508125736250590163416463073008966900542078386433562611526221217743760324592108672014904964008894400480944959096284453127479971727741012386413586460895897212304592449995436682746726147065259304231687185809153487587658749925141336818479058585892224134172831791498439373007531465223603513576549097457534418365247333115283138625334670188490260482324091400031951749971405360095858835649366237033531490710963428078985573880681051333224086783374099494658611326797865035439202679570313839355088704633026277026843308928792889373390065148255667579330353668107949407551428994446634504342629871155725713142372492542286564822543394890326771695338342350944877336418915623670174655503267076591843803094968983703029931434492538118893748909645952145800570593495492271867299940203165898458087859832746960380261360383606352410941696669302596305940760243278271483855042801010553817243427641140694385191964098655905698483648052636514570167953991299717661964608010812628378698441888932635799551249529151477461785539229024376731432902989067186298081776439473488625342799230130646765725892199161092720611355083509240212185075641711415913101105411285983303098675982330878445858037989083461489475469708125963669600226309980059102348209592046094140700211417709755197508916410107046657994945247757767163224660082140592370395948186511579809368217422759648669590917461047361608502896725613815995215376347189102465557737568891317629967788600197069530035709458690911551659797326234460383358720776454479541499004498091073361344657253957005868799841486151251267112731964409879745376567686633801842145303796397933816131961557172837437757202560399384412559403921955272301005743135634166213491703889044500706037742120062544221347850990094719249268316674396706554081759144492916773705240219696350047423533347174186344105959699333243544409021668753113001882029772129368680312344463087488212176274743883319400450778710703223848636001477759731947670775368900202324249984313967065604872123967987597491482683323109993649569411864303648311708558886583806532172590532608174591877641411464190442829883741468976680166032412951796828546383071548433388429547640203041748816455864796881478444200031200812056229668716944992151600062672885754740959843105361418802389501904541107587989092912376292504839181156538099852208302270025638362865406578383347058456825367796088880605059578288811984218207497395864198798900899578342409077969296667014455598004513300480344371764768749067714421276051411967913445371614545218394509800670387588543176660385152328745736161101906126184552727851551773782727978442535173225858674488080562023120782322302126645895525601963309181836735337556615312295956605399309342101921816304384367496548579043028376362034578344091320161828002103716845872946163289123351783863331133106303683134352925307557750942881943433829830707871214040608941763549661870827068190870175368381428044541596815107899547147449239524201964851300143220003098735308441407859590419808988934395930743218113869164741683480428601786270616478494638795383185266339170958784883024879420146843531463435052711762472394696935992967446157632655835405169259291727724703748957893902901767669170354445677484367596018146875503730391197404910038066223797544858789518649887590537527958019593347723969784026356621563270352894057910412184270540569386688870361186420077786399198959385535229120035021726617375266598136063568132948979264199204035824411697599706575415757498900571861637935512784256286803414631112454722852154322368181180214641236529425129429553959537135354451600594885429549049315328491334662149899417929074408293998556252779055699966875692688958806172840173862635298137711593472570695318602149645383150771610113543051153971745342530482669935562511835831696205021790850227961629982203704805695620372817847446348932838960606512308259445414361652436485034791912622079695203449689770089439593217656400424922330629697168041646236975533218058978553312697466608925770914552191542170426412288696459091587162225689127205799458879136915222676768488526117767427760318839550500276231483337192444845353899048133387042740691041125543202697328753503112037929879572776164286520170554157311330523901520472010145769232797633437659201549591119249429488693308333282703723622610540390475169487876034901104262809139005472398106952050319220929403279569079276752343036677810927478488027787818207947298445120329125306981714951321878770413726796226521637552202909128311940544036133090459292258409906715394078336569721720985056504930567130803211471667006879409098767748529497367429231285142634416231821327169855912905309416580954235154081639801577251707583560075468791445279422108012338333461525153503585133637155413108714528762379172596809691103452776006574508735275497869364228044838513843281524331738729761758996173795181908380221685477751302451395111317453120561887498972493115922691513758217353302547795646687128866396393189231626058330416878149467313812675585218736718702193069561592164944975148552921700129307966686666542463807953873074177711081223295687581951856715638676072250542644538101537293297123187555396922457009340941890708709640176688765408655921750375269635674613152549031119374310543445374852884922650785894898132197315021179548009423490583316934891514525367103528501677809278129981169123015530934656071838420455840615090314670684394820850361944913003275440700936099146610125118671569386786719547449289101362929132753958001157681415414886623549843428632640254781162289596196089964712607302035973837348780237070817023115365997480274461030564869397136601172976653451587408819919670141333209587035864984482471499335394342085129217847929389708335306991126691536147189041677073221432744378331590725237110226619823025187485934431264357581411880931601135482912854414692559033023191963279606151084830362398670985289101945585575399582076882147280385312618964584483031359333744623469555101113956533155578732459821628026280628002541809348545981746088076311786918224865401444003846248357188939107877106010726723305643804545517090590086226506646319992789822078981216687639147859185695579505672413448267855949253376393298890396139053431386459118562608932720085454500587104002576470237133745671062615725971583559787589738679451829271343391277291993228631031459243558713975268230481182208719612649751803707732773638523259225979796618470894954705002695226955629813688084564673666587177477867961623974788834079426507809193934477207530213636266184024012241952004935416867066107569796188515240614191021070905787744036482585215257188853875565183457247198261841697536415786647137419833331718145420382000025272833176979059740429692012508125371919683212344686819104457285980798902358622663526259314099192471268261569385565153122291718355680812476999528674082746612311507182883344831782452127443620922509475701364911255144689239520613583072569417787098724762632305592012572595759752953169133616326023372465370048652652082873662376374917283214217598349174405271917962521649432448106251837483645840186768179887767621484647027666232591558171626725894371767176596390856357802803888220663438500622634277365526841875441320825867320615210714940064291164039185304900626107522566856556218950041692744610021140174320153029057941945980233523512068596077141947034130871022608311873067654196491681133597686087933487969940713750582823838167576519267467541441543682383532877557102950494871011265350816542240619750583735938215380382911392791531092119509291486763855892407611927607944348569128540626453717706840352504537882824588312106606333097396034765682835165585532703584451127278965258348057017549781708723553845869242122011698028775487376654675651937749035712195782371323113840658390948869986917740670950373784390827544681849798021163438347915725338042901403998632170090640185089846240290700548312161964988226241110568818925997872117926974302451363904626748971965248070063324376349210821556890981498144661885890397616527000720192439742116357202995783065315996920852532809905431985332518554027773488348935738283458516378216643835243309679227628311333207954243389314573331031807311635003372653450438751234451331034799179782724858569673993411339817042028790876195872196966478857964062972776029215572264896373886641218406895892910532727086562012143830245693249751521231299256974625671468355913642144774325968736018319784111747791676515176895388138519713287922446646289540008714662876611579263274806532097175429593696296638895841728123131796105703589076525178823904612806397233261765984904678854006940457464645800321958410090601734006989307945017935295726009184364462672005440505538303171946606992194703704185917088446508091901787537243416241623691199100706017011035393901318825732043750479519087926454746173023718534413443275374564752003151540102817758355335407545774507721886666907755660456320873424562340073033189516935014764495726809231634814624101962947849365373115269935570009773186392760546761959515961301700389272334916331968832689586932242184336623107306576485318138978838077244894016683706099804853447328108607501613538261402259418295811338463670087298506395510226632155391263129127771669894038788478088483358161934189428985931150982405117292063298050743069391418856004594647782213274378011734371318697755520333045338298598992857121127992766093080426479274015332865879604915042746845217767950687395056718882666540488636611553184654975864969865840378581240618866241311030065744278112844927880303931125058574305042736603078631372177611041128020355900291029366991304636460078820489693027902696974622590224624618407367250908680723502532743146322926490454087341206733374102069594156823263651841105086288609736629877959210715549682432254746052257738706693444863603919603876711717701756249853605517374897795701283851407805066751594526795753361088563865916339728258932229478402695216868186818336140080444829259342718563106910042826912088580921428414115881810102887194127419916248338867055846852292832082528717415774960290989455380208828552447311085185164661268404375064117346954729176955617103213458716789227486922246348357402247556415149430504171759245559937796460161168050876963023504511162897651356141575395146471565645886078596238507412488881195115265157261046138945212340064477539403360181941603407517097793648939871589284140127694753117182905588016651204615516345394184672606213995013790031129130896302251541612074922473513557368212546860597647159387759475600050125951256204855243781447080968012984625974644796847421171158105327640111277080506875327123506373674852465791010848474266930290174710795334835017467440505215000476713396065070068142174492998677797629952293878730500725361885383462438029705535211896137355607104997137093324027321397995775875708487320110252583626079647515968393090226447292901944739526162594324958185134558699740789818130614144490040788708105797525367781171440532373931221406855046622306974479940410619523500870405823132396898101712668023495337449305299846896753098855944485891915133755847930284383564475785500086330045882914716037036466315741357402382126262312498202529818464616990734397977278541219090896602164732263514494666974875805765549815178450669779772825474401093840276707763884618124762864233649520781702365401777829223747173256814791956404134938703350874934882735536277911428475249174191049964606030292801475211026184443201358707802652599537785247701850134518388010907642243716022888794829608514812857824104696158244889027863377399543680011313270977687532226414883593072827627665884989410886672173232030776824455365172344860707422077667173792429871350998491212655121582648290411760711509390532805678726307971766880686612050210330548285738745910768791026555518598400295471597816871770387147380994884213791955387557641325025378384736024256092251961523151846623514205924495968620704916747192745564181479325251888818410255691605481377114164907096903014658431373161118309979117903057821158923970715623068534110971247697668559648669211775983058985436626650209764339232523234070831937096875962310927781603797553216813016529045623448430487963111615244958788937942889841882961919147608414716935184891829141826471431782725159953658682709608353372778477405453171954663760971338378966217427728362062635762795210522944916254577845613679483082780381875805325741919601990378964163229214403550150338873061514950405937825498262456552190817552294219519338692787589306346692097179420707937798029452208692047824045664112730317500382282768051175468994393197608562957778693886293610923930593779055259974736060784802540017691002320266334919022352581580748665380443989458982787941054936893890619379106150762307946236428586951356117243238250445543716743859528433786998685239178481451414119709556285222163972467351059087316147907433661057650162779959352504974235522599673154519774724689013823092613434457386047472067309304036506570286653884855055455712028272575368330266974317707979021047533123810942782597028039713120850258747361865697174047609367037848624538091400460170023043431815005715594605163841153371979289205054483600408565394961814752214732539361268552530608363649527732009508158519884196489214775910381199767615810422356905095025158738142303960364780747532873582551355058929052260863011949346957422721565474451859756870436274184775017117583525648889409315129456646809294993317555775526143514350802373631132808807754061462803655162700300304069737951901028284280183447468518537726614052731287761015410105002609466245509091601189212853483182290020972587970623706631948499590492924665150656001378960599058221554790154515693866347849386882963994219758521321849911939688239547333497939665967976120104709013595294056086201431081140633815211634906391561548250477334913669595409235582984175397597408050074513460014720467605291478601646262380569277232461625084202089074145378113689692573156388845516531914496891413005751491930748057185214761821106478476074199406431128312662862935075271014930341139146423072914958724445454838552908564365557257981002561798603005894866564592549766323424390535334033060769921859302035950659216076626939144947705436950916650274604123371068887112063203202037793589332791844487560601164333322066476485002438690153026142285931290452338512802810964881560272345184495520929577917973576758078037196858021866041191546287165436391555222024725087531041354521674270754488881037619357127955942503058786411416401419602889779635388243256036461594090598594109093921713421133508181863011481918657177094247256086032907375242145582433549378678553193000789256118682051164439210043473202770495670674069766655596137583116719029668263400579717178287264768822389128223436639372947138099665755966986641478005721860077327833512159977417544594876477808324895927788925015165248715831374959988877891006478255021591568798840552439772378160754233285680541490680874482985933816497015827242309973923066798138373735531562612797927498700415794120877120552318399713172306472266317595439117643558510184852416343016918532671747618597503135733789684034654283073665661075292360751084462577997700043946148634386261949515268330735608688402426064429174701399553492997213140433607976572327174790562881142691796583295273120929286436977512533174874234733357705523320117570316725540555421529857310564509169851755757970479517602398302838258814939270171665749017352840072769466343696704406898807577335939778957821534455258404373863679468488623550306167192528809453373950710848958881679785919127880316140964316741506979808979484901523253416225936065817394285436247308956369759631265936752948194112753624903823980297136236179955139309383259460892802196346999942470354388061510779087546892969758760466863317720607090128390220380085341009911278388429720045057274300041244446777737426873866994699682250562983967858081991872366595510669043253327541144427555907721390766543750652632386828448474257853271470244688719691495959959958016049884819466716470079307580038296203257087765590670732999432324282879738846374564939682390871050973532459198045260430163022243147034533775107026292135368266906257732479338795470273725031071945899897420696615892509379740533346741927404570988739689717437452623823735780305103414564850441431201895846476838284710449433984591930377536878482004599049975520875952756467695952294822854381318546229618914993355415563589960159033055133072927884137183069460598855214830862210237036509574012214762393582465919539954463907791522149632864276556829986575290860871614537279498674902726301058802137320213135018990490280058401600784217017377310791486722742205451803213181944021243501731851964606442411225612715310476343794284001236209230522796512067944519150472721651051978888769679621352020448751184290894624546258456554403223083288329913052457555149324169072925279767630135818302468515140152540872513823883714631287281083534969616044918252696946151725434031502958077670620397308627204266888376370304107338965721270624568686844220295303790023788485070086433627510167729379887467151977088331997215831203221532416585885238040463402064438103731745244586205715628214140043394246755899067307723794081419079102567902620833382510313110498228590137423961302989361260449435426537530154780733019014759598343155578869549144818462434547828388354933926215401881655250325895716975528867686605296192318063505860753112899327256053841596518707295427698114984740783460398525131758835808356242244965157962788814108956835635306391076403533366018108270022489160624506874520686427895518301027653418382736641691365783986790910640410753462688528934128178905141996724234395919900623457687941904753734479909659590473293549081802655611467094183096050726854246520640916403597646860559902602441781716102377267450601927463245935908603920298102796143333314399316743984698891566286810442987321945146408067222120547307931329764431150371490212126990909148485660943380167707958890688136413358955166697571512643510414430355120168672978015751409036000573396390952067654406863243596302242142070936181539530405033521159642275137407628711613693858823891670700697133688200825133467253769733278133806368613259047224498801601418950651773551853737301409064183995565053283696806944045745001465734385501732232526307792245274732136412893116745251568966791844208635918398679982086813430648699835680234759650773423149093750529868474796577608507330022744615473002158876086639947533990209350633569914065342957442776964246254090265335735424988026750683336926037022340780744395126030626355615192388517686750183006550290504892244833699601757060728066559617949582187400595705927933402366645466225335265348550154649253344605812351485065315683692725907962316031789708481346282104253310773448959993009493489821153504530547454601492452837352957370184845798337238832195146273806591241925614322703513440342438287934133998183780236644281060048101769105549873333468870032245044512094925051230482109088076400413133745903938782003840974995959847521299238984935651836671221290804894968551843936623379696199087359595205788500936286028551988685685022448104632629399039577941613864013009428222274915292589724663520094890302297806140211178827180322706493282368583634182109116101937486796445905537140277056790473241872340075425633203515984998595924740659708404725435641657726401124659427144481445601805101607691551140961540172028902021811548794471372743752992319466187688525613972545871484375714614085432280373824517033186711831031472085273341860024830501835383312036661856765732322243620314335468194524058834231063374550164674920494128088989268709813018328226612727568155372146984335491941451185954745198404843211490664296735410067296939971154069076585012640057043110903095872911402975044896859112941564782349579118474945949030857742689329940860506657284166862107862061931396347859623075362147163053986997999976131692118562234895583158690422198681577654397779910216589564666282038154950839762513853145138214661816505772374252584859833968327966626959526797366300353043671537864340587393656390975455865963940707010343623652579060100124779586778913811555206533772339039886487653279793141194199170500969259691130518010334303737040904933288587715963107411633432051533703257459711667659231533972727983464130652032343870902902258121464510824918592919520721651561106620823610764621189123521329270550445909795908501843455295229292372047560600769225057538612193916709821034120927033183122553461530129447956081311932074399739115821499948893343162608260844484180313257859623747592077412432233173245142888892798684025536895219403948795481686164867347056847190187218813931423160324996442335163891318043818136556090333930601054862155208625568995920455608126087163441298470661046884850542748148665836331687111092970962920222210928285304938473893766925844987672967929535439450369294896200362977667841930980224558388243990800871208324620826553142040775416426620788995912781081667568912690655714938102829140069471378468796418703693233249640034164827691378391822271159222701832146702338576738149389890551050152802778291653959444654536051711560588807812832879725651991755307931282164085481469154300337199820191091210197563451120756975110116793321650164773189695511161993602688181927548756404802835496510479393971994744024741387398862015453978208509305732239022666191773975864327297181503928612169563290997750260330990256600350818735206787208897553595833173044785094086426839657446594402986814355905531653530431180300088482382330112069729358574300596298256029340046843115319352221474616682943676601364065059414955936266262541969013792355996449784216664098267322403672535455218390445791443939796845153413307438831465737874790246903782209787221566793368572232553124415974026420411508597445198889600591220611151845801470345260315454929361446057382751838419193788566335504618294167698216899436902330659574583192943160318805285886477271555712438781380339052536602333616131001027688735979497259590345930914665437112627647033994538174634191520293397280678278326190358285338549788063048449945377183284545575023525604939026920880414198075017435879373057791520048291546615064121925757365629551709342918808675480047945005535904033946162347084580150049284081822787455445911924837136185752183566822101070160901289956183926035866635428887493510158029251873928461947253247972663017886151847887818013781015942099062436675194602601742650797126159347515913196502857821471215670414934692449642385593086481848904942310346084597964501279550885356115686698415261032690713071899726639604257152515431803220666646683749918357184327467810758413113558815149407634411838330592033138898229444611873086931838828455199146007069630905883314990953557211434347972162675284507341890618969110202385092333932217259230155879678897931257850498888984645822758497904994386533400956677766781763499248011195890192283407789801356460068974355105239101893594452580465413102446879090512134682131351461117059880970858084114899744440170695039553766283569349805500624885739263360445242732392199554951626801109555870579283949828348930267036292803123471206805035991510888857240469761969399965277093067337808647028141499530909102565711892414339714275512274876054622105171702175087788406495930434655304260488474625063461988908201722667035767435779530820543860053691250102906597731856604483870414619649377912930515187391800496632721814325141771418147663152584202307453112319939200621800483197487602516119280842033403537865008576078987400680821170662952371301186300738124796567433122669873570331078441239593849588015597623193935225307283181729033208189777810955523313647761871022455592252802077306143351989873664779383199910317829063176514819781373183612190173915132916604063203178902062333668151349755872537908449959168940462705921443814595057585930715910196363235717373901915691639745621922516859182009947433243508864682425190372245469500772439937705315997236164962982580540413831589588529823287908798884839287762650824637867103260142650890910582839802078826345177680702517113987553938430293090766413599153275926074665055475527573620492228223163790591768201092386816657968759667618333056029055231027944532759936194784787941892803652288423829098164004315511859488205165406894131755827336151318631152021613203629519589079550273375627679368864015710248413304909274425606428255810337425627150079452507384738823426142992636991806617227632520462692057838759737068162627377098347327119432878479973061311150216051702630424178764021897963505021858204699968246957945668673150478429400433312278971001497751433411984195487375058801154132594030367825661627314895067152117086575657398428075873394034895221133150820133256876016429651473794591509766884023952676479803377076682289068866098225067567471001965089331650992044940577442440768731847580516460944089233144955172987241326521943317275899904853932398579997311540855955416008393264347206538559257607444024836348031948139107286468594770808682735350020548290532038811500125960174237003336421910483594226298936624804543767634276951334770989974213722052191983871601529722726953535346957226264179455101837898489510456429370450719097869252534614872449621360514624980853632690069776785274213187760938004316770795309838226817428781668725017203590742637195780837919445867590097242873396345985905315915628823938501776829455415285241242556710559781898847504840685818552903534307516754739210459874595235692050415829288643227603517900047346516825983876442786509237895594038071360863660485211443340594457233946549703420312324581407733820542391231983938135753600062984405331208790423821864473863181749682582527527477044625069856837072155863348456136320971410909521173766459785114777748926645245685560740970193422705959483964839366272616085379213247125119087892026607358405578430531559006750974940804967834196217705980804185191397530477675256148713419675203894957816510224753839084657029225468706878210457624161272995837497951023299782023062940709557181558722382763530411316338426053147867015830463625802351583872506142614035911140523488959641931091585982725421554898323778124881165620603483131535448888472477197054140754445121786677029018830457956650355762661299672095717520619644866451124130771541285705027836223459728667668995929097835098999617437481589787334850629585850581488165618418369831592590531164954115655988173103049184131264165133909861737626627192874854611504685695717302690328451357203793431334795930130645052851049500733767911824779353699975277554453112058883832746538118708506198845506878945111862635692367056969374420984409171379748948561964397875080770193610626939089303161584996992756104942048814881635727322843599091420590333102981432949965800859192792917587401059154861425478714768821859588922942659785722036877376047367031310882365086258295227999076023045252818259089943837037096803463274552491497143423043910846739500385193808187073313504320671448419556283263412620705615989502099644338205830539567105966722341282738751289674829447609589687601755028795881629163057580441173543119578209037531112530497055041093185859640375815350040916855505155096195588677089775655110883349294412107650592331761926128461036865057717443844353077624530856885916923005193547160252024491142251953967821334705161487495469635116005241062259837037482346301364537045375515404048040974664353069146991461794840795978291828497209210880066081604578549487691710214708741021407822597445546041793251786071071081136143557130754310883411929191382652495188580425159856638749730332962968196926575116024461185233602451375752252190091579344085575479432054530150559132437229260006034746915774950755818581392877657045628341797996152589646563253460438615826667074528458464842841063201155802604983409989945284275045543236900202975703050285138459315648032342784594771090728608219665181212378210564688304819648578954441714007559946755256012616981883346294902684041979620706759727248185733081499562589138072591553193171129326023510682849674752368373617026591714374577201737905244893895641339790073473132306096071821152487151479492162832917311421975248668790735086028439619107115948381933587201941129864416040414679955003009789746576238348268623993874090984925077278491330396719837100786514894894311721161432248729546710665088081266366764227244218084822641028354331267947501158222102420862291101218393176702961292382423640811038509321050037138219310066937169119489444484125945297561161615409167211360093324581520197517757131136777337863961528858110004761951507680401719824179422444894427339813256410218977140459451107808022921146608241045619384141873998179061804758355464133595253300216557402640565910390750049267621664998903757268967097301835115099485627588060257224943875492793360467953586824889915008873263755208292981357974150611763745427202841749234689948736972293863804828825058464436282697267854067983132634942004178763574449883614800230663113919227774541511569969066164976639181841818169267603747655715895713724474941230519314037243431604805069405269246957701615611782674038035343533421132889084280299633929077150167858825793103392722096069903713851570149499087044803900880304396616275486705466436615290868681280996526056417513359339170840757794105549781316167927159603868938636985805958502245958755356693431423021213936086889362345547448963005479612164217911189190774783813988486052200638428527097529423790525433880627283516398648833077885145671014605294138056009493991421544207790650772055959928655147906919559896395449557597826202375204284815438212905834681805008486107085335409450117959545396752964162113878663028043236593496827533065513479563993852207547045113523015067772495728934331634051366091394360542173194719674616705867189722289883697959890514706775510313154909434872298757499691692964780867120617563373279710429489686479443909874644608142010988724363205194161988014224228363335543319227218356140126545465067114527848533987663566826541927747106234418972388454440411005035037104484229891680042735584409519603423033658335562078300194095792537755917440870146979205645805869448362748389736901132571985367141936887644073489980087109296415054820438960888381523025327036940347632361067523752092369207743929505680807139073733305421164296829789015679061614890605031279479126553061831295688111384161619686457889322857506801567527075064839426757497915085294472134847888085206112793471516097021213239750600048097496152609037210446325216277772887029736605265907897911735724291622772186494473020154453587784497828140736361987697861910286160677419174521978986619660433619098747653020900104711704820593345753277527026180849660932262589355567660215017391955901306555481248098730592462391945073398143205560623421968457147070638665473062645464246525531690523965614947592240875845909825684500017132013914066619924618223066236402731398286830965070707320600207992908048424315618752689155981083621800514001882913026236932775050998758154620328701099988807303222324800181272084720569159975243467883262962025337350080867880584554923241670361787741644959790991902987616396997192258312122179914669464284141112170370812226431738791075142324639709709818403500556975038960162906246958894529553542252158098889591605909628315505497769361800748897724626411543174449543919302982574247235817670171730788018324219697719384790276088129727532706121916758511695469560494506360299481949616345838930224298386082612836297303815474808385859402518424642844644441447273636261535801802689155024309248331123947971442071433817938597051248117531668547903902707994922436502755654248034957394613563510955712530302080325724245771718020096007728001773141976097406199401442485955430563096749756304357036109612147145335182536447674874258006991776681317153339131533569221683557963937350388947199032224882887155457570919644308918578413628602679002800313032700781720046732955072260053713109835485756860446307845143810010077635508636046209070360748273077979482462117028432068982382271076062816307591027030469548055850893185592647814435843697463794347627201701872185861545552936907920993021631160038124766385786189399815529654649860865366891441542775819419959041210842618258989017366426786374998124703818037456341093619454214494853106982517950526407404320445134473216017642920009541788876549809009812531007004851192647244267739590104778480371765315194407961366690086450157030719202327980965259954112911230730068922180537855945081786657884892846762313136823205900118584693635726442289699118264662906614943356256020913291670147584359179541697923726297535824049734717416250733995991197742772179228867994901824265682361797231432376383020289761048941691567449255672923341409656389577019467588124089747717045993200124411125293720916260226953158310895192157969781100671061480401699253919438687737406440400671117235607765008042611577737988207674278110208904204699098640366751904293319232927188567839957411989060180249328826861545974567370895520818503839892051477203156471416137534712887369421549234092774662885383896880775293176371241765935989232889425701228280713714473632106412308586735983693859419886441165250057296077063157667823152317794793034493651383278540713091828527451555241379883135017483251842160391102513244170468456312871594244364613816104154914939222464427654023941578425816645983959751502089576397083335585153596795772124801058485142455031312573156019079592989172764265975106515707056278323093545166879853816793669051174473869187012868389199204897386925553073206020907824542905672621656059145043910077430230252275973644012400277399171970327626215477468179401006435761104531294904103551430254364026499033051593675528650237285314578414085253099263378068275295948095718521154852566794425499742247861736628760719224948923975434275146216169969901378141842086574738481303767399540535909550490269622396052457443521467678254480378869531587114190634461270313798454050349400701614833037969199935849867337090944978914908407578773788895593247898621532232847053282890594288659546795841460767264044771637897215533282438917529508949875829540575837730793729424330942999600522609351937717727942107456150727634101404708437558439964027769021354928561628299823801781767083019772362470878666154592275997695405358833890239582565607754669437108986775318461769422410574381346590672169560694489998816008154563476375399250627594751368299185881758591443580361628865079691608257411968391006777748635677793192072936026212184545327633491054254217639030681016187830888032333098938257515018478171428050625973040637364824060140256985618686282939561443105552024832207524371422706071970208853400558007887669681923355179930482896416506092254807219667661514693592820868727086377789770549737153776804622517916426568999900895592443910732734297969455215483960545235872260963535094606112522341625732226107676122250185320989221313593013577471122467093339159510037710340604033010595823711905363657918180961786682359857521692858891984354465965511286683950019556089491845569108206469977979794981649210886952563971601756101005669084284178182863522992767554592780799319259474433998912424731493055434813729375088102111893099879190712665273139660325094887936316116283720851793746261833727141026580448321533470628391066495362595573969343905072204326077391843934119941434017597221959702607333906654566744125105054725842228084280008916468650266714395956402441365184849858797776901274069340830834317084375862576889307042638278033148181090256064781175450227015874388031343756025594193733941058755672564808628390743926241766107125479147551640366957993409510300166529978532015837393165293027880296288589089460624552332155272479123781749342479295575767340721459269516208342756065867233890504737267310464153458597097251976033740267152267707106186476678630900455847865491446993035460452967125011204185251926734281393024126081549141369676978117820198844382257909166505359016904784159587428911373346098772308791244051943995947383450327349490519588758747788442280980301750383245596057993627929445117795624500779260603592567487818455171352380841691416098495380885479133741712509612087649344872902342067384247806307002855414484870034203484568797885287611445044332104559833711725451038956165875418659207371748592346966048203542611959626165713777881197714537482675834539872772941776637700825420378902133431124887943973067909145731173705537550338201254680990028160357955895708672448907700727967248297047403065447280635179989003560243524174525628208739974603233043914419829950443560321806507696602823595065449080763533265555611129847472302763870163181852842023708759174406183861446420281588105547032343887774234534897452740058516880036878771121679706729342779198628979589025565097166106534302531193113533700865038986937340454495072809067560754885721858535649038994013297487280532121859493993081321509106386366457206773262077444169957175681051732767309199210473453058150067337334535411332934148176189204687623138126030962392496185667709417735465031911558565621558742903209703570622787651757412256941482005896308827746460284447994873487626004797647391775390910491158321796538818007034467799005675175980359454321868680074846273066783008206383451023538079276628946424839239021507098181769151146195705966664909108183369311076224528876855430316200202709472447929648544473135584532986675604413496463547869778593232616209345909428682204509018566969851112217031818422689172573372892429455558737422402723291535982504202524471536510875776801665218059871526438247214880458701840828000903844137828188363419902184091660612106651085890119059972489163562701520425550813999669930245220351825986027808112554261174573846309587532852167230780168479479743776354266654807696197652397384357522488957611597026397598096916536907204599350929849778965221899794650421932279840354654914570096500445860830184048283985172166140999247645260195024650433522932539317433685456596517681568985860458042136973261236412551697220231848997143549005798769461976519793400851824343655372339544694673506432866163652405180885560634612651753019509220113409188617165779740749986496070090747553300788258424691983475555618983447303484483405295618025952066951742639705847453721514128916814597622365681556907893828547888954046306884720699471337537985224951906377625217172169117652907991189963593367213656611676823090201201242947095268645282536662980457260413617303869567480338268454120018030067687666498978108492174932696876428809821474082092111921362980879009589981687105077831374423815446880951979821888666966813001366564244192252244950981888407818116340286519512933347520383062456431219177539384418000850026901509954813182575373595122163727151457796925540053488396885403742823380547576406026179267252867835011511341828180245315333271801887162197353192747786186342593088650421224216399508477352554887747995044430456025775671628641439042512564328874280002874225512263819219900758498314569870978406264096284002133930837668350633245464199403799370117342029236664396526966981509091110062312304428050176088304324482241561057204017159974759481915139806689765631760687944206749956122443160136915219818289904034885040455700196987109756753975265267757677867071069069914770150094274180541086264314225341262008670006620277665472207458206143108930873518651355016877131827952883787826059995853862017650226691630781182080922125377993333582746896686530950689061751581976393600160154635097551814231438921743543845691439633263944518588789934866510971897911394962433293445231670423167810011085687391273228418846976721231277930240445365512576317926390106001138617314096940215968040920936081778921403394757621526877358644714719340114191889129539176141326025742012301911637460291362331365708467918733605686773903647041221451288474539125761930629087935239355961247782164464883527445259361117890777762146034899807231579399048435083739244052712520190259898907756275398883575668405885499897263499489150677677001660270145328545985469314247935623842749838996663601568182525595088659089379831143896445631002749018251300257537138469620490795580641459734971799122033775837125290970492512858251866010988513187490029354234776270716122083390646065447427449240344450774169158955719841260240724495174258400895162306429638798941736344630823215156570965810160931789207564531422812367830825657608378823352887604080248784721951005107165091558549985811576358367096599809414512263043094006123224058725313434607741054357222022242195992185993766796836741913547763732087323332785955406219707103183113435658638786689328425511192991769550399336238392243708506651956667688567804015201340011496831038268554992813221319762647537850741041451810605539871798215410952884115981360653909838434242899656033513211503740714233288037689409622196190656972957717992092811588250282960893994557809020864299518173955521698558076585091402956854474687961713569243070060561322946576553167527005709093287228492138320754471490161192667591402692663149114207890182118675219780200910954028027762724799418036302685779512472681483641418916495303277042590844437748762857753077367176818380409136283480425398595328310386186262576220370322845721457970723143579177275244994281704578631628155438984121265982026189008451985886167004893660553589787127117963675222624011692882601866819184148494715169078640748179539597487654119021878627291853520272553542408267348219384267363721079654342889227573885029115554443195677631187066405067963549550751453610113598501653705835962983846133639338796546320065857021774121775360739395494861046308984138948279402137678274160482512580603037923173491647495348534439149009439361751464361813637751789246747507581268241515705587387939201174871692345598171124498755452513516818621476434440263429889802519378833692231809847913824264747490129494486510029832722880905225575161488354534229981010287812416296939568430620863469484636736355826015329005800323704020627285804353776217441981590822727213099494319620950382078844881976747386044866575505944236502662595881226404028579533421644004459286503814012105823721142738595877200012925902779511916159494222535833313062089767304024332243050001126067955571016636877937606102085623275116725248119418640736913308053514485375372748347418559377041713077388651316878931099706976467646863145918051977381906911563367519064550822187063638392986784636206726152350293160432904541311870244339084789933235770592362568679031225318475584476182159827633864931442557836361501533172554821437665717686850426759937967277899140646044571985678494451449871700555985631090730609498181890308199295028105975423380999683526706268285507597238604547152329732909453290440865258524458147610623295359457725991606281631191895489666156669323433539503974103713578582862817476481581723871435861799593660347171476217739682834387589105884230648891213207941580708459486445409465744770541396795360653868985732279232174330980011749046883583100614917710864261352077700241377227577382093580530662473820573933850261888799825956925546046908069623674072114705040584021994745721061992889800725630057255199271202281794214068755381570166116321713513040404836662159585842709480132733669838447904931261364131312256729567924096675934248759311249511749479959839411500709421875691211352459425489745772206859134521031692714681892199205023896210870159325628109169162024480844106452186904568369277478109295529629876015851401847446833099102999738632637569990522925075590982802202493957078748418845333367648363121087471323326152637021993229057701091187121185076516583445645019748354624494359696847405325933064249809093586768632611655485534905939459725173849130607876066604794261594054346627304644437807504433471475669697879539294519944102298312131600301824505826136467976525291049709792546344066102491909965646841378718120114159905341872267326283890701675489439942466299994498745298876326280192743143048752147716500495281509816067440253815389145340652327284559282225038325883539569926920706678961904642569954341303400708840155491073721377586413355331307755784566620855789086634619725955304870105614660173073191083583018921785886141960329008482411098241663112865823616048777772570279231444675470375919699969427209461644607691149597380902142627448776102482349482092937327858852352489660660921904645653471024999284545076461296189334178505575885169156174317694257683523998916809088688973472475162387214950416413925695486583464381099605797150292382383750438652273394545816771180585515773458402458089999148156867010008948016745359759944971070646578023528594207292092049886955731207145418712390236267015217105029824473715104569245970795454332345101395193674161042595320894495301530159832535381521305556003551179909254918287314823378882543917384296255906832969626062436946081628302844864679940232052830489782053173442192668402863855558383583954699928353409030104662624814743331679225621849548308609166226813470927777153010327275114748857547964314615219259600541326171782310371707888025499056316780108989488711035145619150805181122495142188729287559420937578090688556887997921918473294232020272449079863594494384138776798964204324509883272363545636626372557313692306073962805927654632021535994488401749935299465971986644958610579674599575455090187257735650446660049061451088486044165529462948088474716562464490613365137314383238855312347946537575390949531161855979128880807192585123222643734042101485974101285187884968323487650425985504871858496949124832426641772640396963608869633919922564629496652058595126074857809795619390058035291916401031650694828298103281215894480784122764213032875533306150457231828089743721099345109673330044489141262799147042029822262566647861639959594517282469248314901705108072633044899602356695614144792782816760043255227133082585471649903044701346638502197337561684193774326470036581792839337512822365412254648974323316809701647941993199325092447866051989221268327477285525095251952592970663166803548548309821593185959393734855107200879412059531095512498078700917203671834285413663164128314550596082176300281596687552464129950439126213386132398398246676153778976589565911769555717562101943517433203391756881565013105904813445293645752424095085343105264049116551246006892627755306834818445542180882987039293162595655652092804818864569774427403669081840087963861011937809691607438879245493779539800301017045134026147794656346253744015260154982167879641207778388165890324521201040880607921666751740240562810846861656933864538930705226338291949990231211498469392499394772981899876651610625835493279870885960539648110068512144205835786275301853612590862916023657890685656267260368549947195564643904758770928575844399235390681443948315069288297932242932700600842503964897863873001293246393851771550574609012196339286575910339127865708923919547158980529440134889790772244114227355122413749391804036586200142321594597360546342808214208753330785309149661797878112192664581179356786508784724127045676980889604838478001339241164601235787447853682131957391320208136583051680493660971310350846601059035632577082157083289354848589655937280134982809142383897790257121768320057362063285481775683142910717146144845774884112577114423967105856136287021691211278248877593339287284281814421544290251020855936170214181220629608646100847793831030705058733490722151288710363351093811454776377018458139949473630696922178708209786000658728300775233141438704164663610234578052813072194351411334824020315645472330837433017934842474299100335448208294696500195482744662924173705160359242869823640701737722391815958273979856532892047261227384013144152608306153565012675821751526564855855730030072319630445836224280842645843298259478015384230535033253688660651624990735786881776374182992471629327629089071495390390646314288864950511771263922653650707953695479834578147377358232701725333116197510346710904564339380294317817281803742471108883279250186491168779978930088999305011729406023621022877086708542396671322965649120945942530890476970016653750148267501591709540691361868626409491238527592614280411122874305898183825358759341489466163640357837526259511236866288282741737586444233103434928332376182346992642825965468092552262501242173631274970356001551180704053962937125699672876021683250421458083162747244660919759417528717927884732531472602754167003083488365853249146282714705688626267838716442315565138920944236405597463242764132702021171233754923052579799222260919880278781940854079843282751711700815366119371082237523420003022718045554120851171958486784431121174537439102982089743668780705775162234783110587820049346852943162259201040041502469577850379408286330640887529726413750298703959007589213165139047535501541138531412943107077476057518931169840802825049512249251447431861370935315227050967082991030539956418397790394331992729808659509443426908242968087725739983858436988714182239906838359433429269542207115921475815146588416818872269698343404276138241707146476420846354018527655650894954572451735627375856387158393293420512026768021944428676850520862090318701441249336027030737742105146060923578840564022084252472980545646395014687000376845420480617801750744975685254612202103676240276342475863284659297670883826557793038503774359979455705435193244143053314351184554573534441169113620470510166026953132637444521614881854443914463842280812463785862531591811220074641502801177549819908818768562388827349654349577297703772481353624660316377257780007744362201006099985108515086876150122840957660083057946020813686362857706893238786751081647235811838072487334571380357313151702528651957606635030363021079818665327872911877218881168994513551022823256393877660844725347122591058852633128227531919870357196468379153857909284401656256239738353380975726321400572586481227575126315704594706990583088101713691292510260898258325197608335588639115501385034580337255048618238167440968341276172092798063942968254322151935727771877189520008169234171996948632950906376152712886345075508700487960315997704787484309574805165465963158025121705255150867758366160714938958756633005134330188288620789439692066818712284781657840564543207205714122315532969977154814074339259594611230521300519491331742145093259568363741489235636214908868555924832530087427904723380886952698490009806059615932111015575255802989382109566558583546545256034688144225803685004052847970771308068992097663525570880325065961713763965196482087077245946238890332554609706670760988836325751099954391089701940947680069406858535667899605368410607478107829924284736585047515651744389706167865091515564099499066548063075144687325221291120202159447808355084721107281823037219863302375299522147978201460167918350566772404063813203822525094751339964936528706085284792879745904677642014209221467733754527546019495125940744287050020908630222454206047846856990369613910720879574070779533257853519766544309762714460287265618376109834724713578518454040842326849377599589186935750351666411728812452331956635045562448199672819898700883482598730333389738957850888553402389535871549982727327996715164148131242236182281535738600309088571142900301581059910669669138013312262074667995681645510933429788745687873705667525578217233291622667725137089014890116715723698181992950390524661768919300848782925056394429515309452002566990762861819023036493159180264340931834270039629692330809104620531250025719793547580885195339846881160135432756144971827807430429734576860626500719481459183370783494867648141917876723022682271846418591561424365064775009780365196030170720685255368351959009808432968291230122855088247189470578467814447206234412350536261429994219953200816884740945918413384614742404241581578540435547061755982223218898140399930647622758564463230815512530640693582830310023849356419279126943770205924743498803066683538442785065716805043426872201812438609650444430425675788930155478247821997013599619964276816537525034715985198924119515517444252673414512290090571843250136487440645479287134048168141166616226263749554649627530543777141962961269921371647315943352903065865098394317817228504883299678358705347569940061588291573980235287816911928801703627048800386857254784283498301438413516738842008843521871401196800805427933704233295391700965997835362457059089130693876595466533990001847719128069315873585309827751132043287561002723368725178596114479265580941939310080477287960017480032250010834336242234310617786515255226261266637868249228354200677717289414757671099337963492502991843890196384457163246898166194957334597631184718487310415775700540027120129657544818238764864341510723116875345503420583678685623916870225730340695319851216384200014257083459036937700559171415111801274447895241730555475834493648458289309519243667602144365128772562768506587643276370414300942755925785240818091875742066774889488380526525609733239413081259197253803339666152217686219696261977096500794809790147003053249823840683437187254354295001295647363293586917453703986556925521174422817955771269349731163058653113751217007483532155261667811259776317486272140258523050754556801129432528351991957933735670315004912582590726030641345342704236202518232877958198805072400690877356319366953268036485799556774188232411180712479734810023754640810915828736206462702673285170883427643437742527316645339820365178157064661221901156618289437824991721661931784165805849073774195301187578132573217022186641472425704156514805924807725988232920145320015857916138574343699706436228514150705095567601521016910136356929772639462722675239093038469999832441278132219128570090266883493336624249645497528148086127545960072117468897443671117904171688526904915309758574869328281415503821115854031632834944384437240038003708989297619447969121395497398106155701231744361833850652817328431040907806361283246317003687302328506470383187691270984150472768374514615419884283716395776001031869518397477449310107688907370592707925275190638414800108982903365079520996947191013644551947736262682104561228433164924027753275747797106518720574200097425094278871018678171680715674464930272184888704844502964024124356996455511982393980021447006606688846568992614350648765370161542940058999191466008566335655058695274415205808478790751499929078841988796459291156814821968864629851256700247529585431088817776439004622787886882509658864561487136392025669241278409714947830268022616240106555304912324259106126176579328464141222541423045595720522623346940461133771283452048832427870749764862621840767179933171679122228388116181795361569505964450517663946692345171893838690777721956789648319933080440697326982610281077351863278776508799997514765172358051192719830701421387555255422185492593898055223670607028449404180198906636258191597493289884975737087158964777781039720342858121855463191814881890310623794191642702679712737966318835690863199998257964586969868515825081958976537166585960681572400121264265824852093674442452150848953057039356920928250092181363794118784558575470738941434247799435518543414689265915470225160324336083549546060255471515520370228434339872598736027588088440636387122522667035338550782878808690544850464446283821064439067569603820269936843908576751293210540862420694895172564239636068312963219827952401455727665646499155172475137383135966440552596024393782585904416732197053507999621083121265265094366240389581510949417114010297163056805820135272843501017743969553861632119916868606638171830357465081925161573558818062413887147144929878902155767660563315547323804353379337288147348670005184431937772090214971782279882423607220567291143374761867147863917900212299481773072696342130853582281132556609371150977422877254850193849891012054322557918174860473206309192836686651603161404005302720706111818096348271771018556155567843768075558373255339761909544795340952009179313590171847273812932900886517185559701536357794688200696731145734700887815308758589010334570438673512006328823055246228247918644811017306178901068092323632064018018791876479074812505115511455197222519729647536444019205709680454891592304512946303428118670417585406525082516658423527515138127719164959085224815288840200886841409266487510210303548073342362364978560932912705269080238890446516305488212770395293054305777356126625013460479937450637998204202970391140292887321604848953865466620813404392327679747539201328806243612143437373071449117669528856250492783769193035031888236620438534458626761949186136922789977977137555356617107605343965594011290351855089170579999756605412796702065820048032385021665855449935058931197559818095620752798916863978108004730883197323610800880651680904045960168538176722397048285114448559712711207378082622095750603635652377206541724955881051400844464564312927170426216496947123994066827223243319682056652809637941110735179747086042333125849579816546068026703501317002601447652375570893586535871341970803753802239131914887411573340731581938955273259844118150878258548431892006371762453366631147240896473636412921870365453054051418848315395797484058183937049458543988039152952640959094756237245817718899066134145702796018843732983766272680364918214889608429142232271443787535137521522926412438537240571923393972854080711139317702896749973969578366133044776880597672119201681845436098194112160933356934136142156705436944721207602600349992913892402112511880313398898643209808914920577156227140787191397837287292217785343431412023534683018187484602916948774574450324074115154782666729537489734740106005669281070603550125650496664975421986864629201727412268768368755097146140716525574755636610129400963714017041541557305422021775601945932290788217400475385941206668521903017329028095595213269188941087827385571871101963636337646648204854402545613012417882055112317136382891745817869818237980480955108923224483790430618329059480413297530262824597738482550554948344078894445015617933494565501270471606551184070738413819330548144140342896905410942524839337116890230176504381990266528393778920137886997154731881045997735523840635975807020400692768516686811639431143517027006340433368840519570151196295644503112671454689591050772070806512353385053150024296395172511873962269108660202149428585255055439170212590935173517365488564577217461621079006823142921341102770131837218627015401339826398350327475466460148093501943235702242621202928911047354328515977238874628014258297028161769838013316823488296792917364309180353087475617043068620231615348609147879956522068704362452462289880335355134475925744730207919349057870791862880724113136478720296419230031626241190504285687391967274468628781685689415915189264961234886844886008070821856147808250605714079326075283668100831741406362529885010368208220119975989783128606210618730448243601423437905211201979466926350194452027484391656519714118317109899714941230959633419107047243626670822704863837637243569099851734370211278374347374212344174876391415318857576774291454762383195280584229055648682044118261538042521721808054505166943448778256308098155699037747515622121280289463038117699023717262141688249018441668887890042688539285276438085303552582731002652605995962638660763713788896356105224643980860243340825237273623841866157298247909267090517206728918093555442405339819068683672307336102602590981604805648798685745824183989837166512770760528933721886950473004466826450139036274515487743325249996070272285345032930710839825806508528410743515986552220612359516905122612866728833416086299850396283409225343047737914195758146065649005000099238720455603436056024523594334208562032921317974076393068853617478966797362517266243635649104631000521759171126551014422397595134297561268710371927053137626708285431871834023738478310855590439711036653581169406281290148611008837221399449509925238832751074796692736586707841161718902190456016641439747039243361132672882624298284402579407580100858700222060034692462640512214677606200887131963189767957428532049534723956801382049806873477649340019394616367756647081005037695128752397868836612929608817462561966631352233181302524522678211783860717300436146211202925017553937594177012694747287409929459117966200054831446070649485613218601889549430147633421011008313279353626148972426214805207612527390330803442477122005655342059092101139085948621647276749988912170074922295100392913163577466437240866653627062154997064411038662923885479424652552463885491749417598556657276819798771248376666353912554871888801503669680608562017420896996529775847172001754162527021821197161283711036027557460292741160487258084510912258358080396964540021747813882432726750322492400340817915971333823820504739015966492537626072709475323133033738221423519823452435662905881360296744360975172400694570645907706264061897255326248856798253602205590926538464648384203908002209948505480225347187953005888812857428308743639304687535590511465578203608232569018368921211385792799143432224075173155006492490375116247714751286629017024713757648867891423924821016096713997012343981426588687245682621284173844553064288081056177100617147951486456990551589158066772746906063943092688657201036998818561652445124252449790950070094866293997238725252004943457363789048373005533161611023093454122454124189896859521365579635142434402438139824869571135301406237871035356130046346323267983843785129758260519144469318869421083029152122503531110330178773188320119441915503468809469476439274623732551456727771346844094554623622931518913173830523181078225650335953349097726657251940521032471163426886581529044008319422021914111369662831671172878807844800489943751741435948985990112128457915219119845600991805653938376819561815949302083049471655627731539331407946331969383551856630957849914194758059254706415343728090800685288320306906916910828752410692360221128505164143456631296013274041463466804565010512730850125370638696435161523261613492121258246935276415748155910923978720010591135187826785492462627580425144968608698981896770057947860214713411985717029021635183131977951432711696504010750316912509543094424257142258457320017707777457167963965422392374544063430886640837556848772994421672729897015253373434310231095276583565907945025686672893933170826302042728856574706106107865447279108068517470444504331941617875155965141640891432428257397183866704903999025528631703409389769896301482715493020941439835488337449555179191170442337661401193960471108066143480045405323821829375000258381565642679635241681276125066694539602826647854472732612520322194441479832987828246184761895116872589325972235166566380525698469470603112649314051856486944330854732364413679838075007608847571836775544442169798940074883495509791538232454894703909758873267913255963994785779338480292304350262027107810892573749042236543091019562763180621928073217218351193800581507257090811530760507375306257845468216700235219122122335563428970291331743409257299307284472127666272974071909085312950355952555937912619353260223011159320380153832347577466815762793649852657228543841644142265317158318250503133785256306925614174607263398300574615205880935982414341368505957830852506198317626490676136397810557079883045207646076818728332689030812575570780951332084869082967822994322427967530291410819088689354572342674418336810952595166440496843672598067490504067458243153930210839234171156812023734252554127521475656898795684118083246115362367870907027003446115456561921422211792033726338620952124510940835192295738456911385286019661729301719752693064458304746785849991874531247943626596471835157973988511343964187140778178507472400568329618581552079458722363042975710087901892147735282691781222229586015413928577438349483076115378703334151158263170539039061823220008735174282665121906655903522069261743347839397473616290968561855977370816930600512419374749315340765052153790846848070657293509135512880517449050351038672569025308455456807617328600187376629075255155155467403274872591386255148549101653011032389753967640356075994611625987211231924383076534734309570314649939009042493125493467339985595305881059273957211447427044653092308768151503135985705338559485665718694252938555232441139775881088067050591253078057187776953721462597682214264483418133545232471255207740185444613759572838658365223665502110496552584242661564755953664220764391435973849595345508881450599544326370293973122557996481908333792982957274438369219936425376664461020856559840625247169671294892073214212879266305084238041529251681444135891927006067271497048512765229593941532811746654579626981138071449741890247677739981546838829705576396598969319007318174104356577459354534307395222926158679744204517663746322710582670507108786922666806703099494803348590037811001992784788358935055326370803531498026341348682513339124192179818006218898984258997230957716663472621208411862637610018650313106765762574218352552285908306579097436967138517205070452967378172781508519018440670599435839225445263374072733076668327061365579648983576924660339921645262232220672433828675877922263390998866446339650733475977367333642705326062405607855541872991914811557552891647380017308326571137860722597804092472508466255522108114516277197557410899330011175892820946849405998782293377090997430231343154498472063613243354415745118695842595017110367313740699264621538138932734690887071889606412553965091150818483974630266110451687095359011473345896760391752989331936972179560415874940938745906827984883304342948536913067748234797346984648046284073311035390780092860575224434412837074128710645547077586643182946899965699438528694041406086666567532308114007036877845352025114810356700533176097567761111002672966805193830790288349737453807477913333230044426234582702981214273845986896376017400022615830735024826728387294181270269918142524542067365318746163473224464081028832899880360472963876774008685090524072417742279900414725611069643638196653809690594032308203821247704596440288515647792607289400818109134600127544906682518773196796404380923030712424026369187353580844963843195900186344562836280528039957416768907012437045143564516481558589758507966332967647036852474604256368675608858413190334891042808762005779590793458240719953889526604102537088037129508905647588268862198055333597711078743136280368456296158509415712917172457628652123466384758423576829333927801266854579983562470026772763646570293398539421820590779411547301399773446904492253236390145612409289566351924893946547909793272797593729694030543369371063883762489577240055792686404098874344736858604852700397219454507777049803312360188278510385663173481904426872090025624668880253833505795567227901598718537406417141121676896093927364692131035004601818274510609968238157224350403307997635576840417477134239220062123371429528377036319945376343167687961911192316705285661121157907303837592519834337940011061319354168746799315953955825612979513509676541219661398128220575947398780742026480009881168101937099670407236666039231667709817246700744120787747690153948945022067275079922499233863867394583560409601339894248354236340916138812230395634270603362352109273998636182973924353680391060383994275712823497583116933477600463622723850071893338288563005046371791178436817086102414300902770550186532531609020285944246352225893964189923840778922543317207003346177163566003556241392881532733914880305158427764503892114513032536652193505591543970304956975422834905436693918253137052222133175574711646816734575101242613380996904958509239116415809937932562841529949709638600623248933199998285541047443140804251623427177009761138786832594046178746809738498464576709417901436876989760009089173885676296286401989900945990575715379168740789303844570998930058639196950900876132931683876711154613281614573399404392828699307884132018316368067974697819250471747327365370782952437359413338275249172311184584327981835036083891240413875836254645596996818173034821004024243851922712004582169161975867942708129200820358621482980744356075244560539268246250757378395863143341053248769536887457968602481931413199364172143518972416073034072577209250976595384576111363248378437007378048818327727844744728407325538786002150395842431975058543693409648534517112969736478967637376178126084748611723330933926805205453971211734037610205816963090943756276096710591118444327950884816680375799976180126098674952929190230155640285948837081748390782223366384193803461742857763514330688293765716389285316099796227816648932895279628927235125671073976816954362200097235863386350440777951451815995764006309829907859668704856661806185642147069929269060050709273606917688849862551439532382556628150946295496621368014053165141695641902520620805586718237680833478981162182865053384763733782785008285988222654133088425533469233700237672004611930510747623084014610287486906911311116235240242765302436482173918093237679893754410990104107195293471023514786990906252208220129896202928291868209485276405833398626974869280397227141265697547190600811459822139892585812409736965710794294287970531042318183736576605648831318105073648476346513188542891047768711278138016096689766519851601831326971538438584051661030884242302818054960520334227810936288485019995322748798042550505030850591244722686988834469567474855719639934961472207604918388721899081156248148171541473661299260016356812761898326816593766633361262359981582341990133427992966835517955527449864147749886546481789066921715858024842859947272608662667271812512600940396415161110794667106512847813157979562381106511403098435598520337458149702104662409103870208161523336092119216974455269230031031657101423180994705145489026836284569382193036100338099394559749264499159913915745809570557571271323015514500922994682981137581647098267210634699787271509051802116241758885645609335989641896211572093166505099187764171591090731283685510395042154963279181551394644891208117452079440108367928791122371037601242942301765426133491058788555098999885115583123303017036916970055042639489886465745326169985621299179447656370853485987257172545564824205796041694065747164778843701192440356086000098524248845371931267701010040476638179955669254696269283095013753843461854361541697350056915909783238351221351927652813585604794071821430257251756812691599451644196013517511596377343272114753968573617880022605895794640896260159016959791450125262927784898158145077496892575251389243647779910710714167135233782705560938464656009787196799809524026531477885775753977551192370190296693090767954711267742103050133483363928285552045940680148505796837280488396228710689131028479043967524364921739560964572625559631372103475711111651836676053702549370214433566346345761147180962252899552288068058237970131080604575626382540554154626754583376393142443483737495149067735568275850799330845911170003271976485372956350767797381367375910754232232033490466997567176266574386614202845046159793948031978168123498050907147777822322047396622721986123672772099695548523035729636933401890647058014310931529216514828543803791138546155200089370552572274608266088099515766546946489818684576801212268737271814607119801134225634582076713720829364846637292624101822066530239219084751067925860642682302767388520255114438830392369875384033245703602039678385747061512518439256969912668187354672087418010878236005204270950470315669961887065495519914774052470697497451187596577494822756224426978585011129753580166986371615591677733470487042208129614264479520745460208456678586512960217589125875761028569493970269632393713612194500887533203474094908766716999155263260922582682378663122251971714843943476013167414273934470617566580023353628056335809044385285358952662124012885072595895282357804025241999398080234877188595669808958491991056607730662385185388666144138423342836436895782591451503800700676829467558077318797798947704156789429603731793232138764276773523911163951265998760859536221080474049014448610674628752980595498229650418052174854653122743258572703292808943391047038592101676428424059791175537883424694470823513729859976760426049036835963154217892310970188125740817889078281278960157124960358981991507552069649997223456031719360994346497573044172262672263020774456823527053058287536991683283361149006930091548907421412868983424266404931078422740396229488146492577844561253988429057710334285684478717675165713173896027726965714593074701335496775937804504268516532365677230507852022154664632131481996694298628913426266321884481688566495253136749747935671890723054067916188317140387979081838176913552796478047257810914518714044680533074990965993795961720511852887960779014503960624147716469408381128195378177702774509908498238047966361896265920337162750064712111613905004005269469350519766106849630661811963047441434967542554101087971127607386052056786339259015842641175155401545652831441394224560732153274997880743427786297351131488716795666818959482492084244606149722344405281754155012024651639744909259070952321184612400296630182996171246021614573680705006174377154962161390380118512556259624765028233420245101756264807768039411210695618909871318905885455915642214263906660530143772271198224474238602439264432080818818837381234330236512807594797839523021982784210237614169002827639101505591799501671139858922510390469591775431544338255628512753113831479506492311100691050455937055926089567366136517936650350103511903352203600313025341734264679264541977705007248475567876642215995538184660811377103116257241905578884274725966931374072834020691028752309994964367182600008812775829066780727284480732215834950242731770126797971221731496495360847505167458617618405530788461341417845487563666893196062816630179290700775139095916083410369983824499565066344649384989051657265857481342432903189415275278111567420341456565136205782713965729893622862175537590889865990961144667280667399499221535088482244618189161737268105401399637002431072522136495758981540943009919764698923824360179863476926793662459640336536835734839847675366284585452371294592109547597938467169778769899131462344261450438027412988901123999305337820625357422103671200700524910966390761050384298931643386622114962946941525640099560957662802993953522013733899549169049998956805734887112258789927877290854009227824729232984834504043031102142072083545577832137823089327510767699348741614505916229372772775696640044144827891565095804860033084187423748351526611682981918747658536244867310909927679361961480153240213781943696465375412514505075937515738714647074990433180637214810738894574887287507757033268551550149393776058489220614212886982363610799147448961225728824112674980725792945763661056084811044167304118421190243552594537333760447924034285977382142229375106396053064844970155859867606159057652350143027595216408014907564711976028000032059690245717931318131418932935075341385953596543400040986274167563076962840879591550769388437679475378421304990282207040069047602752859580221622966863731431198181804401936437372645710638915544214472801464073420390544016340383190729417524923963290258086849532703634507348461683322848937076762639127690110366422947255705832090010867771738188422070519097406431228715098995198045517384125281688627707012416482262692680520681755417254336564915919652666294583324910856507876296116322566853288138730274160829596706748651116277619410995659448999336418132299004239908433578593679961949907406320658454404310802952461386791231573835261392376317510463521878277493047668447873968407777576825654611200802093875423787866706691538367473226009039711848994242824238338700233542790525945730956402784211697359781405498721157659117572543582897366239711950944657894294924795875776268717689717997299255867572103753038721413136485370540470462955349662446224416225371795346070925007657007451898900337666121762958961687728680387438242621565289492150828294928062358791754073389300536060459882689343078549183849746192288787043579111676669173570122175182042763812759738298107014497589137128483909482875345244746890526729520408311217839584625710028467793355339219192943543724682120847704220571630352835510343246715468108044940323760499467381056487964385244857300852603406264985416786397132425172190464068365483303129157799022724447466345389745869397536468017793809301949445278554906619460105770543161793174074980631192317688747250954478561335735736886911503840244525367018194408008806338485391989751690238652141570918441791084603370871915649270616209142715818466666922005945643501342908456526311315734171123222336507076741441076472962124916269688825850630673821278518660681397658103735272014819818397396080341157442287806055828783927162549091407302002115466432606838808171849269516677727821187176780751152848057229938697299671487797510714211388779981980314131254446314083047894496539048748699448400981715635147945894833512032006881921314264636071725668009197575621483235666266556643749413823976582275181774503170611881518224292783523260607125699450377047859784038300639995757546769611884538703979869583157703862969114724303547059892953761458597575362010135186654247160234863021654052485830740007959152534625040230115621187599290138316786131922545786688552942142339731520966454484522395249381010842805271110793392743146659184664399415943001502947666226334927457820665496525596587672197877975947458082001990923964148314439370968653578277219723404707238075373682545374674044626911713114273339145497629427037026177566971358548310367814757636674737015233564506963057229014442735682822081648249443549400231856222654283446001045474559212842305578046345304170098053433642113424107479048197281144154130075958230079241585723149886081234626812062852886806300714586057969052210694715484966263114128088713492048186292273233239047616716688542018463717310970404946823783673517224678382394619778850543801213665431437996867467986625838035423228717072810983975734315423278260313379756988040008823510174250955179268520011560482812185002366481576467222702428545719438141818415684200039252941571408041645046305135208776360497322702007340278638049566190191540163294976881935250066371807945480665565820307318511606323326484411221332591855266961129627754901223287195517222902026578333958822258393479797103232686971944004292095007420032159650496852214685361716125046331154944406914198679419773631661737497603845516098143926441399897308934245306234088910272843373956491902743076703922367661685648849305239628015334978312283541584469921681695082791727407327038328939676939216869287195805659857287975810933127757101391956786772252667543446011682606089687643329046517303399069033644724861466832117372488881640912897114416747376673003792105385553624895491341033721832666798741534525233913393081178491491682448689353320437202531510915364175625172428464130952485295875586480675163282718321711789609287113010112482195965051212217191247644915264074199970440741565276812145565580895970717678455875971101123986044794944729507810553560623352800750890869579960627830750456866067118423671235199168604682146289056152205756027307547116116843776329614116031054509286916776539063820366488862395368617259973782841426963391787238897931588507003716814695216284813115444093238586434925270326439392046245856311912953161935895386801041576925539922724854738241066034618543141311054321096464849499960267641559074073303531990450820086063803738657185099550312645318327514124582007340616390414420394503802530406740439791085858790104931669331748282734008005036564867763052485602209554915397402660895747147926141164857434754792413721409684324904994658445752216086660648255824352887833203241217453049632716973572550301216838698295452459036200686535986880857603389253742001331140529003528816765676654857043708357525152509212901653938811830842678795301425919457383674333503829113706124284870442700536276532791647072118630368340742424430193137045714917631681142419507194706477622729990009676228903947543236253923895980267340015839650881816844213685751203282425439566661385607820938737748736497080780241773721643929339070302948063089465892955726705531447086474264824827130261746517308189213791440893031720650420077417556780907212702891122148466374176171678208648993933959883045842526007342881910985451202953038439684100714395538543296084447226071730505711987317904253224909023587853550170820487250957943623705250537130654552373121848027330199139878113601804117285192982688246364056823144789350937098045643656009105863510537620273045486559412405282747652639341377953156710357148749716996988457966894737606761571732011788549731205687489674365894485732232966879091843938443934190734095076246362217355456924612408522025464004583294930464952573867669535273312696754407460663275776123839561120692012676466878366911663862902558413648864631030443743393943955747067836575102674519873190894323276881921886206465943881775654662698622657753786477760342423497382613444841187125674854812845992982572966748833518317355040463865844235982667486479434098028239621837398362786155843816739004910479108678310812885817625055038434369713027115038011724925241293998515772450429749745558641628061404413548800600781667097324718484623115830673404292034582794454038851946880333703475586541106600502606124194547466605309182273386369699515574236035206944966303669790858435101497453601505687408711620907673158304645279636500239179895693612400055756150767096683992545400934747408480291974576606228381440636736666168825540202251571069461854431064434089286817793917111094885149978326408478929147277975795132459354773692817396232182510983251763611402867208957705795738597212786212889038021708406319325604041013852763049310588500075917016836504155038649047702113959723982936267761136662010346956566660481527837560295933441182891027065814344486601485857490434186196817878200870876519823137749880013771911424549772710028259532679666078441609630520979457019435610819802281590867107886475962161831108646074236616595927993277524222760898236420498554741051074252023644200997775082906082766253673428853372058051675891760315730039057857893011933637959071184486467082119581871214041871231665949297061631190412124035562542736163831659866055554883657272511173682155504624279563231717392654379518291202775673773365263576093943418375831856820152387735385071842915028390113431285804917527384972152122251473710199748175097399488378922043848331404356370784346331855361206780480033883363146844427693673266840341173740885009195958499777094432955216221882962331969915248178707417779739126300563949308968748170151722507477617807845641162188291815587632926688363187264661098704638072213994642699975759384222006732385414229574399647902132856638862796246018321707732839978914195277250526806004363922653696793564452909272820746129494908833139168555680406315621385891535187577274902667620633774134950491302451279243629956599292567717415317986144731508914469197031109880414526943494721491889156657474267442179204212551260135120089155118220609681568508904090862002762791100409837846432194167504344584112437645854273122841023848038418379701602751691139892723878467977222937897409501186418920066564966973568940348403867969168937364606005457486934310866256860261809227091994510686554745801180708414725362851463671699306578806595662249700260134435181522521624356077271360967388984613579367434586605733290592979869398500717881414209253303392421459422171438152525523485363751482397164471009832099933877188509165615905959733147003199488602349739568005356177373648602235685180133984635515790768328871190998297808478522486310074990273725656438359527195101629919688510016213859006599055691140802253705141018350904595376404653616424749387679647813887987429056074290302997941178055444590142295143709926084432213553306296903190717308575265313449028557610813086961293674330846492408172124619273163937904721349096578281857835667706463683689974765485115226222948278316076252200865852443366279529666724737560424806454069910061042755676044355848814790898245367380031335652641578191723306515835026743756361619855988026369174237010261998522364638455941415324355691467399515736215388525670063994252934772952960019168842998356557723318637297664026239899998130277752208172548088403193522729512217166349085644804588438297741526141265294423238380029976119568617794359530746977359380213756893645100900865090978787086144429485340125784253321605986990742646313206839162877223904063236106832027977261144182014879911670448360117312302724474662295276217071752834535395859980361858292395990102599228820753895252503370483435742717595342394864679646173423225916724758634929315396028420111430385231693464726671786681243021192069557097320558302478913090365370310039198969969165694861280320527701622988637268069835962343342971854646417288365533021385239918339618455124649681222449907262500590563317373269706254532935067848691005372140112602266563027517908775795891706514379183159162748579184559256818154958637084086336507018294723978601058723807653447526968716209208341638441491042380317510717841850236224847723124564406923031216769512667938853223348133281452370762995275977071124369694778886781199444745503951171262666374862909230602455269780635932559324074252163777010192357596804864699011971713398807201407587969860273528559874807494268070636222226029905773506832678561753577245616181099768850815198359154134081009750015311691061784369301183588539788388126044532145733901061914425223346401653624402744179968324744156421532871633199212460321919069690296012766751786360450578105824179715633492919502068386805377916706479077837430931065863494124899518472611871319886243196004977762422873260558719266847344250495131149782137609875840510363259482821049723628630663760099808805176163819159211883441879948857634819510239560788537951866077871616923660020087241924712092610648710392342623922599393808260295070169193874240307962514829685502326817400365765353144424008612460818294096099524347753677828801279395603503987847486664427395640416444536424290068108699351001028900645208394128761715226985277654251627921690635396900825985258847485952133495397046037328235165505036448384186216672966806612874989041852151354980631780181770115319338953075713582538335186931233866114158966801618742631323687019484669789277653956159684655710978925185869492435351191750343200605035374219347553313325253443357674870933906079315859153698911676664926501474137850357445521797115053676145606009620256263828139999776717488602056421735273090634933333605606967200878960303418153953311355950682315888994520864271903741455802590736652440876428831182557727251068474209931425488726725043454288750985899562320813063078304813417498596184046747403390875416950072387944067881123461010982085987999507510036679488222625620918985808117582170096936904842051134592924938547340084554128796014520774655387596088803156065156948397335477961735578837328481310138209777875092689944709094828854639836968331942093811283561638674185369287747874928024983968965220824067546721465068734681910303371056457335004698601112428232534672577404563832908495455201349949458168558372046688234129170914648659260567498434030057868654175692690921001228231041723907908183903685040859710295942239384426084156767046726785719658212174505607012277456828643864618540462841240281115027264211223586261382472303674710661139352653679523728455446401393886924374890137253669259537301008922383155859401639936573954320016468858119707306013675211550977245226120672829934642929034306146644360680721873643104935990363647076155411078098256443594959630820146111558352487509258401685082707397415240656103130483946388615996851167115524589081794940910097257723000126911474446928061207246644222275417260424267789523428525358352462299294910899966164874212617089664488020124097975785051606814537346820234585167020017563073253330112004842008984366707451190419188493417219240131533067339217113825937035110650798270949036129329034814296982370976319566097845815315136993436184977131110043876002130992673758528708124124983363225819788375017376765832678775992082131789471781050127052743834186213038517626085782105120991045916107605935929421587653152863261510393798080963326332692933529715282133590594132874260457159291372106151033634344338533101000856895184742872310900333494223169655229663693510033056853453355887351775829670177516527646135218007502165267738199887651997143564082697926246362914025343718117973013023375991567890501670830811897163085150726567215608076593699288022548809629769295409826620498307809813942886438700653995429010551738248992918948359112208364008936136331069441017888900190398436811496192587313728099787548503960782222015683376893545954505220399566410116446554697056003258772624018419719601009713075260450354329073181462266325777449095644286054515303957082870240350602924566620423080225899998768940758756179618262681373453770404282496183995783801503060795137542054009264031509376096670385588614559152489225528454157271969454073004184253108651786246333991102217234703360161166921399172992483783230745899083449584115441289905777973432829424571095316661562378510934824379658687849432505551320411383290952152087093519955062982067230137290260651400396355788167944984342579759490117022179553108718775915241972478791386097115582350369389866685001225277928392915423716102885196885637203246850241627399297981106894637750307400032921028735761266197824243340920895774857320064773309132133000168229990294680881778697921662730286476861532464057771227857784799821364898900947394524189189094629090010805348102876973560354592347260811302739262917175841506752361230705819139704755534952517739295258184912802009965594308081706946781578638221889780992312131824380997164118546617673557875143406694194202604855788084569240775821076251755390732438432070502191952571625302855692090487528023638770837943941494975903541756192115031775965491890548183527427808426042271591039821883654985416445071622026007774789085735018365424861099720417423702344920092610243806587869116264423113014688039097570016681830780211522902314961528226897727732337339471691227496112261455760888854164190636534277996371589854115326673227169213497051653455247820525031330226034475410406438947751071252617755681292129652893739388196912021002134826627503682717060086604250248786081276711095349290103914979056885355666519137307766732673305526481023615073195852457290698247582281205975843939470939499451409138139892194736937129607742712837976822586101993198350140680597341332818526397001647570186342734944470542909348017226464895975712227045578721858587373778130654469959128597329209468672344566838286429154388482106191559412265905291991599443534177364040450152046838515271552083578776380793827112646776151255442220287883899845503835543569614844053671465572990046918383088990128550975721533262541649468760553104639752800760123624866040484005379615576835719021836107094467621838879556658813296734466991863413206611981150062325523289309918075502280204441086907300710759506033309842355935536482225051881588516409870485116490063124820341496295310741797363039663759485140740763730706341383223669969695767357164790663725428930903932691235884557275922980982666129882217618662822687518970915613126675405824292713574929522299556319470225891444533097618847957684093324950295773261971917020487105218083639269279324566796596980740488916250460196927171860978897654153256838838993168686793194717343412408202026615659428990581428145335105847459952494618581377808778012273820108144841352469310988068377527723193226866045461818879111709573590515823910059347180846087866122640297973586168722820802471588333925548395416464498042708740524386189055501860180646141418308116834899239459050183735905664861444562071041435629352910691512881715621879015271818074459546509048405428120005509432044626945028314553675967547699020231562250420712353815428408009660346634171145438430976286875790419812856303766836007186325808632637484419316697532656884076032833179896964301614246119976049212836808634943727136790535504308187238501519816817538983692161366558973421268095027348801915054817708909823067589873549030811937015948725618024721979356979342228290279355273296640822193774245227323185293508959525007356998195038314613646572529666238044710219833484525013814478624726764309388401513236696011632855226077200062678192864378823676017767705299514268843394004382607411154177358547402401149225641574390450551396240659213204576360204825495229313922902182953086283569984878734762501509010506719159782579249716726196727479341935382435196526758013507580808644154395520323176483334350648428671819065629255458170251355860575427835063039869048890239865316146565247944595451376177387964753022962744216678783960147538643018733870664847733137050109766447042699074098097288895530248839224182831467973774475926213485556777220178633294731424339079634692976962323077057247974791065435606607279094646037521901775120393737250131758618396760690391699426249156511997532332019256613053889999055625323779291860006793037272333967131657763910785380444478053057471864477028814047660631893137780842732342956518595096958693440094789419107167426212987783485117345470905975119948152074933387506234771381219641296998367485188040771150050043445699295663527698068978035068590539165071412258252632551266185530122791016105780099353790462129886888274988367431225664855195214463647471878638839535208431834784152038280548806889369322367218992092745742004244596987704809345170579042152073868528564719066402822659607685037252771813029118020268784100242396718697322517134933278022822299563823904386240712813024891058217817133173534312620864505622624860315347796936838486611447205535494276369444794175514280297681045467256332393431988700679081214002644043502394785814071419955736504002931536697650540250490121894627144061976014591502691156199551047652902828236729505145860790212383215572522131878919529097970779330963017194274744810702452375634529605846901449434772143959072913703579414219762055335937427260437606570937792905939660450371174274868397205525215682747517998289502951449667774396550402230651468755612097950861003001881084065306907337398003544008616788295037706713411377317877802239655606472921122803238917370072703964948478696237672855737632964434764110579226431677065304808336011298186702376419130500056716812106207443545358189333196491372809220027895909658294011301363859739772615658672660162001360153300182653530991190184781409539980745713561816150881103379150140986571857259347656112434548361843135238870016825971663498549901155477518032404944170375334949727916490404588313055346948253558797174281279949933866026079060756701822379496664371251045943549549428233375921565367616533324875947672060982701812135567752969540837757192766195400132886657365243214274117189549098061759603887410658980062708859309624193537926222316078449718035955145920517355619692003392801034765274129440730292777793592385849578217696341902919931257564546695113776631140341107962993523405104244200857135994540256323872870035215262702688113222034289787459058171900573075870045838661287239555911068178245659890154828943964795586947696276023093649451069881638412811970951277606075692062642440105262523303281678121423629440508881264158072548271933907014987344711355976243882898534132620285793319089789601744531605972790463816821914121494931737861560265967436105534099313314627336085395643536378551457267332644387447083911545408579379755134892766742553324251858186115550515466479536900290909802874551437018893324299824177870679655818564695934801985469380223974374643156944967473182356759588957321663476774327335191889544714322817529647128516793759004728740637063754928604394929586659628949901974532422317112047475198444335612616917626142071258289243472991394813574817076730363512148156927150550280653558990614848893069105747051997894638712711471805554735870372504627325408032446729226565139712874792189847774001206576767074534634557127069920591042874850496484944840688375034724552189372942272417057530302808413491692662989721767461887199468706193960386393358172540525704036641430465392645417584510111886675923066000455277708905830719851443524104473507366364522633251802394399745283825174203351073195995485971157616358930035263834955688254414092804690770473399572182664904730852924386336753771705609758837245218401139081840769003335944389982020019865901347978655960414570497224827045848017311718213711928494355313995342340278361084131307568092739238634321155005707713901639800721856876034021438072012334504810153838141595476527971318992665618912634198537989061287553215984499702336457969035199441954061448162230102662723145960963521073015882530213404652851488615550141167877471713878236981119211541096352643614061241377094698514121786351144469484935063099333364073343932589389287528180127311734247547143071236722392853348802414309616534396440271762723507644273789265752418672124688802477756532990128356756943204449683592217437012362337806625888804504781990869252975942747644034557191350108619784950656113600497975839999807054400804957932090589890905697524558091331382263019426363499503353405322722628504768493590923839700254219653421747688013156002830330283582871860061593690782519661827350757311365433914814878610931714826898409832643171865007478133465121861267074054631598386801040446311293271354518225939220770571912711574507972647001009696732838930634537746316834312366245384245253783618343285906729545218683137051612526295166126558401592485698795351324431176695791067593143219117954823658789546251583387722041089979177706970609550525417265813350195617268235557792091171472683262932811267693674400387235503630609506336744282732107460123950616912865112834214884000121737183818858467714745432175216319223047304827378310709188949602574633776740819505713827638094843955835955840093304637232387828104884438611347456542648968428456228157839564622859738956798836032171776232724725757535406131679458399701440184542175350725487159650576247259921664956838952403062245966186424132649792732550749463295896860045166645790345633634780999042357265259362472419307786034112099438079212270895170614560692015172623491336978594216598257313509955574298251332530887364563449645404655584869060131136839883839773508138611718150423811782532398526971969816769983741377410583143190329584966908200914118823954328304758905154011818915676338087194159533639236254012472959360157865322536218958307931353812860633903929947216014862651959390156430420034116374056634196716190498810121188560615471249536332928590672389964109751988548937952615684312952401182652879332950697033261138560472465344770952292434314681038385545370660251226964551864522723840329819591716680969339791880552665075900270518435980211893337667601214394167784753731549703922050716800838257104607739878668627453907856147271664425538434930634255285866360035763965618338142355201250797224782212503350845919339519485021533017123800682949439531112916248976804526875264247496151450215535578652480584960491446547104268595432302824823246192749241566692382451624249706009071726493544682602224228096895373139610251000906778662951808428406466826411189591776140834532519871067300133982400556239539943039053144121471042378627439252790031198468295097473557809382076141419813531490448117404569745495237561812756866673119714943959927687429452975401540409306875947363253259892868949909078013059359801435859601057161691188392782497794242094756787349810604832456147748349238275335581106052966719573551653929482356601823737820098062849000991636015599987069258781365219284600375442760164290042199435489928661830953620225658511235809257995065528866469660340215642493715511841823781381310716554364811727204025324897340759485555521880346273174382420753316948565976455089612244699242903973441277736667455102064498490700095615367053943485278265910917861717697317389034476117279951405525157448481520883538770341834217059344501963176051291259080586198526148335809185349077340427777307811559489330317628600008749177809896290741291292812725721775565772573171623586237208133352667863930973331412787531016871871620455457294096592922579619198324551601422190330474564554106514198042602000069560264321281070581326820937263403396802938375795783549161017268947542980425176589055412804039409676928816703219377128869903809764731520871981342016404410374107942511450651958174604653209778814687836494636478030089799500873791526626035159090889101895697531681891474001250077201942873005093875292531500323253514704640049811043343676599167265161770343400173872213527007364667963016582781352207201632603266830142928391186357657626662091562669888436309881147883749684681113317839331468413083147945651287268473730741903403541355672738981170539765787033918108025178685648426520733245746152381794861054910269156758773295595100296357523354914786478958251520302967652207584796105797636139910808236129552971240544826934089306084294508300131232811530841782602347260141268071305665912218143057293424846700178033712758714022377387601115923202607841867024488401034854956154169409135602504806760740090080132387334175036078235402315994706383108988653015200227203021102663857694348386790998237341551437480899674070402811961136779619142509503279188481881288660930508952542115749574669561568247922062494179839106379299779400992267364138299833129011148564354373775316695202290563776555272337931662087512103425216642084747599319091622268848013944962651261486390848766535559811265216028903600707964101208299458067987825662357938060016200047417420485582120015254739937767469709841118305539583272049086034927678701982051606678555898434098891506487791416586084541841206297745619699082290908558091434998374105266787027901328923415601729123155324205186814190561049691016629000066161889091303636926811282076975565944319898208851602267659662148501841094644951457603138321047833307718672929755132746363413758365454588772970877100152766127252261373762355491707598474746001404774337092579894697448611608597252337463421776215360551756976953877092146569254215074858484212915885445692847742489265914009917956859878112888380209515234778506095385791833151440342494340574077397481727320924470600314405359075135938637702061093183597709609393738900589018364536330219501045345130932577510214492461461237882351530356747253627477272428222578259735466430470388514596241318296461346364726653137912260259247142181735055539290500892264092239723356296392577142665346026295187775005781825687068613321265641908953515784935716240356760505390409900365206120846310259027931372557629393269693119410293265516300951800421974446271424041971512462041610743546811495973356967965538934897502877079513087000941825448527367718414139857115338425529955400182058968154080072568759475633524096486883657150253789628660670959433583238846182306270556352716142947727713349469955350330791621485667429986005532852587841852268834846308150767505960342259736995535858124189398162413947949191744950479015625357997752538934002539376020673686742246410238345357922326531925860314949874889422150605597831831058894448540545165886859407840278479597910509098050929731066504760957469179246340013157448830552665389938847792049279674937410020325672841306522631047369280087621760699087156121700524123108821287145526952680634411043715562883106559002060935982100443868219570880269617328952482898935486506587488144093390719897050328567532219023986205464850191586725153695676377025876575638309095103418526690264194366757067157997616470484786235706223911303430912525509502569914846027247883968569693954084518910278583707024914298176663324357805833830005733269135883912414385531586995001950988145884335137521578829214442760533988790152300096925938016948113871257117256929517303310341219802558625449515951509444056942553206605634757467674238130800072225342058124248478655496656556033368986847830324152584164108369675969248496205678750497091045774535522373782672894137228779541389199318812826202402971037655969119340365212516919609996115432934053507392046712961480910923110506959122908611580106719333523674190440592927237024647322882725267923398654394062262783367933428391969722230161166977280805000182563953866233414350967641136169641136287945225725538218471764880011113977142210170089745475680574157145752758540539928912105955512361304341668665190668988400706396874541723513325144683400722464152832266970936149621040216333712068079828871315031068368787978272918497423490517109864539163285990515432633786642534332185063555337382106303390065336518413292456504454677819010810933507775196594790639726644266289570660794172723909559584973760124915673961615990933620597030477207698563273700989433345289304013467970546272636460860908021273818505979020919060149595344012502985400735158844306971960157890558741670261431779694347527627217389930258990982824494692992576250337667443000722225666372265638402896182355968837832013333761554344657278903406893318096259075704551171480191070508471644031755263861110059740899841607030953027160574805892184399460281010434728465311047749971746159345411584008782974332267375346962198282318372659394346796304402550410441397920896301102469138419011678200181603950829624253780497932436142359203701251732937601819188573446058992542203758157387276361463793602551302262496784540925564005652425463301492758787572708102381530492085485658203295427360105702778430074113752229745628142128476287556992904018274100731710813716027208322339822283167962255136877372309712260284397384933044441764035633818262389685151213159112363214437802698645883019272446405895325549099813265909610558331997958307625590194164619584489339107947801476601509498186540798632931072404072610463844775714074928663681324804369847481569505140379994094485465252341986687088189448922974430307204975215559404956875123526610599248989893353938467680201554977611757989014963329000995602880137332490234371024201811924841400353015685622672997232926088864226938422654516889606583158900227303344739823948584014237968490141921493597925212775445210511150065731399111687082105287639106683263484901530316652160569838537658268987235592550918948853880339835831196363044394387900183959078038048252272763504916614547746726833725722791373577476440732535131996505921952294288906879459906111269335219015148734229250127806014271353897193855778394174753492925288502711990109509144014517560145656953934466804065111882924428623756725331364328637220043134063149682929938113598733440801231995410378456601856731192787442705146631154009094798309428921652270440507615319085185168876714542392832975081989792183832747223914958475791725378794002186838067871960139850046011704620896009242552352987953986868558050853116108150045245102446599499228094684406949213432623812140250106638026669732877800209295139502024848532252138061413206054518790739879914045176632640888693143168661758661590858458872331545593574743991067689231542078311679654031251571115625090409400350916556135086226932459351386497325591621950624687761079586510430506625063260391268001041711558451491435749152130931598618207862255484002596485627875043080533412051482608646579868105685420868419570170886033232227043778683143946043223428125557177809661038016107923923037448107298462922725025028587841334870704284207134356065771755144066760544489117976456767095838163530923857776902325845460617498496928091507856784161496813857462948869844675801082467476626055321029108244191380661746707307884635695712835634752575292325118506775610253073714831168918933999215097658892131907451257420149168428465446369697568227679593981125280379531249162274055812283751831358956443186486983398326328372813062846817951182600692258378987864658952415861284107839246701603100730468999807491582299938437499327393008028271001075192800873585206981197530102839687040548539188451677773859602733238781403840415679599662535473163091175436401825621686873399993709762778199918752986507914944764299555884422532780311993658721144518030943187246135330196896260871863094473928735218946991266638987182137824745953104430331761877643451619758184413133569431413522859511831343065814461430600569031565762776646984443120639113971593383563911753727857395490804882652008868782322450150062355574132373068551305375328514126972313537910416778715913302990306119672613658580474338936149925849813927500052327775503094668669053020095200912728705216214014891451134644679604840538095507337432484826400936434296376405898046577353656051348362133064996552955486885300700724226968307797391347422710198847630123821193586135069136046240094095270528677946527299228439469830605650870023766971029244450840170776244718650771320613108320078467826790579393154056960054068021961462072015512502947079496790447826350730740477738957124632592542472630180192082271300922246797861619286083955541643043336114836576943436208582915786524050102091920024225914652892573680766189654850314673036857038124188424125637934218382068136727798869122218968918226336756424937082198968872215254747294089430906587887042022202554623407634840387670683168552622477495321720408631210609235108348512249417433672056775358842624116038422258048582496666102858180240831334246136341721493067682273059920804804986842382339736172710259015906249334499342650915031831315455809790991706382357607176885747978162178813749371498958533238207831269784577732254055569557124538160835594153792307794943329811217247311300398800151044724717221343321043223048883306492216778030929092137200190777869533236666088136005214363657092676334669211848904186529793851114024313346599329256999897180210483414533286475510018325879244080039390772781831950617938281558385829938404468813585304368812552355564318307320075842390542647106930551826900418806614070253840120629178711435372786400799991332218114252630349226836064675318220529111422346190179340645748982006173020051150436656694874621283758211516414349695608033817413456142893946076459873806944487577627499343984944717484470800761269641295979171032714901280313465388377014979193016131390364071394201367323952261390268574709921833826318894579820479507728358093470584775128095971740009358290052168314954873067937784296552992742327765724321363184803949778076581749519427999696268017698560606362341165372902340146348378180765064137881485365715004542346004799573438862067139560213386359835329785193001102452799850218192206950842436561309505144732949641254716887080885713288196845399804840305812335177951965771574039662926309077969903121834155614535872116424545199187265744761345234540252204535570418421312150500984210668206354250234508714832703740216143076492627593361937997462049403799047776725567292195658240667780758907709413804253878955625562437969154722860004636113274637346373366881335669817405095782586180638200348361409007699413622678990078071432603527781204378048746754001104431125977037367580721951044196163660370447698907962252062625468991863814346940634267542176193524792807308213156491337575369371807317190154428273003037430840267723927179399679624316710582538918956055786106762505759550747310772844870676661818680959571859822195517083231526826313725399735471472825203773004462431043026500272603188733751545701468716765510548564525228556346500102812105189328094427234760800816096532389424472421312025033975394148779067276566581450881350487968226632328896380858592674759441167044409711998273394944465861175956212676804905278233470104068680691646969158898006051399425893623895965661690013582701411291662966738976809981330789046592158618033677994786691959492431302475603550265409511621196677743906564332468232235618010357551101295265200577550422633984951139569432425470571837395717388855328763828298357237214398283292788360765524546436757399331131124088795389429753130728689254276774539244988981550686889454421835300715003188047386791917342506465710691115568043655538322390568685529318756932104389996868596888907835471940006711469018865373847357633678212550384786094635401215437290981859384391617338463360015983240009129853562166310926500192744824279515225696420544379743700571617116256326875713766335510314118738422475331263818059986312465207062159988076596541254455212730860887785701115496681385532596246000083609039243124059354903860741709306292791070002498721241507362698439731927135208286472685512835611276695108921607087979082869927915873333736231231241026748841988188391143095181333813317946390879494198428931663538171021791816479815086706041989886764284675531821654909496508036531279505558601363047562570340134639209485582446654376196521167881276074545853604132370756147810834030033574710893234003469175667325420477082328515084515197296301355713903489662167235054304643309042357394308264599081467969490875660355107752624575422630704520435863747894407303772891106446469963461194957441627755677186730831160846783558547291773237154186943529324718446879516145008556889052356108824354097836112313389528238377928271401586750055379382679888194820671701480515226126415175325632718080567886196232105987523830979928103541617774882762178262870439403469293304194862977586497385310360085255607741269303280857689354609167002782420927231424286712587907722900064893780365513573010782609432537498344758182637806129003482099923282703706585492018811668032947594965679877268531912212096864722889540948903279288486395546423993806172589463258482302777012502017344265540641167892010591784450153714742552798132565649693210510294012445791955090608150790061742600074637493987922624767876352254290854199303770362055069355639809363146560774615577317517056184169968191931508095567062477787404889996106741879754717476021924598498070733242469083793291269139397641300169340140882689493859551076737291763587764396395722077173848240353732204546358729566975139414401005192584969654975588507970471900016756665899494968444105016724980182748713845984719050593864760520914286953621045222932928984247321698432744659504550494732309934982261303067480347020818411792128031307946792165990606041620534399921274663435873543427877428915112432027076045140134282029940585591281178488166695129739258960535465402190568429790852892992305064053745360736492900948356723433885967061869147203180415586500248717509477574511145328529688290961267896968019081478722120715221879702073745958001128031479035199182497967635296725694329249395478785512525963970914336728380477268812341992983388968698752012754141954438862840050739375917255399947675383020577233534758378982732701601301314318585316108272841827481439257456208855300977452249500858297296996284284607139482513590905773230393360794450813182961643360758183294158281858268511029767597798023562766469180030312910015116673178844556303941430146161787181844234072070271720748191331393535039088986198011885617148111334049363112161287134162780868090227095198410790099225887503869802455945420903987016443432329408113987279915321123286080024563043726604545762486082347151504861667762519358242784461316247263710799224358071335955706352984252557669924734669625417158517788494568227481091674514832916383630317552188587117389118133688764220424312672366133834054080721103483458688980379689267744472362734707124547747109895191672592226593772110346094108395257082605127424017631633206267098147166330205010810980915189938363500512851388663111792409438810891625076451398642758102849289115346515209040664962321056967499690845176915656563617814341798780258038843770023588279318941460933225262332123422807323800101615301371091492392885679766895740988394514338633770665622900420470402190739592084435552003134150128701822736089457169174391168750058020613930971274411144942112485313640778952737048003899620948011960596631559137236979063571712488235859736385432912500076836800928013845430256054979668157455144286087080450593536444024560264151271266981277434116533523401808049382605672958010428711633068148868836503696712207387714942484143426981048102754339225387981612470248880598713390935876786133969006450520568623883945326262737578271248065102633625808600187409929490840226252319313559306924586583190557305242590096060856752299540290952070098627945106986762535142594305343410723334231423709768553292141904591222918751257741163420652238251302075293761760188803013681290533082247584350143019564281256688495742469339030649695518808770541723443850789255479840896957650068785251839539294140984227720480578429863708738683382713616754369230504012157918706325103649245320980005108081864159298622857133820815753280577884494334309151418091148726610317345050930772765910206451512280995215164649489574991226993961172924830471152634197939084545515701097389461797110351490096226870655317126785739133568480125135083198177635831130745100239982100349869317996918910411357360443965836052699688594138224474448820950559411170836619058553896313141690417454907279781112274413361534253609115400489931074767847462338618604697303740128173053016359089671280775124460983291977374454231890790092187150163749612896656812681799536840953239149351747569831212888899569267167336490510006223332778384081376684284866389718784285199317719214225125917627838189254749631100996014880453026794342259257677682608902080459141576152794950026562822012452845419579096677722107515243459697493367608269257351358665214836287400728943009637990823666651169769862463746491396556244704748202942930653927205130816789861709546738599208283078540380138390235803840023068680461167551415166809080793759781827390272675051068349748590860311219205525943514740344451743745014893009442475031650970456366505707024326929767957144386298225367779198050330222494951879179551535013723953916225574982004048166625530560435602557119302648570171772066122713414709698312101859506844134524082725021733415496445140668864850660052717017267214481814415494082801886507346870235725507719622780773420695503288022972519919869614620983831934975370434585736159441562540536477812246288494648569733638818670469373537689067296889449909247067929061895381691108997336603394085974054691923766350340533287810233033626357833287312869927535304962937582006664661906515764581573355481189472563454251149999179122923207582252928943840347685132560956988236512083149933719737322990875663410477639813860764593463943480203055940483070733864043200842864467860546795533366556652767791059444173909371196607257220702337215787403801274297182127067333994052301626292730883546661257044261826452617564962186974172892728181973820174954211330343202746635552062558028984342651512882162630171217354312795754922260924815911935628990365845530519696198305627267510259015890530991097703302464299668349624804492349763084630704322999087052985293373783528173125542023315637283605010595424664632108620095476833300448620944265765163716153704400344505826610695798169834853722231720182840697532082870386602109993407949850088682546998573092601498657749600909202100149874467478788111477812421111120874709850457006318355738896945876614818990615669737103485349270593291588822167228603043382592001843331767203895069428558548382975973050954422966558619002689686358681640683471396471047514087465709437344955738373773623111624986023726335473556463487916678620624464907867017417635685965012645802804275576838958580963182275573428494111805039191023273134136337714532081943361756172323303703701317475172124976851850955006305399528216668971805644991140103323033475392309844662304053525038034719480146223877219462436423552970517532310609395745198601078796832063984940914186637854779911927968941455726297040003546515652036756597509412402686480915660959698089798368474643259442659142136933590847301716819818626195416037209523514054921693629303263335886437527923952848930112035657609018013836279338733803852409558501193013149116606118607090164673823821524675720794888249123814809542547451309374146934556372425393528950447382862650885590150783702271296885871746002341375669708526123935424387075265905889282156549487960372296912974434599245900357729400972998509138263749341110614328747516183386170621918740856713068879600145515311711489954526639132457784277930594553897626358363915291860259767915202980922463997615596640054810625220506739383892550226417280180997738089866153873948496218948942157008209009975408796621502695636795638878604649788306667527574812386406852786370322328153040975698585108704349827568238454551377659910194469258405311109358320622972670214716225802471756706706359041104149507250198352128586843035055685304497807863469012497961896936596745570049574264115399284698710744926812933769304992953727997475517826084339146915661026727149813269001184062236091747246806812489510856365781546900357946542759549459042342831829324775632933123776122748840916701639724050034650832342113246739694033225598979270232107529426290154485873466946339512792472287391744677864813038717516138127311387477329765028030915545121033908801036369442014091942742698739679896482024950630923637556152085870466260649863407045629477957971489402661544117228575108716760935342984116545184696098741667147832979238000691878718959797084890277675282045424384522391670617155406741122419515338876351486184720141772723827904946685590131832705434086819203252257494345232469711211515659145801179879751893141494987830391481633545780659416362099793694352957917275839572658696784129212485227715680536323480901699503889295098634869968131394987708720842684574293503006157974611261655404115481481112668317527665161384167279811650466004802903724726855041039991759019565562913629575553580267781001304899217100550457505510658631208397878097165254012309836074927697524919916717880073827846935813803215115816355357301090708833822049682811643708850166406506392377880965294844973807989973251768956371026529229540483421999278617754457483532898604132899383807165980682095061077849833513548537983877137914974911111036196964146883437115805686597974840122303539209992872764909806197055669847102113408452573613286657595832271096771308369589605651813282541450328124082918678344790064303824588954959911283755745936188981669912381869664983550261234652203095815104177481054253393400594485795967872474250006863243282969033328633900140181570919514278772057235362048861779208631870421108330701500238748461683412379679212387655012221693134478617037899922884366405996766180489981952741932685286979164447141304032958142011672480610887832351244511650786738132872834315410992747711339598028218178054431391676977317800537913443071846852413943266612612153030278455257163589508265161556513530196726222194002626256023627324395967413149375772432239479444558148603019979809691515325566490396994357103998029900269261155281309642942853377883398990079192866923915245587943311626877556027459289235726189617282489002122178781390371172424293233973451752444392567419640630830878498523406899031452477865910892282043293271608243260725442854490396831876590511377606451077005157351028463344482418565217051235216369105186670337231008410268334717529696871160870755190624295575987959667851095758640969758849039703420011560611626322652714844208691229758208333991325066244075012010393337501256808330790174680223124312977009125185706995786351907115628704834217219801240332088976040228729175279523407547070647323936206785506214084328293676601354249573171909474146355319710569648539932407079191805134678331239954543417526240960834196694291890466406727920929361342880065954971881076623620821593979252379992833366773005421290034882163183277666291867658885520544367443182036398493131843844772872843528807818120993936478405406088286898811748163631292462203712136553025812363375142843729556375382071384310969811485653113769578336632184219724333001695660536505542534397068559258944037620106182690509070169787780233632431270041992444485450217455939347805469946877447951349317166294956781261321504288231311965085253532029514945344716972341844644960966481332437232130623561342542501583111015606178001868377466024374236678194340515540973981359373139091591228530714870731563125654610213347744717653190472492434941804581886787479356812228236146090142530568097262037454243671086690516652169003079115591261936959777878664835676218756051636955553790917680593311883387727654384582132759687061943773355350553633597666902194251548968104845424788587113418190505756257394559625817852898839134911637716252324951847414247581599131833649149009340262438769085071571851224349285079587292441185587329162409190251692831079938460178909975385741514117025835475856154300511674171323295931843977906205025014324686898846218077397595453463308577689554555191731794543942852363143634823954524263820605445161741887320132553122306503847103598120426034964530737820769493444718753878591030275301836212659828084237899929916548690380096676643067898708725165292189811643864063213835920998018602268473261845438133862659012676158465107253755781610305479486502073639192782432544171856038193877419498744569792482864952676660460251077789088406812385284763580862052588026805994855844321884908524235141572417792379036780828454000239000944705673676905659634907090555368904707449243274871791080906229246079129041029256241881843379410229754474354239614381997205319056664677240204213164420713848814599803858000067041567091992883033474917325382098493819446230846865513810265084301134291335835309281190407597693843862560471416208629010471823863434542390379588115033278401555675440110747983962991194899074216552553059821948256927262910479397608276728607114063491680074428806981627795001931014925996336522466462716306056962537697216850906498893967898040110858988948059425808927734682252059054996751468509814154413956475511971641718583428028185772638651436228601557992566491869542332675547119415202316089707837846305319202828368973002611547815723610588068745480150377130200836482650736698401335877064219954886722990562653171342507068726293287876311698313577315355768330345394266453774190062864691154087801235067889900839362257763466167008084682481393977631422159942515232202719126936909672737750546803947867059075741811932461847852936807329149391923548161367606938510554411566505039758155138164003839523266591169744515207031127756684536524200766334884074249413905505164295971216070783506890051784688828750294591451069026982608015504338850535902660851744795369477731896869642162311163914756621667875160447687290935035466479088823131900257026576947326795145452130498086946141243530283050306161294189932087199025804450789647565997001317679056954725410992182690585097457518092979469415477085585239512596002989183936152179374961153274518376480255023917910319444630059756080035751417453785874642661112411353595252433854619813228831210776255760924435166449583047989636106132172841002292348840773017381186894452998473797960952284255561928541877905779101610819738153515611501771311576995751072375030925549564828548723077111482909498483615578726728607928084882729699949294796006487596063515889893522862392271295901309252211166192614634108337813546495017407799830870668848004707172536509309021280096332690384050320834139015139159184378714466519709645910228284036093804960621188905069019040565108972916537719600305680772165354102253851345364107511784454715022254325399222213064881609278388314432968365093252548031841704260630379791759943496045916449329386293262339903365042756241505945554905180610223552436339322369771614099112250108977364077467897575948317364133234321560181458560137251512055406653131466764148555236844356643208015546935058850024196335468805027814171274082472599247263026195747025612484865721286799785782068266974185054996698847589136175989263665530684032399229037254255753157618290746185644237973284230129571675124504875803090082901567172073627390130085185570540796196188316186467307950491348494277134220319465404378052511922573101129027001700423354984777090275654305050962058742099750983588266153332733035190916332350755291950380726856094957866092383045151622067112331107974645712834590049849009887417077461525071552719072052543751384937146099536547682919833560518836979246123708717336674306463372502859414517401091247588426045995861611247532785603702919800826388218346622191333869528449042497223699336362762655775317300057372796381072401599634487232764864846293730249396794981067485800314013676996886843520696316717068371791311803781879078752957437541188555255487174189343040692977261551032405440481984212454680035361022096847421754622783105745014792668309963391418267740567509894172377012933103121958067604478455830670876732282332389748901151660797312831364286532292587327973373708594035664453641734607583872380690539994473096690066879299712069056335324670401417695094794190020703261698978409048188230283225415292413942218701395297437375727393893020775498530058514811195032974777228625891719249261247438778804082145684942727454522620586577413264228180041959469422634731743625205482289772761128419957270936090268586070190522154769320797626691569196535463439461737297207983338248928357806195653883393120372495933868790396283498159196088657700044078606948058495119347618146127462731799604799002872746114086042614044068147475591786686084383692330375109017546849728878274064213091251328024431374721591306665012520449616975882571560471017037561635947035180108105574802976895343182178208730858956064679141611632473771553135951392149387940989805818337498357710473911008336716799827775821092778533310462217065954033895936004723764318513381928291619351622600953889930074991225453775931549602538032008075574098192268999893611228127482903091818949810505669446717517408440383923545986683638980196127826197884166495977136360539916670912540213121863747304019578339808170129054961860826692823774701248041653611233472886080414127482798312047370427644110437182657354730040833791357046707896503381125960977788504268732282367080010830153485316700585378299562784065714957120382944953806358303348842814204045104729822275796508781040813722313925510017081799753654852463020123835534760506228623376026113417159664304142850169789153665239182625754398124909654039618310528359025442079228183149010832790673502631467197867129971312313167622129329574569220672389401459038067481142249329404366980726009238310769454028238867796606831760748203646688936532970964031283680464443175674484752021677896449437175034424881720174666181197079604245533910007667439900606891929783319169917461619589237170726714059215963922042297122413661605241219353930277640554871740540343077012042813686330529651028039363289252320461391181478227395456936787168464038917983289423434903379863565736997497282093571232356911601245031839598227418720281760502064088455732831796267985888908195391848115699997516283936929106999490906982858913820118943304747871030970161384854435242223653740171391702233206158747537366858930366087502525373652789542575320242598637790503187959933710789384767353404085913538926653552817231237252129859258598744125114486952055893403201589806375737941243676123414997227628687926883562731442404174532235268669977331801190813463701104410657145357237536946472105448341786067114133522840726426491685933568961247487155905450047704243757663046539023240855706138331691878721625876707685068529230308114771519093683010319889739403167771907894952994088284907328464113975914200704597090203519137291199431365602546062972296549974671246809692283440343978476253271126727092093655865923033468502208782363506012262545418905834308533674532736229496684459411860506085757481025379837773639761429696517347191933266964168950464195029597544830058253487569825478733566518380533275624186691789023403478909634479306075000502859635868886287729082275175055081887624243513186371230454942499634978670915017302416866443827085829138646476709807064511602848801112660029672101099450774551540786046067113904443842267560916541398861629702787982498824092460686352586787037470224346171518022603668023598807727240183199991947383959184893981829965077347857355365938492791721925234757059261839599614409645902905820365083155593846528278690080110296199764108771087553923013856974043040249662053865506617071118392315526883220537404674784089771654169117366539924769983925878638216742190488562971578589686170046718914411048237900079589724939737009823952059515721443615391956388566303311530023960268914222069895354526917330891097492947017152620869430420149993343879108186429553813958137636495201211922577167402906977818670902483991737569000067145233048918089142065182243723850449847068752613663236725706901058198249783017277080818346495483705306768039939067719843583239357394923798139419249015333291003001255304142631665519348512684655616032405819797274340738100957622397810961261636355734657426148477013506210192585713020856435840793350633010691679047764580524474374514111316584893824773306431906254092298503586171877548665055979237933165640113757495552657861041162965545256469046351963057828954056399237874583036436328813995344612133272648877314070353501877631783585740798979479610028367284862275725430871345722020479053297868639653911522110749853059076447278649600956312913605715970929724978998482226483510449762947689091904541339256497850809684602177096871219332674387448295457242079278251243425336789640582061837985424956514032417621671825507854830468877493154361548071453727135296501441732360116206010096988806474138828946571658819794311546091253774362465938873995598219275676600880318654537205700407005609532265825336176738954597474622478712394863085681391822015810647976455896947156107861222517427963822857488278722568855560810851186758508175943594029244000305139869803194335769270785798889071966991540087151603587247621159630422467836185687217148519581158852955935121991178959840649093682301087579187395368428902362995259333117161591897061159264311906123349529064658097185256412356621610976852419306603138234979514150752611299769205271876385345008476642287205448683955088942040274060052958854890353166665632348699354841351441920012581992026872372110604320447487388478494219512453557823047242409244348125346430377597814816986002784125060700050569085052252425913726809638646929344720494728944420723886806894220574873195822874943177310588294026775225130999222898242149135082470613122043215997062534673161144478122880508676794290982788956038309261477573096472060118438408231870993694250300684515720904171047213113135419148377021352268972410895860780433262531029330770285296926257480369912535569265324014863225479915898433118319161532232826760832941738873477945890875992472845184343190921248530050491445329426255540498034917352976927777704822146691299157989469599854039909322041472640502317829434460619526664581085371575634402659400983226622586767866686706432061869025981691016389873297685841136673652528870658583596784187275643141866929945692581792909328722314112350334137937752740444252526263095328808234424277030634044326365272621116210433619860404115571670410753865931333412452867854266370035213413235873758091185962762580295792513303447386950876277634337850187439159888553670353403549521357056344788932181436347379577386408193946234544762805453642346236115193840875011166205996831928506364243938304816660549877981902926757326678835616356307565227392498035752069564573596081957962150122982968711204283874201222460987969651260091926829238041932835663068065852863716350877893972279978882252386548514597224922755646595798559682583160197963486415452804423883695482122633557399298341871407944809757682141762924431547612901113502775236942907929143882486820964507640668940768152843031299783090041215077801347636716352580835043570634265273487548999860084688651336811180246710753703267979886180587656875784989750574760497356948640389961869634839012401168494021392312140962729522927536999206869350636753329850669675948469536426734346400948387444255205897022591447401882628467546203137136048818482661878623392971557485965257470799880624895810705484771667378601939629522692970915763635942672438440262865513601051060495402711424516452224026341908046133128456918996975723630559092578691847988641684390891428251387914295560707979099722685324779234244774406883507655419575180334335303870378288910338265466420234861599363021891112406605307085230402226886087365609407045344931401079920516984910339623016636158433499419228560617787307586650336023609958896052564280702997055188218256779332915581626759099680431791280568131878435521525462760552672066127273505786415786056409185945470604966890345872802286978050044185761821781371253018757448878711569804411856209675850258420691682676181378796327968962681849364853620052315664350443472087959057825632373209687939254853166259392614164999804602381189596814810636756250270877109649585314632987852374141267687019068340399817014818910623221801669353634995221303248979349302221989535776477257773906979179168329038309340898753035844547594799646185315002100456701276760476579912204161756713038081551630362480636711129110530929357883845215752934212787338108138406392517546433971734658307016111209572018099978614793773700707773592255771601716997449723711118594906141102146079256779945657533605329403540933857977546467695121639939928797212454401139665895881767679603906179219217982669845650105501493374672749122594785539802331326172653694324428113378283282786618504890580825276728528958028840088481145050210981676298179770653308335875540332579686238107588544504120785527386413441490796563013281722787346610325919381376271856119569237123566817692137469778710256622909244805978112276058085426036197331459516995366818604692052429942494375519762628534372427211639189433667349376638730935711949192846453851317332798547960748192478950340448066367537438488321554472937161188661546746212139386122956689593894836183305285464148103377507265604395846172621092458020661442397679017966286112073762375632826640380205695856373982556053074913860270289896280715474700186116742986254674807717828710425216124058059526994110712682593588204869452098533427772030868080134565423119974180380113494457737728372547888270535602903885103103749982422533255509299687701887685146995768633801333371033877180575560225000769147023543113614648234651767567360964638142778297589268901704119437545450250896725542228473146509905482980039674732454321531612685308882520316670535409511144850112932114404066592930429304260272996920318516738801025772983474255629313063369758155567061716036141961256516464200543028664208575554815979266964915988039936571696893325540150057192055323379663032952146560369940971441696355082889663393306262387089920301019424696009985043536678411965497537184694395042210572729283525098378140470740852434886884122569335366623830697366355998588969618212297407627257095438234954932245637619709459621371938034937868642649789753515496830920105684596638810380820553694416857788428919196669154257139299444387826321562743136134990456674250049081241708641040901821968115063531278367993428256388570591794016004305451448084963162915055454425807475510109870350321964500468281027863046963562061085797696380907740871134307445448719796033042501264122375688754283737406579591716664341841494990333747804728755840682608419188689106709256881685780772383623024869439746727230610545858802684727044578202802285392290110783572168724866838738340950211822837859796892953139493880265659273539101366858344603783306066940011329429516963278129494583211681182667964503745982410710783358787482245903731618118306926495924192641511127721879563645915588086256071194866592904756788491911612415642092119802228266594956739141525365195510182381961375500645366179257858293997717992599663989098183942272279110083754778609128085162786387528405768321166965555537471258783225923852823233051338167002168641974142758007264553923714238111654760067347653796069170646210024856306551864384646260532616454604103038710338766900470508152851421662955831331557682070346349194045964162717736960221920533054553231614491183238483218647360698142949510705810908948106437551154005773006192475212421466923607108834909539588505984118448803616865936939529479667959797525506841130497793508242993962546775168184704717984685294078020362481123317481954056786011483669623311407234672487824803226689566056929731344205630655535783348976086060827706743211199845567538110334486095546969555164948215765458222276290386651786555637703763041219195972437029483085485835304656951353766084835909919119625216166048116060950949918149134265719074756386056691353912069975113505530922196023594731669164296464667692146631232985035769445176957774854923887944048583527880805131759975722569461800317121554746174074515618083205799437886488957502885522283223800145269458443205544839908614639725023505056757761926182565541916400373810034216365175541864618178702798966995235887289529685164326621999858923862333151930297184066924619303859664724136469540742532938854219202435093253723688392699273023665326177539790716744117771190878788582525548779116631017626494036929165026461716601670331810634077022094295875088973681940477216372966638862441167485569096336999401342858860608218314024664104341736076414728881968732793842064736056644951076241793259739322326478232154395223691664021717698861221853738308611992812306377585305997073221269232812511189768568092162246891663245999902830451280254515856440153137574551660204661038275923857769090902595835644349229861347508175624192613831928109049469729619768620233172079130757233914820797750738764628342788543167924711950601581986260433598425096030845561927997089790335976410452710907733906680585838641948254781464035778730599811505067501634143751592112205050188858228219358275674752339796604295978027128016794596839153569372692303634121114573376810531029156275008258060214580415197370330741922000983932799079433064087109795183280537700157690816390383564794440445995010452771143115491565793617680477419019003063524017690678450308549221745073372686972024297231105338342060411274144736393445468891746149215979956838497872646812304753183983642082099561732886853453570421042327324594039653721425934256290379869284091709939320237645505913103750693500756297218128967292731229355694427641352515128670586535505175337758825926833455950161622833896744248799892171082756110382059564569134827835656496915208885320118720137979024516944092313796190065157134961542338289927336513661872405424938514515807613429585708940458486272298663358271272615730623987228434004082423744514610478438529108389078071616292024863418666468588871950589671521646471001011834484242496504099649371573382788168742847559147466576047391791919380776180669833794056842251427459273290293225060170214004808079699087751944949165833318271715628830158784047338770112098583864776887008441805196948649063788948755907303750435346384186577309299092938603782771294464494550897522112573888911610676051795544059831718419478458224017904923154967214762131678572227643051606211018099010091722284647196305886110572641898550856547264093174834543805510297247715705948054249713368575974723895464707981078717197276601813879954052833104892444843100348377699547101582945871230237402386778275779086309357095957193247446906834364486915315208048309586145356820968038448993692947878305278059754391409517053385452562233027589405772342579308747020313510460367183813749635205965982536439010295725518013033795816122916963646535696039962137418420784893014559125821935278059711456259750371040980780115289593849748212000199797307710175302149123079632171846967229059086202900020641754713485879947054348665715648648706383243202809998343679693669737224234564305606847247336231047858700469159815963996760386787670411752538739510638074433032168304406216262788471424007983390858120484412591787579310088358574770240058708161742682599410259641208396733088994831522897803222485054006325232997390383261211511298370522343199528902816634767010029795962526941748920780207087379684570542999836110983433762582176554583270976296420782596766584135477525766423893981882236507085643565173108046427574670556090231336500286727538068327069284749129808004223289376187538911184331495478987757702784663834956128494499594655207418282185109223769491181773774810911559893878847347989651895248853402440336453519012269280062506997319306391658136972152960453744314771779399608659210944447727433215683649936317264749647876765367413885928096847161042954091541529941386238954203370069725283176199829309897881655238126160817398154113132203622175793064882481363661482342506133129248004351186532127481456017885392074099808037500216088339898821223060774995201164962715983774946769769601212023433864527838900802194315021986252508299823922398849234856123355545544669991807576401285638323820639644273157124703209855979414949793513930359476140586150513536498213262849206758942113469837130900463752510953655335267823465204750406869731181036562738412996083358694149082572444128493819525162612615253768445145835110659894405052396476144014256726436378466266374106500402514107657310455130799735947081956298327854221049970430141686805245068685689488629350573331618319057135934443405753264497582005030643334014188700352651199876399639323281893412668976490016479074696183635304999238807563572823446559907317936790930566088141623726644087912404113427853993473924636563163337960033887417907085500579240746615080819728554485789552259453128317993666044837246395068980067060408294678150063716148308652851784485367509569216890167627265258141701193231334530987071720355474779154388813291781251523673727729716270513665508915664116591620681665435800607080529229278127645097613227019495435511124660808664692133481769661018738546696366497075805648851973083017268632723825064641052476905896845427006353874632742224324655452781366205358862255484878210496793532194014421968809786223710952745137902139623375715650760192715464734925204791805476737204914753625303775268367579290884261598804783222902121278536807894366311356135598558173220573563431584390181730639245571089780963591812340316839849328934026293897157541446256773014422962829310633934440456433576833882700701201054391313871090381919310380941683498449242794629806521860379079969464903040387856151683391240201958694582931877984688333558152206826194187708708431600112712774983949240787076977197577990689581148443911266588409623548205836893127125042135483251205865619767513259714055937968968507327627914201689303566474900116022725165130834504561392015414417264605535637318736114215329924374257786196301117630586993327069595233892696711751342015018828794116501214438093506613687322698909063613999347993479049946236241003278515544859387829438340520545744704359436428327413452290216953172218929870915887736541896153908371937341745660362719552982321878711712381960210145543107154067429627760658585047974192113257667951670318262145798871076883052704928815257595843972287237513325060200999387638821592552386599185121618864417088372757927892175664109185281159348017281207223632911601677054180619935030453978046589254686167304720054998033575225507158590361400884820103214321095227250729249869749469459029518792447402755494403503278724956186069520072409127609791781337102269874475433876688717724309155339056571083233871540177598243302174485434591848657939703978566948819007302243248259842236632565702851938189397759340541624122298846864086787798908447833820676090524978341091438942349343358368385688576527362078170907999047011761941039800757017079065061382928367984757486971789844007972437396642658606638529883000745312839045242943453289733727281602554036970160022547606276978390701896805242089918513337958416004793108269407591071512438098386873565739890306740109555560720867258310561116823424978028605109825660778192793555482427862807467405997514368219898709363581844913959653527327375924977869055483565748869455000895848448596800602049512851412431603320424136539657786386635477901027054346426947346528809673110833424768272075893501783791162170694430102594826542670059081686335458559780469953688003476419532053810234887661223305865294703977697652947466105572554993281192227727196950447323865188991811776420205468777424024399598297177808406537305119042618657847403122731934587768316169154379829804927095469934203272920017095809002852799609029469936898639718318090241362713748341510012920177919057330049768730152464185377850582669439666255831377423247020103446483704660384293719785846582160035079725373003490450215807022321624408990963350420560368096006395916203851864515183965893456385981942008801957673928275104359610726146890631364549977600948190541107166775946702802979031117409658021477705159849755105922691551883014375824747218108780593579222882398674621228647683568039247799895099348306664085910424734233537993240386831052058543579968017480710076643857115612100707749092510301561336041161813094129636639864398004909381333292006118814809170187589051761230028174635118790104309725298161628024717185759270399219638342227519398915302615124477051584421372495739644765909202523249496501773303860930508529735297235487566271818904764887799499815988243383146502400802743362582413953962413483887659722485872368014870559408885017360818858956729704664152408965955472491386935372771184947315079890703469553353005174532651328410399702549778728594826922665393284718049757155771527379596244036677269597490459467551397289503783920283817638636966893799628326230691374801570238665883792707964887183794114127856265137321071166136040204316719501607194470301503529396031389005169593214226953213127888754090338323321294603523752423809960120999301282835523852069098632846249194349093856365193501896239965727906477685994166826167346093213447277067095538305312094245960868000726505657233589609379169085102597567522514363362404600689942555883677022248675959932928975720264991127778711033489878364087735349508714230738429515661105228715681619704946739246568800267186532855120256117372980711476213514833756984896683204177186955577917180736013137860337681548920021459606572040953407702013356280006933404659144943875046578957593130881163596368662732618057712883002581419375578798158424164280815084122907742372785780703972779682657631070106497030757475862704126107765520623305222388343749408469153757351073976282828088117815230508699840076770200364644617781735443308558441958899376719324918531519379022896436438867973449496681224603904752704034311508457887268889679610742809403090564316361625698305197516634922622550108332572398883472185474882448883651893949496940168000077164540364075122839762948534927641583684258520383515199480253322378943252884064844276729914920735999744820207416392764379283393777204123382049486829305483078430086094008032282582772414038478220569610906845462674162947789279233894948460654433549326715674702745173563097638727583530193113272438098862064520291388636757573028218098532635240846096212550663668984884613367619941182065639517729633801818715570421192984403782947661272121945436504434376457384732669441065614391490016781028726135281362607033299312820275677395910608080238837036033415501884902666044052970935500910603361942940054897271589496868284671738082284367707317650790220326296158141867943662152997802608152339061092244452685762287338545153703911405327078818284354380068441459400060194136369635510691157427377670463830105865772022706531552896969334226309952251701860121981543301894953885126980563623690070866224380692504156498850667006050999865866845772313452578038993733405798504634471427236853117014442694618758515172535476510914378459207997314372181622193602982377295425064386916443714127317734993689475061789159367812086204391640263623175148343845691670521383603925005976681767569324624104234541122039327603068895252549145112284291830487981785010652455216955382272215867272198151107650956019014543506134298854424436615024557169034972180584069102879691222186869587993000606853420089451149926015415244617734462250448333907483016649385919836001796668199877461399080737460320299455872668859114559472448674083132700071059476342737722668226522461562296305843855975132772759707324913295659182144148404382151122967612543816695707057826505891960793854691795303138629045863614384222695430951112737831467209405406923745005353232431942984598745826502927572081205779457233210857930829773152113276955637169917100114748326955015391665455311393777178546282747216375056538981884063536068333570493328667467961715839335224861570983635667955704246640128333872503377380677159249710151787951568521897637048910043227575922168873799105961482900954038905701231868914777407488938769038013828221465431388994531411360897111055626543095509465309436118375826918197873776713601090454622940247765981634850149526164329054173321779141804679270975792822665484972998881729958910947725136267014992795055655129801027411563883083317378894793796076142926002994494964897826228844366670453352841992245185716863487621737361758267875759311721343161464016661082310304197701572073411002995300745745140331615978642294910671235648003962888266018315531689013981452604407095018521527667959914687011437532406615081246161579898066767442916788021681974561076524409929165008713606199281283840701084632102635290070590442026733771210295843841417306224113997062878350980588597387924238018087109087550175854313570622777596676538246858395368664678906233920084264006262340880894258522382029832586299782483279574443871444725206144213402127137217488291242565851612637301710319888366617204684723446431368202006126121771869476985946176199555664077229068998683032584762325771315940865461235279618280790038203986106330503403550380173106887254857978995459661664259797335896832617015833153499965465532516480939753490542077360895369605291762508450573958426585281924692233022208856836293272187432311640917702165023402949118729851588246469442593073129858783409275426056971615490928757425876353843498875349824360470940684824474627073723376263005808299504700257735121159399531492256547094325690108987264489624982437113985040323783875775268140498668936019543525253115290767879409871578788413225479524527382047228296941923247786746883705534723801259997814312396373543665828794044804668867696478529324244471956920341379141103575025036522184627057034566118816430844921130542710130626754588858108948810117200513116959617491750408523984909106270494499520878371584500251416028305328484286433384203145593229025284552780314164198382079894098563402346373559149311641896152800339316866239726950231086198640242262512816441012879447612047353979304749650599511888472562621753109390627724838652554457627553915457362922999646716040091594674867019227772835070140103197873070481776818776040881302666073683554989704380553718330471687841151291961920787688722451832169816025747276858009908812428651743025858923167342368010056397362440149135822928031186582838586103723275575485307761167644752849534832607694246822071014059880624534936445249422049103751689721167385706346000339509683756676715063007126625358226448863892435240135323861738206967800852409749447319485068837111089057516053579710480845884580770874993009331315095543738154249592675458533262103465229681757972910052108112963216388747504552447174550487502823345007286152802049082990930638299945768591749001679980072588518748008918383195931228309894004319461512476429964131014498560867824605363101508848483169752468284894795621149554676106541717218789304632685981728972520468171753692168555241630581071902088607035256281252540761278610859401973647504069867106821119006152393748685989478446650911119289721700689819406802421433017285565519665414871167645633022576379086937531717573841778017106445043814987633358105054506449570867695343302401336787275687745076152354670636439021965787124407427576333163089454712189644848339330946516927099983312107195375781722537302103772864065382867542057456357980744619475235253415226456571813474983849925882223055663740502893798869348980218455460441077833233290943666437389402675862341073489592986057902859320391184230443871754468333573710491937320341437355585152873386592597463397088893259698569171112582708857326525197784669832609610849236915505973020154875583845838897154156539194421262816769497675855092876613038714924679522383860138318336343094092189058508000471259262396670253482421355639678076948396684372492168149513928566802320774034706077382689759677788398983978151063449746120185259649876478190310174937819654367821197436340742420286269428399576598953727104464460541376097802076695535476636930009777028941542259260785949676476304453358442642012444494405007222209013803379336066501588579020829507857356890776644730892786335322679129867872960694410079253846429325871862529633225029923198151038444711526638218110945656022855799049633721179111877353429938300447293842609817593046918403322474092918857540807749921018303731883206730858812623854323915318457505697486275994477001999375157225210966012793381187317840855656392410497249129826786711669333947667800742812571458968390524662021568955379982170348635875924483163598539850400489978176807281969642587204198354513686406476705975353568490753032008352007833343265817357090945292895864161839856454683262507639116369051443088138964311967508258322021929671478458818750617831897758737115329460726717393349210034044442083014341656953234706828782122101763348552593680782614643760945365304628736278609441231305681401051953917922648558546345783242822299096977449546924393367774813444071650599638432590606333608760773357510084099819743339215145007918101055383201262142577438069593861465671938516954062871647360938013271682086453119048084061731045597949562806870867781469392958950450451102547089545162637495785766042575034072383900987688462062325599459824867656866476539579930067531031962092741623769596125911512867603326130241070690997376377335905204067270060303343296219957064820501309505953729267678146866524117215005400848673880471127580562669485339238614492572792152455636639273936036294067335245436062688590921601675679114862094623883249002703067614702165321648057954721746689215336777236559612637595515384641472274876864093944291105400626657068375831827299052416718425162917393310617158091470185154669304845552304521127676624699490085730333711768394916447930402374977642435740727981045946135036465879242896655266815331545742818830484777981379000850281858602720808897517383905257573846961905824165925039148593065013414912197375996032773778525727501652370305140599518200128375713209851460744228444496202158482614332986366161729840757426994478445035516546300462523243858294969473433171753178109196765553492812701435259404595822159232105305519469355137925000179448229512523073982233829691141411761517224229516162864272719427607535496975974558308390814110828489149393353155003279091528741120338783911084113536586045749671175616986533119285867862245722629751258251303587046344895915585170377429747824371553397331869576365538654826012249093613826245147127807993684718987688154041116902441604880613098300364912679178711568996533100477875262527806899245890879019295230222831125226094636154998615791973739775105835277950111369732224286760839470886980320857391812141763325206675038859492601776408803935661946453840442721036330946265204232167667099707963791139912075663392685438438788493322876884426935733282303801245119904092396887875835477853153465311598208536335441014126122341959880422304323160150667063618446001661671342057739776778611434106776880933876456753333989658545350355857692550814719839551334995003798940624534452609700189974008379724740326493730560952411113386126888970878048154380216543318439817525641281009028014416050586210618131129174502022134897297330376731917993857516290299640481321849899164556149659153830066128374789887124493499146435182147450675356327571472245127208298708162168633505129526298077710520151762360404180170801919249185060934586667993518937131422317467903864270623525149819582326388261893740830444880888081176088178942001242071743320025546003960930884610196265823966523957785617038187012913700261543996744080832599690656597684007240077169186585177832677342735644451112228737676078077985523930459040448496695581006394757327707961786310713669210637161613715241188648617246184861621178539096822901463144990905137043814490191674250564311801266760688416544440891069710654266326725713878401747814952457151941213549378366555035821291751750466655687763741481559602587442101969848531206519092777802564135972887623820567026867242704324514302763224760266307270727670281643758289214075749933734561735724010322409632140301846650199223683209795038748016800522428881395019180839773087634639120957851889737332827827140154366041794268655023628938095257863875475473523705052719224185566306111672686639063498383560796797221406790096917919534424116392612394057583769784789192021128140752936381012118479539354575047400836335980260404455423513593337221340142082096487773036906929756578564128040851717273418257419497162138587526537528895064177180598372035823019072155233301915132934217042399497790158500320950507694355363346787880042287370551285095918062869126267792857019778764994390274979649413327410403964713870070666529135686333189919873787610654299062021445224803317553754259136574941731545614081628224798440550457693476781362760199009159867968093085708723062860474112832288464798664603330569530388859551847341257791807201760065071552978677349672998382853585563367364802678794147621615643143904647399151103840676443784388911461201014516560664386299560635646646503312874593532557587245349724053822395472100375242295307016932811705258447116913726199010113105390321690576221217150493508618472624151086683006540048574551910268544349872995171388433096388455883005316848396555686752276255496807316664125547399028742745771001308029827316679862289690716763104752106504323776314186311224023914295643907107670969411244876824512972331939722610934314204344354952221601745009488405819259916879653699596844772389352776624727673874600837957552937536479969931136835659837400295595997926073736928775434197942745812931878592489169916021460589363646930361748423333496985619041839225737210279852013828665555291544403536804998208856224764993545312375126452688956866050226694909223036871098834427932883770952949678885505118847973432145015545437853268285441976362334884759759856862243152796232455762850693591013941570145031402059323378197582098697475678163879510062093489252602993077550398680637775907278553463247770452480079302442869063918310968761700543601500744727043118462169888074654297759915288039658646958101356134963240007709321310385029421580879975893690389844597690416660307628193387434045605491641949982594173355117713952400512408061908105375129772541076557898137167507417299055449378424940242865710750963230716580527206586309286489767585792579423237906814916317865509949038900244554017228072587135345347240746061253721467580725240594576528864667744629642438847734347960870032175317689702009466491851063471706177773464838674603643249516707141691054408314287198250870266421965595315286490340439337684742864301148526367794097104729461537056846108347297304653022725744733935148047838768596148098125596486045544285285609730266592637071815508880803545876266215028082090834150662560552849258186754163633017370097289652879004755609189418076773092193082899674361482175247281362654266169523790506939638109631195349894081296859427963717352766751237771210824273359609004457256208132502389092242221766084800790069309000298974313232963774456099911704478388880609406102308514209532149528052258858355314677672720965292318881302055301553354762916714106561220413156305827346421106111901067991073943750181456444188350545423997875314123943226884821103251107687369596048155062215947566891422363649725274679746336114896509269529239576411386125036552760350719254313250566868804431513671076050713272060570083381803919176846765900181169865624937566997660385998061822240106234922091094877154542035705112911773919137772675984617907700846549933325275799402942646622202648399550661074551177236200225423548963868522491344617957531016311426169673450841582366206761843335014207156481200808098322387205833311817796532913403635166235267225469017414236902441038291900450740225423437654457151744996713827223930883822810459052211010822629120210027065655749734461357766935216460670385163829298007289682421033639683051258870762106540017350216771880466817120965488118687418417600075546505022603963528578872031195688288903174725950881623184197191916607234631053174850225805144371852418972840161716273994246403375459652416244834654126466827152796119530873994710152757689388637547865829394233109365338705067633098332356000224659602639516964573812941217782749813566721052065884637204729728118037679935897238469908085382168927354565252416828377109820092250879123462854275503964418752650133249339274454710654388849656927755951743154516694427938384710370401622462388783498028488139205896413240344839729750877425273552875384012389229063351406461564600574109146996602621190209183207940640424379345288174669413775692858333964358113252871871026895555948868386798948345832452847224231692792787382443199313365960941850539645965164617495279230314170270452608637704077497231954009243058137126479798419562102844437827485157694413240102834143047643626205135443298349174535716289712638743464593847964932641252001399706001292349858965846291656436985946231015367038252988376906215734252797798116446214431774984215241456692994646314611280546472658356370552494031879167658540213316911799907037049817946646349450875009113463192294189688913869522923015956144986314829100330861656476594967586357967022133148003787621806786620034269862222362137767480199039121161225033877891139633830968871265350175119441772261147123638884593126628281632283430778810714575096244000595913730662097908101253812905620874626605772352533787005216888525747792743328535597366811559900306101327306425932999561980795396937877713889924069363544517655917114260144483611020322613501217890442279951558705079152520327280118559750216434198599614449140406602788998582549492788140812741605062788662858724834992438853231681455641353196145640223067990080365021287597472952560295690356669012221492180093027993078718585268290440073381928903563258196783197055622703331531799568042481428725358917835322556646281936499041412219539907092125305884557294906933673666533012599193254935190862391642100107732220838268060876481593692873819920167620567804452045272959874341884793041892979293905338053280932676233896444998171609664212690326638270231241458177415057440962700375947308649783451257016347367038769755232611715793553199989538426975741056749413073275610926179081263824816926084840967337368088619891010731100917360503610712082903157561075387937372072283201444108222722248067756810136993002692832609606516244415810673088059838086792200524700133752345827162994733936633611806772233738615157653231933444515637992637997712885795072694054165408763655087608580036127759068049695209567595736674155486140668691237882129800072396638954390294972791673869830676798485071002115806670182406078668178533813797372611724326807219665177737237876957065347108456089015512295715954129587889892556397796895418143958507830105948621669990872394364741065693114420409257174683898400476952830674279308301310495527327942985613325847576145418915833798864727141476190987493487332835331630084377826751172217593143388266832863106205876947830054523837644331963764674542189396824047746835528855746756874049837854622801475000599111180626151541715865629185491634467404345888257565540437028808528871103674700386543105562920160354348538652357065450894339052469811906827900088471715529907683294935271629097011289826007024752822018137787802864359683586604405894467088402921868979240441996732673751105354261855881461988253373609794576128412780429749037022884232431524513691286126907926463708661814826805409953098167479749160157309597908374470052087965193580928771260097230138982680111855328526384086173593384478629101555470921624936503394104571932919639544401834361980355874052229024527372069374472432588382830194674867766452563793001430245393134382747470229903756340707525748203643611009049267273604904366567840433634017525604765625941760913539658162207399845530817423731113701550190923714445457479999428021347034633637343284392494262175719209433400002444317500122044429975357774171570384277572041699583072352903478748735102147294935782408976585093485228950691445924628394626847710196632219127519896575945667193984327596344554479255249374849526862138638767474330675450378074804472120960254022943003764378150087676471733830388598049974270846097057927835252125012200505610476389765255251931247785251965476924594564203034652142710946909945618971994746163515906180121268272669354715297470991968512200028626384793124870299805702990984916342227836667751759199058918837643413371408555745915031431649201041160061756995985580603531047274971359754065494135325148903965962334129343677367593876464935140252882025499894194470805774760735217267397733219449883150051507155600176768513569949224619985620435047546478242647378132257994624554263109446418411653484422179797277790360936008174993348969547101155676067001693369514205262553873304134152945891431288325140752223473024247512557378852333645389256773670172342455812169424612328482849508329701133259781493269538337976173163686566271135029070542001681176143468197236820126615110941091776495512345531538745155587941482223181167816384157301052060056234193724375246708261860954830745979192016793742906157597517959453747418162449375028955838506563310747610159726829240635431528654930820622866331436618832097476128551764093226450659052657641864684330084270941115454084114333626804931498102730952457360536995590228091377111764852931496695703687281201248168388275747659721222264053962618783034668992465342973655162614577076421303202565785515753927105452433259661173709089914936926778173404668839112126718565609416786203220019041411746034344065959405078023326309502020176325281345970243183136714293007811235484317043019901445699212918081883218655613240920310674546942695771100524713171620697207522889518603908861061603844216180289916590391985814869796165702926397011480620570804963995918847027149414642824854550221711731273029432995819557697922203415884342608045827804672040533587304394181590897624862737079265474165761509329144702592413192557784950876424075244766815239320446075036245831770548150014125311452570513273647073347648976910864486648275470402185557832640782318090963516435055716062232983371059832755778272568949438140386327240474747392912287716896981457654090036125176817492862189303735536927510460055546400626529532569696443894315746851040412962544552923210899816613295623011337953717867596222781170510315533621154554417106957455443674267745481724692620176960725098813611196102599097824306558201995052803552817405362855660578625890549284338055636542689187945503595664606357059867068413795721847301943134243784511049200682755596817697356491056423672660641539370598715407414935536980127596107798732777475372584197810721922624882380078726871647407553319969511301399326760251282407354658472649924150974871378943022175194567153728297130792914020753538290184489725603369673051815280901589468203947328647931959755797822785293327380318746913139843214991712788476330821027983644694290938488313062279395896405466085112643162529937096753071922408231420200547688304352848629798465872561154149123816608396202433848112885645824882407930788708568571814685739686131563130154558604006479219412567696431026866311720666344758295931277682689810390432260882231379385953448940075654866259491453274883334059222536258695417171088074771285375472145104762681627417575548536812543901770145572497626355449236399554930938883145143363917078710309146888284601070747641968250974732152806926453524895689490667336726675808580112689578252990204839948369580690520992197427091480951585914514776890726654480781511873478485195081936371807571607278277317579178065872146762128827815221967778756048766485711159852667806313925403460199522813144630022114532012750906802415706487258959880506649600297461484863664068507561147252099204343911556827508680898397601929630327584411282031389029351617476679055966169880111135738042247359557815098729044945555760614344055804675392959958758833132971890183148882619863252465508390174556476305268929083318216799727722261306502079873707530137336675235263514258912535867065513761925028469739598990479998200241589270839284520982125372101067730980262933679530727132208439891899047532052469517249376234445228965190882155460233719631914612296911713863885511217850914052011181892449561782406532536944213691611401236597505981258657227851654253462014501599055407239283341403246785236357293977701263516822156570203592351322897048006517839229811384216157712301034872534763172641293121739262142978493093868643647760376996367288447845095902185443090602383243340936513960743250336775831140899411925021285787965425677429438467274330815750111395801609700702870629067877002544881841545231420735622993592186096064873803361492097546211080285118678284178194240776112176066830059370626072193953067288410304162591221250528952669391635843099940145141677595326852895775486655447073240581129446615904025397436488157555872264407998891670278785052726419161014918417011249126324527398559980070807676230945188836956932677132534234577911183710213188269143086068452842772659582473292612303501940606885438228520581087987849355959446943500264033289699333526013478591425134073567376095136396968573721608224158992547927716977772672712217826546274153835822617322198361653152778161413532948640734281546775986623598710017664001767169243495887536307839061180386659304855735670135511836317491342472169155272925515456379520025255950223898474122173023547796302021348753705097478043833395464867018718480357994534476473798382765897136120894615543259831831947410079733458455425508281113463274171123362076078462267794730830242694924332338187293220726000928799971874479254876458836622815407315274100761298825696609431257876748019656242550143995022013097608260808793581600260627262854870994150933420386792716660442355593762089988628314200958722135272313082130560209752147940388821897583864608322457150237853009688302167721062155982395780878348702625423178261542156025619213902115694224598695484139653332089470647388945321603581970064706794092244287435741113315670321402578188127453673621727073074751056377605728792225656686226590391988092871223900137527386938785841660907794402770799184017160519004256640349152138978886969029560468504246284713382802775353689528787149937322897628088740902335604180553195575913460514619301592550054261565995817162666938210337191187747516567507321068157618023678565438801968905463223237432769066013626805041594848496193278001631689293403335967625008073281156620971542752550861355323057222412923105661812047605936190318101102865185098106749596657422931147002402461130828418669305055125559525012451813690769049722080570984650304871268627101509641191075408920283422606826321241205325769661867194781038805682413863323348371338015144406929847443497043481370992261336989418756563078455515633320304671287276756907094500704512735219071490761728809280900108874338095046724511171995280557217289542724796787839545957566405589399337586490747588664664314039111567609986407099389056709445272883229685330348479010243146554557033356945073237467316768238688160515223291842269975712195473472304191551100095305709411032458294928483028394441657305179385892675863888193578607010968232527420537050761582921101703163357954932604580748279954394199366008437651058539707289062602637171348577298827463259845426983173052739357856326172084748367297617072713332613455487095508792286506519917865964175143855424881229922361602580152790362541283716382225440754157870665616114509180852310459839472087910925890348705098087514172591935892289981686183103483786002892663535491564250721169821526451150412596354512411886164850835214108527195715860414392632252771677360629241760917484569443626159071371341382483519603986003071616762059509404663275306091503517993610569339725454197764063440765612031089365861475785027003728719804620586005511521075682211527472892081270545324826683194228379907535916291289378940684416345927945236315003567391168873454099283457239591448432494761376174120977946345624593907651726730257143990236410128217064586665224917250209106481741689695331722675871816961461162775816435468591327169858068432678530725116991003999345879823644847410351694606595472682362214447760183028484055124328756387477179645214440315415747703390578973780755522567343465835881599715594128208873308722665622407077199229484432810937010544088998059720948380138667835523239493755581388026579153963955705088990055476653067416542835586901398404877244211007396097797967432848577559271742492875574693982638130372463801278409463591283249739624788724902105908074157555200720674180076931143462402271268161995306258212268981015884873883002962561692656696896354031224878696165575776950756942881781326503408193514830494914410375977534382805008070351697815784298406938658510146377124727696540544203065127892201893588923497955285030172404158379685983425914740556412648704235862974086336240278575186064092736955034527870909813726041471130953243156873845931974115305966738729430533240327498480690250712902157131747091586873137113260158303622783335824059792043419544196227450907928000208111235553421139214865233382988478968274566841308189545173240541864170324380098860558027299233146526029979705351079674887607718996425834421559015325678511760889395929950429710052809990353334979869764200563752937937384810449355396337273940499409686303438231135914006724693846137491129338031691525275362407774282757484959795521186000952484659595713047330256607840719990420216856436012289008218754631390447094034133802933536655490252280404444997595132966490911524847480443691150587146101553822425869491559333042217366007023253171697307427435865493199731966579418615337102977307258882344492504575842577696072956705792701061227039974184167245760844788746344078295575609985941199182886197150875816352286976767492376886662003362240102003791081000839837243965151518681949759229032705666580475193174469513295456923426836659556209630740039523048896627595035140887016354344285492022916647989066923336928519361308707959107867423170103504313187812457013702050980135839021767115709034794307531902256399171844679776967637510533760244286888229339725518133560708157361674017122833602077789771157303205140754661780319719295405864952751943980321817854833036455477413396927781901463875074338569382183605524570906562155297778672523738829978194838582426840003153616570818265285332093607059919836315068197468974128102785975572556679165542290862156885304793632881961066433178938226774918376081926883873108198383304208488184003775943223003419825530838289000420953465050195662310235665939889413691485156393560533770902583479352053631638757893242465826014323096068346998985477060144832999632366992211502254512590514559594797495888941072378763779277530856958286677318429310330418689885230765132803233516176180628933985568484046987446709565964300229166451756516681418163146004833786922312993665344639695640833397605772741199527883604232840308791649478639481520960436628361167738101091045152381010785716904566489513851340320014098423834377840137604812487172564442582622793101644718539140358793596081014371627672991694975024625224650460240716109790924234541108900502781711290299647964952578923745818940974448320332703256970578397447303147420229265848814799309274638557626515170622421229241452489156052530408103499873343597517056746525251062555260248883426934145898436111848361239679372335941786436510674611809680149224524623680412203698769361722304693799633135249927465168044677695865551273590446907132169572118974367578265124569757107726504409804693329374625936283242218358292111022878499457101049702060396894766266176896437195343653633680744208504266354741735688569706540341638503240214861746257521283727795477838425252715684845394168883598449736304641665049428086773255999893685533927070759805699271281481142947935325032185274334447202347086320022396726008684909590950232090617763682703696870464421173334694960158255078292729972968330703617609956623671376190495174378781203449492070439435062670710429134893656048355478302856217018791357780195561031805255832494849705610792488588594400211174585015411084025885091131532047549645880746623699771509961386435510481160213343990238883026232123593554386887874780300804908324060133914440903099779614186352168707965073586811283678632597540662810033904334943832743344136256378716655646162358959010988834951514245072609028477321908160700240636271362555087904835434240407222587943689050461291899390795350142732881846872160603738886748944962412030658820290589708027067342354771944512824176484620603101831701859331923976568074250179770414569164080968070375809247289896196423994419656262824818885002753734183621795868859921308239346196585666037395537455844058738410319764703360095861252886872894226236257201203380984124681312283703334269239624443069082926764834239979730965946681779849134795018053642719612787652396263866899874803937785701883226551117944814882433551531413152122628067147155738152932165128354105976600388882757391337328887483312665233054617161103338191145280158635458205452484579744277732468128420469899879737397450452634880483030080139233973687912661624276419641563401414475202834001718961759399699154674033407428682822179230176944037364234546191124951950064146093366340349115004967760697637665965272162746543417613450526554088721090247795505019890300987748279918519677722355167290710472790549511915100683347677408757458006275796704297420547905250029585600370872134623179760853655589129711836595063122272212370130118636904183988506501770507048207732907413791492582290620679314323007317982799906627727848070095768220824827856045331556104341144144819398301871671880555863706938133968719243277134193482147576393106723909735608306117126124108346715846226157141319444941865574561234153701471893315553057071645967244143947010924554103038478633052945387506077160352771602932140900639323487035249964095559079504069829179046839039951099812643452217202253957151930865405736421474990806967527051732670207952978603076742587554518997137214359162389045093629301348439924057034270411533065379994859578943273853536382288096368540444642113734019452352056621647349723490525007450910747413130184618793944766160195689506250125460274530678607910987567233304766219688669450987146430038743500740030279748524387653192659166316430008802734981696343688227014786128786986405840546587436941793863230648724326242695418276773573140606225076748700019914397855421409806839007537949478349637884685908308011334433055881169462364144552668340578487965822212930270480937271420238138365973045092571909433300632877011403298523600896376374928724079243627205642927576065785422240464537734829607402765804530872138870839762454508638237615024726788355090739415022669717756349372270755503546990840833720347780939976450101607038708402741709254510035674614425670173391381489825453792478028305733716961038382683488759462578189392873999079717156012542307715817275739251782818664153259346303917918314064518207138215817629037223600920841912999562594876022038209520756774796423102547666144233504618829802810788092796591336673963878418143519041179453122267449106807249637944291383634356145959996552411191598768631027150069682229426980548900455652669860640755805646251564425090148510149784218134085519652718041450200842352075467149450780957210040930094329316007216962970362139499453221156881553057452151121719802627108483142688000640537862691793188221962226129836568477566332725603237861026576038012014677642802080840559390441355991016285202839678289061579162683353575820949118808349473301561481305440697867184034417418061499465566549636249863304246061348521909557352244604366662588887465455865905061931175443624580395149039618244158333419056356983741986786711573949748112175541683249579043678563881523967779763817060026258704696023805328941021968130286155256747522250284543732174285108943034670387937293038326209359948740488334065844300878757900730868038961311318065394657066218319369833358027305783072918604287370957773511427250812872547775183161582130061468094718726024862563970986222814929186503625587357210944430751433928936253345232353147276180006405710894811645301251089026778115553923566519762478527932550865934135943299006434871857953358430805397524217544310133888287880196726990822828307108641367162886254184560362863811576507841678883582084176736337466277333630742255662791923604059567901169921503215881185953829385051973314093915118452897722506143497238698462858971066360262280478472075591842008141523908933402470819539626341839083908601810239699625015783324620856237876345434203845148681643088909311486680067030375973690916648493340679587899171621718532866095471467184440286829296679038218749454548051590054291813151390128110529889435931448454505307850381332738258291610082489397343814670240587628462711781074663679913573913599123308003603380337007456515750865288184541294064954292494594756656340593896165674645227057689174566000780505426601836536904350426283632036745112688713854633587866428917852669084810551416594304039530459794891487469438207079639318139136842019738077610369686971838405002839975484182777609296900193864287515522746301252235730182906030816466031663917676894028078200287107620254727336691789760417933671067470651497712730062155652293987371752342826910639166534124467094552931432499020509237706665321958945568078760101613063300163385361745368967679561747675383520917563271864723809039861801102470719574733265685502657259610077275994936414775283903063159917928102546545591062778187751705844230142483052564207911199707077508582865478131042321888877067274508294614815239404936433849560349033988691626754339747242308501017532492859327261570602133256456171379722091501113929700890087431123715820737123338337369808583521021309495818676603915362582505537717972841962772018517475950246523780268164300901282811467456505390715914055864348419597455297710004370130602618528097816231761581456449117077515686663059687943517334843830263755846762496960408115882407826730025069297219938954527156181322513290661401755617453262069878386536317148386784679850511249538633575723559623228659011004477178511243266253110376582790073420026565063220918665423783019834404694121385256419025857500650098116618716105465872060444311100593581149341140569683204663012137151190606633098900686742045110392799727229187144255698284624942798266111252038604254418665135202332511187480574550366163992917011779870220989560064761712375529151935260376410500545972823781085990547192199424131950201174631162421220550816702879661589420263544008989215669168319974304590629749828666310467620355335744499435212888659061382806450495551670001763864271088206806134145798287523176405124419951953131378565013340941039727694675540388132977186290101696145347296025476310429215825776101395828628574360890474359081280994684973084316539476760002452833127084467526049245161364355473517232824287196718452313324590477491755727027739307515502641930803413808801179740840295621747753857789132491801901826348721787297228912229255317769350381620463852978930128015329955272081905119013770571666158005454659750945716144011645942413151614780644104028742575585209925210210392579119622892548924336007315633307134121901397774938317659658354546921190302499330635753607038843814404108560317647328740083971013595585243605998563274959297145912230187824149363379573459720518571202529267033225953281853822311018029469815724905465160531307088443864833554556406622587279765877042786980793816763151988422378668954847635980562048657094943304248288938586735146397710286454769700117471741814840543829158640460746694890077289974342087247590529459403775832186884597518111868226822249616154140937158874533755610486657955917016954063731381408404590827786046677016733169947897746286293303979670777368206766549689232768138732761344930238488966718766380139335044212188341261042536398419247420310106781260187591293783346689707364220055739038933481913872433445088070929533783027432236257868360239732914187215970407493254081727221077778250552751923199886019690018472626576394613354649818724799548564138052982716327791235080143077275967703594411376497174091022410299479919844344873720246231251719093583584098129356102151631541627229406253850563925030037847750000988626752944805864513572279235514442723589994975046574427462528080804522322490186104996602110094917955930957564693127825626178610218902639238639681967185166660616906119691078310726729980883078129329790541847084773897398328774364074000907786272548747660522203372221892003957196013227506433603426112084902913639857873535289067073419794664018996760761352091018476853842977177474456648732415856597674407880511202462513142546253616730385189666851238346215704651068388080593790512300169010628835823619564497723098659726144489754840564538118127410697936315592719559068267582126445069937718851020160550644264267231935321430132021491229353488008642705948646397055919930818829948279687083274308815715349873167381747670536753979233673332697699798476965970869137135861087987406330825044739908473866304130116557720837816394123388361701129317173057756317590280317670121328690768453458730383312905391515103081144006983637702289055916189488071225831397552333945851405154742103784678277455187704174664171060853552608754585907867064914369096225891912087922462715713688434640562164254087634826307539929039070382986958263268707109540512367450883941614312579670410870178432033281108429900762571100508365108566190587194241443729785751981760965173253663368609815309089843486154056924585305003424462869027702612432059074167000324575152420461034240170998286269061165478319132360117849629562306509710075354926344359289514620158341254472029637751513952066946347279849417322417469663391896073968944280405178218602557635231665223252577345630111190424423787827847649440025602471123441169199191428120299292254740769577644619654878061509180085202711984228821774082057879509222530464797117854711249018961130838738198927179994291349798180948445631566460146001459443853489816946777549977396492385776120603757368826421706678904213657783890813856570771289991333732257112754061867570101568222977071059964225320603647701871116249845041309878281018198474939367974650003580325420069062724423855968806401984692862970786413133191424090438560848154080854434333182630316983023468378596205938839034667850918667927379796656114615754307699192672703923577925649963071092732331526998232849497880602590390205505872515329623471464482985022310161325863179396872528762060678834527130441807401296822145648933731662619275254462051581857110656751488066185235050800033722058013940746094158078212739644493873462979434679765406702362197068880436583035090224658455331980239101198330566288948866066366291056510996907347674993856563152849986192018935899491214395272761595232455456238762951826088226159898055611215836832903152779595815251048764151296431963804194770966682413179893771055425771831672572219888315773200001445777320785229561105148449785838288913161940852676170044929811139597184171230025278212787569857545899625289730147291034646062081426584074786400622882564483869057817538174047030260083664079403978089230551620181408687321380482649448035208345088311364625349387396577901664965117124758167305879126393890083805587731294054951394847656195148403444429018417610708719063234291412360452112679623890370093096845978397670941560421280453636014371809682520487473676885992210304873336273108400950359481464766209280191528384927098729662189554530246045987162571132228175927178093890194374675204768496794800385261329744316209967192158171103131679465223051606587978679235729363361104235652509284704567959064757409933309646844930208479468155164076482788358855219543333668766082456973749985650458345038439145878574222573495801357172138319159111099401211928935387476078698590838660280155647992081110394142467002290366970176010069884962486174676555854012881655368472212868261162329130116966880910480026922055491966040283647503742422638128980047933456627153328562917236160156142189553065174170299788738947963400923275000743216729307150874859405967343806325463596415616179777942676503233582863621152113918303574388458210801975997296311641264879004964061693293704242166235248007191029551404335172113720131041912171515212304833380195573716948640694478191597483166615980943669144385287116288633608778630008306631745731054523823024298279599785465446765961831578082881527052117344444500735165284297001944725440952425322609913222732513198195433236155909639438417369214089507461630796007662802003681642143945260251111961816537949601463367653387045115267545395066216746456241629399696962078616792619865333116951379539655213398009078408785091900807001825771490000685938811963668508159686369735851110642499424435828739712715178310186429072556405708205744467510519522588450095975397816728030378007659421887379493154505123377841511885511911923216978231823751862927910951983346328669560944182939850393578893905054555738999217410816346966522420329514769258314276598377489171227609058864285962627677475262561122850381595023003321454214588449017656903545209268207364991911852869908737177179115849252858748145595294674724997938348781469135694862720014860571847349518044412026457536093552027745120745066047839848925305563776961867227618768273848576604982980625387627195298166653635850494340973443031448478071123585477968208297686832578257066832016421616915100108155199509282327076483558587261354626383066108071733370112582005691513212926566392027374069171773825147440949360734587384548294266447108470647848871224470737567478873532261421273404400067186568269639478890012378121256645728412108427502353030505197289224298436454434103912471040947686381836803948468578820525075044169654245566499439995356426461777557706300785113151015854019160407738272031028868517510652937298769595293893774337289733419083461451503239210343792688127922675482306148042989344906198221884082030640818313148108506728511833679947414467748436989801162278410998168250372317196256249289106996115674276453091388492534346980395434540597872740457714621252261445715382294090698538057207584116367803610060394910549522165695838759598678409644901398266468216913950442913840057692632315043440391033002694935349848402080999901035808060233247196166670371843841242620878725306566888272314274768356631492602533569323036003770575328118140954802311561051554704731811555517994312515656815469502944846274892398738053100329879546329395757480523959343539531328208302599156017612453680442271389546528825455087954550430408809600560285606869308260383155517878424945821407051919431144313119568788905546897004394541308070454482246622780173390312936077981817805791293799673677101289855239595722362962074401186756287051154066325953758948380537126251638809374757198631556509954381922517120841071654254055821716478282471238570542429781929319489360327502966563296964120429374583706384238289244656608527622954503516807162743059247032359890217762117255844907689694470665052394579365398964361959807445270230656070031972449099953566019606817875728857465287241121853489355748502910057487563474435313164105837539876017973328685690302546852432180027725972856494479790594425439870204994022753118844561094877376598201081679476602713268904972657010179695619879002642013670978311915322846038499533641353775008023240377500320369824504946899472128923379878804935237968079328890542837207189424589049828113014891644730397687566476164319884385379788093759820408377922887277964463409234659093084232240476627828044647280210766121041793513389159599034154248837713404945000296511402648329250067346073910917179108587305791527127077480041309554359786448076202720121139401099672084174835784744219984336978719584667654908415998844528334692336573414778422338977756034182261912427752937957348923479542139828409971149804581870641608339359377934037970426015415495285518998303315798134118440772119481364069841438589999295571980239133568897288780605123253452059544065887554927818961262078156927443051175475498609812459706034720188820803013722404401731888602501051342366753796169879159929794276148914959229811868018319509734544673683176317980857146963792088616757460580225470404738570906002810274721245896074649778206930412726926755007632129400310653537234231158290226306043430755071484219188092506042082706747067514221040734366171110301417351176140288050656842382640548658268075473125642883454407264017534472970083176437702561607430931888917759326723218175220651329239221966898325709813099824077015853877406923095616705189191934267573030739521282044817007912411933028558366854079223842173358344398689713061646086858023849426562462160281959474873016217271069487267245093706039809175293102577228249885537276223985972912332918030631797305118886831800339821431003583078570099790176842157889704957601630788890856830665446369375588356930212204625537559662266796232861393178314914115708570937386947613976890780291599085708816881198608305197068411077580992885698597622831578718090212994110264165751752975770034577035413418498847243589631096454559926096325824168405486337540830048662156424112607491189534174823645545815975925405699913679185330346339199175206334341690059877674446932297232701711482630860926911614705382853680482514250051496452093917978802499999624729314834481688641470958986553847785003168217702560648085628258147043176565014070166516151342917439314119534922609967408198447637465751874560055150880459048587118457345140067468371669239388069680130573537258183899054586853260571726327588782910789653325003208435113601069748731749404831887260980915309229661705985398885148857177297112970860698037622762874575907403778957108731081407325171029697881642059910214145040919463588706140835176805343361361191225664755458600470413317628137540810473624416773058174489071668506698717601096415814685009068690504444914608181597228883160083293617695313624817065323332157989708135645748151160212476845571196904838406472544493666125854740919185763244193194167509810754756323281751574588239195262847972921148557565352823676614928286248529579632995121195224344602046373953755648355997309872941899058413012154275563020209914886179847995919879999391397556452111725568120720399552721387730489296694518268348227751728460249366617603602606289536084430275243783031831086297291175225578361475920844463015791541041632964364929658696005728356496299333090557885209678959495464609389953088046624523448833281445825317592484804824961779624781134638391703728166753499819468268219887644884329953338923925388496817335834747741945321822698225254121236165278005831307351485142163061171046057844714845488325206611030031890863225882228811655516483206766728911643864123510851720680736219202675668570141636365909071531484692481836968109748644477743818018631236157142262215987047032728247413558912078090262552617355075768817763445849700143008087848430287607035704952718938298952010392304483487451562384251605276468813002973107910940291414771073540864055115549579869437610774223414174781839617967711063131299529850993994694282524560449295724928947025022318154821138926250919736230647713490938537402687910196205145569398724436115542978096609251912976429456925918948843589317892914826046124583225099752225596433924503440221002595168068217879031966716579656943639133450059303942644379411410841452816114276019579849116944076168313263272546745673292373722566693506611085499472104557064110949160804779592365246414828055462017909952359296960957245338904736872082492984011430225650255031854673963397634317004019251101557502303931149883212024006836896352836443298198568944959210124261572019791125337073957688370775433671697784032004104369096603296911181238736404877455447480556295098706494010933596726147039382833039230056496478326243105701882154262842837147073863687686733348952346917667003428929887713846545769127904784393886638938521616404051185067248352669314989700830175718974972199836514114555181562536600952586223320250907290085435234027295392688156397328616118371310855231290774097869995101416604588062666060059695793531246064421907116422753600523773863296338166201440702909831440443995766811002539373914383010406041857253451514140822504559740948536951135740190743933217730033471521890650370572850585843816070424464233844382766113971134197451303034174495851258937276935405028240261180124800213556807842668103070469133435525668057938512428046914134154137085286750579727172735031169921144328259210538146790122627754856328388879449988774727628687009164683222987706136180409846852954246686041159272309363262338068103160808726678068487179392046596515070870763471553260098375416735125952865480892656649192243745487360391448046300998792049917719338280676687721819000434012346472499951119008589764058654888839237773966885401044312530836129706298840666399175967283704605240378727091020263015330902765089410387013075749364201033401366098098577436542053076264691344602186815025349648636718885624269592551335077887548880165349510088480738814136602466524261512286230305142952348190563317453285630149010346401878355984638491563878610834799496220059328473841984624374428403946231223745437504690423519657503732534854063876884591696789829595516782860792857752108067147245184575121745958256540587554331137321024276859487763903695069751943280779671427465175540890309487212539764086435271804116385648673040876973300308253126314391624201750870280804616619089777352686281767305851937190090454902870436840273366757803891696472114804630664785979162746229315821986839634003999108544661775837894979934482895607095314301884111123242318372015278787329592400280262128295866268264884243215428234903436716766893476705753331310451667144424517800972448476226239916818648528730597523113380781295105209255691075027587645874744124156308637555111776652511214975679510265149846596580494484150731313671710826123406511984920343824569265154347249121862550709244156133283334871295645313376934417397232544190228764071140606493227515298151454562569537236955142236969781121727213388870592132596318386452225276758534199856752596671251203925616706663862397004886784639444806158267661621117183153525397632902213116919409344975449337411895595159353157090974290882701866972769108519155795316503685748245231156228378886472510742205357293422215748882667548448330566253513866715335374260139593812675810879896625109937061954095267918906943900852285488159924672572996081160742944845837936558432335523661226860595815235630050362781815265700448060016294867464156394468650827636035261513524758492140757967576409777138996787194170437189520292417799944539073217068349047968606604356370048194284316965592490633262471725957997146467332029427812439370148623338419417393922294285263416063974710493163363603648124315321842621473463541628110713588880409325941695451789913865141228015698502586758941140324530138803842884257339051441767433101181889319057468192697656987040577513262289301710475007385597025433384969341353903032553649197734410345120924819478672469051857913612088898852816232552334353581329881081512839883430619501198734159103617490380494573139832960935058790684026032819050679625539491365305761314600326421179215993738813121658346020904582965795574934147297074626661449911410182345946354052234959967433938150763106651113803945287233205298094681322338782482944889598662171842197561363732921305766142943829385051147778943091955720646220225910989829416918895423152740518794759590835479822059850584173163962478694536968124346583465625721987451892353786666052061986376982905524897191613334726560033793424407103382247255680555060534513378423538014780563499727883965213234001768711323089685860898893972373245857667353120184367448848594324895771243418930317889319234076267446112798319426309410114528431720739062632618986329463258870230003600564792971695369170351131935981558175571265946593346389198307235841629690842599439707966088156546255000333268783397202892552460024373805952007673434784304390789543305945680562586279697181809883231086760060726091635654730638763969037633950806145701311009688373759650413607306074829152114059023533480739467864483645098523022728408982997384937801476914846115046267047794126750144121592288769679243403396070279644474189930772492884979874341010793609239541688382779236121518632454160127598226293612346061927321735250943036522994542959482149038105746257489298464318607959380082623434380333466565425417888366949795230973796735520514833455732369921188987337647587095445669730676795408578078457720902920944673936724300208506755631897685422912429228167625470398432640123716617761925913988406957252059494448095806281447071640879813758721803244083557345956982713097469730500834617631823647464244941275373378518414065134075901838808466754098592167645143399287921777670992839974263429671477181922741785677793424915216427394911511119708213356229013743589403233612379606526497265187234641427773535480620414296327860049963933155988298084296964907843643863154129211087531138508237549057543919557247442977339062820097323328305832627346154465346115383367146920783176971041728138807441542980903477889641302704444674308778887731338183934114154930993922772335747140645488941054722108660627846425304124850641251764726905097922373761683345363185455679844329278816364684029823516851814869215812610657693394818370097260066241051060926974005351884433249836330508778553505550538770100908283960079984570183234941952801968406382159061560731533994653424254013092414388428860564518653741755786671440677454522446544511971016142967863991466190274018035223169201193184180110075807166463469812234329300198805146497458448485414632420312768189711836767276636842480316012627854306389436663366680194427182849761352508826017669099059172100995971338431714329408180902595825404403025622387378920345477689719854168240584109016722411643268155101717682772807102958560938991906577219895809394319342530207706229204962004574358141384016167288989510112663553798954069137068581244940872364765668125518339235360987684305360741012057213852778920115732807373234622697842559906920309162701721897064127753160336933483506903860020400134809642418051597073622368192144353593189425483478097117593728986375724585222757189854505135134440787653619179472716591481522751419148547558817093127429831906974275427981551574697628380781560677630542259654760818660256951110107150918844143780686996770714467851722248877891231678560777470912495854988879602041715729021646982650379972433877197071952514009406753845762437173439785131262349301027301862519032254701150458087899317570421479395074722815943762000735711287897761547085061652231513253616223912343416622415182607707250981643252824925516722809788220101274219262438370992035440538343572702920307826651897331751551001065579106031481541227963890758500379896183425525279893427953162243010550078156401961567971658360989705424546814759545687335352985148682553548974283626394920373208648309184164331068757888606829060700305368568877256520165102656645818464290172363135064306908142635818659637944639478227300696381632615094736290935837922789073687269788773917091916636118223886318832156638791826549840175909803937644618875964390466305868180280366960184717639102053619764657759585399304404693316039710231696122144689968443550005083258881181160058713320393216909716109714688367195348941278646781948857942077265511983204139387885999516572619291639883870152257367958766411184391314722301865199735408504003125655569107618455586575271768062830421181827636341667828192288896007458772947982100292886445268748283299535586392688868390314267289084591165490555115859513915210159210152292631498427557533716968974051451089207476063412561390044746348874220067285090944547972910673390652914772956909849838580330846696939198359020510127890020730519624893002822827572650049931333543952084721507675659550095421124125346516101854695746225845742330729285187414006992162459165846879916767669972020815589492063952641161944356033716441959622404982750531435341303099710555669790748146311270105086127338920060857272047541474014791417294033092316298122092377435417024564904117578076553475919662093283121352152934976977703327033328591761154143342985669061678421921714297289051704502473689109364202085286967936535530522278917683225737639222648872943647738468658932290299106870518547086956262121864621193856585605264860335941852991995037780032862445055996841833190796202649399347141725713564380052015179319321299562507901389440477381815072567909306110437864721716342180638612190093957103998518276755584547237782935559933948916379823768995966210725846418845987093919469799020753800984370362627330576854058484998458572042045104874802090084518120513162567550209752124584495206259426725889937077424022426149329380614772342749781824498648468473110299861363105337156946299768879950942357171931100286320425318758859121847397507936835134796090598483582795257900017614542855443998509838681443637519476674874093627794399638412277026328187391099736330787981229569264412057216215263452312774837622416717707798872840461384306903256919106925488813864439398030503112782484971253765935450421511577954383508529848820066216852909246911738253449666810149262093482050040717620145608960346259234660195977918774711974794285014886671641071780414243993208007119105843806874088792507762454397205822660467213687478701412786485395075742228931057195197553989071217854653339908430307842431747964145991688904812975451014192110423860081113378528202007893504199762847551985070723040660366307653086221112729638214469501596963017648215269779661218410354684192753194384667297065734378022823607761207284892930508713377703706915459964456050817666160851004936498492122766408978233889747353996201381574369694162720378417032747631247865358734962070100047973288364889554027823795615198926882626213072690978598334602426997455541798359970374330178604859785748006039385180587582013418592397498596919193835927253927964271100849619818911383168835366605693704260362884565453821025521540525299239902321295875856004101672641839810745673352821030800637914481107683922449763632727044402388435440473279892331646395691540047967635437814254903649711448475585819710298925917673776290231048244216863419479667487524967512604239473015740478339116872203355843432892965184221746020271774092116971317089276199284301897713134308655269095249099739247516126458307771412477669835819450271324362955888984245436248654524920965829744249230834410466614350681272821802068095495222450833000752022558617751885381828679799616180935725543683186690108185379276623799237472053731478782039933627518123434462846095873488656628993883368302488602762720321691038917294959430995289554935034943790837696842845674596939811411901075836256549293076605623948300195784639039455377998852371501187073379800315909230970383333137677867162291650262791696942775433639903883194601003845725792813343118483596278158649428148566837849017692900986638392602430108540343023609346921726411953453907368316966298868520187583143217223519480340774047860622153597495610686451207096841252043345332287849995034348986551604587395460284323127829050007820694573717420344955232331993713998500850507706123958349396259586221903780230375784107728297233606546490094844093075877133057694561680361106457212026994450705133989374052129448748837111221984793578269630402206764132453321185929631586392246708672664031941397792585235822211028230655646820984524915063565258411125918213497115708371399098061965859420488329281451327263606448495906599105267556579302478038723131202792579275948868846060104760613152231064687442344909753502464037725779097248588875332291853710000667678883876897958076039669151546460259633741250795164409604837352676186821891556575077922103254937075723796603036248118121799879589401500454029278516368319628914839918270725154071818875701303884746897804614295997280989571783766147424877697630078388608600673315619913121733920644415159153019934954428337216589888551816712504328704772036750583524155331622384355048965405959910345569790810596684606488004372426542197440806595358118182382811395452051055363811932872991195405819597329165308504173993844745310891354208139366818562957205633756101727949954484267390723463807742022557991721874317821352424402131210012396277242234630873783476996450493826529994504614532401352179225755522042252785797482302295316318011679714336827733025649368784700486512669097072858205265414634216270116812695564215607188088641457905620304878556187219235632953378531251319573945439292996668206835287562334516506853778371908355727508382695928366634286932342497882419668716535003269981939890109213392949391851048702224941018780508497683544047794842638847165834519330321804268563960209548683778196165855125645082872332393796814462703086114318587562941346772688986269448447369401232016032026700972675812744780078249242578378661491644891315433831010103703249856025714680665351234085975058365342427211869283821023275847711551756588887126961297228797468156122959177323645719382088751665078112650211291695015556648193780125955656609321871828926417214694512575363597451297789591141947306843310092592979461955559725737301094274818048829923506508559892525021633159933210393520932830163618869090219002223489685472864930362947374364302838362283363529484208381607385690053795601302150859293525289197473112369102111460146652861395233243184267847732441159219937796803417938148301795550107372155599996223724283080357935592931160499819815860065919664645272504066338882862123260998757312740225994400627487628265665574457951962536857467999155881260463373455597328219653652788244528264890324568311686094294115532130475005346280612697183644451908875693712108256196304982414944510696844581642511267660213425299869998846578506605812964585126871986931043014511867688275134838424899756596912575195675744891388251462969375732764144237906493923549171275706674085972457817897749110725683455293332584564058418914986283005499854308294777353066238880671736755962663605623311337628453796203715707921375281191149511927799838433834501630966448397362601411299480427895057548029912484911345617720088336725869416194860620053217566082644708116663577998796157407913266576596558576331962626881990771624730749219218530245770863994171411221487344323685578052104948097362271647702117791206320256251547229176290359329973508800349913652647989881621138246599788419720331746668705413445119183808446227582305456076104526508580006123227304573312239271035267354674721280209301251584949686266548737939747087256736063638116970068110082789896656244179099385299816438815723176002033617061058864333204158714520591224807473517083201122794261642139275705006930615886362164531964609578761218066707478017332694697300050249890674193517329581888370886010479300522186163986476445658454688040045113062679118451545841276628428303352411692546993982435512561241739074079477343939882768801378539168055508927787277496839291453792328728566963614183014451739986751466624479310752687046959353254517228130729430249375000497600632456572682713086157508359356742431512448887243955510707066456823303241339362920115622488106766062840335757227221427900723127938025597770346202020567965965353129738343078715962743688558518369590928043746917407721180056899439564468133550413998616822250710123512421416962868541866083191590782176583721372020434559542575061548716051092542139609455707587305349300237456041748880787776119798146642647266483787267987697709599676267963895433825046041725009268661991010774467623259042728010330779032337372615065380867350401274333766317071627613762151509958700793748167487612115641325040590711959690743902468743811997925318251897806083203696410565955469657910331300148729339104822998584344396442552210863352495538229683516681967644424658690197942949522139435392741602739970781514277203732447000457797962419332470493509112904876868771771929097681143351596955779152803828362103211773213844612375655348026661271773937476906388086921068505084460542201936454730380194800978985562197659441116078824312063599006514662548511147816555193522720630998969201848957702083849766444063710753786563680648782034329977592473424970274709861805993394273984959062158979012680337573368377691940516703360334365545960226843578894476917902333544763558518737502540134323416177089947787429244488937885578345775574222752931121583597395082025259137109134521843335358662291348922515175769480911971871340667516701171343572013552881549969728109771728899261520006365612597144478835120870378503377533555896958719108329171779286222193191093241717065408420292079905361130517070191495486717350042646233238719716263248528319873030851045718335291062363424838982248764235129341313477008613604991247217727772516688620368729376992885382440400932493727767926960914428001322927465198301988152246676228861177791208901054832189720916484224537060360445728782100939387050618160469833417842855118400393767366580045083250510930892927559845252474643484149107962637318436447475947204065701539779915025807624194122479256412744332270645337933247136580474796261138599784951120863706713696771037876130510322289346850647149788624697357488169801423618775200818846446392164769305651690539391001939469612449219267832105511323805152732960207117970405670362617974382405589783750864039018344717234684314358642691576535010246660494518302524420296612810904097283348221221106068212818611191259645691586504243631122909300637384887303140438960788292885552799898371674813395630219434254828177490708989298118463911507483332226499699428800694592834967045205858958529146569049583640941496819086405639056627265916200690332165846830844542864791642396650331010608599000861979881632574143242525855202112187589090278464269712566667906723290937166076526269399663347874283946134976208083923816329216025768463639339955044355024425802720468388106325539409423186758517868912699790117826294346849145782975781542760450400316867374477844447767730912727974762503426282838228302971930938698919968436652980889676704144883283012027865841057549955904594069010373581587773219774427562141162751292786076593020073711316189013591360849682032468883628953436554844388224031364573023810188283305052974152810326639569053416890872850004957932960610798301865857466803257525976306710412817777176110298982187245287833476012313504754607247619802350898061466242843102263356046385335774322266099943208484927804862762906918621578424226139025913326147900688699262968653786670548492849116813217024120986328362290060410303438204802043518187767868138409396074523107725442225249194591179959612550155173772859038900198927356017127388944068535229139800964530290966202080327688401173233546099046418281563074786423154391570054884948678776797314111105405380550003622815361060084758016717623873191165963784458073099870122109969813115649819503384729768572740037775624483858281519481847823462669490342662618018304449696546664465350366176788010341347941658269180778615724985238191751990299335136388399734906471524821124769747020173033040309075749786511376183526038102565548148235532222599558409416579477124941155135030369174906543761072370054075263066748207674038556438712253780973298201017656516140374711622958283099020800515364890541910312642471397042719223233479264794959129732976458177543080311671945373482303355811168600891364875571207481822312806242855101524737218112696767100274138161271124248376895233273276160235363899468875549240302996758453007675091951425605815692093680096382846584870851281830473533519088124072808218159575139419375406609479213725816610792069741577471525502105223531719269605087965760806881740510944751458184977428591958024614757990402878991080907858074250054640405586374323553392962154847768025983599495032660653815359178455411658624138925108321610684861996914772374198492886398969153419382520080155797580837436949964681456444952883619082389020832654230212324898569755695416982394199780092491192620958231243385257137449542576713917570958979159996269631342744238391156428898800880469929980476412131506901503543748730278523989132807699227208524006733745532009724926665012755142308572423427326784600646812943640576520463859641576415004296050787132525265844651734023684898740909011020266898726840015232722310097801201883165992778803120913573822999222931813391300591180934731060524667885962518426301538444746548723461111227772584366334315856144093979036760727283066473505452510466038004858629800365774986543119575281497198108331610179335996958476411836557283294804127910798565133295542780369892975101380926785222750560908779993993752161710275039668973435402937374296145247006570611891104145610814249588455034512364445244093304672331579844609373514359333251566156367971932431257056930874395143042560358010718243968824913132490683193265748238226893045424319726118417853343964316714139637672612165594234938867567594308188952892693343571753768496834492408184986519499822743506807428120334153097665777027505126420859060322748727988816684079920714290822362282983830623261293893727792070590974912084964488195751723061128124362673700974965999500710723901898576551812554768383122719293698676778797379087621572421674365735928784809525689513378949791535017111770443661786367837786028304330253134129106832889145551546431668881030111080824217339005921807370711107012336327669491714721996662308264538270768992058557141881054737360005958137517209083016881262206358761069351352096342178496267833474396569586476567585074446750701676492603221403327497379140647182250884514978249995666617696734439687709396113392514320355407326913002987781192601241835260336335826939554158575936720234037688103083797659556284061761320921026961200894724567404244687180363630827775198302690233389623617870613878576441530496865731593396928761542183104083357180109917804632079549652581848946665622202036498487873353353033230381485087594111712889223204476551845846333556996216119298786442887134792543683014694081212278870990679116444427248040559337409146392363955454215675056180934500371884032230693445218153768475634483245041220421286259061880282883180690162593506614116554389612102875017949930285133038300328589088987183915941118044748311567961482378689358539319101871870178048589987644447476734228817436934159961228776615240280733061866274056716402273433592404199842420392200451014222206890611315324080865556967290497452387947138409797700450999979531963190028161744515385212238750784583572649540250223140590201844536387174248658756532538372088984592465923770571412400023046569782353288286799209395694531920295381384241679753422865765715804930477817279417329042921558338869364886664837352193276767402216875472934450266263505033429922349555525466440299298426557551059083423584149647186204539787565016685235306057862427387134428743163110652415586379144956032324130176695135899651181773176939148679368366475594878116918867777184892934850315168528024110485156918567595293596014873880405475285620458113977973694441127915616634697326640557650954717516607941982557449671091220349594919310001247521403859484772169487991910575720673175559480723789881987685150250783128669676801084569750642640310888644712130496969369635647559181695070866534396924106222368443033232934422974685751377063317689845639271555675431459224014183523541850153033906844655919486908782559535763384405141712433829396031126815367643582446908131123435260446471461887647998713299246402150201376301472519007752859095986481738497878911686141558300332255496551608471831321973476965955428188177335244563221320460764023162264705874157375194251178085229909918008607456237492267796226844354416169252309667339916369560890422373140409063445381140013112513937492056226556648648427352627093615536335354516680069714697381473176064189689869177895800224211485907463872178339426150537019581461549342015207999869417366471635190212143973723493680631170948094373480230311917546726244933680719444107446716069853800266559058923730570217003222716238423610701401844060822892050237027784951507661995578522416449165958211114940917698665357265753123490865992175837348256776963877304658590800563052360504749526666261477890835958410397944923530727467486222947658949662850526926469704936362666581829706349834375681831395980112418695197638037256376490062034085162199928924391996511865135563391375722812439021152616152033218806893193988843166935116170470796282565236190743341002409518681354304815323310201562491511869696735760921551587099318718509571332132297012961763859187935888340543904742615090772876705493627798990002961728683793767163286320025194124196575247430416926450528638038463276648980717064664011684218838305065593824640992807623985743830349205499190380712734830246517008556591325153595499526919335147974945386702478174153007253517610705467320412512066445606427335765493979463566586282164615805190405525212477999041647875475388924191538737449748530481601903900748173233991586151910404251640382681739662382803194078006299933850504271911274581427533500437665820106945565439603656896575005496877689397531554426868728542011758631845655508272209964270058158235872387751393178425962625097220433097417649092292983565968496625190667447585091982863313556230262213176679221036953350948857867217552587652453385307265494491040479647370804330267396393079007383335077582619870322264592803226759726819434306442496412004764967936813042343251471757431419833615703489477388981202620780506179381158476770489336316451585375381327545024392501217132293974133937288139308240561876145006849626757019190057221009801202305195097474791274393831182732224413168257238182606141322198388609335310514415715847164697723209100143028955701988101082293560515117247867979984948981245391701414612391034992504179388665477195837213145927551201052910330031245924737203528252461620654041808804738609598489567707868793069606273282673167371104759113289991245962186912092046981408166762351446167012593142994054676879896976400169977135308893989046127506967189000432097450222750001256808578880978168315329500086863960342432656838912957581696157685725689656267634116303695669294321184786097534745457991420639171298917235196368263143197183678850652536420411318322392649409194671200359176326788621060349434996015791666405768170626156743592252067584197369220785371014199174663186595927392472630072097765977824780779821901099286162617357947098983136083922054355825572764625534416678596239619410431627849502185016587696759203942666697975355862038122279480258029763663618044784922387936292892232593524814844634402801057313598015715510073500045781380220469987058592990533185120153824059662359089698378798895966140455060754527905977774300365346229968201094712616490653372398955280093948808824673858779329906123138783580623612425336259859662470711512199711480356091095129506701783969507332968617194456289322340597123060670912177066339126835202569622685328564633904385330779329882069650314413083993580257747757297833600216645055808695491746749972273512993512668522260061513993160371051913770959620035714119153168542883183647897477718677004819357543361556529113875565060787624918980648138190930142566283769685800228127946770610521661315145141147391752686831176966757826005688975837221946686772306463587602345673303430493403170108402684808778260327840763931286681956114584381414681003133966838639921407468435453249690916366401806487126035726754873781024485118901137425560872104380391427907882619909189084604975288103206979854805400359590222312488508724524256464249905931229396482562955717557809916965955213136390503763799790114342182303315874624951961072120615901584886717100624708661660805322640542506895830612240006920947993946133453145939035059841620086786914559134705215823769693268033852896429801234854037280856601180552613903746039886848695129054107616618210664295868506750882961229297278510155432055448295895649917295410350838689122266010184063676803790662393929610138896148458458554464983655762315799597910473104383080735045637499991123839188420191171647101635945675846608769584354901252586801589022845017984115592559912688693589026523469204986926863994658896966432879191162304231732557407262806472390585661682244130656285198149755208185229760032853873069693163213399784238714395167594473931305559292194942550124801366794806900981694632275073945595889847324815063398049357930291243744820416324129360700494873311389103855666531395880774609477435620207888903995817288730540203761811864687892853498899907202726194888070541385001321489112469467610966342126677955972523788338220106628411687107046079118361334350124601699777808597203472687534141955990357271383499782882263667385977109561562544484284854848590986964275099009236520223024919202619805315482348689995285341189191299810596800567939859002787887640529040168344973808041319477984546533941465946216926285570663644505741175695320262810284019216153451785125815389838025539035691195175049410763451850191923052827285664010223621515719254807763191270122088766014008385341390851128730837888656141231724859469312490670200912404175746974321954141065128166448312361110789252839276571248996829362297567325578586874815259896655750219020439467104561426684121744932292280030763618901701768971109962482389201871852900159383643116866384364006216347067002394573276107245084948059312413002612869294781389371307854467337026416200192319935974754619358813609887842045277115326248289221492433362136299178850397669565007772480261633360992040021424323297139962951544238793348487260599728367284305535388223369255086501592059969889036567742760689239540137924723538043300209559158477799713414646114133379521299811957313248767432509410376196441012199031329544872055370699472665790404641171904910345050322244238868162036241702148600424440394852490709148644504186808018327299317241673393774148342385456794548994800820597955969344166038357556493757900815708925219144575575330375076381040132245668966949618924011275006106128602264282134595668915971197265892884369054503612524800670055411750394749747309443889485986083255770955146425060595287037652856165723675592894738892610660196857340048945197640972536280255523081320179805937498049598896238174212209581285423905491874725310107818109018310242590732824808184645593517672058667386908233501398740209450036697417116704574083753181366769606958624977413757704543554450126680455967114082619494370018839152398315138305794194677607126676281479325505987792708284604839520148124418158435916269251055293517676960700975484381954927375109547583596417310707218120589925621244630761273423285284350835787607610218932469758105988835231631238165843137963232037723999869369276272004147205395179917951430748164606402054735736421618584756544182542131221220113735415150792409840900321209280699227768285018526039530921272013025130598459351804616791768630012512581056944727984640032330771552044955368033061138925117538897230247760693800606217690493501541385911908855549109378316004516207419643536777718490235865160375909697488882691238051627410017152499627213189814408966806779985506697130151943982987282392409899329216914123878172452601368171627903818530494075943400247288462547997006535286362138431951826151808572162288953264874657410172485513851895675536334599545989991191932537057281762820830087215498087681443097326961067269697233613467052252556197129669095599983717066985073106220900954192081061953608371578583811001345995157675896656141240826107929785762857814882431920384733115406008664133178557914125740291049498665786615639762373084006989382419163561550257946992766295154600419322381663878175606415827677137897501374355196158344629171309115342696956132695245179266843117678275713668105040295086019537050298083307175897414863980387863731793016538848639277993125996971264417835651723917579415086590557023940420325696189507271205441281923337379195960121803688818989090594534765114011362721284696513019043698485696425405634501239825660720895556250689837341577033140435859000425630404875669482417875831350142232672658520131416606632693467161095532798625217226761670701159450148212929845345249423617887249441780538525376161553220116092378961436714883740649795592145606065818338531029093518139548059293136253899121344195060894070787805258456577314491069033119975575933193681391954430099378101804526847085477698169532493888720768043784699263801769574121968922961121128673382445103006318608078046252131501482035375104969573996503306304451609395300664308321895979504867535443922305009786298886809387869100937867898410711104382917340757541660416073296511079694907968604375810554830294187620426115437981602691131926467863618387418707108674217644777325727250999595796737358930282209335466494904581173587292421382353257581461318570902144057357188047186114104825979335920449992094990520628227376673402968757950279438861074844800641813724585534054433995676516621032422813203485636120654023360779389844755545462713251513163184071121302504210542594050892113189787050547993921553968024000206046700488788351466490060526330728697421909521817280940907709620145215447162417772227334516903606645345161742901853421904577287712538704132653374953005417258755402406226610589602879019799764139688883705207181811604652137172793946216969583484950826124870119748915710208150103758340934331139415404144507354972374393517592071710019072134629080710227633812390438977223157281621493220864993170877221994315789486494483489472559273554245003366297104763203522043114672698685003055845009043202993611470010220946753692752000206786677536720332687330302635770584152480474146996500619755961184916769329569151289427958532449539773117971428548471980649562487725575199307033827905105748405648186710518838388313214377621123190171333941412422801650828891425071311082987525751504918161006271096589247073233491148395687196839852891342173839888771786735918597566653025077875546417135697373630539047752889901846378148213109724224700852894672917381983716399428646381210480404832791478110285266125362036024616060006146523996850779935375430257801410820354666292580984946148652814225285037521526010047933046607675599600152778599496766282459753593119062665332161737137266634896042541796033868034750509140794756793644839006106481492595420366459534262817946047976936815809908280776851350671802030492202783063547353163716581078573182426937669550621073508872046036678970970470480974185931298556846694915651467171029085439419872791421239287031016027179059483557113869535393830193446780702657809139536792599966533185663097892274363873110475915131183142434790713963625548510315011143507460010355646976624894822044204762313802554913472046704937901723299685883864621144951905471315421911127890791227003572394573216436769930841051140493486689917994538173648328326043324986485051655929539301866975508064324320367290629998147006560015219419129163717254896163873170719240508273388112541822177631443046662707028098637234227697521468533789537395568733100447138291308506324866216001973484473183214972368110837057816893658412279344668149816600849287582825273312714566577838111501301564136249135094945048515485888779519456266426578746642066364141816724853501243115141577353642651649676317573364294774047385611128775804046092121028701617371208289878954321976317074761915178914363380384886049890439173920866810051174321684498845781805006919041865043935958330941749154017916732140532681790801057562096465935030020788253943713845957203918780157271377996400509652469394919453863232880761226864714911512742547472748073736971742939820899621989527895993559791958394506194839087379048240659826025521304449322947054438549429843251075320657080955144179193752063217646904702515335043066811410402115552103254260273904248833818315027184363134471587813453268532534052142687261092295475258298828317600714379537098437038380221160063145623214706247183282257490949055803116215790696762726325523852885043217942020257279721322572620369382662712127945119463801766700642071405167462279222377229297487521267573998254925774192330355142597379055498401645054568366431503943410658957489801598501689871602392387607435335574634068570136672018432691358911363055064794366842293702728587816528204816124483150273259817166375312725691342927377292928743081931160074992116612037138376903793461016914071981945640343564529928024985748175514848120574687963960669128189682136292118594548747963679336775762209945675667851494092781193515285068887506874714900101289587873561166478314521048758053167681469337289914672402407911094935644026621814977046733147758345958350656628392813959774867973531323405063550802816156486912922773680660772698726718822552897232484131507887624393162236797935483500603705311214638778944061682516624403320129787382995707079677944864054377705764962396690824973069576744148725558651090319916486269017261070429355932836147948359443114000295275863570352804516538984522703968662562193583946340765523700997555367367144069497809310563961687010160193208083298263990214550414410825775997272988453202912220574460959498256840750007598953319006360141684123803277764076950489112819404131683580559683869107413856045012395368269617567441699763263469465327125523892548714781932657896606476090357506190253345899010798181130387753079540154409264596394907389084843638306631237762700571404923809155209929413336266916025892195047422999245174193749212493354833844792974523300012330220717565972165686211466047862099060041960762904833120925180598138782718826438636655438512728493819428440779434288115746768029687990206642700371305401108604541284953506281938833795245453748214290142837832221614015136137051893966478745583219119589293747973953750926562284514551553721221672920034993518269585617913880756529110452079344941360728221498165957904926549333681830686658657578484347019151320752352752039092484415539414677147436026152367702094613830479955816664040623549618489471277833049129061966177029819482413431464920750069830456709212615585707874651404847904216485428673574676582524008654648744557107769040829562101943864708191313759688956091210414276095549344016901035917121754216329220168181455194128970767578761097988900277755786951586083923071007821875236674674241817071524170966907429923597017761277264183954591893221962107399536151212007719721664808830120462583035501596397010399045657310109891853391428014163722520266322266750351586032411862005036389274568340629973241021601099648484903138188762031841191580584934821392013005219027964968748062515383056161566747357272302254811895688028409236257809764404222337360950816596206054649137172524108384128919858199704575969456461362105054828103820504396271207477734734713516486034831482089568936207018821177940385176684262075571705177864206732204573804518138601375453547011198422099430896030575956660028634334059405507510867396815411891280953062907120964276564331525528436228304930518509101240786253057243896387442676181325128600052360566915694896280500942010330993826672511542223081531996398808786359898221550162858500721780464953047478906416075687416589278748726175342301998728174185192374240064565320387294959134121759555074618996580778816369597393248996197002731244088198150720730578200201602306957592786621682735491009677007992556177240319412912781684980246401677886434797772698970535148756684886618774349722692383255778177303578115342828332791268698606209148537968678688401925447035254327800318824069272166531661025382505796359195237300067242798090684331130720730980706509367861506167531792262727506385922557833121764952216529544197945905949627091846217392180752905869365609617363179946137701567333647887129947659158674987681398223669473711014218596867540310725674360332784520241341819544242822906858341790513545997656135003942114833677978551259235400653762950875719695944892727036807394201818790319697799781896514473523707818486168998061383896548922669088634719420791676380359969824819831893407579589263834180962573738369136410350801061229405706351394876334591221345355154442232251253884652949980922855088009622866652980054226369596856740121634475233801569068660663114264723542031132220290881047695362750462733713686376894333432172105157710917414680543222207744204604334692463314403876567607061059541787329783246520630240948919297166671208867319802029876152158458297547365075190509098202770930918624428980763882139014432921526379193382683356270952891905601640008572133447038171033372376053696452188317655204716461413205785138871352948468316302635962971331659339443264593788370269417735712453715688347961766684136143611511309474601484687693160295018779888976403039675551981799398874431199154626691183594024645202475907312437597564749348709002919408568620439877047035234659278789604212679314558337087704459729951071639648597514283774582681279004224328499650001951624784529924803895366744860171688449938557563764510796999909945328997328259441627450443430703303763908325701459859566857588390070468187632517915118118172830252756690385330508583700420053956712457584164949902830117040326983640066895972877925846154720459340348623481582314302910403419911447273625943052369079941394829215124855817760426981814446763452189498304484875689237588089179656591777562183981283962228400166923631586291864363091578424136929259941218211760883892097898292697912235018881024333874733942728291583381065688756796541386986597346226213505425901743103835959961204785964737168558670881121928576476021117839570318635073288083184901098371972837148172111895989909317768798311037720943571638147134188701850519735752607523968205891126003096760318456915889876174347179430130841288050960397285956291312337601989310334417993326129491609224362180533482899280102697873687638653377236956318090871910361754119189438539445162789863961501516983441813106829324632454214398925269815955558345483086893608312413884347959380898526024620396456576337512218885332029117536852010752790439771195647006127978187974367811064811456501384889526143941600335071572692372405955923707871195361389027025844633133096834279616910931498444739781695320880246202073533075519280156562469192980576017186015435848347588237754504130853891811429051938007326961284667173725662432744042112000675982551916670697072552229827495659866693336537866195129250071769582989177638909821658768309379974481576516891344057642198600054225205195702987460639548783253036766193854737668937545734497403818532287502730767706899561651721981530005966507787997095431427470824041501151413971514555826313767423539184867883858504516261758301605556646726297150650275944049819947316604703836301438795766022585752931244841561897750328682672480716342568516018893111150443010385778148261843816193750303124892960455717224683067846270920610271809894123260720328627988794514072469011773330199462457050111410207685166531092444044667859218673813353893756192411074626040771714962023604369024036430283139307432233658835215338874713959645415919182520299969292408378447807327501744569383150357559333472544614186321485598376600378270449332563754233415748674549381983323844326242539134318325003962580454891550707831789517905253316386458103722226951438792640435300337434679430802466171527202089012141205389505306773082486672430532670228003573038231343039310505085870047071594671331243535880648029355911621694427823828919902317701186818577204036253521404641851571999578054859814981589278022365421757234250356121350396976653497010657562448046508569587328183812606629804424075624418991775095680769934056002224494270057711487181038249013044660716334650486517664195109651809231442002355836889853953897871528179299281769998301619905273766704827167994476649414325475143786426710253396505527566113335766037976363532086992532219450335179446062632154343355699171926884886780865504558796111753145925306268341189678220739250473018481544281894827530188307824255242008804284427176326288043922859069604972261979403922347009133692126705976536011064193521555652763246178060795660446480976427867087271801283731328465555175187480214781336874890532946305555000149234613299014419817754462296297876803949348915803406768002058465784968892057253923406449631481543764732152577950369089484770103210214551718631660953298402398723838272884065744509446592153765318277999341856625383120942630655460726993393681620330290839433710893054933846876156452712828604863929137406386375460655103929000767104563578248300827949748123961083884378351833272483164907529728374924457633510260856362541758191105409072552904020238967457103132339176096929780171379530702682243247716523746873290303453356262216601576819989743944300560126139525585010900579914397255568668973133972064834367210593493080191108905928580699888158015055280648905415133198110741567357958176588883934688268439789808336369311162535253598124110413060658190007048632372516984206474609454736165799074742017813558596283964212505656990266693161548552822957810880167925055081181167728664648953973104049943122014651237379651112032711415198954741698987177108750242026476956958378165493200946672092161727491930882441570676639936746441066166521691390956256928275569049736779477811765969621508465017036386306161648601725156489781839058532676720392539267228658570835323522479285771471836752997415454807782449703859464732795267873964421828096271008597465116180753875705747630565811376810635308320849734415631438563174344020319181456821051425143853815313200095439886169073354025114366134023595954950099194089027268720403888847928787451743388017195774751047044480692019699512654067601630067516355512914997696165443538387635990112330916748640141799261650260982480070906498014148354418123520523954677718496497007990932932350247686024581452219349705112799675865670141743837927261267439651028432769072407415057086913536344235809355414220580432831482197354797058206753599713637693391300375090220434920536475285704852558926275619157875262528204666841710425516182238913172835074925412240628740457813616780918099806355092041859443607175719604665542896888355969778593949619339390598060411129262013634229373413490024320562937267586082867069462386851422126505885608735597674733117125927627871610702468097797439168970216432282912506818821655643455013092220739484712933653888426156979821943596632240212284328384533160385093812305001782372688150454563777086025327443302683289925740392436469079493793032607038330220126096985765117224866850181760479640071725043641117917571095982328921320218860651837258121649779483066727262095704534161018318948098904457006908624762673309844427901842977325291481821781447313782490680786976861084553909612900125607994055816803435424444538946474497252770793853968325586873779066713198933495646494188862572201408068367779560612382219809973244718586009020722750623649188287520818818818647489574862720920540787700095347633568696631132294600466415282203337061681518842618719469788759048219331494482879576666335414635047025302051507771892769898308669439390250580583867168003540300775511283993010604928944406802255950066464440288933291671845141929173917489920639767780179132949634132853786548688124192608900591759966271301333285822750425774347600589046056633844143282341778043705468373408908353893516892006260753884625943360653291215920755058845782736416512565765949700982316061602902645936207569508769932300506340080416515540176096273969002103902600997093408470607272741688617845751640248585219097210054291421017421283167022835806522504279208438747275900813239690605208461299968008089646251542378499421656966027787752965892609063819608213281309602623578125827240385532360101762771867843384241508243284506319905610216849168474162499382095991997829587972345893354116775764853190380711025493966769487244437682502299793233025772666826672267333596189809941875485955318859896006206330624444330113623045107959695574728612176187060381622362725465273819821839731681708529614963055582324714260264628386359972941443730015296939093390164346644316140296546208930667376770862043636109226471697110716145640725183212539969070874081819055614391988089997623500939491425234735481525375604639848204991671382093218129627123404200603754897914640818490858692860281244674198743350762606284842882590676046586515241966808895303263950375417356041524809060720979929470303566928267533974176628627122533596770439062646508783236734820914447515126622880586739502438321845631004124023412796713135926593410337867147408430306552231706296629616317044342469287511802844121518245158931787694642582950768388978658355503335815893390511723229215794661341625966931833489657213153034408040890740285292877863505384711179430922526424633353380217445117647415009549314059570185696746015564792015206723523672677078385275901352119851285277050415049205828080074252889566269425609362436557965041208147206524538942542745212334286709116117007672827260649205910656714740264603361313574862906023153816149621614683074255671520987138072318803972648031111487723911125682217307130670599390538473681930736667658817660960531492405418371584689146358024551082217654091470671033990300830699171239798085078273912189161707099313128784237157748570707556560365597367165249114491244050688305019897464981282431953223910062701742287858579872596966766773571879345211914147162248728251745895750868589634711469868743377401944540968309087976626144707912409686515649215226318948789141263873241984471588101254023006101362307675167014249516347076266229571536535988316441892167783095114810284615154448773593214041522457639111823072459221518635531259975218955741954647070442742124609742058000951385190798422303793271740487216102913067358516653349018904548086699053316402752424006286518847626500979395442008520045997945247971090854243265986458177701486920838573579210771061506080468579151822259648602964548812866535565695863357843836850300378791327576736757098616632030457493192269739905595426235327602295243509708347628898726272162950988778999107524578810998959135033395714261102947784202010522079710930140092588503519957930794047085826421440188253949823660828799961438896520032302088652187056052341195064715828381238136871495963850818429990886186106981933049506196394077650479131664711830347096050149877187519638407154095531128059819344223838316275336683085889063786701787726802210528595219652678034098376468081738792868798696085816578685619890479068123969975425272792397221250827530311587438077661117153482216037773612835389283331849219543626268810082698564886938881532462227428433653949135696464043604082580223382211324984733070987897268779764238618652332156204669651636989486292013145611946575616904819804589881296482823220306644887481786245594641462341841400689251277326985492544138975515512415122623144568080687067635587541038991985203118030668877531741742454731042321589452717815841431687984041190504886231863733022281569090134389103451259523097467105113841719925575572280878908710565323596896586273012062511834653466501243232282822630277040115720889910650119487226423943679531570266334051534864307649100337520985817932227197833294888767846251190172391862547634320327527252607231897275902452134341562716190320877169705894715763602280677665314515741520452370973478807913864707106848649303291044042850943101376735162612340501255684057581741015768978632612746555975606645937851358834879153845191909898167387250955939206894958039853698050694171520677037712827079607093613827074854738295832235335463831922069406875695093635903583406472320032005171664902828474993977653629771992610188881817601535360658190143443307424985670078397239581651474252447751538751209871661021546580036652705501230246090836977177501150048828685851748050905651200058387475466082450502332320839363089818408778746145334840860774142717985133009903793744802506796105263626577820033876710626627238113970830325678243534822439974825909676991449387917747082441563794338384068458395835773256837048709766364607723666733529805033050193758383868425208297110744641753070578164593766898868199974891254836219080645233110339020115828828382243309417618830815239336592817749542536437631955646448048743372557648340250804801453980056298548892276064195417853268762389308459376398220195364559617288724273588822309331288820374504755612516846187494419379619688722568020590434023943854000424919143256389864803651860113767732256298697951507277348770015473317978236608187052199099831035471557079344857594174928460977333387075470496470592007405919014091338849312452124807318849013770555946308640968303019747137997867743653386936119605861496122331246270197421247333973364948210908404661088770953107983232863763913580664646829225614144494628631266052948461703902060658884699367955185136362450484157108085472821104641867837980733079599785207334448819482905326375444418774597536116528344330813786054216821673893844924635607251434827381064853053755040526368070283980324069798543619491264328970460447612243104973013264485641360978390931906172685194499984503741358010416421094621235677482025716387328169481046964314263124541087482129999682909345153359266244954322662508249404256650273074121342416394241587242587175223270882394747272449701843572538452257590075841949286627707498818267723445220452598793312500035735438549427589135512669835680807967116854985582379772166573686835938962400183199241140226283711429770330325010786854916133893398402863688418874702568305813790007089662741100325148912792617345344953844717810958169963897855073588891368126479240683627606020011409545791548078194219745201746281850654955559692794516326487952349560162302685132040120176360039723140482946697436740729635869777797583654172718658938573568312979032276130089559117814237150758457067136376414887053580558404606493783163281012196605184601985055783101316499936367021892489751352479052221259259084272098432573216181534361602992573629482812462660983692808766311244422144739680334387937252308599287609509481441122268970479015575460382220704294940938309733364649937062987131633140808445184105029167803571861484292912487932915633408299859374832807401659941421841817452573492582682499941154440007168360929087537766250039788947474092447149004287334249200634216761164411164477275053740730231873954520397093166950358081043289708232016638996211831144287877268992496069272161436642065008002130807078341498313990447860940508648887687169509330125437161139320961632804333098130842338264530848744029057132832403058515810198357155338177014143834434583489876831822963836433681692117174203511302883030066522392023781363528505539469969887920933856587520524267484927541446289060562389640645638503994971007236341212656574076412139153982052560432338285550605676601153399630098173486886710719294100186648623988250142629459534407761107608395279298061024236195770772449456941885683336759586875523455825684057736779420700058863647550155509218126364428712161081198349128188722585350338869360181984448436779688416997170218675788790354462998007857645443613668473080668762947524883479524427714098375036958959294045203343823272113852095764211251701176194513037974639001006143916982649309409643941561505091047132588680005125849746500478514186318050393173092932164970770641197279097936496614610607293411207036080017410206276124983869314664927961657807480936809554921973568672633438733876852141961026851158507978280504631214902247345563307717348882251123792806895912916172705713408342487992537481037351852403730801702799118975599173043249852494130132732550263432900513194785682817080700370753961174556994835944026195666541167720028273402561278058655660198308287443220352214287483942171732764662163658789444047379418301791523388162056392614049637881869304849032353870637695809475859868513366209395182088096307540388167430006492240559323997117236771169492639256556332052508631117879188163129512547642699943243323754552657411594788698570294509878329854472846198889607788391709416608309624392627024928794496054678184855219261964845538455048211349901220771410216378043524413583442225340000864355270031439977615461608180997030533936006286282566939930041344127766975357625248680820498791935626727540526029787925621115237931836186524679343302420550321512937168989063491111103392968132794951317747798879476774604854480104110511446455722950783083950268201502476479214704015011017241699680153890513405011535779271040422087702701703569070202837947644024845275426610591896346343722137335601933939824476489353404184355359580248405195789878419344210415489894416580775063835638159915112319607840996358124891902510590068697853668552889009316541875502457536993244387716251241918903951536664263327695059922485495225291208357325978237413158616657608759478659638739335554532280952511623682265320304326198380799132843328777763873017554757543451727679579783406199202693977617678119555634060984996000325080055569673454129113626632068846427599961999234679383906754662581798096382197282552139952029367310791039734737197694202459477589559786186794153165231339852642490338221930656970755399693863634247379544477094578101023717397984131419727145286778918353795134323623556942690636864250586807219300019565767490101527965652920191987706439501433705864646012859782310436546232712557798593853277176166046087942864564935245211826129607895667159755558179458190459164900539537034128086274091260400353454135618707948537816084733722570185074288561323783667423406949387155749580422992290248140427907657475039358320270565558055491566902023333734724791690292867734978910693581725281441663297321545648792572743572170496778617179331786493777413575542687585260118735015421841724580054446692894252636902384648369877633070191641776347420965188964423269829786542790557192719820768751290331146461295130142335069211595596694794807660583971714480396352725214525288756654901032000567640086470794066958714018984317728266379924540461524036865035729427662286886246868721016204891746685769892000029290751743324502014978475879767689535675623217151542209669612463888360518481315513593660346988945965169653832816792621914098549449319880613520660064317526950578767132154720708478473181945728259143240832550777714170199768359837967174510873526251390634623888964687445965042125005954507367823257419128640439460164514712957041639462082979253717784092838937460796384035187589831869126526985489218673642915327140685918074036877650727282386830103950718752228104154308921392712858482877361064902426222041483039165923642949269292346316153868498204247234830828773829537512145721335167558197416722206692269917181190072377583550101736194873974714055144016954086150453135482855469863762207617384365798806658285025670561730231566174609883236041361306504961960089182586492068102872244216418640012106835712316589758518341027681925127907177743598954779019444798430207726361779021143377717817175186321127404512725770446195991658829321446806582052728744391446664368172969411376903295445093516686279324262064514398858261597308920827355174780331673832544852929814186346630481254621497215922326491712227119108884133096998053320364284465908511929884367148280229277526922683233950264542177168861673956922705966695098235834704137626185699352639422774849965225341876395048333722001081348739920944291064430841034598695127699965928340702773497907611903762420315007675403217385049005479121049772039533488029716171082870822222587874437777886943694987590218579894990035509267347907318395248975948076861856130199375948245876595666796251173611149512844016525342773504749657549322931305553335660977283919720578902175276579905887819639611784178431352592640652869154264704373485497953850527835243923920425482685294318164458086116327664424862523183663262772787360675359440794564402216445106449149674015248090319990496571870806248358989996448087679904203154320189649557514760497732029166226667176716527787454303555287148410093394435897791085308780172689607152467797047443838553178736639575882227635548729660832541953911811261603276991035698534359567480064801672092822188016547973606102390085851888938885865575899213328214068634790422493819630467432012699671310428099594699369796109439594232951625416146892551922974873678983969445734126252609590557334276836797113630811039735060504684500863489355299556939175918202945545608818498022389668485595545837769562840925344798701178207627963762183387792139606490278522879620528284704596882885347348022396060470331364791094504684469782676917471147322027048762188617107840259174330465131587327525567963884324860934324817670884804793764345621756123735715591113555240174570131171407439070247361105969162223096180510659686658218626632922049009884644789266421156418002398113553183954537088860234929776542050728973410482356773361302661515423955461276920825988991809802357900160999403502287909993963454177935150441513780085641271955679323238181859822020512019040935115047484365001415983048276090444294547666509310063598579706759246066200823373714776623643783598812649884875491157140694567976362481434499650933151195682262782437333070346738624426724876331335763482393445800210119184724492187624359009848100106296056756916555889744585177842773527516271993752586061103169767890036207006621560390242528124982542979614530300607586148108590065015769037552902353019100963175394922575247921414505069277985060603330726699065591239521254434407199203120653004130938402175267828849570253482242826573301524800258658162941501787927245646873314425578963746491834517335654813589510156644250064398487958000990039399068232971653396412621353153137038242070146933439349769709685206648973674636956111544938587016368069926019222269048177717132541449948831273146878088966408132759791602308198202542113285923898800217651192588982195559904175843204540080012368986180883491080574775388798044493802912636722343891644791257482705901441077309750200789003314219026817962514704188552881369023319659754751069218853678526753531981303711157297488220489139182885151571038102326705419407107777911579679650056544991808934819650853912229932040643820358003200817299423054695744893209394347707240533687418156336241671507487624006336817512857521842357287321117001856827968488552792495315767544228632285595446510675879518807054021310410459609771818200663158751191733393539854037315880855618946614078357603754281490138469579392160257158853263939574878063303861150643622636801168390705959007330832455740456912410569524111335443013445215190149470064711241025688470477594158862013075690343901984378933514264404661537707301715071627745363547347979061915265865868653938392862796703574674203006545007611350449911388587189685072272143762388221641207396374034465322292850210333289845359694307317720533642526182526101687136595998939849760626928528887510655343184072043506219579481445226549655186408953245755745732029017534645310297833658427414301857853972607732754568958718226215473872325385039209593947429497378643243970638619423092989887041124006400837604817286291862804860983884033983960344283925444950858158248190012420461317184050868262132166341810090448686301843367004130812837937627535127962405907816080999169753879707786251573826600459892272811941729274202139944345327239568956862078033026123472340441093147274430425395035686639833891011443233449490302089458206797176718970605517461599405853201670484853478234639275752215416219427620040117833783127923340005032300405035939364554266963901267708176884362473215684144861067843869142411881285564014349919263429840422311384878858283219187033394466735246895134514276205987346600659967684587278757523305603699105594160524074690492867988617981261041398478888496738941213334100494165079399080480070087055949446655566528562603643959258911607031528219561759166388234979060619176452127488624354372394954346296562300489907569607046985591992810611427233143932599633011199570063139791923645727311115775010624994128821312689576920159123997777453203559381540723431586577153726057223516395740176345407477493925259791375274331379982826596676231099344105984409634028388118617066786898123592438380123871656458819023177982970607368846527309308690463612623609994938174143269875629263889052890955545101021637752929684820791536674705857573746637773226352956792269101983034140006197975415088441372976194910005873329783504776478409309964175067223045580423136584889948403602387080799353272891444120863701306747443625156282760499071292877675382711342138070728037480996707166659071831780602321411016195605834174163101105338421627993946607686552067499546639072431525535342176711040352948322252487042582125358075670540617982340564314905973097708344099947699783869698016096742135624808721744539693036197044775088460897655978207265664149322754409984702788582702006338148663216192707492706199845727409863779511325518921009620841014384015049980775292428491225089487310690226033789335897451905353192356602725197335769162545099339674853061341310610832503602930622544717618036017011256277915479097569257074985527440368521495393611614690504308600472398258953413571007997565501726792463340648241220474016896472765895282614823326817476806742514848899788930971245064717694854806288408696149669645426645311397140344431549126470340200461724149909602246358929393134623249116604015208938545013752942120448971573392510497510881929515192366796991207505277639520135928220454396704985149594970949080080166916269503564048668450051287088366226881938673611572248007312366220007780974779441727023480572724762685393865826122971566538857687692456975702560410934382129382398772119964560942449348546532797750036782769380923400143944845703769331346544033017698610397491300006405862826784038440106329490056092492194919184419799876322796433721848445704389326553985392096944922816665452782224671197817425946384890750783939726866462385739786523369014748368168050189778527387537292793486749431603534284894156523787191880909223135763603401495928904668284824589236929236557931054584218545200323210401429993247947142592387579766032528290960278711913210835664541939807609552333495561188421453562313455045077579178586586760759347490320708479246818431525374936915143223322867193682365307891669819497382564025019480294654066628236235353770936209767948034330203130112737993865102524016258267895518866887559113812231056700161226489747830319231698237311515374347548466454635187602231323309895526848229639392472863186016358027309493012962015963915454802323569054629474721888400234379816647359963757847807455981450970055816183943252520581252150983852475270980556820543412915841563859469313260061261025599132070919631304350055892663996094622101850739321709607396492735582422003207445687252287939197725936094598315427043450731395757483483490435846859958463467334255709372795127454386938946899458422859126804178069347327813243078873436210718156727414857024330004444440404721004175855828656802729924466202643569630349309417070665451778529005475618995858045218098073952167419161926445780278829144972000328823679588035480777322661812689578436071894006049646273103118050342226052277236852511128932970267681268881820221467761156072885708681481406380112070276769424279531998372088992963176656456679059674366468424042972092366426178862969915290205123661737428664474513298539567032850267500685400409586845361635755695990166621151710312782813786996874882115434370835932414187855192761930832818078843740062907370529977172262091444729304215937030510093523879201199628386573943003980832982274017353215951389713704842972774558640800408206754793180388905567842420045302979724965114996490289026708652486970954605379607314407105988166786804236370799889498963925919819713498367957585669824854097115510700905136295024481861394157548896640686879549267713464982100126149626314104545903690339170079591450415393705562298830146235483256672925988523656791909938811101870642791048334247301777120058041587387821486597521583562940847160306766510515602685107340983354373479219603328147069579100729478352306109817252613335687110460687654372850209807604831330680771011806077846684009660064390407938909042665596780449010317614607021195632247501215752661840099027293964737581501427232407027496605276599845156444405871717647353682149110623397389560313339066710257550461062878064630935480677146531377818351748669670293103337403232770719551119580126085036842956077068048828435597886910821723890762155458320919625318835990422558427160097656641814138122056124154343176502236912601422657280872562142779258246824706554300790120109174959276568801025765669509174714780721225974632939898936485511734839992431238559817694121164076988512036419468549283504935243737953475545226226055150705701183836383092689453668907499597394457455646500160075314091657870797922386727050803623445653494615939896618941402335933502542498322084885610295684702128850972687533607980438490545249061139361934950134603882461506065335572075921501386633537695156808721466418558449276395447563320297308370339702823783818242720846201067562311258180950326894341788794525160322010454726209762004133580350445986184442298130013702902906163230784689829016433577841051098729176524104893564132820389727260085202220091259615758138884990897018828000624912313823736976495463563048451794171486861842182555233181605129030609645810314970416416473387840865338416486972144366305962773796360108137428628830727986387309192201346945099352630545200718358179207967263578835141468678213487739902537272329241716223226478038222673731765827007515521903544751965206296216071874945579728894243314240172516853577777182954482089499445539788329939859691330497154707958420596496010814435031554509457282250251430654258042549018976777140924370123286221464807790831065567602305950748720081748562220589597877035622824055234598122119303936185910148611772896866282226294144446163319619163776568023065322641452895255491951448646219134892512541405855332716620265213060967176311747996739710100124890340033332256319533611162888790149115145098019691682775515360787472834041938692126035557842087128298286510207387978971960146849371168062309082235584019346762130406147595621853773140865766674575222287726158667541233358110521301321259125935978182828936415302966498534967021493223482059094490162172422389199040494281725699714369240101576764363908936066395403831765291496032572286157223689534581067733289385687505651234691012131498825420902808163526647472707215504196909840049162946112519092357390231704454603216313561871611874597517247161300491765397827139346504840513577253668506654656445157076701908280224817923407975179167821873032889671496999070693706838350506661059661194454978451638812095728668167408528448018498234832432738828007619409772510159996793142785817063762606088693630056983576756019116283992214466993163604605256599344585984951471684949399699993535218070587447842080044833708200734657483769527903866168111390728639181675459178441276197497619032791966523730982234673604910285644862956411155549366910330241416779650664126733483544128921798744123393415072409245092219185106934269151698130475055968964685404115543756448154556750168674128221798468693729687522841693409438217340057106257642480323914403535510393464238839081246137683740815095462271512751945905213137786236292216576157900342940216164010522881907386152809555983689557953801102485600247755697529443303031765564388652943415125549120714857085124826149441458100680329090064626295422763030564191442722113446792977961708121348118405654956861935450149995788123431026551029613376435426349456157195732055241139553041251321322284061117495110811180070634005533294890361879628024510418741931774871889674459382713235863226300093763895431306267512262644802520161552093323860805860297294737861783069161040527642653973683551959097952822969550194481854303682176056415830433012902604135996417423099678892977659119400689808852185454521240922783091582738371742024272287259383925430103980287945577651756943131439450552824683005434046677933194321220279664013530540589164324851530750851339562100968984933796101035241838735159771047102205681931313829586365816679209240224056808429561124909888638972839555462360642734018669482513791456183395957684960447502660692054139520621411953258494618663625809864491452596648106958682291774291044744684573480267821509369457864562273850726838704343111137462146274166900195238357680354723592730875187655629053969692131736865239067619737203501974141411073073499459346906721170138682722263514538828066106019520884740468015899768205233316684960497920264390897223639241686491893825207629847193022617048483496316491459736525207868505122662117549422828858598572903604423508398259479340043436433690264020276740888726897623024589600077088273968873446012931092064193283419665351837572834367832620448694747474301660733743466146253602142354321507094961886256352459533690650780184837595307056306855094637376073213993135665671623129193536982326132969598214920831046564298738926107424646092922148497691417622175662054528436592987366891974351106095724679849450297013190431187403501105044733722968595281278660333554422328845293865062992336461535529230717286539100663428805911902470056705947330165692041862436392003577851910428544652550346892739989964844835030419740336329752198667054403317185938338633956455972817723890983803296812112159741574710571128110869047109997099830601618871286890154674008079769216758126326358023854151399677512376403130207689066116761276860995594636833783537347554545268072926804052972778458695470803986002941341727797859819203773638973667250795715836916130033943144838844408191149224897389566531660698917135916696969153285718110301557277078864494491873700877107973523060150447519217468843390582079541304964663429491462095935949450024135125846438546814461026678711742579900852195355659960773949216094531751776927034082484090056816722123807198267038810706864472562883255332079643184267234318744213984723482457706886978572596888670548817430664429010937831665061753711988450345373095818052179744455826098337038802802120085923652913063465314764226424804507215158797259768315881689024793415972673333031507843854513785238002387156193939124213344997189170905279029499713949771877331983479193526190837993704072990162272738792798988894427745603381064802458615948336598079575188854524822230113328496180524366299496546147203152316856938617160499675550190788378505495614092375674533951566746142249437939432881380263195149043807934035142672346007705662144625714606973794009766076576096992308948071159412049293112241400941261220693255567510949217824252607469587790052695016863192203449332685424023731447379155756058300532314783990170066795362630233573172430000823577639548936333496398167483781683076301249706593768957314543918172558321165388299245225008259642997941852302839044821069820560055245935808264136427672058057085700838942886663726392218381856577160077563036690116713499147879214679473561787203872421002942412175851913379315188233177274649652244439705562878665911435983315034258554644905862071505247687726248286794644126501241616814528921202827521412232903289165634021193978424371204088299998271569001024223215583633385359630145083970485434836257445339783583358962254447658304659971933122881221189429330389709686022328632754077852336845572892067882743957038255790517221798752894150919842487653456966382131698793967268667810892721995013338479956457696856842772792856870787683804725125537207913586216918195117197592557786348434259022615774353575929660620442277050320659844543912170508305228476520474773197634548123507066820073666660040237244616974026806246827851361892994539787945584075158346544634081910759568111667917182950199032056048674703226632838329954786707188343476429772883611923236977072204378915628348094130446674128624597278793853701790294150310719272205492875577084565381685679204848894179259276934216243324367905197896001464686522284856592880128331115788740541349814545924536168020026968007650383872200390402136533478553509313665123299032672361759766284793394010722228302340948706677365920019010693392527680435055502080399232113289245924983952782808920055009895459566034759656988738973580545806085250019388711910557145666423877777616617293888702819595595813310962214653866411905001071034726016617846606565574333375798720301807765919490870599193027075348001446221267521674028560186752111058985716261081399866037866514934970851199101724127317752311798169979630533885743093102993380636305195470279874989103368626605705667058920397014977854743213417221817063040303539825266572390798895669378665250145209854811591046008193288647269573110176854092522238703507411960092478280815864779804690562390380000431507377556879531844912302394708173254514533456611693537236774244244630279568737254446042644066197156869353493003725685752571362943442214844435244758998925697017127306053296336302133860670884935355815056157087577834923456916279125954609300683771958055019713590876313627063365537031800368666652437160871470735117416931096693736613961195798718103544183720306947798695985754204830805361234246949899600118347198692241235928003045385881019184340243767941860898817127651094551154992644134063434564096742611139281833364258964789110531588261113871094460199754841736306142094715490263813432177434527672507918430904451868909508784054090529515155191611375262251688034307968288776705007779025159264100543643498153247752469973551783189759945311377714388281765893057334222534918774168673825402434599886015295442476180372750656979930697786053306065757003016998745302625590424517600097431245155460283117305457815550292975602136070888055788722466157830151796346174774752659526479038455145009332229128678439186887317167542992849291323562732001804370140792549279354191984347988930105254826524889657058866194632387908199169573795278201716986231533832423627765876847129206101059562530445161809444995725693279743555623371896058133782662273307576999523271264340095118416263477125103563376853842433850666804555010676320883921430348244499528043724241184280874267989669470658159250177211434590066844160640574848379080781558733049634554838976650205924942931585773739381065558328422577510917381658463621405437851697002189985810820347096220002239056258373341618770807331763678122900388983197141430340136091869256648954650839824415096146564939160310997113986695917681230989026182055450592976380514857995312790517820248001874164475149328030149122296647085914153906644243629470787968466832666335411659096975571296775554320524138743488102891901389811920471717981395011307740788755364009733878453105218598269485751657195768384488790927189209059488413177289589931994132428757936616337363736187288795805801681416773220165137324304541185952456551534186023153297605780323466156061271839951114212975280820227459678394272568544523568470749252320774434160985618637600501515821781102846837725516623161371411582211624702175576137327097508987619060330778150390888811492668074040918189369077680319055697848957562158305801887363956057850053833238702891245470688395860584931607143669522783334351034402126552720988426172796980248537089480243173557827738152979295691836821007522992891263203601536891076382464228563462566040747985961965280886524264603342498308081236961537763098306571265964372328425438302052376043948209730313513791129774739722025001138827141031511603351132784447712930734929071140650569043794032896701332485740374366299759966966062534571442926171751031177488626997926086714726362451526098830276585875068372836125584410114572508370058693337366966306272188887613935135280421595093375429228847146804668399007206726989449025074426563039246311630381702047367216741032574144358378102254462699012042055925405978342997617248477220002414755591287117066991024785811830885055749027063777610995716867188593687594807642109352995971772536323879473149637621052664388340734972890782874642289221277472394476568910903951430374849467726812581953753214403623281264503567952444630489579061507577443733292540258631632893877457126459657884878288146714873552868569701103404206956592206584173074898729835836969212135948464751203334968889014568619257798359535035721410869416834365021988791114657046393495691201139604695078961170511615967384782616209120772180743841541731021570266284223602110444101334825393263707226005308133965689169384029644421176411677821355700216017425990268220115338708515434104779582558484646268695267679395704583839632542132680060946259698114302345339300300867527144902306940287972253239527642334551666300169747568664866117514526194062473392827431386507058555466811546843382518051793495351862148749250343765607965123868772740875779874395031225627542547049656003800418586425736684637990166208934025221289559394858880675711323980272827297392591711501407709798261532315796998599277744870712641102389404082394106229959034319695427712597830531575858164561720700577800711514107618414026717839395231911277610274673280861718611222206761560155875106309482784836725612467782868330416498521310585699929910136660403126779492574643690372646310764283890480281929025620284361209174908854049260767392376169257122465512403180422670507402952399240986198337033771353674128071279750568465164491590694842422733398437333860013176708638474338070653252534037411831197296323657585538139195013505311099774843359355523116076762357688968520389529219225379163427647216732095379613043314697382435241877913334932215620013853978426475747600796121241864745809993178874578090307713791917102259845243004260780336179474798095329924388572749864553790174593265419079144662591395249639958703357576447233420080462986745782947990226172639570012903530927373975931692418724018127006532286009956359269308184997547202299010720057673414875053793037436041728073302114086008272397628387708251768061433490424798703935981477884765123483166887224626960292856592495053050150081253719698647252748627550808683220207558762390325493178332696184488616662300969927115012135523651234552840217557399696086766351908156527731072033822616055195615709044864183683094675311929955650784058993009133080911095420140382803161661663083344264917202540767302209660808282865229017883038562077062916591051847674957021694121100277380739391338521245855944010905844549918916379224883269848650528601515476509876063501720127497040273670890694978787815651895940160028587139049280183089815772701053908193190994825658813265423226541262890556291704772141397183040545491235195530491046301091531099364368793426654185958732411676626433605346433581473195947483436715048440707473778281916618099747633374649213847119833626005385072885337764683944524570371508980373785677735545659114569880057199005546392577755036307180048148362232260979360298971319223389401274947071276374764716229769351716667120880401945135608945466025785099342004414426506017134948163545223577874970232690019349773281688426772327151329201513925835802791896046887797334328455096863881540592164083161395854238022255269484621368987312833374599697799300844603184095516472910012360624370587535331480096203608535258906769264773432300939728566560218268152528218983705793431318740726583562370843904451019304096610466254446923647006685079172063671838361157512921573298862311245891858353130985439792482951016316684636071479741334350158738795186220313969483784588123804177362843964056187030263884789080070545148597552215449243365656325355183280282495906486476402103790687543931951948061030817294490225994207472686769413551620777602446982049888136074566892901983308831654464251491625422450369523889540701467990559744149959024276222380564614425638908265387817782474231152666071416298933039910407267949470145339043307948426709628956252973989435553845065963417786594976115393730829175447097091347149120213079288328922664990254189281214775447663865567692461043870557865609288688853415708057488456657070281257928170978263813667184878039537185045383481153425386568195636841323739463926946315106374941534571558709005053384479617383595797058038430709945575372818332846447598481877536338807111513975993082556506972458970146018961329046536485045925332977160601258550353255209407672413951517845954370336711163341138093240158469880083740877764787927383957924924668034320509699100268365269233368662916394853696450370052090823078286342228966328355311051742010512808200736039052939001936003124714658047734422861284191257017834155060406086570663674803912298019610234178546936168875771506569639929070783361808667381008591525705584843135632996728567849974651757994940841270904876032770769183515468747490320402973511590547066880663846282440372854412768654907905126769512181175259326130783795687784064457818208088608023811990011850084301387921011579527918412621810655100457673704170595060539570694049251004259206374075353162580140747057714484807817807808500854304101249418842783641519323890572241169988003245247769160636367931429240918889644591703812247368375943018484920739934894344788016067949501281447984927141146432929459139289962895123633936149584290475798765009863922358009149241287584177160418017910587118816991892351418100512810785202361524633602496567523008283164347436099949255150769920845378897401280496048940864897392107359877624513861143199129475274241031932208883802757814838200869178700584183291559810470867122083676625579113561456724612777602122784579628162870783686650661248647836643627217556948627438491550829072624257629862010609305832995498330561341039665704144952061371910797670347307726383009694014232201781083043620353951559253301757848700682282669386462302630910026719966142468228902857772569296847342293623840180537564096831914005904226524912556278805544955689721383152813512016716084483772151225001915415374055016947448904416994602294985237918163926061508484383218063176739979652999607048261671924113322040380863275355174092626748526045325747493121002484894531473536509455673344765574374529326010880209142177542867396748280318306521718584889048509757380984808398738811393746955097628418421109854035565625579250188985535072650837109886099661843593902459108071508711790067167009862232111840756159351280853495465124359528071262830740156339627397153814408521403209622068482472125161536595097566668693080350794354479014211365676865031228482307403003474709475129310041316611535591657592131743159708686009328311530039618481925726288225210331729609782559406109063874344731736082462921953950317250016929826389321911057131597221676453196808018178403325638793499470643217517345484107002603358532415730925599900146827305733600095740476759659731887561119503274796848042037207069913763554599926883346905231080690256604924458597303076663426819185608051641214744846485157464000878678562363101640796418836618809305630457754022293394041599426194805792057988425032005971117432236757699382241283261076189989032714918835849715451770764289521836021692088382177556791338905539676633560246439746056276072388307330206705451239986218559635333465433092548958603280844884354044425347818288656034221455789939783515368744879225202085459504356692596654909718388424758423392327931503161885549250357310938546593048505540727061186004091193573520272913126971445066140084006448720899465799025812828034299271479279457053035851699076909415245247511554287050852757821950659141214328760608914320965882491135792407817434685900112399222196526621877753723217712043230796300958230232821677603746395138357194684960566883571815695973436824604601932357607732136393089433842772898895743707931146371359970152468790070971535353947246023431052674458156434964596183185402269813164135520504648208560305766112627633163774619250946608436356317958651585206900803705430110919115284668322468129260533975547760147586885937179415816759455143879357379730993171738430885841033935585968234455217642425560606276506854538458725630134728254540284955375137145523325779521747439412390231561411271867956221005902737509401844832220007301135194352926438537531653976843238917352127566342106648385887739441395213059656627821986589489522294267590116085854612567645869098454940141301039619840861142505728082977920148103828478417494280159588039423427166861449166478510048885596358985825409982882015628351127232202079141343460495209605460075024927528799068931716483890311953573110696053313900965351340384158036894828473776676366613685880302126629786474608368461092795584485247233500655976389390180610595365311541299825328352487454472436500066289150872288134616422393790181777524712738758323315117998123888285455016769755986438771843114905902393950689803857447918158696525574847153288203654071859865069445070455046262293462900380414021739904662377212917753971651793643806437786327779583106286969506330852619788177495808638632969091028966338305649632924264472122756861278797726685632265499602130551004053980334557608745202948878077431345501638708156485432803952878113359992789384169905664723983488759960922887048374282033805955450151400292088570862728194214427414351232994256750585692673353916404403236486970703494017181879159792705266606482096864591896130899556213485560549624562320137740659262627208178904066214797765363684547443796932648602612653964370757151655694849345932176564236268683423000234848526610552369639130503443553812079145463480336920129196550213376008667906272833865143438117488932713054887547855209416779957215399594869818102451312390090255902427811817243090772787968560451954038042407124474924243632651801630516073042489043739930663449460137448239140791472415368224186342331713290355641155211371466419749361387354600327471272013038642179046898739153052922631035281314451140202928509567955550783331221871982647596379812533693178952418610467134192436166508180147002831588836897584600718233472869079010180010065649554960948797646838250240414908087105678215952683219711449202027448359369689221884026519854769687191850963545610616679538024498634262085915248637514488140591408657618846172361383727709410858207965469079655168634027780561457093195287133322628756176587627634475607434922833071844524449938253457295598749593405287937993317277644261782708708501761609838823834085078075556485039280089364707160250419661406817977811712399903775004888492746854841128307418598463181631459983731217280307778187676020811060885807169358173767203840632221632739853405864751636376958164997508983749162880781913141688559659383598698569967187115219465803788338853648442768658947990485967925716894662795279376685228560083154057773612493191454032426306250227771013776889211722024394431337858102310220777768518171250193745410917549450840316363238363896485221893468524476057455513012487775161271067375551135889471704176843393063562886301188734140332577738182205331596825825950044347588207603447751505435883920240399504009890009134787006388705310638195369933194736402903264705345881374922643879717058869566597081982806003413867913592118810792998850628943810949039668178319984572343553222316315929893884131682202464561199376929457638230032346553309130406725513934549137271579017632969376168236943027916841208359811643357733258421772805364486091256993668933882970958536748792499553778846577039245533457713646739755704979842567263513558031739309205208882700981910820270995059814620417347738906049795947907655995887010917245358235091398784455974460405851203469962316781448354891651278514307912353633717446932427977680590184102226191480062670341169146775893375667158200076349580742315822435490387086731382294185608934460535888132939409143369292849638577219156764048319578580739591711324683779295974346137992920328167523889508115340378320346739730509419569656677676455269814658687381631464127236876573094449233745096441807568580493898333780185337701858872968336239406800423263753189090763110157629937888865144924145865003339770789726994729215867555121974732380409235838265085520721058727280366538158934314787404853098955042541311105752698213727670060360996737099878982254313318232800248731799366185727951362090713608123133986398080885633197804694154602588008796629117131653638095974220572517323581667788388630357541423242281914641413509031699858704232760852633565234143998011759604778611329795244071724964902344069678917192898950447575635631624775281071300268904720542515333773689675736267339970563982934926872732797512550795389215648888678235736032957902412737812669478131602015899470480401540335079345893039438831831130300948773750482302159198191346499487289987726237920265047918994438446370219266552280716653762827245077185108013615261154100128562585395288109978907882218012700073192108330191512947333157986571776935528944965742840165854800367603232136549663894827769420606288521236685507966420521222442321858375938642725889818696424654862115149355223769517323670228426711192843492220329853673879736677125256276362793035150334808737488037486756165571232905332654840329482730362888657774698531170977871820277677795697313537953918084246951075137057273142987848001877608892887922014436567898015919750265307067080819980266141067158697045480592137876512359635423298926912384365113815743785779048797774177080271191554258888402972704363764649356869320947405663831112641714213607753237647496626085045624920639597470604469990947045814158267761668394404769802297181473854304698738652235028890059487917058880000168706676129213381367676403241535093412881086384216081285036445006908735907850542710000750518261441585706582086390098562406026505414871148812464237183494243492560444129761358162748732165643876602828426204768299845490542106808555175723108598857540700246910395416445705813666994486369600866529980044389110140050024883285052935106774434977369903986938216783527331743131516850374561843497834212288235254921035136820345859255277990405727046544122619657746921378777283167392728772271735600476610701278226339998124722348868152870320376467839653389353527400553390314168741474880367146349296649172437636541913279318476418742815840436821232065369234446824576208641894288663168492019804917606219537174835460441240696196026415438278351593609814546089683563234815448013119404965276205650364218674545172428682067569808578927245240374063411479740179678764713967806507231203683099995641836010071311361215924073747376152916760271015175670984941712161496538849020389484357694448769945912991638791363507070264573443157720077307245506768615219376513087778497008945701959106787741840174326936305540549779928427025190756616340005254361057641007497588712051789685053687283307716558089291338208784860658302039609332021982628459724354093172301637712472081232020980066991653030271872396813621134452078382486191382059156608537576420728151993226092059831284425822644985654382659058748073723570876717602095537331001850500181781175664683786917123114080973211101887012409709611042059368010128215834409257047577858178604035640044281200372416609120037392922422398448779646256374779364950294220523073181622194450205449683619428920249139337157861333940099302452867727144495864440497255775177540726877713062092911574809513863625860329428819898259070732508052880157489567624511197488318408114121577188170647850031939404821513993005448243297061002529820112458545025417175532030600745538949997851192992237156702866994689960080172727028431958462967658535689289147774602780612034962872381639845341535221251667530589807687396744857096377853275079810689342136631712008007198210278506204124462676288055473777885589788878021228809834624641546936117491897759566337935609440147739503655788279298105339383519802953557458038188350864656534826895023440138465074543499616372542626818035519913480731909562472480419854974164696855109787648937258074109551221066296352875262873548584693644587065120372647838074636467559912290118803582649119327475793248812253535835776896006998456230547160852255776476279123669152215448226121123576085963917715926990989197918684029029045576589794227218731978256783462819561151568425515658455810846174669349848054017051726549538118014207210343049308864903629852310743038944742577428861154645082239450915620462551374474216430375477255779238894915490455205657962697480115728208658399693317778339028020578774158650209436704873325078672755055901289456776195689338734591822599065356490559477226789927617387196737055474839903189827023941583728261610485025291979396298504739707699690429157767821326743481001042341552247502940747880944015385630511664033587694017205422924127476043247757912244849101012572375403806528200083829692638662885823066780353725948185527608684398664061943323632800039975205088874957070808136625573957738491467401546937693000117229187605060102321341229500524116135024159937689473474412733006160539562677175106027783096092678194290135357970403136611774039811571359015435480362134004346272499387344795973753657217067431627303972712468672610114617139774326028494553701313220288103536523639885747688968290773779812024726908522676734890718858735752534183599185317226757192157228306980293204669273613033210295163669242109793184598893175787365328031758743085370720602289828268484992721821068681474962387843972823526276912306559096522684234986071205311293574714141694423777998551318043668237348799298957997044308401837845345541768342798142688272957343467098752983226005041041533449879575647626113289377317812566996018507626485745251670757460121003863552435583094133050385067337881960131887170326757005985734464896099114698209002200581549706747907085381546823551682290077058201265240107597611611871032937410811734442160376707587783071280178944242682747899924393253794989087154973100635208910920589130893177588473398895122779977011027823947346597036617873045005146419510281497089345998003856134459864176119198383971454620585512407548432889132347394676736538407367827484599701652436441865652364967834575681553172667774976196701951370080127225800098242034086990192862097124758779288881132830684893248819195289411158337991109694208455835849396995137532140883964794708842506706894388803487941347233411030278776527509177207781982927632971897021187057701364909523727062121592981264704803248546998868241138010580072877081700832858755419020500915587324426294214800996032605451661899914045270743027881839305277895531930667619294509063698566949449847358622138599395967559586039899247246690579003641508834152601355004527383360857122732711002908601001400871141808224709339075259107700786328735321283350762479205117627911075723168566587987831642661762230565379954590534301937923634327191901538845136655612689184833261888153428664104993854161058974790155093527864395261700398897194543090192779560551702800379997723709979204913185345751781075243987037727988396390398327117413272548065047127458515979782568526288939071113055841701697183531343122421820465495644275130650438595719433033569965452321623752237216076361847296145238107341299107840653516670282080680440693552936932622528163872959232939988226256408163592201050167274139600650402163795497035785019082018766442690441904093885217715642295683601561027603793976622059936428792748750223371184847251672900183391625141149242425963715325150186491905709828954009804128272026303561889445638784405601681849587343606405335202483866016734261210389321925387589773585224830412128560543075015296991122659824751657930735879198421025104481326224837257596592186292547646136314679015806662451707527071976738875261905028536441505704652075686170996518692850877865876438170550090951240167574224742603895914818466127142901736089398626227978216636927010980134183733863182743520500770883502115215171325677256243084599615506319503540073035306418210931218206670415638874374978758598755931389387717743773594574900153131599132971957758017900419414752410597321894197760631231615982452456736893115213226683966861670121017077717700276931499365601592794251001558637318450684861881737896206146791972807550879125890995670778151526944471211741566291293999371007280806275798692688442161492296836251679688950459233273215943322146409439308500408081503822995225543694009690162420043067443633472045898186646017740004431748935669637966275317727991138691809999490857426390946504614437628043296885238577782386095565014440701675944452898807377401839480312993992170778349594924460816220882790415456289517046091847684686568155664914124282936092883662031573689440354533564791812777706218957582977158137952005845328353867361018511465634324319834765171411140556444751136634855361294780834354184099034667838993314175153747064458056913406788723943721210204583487546651365058410416460396985336268968856640410710634462560389341802657608950438235157549608458020378740064061129867500531155382665139193521023700311096567821062043294403515941436911628470964967867716603079467216149467615511402535983159750960083248623814322352927565725103290399837241986468048390169055626349805187331064780151114439228005264168540326592196914668653894817342548902850174461615469846555279944185830686128275009653520602787255602194323164055272144858995801112802865371327555515048920004815815978099213879076872763799402057674687265770902802533770802530916150403491704884537215848750183702535833347077012527464242160064967051570484823079078048807301317034132976052641535468529795994675857388151556610575938552751494422752904495428493637440356560994215706869353294892575602771155924055480140267001481855319267782232168950713212434494590637049538928795661617613066083057564229649319898908442754842486402847080556644146341855275614915768842739387894161951945576845112463578926008691182853957897401854916045151425934310672308639785068179873749364929242848570828401034191523937330923001869181695668929667441145872061136370274660940560496576651497727995778562860096984324195895148414112657848834969634455439199776995930644412784047386031087817126053389062531825611892729713331921246581354903197240463225058251036686717018671912184311162906326948408111031575866342046525528234542405819910350932706877222789139253641486713003811231043646057605946104658923084431102920289866130777403013379142579779580054674810049834796720013672354312473684197268065332053855977973964040504246505560610590377909919799028526697181312508180712829505171844743071848359928080679858455240776722943070224632268557435064614043749814076019327451591709242179275831288948953887839622080362034129524997819391026975118641818106404581643495393541250975282219315891519669486647482073293608378758396329719842587577413894863227707403743202006229660587352122574529970144591568817885545869660028230118339862770909570943655763605538538012839520639984043329433983458867148708130860168821181697396314863805595740636393336087706338308067300265708596450593531882353581183007889309588808443481856290078296067229221906906566199681812261565799429526624175883027629662673502315916638331500362369555081375326697041519292023328697093559329299006938420339827885063774624959230972890028820545203690812959011906379294990022782015489991556120512771850823983357960216473867682559587700190338717787252891152136055672642436254860556607011036030393243361697384061807442440742714421294473425856980021024846814390469113768503021632941826199582943852839821076958267382842481029411520391779904007252176143709837628232236973585911170432926684474032320921826427682623600909809669563434489747309877740758233796640593195134491167722222171344508432056070173229490771091296447057593382380521878489752594887203127773177730983359616247003853570148912143172431730152432548506912036707743035356232206397881877298170247338696489383166358070268035248691244804395290095155534327576688248935516381313626757301734486553321973916732460381746200834656883667013274554174564220807939404078546766330402681826698047286466831689052740422877221402220513773198078771525805341411883924331641323498527145172773916238189772800141925191708661548056527238766511898373162984493429909246703398037158582344171154592356049695372448929926081995046961605247253542288830184582773681901673862739482143037833478877464157548478646205101147023812146053155896222342885743529200830524729579611078650657597220469207562426875180658664294306928568089832107686534622684954356548836543850350740553416424289521248432779971130242424670458470795438820411666439076886804146859688655193872584207340601973375486101422330848866925191784109279673143032103268297747295623696884724110686314867433783492631635576726904044792128997758652627754240547754910239151604859985177907780687649329724913492663590428487466852235988282475219013096204733973505354140139565907874733975726034890930777740302669810683683602576788758266751740171930368051713973636237130002064374158116836310394877474211434477707881152329466450336625965086367835079471716198940662476303143706849537659891157758526461492916509817004064765582439287297727844903980480763928838322904996764106291607353197503673826852135246841785286569698070550561169691080883281832453993624008872501362601863840376079704229136413490393772763767049265529164164211904927007837695389640333875874744751767084674875825439695260684228404183145476590667851748915905005720630800999343132089811850719839681414206274764522896917642606395084628758334450656496902506879119325413708472562204593966183368729793705562357007248106347073882303452482754880908779872660575255636054067260107055824726450945613980591774187167520305186160463498217525989611426323001035255408515534726626227510571972733684867243114687537461586237679235810356138344066067761908881457371622910445857449350140984297769653256436579585972188896526300982440788048800416886723426609862207829595724147106005391588454190168847684327147309461185814335623473379006886834751351755296830384147956721686057907881938616699889642032203426664246346477339923031636099538064240434228299306813371355167396120949493844944792532054321399419380655441762697943911843954630236419619189153962319083451651492454860041927402821284217197783707797575491693985995229199153414392258087571496039071903651583477127387937407567292488952619468297400112148766751522536144937416833464533586974044610469024214922158694565002268325262498972278667266743233641321570712616106458063615069152745925127243419450533293964751130606920608803033583686962893755812284515972756724123083114835095216042338724789704447605207739555664240963803686091829256069978129937687082626099997668990463802309481911306437147628125443916115837886877717991769592263898719181785375036559239880886570176460824932190615916643766428689856848917039607704167004714344611040462989878120226887599760708233104765749404899279721871223766568326112840879154713268663544855507784648679749428944373557723321751148712165650961588554927439828742775821624943594817074836814028630022653314490738532230319727784274635353275523250400384518410894855975985686664813997154372408918349429023214980009759176081319601210729698269498936142306280294954148008820597577827796837703990002164012851204592895967685734858547158374336012192120677732984678957632042200244675719002204561693875401109037547897889864230719553833015650647107350105272154711315903449275119784969883739123053303726974802516307267570014567933439174034195999011561756735642190872611188548415618931232217158738693769852423297107570719844888733172968312501757309905080739433419033718882995130162732439603367144367242762754314408773920279476679227622771677656812903293291499228424442431722984900927433638152637933948458537469985796854783778085317283499542280662878893861830378545853193183482252276840861988286250615866560835567300326759212779842473182199129055183084990907141433325759949588226129491188055293650018668447397103648478376607669221566362967905355438212996750889265997469945824074739269332175400806508334418284748347158657026359891954369244168053897236483418562334621595376337252700997492679650680170947387568589400762697605290255063065667009085812553351575754351856913544250444124659760716216536944607658062066885233898598928475990852131114987980506908326881306630670861058482365884138279262480978409804054946967826234176359054344997379207934127848229148285201038244195608085302516582369804869306888508920235635444800177962492242878419245517371871964861044487146614072352061862165186862379983950617312688638060784688515316827040625417020608822218200013450598051767263514952046000935012761699059954187871453877365725495570801713135406715422588764500567813551634829055699141006346931168008879391849035386455902209354452958338334024145613746353331854764720342009717909557216905281045871706642774372565179589998161022477684110938581709920325448032830315574331057888437898330337718758008056800014363086193315574325469772341832894566582185047497260727497409085829777706250742594858138919889528818856871534484981084940292597319783579227872113554479215045088224987481748354987668376015294595444229201955772053517121836321110922682035188333343323540661295978245784170800450849701961655388345084562238669427735220968948329392881873224471045128301868991550561059687716449544451406312380283957650460596106299228118722844002266973429027681608562127529961772698258956756972092471464153322735499092554102443141300600972033063350444663861284368345076406237183477397085200921327373762443519814981717347768010540024489401153361884843027229295958092651593666038669004331828406159473609534886898674696407919633765130252336212152018252559594317460534667478685612616137384356944403791452443342936649866512307654941457837736042681623063923339248330838837512934034716963800335741598175487528487894024705114242213621303750967900264694420548987215250131549898099260650365799841509953229706418414366457469570693868088655601693874337278865378882964615514960595919872986613478712456923751561700375827858563652722696820057980628893569840551692674688620069663345480003408919262469804735207388974863815904584800595858617584017770535355992166318015110414679441288038284964745175415097206742274842705723543120935339824591823405641536290740702462776817807859165753187840818306374388728525718144374206665867390442036515058805390192845662678505314828920802388456497557995371544932772373145007731739625484653877448385331923656019119152990254648858504757633998428801354313172155198614926945047323644115671048893918700948620924455797974591979069703869122700637638502259266085475036287937643884008999071792436132610259647099312903439619489117202501745218497822955875658966087466275112431426827039609231799046209725831650069454780287170159259786349440785401353780420526722490779305219892373005803416435092264730744996307036437630976468963493842397977014459412349974294169985918383418471802874340960512992927707259355049606271003058890210532266186575555717272950268953929976965035271144082492556686084782063498111294031873045518137982950538415856155027595726432945105946665222885983680688044646920167576520696281682370844743275358422109371571158854518426354357220775896943721872506817269417377592211293646854844404202930827951146354938802492972471044034367150220381240214950889534646250893043394531471349867445421551947744729673962117195880143352419676783828683986793116143099645380144233219432140339970444548081772061636025849782070773257477589216834354411170518647648554353641454316981207465164935607214350836361613894834534338141474202681308287767444186022447188992023018803469713214544323495288721589295027140416488791062110965586938785053702796846957700369302858431985015410152650027697046599557514721479447980065829284314513480446142085328449142280229592369405120335715539564120853010699738522995197807821071479113026622359211459290507517927912097638893528666153221619522515474514169813320138587043756327719143769924094625130959091739784366627769169697215231400259687245501697264158588462510227945315339584187103413769550373301800660029738466932514465533138462868095874880643970315397861344227207819335365183800227176522341162507160938359576927955579852090472172175765092883428385138393485997792188060579036742722255678898107256795983129910572729452597994167348874308535554015902932308226125894308774762665642053024998039244997098316052857809939624211443326241575894414803530394446493345675335203475756680291546570820915889358280119117302376209800327488851623141282049830776561875152337448865681462761378427826763083757650990891101367936410926087218878363648853025713811033589213312772744468069664751580702589955873678414425661286605658950267126679812370584615937544531519155785085505514883289746948115568421888364062725654572147511607204785628492314797731879683617925428088641872428801340443991047462224510823197169490255881643001217212142126458927994667193367237058705183131795621364218681706799630709475589796971406718430884207185432416167797360258614979439095813682700676085753546058433949052536438622036380300183697419515158271379773059310270509216330552343621056545752914905572977321181215353325282542970352230261240451109317411964503125406074097275144024119889616141391364570498810776690620133651620916812319666635757431839762760764860239736793679027065031910685990925037003694173730038220723064606301720399929391402346173437121638669746874331660401235544355042962304102507106857406105484105039064723700920757612958099480645503465919559304980556956786207290941440181815863447846513605545188524843689596306357987992990509321651009880949684938238520156514427942446526675917900345985028806545883434446816144251545105620857834131881978895274706908628925937008696348519029343811059718532788453081830039871773693679072480807283090113153392509364289572686847528902632398716877506651378506542043116402957598591099854800275585860783382863301593032648920958364794380122694485169547099257886419236452441232122971609985528300867213431393327240234615244268346751440452265399267616867849869633112531137060842835523247629546317403456162825619715897030441607575585539084664820886501974238511115294448755444365140979382517353968561025021608268448853256611325707751251510531175512191219253535501416332277575758207118858589287962349065537952858537052404097315230997601523156015122117303573413272536683378792414470886733387674367751431437424588339963593428085381539362312257498292546201747885178619449676004725378623375608811093239619930557334098156115665713069629161862665269513631274917076734693669918137565138161772393291751750026082804659882263774746625479171418775711154861902238695687391825670468996846008948360523778226818766042389771589206559800818075624039682906063300469032469730428017064228018148103546089873035952083134380272444851099697022215537914693644853364164514074675042828254352338999459387499884120210296285210274305429321903938321736952531137642884243411781726669014495986204835468844527212065608405230577357593202554616025579625322708355872257419975714496292603278731621657492153750835823527150913171053112359396660147293076419073126889632669868660983438722480677841013252007299673368481768179602934261323684503410841238794445528424079369605752787149057721091128254257864024811756338579357717065041503865105774539468012199186483876442373166666796770564468834148977887542457143339539962271601641096923359223071752640786372572798366884649753748238694580275264653734373071829643725088253228576122510512444081976685429819929974754544002861471917181100713413386579213240361406211822601715396984368231357756178710319501602096018418042064822969872764603811753534588593982788105484780813324238330849230677457593814442941303715249818274713865313229976034106880871834402493364609658013747115288560078088151449187167072586306078328867356907418053614088799800007748168575178644985182025276306435794640111798399025828169119761140988087184165959230166465173045069519003571497514190265248938161882126288103029646326260731824767537039655097450541802803102520929346551213254311095863419876662700960617341954760688333760568458787113146944784521848616446027991759801936678876123896676711033596534275546565579478544834927235566604990607181105103581750594431644776405973763722802568152742907769721402421754242569447944880048461470207018127895763017192608084784939507257881764221143698384066192983535697781485400908296703144132066746038524021564342046977107913119165082272409854295012737253389632351756236058764677272820217067349566296660239476144297505770102704751332330902123425929483700392768097711137749935122191797003295829854914469524214661468325658419242937115810012102179366187950929791706547060305094409924208356332948658905181686616623580933521977945194977677642692779267905422946251320770018769619842111608689478428994923722278429007352579589484862139194475902307932546412413074486070330008343242681903286633767963250197401551118488030499495127672762406151284079697428293363642735895245026887203652147505908456800907004438590451694118634212452172598415063359819947443201484147285262031234221521282646718376517370988262218975929926096993940784099719761495716314944723014463742946091126130644769373086770335027445878096539250600650754521662652260353041692544020102567074849741631791232388561770127093657227073784767756216833762275174632394069303456555975831271365540003000439970359761622627766508226981641312304466751683660588643828821504843157845976664397826434430691721913206020612939226336731145745847815950778250837184173548084074074280605229652136244922984442166456046005090918668845664729436928598127906760460982776691206902358497176669048859738970508912866012190875948519637838180546987409563537097456362491929357543134332282503019625040761237113014406154426648018529193687942089987599697395896039058120444147356360593280072345216178056829723766193513546754853392428837432268585397926846772462017361253627583599871346937601642608582065950842307583059927091843663159987738043340745497710751451939882557139718097734804469774739967877074899725323329175576110421835376050560723994609696231528019907249641137420942168693771107178641746238443282691766117616159843928217902183703373206758569953278618108753979688063446237855881427586654542035176003096275353438064273584389024577821589849359161871554668606950640497019702757347296772227269559841998516996171769878291288514961160531117277739590663323270947454744063513237051609913523647850099604109597399938912070637829815590033408779575097982734098572084292917500276014696469744261667621695408883852222818670020243892536945112963589586237329771433100231669909380176523932473759952346452636355689666682232554878102090689669380582900468495125919458487143820614969567465041783073049411192863106444183165758516740498980447243667368654230256672123981733996252123896692217322521555856262723572361033897721322442780126373899633833766592766355102406264564163796284419321280475747405032607369647190804830653901693482807074147295858346801696024924286532882590594850043790678897370547157384729402835925702263351150640711326510703985785629862282417354963902653971677310917403486160405163027471244966972792750552442719215900602166596086815730896477848120087735547731218783428362933908659335609090954796302163366365787864003667964187577470330723325131211717013718728171259783555270032625836699923373789202804742972010089394169797242046452726887651860360041360154435308476690875635379797949793807641828539035266407782002281098839390196197865106695948391080877882240567700139642583998285276807165403951938638650206000247310738382538791407898860969131792638077352157892216195706271134119664205409123381975082161256590839409501919513980045856130413412127123253477391933254562743511098762158903005518802905044555264755105609831270765927228618556702294090166674495913097640330687351590270756295505142431062251697620379706435189082340922953802014097572822270627746567755765871912676446406316491867966400376998808253227885062689893973512381396488270852732308326174490093338766848148865977677326279542369251778598269016942532716997549622946290329704718553056201922272312496704464785052422451980627336718084253168212562326662906994996849778389616835570407078568936735702557645637276506739188336060445222842577531882743468780567112263972086743012873998061605033453371975998743077630885723232296764955103914350503206473911229890938396862877413705700163074154556087783469202550798479507037109411378846586583424402786876676288980155065129383357419919334288529458646371727749975016088190180073565119142224946449477091856055456548927999982256147727849978370775220427356231722901009511185033408964124785036179678230144200070297335125827152554209259894380432054618162348741353946248995928835405869119529722979433178963069857764989416427535762493699768539608447686362578127726810354585386036515910357932613034685841863737777879815041352455554769612456014891616121931189113619047717498408816133405730836995226001880753567828765474585941678328884906689654816145272600921620388829647947974096682246811748484301287843606355796998500532467658782825315468795679928289787011292238235349698527343902529695850725444461350001796162509990082741197187780382582328424558983693383815415254496142295795787914505190114711733263713672144715816181982745096909461234600857530723256223647566223163877733782282147691730637643029384229994655459572792980908516915377279539422760092748211224756268288649977521134835042573125980819782008461198450089748075046880813416339570560571415619776442755090818264278261549562029128159193061718848237102482819298985754881285737272604903848368645787172424334244784283933288183215911385469527811392348400668702987891491229315926475680152264405806819144731231527211810101303036973762621066698499408297414723503852839670288216419952321964026784487940885151894319126192046393991189252431888726501541172462090893867695620600092556245940882574862229110443862179676286819474314386842945570776549316862399949861178057794887409666840256283729710080505974516061266097456874421854123917478172071075718896968992375360180551398244258607148246831735357320856647444381174448471363261638326889800770509623344492635217158271744898716540335315479359804487244207572308850384303051550134414074771448717652840620103268075047475541389182478477503168217242104158536043801313512260269845764321887412363522002574600484107729955006830036834607286872970905332756132006032535309062919171325385892764482858570066962181570953608572418770193165261268218136226935095985422575472443674942325583755173836440390250479879594878180030069816629723283619285104945949369297661473860279603103427872451539918559474878899428702262397096265911630438525426755913363381799269461182861773847444808093004187203691398047386388888116983359620360245365966072831745577322308795119583626677806561941153367296060099595495850366541041507374780151503070203549820718309393377675613056582773770160571014328519206578751662063144181524683360641325890534663033296998448264703458747744410175761721398004147633135681477023408278925180083243357223182920924342330489481871802326350372052859623437297736896343879241193852941960897666374057801024086253548467345032246675269982902539536405987518717880340359653524271541691477471579678269766472886044220149641804414440420204738188068916832220640512798306016340449795462836572201770317897055205698975082501324944781920834822072114891954357503666028282387139925819104989190620741909391848461621029312531831232239683377720148724092149285737337809530018583720927251711803069652607322582305351584161394958407683352305663290278797401555805658150100569312065431982471783384867456444438102740383135683749108187273723799980122466274642269210173059213329964985071357623638093847547917822180129786112238341841375990479713920487745609574857927620625223609789493099264013103088516296759372280890202492725175848846016307711777041703558979695416266080643514122677954687453852517353184142808757738075973713128944744691930743440893849049486217005949426116342423701507775114521410774088510981995734175227363535635936491066751046121554381265682278409403244704555757179376440653483554198344750516498708722448363982448444422689863078105855086866946364717861453705274211705862764358555280067375342094748372894771131222217896217736786486268445201035675404732964825426295816708349626359050680396772752054528615286664332093227892425487241570028254937314948677184953442148259942822204104575028527690244168893916412028810879385597613700139780896982646872443604650842317133815009913141204647624514398267054754729013088590220700399794632809679741265343458614672022895304109724641982139101409945056071527532590031616369028819096200924102005908309248024338948971099346135971012362433496335666088184623929031438129811816926550317115151110890715621575413790494318777872486650095736284636631821545872654028299083043027275267095252703180271121496696324466064039228551862341809441848753426916304385535796530480623020534282248760758615349093789847376094841801770735185053773286687519241168163756296534410099794057876093259036938454066836514551745397328730885435371479179771583074910836087730572912670456907864498982060046057941574383275897149877073440838124217467397504705181338161705766594078916808444168294657083565923441120849803205071939093238643416996170122014133147553559755242857890087112855538192542393256796773341287635792833127715121762339299488502176464720123237314653153616774298739801436808919342975090068116728033966717659549918691470624129890006152719560090142921168508881781259185469562450784852611094024182549156970222673905972869014498218517767835586586387595434858006919802532411682025473017895240173297080308660143205648868435865637430655224957852137730443132578234453109149278266704801376163509776147573338415706149837913897820616816653626728990523552093046602359976460396480888696286373671639569915480904398207689617795030592994463817942445198471005314066349594356623762158590641672329826867258547916929941004165123386909499497805216968153842116915198517238087834773736720505364132372943115520861471478941688072979296902232004150039234226768027205956365835164394661324807969761854368866729029320611296394538571053586370240426699715781950734810268768956488071324918058137061081528878827108854457039144039928544367839163940135310144032695744549120656659722207386392715395900682727627501469683818621617616497576619985528938675060526605307876234073092428643216909188798650406509332370220122121760272485139200043178540816859338252577598719531135869616898489521844130082998814106419655469182610075119407899235886060814497970087886617260458357259484447513373773243997462748110017217598431274408251420284744766762324999118516017979643367818712172986266233620105550317819483442721606744075303851224883406598340823604957149751130528994126819934135237900152254140591870952339471307559126827691584473398133381510199824195989580012280012853806131878390395920789623170560971856482763423145475315278362617806593757739481536440255803670234360023366609458178751312729455680491165307118946511303961772300646407558852172379866814371993637742320480749990382066250718589856508214947464173032208428246312986768545563833391992130839523500085399852474786544168869118535266568690456872990682341929716030926823144001019188620595463343499935286275576929172219591464886463128421978655979697308011283132338521623488452496907985828329178366900209430050943581462051315849487921642118659833778792215482560544896643614052217110410735935239531200922336972592885101550711729596165088561529356377946870576840168167436488865380159435218527185389938675858421428876196211571397159894816547639733726482129946793463294261206693610352869509578920424049057914447119574654149802152142604740791587514396750101958650209692779342344785038632499948295961664074339544810594319100527983405008854856166098398778923638207103319936043154202836320226924893614316730742598452306200149986195081037595523835594807694553094627600029945644901234641956268928180121019066398871671243070626061079208073976245740397288945368418072598654609101030979406621395030554964160527766703975351924931028239331628352777076136936173490554832469923819771216725129613536622829066101267466526878957521074803430303828838059852784150817958304199494860602810092338671283309849832652092884539538623681684135130778552249135915058098973681716970630510187298930178738152392074125197427863104963999010651208441713969969389062876585291630486802781181075142279086612086284132334120183099832090384655465686388231721248758148028662366077822644549291507565913526436062765078749313234726429633567111717225332552925924340042245637005330807990029695421419651739996144545038348827201849633746053513959890849218016906515632777279873516050792277954457176687329643010872329977739330280992328508301464465835919148928600987642039202874628072288672778174524275205030983032577232494237086133547789703140152100167518019567757520696628774594278909834020134214035786791618956054447113317595755011360414356069482750538488605889817606380824352782576289406242064552558990922974872251856261694143247486769492651489035701447100808262407420042454533143927147197243209009417093969262704107267059937601172058972173939192445611576558318914141500103999040871345257301718372033645792545034495314589662887792852966072277210931004184977863511013414388337695633863814481589237921690756279109210748868674169701688307485108308037946433598855116958406580009090066394699094466430204410774651712131072999988047262332504621992573566715550072322118659409378628654756383598173805220913324493362187724528729510926059101401129722103184745213305248298581133110003421677130320981644660593993151876209999078428436013682308037597012626514289778546342538433433976480432178737844897902397554460369451050137501409438445651590730004041521711568005827083416960242165579104720012096299009332525219629168598653343513232361201438988042114626585278735555574158827242207772517989870708910327298380970925051745380302163243789536694505839662483407463913063170540960145112661112804661879454997633061806332347381952264438239308044575586627626832771541931921583639439471442417988881353376589368571819439521338790220886227089229800353143815830658653269687476110910089305462672661738909433069794116017146912911333074063667719534368416043012952555168122035805948760544417145526568680078071589213846826188200317344595719857621512794649829093892549627719894836016371553007807923617137157265151709655596039621660252841461644348285520900027194183004133133459613811710632602629888556708623537824477571115476639566868096776659940754062888310541679814024244467331453828825320157327984712437746086105678544986920372402386733860529152191236674071254460788641036443272124529301247944213033048498134051361426175116137501344701910737520154312442981034202045712682041101657375349704741194707227468253211671920947821891133675946163819454652781867962359538245326613059129851513404666287800346066633042187126681419362803358929035703359692494845998837349972358992669840592465192342122591968568329176168952425997353813590963676790233471393755301353170204410649355631950462347210418063607650651606656037342112274704192266120198002407546701086695245239424058082130951483406997019005041565927069838402092882693365805266748194404761630152794095437710437609661662054200126124300589125283306555538236294148728787639754449948919247756857960090423300132341615451656371492697781602694898797520640368107522183628225232222972185652283970437725971108837657028159247570872122456375040181338457927878146223257352337928988692056901928039393644817720224413810385209502587589916721275872925730808124340405330582028984480665754178220510124871074163207393928135705032659256550869719887194650194193677100696053386218587566985157805403743847691188186537454348733627185647896603873958000870492285663658319357502545627484614500264124014683866949848518247578269243531923266589205211585647971726225944016288935910784324482537601982655080320843553558099403154102588026614570410273587289449518983484005474527485205186420354627003972763147941593302136722300059945750098345003106096094582054918817928065879399797505496971977419521477402298217845904632449642197365726191477606952320585056757065866127773491934896955855894943239400861950929918218740441546226301375992079872458920562340279786048652312205367917878284755574789168475910329276437125929416539496642345419414486153749546213114251166762634138330724061608127544805388988699983759461533806861122771675414429967750708780210471314856180903629816421836258611190975414334695727052712186966578605723141405311636490946092448510298156148153254170627501757248191247239700818560170300954259888064495060927987634209308790349446969031064667597096301099085142049086585713966534559614406432889325080483477175538333234863127370242324561971929152643197699107466927243651057046522122630690337860638901986739241437002691114714762475751314496367337506968768296769674893211043305243800389645264447156830652512265321845880328846565024745764476260284136740584042406487483627258155914812876567364260640520515800592273072533375674662826424744034108870866136740840422915789115862074940912743839003832280104481889127732986458926768072296834341531867577697469149873878139465413233673149271404146512800351680459573025825761955783719170136864582982067745999904113852597142967311981894202923924531269101368761662696006624492446484988327799948133352764297110655507031358810963806086064745379118961068848768666893299141580525141991514262854405030246043663436127539092831167174808576506621377385287438422143584495856369278743665816584819029823696368993856715133273013755990509881313739268319406610707863130327617630825350658756038226403004220017088128911046002623972919869160121973047749546792640265670884136135336742831449325877395433116607820903098864772293496927410334810843187704777609126522375736733168332228071722280699959823146359475200038485523210264611502933734271612993280844054828447365640179002811971387842264223877823011466793646571713846746231128721488617528081107059187700455021742946546198169068635883634539897786845566176171357971277264526078133081087654120248457302308266197758397652809767573415682891656572619015539353903741226432454745043412809636250214986626411419996217622397337729684366099434507824318378146023329914267548579471265814192848053607251837204761575682254570504066443372781954751013284104641869673598129401765641654632790143446297538460498956334731476671338108259117286253216546746633710569823343813354698061683025341982624385293023662506350932451114195812005316385333080746689110630833272173075129267823206894395582390527294636113903371883880438905697919144973695905201050402518838408111303222098121441620033414631613424080400951964751424467759415736259346382769799603067301332960798296510029711290395638949520901690221848891961352647142126019411082239708894096089574373681840389588947190637145895039805674831806103421910387462950445794886859389238344577891819941545742548298774983614854560350914281365012462957344983759266452555017783250889766752814422073529694487221947320331043577143453772270774616809273710033823407776308919061804542329444853272044078704899386713580422746744013362054099138529669177403941830501375975671031481258156266664035405720634083952732038993687349012236665458599608441592711739671293614532476502528722390631870581875980914364642765957677072139429282398703219631982160555337644609894512406455993518236543029558793827256828101748881061170347774231222868386787404729136057398668835441448421461572966434866858739372108709532307849402838573468926277810569663918964560530370764389447688244838446727383354786966493066360251570079934177536578077738008510421861113918679861385093213797168365497597947727444823270944533209895262344153178499837490765129010754761321385638892908372442201459025672268464329586157114188525779033387776679842749170470123101384959848333400951286808174212355179524622908664111878367705170862490992929429346378849037171757034835569317687394031182263424295774233486160291924090819762919260348333610084552307707111411669423249424954452022363504093497047864760403125538231719828982209967888735471986339494039350263742657366762782115665344087032357514056577133033324384473453128152084306812700387302310508193626814960696333929475090790343135656629691720836912174790949203064076176495074271299247182018016145552538491959907578337354904117936466107001108061521585003649373406479339178406680756055034295546505812263793346698505713541728974389136401703421655024115282621508347603002822924237166818684141468110243228013148081960817370935645595168988612096394576288739254565815880261089376997931732075133953230826611065645832441026204242284649247194960525097679801394927132672131970929822271995406788041988307531067005416244583793381675986015817041482066732490869035247475379595042512428507577082686135792248065283773385542481393941704481388340220166287411971299384117178844896777566562520005893497969143011369872815144664802602894880855752604838831942149143902133373892095302009418726368521029992496139958500994709058883195095798703546491969861403403571850952226960812600857386719857210863096890664677858169676288704040591507343797205992462004093949043372257922806534208884806251956653150293841200107889010381936064882535722610192850808097777145560886638387965611164938867951654973500456955980175139555955430596538592296183081484492788144802877443228834666055120196742541439402833064718804218621131125270952720975464249244514727805440227131259865288174344367276681177699528937088741387889666610006585024572119267624189998619901929622555941700969294245738418304151331525648923786442748529787690005490197217565978151150639701626516262391045659809723666891589514489570123661861571695800265413399074655941906921495013141378646707737373986863216738151094711495843950049508925973823660091156952138741862553023080707467554021873170472651288223800715218571106843712763894430625459078511069875583771989850670052587189047602558434589003365641324870399048406771849277133927423200538408573865840958400926253771281804409848781176134079824047611600172114968453069499163022715052878404718872267815375077257577404221961522499638400763688338636506088130090529061128340799924283801679343865743635335972342464571651669383630043068119513526975361962109626073345059754469123391020949174209295546111132157709163966291069759705594566873715478278169697522907408114226258692881994616316318942176782396773640304047736391510859970744906705170971165859132339894048825914952088532169935405185286245664702298153289042644503993000062009126873130896901135187969929005269400236827261054550825110932210744996549049476689695618607023417263239350710128552048892814340774930264243865998466390477744193541516373615538550461574959952196361038856166107157615633232623368140500290064517874258910711284531920289181341008702428924763943833268437030619835243425156709409084965639174875450565824184886100586962932682264534546167088346337910183376943590319398890282405265788558946248903369275349677986301501454435428678790970595670847422608399643384032830193036747641215383615972777432957614577938542047625586486970825785121706974295971425329081829100161836329394597433004966026909383274351200055749625203195183328840147623168692177506716035272396313563938394102293528108828712729072102615286827145227954798816788381210229022568274236885282942337708437087501788376169016216307838731253649414060443616181463598005071561982943080860562227574878265320985347182877673538580763819529402760883174557272844779843778206084263946715382683731270354288588126093327918475036647310118282330567504495244717544670557514825645604142549714044473904191325168082353203355326305358840658748546007167709496058508386009332237719182191570383987201210854095994859041515965003517898553824596865282695834093638134633435333176416579624322129866129475713651943988821422942905981313226968607996353990526085717298459575018602366037963074545953782692500249927683414874030215481090063019810589413549685903816209375208923213623944843533149205792934274718696181338738106301348923499714112929217922112569604580467965602321118064242932991342839495761244550828543228587826851237353026210899585322980557135369440292471401080845231350305764791147431733335108465919780731572820444106789512073493044686656410073437191910325678254533638967491847751630275634742466784067365002538107869960715887456603752818996601461599843251329269790011077965539625937300976601518130238540443915569149772345750374774428666879067500260750562619515954180778446481721517748720395516364284929372814491762385459400889221153661885864213882204985085152188734844407985518559833344062488599603547001065711748397925271459680319788743854473990254392907071080728944119638032713382014103115957242598652109685847968904459579522453800866339169839967983937312267977819060863281704737885579813640552700573659459639673214555780346411373569397233241756855705444204403758639693654355934272507928054208969232275048339405568528801372011082907589975275019440344867176994509382481804129258944939016872787348518726697915103324860408580545283063212803198653842890844208823783504930393552736120034078098273912619510286427665882189771337968682559444169875148066590398708246128775410079053330088490994767856443310773023597264446335574522028315803348056397376522306456415419137254125896722085936733175392419062943514908846928536320640180540191714130977663847319160797174167540919857350646394680299588139693243535405095641923257512887152024247554388549152822029444717661258805130216985566522758768864823772544403576400965651689807090456268678855471030292460827906037566355989107039196516784718814386278741631350651989197725059918134374988688007453817922514484923345622114848181204949673106980779793180748296267409553460513491098612536381722562098307318889193340943703332304833149809544098527552459345730479407243573115314023606791741076857794284859066046883003953172858819352930147008599515652025264052526911071901638910329276940278313085801298812196058480633563194435270869497571636223406838535124450775969583173742108771729961557751943640405783343915022582208903156169556526344371871253323066493730285839648155710218432363024263575942759033451038622567518178793490101242495701439852315230246106947327769337458116348093748186210789296367565505398158591384200899850091447202049836966358132721355038999936122174555367771748370342409541496321248975947368739029663022212687251723375584700713209534091469014571272164373174937448382529676927111487779921891540462720668410158817366006579165860260491430635129452851998897437045137433998907308571159858949457188687638724879134324839184398485412482853272187897831694667222399911986023755449443037126755631492374247221469853137785317985385906411999799189165847305464784453665616967875617721855183251654922953171569599972100700953496766953388925555018468518157149702464396801450763794821658993553610819456735702522867589662071816347157007378927476214223322805520219180550847479305059949423036614775874388706233880193652624427354125219163360707592884456696653007158679906798637443082271411141679764689069322546635624268654843633183063958732885810416032627999373566422198405471225920818051445334140051887040402406210959090803139778935599046334868604120899021973171187345593502016995783016528632097251018312068011023219216374023639406867511492006630512006772465534620834461134371792678353676796134671352231074178903504535772947931092017181249496721214003258188229548611998030756197802190607932633968486388127006820162738927938721506071105727290013343482535320044393975084050032629734055105418927697400491731949848939152281176567128356551038735359545499257218047040324204711381873558844091760483396577171908967713073010022099577985003093044489295312158861541130001246118621499530346937533840064244307910438360039508998191462146399905619446099414226315855167814661428250717719187000138938890370766890740365742346260844555843257407018536770935349152124790297951290075026907121549742520935647021459391760193181758063415717271057924985328193377444938928148596401840724927774102380594852054961917274411241564354591740862780532192695374436339935103604981023518535151176996086948481850850967724622263256713300164089212946329091581497093301870034011318251518776764881198172579145378308547011132240516758331004766099170887251685959259937484880039771900897982771153201561353502275852676595383835214778174524422443080865141709325614581073479695199992066267788612463140426921266030012959559379013576649957346691805126294216002167171609596305257719916502267917820517440473289819888522231878766392984541589437080068394777613766758144350727265227934404026011377916383732149093532208293903251048204679906047183399039686467398844734957727480237826128197132520073937467659397127363006167969795331280001328819688777158091277103150732458903260585845656840384747738631832503067532283790790955214258951373491693020917306629077439377138557903497185705040836462864354163927633716135206670210734644414435112465225404232708929623867511216197865154648074475142675696997396324741412651306123310752040310679008773513647064627134073846791626217281186721649426147790122588614835820835842746234102126649113707158696469811894308570726448703158155691074831531385230503919829303223375922739121381327486614951864374565821696747488745698318223569197256935303024340153422458760956544414800953164859564849639790157124560311173342469045628531014555139127325107306959716060023631666962393512214066098067319160593523619403822244222957988167941831560256985202103392229074136192702145776626307743279639289832726762890703157306395798815335928810310369913810077545340489580114232524039187916221891878908450640013129376464897037105513216617812110665844883745735290403654625644147002108427993703455242229579896648971806608887658787689488204963024913926521796307087830895302105058486467241772597034748334802164785423759865370460497412457022946430182702988724396293398599555192339017815586799629381441194978919332100968684542150985084968137688103866389698196770960001083116567552894916525929444563071084322257872550599080813375265784872123118283468441712246619577491585217362903151502054086832621276470280020821752947591962677877500211188605870120155134583714551080424506261704941352757281078830317958638198792993215475249325365785364376688117221587532496962759339983892727874855784131997239719162693581766343103758330435503294653062800512122917959769430122716209388507266766909866405589301577108405493871357917958482419756213294323949470406793657055342461860069496601271586929937767935512069051489393995355875925374592348164962991770856879077307049324598716402807851344303804069090099379155922984497164068759690881079286507950168664663586886647705716680768605575508911870556379826611355039579870581805949646618062855817444839269133396100302567395032220179166325054620214196866625210572012217991671883227268488232177895256411463048163193558838589918700603000000110558527513714188353398774011047817632577311168735477566283843926432440635704018465325624867973176478748238230323662072047875913033368365095478242584270791967791366458842747660390295969833450150565872965558256712788167992284766931546719475147987741077791987276183329922355876210418415333141363135809095583126525935567117784201361322787598241939239228942892738287933460941905839430972752418714861157500399987984174210192803234051163765083607173344073112040296690898987646424315279235682228010729559002400881138279089129270837409634876502546243178983959357392514346281683213822812091673272692266481125610408862701389162211327297827606311312390326126748573131345180936778101551138243158365697098027406873512167359596885020112358886770613518838350756363176297675954465882108743042234509194147975318158062848490769180875588202064060410065967166025568490925764613292338560751897643028582538568402626328524610353733876355118134720856758820691089354868924033110640697571427488170343552042075066110834210265989229684455508446761174236988052308827596693976194730314916347383722556839123891443824225217531222844361327993793328240240111475710383070179036707228807502938131077388753062241706508435238940518352735077871185564045893575761477401877938082291633704166337726685453383386323893910749232751998392280226763580246438250021004335669358340610390377783162938244531759104062103344351342052272686265644313831088066209178019153681967186750586231536790636119342440158715393259154868261341594247088396233115540469829089264266984680188912157459939823224516701400279536072369225074703481571369728609478987267311506923098678196566191566562637696604357927046689221714713502227913871993004609744524936240408912105482947468023605296501935979697629554848591688638027485532009287307235850169826874501231191799473964961649526957778763322170694547819678230659526316326356967805040224042021497875916961825519410153681934625595875152037085249145617247698105413628926506438694535063090225270573796680580311896381253122118088219546849276594366315517843024209741337657913170524892040553368239337855996007309983826469683792685292237605807828136026261416078003562664788124391288971968241735367753877408078592815549009108781014112842324678515931571228457136699694125188537490266101169672095778031066639916372785680627857421084227013759378262261396414575789473599456151913199019453232409630239771257809446559068924016529795352972321420151492124087596445809354504802966764420119811341620313694508385779563787211148055710734858072686165422735878674068968433820543656195034982661022897610361386445527837121658798476611809432314433201874173814907069456083231202548856993295009578435644087247019538041998569567713573165713265573027523893833818843235532100803906299867045235749975454693273736463088276841956382026007929926573280822760069636409992849267217069755442377550233083556326394567664089378228721539646543395615650090712093795223954728941839653860547115419095784193490824575521894963434184466339572030391828404454235002793938465729827529163493012877174707495308057744186122800808519103454203822352456928635018672658130710694672408265598010026390293420437944224681399630888319022029921827922183146339056107966972235093947634652029851124259851989199629980374246357689853949932750306649468905279237488329017394147285200497128783257009298359201072422853230461996812371534073466628318709464108217065313902270433673379221265536803809582572127138179468298498137192469624232213226851100831288055394266286841438744128601767114424285991119987954279097737387092364921217059805639665496202328751560103957949687855534122369408597051106780059241523081258258941360738107990408728255756617401041578404014652185890260178380783698762264377033648966239998859936284828359052719135934383315470504922366668271907697380840551655897740773273061381632435987657675301031155747886608891288124085902855801940018974017849712611491487748202626696135792433639327221652090872809357862303320462331260625684779837455233817740847373082648252792155786319115966850676193859330487210758372732869098017935510258755293974665806202183953835728591053962821566662903646106964905876092627204437396648238767978069773827620237360497525718524367223398944008514621376328918393585853637402648081667871487107158591938069980412308562869431919065541100977851971868227130428888319354810935187285782381989216400612212165133731829591088225897735284470010703838935826930381951547944249241666678724755497056485593721328458596001161974456590537523394710833144150055681665837335386901190718179753833304346162125491155425437467950254073133464390050787728749328147126934322257343748461887698910711223175353177372465014195898636147150646918164417083047130423225846159242487859320321793995853081251300719690297262318740345714510109976234759187755360389209140245123822509166786002934945621566084108270988901039157135780249906472747449756381552472875493885223773854503230618312073620362921395563909444567725181610852490886560908629113507598708703715657874482643865043205445986107654093013059909536147975330960755241498811076996859481939813566212083346820953166547779190270445301986862898636584572243623579026546552987967024505412929416791388691613680704376018734578071958881955028413212400785109197892430113696564615619304589374834625044610889009894914268902632557513818132267025150705364644380580647171033624885768946036840197876172604536150727694008711962661673332882161821269880019049276316551684271471897489526753275421189728659613242664813547046295141070144240373262669609332312422468829824174731381639218331613371593993912440532433703821127685734938446450328663495191457226151457395497296698823538731237397613260009711212974174955457824246714977908547707253000678786511261414841182932762106285283427174485292192644844213756644824319424682601318565348131918620243562489177962829855661392723704078298045495724876313922719790924112378886484570059884365466722904019994767053810305797425362174709603522311556778626785335298388015137021838644882774067063636529845679864413415213251878419834128974242076830245782223711713947647183712507015432988557076952276548912516972435514787937700881000146774856598309579114214889891088878390775415192405553407432487023937209022721073169543951284972722210750394575101890478990608955491183991818875011742938334505736537901918642616406353537717927952526538153646402040069421939551467485836461182038658056496318542595262116144855295984875840391775006220473168442297519086398104604721645591732763763734129460749260669973817093416964348674812472094436542058044933955728751760936665923571239264655627891779570953569163787373630305087760278682087101711619459949118465166882542655091778938054032452262270792366657846409795197894497039976565703912873122169984379274044463579042359717677183680450751317311663680271180291117321235007219017953203182917499464971810175561053763015379155547570566225837165625358634086245354123170466927059541282448980236830014209720616462054998225791373625746883374971406938850536236925400131130476352072090573261712933345476749500736555034795190915643019553572581023799267977735720721778297498240759809928235157864098454641294180089848483658400153928023666942676037004276652649880365561551767848008005973759944690696763841382074294017138669342516141239327926860674848141731928184890474843174462441525246335589290029606924184503190284649481218248988950118386173906786222814446406950743809378041167814036740661746465870770727347596380397254953559578909913790860940459087758938792905963223133775479349526559012823807952613425403742364562216123188578358491922096188217991304547921719060309425560808297207379073561759467188298302912879302682611673112685474561720573339283741331147708305382912274744388163705923904908390006124919093050299013694583221728670245276901498352338597761465973522595579715751357609348272694515605430808094219569416920617395755411969315913140742174244863145113547327466751359168002689233428839899149596252850340298923936973499518257753855925889759730547569906409272892779163465526102543489648088733473333717374977520402633800620661284406163050786143926834735530577987518107158691819391430629231577976345112449680136092540397893006856223891286781681934491681857563060768831979299858672022925059239374549073420541555047319249412942659973855738677108362633812755319965433126781184015132518471396703826851703654821359676007751184649516570510362403770737090885669291462113384107506672380244440411538832023008809510517605250610930700416795574036583960873624559387851847297131272221736579526991717546285900055944371176222539023522940950160511104797103410531376733362398143437523813808988248181208343635787769091336404296774899017881681402360618893395866190445047212694805634115311986734665165137922444994135674865020314579735746539645295979154120213706146775543552882991911802547800234103905680604496481758359225446770304816187944424536144566173401807782458489149037903845155843989768053257753236439560784375362298184346058491490268531533251514559154834524639849411311901335316603373970942315836845111522591528125576312492443033929795763698575370382488878933381598559913677700505309726927046841798000778977746116970023528591039258425825005339910469011624441334150046225448004309644274093362197943087054175223448429986327165445900484927561349767088568803866930937846345613951298465409426017091050490321957619311546142664056196840826732969916044673267870375274717054741022717662291922680647940228728250073014987745568737808564470664826908538100748163390742716991553005721059094839958531413473334034780809469155802376988324940359258658818951525752094071356341817816582186356747362902915528249758573166345062697117412480031814618346711864683759127168119549062137890793529657693097321846726162367848958842463706894772209259727685654692673543874585026659236844055825018792086738908329615970566992946607489292350431552348744161342840083768330701981860106481324862549706257136817315160867591061572724086331106362474423668107192462453082933673144329210987657308999337925562031208955057560220611764696365938827149465204602393410248022931337611898977701781659566486173609596610917295685874798937945022184886888520662633625329676643915329116175404008631084707142238431932298963284192270174757987276706148423242022051622924567910789898189188660604553539873941204528178096212998643636500904669561849325674782693181598632758593081170650244125228886862154541564314002298380594725581182553937058418490629722182991659547461176952445134420235003420419786633390100271779757601083788196492854126477838202712920355797374515168491863348544673027381597817335082666381990109602497996713097466881143052333082660597462166320142978867633020858465116283427547571528188688324583536586403516388654165055221561426715559179607482858229589258876420872630553605380832293591577458112904730613582005212848834248696732263488732700204844086923423171881764945890310723977924920954138845811851316839723331395301617694008507018591238022886777106804785219493748180420711786347333982654789724736287549901331237960139805798543042183961189618285507572114066598257194215062814100490947934646093234282579815791959961433186369615918681366018076131505997414832384997736895428375105080877290979722369404719599064593793406933310868484656048965665848808448316056774637883777593079221187360408999460547782195719525748172182723906766558632846026535982857238844350959678146848228865377887739381663642095927422488134094013156880094930357021378930051150093889792544025372872847988840027104435449262416885817626536375979234775059270081561889851251860465998912991160910511941806711143455598364469564746342235501617480492216897980105833242306822388920942805333328709453783718154783817496427029505566060070009343500001459103861478565875670097997351245619166148550273016006558849309720805535244931036448013908722434908468605222255549196938583356773051951652134197341702702725981558954563597305483374837908120796699420361544833784939737033794371480275511870887816210072349280902394745092129191868422580263081327973529061884893741593102996905097957578984117866578627615895419216518306595090546003160104261983552393481106795096550963866071760225526624873374792386823469518014748300743342174194318111439798646646011661458181921253872879010957681817894196549947629831397582718451301313629982015810038638170835296468979298268249300829934496454299205822313406954935148337344509690762833779916774575792063525333976133829882517190679249159861619317370285188804785224938900740802952247683819338335139627823071425934694808043467607750086544610874769972058851832373340061841324175572460564221609563338720645087582717596497955329789334136415081363977767892629292684702264984382972611762513487738939968915462569786937990099284424977221625643400637364249418297384903894442457618201753162418216689465951031018370234472233350822007208189633816561081574635968797032162972483854138052405045344370283553497120816147855326854420453930412162202474861554973546923734951328009294654902056599194162190744243490693395875924305464272711754893545745885350536120105906911583658651378419997279710361617221967836887245724853088139313776161879660230475364066585345186628497496699886307062782384059897343345538430014870888674995983858990585046334499303283153428401873977174816295970113930909732161196540929237098517818387209162080386979875276982806207019545832804195867673379000103905766245681343104554357038043919372578014916673633527670552488794696787399281285249918808741613083131005786870332635274717256840482158779677811644147849678745387227283568357748106795918676763485720409996383746110668919018506948515319788575602364014293414166780847836885963409562297492684972932131802006386633637375979613885417554115386191591084498225055544947113264731871576192530365644548955290566342198803499743076700251985165645355026338123260672105403797903556899695543061524091225304140297942109306609959054644413444179299692681219077850810357321634769196618160655043828835991440832217788483619752906396556877042110525624284861536238895266161006698656665899390788959294877786853754604914164763903305553300166096868761167516068135936242329468307639592101398131146892598161673785683720914188075502859856137524642508786396652271917675519331227563044695477790323731993655426908213198669108479838788975114457267947330543092983112605494306012878540468242522671164485656085057653749348439375140006019935620629359409564447413398929361476238769519031090678004026109138024750192052140305184082676866476108683882435904330489939562764770574021493737865842339452784092092597764984344848279579768594369858363198820008499030469266444734833292426978546860607467196677511399666283287338747896661137096545902818978140269666406789284897938144632035307785421827284378995635139002551898093105913904882070392316149750069623609525153285441312007688724293879390349786202721615516173321862920590363527729624656607141788811409709221794235617148364063608650503387552421065102567525395207015018882080497373325238161809763095269445056937389398171610317417675827725983486199670866160491754360598220314165888736647395645255638185452056160424109090219421003960544320660323715409109296267082900703403292819566917599074562790628982834966699777429829873576349326356956416316204902139832868516323372775475932826384535827892564785528063732918406688895390840886624489741359137952099336060870762542804755155176785052662740455314055151545358229421123569520746785546872142828453922230629269650346317787403577165904880250327562981616798638787363308454845150681288002105773441393126661853450513027038611039887929053997106281517688638679172128854518403934401534581036689196926310407018846066510172008448422012245736619402445627627427062983959899923091265059376230841883957221174406963129252853137510403593563537014294702363045934692520353404895359102393645373380572869655967797072454411093423715170630312527020142470472788533367557750716100965696550298947717505482829000046597818862320944543919046745841406669736205111146014784964796040360078260481386363440342659672941746912252619159572166110819342488960902694138501349991807114382970954732276700685811105309580634766580180991838961422149490083239130564937241749272858523780766838257228510171780472631615913685077498206616595271605683770536455195719970781263196836053018725634681937908670440697798685179044719842063900658890312830293366642656802717704242751992784225275180335741439557834899885259854796069451888106117001985332617006227831717773068323658471177889484742487852933316878276753065882038117458583398930695015868654663511779749421051959155911040460893311167744695231135937397906295155667214734742566150187579801187986800002434942331870337495677973763734465093298429222166179524291267149064312145916835042805821130562830738543381345076487807763818454027413828000769573416266311339171668787567550940445005897901747631122156670540582179199700044153816962852961269841944460969908930526350234637829667857404691561150938372260214362181354576121888002632450682966084149768612905630605610266604289789289039550242325817961245671859753572009130424350893366250025788199614440396739981379880889862671868502497168131251353782815029917004535859829724337284030409195794987749406584416178102392208767604647477881249763545788222897073799458001128237462557665939338095218357184384358897301986180134667784478162284260239404941176498104171682850034643573444947716985717196989544150902379406882324698797432878205508610013797524355355167338492897757535839912123355284228126555471711576204252116499043197900850618470650309465147749795990907141284905012330016025798983646394567539024684554668167976511037089893288445679383280241886557204914782701812946275148189759947212170582428461246523294031066988811560599538060995947489018618604030724548599363095886994540095264275784599088581408701468317801053009541593196052484761338530426315851587080109933642577919319541530485987234243220091237337393169431626493410398717979107441364657553326255415434172667696924367495018879321568606751350588923059227672698045899845943208691895693421552353785038511042662364149668083428696381180271112488994488066947973029197985444961618797482446427154451185051964209335096936344293896641662958158759662313101162043966161098920825981880739970266058040406559810765909069130798222044432527040614397931939131479058048325369715164052354915230165059903761645991979162190323388258335498405188480035069418386678076120351134706962372063362564604110726265434734726849321214356811263337329762312309475322079782877946190816296570499711110286991372786065869181489360118867622419266305562870843245262824116947288458980940764871375393389261476396244898906126040759457853053586214106868525056899077536283959238245808966829606183356074574091953474122078922707330290189229769492220971807585561925884082018634895387562137691477265746815467471378067089790303438181279990010912742627443716237808261008925075680179321788829259499709564256685883415238256315835048086687344216264843952932701368455145331028968108032144713942519344889987070427632747365912058739233344359468775035337246573010348705895237413040482108771464102388615544204532378358341647107319101496646502778328987227515170752597446812714302700741082355424792944123267614582930680373722918455816284178779012455876536724239000128478161897028607527138444213496382231206314099006572561296981250802357893650746815680366345597075560244614613737676481997683552958901108298617663065790514309045140262368275646820290978618008506381109954478102372322508348914141730221634902945176975509523532142993024956773526144594287428230105021383136979371002473027245706942419194131141099448441498552808185679881886149308021221263714292620750677478488342998937981134542705552289312122088836086128195333062001652011881948806660061345370533124802967579422367282120274486419234968303413289263712832640480339260909439063776904908311483702801788370146039373559870801592288842358420572047722449955439778552317897420540911454335072271069994516924541056073526748097041723660730685679518808922025837762720271938011661516422918868073642759818163811861679103666524821833585078368176576841437921916064522690595921852380905303773381872841582429434637396843795220913542913519156659025978278678277373789776107967051863243794441335790485150984592340797196654280287430538068132092976231795713960318064871381805381436977249610441614445974193351001955044742360411020632395735951758401033692484577701223453403434047147764407877524541803068596893408442486406657144238862211174177630895215586588152759974192557760712420715107440830238409859623641514935142505094855101199435375608996144349535090714326304825447035762849377266234168597416766997449299184046721388758011300198344384114128816239316425390312447355042440407984148413274513073815829993720064863618958315887334809683409075578061672645850816477133796578577979627507022050384325496975497115725255187931513335931190635568474370955572164282690977467647584397448399441995611106407449034600629551557350954841647346918647710026677275963517115969154553384929292694162928679479749186510615319114658220654835943046696336465874093365101326465095323153429984592596014399409803079988620767170697702471066101970356949266450666929982466495418996971994739932103340734233481960630882233585390651199187873925912428215004505284157951374237848994033792988658306549952125247453453916667670580276712109885792089143111582044326496164145073605993313078550685576477987160748278127351607630387638224943336753119804937603253241242074538118960163193394102239268852091160029227340561875360032004923144231359991219548683321644686730473548888279751596121933773140244084332148038662478696140534911180881797221655385186848678836317689956229117221705956507337868345626916084600834950675523497009124753355439277590686248005604527628235544523960693449610779007049133701668900558738068508480291174639919288865869745379647856963831635943519722137365543412195683199391749489366591262040467283608111696313350143439977195929081557766195374908604220287903177165201623909071582677253724591298799355114624611154551391897182479417502185107259936452520166223498683477106232327548666370193556955195687147079226821679710165924401156153646378836085022247230684598869279684654334333899268717493409277286965516948722496464678943862666591000146496163508265750773189232687725629091845046131357111962052090262292503931412231469178867141485633712616573244593404948461758152880368660805014869123074141454776465111052275470176714130774840755067993998638634428741586836138176670547180169592891449226436336190011251065580480512844671064741734468817891621508378477077548013333164109752938126257069437438329274571578636293441013662460195332787602487452179484551287355168294265883019430594569343482709309713313534698663157328844577831485017426791377541232224322977797318853120979596549251367754546774553084286878507386265185697547719232347000932799629185798252673425348765655171667918997272284143031896978610362652873294676597107288796315530960131111871925683539765434105168754297171736512606829785513042010702416513964958572917836638015590795406253103756567357974920425123171990232336627885113803838170995771536559396479827730920276713003912146605047620603776071670630609588568535768382092630681949570380284447111713416576279359758911592128520380349704761537266071532510757562091325574843946139035419908220969867065733504274088782105665381953480610710677613848400489675317748271541729193951830392435505246483838837531809482187166797930043828077428411180216506204059412876202442277163259442538386624432053806976462410288256083121775189945340828463722368230087528110683383204589928299138228013920991285004063785132793482586164749648100559616539179757607248188887033279923191393905090702578855142213617698308921212339871312957541915465667604903941417746719840707455473137670950010405414707352354515974105890988735697154954647518108446414431932808546030791474411759536305641854024553274953723954690158340064848090638837507762997507071326338723111851949314286735387021800565090117557278923044070280343884629070483456023936441454025148365949952522875804281247594988263227688463754947632619429762797321639778262815000069940047427451128830748173344425641212099927819753787560481688176506743960054419077457483501129412472948235605934477456832499035459140550249946948317440966952366238239450337977614241123967422987619727399102087551541028337504276998889474671074668078865521445379496058914131616618572988890463236110694177688917000547497632897058500343517043709159632923844496207108888160701486657502364538305200814869665223267713372724426840167996618520971904135941372224989236698573100136253834503693713285807877981248895059687515308744268946664422285100967216940692296967039404418507738167090995482148118626862965644809522497585514868407320485633558785880114735257980579371745683421516819989480804280907062939649624723243345189263449642907936009056035480502388504775371545221357270450255225262943849158568097854974666601380466117908247571392361439474015945919102677261526989821501756151123021741379286803942295488255780099750385125186134704807282933275763443410831230662970698736130698782466623130249960101078427977879298467192934224314277672118960159730470853764411572872062417148962874136254050233161392560442096453029539358011831244209414443692694975893203315079975627661491000471674167290876913632436013606460540734331716661330857289800353371777875111524020595619974685377361933633943750837151916917014310948963040136608785065087584132826964941972504857608837184614806041727033958963977642002742565113414631357217254396617552399742219449527319884729493752101523388488754778027625157804097434801191184370690335116416690256846944115718556676209966185018919770433804198720808937504424416577565621733277632678972265988017126737371755020384078309288757338869545652168536527722609336621168876366489755453688889017470090761904726504181772923234550631269742623283859256615965519295498026284445383147425098468445351246842127073926613486066601536773950585826669086769928531130092515439852172382316638352114282952816548076345820378589482570911083868439317402829822705894281423239468733469877456023888380420037145722648340242063799127635598844314262801308285383904614256125604316233270208125720341532879069830306068264252197730953824304517759203082321191776547936113790180877667966044133668620348391977516442487188457966235835283851797273488647630077817503714961593223041777486940439734362170743867291665656442539617517289541985396182425952162387911900648425707253007962080892130490185485347445971764693090689880825584238025054194141169782631078866486157049215611036568867119325906578984165216855720587470272516448687482769080081523722584190161214666141488736429985503973719540659952163685630084353972600123303390378613418536730848204858462210939495638409064146031857636638954033079219520616186685940920039799831910145431402789283458487254110555297545438027611739290773892353680482791177293020293863981189026732154321427828226492821762874274409689837541445080767220697443548908790075726613940832763438001227503970212492084467813005813879695025133288404029820024315408205004720826269304035665215255475532057542968487460255050481560631133580221100233431192579623184436225445409411257889318993713139744350266180353577653466639086594653056287986436245047081904752663519350695348660622984082298003464953045522121401118390776673286761409622988889314911670293335301322517087294842726956462115272452210295437023438833662751157651392285546814529378058386805383621274395209594630217382903281416634164634242002900247565877446292133820966962331356478395236929277240608144402478711500155785146997929821544628959501178454954722699305105288497204119446912353773349436216716255248134982570413694382087548465838344232230791264481123181769519382503007598609839652648046276407016186374950269307122711928130369516901946409917349470289435467786836825790433008085559843411204658120853548393323023017391411130476243908661256276576717269863306542268979176075160299588349029899034250284695479486399560481805049128656132244402627352812579255176404909996840796154203388470951326174720174955113519786215470731354128915319782161827582195534608352146948842224718857992231047016047334365992616851009306595715480370753350006388851442969233652699299084832205458147532152566897414390427955511923124628112557179291525725917380373825879652112956930623223629348737356848412236992862151226731406915416054589742715134756464612014207055966183198328824658848445605225659569042886558455757362206114541514064538619779339791323203967995207110087285896759246123228559035198122541356244537823313462063875260242464190879010673243071682622836916959335057387011697178156983945806665301299917243923429502019064107583008223941160032093078214360417402576618745135304296820315367390542700348211571813365172832384554023152807531610959620678619017265722579529811556095720390159778561637224020755317103025480117784310174808313393973717388325765731454159630285796182581551113245296271928526995709913857054049718012632562383609120707683320719866381206545960748046848211145277739235466579862837767972708970388190034468031588229569799008638663871016507778768571133717362496768415878970110492383891027861426314295224243191367738282394200321740774401491288512260285238214407152856944083533596269303115701295366204693968388522538592081121758193282674180725998660313703579996414911215343961107909928263801765102989220555375864034070756728458142266182634936503420132329842488972282710860999828848924998049988106659302295573835573649480937974679419241854709664590777924436065305909068314551638490679204442445917619418613084558026380757368269097891435640036931626503603277554258065962581281064103074862287562211246466457292085766786698484557668256255700424742024213655614607729370344912156344789888642383943450532009538134873177862341357086019515971863285870544760450485595928459024547624092034988682575956404362405554737031868991741583355184326010667785395528472869413830966863847813056440115483633375252510180098095414028868995657343144403445764184857663659543161451806274222655787054748949113307572433263594233929092786724271919566620609500579329678991436654766640883963910688074542239078165240199541851095936160990399461043675610779593198554866822925735756617007303446686149626861116059462394607173960761654112968035421580000060803588528499430809512919997634286150701303554822066427712510574423885336801004748050587815890010864491401816999064343392924043408272692206762667966496681947758340016614243748768650443704904513834734003029745470500324116432447067257165547864301576413764514685509192974539309185032806994478118968419809949656943800813039230110382585188633884881240536707371882397961806079421037518542932086867871653475822981946578744269902986558916591686493025875596438593483052758636304007866012927218524151913747795638331690671600877772925422494523634269417179442644980329856065682711948344719509229139307776543104242605952095363350171698430878258030313145521065267703834895984481948068041494513788206784667921793692730489757956925367938554451368668288124318548542406085900990920200641221663191689263176888123463040769172997641203340958980590268460587521429368352784760039513310923017197861930711978524302971041126727324453873016271934428663118135634010516277477655998339782383788714881215440525758050710597152791044397908331839220716072780551336588273296806767139354752376922477997162250460761374197161301025330020486822759713683142579170435713658279070305207693443987212038089259092187543702936766430321499823423195883672054799762863558750462913238147776478487018243806235957182719056771125606756476133066258745075743629159942585561991874228402106431777155583674505622384428901695514705669171876812370878591443705474942643008152965283862815906667040070965343439368944254223418174085816164935592307742137696247104820980804420481005466314726509155700062456893205174474968586220375781766745433779627863011053522438679028633537797787132925203399907401885473068095698699913512236864961547583176344353756434351509700756930525560707615195879412371377383955499358749236613470058424451379383148805669801586854686496203865167264990894052460456976117688051657393183445133146328851664775432939048197326018627364018832250504273102682978233736200305124413562973083443007096474696680303697543443521377054972569319489049106163817407140488620358719534416345290767802332577026778451768311079373146856084631398263924487105002590681741664474159875945179750871687855187411377659800186772229014373322778323879297019710498937675230982063865601986361149016435665752423712820825451833530612299363630635402444971710542277389737319522135807475253744458494274706324200110718994351314846041023814741757601906856737517225902337986417546055243169754542163068223838849877110773531871429221819682012479747773126271730691478414554784348036855656012079331516901973671472069540790521966932388410144056359952758279214519727979479278548642195133868000312848493620821027901927572728407509805165548754818150099416147460297332961394253792399155960329514705584144634258164033855429822954479667557135019991458022496776061481662653618586281075508435531312907037129639596815739162319224359152152667549664830519607791924947328050018549675162926309720991816612539165467591263566930716960244882256478446298313041317354279898331069986996315533553180875868529303205898004075026261505920871662322766429930961510047858452623252777668312682525022022393901810896921047063315192016407173422082843742689445365619750941729725115364527530628382483801806159035253609313427710002349722203325671739849345172610423759040166551212467693445521954163738534980694550443503819067434800739246352817671202337655499455530016568532467485407683138633586757261553081184611413865485296555584520473834917406766340909457727304371409002553272482647396105468437918463627105034402513128998978945219766673902927729591271706271757460890249553332476678228163872398652848409580134533945467380775532070847138580142303743259893029300765276778561057390977902273678943969842906781565660622253310293573939301342568342696423819475501067608517257771425252469594318604540580091687394117581791721236012063113283193514750519137080330364976383515888836041875266399295941956583996015609758493284135576324332270048274270524471037718406180392977476373053958380621836073039718455599675897651087885729976388683216489321864427647271932992273626355275842016890192997044837444860321354745137837908358328265863143621210476966817033791848275716469030050201281254289923354783411436054996570868739095586256187820273909179071157028190638529882521821905088817887263086657412771687258314215326510703296541900046735337197906634394376354700687237632349442514421612751679834847881389270863922296417601208963718528823077841451720921847648697219640509881185416461209021770159098818928024643967289581327460271007469589442862988069615469143937376998697004475671346768125812337041440415308629369435760160471261729425915301444337276957573287027750339690589289005840271542161009410302917251609487164705434193672499052746227999798706426253259424843753540727873277782126508390445707794473267814076478107384186491941440316072639611945864921046093039123233317647095030646475924991287309696026354728591531155281962323517103636428891309327382325835200280803674132651279590873549989762062170340443685154548035412282372800259341409162396921260681906396433086171412658051413336058091519075051201249842902859317201557131141786604710258405966796860836639828979835918141280569601918043928473270757145828328708225292779798298012548120570575398578306064645842565690924404830169272267887525327071606824127832952866842030461020281439470730127153312831912189830047364567861942685410249512562051389459864923883699714776251869765085295135337596262484458348459051895822303229319221034576119984232622100439777418432521803815959234575021896690491772550908378508046140488537140958773498309859894801488643634019560006750568197714107199298891500734686576082411484623640055169601674699704372353418227435462442968225946534755220200080671885567839329653516368129300477679477318388026368779617810429287273350503852697803383579085548812025150803627968873322127359851109807400518994942344272489061197535722284594498145852265870870536485816543103019156332541486801709213852712286226191201385977804090038163971843187230751474664208350988893457058103224549899445088803250349284920558669916255273639788875322523511484265264320318947382397731113641992626695771106451021182833242874824065424700146014886117775833628380078445058193606825573579702573890345233764014964438378956337511881522654334889912558338082100750642098498629882943631479925041451188648123779523906921788632937357133563665581604510456610743159938416086673196594425789693397089049974981865117593184267815607377831446103338900615242793994987697382756887582662852079518478871636245914168217105479020980428299986787122480638881592421210665206326982928168997293969055083426960206292853963266346759046788080121481517824584499126346639160160172810601449008210329266836316390190542630907779760049769591921359687337241646249408305355438303387449708045132715998184233115042360698387596177576502136250753917880789825687490020081938918435678930862595255903144008954171384638136256511601766065405355138390716490455785758121809396234247025097653132391182009391566078932497412262022006381377188054549492120634703611440733768466491508625988774325275405982130269969055952737674431584890034040105807580912279060895542429675262082578637396903355328421159225454765691465408024398570201447733606836294147042955015362450993492514571432041759910861335868386637833092999554350535762132155219717574864150548149343844764072543696876792502648155449812499622829679295811644153895473222998296686934671121493571980582198948523374701419727611912421859396119476703181023289958798638963502520139928632303716677430401302861441381387841160892923313333738980721352667325522267317458046716562199984418823975567773393442316488406435823232115611592251836243119071719442489941332122525667474604887106559500621118597538258068512994247630534592480087606528385106500554394165955562898446110651546079857965572178424936368230440929000536470980363585968677175398942251041308204184741635317649440608337132448142612462276238212944536484066693364916920996332177391659877376497764859275379626414826554496253174313274791833999854375153694330152970403510577787138690553177358393957374452285453130482473146811986813518205571990869374533236541492186832351578633592177288353710646691155848088068171246931667084391608637348511440783083132938626730450266945582510304987881939194260381840772819163428310994081323758181058521435480385831650570835068664610362438468006198683985711964987764408553125047533098405190319275068762661086072694759344469821658765014336733319957809270784359307824380383638258507799323182078900900812183698763485555903893225259328961219208706211008484614966736699081739166500533255838634161687517501260762176503512747763760907503197600882468250713846649795770288512790221047757421891801793281338091089293425716892785883506285094055800595838051780295137194293853373479581705379768804046446334914958588717294652136367478873451732307878259806893013312996645046392654095029451010910119752306609995637165180924166608313914447146337803975524613279627108874881037872111973127322843052236735833808287471200263889169200095271947874944334461132087739688222210489887618789387633286828060410524369489269315841788542684324679661995333691459881925629970510279785457222891867525994156861821493373509894723586737347839014804041275015571519449674618379453187211769018209149377881437460184484534871617962842739877195220559820895342724312613180285597666860597068798345153307318216574289876934908599725255658263260995785773290991275518759259841900440193370809102149012507713462432868161845955085027015493735686563970346256323347300626958866325783250962739994160128435495510909978317017049939319600323665129327894318490565446566895820236090192135462058870278535593019417027511209875161344183352088330733495365749618908410366767210349271503325609732404082326436654995825486688926940012589520335047035962433092516078597715781164027702264900370257488734244312208150138968385722636360171755290667508104916170144371087123422392257224180858462462882579469457807332014649670229328896359279178799725608262315732510579683187979231045994974133684938561951797339373038901026027053507770146775374275735700939991068690571445008835830002158817300278389927086650599515798507169181183542367540099025881842719608819695819562051101964791725872619351388863912635553705468498241808351332332484029591245351591974180026467307768774892762571902175492658869419073105428874363636692056435369948533123879942059656777395976311438873021397884505468839188272474038867834817437368980039731340279477664519797690478146820914946586879443149043526236576917097444199094148143796812061589866269794334937595659209766892798739617978168023434514159976670341147653106005254601794000287732520305146029361037940688015391173767894299700658393125583736005734961182085377811401950708498159354385435127877009148147799390360657373561969086030166782756250016408319922875145160440286052340507487205339897443559085054048328890218081738609730898091048641092964240886921864519366234694318127231131056919929117058576776411825745210439366778014487576732990507599151074766805060864733951631890791679257167573512082049864590040600653080414845631260964290821273099906286430994649624120703452343500137932581902313241561928156378683178973092160581393081724526708318458884882375552331031304028874166147562811848240744598696938087755311003711449626632813930324019657901590338117662504722380674003148370920674024147762132939924507874778339778416232599786868707020443775281961431122292731905756163626611783889568825549927844040629577556800787367416292066791927969615071527394615810467376109652718356030741275963282530293683673712399139592674458045834249721099093179846752072203568238636041342018459735540536265798330070187364558833395398025797827314617792730893640369040311637648009798196437210456863305870302196413183823199435158413251874049680671872191973336006213638384991404470965458778979139037746199242700320205878512346751001610205728841556394698532862709531192487638413378778452743323192503492726741434846396407662187629968590238367986763756698655603325846993691638439382964286140291908543636155056953836233328000078516386782547091387028284576100148511684326596901668487426395386259839670478612851737775320153955014137440038923509641937096529220724055241017843115457273678304852886645240351558222524230866248476094668960333032241582110649791002283155354665967616862292190326989899012794378768211937353095188214859270687376350197323833678105880721663867539147231307120596940471004124231997270260504940575891039216047074685440288139371886266849239706156595912152743397308828362635661517918261104434137358453384419638786960874683339675687644361199920250867513098424557313602404435440749869309473055044663354250555515817973780898414559781483431343391214254665782880166221838895080467630653368345776927992226700651841550870446259311399410850706824721152087888026711018995556013791611131540370281654241927286787911296365661883670193515416089308204729338120902187774604580197454233601683244252434147531869944983823065481502496849594496634069979624677031796478439464031852432799423340590197403356458393754800085465864551148937079195682118684392904360659141840291124879330246313855769560544690142391247923661798213097011060683351390181063596193411310332207762200569439531791169752718156486785184529727244845644032652794726523264996835086123850057684308029227484787151435012357391895415589985841390969697132718690538183312471705506777448719542411393429586691942323422997867191743461963900695336433232657527849326420737781545579818369366332895377149320735479618062082180364501742421805985340373015014687581354354299756739980920601029919052584442615197691461096136446482888926907257402753726762613246865275707319761061396650980943442124264485848050704135049694082584730136747655196840684432868551135400002743275919160546413012592601458767628968795757759535460940741992073554345306678613719167132610151932746031756107522410099833385364213860830841067443642841489174962488771092282742102694422321792105019415057522020054469651305886979131569495557445193247685550291355210749899137976743427843659263245824170033651216831045352703404539175119897848851909472348767280950248699011510788045720636910720346439937719923985380399030713102738017026057595631361437027372732410054978615506716288580841150152545809680452463536899866746265715435392914594013064868468539193070420817547547056823125343855054988841259868870243060199381506785123346158889443853535065740191158510593580401710653577984194391710131666668090335156499065649039854594899569148489100508593225553378449942414646250022988972378412950409134890749735720205668409719295278041108970441449301031387858470367462347240516459480667811896298630647687283600952918441506431051724260595613485668467054007587787912918630340268427462568384306980599082379621963431204063878586639938368664848820318846397380734163719634958940941636256698156140041777020982672917177232181398151049327587335640801154300451161929438588448257091119026526191715667421909673643401906733859009213222253794245912996048861922171065572196963658962184766414644754318299209823358440505420614587319785183151179102474527777020577671029871712171574970888943429892366220176582825884765779741210707533339594986307019040224973316338193085826087154397702613454437645994626035727639643789633720641546631193277585914352729183496484841210538121956233044797307062278123861459421472614925387934995459158449764783945846917772420702878241874422508088581767256926000718127805975285059687956353784305219141503326196934428112026288156147848603995405924779787898536244937471719429134887168783933832578533495247525612641716939342159292520717717334915303334660126026279415881297365873352316939136535178374085607698570326634251944825664326495915444459962143035443138771789820926457359463110515753539382693774089624991235545646625861759438129992903248414731121792557256178675670654894713451898694997053230655248341747866291697980139468851146365369133420126641352501321595586430562443442531259061530258783341503607048239429577218338638911539862317776168787725331982780948215835148087869765738136782736092505530787229407875150201834184754626982821517071190019563617553260177610453425261464542163794240904831159866525583052061527129664119443591726912082664471996525158815444834088825745439449367907093813122106404215295733429659350587946749705001340075124093688059377834509518373897846473252065105014070713209125554534845291567254917645029561528818530530129188269669703570155065427554456918393279552848902589308290766788731883435215193294876550251802731141461293432679283058475598787182244519263587323520697697679087434884194193133979507677632536966200653855301658185863767210999467168855831233212091652902764961052181111733517851041666267225334798976547618792534772518874070540161361272695816090135904805567670334630965062742162652322176959476478961839654251839682244768165720265102567715698144853308077394394111496248353432035756104859336991223930476200640137191053164878207069547435832330898502625842503392670692708971205872754210098941170149145334031814641869212465452614593247884870308541901699219209697621146847709098845631686762347639284495631291873079722609130078649905986560800824834922917748999810476529226869803800920092852094427139247563382495502899991131964514446781562636641268813947114767197801498930405264023810570129555227740913867392660492905400773472192507808745979824482662374052434693143747336500585264239465817218550793205698624906382713823173705191014144542997030636982209648236436737319364500959805328920980943723849200273235781656154834613379633830627156877180387350253881256719982492513586566355348959285536670766234870094560204388022070218597190405791357907227998049711266325061872980606656743448484124983891497427688947950581768675473597249786076643299936299937950013987504456154425878861619297248356752616487639109131136448450511222335865488702346588742075077425485143163104076869981725580941406593630797634879346964749544918697806696105950438639485634403479103367438809945796067659188316193639382983670089897090640583046802179935010383592682899507851609417512423583010401277830690553836824575800391646669903438077802689445027425332964224696509445551002340502085712161809874373524699997694400082529988783353812946343452268086779283959215911449370321735966604453145249863113102280399090637434932015328602752973622693300630512424958368754455121585715476523339281351424217926778782613922231926846577038103924926152978774527057374764906349912361827279946589935467399433783611138007468650882664957625541946804031297826224928906026584261647218677475467254119310030390437372787505816425754902503042503256420594771285451192609630362126875892027023767633055854283217623226683700971494165973367090656816702609890145622863253787521899846501036206533432653892721539465011077318948138856870821823599449845183177405224528444167837658078060377119278329407461377620363557861363218617444750773273555763025937558295033307878103996499485395518803194469839829550596585259856972373903492318128091663765547415138904437309970154848680320839799608023947946251139403930403966130928428240678621648964981485948975080243079013790062010707285841048038486526295386131270310030309451602827594349139418188361083524963185825093874999864276080790168433932325053179981239190045324294549992189908007748208796091400987550105338439473137902246151915536777801473254191878693167267279667583869372838397963875218812696110417907207471601341365486794531344883467947200166080429105987709825805005608339445236082417102260513244271275650834254244700577909441047264330665138733303148521283767681917743066639571422576089659768749354310273718930391259879857219153060484286608853977220917031975456386368179482991398033205180955568854965166146050884620220265531538941171588037434824920964912444774307262954211183556415906498912257448164319854980914604724330942169440142609811299566339231799092695831193166802197719316610399032684867313010509087189722260522995494385726678831738680683599808473594258776053315857797938013277587251639646783478833420824639860680093969922699739308486847851250028537346384232007804770500233972393101856339031998666504860142927070480548526921929021735223191882998298510605036736603611805687664804458569480252290537593801613151264255394953232078573393442411987135480489042472222923375151580948511605792624315032326780351724432437482644843267404174823017388530716226810492462081530786535001274116177072257000103844332303442248117526489337136870110259004058663459073007537012318171050424939156321063747838882677071585308224673019816549889707259302210442417127473278173028040147255110271181201122253833217445478962063324962545820512806544523514670056683103507365522833878237908257963546313848907349166774962550571951397701464655426923714540552578046269299711631784214280658435911723020216660629676570309149603610064983530582619398992683570733103125281603038322231252388627544679704843843742968098361393178786762246442650968705091601335628097148506568877106206276923370758081524217055235435082121881126346135458821976596860017556127347188077297578167132705368700220892361601141195090089326460616857854210183774142841951582812289306515572797334798200689171513787973242368599067238354502754270922395460881732770377378706283618749890764571143012161967054486513561247858282989045430108459179564521640928334017994526132202243235351489588340180224096858808227233605808596525349812176068062313553723748677218877206808638984618424683712466992533721857497617327942545508580902743334879954786073602370949650269972367435047404427392829541171712498767081991025712748153801800014306877743685246558619693547094508745604386777590259469261177459658200381684605620753826198428004034393793228742791731167953814805368151166888386725883983922585384427263230624347454449060332464361899392843012112482783045202161357962468044246062210539177803293828674811076624084410365366043816630295937136163065243806907117363476698285993937619098960795790177110733876126632699538273698709975291755801729871437831167895946930442895212249703981877605157122453973640103441930148207601885489871480065139403469007057732454933658423225771448175997802394411697010365417072624242312079154756416895073097359208983560649388015879119812971736156687357468343862218989571235580480394468468487785187649495564241718080288467229014834863638047583249304215515399616169616974950000556460844695187086756851212557169182464310102038322471821372579454605657031553931207960667992866372850230751852915174355554450696646237102384819462097880126113426050398054692650387871215174797432092413318504695521747707302660151143704417449045995090243256193519330546616209114760157240346555325167386096776823064574277359422635674787596482765335336325281058015247227774422795744912168915373941819168296958633158976142428762587676244815603919141613551788417202954034758005674626847516140758801925557832837600384250911614894600203685226503873500105624032846944154664909074251386065425671864120658101435295145011949052287788240909462226424051457824255042568328916768380867343009278669563794133156196700295765750388696427819494410367745023073541206266596619263427531448195439846251588412645626330587961296477413363221422497791976429161248319761550822235071530115045174900797600366158210177412689826303267374709298994879341065497464074633159094633705728196106516483470121332765432111033756205811576885773992691015985903862624101721342507593711633914862656196771005786010363730920407665889566962045722720473337794253968305180471787822885045671602907922512371456988287107213710208231556119357944205898859880903890006814213820609470010245056239129516367346657283152415785351439712985377140479907621243404069128520606003272329649520634758004735750092063818256564143750735674410101412856953874400341862559829473259131096387079681555520045493272853036866087568415059325451003865918181036062902575915416739314673849513058065651448612760685968670873838500957437370236974475480172956538726696621255390949866095588237957053016664248991874523805738905525078178454443647177421713830816289134932623604278575451369434382345089387164555321375244900847480744587857858908986228495921616996768809138791258435270058720998729603514599011230945332555152307837998139927802160452811088418061021272490022550556493400152339190668875302739438123917830615783199341739434276635652398211045811491058572043852979030252936428580027658663553786161737641845277434835567010694785054198298309284873370360063268630118684971196776511424325503402830343045299608088796611913401290747706434569635678918828460767504606250533838394392038770194728158694195031376073699550148910087744734969680119618433013864680737566209911875795314647978869366644225511993744532276950827593158059837696993101727774474327846482708482536062480291726085756549519800397748866276567906522766765772767107431588256701807422553385316632304263829927499751655187869686521470842742188707462232120708672531104850264116850815487979066034854288257358032366590696130321246534409710986091380711892382473329109553732887446382884212981981826925078747198738207695320520412537226860122854937880879843904337354001516590502047098433600053559826848797267339490386346717128805838731354006937386437927341868904891843599441139607074340468190816988497094614410734124561963954512558568783462598157511405350495297710474591970459072725704677703346154364852608509915032881562240028099259743551074808066366031006270605490985717556145847265921008088148639309551195043332145499952561174701241303994788910670475201860615103295717784325923457106381178645996615697437870965329783003152066637073584072400075021177012376487734802638248082917591380210439588892972461384938954606675657021104724109005333902765978509341357844097690414898077763892719455306612274590354588004330550687315649395056369905984915241386681288788466904166458691920950876152433637957010138372362654132469989758434411142462976450864973193357350145399498936402429614432871897248935360717686113787718592089651441188362327047124529161625869985389761673252511576740014565388684072363121747342967829425831781146985876734936339520897140376621878497899165253065273287114410802561518882910788300383778099815644699837099429411869041921763482502887453196822362655244731191572552218464393398261163240438217188934711755047850895925975391263574073232196869188466873054125332298161628003927808183152435294074192323484306548585846102223936473585275072956917208256925352698455848394557038686239708534358976584039150935324856396964131115149202259769211865091847039762736935860518502188182726438086788787690491214516867733877181504613193289470310314093445976877218816419809207704478041171126815996987678602751869156488169747535655530406283220352732904775905710192306682244314043505383134085244210514030617571423958123737324242086916120548424186312630805499467972345161438965934500833154884387551275229296238227029513514955578943558248816957264432955476237363015011004744411759661600971387753257182618818751537015125507169675081499416807424914603554298968151234138229047945995700630440865105602193476700703403134933771747599494261822178628134017718088065080412444024952808481135037399293602681729436149432961527177958651860075469432294750700637818785437238446472294708150088607642832270929767186013903160989922045544620357261948815274245193770796078040769475336896238441857524092090453594246243871145070514825865781426863887892962494490481247841112790231030624091259668540884858335113145492423597478398002171600159060087698179696262314157817426945896892182325940057475990609245402519653192187921681666006410954520215580153724555649907447264843397354754295350669484454707337006707450485139329718761908922820950368114533409639056471053127680893532309059544516922909675636240107168492013166930104873654355451910248086927304409003736175154495258951270992059950638581735090563385575323669841582113582672041063579009036148224929712148425131968819551608237619571631495710671883169141577511590583451646845344405899679126720676895322958247374410552975264007148330133947724039074838065120307605211538103729577482702918329361646934531547858585672626409015100906193485835628254224140318484783575688551188321278249875326726189352658484893614238881829352160774269193070838513051276382415377147437806471037854278596469381942302235663094075022577849310794140450254656175736716179424015211991558381663802581850261162678573754875198438049638508351719679152807845463801501195489728302247011251753013087165939345700861429579058315333042332220191167795050786091930492610221346905681116992314767410964629694556960116657132728781744137114416768845942074261067915637497903719099745430601548168821663967299842676723933103119145411014487386658595567546740769599493410562387397191680812966207003752900775318158724401340529350426724510158510813398637009758335919305775174362212436450351721676293223575819476168685491753160924126948203359033821394639125024726976259487667396985633847036559411047680159860148357791740154010700320889267977190855776678970436551149586369801493702153713546255818619686587271309663243392608615763382955902723917338116643193455956238477958639461209828747035437945757965238743572059278927478165245829336461364966681473956789867253512438958090494349710727712164036945719564531986697314662615663150350663967717209587549071437065600848122482484391376014192171100896241734254010210773611635515032785339507011902304389356168817440446232410333485102319777830404103357441786188125279437398662675266100086421491433004956904441023731871404534225690786933934294258954645031689306990076310167427973881999791243943462290204935601850625330543995001966361745047237012459697934882691879223117325672337004650298806824836109888818497347282857614338979738702435212773460115596466284782603264377025443469949766031877053156512935624482191463227669700726839730956586721869710855452408902246182559791762437239506807291801544469933228389514890992354007086651343737021015700223068859304572897055476609416089470724776715351147162103552371867069331163158004200910670569212290824479419151795105708469873790485756457159192145224789328762971260327386223663351058434116839707916761463192963052909343233664132273507934612608019698358492196632393685491562071911092832293824852115905114972604551559094010709499610293329613330236329976625851032544304022328080084171404101394189992865042002851235545368864717359422866933345541730463527850660649291768758008298910116197216765747014181975757934515288063140694387407254298122876570042741506648990079554693284246774245192327871593923724009317705467445929951915493058832840932617472530277276148454820325908407973995206955601362666593087224795077800421997790742917500533638484733907724936693949189613105230252565355427498164015919910171380071954899806838763417482945307351420227675380115326994124795937884648427630243116672818761407711611001056288828672936154110320055728625841423649227787138009527087139867240927542808690782040104265108457080061314894086363628593387214270120283665235419765863679912214752973845975410728343321356031350169643616621070711667363335219235722520491861716369280315736081032964799632667064039560125891610156225552414053926394257062263812604582182640977005417460548155931898790323645760906407754570455037830587330913781834123429206975433630181082131460216490183349062660035014802253818810854320890799390504700624957713364905679567915970952124407556515509484606156091172207025875955371754174890040644824054610985150867620008161906763614204877237993538981696388381509384323851212410073000067040633966491420567634184664904670693926156003457775795499288506129810582827499245766466297461017971746823721320393266517125727114765107238604846494745579112667893534196549513340354050337624958317377155959752363693189228225523265718979216927754006926690044725864057244150703020788019448301078713476110589556208737653860808870565394760780250181223301369833688737503609477225838030960707095782217037611158760536286568343784174085677331763573111545407760015049557536778355235318520337464489152693493222217661618962869842149508345050552062028482603966752419723630129369943013341649754642426012083994329501485045207570764446476394229105547631286725245217457608727444004292364927948985229651199220190585097896095546538019288225997909220464516372861815137482328275402843203595129218015018958945791668865068757957652046184180648066796031848157904925692231570927896275700438986161392421612033975159926731864378013073078827760587135374608981907452583175460440517553335942798543097300183640870145900535734455038420599858296454467221600072554226324404612744910056615803582879532489379065433523646165369620972477264101981222622778501111803485283604471126469047990716712058558666869761101826596821855881614040490066394630670716932228944628854806204390247729026439359650730924596450103922488215174423598013090700954340241622491441984508696498294457964550646929000069930483942344012230225792392176700505912639854171650608167439244048809697638796102620537860425036038922716096211568520999950925384101486154379318105761289525262888170963990846581508491751212444049418490484877564399515205883073285017337965811518905591043867761241364376589891327881515305514379276176571025930145681471060280144904777622269205868231824890523662769034832203662702229636251909112567331906293417315419446431819238411916458678334695709282115944659784540457619325284176055941988316467417868364922190039189424041193118022599119363580734742757888024204169232756595854268979270419705763338740464082961146575368966094094325392612862793304216072907160305330902684056216703914135401859076823321774319680679258456994292093385525650374679617423002125194341920742177580638275457190343909709490914971853470927479510460617776754455294206183893759323638937459783395538461139780615165290619402851273467061666990440305881298201166597945377595916650543249758894384197562521234904670914926371637352840309042194378213848494266891147545033060928129267587260098176293015671436536025843586540251754562003629406351551900995641493075859624051249914732786451211265812625577405248692584363266789443778796261874500889435795265995333653393134343913629684475640149701566049780299415914142045058151540484403146489208169157760207934904321758951768825363940659393767164046889919217920833009375140642860750518410979565469226746570611541920395126849854502191534165394312771936243856148523943570219373844011951109908268615520386024317782034481398705725531285701773527081741674355873457088004803511820262423968925616490966515439539007699650830230681313823866784624895525504224423756411518409934232349529589055548434784420023603238173060997550896224632754628590492615860080423784519962892198484170529613962017977437346124449802155281443241954785884412257555212125892651702798758314058438109046188691946567803041387079597595252065678304838859491804276860995997225699145218988884042120606049502415641615174572716167990678509991860228413650616902291154746303331972239980075985976017177663199801423786299323574350533259332252253948585878567658734784844914554702585493623793280641789980024869265792798578375245611661783289548789809799762177214018751303498217737461171982366698232261148871500078441400790561396636068194099402414295590655195463844915333576071444867393518076393405731948127702450659903512038351582990168797388450991403330816781910372380900690114238527027583030952002758729239354185769211931328233385792030033054615525375939875855854477035333650405887173159211868550339417984521059901410667372682270427788035987305352837717949556603888701584204368694512351703296453686354623519285087427271056654312409338057220159910262358999820942245566148651165346691761563199272001800946170726401035425787082124859123133199137640118976944282387993608557388522972561176602293277998532470053044646669615082858727136411503125044598770872786270461244450747797776538876759906548930263275926941490280773876210974210623051964569863615170959846380828706263576129987373060143352525852085001300888586911580539327142961206415683907796676804365325081599965642491447139819607208843861385673968569370160536578270113017974376556104079929948732822976975311226828054690544786693872413622087725120492711892693353356429088264664545298945127869923703758809622113271189945503349842151109256752470298925453040695730520790903615962081515386981405713617717588830472743937671476020613615166154148469779701723780369964633926300073905022144411820375086202277472548465975882607332659047034288729195956008331564369306980830551126402720256140817663652307405606527369593829357361452016859962356855473603542291440313458165742443043791522181851448688035529636518374363680546158065366972146574846097494532831042562405935480469456008496528956422183589724072604049108291942128776061010168596515369734683165934069886940089710638437136673179821737425587060050117294741142182398595333763859230642197831452413608568699924995962856911030034346132532516595601431027270617996840795451584766281583765556838383460377775619783571729150117023955128490667630128516629272449390476654391507950459458883999709708601693341846686272757233477383760988250521340993258310276758995812232585990191243224684626624650077107177333286788135492607294076943814742690659426315734532840010294486589469003430600935640686552162247917452471543399923562674279784592494114844754264016736118743610055612919102176366914771959822884711695071039126006729759314462915034642472758335842362342786572062382034616306386984737666163418318992609371028351573857398577040595431414995849783078536688642626290228770205823534686789908373554846183207751513146148886138451330630766882262464804734152993870829858404603503054783595521782623495253520264699537475449315520511371330233170305557330247549365624338675820622447265296888835250699594174491700849951358737040042489469537850457630629889436489579622685566943207273184084852531385675103930965810715836550096538283922252301346438832195841070449045282164611448613823438273487030996864242561905504116552895624115109092137976063572327362651519656896479603678925278056078940386145665190511094806280045212292750464714169727111359699653531390228128792894857762544492966606797037642085985808588148378376644453311224544507584478359450551764417794762148482606265948889418840414709463818984763221633028672669004772406423965253371427138318930547889093883133316961197035418558138953482030980174251618055877831186782972452497384170282752680355431959536298035521426003325201678921533606590311237988372495107453719197982042461025933045463483100485338875236913521376999921134281663976854762431447254482506077669646213883474380238829376831882902308875351806504304071615519255883504492985551047109589917178096864808219360673220959560270038312570578006441885523039249661765729780332320815520563448203762581576420126664508572654889171578539010091522221196737129372048190622935750681711834231418714248655079777224470286256550288726910168390741171759543758688733677733865255048623976025704933765677130268473907827823938442789672089415621723641255559213949060754451958304160311729319636753110971086472740819985108307671925290480894436154007535020560640161869910792372157249481932955515584639593288771053390710953887314117976848864853663484069771437066718138778384085900611035310532920199901827873381679456185713482260642215129391694065003971446827075607841990158827779840526640204969793944149800112021143891093562569815565382641181768419510070807408947066440199483757979412710084048547505257856342415522504456692650233733258277520606805162887109603433050664493223739692798481409870857137197678264371727712599071209870325834956676233626243940855353117695599497377668132955687227199753281273969878658261954453250087494095280061151294745483359008194842363727602962850513752097657152969385091503710912541899548051684881517805215373155756326829288297421979856422712472864927390644362219690125063278550573273448434583901106181109929260883207359681504555610997864644268148635201581328065718199770853785639944457027392686913033724081507046478702470731688351207089356899306171596288315365102514997961529790257388121584230142253000196236036790487272214201634560867700822067463065541216935547605165969868369889123244509473151537561785474054579052641229398134035480360027218859270439460721426352458913882269766932732694666878608699317781981329479603746268887355907845187631408469450640140591063875740788962964786848730711858757464140290011982932694102053347026888511304958839796008917638559632215285567921060438359167871788125403756202233942585020270282653958793873997612649060533488603194423874413362071200139120155513030449482364704351443574182385798391118852337530404602346756560283868342719087176434222678787003810445593420285888407205658290975340377422358458057331764613435998409662430648036082281625480957124394590791076196575942047978212845077091137735131785485793741786508022841755834310780546345113698956429552987089352285784939575431772966598962367399728087281646221588737919017065946655178591006527935982888462178104088941870433938317602261113030817254709099911037033951610060017971027548233093031571411069303552946781930625636645973187879904239723182436902023506553296457160373145744895385724628469642027375567411042268263289958254582627180080916055252820200328749157373552399829969353671334190954351086041069618235894238485289982485119679581958692053159460410781684966066518734201895887287825840209341871942264350657914817745308539032139689476984861582767237436924245952484299846828334151531656804668968716631368141871581182018032944485322959364764797042445822908983772135787646134485009604570295330593848227914712002484874878234318996436831257180554211440758837381988136149783602452333760812030880252225771538965072115470591510840439585471031514311835171568143481467003823145279450480883566497864387605028801481630024201054075957844852004829523310855596761050614225945350488223943445224738287491402033622425098676290604844726767941747631286821734150946606994349161003009901766596512480378142216280459337940512087401169537817264208497162103403964652947289733456415378028621672786023988536161525920699589554972201940976048142516605472007551143266672059301389853456477989388351118597645578466398697425428068232780140004615241126279359449029888971336947445522108941729201192544347894911879657215713850865725282536557016042383236539019203200325554274124543209278017436455198149707562092644411788718483238284268988602150280646291003586345966973889864887694835628311637606797291563149335543709733986996528893595470976141206456652921884579131441555791721784134202178775208834489453895539733223214895081653858905205797175016868821518198887473853531579529663844496076744520168516167905460915905385366498538578606056382960774615805836631691205403278922772250212439212229648111995080027931818521366728062205412014317878068243331301576352978361808852838210597214373517132131589204158169575172063786038937315945191351125363444356975550301042314787579698831741064190431482795409434232100192065142166439535520248944842178676944172934470468105482765944392666345067140546431661112238811387230181639995065818456971458214806282551317976248493369505030650126270006529654398120703235483519926185897656704146160809192359674142990600136889468924959758219454837271267896062716521564627318999584344773603389209813416003710989987588534135746558750476749926050036755830866965370985996025185410349819100991970978501845160931039869543493328581453040469352483039496645530774828215516807579612037473975932646044440710243367086329309973062959970218673271866902631876865193774614148463393478797822273648138179620215497305380158334906748087003242429830336047558017624223334973186876764439622160352819779603805709024032796023482313358297565746147371643470248277861934142302975443947527984581380405565144844527958343008222610269807041521527872620401816802280585648554387727509095969026050091467850611055688705741671671883782368311211338837977571248951219702204046359090566446827426113157282268770158722761364682575701601690592066928522993135204364238376715834595043362548227673624543505265048849119252390350754860824255939345022680853279089897625336184267896063896333375271974586970181867833627907866551938071585856975250998459491261704493553769304949668672241373505755886793327136152674016239213881284056113745300042089229267729425119663821782352165490403252016538167886554478782481630646095410795300401373048224661898993407821890432359883460160782782884997641107260172515968205779819840864629140851861867818055891229317321747411717486069615216194345348612908390002741191654514628965423217052779933680972555173596117631423341369219955592812779358815515102515148946589027391472836984077394031746083457170204836259046036387794939173526614418871202556908148144075147068181214865571896045025876083010422286359003539597807326403824019033937870904918817257598143585132897321091525482578216160317755964433151876288578121083478998150194993150902021688398854828245412258685323032801413029092005808563985874162816107019359516677434344251080983792465128595852207877130831025065405185861464915056010233075174119910720645770181518551386134504506248330974500104194580205406968479170737382600845644106180632798167613107742204735325464889250966553185475767778676603698701297538719755788498798514765628799686400520139938830335831870191301287659617922619461093917537690361081093466817240541214160025988536441334432703926940289619025682758648959897830659930204098498336893984504991573125152646456091671636611918345174942485563357072020565438813934288202315487480811116791282510190538919846577347780828947308706566411397841641259834633896227280250861093045862576248717863625239974216261810512403870071594542779419464313295601965405451584780068768617375903048038168502947800205560834975337563768128071628508378218235658288863187951056994304416833785320367119564785588892260230118256139151690062228791510411211781173822164597049504656122476890078100526999445081736478850417821021613480528568924148870808418857880167850442439215672656174353828173191548382706390523961646999824964131320279621841885937991906473352601702726454980182087785488530330346459072784922728278028506519961281705039095177511239886326706571200561921804318296128997207427077823403661616631695161571345643033925744795526983589176314659226005535108626903985167267302178410723380937938978246472920673020096902899157768416268140002872923252236845144769026339004612258267883570937766003892338644793162000675167047372447033767821584910693741719414136287988169768982859046967246269702233335375440415070882715766080575905316939937103657816380109581010099221334484357780066712298297894094556030745239469721313411832506126420413754549418687650466175478877393670191884344488748218226257059106766273024826449464904486371934709377382990423670413061097390070732892937881265911369419707300833140258218353562053634514471750993916279399873767000040482016309185485822666978866275346626682498720272155631880422332550790409052369419939874756253843001101967863506020620277776807307329248319705842183625159291050357710594817762465590814112514950831332040359138020370560815758361063896608519728663778368292684330648372601654023141929802463517158672177678342863773609615360347788479948268716397540901388415369365793072829174370593338648182158847294272602724373361989914638351471767116095191267941609232865742104645063564697623100523025345859921361505826606382719975444119716011679618529341908864424178224873512611282019440851483088475995576491182490246418254854155989500877646408319330814834915781898922862025900338672958389164736931151752137553877181858255430023512754517714975375015483513501137539539262799638524091025401823569793827516840949263369512079763748291123069817957610172992217423718378029243023162998984263913841962892166279010956922694758070578900831626233649643878603022173561733727370589847608191037260124089443113648562445830670415226557883208417159638249025905290429771222605458076308205220587770595312825158753850355513153011993453729754889446642296403310736728114902768267128525375651641706382198160347842485588290007919086061482164626375844296996480044722447777458410101225518856961700694696439730669239322425139508727841911604919042718629873346609374099610931005324369053760522207507351481035910044621233578455961860229280565513266591444547141333168923178979370076130337739606545473920108848387122831082727600843318327238359552356465011422968668548724671786492795605919373252693025007055121003368577747646512758089329842737421992472721535331247605072148124146379917508980615693182555501889295234356459028551460900746461013325067709383443469368406811889277671286817948200171912800317068684774189622109915698140961132805414880327589319717420793431877492908136625781364567578508608404632454812141111381705124042628090476851525814268082723589995079299197829689599033736147030690761379118553176514342868169177912162926963903483268103782104464492845384543622977701627012144273028030240394088045141790925948378328415428770025323931855737001712692660976483678644617118825536954515121752242816576493461856836264994225803546006107339050963208581522026347031781235228830673633018066013763322008351205529983403261403267612281305798949862569639264835162719640833207888297007827920988825982433494083736891453779709707230049070026160953780706215721425559741575423243438774585479388379770899778647182568125433078730395298045738597160150083665989107052551502486745964258936105354679683055693904939052696866147940816368442663292803635996806369373258165215280288288600786527539531828972349763306889011475288512361352852573671047769787578548160681925353202574492117870601320139766275517657036598170047164831873493708609368400730227926355517390956409244978576753273998929649852426942885085169909049583614247768492990164333142672713834588608551065636699990261803625254763697956562745954240067004814570993341597899697785541656039827668451168664137819075763510578780101834351964243912293503242544708411925684199735465581776624063653731453334108323756890044090624096404862676218827393285599318392282639250242061395177357944484996001531437464357476718286463410718038447077968862481098076612165428583713024505749506038624497150399877812796490841904018381223278676204776541575388941368598846664170825969960107138680785209599846550418858633468232391191312174558707798988588558630068510489856659072156551939896754205637167935515500928142586180266612573670719324480051309199396113637865203174412292900043174081448441117109811272840331669031866045684354329554314903108161114477347755776798190978424456642413073792645829153411260218586086956427817851360631587108476959416268250236185106728317445610495224238990668377882666850571379512199827915033042031943012743228513522844088560242956091933339776941517881623219761971827932011933293901119110868167831945955962228083672991070397507973071772139624983910529287664643506552210407532224532033930651169755783249656362178324058871816467484810691035939682784705136844493852749974109329106046466459643907043819074355857961877574997340373590128567171136057611860849944574613663962541920149669108403224307174771769006091345788470932315000525499210171766376310092295181412727747731738261310447872583058943868074233999515493814785962983162491465160413134709023105633506713016075414339108233039544780213859714766869777646563476948412559716184156703566469441118460215633053069372472348787468423123247761817634369465255158503621079231979798103618829655414629687355010259339811843864990730367545893755049570473143807481959799307218390534668467756203672008300788211153172116389658748899834853316504890572175618152657299645065491749079436096526743144114612060899758878208763928917459705616520465561600900130043445919274781645793830063364440643462384666575454286780670495424044882781269004930402344558876410987385996277756362345067114673119519838343496726345400892337660856381415286042417348728564744420754050038402432761590491621608803247420065837366726611144355092704454536995197470472969481061990444549362832361180043009506264150212624991872573952860704917280894411838137963414454208722189060426347013029668571650002706295048173916283952642951679912766645574373635441775463255707525196057868024269351076128870174977130957538752653351948248756352230816016310559154084491676747945723149450047970528960098941241065538014579056472360545592250912304905838421181526306097675695393560164505596751991773771583569197281231457368885403773502631467869286818598035977242660162866148684838748529727869936726824816223534889974907404580822538906331232984487588272405337222710514731343731733341640895429261838135277417466336459662490261576536447683719435813746193251870887222237743227498115535282369522526583446310986289591097627536750471030931358075768590533309581740319395199598130413954971306212743476623065932246653966224288559309209786079410850764994819738216684128789771868920506672942268804579515366768449812773368674598451851753334622021666961901460018817678073844534793833746164469782392902596694217933287090079295996537045591553739827543283092303492620956323989541430461816109995645695708387175561040940824872047244181227735842815220804212894290056743051229870616343385950071212505041903368115387329199353243975636429516044918507949799523591524514025245189467189943961923399468415384473822399860749426220785502242046262734774637813017395253354770550305807692432302113546153335073906655706602038716157594497431856153250736301296254683651470939611638019786255243414393122940355144672189074826349655637048465812215903222487576519174177007026807535513894676595752725767326438891367365809428071531123729011190557154166374502569027838447105258658868700443825633303146520459149032268932734750236315532510427402359682915308836057364545811334788076647916296162169071433534058350190007839827304940504443500904458926229067678290030445305787404514987121677300137382739019323862409101229988927226805131193874103250945839260380179036703178197336500518309390596881223942671001177273923131776619126273683573441303325983704172570362610382849529242072347320236865109793496582555651463430897567287391412652341748662794899858389349806862404289431524339876158226496131687635725252822155544479441696925105990035786611064735589625417261510455540745558846729465337753280259245887726210314611753201078758727565210068620969229527835536247285949613967435322633972625544370718085643756123235032431595749404301306327219455999544283677161196606014698189757766786898037013850516436118637554723902137663379304858764063406562993987829364416128169651781476168369438996079945159258850047156840524859055971976159401675603600813184552122938720460485728244816975180751609147160378819823170377357425281092754662888412738175095635180144825642751114329745677988708573493012816668710545657330026087928533346464777562546580113720957723046117110282008573603908700198250782010697612878161245828912876177786724905755252646525955197669239538909513231208888896401247867838328380568520992920568210581314816767250788673668006723704720312374987463972516084788436070403264000119125318428193317865313987487419193729629506504176981028212717065707430567245406425070575035290650103037180345585380434236294947275935288512777347318014083558755784176483786859854388412819768704067443374891297620747386578469440292973929197387580079715203554305264736976118959742749509697797258201149041721678470082923023648821127859921314165009275244301341609570514373458472791045823412866345867131068433834380264359129139069377574752643669214821419589930299561916956193728319743255565618367522405263731768067906585786792605050432792148017543768129453571855576203525935254157653323166026763486700005365914846302860667529153814408103134471474066449164397462021485120137200911913394361616414268670651478483438902520074127879382880195520855523480173767985439578817226367363103720637367411693775256165491325169594462155658265256982392022185119476547919176596284769263094647861390391888455228290034104477838211403842653703149883544730078641423641506980878302558680972765449433284734259195914849424780103922473375855587061606001226885247535139500560251976744829556872356765240970646198260012083177383608633091307111840848473920027445812144933524965251438568071821998629097109126816744000913512621570582046990171683647821629662466743928155658395522510857831547257267393126709915665350406516935070252140869940352921032823765488444407735717787547432156208818003316967916340693764540563541901095989349257209918534602013559434830869890125726637453301686267268210454199136552461519016503518191246659177268769830419577656819532516790784283108202922359730279536510954214131982731043237182144125364271021216151628016974952742587217458540106647538203460006270881178977428258446795157081687389199559923844066913854105324638066106990460744655722401194942996707241849915881934113568886137144557621846019285022493018288830673663334708957519230301292425709820860191510715855458358810625471397746489759879774733713733463454608135445575253933045997817686343195412789078107858831587149615804297721566273065867692777187857871317039625660870657019352300431364075681959667151921983235022416161807600335668827126718387208810666544561979433983279801709074017787675291490824637257508506804287476488440293503124440430965887668149929631060272446403799481008589328121053369871319241795653024557052900594380047452086531528378759157289516090794466281425006566530605727823431969861926518822118921687063069160880804565844935358744894068695041048173790862817445919410256137496653196576810015177693653594618274069920676538706485273195001158234565022702538130963040451153526380660717149524181817803689255518719268363119607657419537391996428373179048622263719160988731399752845011956408237573485029869549523329744597342706518150489317998405455512872713786888829139045151311112253712185888043858055857978088358538248690275794390983051787346199119939482942967214057231664845332846976039904956846217388535651693696279398172579549821449309018029647522224870089038966998595980491782332136412141857828177613046588202556909184839415972384499001715671560404571485114796910660584061390599233313979920218613098385090048123388922347064629696289928338519207402591347458465146463522823820703386006008415861427337951170777344905164823754054010905765220815845341524483711225194347368563476614911565246591070062897778725858967606710021776963258653730654305640534753628976690137020711549748408386002573846745144773629305377126356729869988714809609952473620906792050831368818833819942727944145993250517153878480518718636256817433214282271211806403137181453782119586305596555810166524539933332712802319880355582333276970959180020831685706083944308164400773964083255727263914001338893183822528385882800231707314230985896572676165385794151759945556737707715247620488938441904617595976452373593417820623437870888735409548293867642253397561549203492813774949209549948694480590114501464825008622895538350445570343661125482780456650454366068075166124524604528708002872066731611385109501525436856095138722273696713172586924263977853150667377768870522696520868506843465062239529731344958566700041603197255477030375632462600570177645740322529292109328956652976843346555432668175213088527993002409516155231770750067219893228613408647135120632559466201878398099224108510514147217840705116125025088108649587849275637706306758996934589954888120352457152659939613376870007139238289204674838580884741503248987343459015200185898690153239834200050654505533230500436771136504457727397401134625045109487382925323343484182641600466586487540124629224630047536614464062008206498063840371726140490826658867700424363140533314443174153744393676483695149864064432472818834630503917589749747231283691372609477924360284807485879573164188228304723251194759883392056175217001340154036830074176112950658116081412517746947770479291533699559553569429515866348958403533558142340420995360570101175602371618218374616350384063221336757478125444216064902667875474505164909265771614386773590001633823543102176410484817622630795666704586705376761187836376891253907717422404743641721269544578430346258964442191770680187713478248297560647787679947833981457270632077608836434890003261500706728769107692975430433752232088526518520631025422980236796505866823877294209366431310770045442386534884740193241167833158580333245887786708664102902302564736298751788516853184993067288361413607147460852712989216854765079617893631932416576204029916259584486445177588487414678422580448186034512219041308252827197491900354723843004767954555249221669571934943089346352374077303130318677711246505564858164158799598391848633497451301714527190217795672246809792142968401171494786104845346894791370703209372694110255990936509399873653840607838401421683168072075074758090801249874219405234607643866129784942309589650620295542416057962550085092486245261251035445217225201422960582181719657392806185448911472188943079184085022043877492935833296271563393532918253159385169591942562679190915696729672688354226289097703979556406863213965943900044214013284975408807640286426746862143798605680437113579149735748093675240316705659074837283098885049324410984825637727483853445953321091538370648645007958091309592282085103381087862574595274997957781884074492866828979875135316220395452376922364528906537527263563831643125889090223060465496071303055668518843861403723562161333768631563614877784850448952628140666334203401915084094510747158229090505276680852141852749019171240909544515310780923308162252591961092404705652951347492961185205965231236511322626496432867133732717746723262880225100472972642100284744930124081275752723642065933454794093642336763560819126845738949430824835325387151571489328612618722744398853456403571982738485578412140030647822269687968090328165063495154318181199629880174710134487124049500430079435892167811465963722789811670996179061852215870796504571987275001440993292135773959394289739916664401328748767007357887508390414133766721989037788077491698516732142609954644839619172480358415827816935542139409721669894376259489938083931785621608904830825835430299541653521329410825011670149599069601135570740281153783514503835874229712734968587625869575360259136205805907003519800821084676837715017310077997004196232111498094237511550202122700452537179040457393610998326198201312482113767474078581452478623729032171521506171637824795735933120018287595869979121047897058763501842201786758897948991755876151276712489653256156633693508786628560997262087073521278814805633058097964171678977550240890465445970249929528645387218366385250120218271280734522623021347462015434224824890124530933551944565615274073617225118475942479510764695789916996531272470163482477696814640286895137427567167415157730608005177384518797857073672420619264516693010436052202207862286995504300202159122704992871214341993808075585778927968396114109596668620153408882798782164742398230888767397032972198090638484724160875416662490540711294437668379518074840837985089238473015344757250900128342670536285635009698392350415863224729637978486443702270563920668106228262836318006767138955593497914874251270767594777267068911586901694162611624256749139642000345767817346284478714781383069239821735227175127021222547568510211971997222677249980897563506207719981924255521882629844275895200289259719522760547868688029761553912462223650749468514239760871105563962733491771063114083315045691635425342401348289789015286466854821823831553374743860920016032539145706799013208149812367913019187555559161104383754926438883422908282681890564667909248450917875752865580267570359431400613822423026278699081094988875075023346783254480829295685594810901809743335886413820613268319017220494060815423812498127563608893775173670546467108318708039279930053064228922418088569109328443855855384347167548302595345804627581832058524416837193102027533862566730288185720167334695178247782395213659392995267881370617878434989980193077755195470577056259750671149967101459355158896432636357325745834654840623707297856864075401793059005892994491036533802699995295537552706304956021312028663602804468232739900721608963064334723090181406465470278663301478193746956442468766608234136182366759817784084457857307424445536128925760707831795687601130417219083542819949529008171355334288445069936856976443287812618846963781371402211452923688634694728640339282243315593704935917354557059314995950823079968924128644456933824004496574497970535399829940716783777839640071437170677874714971054608721274540104777780172973773873262351635287219908790510919449361733410912540533714114679886696899582538201681855884049698446538285950814083534473551998299906601960547165751779751728795228793984307825600046027222405814488513692656667253749165849840602258588166528921839439358546464329857436109912664014034992198635210369632287363597855369351268474694105243509854993425364708529316641652841008104221632421779852010303725623956199099248865286120809318028446856620134839857418401385381231721150057242109298574687688955495639782839738954893761621201696625712225598427751984554267545354397445453817989763402822601809110309019721096908477575343603545642628281064482559293029409410655937842342088820616022203379243906101745295627405507460485323909510284957317234791350561282544123619939674236233713010827245355104938409644968933676820766438396751055635369983101266781570114560570948837856330545480849621187371036164856661425904692238615184541413275068566744452925365000865472803585779148141986137722741072655984700278274719359946620067527099982948600866801095477042019071850570428585117616238607390380186220862998074588812814860706329361515623467831798460044923535789644505353171550100086080256902754773312842948949087049346964967177907546470805872683676617824108436472344604223091111898943743721576211765392279955153992035573711082752169492724538515578130305551499836455344109816597544100543929568515685847785668561392904300076452343993867895891704328419514864840998908086184314580946938916460889040159652255960641048669367228893415999400783033825186400377421004862670659783859707961638546842927136199115684362308249440595288917403709584505481294795928643592370053512271917387639819367814696122300591309591232537426387928553467837872233762333229737289705484145140694513041477307390082978368803195229377612380252842457616303383527801125310782134006684036396099599240639102711776152158035842374878408122514223082710359159427943271632576950360908268012255354922689564675360346744285893508081120893961510192545882852779256729925342810878152804397516427633132983781066797725328806545196880695514512127320933300602461771375793779241984625343381507000138696213281870568948483559636442003123154919858391742718497774259768061636140336803632509579547145428070388698724926933143825708740199490424414822520525651101364501238744684384731339668380351990530555812144245823973099363069055953373497079168841612652304353046853002468403772786403457134068972929865541474947431845731442640964180071058495389893397201014852281149305025829424925422912500152833720481530404408043634443649259645874373016105410748897861255368087137499539222669652127160906070423589579590638743470338398051354869207623376394397196188038081171644434685818528174665129433199986848942565259908956093539832094323557473972749351007200602899491168496743185997513826678996110887882382921655966133049664964079627816224465640973632234771224682487172690980714104335880903035210731610995133839592959725705333675228117894288991450934748858724307220367956562425763954215008257596893668223119432893940774171557151712898790977763100752405928702376444909922330006755230300623060914115789409672263418132810792035070665875107921229105711128243558713841510951462432969569231438701968821677991787587906330974903336102801396050274846506586416981836133352981435143589368969840578046325540590286007589637014004526562157948247716899161131122146451384121766459284781780596756836236685501621177484288862166237175641750353320539035679831842691058733878332798261586652499397533775588370162267343504006760692688554162482596673916116093029426856672569713152972131705306589589545056613173453325419570500788555445203866224029875656396440564834115256243272587371866376701779366767837997293549344700503802171783086159204945270919675124393702207405970605127983208101556449297818151726946860750856368028166942973391773946116862732062009782925438903648826248144969018111192065251936355942624297775608746880136352558058281554487192984940471140411223091409512222845058197590564480221942732808258506750763547841684900310492605851531577996488533806710107615003762432435316344936663093474297667489072991112152733781249471409595083745515696059391726731502050237432066084762198561627202712422610642372999682695335382288432260939622231285112443532885739230579459530542787102208224580324587922825661715456357150360820416349742657365681216482495051379301280519925351209286765465848667458040416808350840389727036071877916559889565916898666153812344637426983226441768213865980352471648515149016456633679640927019593897798118005449926124833664022835409546966611095153468104107051146841134638694966889310076373890749640177863565082948848911876262091410093040202021812790699312804644019511966002743235889272116358393427413947919309384176006559685657417491033228259874612059790558138517522150313965375960243570538541601100652021318798408739155163668353314323714817123290849036137525681040081336177525381717051178993144824677000154752679356761071311632414242830937882665818284908762582126213557632370531313141699217261302402986451340014007265431910531098317275139953595820182374503162208342214575366626560729006390311168263501128951677678507178273180407078284353680891851286010154111641645893135243988592999068314670977225303543073458157145319932308492167006070447437204868412553261109546354147641877276420700563249998459579117617735412267026852172931513900931681922406458406103547657753264347124640778999042659215474057682646542830890488079010944785887359544272277338624057446041051950912146166138249544684733269852823679074278825175456769860848470535111944509393153220555483584696851183872155165795804763486532756754451400844090799277253138216864697855817425902501166184846082051146757519737162996721245335545057617272311748425763334240531858173000685711142984875364886861487618404261668202773976699420796503012156425072378960454048108867135079065783285140046902945147166531360513555138525010950560248068644573838877170464096464384626517070520934180746523442923476164903808077915543192571008970728215347640694845876987409022928845053314901662034822188559405708622699577129453448118029565967212129217018902311615036889402392724963235159599986608769737269520896293391483230379357310048090081994328246367834224664002499107399902391162025732683260429815191044106526962071167020444537448251631816756624705250303393826789848448571287760482981617181252446903915375860007821711452027696312406154984100467068870998385506159072730562907772049520268993509753138049723444341639605596909708194480305148515757398744265372082491411841200401635684732948723004364663213866551874376966553994487982833282717882727139664439887136763251261216017372531053409878437984341524331546761599820245143180943216880326737549637514689125308396438221747150756937378294512718432248744391603552701856865595163789668278874388619634252669582554274002025538422582051492743003325650868089957790993752756636938396882113315010346180228865722665761014404770865288187818571048500359428091998916330546021292686945807392249926016616073801993439495680086473831871663170539431092832205917040750272451148424854918482163142113412173841693878453537927534246726475119569860374324196312780026248209148860313405316458224243383412643656075466239447446053549707406065808394899299498753238335308017864744549990103730454546038660504709486681607888381647972362313173810960678959031620781596903392682217005856517979652660436177656779305768655466994388119695242355464176662859970844023038490509369628333178300109622054925560627056589094089273032492855081469335545069376735968313124396237977243943864142323572821171089978306015058860689071036342835054205629605097532245392016165895862823827940605431023523823873437765427470008700700759672567672515718000059305642101970308987051099624734423390778950960834243326048688322462023089026982560411890635317792255328234411027691637041855005885838768965831210739927360457190619767404454352427768048199073423503716533453953628453371138200099920269900188731455136434880546212912082112065966018438483194284125879206324391415903681556987580673065630644652658316983809496655625240348192603730293954375238502166551377787843625645943555443908524960302608970386865868265238323844588294036840336953456021247754679604789650070810728243387365890996349220884162590721508564082771308100519581097868471746125860023423441528833724772069303114000946703060758503005975001908974923175572641322037947752397171017804646288797857153080663294603288579469296316930895732828125111141969210952113282306939197308943923174845327356432701388887876728494605454784070739110229129729941055443770487593908336909042284733236672477484713580034300255376760918778052025111238042623260524419596020892764002582043751550149536740713261723887509268318802761715047016367684792881842342681125986834213961391059458179000320522022091282107329476722371419041011983430793534217864709585381924882892325478547888686949289766741006785798628723651908035338020245095072245982310139371188155841353280846239356913908493816744777765792216452526636008257099389928480616421034698790482140469446438129954041380875465164389966822777019962629364459299885697924303161584893925563080148155253095477427615414133038706628698400631034403279582342814623732232938904530224864973628665823995926894992834626332376688749471391319461212011136648205254271727991348172998260995594722724963908695939737399971394785171401255668513377618586101989871868017489967485610629387719021286518713259463103773604206023504781566695808207608658961636007250783755381255700664540560912406076691635326008203465317622628537473740641927835069977450004853622203176837338108087049095090594293853537545993837833904037531331634613578174765244318394429214804621401304231313857572422286668276321320599058174786783155703454962758571845191656311404743818581688321654807851709432364449088263445646337301250032055980002171448301190269782864666233727642674881112048334747808144854179856425951410385553563186188496640240905248492300375712489017284113469541498791925932534090607133660831926017023485177998047787833438861351947592961307247230676944503296484309322051144753209997794047365757606218104129453413190873682600058383452386874362811641878669248341397080378496658950839519816615805531180623190474474521156919506750196910456475305629348538411216234886501406299277816741882476249011325118628648564209461945065442294630305906491163516834356856988311241228883761774395292724015643455256385964212033253962682340789358744664759862549968248402885215589041485169876966539439336826754458397686274277265851765475979423987213394121371424746160957733147268040114010528868719498946926714592047246152955120433366450726358872113442857809522553523199218833643236516860273776836303813376864801466633252019384151740578053563753912662501363578361391246073224531318816447452586243883992881870441706382241829927430293143983470723274408886822314828220441976461514821613539047350755935532614594750189675371156623335926292289445267972911269970987367150659139160488723727950221491202180098647286229337702696684599632057874939442858663076320945774975925567798153144699371117964933161635034060076815509046037054671778671002398226900560239169126315466413520023294701745341083059053011139220918277063984032265147748522979864480673826906183403506670109657581066316568844057264212678816606544220514464293756592035390837649168862401624622224426876774730719795185403255000777394268291863181336011665704641375079588600069109343605272073099718524496296756839348935325864145352199739668906444227987023991695681904443221685839895953910004303145763748831112367469412345458282905621793163865177130899917472690550500071468997058597531282960538878720345658095948332795622937303123260022969238777218565869315009505866017895987271344477408499869792254802544228326222918827390032866660397964748668097799795602685398828074408889109262247615321016454677147439443261721086633027745420125871095678924749878490604416449214219173682589041118628351834713836965863365297293839047040998705449472325334529538571419742942784174618759461273813241025989715593823585169409500765008234025917896612975739736666652368179600652770187669270776746304216402466240514130107146725380018753538415202722883837305679375171924666317989580878698333769054839277393139125512147158035262889195399036506008907480408076933233849718718872979450814319748165268021857995645918149088122633975024050253585507569050273717993739784418255357547600046102614330280578424560869669541526580028734424297735539686798130050528313988273395748417622367459030385405514067304996773627687554048112461039675393104074512292761539188195715843677739087026752068678546836368173896023224291730754446890546846677392181436444013341325509453833666861445511763210962361778263142908400482457989996656433333526374491771270807580474874076970193823796333656671356696107863014784663512137646263576960818018604430918907186851063685260877242014268681149486196514421921251608870063985555680907847981791328779482754131684449860185939752099425188717740808586401075524010528118303791902432895255300800083350630133100840465493797792031920838169462700413910852846495392089790912528765068777022745529758318096461629621829968741083899698581924497208080550349806473192789332916698363735359027929199396823041661583947350974814459245425569531523788736374757638035647624228441856586958680270458831450858134327139352039609689868346835994612976192885443612223397371279997362991103711161164657359288437222284287585680311948119344984302513656083537961472295228325528427124326398647325091975734653891713493226565074922031290593146063421184347526584702706895030078582891993389735143205213676097386906959884442182363055367982087174790226212571648203546154004655592575933143337411208042613636897172583535864331396072995925826071653655016904641287277133914160296431015866352067184125333588284073370896823258439945235809774284009984492677987544910061280101107694712509834331679135047035221384591745186611251211120993027129629517120445864264964269181638716816400249182376954485738871240425458740528985032920735129156025427884822959881721598537603252213537447924862552765363713237467531068657416412613918150761354628072528206429280876453723428675995350014912433958697409072084168713960509862936048096184956222254638494019528463681882491080870650972952752407736568572906484534458434564365650184160181482963321972842504802504473095946309309108576288712367276250152208881426591333380908680049138504147751436283793001381839464393668488047041191693103216284316596224776755907105570572745683752870350598026628310347421232653131762521387364398853692275767055396311207022372564643265416202123845066558226830505859237079634752202789529661975387220875718494378328888291240409598900933865362888267211311238802730124711453720209831287253641395553131046922887132383557487016346033077906151744156203885972097059387588781231638637656513938139913715195181551487693146855614447655762107042768712653451373034578447784016225304361484614538983294888374368931049241825672468687806038375048148116518182524545219823087114321393030561648150833067385704646853185044621684637072614164871937409441194161981632032617591437513962676289990524805309591603332470334696305517870155612538610213744244031071732337615095721369348972949926530820681676248645695550082617725485921712892894912900812165912252843930855676498924647290584398074587486473101700100826345690372774651205954763648909184779813432758641084828726028022776305858500234442026409106953713949924973133965923657142614564610930558391268349812441028125550730193407688253180686229465198220742879329343175858927503714869695953116423317882625907835078029439205309365331305797929779304102735133823148275294193176052278003000861522317497682495619828085932231706213763332985033079058208507004594842703288353185850902232744797107339537345256456185684276577178444124160118313745311487918477484494313691650765486602953665204499829623530157848855176295439689585634557238376817250234617131070316098460477685915334598427531266308854327206787807296779540552506575437496688913169990285513486633622205518372901957855764011823814124996969741584809711658987600378663235922095569384177695294160882519853814550279351369536721506780013217154263120695542556598384178284256219938630810417562848017060567014732942771220457507495630536709598939317392535924821703579364921628786582975965049806504401464648118432401269871413583793181068360967855604480393435127005378960080931671166771043499845964457427119055425422924440335466363528772583417687283874209014514112536995782462524589373629995577060029731204932614862046578000006570509474838705560134239991002340854842409368394788466771252110717524272073741248559424319064159463980506539143894249772648806982339980686018208067777565479687160703551904297486382525253848963423583712124949717953434208627532853701519916392103115410733614882629808931591220695981912679595920368303678719279983104927759416261008056730664753576703621011337678688374613875416533488136412992468595866923727492022921937298459898314957552707099114253085843666814262897553096706769090112790803681851861353352319526191871094411460067769781995359736868042382955963406455542076577359262068354924672401000184697345740454892161153901440796495995214163180128203212053242729578529874238859892130799116783835756286329407260611572078462859712216509935372474501253911127712723371003282405853242254238929322160088124627899829122969024684439000800411331018220860102730335445479812252200300404722961219095547636450541679031534371151159564922920418316361898826109817501105601849861102057461785655347059892987268611743463991997790692030473453472053580405583330591866252285250096172118919104157848350444384504208160915324538542325053443526455111087860043950148528130353614428356252525960107141168571167438638792449166187630468669927055193266697289761437950888282872501079701932287558635137032522740075200702852028887977173748421519257901610102029536228998890686537108972829088127921173656859611243059260609959478933608415364555543542472406066115221210930889679358497708931084222072244310443143152714074270462551100381594949191337427799329301351790236479310426395202390706726504797661410690436438094444318711732811130450048712509557341231626520831166019186941602334523530054964797122776191743671185829330695382980870223258983761236715848171929962377964747722918119533159448720240587376773741385084132331285524758930716261297007216014671714017857503509188209855243639331629962007105181290834343836114505910165627653188096446597529228565940513792922685340303366042727606211157711860670032130964123746693253116759592009818511317762647209228218576680569628398820200144489056386981314573412043998992040481481160832572961570711244443108845403406601475155823676212214293624138749051509644976246073598787017653308519521525818085680907844780387267347064262163207671920936489098099149170901739697081840756551399352565374252571675731908394124341389221434109045886330426312191643239392624575514747648583154846416029461538445032013519610567509089100567467069999863308742133980621255072737924387014416934771544854347948406099900565292964903693886988587982087753912292489142843920996665433757407691599390669752384396603734253838973986503443638874362519916570914060202561367624112677999748138665672752124860664421604706277396935368629532148761084925082555540386210290011039969910380585645801058947282191558857622816778640587185236174764549908182298880678195411829281676558475384678488784210598926504353979909037887146893855930879385087101582107075168630192398113889113892466418896374023793548868280366284479976881425831861594403038435595550478340481681398751467141309626110221141556844912979490612119582052514684441442994652578318889965985142838132179630949392150905791393798218851544105667256440916956580626937788430674873769600897392231567192897094311950961204508203123918231761698546516276684903295660598658571070177008806166542737905020424362070824370350652677331730975765685079258140535341776669782210178404120597469669177708490979817805420019463452293157644880777791109714020697161454920482953014595319293091870712780399625685763058358923590132245947697783095032703968005856707701376192549685763017867201147487998794117403051450068377999558906259103579067168028041013936575667948145998882251670481097691993433408006336995101056167589808723270412627789311992214587091019747262988933253705589932820616467587766293018620360148431803167923968445402748846792941512959605500102403855949390961740344418479451233828611590082354335108023268537629099648035565290744305767214064491351495324729879820239398789708932550127666755100173983136140739719246040429605758286288881848402211612563978495763730476288603229773208771859151001232659953048850919227306340971528126972494907750054378437226969097238661836263678106914938473367920435544392868081417565680281221336618268274646096798840039462738003595777722110494828274578627595427322500025685395950473692973361987244916127724498627464298289707463500829718135732437439908736985603376213172242741990939617059349721716312382809958359887248560980085016823871062928841165514087108170104897067280831140808528984167810501385027838211575705068262951725246575833337358128181338193806675680076905975937333345494211351487703591848534419171380588577564922668341865335777248139311181355566034482202564794782681863138991750236283592639762500800761312782200397429807804559354050394924730614884424013941447872050863668341502715055211031237355618447788792281204749466705509799126213526206710612576841646277573242181372540126230973368683307850257687757269455763556013158884364531018870569029044600620034390516581299289178431525874201448397333234771217720972454905279346404471014649371361187134104083849631216979235012827498880883275012753790926951855788738266742047559074277346726392813763132632321475349464536954887196434683774790700168159254260193811185293768053526377300452235939068231273425163402415504160985041307417647287056935896718871019653142663574556091339930225246003960883560082982931020809529033144991873141563543354787338894672343476619593638668856037680502322927224010284498113689409241896196265892838696462111171068038743511391725871047016103621698533503572174526599363867901421995339098216537667039473122703975648410788867729168232273628686718840684894824547655446987547225962963959570717223704830709935212505900281534139439255440465141112954426466899349145233240293370654246268514264972055255185083332955099884807945958509362763022876091396149679810025948600073871250162538238816267040762592907458270105792984152617885712032230386941800501607028203675440947663205505378391913467184213956307214795956345157147084286511053438815662101358678555222941539677322404425080541124696649656379024092574589350987709494229063466669291036865962905998869840908732333935819408102559933235914204264789258808978562805044101049740663966334642697132242431189871148342945568868575698470825386968990829041273927560503470114432086896636936323162245910200846227253435128773034325971481648886113894651878060491535860992425911571715003328936093744229641203320431370013537058818148270612791421975705351421684856694234593461761348229349657923611407283976729081174204029829336331400236169492119276331529771676442828593124838307029999142734829359309436962886863639244389431304619796650502493458848232545394166379727865807841768194977197359311615674758354897991956088790756844522127970655712968385056650819976211946923783869153654591635583904252174768936524948979930317602954082647340011257378659119050929361815844556973330258220431048243389100345445489740457050449867471836882792039945038303006718382425704165566681683827047309545350477931773728622328171201973987092564316749549360387448253287455352422793752821730289809593218170927630679384913075603689566864192963156627035643770774351553543969334540043570156781263671582521715238094091341281045041434867496025799861345961070744048537971659936060221539215535805182532336032588263337830556808503005226238367251031705737015810908837145948003912159896861983168206940741402891420279470969652663079845506141987443611617445037751682819218787418558041718600652237071538093122736850451474945718232618767351180481719704837510642927000477577860625846446633993408478290843289854320284015812271147156708357238275324270664144778357998465268112013288356622782723184767120349359856603177994263653631607970083626808158224049231797916803379586511178722199718190485913278695372685240304890210842815214442873439664272292412075945501030708444352886877389855292373163813703055302776854670801926784288208129160847627262616966360588694087375159440490104611177854358761757819894573437731361021283424817122199635861209774096335356798633005189388531133671304402359632685975018254165638159345460981478975004916784386614536121944752321782631100336691801131916415476541602033062220882307427195663430219598191893351919383700277064400785219355156092663874628558994727487580645001316694168536290320536501775578338523291382923366710100819070105898288490661268877857935791598586453805384664621633497300916586109310010775450867163618178452787032778819068055953905989963740723935105428556867680457112717867791987110810046989981256152802128116708981160593872749453629298439200382139126804843711856746307443241165346991144279748310879135089330097669990700016440640427056802695774633809125024676534614945401241899907244129913961210070413016324244390414231841535471276582060067528926337300324385862302256965616154036912002640629713025043985714602887286610652883834026461797317480739822936033381145133394071719047089903712040402167688217034145851501066820604803087879664358426094334319014338526056997247949894225421814187149290638499445746607715086778239918442500432066393993533204282541828280259604368017812898316002658646483664501497165413678852705280813107627493998316481588313120007491983453294967191503460286140992096695758069634249692394881093489339900297003004982722315845597035513408958333041143214273475736458846212352049943515600369258728184696449958034633781393807304001659415248789055357239325070957724833133992330094209975399272307413078020091528128946392380023537702015222254330867166745422248824308411282717874841216802188885508537716858686707846841840648147796616914909439192508106457423640580513001336960501917172236086240572260114931957682859395570173743787315063979514950613392224969703383746390077062911710696714054729584948860370029438536803982498697754628162273266411519403053947894670517400829232396595678432483142633426009365867479182642200216712889691903472956657003380690961852345140701027138863634476301074682495744057689571073625897976021003282788785468362300915471889101064896547512164246723063238919464525423968666200713395743889036717592102702750061981001808263249559483941392304236038151280600002344922461140204052461057513041858278094100552581521221040611774235690511284247806610740579395658118473471933959155949490082299416782280463328867057955016300893207931822064219104482737124416940527697100418448469466908156343073712309308876681399838604515757355960794410605644233858570065896240208251642866783043170466805679653678599166362995483215015501079878554960433169927705512537082599178119206899265274896456253224799518319753972784376607024725616095074154349546521409645094693846024936466070268355962953764086861011534554435313999741789769222355713820637021718124412543563075207429561462061045088504923007153024193751857692053822947059729059756839218987811421390283263972167693109055681589274219203862975442525379826580706913294948825140622566436804041077512876044745866072183580821511731292986851889884229083775294910456453259454544352928948847255236422397645619658254081303100490395744312325975497515364572592304376199496814953348956950664311427043613008719575951991009228127872937394404090543979551721350316166068063851216722274862396225154864685239313012337905249454550474488884385708914267113117812012294661627840959430795713298734579789043520788866409016681677820749567578480184743693243849043981145472914453288863858286590530069625474625701168373528235825384290441439077023918625969857471749923352919730004089106880336702257806105557262977990161476110551517193248696868722681710564768413893701031425713021360525591523517703179312942254578575632746332633565290818836625498186352734876535454793120029137260969175369951885332813142202479169512539566472267988678287551023231557558780758008256350581284451161354207123942809164549289933590115373668005871229403586759824139126761529189983744163449619651607516515286978235525560591440595739938715717798412395317185318217946196482888710996151618811131451371882240508861459113532056228789470355887290030642747125524071283012255907549138056692441364229165833699568942945302532980364728375166875591815682377938346322101859642811082168094635067296214038530350341568229245071434601173986304588636072531959018777613493859991422825163662924858959821233924003897020037493249872608236013328711463795257819354104596114910534991705233246885646529459556237945901387872135632246891874760868033172752629299766914085228234227651954438684321119004509000746910263959814299579932364567394877669860340146312090663917215434922870757054708211173870414668947759995000883025112424008868773198373189599974438618170700319188248366896497315210697871325688595193416605764871972017843836135781737351533215612990942829448257203226539782472612672583239683401326365217593109507998446850640343835659073922105180837456557484202219802758702412604992893497100995099407608635690854484859589256775313974801885938397067452651474572900528382283871574772713704836623983449139241744068114830567326273989657090844712016350882685059790996599041153174791132443544698246602153872187860573618733548592446590323999440709329138339683978151881197778730921997860135366667189043826652441837326741252564342402875885488260672608769096698416354988413596015884096573950397321438338451038005121116321161236818175763642704991077099368927707752922953591650797449359250031358942374635762074085457853838944618549321332212983305631480459175885908558968792015071901087125949085788880634600652045003675620151352877417092606857046344539033754550190673821453308203728378351356525510208791898604287067891498591221894741988214054715810383844588827934521273190296394647431934354369223974137060020155181120725425787098678028222444999354500070986019180529273130898872335216824196271651027415834842412760595865637034206883715488693072756841158815371317073976434424190040558698746769058040606716742859788787727360788982490163138588472374779999341116540890916375671080896950103637410845486403831179022780136727001389423286568430294571181136242145325559720536429326974716557208805824117453082251680950877884333601735938116207257898397951881184795390193485938166152918601391430827188156912834970206322770855159453729989488824627741242028432110552347865595665638008713054668010893614776907302838921657133061974314821924308702565966452368192731809648723811143627977205276947040495167853463843613132027126056367530593860483758943858339741297044392441434353336343516786898985975085768792268588440854488648881645457823921576968489181591342763365171116723194865011172865982487659520201158378772215846430448755292563574316214234124904846839630521793822267447061582763918341408876164235024268234144975433054664215782497508760992346824026739134293670298695184598663885580331646524337986011432864577843019522081246691589958175699640769625759655059594520296300693969963757935787250442294449462259736969190427729727072098062362637951423037917883636735362960261371235556530743435355210733709171334043687174472538581215276298254866171377744335145577213683518109721543555546650283725640791021776397222214085082920607982178634287262496982240371800178972715633217262760546952072533010480271436222627879386691057796356386710789728811366999341647353874042675275132481626798347091883413335141594536517351566216042239071503188794278250220817179674196590641464713170371613907650064150862520105581795131937374612058860552771268222815220179331511928335089348513666392615079303104308358292483097089674263559282504306266778445496348924145048714995644723578541615199702897206333580947789210635044866466594939162952338215169982263708175577896956556306313909438538161480758978136703811674099627793562528808403667087033496535151598037865884545091803537139787617540715658387816645208696607301963701613603115980363894485187602729267417483299980867440390530746498696542581337612678288875527407692317595468491069419708150058456410006720494333026001139315115267304615717653164147135024582205219364252141898763415660566359093673018455704735555109636615605128981148193979248655669531862290161344432223792441527101652700544647262187214087643930979209288849351091394298660163034989182750714657466997622559027274799090019932267460930573352438539870224701078888201982055686822846037282013512379265505932942750777633984690635252520985938395353533009232375901493597225585575188670091977023478375541465880389762834000632020891608940789862903865406717261112829406869615017506834485941197702851181226295913880015818459852207054210906066944777860322172720823601044003504279629558683058779947298042839345301613742212953415859990413386230168616439243338012566953942288437930618846129467842675429101863370209771778443317837024472528443483212517896866326170569991093133602686989699601841664698118051326723976569835230526314390684400738791999113675154108522800848995990265475904710109624887089692582543671145815723814147514352698387951845059819624913327101492614198080646372727744024391872091941186790173528353517941520643870653443932048664895408979089238461137500335989711529616175906154103323330694627712384732986381019322602823161350121679264092192707169614483563103816367701474537663409178558557036735673471046407701203923698616195226200552562709579876684717731711667615586626236835008796812051000359262873761266944503402140881628843984376926464352261472862754360556209971956505400687498715530843652673621548744545263671138164399862394166021321116286716072312376785861311067913209203011492641851730530890428509802330031311138823047394053512347614228222266242514469584956917484224784074392284620859395256339623294316609299485668383992875110967276787223126364391552093576628597273314696300171477627665530033414122542733499785994297358840560287156038431842626414284679153801390055801725287862665266260127429204695697573123524737149090775586274017755276039865006187517822795737199318062544808918952760594145743549448933986636437231965314419790598791116909490246692318357294153101291745841550961521864915751972118706980500739486516869891734338339182725819932015006376076706448455054128050141688926496121131660577800703699625503636074896141090447260173209309998573052020590144530934796075878081826287107618004123079752458549429263524320006573033910365662712799234642886297593402213727488234099536130405333578257996333058293936096411419402322868606077016699224997644537733364826191659293734785461822626192518145066666857356463635263966698549112111341575614004614203432321832523401234761885946303934992365742464092694917048840235294573867629833878889607073759829970164309227239969197293056750392434930449907876542431133204031000271589967803824928783349401615231736728934286267055152261498771222511081577974561005456067569133178484797132888377711449913514588726392574309581637215093049039187822228729002164324791082587101758070729729036320557663344151030530580562758038186326618775238204187656535826233875681591986888690592490706079866018862046181138462210989248749616063542261314412142031475442896719780790018283996417738609503325414260461051097460206864309927094485776839179703390319944987299166440430997782247367340300515736301566892789275705652586733882523437406678297413823106179697358431568733737878727317165887890691609292592447049317018277044046587952158453019459736792156113841627412040781795050576453926160486979063091232262384117680057055263422756805718419655906900574157687155552924604144832065859598647195716474716347724837021425483166354850801019843826502167134754519023576715776216704486141723932792541642212556032867126543962104134506764268936937013484971738811227028217541385174360474027553872197775657640584418504329585132788842570344040825410939261241470472203766028874734212027178964527187320413308838316857302129523805161023224615591641578707035092193832577536053891632167174211741094880530821978554228940923952012044501175120812327173411653672582292458868203801964510171722441432554120929585729262080034488760641850910605219674740395752833227962647078839400784549342741618026604546204794467696213240855491977988989086034690963747105843632326343103712937141860202305033905308774666743135256911451410863079542315976137820952610511894078835542826976523630867527588905287226641487119550814909972887878013994706606019835292498813890673104911023793770436339143978542026355673164362821015958947801819301870865283318664119216530149770529662298123255664765985991170478165630759675042627435168654179356988156636332465967303635181971946989838230564448111809713864510314795935877352922070642006234336970806568470059513574833955319523500103446064942883880815359099036369911018544232270695286341513753080487264565304771860275841759887391340751838920961102075394589975263489426988272049131792042002094112720579996094020877674809029140369882899060513618007562920922497961267879313346895674927113539838487713889607051075197461664190043669941441243191006890634672774527453585423518431563842987236377010602841659140016907761132927227430146705579580150603798527574613317829723448085263826524072766716364564430779844725213224102623941535407120179266847538301888864209715816240565999357372794040419963221488724106996179595128919661161896434125950465790860105426731790008733039659505285552165135774925887498990967414650620751873125944279850355285249213603529909252523361610784537975039674954272881726007723243625943670397123147458167195904560131786609752100498434438386018690364313786895229297589983950369720140556717129181503885700994799086908885326615817974324321621035937556388882082188543969825307091437106371171071589974233934846854992618337970983782037398918165541162900428287766283098998054862408401064402070137978829922659266990138548777946961486146976669119164746327953300714200962874825335506534874856031289689655609391826398060088081791561436095283678098864861878413613447622034571909092254730206603182261280310884961135452033582673631382147004363472929130425564927573585805028476558481248638522606308524616147085724221660786459958762942182625086905337079964679198344264305953524986613870018937934867245634713399005959426726953201672877024611779622771410819888518073839116453394910607807906216738321102724106488587634981360476953313592187368877882434088741484955026745771653518081760013861207009262671783296957608325563946049793243522489362175666552912648496083527032511903429252191555864073514669605318093388887026274839325825674745355883936919418276838109608971432133209572108043198486661424653549199472186098468248176461627821420593155190734736621565040803970664343434578284842302236714923265975865848721284029676968199307395509891319047659579086108978665617495497893491095320927323994516811261808700147753893557831057763139774620697795051157002712097598033086529515985868479768208230166092428666190926109465885729957025180377729222272261528310316375945866542835108882515593920297005971488977766837225022971799383347367520600247625614804101478193464227839403860368340533327715623226974456959430601404380234062098517364780533218290076634451511468804517026026935776767116612315238493023709370623482016485839720993101062983998439529249935743449019517817653337639727756959266157382768013095112951122904954737252033426648337640633526627180020459540224807395375094037652393356292443031486700776134152314221478026042226692740919992435253764528669465169484024183862698554838867556985221030663051941323926954888601889414039112350073250984395488212677228455790136901046418197653227297080208439548473379871377395897203692681810762798237889960680763796109468329722278382907527315977597165541253494229878866906734605090014420366265685393228550270473358287016032122686858653600328731339072603057248545253015822757961698642350803550029415004575549526755085316851024622771983177359570645642425752402703310672555667093607729676975256265101501338455581533526949902519401993535788714085557185204026662080415159188117061069841964685277327658830156563858396212789388578477077995402592375506852994450507330865026152438318710676841794421268110587862796391489394549576789954625574235066288122281585851640032771200999528034755208321308041065191567772342866574858474912182890687432474087280927017554622984061977822585116326316593203993265666055731342199555679818769977544785433662986777776923852481539013519339374946244282050483669966127923476809463205265194204177966633927512543829489523846065354270388600603972354891549942133488630807819284331193819332214281894246159080395250791555576009758995855842228826953782564606432514564148787415966115607066294713054576922856283959173261981422691593565036828467141641595461470605126366009532293139760876014583507970459825526875357182439578738371871192308563174135850925001330069987796421357380059610534658465831156363162978575630242846139715939935488291396547342746202758520529338896874449239583854973966166798252652001888324141272741739689467757147850576721324036300335263899987661740023129400638176746549467879728379934412551652273831777596452108392868389005200724447654590070251753235868097198705352667352574526428543818632514336194139452032204723520595832535581096084852795488996607455917295789482851577837579894934896823539933033884392274520628350504544349514725570220296551310215548460934318102366348242982607493548409796482574743368569216274017765482045678281130702125246283902924412876219794811487307973546334091672785427636360418658542532781720028222226166454102652911502787089940794832651716498748701557723716478040240081640818148208352639083431552261778035630432374598429144238496724253275322372766741568386355222863824449282423876003432688351264371489300138015441988721308512931386235398465926989374150744327176720749535336552276810273460316271449024592431184751151214018640898180636223709872588303143427211926880204442106625233923748404183697570606789636247329578802967024355402083070726108655658782749729782618508940179202005324482998516795013473735617579151864961325899825489216037679644642062063613643905887373582078226488816226958344661778047029600894963633206325647733168635204591468798976500652552347485174076918182651904855623546757363021858051125332547203754388660778823213789965264197078501335894628167425478445910124584111716975567828440887972856627923655214202885869074035994551224268411910598616443899526119287772625788540631072886320265186038725366533636322159966796900294232228825797343521537962347365579705505843971163691207650272054746873897341886281782850432667870229065384551888028403195436526230950384691103704693861368313734684904374527862891653171633075545321171246674663134867888726251876638117744688136000730565069346758517435139908782356488462694835116999224816017412833010715716145444795763246356022118098313969754886047032471043163388607682101871719906499349257114270509061432902359887703760369526396068231498971804679531988320262996886946689705045163597764361299931085124331196766627937718614654122935770263833568971504823409109456115405896503432410932361517855240455799530791474981939038780810005245534223130548646783703012919661362654438063458766847003407374070121487742687265274578626593974783954225922773957369387473308938915319746144517197606147808541631877563406520515245453933819585487829738786961268153456329779422123198100310153135023549513569181293844948207136249494178065647660050112724153161092558898680171637395905242288877684972454570702921991345177152084692930071447902825442197533927110052011518492083294941710860073189121759117646547771370129403935914984224776100856167412486565359936142681306765723883249211439848025889751395146039355136846236773413566551364227852444950378826611754226807788398351254994628219096170190363576585097385729999226733013079370310948101442371229016160412543610966142965608388549636069746149428952014237102080177214517013657470090752115500764364801481844876136550161451910021735402435015815280235459190896922039611267435313916744362366600893818019031873447315419082392023620126647759936718093452756944336886036020705176126023651435334311262441802025016366403676985761656255864518920698248137730611105269054429987812087211419179404435673253250459739582211907338202138024324069774382963080620313452822630727420324521203938855974511038390933216969513942712382222075623872500089176503266056264775415743066625696302158036455191258733684484301148361335177012064950018824423384347879686359649010264681488512004852098660550290680865838680148172356819796615071465761403873040235235426846235986411767874936061030359380893282049223226847432885641107568110255549641938238759302458832656772744508230161153179965725220793174897516660782705320429727378997818727463690644496477481924378998341312004085010334558766455405412452614959279998939927950700024884030219119627274826968536004347670227368623432921070329079818448376073416883643715255552204761562454638545446098690300317747957386690277040492929678910269323370573496910708273802687210085394922631203458363786546823518678169217408724698545639857975029586596710702316459951983560800812452044185793672436670066749629366137260831905862900820417680150388128589196024577624694352666840787946123371687084204405008184714934761842516901552265515218697686644260821608341666692884802188963384058210237202775068169536664186542068505252149240915504921377610097893730020504547168673650681044035425748176388389938188898423830886211085914431488445990589737409605602969779778820636966563914075154345983927401859362048219393670331296895528555164790878414842486962895014329083305665713571910433366074003142545707937832567094638043158927681275578491509985769801772804371749510295957413646759181239417901985862111487216985012355035237156558877294234671589209767128135329954416796128224022528015802540180881960764676607343446444169336288288267386608034382362096834873121388726841217813145897167140257780044048077401516250203868908369295325777951719343430534117480714309422417235246854803684026243664040271714428748259034395251949986896988805255826153739822749717991522444939354327772071426871576970818667250411818737571984291053215187595400363726940552478296569221358983899538981610590214966700232378441399969399272305053481082040518290759392214014986698458854327108210217910718223686861510898049686328527825013620143102239584296670187929652202388481280194039338099236604202516999660932511346770694976722681166433119500654203830822879017669130066160421161366235291685527837446671426494126805587536823651162542332447563034448000715426375500262679093242425585018358645077115234851628363979504337646595291070765092842901921341334445454316625483944420072363997523907386911292673165456436791148197994687669416010756638727672410661777701922122528480929518081663943303159070949662515066924574370596139982587076595644067124735569262288806947049366843893530557748863411973109113762553451970118829736012695303415685104893220764525418914094752472809493622775487772093530018585043506860148723472315519665074818138772619426802324987917915968517922206435360056044745435691801950789361042069011540022558011677676401200829214903436357573884671359206871237397734254992277440518342170955307723047393638107498983313816951686533276430858891004099881325713143220623618116745961827915224117563994785588778329466107624881916535140478884494669699596806807747626866375798696758188255731667995017532187262452578343827855798400438169502362630976790104120735120041426691559253086423777654687185551736176474686718392355621369988934843780269128703439183762601076489666867498611101643532693317711766968350762612115890408930336174034892631474965887421644705352443960400534438223152093053260321878292193402064143821787162922308264803828384403735124273437719383240270860263128442526435689120237012616593363401346748225610192463418662549187751983915882527219174590667563001396475060565985352272292634544282374739353647415536072313634686979118416707367307886222480818999194466440577665325489884635989200560540897394181499820252496316852336621666700659038185300663330291768044721798078010016163470741714108898103082005452456449314413982080447233424094258513654877685741507777004299569678835440387576892876006369521338873239212502379634892929875976452647856742857659039833100834135732721738837379866718556937836131182569856316705255254665756627645980864637889180048112598150181433748464715674321904211480976038018487349859332052659196450635127372579504461077284285657966748935715602195856453088425278662375814078619695139664035466819232927070753027923424289076101458528744566891956046111890609903253122143704988547756567140833824855968231812059009086039132703048715173625653129930229484987805474859569018370706594409289963401442078668505486502190684320915268972109226056763223496587034119980726281903895540100380598049152597657012732557834048345097940553379404735512068340893892409038096488009497231907975170985567151104622714744146189743263602333700830032848745646745744160133738247787111544919912541760360312402447608499104377076130195056241998370135596837651592646288089245175531354663849097056758708470191668404661002066596468947594861082736576951990775906868864908416659609527695594518973902487766401277995010756551115878114569065006670173188828363140253162874850169964993412651416330958352494496477523645560481385460682203800122833601576563162877848072282740898955286738588878952684809827858270297513443837552562438587738191175656940316028524512792512334686120849657917599240507805215989743134550556717954793666320070087155309986257268825528848999606472134161724674819877845338014748348269738746175065776980971528397180240705039442476153617368042604484083827324217209340833596977115629576122937642756693640216362028000923570603136073536773389917692259871588336633995179008755826801920756804362443790442063451354098707044581032238740079827090261058365865792986621803756793939293383592501151956547083496976396212205314188795905434429778680447697578510165923040895743970108499739037592461417841761552525126755162014103214909128650371350689973023059980972123606918534682317863002739761651734296200665434191983048911925207063746168221978212060438196204065347090261498271828378926153489933016802985084776675138501423786830855172281617805882190908899154046524135245721925288530261840174707358851056359345470398502642602504460448238234199178752334728253304500724664633724782323010412700628467017037719923221283310933989303472468331440248606319110472456753245499955235543321143462702168552799182400749524470133426476030074352145809837790178200708360163140144822048385180196496087606692189254364446692287867725789576299658832559750081373135435206613295277125095106998132247397365402337084332620567121245294158729552065007801385717267992387339361877121472383103259942675869031902065398947961197728224195170859657045567957469022358406046620629612131849189859220716285412603057150350459011781551643849787104297530885406297184722598768991193210676835640232704599519220298631330598594100689128294101189366504997489571417650784403362070094362222882013288257825392606702460307338766751476965281626932774693238843779884149306541871462293750014854837059530985588520765079096978216628004544794198000916800213832881671383678406798825914760059037486064741139808512758239215815765507007085596794889466221421957320899236536858573344338106892434611158963815344208027598439421944491345232328491386474655449055091976296540737094650621698939123663660490345316602967097279860739074306159396049334527267649813780732839619960745097114016296201959566816006004026927090121125760097960521123929534088592204439208462594799905595723497029777187534029910676070322544296899886562401043736892481941504530968314746377871116738949351402788979812188802952406391015164149488070762172047910370670544113162731104648451290507374856538721789579393492960403674441363369724262135927636704203268793650030264138906680627232479787176387278500880564419854161570749759316582621793176381995130973898713447609241356249886098344136062657175272593950584429412487514923448475976589436634632265953994036773451078276003249449175244672862799369701850729830260994836689748006652583949893990849943495314979784503636796393140292617287024023626503893326283741849466526623840473401188370558627874915526314648693195380623523923322191106372352381521878617502142000620565790175844976197167053906343224966211750592050997831981286917777635388960687044356766520951494847799333664873131704069980668888551090805853046030585300577010805852968175237037980865149641853746543532634674423706226977499597417572358607425570044551242627492091293774371352655372510028712480338219177503174975854727695101773013677340462944351643671491452594220989840322310075996378132955030906614811662112046268498568031776634108074304749225101094446297474467704859632010020036822294663301081333789757451828591332449696515623206133286270312049435113137901895120358459638024780290883475041269914482309596810408376175848061390709077180272840623827907770264245340590951986634938817338043288500370471144473049498639657571929978308915873873352562569014192900759414187540548155092427246902022970145934999464452257727055285214485843756319759461965356707827987826772095938645211717802338268964026032601618768383633149725483768843855792091140831143496982614986835073022684441863862875140848376468388350825942740421445264506173472797830512756436851250392345837291750825035179992358986787585474575058560995839258073803951135862189395203174296041228377442385792768358913142586982299884659024129169893201409378036879294391737964814373574781256742770235321154943457682566594299519944521110997933924587533754135679945017237571461728480658332495890311273960066878330721026673570872846200562600497944098547715045611791872112871434956900840597826501693368060604407071331560150649271452538652696232604441899697905219848211436495574056133762795357745708432536807707978166399371582902585916772456654633192920488351592845812043026898236085461180961866912934497202238893196295366488199318717086619977608346844634578448282768604521138662082593069075140399432358213329367753375037723605450670626979008109415487080370699699995207949226336337400912164844458059149046181753983058172445215027841872915742924418236348132289849481129959158637588230826771359616384972857259491349463487097709334580805086069660246426966255333208222896524076372815198633557511597198932956947406382977157521832877356277135733086502873426464636480938941300393708322978007038151567310872725427058221549153693968686483842943933509853112879843877587497335635275061928388760318580377285942865421596601004340349293055233170884192068684850499560836602745278090905598118903229321984956419949436224701450589797806937689414767125156611545252706216526800420350244669972267460500769837930918039179581076212083724769307969393157944284437893676059824626186956433051191534653287269829925476007744160596224482604153042289248900461041177582816399026925309183871952258718969910071064938503652465430203287709530507386392545394928726942840998952504780569330238891779808681892273840824083371459361858902757975301348718645224729147403658054004510941186048898334790886468586622942173422501634405054824943440201839378877541905421831998260981963403936069134234835692516808860612150154796414360945501385823448514969257374372992195412991139192351200192755538025969383286584061429710481411424895768405485517244608539282389717195269767604111522513863258332491550778733713079500836558390160727568030466843243096799677399454334835749546176427679614955205282682157399547355684729182905731105765608147129480769814617861676616517583025949025792672874613701626339684141401602823440248614655708438186615233708615581748265463181690945801315016555997219992831093116115346148888241540961699787039034083822423606819719772457165036893703368756738731921515392109410312368177335005869715332966765237670445052664361156578707647963653525170644993615072141284169934395401680166359783693204900211968578819012538186424140783294110960388096007466759950761557970133265736916312964936838565727148404533390006986837866103930226170636598935741392835693850824283160098648164593972304078077329477298745614200666299611992353348805183453196983986884147393390721927317274561625618291212274832910669197663826823701553666042555758212070070794273062201368579959043054932037691806497393024147320793971136202059995814738989182855529145922972580468872208146886575100072159489231377355746405140293483569706766738184633576282757592493000051446520892777323849399841608314163136321372115556901801801237761207381516970091765168494635034467264442346084834804141132722609348679322886230839160724324982429765966825068280233770859755530349029121171598285437833093522078386438517247416892671987607277135811013031248672385985717147806769006948449569553820536922073101360706558027811419951676868538470741642135620937106145668218091546886008223249997514128495882862301746494515020508059384830462117178344801083215085408117313935548015908015211690131271240863008715730214086462199307503124545753818128734649456725158465816975535290042634080647711379246082227981948010616753176238272505246383229470475337827526588320335350339333673888585227659610107021181921566350001166133387468487154778899677545585944331807525415079580605075591258489994046315736442332633392220514674560634449376888178975130631600634778156836430109925880322339541156526898167615838645301129504405331039746574464397228961912871876869862127885182332900948330270362945316434110435573794507834109460059023047892373429235980918298589237697506648868842375171072307085928708259947089120830105315482895638438521419353361542668321494348921205387583359786320932360498561137433399717996904556013508459780297584173050475171914801143103180740415053053930467134998921705719749499710094981843055720783885783501717849265642799582022401263154314356826528971282017308339805207059548865266754800090042942872001025778652517029373449973080744541372791425394176674503626444857211252798663987010897643785849262889127717188588283760252968698082981389407124982873102395723542438023961160551621584187034290940925316589336992446749405486912269710964090823855149815709394589320498836955486079442774672669725286824581209731768261721595781728422450545480642813300517788351652362022522971680803230124149766312577383485548020976797802934124452601423028619463119599877518070025737755330395780461105907378638532707252155549063837514048395434379460237101747736975227653394373908609659485547256827022216238673911231886219217734186387096311520778134608055888482159898181796727263462610693067468580799875116313033941080183455918296324123064205903314464856529952283621434671742252513220987344170829640268473775738920683087927579799752774430565485082786931240870389619519945932144070612143477416193826986223294765476339860658852286755559550049598567150909637953579029741068241952566210354594348537544758218376033004684045527073978572337682210932485851909756764372318045009595507533474951105214403002268414948231248270482038208686970518130325431882388165549881547194173984100108403511354202735739734921893825242877208510946329616078538035274069710675857101490366924266441168989003529056653773618946320595558111360774104215499691875450675766759013404602884227020540378303915762414758036592982349033012560665259945334417821651771272685110211322664599211497346139353003399174768317393521379055441737718354121917969745202806072153125638882069128932135711377850583040367192350458491878647620229430375630979298145239305907651925631731079203467251221393790462799382400320898503227488377923765928663023712826157634292136735809481703345365835809446389792078491121224883245894815476064146626068919057416863693236119933041933287527645377631767024957124344620199285381905111568775545268718947534281727045789746230966802802522793499244812020747067768002601190784719769187072055876160949067391825921058598893644562342602794014163159292838935685964670726850083701790631103980405291111333513797239374547283263419883082410862052932907040525676552587660819911014833904120236043020780884643308604751099062728770109554395593158731786493870363282147421157532146379700355549574055720441882652785496095248777790010591241843448725052723328379281820221288549313325987806432216780168830577175282389075469996160967070637194519616145528235684169090512718468024552419963348393288455002582284138751544660656712457456046419071549271333231866179020098268027899568896372536880379507768645643518373862184880897141174716776042846901262737288477382738078216847929072346136236061184680049689671618700724843579875427873831802961690827011776787004449626603116157391653179183186559080604115747820171784395009642376818679965240852389048401181266245969849142754549638697871210436254950023905872719085933215892726977342910853318639447071323023044296662158915069487779138308542009161139409859913664134254537644579808878949056898113942699831115204961075228172739765332912276632808350913107053956857743531624973383673455865513629379079459971121105038633987823698974864560224519272219660948603992374470760683955730552888337550087157950268659614833685884758444051216848443523905861064937296237263814129403954606473092216986608798231022974043471824496290102783971199289448722621742353717440833020956239358006100218192797616968750360117525939572857770678810662160607193605342121007183696855532400825509629199664070642195039568162738005218504104188273469187692752807598583371432084659398265222410408303315789895460538316131518476510382878585122299697254888317984099730073580939303708363601180743860279937055338514053331107061973611602196430416234629020454277032706488028108408073155143648302960012863791180487117226590416547534714750676414764976623339456812878589418728517899845692858660731799652566109938928939072094460433537986724695322642932063048696727280708280454471498534500422196882917413078284490060961780613466718340917270034555833561051736506583864353102461801761840258534778467019808051148488046165617986896895491414761211640594422950824237602905650153117235614830053189527973365701971932542476392458941475270217170641191060509382981467834920837844215388238052523164662681485323878660909089616476020937778091167193470549947649723283947271392225837850423433644301700718757823435811105911256168650453218452201587890300265895514104379903773013462197833199889109385928981087926251809866355475957614108915665002736887140091504939320245028844247230460824429161439561838497106648554953525344330643278530435618043645967761268466415456434271390328684848318043483636393324151295684903967502659713546094998291813023508859204062975130239657745834752453476477762982379319629221534069683292224230310483565709708868439800206425920029380270410738036275211438234140889096387844484144051643497014376046885981951791486773299364754363867275618298292149739958794120839124046261131028647350497430809066537732618233669053671377496368233973821165775951792700617411664557852755217035557603053856911686898118008653267806908316675334013473472152330754388923486312729696428271051149210957300549130849068475699422654541208563023861600952220180866509714816292717676077263316667996826754647728266297615593435330133575329323175955088574860892319007074644002354182394839745045292182763241064286849088108532715343811327169004570095336746221703563493454149776832564924231822752953829562954377787462184964801071973315062336815542377995358434427783311329878087774056682999383574508723239619885941934532817154121708426069696232789090337435022732610534969913539410849508675717902060750438325741041122785618907981562487665030479170015294397054826599514825974711063991091311896970453665577667762912551218133931513882692216596308898038607132286688612003618243552849352845812432975739041809990694530806884798850145554483557582444096835736832149053489227936240185301602540002985613080172509542985329530384331018832228478674183048686252691548081005468661986499631025906814688135992535206632908871206762921652614571042973522371602102661462464660562576884825854616699157808106332741410933018589524545625285998780077517044022987601544380046398602648274675533118684851743214426356439057807201878665669542740620067404529801436023580539051517402330077507436073341378410847459496224987523679635287647340527010866052099267130260866816594829487642587889109504224363141192185503320960191485941000153336929281986569824827056620682395848626171685279253184335387517720028836823368020025965176194289619725021343243054737830193748398650501175604982524931224467467982683353837273866732460387691915149153229884698698777142916381674737491354630701586608861694419270203152257150263534418904622062697554072694065621058902147548570212782199103529476141714880127785031936380596507033962302779881621938936786600610359465023220544974504683324148443077756721485827381635496971040440626426729353184554529582837629045265251256156439523270361786571288160936104075302653874995837461856168458731844986599639389812215979201218034707781922474072818256001833294700807647408958967400373128005087020381660673833487668702726952752580228799716878698030224037926502752342287130527663293547201250798909693012804897407282959846269753976315200027721087510086711135351380237342116035996053397420732102970857701908188535815318721654601674469117607395105127095136885830587308110261466814984131059314594271287851663842542495570397371125470829112038525219500113227330083317883014011964066576431977209985118496794155179948614766692621201119814587924714048514396452518378081581347954472489686869793983407863646839949933620253903477591733577254214353821072734468890477090160237080177514639624966750792954762019041645677480433880898658482572902306523944457393901729436433235965702195719864330851032535075177651851116695033073539807944291078399800391965537701674339287476859119116306192074185168832459144269003710516942402860923762444554105716398531791962960075082055810320669428869526954458116284509466331357242291929166585304551483586487136020747381256724658785493350033538704571853110915095642958170686202211273700880351943674128407725781912111329103653593645244140722459848155293594182294365098633867541850921501799113411114808368859619843817819300954862575876056185061728864197935287405264483050690938083672923951467411097269958376520903171633484123512077319452685450190005935165663594662552141442089122493123742732396164031945417811554009337975648850280551884557728649157623972375456249938608395812533649115896458247543140115504455057150583385512773463157944014139234215975150228807684756399426047314014276017321849435726594217652502223864354995974011733372575710653634184661712627125549077845156634197765869521693791068441948351986760426946261829838824439195767442542522984783585079105014056794237480997137991105754372805641288723357052392095205052540385445136589360967775373676878005563937335421264975852627701543472445558972424113908367252533579053663112969028100491686840321545769886396249736129911719951821297187875997570585180401869323716079853947494307196281526296336672089887163008270870824912217015211921598729102461402846637576252338613937684426101910412568316192384297194859750913057510782040602943696572387264062741113676897443688540573107825084746904171504136613506078990663594904026197080041904280449305485687297583403538025137228194888411485464275518565970764772491372211733713757145037838508058999344298416273059387833986212550351423072087588299845675015364320781757724210073897974213989182693829966270510608242979937389648776208374048245541099683152841026515981274267392325122200715165132098465182158513398556959114247908585156958361699023886784816311527374876168337211856832632657612955600767271096410207236489966259477125398405475510030396093208072637388144379500755399091232919478133257622393399011899104726139102651214513224900771960084536416648201682734092855289612278006261971460760091827282525041267697508141773160446389320198717561521587876716524784810163771300582234660783668064338312585518578510062617579212531911733803860888557444790222983137163407045571710522556705150889256555590984305323754503838710829743887461277384980265671305593445614459751191178438144551207169508300251944207312557757449609891094873564972787514584718085930660450492028350502560229260278406879305624766857235160721799951177145899498162697233324302779699750267779601995381720585315771330041452118327076372718481607642176850404112615406784811221291507622818086197076028803785528163582859395645482751826843324817898134051040531533436654905351086874118470897756018299834590673389357122919942510675762841119483487595958219030711340469351629108392743454194148645147542747539151757256161902422430533740307210705685570873523933075484575895183763943678129943327466692570099643724415863851105113325369630943741881339193910966412088445462779167532620091457058999817894539504653522553992646709366226954506627501219176816008764842136902350783207871610951199831861423996850319157603988222634509119416009664201341982564511941694464543450166120920833137268709813182249970942097067404421565224936902439991833626507510030323438532574977249531492292084516843750753935218002098027168811382337502742274021758914644809535764894501793353677750086003472944068167119289902202292579241511312233143030431507907897848969479537049887973878246101193815805409344393399502405996612546011962067626829325937219764430505941735314319092928061935762736994105678356309048532800069530378786463200875186515227224070202902221513423158363742472582748994628460190038909830415140875759229680732279706222616586495469658521203653169774105312415630866874274691080128998402062244820039315518361269128761039382607861456010333089171759811958458587679044245913299487939196742910516348027951297900319859211799698677792807640028101949735689948084991745524941251503929894585668444346624596709974064307008787365578528386177257584625328781709040371631212072332423483473182971567008725557269713618325092782341571747596896739289970648443892188575302115273530434164260339788172985526835470021414724070245391758916806282534004132055611999060158596971649140072853107658862353024027101146401539817895952310246352294248643637130136205756816206347744763917276742492080942792600863355839995293370766214174634301223205457044232369174128278930091706672159653110430707748138320685220180719592540132955729803313413040922329610185140542337035742625339448927217752990136329294174982091510163730500091838748994741415833095612391248292978341505551983716798509311626971294698393207759743776252728412215409517783681634493322143223402608455816935817801698482532475278344275239349863832261113198686704710545815728351621946407717419039207222273492494330856973286204045133672546924510914267265889889432582234674782450385313129638830186661428321047678986269081900359569010560629285375579215199422127089363441803167807205996189499890369452861397461834161370809132490464175417424947530471083480712277410771956003833831939568100845580153782524567348921195924276252551334766232701297078603275376604676082625488851650027079135055182218414580113340633732037754189237563747943916441221723733420016593072324043092001750616596916660759189834795624426352097059041181898236872808204376153034007937457681258885150764503252760249648895686736453121932239101314380663149577261863764107124717960660844701762160931870691904341971200418079275188225901758218550433969772186308721084491324643186810058387371719505765426602892929731791471810240361369846795942788867034241862825976110207046831006552195067228093049973910002677779685080828426044149403380916203789454732313757505740367560565462177173787977853302213442764114058806861638873076429762360241646978611291922415916547308249200306880618500548851526306375145944854072612428321597304228160345256143860364575780577914172586632371712667420532075438359608801631555066464040009253489351784330551520245892241506858643320728827070445861285402714559614587085906828393764742936370078564300604981076046819156286487605200554543977543644344913972784519998936869730506522340776828637941390405061522568127393164995511324437308392251351695488609020341192559388285730739871556238383787099509656618961513140971346399060991051905512660046366914911908133902386386017655303277108657745825187283264092438426393808088908474599813639387831257823096107282845040207850132902468176775798395849303575706855670809620628414235888725615976675073999837878103877713721261026538845040096223677173214705168518405628846736285615625569224588187101677150061779570468693936329712924629813269648138957788681129612464451095504598920600855543532433381472778972736010093234225858603420812024786603080856825503699414387469181784111720592014734628151441572850416415566135998301996693584009066836404973300230368616164057139566091981700763749563559978330115946282577685462767514608685397117880887304425282526418712274680807392712915488733258494206628183807247296902554422144188348025234284650634105263976221216227969703079020003023716041520058958818471677804103056161806281990172227732596778063132988005496542539852258688856106028766391955599225938009690804058138790200671492296370464449314041428674193239761256256862009076645727772799358726031622914291042735229967642388597693579912083420619616282122222686383801789032625136338494834822512588360717946027329300518080664623797597275625679051300719144789405103446117748589642463014909725891584423773984013140676511400677249144426400937762233398532419111123637276693655792928082214675170114897431747144887659323814711398850126835280248422660701401745285734137027511009077857170461406597900711753680188197641829251272084240649821492216384444786077184419495480479193323148680677580968276885222068455905548689909008492705923521196416830878401423177508286318345916761952137541552754560646584539970225037668277417276386281775364729029571579753927523774739065767671497477771371681789636155921522524749912767623450404141547220316537248418281745430263489393102136139239227290413371425536600259442534563594047801395667981575522395274050444259595650773573686651055991272764457638618784955784451634747116671855922878481459392059153000455437590860640216585701733006063870432186778192025392707985311143142304471343358152016357859223349424354961317549935451122808613014098297634683901096945849630702739892509433546388167768984804751553155910504025830212285055566686994496454587140703764007819476483170936189643752449845967847428292989380242832598436430507287327948179852967434738110317836579525079122837294241616612057992404697629116702858771745857091757698998527893022896830602605678036228059427645399208599270609171425128699800164133256140708525827824860666100463689559605166631472391975019051259229642615671347446557574311831441786247958310345104410666651292150528704701722770920064783014544806128035028468722741314075728122311068342774279761137634448692843158902999346408734610158407367344563384027774638662988247794454357215414149068585019352162922138950818430416567920878684034916047932589580714069127746824949086622608940252734183706619082749616521212745530656181554435893795691407882549751661557645443349830952572338331100160475728819960928587312927304395337949292757033792520022904932734269028735817875522578508633966010914534511623057613133485877502883230078717607762735772696774097491117800790827939130826135935529047217903951870623248196343183591201556395216804278787898096488521202356692451906497860253119812175235139480748124810739159375969968523689014492005249102266014219816067685207313271870543027044051806598475299757407573072841473646735339280818509075591608349289610466286795667247698330583497086703034805396927460431069979989909244857315809091219538309566979940672541655327027760125343223128612717918808722255717955873304729758321418074743797341105469787092372791187947727080976883177041458856109244755803702709466525445835719920385271225304503749143399732494514453034402781320660517851506268800136469190321125128841157722288273749447675356107387332670540592456298311056569253043749780007733409506291257483571507375227702032901424400499929466102356990602772145909035808014457423570413104586079089682129167604564516094428807715924694103871467061290054026350793004012428069161027781802667888810284994350657631725553196560884894736448309890361035508111259224234164939738754546431591800934196772488559595827150919471188476923136839681512005058845993206891737427006577919860215941446055103607816622962621450641323365784543361985344877051755617766595698316914242189387072079567746335552971627625719647980439723662629440811049835199517532572182376208330245631916344878978918354880352920955061876905191017055340757103348504527461035578664747776015668121746264271489446232437085979140984311140734543615516673712494410919645312560177529484298447931847516246793104370383780452896776010143115339995650284129778927712675106894713747605371471695097886184723209495377393289441209477697253177232102031670329957441895040642610527320391790446727700244353631519369440412741705896507772134207736881158591729232197442955828171880965245984281856664058885818767219814606704714078304348957142154935601170066199062678133893338021701783148132530167909098273246986589063838989158929829348415429942176896139128210300178657007616902198173132260110001877853974887138719389071982190318824626034330975359107197677619765435378445436747905866604781523958107160975703327886183906240308694590786288578350650727799996968591779518799027894601979424555485631044314333052633635439058370568649987067007875384978987135777188543888748142963629038928317820055783030789738718373820530503453896917508305840673931718960028689186029448962357740636266890083970654450549247356545374900754962938507129935978453033704770167819509060027285405177673411517512584358784348626052151284760690627375179982805266181852377528949248289537473150504221709790549412368553813014008028881144497403598335662306680776798164237260462866550272131307151090212424570487935822913183799145348449302727238211598871942229808513487617978930067393217684747225049753178627471487246331635904642276254557435316873720374273598282748690352618807726164057466797392778790790111925679677785104895787908585491830031454677094042208767361582173494376558868381099753194158310662505034648689483345162945719673773329293938515077465721969449955894943216488396546112374401112358738778585414896308035256712964223833736417555297499844205668631092793621627310138253988705878670032225943266770693453596557907217805390169058229354977302570021401114700302257174632194455736320578850878997873315077106611164264508990644586226339650220579248898780881948805533758717828009978168729320999278034146046440069560389894390766789826864816288018035875389008342194124999047465349734369072863725420682361960433005114888619920994730804556303235465269370490663167446829185861368935522216541859694529686156027175185808320463209074986914122062870151489396662570097340569450444757203054969479051525484730425969967490659916620092974413580558407200711019821980708242695422816308510951597164493191313301356514402392275643524655411419104753094675699698010058364610450711753014296817934109160129084586567136633668734511928709729532668380183240799569730106763416988238625559778736765789927156792944607074219263135207784554561267929454155873562031851777341246092426741798848383539525189972120661909615290731723305592729574650351114750329999735364920846432906346356809143700063227136323103787117892803558656681141669816903653701078049831644855350516354680122898120067310110972459100592078681106870867718432037707551223814055467426803411258039257019741021307729313603379536324243751806463788762205948494297424380980327824473552269167715739983760624562559962513858586967666934148050351860828747352797149431731320700640652271413949723245002102067573146450496167127853069245908871950246759844233395403669004562029545165103953627996183003015232475894419169635312897158459038694692199568518108295247162347932953539106488038937765706273136949240785593541597918478654018092073252893699210037569021009143300463482038122359457042422022937264677524393006774488950988468901451515665600042879108528945814661552874648590801424417588181195736857780109680131276506542931901097097459423153918178056460806133994249298600600477146458863985058692263064196325430772424696746214706827723597628669941548899888351423766590837158966853212991465503476773366072649014944649182073699899223180118121947466465226974219699361613268024641636160955880570115438421911773579452112030310887984406521517429707571495917930185816782034624328919671331252775969937930617417236829293331106782368433736345139943893177441435686344599446168268045531466616522249616979042608026589531947035882395600333997602417928803350755002059690308743275106357683230173765982374785385112324659366100032476546563367929732383543841553295061114070331303648406515522487744541823386469343567214276973438593898653838644183026460738669162914835374000488346588548777698854184712948050616879441523281209104376703661749876035090918299932759019703936227854803381891242805465996325544227068180133887942394157267057855764487840969816730474582076851599611132451158125315182194766033602000102695937007390347947941286784684251374350493479255510852022507416104592511351369150917262246815864321744202143479045341323984980990738318908523968177479782176663941271438253506882260401877252198652198874959089638661075045782330981479245087577794392966265357706334106353011814349280662651598693065744076682699176770627402853867389044572093351897737693029782855873767912996559078458468383116145303951218852850091159200252962552763911125113206476268157127047703501808096804920191027729014266646410236598101091310820103804027705926337866759434228799384827294277024992993162459539534290222082334934192052472350957711890535223956100019608618858226576231001772494558021352342056732293213750076206699335619239323287812883000234055349125751999817269984435515944161299433791787337642141827755459146028710185441252586836057147966139863783712879153737193181754358054660747533360370315361238602259204341553904368387274122743894892040828262926595693623089146422868854352059283835735822068225946016797109806537456238276654619204084365542068157609462488692412728616177791514339163727246632652509512857075140989933767535804867676464485930924057449922613113882098735570514527423367221178358036032775079362562275843219090338065631966329426110177955677759455942340484624911910158625196656994900935043471796070621805405660439972375685814780624829041383666215152638014138431783647690986000650873406560615043988854584352122405358326891093709913746200908234682729157390020608506945317241600498800272873146039555527302999419246668047184582647143364604851730627460804720698102118103784610679276798305102579766144057992696864746197714823086393377019388070603934939240771719313593298874627893623620422825345853497935312071913297900792696653645575350285275088023015272935057588597598167946941370191979208529836587622462804573283677352361595830512104740390913176086466530821910771192543283416622469515452580567671130293211534663354332008576940012203900762892228188852855875603285872017021142927280134729592427217219733285496314416598974102235445555351624635254028805318514870095985927884889862549581989077030081647252528639954076407883532707404425757461567924133421841903045688320194032163565554825773170147304804608714922831971755684012804313655367456973496099423052445344893467189906061857656895260351618096301988972473809002100694071833791978092529806001053704787709306103267521950452860767475439334505019721393574991174937031539129452657168215297175953307081075987840472880081900644120641670400185197361366969053631061808416582308542347052843720870602902907999903099044522351883819766554956678317715831778932233631813437845583401230451642782999333683840947903479101397468220089049339566584577956248305826469744637685005948293450057162144116472104818060758400227625556557943177300336667461923699253118821030773883211265098887051219900808884295894139428353316104703025370992352526093225154885725225704898510239882773235331407577825626842205907828184035841149817426832060566050787802743677360371638172836392939026815992732168770368781426382334532565333598556569756230565245879262698645028977228440262250481796294223354749757918156681093924963518755928332160655227074617120329695652261596818436021145022234729548654665158741537134339382606417172999910929514365151749724359453891390178314473325226701186761097287005708238257657193505727453181224287751008011787044120596081257575542966153550718740258822936994054437867851944987354624889195723999732718068314169873739902888807833275711925982535038578028747971844318586325661299304666474353400804508818120326817129302833175592357919619079264567843458866956215414143398381506448558816221897214303387798822577836576833735193074131743013602448749220028183306410135601827204913046568434641594307239324731330747187531833290532247777154077225925052369063445275053344905844323055887490540163339988501515518896375828635113667457064147049363635819875696428878976475606684288928861823983486479633941260894923689712795633438038846247667518192534805105812610351885422198005890224196996735797459720690271333732038659018013780676029739420252493785276908997784590220263269546492036531997006322619911243492140452605294285577186608675770814953454700157541541297266490330897456685648496774966370325014586658610097267382857586818057361159337680759138102966183800055556369014065437172139379486384319303739501238286134037178548195074570870571386576237278765241394937772205383898263510868786713675426380146528105791382016690438189786166578357085394341969448308472175449977875878637501825295066133403798185502281705271245509388998774662974648062737378047214651616371136265698613209838694728436670093324500958857075557985828983817861912705429191763506923513299424009946081362331762587830379872667449025719259500948041206819061149244932041412325080710009356833419277372337892659958743202495489453110102422319172157333522778086612292912258743213475532467929832415344355484282528298162042745846741049351050445902296764275624032720771442733115754104771865748817762652657333935893515290989755985970267600590771877847938036944181412347009401891932431918228420503629915029786290206455159757874955492179538732309694854894021392563077089290851008640184013204956360375641068820050447982938637198742089423394430826898814798095687294278995722933762354592476862242085929363037861983583074536607822627126211791430024152015599607698863495847533491241516598619673788364607067099136415735155595549118615055867464776231947292219195105053295750039107785744177625506174006849254078199150651968634149833277935282350883413842456688005352027869114727995763998065939417845830448368452807747245950701662026784593885263994264239854406651304795836471075832048958340230908927568365460524733409671624214112179631362521955974279597387260505534246705644202767998326448889026913202628250359711469314429002608432946702000452786738351058127504417913500872219122852625401507961790584815953229810818458006505117822041759436868357753943663923526877739256845934882670678673903212356933320170950421449731717990972099090673036183433078716752399823771882664755907354556173353247486491090944865710279869810102130455786084360127506948213982887727635745145329672028289603387742159073894695938482053193140425838594892912318515310350588595388574291636569516310249336999270361469319027984825162308485356283264915659160220250205013561080405408188742746687384448853687593207456745594884239982890566745415108620433614134673555239843369404083157921561400053324103521063818514623323831247697790607583896309642204852087605666067325270875773935052107560424169706820121526477476276844601345733041499184493379868802025902499531514187049845894371432498573209785065353764782955623906228225448727938624425796099876420023945320499074689008133213014083409160562646122746667585948882601870348912973874309872076518794597859108014318340286213970344575674127421912940190244822568491255379015200628832450103456639093255652036472129629096754756716879305621060474875111372515296245592623578168539321973341651627465782910607864715617356493172690035828134303025099561318266743673313177437970452256540204200271200181874297897075798480489886037259620854316856769564525064360551891784326468919267438718745316172540870044679198107950945431396093128083555583103467105713389298878338121917616480451485148614936427967265988339392497625561267685329429482767454382408161576040296120894334865245436615568111239459375738135911788860651935552020325625431985685820344857155066454711027107315651492870428269147064897930440655055715809767954285324348303697587497095217950719179738895768701067045684781075786644451121731365643935495410996143664886787856385919488972773377572419634554235222203955621560304385348516143127056027890178657985784986667606022316500050042440795952098610043471359540783418260248071829630449205418918024775418818022016196442210380129409644788173354030000648525765284578547675900995758311699691101648167870948412321383013860252564726426811198074162388192604143667280185600334939812941304600417715606361461455266368217269814995073997453977933461189030059241137487616983254741896810456860033801509788428101334929545040070996118506230782833439984549140518674087277452235473908307969891432938015429013983233411712031382015042343726849439813203324763175440119471844205589004382537711380412032267719629174737346833413773349635918635577750248888897801535950904340817523983617716862115272726867177576775349666479991919782657282816975323007543418441449245579503384357083132414211895038538056223115561634647763367871926130724803260185436109397063033989075291276377214356966640644033399414797181493975158215105675255731104090615844977591110787828846209863537739901918180040007918485174079471214072242300183618275371900331037705058458290020051540888194372258857580619546336480433312886560940961731852255144277120222340504214011394550947408630692998575769413486906674911474614163407082135242668359722838902226308335291037532407755360201815177982580202712635791083164110144384311810596930454938314972380298758011294753650592510585368409239474149067770553782965723775975624703578640146340994099994455149928583788255121275844573737991510663679950356327078647771837940606152934884709521043330434326759036779212163494576890338305900136379397652110979482258760582173811342995614676926704586775160591602626632656793746236849685514094600542904722840495961404789296092248548441789538978855906419461860822302907639335637438110669708783654028661331664472748621079212662486418360931786653545391448315009933780091150286977196939929695279768482806807684250670994803315084436039471783181859917555451752737574279124421502743374177763801287658704140740859604968071067641591541067807175338612945329565301892182034406329194708223365132658802675343221288309888197872067488679649663092003036808437433390995543069138911339589562345205711459669209541567477047899405693486737780002446391421428657642255476249075841497251641704239816727605747148669249384769380056232519818661237940944925469450701759920857038249758121917901472711485057905612147437004952124139431717998900209845044637832563117684380383315699420655632035123253647959574959629580347228918874470339395948352220959899545488898815803433170668122253075500354600119821779944849643655535275558781525687326594496828103446121764921467256917893217675907996283639157135620631059861850919439147227448205205040783732774880522859202320723646973007853387138619279366541069614203871504370919893485829971855242982073959151689028198056395699434460477383592433113740341871407829277928526737373374505352045808674908023887575907222717292836168491819504342669447852998085271614241358492469329900106819656526241799753215126086885752118151388834626242491102876436806778920398750260811225151499991112525569279520803212919373406479193549109988204606213290114321459690324361718587313027366780232294700533190692902872775229124683045642385483215162919108915286678665937344183794021907286096158676718183938409858164907251661326334629723090677536344877972750520716241239774873435239815257967412580900113574014028902499489026125748278221975509954528457619507641651857572150936591561931759394373731073300181755511420388121813469674133535950076675645827433277030627881350358985596113329138527589725506155581553225779900106689859030854421700063346023873074977994767386975933949672143872261615220056617980156579056284775045311388666834590274368810347093333176748993535567669534553200443992967380230131674589103820943636939591084566779819671802957427882683600030430366899859811269981862415199857996370710324152777413881397867752126881845435818643231306040343060007787903081909992828484525318106290780554526609172607527487781320774703536987772735884967063605264323649619461790833197030353891025058043299081839556412899427908255362258454217623072922841629697061075496883169657898252158319387633402609372967743063982287878365364478417741417073146622314270965147978424579785612529106308619309858523668235493626269988586938604374762511296468725076112986150827628037539668199351821192220531577593863249391163716132084969115241983202478908042360554341863966939154816188130115816183595750134245088102646256785986234326663500899579060033587330729951992289457050756348972110177432101228775280473224376320939696872608268094584679812391375180628141505016579680328071841663302762561071746575181447351991629730701907480619016952153126614603153383323189134197689255763690311614130570551065000299970697735530527483816344691000186081042691216435127651170961902169551800806622668849606268735236834833034008323203065191040351113299383917337418907928762757788022802248800576835621582711872151074032787018501169059168336661779107500164128669308784702832643625608366244603998675605737001916063118563418923389070093619413684424552456515437844249430091343953349954284347740180599175017930625035881662011673477126667713860118728560890459777650458340986746296538433058523668892266930088326624215179799880981668296097447354123750778447384225539659126466173208416377398083440233062669357078763570690415750683208677316356984699020011254852509367047906816632096388982424343966005615667534258381233724306031245460145971609483183809925989448282248288892117709420354605693716048833534184015227731549498687034023069673083377773944990176902312992609805218441247826607491230798702153753825263601024605363637737615895989349348290546711735823060668083631923151341907533096104891066656347762372966868762771884398577280239704311998204688106574694686360766685999664103330976186819056364595269010842569818170691713906595633229812350954862512543457782660559426563941141055508810138064018192682825323067231966296301788921820097392084907471670039883277371671816435782876740616489259594044438590256928899894440675947868280012442862311011873743054408089118275365225654272219225839429272241809437164752136378124318228027426617600463331420022793581653188776083395980345315306243734330396635605371737568387612355177460401387376532261717410608240426279046559139148975258654874015435883512631810389990741773550468786751000592191749094756124408690553007777525733938687987364812930559831277232159752472881799336944466166109915402731399377969537618972271615405582036972049129625949574751860960270252494069708266458070454513634873192451259101428909239500940131476548498477770236077243677377606619664206588744564010843132157205614952155691564047971076680544840485469647614788511882763891164524369135559318186042270201955781834893709638701561944896358643526163496431999669445000239673829463452740195386165876732608911606577078868689240872549239549945229375681323624218452422051837867409613144406767424885497134929801906941346133038374031787494218261223914239339974905423115174276123946917337117167101247262584601879096638451950879351285016092904565820832653418806234615086708626437282920486112915046871996304635372958836891682506432916270180168109670733767915460954155202890219024923773948328709809070936383867940829973062649550593046896340407197301578516718434904464292668455112097631044351659695753996390293203858556202088177055697528170434761817575095658089412508310002380020878271517401063960807592587244456035419656947376869082236034557302165704452047331761220371864466347055704421471555471332809951707652993067785388533870843567946936555029355566236239209534951689961909635712625568359045129096070222498575635035191153051985426822212870637926169462125786544197948935269858121852985664817173645433729388922572213574794756749868012208465383660521156572631525925656467769612624264210790139415191690020779152173069218963588263195233375771648550495682132427572802973243124324338139591746900835663355741041359224145073145315244822523371690272249407080903910490169089137600171773742374483612987824726685518704544466494322364690173056660084732488093175178684764830434122657749059999581749437199714601492722335679179810217652845668493786834054790134912380343965346761249228038350038974902331640194693359090888679169602267331250427238065690446671623574531674357500639224773963771912492933434984798714020185953648198085750780647225795198840901912959017098166489477819961893526771955545670301499299772753481722545270753243735649814008175745771668643965422025669990906142382161904297106714584740149949407971088788338895779360094815013833657153485608010046671101439903169595562076294700305291592752995090713917460642701242376650062885447647081088458510409530639845204828703726130903415856097276550524215008519867426737007656401825296024647402541063215927694921253110297392153870092948549662187131718145954442825131409254361253379524815959051964327996541491787881399609744802985665893429948628310797166956761781766735282361650959590532731577909824511393438942356887181483324678658537479514383989398440743640076247039642179579676716347224259920554778995768909097524805313887126656171662206990188267872415357475378923305968927183149748835719250056777017114915314181169934746481665191791184348341917806121016415279189977290926276165920811337297485133637995079362177169051497378126869075986083894832811833607359957874787367546803057098873442607625411686004154282989131635747434930453792883600882536939009946800894247000821043241787031915066684893833810799311714133230204232119401025700884587716774481144822750458123481861164187895581432951237685834957609126173332725163074916766956567298518901736683455610805862019399774099629535467673807839752684657351553833862428292528904367183810898678725329304483084022527089028668853697417046469211262924279103964939422335073550262359405649716128555121486513414650334721156779293710321751795493827245187850352806529239504268267142225460273575899040123411141483172550749792697430319909703756601068329154085635339405711043522817631954343687514614708973977370546015804830073717832656428651494289420563485948242624232389095768207194622174978785485114605792103219148658833781687802534386499095587288636308741834506656936335358758791170155588379657478625160957594239178722025195474318605123189585555373411608369363492646071308499312685205013141959632282745402651818497205007750251383079854460932984898609700903975467148862307488317157003537092725609728009862092514098003678989613448207972737168265929561232363283680785785242938950706615843783277222491964274716884914255846219144416645722672717612471269861281673434857521743448709056650296435402992408166035877013611872810822116833355939040549724560635967165410027360696221529752290526111206168740806588542313123029857501107533184358194915843571446816259945246936489742197118119612003138056009242618188025686345305826353411969954955734324314808651870480072210947297958039281093360746686307595449931629157213356994426216808001135736151203390939707978561236721330764687206081612173797828785804359600595078223184519394404992248015441254323961205118729165843338277991912571555527988907375401243282437912491689246705120248725303905493190621562906521318564652760121871313732832051203915140174690609396187087679443430572435993328216545877414835132993205023242369599904119327673997823204728793713981353018728393524859990892933296581715469046354337021426891671734586444147653592311309466839221297230669152418878058523325836821335036629960340747578250232305058279686462534962935102889822464803780371971402535792414264440348446305867242875876829810492767678346467719760376013207843791656065097371602888436340046604245513039789347143157657658520770925101838454182959885046290939907997769091186365358417226864010043571781114161015363705894261138342501421375228390755121061476855711968584936612973289122216330262307954976507142191298763915727032338065684457271957940347978477372108602618535785569456598480765753794359778725574449771180658785100865751429591981857599822225813973084351472670182028070207527841231256620264526143565016288787035236028984001208163943828122099632494692433633986146274008528749412628195112663309427285394418598885115039037796915771129782412019752171970114513966712519691663694456792017754047525454009336031731543333022385596809703495127296320283675147797210815230539475908532302659975962861063403268547682658362319798615524049836126603431316816498214582845813398705664349213065359085932595024704767699841717462163579829532372979156617754037361656695234812979137281689487609034934152859711650250086023727908998715665723341819629607681877638636677214865835006542337650822850045963922128081154013211052784560524739621195054632343046085972464615141094491745160670612682097695996509921208433571128817613806919690681827729181477996444971807873046976619327233074795542759836813249296232748754661585921545107431002861886623901718156466958646268528668044451503840629490446670162630764543030189802624629991559355703911300968833626658421994388585624692829608184480735256579580461164072825185292585288848700186116347708656827640173625405028650419940490434234735472565030452790157027661180224595649033384560030805929352569412763891736471944549310669764199387664970848986639322037279933503212748159619125216150377408264564886318392933244504599832965798092092999640158213575103492553775302250893369131574979050950871589066253182719948366419797490668928740176831074497435843674321028328115320829258789129087470976879832831504935901541646212871174699940302632048935173030043356772881836631075181041514952554142029127254327294569833562924571790884773183105588746425070280026519722555798371134354026800608821150500461748064166513415304459724265501660520294805421827668258881499569976041192860375580867746013484764758863690705734984946384287419677133566431720728373319595428827927154973592658430702823247104093972743386202345078485405142788147098106255659503531828286112321710402731738793978381514995288743586393465438682712306517547595779836598003804234566010410827301829809277435128387690264831126928206898972435854165818991309504549004897609439771986766343692479024803043586713230134262336894690580444236254631541129120188940992271274978641433798134141947200823386447845318411045924658686927038578271071065711141486241317047104938024884878729272819989092296053919570872205096536901522468077107310734992134129033228556217674139524484040704201869796747469209136073487262495457558498011568121516402401483034221504108336852524062718767127793312554063188312043562098104965728671649465772537782420846639251935303672692656890632995676998627697339887863978277515568103867773783358012907195526458916626964033149369783718074909572979376168988357684491078937829124649968748507679395608865280476072865015734025449676163784938370404250701647677790701743315333013025465073405949524744188763680676528533271879685013168276605027956424752766327000784031152034806827989692118247919028461946451211119695247787805809859250387563710613086736743066149803144652624211513226652812430215210271607523741288464917375316159272600997026822845585090148584826627054328837714818807146117099345055912383665497494753335080116693418115262681482992217377237493554803593859714873022900014182569796996915254453918897662296582519815097268722588223787695855888836284955978567675228475556601775744101361828117887159622635211632600539809683242782723622805170770564346159243775112102365647681803714150406728065435494425497930965396855776333375055085255491222627149561980574348254379387963623871786895522600640502165283851523696029551963798587657488033454754968215208710220983049848432556522266821287595253420554146657942476889029720461948408022877721043776133419356534807554930613393499553915063769907443953428032266387165082271461791521411832528040416103966788489564264137343683572157472678037515557626605287770557640282426180617331222553589048767049806645122263594179225821940753491822987853097037690458654106007595016735143348355999465672327599133527234217442475747019208438878433677926555498984561343745379791308521533998988526338985425510060905805402950158839649055587658152443427691922853842388938092534297618849128499914255621179269909359652261053958764430185356721860734095966888811388268543063142673449926268820608123377194604742960275098368958027668349037738565049352263741952562170610519435259286737508888776925622340251909858592505520889316682992046237589361359706295633812899227042125590287630922985687811101040612849278589164802365296364946874775371904448480645010866059010957727580220117622275170380349483342015305405783421920014006312111307990475625578972848019907269067394460999985564570076345563720104471771149703838639654328963635714674478942475699035102706676672612985264367635822702445322621778319903715209341516486239863518308737830213318091612547726481732814952496250725346016390895830856629001020806900126815441869004764781106246268161068998168732677827182388365277018589945749809890008006725401255336305228732989377152725469706663692920464198317079798855174717580652791600920739026955662234309877209180808014287329071839619400914788443675092531003291277930326038869470049545131164866086649834230265634079684620637731193119137605584007473495693403330634863969819788284957612025938223506785315556033237076798863139275313207529350860894038342332658681573326267424516833325880545218386374968052644062130867439429607397169886994144906363031985795516737596088551566625514973250896291077867252550268666537529083021825078568252951598410048600462761558683402444276291372592708099442210743625845669268911492693510705759893437660985133439819265680607293579386923215481584445810022764361620185100574707019294922618580161169488525769584708946398548467973183814368635279364737765512898907685626594709155162548401848151055406920281831303587510519164206460032564945662630871064636850643308877617118892081115699568066315129877954531311036881276828494488493825315148611517834708348175475569439002928030797957047278605592999348752519459117296333272154469975185269249546780511350186191399345144462968171530133308009218646253512177720425278386870102902422886488872317468880112093128557825005056589570876808302849379549307380293246089163738605373461531263312043010579610823562337553800953263701452894694628831323457904096454276749191949898184555223861066930195093338160596294934788962901599955697928752199710956814287719600403798493947787701305548581928178725675785735936644198737854898491089766635603730677466473716266330341803946675656106518065565403857761519837379071563414767379029633194663448080188372431787253635723589380930279362882793842611875879237714714188070134837981984900303164311687509741269947191183995539213526164104775735492332682709640074863803128579746083166826563946026203624700996021073001584665319856476648923459640218739268875846140159543847338701038544674558533855658494197528428142288065325489942653960384774086459591478919599979283137756728846243583369284185494377274596465328016072226024665399755014065783004505195299583309978598443701008743030851349390871532465138894847986632566660403913267787618073682411341038681169573713234032436926750633315351078276833770858319135847579778397462692539679728394363071785058923283396686192244160861630372352768871464854975822341875479507255981375276236497687779482210147783310335323616330698957448583946736691251126996821852240124286652995424305416329897629258612005583212662041955490000102743123169351695823330578177141698272625787813605786060789640838660500256319124675815247592165460413207877351567569821164293589524058621199325748441827524570079793682487165035499060974018465875458879103023629412494151638575853237966699936976422334717004379571060205491679303107559078460622018067237492673205041630103629273181274175035711824289991636923206073435008192565160367476117753070989122710989808933934750417412527399910493692354766905312464391546461178138594998686975949907871043589741956460989796118366234254144760075335876421361003115293742162031655310162832605816335449488147504316949358899816057276971547728923611126029235590486298912948511522779225451075008640543048627100681372610511384238639501447847813223345079430650716201108977487465412219627346612652769951692493374557401043672818384767035318852308831444504001714695589986621936122564038880003714355704625544246956094446073867332932161764508238818865951950523069296570901467423399067953099876504906062534409429896984755938308420700071761305739377249595748963587303033710994115686844658946499714487400780577137912377716555940426186146953192381479483395245581287955081794628458368188811938430533810359346855657613221075259129493707209267356273958312390594172702824799536812425225172538854396438324128989028672727285113586506523658587809056133026420928489592886297651220731191137515723157698364539751150409893700194382014601413822971331712985991791998377463060561181709444652010152733583635027108736338072101579141912044912290384611740997073118937113567051568862545698955873126392173330608273078390240522860802026230073827683938352305732742475292105514830042181397540377631299408385955128556087660486078355295750297720986552281926820772171441976500945491413277996349772647392390099496359313298268546315007390224582878472584162872652649538085978063365953883718000940887407940386274344101391673464472102704685552092769268690352297660231405205352213706755275938150640801826489028274696103456912810134348333289942887706004129013539048946133603376713055830848349010102947603902654817004785290189061098969109536218984917351810981199124177338110075618275001885493869648157923141799059220216237743596528519557657923315099331417247901092780115611410811683309253843202164814153295363124815528523688393430936136755090202140470126164244917793334889938332438550365141525516645741596826505159008786172962023744879194825536832936667918326601718848471343744747012902532574331513590354956958837749002239088313497320560689569801790578038604744281023618288598650550789969377743770350039265770074084182279536167533766621426311072498878281116120676525478040296040583912909525900375838736848600680914413777768898546212035771056352325729853079891101033887190810961436922178106835031582982155771274745964727210807565449750967686046837379314228622457030587508536735081081814337123053724306824977349947432730495510690374873876856031676141716201748233636315735749808623580828592979675406493834570551124935091019397400289872162256264854711047034514204431359065597978441626319553224141318690161835867737131066184808033663870339536666647221826200459373962773720517780635086168328774865353461284421790922587457409967516626238565046476832825343117814451742122281839564497441274819820957192416008007484984959822899812283593178645823132392082408821524641526728194531855385381962829234683026390316113118349369874200047907684706987728937764121974576620692249953736712616517091509213374054563330543210228996702417753640130478119720587603268347002556763216049691463706178681549492760749240247682770517602076854079473859282317825983386012439107512296603262918325522655893920273421298108824861983436612349147148087026656018369505869545992036890544936738633519123124508087848698043856447072462339483414967738209728372194459185854948073150850319045191632049425287868199394102472342781457984486703320078258619916808552443212425562703359556160231425071928121596507590655729185326858521329804504254730597543879165140198309428432422264527191654759875378109835565639408212445613098073290269717699437183353235986221744489344786965450164448671846227160733486261301324399545276921199394230037283133429645067057503681252686256960752503740952592925088382045807424588510018194634993750021580826795487582850224513673516964109432907399683342826624401374460138836247363398992167673627940374569681004227647144717955665935176558638055948459825310199856888134751211948818767068765456627428019769285211983306683991493726392521276732534415636945746442200511516190213071284236296848603366091120141724940709528991610885019372340115408626909733553110277770812155021119747499097374854414627529505874822168229454562096526427110649529818693142936506165965688463560860289603285462634804389515127622926982505817776848848175395380464903446303458934157161639922677798305177810629790240046398362555112131864720080041172544623440421728303194995886200609005701353693025817968889337923720064963233787913574889812784680141531446173855806334072668479580087986127641793227646932089676341307689849439297510532530058255793225467121196833772983361546756521543375679679442378382421612274893080326817285420636860150356288734336147752126327775106467666813699001900148915218146784337928504101213262454987129705403014001619778491616020090669593345199432191734514620742085207103426044825204830990607677662848665724909201876970727008524269293928135246433409577841209306626401735732995764404102919161882800481719409005327445569622397334025863454326307751885562854374384852747400439887455027400794199407724355430026685366935253453396556446653115217532645141174852072488858470043621343009813058890029950203981643816137600926936376692511035396502745454748004886801733507888640809860265351299342058470232138415582420601374793532894671341148776776974058273597363335199695592907721157064328492717548046382004211184493418677130421425478188434628074315223177793388517680356856107476529924595620608178779694073253423200500605262768079893101047199573879914229227545246535885311937427631790569827083800224673426360689825185792529465269174343997464738901234109983881828710132610968552926183468089535240480185541247261080085815980759469111035097495463203484235121665602065326795141553515756340998200850402607350486898211857552684266762897660970587150808874874882481866488957321384466247954425264019360551817008878151707186008781925401190395690194707519305043876936879955296197034477133766243379000394325882527349154611905374073399062656455708119564765939956565564034677333144236302135786533423447961617981786421912181959875158167948605052797530865716292856582751830257079494943829572003994594235266638746174371742997068706852382809282326629603525660278174189801524455452774231212266959633852977563611660207596093238119135900354639061410983119903582297694956668285219604688841523571293933944940538713737102269920583895266298346562228356532598286459091301478788932934384805328192659510572020609629072950531640662260075732039727073165043068865484672499874801371015771900332781712370976330954558364915381432958076695385443082310364945677149652095736125217177147789439514245029701293437206888697609762401324085500044513517716541133438237351471788550327221821132746420098273072905832663553638456953785675377282944263193565186239863928978743745594037475101017248428697575625816142385594957908045299721215758040191743204107867578720084725758931922026436597151287665662450348396240976909896183947668230062812319101576919866895468409611873272721356186999353313112612059369433372417131300172574509059926082094809844467394312485608976851252685853672028946143688852566969240961754467848506603793019731342793219526431779861103390606982533195513042305661737291116151878581807318931037884203665552683793772716045963147033164265327533720391833752352966486334374851148949311539989015313413738449722028189792656409935414385956820499649887926842076511138080771390799609909976968401248951685487389085248221683306146446660655823965652365355416577304527785961232067964086961639099545991582174994233304678883301040893158788020102413255410778467630503787572464225723392571935151203551041993848186318250580136190625919604433392686729022891277592646880450229663136071757073688848491250050398484157702327038075820737802113691369554384209927501219360611461951850827478002242832397254857970474393573746128750051402697725891804811243061272655203955817150349290394565747458814885951556907497950776017530021684354836271111264411338718669941034018694435350641588807378422463460914955348270919588967389874052623875152436946186238281845455316097429965384819268231090876815733667207506311344442694795496940571532923425001447166204765024252994890659625150486696170222730437486361890156056514434135085502179010525450689121850064946308677805695290641481516223894248346599493107597942725756850288507586466849678975227163334513011360469635118680592195204125484409214037526202874284505494604291557774778276526910257473850728842277510646887767022272639081303668684806985853897695323993521625595522981819690266445222752143761749068763715703375035707208417407050971369079934036959067196457988049491539205421735126061471088874964010849810636859281759820158273327732987229097097154497151251327256146325223242195086099825341714824997003500062764372043848947489140200305898337384869302850302665431846084279787490059755107806053903157048682281860870975382452869661790881104848782978939051619790119495236454810920770005664840079726180339825107826606764094024579141517359457331283242520119002295406085572295648995264668785850213691235844071897448134735207194768527261241936229460508866485251796765101067472151033953559569767198952705733711230924719525754053272661202861417456106950441470284672711172115150625596011716582849421116499664850679301579793357463496742393288121629091441842588216781299660054825153448321397152095122536561839005799862038428039041487845142674048542742970877968443868902991727419934166998685578925700264315370469977353254449061633315916112204844764390278617159444083982591883914115951493620067225283025696530292864298233438620598838256781888674150269740092286583322916807024865691161716030507949250013068572251769656216110493527309801858000500166279846088085360074162565458790613740501059905945207068948346352281444911423206565224590237215159149018090040118008887046824405752221369631919564316147727516879384752521844663700975557209773820753433834600627167944208376318681270472982638000938626108293660476801676510216244207905479618926576476503215531417271122046052870894517786352702756528326542920348827368598609530402821318119279614942011660317321639738627945070263642969586074979409389234348039101503637329566736286538165871893450240530017212654563423005455312132120301351528350085701984165139897825029170771171783734071624674314972995215378435807019854109800160607638507193748981726449138429121095034078366232931745048681434710492320672478072606616149447732053128194066165931049952020462289217069075963925457524437982357674294135543252894918271386006554691282885746053770624458499325654714152718874305899439841121148294845279423305495319684130191411232489523830399434959225890574463734549707915959000453414389210743291299778003644582081853720222876342784927114745003544721857016394892668416142972934379248668155202757875351923148358494447550433791527595288106742343718680229524651415988701688027058319975999991441114102560361330259468877753077903702503556338726915416014476703754719865899566413593906356449666861734936358504163523254457461057431133124324789958531427410998905343936219351437012392502413696532083979320868252102266741306229261166170235234733777111682664353120117691349868644531333802819755454185828603288412889270042094624654023425502374374345614788174058750245848931588877882833136979873154354608182166995413803459908049917847786729750006835290915067160755885590359976416368899096860792538058927021514797232019550087473156955901655930581898554162158009313488860730678110343017509614738953006926968026925263665824904970078302388630884477835771375537283705030686541551388206363252973125785865208000525007131608124661866988616220766270521392381800339426846297904224495304037139346267633152526401519853597895925686503980714753300608577565866032116765721227398315037703935162680654379218064743850047736392588290545796581936851262623604830576282585752349377705087894260400802065526180163727065522459746788416902097841771659418042009105508437289331562050114540365826233447752335551320101537577165726954052836522079480792751647960069216439420393545235454113693136697074259526435314719034531775452337813990774827185390259798772411704839719914004073043882900504009671149768034877235704147998423493634480473966604495446104005083591570202353734348734791967880539013890506956891390373176796311349599121820353495934073464545662026389933105640454734102764715456112338213661772196753250663576986452903368445376701219339124275689907652654333262116798666837621237411979805371132394362000893086488408749989647574234095507599043151462611551050267326299624738650336925649937547290896338652383417172691376250328408036612357795743843144101320673302676733323276544751812266295914421233472325720496263230715223690887832732329299515920632821070477804390720100591937701172682150643943444978697740270858495068139621482266703497346400296359710694436041268592468981838918574136319350011179211364676236398240213294730441460597613730225688284707336478241597784841020696455183027317847386122222579340504716542830806704635377628392149127983508064061777512219817301571481631553823737696168699192633918818305744704539105030642288144974003513333156492682711667418033853040818533501953591744154873070090267811982368923379010865354039044480755595172093597022612508678181433859378345293184896066921200890041037514232824979612744793929248855878917366623525540164656192515051749712193461516427617843876529157160129870269550268267164769961327799913270639426600233536616181028099640795688268850728317652682939325609764654414696052582174357608231696317252291379844665887173040553768719735195464624799904464106117769660089338152757347687765139375220220262757153936051610863323435047109441796927770345086330366596381917744856480442065603481740710867239636375632438000363429485056584389587730820691454350869851868349570487157560091898786851644304101200729628094413913319986912330210874530512176416467516525957652404424550133265539538665518773611711477027738667385871989889967925373981486739736248183217735258049490301556447002861061516708707277395843439986817082846996801107462789133287049244712166807769612533329221098874099598957835694638399179208537258602556349634092891093393597979780774010005878380575799092705800404188435803878907861870018649631965806272559336847861253348511354530044693322463974586130033679669314531622510658707653038194132644816063085936809084394278526997700160783651316433762246556565163086016075620815699295258868128364838287790541113956952475259070101910116054022473764460828616763897944808635030687011513585978069021764605835056156642306404823647870126729781430285405402408338816350939900502501258053074363579347923597432223890510126904484474436006798854868134707122614549997449887409692283429615072223262965087330817612606061502073449717581834297961983027958009593572403636380373756944237458329594286055162319055638176761763265668982242236324642263838797899469191827838712147207950526765790581011338703289193268052230962748400075178465608233226277473947242881348485953553871339711894323285553789097273873297381892409558438857300678607333064690778818395989754634644003095927032592469044977042391476008164351878601902988747284815463622557041072769953002443918526809421219280466293478950542667746556050748372605264792683494681704927660063205625443521385355948956563211600522778536199630266049512584157927133474069193247764798839085762867804875204012576662100557288323175263631730489460460524861893887771185451420302421207580163004224551558490472166005022182944905695876041614188494438728405475303520461572927817997436667569055829943732753277543332567911626990886177259048455207473627160095486108249098443532346201052678872382279413043522447364211827388943932257446857456359111457551314684516093119709600021772404355463101663927765802272235162416136428250743427519633202281022904224557758504256753286087655415758212237568124735768013342718681779363121628671519162042836286759716131768794681781021894295736489176668745778263607061321588615831572602509598007487999636816841344192737584804496407661300982717856928863544455074920446184333712576176987907037158735245655741295087091285198788253472085676179201949825619842760869046995201249402199814383262749858654002530341605862885664102734965002852581044452221090660833625597901813583310211210233994787459579659305059615914229402584610933161945284850540584571749993665608767695918093555876393550508208990658386220559030712396080885396871450522328241413242475334062572877370141475967728500378020292505653969920714017944432898047734936284389472775445728666252179415665971960155061905316449453294306441817370417090474186072358529002157810285981052623111383412189341252307738493339325397845317093204817295832511743234387292076184650149392773893770746611954083369136341361515666534869783556839963352354697034116506779599198409923788027412344416214298520550584011486641519731112075051777336065690810758172536500441026483847248825961092601762629268524762869590392783650491813178185853940237205059142166498318884807830164529658489470744658544185912560908489227674514822786156153725228955123440436898524026931894794730195057936739226329676884875386028212373235485022198979895690173270500438215469704164769559768341708671001204809130743028924411480825642341926720276369468624628609239614958292048923619602871802494818873237385280531075901153440418957982423175851624001935694648151286437715253532746181514152789410333875924915347207466877658604431249333528085536861740494455806400971251066837922659644821031474127658448894670355475093902096082228028600493234561808247893790048505879836266700349996404371008521326604895006217146583753245174611720896229105923636935733395444835175841207954524265079359184654279457074712068696298253703666866259782970811693045330816321901660812424640196720109720380069495984140495107533974287709280597137847636653367795408011046382080098000666543100978642657167926856880472801576392437362649781351526227734300847899548745414392442002338122985548239096684440874075483987856108068211256126046225030554547530055865931367367205661530894266315098107053395375486344026135182320438532642154214577818764030352063518481174651283125859325747988300673183152733664246300653301819895239159454066058816268095885645828114650872357389067226670764667804894425545446417854790255923292037297643057218963047348678990749834338778909883460722783500643248628269756155703202514576962635908290933229063969280546071510953438432808795311707653680299809263548058313116761759704365232611048102469536742541914930068020498611841496669402826334554458189504001967209424664461871658653328647969527457875528418119809623622946060101489531218912744329481555661462002177821998395313319518535656290748692740065460968168379336655338426423053518034243712370069833751805679056594326839052942129088389932455856495545846246878699394680015593758712747259832504867911207643337576436477476299310659833767077064093273141179406607924265597596755199116793167939066010218154765763145334299311582638794355504696579753880241295458089102019288303382747714432914278154295923538677623098016289090988450368266326719794511556013201358210733620660062913372691499470158964340939065055619069656144689107647284352005438711639696365236296199483390845805909292292676590981163510828398060702949521394467216768318558494901956198253626418460905897036634193168066615837180937305875322598945816648612620770409024397372317790759483534910267093406515759752837358485141865768784528499696374471529704043245870858311256391642499072791958455904730503418544265840873104372223289996538350949899983391790136782388935439609851635920212048374724764156010376987953525485474884277287977831537351056159424265952553692738922572632353752544461946467309873522051459272930865060544315919161100082030430250031089774184889798179054623172217795033096943164800906975600537972439836615334650298622401361758410805433583765358530141894185837765409223091832295322186200565252942307462162650145900595808254061844023417009744253617644305647196109196224946205225981316996600158804419219324899215366596389467737032211208401983731959571817100263198624447877839685654466124472855091358982321657044870303812752051850235072181685858059746453466695322184900547750553548631497560863076582667201236577988942191943505558348963398296850913127109190282654351166652251500389519252667590634746068523417205183016182270842678981218780880230562873311992588320330181017883018973112890390516929158990441800940027504247682125419546415633000176563909260222207923366507348900435792139896147826248801211339246568933228078335314135218060805506914056769313236386985064829864155130395691529942406649090412364039665105869391305418303381338821059412193695219393962767532175742974680766234163511210457051796664316303237261886617977604181576492073718008219290227868939996117363313372706915590584052061236059079213542574034242273811158266315169813586585731627594706544392918738157701641888983714779460711466608202604761385503480155666818113922864199473690844314600251626735717256708627444260314146439252927110707261639915379459960628720819199752456572269501019907093974905214594757580530336912369068495531515056693104874711471414308148960059779610259178726209577180582916185339435627857888346123551212832901016175955025627262046595363237327777625563262158711455123581070093967062433788972407796994940227187516843811282460287576957235222839852634919587941266674023113893407089055367646776306839041719823654503309457657582267681578486069865813625326446340571998769611029163382448124697528660710043352249268750723055693820652257840258293059704836378961032427052885037959363277931231149949898631481277306177218921051935923205159061214553146173569189547130521483148729867356051616310554531358273458275679427730400692449938356117998191121232201759597202849738710652993751570740347411890904347614943854819975256551023274562305151439887848522102153601918296258129276975375809717599700525643422559790818056801218275947376875125415810358211055655269874715810635809950168455900455361634186134858068512116611316530339543862751078569155927386853328345851265400270123616170120632214533809760237372077669334241093942028948908847880216433298678844857316209561923352899702783920502382670724842631248696549953084856507128492835549271335080451804230093026225403542834631411320533978598598971033952178007828820108038109425803144311719293230213388830059885578038356366891850367385690870216858395957715265779725208118087514257246778188557046041800279021864428810437472654970484907453579623590672284479374158990878543929063177051803690673096432772064265775028425354632673213044330198149677268884395303851302681495285264742626552813185796340884130541691225509496440608237447860308124532486879096257152336932456794242030850551668792958083903745688350210364612550088652916365110462702451087364152214829894326717460334847756025589662250499556592632935612189623618946671444780468988757409862859603289650788923463958549000280689102826392272644765385309720203021617226760956027251575250664321397840026911885273045176341004495934358833352242570023338087800096720727141657152884906522941482892329250492387437071738727328429682080034871058960069201990010428252599941472374934247842576913425723202239180079241040598845348573664593101400231097920746167480904424175214271416615483345149132741557106379154590905361378397367488934656662843967742205017258225720794237285835733694982729423075011217260121601942378682483683078748461657457146354689752623091243709650384710477743571638692937581607062824505887819620410220885861778737994310098041556649563715480626950995882670406173972939597012950427104324459698140005411314187815347984158940661754376790761989697219887915384429934893615364967297523443968414319175878149934629372517249141744307735063486569640067640469104750037781320635049680348843983855721452588555274244246330685419649440357145886139698683742306537350290599688479691162442317816317841861431882703737562387299872308043867049051807103192020128071262932067604169096688107198865678278832032860509158036176483259436141668475050616965468531698692284181780679401656941561226776262532471133250176463580990808259134452592607872068662394462919551182039282035669635669947809790358056612869096718875697149519303120589207979512330913185214844512094677771778322158884553915808205128668772666644726443656321418667788468855243676837929165162779180510713645717848038264322437129466080030983601518340034707862001867856349050340772853461924864542959770323113625788157166183325630561294814369387934086095654212791852356179048960181176141424024497069040779777409822020888298421655674793077300682596652106271818263264248149194289389700137180381303107609635777720175931269530649605552235860324360468342493458669161396208554588363940457262794521302216187672622314740631361339744108946045211261434812487448483714231327927261510488691445347525149730506465960634710117396967649887017671098170646048713539070025102817250114886481961876069056189092113178158597190266222595953400842184152108063238732278083168492455083400708979961868538778050064799414812754434780403502578812988758670636514560184854445393953526619738110533173634977941985654756954548280005331326429022937406561822888730600967408697140730375077693203997394481808168563460994423739737871620026613970838468548446703191222781326183040783020776520915958291981778541635030199425943912604970986502457283465628018913251241802386676738782812356308058465563221889128814306475789046010184339234653251768402587634616245217201750074606571792414297803129169906506629644625650084014037231172938372161795714776763755178291422952126692254410012626359865213007482341934428734897970836452778331021823977878493162480990430492198780860720411650546880104840395384459729008636178929933114985024545203408535168628763148887431592765395130813285389658757987878167896429988430836853113796743153784483454604306817820802535112099079876670556155453102032534396861214460595384625659745061720141750246233198397537959946931798916937564799624003758449719258994663461982691758433645358157524515755870253416379360946209174952328600383273475170383852159859602950837598620497464838813203203129709215000020967556953157818296029851812274374285186709281303000292999744936304068763309504123150777212473446193077682765980066204905014010626228632655490353616768143753365860027380969541425787184142634473259936791875222672172715124983067548842224691185704041865214624771249553404060493425321111665797992054304625108478183003092813019409468665173758906217834754308209370719326620038573062135320651860697757717561896122703850818567000795670758320134899773174843665945205070686633659774233481344260505170849537690876631619632751725781130789229007233845227077728443310294893061345217245822785664128878890482986660797129495878845441432051971822572485420426253990938992639637148523630243915258399389227967415226838250079134132114328338195219032539139265011649491264031059662191056938108472661367352995880695702785180161096429582508323482964126951336394356451956394587954920520830279088888279969416805090881807541038375449891677007758436404599143134054013158015353557701054954186717748258466951602449330524261341606731891698580398764299776811300964812704211211786075186766945486536838006004013123022860970007415865577974379915023777962681445111949720950647477042711653445531077343269049245366084226077435912758238197492341025979957583722608953269904062758113371423331898237770601458767421886329489390289257742630643328193349702868216485810506333166100447687060596161488878831847390069411011852061780163913443294981070282224850125316271171589335891030931800109946007033552256631292692101163989446503267189828013183598067891408252205885534491694431359522813909678409044478416461072345024575574035745349626748785252540767429548252486226115257253241387487787371948281232841028212955105644695149242537987848656557160963917930013308788308927945494329468536043162194332707165305287964369659123591219933796509832007722544755460571966933779666119186574473027841421032500187614989074457365941164834098514131351733135267537302552239045194321196017688009484414145739567378819115831713676753567428935568039260298789145549507553945081177881719062500418009227435894567368154105024110452341266752552379500853238400573897026402661046613343555001502068634293813629908282923978904971228972874559184593654064035781041443536972410064418509572473655467501876051276493844746839699833438031173439605447599426333507965344357571768203924785483338955326479637000578867832832204287425027231256047602443917248960585165014086792495401741379546040943359248682785127277419315291112347305805952810959904164122054993875918416555294597766252198335110467124015802947394438391411429540554242055722645380026908398543698091176170935366362392586515716062719234454939758353886873852145455181931528106658912826252471034376878814658214856071908782492144733751893822184626124532831982423018354069288099317032227439498821836234112931949480325019003197507211031036760710669843100194697796736430025748825360945524182707781265853669728696478004625923314670789066261558662684491445365152511998308126465243501953130900395285685270265009283127106091840406988037219223192377045582237366606128586628556820330544196505613869714219731490905006775064813337559861099483677408900845075389444443996240049736858621055046421822393455776703101544335860065955039324601644419393128248996254786286032759225395282497478198644858681013310987374695686605621181080083685776419275917735205692485776035226647934455265800665124562175348229764861207110443323849915187812023903427520771814455299817425666567678017552206707049730320092815809592131123919729035560440092552123737589361935620770125216981699065837323384774332576147820871000149660044660476699246422791677181373558039546177900879156159123850425608675377810984176465368389277027281829266673295440247514302353027013799689265921823563211667188240850847167458054331859719303804263549306119407255868358418000441637795530135100476140511613588676594738035549584675743877347691368110212800983486619015142933318318040339519948680747571061341124948754182694850636041850256422523120116247547654217345816476529569910357454115869461934847230163659162072342356467330766713856282776051448284309418669653785437830324070711395757600058431602354770350365812380795076520883704485292679681126354046574267148908052744986178707030876413656002539990744956104481621688570429843635452120403050242060214765658688817838479628853073229991596710502346957334467640920579134602211009319422688362998742606750084569123077573539467662213145750481594755257732880666183932496950560759469436146775265102396922183667695476107713945005657272842647295420374206375831435423910910257363848099657980281989918391359765850891031225136223330437610858714982975621755483875169693160052703083989322872121490642406676395491426044881439680006956193291683842683204689765282511793305731530509473048582466275684455294465976949223514370300207384696731473905360162509098685659480356664093943479484575819789507586760492250266439775104262099738353362357744880843153657925765151195866544412566527663824268754789032479195155982437186647473364959599958384790481829743615376267664076760034174522626704236493810983253683782964992953926160104158201546963717956237341664271779914186857316664176574789983493074163622851117322017704535617693618084905746659557698693892297262930592749280278912550261111497514898761317440502718505084499917397182004889604433781860011531724415320619778444994689094421788906701304157600259359964730154327900092522284067335661166584893248131890551916453102790791963648309801271643183886249591062301966672595204886478853460878515008674649489892994242112452872827015063325099422431336930717732241919631207201170197316238938596171003313140959429907193073384043773067063635250324162722887088706797030511529483833834992371375505282471992051331444875198574796305618318294921912416941826973304161919311865806664920076488025018774492484107711772740127581592503435737260831030737453126859161419657579394739302595176026725264164638773666450783843835178563201603434946319028578171441545851166682325392545138570220092175817506826655419440272209448433014825412472604715934205969628116558243062354337386346304584910799713947985968122903713175149949927148965599071689306455182271862404757444321975509713269274640454106180842824601619961449654737590919044009133953103954346616227435710007841319897183225526520631002748551524722207091555345380210863454277534759087042705034296138504136385405553052117232683195975533089203192242379148884197072311752088198880282282004703732937742925363728861414980114600731939748976280544440551746488837680278325425600287641015236978837522285780964021461286199708282761786301555222308741957865309001033463704547763514499794012915439737417751474553493085153592939409080294142944579512098090505387982922527260248530689670700267916661243961241875311866573552497342648554527499588355503413946612259053588694672380230900530228273004846024342322246837902074341802179392517409701497673517253871846338764144350714316399042060070147798502795613252069154717454272807943119578001502587313032689017554013537723709173132107622019249322426609978554802120459751042759701852022303459650169864861632720973095262039712573979692241195968934238448235839905689381628622987857091835761433292208706051974430927410614209567858832409895696424857175876096977889105989682639809342728732926224543671750226945284902967871184905351919344877666660696560777383150806984330412975376922857402688582669806727662728235461387209996232454895355812239516681197188281399828724983426099621607843419193633549234614789225886785060166626767360242286686994774467033259183694317652708157676400369091773721350870665420376100605110446130017836336061879564770707713790216149126590863574479326364024637145678535252520019963386813767003265343583516976300484606869020725463701113302341288231262704750858152505129678853320052015129461911284289871989343510791410938499591439579398284289067858228438462203366240648081294591620969843174489603888540914464275235256559475825830916648011804984132215787105493251610179204385191142314871130080767187577987308581642410294347953757641444226249928507108791322896447885189122242667189158793906340277737377321444686362108345257977024022434546933268197984536332650678179884699715996631864470998219541242920331305222390432377191668015195621888110096477392087206230466124069733189167793902065946130396934250728033981028761370835041898849589895266505404909468823187671261565196681107963560963966965666957939911083238355287676183314324937024545744013970325689130390368261618282235661417078004862376388411801302707089530429292236882688432083127287813015127282633663039805362835255382469743999178292186582846600168261750467993627091738326938444050660036540114337279437034930056253612440668937236771561001468719862428906769464734422921343101390814239312839651132178679805609068302460632008533645099382935828709003508100424474777802081030851020680869736874233069338553808931037224994308568878730523014285472851041108309391495276117557890980731778967366288364940513009880760332636539707307147374751425066365664079925793485209690119186455992548517663514598598800544948629213756445097288422708709502219455813393826808005609949472648407787905827853917733225924789473103538746371787271210227386950441163173591956781388049843183379575463045217509164362346099746874180145241854128252762395003086185025418032031578718317644658612825647423386836842391327326710853679096981770867973305883033141400892578583155927925706716742421815852918881559359093602755591050047277462468199044727079498589484303829120685359742358831193043737192287474107879469263388381823283269399107291400688726716716403523640685127557518215866476444171327626680908919357740582236361493107269647700342833398269785572776570174638236238461428136444823059738243279862410856635735475168940422891118543902838664591533960474831284600267121705985226845111039256795580181081450958850802099151368669034861558337197924373791452869028505171923300048086709701412847952085704615471669751543394966420869930770848950644377558432132087246575408534425924887327910149418964208035959631590369225496281236311424484518821529721884717299733981984304041824412285065170655279028134057183902743429749579280820768496343069817168382415985365946243342707994333224266005485546970790050815770837594995414019638542945920219036943984571959718225670149740216702928859880091336192734060047985099079706544665692898033280757310355203911959070053882468851344356594688219185066601852027930189438769676186121709451897835678854345078645774393363671907373275164582410439663287765854583554721977907472532670005330504490021739307627426839697765640450836056517558681064576247852287740403584549505487216159054586558523708399494465233942600132748674851161950512672279924947361788845452776901596495913624767080137863287710876979933015674422577801112152667686610338285089552773638779322688877923069145656940231872724790504486288892435946875495534916371066171898113041302210801286172780751047148400512090910581648882646891188509816523837495653537851898186596919351696255473223459636883504507117649717929525837489295813967192620741407043410569765903501099367595974556077644760793201890390499928734075857339484993124168881122405159198889924906341200191510165859871107773928074473592035369247883584838834516354421657750501409950173586559841184621516473764867881464441741133915050404557059687056838171522779255628099310886558802193033833569036655061737645914582083757702192297994512660608318407158879532460980927798599851916453836019915305313447437400789305332548722280629850730190382552621245935145126542679798488679505510553429168319454567223274135650578635227221135006493204814698441918633118165743324559497746615024659617138663482830446671927151996151018099528654200423099613995132072531934379396549730558795585807176342970624569562855702472876376854824741054452235602723941080418041343892178767648084326970435949665684349070504855743844888690471788592768653395983486133945172246174821707114197562358078630820695904875745716654545832832070236501039945148089582995325755518929074452088545477779948541003148315585545490735100499852198017891531650543141239316840002450822636954806311548503635760692247989924889407446833262554984114451038846396624369770144622473944658618959589159800322742785939374924284236171807835687452226458546762885071013540386986873925731092737257378160098927958285020408518915830881654554223067730960807716265969657192623664527229522921229296994642630317896052583833649803862654668738375280055453928640557985707779627689963746409502566772322231805533816267384102122329704483906591401068149314843850322982172824925436861461709242296195641730747940573596750185425966686477267554472317801479309793408187833335033739274868116579722716947777369808543007684889931406500146482064766931878836660478843841250888643166674889677422146666995750213497587326205411563695180979024051225939601870391533588457043462662558980824290887114323796991909330743714194791170822496798035494871109848185442465456914375593081974380709408172612394801730618283065371748883597660449887739662369777712327851333124772639866883192727694698771072435032220077661747260972110945041393743083383771549352918098451782794415076614709676166975685134890542804120253096336407932434080831703739064551940554662289278032154393006309031802373909486491066866548583942106155183476746139301954981652371995865282129347908607874694513611630699134565700098377009246193365025803795588743968268371135440798366131063221356354116213602563619447867814349536165405796841378283796630568070132177942374394007186158543561138918321367499121732253899163114832156089527391994522275520949858146963515334736787125328027180765901569601260182750091720985685517506486838797985367828744565152712589296848750318683444520843643041559050633300565441265914295146048497012599704013089205571584049672395181513321129527740443293975607335913895736885752562912338119058850543022509998553101514272618406134796518338823721640881194710236064320543844399285615770933759092683286853776318700687134276868210230594525902835871109791903647544841127606688818474999113059630066348700374999821406976982505382250385984052360415193628866267467850442153401234024992495713242362955834130451389963264089101607013219693113985185221513219808085925703429694237232741521304117998662022152479656270977436089331750340692726306425023078965576066159273846389471076592444815171466047637263666889560120291150812769063614920330161623290513714868988933028469133475577781002234148268984822062695676674050363941402659642453930001528644385064170046792323989351525558487107472355387189360903425685499258349375376965376377376686072310394242953841112710930659240050725273889623844128661316840262084681974220035467076366969842753813497711785011690574314679097456632084149068368407810801074756968764965737188919709364782641147046483879655374558060193217474642450778527230918270728363440013871550654547077357500633748048330627735521756354673911163517204766687752576899226478462730397333515730464404764990455742252434146527380563790151762020581806172385265417768396817531273581510849562922018447223995741414000746035580725684716960141079941527428733376715758237211407705343172033752930177303651533886207192741206275297063928585657318949882318205862103151124609962302187037686600378221017777531793147835836271602380551464165331532311321696371158788684936853979979239724388817887142694661953682227789254226874418164184665657735658524389506077536804043213182628401973999151522743903508071044472147712186975920812269250341361030615944647270956987935453167962671916767718154817975074511138824141249453578564273039663280233552149675782633303978098303049988591422114206910626930541603487522728699121533733240937812208284854140749330988250701986778204581744727660008345521107481413111390219212297119883589073927078740994895346875093340243720745518384608240800213827641841785508387088246635376478119268456895895535945772595926639394967361443698892158369280144185087442698609641644510996674813875745633524815654830125201240519379437767382988212203816852624513834260933662558542057901037848720876664715047196362719617806521873741739118179348803216525054875173846649723674739476395460634879908996037270985252974987899703988835564137820530582031581655883186517454277754998244270647650040760856228556415835925628470863770418209579991863685611391070163168778873158460048507393428205225711159267938710768234434780674901931716755070101592308530420281255615569142029001250561786698574348546050166197904820539130317235791630321195668772226650750644839712961630800640787901627295649466520374434261325585484624932665419470233800031833790503669588894097347499755379692939235599071840111503383215839664031643665895116006842983893903422783925216005390529442336554432085627612134383686018947780251188183152636072316860387318877186903948586280419887921372919279665266761991714096520872273164157287384968431477230008138877557782917567397571925610729361911609666408972048984414767171217781943385670590778154766584729488540371525099761282808107593979804786665572190189375831061127537042624350729496246845837146156036933350991225327198992549111621530633660480846027292824414203360322939993929244818730328941262391111273477533655067234277096871798495996455769329111976305837690470775835579490657153081675752298345951970700948362278284525697135410663032088989601155670588152846367689950827928555069991967638767466074618599381532907408162125475579879391432900462281124283989945628675323959458191172256491701459515943173773932149208902943854061478977279347334422040966274573817544188650880002954886479481017814723374293184325619323281467848081798913696853046247876825625244102626126741847457185277528847490474665116783579655046872351487864483802301974240951190329348364446662083759271845056927825335144853912752820181749230860155197492063556146413384410231590386519487300916133055018111790902896753276542688006547375209738381502959724894818280730479306472013246932118658214628680891238471008536598850139635495297139894632980832273881389773163273357699762788702056846897330994215919520171662404418555754140327863729095540981501320198454422505431449552804577799316644839101659331614090323465233576170495925209555451547059283315621955977001031910692458632539817170664807187829373971196429461268451137918517179663632837659889760194159702991798542006395618921971241672612294414394641915676063448055236570785259975572966934262274546936818768753547633829180601353006266831068767864194047354934806758975748171420547106939008398098323919791056234038187141310546921201891694495330729352436463877200202965296213733835256068341928453785388884511239177180870461434957570503659122640727323055393034429889289310528285667043804631428097119646567660369705075882461190773873686735522960874251497032671002562720313519618670835457151264971881679044702925375900721982910813684793488674046899569177667488631835671911331823829100937764760654373896877750450463271288686643378727250150116589222566333311547763889445134912095586850170551160158926344408527561953739754811865462834063788196213587909788864439427378695774683154658807563000942778002672183515652315021323617409134985907582042161279535764649413303557798998201725268445372636804725641479302637307570431598187156412913383076709412818942854972819497229319670644474916559173431986857138254403291150244029069991799723774860464210130218226714304289249335614575628278286023108714378430821885293906188251493733212732681651260950268978490349728901023843821988348854289015447988504417333807005235081922637110360978615972457438996282808602839241784554798366213183527459657958450410922643146954214199634422978594171498872546584897098601916633347942206341455465502992739843528017935170869749481180354880502881664942603333390125800210118580885403336506381910869209830369237226734768493051798446385516631986565487922227000318525438477395876329286369784345238837900225157312005506107714792579440640197387596282010026098401986303523578472145075525720323894579464409766973474088104137765674990217189860316526181993525979181185064035740997701964110279567938862171036734791327858753601988260874257742127239540411319518827792832674903721700956551389861660862928404358502142047628626433406366194857944871546954240723242984534414056905707054522853110400466656557868379711377028692504358727611459661663965027688953939265892833191106980302129211716885289338663407666527501202474001055557590298875710365184904825856184592430944103048243306604530708172093568635817278160456737261003589029299138175166126615406597748878650978095567475377549878210603889891398190615295068826322841853331839272874213909620582859719936062279678980674340738439307747030174379149354741938968652272346117265405089993352174002942290953939607908033725271355103600309537978457217409348292108275324818659842299903822195919221423127459818212323731015398976276718699543555508427303730897149171727625704728195177639314908493004232961454204818221903666129431616075664551740051646333102345794919256417886171200195760953373585763671014435890097182979985385161416948846528951551993517657797388792524922112842493760364572491405679052697517371254526253394303030993305132099804191072877491385376436295528505630423996056493403717301382616165034599978165082510712826831819081746383430504886582072584773113572115425399735748702002718572736623271060323773111350828018845359036043551888128348643518506713945830510142322828178134615688544510341265106505050699769273696401689935066118861188576919394721707771950827932893389721016141169448606275610510805285551841403942617372838024839821082537780572222936256383172131886890049060073549297141944366452513343505539043068310658888359305203171490807628729298279994858129802040756739776355541338857255196019343248437231985277048148228972837107852595575739979032292029827785547220115112555337537778662656212153514943808203598239785353960579772095612707827232041266030993841148049962756066055982453683039269538262278297835459861838906670845932313539380200759375596067106638615655977614938905579580018379857751813564244111303529415302389843471242252862458267768537896312434189263126833830029034226832219285896231787755853729335079095078400859367122420094458042009731228876137138646942222357783068714372073403710172980313640169819660710941648684261926732482210026753612810729252703477652623987159064377925859650397238671952840883113982841151420689988695555090151331531876516376696410540486328200430578636981031024226014900461958346586766891937110327063503863535287884499245333838919804789237985280183135914574506667669721265635636011422718012158832607089355416160332921228039928423297713145934938447672729890500970591820573105481528021934444678171058068055110149663016738519136189040820584606330249274177327373596504843152418959324364863558172278368049423790255970554841343503467925938020274993490978840171375338675134553932215479940267385281931022462373104617405202344481261015225884931312234843694907797214134507004822334238471836466964821311797581938135665809908815885541486769660428892305552435941471286604484175185958955041553741613626180895065953914465134879029286910252337410127597772916892984534504175985598407174225823256957416566484776046988306198163822766247334407577581033671229305378551869329398477448505652005475979209959030854294160977706885583529730031668272589248543473780691479403642638877553430532520773979034537409301646865896649164043184545661707681390581199542380479764138924686633751434955931959248043965983095517155012113779034331238062894466078532384342491549998820067390440748351292337844903158248555938517561095739799786781967835746571412168019540507935252198214872375162361995909890261486332234324978116251538739250610151490748072240501296738702117706965972795761508613581379016340945504256589168750270465281508441161729140874986062411860123019254254799721064544354499642419347766847444063605965708522811492598745119037403205129584191474318917971652637149268678280580346634042683048452989625262413014367910131421788941175133803938004526736042456929877051535251928094403551406116322413439963682470175906861564327206915880930146380720858746686121188483603231598055676309788860880828106925334965617158686229084078781126882416232682370581552987807738940156927795562248907642238811055127771391155748749462287845672968517810467704296173227320355784346392682780792902438812219419316496422093683874968771525593199602928685442061628446085648267992787705164925510076472966566904974915272022582640112046785696502105427157754593529760162274256671105571106178627366611844007669574372394237865027243166629956406015155327945016434798589791348023500368379351996944174872813716669963592338348179796467737842678132299958227258886689547920610500839978616004401131920655429989412729684860536798091553117914876655810389878314606491395507389343595355600453212532320528672709192798744319648017168213190660639926911456006652221451483880117168584778563137584650978948152597952630917030744444696314800804990572418238999668406651305544395861768126590962638230122586007088591845185319565285682472554974947612378321684643932492011911731337049067878421832726841628350502459571006420575313613719535115305751716157744591261628970982025072046115579075229562684851851028589640105822223988738191718412250979691086570287513994741966798377009970355576658350490773898579855261518450227617368197606147284223408764133988551544863175915712597443781280198857421161757545004722899619663052877588136699631665465380735978682411328114594172393072087407495140237540180869160598285612886601781633515378512081592843005073109793958035011471528090761025283474851715726371084041975554106226002703357032128011856692815409916661238709872059256889102707393810274985807046875198301377160209765022798495070370684883890894459913221700481419118875743698365714761367297642818075173323905088673241405458730718770305571940994602114447817076415947446217554543947500830346080648954377901415135256553951387146914715339811739181087547587678777557469954208887490498057434142081647864452439672320246288269629435352355171655893229182850025377154312838119755671682439107220409080255956335906497261910284422138780895559225477930520309197468006822342260108432506570674761085640743187600456800424453906976128184977262315699959927024997458659331828142618335164701417831727174249763591674400644348272738251603831067195047848853755398904237825321485065351534364840319034372136248868279200291028543077846043134471092242812501651429002024552068355912019508746035824876643719997716549981659214296657012459317403963895819993893094014762085565562881950755606034030985887058519416348355189703981217693723259506896693104545265183959892831687172776928302456557174248268242618156960821968782109052457125201493621740974093707973149080289097042249654704426332527949363433341084385470472023800042893530210435599229673548507990324065465413792374622761857582441728526532394838755683279695940309012253270235506678070172012182673871257619825556431817674359003793612249948713114396857526347924656381904059829959377973818679525959636672319838840387584747501665734777639676802210086963256864594373947406200089549047596201752025533442344798553287361091492934366012820072328021453837977334606022446125276561113832050994888441094133633561471481765667826848451636952431549194351608700764459783659991593745246634480777960323900963229422573008909667132985237128892030088922312493526755724690685839281811441376858460047893824727327633067114399963058332009480243350108697917919525600487290597257673620348689485653427932166581570031971295683098286470708936987301654097062157432765262399673267699466599442424653935282397995320023442989219578075206673802763528256153887794019161949814957523504664678211302590771440548801909332609278234821714541957598724187478554238948405865083699560256262329951952415479152282619764385881202207771712641242901531896531086272378242665191439627184777684243697881686461723551398321044760555867895573404115939938612298184027542706258696318289323750134995357177496951248950928233061665084648823643518748107884554867812770829951943027899076187482232103867242241975705377432735814721413594770826910632893136997972355375054662694774236502580921047323507734490110125821950330729821488793562986937816171554343437916694322804354559042395402099589723650808546412071989049108664022522485110286652378043328500048827700778680869018220316776648997987743198349983836376599495432111668316570857054589698398989577785425863217240430574323843039553687281021729567588058418445421517715212376989951354220940002204902558459957143336836005896485809508804575165564974561442549142829809093356741733952607748904378533564811176777170247502396144356064339313278987166365110629918900585186427239736660994580385685619039331079547010905191295938698944864435524389597239854190743439988039109002715936886432048288578696453708287055458882589359704029408218668395740832355324055946110821752406367206361942267703167075557178538419362318336598427467902451334123048437708400080672051531777844482531114068754388551196402891529973097307733555692128353211218144788663007798833228005477198524458688493684367997179025270227459712296002474013587089418748380529366563825928626266932796832536452499443960009990353327241418657400809995092701438936041011232670598997330242115806366334971638074082350135322913918011845066137365690369118800336397715062977358037795065179819002880166447751514929221809008997842459002708111032328817476305050451703617639235544770189681772212595820414936511171326555553529795688894715722891854794144480164786911759644355687085706709566995500019847564869726620731304848431499589584608787377880772647942544849838298112219447195934435174118926502412326578612100137512792180088799308220858738649097653450055445485990566852878700011824156680237979824479256459506571840565102642037805249836120187178640459418284888967880162827059178988461616237553853268095944521921050664673166907418839040116276058045013460982021660610378568081000292324250253877040250627425826913748425591193810797947849973993135832498527251686842381303086344868742904953266641966269002267737747296235807188440735400436242141546643142963879617631066107000415676810408054903371987370806082913601639653788919352431746756903324779190287075499692350984205429546449794951611710532436194231369820429750671388971736644667475836769981296833410303572728795207864749903621944392254519387522587119123094976055639466156466447951561157361554288102991312586898771794163936771851361397983211900812258088815229357709849689147718365943503834523842685459343934882255755548953838310898188747800626339338966435089254043863958533466788739795433751516595082175505329877758259569831063345217447850892519088625351837389405217552671029070860827024225930208124659395245759135307392609632374145943722056745135972646430300930106837169382463579320124923866906305315824443354251864833763257090560281797775754878983577847732610504358749096269206178102524304239403577525663364384486271850752533254448109912284610018790258891865830019158944618325287528819738509998965739004259729335231071326730724905044170204252691339841467587311737983877952112051354571959750637735340954656187935007836586179238230947870130177776092719502373299527662243936681498323948184048873072649720862102109438648404023192466436500370602671342869546250708201351305256265324588141737395984663002957877109142981365739228669083007451702049074544980867074632655954898661579399484668610795726178873917635891257447742912026419508225966655505928147182750900582030876483808060585719419016096375574571478033287173159164452267239207853115789270252557824871043676191631950969514291640903600324519605977345654202609958207674050386997504055662181858454148687508834636834691345260891997595957321904457810052694160858687056490787262581640089558359483348150700709169234591886825416412432453142722273129190513187939988661330673914786471609251219288610029340217606248404609785801400992981809090696391631774827136348417559918184736700975522183743116173508138475095515074070498983944612705850393119114164263383956049154135702083947071055932705084966193167940944022884345317383854657522531898720836886431511688789914884525370144557424908326974041106477600050619650763412218712884102378466412498879365679874079524872471084231343768288341788897556770810256719469704912611542968410300821895751907882182363810816880644378701625705622571373861167597121622716174270226012951074376645970189319794357575165367311964349760320961258773661153566311576453879983500820618959388803020908648663888510829654072111679272511914235352004013877081439761347522948825766638267378640095719200742190871366742364370041711478064121559740431502796604496662910193035773900342584004846114864989377533879036500358802932333228484781554720408653255443413915309000220252942826744326416442075708653403928106402073766044730927256300835524545991893290525113224810440246299223202071734770024764101854236223892761794316697431802244544929409719058114488890376959223883226069260579955660821861880925180573849718597108091203622761283834145441270072324949719081364608055378091384072920713553857269496282863547662465901687710953548734663855026427885278520715771801404914854671092261988418599308873737429187641184991233907262146429332644917928039041155645710818159005706231668673860775010537065047182870697753490664384153828922375815512776148276544123437770884337706281506443691010002232021323230159062746800058947979104300434386247027577756930313598905257765663095820183200129718401092256560872104306304637088887818606188776798073735249170344436873821095769225198147236170730742378321476188544620871965925597234910406828963909214396357996854807095844792200301734201453379621642630689046855126788740850720107531546994028985435161286209522049622377805343936830489512375623561324596223538490612983855016708575534656397308604937717367221090508648331543906781675102451557922004284013929477263258598405825691528206117634685384347910075348332329252784523279434930654685671101775866209100764091534658611231517368193014392255560704651564011867552840821357201240219338593035658636047264108907844209983796971507517221533419906920836156051176572379354200421214314284084173396298486098152696516629329052182498837994964479829254041722146668373005411402513847362299168823905146953621767052221653090621543070663162398938091319492886979412965547220094652055955230200059449073572555083559905803116587883079028283457302368475922656287182073186374898693189008873764939701549098996202590941614003892191116069003273643012537645547327273037009289414074889518226856110732826650199613016374005883389905278191131592171033234015955792305438970186260771898389416437733331426562270129931624535649722762319692270985049619728202197919228807423448779340758891627392136098724085725753402637269087157023375139160563005251797515392149156626725466809186995594418708419703727535441636177766354432846398663619541803309294300308139351537824396838308247946817487033140564387856801273317138596530997897496563736499004534727659304683338567303955821240169887475923329974449703754713127415252726767289277056188378947734514815231094077659900434997155300658730610178536887090446387260641580099912048596367059747367787545189708358093539859983132105453346340740976067635913800650644412855941133705226306274585651135567210039815036824339630408341927861498726125210109482085234595067508808861199008126269668593587212806630422120501609441883580735687516656562492957577904316169420452454543824165654786852748464063880896885512917480840819651790832770243571413914629791339138727088207744204305970308787956345287098120926588937137846408968207104317643373165279161297016074164155540126873112435522945557600030166305129791039634130696875846547338213380085142329066041203245885983606629856094425106859132255618577344843951451107890988082718778861589813243416285893692024050366693047005939532430211633167583169779759754162504288563056005162575999873699330074161916839531607399584155195470335079443200999733630311976499088547407304540254204076756857358394947364792778081214454809082036406912691026636870859829223727554131969119629350578259016342704203529123190189244725499910113837007828752694137686455550108443654675148957073141075793074228596609288477071107579634318764241828890500718846263454602404399499772427739217368114846572221885648125232162323464967552500926132684176207707043884629291804516702556397087054498414307572550858838563733261472364028142341706196087885234340372484595687391512018648753998339092248423760486690772990732637235304887532733197651957531655223927456952962066699062616675358534660835564232444858484440428921733487035458790150657312163309731206055333253860106476114803751180602803780131513261169678035229455006761559755593422707713287596973236283592978896563458675056038663927675811419399663058751298004162344454606424543057752034447602786554623043388336330192396632758618232400050020450191815329391069780692777859993170585830721278095966231168179410699472593141487642920995866680668150204480588618253500300616452620783193220507229398929082067940580386297120009769546677465337328409309465046107867875181666622985933445233539349024632894799245933889768403259204179521482093243697948888405289176918380100118622837962492000480398966305641106362808121531819195289936464244620582131698023448919286693521762790744883693286209908323824751883165493973619367903260585522048572521462831764643269825912846842468249208712731806710761140372905496301907787122970663980982788894798028801123501154109063720872024794794151203744257119842940490578096450864979687993283350705533606406759393809085395470037028494714330257293388781966384256575027167957003722612682874463245707392516245327085710376129405769841358850844134292644931793022787685597150484009007553282538465544396508890984525635650312395244424398175695954441140377826885177765909992652135369092169607989715869642823384293385344748874499722610791863893183252449415427229920495985926422944133641373449674546023829044490684983236553904078488939811936026785270736975903838316448235693726639130509125882230986401369858958641236062724971495595382584316861751669978207554779982026506293492065167892640103115169215898031545053712643843546071224962402982997321324164905624081764067589801704874009021671942441780567743506302578010893938574743860447732675276019850451170576234806561046208952568205838904615317102815568037788272779547480210455476441808488488907042013603150019235971595301918349517301194566092110159432862377115406443789979024944286891427821242278596149257276689309347249404548987330416772025725830974580432631881582766732972660261614655394215767691835720677331515599875893609478479933546591862551844013861826534046499094585695262756052558185523595954981741570969353395457720709029663056072751457152877875172155714731191195554247126386320199873881361639734202769275485458494940529421187580031635002241212108563423573949664874683727777152276131075652791642703476208863202738712303460633513743091118387827551193815328472076951175421296010282716380907080110411803672057228544533860394684719676314844790657789347965698672504814749654302086784776186477139247311331739269234465387792435092737759061880615706347426934449490881438753067831035120140949394057451293043250316047809540119475599894940718667285995650585194662557629465260334389538770608567864658172468340802365739446551324325199429254828324536393758049715261136671742592403917509781137949215748542959421459452098132777114223381038593928514787984473540322072676777481298672548409389010319707228960244039722905256875478974028768198996169023385524429445602950189055288396048755678892627220822967324965219643537572506739757661704308708407473652928440604830259844732003323705007974742572751207571566819789119863691125113328378417245004619537824846095615761901256314027677824924819620528114895437512687889856703666929372329972050671627059302423824895305122165661366743658275647609253371021626482139385018019753316132720255013566188632844708363871660790439540272771489589282977706753700637733113707917162863837625634894965943309031755440176780269420967782910576861911234925352961716997420024686812507621302695827917126236140603492061691238372089283965811661395172571493495364360789303197985749772880894621998324145682497248383976403603425245012797602096161116070251670181924143457765085630833347204383685277519674243223532478666162151815698331333784019125863548633439583221638052356074227422934988851731247458127425734068483066650992175303536346600758043791348279067528858612683390926016308753718241166696826084563670394741452663322516648699836973243804917408954254540319032460269099697600446628491860078422560983117109712971569502922840482532611427611687990611798406728907561204369198636440762095224374871180082406202452337401255769784040750723046316918253418283055947146289148256666959753231013790531678775567921449934599855509135797898352252980012140127464971600010251729756348860987183284863953513193753888922092607208850507070504784029395941182023166351738906962163710969626148247870243225571014776416056260693753756636341207193145149121005419245965597598971181283021091964265886360319009748410768967536939205341880118988112521025916489128323284451253443239938446973851493911736057636883921217165383841967792227308185345338691991369319071319222227643308985327440525496816232060994318115817847342716442071548168377492132761034184813158153348838896341793763614660084610978799254427947277675916680550457298517488423658453847580517145614857280410459000325957555031897373974988822926716216018322383446345443710386568723295744847314485356189500926546280096360869163854324466337324398220036745050841878589926638746748745295140832449792730043296091344082103240445454548063172208792708340980247875150789295947207499493129522103744253228019992125453611088741952835985301543978567761284197989390484695398776898674984002921223802039674137522727596450224707254952977834474267491176633907461768808659928278957931930380220013274070258390301532152186670119015772583211209317360875654435781452530656563992300073426906193068191173173595632278512544229508517309939942673575542347737968564847467633310312497704663404581394063419780804284693244828167191521817617397518218823900639655044847631178751187042051178867245587380650283986772594600256671946806420793612481465462719421612541416334686735625061981556839246440754086067872128689095833117577332999601181034308702994771318002856384689492761533863819826425719269922378612250244618482430276235408601972970059255741387200155298532678719424935136303283475034147935565217946046136556272803858073565042132118207636343710361054893601625077823047239112540630163624137872723182427935645886984467165849857954487521690026617315811732336559014318276175088581258623984697231984260969409902081657303486211602248086670554117882265680163288022815576595351753472765584936613653589051117825479148726177552700890657810681605848122997613167637790999087290402647714733961481406390127343853413443727934985803064587241664571930201517248661968574025944486213908613382522267097548267820062557654796542620995334541848277562572175083003379711499498905879773200337420036622071174326552758368739607452014472842507309701147752255903577218448967610392701957625931155409140614614217120624077020732313547828450029660403708267426477784159716396047818059437301936274418764347244975709613272562605797421169547510629071985187944333772872138816894286784935137993249555371224636915704427264549960173778102205248053717124645420195028100569449793427876568964498480408263682063822718137670280297209690947059202782991871712500276067975604902006609172357120844172585838620236433916400046523012947678733869827281973873847895087832657495594748294722718211640656764778297707956436570252248027767668078600862784070517726611175429283567443228505192079425939544439843177321324791067924992584899363157687227800742588605922699107794800014528147988194773535226958562760761779333315374100989072240758753904711343156005373016783883303022514627373781503129909754014137258060433600398866750568260288814723419703001854850220116074412826136223839063862823460628716812720628382737282816467180912048576085174479114823454926414547742589013874516736421757653847587792838526487653282707166823684745701971629911629479437224157165430581587113110477147902454606853061525306739577022824844824976333053169358968438049689213508287690792793652291423306832490840456618969859861383487752663071694027961670770349179861861341968623452715432004590278760428846390215272122603789086947729478710293492956011229230225164340500485883004142622213815942672562800415280405302146216494648077648970070314948370069979482454230004191025082143326539793556030889504766532665023848140908255289141131415333305908108602161798338003044653211844923249145859819215929844747801849272636639043444490449127461324440823706823819878577140320263332613515149796143357351317295593374949049099329712369239262189630776609052041987851842909385138014424917498595296477557575842775360291981180180146519239447863777905522432150315350846998780350179695664507519899056538540118001491911719028908653582699353600285837600247613997286000592039811326783735189005658730943840128024745052180422680529524883089057117986074875806356689480761214864410582580832919308197814879637833761681665460162110521925668352691206080598172611140577046779280593098859860765026597939668924808267256269482706164733558925865754996539267813811906221325521521044494240969770582377911671159439491947076503930744624143065507959432580020443865759805834967661159020306283323856225956606263364405162926696376381251429697447827765263143286119281675155230254250743869617748064910296307964335307553781939811468379638273189518932350053818832421018138452132992243543419813102760210858295190508207492704867070456955808740465036389977341824861613439978585419783393896718761226199499850296708179385247861213382558549676296785791277727657764096996475118703942606196135252177827912419003735688417184072918765842502260350258831067623480969882328290270338369025281811959643028562587058347891022154001630163592188518571994828323862003896960658034464661798661341430515722661407903937406489733181573531171674451693551108045347700131479753935424296680760752995217898126736493970064495431686971023647743277465547533156250164486972315904544287287827219483492336718450966803963069893517741034606428076582965361539047737869708634858024755992737622274075087921642505060725771988468269205298402661757453618623674301016927863512865536341910442089397727225585477616410127938653767558673174364562989274241959487217643399514495039337324370493113264830377817710483888614356396384465117703107492719778329656922795749704015674615009137816050066282565489413777378678066460691448007599110951047508932464829898473811907413899208272159138254282078002770580260956148968560769644685785019734966314614455025174938256544841880006325833419348514891159043778599662869172975634335194937239405161671948210293867896631067428465133984588183323163277124914206704134533418959665760074362366345465701811463848409269462361647553948547424692404882325679180675210831890677775371229622162819805788884374132630473206588485946432292204451444357171151511412940124083903545582538387281531859649209866831373037941667649019068319248092982237088413728834380689732700516027836025610936845823128538922925438185102935602687317688375781148752714393867499180159845917792858631421907359067131187066276029632616228997403135560159231985661442876438493193577295971145266404002722017112724953199742489261409750228385033975840248039572045215607023899383582793927630512946339138590315388934532435693006374486495317374711907350827284622571963336819172885966448766865532841133233366555919319345207661110576229827841614821315634783148180270496598460863519611313642891812324575403504932117864216267737283753115897350529678178731133166172580380882636555104357303119524961728088100148833134768488866138514141035233716405871359748122348768033164096453848582373093275382468908857539137275063093867951907399181712908591844884443341760064612498243703532157161821608941727173595527934154854699501834423432305962568733321199461530066586607965591991605519257093123951252597343691985909381026445436789917587048494320321258818857059208620240317593434103557526065359480554868079364064752687214690226341520786286844846718848708567234806346317376909646625916079432461909018671148256422786619550220998039906904778517911151609574219674779629353931166630062640396522667361840427665823297523396797014392779220313961957060584001683498583119210392936454287682893422976940023902314698217589703387335440908133597118450669954255801335004518258567980465017370669222753747057839875338814457653693205114310163831762109849696868739947873281340667881749046859518075708808136157685035428730339083825661180709204962496869533341409919155417886520833055435432908499678263317502666070610119758240815013340985163921767406527760092896684244367569213327629876970704575019333155843190140812418668233947207578285312208272277992836423535470158652831707048266265210766552462645671712852753191611389667624156939240933309704279511024511109196073170276407374515102937884582734594950885131980215765986711481471880366768719713375865771226313955887521985853512461468476751878261969719171452122407734418522612835733396474903118072162650917587889888138605603010902061211010048021236061399672828221611311144016984304014105040397231849580290876327837037421152799846050053445670047631918537650587519681910830473511362319002569386409964702658194510937590212048312610102029812166842984389264396912809808331121778933883615751794374030311004026948938790390656621214735839004535648743630876184351965136649170869139195420674313854249014969154613523149457611327333614244875978274420559215341942398896844551264846496310165239717999330140299394380802577410134453134920722150031285716347383342923234039274105941857681568086263584193694313093586950530675778628773834593574064199860485735675429999309063547132476341864928681319405960393999579421800259858564167693972377706048603595999285239175113093207178152482519897862974839993697820434361181751035479530345429518433525463468842004202557462999169813812583015193931374584267283933263814714561342472143521020515431482717685679976133754898072584348324317618706305703226261473836352933239423224766162084182119937439421732752159864061681477351221979459605282981128785481297103913506311611185260680641002718544984779316610323014261353033621463016736691295110865603323241153756301546390553226645542231846890931166043521917421040376352596024472669192052159651129264883946009126498566818148939733155035049441908987620095980316349410730975286960003006893610893503038333066125058716027081748087659345565983096444252742023101981206081642836619947970254286919209608133670287152924214912794911823415765083795045386839218893650527167338082584418585564708743531707172199327553069397012355348597712393072708781383801669752583197510799221071142987961881270147187382000067025149405703733553057466202904743566631522556104353918366790759686409271641005411191760318662895321185792224273471409520282946958344570576056063410796449955767885216403625258214207894194328904879962381338535307935978730837103971498828758037964316352922910780504020713052478075915656419477623414210484822901320931591515364183630035798909901403762541795197637798621935559090486494792509678156143451552767387067503280611061446199167088092214396669311653379292324450475178486761220716625067818041206481078018180006816335453773111867230509932452588125745900678479916833519887430194512034462604781901889470191402759068529200743928308780535335765042058674117063351818902494913972123274318213585109443206775784814238215673167161341109005706182921232618992611077853090427003080669747781992889730043643338572101363741131260639111072592149400584449269687813233522835618785816014608816386635866119439285266147658284990786459167317181677993774684958317956390909317057597863173379962604787485092255146295467036986950727384768582767579797775919731688337344899320016503799266457223997010713646851895628301706991455922999573895786714120793654545497252484410647400169832639329676813299024970643632841689480289242628211887087486454295509800069036938277187427518768417040231653916492002007285695303859423599508362378516385101592086223755619513770912894730130517225714065417521891495017235656942306315851414140465210658192644525980136362138973460500517214315267180623944911030399588690187653131700483218478452085195186880964266167041469245159859115971956023945243302437074603919145144879410357127910483362029181974333499252734510738711224027747533178251025209510574630313478992512683292453995563839668133539267203899635253992706707093144851407595732796344057853079396949421618201480163170139812538954034302930112028642670530582327626323628003881179233722070188063113442186552698293345426799060166593936595961489203887288277976908379842911972924604331238723679412616971139164104097776418480248887663850273278772739411299232997221970486302947469289822781530556011794876495108024877484586807217551422520482966339890147426270134473351413590718763168880956513017590491327751976748222225881674284800936561557375304078687168010364530597409074091919350946676117467309413589244243314278213340909574412396642129309359865769320676092675012919399177074253194355601809406716236737261563355247421171373089933769604598501438260103118400221574050417313894501475917632762994179814588619434939893530405292957972813902160157948343515193995171314998156766558028509856837311807095499613027689803041971996702542977779291675001678853193518868196039087934999997651110482821526217996598742130166466653585899075384138027661025184249839206058378429223560897602337113440392583560019867009826951036436956995632890342151927199367003760814385889403735075605404790945365332806100775974515034418366618295500601733000954074046447948749377436922756111278408323453182472660877696893581489629407618076290394044864996231250723491998662379020222388306550413686817157191331253685132983418345839674290534352381798343234771224554797061695450660331148088834874656791740049254663614926697349654834699367647256047256538440589257639389871020854186997254892846575909163328530771487859279128816897996054153704690641413387339034491479944892881725346389466018078727233681745407217110876560017504763281794653655419998396686065562764855701985664126444624238315882594918134941396164258343318764597533937711623327017302845124766533139260682568003427547127030249586431113301681151242119500321874210406076501985013649797582453376838921662392939219480871009362564053838160784525693823681728079987636190694338507150942283797874104781209869779912916907969970344873080466081143187133043707275049179314521869046459910274938788573434744106309480845600194081141930838682222526209089362100159157758154200141769245324224027843778925610886314599351289504188670395556136928937115992399532641044117069726295151343769291556879494332536287597541339441230917565829258739060897720898751023769162380039158277843766016512639173389254899963499561367965266843172530307405153510010088782161448024870624813299401557451084322330165892406715606062102321282035640441827728110436668823493012545239749449352833578483617727261171152930825640695956580263189584799964990675211757050510174165408821033579713436812687503559005415028467633890480838562579829674781688670662402487321300645615442155758320195861655195662190361040692337019783687303071092031020926501135366557209001169752218841825676916359200869158245731575722022173405149371233734881017528688937101191709822709252591583426224671856153083832476545660761682937383245110672493504099040663710848293007944434228772868259110138839441136813367766782073614193637389579584626251384921797325609861489772680623856375381159885751019303102393997509526833473714933909960873918185547770299950358659635638090463402316827991183926515408527112360632933352951505085273252885964190604184412905145342460212183299071126337032520740840569166571242568134829690944810565408114247444493807834020946619157789044686029598371614687247046941619515418278761218312571388214660501224269397786307399201620475688648800721560791760222981725831639838427010101913155371863561706093948906593001070296605464699248822049837471618110058026935443519448999706165957613294773907980242375379082223122246645020877801930208586546367093732929098611002788974519933951793385653933999019245861901753241280933556680532256743251653056775015537485155973694457844641525639683500668134234616221036029905735527878794307409728082465654566546936696092723127601121516232186918070726336656911640196265829977132724639544148562329108224069993163052593905619929839609948195082729994954669042890849634280166320289114927219899369412086763040451161327811435180902758753053817147974605795756179210722187687498092129247559837597547000372344976140764031863167275723539005614493051118775822698067968240526777773496128189535332496496258535181103716570952347605891938783809855159676491384301904844821215565321965869892205776239770318183047003736887755076349869118873214631758382149463299469343415591997895344839711570813063940966612945492685483526737531729663085060917405221321475538624626463803548899043374325397040104516887033725378264346504898470799713069198561683724351065884847602621708285882801775297689999594142718001997253443838144461003170241065331646007879384488323899478094533435184022320646878724264843683292779877616068025112966481394496520102524257123729083561185507461743076768448232413530567220808846762501778898847834617251327629279733355533703489311801488186977174387102797697463435016124679630369438542315329083834533392694176968467555009170676813258498125320642750128852318902752435332768537352169828185926724937100209003252369546692517245491025131313081122000542918222957766954275784599921684143291567927911758138593213314782759371619617225683620064805167347199515623428734669413398019741283018938114602538997073646101239195131241724168840873944581138553705251887233618666240943695927516014830474509936177809113005055694576918304083991162351509870248857268994577792815937437716855450683542364318116423869596274400629341013730413886502473087867340635582401946437135017891043891794285874466850549562381226784373997727518730838273042333149392625543028394829395935721591966980630196546566008744489006975955169469926296887272923307056915289067908838625732707246520967308721930765245788149564198264000541831040308959980464059044931913045520275328696830561827243945934540797143199931615687612435205991867401978902166669670053134516206152653582996910925299105206491583223421264093400630557148694060688625693766623060898026227296438569613808525170741173767414661950273142655705168838872366406634270815734210175083333273367635179459618180923454128272119932084920090273491199335430639885403124821873872004066196959077386467262441104228532065046802016753116065350652841904550135040494456755592295694702354735200961766044600517693691572936737052239502930410821356550405484430891816103398985631975103143983002165790996887311455132012787870175505672070867899960004757300423890398544094997650121017890962400108879344149957846028936940230992498451711323948220250058121494769131064075217057909067411188463394552100097954137400526822001388505173835001218177136723336772526044478416685058321440596266113231230810505444899890987384396277142176528328103363354667306446586181980459578323866471940938460603269132066605114058323488970060932946294643079045329728487024490004752792178522898297351279687286457350369061863630680032006512185119737190343516594147012872304167480024962628006606826770007176617932398939205477512180620177318247442315555438527374536906238215179640407793988415759768706669263020298819526744895856391113611516283225106935251155541206102778755794661341460682564084370361558954101752232935567039766401387587743882321973297741212859368451068088092340349280431220622580958930286406239761244996841342466137237687300735919216955079907682265485829602213164225078739236186795267540739893859730790885403529488851425078244088720594127136392381590225732455324851256733043940542684089255465049345963220827231227337825145974475411612791155873006401285507575155420831922974657628621059466287356880052931538815635417002970038785171071324458831677945748913256765792963743067891011976662291584764770277812620240963128607202251187591712836344307252563691077512311436561505922696739631736619913801956097201786312915540448860057661090906032192107306972044916026512020989609495898859919068578798538798909140543813705202541958354198382615694779533248851346268134387413805803874354085480257187308509663628181063378433448425081105373555051636208651657986538740694737135431890191745928571296490183803769787175710531313413454530490607359686886908570724674968011203712568546157549803895225208558514207339515133870615643757954818985353438939764230771906588276823654776924042328439000804441412316728811874453099938921455267510849040848522077541133688605498943977660002109800663238151017827209419868127162379062594760194783065979299385367431773906798531994012612497129011021712852516486490532984361226005773824966847762956820251313260467668975053180839483727943690992087727954619778101842382232088397890089990199430076587556210789945016795668792456327537672954525330665173418896679315488431278270594589777683275536033914854562828724312443269712118554811526231102198924500498936200314041965981866728906390256027968201562547890064880365992422339142437247521866747240744293796424417433798479213263692501458464118907180690367908233934554228842059343061980890962902367848620193227188580518539885487888467675223378794937269336056924253725771616598525108314785270312406670472265564467414555638649691743924426538982474807195997402736052402797040336290121400972631331061891814883117560448620089398042674473599567745039538614625095958125791741197792127676854268294643787626237236067887277502795022885344008570026684731301357042159283848305034124571817320586629774708351266364443829896025561223907726579298963402035563724644707121285874028217505517110627339107892073121128739140572498487589540972467979653696890655776981077591343467114879454301333995048475293922535073978717543961146654344726663154448146705758103836189175328848316273384274355266244306281370190200921154721211886049934496052926359399832976554085571541158096824106270773163682833023635494298510818200269430729543271234239069593980524360597256073959949070083539477888445519005468594787537134015367168510413837059601159942125853773646853139298210669562090866830685867616588953177288353137771276448827438704354739158125140943890904042437925807196896427386606771179066243704961539942247845587006713561612422336763428482667627325816424626954489719401096495625751525428371217128028216511055502131860228115969438708352377669303291030109181817383568842616956318420615209578534371045926778225037571946126750064972629004012206414675197172858418508597699060876151166071444378865087305081189543810198749971835361045552745053931189855622020465807927835185853823437324976755873066430196439734862079864137374386871237384662559150810876851972325378586279694020749829792960774420987120434138512923914732201028229431576900279813441644152394521294192997616392730042884847776317105570287267769893156914463051780565656012951586592870732658470681601763412170644461455317170096082152234784696666197623254702281743245663257232456065947035917649220980628649076777269750618724754494361886834090999596561671201511505947202812926455408212576038880632841458283625103333898919412611204966644236708286192919266227181713619558519526421424054326311218980988779718733341127834745979685799693623666428825455689602223775488355183921015218220182900031945010641447733870739767511639102143026765496924612059866966615886474496269534400829592880591331153349784165783385950438555304272518448791067065751927634960751875001992391378314002974508937277188465691499217499240811992644434219469974799340214062243190813283838724999360411028758576739335841057548915952820757049499312354110376865099248511343257306422924303341395146817083482024872411250552172545540719178878017670991436425886178546991468757221956530379337805048932726931819555717324825487613366305574216921568976406587946139872403729788670195325449844176530870444597294855944655349974746327840557501122542566723989487653965449486466969109542859668449836417619849204035489572259262580995469534797556390877092134680392678961112123035780138632827377938103190050864756591882170115176833664025204582465920529174694375728023843594315218493459750074774376467075389745613519769988099933132378600151319706451420488454886958964729995887791426433279302208769761502160694543314864104888969548510299427271993317600406229419114850929399157937844406724114892720084545376709507390574042821779312064321471449309131965220765039917383316645516084617153665929244177907623231145743185271930650233026990912748039085967319888598564066282727389614245447584341046531333613663628699572953072409068223473083328987482900150919436851832425841983944433880198834690841172074445636752731910832157029495323565974240120107954274099323160867962372771134750105991468669207237190207659053583599296962954481042266591769302947741201719600264532885774705201782169659844469512834646434930036299144135117534410810601438667643688977668329725244139451942757131082105730023432533744547823101730621506543057384012542276766844660845660274836462945123424171855535481102580026974421221864466156461936153875054318599355182408499450498203748158786329875890727570281598789735005652795936572201460075994289284830543803818146850233035150307644552934102560548795506259636382269218636511795474385260050560993188590162358966835661641874586168613034766439547476766140139873484720128665551154652655394966519242998312767488585041877455149997494282231363274728271416781172045220287130628366885278364983131663756072640038018157074709739740975373349792266962093831452922476453692946575190427097912158825234370976559022238756685343817772798007054034554762141594468076655292217781311079185482948391687039547900030408644233369215493719354528582636709759996627396437954694650958842750118054425619462593813125273464154257205909642024037482064533249991460377421988489276965779613504753526616622508540874469410838518145057109452017151280446612474173477712300234829728814783448586882439761218335717860682743169672543844313935659200897737156361902380220011030753039263209551261166564188085288286619867203407535883456553583130085098058291522450933912491880288047820380294852997979526222785360708776929197269727184321575001757104550912431685231526873092874401543654351825823048646162431322064522935839534328120930276429133827406854090841318694122450275509018770438049305880463639080183801155805013585362334412044716401928697346908578731966874695891594555043108468696122999966833098887483698990847719862667597031188319067882018921185635478454893847123168217366851339737241425391479261489605543290735883497154941872909379915556739794327244967012981625198183143367403684162651383089082477358157022568667660340360378444717869337775032500886537235179607163758213646641810202198948503740417362018688897107051557250962141407395889438683823816794739439540547737354744538347425860622681848555452370721359360193035651773998141553501678591875459541559827845749702219105314104185369156785946567363201647374931076453420104066670419714263789974062926406679317221318263161822586595051792178052151489782708326848333904463010974939626884356728411284200065187969669150835935989614028167707463222916857449384628147639399386311812675934852483564913371314968380732265957431291245982454885773510967898792925766563521005805049853065378449927741672380638465736232424823311146650463936966174565486721745625254073473209111273676474555105707173793338818829606763111378623126599933568508129119755377045918894473736797881050025345484419653904145023798732635940783700348820216935126968785931650870463004801250771973799309742851394222341557697048946211605294431240497842956092720900557706781106308719323450232543486504062899757309531337598042365530842779115190470070864550466679850401228010927316405432058306192045757518204346932430515705386983719753051874327016497439818863537947244790120669505058083297015210661352652039766121500728139140543466848493321778776273086007235855734508940639650440304098358578247633949069889787772311138844955842665346989141207691542415966243811810321065315916209692562166464128625798545344537918865793330224828980382997287609100852803365622120876391107479244565200940108888498291124573345164741602838447747379455700173486915171720455423644474646839774725939765280306739109256656068425536123100607069926465802537213611629819613602126028262237548827169646597499649522947937216331717219574309484644002395352924198775156516018228591363127154753741026764236346698399342124705783303087540667667739913285432289196563482741794786454615519602767986174041588387959273660263683600240681953578951090401606773578298896206059198938662901630137894170071002661054642407997419690421267493480360723467090219582241750352219239257517657255973772282402295388254766907560998944088171677245001815608920349149699575971904544871284428447397130538260535427774738155588484551293389079897153976645686848513011698037631958561432601669113961916166445457879065661279945813150562638552223555293030189235634297671457373163779765149868410070218148699136332399797603190572137598568193633430919286298788487460200661671135451427764147287514935972939803271660218707654315137217161606903634922896461288162501480746715305859247030546208451644976176338274260602032659037666542634678033908817742414109368159523392615364082365829702933915220870863626041967179334407949995297697817260580431397103468865151061687035760812476519293088779103557383190072495670628799887683877484007478906471723305675758776488835255174951354794297091972465692994544994854016129233118973058771450453632444537322775039832027492138690362060210629249713767976701111101835600800814213083586778787956295458595682446001305307034914681263641235039037449934970708447216886581824039690206102556294535821304289138825035574210679576792256491595342956907050846978019146010175194267818515486415482555045114524879683915346064923435847386373045475104929782007723634943108616271549083332628274091969415460169025904726450314812261912669025373945410507370920644349475424591232591615019562098570143991658331693324632710938113989990015926947902453165940150083635105253203349289365510992424700194841381291459969680714210085891623909247845870738756367745978636715092978820729382342611986045036908681928212194921079726926279223175227886095391199892775307472661574952173190479242176948025098970617271549211009579226234969708605245482068150751108977835181262116347803605122809597963775640246935652532818470566209384599928788545884140032947313492964360555493977763021446782590625232187987170973359207650299717274331859098069881322909445386802705735116279236389053914327455768091610895770647205590679376997444262402262473740293788492586282201507299655533481844379324935552223767226084668691940803022443932083778928647269467768250103926888122113147294730892790773197666406331281000426216449516771467018478298113610195354648024481346571436388360168901134355497094477850384485033402139711497073164237656185727895380513685718878075774034912291440769833900793656826344827476974720315748067940108186348396550613322002273231897939373520766839077455311362330900603023209222873817750449821178381569255175448882715496694902749209111637488390393213363014336917714363967768193904348061031557046077441202389483551652963001816516805832678434084743549276461596360176631679751400624263617116635758084103231776292140034546173250685080095123139876314513893012443681730522847904813679898439616688885044546948588251406994809586726468524298713159287771978731483992890952542966659406171900176946983482731034098209161946628821577108716092336568981062612400390854958277965855693301373410193355610104508301509178774147121189122999601347896379643952530727373397361049674170082229514652562811783327873997653858256705017989832379340205029714814644234790698868196641911198496226379144898613459200169094576586961790698583003417591028412682282906016537091531551802242950003461420138289770677882276640156207955503570811904326419962217610607863619902338194703687880946529391941698107851602906141965388612107597035652945827796217076884148892665389519507385774548473592363819000517315342875045713152299484128747827167516388471961027377452218457097730815699098571568440460271933211796727289303650162871437724174651868712204959162539077530960939622463852213590111460999607454295716031375976489680918782687378306342179866328630134009592065264531294215263383912649976202872388498658948237979406537920765312596667378319003452299603895887325386586644466714538397054225676099153235036594300936948916193736950418434838776482416065743747576677410548536190237054215555019485098219126834974162526569858904244868577108871476476744517051020900770294637395977759113508494021865311012099407323090932059917115375498747792116299802292192840103789903907646764094964774671002852238035789739280683885171430924512594428697092933932352915999613343345306027724716304149574545958752398419689204684835496834694999943151064963602852226531568961353396096695516793483600241523737503283706790771890746474969441925523278252731579055906539964535585540192227011289374628353741442158448612710802197321204259296495486476121559876527931706717447147807887221507712153730299991778932856577339095449708376077001569094060959104193940318312587551046221120507585494392489120573935920069469568298476791283639083643712702774162345100343860647065937676232221596692424109133348541925765528273954835559092754633142841522889729841342625320953057001358172148190477654601359290860900195889804517586163439705560382369074356996766885981452465907807834684562352137535258288326493814094716787349686448823537660617888633510325850715111513100586697095661732825838767781975583029614164781265383502941501047779643666080943327406708801499393034890856291898931000914009574653330886617541723155081451373617671144167237653755364549225335104287593626373830483408201082049367502255641517785105272931160148445157502065450284164774587015870481641072000662784688337456478343604537548217424339597713383628768276075086227130888536429211257806994978446102340292124876189374548618145753570018023661510591103911321727786008085752122812233704537761038683071627993102593496839632855721056700678377793427608384187512052976202430475644600235951270169872454897870604788743243102378669940162387536852069641746860897917323856558246992639771525887294984573398748646860906158084617971806437150292496233460347737066366162926390838156649512845821038872539346127265993218127236584771644011391074917483546991614981701843107390938199529622075686017397202359217797213747434137140579067865238935580114997926148254399935313863583334809307080868051144546834828581838675333281540242115922108719566554035012656984341908618705136448260068672089290766641818179250269611946796482688660910709233513018088841390626346118911563411893721449327349659495747120637004955932271880715799184699115943933325187640204785594519561048686553207479095642703858508130167291954032366586804962495597627929865062715303724990661673088719201024973240445730555161089279946579243470568116016428973357663850674634051634743862187780584582788020322321055915828274618568765450231385680923096700677056336812961418639889673113148604975397746743593229107529169518444425751368592580527213685906750722397077447216255016267101516176563321414986710517851987865855094076292891895084224769630448257929243326924043334718890339687680156213421826373442024087369608360921157036616206575823753961782413351194569629650934612731328824140074987392442686346491731457555127544278564883057313113145994890150897451768338695295010031020576631132724070026822303209578820833558344117774039366680603497284972387781638754600874609135404796517895192758337491477507622653295119078672468646415618206285551650543638745547298176132677711118468958093036758689722097708936277541036315356030413927550008774786835321008862324293106664786173072533655638150738076664105019227992514772765376477033813555096533428702145686007407614928643806626573134472149652119942074956494616307518093697732558593907513545303364182867273082118189226604603109540836633049366499727036790304225674386188307115661396490859379779430735337270951773457868782362354487346395305439548510271458079136609488404835052924390353627300281766231000388197707670414264949096141156296027599357937174789897321517206594458273535141123500229628990232731353325655598410261895287628876390179557441014034939610715261130363863111819850549999976515980124442175947317952112216650080995106234071877621784685495898055002566738721762064568943571995429758669574669288949805450873321300400499014939703907557648163320598469632066423332764067021613947885559726520404388499288542580046871036163442954727129064054901299758596161982056309459971198653781661451496082715860008810234773864258339080581225237159604741721701242418222132274966996612217716203225415749413704988052189161222835709462838714874937494671652375911235105812650904126288468858913163656143168256732568376172763444126644673120437322234030958016123181801718628472329139855896489752043219756647625496198295061935426654128014760876363720571190515740885924970828995034222925739771197049236079761285731316757860538581834053391864548943993046821098476130248135778748578439840742597019687387512938911475799196938941593036574066893661483480706921839421243563920672290061912718170283638209730227172511288616657877938645638723416451370996380508978145527982335625807711338652115027496788713189655320927910936633771208644833176404291939266624709176060246436387497919792845365326291355682880530033398473241785604275126831431078129576374961069576202011079757220003321840901823830263905027225152783752850026174465796246191691152007572318094766948055681199280294524869868328186154747515109826438175106840846062966504004452664017902633169799693979408451761359434799117943488379477316761504621296376323496474521255622228331666703683189896388068830261812159288005053631818051315062842934455174352246986254589329565061498028317476899492266694115106916061251742567923472186271798904214064605113908746244998348306112165406855621184211936828226336246505535407727916967412979374683886592797051261648725351028172773649661232472012823024298476897545490551576837502456507141390578357139357511836792001958506648423616046612489792536379061144623022186299962178816218527482828048643779948318901994700924801096923127524471343167117138884248835056691087811463874788844879932772458229629003805470252668165953659493419750651905205432112281051950773443733838662651034347437359399240245642047592630010663546859916990832884852723477374849321714326647087932677164095837483892194528797062047133408345206573455208715359407845713276057209576335554680880675862347541583466717374828176198849801502636248812703627180643877512380435938501466307194243372744651328730454768899351282581977998725700014751499926964578139089181756862850412542132501280044717920005861602085389708531608041053949136105132920217429351017652754104221139640106463754695570814681914310581342539535641770066043067140085835533166091771204444483483921699887707078601009518941124640784696755385867873480673279000013756214358234757169267217277503934661571754890220040926915549579772870427649700647456350212354829427046468617532516607424258070863159196791502113624891764468533002507934088765765372924888844941025085116987844735961062443007833657437548779874091907743258827713526781042793859886771809215791036381473234131713102699036182177855730668811697997157420758791794974132202375153506980862253600633143052172621437914258112601310431092697056681074129381059410442490040683792945156498180863598292339474412662292648643207301912593060128797924217414929279150284537104475634770721869907884746750336927198719023461631445933772995481446581896985102216039644996324643327235551415568317241487554634746609329892551238566104076495052546747140246071263545554798595293328232051959696660638224713816839740773957187144365942307501901784633808015470255829024671423626322119208166675587682280085850261762033774411048493903962579860342252762105432430914132759490096684350463083963871769208769101054056969995507675479712885356235386756425612850674608357019798191085032540001634562466958828316310112476086287993858666068621434766334479471831549299640439175419872425684532375619966462531008703014101201622514456107347347172981480593073062066814034269411127140465206218357203380170682009681362168370210383277118737379519562873250503778752921981231446643413678066557164522450156604510254311688116193251966687448581668723661943749448573726357629170312750885138238152752581277216359206880143936194531725047151468696194617993094840010667672460619962084422445927844034220085731566309687088362509422392304405963425560047211491851618255335968708583298727789399705054353905079320211740522406265474271288739910585915902215718396375145819697539393710533411269613572827155384383372195597281015294790475319251550674882095780273703298639789928628792633415153549964450643945012364658381672524602062297122424905082214242929521136972734624913482426828247837376583378417514258109260253613589856979626550202719473772923461906806199644619705396995423212613595981308341453282316017909146841644475171966100002402159408938777268535772025686039990595562434377130116644978832204762166490351691174075534503469947939886787759426586714155933480219736543441031445723735927793593997312719082504189884314360080984492212529517769310251000040586976962842363211920357186934168152587507435058896574748091757912998344535924769454352544847804832600932472722251658611153663864979012664425947828360976192194874479087941804902919498573502934431932661710937069204777304891106369188254523418322527632465518818813890715763850070023246187667154306202380301074170506010613634910618776500506620454968889064446062607223959268102618709680936201626590768226209686892275710884342940398876337047630926821006774173838089338138628213788523840728429726710091929651357261818909002003482691541040958117453842404946295475098269036288477310694964400256318804123346689598139149829723615636087314991059171151920098345808767491058494730620226118370376109444929745431739290330087107777104619954818201255210133558106938462271266591035226593480770884374352543861911473088815211503791223569208724500848361045401278627700486186458074175494180650547367392679731396513668240050264986485203222171821764828871972032781549164085455503163725545388773987894277839435955459293829176450525190937310570878682279020316345334492142421652922059027501737595197065081944425638142359356934664265390988978557761841878673518516662396651919498176711551007449137820860287919863529375240118090232793211237491153382916802582099827125609262606688912766559283103276842547754607501794841887770789687605085177752946380494473169297888272114567357597509531311909653842928799949312237304397301161086062456810365790203509773993180781649884281479754756466793955270209109680128101444477869091078987386459050896691270683652795898447723755115579723606074167746868161055679521164914633227051509128010509224642541878230229771899633210971475215532203535036544661982069008070118848524551834151126804387552343535942173990353667351336126528421360336564051727962289067901237494644119001806748261122078471007668736362846904984067771904040037961293942856427291577450277426352144190020532889795520706668919723347930364301006784261653708740249354886398079218244920419169035871533140725674251257949872957819636464042185238300613491879285797128830221463983590037622064000900215368944699715678661986409451057976173031978934525895030938417202045802320488374443049260447399045973890556560444439145005044242233354139976730501746833551009291515583533384322125132882714727413190703187238342665909554962152116453124073167709308025944725164777871635433936997872297535340651436276960785024789859689349535000090203594657262168629895660766224088202866732037402262698419813737160935427546949710691756659681998301445603233444330170152497265795725054752886410392119696062363801102100439776047346777966531552754968800610105861123801963217549335806302950888461103035622890705949447415311270527398172970459888374546376910862654157409050107376081776660243448878520931953432856545293087952130474276450982125069231614002596753001446410296209814233635040541303862617809854657418504136400414499696871889071233044718962529627252928996638428342997230718830257422482898942252292888900744002774726114560966227828112567399626566270737519580166413915263225337197270213541728511847830983543798874135968805672411803497577460901043005811884662533831469785862659561640176180570231280280771484974452511101888099145835796190629801125510672748990087677510615018498566125366417783983979242292248166027224226081344717371191853863484052005317696044881638809278358198997786839629489485305082202278406959968473395188366503107262036702319846142222866827244105788615728650304712918608721721752292616289899411722739005582075963684857250166960184329282604330737482778379387465468529694522164184071644256467406286908299391617584401220815088031970508602350596154368660701568534178636419690344609375933591715668389278072023087221393942823403145427766452645697358094161357815551892356476092196378622543126047936160916878399504360065748294824585960747675624082055269016548447805334756663844653818115235648376868217397057237364133814899424379383920465751323518401534319880137593389422764425569583463341074941042360421870904051496175721385521405113840698029665674317237450224137681914609317287511247599215865311697298957741997320811075009299338756219979577975398031860135918862344319421327337158233320703792039078347128752960875953634323052338206723196374536473665479874599343015198899087953398491707212097680628745012429342439722266160094763292468279933737791257221671868363940920852943457892147915812618661319746613690203434536520922188339067808921184888304743132287647241616370614335316311919173468153001759853987182662075737933295841528295861932588721587134330831467302321316639562974155271467894952642309354191812375575318191867051548589123138240880444345728598589871305352207780498800063716209498177568119920679702642764267941972191965890507380214275420947252728180385337703900554584576445760967417352728956559307978305609972285860830328472161688547317826356345299266824320155701717737978562643490907311579419335707884618641634867294161558363478549345858194707671183289674847384123470447596581495273469252542357378470548940781100885110423820988492193652867705116228834926244118847230941647945293117390631188356402008996169652044413249892316017763754332126756686827116551988618951309499733621389576100522806107229199398128400790033433947103390187970660665104279346640756368553778458822039974699912676638161237688012320178957062077255024179976234562389465667174464516948477245498447639203936196685431589112383314695713657845670131868315985798998307180502678532328782956102531444730626152603430054278509597535464237728130358502214153140795663446541634767669126127014452031569785739696182122217650216281449961282167879391793890082920799299870334427543886541340231851300120507227242152326969595329774988224800250896558199007601308644509434114763786441021102735590205998841587868280118767137095063489447939514887562347601456107490851190556433972551752744397331704323304057590117212446846766983674048416277520680380328734699131669845829839735170639052608486361843151362539487037166126578917657791964403959999500691984673459466092477606454823002154130382848203814448187806393244600751544530379389620088633114055290755492444654575688391563495244510226877982828577952634714361773368883573105555033596277641663489516074646188019740229805670332045127090725346531399728177797128957480943588568288562471127823789261002105384137405920468433134133441674674931989666336493273866638123552733559287479563247063334254837365338801882642915586046629870456111407444174408348037922338875430946782912086523449514977273318698251603519388298350988572572955458601597358499997927608125123035444821914854514274511342349200308895595876719515462114040609098631192715095004723470870275037570657494871772941788866141403884742036695846549505330181709790582373626244109883444822278126788747016045758230833454381496598397586328474583647455287911090109664420777049658675445950631443701791935023412305059344574392578995470838816301278933904450760903566586267272453424180906991166389199978653119103285591541241679480317432577488133244334904195015045866819610124170233643133325957894186896460196260244655288159682959261086486865129240764963875861166338811209922541038028949399736026395791103031039184910104876082916940069913127289920958394365794160926911469161953399077812082575338642630454931695925570685958800959954663060269613350668121829004680300683416192149454148236179792249140028550634749306513180286532376260462582700812698536913074560154129888261231210895691829409635316016826590836656211803448372967672658331556782379679889361345645249226143656243472886273310123890197016287306548102551551968477840966789131634397254542415707587673143793173671382487227554520395768993405839002534375257546070365728454006136624067841943989120483743406536316340829252481100065186829561467731225255232153629172068741206649364125494690511931431692771723444034217344246023752500827781646688851607177550663715849264921442442090083716034027877199665129249654417908673336421223094302104049173271617974121626643372984550678773823713855462466201121632342513721190898220537081921643571449754151236943300352438026333589641861499845521554326597128317546668210713456343025857011793963367801158770286305451343487513041293467166941141302367823486875798000515059414568474059773425641217224919422722374222685530894748073698545532007522986908792269358476538098005756763360759612666842917103008476334843457136761634755753564352123455835768572938140237098776676262837444675459821379241774360234488214383823298443497491251388775010581555926260465429999113411636813440782485092431920438159972068253005224676460533269556475289880574307387206410334057293013746472726630527452990041064839025341833022679598076693410788457286013366304898905597037813911808041403947967963405140223032063173051195848146302921819359437520317311814879200371917933776740597417886907678154578353188416407653434314463851925621273378311126325243274046291087242204160778199305699913758359235378352754432461065829210760981136176350127518225368670757422110863332413539058620765455426912755798441515124602749100258280708155265725185867502388288455635975260561174360997366650005913147188987398235157391740623860801185131281407340434144766080945129470910570803366756578541796797000035555305875060125162517092838277869341605226052301479115460833418268021326526342210005663724890328287998099651460001875630755851146232182781242607640397813576561091645770823907872932967080985430048809641248941898406567361550850369274091071371124606794242745691551320696854713399814962997651895920834955826453821768546988334055653215409263571543677139591123344236542280952226240735880982214490997474554224855821470227380352025681356584773880205740610404334011701721636164691791553631874780024149572824640607925383524555787292975921287392311322048987262897660705709793070652427277360196946853275846618128070127968035300594783407772397481725329175065382063630640640389103504364024450325238787135853429211901113235663497448559179368806859835390752701032075473285695236987031388849590190645525232775535651440681817499293887842000680955337550175441499392700147022542809176096149924603591763739620710820686677595045489281514186704654385380337759654324367162694584743589590951670402500905307401159601740873085637863490315702028725423477312130282316253386581840274041720971597882579514274342402913335000364705307532740060095178268813979250060297741180729812237935409002742734309825939011352662913460001356002080600563445914410293433573528485033394244762781781313081985791504737312278294762126022266268460852024035594234964857555529371023532786382197081858019089792403828191301196894473882581792171260539143118843674185750003584024337360301530880255849035654373736899772128953495011801016670416945884895663921836234592604056523535233019186045713650049746852335269882310832634654325396030859532264641531419979707949291973145701552250016299019501471504881968149854681533765039708985603065268379599015769651203486410793299001880973431202481033410175622931622722068510898738427512998367495162508874839226367809592827862192762983648779998624419941704097099198870818154033159146558550049096553760659574595871698136285023871461222747578263365903257189100699129296703105883820061285312351840555667006791960605556587776149070785643228747622510982426793280535439306492617480274704729968039527756763024119169584961958423966940007379997547938210365323046456008850272956332928928046249950466401820551372520289369113768797504072254705263047795620287253299714690294646050607789789865916148173786425385098216429879173098276259944160392802934141258331602244842607513952237255714141986424893449542840190862739582267098100872150755080585276452751682276192466616163934776843560758269667365755304768960052414329116822448676775284392620437080395369307245636326219526864975269870922253410975221638068491414981069192666731294194196116502367444345357539949415947050271115796143957113478651755216708421717083932001184768492446532031175601144234664272398631883778131006568638354526696865414040912470593346026425162610039075644340706169857296319021245372450962442317792800238758041645128267793609369540676050902357947479005760050303266400100504668806356087297591389292589577566007208469068377179814662076804857864981086499734519137401676101301655795573028304758234881637288917428118515670864537302112967057457736319140692452407212722352199308959758556044813648194514671798345157834983476527328199981645612278859596465575523847793957847034720043451757342949452666210235044100032711728930824308039225241996265577613347182002400268400152843230822174513070138637948069235889105425841759219429558667476180017446080552441928189973428835366792103717257597155751632751795546409153263216556512526854651032707202988696046240064307410183337951050774683117793597082220819782633991102053781838803343987328025144907792018816951757277764792716101602657583910104241855211958426104176596520337744636792798935437470709096885585078827328101429113571204204358206399915837299958339216217827180672283743979052825183002001230754348418918059193364051178217738746836484427780211040892324353053652508681614372609463271941569558279933013902173978429326200443468972604078754577265900756905063743321209731385710835384552888355281487373381840579715755927515382083005621900023754135913938527767949493264142197760005907255522925153140156673210984415482088473340424688405375059320556152394660845490744652162422431914127577379558104820809740059119143580721536738301976755465116088612534426363919230829047046117480135855246864788518240927593312179672628084297902859609810393275871933884832517047486531748529797138054391446318679526278922779675682334342192512960806004794771705429523333723750265704724704462089850732975703771537245387982401158673349240323888509742876225812027638663471828590870414771482352181272515265866387048805883955291683119963508291857558450463786464153417989736101930961285961750944602309389363651390115306920655740652173385009959152434942098211323677152701794590434047171491479026067058533317328361295539874923636897847046721663060694523712387507560415619528238699600697513212440142726573257101482361369974484386370326982572477899658723572670359282440871358177551885697493097530647081922398581198306436267822283211152229266201349082188078602765629456652001382459965259308668511472114493064661420916276317598739653549514345541531780326492772951887677207798701842372298295393489189941166356488602015586727402327871474742700082916224391214969905243598083679107930031003986244494270729026369660110633442980431501209694595240459186331692714280238225830577881135646203397900561621766211488312848501222473855787386097840605036448565744509683413815416806005259567559565915903406199016859565676554881076753273413576304742756654407198142588069033837666146374152745014892786112555807837784554360712882834024733145971231027681946068599890446504099823395174794302950095921776366922211511887386272204544931250154344777344083990644034068640268452045341482880347830460553397886660127449349406912058753620074566156513315799086055953543948018140090596387636983939271764187339674832740781615128480294054033102611584339074247655563826995177308473353423065030024896105906618976618514558235398433289371458896443802969993991340341664122847636708355338869946455872824394226087564945136868806567420510532872942893574724165090194255605760574767510199076084764217566614004345891020600769080973217474261307039808410658845534740945710404679650280247542570871123109732029359226935162410363770409050367663357195917892909970530166477178229784991901630521532070302652101581943706117435896692581002005479257123783182782122914280039055981318711432906406734737810713338429199394964298718015605910575402898014943323205715210631876811934985266134171261446642612051519636581156854792875013653102573105282825427598117453427203712694706932372960070263012532764225527623456625765093794890408398016163783925167913620118692590458838543725964641024795487148041302579811217203887508110631393500330017536345845800572073769003406771874061278390085597170768379990715181071554724551377273122776719238455596223047804903790618020946539109185833557130269574149147077791007125747879693049650149156623868270302092040580449294960859919712689505104747373700794178037201927998521911560094746285026325983332370612527295477148677443893757578455732769855668681213342829648225533697712954418110223865845306172109257663995105134780034987060126230485610099426851533703141138247339615470045889445712154640280645606937699896917476464919608533759334330121539161894536677278537965466115745815042802299174250961086124800029102686502531591796620158165277051666006150859304745434366175440827336348041036924711814220836669886799898867491015256768707996449354370038587192130802405417417054275097388011990680257192522177935976006239714647570305153890256418968351972307537256890070242645772752702684565109250052530460840140557489568612034300264374352550524731455681632743226584712264500840413059735570334013872085857138920205761402834632279523972808525280326647771931356183926978467960700345351729158797278944698663443626008904843401846149488427122964425788513754197548159714852691015599707024263962831776964832521618084923746699727959476135220765627274469349097145323510780989559770390708096987756690111429582212963133850967631032657488608774077587575839157991205700990246734529452200419654626456942941912803938395523801711524118634049389014740610664546552482061849960505379145755439642130845323763915213363824381776927998674895028571884890120762296491283058282567734341104142859377245752888414144859307459732477347727464909196446455459626558066122791154343598019101197039328010867178653815244570433075041646278224204121389293009729730745037363149802143449752922329451400619716779279392220734340929075689469146600934524261672616285177146073685793152139931069899345507307065048330605330895038068069900686464921585839247633078170484608428818320419798520578629443271529690248050286337808992797617562562292135239310190319171406203136212518592285155748660455563847880482877111988671641511744880339636731068184364847781225231763098948449886830050672985232503804265510578121308027098472056025879599840603318535905623531751927364254876126482906318234788162329562048235290007126453440836535446740273132602441580773758281535140238621756591074907776473676821315593176017020696498627189062122730921901291662853581251856968580369987843182634399209408220870032377655923686385539768586734441622294767917567366799125190458079935204841677983018154242184998052918095665869957275728599582796868301546598813802842997563443833286457363537318615684748553392992675162331662079310110222967602718172592162879913267886149620754247993863601036473094979757964146516767410976359253186953383109723688306466019859051692693788126153433887130432691489529357726705809461080496651933637566256809429942199985030364515734543393634450578648150646219199304749767079064410229091605291870979377003676322271794398293491370588674808342519096100513985178686874228009747454990522425225195690926206076865231196864508539412005716657950738445308938166650850364758195090283516187454733087815553932122799047772420828834729770794838000098579660860622321591324289983473222827039295907413209173721199532013553419356917752377092944835629176851180636806209762285340635373888375542768230097431362047339303462703203834797428640693359270277045226711533049425959946302436002284743686219399260487542191925070828159622003399825408915526380379890304278585318699921381813172393242685487540981995401877289208929167283408897208344239384058585577784882198150391436565788501534609814839761079470995872445250574417847294281475890058262080787028773468961275278565772545529672234910749862527928478727717522734859217437266898583699618808774546717615983044664924616763047880516128969233590381308847358739020075878168695575330062743525703768824918274797854347276568566844077844355496280075093862435828067886066421005629414839722921154975298223221209449164979121254046275277276415634207788463142470344464096187952203970956583737049651248929571640149615288788198409079443377127673079820177196281324967808605719820760656243546378496560882518782013779445141971069716939744351995895440299434863639821287340728718675992616949577595602786431382712591753907396116810833758938352874367107129079320498048263003250654338577509895178416488300550152960482904956025233686034313757032413974024704448485198537559598265310258175443466890579697381484443399254213791220249793009428623952409557068288092104695151698404688854823170518499795999660439147881352996896898057447896486822026860384130625720545388111708912330689378616089132421766316217125152169297607974800600063409525243431690444797632485092816325351538006682040588368722352473421013678031019073228283730876443459707504498350186193771366482401798197428069552058613267288148612328152217739179480180290659953835034068870618551032560345890654107679624648824351630449261374719881639087559556198612718370085539298496142365405434621034203334721375509514400184769606836990446546867280413701575181004074969710691435670854154197302772601268840149845344624061890343819717316319259535205632558378154287432864163601412136577865627836830485448970120086865677215189439733160860786745054363562284086434795510187969941589154350866787647099506611849232028377212390150136163041076617340221895535365208763644097942068548474960403940938666159895868823514127936284738005446317542492535581437195010949429866572880285882935237422576759664120106075850334633354980553816522837318920809077639504271786279127272422730008537938811407757326331764584840595024989483148652064298424809986821780128820390034811830122731156171280203461476098137449334860380348791084357915526544327190901948525569994545182297721531351759082276079461873645541487924866521489061121612922560025169676763791865330865757809576766886399023265349077015499054622611807385212514416956664662635351938090957724959331322214096645472207631605463819955815147596860580316790611482098406882008672938216490194900584866049597327283938335541325123048860338204369440838006875079015968757751662757696771184295298777316557943709029642010298926431175025559545191638039745028692799809398638810150219979022604412339031301743885530461198965439252278463932279567976233318319611618026556664270227061468470965793351365529199354744119433739463826174702919894314428580873721916066628345273012127922041135468364408996823536109790402504985103982700890570898991600431039837532482279711869577713660580842807305656885068253025383727506253772012302882102158718082959089138811342499037199513680847795429643533093307049558594255313083184005056262802432567931487761376716984723775229890728670866832193842864563791129039944456498397376205278453947272940510289431332091821809439816221247132693332542011478987390954180649502226032555016482254946152751454659899569106497639951090542372110062113308781994883231831359356393906502309647807877847604105959754705196600335194029637489054493875261616106866729042993879325156028063448826165757590122712725518761975884785868866010001532999735395078122939698815796389618943159180277265919084962303927464772652559425338863566981610371758202653192543955840169104334566340503902340404977682000007734528020713397725970690502315470151526070276279959052416244196077087909039335517533929990138305079182462850589339239977339949977854819626251625032057632236980234238842743133032317002152002189090095875850575117117821660080213383255533846651281162235277961979973568097871846762544405292193870029327326586939509589964433105354283305328983434895621917324937228396830266629465651425264121168846364820718944341716611027400693254146897332249978293342555888652967743037307161486491357528040442371836380930478421180521679555408454070816034858904320299578143124014048343035368195368635612735805106934358894960204681675286435768341481686625886470127567590193554510292038939190887767871222124003096527485163962785562264671216749151974287770580533631783657521083895430453154305775893140617857442814436326607280249076632307975594482085330240623598380958766795533567421142035948680138707067249234704506258056083089453343178231021932166346781148693906823639297578411026006853015720528073246224211415120629980630792860151015622723625475470480710762687558416305126776297890368129369148532184420369312732502277459114708832483612476482995492093010459136580387968518724372680368494130624539795636233266470139304203581026235095020585402907592693720246250777840163652054345961479734655019443027803540835887909963723634065032960574419698050356046212279463206541249265294499459323698674859779029905076288308043425423418844178957975469916854920206732900415121893931126184172022976711595150135318834817365643715974082443617756998814641786431813201464097223439725738348891099536037954453630700607775734066579738369695149937036185163657183816726827433111507326807449746356213935668396711599171847692445545451548918225703805274609915664905048236706342546909898646478143753079042609159153728862917220164250689537339926024103317253314571560541632932707936020109269907556159463881639787481679472313505475507913200604089048634052991267082797154555268090878636485909801375131184901556657222225337222232154199372167946752826393354440089808060837026265726308279205292887215107536779959220040402645550301114567218960694681121613419543840043455060714161128156531137434947604377585902429372151833475287964385887394636421263241307817862416233409065301761030608621505743037273772087721067739681670543273571762787581657233728787581923069975099017610392576825996900051855663550087934195908101273073775649441310489642504756070347873670489368072241223004124813305481290503496598821734132971021761976111337735527923463960729633404752615872416208874286623834081695928357059669492818532940754076389323498662454232744460493138955818306334034874284872703698629793574092018573900973343888150801613916086177479601465354013536249467603498467360841397615620124232783223435246358453178948494512852203454206977833419234102203298999143529042234077867765735479746266428245462314295004110288504532166733629469144666310751623922992017065288982395928370423475396650418787948056934341594658506415213657749382000988766949316907289148010172154078097453614449182397193655238793358767606131580053047169210969311260623273716070946549510957346391523042071856627831387187912203641569235321365355118129233843757449186150212801040942834755558840074338656119153275189748300399979315673275198886281812737557925428069264252474511015035877627035325191933560616308261590149244770767194421324016524818311359783499200840215526810221519440835374997846931354431800973375635847125638803527937709444965852352716426166514438866536781039996000661474883393501757646699369285092704407173387352083364118221083541406268627648551814655131176891328339398888120392457138323800070119846154504181159099195735507109135784774554391174072724948254599479317248188641480147316475428613984190788185620084854228797239523232225139316664907660579572333527145616978434888544444805278438460912331528401609325168747242142340055366455683809995644513902282883758922722168932647113806317854914392340957908620410405406867629728421335303946368946997389106222638464040380442810389736837869470866954617869711395044364499553543490312514118976023556002334517520301654316154335437968239529808853381791633912613011002471718627120821128893277565546145596974041373811266075391686687846864034356668884211898961339121858754148057253945098013683542083623045698119097886026788337573234275017485901349848585372185705612199168265888524063250594050471078887148422172252768996604661576871038093571090314622122275646179968475968802421509331518429157571546860346739060072704251376947876676449965618220437313967668706145772447470636964633351858058823999429348921228162360779426822876387123588553388244167738061365552132907947314940489226748196192616709128683818225355568632387982086906719700109492575895719462164919591040624068288170677957500373722671054911055561007268606601234456633594622557994069413972973178612097391067572166537835921471222699339291944021218020138359018515081509839044883878330220056303480787420714952522392538173344006079482753936912162372951544403408999820022708439478028555551610955660326798941578140053473150453186193072699051470540082512809177746394590590861089678640269075341182921062550596575664346586124708934106266318372206500330783150867213279170695643025293615445596293029498900365914466013764502694250523969792154809600025482808335964942649691918432292290132689531888268965878514176116710435458243456186520448794701438906762002015782999730633207276430730482357721463829223371753330704118770745951724124187411217599097025450601180789558611019072292543483632589515142400509930025875730460182743430953103781490732564582813501552750933453025743577424370224633369140799609409004356667381067139257683156965235769683928198024899755520230877270440901973574414578278906981850849755994920050981154947615231893974069238404324540499077434307194925774256784609620375644165039391226718899703398790049073361233837709952418744260576885610791364626569088867045418174146507836262769985230217081211072345991528903770995817099855438428181435425594830200099271159031507064194334833985126881324757591992544855360353396594722276507921993907500863948776076218522649649728069882391309734300280171513685526282870240020180217846470475790458640490678857113513656417433294191358593263008163846179509454276485133017375467125028067707827605628849744670458576423958618027206573019976309849552481907981225002217417866979540708188606640002522976433156310777883922039628704648780037849750779090794100194362557509264902548721380061197890119990216682535132164823925138252916026329206188465637992276140143195448172517423740418637343389976494690319472321297036148882468642337411949091342647613782508483798245931229035981222366065488739778163356429053206201521323372364792416212492680295944128479538508578784992512911405510271313664547792475964458761491797575834538769485715600586877221634376719984974795780421381962423478603230419593943024298321773538110576630216999142465660031720489633915629610001300401323019948547846555951488720433532899627850389201301005361081091880851155002241777855995799489663353232803732823607275434710988578738024413345705159337868798233582799771563940892693867364308843677607505756682462792786606284735457965958317575922933550889801070723403958437371824792219669983139310633632898639273070068898983028316547985645701929632414670730748014820198805059063250536140895166265333312029551882260484094369585178748097455494013179109077043432396073216887555623700436587170152776452744261526172167505932309574807824841840618222012330594110307994699775640298380470630026210131719063780248620843728630080704192429507020532587218243394168236053187087805827459229273395397988602162567337238014069001515794900147623400276932899315572414619117111992321953673090516376272068061910090682111145463559969279332211062134828039627739324083827216033473576957355981366444334436055296765591461124962817475538713942937017875532545220771968381362532362544355599155384601777661471011622203441433742683251189643279610861917026350065491903956591692288494345446037429135099824452171830006644688839489765115607793072935750570945931583712987896481837217748385990225857584261255009744091765953849945339403071797605190721173261817386068639922824878581017439531161973234314108644568468519731679300193896589146204931821185766328327963411251791262423146439985110976798965630977636172922047791358543019563944587264477707084086571065545626025875384701572566540173675346582329839510756636631967641279386782234176860936096375862861346260227682771218758780712159143284940929313905535903766347718039381987414707657408105685904560804429647151570687306366900358830576811165127919702271087871971684809824086570435939572734091887385364758593030093065628571731010701686920228078243124123006794313498200315891688213945362265532270968474012246072545616565771240639062054200209040110952693235760763197944972489918251265999260715563137053885514706436639125612547675070537393952159314626278009523780418614553729985410449793452898718350090249158394904617921818206873028821041257756096725445713810409898828931869909257228369694422034548755807323224362809719791944484027640417725127479672679930416806758608769243858702631229358982618843519604136917844913876516301273708293750189082390739412551516544323716882318962988441504651972895771676739401543591602679318249607177409059024211293048762843108423628020365951024008977860489293671944520487284400341358460960229967994962017063419794063532241283822481360159202342676412546678093404407794861494551936250325003670693940346266602227103149778615650345965535095764562664053922509962906705929042642508690033183780675073538614670351271312873981206439653539310797295823729687555425482322994674744076321721738150196325232065499413165097263142820539139139477980729409076039323314935840817874396766863669846654196024708567388035122124170216681959783605206930470104235812113791716591110506329322405359878220120263668590418793102573719417696784137546304202728107786293761612908383004323689122391077745138239505082055682150932948968375384212328366954002263513482840120128489036270571096213983223965532594259910152842301000250229796271279968322924599895279051257593304303024127361455335076798834607361131246123420159957628014911478972188371176491893713335247199176563220308756126350124332414819994510511765791263366780485945744165224869519607965578160747154187385400706681265127860410907914968607741320698597855501281775022944503670933739975776461118150904821110567233513544654112616883827152190527980990993644481183471315500773078589704569972817089097254385981776801856115086979296548115281247436797391195713509668732604804044536020224457203956925775399603152444953627700187327145913904326042952954251908167940155613443575223446146534559331054900271572906714531372453075836001374642099794808738876955996566716639608184588437157496148213570762790387139852647947615371627624400181154016721891732748759599643908405991841341938501115697803603299801982696368140444475325988910037553675516947384041820481316949095547896795126633838837071777027985929028458684536188508856002014476902052508039427191414437225258080324001293289235527407503085286240607252969435863152602751754009063208958690182924341104931297161205701286693734172410359451931671410099302090382116355042028558667862967919247504475938126255032709155900288159777096393723577944661025207231912253079466878208723645135807422110302992549733297581391647938600235909305254496706413717876473467326830745624718306026064107891474867574255294107759833619850660944366620462756666903898122599982743018025111946299291440856346037832510586187062890596128565749295511927688828840404135006412155727425472215961039517859825925340678575931955038986688963129046430223529941227441761759767532220038250419484386649446840672339717133395856323907606523365926618318153032194897957113230979502226680360888915945229160503985656295288653582610878391674323880416711657694511199844882922131802465780078959931590309616954561496256419997871150637170877712270778289559200402669069516860728904010946280457840443816074698625055390512498008338950769475045534580219010880630731733536914793167229377892303439699006871080177014812783329846705719516931803668716308134470843682735594966255235068380587240962644738795826274017722313896499465467143645829522752770566864831896550711120901087617961029941330915566779026316905703771927160437909663832636467806868436691629090637104426774609493801257432696583837445152627650805660813877839842395514742104237824773460130515037333683546223099726731084039440023990292990022957158380605650247661752126017247590269541008731507076312277038429440800172008801143784266590295013920782650427726884347821404716831786582990460741030185468221086858913909420321326948385378853901930960342630364089111584123926893536673400312970729226349071242620871491903337720318326663998466378826486732912540019010025359802571142221345393688507980046034866955075689206738850564604483852371789009337937758825887346783760222669615677741029922337242215793424666463609453136138169797424193322846912798090592495556694390172548338299485302008045581835130233506253880920753704157823285274744440016401769959944993406046154803052205839606683059061422262982994721988936456392990597372537010504698557541258238451273289887967987579477891662056877263853256190726334415844802149613343290956622300936610835464527477338732698324769127646199602029084923865531603063034763309727776355844398654601944181463633332066433147770542296079749257682942597696078799476210036641777148370868346584385154824969160820595656486389386546984689211438296556763173418758320876025913758935801663162417172450014905033951511423341981626605385036747852888716853092739480994018199811900973872701460481390335783111173638557267908749792041807649708841881275627900249965253039982640704562194871890097207626353788732693885157887702351038770115357599506857089814464333293445327702490323779766410454387319452391451397888164950205617218113583988404172810195600927308612103866874796010458939583399123231613009492656049532013325944946374074722622024900193719286034494914775658180787456526579617590326752893618031651079642304580462993942425870782180921742725837853014429188337251648312930503847084292195743283718755958002102686255962205359900671490140944696309067365163207522765225392390599745744776836132843826170681938513755763742434003838424362046922419178008575585444008179100434728625185322005014943528848952556628713932437608375943314434461778331773791066004065912830423456725824910568773910386071912409583057860881441109700108100351778707288864926395560225878398462490111799604220189246874695806398640781779186751720718350965328045426664294222875143779254234792801539326687740558776294277963807797796510898342886960312856202280341402219131260886728026901840159516977755224470891260235833470100826966561531871402035666674252234175835713529851871529405038756283506235940665974961593755287348559580801353134068903577796133626619733811734559698986411519824890403472493083283710211951363582559785380678293045976016354438012106525778423709427867590067354169316797544596969479094322985049437300867698574349492502642636093775267779291035907966488886202629372233322318280452153790349000086762490599907328910229808706328797582881684980964554748698026491421584643909755210666937780388271627890447428092287279900112999657295880158579457053778758009919526903200907254467795332608805763326367651519201716769170689468268305512944095426335436780958116352597811000381372038500969323839605234300767338368746269747883472698672137345815989188166712127621541168117772945434156988365639093468843649031109352677249166922388628261498263140236072422612832952179605316939726061970166772388866767097645042842918866493411860524856747019398496920787258012095246867896640497755843252175876574866454881058227125663502636500306642308496698695892749727856812197013695577512897668137953773278803893224582700920665880238076434779791196140459032273772370835495646589693834291549901932170810068011057992117042809901420936639171697766347370421694075722334663923090665815172196199170428191974861685332832892760246842028356310500320129061847599987281372620408093890367800341006222678380327868450711225272635238812781922696809020486523734383005404220460381148153631309206918926276087642065009305756621701788516545386877777622040847449003712123213409512365213692425875022181465529016370105062132608447466501331991746415157064043371915084738556908854451781349252859399624912136847847835250863126711790479276106418882280496271123120906816539083382528938342482367708312637749228545914595557753504069929836275610416093809320967165694572981477543398096865738801568083063033394011666082306815179570505455559092152640562773497391610993772264149291824768963369890906661985582883156636938282887223165359087693112606876367251119676790765554506137631905214465924005737391615926750091977086690501551015969969171440251483828825301396704837388200764761643998015407159480315774458931291750683469131917040086421999107414045761787803745340614085045589404753851467262732929567929238764371493900670867994235944550904957023731628408817702001350622906716825160621388789357331253511667129657950156954466325747001224173562096837281507281482212468358846989631426027154472033861940326219849894589898282731632565900648591052420127513596780641731939804799358488494221912237825259148853619321443446801560417546882906416887864828077072536410668165904795611388169711045510668774581481900379967615002340889579974898904232425151562161677156796211856533707051366161291869338994120099299431783625638009711867323472206186178197739404000022578565526521199817419255325031992849011633430836047262564061927920025118415811568356232383017374779414341889493350809034564307085340848730885710461215175322987489791512895461294105716834461540543709692535603849713242465890999758556973714166310213343983977466545928051770196974745038515888335364903600155308099793741262675710176083036227338806402439799508050950270404691237458386757313850731456705500010221752522283935129904802117010700611206642872293258784163144372986764790653569587046951883501516598240888635118293095885128107011327333795213939788851479813852415207841557143549233013716383520771036167239073563600616804453836939465690711542381705535895334447195193440720937066545369578428419005939611521073775051183296737760426887937048250001839309190526966088288889473460079329137200618021014685673970946496915712294409860739146522034071595323295807056059230177479106318497330305179284811808227897248374178520012678090128581870135316525713790681892102485732686876905598749314202354226463566636946870341825813978884683844963579026883410995445955150056048840465656422253809433453702667886783488744572868427348528560893474109527756311450857497614748304024273960530094797711609422023415287321980142248792923984647244377117552308948211549197690532599428599489874680518803745382065928068730657969077458217567990220216280144777298323068355050761852079198787904117514961914888661021340337870811446449504225587925499325683147041901975417147017556875232006353148528533224047428875703641034817938910834407521430024396507972339640685279499555407749411907195898189363427257269066973428162346386616228983909422729042267061353707901409594082095666928134976740923002225190516821642117089259425077461506555554905742011813894794252514432579315452971441099653867485366951074852250417449340235321262800576690396618926681854590198528094330736459538938609074318057191309025806754380170151654656874228052004989578793465823910085522654023006486369919448633610491953393022258615297224750608347001813735822077748880530647879485958488007643963592722744748069713897308086907095797380138088757296104542236666959198972045171146732365776986944808431653342962020585907617231249658540939862740561288720138320968007124461160568687696070640226737196894300750337512578222255625926019530355411395970526583662902899590408162565296688957024914165469710784686749721905289213883740094777090344011501005937308915092839163284842745684930742727372612234031533854078637193110762959659616942280238586356477382041483645838799196013194782425306926445613040699514851891577817038674635472568147122547782041734587656460792824706206969705893746655374682659038746167803503037006576873924765527726270426605343478353481571436676462759368668894153285960244250821282368225912013337830212674376077743615898132826004662719322168850055284477217928412714987345061231074338743220507651919675915641215969543247866460142641647413840762807784538968869386159736994237610665585410476132066599388425768115121507593732895224750352458248461630695230044919337615194063447258989901986921554151219733680902503660414226210820438086040954154928539301910906150207121097335985544682422691728449560150818724072895630410954361861538051626967276887969914081663390793602661796268154246408036185051601227024060468231578278285486173527658905936943605632981477514301821931148232505996026979680608187764471504111090043689182145039668334493789600418237576279530721659651110678595432967055261103309752194160465415991812257193886456950256360736078331373748607070750872468495817125762876287467440224743176175074653265591992693615055767442193869707480650437902308323116402800232774707461353875625355804719472691397409973555745496792150303461099708491825247029082800867692407433386952073566217483448359746876029994384177903995281352038221857410252365341017963225768775296726955330690633877245299250637294162434996223594219901336657459999380907503618933368878611649817491747568463355224870016526591949311921799614852303011187382410053462533922460331771077445167715252976508375251274476426839961232038210541013340871353905925982715731053086779283945328179041416948985410400969580685935712792329003916398282894455471851486318270489905530989061943696934121132504488860456894617693355021774764017516030636971805512754808394119772083033162446600806297221248536125273395352253581686703941466280026711435794571306131348602953837884425747483215876658815154192036116162190885670628129683255388007190144965179310941809269571777863343387898115814114813102019882707258880757153421128154826131519299163124406758369826816685364717552018913741200919550029128154280773973580404767497527814392949061990894568205512636569167337493612604130040656179174986459901638742125650507894714754344553809098969729805547158059039728731656466902011481599294771815770848551133898192210934809647946486835534062766309543739822298333919830399277192491863976523123231787863927634763239470241966480371466357182149156088700643326644496548759447036419344675328956637023465074950435918884702899711367327588448780817725826684388624695816886474441596586106295856975113376596543406063662071900362283995847845544813346118815239787953393303221457886356235268425955051395194701216670726192381474207558296599970500790200739381148522246883403213546554970444650150525856752148846808207981717434452305146995142209596812616293236564061204026122750772023385750042560335849777326270543204925977817071163182899606479740102576569263959419777530108060731176770614980595367801480617607503471165471273147755554389356850356969264845060952978045528248876029496378440232499296713933798159605492412022940096834019042902032586793718413851673943602325602535748280101647951894471425663228649503974253790463677285978833349404014136655402466857012605858257282366924792384404653613472054124348830624662685667327861919901511094194123962267845171783070383768303827361471230243519793563841782694138534448662421033651360825097791835845178102543377306644980652126741760004960672367796382544252493470768521930189173568782368378225954230594368401593288930964639144234074906262742029892611591960843761604542725356773563724785905127486518958994947205066309818662407070027170386766424029457762107532666734604645910210972865436661119918388277527388400961675376195431988205596134273687218149918829844502394281633333211062117285823694942517795223656008147965680756853352597825083967191736060617931040264303861090399523478038867535114783054314056989146155566635366376621403602817531262302784775871025507583516197437969971375301509225924866046495829838702753310407737694910131803526640706843131762208872863960202454707445682430231281586969843428481507255653256239753451072107771864714822478376992211575179775662855240896768801040023190722769823173772704407454659889285138462792838864124089319663902537386556606751266934280211876712464314576105956779324918182035498471253379529051695385866529730585096519646816113264863138607659249181712966520639722983384315094372084029143155958109841426366785020919237153146452505144171271536405446280430683578910440947623853717895747754590651957797563453675366965168999686500255023428608093067997673924986430483674164170314181387534455776304849982279698606214995544820553127679882783789230700645108358574404866980837018576321765458371416174062344123574113000798389229791590378198920806976314434498596677903075678949187060705618430022321241570382047339718332141138607555453019902424523614693800756532728767301860253733236709403092129836571563465848430253103120058785714782093118233740677793588677320213464463409256058551729586540514296051994796969109004957738782841250365298584316797163905985403703312153297544444005356343670789334363378388878213991857785426225887514681675753998623037458334156382656985156590700757014270172109343604388063950702072404180085111404248719820312207643314180002456024710011464451899932189239796680625025576903079015268948274465603421552307926311976507057382388751100743659492018470824756935811509226958152308204571079308558848182863098102894526210401129291525399931005289673208204293603233157627520835187421453907570550973296437098207655587126628278751988826435161634910360405409698087458280133256029635018920972137487601630363722201663428749042700243051220765085887771898174658643844548015929054193602659638540530399990350283237890992930913247786947371255477981962495558720479720939785421901042818013360788955484779818133349012711255130819866626518673983626344339026895701134724817243544757394191032657910860495396173000635290620943606301578631815910300001284282036034322027568575350477682767862299193345899339351709173933677205116724919924947831166345484974739491243046819949127401030616135032868140451680874518101363998008161388249067672571460797599106252388297934237690032414166397819493378929925331929201511996932967553159698899637563018128137348557042839442864476862663212955434464722690931387107846970691059597780318473394813259861336972581531760963830654382613860651869861567841346746265091494967596544212987127805396675850026547513656701792167378403838774408227463761415133821961393115424734100927257295969286894731318356235572393167599040913096456322769441493371966428235669037435474772955145407365780747431510089608547878294511972557035388664899895663182675599302585700579268946562165051275283803845297612143396937619753686272174748369739405326241748113605575935187694777977567480530254857335621435068401812746935589790978534940884930188386427808038857895205519357785306147737762376412986328106691904808204627376394899504631618647427150729256565231846599763837105632576642916527932318152524063258460447497353709046672628297460709284825088580846446454312263018221387767601571058882531509714575849555589636370956677344442744396974335137412587196537749946650566892174228677127220495936680334898790038794846199469545915657320189615595313283013831301010984339053941410477681416948763207124396448169195257839011844215354092042087291166396912216953577261718737560909716646600825842290409994927151432861771679516617787869741613877854707164386242346574269835215687132957081898265296091205606276097727101812488313369104084843605775141730142136117842866916813544557157019879973326019859888547815865795102052222668197677229446567699654841909872727014236895848195977389900436744914185004017878816798778207987105969021250031475275665170038266603426220017009048230828185751678845899455743178005465993446153398146231947310730344903474834343897555098741451992123892796696380386966854266496026957233723878564899476128133467831289498795899725036561359599067731351480411644842954005383427934577252596060396369459907834740529897488561497363842321628371080465839107025980104580104267678075259565095585356130681778387445868041460497789660653315706748098270379453281720988839862106800549098951977342287536214163585340482316398231732641046088002904666701407307712298049336122141338747496451288823528442111105939720777179772047870056359570867393046607489287041211667299466133810232564475160100551771380015426040528809834392509349465392081275924765419138837299898771013354776432171868152570301097219214763909303721941089448583860866828738889366093398423295589764317806034275919731655693264672715934891532226813236109424733324528591096331365171673426561866526003961447614745347930417093294970061372497604313590925531582145237264802498590538129404049831810061436464200558696963527010778166640738557670527326434760710324538029107193166114370393779150309350974097369771640316386072074227251768333452278521423155550376232876614967579539220173852938189187029480978782415367001869030542360077214589231408904487553909730128805201487475757553954108273829391486743503881753287929508557562256557080915655282354600244426961477514284410069205544928916608915694412896285238708587508394525558712048303613242060334336762883837092719544462019910209722927334148256473521020863439844615082434208093460152660789845699593049075255732148584208265502535163307159059984476976494931799123554710372791894548372498459255915240573981706829497109460111605832667434110561901893159647969813640764874548045380158782652352255840415135493652871106088579544301855425462181290812280076759824879860874208590188106012040693826115647117049692200370199124321100104884656724255151919980620930792795225262375178725243779188579594304805337667341603265375091016124526146959912744647358848432286044044183655514093312575158485613174612016697924517159936734920505253465469902842801029665447958658366471757483300182388421535347662267997096529504684985089095134374220052797850967555315984638889059731108812999389706290894218756122058847225945411581730555771285998065748577790450951935088311199241477898418797880265949087866076303723195275603012210258653651637373610497669120628709220202031320810777134620590817563130270554181635584399658361161907218356715644308983915772882940317194837882297184326004042326093940922863217891685510513805899322028925669529207081049146169344256595192526750193589115895764412718979642644877026448651414641594315671719486006419043354277642617598440017818826837317134407318705798502779980854757728160989991627179966636661727677355789586092523014292340539166801351871980877570489976943608289710074092780907246070550532067492486562121127302926048467969290431495871875099521127261852805225023524916574835528010135456836830059840048697920574851953089783672687933602438153329494292911407372653203815164439085430900964054617025043071218159744224154494908303521620994016044423744874781770273598922101843412531123538104896869807642931502054763608483664517499478072098201621486221924144744253893593410163135720008021851571697189338397093414215678101766771271497341639334947418961243601111529518049311592593550110212398262363053316993652645806314592759323778089903097159139434156992573074681884547135281385897911453136531877178236620837092237762627015452633520430508523827678950796258731131340282052167963775497093023032007836945222226571709621964308566803168556524251563976200580571735656914754687712184087197801324425567823348055927108820249533985086566008632004757280835407352223880414078271655750748738790035725888511813529883733524019407313997073467163181660286838524325263318864290501842862999350764322001676718507331739843384025229091350929874915164757361698775084925942122261676566484851044187214855410386055960861404298556177271892358394460279964292815966889193428258307250063585509361826847139330684637750553205129617438795334727881496872472451742382932537553771725732688971612459539786014399483212131439146591472574913562158151631290520295077368016949473712664526478872015950186896010819153386677884942646792745779314246023055136477515042306470597695628826992093777299432004877998427154537891562351562313420349467912202208260081003366030729338883079789928630783044601356383324328435890237761688755114631203059351786539072628212323704388531614057542306341245291178405993073742088139533088566478332739628742844852393368993985373961686724291246970491271049469662972669363615775776775362363502419194336260214096161384688287686645357126879903901728311618071291475377896849365361687710653992038285815430037812302956179298632673488160389000656911438831289183831085005884694452260819826779410450136991852280703567531371074276165965851283851611422344952035685722906148190375378266030697030821784860861171226861080488182094535183199240670051972306770231091094274822579712567584453208917827906193818393237999543254833227320401645706371588401234372805998457625561261530210880554708720767192983607114008413533817430706686263585763964070200305492135540770775345448583258705428896126480892831137842370241586812975674868771738290278336945588077476786795088618056606889706516721595385238055198642573281188664691373215192547717219560529607012079922774131044928114262355391720045793546980407332698598916808379884450805263945621611817894827691041067466502126778620854182130487072993201857389218930864936129286835969516166763500790725175293389429443884296448190667331988285145625568943374625351415349164667426044524887431436876682927459473380965730967420326202964322863617671412155884226679427266154736895278224275593946052888604687173001392094700606125897640376263115131791588180073207177780086070580892402516034987887809596267207922851444867676662215270122080532009361815406596626398520299943885325103939212600652548460141328594832480194150964564385631833602594689701244298894439241673776022698302245890500303179402012737007189162691988131394823734249794165930590049850955814423210045740443840485596723951223761953754049911483241814267012314752842892995611693097580389333465170922187081266880559379659302766619553464629725402232612167604330987973536914588468824727518180901592666307451328983596731417031202906951441880587745397903474255629588547126013212136429437120094624939812202409927881368185670151519805755456145450299940937689587672892110702139624239233564447070851238353094271251301390547145163415314624836467070122535229211777560079192466634789663679189753470435342143008301537792997115986837284938221021748580394651484714935603313864743331686177571998589199594273345666219053127274162471158251841148427976658757897040788008187103810766787673708018102050900469984090078416778546360686776261556768894174481810237944031996507971675287650769614963344539983174052798105725982510550881093237423985773566316808530806848408235250928542146747273700220754610759418808964815532463638691460318396800568923245826542249522926207142100663045632919461584345870426070449298958973241677720716466904289875524109156935361257063405633934518631574701898497402855893313180103662630744115820519004278657975059421637364951367083103349008523097869601668561313421522318121980150836891969288374772987163089408190865746175930206788186298857293814380145520455062396887835165775294806396675357306017107059730236100980704904092699082893095514578016911479034794564277795749109817225099482707706400844220453809769739919352886618314386939603569778551677274558750161366257586149003611874482764137107036894229074565661698912427028538613319983666016403518527757926082989000045373052298872871420972095718177964462829134227162594148973469725575178675847068056709864548101300363692138592862890065908040509443587955495770799190235028111380665166287378271562743497454602618085499883688398637385518265184675925640003094496133309050880940242481569803122077272675968406411232334087253694613022445462216091007269007378943641490003397400519595917384733713157210423774724399532719695371439982894152701006961313284321659890333786957887996856482800839817086147341740552955090844348531492471354336157603971705995030335473393965288996819316734397878741875008846821650054429787408135561415564034821841626769324026092328368334292463413759941053836682362100210620314691318306133478124684015703990443452115888727208669824750740068115617908730697055365342963564615420980155133874138904144752683373170192200005044219000308450353887816653681331174473886969647363851665885287567751203938103966006653936183580801112770193513052250473715538803103257729024349588163415921083615185700891916999478226565706481197706910464738715251380095919799733947459171452557690255709479714353741410656831249421213850148865141267748012755662923751512300657464744225053212032606815920266261680714372877863666649467994539845592970617588710201766183732464675889618410773294764665844370995432122614220692153377491838067447358664082061830815864594046286626682336586191735574870304400358334765571001926726251747532320777032296774865583722096620535058996982846276740871930237378443089828299711545702757210128704137501806646011334001946003829564401585984379769834464966166644478667253436635279868429092358120303777883394283420320336928938956180452462518642732115673037192585188450702569590355377986617653147635459286897675838536834908613474267037672178919225167923047745842969823935545772794988100749674856231442271177883825271523353784900862487736955616860027691786108185085933275439942273969836918222042788022679422855302085538521877165591343876406968985263353294253834891824558245724510575252570236709107097721919248109651243058690601909210933740021453086944035549500604348785527686634535630630501878259196069286710305703560618450596215999687587571336239455408895810555908752815212487210647263358840317896335149952639925589615046811895686155231162315520236577013691054187638367257369930690573292512905768889129379207459367745047653257806021112421419083535864212842700377446366192343944411682320831130871279146265239516919367210175887505987301747679048862641268606591874181458039803528158304030798664932876300295899378681684980723490561333640417427903574124263069763766267905535186254049368230561124254396115014281111032820807363965686656616935846216209957185238461171713226928115878219659703632395527356066279640928571442005141996620505505599176701720636921333254553693315504720552390952108428756113342023853156708006781742296426740909613866381715744255276443107643877996422894155629785988241086081271365136110343755444263291563465616984811045249730366317173154466375072168632662076943581888428119443485329798131375837884366214729744366588724784704249947436629295852386668034281749805284350538063253255532349253206221600181421094670064856038206203846514589019318587017573355210869063101303153806015229507267010727855516409317342113305222149172230862738026829424168862867766501768360425874203240937261808412670767307056224556651421398500991957786578845633383639574850989247820671505200786113598949243484873251627054169198629260456999457957157279517548790180950639917324288174253415356174365979147431328958831207398097608309216641514643951940460114796170107835866198935122499463241403315492637155843751994879918303536041833665863701768639473709246836965993086609024574108992224747411131705108685157110316150333082286871814612726427168409639012050136694083524716211635750209112075006456646168367336291892470212720165062288965335312140683883111127989982565066834211705649705329845810923187057308442871360516038049374822261946649802789226954356430408838481135353971317419734706753145771915015771791291251806877344822231093235821770508785094847411081837316576992365948941159440590770516158775550945378508110146338467321461964668946726263990082814425117323537637826829894895841834970253313275651609314960747223343100726346576769665123764076822070430783225482033912921738566390464153653798945894907662469021411717016811604080037527084120902990626244832132846526295042451610435732230989522656437779553804966045380521156652743669231938270534976309911865684434925731655363116874199580094623380915726809962574904608655602471641446634456325534216805491092766232551006561950876548152162842569900041087933167953506847476328461134958516248296231431720805635014796017334512364329745569210274035704392205846827290841330697574727574537899789958101567184805405417673539240669115331262603992592263378880138944109455748446939782166026558017964833257659276308113944854076577213219161958149523548482449128335017954376202592064919502964246280015645711544260195666733683576157032015559467363796540811819322684657991552078938212537225004564748098880668777371278945572641336070914124543752484496334345841249205359118564369336741256166135572670759851243295603036522947264807279660806638717936716235265498657466785207276430463125458400837767961664070131935041641047316097931634458982425620252226685379707612834809971832083795574318633093986561808614677573586677901525609329500481631896667559684480646158036719973272807854041720764683044332021336898479715279618850183229487124149458262000190804118989655789139712317191561168858116741147317522803151348372967282865832670617198991866030703829309535444619896077614121927370920194051600726798170141565238120927916624718795794590732988728338857163095024756655226054320877150334122021778010502469337805176178338822511387933028530614235277834139181164835242531712823060246460756502267949355081235092553947279361706512093768915808095710161851086714701071808606640817137613847637011428556703648993331932920394422960885619970831635906301248423981265200012848050731967644417793396927281487597391873368790782944461107077594448010007488126555952876690065444178488269249849395677506273149431667669123141260839662891374223854495022689722757263538084229453210084922015990466472839784998071400392120118197325354729906766746990263032719022374034488032517451738333464772098325887193753025543886781581260398733317260157145650612055698647185930264047248242469422575867106123982961401144663597300741572058710827788580071369782912727146541402883922127547738863502209108974119558654396901108918397741064725268644798885013001238940586325838481786409231982541239937993055546362283787390186468846133720432083912000358365633403183380112657350278382218825867424312803549092287072603244496613161249961197547169257944502902217281005408527549350483330882194531356289340205933065887612414612012117791691934934065981890397448038596311559279320183060307515325956662271316799818603019845723266013884492211980962298654747587367427375757848187717272783281035512318866629520394253850491828410506809433493042386879443594925666106646260456697907944015442590829002569042808490174967933317839023497719750357284241587820354407475383067637507792903120735603724509972392657327258651949903890291772548769031131761246241929992115899671924794803666146899460479450228650741001972697029581274921576524148763234552405906425281270022956231965527542967085089245693851716551644765670054635743596813702798290709944856480914454466401024470555979003603024960904801039467012026329915811624914323762218555056330277139844783685186734945956019012958369021921479476475900785154269733926505994272371294773776341433769727408222024649716630068148930049150466730281709185213794060564087752523935378340490391996521438818240706900530840653546493951040421572429220708252280076960475704937474921771987348232744011538205635261422041482031375516523514904512601709155188978117004540124115778704676117702158440940136937761806975359420188966522803892823500723533904988957957192301604731830626794182439767713153520954990480514193235725687433381783564633215644398273150433992529268194237627506760679491818345194351232825012715948675993196021115249362404790993068224540187064357353730289423611594165501313706108230204588923981182649213551502985204240477601963558524691319329607426788386289034247149653086129364808650840723634047807788083728099541407888960945312256505075126398275685030754359392377738227773170177043887212060517351870810115979212917987792697382442478833497241069021830211869311667998778739964447492332246525539387293135507681220749196267084569667501702460500176323757343376354996658833190679919298803922643278489547671571657336226804887976424168879587155384835300933895434619497514224806539194890115129855697179701891868782037773054336086355805355251020851294333324732724510978923229613792257150137682806194132236926298876876825133378092899893846611877812714567580528791584296099522870636308292573815027449867699461606680067918523800779212328721624726884139515716428303113443833179045701829656142941875065393290659774657665942915535574953372634947379773398680860859850692611238905753522233507358312746104321054382770739095494823572831081224549821022035321581068233053287241407094740974495089450163876014382703297985083960242529912773140436362942048148478230496511179225421559271670424134652342196151076369783541215693285841151032698206734232646412243919819913427138791243238197435620559501268284928743684586689605384315686177011004707330094536855652382481978731904344973412575321986063556061355391666948763778614737738126468322519238227464733817278447099728162599453867469650520860764608367028633371819494846538925799594526589918407589281446797146847305387331648687138766545453850097195507250618591714049094715330254254094998453733941733451967336420785504158499154126214918816848036245784621624195916246882523636028412972310475640654156430118768169441315439740685512728616547910301855680869879667065265603797588547820255114382568306425465944205375618434843224066111359482008530958800642364137216729423665397303605212728662313809941285944274492435998014753464876265178259603596920719918063581124353667765747167099023706404796122297964801316356098179805336288399664548512069276612488155218999336702734477690843610326488839199878873484339816289132376912006595599173662127484103532539110987948744123534547656068156504141949870222987898100081314716628686057302179835420300778960080984233117921238410647131431730365161350101897103036176775758057468260149501860795401566483794394143620036666680221080618818089176017823285367283531156096980405558364411856138750886605667069761936497915154226572874246075412630735111230704545951204717965324303461309319842082480541539957692364094957273614075547587978846255885049232504170965722268002100333005982385684398254946345506165674816665625680033979416866650049804524104936636479030016415934413140892509110962795532398868622138384695005599010918997923680508947113948265602052562153149989170441739130826257015169500507398907657568128593532149732734601506642193338934642955773664565239330931561221762818718628789571020994819627390195603213199043713866197745051893326978119677690415982824357568207692851715259691072224940785558447540069515001591158457494610342494047258202012023953053568454410194496907493444054589501048271508561409132983345996696978185578918838881520104809057024844551276408739671661378746871997607139808772226902964377840867757177835801012863593616107476969382114294286957264876931579285110992777747965279344746839488967805484013510704914695386075131786760869499635203939480661496494885157755612321681603996065203059978407453246321897556839420458415030049842236915873772155506248372272187345596758368761791947076074230247758140095997934888226737623410419907500650764094161010183494819853671079569920554653325160445914356439385405364855681618581651677255725741804091739006796439154808720594008226755245033305344522516241893072536174574745772339534170020850842416874159757287136943074535639930340804813373322649006509349285274099674139119904078849864876576506183617435202093264780154019171497261705576413891546245330124846534786249651799961815695847755342654535065451162140178217645554827103310527214454593155842248796314807079031481279705627781716455769524132014648849993765658281732854426910116254829466763141675792030931850910801129323703629478621990397327702151479202302191603571573302334912419475762823463202550352880380680225112900420159650649229253053172083930766200557189737988689323922532030167937013948071687598703904699942495169645801746091541510765839928334146013499941305458135593811980193620887097690887704151904054448662899295189571623793723081662704667091405332081348844275097877315576265986127087280880275639426385424140003983774830279211449820479149165570110270530610409044410190948332365394616017032684219900819479569693231206439380129092819823810349168007763874360886122487811808185932858589290590299918885324484944501434340849311970606998320217128955219552721884461831788101923482062709658938904777742642521870029378828192447033085700682388981366661800660157252724149688493122709307871153442344994092551335008960574114442236983801013925715268087032821767045475766967803066641337136088930528955140107084165077509448783158678162834354853334548234729168761680247700073003888325937249306467023879734521120391819955966477687998684702503335569696172660295946383907323876111948811907454551089374109594833790586567820373602725260183570282783096660141272899896570353050632960568197253839662518437964685358217465530741542406841849827747435010312834978703665795091916577247485337684464059377073948976492040698856971047405940547712360797333366068284956137536003944486212229169305998167975107816774895177166114603786521159489566006861907527780284387299014697675524723907186137667775551859453778905617816785332664269790261063840390486416734235248007940048247791118547074148116639967116217777988470324194037447068171227876633326205569499290854245978311673066690229672004966770958259942216520058459600542074111320832479078014599941685417528555290334620718698166371992287114693419629376274915710642095068698479556232976219730865490069768661876267639331937901461345304581057607809608822423536897136268072263112219858149967992665538679325972663640440622946660310787107289337787974561325943210899983326664349680853733415461632342199273959283717703281145681386366968240385050101697862278504143917932477093368036145626413945882474679503706351830443839750945560611112975794765479043400461327512949550229411952386193097264786611985142666598925591892383159955989230041156331108684948160880664821710633854081883203085240609686679982603200910176954689196251414433394930182360011698691418299692095193892139038701222297696977451642444905006725934049927509449024815070677454323875974860522731694159434524682560879184258483033623783174043896088510555473532785359599317599480020442363006964756705317091450006698105819761929169204921371155118532008811107104141704503918758432336839174360692736563466075940353182989346588719483419550679504353945419158172745839462560140214519453008726491130990838865479248361983957032148750631735062338186206768894093136079646625598845881854466873353227860134680875491555218214120037050666372497831816324589127369221839001761101612366916924519182361428140499728528984111642437554955759086192256634812896672351759277802388446773038576784005094905502769785390316037572844578848012566621985255755000061245690123094887121398388285103993823929917779586607478512695420679880714148678549054182502433532377422665102328244531933922701791941945557612027222331399034148103074485112716361547478458053359419008299449556349980481277189112994539776777882220767514754624294441666805349040351130241111109183583639376688891532180846645989940057557131837050223669657943602825687653407456900800399606883167025313430056040196120173724686395500367150616651404017558457304111447748465917691629451295046172512833071792295053917535428107162099713373097988542134529670625757678508063790538716276577471266576354791373440113668118625820160315937888419726780134700231412105492892342579639718326486156206085138523101287103408255818960105217219807633423766995331107065366847109822432295826073794314746250576848909724699840823901329638524582697059220716319837066493253950751160997673725673466593405413737946268780379801578960534655690262447601172081420102854286478564236553006641054239516343827371325289461172544632088918765737146769621107936653158637037295851157360145585942865845398560950594008757344031679172187591704737158124250805198793767479810763544490875587965360282795710263578075147998202039598301599074827692090016112377235012565400546469668218357718482169226469693314521730236423788764006329801032693047899580739719551177571188941004208111935347364360198652469695434153742201974066481946124385577423574845024659932310077273353057016091750694476442171726162292405339301234873392250064958500255179483617695188594934688403767249075642651409467498645149220740066023917676765147849026950455164191896305988432926809164063070625306687282859202114364071160424147743582255348596103652192964359326931079785576463227079790472141540504638376589357099397898741369578734144048888813195873735581838760343003403116522239656749996698176071200342639024254450382975000132659529809535575051961384827521944961910027653512179233625771139439802266582165258798826349504438486005825668878195814523002705963344803835908606057141347949133093369995534345894007291552923923465063180159651842341902230130160012555841788247355131279978583275133905492444295071264381833237423366314474063920106763708216517186636775611864804091043623082130076404591990369273725438414854748265862788570330087435689258528929096137032579073044715251962303599011838829415468649414603387001174921207352373840035689805916911761732679419452718278188305645383059627494429118693687858302228268077045219531905870471745558290317611719336132105202978259873265113215337894429803461810743950773055670361861945685933864914154409079372854181879747207901576066206716938927734991027459460913569175907131882229632611635221095057456705015106566256713568607805933235955475749693940602468224527376128192021798066644625289340149302581386731150045060580797194058757120636552269811481154400336396307511772206001830617935803521468393789465752003104300002458318733242321408400678138308050103094933052362315260151788099823300461376607107419472806955170473678850942846101307136553596038269435649374477910730780824342782109652112735316587859709400763260308225023104526233573516211827356532714453400468782343345851400643205576877617901644547095046284701503264020971062852510346352063908131207241675687387283372198697383526140564320198389639006590140423165974903850333480312297386163543978945924540154816333364111487061962985621269743365353157383761837617215078905453671057676032760944295174594564730280203801889880612924806908091675678344526584614527300783100909548834712437555447688898125817191196853920454577850508937581102567317773226325419058877316293329298805269914439403355195437952602412272457609429587555191337777470348526378470216045846715139996799138626375119264198917117985280838157295481795435450819568512860134553642143453105067510505664063878002609519103053765399156229582894199612823075778511104939211555577057864206080407827182025072014759260308368714855409569882286574742268007494997603983389826101812692068444665812407342958987944571921012684284837236446932814556646683652892035168239660637184123970140501218547243858934194291571047430739678510013851307032850284384192529882104657671113750168255566402071988102964095431989625393220565298210675805820580009780273066574160999734385465818233195302824502392093016165304843802772691642380194385612803430459639342970195753073254979292953719154947884164310483702652355708126117873658087714920835817792551422267674866993621727827627408968390576260457501072696084322596371758988687763084721288890232375666114966915430938472942380343545056493687774288658012275295180347931059275039915715696723722537214323798630555283307347661388773808277972748159987847683517881064317455156190413772686399902016043172495411809464203591328792393535974582358458051190362599723312031084070117883007029186442560496230897897013855610620091776581572810960759968261629251824749394781483245017820679850450672378073653871172808691297807213860947662709334634544483991556391243581762275191000588445545477348582766621353853576848721235074625893256098636753236009561469713744190356471023619339995032197342571188134919579477703524796849499204888941579149180989575427829453267094632402938587755918805737456149778267096565578960713066429456942884032378374721713448467978079529776990154575836593403467806180898664960444352719329711905590672003274998431765649983764420772898590660608821417761541494652022664157598342879036959665520348723863255021767551888627769447891197846776814207045050849958748971897259188179169025380258179016318138246096106962792966834260963186415085862456376812275816173469066139404996808553716248378662591792777146291200452103421754287243142928394230377178099913095865307195843650323818154720425676682065937162714574391543330361480547831215580999704789260866056263938292149325148152595663924512476477727523715287755420809330411313549473195195434734098620049231688946804973426204394122345628581888640713963391190873773300988944440574293784786816716227534060990538536419279458188034106406484984355737519173773983951544795592158475105798270546684121192348821150272879081551609590556050123902451296649100232457305475871178076703493797148222222824700170658572395632635802070060664784201253299473735154455735227808107500913900455497503928879817152155668885447507633759770571674163314286262780685908520623926957185406148143655802066688884983964299002496687213332715105781415224536461301317368287180415707377868030642319362380244705353821866876739827677561648198267131053826747135336836103964850019186408209897955385816511637968668309431565690205215111312147942825159362613979233061341369729201366883073434743617023556855659622574132679790110431158542573957394336134915316366823751759103285770140187148023057926479788234943088759607667547222325709376762776493760282401163491512991446760613738962142997579785916772056598001072315811008741583054541161966083201191009643858519471085377775800732975049229723440721552286781584529644551617018383677366189650378081873206458942162341273606522902640152068974840840329721226431503053221342712653337387636280189409611569285092127131145255375075989863742023098237185425199322096309914536388825643055038668535417673084752173483040341321402730246806071965638710251465374945746082294002335723874071272438060747778636170233524606731560302428192041418019512188827506565652021956274098636064348650484679857799105514967235817515951578844379039440914221179578581410516860283108075319691151591834690563884649728086496077292065788817478235217005520677763082511658858431438943511934168867746735517989116651088110818109395412025038586779982107805219170555044405489378593880078350954930200989622065461167075403165370667418368597729253576636726086343125823670542872356938392333630181981845760283723987334887712675407369081898366788067252206808383184200117089654894120802474136001166885058714616034959398180943516298403683347360638990712815496977537058561564372210425361377284907883564216931890864801206084825087749142632192428083681221159763083067716003014260802047900205387936714222524887831835059367357954370551316427659309186071372338163546579525670433059400196268822246901011765718077278115354515144289780062866666724250989491442227005772402670753125467245297160791558478399886054622726557710209938083979877250043303744881950442073390309357748154542489411927221507773167929194768076878756273012903250854121944217665981486873172842954409915560067912442227247933437778519126518640549115529023944115615289406637863703747944316992685114779421026060778400946800794751996653723648595368339347679496866700690081626906222419419047172293171923586266918997478949638677633050698309636986189276796001907149016666929330317439698565708345233167596014189254656584071079817808090511084512624184426518129027178512037106906533923914910267778952413927335855883063355157418762820252129020947575488879606482813302020913647486224598882706178107241456298967041870291298306460895735515151300076867851127342418487627937462563576741242360783858716474826380376167250113431479489198391620282763184779797094238880245765754776491603731257245650455529297963314055497655953035864904441022053805339529217022843762953998178192812145865097640726820893145714928126751236833607832224275257118629436377066374087896471010197967213491363623992169344878983927263057539444169659554844027115129039495510542358480934699240088955185508635505622345095516041103762853650126391000847166624432898321653724786567183890062160834672089136413649987753366211034596019853957320331118354290517876792317723932271210864813190593136137474588408456331742099809694997178761347463413116057548072468769916728986196701401791579718712273414149027504231547995478948788704867887806862551577545365649530870876285519558227139716257951435278630840540158864148105883278403168188455124840967581978052401129663730591970475852531450322359115380013820575619325117034602633739469838061104548488246605791495196956823880421786397672577450394799319124648682156588503754094208719010649209190836852023602745170999518813648610802159075653684761828165449197866303064456909563409149786345824325698564027527388204459066068487692864567014883620258950981087317006009471629243479989506477581088739699044728916864082520769309147233301094866928230667988371004965489153308664185009472894653646101743125231686011959480632512355004918062101727780284425270843270163895993973131919750355791774034176863110769513063205752704445828404025230184482641832809410781309368039107082648397624173272577939310723450628022907281684836352182852234477659160603717453781708466595258136530921060256701372295227106898542943699517035265780150358921699717908017815129724999321506761310590094859926335958304741511970937938103076452559144428097893938743884113131004976117183594690284518874593915252179625265410347133003226586260082334919983258709997504708039086481923859844766523339517172137847568065658511945283584623179541134833300260832219042303467306747466261483785976071456344648902830336117948745740458827397041207556488339238872788654624649352488678960447374027936140389172537655663496146757720133762924483395105680046947138783321955212972182447633889185203592444788350439494839311296933965020149894248544569898271220266230303110816882956349914016185365406788356476946435571860373471294702472727767884208858947959900770931262677406216475599336410780204980738401685601068932545000865372896684452820632475876221378376297434939710341691317987970524300439153592450639424182012584369637446461581256142378019291290335831566149242401407049324912487097496486405735096359449740760269858458973043994493111240364107929660908493901863338223540469827063874473083654867902479395802661772658416956988775913166942089722454565497470084062347563215900583735512157231201107009517806645392814187384597248014040513555900796700356695507872376415368636522124705697136808772300269237788668147655841234051764242308329634605251708873358000393119216593588605628545910241859523252163796062462691606759955104197580199101554269684816506450686095460382369304232829371995570997148169648609892502923487782207677544183007191371207010458547120368051199979434213319826037972591315161739202473617980982382312630184391670722334868965001525483801719067230523549981236842428991978602953052334756649759353186372864940764285848121704059495646451473776697335316254037968622956005893230771266105041675172302415092878753474942535278558068387218755731564742974709456437210374913364567090463357288702965448152759459023787161748897570237296951586100640265490428036033600980478207240153087800952264211992535976387354237825091036405267073696696759711252461029678862703918275902296296291300291953708696781665327090569434893947535518825303859881477006874504281926900521259528142163944082866246951042264777063947279121246928360459189880889456491312146634761073662041043407281948849510340796419977487706102683952913413093984681641166418997449057290332211642015175005615687746745553545715275045474444538587536547602739591623853671710628891289629980918595456506436070677544429679602577914120184880849007036223537934559443931974063983295811675484675723949339887550026030614867643133958152900411272416685036314168901784735787273299496773286971380223633219805359945976560284053240290443090939495114015911032633075636228759696808289925872623374410328267456943842018203110990825481587978870971367245696449227280074030147578383777147163860966683551601868140270622778733530757338226595427001629210302129627573104039571150006637629893223670233447061672627647803210101097136481110270176184616697090297851011760616400680988910434619346752706570184554707231023836141230967457228433402318973356503224236388421582380232086731417013592892461862087970551740371649995004926129304495096471108785036136719164551965550021914825148593699105567090189274530257300611832531880295081408494070170715558564441523992111493492154545152217786239410369260485483182320218368817676811524133924217326107524169745324603965423294670137848376978390669478294432189396423300840068755372467635358155623431455970760028904531366321672717075309133331908394857885140543217933860694931151835860254515768863897299445137594495685617211238965309502952615036720343713743293551966516953791921921199970905325670366188834588453297946249346624237502409746827824902269881037808404118979500407008005217740907175096628403493401378394034752393460644065643735385405509598906026498634032329982133100361523685744830958030769633960570497973081976591955563368832737623226159298061956878695785669470744416839878731312120398942278865314775582230769938137187476092624184351608317511226360678545735653764066925882577331609241412629183013465516394251758563970625182839990405825324521500350560436376595965920495148164258365095564653940667737733132887498247462548404162210584731991124404809236475838280278534207901248144073296410505334292244557641168508470899280886386269037141550141838165091527525327181500429974088786437587855925112966213203617458312809207040290460737247288135413480678549808428531416962845655299023381000638966294851756380872032355457523822375293668518408510108490801008498352095003022829261490835234918960894190905924177238192958325168546942965275077853665309906212098061633521617707525206728391644456372862033920990011800349944757671908748944646680969108616816238171910113117763893664128956781793645586977130363084606311575081071444986524114764172850063773541090089375558086443306579082078044257193939812992252106400733017480496027759111556759648369765153607556237235179546470272409015165647102554782770200522020976789582419521435887460927209397686901927910397904340440786322779343317191268338085986998755715528157224146750342504976404630620555835409532942422730179771856735807656007852907479106908212993352692804266136833437360855926648414517923602505733729160506838905106202856652738645610986135399022983265941624738674550503023581609400411201441269351800554486701298852017867583472529173618947330685209354534614419124656944549457550753286935069712879513173620470145202922595757375752929152699260963327892685785803225581745426080378490251284336819201472296701034959588558771740003535554308905426406215554665357302643321432544466319902290785153190477964911015922369744452190554433931886890693291606074201192213647863022330274050283750676059911291682298173608910180721902553090520038870985832099281302894172238158449170037354722046747474685597818391487498738789582331301432985886056668662489878829631425007716890275648802637245540292050392474050130862349184427966658343403929123504664535444563212682795407757307138005313494133274927068128000884929579062393508503147554201198690964270651869535585232574265687796720667613268581597341092953402182307264514594260769296274780765593426083045488755549059624907318315504125261127418121247904591598554186476342443386106579631470563884641135854512857046825183701015185457199533545527237579362844613187784148834762124879640430545755572614931051923923986700965012107521982968057243813013495078758678117815349422853210948991430677667588762006840705791012672760748291116117405724438263132964721560379907219424665923444465888391081786902189281034522389083955573150719719365604610654523216061886041967231329592486392146208337096043170816224199748382081906844225884395195469833187977337315816052394963224737663870214381744216367703276993419296566421227551714914969142536522362333345111702317592386620464919551559301566830042520432486053636589014523813450445654146867018853585043588255587123293081882334663499100143755571262645200484726094509904508075250711964255880495866698340236925614885136461226078765424105624014955833317588439985372606802921210312640874136329702533698283760453090930866597453496725116942176901180979678970493217108946210069930592987940072545541144055444010291992721101697138888107831308321885334622549932361642908118252174498278867949789924048893808977092040167186184568667933554628324796616967335721658471646835964565613038372691158625085480586953595192725960144051947215368658582114163811327912515099057090806153478920765054118101434782991218324547901172067800624499185698896561852736829441237110441220218514192750212187744842060457545697951844326559564370298174220596222279708640722159107819960502964946954010687556968421493386924142285613486315646021874424644853340826486790055148805744063103574847741648367647547893008936450436430959799015770387288414910416732927490642312825711130441337059687110931723767950592365527467238444933593853461575083676119884560637445471373878555709884554370373483503872135413448692045671779216911160875529071687985207946748986346596734934367284494653112417519944827988736095738556561236167089160219360623992934189264775129382403023119012023800487806629101864145482043917309810064527643326051347818118306731312425897253055230641031843284383592886041738399403969471565273649300900801016915694694879398084192343215852828413603113381749747897807633118506258698706020671683344052076712487296071619452425230758383761643413523503182663109924215026389489199974158981737063488173686137993074472409736753891690577774985404944364286088705844662203055505422350769155654027701167998980776918250016819227160992827366184858120039994333973306418245777087690392120987780416686656395333945904247550801331081471778213336471390055056494329137555586977487436943972976178198033288457685452586387338142988048804646703970632706905419126866871052290158904536404594085060332387558242235441605852065816215316320149606949661824973638319676904781359718497749126690760419618059198453141364844657896460641742690102671557784851148270461617082729520364254795294394213322822420725202856741450240606051269822580145009779584887271920104358100547716219867714325309774014847655595559356610032851272845153809222818134929424847396932001069179551596714917140861122175880311729359035970915327528634875242338959550090930180969897401641609945153539533303831065551401742700302302253630076156939626764194197416372845255255832090889812862350137320864868235436972887239683139941081783968781169315542274049370887468765124020580763252093990287023811306426423062112542315589849148779790382075916501672520161032980480593895874437896756187536092145381197729270784890936380451646145935564871621921644402876872624908405192211919409285669945412414788711671992129238164056100271717505841193979130932602220447094210689199880851174816037911354165439798044818491976277505849536537330623394102257962997774929029413469317801554095086008792932058462281211426258659821026644558084474079419218313794189071821262344733211533296733758651609991109855980167280041680106379099490844169279031896467475441446882534277738437204248482653160634787709723394163321252247595668174545958621809084783409220075771818964391882090564311049705105477476633023859052044008857899388024089380131577087991344892960304665625992304854688920066000959386723936679513258074435163913171835766733008164456410747478649308662619608002801784416610151699191527805312899089102283332450563957306449032802858680877415624968143300608006331949070065133611896492328433300393989966222332477203509414394174323192899429127579885988939876974402324374831087359311835722465446042467776074519583190445252251938682052172607993411819501189404551360685479758100791471737355574952968724769628224330144308271180376592603756486366662959744763540057350516587839862220284767461981966495081781360285166081528175525337139352897544740347931126010593830273183214599738522524409650711193675957933387241398955418827605487230747465357440652235022722783937101874564810269591977682690131652948806171418400947060239477612406540650114336212041644237639951329585488050872076557835294834676943447651723291513594422327502674337761527990828548680748008990376241665109158794892808740287752429314524238064605329543962585086314800271805666593103685908941545695546663324637644460739979498941807457274379410151600785404099128786840237432772680616315835815914428473429154255950924048858910485725587883516680743958558572646590959367997133350803070088030171765565563245605929768870839072994367929201111026615837495914350744983840960570530767222660779600693707904318219479670636795494753177020324146225148811401021945961153816559031872367882341756229161768906122955633717462216080883511957559343555056436853411996985398702141886174088024364085777371236429801068620294767017322152026517805478028619878791951697035474210890750674819408620234125713784336601118530356303720784136594520474106515140171611833710044462382156578322997550763707391721178762487501299065576477258229011122072775459839243760825277988401033350293176804350861402300898453759504129126442219423448533618710645629371709366057132758864549093692321630266364476578095707742223201586833391331096147622265142935824509925738170850903658670478897090134276329152704297018431865141599293764974378099763876981683435257324679384438458866921393650200161503095457368316518015524049159447482340840254885596487237429150048873613002780367446463210267520543073037615256093332354272360354053082387519662640305324719679432429800990810436290604865768578536820377346854126967775911778187795716070614456885590195552958143715574371840220960852969810725463540924417966981738039709889805390638484552394085259469666066207847945894990011680370099682238493021082574675553796614776385107615194862635975577945089386639766623764206838646275651603368328592097504721145993718044577961611989164304999901231558964670485439067159185331220614153016078685442465769807198382948464437678866956925380388770404838871580215022170511832587387219729423029935165133130455019829753544266597051251027618207327757502632990051800607841326114167438538187245705489962343772537649633269522323720383090530805818817979265376458478839871828223194926936089104443942117768605787863734521603680942477831336264148655367920393717725200509949711493955025261458129563128451343453342420582005061167039730428635530266917600308225215982051891729967586261060419898579680577155218954213411679540406555988157182583294206379943413892992127277523586558886002840017288573344670482189562279604816419407749473984573991995495533487621584062883658143047632158173850673717674108968189333389475087755801723813086145361502748286275325680236033010572577422683532672078308770133868115982881217809334741527633865464347405255208915426062771424695142016388671029254561844431529158091239885840506851797195711885348265446518925231053178276254679275034416896702138228252273800769132196560191754267858869472436463367609594865190882100253052285649153209242842695815505932156025745075509958609100711667805143672692764774051795890712059164588966687402007317177259444393037378702044914578716842807544191608630413823250628788218406996805502115671542280656944034754786445847785377902851165736119779096356780741582120111051126556884557688993883867359160648593655999206679014299273683222483795717786952427713559540931888185385815803343750186203425075128477343487355525696033232981729032296833829116614531213944603658426026804311741622935696013613578030537283167152929272928930457044487661025896112126101672539835219400160111643750856293610527215295951570076614143009402381510185152116020086206536359506070346165651957412060869641312469208209361708137399674200175481388415748464675231901807212414849778012278895222512805187349733984102580512249768351765129287312510879216007996451099418826005258974611610692452467911370919591809355654637165480851447798732046272527244271255745470873781209854395730810729828390151034113983768509868466025316595969493684776252115489062456881661883928082942645547039254735822227116090132177303299437180351695680156248728006594096863925427593512780937158968202436206882431405839711614820916011435482617857186251514828344521652982567526116020246990578415659381518873190344624723385609458558148870753211989237490894614324273086325667258876429865245755324463258387034191910826760974419314405357597370601688688210175236897131788194243258640238073573999316264617758168156755478777387748243015188487386590642261741929278971626194082819148819119598707348057528610280471566463212660097201343929648318174111073691980566186814456045524442207735381671761009735416806891055360775237534802793008999035117712463487467025078930230918968206461192041789251799637715483743328777504648139177483545215258855867722553637136047144940513144030825716292254267006748284384877252054150736969442212487007878107110481691042488785822186542769599669707784348827431268329064769859744388378861372210977662232108860961959589352521380887162682393987514488073149282275743803459768403990608176700818172824013914748792193216930181544221771281313248547282044385209483859808227473542453914406405920555168070793321310002818243212126171267563786906880743994681134123096056701706778149183793404391779908917520236374584233384149206574503357942299668987286015605238653745631107950408560436893343038385364719404631466762585844032270354708904664615975558597969604661690574414456118823536385815636932304260628101196479065377412290058035968799009886235771134335052259127200469768803990911656594899625110171515215565716582532962414690712290958928921117101065158387037090638608653584100629001055990077780078987095971874138323666032419584209372740935045359877153161456021197503748141603042131541871806125444082603172907949767926793440700923607488075909801442567696653583416022705786743823011371450978555934105908305737439897269766610691179139323584727423553605427255158611557409595673884780351220986502366693497525078459673390319231018391032404542028786912096320485194752805949814581426007314224375019701189192734054349202957280093830547735968035711342491086544559033842621953627584419535211130020307773971162030871639500285279270079127833222293586411111613912100527076871176981694820322475394540970750973042353346891893900858618696336543033901573963554231552677134468009035410466047277982456558277364383961308108342679301933345951172619381200850273829672986028507088196394827646719414921575944693236525322986844126463306800674886955600034770314555625188865981287348574831697475400838839801816043018326304902296700259586816761887578033423551400408679738267916003926017361528147785374855887515300622667432103888020626946627059830555917349408287135708973457996425883750608953215963153897165648140113378810440011824632011234872285934156650787469216511214567268171244180511201282717173379441481402381082668453793646587593369941244115652005944957869835279764765431117787843469684907609183582380591644177267930574714909411518927608430001116882760495760232743643681893799337919846830586806560586928719333131023445386772918378191044383936412520237353193626729126737600519377336153702132165257750802752437650781010675694852395125335172720087638656237670415834778180726161430942786118509080508390924550056411922624168692038657923534416300044618580771707910921036066848396446867613867094799776826193128964618871884422560257534893300242898751132364159244584311496752209329489492413923366058488257838325083059358568247527683728318307679967022231895011951235299680644902440798281878772897482580329708577920031227207823445513190683382459574358598915196584240819459257450039394485636768423113184664978763448244578850730613413644603639319328217330361023735395998786866301841405082657735811283705366242511327736665603796797827301518747060637392116309872918421526946089851095265970219835979149280198013851185806805076880076772694848508247238918301400980240376006331331034952118137994741392112319586080347414176144329115519228920911767148508359289414487068582340407101166588468221745156739751207998195074298025461620864237448574889130412562456940662393719949531239159837280483134228727649453463496716653080542441364290333688351724097996634689046963130677891759325593070556269557177962875053995107954161785438675981236064051000309223094325195058833691934977327355499285043121778816712566752493928859261645617545183222282640093797073646284929589782794885706723822477208375738015780879718628073955492471266344345053241110823328990530009443868840978898772284681635015309750307879408362679889088273493067610138078439772814713099990399268234425207358410938722558689702847317706095745968942305102289068916530822927680384638735193576347393747476208710999916902201397821704417520465130682117149055213961805705320937949690513823487681510140786510724836236823077226795494165593130141092022496855836675120588821144562606723955906973064950101987057310264586893870071519120164231142068456730328915917235264569748953442652216433554996595209324266931876627805836257174170559598956325162089662612948286443001873526112938516407841868011700640725216091007228625604959703876061744107054363868077066631909175901155838198024097574580116290076892534787823793054775461263548458070890309026377399384598786321127830533933170211505309311893249930078289396219066579902209838480158962939354664737402837998886552973909152001115690361354931612587770836432082756556581498432336911406605754475876803534886821986130627381584951977508642388534819550268581347969887317335925839195300840923124456971661064605523087415308797116940142893843669080385501438986758233465419696575738948631424406884300452764935475865470187525294018672323792659478661204287526207134093603265054385600115803352880242367075097392614606760478832490887803045442254649951503243855583687647718652789839536762497811589869189946704670390847944803564677943952033136701689503227103515569254274435440224168498562193331791833186283245107971655033149787471338781992632358581235389907051583246723847538884971189066164714054404175107872702298167823071410905718844244164958261671779699208928260406414760993948903203289009934152787955680732958011047082153682086294378644926350546822481285440420660622824135182535946743097938833195143132549082470488706535806538933136544357493316232328066936532396564836231644354137278603433917451809644076766788049579222764148994145643712233423708570157971121303288238982140266178879889509722203730820876927409003535848795128565614397244141549606743804750436977667569539486623111861415564092336152960983343080180009882707749563433840294237419837013661404971711376195561290381959098315820352290902881884148504278016492899973344765939520834103529606957547685101832139292003196268650384120381982719817726565854023409008174965420779323817320251691176991233103274979208051227535326983323282069675542379619343941514223864874095302845280590294488414324371158287151934141852194383014103024259391591090368416949841038106732815171051446177467359876323070164036974194849335935413141564912069729031521342316463893169793371929508567728815561885732979570442686989452581321313253917811511846190634885552408912589664882718959260266443536646420995776530985853817823099117031197859766025910494519797296107921858538972018076322102944970439292804973717212273118622675431438911855378011799275933490901073134278178393122713208092658190701040921941785023930982156344262757093576452157856039471242337417092936306552336866646154196831067737740379