Group Abstract Group Abstract

Message Boards Message Boards

How to calculate the digits of the MKB constant

34 Replies

With

enter image description here

and

enter image description here

Latest:

ClearSystemCache[]; Timing[
  Quiet[NIntegrate[
      Exp[Pi I x] Sum[(Log[x]/x)^n/n!, {n, 1, Infinity}], {x, 1, 
        Infinity I}, WorkingPrecision -> 4453, 
   Method -> "Trapezoidal", 
      MaxRecursion -> 11]]]

gives {134.516,...

More details and results to come.

Latest speed records for the MKB constant

(digits and seconds)

                                                                     [ 2021  Method ]       
           V 10.1.2   V10.3       v11.3   V12.0         V12.1         V12.3       V13.0
1000                                                                    3.3        3.1
 2000        437      256            67      67           58            21          20                
 3000        889      794           217     211          186           84            ?                
4000                   1633         514     492          447           253*          259 (248*)        
 5000                  2858         1005    925          854           386          378                
10000                 17678         8327    7748        7470          2800         2748                
20000                 121,431       71000   66177
40000                                      362,945                   148,817      134,440

* means from a fresh kernel.

V13.0 computations are worked with the 2021 method in this Cloud notebook.

(So, for example, my 10,000 digit computations went from 17,678 seconds to 2,748 seconds.)

They all have been checked to give accurate results.

2022 verification Method is as follows, where prec is the number of digits to be verified by "quenching" Integral] with 1,5,...,4n+1 iterations of the partial integration.

Cloud notebook here. It doesn't work too well in the "Add Notebook" button: enter image description here

Instructions\[IndentingNewLine] with the following hyperlink, go down to "ReMBK200k=" and shift+enter

prec=2000;Quiet[Print["integrating without parts took ",(Timing[(cc=NIntegrate[(Exp[Log[t]/t-Pi t/I]),{t,1,Infinity I},WorkingPrecision->prec,Method->"Trapezoidal",MaxRecursion->Floor[Log[prec]/Log[2]]]-I/Pi)])[[1]], "sec. ","check with 200K ",N[ReMBK200k-Re[cc],20]]];Table[Quiet[Print["integrating by parts for ",4n+1," iteration(s) took ",Timing[Block[{d,h,g,$MaxExtraPrecision=200},f[x_]=x^(1/x);\[IndentingNewLine]d=n*4+1;\[IndentingNewLine]h[n_]:=Sum[StirlingS1[n,k]*Sum[(-j)^(k-j)*Binomial[k,j],{j,0,k}],{k,1,n}];\[IndentingNewLine]h[0]=1;\[IndentingNewLine]g=2 I/Pi-Sum[-I^(n+1) h[n]/Pi^(n+1),{n,1,d}];\[IndentingNewLine]expplus1:=NIntegrate[Simplify[Exp[I Pi*x]*D[f[x],{x,d+1}]],{x,1,Infinity I},WorkingPrecision->prec,PrecisionGoal->prec,Method->"Trapezoidal",MaxRecursion->Floor[Log[prec]/Log[2]]];\[IndentingNewLine]c[n_]=(-g-(1/Pi)^(d+1)*expplus1)]][[1]]," sec.","check with 200K ",N[ReMBK200k-Re[c[n]],20]]],{n,0,1}];\[IndentingNewLine]Print[]

I finally found a sum for the MKB constant! enter image description here enter image description here

See this cloud notebook. In there we see the sixth partial sum:

In[16]:= N[
 MeijerG[{{}, {1, 1}}, {{0, 0, 0}, {}}, -I \[Pi]] - 
  I \[Pi] MeijerG[{{}, {1, 1, 1}}, {{-1, 0, 0, 
      0}, {}}, -I \[Pi]] - \[Pi]^2 MeijerG[{{}, {1, 1, 1, 1}}, {{-2, 
      0, 0, 0, 0}, {}}, -I \[Pi]] + 
  I \[Pi]^3 MeijerG[{{}, {1, 1, 1, 1, 1}}, {{-3, 0, 0, 0, 0, 
      0}, {}}, -I \[Pi]] + \[Pi]^4 MeijerG[{{}, {1, 1, 1, 1, 1, 
      1}}, {{-4, 0, 0, 0, 0, 0, 0}, {}}, -I \[Pi]] - 
  I \[Pi]^5 MeijerG[{{}, {1, 1, 1, 1, 1, 1, 1}}, {{-5, 0, 0, 0, 0, 0, 
      0, 0}, {}}, -I \[Pi]]]

Out[16]= 0.070776 - 0.0473807 I

So now we have sum and integral notation for both the MRB and MKB constants.

enter image description here

In[135]:= 
f[n_] := MeijerG[{{}, 
   Table[1, {n + 1}]}, {Prepend[
    Table[0, n + 1], -n + 1], {}}, -I \[Pi]];

In[144]:= N[Sum[(I/\[Pi])^(1 - n) f[n], {n, 1, 16}]]

Out[144]= 0.070776 - 0.0473806 I

More code and how well it works is at the bottom of this cloud notebook.

Here is the Notebook I used to discover it.

I finally computed 200,000 digits of the MKB constant (0.070776 - 0.684 I...) Started ‎Saturday, ‎May ‎15, ‎2021, ‏‎10 : 54 : 17 AM, and finished 9:23:50 am EDT | Friday, August 20, 2021, for a total of 8.37539*10^6 seconds or 96 days 22 hours 29 minutes 50 seconds.

The full computation, verification to 100,000 digits, and hyperlinks to various digits are found below at 200k MKB A.nb. The code was

g[x_] = x^(1/x); u := (t/(1 - t)); Timing[
 MKB1 = (-I Quiet[
      NIntegrate[(g[(1 + u I)])/(Exp[Pi u] (1 - t)^2), {t, 0, 1}, 
       WorkingPrecision -> 200000, Method -> "DoubleExponential", 
       MaxRecursion -> 17]] - I/Pi)]

I have 2 other codes running to verify all 200,000 digits.

Attachments:

we look at formulas previously used for the MKB constant.

The following subtle changes transform M2 to M1.

Wolfram Notebook updated with the new version of the miraculous algorithm on 6/16/2021.

Here is the improvement we get from using i f(i t) as an integrand from 0 to infinity vs the Exp[I Pi t] g[t].

New speed records up to 40k digits.

enter image description here

test3 is M1. M1 +2i/pi = M2 (the result from method 2). This is a great proof of the accuracy of those digits!

All worked out at

https://www.wolframcloud.com/obj/bmmmburns/Published/MKB%20fI.nb

That includes a check of 100K digits, its time computed by the new version of the miraculous algorithm. See "I computed and confirmed 100,000 digits of the MKB constant" above for where the 100K digits were first computed and confirmed the first time.

Since the MKB constant comes from an oscillating integral, I thought about naming the convergent M2.

Although the MKB constant is slow to converge, I did discover the following fast integral formula for it.

I computed and confirmed 100,000 digits of the MKB constant.

The original computation took 417.327 hours, or 17 and 1/3 days. The confirmation took 529.92, or 22 days. See attached "verify MKB by derivative.nb" for work and digits.

100, 000 digits of CMKB

calculated here are saved as "test."

Compute 100,000--- 16

In[84]:=
g[x_]=x^(1/x);t=(Timing[test=-(I NIntegrate[(g[(1+t I)]) (Exp[-Pi t]),{t,0,Infinity},WorkingPrecision->100000,Method->"Trapezoidal",MaxRecursion->16]+I/Pi)])[[1]];Print["Timing for calculation=",t]

Timing for calculation=", 1502377.625`

Finished  sometime between May 6, 2021 10:00 pm and  May 7, 2021 8:21 am EST



In[95]:=1502377.625/3600

Out[95]=417.327

In[96]:=test

Out[96]=0.07077603931152880353952802183028200136575469620336302758317278816361845726438203658083188126617723820944073396910971792699904464538475364292258443860652193330471222906120205483985764336623434898438270710499897053952312269178485299032185072743545220051257328105422174249313177670295863771714489658779291185716175115405623656039914848817528200250723061535734571065031458992196831648681239079549382556509741967588147362548743205919028695774572411439927516593391029992733107982746794845130889328251307263102570083031527430861023428334369104098217022622690459402970550932729520226625490752259419565590805748359989234693100636146552550629713179601483134045038416878054929072981851045829413286377842843667537873039424751972806488728778099867102188779797777252241976559417256927749003107193817774918483496279384681984119551938983470750981526386576149809003502627803191424302529219251315152396118410707225304739394962943052646279777448768148583253359471170767214931101605089284945979067286888735330319862151244676787364299815443211871242691471418043972933414683459023829774729750532719883869462912155123409313348415267128259883306521193975174379922254198045615178994412133135553490942451521573377205408642930048589144169649033910690772391582253781370071342251572594362677567499808920975470209239383580761985703701060855968630398324250374814946826330552459256977035009973219582010379262683780372730214991685800367661183357964885016197428930706629538529226414814678953253401850066311530145893991405674646428173225541242767398713437847690148648164301021426738211030994294821902625513428936892614145650783513004546551731245970234033122811126743549631605531411455678018750898959427121576342426271262753681846249671477954063497124349020344036551106573368287836435282064517556997850972938450343013990723354180760185449019556941656397695538767052313265123333664135693091475441531470407512786517873318972913388315734915392768105053931934202415883973475615262886612907281255793629481816182880865699735067686367810063866509045347176621318018458034748234232981578345259121255810205821964010786343520655569736473710013798766266339986478994396368658091710082607277967003235418733795259931586975834303233043078953584820513099576066296501944555910377438882939963556870169455614687566678101370286182614425807520849687487908345556832868109922937147107976554412386583615077935956205339747769600705204679193073507513246175591609043584839337278793543746547700154053159349116699042736793917136465993648407683948032656188884206691693402772619144551918281516523603996927190619916557296777446543565889536021246466885918243655971990259296688767731715772356476947096650480980371949561041255314794988939077454593378587307969775159664942356081052570229788101253506631095305917346699184699307345509335873773978563492582340494114719388853850860110309182783123446184972468187651823077670750405979820522362242556172027726453015086533936217003569126904502550996932189173156074118921809673225790471801702126915880409108189331098050572529022279316595757334861754576511308119568675829070688830667238378998168376707878993608699338194221957462186995167338096705301353579036312938828377193705198756062915785278012960431864180966081008297558236492760272218063461699985426928320277774782861029791162809901777602844641512992771011065715457373366479587182447765663756471484330546758342442460492405046869226774217858673931229808148581477703404500553487069712504523117831032910709604428740057861796934338567573095875311653478664916554862079015731415233037860028637929728658391856887154892519556507647681563013568325422068040338916361521228721960259466523943888257896063588905734286095855374962687234162657934054193325229612628993882876132729326435801984885784101749171594640265749043983789712342858396610984512307096066729606199953906737787451295674356086274075351656394923428145984655133252291582978556210320582145898094236682915562958876397108132239442745441670640980253964115439162902370145339171491694834766220312285746976929187135807375065114071175825067288409888880740540559344993026282276803331136865494066612396596168209762805178753315343226947797372540884861256857475952419164848640023615456119437805709289844118506366383018766929119865687888997812457908367464878155785718230693782388129268655860541351105369075507318396693503695367262931577683467448269146898885363482805938396399579762552871670251094456845663748442662504838037088437480868848238759896935651182783115725845752987615928292866443261329280503053431533402950095193512502769412409991020971081722477621016995619906726583924751264064219576421497947089067686995211417968430091445615589910842175933881656004616194433090230812331341772002424490673790255193676279937518912598481328651707922980235349897571660918463079717355079356492371340953690735155226250048523618811976884731369672664860114159281786997398679000432955391328092096332507009917700191238679287878095492448480858235526283804826470719570292392469897900132078134817799228781783966406048450356382020025865633496572653723635997802672579150410515751614079788395055602542198471480699518287871865333126891340101916622813409477321367233243879959485068337567896954383222032338849063883951049308210943475702372145809360052386964785879560259767505210236552925838579347933674237665256428165398109811926294893115716478490602579134052813160126203175534155726824533565310364276694808283976228866737318171484065806926302804499264790816407643980605539930214627144955868310017574480739924642525449900839720110611265485895397953895166838886928899074249199424136964720444306894494403918657962530246512255932794149967176760618965656391817656620491746340303112113284415016181905280856183425515777908928088757758543646533597702066693557245525388917957379521329904347879824487379231760154812402986199185532315068352479956812186524457253954718894277531013051083396327780043666469474275981939330190057846718358798507554840427136957835394242255610774040103240817040392686754171142593231735431101424909184982160823154519141377971201541308847536387068798855914397455842773329120930514061794516419994088698411356892696696093390876805565714219023788205424076634156301604683241223525807851120663914762101297014450395096795899156433106283277281230260880231164060902135093212780014523165274620859757738238885368748976192285250348145631165404037683287321922741542485782820641242853247894785238137630939734031105444034024537878642578179120989947784464415590121367511691836292619695268598199455951139176227054755967938457665573376332622656450453398298091125429449364995329239961676596919189731012367861247062697204953573886231034221322527325186627554386040160444373449726641785849345442855257550319959090657289745327614471129888599708333728879544684955186948674833883150262440901103039896845109518392778469185869195205289512731232700731880903093921038138566776230687456229949509420584304632916430788063530735846892423727568343086390740251790596896169172794666511890256600111078709010661381301458277838956179623083929426645450306391077673206068654120299880674477039134502908330437698903355160132534270306700750311642628843938811432398288897380485698225109278816728817807755380546719294302155562391386976863090610671710770534216891010565360911113566585028371523280506063099459024309333569797688168020577543192685516130371486059461937196377402259985019544095859588518552253861634724792360135096921552853889828890066325672950851901789408051311031088636404937190606554261621805871855274318149423952974490205121654929212587375524910975896210773736227827923420788516231778499070692750618450733707893754911259289950698915354168269261161668699344642358519485954794834927195028685551876921933768490146594987054301907325352321171715944820941777894195760778557283763493899181057816098460889188392235421210530387384040287364754129860886479946420099302174127061193169479553069423441540423582466248609532626190299718654727770728604409727094703676796518903926081960548909818349564988670237763093997615608673804871931665807936173273160178635365286140143114312719329125741266724178122037688207791724143913849087605231108229172395466883904357220300565569538694222121710976012755188953704171248419254796628848092293890171760340038631120456016198315413168103995024758535758309214151906723191070785296129894865093613823475618098637366816784135033545368269588146833969165904236126095020019541966652313361935632988250001552415081487550365778911747455708943601227725801802635729593658919796444321469220636429116946958381591983215968689943605701320730783671918711179934139030789358865656410391251824476423911727552656876398794571042162623532249451860284980505950391260155110751883822537832486308517013881811614499259982266764413017330800380613116992322801768602778538185472116851382549392612808114167166899511695657555883786412875973669489842802492014105023836328805920617259694202196467455141721732935245406605149281045226843704267314714056822066780208154856230269543500739522524694655738818680120135326231372572168018584292883066213604097242947361078806707259532711165891064449024791986218529484874948204838228871265969357777039693317464826698226603470315123846227972716160821174944438973117132044606436502770699502859541484145679791662537548421996767155392668503452298570164165186843840217738834603319513440691893575492164915430190026701456624417097672289320878752362868853570504250721094804349374498554431883241415942557880000635290365996773764975644283998840894746484572270792557307994304867089609801638393480191691283639946622279301722834272798955970857605828912865583563997978979745182572544156216828007540795410036090143376300127833392146774640592647670744474041713281527402041661488703497978496920453017116720254608788228091322355983390620232797660946266363855329933948396661375191309656542477853981975508410891731765701908805071963118059557197009251430213493061859065208846295974495555807696556037052050066368872388956559016384410980694463696352758331938362238560283982236296136053359198462180229539779167669276352693225606762168623588424927682365224457492730357122298006123394176904208710239625094603642133828932825777640065895527425902134497583105186029300330267137563364577228194854642732848647536780047246505831956385245077243072234600289470609153058636054262124665901295855421896685572914794720183910346466515434961878081268575714494327734634223113452928581414173302592518002220880720368861993413895488169199462501528316793985322298661572076464732516953282299064591920259384655837156725717526697816358054334500267880847714274779944645690524091683628761949808311466547205208659718935985221278499836113146094869264838229681593961579030181480654082987955966774932700069366403659232824999994547736797819931058735984820474009092223172261702171403249969744559081501670510056234406239205261352837515585125690126750732712203049754825748152688610637326374515345623133922836647393563437671343830936131409237287968675276753412728496191178400231888765880422190347756592772823187666619890327758741567767355283157717445576118010047174696922801512301543199092838121389265165223801289931236632240926672251634173014243293776909645869584159940987366435410983333532568532886142790325011899910988250697157128145723979940643074237814481545156687807058832131735590161535683820156292220169309573019567791972185816190617419475540293940316898493428813660475468652420886214479370827062548369861829935708636550058169849959643515349471639921396144621330948718158823950818855656499645481718554723380115307006989095952410027066348483376453895982908292601246095886624195990986380414790829526361545238540777286867148982310628272037179530309546822678339556182294552215195085709552419611890856670601178105173164817470107900815983099063903721936153188620216546964184643710932927564367007751617367559455846627118436833788540815686055666789917220542765801499852125896960809581586670106194398397427668534133591352807927436180581127115600855521513052845398174953324323407448711553595444337845965594329561612981630591669026999055685842452787085113402274757556373091804882264421853322265593001792371000812538008018817720937500058236220414729477324729746898902765784656565999398798344255552916106749200792140403587910953793364384026746139370426974775774946231134989608650195949187377901405018756604763001364662384985081258583438447053014218272257120593132663507360178775778417496017461391595028185460596447914634540816798427112090803238281424038478859144831271549815860811489657531209147407860164439196881725552931744374559667942662980503988733429533722850422219983309432467893481758732132277582699651344339971459164946441069608658173308869271271964185833498813122067820134599175696510839660259009418802964119995437052261187326935483198857514904522276031222186419785632371719437135038375513115834811068205837492375640365268904089870604534909093778785789657476755219592418220726554599772706356527244333334658917155082030136146918373515503845788765363702755717041706575509904886780433342478040726992388223122334658728063768220494298205398455542588921482954488136845663144685970317819473991047286018324515142426566495400288662428595207288290661471392250069210999638635992366322937639145117278287235545547144884042902855516074567742482221663666958545353785646822798035224178464589193295950283417567750290917379581008690396995621647470441754560531288014114765188702288047016573267919088114076780430428580195122702221807562786681914218115638896695091569683004287090596875109590420906238787349720173051750165662953864854513188445758636101480861455351877326607138521460039934670199013326283986526697340788662196502124636493510171259322798470779488101087525650161454539938275564944548141958402609981601729088822843527695378611597895144405777504153537473925209901068583063437584296719245879373731247565490563522147903919007222820474795635286392544445271799423839999871387015742294165110699991458465570617696031668626008026319569882568119443228166126419027162040283414177651294954505911355037344190895472270511854803600770693757925695409172541507752010363657889896290481680673428171804067052623599276084197134452841762719946134068033006659829598552285297047334384177369166328966773517209810645914947577019316905666521267478956029145426734807155659425378945140143598993110461254867836251215990691779856095098138929852689403178624280179834626819693709516572325033025060700008752080948707004478381680536107864448590825684292535439951626896180549356053002854094257315233903154526190864556095715075895673223508544942457929051434878551663226446841262698148453108798492686321404638417830313381192872054937923457451728727358500727354042750687433054735505457335539107637540238065083040476006348593801867932597755522859208596327133805720013843564328141461202453769645563871648389826486601702590968919828137393755561765601068301038729815987949891991394742917033971949958026186753676784602193728020697628947993874053420336115499150511011325127096064443163691244625251672787889202059629123486616824259693069610732893189494588106110240232749694696314675034822002926546188830806663935863710685658685642064862362768301533474829157153517786643237713675264840833152571560511863793862355768736177870223969291532111924229976052272240414553862827847307292637538215385789283036426560603520214090192415039189529170751108725395919871314597641202524464325821597864979063156892608983980522268993068739894091906644705163502845644326655301026967258069105724120140291036741803916185327978619564620916445141094044186245356821608613535482746435256843308538727764143214875570900424427570077767172954825753499411245918991088343359100496547337896441814804611599843729684831556352500052706721874171750093747110742509128237789781585970636162545676198777656451248429580944678542414039813768638099254889512731037074961452894273949269991639582318425253259862229217568363667297715101173651296603010459437895685914435744309939339867216727050903199298605493091159074307869488644643795243847581137827131122712423889103111699357232084170453444987447295469253888568903807036359299416934963619172858287222066072886833941507346987761523441930020906547858291248305189169892904584794171447380583566489567188239098802974469602516560311182180267729618880469516464786449900155380996840049844122301820587458705573834391397566110219974164055448607653514190323737759041898115777415498874273531393478854702935840559585029485275363558740569563473509204667079836407021764192961078996403096458358972077082726687533123671363686622910077614930382109642230991598636653201591365541512547406500743191867944715494841111117551832143134027231348081097217773260773387840396233848673842755880138286654683817023764247135172597764743978895551226437686539582927860467432630333189647362562109413611574350481061588195795062749907892404944300200274198061480625979460782153473395984982051528358940069055576493358969112106341208035956904823455735911022920058564049390894206722601851299136659552108138276050049987159753266176126824958296987298335225182646207297123266514253427776081922356475366737999242984655267625698501556520969706578205290182085172746917421327028568927636491393662722375495082275724805328636000859268041384669240053170865402363206803688261896692995250507923695539732569274551215272819430215792096924872353896737504283600364251567593402146703829615557407611904318137558728040018863393424290968882834060663794818952362686260992277773857917167098374124270234397142459505125883249750806353320642374795568383768167030351893590209081182120963672484274392603311460923634542803226881687155423313417133647413448791959910241275975978762762182164250505268348496487845882339399452847131437483609394968340038735617394477378303470342156598331289943933942602929379309360640232504782094524167818793557515900491539772893103211606939157643949458440162554228589802283742258394560990724983307378101551362408800140398624393691031531787431880644963179096074675594316302870066175303568305003976820825474558316006460773296765384327926466472998220781444465807045215294176039851386673947086136285255302670317636599381187017226837161401950030584052204176528000630110246822189181767353711174064145574754485117220897516115593672783631656163372635322175496285055143430732447322972798648790227531209219432824565566901506164250780612253910368298843235193542190769996851875129600929223206967763122934833083569506353070777816034870135703279227933312021720732763742292897914606372287832749413349394308690135424925792652018162950475907898876177886325687060823777292241796763918756238272543861555977444543648921700297259812675700294141561924936231120711077865158092798314892352453669777317798787165530376780882788278578618200940592560186598339732033642956347159336313316508785696476044250791006438152229412410065841282635959641978855254405080324699621350768657306593819223723672935802952571536031097367461874326342998873265663123725813537547047903419931689394827961572126932678598548723036715948316961044850829526085334078849362566217054523651489101888572284522816906368493594788198024311267635540002566116597832285778987401564979845327069925098087083356328426425851768132896360423430906894264934613141395064000483588156646136895658384618969252367207455784108763979041122237099365228940957511722486871986281511207798284210765429737311020073386882976356660580862835523096693253407300666983928969919278122038960753957402417645600544034419725170386144478453726386444456871867041250780912022161816742350366813644623912334125933993405449104007009288709398105011385754224207908512982269402357312285585100400233766988400345236190108746367354701880704221885728724366184955538069488064629231508574693498691473125617361995319020867039325280459494146950838653948950353572490156526703495432265174769130702914196590845647100506383647694911305595504675602797421939400306290565864043763965345678712779836704328997230151534329044364831859851124119929031305982841716202698436015838161002226614964646609612875505829376427020163890112845335619207699576847988462525569268183740775478274169872533626427062185804598261702994604454639337996999730815080787078949239517073121479008083293508686006938214926308646820370715056598162691409541734265996309340484376608075091663026691910417621546323706478009884122257915924074760780468785608890013790491314425675551817153432702509503220569100630869275503174524462619724396603683920349909982375910850067630794604289311599160235271135673579318618575939940250848375301557523760169537073933058068509325866622394825525359201274375184295470475575015494109669176044598312568374391202298418881229331272587069956728838053969023003439965222738526812839589114629636046516637071106138278855104072916422748675277126194673055840512896752256613203675484766818892001138780368880716998542028312822964167226082900488500994674947647754638898255536619178400635432509902548413116616871519001528921493514489172838796581368816638003737431891778024721467365843751229885943953431098319439630957967471923905074331001283212401013770176289466723523555135885594318307638121521960086429231569069675090043584269664712555665889997207011096713843597259389163289689896435885193671073734367982356624239562349810995356613123377643470454641381247862467371995814484120007977697912026289946526369790189535390777757506648438309783331138572736286026836594103374767025327188256442698897902054717376561378707243554669209694761854501075212856511739368971991819215391376066362635377104887986550821969238880395150475500345818010055865581069458771942761338231603805858342754816579419540779713946936617061191069726585803922257822431713816933314826500932163337091134072545431220853213329719421588303126477669060223350631650679481137298909048010962158689557794344318727615647212490535075507623447070147418473530037607452234636172488671196552855752261063146759359679065944159435638057630825055980873740222029844929228680794385077242283552951134784853941257443997508110041776306057236589615743578153288995416519957647091234532519460146938296445328196392184142604721987162700335530580323221262658841987652757321362417927456735470745082117021618881288638605946786659178351480386738030526108826947142774842895757509012037786518887456044568533303180958627077864892152550194114540455988189623926089880512516929016778215479875771045706939565837058815221736412869068151289477771785235100596480213536690625294007182433550803833745859074557986270827286489968563818064729863904097166199266852078564537708683863656555186249090864315296898792769068280396077706023241684666236592862273826039808892733634380319300694303615660077920311488030980860760751358190344038147290764560625192541117013877774410324074718777920260750738827911042707364408931797520220545286440501551176777219951905469124034214324388709289681174833448092208198488704748997970075826569000774149359921567957085590748509970144070737338282086022897862879001467816309444997057240462057141286134521516103534502014701833870816141140718747335753896577435675602445820770095337928550304432194328831531651898299711444036842938412479648250401193329391490439237900039271908637381611280721478257372972915925923485791421715197498218363259100556065344216332670723597911735964342667604369525369069577325042960591024296335280132013239548857754761364104527201043283121738961240718720866489565930694286226789255484344602393670465660784852792111475192224673007394017382848454497244431895941501732787093508512855217002444053818556807626084959063634515062551806138198846075625021062034062970023805841218934896229380908706747814564713404509401887350379731807876994524769675913610468653844337322867988546358281345933446385910881060631646224033089323693826120257112996778402136230222670747201403797512016416900417281216292161364856910040641636080652760946553800752936253312665589709185588563535042040399476170491618966783127029712987951672928193852466809752626892014593422991282895235108791456282964256331776970196520571732346335756862615025744323397727876467625998443075957184347617372710186321221139486336619191141006477216421707756009123058239653303437088519147268983272241806677087656369959395052292024972924379990120911791793333619411971729624688592829027072702969411936965567758018744856471685763234958549937025237284389453382920298316380092892882291163027409802492983164316211828252708231124289754338536164343088758503379162420505053631248082635318550906053966100093777516034799754486496783095052936218428785986106094440731121172962436937435551623906402808379742530554704218031783954279287937573557207696758326381508088697509864764730999134956110073475265868200808410013465032529770634058019559767220898700218146460748394745340127055409081886722487268775454923137213500041764574218405435359170611260075617434088711783902612457218689916543715931830711496301590681701281321460185674025597619075473087589175544199501106976430489650970786469343757275763422247122118926073210927679678304988253678478330081060612889465129470524008260208676184916468683939376810754039787675853346537377791785073542698628412584395605279513716749218471902553624338750460051197752253604271602562536128695390853342318309436018379199005516545646697539333237562096765137363336261265181454339245915883697619148010520237377154941371511433465325147153291056485704435272113744652681234729784495734499275132484012607665619715817891058800477140562243300104767055992387223187075322886569057248841361980322013615989929485368393276431533159893813250376193532474821321743373212038175037042493002180262084571131243999412888761850910588169635568067441858301766232389145520247798879763378757209422263953367270378521630219318712937262368694894610218216305473743835649514273948530189706388380229149661949172907622901763057193564591247131339518014548558032952298708628608257077972022739486341872359389974521805404050704116826171688094324128539572330410980626949224567029050101540777697897489942390128348055119512744295918654025254575504032598635103941674495909945520886962397032158899076859796354658945121166146376509357385792095429100064431120165144340554422135753479906076025644241179775998611959934843497753455717468723648107070907751470235259262130623614370644260598937476318110379963570324281434703994522056796843771555065592136732282807397524171733723651697765966408358624479037380869470647233494896039500294221730499692836833881176549627803309641110060768961371630865195629044478169963261775928743842954164169279634821636267514427191357910216141648608058049787154669427899959917457239941500136565532743032362736879369374520991795579020418627156175783737677464542663410672177864559545435139551226158774699386153405779385962241517238423361156828936957177572655371674940134892288980002861408416973109049200768736524643642079707332737619015635429201521325498131408734633045033742215171741071779549549768161843700066742143888665526974414623308897856911225347886029736255135048381636548064537719349030412539170708105138881016380242834663089826858934957849060859146066692271081363199121153300479494940580837936985725975202395350994732539056973255581163588702715071413300433605747912499756709784305192151243313368255614956469223821227941912720785434368842756491063250922082885325129373038983252604820781958366360384450482763158320535926185166697244346661003340414259583535073459633471849275676147112886832781049204883848772744044467050464813766875138420630276640089066996980085208475039223705024738593666928412855942875333144047097443556367366626239037420991615697519284241205904279225475758245057523883529958487171142943091551097994658351175277304065521787952205505491444185443397264512127137224689575435956145364747266947794190302095984787433015867151203662085722611484193274209237521342505836512617041484947872747718178653748606959185398118890031426698612536758623668660885270467634775228117187722960357706067990070023412014246511740894088629968033466582488531511123049931064102112327553368861364792100729677027626970290541587426286255298811205964524723671842497985731895391013195338366112480995389973756342607277986556750127986950709707545906231950208149960901900586171953335848257550846006553720188536371214376098151435860018258400439510468545714557121324866812444498822495095729517207829196727413418140860843059133756845507220262660640397901921867014236315137601955243664857721742078227578473741704641102085102651227815958036290304011014627233143761994504019657637749514483492554769756092916236109294492916774578380246125367465718369095225226151029512963859568500307772479492767457051808428119209496296201141425350322190082210764985705468862668714104179838249757490140176945988341432269960622453838653946467644887273098461852938483680406016713801350573368857334306048516382429129366390696408104472123626827199878388946551893419458954138194436078141859543618534314783221449463116209424483221085761443091301877150399372056146514606657302931219128418965275622676973469155841264015198056714890890342327883748979352942245799508012984862735676911505508967850998465445436198934199525944727842507222705165191314685452141467616034784608314396652693968904284991481078832768777492041870776560771433567202960619905489945288494635510225774546556119328692388571987511503033985874949153012598249907692125013832016302025833578544231743855425888325029928628301889219924194133265764656496124377063229673817008009743525333953001347514811061791101926017010979641455272547245000670827577820756891185187014231488594623934245396970639887888499362385788123567939219129864477444070990594216194780085237857287239337136167629876733441450944260900570806900064133334839842625360297409815769551359145876459128839818572110841465771949754525747512334041922301547429200280278700875755377544322543478382623390805200349494592100738776848024055779735704181522575262705343001930493684597652835514276035670199443048653739650250961848423696316077802241951517495684626575811391035491099116885877663419908056933128282087549473679083842306651891617840783099154937856973481540606388078229336976532222599807624476127763864045174369045525949040642229137526492756724638822933440948009724023244073952699058180479995374155628687011553396633787625061112352607280884674525102346231158377465681114632744262097800823252528463546094419727311234648957390923219472496647312792680930952828969342539070670300328633767061405157256593491967154404740506397918830862805708962723702129684969841740837099270991343820309647326374470953146068629792243012410975425932643390968901347974482860899817730816074210762372567857105631355339069473668370321840109460031189117630190204850760170731442802255627108098515381830762326192669527002587234828329022583565621022411045589486416263848048376819678671138993969385949886210819738739856492049759321786097588250460110634821003039559136775825873945379289895574989367639375747446576693186055409915721743865670875906975343804474899518019282329852253197316703750178973486370674718236547000303030492573707530983821529755187684267297049040237770960450254736097083770369971191565044282053651777773994744311330599609750295573754666295883135489598785827524550806365006433079083247715186390707265234018150614291946138394392091342272899097579082306900311481525574650068806506001318079776266716151367801626002497273365784887097879354534428757945453041338496540577550747246688955414530263384930398890473380960506782239463360102766423472547458268670547417132954892142426591239377762437179440385411566586648867220976564111592878092393497303941129992268213807553716743704058640119229890687306995754192616412787050733140928737095329282812446784165738339914541223564044434273299933099190091643731168897475418242316816915845357173248156357627078746251922080171462898847397063371919034958997469009258862779148103051529439529127878066195449806907869639581016247297249990926045792825730138949500717640482162354597930317031112672355041741451995741687119698662089544114125051357364071231776248167398434637280173356010687502519183478312931116014105076329578546548398697922275165231036636363107516750688411697742719341220464893773501447086575970217516900146090018810851573416022640849280598970841306316009562363427750125430705219195570147906104881843604745652066468284877071316425722175617361359553831359448241517804347904893762773555440175564936457077361267381455540365556164635837780050234466913727749540809718022826429567944243905679228536636054590433923333759608182327852805273139413096887759322293528522532346389640743654189069485258606265161153546844515513888110889787928743814709380376565897373375938515219237129967611528384827222783552377180620292603952081176161834330936644425878740151350454386078661276039189160500532734595763670695105531269449181098158638632142184472661548979888019820459098804686264456641595742381384283950676775201573258887686716732259875101923818800216340811365586960034561673249551502423354210536270028747579916992127485429412667112705195993817052078072214109106336000247452428615367652007145525313141537273665166540766742837046548584441618257402120153101896639421848378735704945003902204234116482935682251453935218386583370729328988338254943778886611346980321340119399672011752223645099788700839351396499880247213597199240137995023693860415683000021618629556667081230811868782310299802518141625531383776810650614863330553264182916615227695956132274855477661027647110078450323631700478555908405891418042560060080063923142301874815012951014455233134445285609427516389972755685165234181444276223673791551163759820484485656082028114869879579121993860402124177356831842886054808771321547102350643799137387429846635971563511990281599430947894999319497614769968902990605971197282477648335110139723115849620168329871842649005939086029730329469989741971812067847813056459616935345427357413823424496899474130627396770699148461837000197362955862446254346164934805880104583932700335308922907637769493938490056578379258749906201346499238474051425741995046600616434817203667178806399835727257503002894876373865306414253978341272466964347257324282221361869983028365372798742297150964672887989508594101913387090622737622507271662604888109526508582610322309160190392343844985886434305345306849338404780471845938598199054186467651184240566338890801185053722641169670526359502759523904467430861593443355659549328878714760929043590288755725434557786014381714850587776960655287860153883833838493673696241381284563080161715866492411342240397153843469699032054852299170967223894159653948777463266507661981057265984792031742083961625779566030658637253726770656951154061183633671996797330806532573023253661813528013046351918133858333029651555983056126482422838775744678182160402073318172218645368193007365209924608306586469572356582012615379370352067745654132230042154211272111557469120661271395553125528877987750463948960149615506689335174190725191272211505401894319888027803881477245002756418492776000087836195904089239466404515278648200003426375501209396489941185445118452902042564431915003379714519319536518604379725993243507854293439406800863238774813865516767275531076151830690181118743267721760512586878568911042086470081720826678247193831680718257177578745014838319565273891626054035105948945595962881064499306905140603354426315248750519036330780145562481642646472336732190264661851924334603607272731842292216246962473527579849463150722485279380586418342491019714945538125169224791015348419739924924588495759527725180457189332658491302247589843680872886676713809927746974326326491912079379659154966465499100208131303052088953522556617629337354341864821274550456474013545309477228506747971227758629993822566953255244842250089397171379184830349941237101258988775152663854526642841314444043907834769906773819584976293076442331484739228867305538454721850117834024243016972598089748222013306079456197115772541427754442446197181398073554116727330103445546819007730499394406438947858543828490291638019179136477442100199802904816072292555111432471320158138601388199413010532574069492341377203930810507330611953448408897762497724790737780993478166270483005784603386951920689569573427220627868832951056113664397860836150812289238349193320672374059461932892011831986354262896387230211303983290962221720565888824244344650939352878179760399299460286011085735807130980522280034212906441258502123657247018896001057418528870617613285178698876403494793629885039168846684711943895555677993575781567445789469291905712231748986212567951805007141481319060808068892970422274760170730562173793767188267293317457542144201642096623571558446565332173723782765629260071095623110081586618774705876138981669127790419555606441294964160972418223493168758189681906578782950865291111941094204275840733818903120966819674543341161539693668888062348847467244841587295126278603798266110152588394974946565097000617845713874400622726317327804391043558419884601913067367959950653660933917738362173116096397151993672785074374840857630811651856573998673605856618657237849854764140368219771515340639331060470120897583845883171597636185328062471718888193224837217566650299322345474441051933865895840551519549808729669389561343463132509458157115592148678266893149217120533414921819662500780142833190056904557012277254698368584091453601657308515574185825671428928826022415631331103506875043652902107707238672910463397444859077394289461675525345867829355627298248836376772352530419113182032223749400425595864512561337144803983011047797905575694054236839476759514296921696993256261069902459573950813368755894967203333453520697645371272004067968656942384404110549640870319194391831704988421808263695987477678422290457911279929488779246407732398760820336613105025919050240126053447912070601268613660870506901068214401864168907985027088059711607747113828006336846990376537827723268577073453959938053869463424260803720693123272690847630131413540521044576329930012864919879874862927037656609703305494699822865829412881569380960431647661044264477371768430791367390545177508900393523199835562053680273887879404528226711854291671834317059005905863386767111291227360912331507134231205830546227239649616699043623782471957626197447122974449882456471410439792731791036215549247759728054593144106942274549421912823785049884779436283196357445907044746000617855615025964861945355332271187461886912934667998376960231103040671632702119059067996647434401664460111584399202253711180220770443047628228511213971563766692818164519716767476788127226581993283160294062569529216832838892809295858982177552572361970736667014461763963181678274789420308228333135361733055098492412385317195843843616701581129339511863356560528739127585950324133119668608652092411671054325983780858588059728241958667993051592683203414911121779732535120944630157918523646430703345319385979289537764861939586542021169972804438894094383837141044645552668549721679920589792176540903078296085934284702058367313221766844932331050860186520418091721640133943470749386241271886462621400794695814690175380139117599655186087705311259193301710897379811087391740934639464491212513703578836693923668612876395931096791748539547948115418489833181684334442190149655206340092305342767711784356006302046377694030122439486190739179535458991491247066676699502049786038462232339807931187021835003699657314264673465903541376960860105366386265547350959443392010439866140423895375917341709662915359815019042834332080521709906038091639866155833836834708059086068741498077318033166845449544624969700880855769898620068963350252754413840309333678631460603697212742710433672209401941346123451869927704158733983122811911227706085244015434917994185304839942858210245667502575415040795382446834931573168621511642171972048629231479174671677093159649863259936118749515731184914926382558543405584937064440350558813428270000815317950034687295570222788303738537195001360786045148770472213942080498214981562732655612903806040863278889866710515189084529357607546996898325438214781370438879213391070009477780226006118410211159014468940796065432018860670480770253733980623986970484274148633067772597292572422245600482811976841223855417853059402442370661840735201401061787240578938971260230275007210576703262345771769670319591465215891559009163849967430850235301205081430324207587216874943068487340177454584329735197933073635747510717974331373617174340466955398958340131360718823404934385773453906535113411095037389529439229691227932066725448690525876448927478452298221294521805703241649786678212559551457632396009295326020626080017511521158280271354973307750650628538560165302297881409401408418428653586930127010919633298464557069984886727717374768432126948976791614118702336292529858331902694742519365711542994891764248827250244666181331756390749541979777486557577218016128327094454302757942493757890278166820774632419860485855519196623453546481012444872663993545996607388600952382398618311501786986801379696272066004031159569210910175877652793658010653637237999340011915926893407262363649487842854436394271237191681734282068439123879825595278959164033933825895386131810224785876202574489219491426547462045274286332860595722682880345493704436506963049885175843863745359005074950118841406226147228712915588085274813963295173689023121645840433660619508890357718189307819312171232033914499597258462955209381452788079783054625101274471519064100615042437628135601761858421772876054381390954332189257228056044904464412694796036560756970517434410219490339783831003795608881707528202897333497532774436223125029055125901337067138208813361644607232807289214418010216389488604731636081752397448960880839763030941455279057758943827376289433214322883414533163016780940581573864507064890779644046061716103110294996526642201178742191446317773721496104999922699820389713025729737835523265129041788671642598254406102202733463242014468389921052984379223678522828087832416681602904381325775346712533908462518133225562276808062034008341888903813868790703224495227580866058436349235836872235345652523400753418013412433403890486722503435607751620275068607194750468279279526537934609002254944125581136889033890201456323312167819490968388615436652572151906123569184332534712387556199262848647596197136029980016523017240734720441982327550925969018716962914711328920717666781233953872231679025670829526228633673538244149977812619949816989444179060750945219918285497821485420078192788963062980499916563066249306472261380161589607761989993062137813162113025796111789065204942963780369796204090045715678890567861736694838293282074978320941470924275677336540282795263162934617134806828515012526826190861401719193871211895290662731102520018409328185489039940538385378171953382581863266038390588383048272384787963314354281974032098771221144799648526321702714308055196801061192896028996953872755383777480510886680458084044026492634321892253126573118787283375184400803430396693261813884021609233367333622368735652056732963543921275793479302687490468413663743498470928578847480776544817462567798405540519162284022313341950736690171485375154241295038011276776729268555776811431222396536398978492286966830194721990536757326548211833732360186812745933573246143155588307088661573406733937279309411722682101406253041918456455901932765014668069364563180117997769050406644914842520184131633203358375342065643983480747609712749837654706087719453627140461567824072729874877653648593280804487663117960190390436107738549097236213953270020725288205088224387158433327549610727883909568655467374716740132721680403279976517532300881244066426969181866160056997573810686284552373068717083754144156151427699780869692068289186279402738051767750609062535600313916307945220307644183234680924519569978070190166199446776493125947485350483499227834927420114053962499355814668610245117889564046552810179324927308957205380039061107112768256988873214424611226434934376122905930708894142032321315543172232697090896774040246166370130385952331120318356520370339999294890019146156183455537721321798655543244968786573909013364059246873091648391570596383839661209609766002590132347097640428377628939310140800324803722279935422284574570835268737846921839785440079880855239267658062866247398891480163636398478089990121309747160127426973619633183300235679737548006772540884062932911571940670790003739311224183211872463265491875626645252116091625711812010109122501566470933997126944866709580570905183000215563352202240897117996710276240528272170920571380729530675812143806633868905982143456802933213925350896297588277304793774883185364302489630186448808125037450274914261827324756371305204826046627161806015766935146212720190705467769062690614787926641282448308431652833342177148827419320782571082056937292142774734079170953599634779629153424149403065962357916034895675309655279192879636735352240486942092227188549801566340475322975857976471619705006230676007564182129503969984143566879680323686664111850913767765415171103481921386125576393970415202652231397946892793492212512097537706215054601938508467702149760040680680370630454731240506620978423622246759050316006875773410333039888970763774134672156921878129771749304121464097339887786048175154167664104094008661145586989390442794771671986608408036317956030116095798665112301646931793889147870133783280468279537599952891420875388461531209903653580580589152847947584101429132449159625768953636144529264157267707800392151223791108365617087664055187554980018970059739566845415677594059232292871592696748437513387155801104179363877681608238129471533486919114937592581414607647272351415417597475652375930017737851310130658078083302187853170897539998607766539826080238862702485656340414980938644094032532218391685589123834507189035339163420835567060911284616706375423722866837112434996635344496277833794160435059865228161971904814907352025701682522589815446159871132694038433920849938406669020975565695261335044387097594728197658612420071363253319172974320582738841524170410592929604558637316098961530948076499870437014862842629241305470339776017081269212337305823827220461093261249188566526411456341055510592006418800216093296675618770051156325943519658159502228399106770910983437887084261405171688901079186901276542343518945877971591588083871751067519347036430720528978418295854895093381872699989660507640719516478589195083100779110107453508541749363429000343844424497316160899269927070825657117333684758748651567227187092942787247264530158741717036145073765810689721010235216500430676728307475988663755475038960913049247974053400042751071455465091510161102407028972251354228752760264938081467286964875899167720387202980112819741193742334090210412589600466777342867588601461472970251559291234804139986517635245911802453123697508460476515919028762613259896689189042556929180368249234946465666224923553352866118667898348274132048543997132785774220819733895402877700446742368413675982879193148371502186439247518622121832095077412276452153181025333655238004169469807335778765132060482594204504932308409189408063335431452930721440662546992733632907709651500388338603942024385592244882812556114599054038178301714690772068199979209078027706234396250689964476554856621562802123930142944238258418842227234980980673048372518951947627763643746805389640541407036126876544115173066781903571583252976764572975676681239634316455970871115157670164278135805066898065371039866220174909709657409610687564793896401226107223880613791502107211952531626332659044730500927450638523098312618337871923712185788755964055926346769319673507910834432004952163514829178032996833974678606492678317404779414213669629129623433198076360733326336787868540012252502439084065501473084146390408161010760133318257298733635334819071951527663616982512415618127388373377450685697707965456137612033400310011009113910008924870744808152225420273410857926159516046458820155155639436169197634722048216528725745076562404874984985158818582738264537504397773796547279158422754470624660322609310775198394890739399843078339626458442527071348870573809173920908433964700100557910729047533110484254194471368161341461861315899566375659407905593655291512719433346079874606854648086607603770035511988184971263147522649434893086398781182302474733471089194109635114216903775664961564950834240395213166335563959536775061261414721033361877881157931048431060525415314804381990570957943085835237786357381341369624872926989712860894289622550454441085320895363640559374808995245413402144430608366905970970515662437174424721783152313455022806504066913253818320247789522333346967937333796292127457606133896372549645211420139264638923603429840273430851226071044194097997515719942604369906312952199028011758109477206882434045557708578567982725951018759963245927642817848368081555785273626407515364272244500501691817410301625137835560319775775033387947203621566312142463180218472312962488956634138360978448418957535420772926249227020039966575595429667941102104826515046381768702480340483274857497408974850271307919998810323775603777962276131068404555610178278753902668792415289473080631027030613933580133820720449550791625560058513947474021022257267437449319969439534988214493007382809924086605020034925922582606040528599242312374811625566865988298561454425176696291505838917893809701006776268846272751394148462271837085958173333567196188065237770334661110460267504504309629522783690910305817380961877017810228242643173408707655445253285834579931600153904990857281283075604627341508431364342804950119370531540942005246831321259279076801311818373084014481394802832443642180569320086488449677724785365774568499611099048231431999714172228410950254278455465759530353384580260000987801157002766680628242982522066281952244504917218353081877455637837891927154187835112604092227235515856157789673876062091088501359420889740294826139026491212037981815948116533337323086707779188890691245639257606393555820093522866416224463513727870618089352135633999355399217593308815568972962846816711424005717702136513532063546814057450974284978429354327205767531665021135970579208836435918127521223382483664413732098991027671005601282371767379098453386721975761743598046282869316659107069506760668122121267075715326739423639631154483544629511634676775824036523025068681426274152040478932659333363910100999585330983022795011951530358631802690814955899142677220319150187314481694483962560587265559123780479958511904352381529540589694718082768912545231506987045745598497839748667642922248903553765044738075926046036970396187741974888144835319803790963814313273398868524383831666417832117068154977953827245794065730008045840438836005051644056809539124150047489123358897655712525423498263165001868535820527615214984081681551762428483771071658777851447396429539294102883741979010914078884126808671898417430492539080703475392045340318132366824377772980266330114272102761045550228546972384258054323582597510773036010937675875015171410473278185917863224182823412650335640578401203673531286074731797206923781217858245042232245650919113660178990661940166951074863246062216760538395368891382123122459719929271241135690432819228388008475287459812010275716347131039593222925885629054024716624978401327569178158696384528631993067033746891006404105174494965500193772486880875805553983699105776144020460857098528871499391380325607360031401679025101803111065729928805768817831258648970750197484689762075708462671884663536659462294461873694131874753255944101440480169831771841377085368855074691389565837043439814831418049259774583638846494662464055088275929610766844079248697034484759447352452108544536949022717381108919851457490496755549458366833488264215356602870360943465960603548232622820808691082148044687456517020314207416963357309251326008261819266692715744864633772194730882872054811675904210028802458580257930789500757553127753951686757939696251525119336436016479289693627042431071392274170962657534282166295260367279274707532041630826484275906439559026316771190185232417703671281784819046647373113014962047474941564719238893124661735611111699223877286628848597376055355225441322401526084563153729732229095327028844067102160016169508423632744241953605541039558159466794945615067286713726780061389792267568413758708137610705477629258839449371922533257411547659579683638001919308775814091963862012972898081519466820712190777756204177806410094479811684834069651620771325628126363157043448039365580009776118620763244767694114929801817256988701600533425923306776417918795130933736926042959063634930342724222595015098145659787625556628759955928915845713527579983613748425767183427680426688675680735367751399049853203257464274799343043808476644166897015794081075290893214236203053523642382230052529792483081798826098994656260946335745561971515855490751246697795218663338423103805469860707885500064811734299596257857024466076150820672395668856070595594244702470845302908396835336221427348555406074686713811971834606422830541470325558411502452160173838761181681395203154731942608748810044299721997306661960639201492961280983166548948665220669505742088450012976881161660273870787394505121524222084287088339461826096172069269002242984071274752128215640494189969822499450859549928967733616595133309884159277072423966414178025377436609760793130853438214116330042999677685078415457272386084388723918178950636970173573829867774533005613122718510375326500358782335546746171154001999040022465108119309602716245509241549677536893994468999152440071270155449935087264401409690093365650399010129851150140381759278100922173662004587001578245738093716623045462278043017924125130627133502844526157942827528064949839246291377190582775901146155786302858600823112761457365439377094626767473511267625339526175034716242872664060325847638888677452416385008944081240512140977472788307721047091174115965428589856018823232348789770675925356553923818115746180394475398762560118419526980759183866848043936048723754570303676097371127697379235490838193152022302825202713398174810771597565983887438959234570847469746960648358945287579383306287214592644206510468440071755290460885392026877251274283222683662400757227564014707493750755390935214065681907802156642128864518796941964283579459522195031653864776602622587134900336423466192123280372241680603932002744828079960620142724035561305274885732118416101805797911696603981313878498108704531467791327946544011699466478814681105828580045256868014250431562158172708241004431990186147904488687587074015911713042507719738766520383159180471232460558739080712729028555302005009080333534308023826411962521279380497969898017345485822648992875709364560258568529018361805909641861512225147898714317416583431376651971650117053448047749142618881428921555899748879889628705136289432038563467622261263650896334843018195393911549786147079199135919451796758013270043561013157355656955841539592256212884228130780188854265746331355419937577916938861289539483111753814821969180627556040693637733252361306323944584679998796018497799612052631966717141564611244821974099164850888713775050340208513168891629074801333216944128715044466157419906026183851183069528557885904707488926385064052122765303669157659741995003955930178677645299016447624962107041711693656108325101814810890799464352449144437880450995696321354619329045734185470667877519037751036493084961876172348922203631985961085598153910019032174258179137434721333675559961897295365166789640296304589344659584160465962443423959982558596076341617367856732416581553258926078701980858625950952916277646142643016152109137916949947877745609128180275071264216570487370712376206207779016899647251894047657977405212345309422863163439502747965123644933157892556149438804163759472534274950549699365892661046818607456712937233079397912504327360169267951187285969783082132713069167564885673536099550621898631084143310941271391404075063276872106104554427860243124933904106133214066404696491487547893742245608382995941801548856012870104774322053820442580442558904452168826711520078970384939549122616386677584308393171110953639400774579915343861574679934421005118963023060998726823861780440655172109003808742023172870862629315598352114206775250340412775879794881425729061831606554816134825067055173246488452235569842527928117427958718169151517066831086220165800123413029289936248683099323481112786169751805859849710959248019431643541356924856685329917009865609281469892056563917751149028459410788371755009665649380682319389990135318365564895935072898213124665771923348957343675399503766835842897611328814871182212294710373045762522336780159923403382959506825681219895512362531677089909287636443888235919641666025819525134537715835734751767638056097128731390443270575057829470281635867229088456814056326193635453689268380009718140287047720875001761485587322260361967363547400653579186321690409699260996798761551690871519991464459126631802574262702901699906858490474209077188324408713949561748002972651576796513657580465426689652510933074240273558858594302646458403625987549459396239209877897211887555474234801911779967379691361686412671899373650691870538186218915899147590931551015329792311062419418723223393517459677957930489266400258301535028399613862191660730898085382281154731621124996393184451164828542648790342921140736855859093806036176359733797974643893206791471005884190627326356933813512488247493209526411367957773658507456742898254516126109941993605925589585230003264227929696984548389200174208489853881956597415763992442850737891500643879773644951240008272021610949138848552667131446612842588117387107702007670815721883043910934837929712522079880791256685142912789109351132098328666472509211608621900083042701578489883407524086296351207892362975700829415156306287873069471650623771815607073725922758280704331786963262610230267542122057339527862132801297705556062858837167098442703724367499909891281910024531292011623688267355708891341035999312377829435045102282536885072119500490412814636006515937784757033344675417585669173402244368784730298288637236817972798056614821636284340348289116797638215777866936216053862558486160627850828415905904134038569450943200580041716545377886795647971972489964432940360409969917975535372158350994518351774124258169745520984055695433685192047297006411836933888804752371329426292517246533885357926158624566607804449898596818134405375164915721826536281402650129009078724257658073557837649657895854440553798496547872553714722762992090064308939466902439554696874498557064269110812638951028736458713847290236860496490747587825465794094388192672373126997173897976763793182441948754350032492723989914611142022213070241728794948045431817084871888403960689385990356276705961345391497777341064208213717052825203104376932178460275894024451979151099788026663105194720298049289903178764926025720921679137178590140209708930815664723264705220426059653568602129597144743441190075359181108785088900866093191450636585923468482617195589582020297354227627555729631309891897447228954580761243914796057928683302068886322888836035723131958283055075781577856462910844945741252472545943053128839967295727358193606958004301890072377426591193236147036076963431826945185775245124410349636276855127924355573460135919105089463047304731332914221863063911330281497258704061737134250557368723108695186533934726505063924402958631731580426333329928504832129863528832456776412018699640635489699390869135095146879296226179645544527917263538782149811190301115827178474506926181875768999495215718014789337202494435291476122007311430887754443373367514172001690445261688332537189215114089946238403196452569729647205030790495218735477313582768766731384166800840113187144401400075477661414283412441687330513245584004128409581541474060980818889776692945861160794575020178047379866008136561930193674247713117362829922166370953886643299681006929279459808665638063716430937237374580570900056350525502916512072047311687959707426051049770616501859650552798786607530359672622095256576556406138519291476704355036517686732916281943984791396509367447076671941881608569238699926873250185820712306208710715193500683776909425902777951620749119684770744352903495253008768691339643851767376250244568582869063992703390948634036076799633201997159663013097695792151281922272344333139668741649297578846385035768790076535368707996045135384040408971329614044233639198987069147727620230138197030247352068537299233507399708859566111365759315624036918969463683396349342479360300170170990387716115739710258465060366533149350204472180232117671476565925641589439082785736665497068740429624731943886616758737560134496696556742826491641130056578427358713135954993269648659295376459643766623784802265845678245941974284659880516510525194723336253228208036099656012368801663828519022340806013090475445874033218040814925364748875742241247669275370133440830736934411277596006759525995843012982217823066464720576596359521818953603349261242187022025428116517629418674127935160270264316993833187960428161971088164274564358769497432310050062825360618309817591600530935761001955620109502804593751494278009207525757564157358028460388644738216029328894937191569243367744436091010810010083127921082339480744748719215693264608874690270127784799704176430428495915288159624090595043045494434549218942135135286272284407937403913239625012065250822684141056764834595374985441614935344881645686981791739009194139022592394217470317147584118067363330212702338743871579378316117604420940110273151566811702385744274095137378645406745776245871516170865536267653711772312164343045719947421721790190221034307155039134594867803726352482860979102477963537139058634998171391651704318640363015452639734201136390366983594198604047233299599713035822814485231603259974580621067527711846696121988623425083682324948803690813274101310802555803860052375356855215468601424652367946833701545657657286296848569490361036479737223077232578759381604046943378739807722971313091224618463663622471367765137369367740044856875630194903380661993809955221818994449235651706534806814147508116970480857563242065164650121778387371658043244465133605732975759393057218628680782741852765646442974559357142094529622453701815091442390477563259736775605838054474608680442422306713386454185665329610068702278456309849688305928537490597182679289206789645276359910680731371937809530577121811711289557439369149136992820899371545955814390184245871632369891662115731111315621598771158856231237869275780966122086917457176693697658094151756337695844943307490599216691122906720337388773697473641895841774110540069814141156636490003813016915240140956406971824326388485052480579555959639057774246524884456935633396826299204243574578718076977266139377899632667698092993010144401947989672874898826649998699456042797586015553265681315790117117448014287836008731570064492372243594660271946381000357936060569330602066234193059191084821204596463483179776857573488950804919331786426076853855565245438545255853793832395199431879000575645594997074884365184772261002236589741588078138180890953122323684021744721064827074502135936672763798350037793463289539960254510549289353167576155746681793974425792624529166024562216548167773095813505119607357948883722582458326769022643780390470593842634772040850289947020970624023494564756476990893425389625568975107671993951597692338906657591386101017781794933096581472503287050501078095341113747407807675024564757574701092041571840167860013912548904285641401688408169442514976597333371834974732509380701462710938004869472201190484434807643651659253353496421417405664422676445880755661647904539469559304362965317616425205763208615326518020047724117914504427435798372944654430720948431168364880977968563426599636283055271235545489256304316114509796856288596124382103187774603073871861648922324751753633458731703449354314231638381687491127954846533196563091625616992859569170398647822050500640075393065598689830027069810964264247703840226021131501130463608717935016709627557173132478942892981525316395411452453146384207960330567765656025397807424561602285833938025301901425300653672474958136813041846869438026312675892183926487537593078969992326616554990393558021448737929324850200769216252598447832872785455317682129579340720935284827385211416814486384949355746742507703128025846662769051922963410243663759831197991708688674305395931988988734851332131951741347984256381897560286672739739056021400926656583665519911460350250126836744827845430257403676709150801201296650079492301730290720972941089109069447974813158494155674646898480289895059562759197790570468087190275637140514307440047409960765125920055785016762293819272134889403168795245300461866235439879419194658560846918504857100781941075279198705611396727357333446280547941782241531867995184870004352336763770321154414426750657490148937517691228881685014693222053678379884923447233511248881467992345612755050942676817169427387672947711520070488642475720041293076573201350081483864209705788150630189884187264078193057288197364643129924741942949396611187595440050121024968256964387192234754388573390246300142466637015896997313312149295354519841472397190718799051245686068166343569728233473519901079155628438446357695058316052350081516644624377971498510826793617891247866830908944363807095561714483255822459014019752625947530313845100488231053430999702981637861248227373024564345458517064947554227740996520320967652872817350493100949012034110600224811819545389135259720296657471960979963676639739023050570211881875708358790945720787937179552408316968220822265040932446161858798259273055468247391137793798305691398619867454879015721624885818822342952186449453375832651721693284057062219599631015944917427797638734919423859075825077373956534976543953553933781169307484686930015079018926262475725588139433942069431009884592212388814192933489372525978671920142970342529140095990682235399467760020896467457765790448970732010545897618426917874677924525789373902088384107113367115707354243990509061031411582311399702784774774936777956507966366552688905539185184369702905088234074463019366637596000681100374525740714579284016092174841118854408058491840113685748504868069021384826841639900392389623036249359907115371145146862811755103536103752689852342585631930863837557813762131069627776586842923480997864583048610831317437908194434698430449825655822894475033875528297519223213761561568444489733049254698996311519107734533876296104858569049791595835830307545541946024681592023769751648000002393634135003886764513728320372686963584125205865985105164212917868678068383398007600714173486748380558601541179233736727154931546966627544666689702081786780588981099486652561872876530401226518196100247308549063925342618925742760367832711937484080626813959996726919085129830042247958815113183582428748214849281450677277402674780556351896410910269350925051301758684627257532173291964436232461033107461561526843778859633326654371233434929513161154992829449229924256605657102884010647811995829405092902294118666351863870288609610598106166259081312134623942907276104928987518688354460138134271527239492006003447097733246047578705909846135702707798267210148671168182287512533875032475514936170002736989921790324097982373628729225787377153908370787831890011506264645226731704305482906170895417123052634787275545081092096670369304128238203511642705940678969910509346134698781068482390550000929118170836668756388542729294863671948657613690764526422024776097856765328846811856788776250270564990408115372730774724059277246848649390544912010423966540228461548298669641042510084451900675140382923279028005996977320281294149694926929200580990433655156630147149931893928070520102256508611490426390836711777061655393032146903321716734066382057074159343600024635920055591957026923233025135577116754193360216420240219606650719186485335737003717324959703750509650555693503114167047026015931057303272295466250819584289972146242719304914543207448795404688538150231021440610556567851856063349029446320225905887293064749653231127603385168745194093389231365239769597872043442518698591386719477918021247133614905994971480135783811064828853399773508730640505444423570015423370133896588685962866483397563475759210873007500034183512179274019757666926224583058074978491993715357340149443528886512249935766092755943002277058759005090533247957913156788972287793812300681518182815721125665213256113923072625833179901872772190767565183863114710265444135790101716916123161823040328221297007382471996159905603684319281095100853824359918265808848284408903086167170540102150526419865355162350751754881509786467058557313423593596383591429322212793416464032123282421789191996706382703291705366067003503592907349299589891151437365906487336832990022404967141567875790587224008719315037706125043190660740633764353444908348669902393128969329639669938259698875057920694603602042684795229601342820764804290052144942428967894631945338923356515958118318719383287723513414088854611257045268837080301898667742577413948503836502899684476593188982102725999906600851136736704788398587549669108961944535845683813004638249416192538572923533515140326421533222095473344361038884150425140563469036821468460091642839163206180922220081076336641206536333733238582303100167018673401755714003453854496436440096990787133208215322604419290638840176936483684384969725844688251882674115326547351226413022117890166919762743700828972189915222849610751575924280132592960130010967412015525546355985192503254123974596171054622844265862057787414350184949386562630170327582613594523604601956514559099514405895023956772681280313957329687612539493609564178865311751129562797880269875941478467402878700769146697461753824538816170071349048362462985523933744102957604571335203225996083783949814977680477364686963374926498214981443413162723006264151767769975672347439606996832845892616492791758751159364977694306171994743416251679687391186693426024308610339947173458005168640423160212192866512404296763186058643278737530905428729781652559248030903036169142856796758482183606706244876401865922549200755403827607568641687584138914254444973939598339544243917186216120594201665153999417791390528874260432075949031413623630921371128941903189987838116775040824592746165593845924491602110765452268962732977714091342495023331728341008151417374754932219273681755903286713786745397468790318161473678245045594800205228820593620028055717480597385435157342172739930277791914124103750815947472154730427549655329004426409656501312039600129794098136757893857479445862687000880234779056656283839678040700334191029952090939612180569903041683872355593349763715161061990905101854088864062335374556232373029267427733659902514770575122758435628807570611274348271596019438485679691396143460408220741898506375051822912331141822635952347931976418682728706230542381446181727766455984583275788690031618925541925473866219342710014797467297361002437613612240644723726182731356494454571524339116295581294546010726737321938612136455877887166725407762126212213598824223972001608853934474964239229756743542092798869509191105865533796608134243892390181911088094446479704794909051180996457060352217727473983354760936047744339250746987063441813681445509327043758818019684625799481189501792424057523953816309080273886349841989499736164690407675057939928873636573605893041447166460384865787170135445532925322255538715206412410426488026216547276583426271083829641934952585552594971717453518361344231863000652290674919419730710478607095446784309720295909585108495652840620836887637535902559018155857900104528518402625439741514442497262170792454240469755931739637191608956569319814361099854614095543877731142537059354967393850202057372241949478500292854894299855323958913225256009556677230746361448558057069671010664698885388789479566834832151217194059661993505490764648657085673121233373515715525266557784773669253754016550768051404256822942909417083006083775154434564384021622032582617041949163429877042956343798865744488705654947701479962706811855840321399912961278647850656429191408394008174962519593937562845494975882524048880700044869014473880857888989960858102723699708218080538477238349879285722103430046873642733631898531856104165666462771902754607418657442220249164723657169913407979012611411990391032449465811773772808072037462073079193756242814707930394039059375822507249566364224724284321075686365550093979539386990938442087351697058779989935241735948707174402423804720634422544045040282324650365759958423641690521669896434408587045269686281885374090125996880676966502310979174700498533127136938862350795455320190797111059901721459897515419471248307499428623926003022316131016059599804271416756293682158240620770355222172868571154259734979898748545708095911713708073328414241141974261131153494342862733491925881893792630834687655829476763674460620253320415197990322461402639674938233854710214558542400087107695704401704599482138184221681063824143711265950979310652824199716746111635624499261819385027145715458312076075963882817985112638274186971352767055626290503198736833344047131185312749718645416385803787012167101854437075692877004688306233606855596641184434293183885709930423034314348930834241765612831109451338283462533785484886332972778751560952279353088316188111899194769803023027912061866117747472226677486465893698423664705971444198801136421245723272038563546278490991650729922587727760704357522959484785881993689465672020825762026722951252024720178126769903743009700908957543579886651487470810206023201570712079802311201810204170998805685745848380974482198164276907793114785841681849744417316479804865115415335585291601642382976591384946072639428617907559351881325958580963527388124739831715612316825230454386331178721687779147706482209859191034731185982333964251679649095965404337748584254491800752995759512889212640192153144216895462344466026466381740163770519541774738810015307503374684780039254087085953015165177810234747292494791634407646972069811929951252279534999610512975445064247087784521826924258128680388023418435180442659219803752460870267396375145847202999900973506529654412841658268709473073330030538794871613772159740568070983268052944130978490400917949773031692296920657216134047466895752023567771811005014402035790439298165692645151327985585265393099989359423113462016289403967940278535469842884210461372070189082686875323981346694705819228257418036688446317267713266268385389505926433567232602533271753528722050182217877754456823228954161281193032035732488541266785543654270317561543933045926672856015467882611436514014664848546446778904988932300610467548407513218753867057072214340782747720232552328621368386959914230381793400661401083356232217978504743417161359883252367150159120409423667957092083129078256306824349675147916668401016602473932608785384647734472490288569029840737107487945001068877427944486833871029376155439921679631541689595894742222581268328804613646794766869468877281837858192791875381618329482674685030851343204043364008401668871376323132789535326581625696364843732597992981104069748404973477703275450245126254083060867231912517922754119572275710238248071429776059527330582927558067438092511973468006820931949420569007048902744592607327469547597269768572312182357828641273654945027156318479161039829706989099876555063019601493402494155491864403234026911125848832476349277824606034626568382551922214362309485141891875238672735525930274399412678538927989654199117635756110442436107227994094243499443988690490837073375187352454765724546038393162132086080314375061934929181135852753764235360180047997336975559391369597619880996581511129802105800173454484576539147321939588864611719433120553622610891928300397370353529408527534865764357634006115408913322518183628088187910132169249494486016765362667139737627609251389910625067113180693364199608867134159634897162019125478121591328104222522374572624313233223579088028511132862396420930560857049368202728082607786617818849693767887619857690339735262551430430951494095933534350444150683461199834949261113975673269939547539221724712920910045539053167938224362334838794279388608457128535830237021141026666409572178486585803638828600149865262858385897745312777464573976253848489382830723197571309251014227288838941925587929944012731527320179580237022806126948834521914057867780993878006352875476817547312262811618242221110753111574101774158718117348039375296842076774438710972023979898960389724075092719031954504952594177370831187872477875732663973559554005914563791716193932243741707278158676299504760007491295652980544831906285195227020124537618539003449838681389774089383373715093195496413906921246495535999257741540829464523453338937492312033704517775918638515167538339870538666503445462463500166622344546127544472375867738432367300482641658800636112981023921828223954453682255389931603604575667490500921139208674857330604057499294249997354775887290629205056399653103343375537948461475280524608718128928673989356529571482344494349673254064626191519367991390489736728797448426144532303623129329505377572853801535415074432005288708417634797968044684635108897842220845743824646583623214489387578192340025259025496376979644907126334956498363018166544086771106559263327062821705737682321255627976233304107375546064076559624196712458542445925387387650277102800908273020450950161355518475554804835313781009642286557702727271230239677171755832190197545279072544766287054521265091075709060085350440411119395597123561058699116319765086687470421550839725074826089917448433745313370483881327468452671128156962311176870144361279694386100093000020208012711901788606699373878633060046024476457636206834253343867290771103523751874775306773161773773945098471492028288776234502767272611656204406740727369618151868565579990895361221692813193955797896336199341847242307346282294714721206792164741086411458503055670824268906805153985104177012313854366747429462791109435984822171635498207980533205711021327572212858658937573635033762843446126169552794758783796194684143081115420675044312005667594031452364308954907312221691251164148601288893031890733089538180118874758693217507680923034697207895261751625412521765782648329246404830428731892528259965017422042481972682607551383651744816770156881100620722895676023994068642198387966961428934137920475445634217306215725148682687326645727480761079827671615181482003159008622348302522815154876761877797984513315030363251758019033783968121309276673654844330429867569498714859202834273488888264330568217728254855559364899082801073521919771634623431493816559890668556954335352485394587976964895632809354311705233588646092652421867187317643568805860348917521143412091617212182570110202371825346658540904973681940726385273404301239774129100084656627923353434790430765258628424604212113894763495698378352964655642830041542010443617995614775662395978340479042592329748792293073045109246627731819199450749221677378486249182611763882854968467822854768884117574492668572483961213165073281673546797760709998116053390335168057080852481421476738499260727927153841318489966826753368636256973193553984493984971349101124796949732105080151244267458244943921112430542450757537271996694279352262481855558083445534721429733531704846853614478028658036326363165686126685707436405030857516530327543079993692683881004970409672829277529062396429702942497468681391261999200262217293881615272871782668081731551301903642708851475494609067981137931465080431614529145639813778017315707836687486435069953362062833734365902064642947075530075586559121990054582920915001316533117832283095808173623508264966636151731649063805307564933360388811510652509842553861037400132206440739284413639477326482169986455076065908882746245274468722373558099498641374947136827832421188293209658195171202914530682971607334474377456053217698745190996416429524294149721167211803844773090554326708600943536125699936249505185054933731521866521587316746340359459819734701645289065365594638956328943296439820480060200379051176101643914486342400560417799505106027703218481437128693611654290475616356161776748165435999727155279308437571386191262025271954816778775157358210699054810283187896096246631743795002859342774660611446709153949181936582936240968734691777823564110873761035009827227136008102130035657723972709209187557164840702389876747806047317661733025856095971547042368693062855131461502497632623541382676326411240420479104373827737676057415754560662047068075108073300772104894253553193575388478558389469787935908184170100783519579942710078494048424247270279792931312176948601632488320590182827589610150304560627345778941741803800324506480450133750186928034397574303067754253444072791886804749858119132567096336208007503831111245811705312834639930011378001423275226696848111926433474568306820986089881258796408010382317198298469962449062784954582098032586839418509514568425044223827069276327215640459056410706463492523094820301960148204181268838073618731001063943848081911542309250990426760222038843132013767341394322526929693953097862106229247991001254667552046453476276049817818811743436241796965458397445966685426630285841817517402112978291625297374432358821791158493133571903905432881374895202093214495209700718775658142418449242292857274062338955648824140128197994060443806846528283013853969284136296061119323603178292984760486870362021336104375624655281611826286849402411674219250662190466194762742915284962677368047710249960227638004735095457029682007636866482653876159272705229999749423317412257860662919194727539885989937351627873622353198846013063746338975258518507823103959445395527782337017013374776886998146017852206564663758629792418265784478529245696559365793223270643042392153804847516065005487522071351817123514767685961134110253221466974151399745254794726548485134762002638857283055032525750927784605740977883209440115847172278968904039664823853465133239659859755423207477328502626131691381686136461853329014186574476019966043663139512315550628249374079414981485730257477439367335639080485504514746108805091390261684921274840636885279431053904600225968888583781663745094030335301287238758126339127591966927732995141884457179595735406724651296545060805896541633676105168572669757546531530489084180098600747828128157414708735508591005984499319478966268786028717842817096468676129853706285399551759891891613262805379989565717977216238829095138670134840096800238236108897981540331215529626805734741160989015253043237313771326515184677673691637049801019964646355982301888048552682514663179930614398165889026782470633807122843784090593311126424699712859232337031095401188524011137906259234404582370026873076134103260790338448529760452310362127627576798980414162201853625488883909138098653563737815332684509599674551158158321495251755979214455389544231331298114308772466425447789572811994204048576715993710865927856918576550261839207220678107263829102899295219977456004897979531243438308600776099025269972149420692965295102148941446697374104427848810596933886461325488014752229371342521112516930399302542982597635582032710172177648987293680849919096753083686216667137608311636502022927546526280145339932017715817309805639387431800956026534511231040588039615893055237689440260963675199088194279932301631612832475499566094853513399450887723977272384885155238952474559496447269354908873384862692094374951674308661386158948630432168332670413971072517170330586982521353299852754758525994489548770361409580459718753953057188795877113538004444434736124319941474492751019524981011267717692969527451896230889775165840506053607936956564839776660585806174596070512417640474238465006653595966788688799021780003451654422904380222830639098676711704962542207950678933165367092420912676948382507253072200831496233464522057629965969426906691643584038218073104211702973931868931821977226801794639936588239985924235314743222361965174941651617729300604070553526876177235214686027030713651561289350194129580605406674294724632755193729015363996361314732105467881237387614973797578639709691468280028708794533678196279756310484258382563321639153841159889547298316961721588349029285448633158947961673476070394611694095838854940978780494403511716618671312006534715726918454948516474139079754493815349800475789627975959068649344002571339379877282492534757618524345901352284643275562744476574774485120746726713417173619464192537130133848349715034723009848065829720753327279361449423494282723060890707578534662221668606829043177176089323593868310870099295990632537703889434930483274511634938603872522689393033953700560480374584488530473789726373783302267965564123076941353783437768921986309577795960622086882406892257763544066193604995352539889505999186299642063470025003320226917071196431336094318428439623643057750963802722492924717538152256559523760517359674997592173206851062130715206074033584445759350337547072257346158885404881534229496248974376302288925029069281584743057142948864823771806171604626835849631319012880432265692005091915145174306638263572521375080611113657172506743635827895434512496237822989860610090821641087986611288105418537139757134375379962989374781081194337589819358223790297147336971284903133081946995966795792461137549531683556273346532900655604048170683344228151070257192347678118330544936303267598473576400457496160924677010588721829759457020375633807157478106940002483778888171699036924847005492477729880306118194771437246039283694109368802760594560749847939681222109824397461533763258944227259012041582641707011251735497232626929177991968437378475332737272507876147406821628398891179466406826220930895039966947182937860332731757780421776050278397478201722468339085068502245172268539295846858357779461378500122243136022445532445068001463054786008330533209630339593460664261902521988861583583761868967399934238946793280699266090722143315425929615274279195999142504681956498034859668836864162271566200269599823198120647683201336530940086958140706791641402869417426749875184953448364918826565687835621846816998712361397696351927901130915049504084062720341861146572793965928089067982709235289898908819255571446730287688773169547360513748028930971086202375426811572199912882407984954781224113686324922613609907490848593635942856961922631999799102751493702822038613752571652127761360944923175086470961273083111087311893844335688265556493983813296623853199576891150025748765409390632625228301064623838239253663746990693869271146393413235150340862655263947456915605181606281497663181032702265549028903226553691683999068620672751833770276115446289016808641301286440971224906938213727388178713973943144632804539353865854057385270530162673840064829941357074182938124596702059560983736453203275560941073475741394526651507056465897873290233207506471073136724878770295084317342414850375589268662480495981253093746159616568908802165214985426514456395069626420023438925742840635613349977709472577815987370561657878186374397576507643682512745192865793941449748137078387573050429431722365796236221726702388707901546566129055433210599614057570294306292559485239682902626347462298262779049206415947247879438686239923427130545365348722573877940463554368416946166208970301620389247266972427197343167767308260070193915163304742410702609067725201610752939388990917750858935025960468013968558093687492488118375195850663401817139963802075205946797355904818939538216379803643389350829298128274133525979727099464174234935607251642539813291986499601896353733807365620394852028302951324044709522874887307505341876517038642181454369750218689426286059247008199234514926642333492401882928648118734765049046637641857632616584675351375786392122742743644143040309620614138690373939392469502238027072233424592530115675158508732900666299339913496137132617491165495715341979507516501729975145436613938154734555542107050552525570604535120720531311697854687833249681772123767859317773832425907834778528191340960000696354727478546266451511885324757834264302458941927096731138102699640697668904950920539229659024079259676744079790761298421001579713706675997811269005232795565353854756097692115136285725701713546887791899739874212206973189755842940340272436435102855658591519376224543925685674139990236728718873403226093653620541613799378988942809675577650884211956444116811920509127713048935879881413402532420898169153969435006422573378744625237178447677855787190981494250537976474517724051594254468393240334734297539699897461745842906760675906381541685759878026992629466305615935800710052168592784351543265433313456781713074267548597144360399840105246737245453152711461508218933527807133843525585049686531164038004875494796748033517425179096002734567803781063402415312291473025175225271370401981832026678148251718875730044417076692974344566216363695436600062879336613392918671319261507408051768907842454281167220273684327575217819174714890344819000810337061242298066894890782572344338698128763903519704299543296414543068362062119010601236933495795700627638547129892264088806491133893027547285854300223306380676319350471916080051937646169856731047593714802087806686474586413538349508833667145473464656759330314698926118167014190396369965431749069004989827816039093980610537834205220817384020921452916902670428023488263184767394142605933267312787235922873494816422763110529321596358802865594539679462608736855600712792558683657604669503100539611026587659890047275475130969601840155562342545790215841208433477096071379335092862416541120748674687612291542680940028640943189174773847066461186330427869157540000979925890534924604985899423054153385932228698214327209299786854200188786149540556012535735075091384969443169000296639167679439041210801068328162321881833959073066137256312195957238160790139635045632549106251511960561013795020808250938383858945481134260792500651186273602641575120937067185840495691579936507059671702387102272426736672890394776189740718620491333818930329185974167555628763209835430149691401813373557776616826173437061641110298448068938845068783116252585873468844104588503641903214273311193150482402643739728666524232006026601908271578921532420966445748181559101118659679045359247216577373240692765789586258584082698669974076144641689901488970351961997475355811457734720402674049610733730645818409318513227459267613215879305686502677457537257734393756735454555996372831089529781973136010741088815190957723084364498490910350986376935240164397149941751283808321072697258345492051560086845292352905663583247343412217131710391846831044190489556108888098584118997498238900099772027271121157330613080523068619659412085746891510291156111148318711967539945751249288957675692955150660417294598342807337210710662938482935448909553127959726781259962568979181393827117880856732300366077380068243184791117260107850858064260302684763247717377081800203240027818864659034494755267393664221913494534112199848705398255957575960641941062723022095438250031226569440771038412798015209519588589070286234038070206150744662589921160994595975390111140802918759818744781354108716600099412159704922405897465782440266924415159382731579242690671170976582221819704374734122444806221538066844198824198666750251168496708004655046656741088746580199069745043526809199798809415351662357102860765108704682733134596378423306268090709657475580174701367001763092799591482328619367709471156512520902049589623975527057786313821106138715763765617271579603339999729490500334173113832362219550021793281425033620004906433806021619000025342307681308191677875005160207067862374236858733923836218835190375802050288168416566239508868712055153434294519592720021626114343690532514301016635889670377723693542144552468918790740278549302113081560245177508193240687894498178405144197536284609697644840845644762628255843017497974235139883869374570109105493452303522969340779251358323590778528457510789559310412577347989331446829014048528625827669576108376542736974763986762944854364386672619831911869940919962252976362237396560319931394228971430410500609179463045577538276917987287066872433661705764695277156292160671540177846646433782509269441445022855544817542618803258430313791724970030879441060093620935983916351770024142401824348916936046607821483807659292456684772326150668492583942523630099379743085369422491809075115190813976124385226546313644249899227898423913342684049583208376697057091391740225069224324741494809536871343905070640631610288417827822937033332916701305207962270833134114240465617462357067592494081399331163186496106844864637842367126994120979669719058702379977331121588362589850247220848704878364743547154592666352309139895210840270646428332386596370322155626369342038608751322203308801461954431042288665665282153129539758385136858969941639385098472016606544112224891319721890347594725147612647197755098779368340081711748941579003836531840275067283953711462308339606830185117264406308041992825584916446931704078968655046404659187373571499742986146970815947215928556671631712759372302315512773601458921439374013327659576442908400483955761775811106170130561393398422447362261530751754428857484266285903120626835243605671238258810599360030765181102229297169495759640068503220414134476663800531011995022611449031672095446291894723482573283539796484293879242703472066257594416048184965882121906357472260752312247778856159305434808769068803389128436216902788601596319990065296048168848303423915520926463438491955763768466282539888708871065849860612627423361027779937663145626964812986389712052650232100403342904122660424352641452317441103933660392340498537830856955144318256973997081138869850577488637691631629438608191146304870864682275183751972551046197495651801609727196215290845109644390313048989199602032774689774608262353297995541579223953408791428805351776273416892065976178111310950082756893111276568002885378675948094103450488210407995580180765878300723536251588233894288565205273590777171030707394245960927750784184878049978018841875486949404415142877332116531317994977905026363279141817864909142217461718102621917966529640281091163227015564361272444363179106442410232254605187195103997813314367178666085934616207626120605588449730201635680828281147607369614132387111516340338635421571237745538404554646455368452070663835739299788276293760106050641639372544683190338431833845799160331147078860959920835493837994493104221583194258795022084534246220488139169151069926372283178952741112159276642404357904237254350864159113059671367372295817591347506955403118726969084623866007592608253261150620507991130961710994490366154896013296498081014174259183286881438813481608571605357527551734173326161386172461026738105514389569715555354694566860368164087081221242026711525877182670714782402195144772150552497673114816794755802717853796232756892096753608990839335793099690628827382594596019388299905215493193072298564526621422536095618193815761223291019468439762240907642529628296259395646891370926120279074059064251258468780289814402358843910059843927084842278001351641893983392421696576057938177429607981901089220581727712609699230617217236671164239230660981538849385901843866895630752285915615308766814095692304821427226440885412521496980984888379700051263462603696683842810176390222662627569325815379530390358172366788591260229912150118871497771603687898448949168687108874717658272098535731066157648073531672708474423862501716090641740148427448397386288031582086706905266882809413329768687503200025847748260041075926523375364006940842831527542485509396123835314689197440507294472744777885928251891679739848199156751169314722539975954151185118412913273084813265304653097955493790088596313861782784726371426058695730000439201741392893982880277823201624329277025009317802599960593132526985183092119487356268792744363645550177251185522196767984824839031211722140304776513800318052292552555722152911834719432060912856565717203421399097783917910781827212278318549315783915133571149054755075681928579205050757193017313905889871453822167246644965758981954390460041428386077683435527629677818970884754773250986416941820355856663532155215374680085969647778669493321796887352266116510262698738989255071180771762923462235997603953170418091504007791528636449200641135887998590621459811239165719256608905381919532460043786783689085792495049260063057810493563556345543219063376587369757494305862704307792531117862993257424317003154689777292431019788761562761258077153907110376329957567419057734989532061618875692488733721060765402226267262128906359869766692814658847678195729134136566279323380146624823802868311006581076522547448042434698375928078989206279616720102857400430239707089554361815405249108240455964980656382807417893767603276218898784949716484951127827663377266710919672514708301830851042318605759939966540584501672552570386063538794639531960912320011013786224200555879456328444128958000709784252336531497977102641827008112901845476205651484676295192714477031519464224255026818510095441433113722561689735325087969001256767874663004107216862569404851369181013047715559318580875459544045784234902350577087391823874235238553884762218023220011716142369672671154243153409883810711364394841076858107276316149184505693351671621422737189518514078426743548536529787237970682584409130509941637090079458830165537492262918097339917103075567703800523232017902121660966037372744475919496874848974604328551546933300975328646114041187842913371023633824852535604154434974208233720910500245004203358096386049594453727594410964772325518714139863113516134881512678435249786662344149500291788629692141722309734166672632142181177664685796319499178123235792964459219057726252312746284802789075889985854068186951298297630531053635762077952742897731415008265610036500405620707401000517978672360109875750527681530055931973396682225050955394955290223613170448449651642729057664709920947861920149763205972428792426540748041471475116143871990489126675658808906828552461461361223506604590031218058182953540237694376214751816253146884659880597753069075227462129203417550585217680967927195833234638354919536035772865565340073575061022598949941925386800907486895558878337098490978351825017262783839950756225581217532177681170668915538740908774955179302012110369076625568575408639974755427028192803639179558645383531970772489735379720545683794517030573531121030370867960321519072362044989631169495093922488994366548722292907028348431811906052054735313539119825918256056607749733980208225293909931913093555877521032594150234557533182110171164211286307951749253291439793806823919916034235459201636613251595983032349961588797964569507894257023105693177323397916303725817286647475441277427908860105104193492988648709884309510033908725870740631130760524169399827357339505720232855051325602923203518264763233040118265774012035636357947263547594323618130857890597261061401596022257464632379103176701832223673698108351139273504868189749303071675540922318116314585342734491165942461280807238860025909274343497175569061926231243277456985026491804874964489458180001187931686134861048964865743719638240268065723062824111479895999922268305028398681486078745618812621737824625544026698552159820217008837296701772893192265439562707372301657902337352318797553454002963194424332864399619562953566023718746047149043444141426282040818055092873100365101404922480998321400337202332053614727887468862333852059637695522368764844060241866372457189839887191174292749101150007373215101689671433744525358528516561083512116308431880290444134644738506068116773409702361636763384733521774070348473140508266620986047610836026351401864696216478034648811455887159615033020110496623354911112476383210558854815058755877003499876356839089852890085081266469227950143887213078660505660664845921312893726735145895632727156288965090382717757804908473915936076588488884404766987437848660974218339871430811104003832064902397235571567276086516684660696318970904850129976258098256186121833572731258072355398589350487848843709942091492921321918484080516911696925645995724071975138733278520271651694738047478581180813759100133798065226352232136915090879684474459605283586551526165176187160950962101137735901425155938144792743074114582724346165958163206242692252054052982551784299366938551160378293985952979308654723440601190353180535318526419516907446189812583954511845801806231938932454492834382599889583503784480885799262868730468754824918734477496883433309168796866019889498973855864010301402324908853313565724216822303554288970547674613915536452495944328021340361683867659605811069417226325313538381610144793129795232595177712795644135990657781924093548889806465008233652590410661570283873794470792131653306020017738137940821199382795907780307962634484728233028449390673972711584197176801393242135371727239987838370852818680570959508264116627888042809529172074177333459563794210188798555904866363959143409850615498196003491675611247639279684144533802076413802446331560177083939446929001641835289514091343588231544022118044530036328508955467607859581320710868915877210038976703362190175386753556296542398416424486256617416117909837243204460182233697378477444487134935749401601972464198623767717634328961063247077631960543850692525729493891734788982125640902581781523027637997191007338972087319867247910425088491839523817305142642679013151395912186420034193200889442398939242609593946068276927343716623130105314254874328614136572835474409564620532212310502739301011460353806369315075772259555079589519878439513904968319392925250461220452570690888695481149115597063339013147614231179941870470084592446412687445437843315110346699280124138144054044520973339639935898226843268633485715838635327009648532028227361457242309599449-0.68400038943793212918274445999266112671099148265499943432263037713815305812497663815095983421272147867223796451609148860995867804988314557940873905191188799883519183662118270858837799181911957942513854361008447824625285978694213906207961130230534396425823258922029111833260915122103671247169010471326011087527649463858304381567543786948780468083128685419611662057442804617762323459229053136582595762128096540220160302445831485873524743391305055400807997746196835725402929712588664502011018708357030603143493964914020649326448135645453452198688875201195035381817763595772650993023895661354755794681448497632617794526659552462586998679271659049208654746533234375478909962633090080006358213908728990850502675954992893502920644263742578600503604809859830409299675314558901264547453361707037686708654522822306094043493521925288533329839027234223495287088330411664040942145276528460936494120534412256978163478250836864112676652870701995734089506193624664506575310191678125455700698981840928331714583716734597151697084911609607703063578838916538106605599270842847024731543038002768039085600802049978032410584141889020183572020629532415382916822796942734253441520784640814155687968986766443021927163624935478697371795500444154908567339210555669208107564738820422789697814839787546859217582943182703853125971775989779126507155489945624617011553879109152932039370312241134127950112036269188660519350584627066913492587827820904871731608862932135327410151930740159463599005810417547430064147577672795528747577211274733023919090010208573019799984438003502961409280275043125556599521620045097356160834695413280188646798489040137637492451450834808286836572309267149722428811283919059270586193413375708112207196796100632266165992094655463447384455084923126684735763619603618658677613508235551926399435432335855340874970417590296269937584675822180884630975727167996170041156917614279457235179934083835867238785064092068574980839610211088043858862898096210960564497941815320304088536820486232037922401786916408929546804773696647294645346050497533838613687281687940888036941361300820872655197423504623465638275574931525299152757456982298067032740056758966773931796515909324355966311917239611789657027781446736193022092856907158124613309089764013644517623899657078413117551550268904491722071864244199033932975312109856798156007173953099883327321149663538863850139469206652754568287704308114205702954220578339135785097113701872137378952010279282797040224960903729924449564383217019522293442122558083204037679738642445320577848977287524256968144287999797437844184642347562096244658894248933475194785307547265860010438522813703638767590220948846202554707796819458689103074501770335918986534430260617846420739703293012732482796699253375454327779742539659488766007286183162913750263438812661274936208683053811441486020378826153557820156438817422921696852511002573140030360849300310062222133784468545513908061552716116948829069180123539251497542997093933466600210069851139576711541382055865276222614381015434847888315672181139689778856542397455980472551051617253918142037424847377940505693372626456605729203747745602063013467594771275133467385512897960206146190276562358697374509510942891475833132326898543689200288201153283823961487207074569127787543337610244361446341893012750960856485029157227946745253560495285722994253206534781235182186676096735604416436631561090999734586380424523313417343559866998326912967509644861915279300181083908059686372177765339770519713177859952997390714739199089389181064559644288939323779311368866022256463780421556509024962981844541590569617803915806390643341454417276493865691116461992936698042225210746002020696234821859425324259203734372869324535617885323536789089380087533345116077896149676524689109179373947259854565440891957304586270389565093102492787252020411499503718246438933671990211637684510087890690548055481714519922042523730008315675511316966105092466501991850451838812656776519800243315244363960256967576985807271113068956775404759077447404431373682253622224601841497510788562316524611516918234297040305651250947668210871215575352548639458623304493747213874675430265080931526371050806643591026603147327405605546482921987984219031372500504205416369526466217366561163521573934134312456664743767953576184280903039177496764573536765983651165178775427796272619578730778712993443605693091416823709127233241733991438375425886702374264557699544710292079060674946185418193786977056627627027078802949028773560425975327024157934271179410513965666429714819972911557404721779568382919787931030401113263179832281254928120061489106939935041513328780047558623333554432467095564905022484014157240045485687668003058130518698366256318716772605756894341912700524958548589819509889369716189263596755949748386403004202697889257997582841270965139401625440728647282924802991382141571861792265793696535146013226834792405672056075586905680311597717240316073851686087380622680428912071672500248415364973496656886458492049380506982345038591848532389293068889592912778419941932025425465989564831426878157634627594396474767491770095983597520116804628856223781839095804377676053564936544223884668122196848671682509221740401829372135039597970097559529402135186260420903462481979833035732215390001345122976439468340470637457354597759302552710450857761328076252847696551832001202741909543630779261899568957425402243898985459653012852832663054960097526734720580939856286653186986214455112546608209413485628583769514812157954459639602941030842046628806876486674065540268957460798601252744231400400376145436668914144783486440488837814609889787615653031530510135162010168307692492588656105925106966739173616401705961607890091184950487174284833273135306249227495431393154510838784208641651538848052347351192014667701637188717387115468029940099461628290110422373798437477577402176683638806778395805022469064084684509758996694452950876996355812464591466686345437674196735304012948700892521610251401812495763806738776133997678671639057603823539450508981167567577911391399838301473310194253046612989433608640603419302760858685509157529470001844911426997171906485850943927495216659257490330222156038326626957916120800121439908000573675139323104333513251217734608718450735567571726154587896797241639077844384157842093068342250275008513906404811819414525890994365555468339635655852895860437130354943658911951735248044926566371063304082975833010327689997454131848906183292376637545783087227878565801893058564056636670325257902635109560016166476909320361304888833949653867863387678294603328166017785061724606619576825840808599072240022248304539414450069201210702261308726156569678513554206876514475638887756282642448385794612343962430908798934893571148579509377078937221286978322193213348638500012861195269627207198201776222366303402672679958250876991299565834145514613232498095076681158118269172464770470727173884832386218470082489159822464647221206052999932139675628866122733619884644071125488951371662133286857249805224934949523164576275924715803707776465041198329222943266653241586024704593427297648408438592297705293540861981834053414470402160749698621903688398436841029600876965402121296304359929807629401224301271109927957830499076277649856460797463136722237512054718801689105258605493996615522104788816984931653211871840642180597597586256580617928863758987602163059791956427259080368225054111204950312758338271774190875964805088232192777553809575990331721657024556735080313978893000558292103641252365450398005323506344732133405369611481643519840324358481191010323144877182563248962406685984785613901796579558710942455023309265711531711869173722018972579128120261657844234665417608549076821932801020614726351683551597085419653962702558095698642242573389022273220901006506559627192337522018003317115117949459903508690924725486241074444513761289976508157074038385269051362023091998242282144020835424559914342338754591639530599661751533995430666365102324143079445218045752579727615308477279458013955261930612487306236050264243094037447304886146211511577852107185483010508829995077508623861550501907185863049108652002294075921639105924486775548849324002166264000196028026437485640921243767544576414829547954442521209944001994150765147229753933836145419601576472360362004749326982658219409044195398006787069635715097238968559502297966416538059972415374769722496153761216452054792090398720249614687887161956098325553232590914613031504148414102171294634991777898513180411325640913365956199568181795827616561997344814832323892530420773608581967888177878190189856779601491699097885079309427173000079227548249157681665425614991598010109459363506303612559239674347565909511331710025770227230719402970043180346532850684541236427116416631657002377604601863882414891416373858531341990896054428152423846179548826633234996068174490771235425574593554425139725287145372228834145296355863093824207847164460452320571243801802869062888450071913776526090461526266403331133783697195520099304882277445346180863195637260528340479046055828417387030629115516735631846641566534881839139433642944680487782423852418041211821695931925048254063200592062768510571345574464130183364892793384593305591300595119705151449031411369581162622769293545563840399381857558884182766569874905025654260102575860880180461974221064684946170372492584429206181808907053023568829384439847701503097216283462384166902649352487306631281936810914811652550331016221880186743079957138400622716898603504793207505039094686372279425766488110125336352403073403339922901592598203381954027293022159039100159820553901324768985947681112923096540443242601080781433975806205170620232151271016903139791499117108392234795730331986315695890163886542543547384197912693752616887981142000734397226499392417749896327577184916011733908037083489999765789407253443744555571196661871244914913065750427175952273624293457136602940173158931001755991979039297553635094716130058231525264641987954972366669334468833827178570601794220131916302674743443996258982320258449735804279557993162986407172942313808965253898930877041601691254989341271164042907519205050209986233439257699293830765929031364921006190880985309269751178758929734741436024218222955921760626896689606408103058089503912699537615056570656197738181945930053955762618483813513710294705029246053155175002306504839480175225241676468817976795350434054821279817542880056148488553163735699856738817218074997262583432304371855460539547863844657754182971396959556577030545699238796885704062105583812741042879200642258403409583934648971687553580256057350594468444977790852427336172112539166907114367511949978918187226701657100095253699534548781205654161021640200055960535504799499383454631707953560477997500727479417377428755421770669199403804745162079006624223385222127453978040392424202203401050128196860754735758455204203138554279541289833387617823681090525840779706117335695783922803931412784725248404897640824566114400004688449654335840294133483437272285915240856287163778807807248320032969677720753756068580809170412985360783584265899632448613731568951853518578872353140702884361640623860789489885380833134930208724175463142989042819927259378008844777341877547134599604082712549295429326547018207602075911265370798819025353558997033854904593197124548551979591740156047955949053501411085254223794936687568208859441544614849553004865042036272029915812768184586234822834743596163978200747781542612718439911166474008397072816700982091786170948369159082092890658130404879710044097885365418834610300294407095283972712665648526952205435002057290820711359498582675134990429004800929077342543523446506866547614712270480107908327025182270660939988315644003638176270721694208806903477209989780885458079283279378615267101665748566734201401611420028297247357549247232942071399873690564237782130103261591408212527826084100764632242933055317304295672019245017152811268982402382368232988070805501905425153136256475368508091067830997227980474476609107301610163824359642717911567384730967387701198751093092862003784339017864416944852553814291634359349775860651849177748054694609937011863201242384685108388590601189114297209335613573040199726929773194064590029497018048819646858344208310884242307732657145176448552198916299438472236883944093505923169613371633455111692910436939527993050294817952236823956567776826917381477545680739026612986030234863636738851690306166865789229615972004450179368712344521388939396908486322554780544371368965215153043140332846885837630035505366829146611197758892050860548528316503425293989523288488741578337327122845569483140784174824124462610427171017481318945384121534287225325227904244881756279994527354302383064806982183906183497838620764991263743036555197539675562812421546422614047393216011271355046588654674024784018868371459741496408198301738484710144463397397959171200730818849194735862119855649481326484088824566043002451258724752368897476057619749944608571812863614684229696779312592180614256345642251044107179103705891791402097861926450028168479139110402999437733067876693934898275768155590597170549327016135838260919898935655260182320837596331989097091385876733534248028384458767821469709226754005094936638268371396712565173516287606641336811109211653361213220081250843765212051855508855643891087293690081008033176021865127854355727259838302551817209293177053259722917689318252611699194839418997634866745747078814092468379300422471136863436877584527826089789832236921903802326191055268325091750198654756119249596345763882631358254936615572129953911638929581168739788536439586375564154736211895602880915836579893694256518291199160407781994992008622536949591293245918035011362779895993588398199999414609491423841257576823030458847894690206911184133023315408831553083846381251286099544540932835374057423278665628027476712051196662708445417565888895450161333474840230400448999793232707974668245691750081143309575668323188878742838270976598641108406468251509701862270530856325812938778588774853530424310236120206677298483767978435592344244574707731148315670099317149963815831565980296614486690736166927024052934840546311298673975389596672936089048722214935873061690661583958176435634602202131383944287000259060090682527406805358392589158625078101135355748496451916790515306727173024036727816192675724490485266896207729565720817745253882552435795704040751369999058541762718017636119702881082414544153713938551297102114695921795655289613476788829969880672404641436946644002282930050983920493182425295087558538256986646608577914349513919481036959816833746663963837781729875732221709144756427884379051003697560903701261026545214963910770504011719874419187370539548449566436927237880554314649259918264083875430393070889194011565414523529430555955707663685568510544646894390690532706251946657607598488249964119978451709762231070799895087836252303928405625397791486091726584904287480603484341073027193957823102751140179592617502425257280157582853664021593946364738120297299240647536853819813156854592478686035613302403294358109120992168768767478827969006156767992615438471433176604117275599261737070066453921809462364916264066764258081042060368258909547820412651933879492348288824614535277393435879931782079005362201867451714282753802343477954806917322438262062382235213990831727319436983645485030214390874905475607444184525254383681858670951613110973952571794755258962391888541330473461571676300833835472524142154804960909773907982864644849548727540516281217623992203141778040398459899160842418575247983172096719968873209752593744260114861676904266950312219793939942310372598544420708024222101365055866534807090598482355968583938751797637260681503525269378797501998729234183112055464356763326247250955675329143316015805412413149808831257405411635763240567903593062309505216942753550007731337969955700932915325814420555517229529296990975191750497872197937859699638188152544327907072795412329393897952417323231009958950299458064875430908703859926657292760563956782824435938499454892120526460960506187362839718117678393585705233091743145316450717904665802377978499473471661854909756569461048524980897127288060634514642899892886967385655117435552308219492642623601890122632266931794039667818349714755127643129431989981598660669144893351170028271602122739029326782117095936563930463587149027917561271010933371250284432576870018625186131457127799991032336174891994779012759309336379886406203358460105532213183057970505700529800343213277167377927435427786082599810554450636483923879691028920398788144292294605044677192674573708034304525057696100867983173768955009499082184062499091013714677899046524488016226771429115319741340252575741605272730130128923568791644846167285791595845248261598980948960292278920521383349533365783080274926907678193524183728764908337294115764364826440084737674265861004101120867487332344220743543441519682142488141391674106675014860654680394085660753681518235409864168632349606625919967875920224160758420053704908018500528439516620818917074718275120385858364722343466542374477847358245640380101632849332825490087823926618485547688075357754626268405216946748524147357197621393723558283473135914475526261843863470481631927173573374443080337499312519046253154418191076108478963758979251605601923185729322020291084695481590724295074677293623432494042347163877380542824229221851668093769039425876791762622877159908603483788831443089315331526306351947345425618968694643821071993712480298808486281096851668702074875513871802232659751191577891793960362522157308879163016788576644374488315667656717079023967707611889655725675627655052765058498041676853208721480137270618067803191885225802639759873501489584796670179311207741567178668235709288439370812408686818268655221127152717125004062890782712909869827023429810417396513021177042405079812475733605738290510092101249936390757854589585133912437096632108058406628121285577010282958499451324708782153440055793862600164669282557208032756186629540045108815995274346103937170566156939861252959874802620854903108882328040813538282446033406172714196720045598936159079647246302853243862623660684290617006619108620454537890763462748488298110019707025917629556882467166146116809845002018138370842154361807427717969061809607542280577938788339275497125075920406303625677222778990154611267751315417323873985430059811038246681149906791141657469402281005925491462055393060769862420196674345722830549064949326635381707486814159865396300235304056015095715057253908170467474602538736982450383178509110737674419317025595145443663868748602368596056458843818025996452171357992529677787073715249538591768680167247379327127977435544296363726942438781021527565296782047094674657469418960861756391673804527862613828094457106190444652959049169104872378762897682461263682512121336758999400839504459373119671775414444656371444334929829493570319045967443857218021034469847490769773907985867000351549040923398265670203166583928320313764866178700965766829685894876848990543633288269634190385589972647118713182098044715802261750256745446340673137043097805887323334620064951989560479801680086712716406760164315032269914553728286409661717738284859469448514696413413632765091569447340053583548275439188406170742315537089990529518299357107534502794178655614482362941195811743082700239256081420055653988315738632682611892325285906359682454888405525383672850907875611444885142527106098230612184892775340453347667838443859624527617361460421753318761612240367733793767935276305163945624869589475259630986187223166934086934787465117733334816400244073764918919269645023716005747021275518597623049293688705630065752664679099894461123010703989015851263631629137183534632007126793707755175998238408302877123034461224725555317624463404219125236678771931939594953012830174235647484618297180982148944379122593872464575687922847912509332238242324336365658612772793720458558419169071236593082477336752299138559663316745731032375667555467793240117235864446792600142064372760671520107928826573682954883878924018038947987676611971735942041278051578335620858824685946178540003534086338152281256532418404307510401672126949167996727130263949927559831252452258110332984876191925938679872318167304742739362227402252737328154822958597152669239511674377769246458066627514613972411096056379679827989122530774174317775526889807017609228797619783585893659122266054625805362298125558349319692914487412814154667992133989690147246329552300236571797625527572382542282529426507161601176155825200076022333457411397303050779906180960124919324805901554216432599413974473163679247842709801734899135300042503614663727578815223072925040658215601960144080983383323223028841881435282913553931608252996319414449097643308765321879046135641808346472741820273739496313000829756288604741760757485806632568200144599920657531804019367367585986239698102714166047671774376473955650382369820844367841936295150860015260802104271974548426670619998837780269110596307732821337445289282298501621166303225754246045401133154531130402218107404387450435427348843814350483508856372825442582733247418976874267199632960469405351868448967881904264121846412367688912488200253525745581376615712558033550979499465573682499090733747051684873683146280841478071631513041217423733811825474605734381873354091307915927182170498565117101802849716192806005921066231747132559149247526628198838626363629734048594208902752185166957677800587073753211102164481179146984985529882695516876401894822267702712456175811233819470239663919518367994273206053002100391390051376175244401648195249485306889737425807421308071673533231874190868695557887635133824064253665091273320388688062165104254859438269337633005332838844968964102342269099754622397088668408044470171591684514980463210481350906614015580449402183103246437974779601584179473862055327755641408472061645079579543315721276322753356737274589001714055092806470534303864748510016513646490590490106130553481423747628773889311220878862409303059265312242777410506533747068522086711233517688859106201737699442422118501177822865867196096177794823136169921306948354142237333998382824977499341514597001404121649822883998836368889109887997433537844403952464598521720328520110058881853539470605558943490891857745737415125444190199206239186051968120304821078131144312023066903778495403973183736240530705773971153719806435887988954697945434952487604440428125131410104912297045153085527513562445151470713364866670738952650232797157983269298007955324116520776367934080426868527666311200740245854765031957093576203266421412769232851730698781456976907966022104616350741320364618827380054615019482866118846882835338596582147802711057134928499316787642948370355277087463987518274737889126134840095071344468146276770506584321100919953240176048402948685074371760729158562561991363268916659418139147541843662030774156111043819536912983156706329640527699876166958738432914376818304288847310676033062342090239316421555244640202471001912599893783437254696708241908857104005605564169521236488016878509182875588436227800173820799553574467492436400045310947210498059513882481817295533864342267527233596219928575258224925494878069126773977344280645732923211107340402028665420801969691065928885492550299636016328163174588329807636941559236527614953605936751182695175406483108675993628002048264942595829379331491907733975053213624389613700137692824985001464326798020452120639517640389809841795876337295102900004100124703894847579237995979335781066543829031366539948113267527794630192215595926431413928605058300514720451152463031860119835528511821703535248558998552425781000987770232248095336214441137134052464962961273750092237169485020236342346022023188018879163178254012892450993988172722770153080198412326658790025275742468403979401588441340761267713426944538401622962797192233889191431765969901440675269607739722266544172620057715470891476834489509442960112381591138102842784878432663751379273656910329299986327284989672782126978676806494885403805587701647732874463548866490061296822340113237065756105691520331998134322735901303931687827089869706662147945226446765435051397635888362709453025520539629726350735173898490951547400963930240961026472706740416759195190194002395169837643216426170981863334046886626784064652209988791150155957212511153732337023768385736433743396778905121903308459111742948965973153210733946029570158921645956707480694000091034136521111422807079254329521137799224053585115371160198463849664918262784345385850091928429485248179320156371174316436852248533181877092846237443369502915027028978544326431550962427864674030800898932183151421122722071176039229145136483104243082648479234900615129386857726310927082116072114494641718744986125707379007418466728521597482336970067378644379908652074695823062691125572638977000711548613941367470521252251186235252849575838184335640314354610356606907562132510725397329385075045247851393339756101425796830968809858682055192312398261243566436476049424299985789948446415371249931764617901671378912037851500170862080431416294722577011776567946371164145606861775570302077759409513172381675062817907221845441012722553942269595455732924997166166268188118282570009870379611017940181605254678768855244050483210572756362645468326239127458736318626571399258645850696079263133975240186169459467461417548347673393432744449769939065649085112067982349517872087709206183188376992843698902762354714762910510646823598507613606081563804757968244101001762135911812333680623278373762312378406182163070362400967886479630046102647012701473474587630048979402294325454846753315840976477069216913455320706254665241435497630079062097761199158676762317341400470320709841750258224615931688772050783526902052636606512336229283076393171273101199704902924250072493252809878226811820546879392464544131317929341720878741115146609350340138581825711534234818052458503853315543000303933446225378968528434696505560830029530888604924167278649349932703385195146499471337413762319780131149049574236041762395780928715208518978634703056460944603294119285066942181548034184957277218919345718755172339035998427139256988553360274872994806540665475351878127208254170145314920926766583771776417961898150519239232024379738107703202746635669076474606047971392674245666102492551232414948617307935919970951709422276552962456744989815210294305666981238222639741946787331393218022983690715925470201294601213475051824651404177714617563660177694509124496002785074651372194563326525685278690353048653193601923141451011139303056754357299105804248624974440702580399314794695481776698917597990392255238593240009379801792904045965902049173035779360107643633634580384366564818012549982929643979893518146508570200595379831259421967343622676900275289763410166278847783880887621137950036124611607748776022403371194253257781503139900015074487734358107774395240956685815617510658189262886503521381123811399770161971826031255503244715699486631308164358235310495615543216975159565757299173484574374381210994203982022665999671708661857979522643224704631176843076079144733355964573837910363625355108168080698653934261831259612116040977252636847725768260480506837523069660497657217959999717850592850315772080525523799580001453856172580293993457582982035746118919622216251379280962474483931191683995274723374266402710466885590518000296593922544284192689681791546901702814184173717413343020567149461249079916328638338390147578475914661349161153391503787219414902060353035289969546888281735283488897378947232749500676118712705776326789433955742447930261607779844479828324533646110467616660440549273673444112267319083261798467859709209012340086790047744417496289926165676491452579656789594073640717172364478827813531493951554659309381767558508836709547083304496550640205090357415110240775847802841904596869010155122650948766677579246750696077814994280813029795348808831811395030430058049017344904335039805342051579251381164508692482423387700371303243513403874382504102328555352511522850954519890750201271871293000887839422314307329805427388490172240422793461021852360966297590973675363953695241498798055173638358844541954929446235978334157364980877395827288273114213125114826902259085482696273451154138411087747304633016979524910726798839387584924883536423047733601581963142434809228333485395818043222274246707280373767394806255738706131978972143540866599253256811699649365023610884073189394510830055278024768078176587694550562439117623760165810991100577703692075235065992090034482201284374838991598839428254599274305793648565391828376026161452946746628714514818085958608460044506002055353614437062131979294613421449289017830275685290619111261853970032269142285089115749190398492345899989131328811143729321774780055783234417211968844098065021690391881438163999229655916718773161706924783320015567268455381780100906353470903171340643505959230417227058684596556908234150296611027901509236669484466512208705061951581109908961842754876212821761452492676406129648302149373250978861371268077374138211324593976868748800880040926230259725670966343692936680114387638802562092900787784245383718913632966667769198691602554097259411749299153276755874509728348485995260269442264281009105249533580630118272469226044085700512874158078184108157048249031985758540498229551035122199035570318925162634640231753613336041140834356568899395440589591780029386320997187397528797121403484412760273454277742392264813086967812258893646513478034421934900902074865939279678652825014957958526183589204324447434131295718235146160427190567212573485888164210973236212741601674804177496013380850731506356636049338401971253012322613826007780687385255555416560709484386005075269031197286193570038381972436436626184225114045347355535518010791340539417880060251026437811533526666893826340378697309725858620365871658075859565440444668816535106200754436450051025141442353413282998549526411308365139177073044481555771664975064354517111459771179483130041738814554161624132909810836756313456498169023543974811534295728437422180559542601090278260681202461735373253462990160218268861709927810362885718802348770679497438155374566997868400200920314542944316295468007992283909197250503149500349633307872735054422235649513438770275012627736110558760582585802464975154231741722120969010045855778715330021497535686292837491653878908950042055195048572731638095357731994169038474378635510224903591288371831205979338667901150142324231938005212317560961275554081600645862750621961432542936796391833968207396806793676094968101061335939296840979418139093803676399551141529105266989317899911414184090822011670572172710507310059433379012154858276782655169050088499521350562699789476869310412589850415510841228636396260974108199792897685619070332805273701401060877648424133632445674659152859227540512476528543718397343159729269885983386034021535231044182144836920239461850774546698855179152176716469791956650224153469538861871570399895819335421362394006115974571319021127165384588244587518847010491130865506020849542597412347069847791454438557796865273161262266463487855725825959003037078797396695628846048892538777106433629685800645189810008908455546010796405568480119366020488322451638582188684885370388046618086494067975520338774469312345665917292626121427122224417002077662959555420746948494886635670176734419261215377180906996245886587411796324609645316950682928555762606498719217740853231740086453878500713767847684226695776999382803539887431138344158239400664553303394743747633496976893657063374065824580265872290296848081212026356209634417422176625777998411208248501878629904566590231173551251351661887885884148384242089041903843348492926379616346041349789894354776570508990795157707516049356223259841338526168944479095834536309132507236293211764439139217151530580682926103614284971969999012852676729368919523227834903771544879595503942769484348391980215895332474168012396180446972161368776313313520382562323335562715872297238851178031734302575430314088188517373579364196737268980037427232014755480244867701882130038055140602447731694767898797875953897480070133718048408761235588153463990413703352038652901732106460212600999023645725646018576534868152523807455294142248505172054650124384114864874597860737518633217147589677162024984675814505658113656516806202808707613362465088436281361142173726625048650148539702811475143447297604612575216691837866264556246134689091967417245500570164429011646962988117461462690728448067939338845799122523526064845220273333225519591056112478135934276613284499106651682900044975956610619980808836935318906982352985913265183747815858500635272401204792075196087724145883276892232662112988316224422071903222940394603080389265042301009748702102766757190580766975015658718483689310491428044623536351950046284083642502545896414083314692755336281637057292656344742268376414409453849633110862286689477543266740039512715881410846897960942700939643383561734357249275714184238721195047673641908092583222212066566260121200464088665187968619651322031788300377920056001364800359089780616627712443099812705385446075897032084183077528381195483118523313444880355253559923781982719245698478262091486152936843363749173524007074093991061417020061640141711950740353428684467073353779754580813759447929405216821965677166195795486694634800122433494451234368796966658299057530020194999744334320339441641080100701599925887413782062292116073678378675443128650004545762066984254786308056936713558526291376574240334780283018052780996845417973502503074247763295044957191569026719775236529210288382266533179044483516655064333448723943167005657418921948593938665515538199867441129501020575961563195377303561930825993688468733289729387992756358022590705931478112148319652427766942860301133591568888531353932304005138333467899985210303432229730535457033111007609449320762579834888409046268174520566811485720016294208839238334500620623481088759189348847700126483379344905875086185706256658905271654541642798038630831797537852751121373833125333871282181607125589942019446430599796806055795540310126552195314843958528085088827993510841540852007053065584893258150962466599744542338158667179979731079843010917050310374555082079207015269539125707140541822556821615094493056733276075376665478759258350282657656931180654559036802189948035257121115705634362182922037304637034185501831812029312734957956775236800922926581701930830059299443598280132951846227127503469283776984450695511698917016000021699767833246500302455564323123748357406919358227633775095026683379031632681760465361195068018540691144430079461146305064515009162051451123064182073481324168665311388661877202426650121010443381248458945031010790764856659648681307090765786175921949506151094510508864377214490275912977323891118036021777142814842471619821179063182597299239181823812387241722497835553091195535583172497501140253666764827400222804582203318220085413845236883778402036573281794131539543866139289898850167375037907092143656205003711822408349458721735820083368062407633920864288681718307072037986756103842065458195207686735171626714133452224620624966137850515966672880042922084775875934864361854669621293127244488717569622164067435912245869158698378048199004520034170914969033595738852581915906316355797962071682954684717812975061027394432785363191477833065914336445870943411259287312457547027077423690793727878990060425524548294268433837652354640622036206872409244824357927746543846111163053005706278671766037312089007812823468495612431665622204183883592139598400174523681765247258097495117185986295571879035363672214789113724342540240929122054415882755932491378275950894827089410715873249774484608801528896097185650336937258892307114786335728794469447990556053882027846363028476903340343703894544025458320291021374315649862299522786315597039923797833584948956979947732844107131012829804624929217999547232783517033122580331835414237746113361512885162346015881306660031679733569096406692279431775182814875621768759709105120890919519474778251540993988101503244378082050390788122368448360230967393645439137083613234914703475392989647516437277958461557649289815893775868212654016398183280565952164221718379036678656824318461966904875225197545450104254909870066859594993626292189005489381501096439113359457789865284694970592069681235398120855447783145457666822987944548292443170806596176247829426355656719522944250043457909515319464110487888468200845209098807328333835929953319097203356146057774170944206159647652848931662935670844351739529778134418548824896716142932315425175992159333615844913544763131187940984120664604630611644549256300917689897417927701280307133325969161597254536268833171559437358148461630034398456612252009856207175884164840837667864060083862179567666554730260982399441461580852594010299005557607617082503449861176604416052290361533093641791913453504275404452771711521983327772746458719815787626739413003539562155777605318315536626746368946947602567987996926245237853529954802287149183920015176691982170044311237721037606229019212324195081431200191451193069025819846709033147903181720247503988594123337460219635701499659903668007820432973620071667663409620318017933321437003090090605174227883551991406871441912817117998291079905882776112161735141865303790226442924260876800760270753740997464940298570192880748740501308378130673589517143263951041792663697869278564147751516427653686733949541313899405322993465417565531277621718175188334793102606504223239466396487634298696248849402824491287897041298366112935578654102824757709302602535734616965886714885921869506213062260951894965971632079502927353663722364778004666875646556320820140523791659696958510838169271279031351015415724839240639009927662606721248494850238119678347029414538799921785146721302014137592642051838936427268593324804994829906865568326960804835579728609948010070941582430056263437166891435743786905576808724902133229756923795860213601879836666269816969996606405623491349978133605927916841732652137081637251646015588733630096123473328472666531693853520846435865689506088757256971435057954448221069951261443434372128444712784157401936473474376706909085788071677710134210216667909821922601492482583731693566707610702835365188414365931713683232914846437940027973618489020101742624980546283794202953153723267151979149016242451545382159204013108537717311305017517565836590632179590567566810107822540032189841775326444347337400678580088530553010357842127365762955144784373697046332050733458928676649808158332409900732125405846199980933064874714837742981631432476603937223716244161325531763203486684579989769255260327500635820551314455815881004291432401236165668049116447558188837745841456896725401494768101043232385727086908135364259563426088856631414639866670528607360718496430161364348360172690734709026345180749597477077580465104124965463800058911824649079677600056936570839407458103591754956022368897603147133915981084892893067144393256734057481326314963773217724172490347926143483884666928073578000617058693445561268935054751595379043872282630299561260846242944618530163234289857393903698015866485128578432427310685439702041792610563235356467238647692566069870196261544140150442579741904796221765560004659303246011427314668353553465167733074068360059416538663951534958660794703571033673395245142262958449206434864439239820673513517862372360595718588350963673389580011684666868635205621622999324783820045468319013699463183427854889774890103191044106712833919989898663088211194696484599057826896180029175700500897604998606388186209110484314803410710294903677054929646366323045253697083831858234495553554760187854134820599170526031135602956052868058091141478070598866086761368607616712286730339275468414193201652296998198057627804258100934895364444670726820131411305784130133818372186993075073253809482284448572669017480456070473104250703900932325722621770499290814283226913955837266210440891739051695480366357101761930689751680112716242453277398081112905516232891186011261560606536214835546195812576098329081689729291008035419972900642669706275559930083117011002472554834084300112431363411348464285205972156670541872818749438947786821672199730925962768485260550321036250919919651679918931843862610004089815544619654225251918250504936923351346734356672704597358718204581680636574043980988083445831881130991654753116238922012838173148067338037580494977340480632599191817045158688105782262486087878785867714547438726973951192339699064987805193068492848581204895411037767969614487467007199345025986353232827370431230813771265299166598845910859027605295524239086589231884114812438643696872064245071335237513513133793958479986458717347777095730092835842823226520188154990414046997441160129335705494108684786775924351457865781354127982571129787966796993782988017899522110726579111972512834185038923085819452130540862307601121191164891470722997737862859416475758519025819065591728516281883014289734443329117244951933372236684267320151912233813248347644871789082949990603058200251112521930098839113721247797175449219093776980277818904739849260235847990276492414473729920548509283152926631987909985834422243088224447307493873178189002031022465790627617913721403686442460845674570054983021214307313147961901634624525216285152089720073414635359337554119281724307514460781877489751612135750615609019425736245925704523245866649026843879362839116449993853815645461989390305463560270104818259569881655367868112602596447081122381626636126882245288624472566870471293545042453262101815188747079989283082707756032845282348596632416613080815098245294674227545511027534700397902095996154886876965571181661665607433872770945574591563156760054090917969642447624673774026405700578616197619802909158477560873502003061937880391632608284541659117868458622054404728761827861999629927317562678060136632830977817543905722018065206192047629370861520135006661835656963760081961291890822073475245345226484518272244679913610985135280124133012212899519365428919640989354171536402064678416881898457554344057526318172572138216489079706368099148388342168649155324084005983113457195760844129559399507086979735877966212617532959483303831824119669314282111526108642947623086034779563382518471453126142308974096641661517744096307285189221485657237826731819324439613580383089904942795073542097900789735397696002591533767041939673065457342914430675751847855496214212258247151186921363880250531869233146083497888049026381093512857834307655398697362103173270254470218037223383660365243327040521113556637119187366488233647133595585162476028326724027371005558575178324069640857819653029090236982580396496153675279973319136694350760251754456126498803670441703272265209199235960763215473095092623024852683793770660157066952547980895767780294376773987360674178309529354976582151391244791012798183118887619340804851570623485355933694575629247786819138098679587447577863757688384556642705845752023323392563219878989456900718179530318790801270109020052650094422280069560385673689570456044849673683747005393225300771539955191342966068185459340124589406774938721425615455841294382172642328671731722985223770633979906402528613769149026147865475940092837232647996386875232395284670038361183678524711749032956295432815425943266524371773656173207848973751268253093553782166927271312882973565920757626756057877823006230459808131452559517220152705233074139042652302664697433026812602792117926457781302233118399192729221596733433544814681319951149759405371414332107586536549663413428162694503723261327899622180606957882136710984246966107138703909717382478720325458917399137081993215878509383431170104430038037613790850376950450733984045864589868038055548493729862723929914387997199621553786073030954924509622704724719409226156884179779597103056464953537161193429521582861500449200386902720401393756703573647130500882821875470670305388657354340207712344570918835782555454098119122942341446519902374584380792588532951443560810880443504098628738294977100221853817041596660504797568393595388910040697096198236656948506522670802657841930894050795073816661703216817584309087855376985977117331230948371387354309635467735245106210429910536853315455039654362182494015069321507636718233218493360550778926763688979959292497284562885847575705096194028319525086332939783084849019438855323171194000284680889775879774396968957870683204158408048983353897849839333289180805074363877472057461782577839452246462496269447556366057562363146891932197412975983543172414173045193955293210954080194151233387126670940878201164611981496478726547398334199344933574251900893520999384671838002469895741460280502839219703111954904044128303668036341638441089737703736121884060837505591140145341071042378915307308783853627453764886792715139544418083195124516155476086704699373778206987469154679381084850368258668526935509212994260244082949848880225521328595173459906745027139603976562887061979921456541703871534963221824196444110065419629807624743928243002892854732287919559566865619404732186220862895670502905686040137791515171490496856035976514758250245033490179464377160056259481903036353546547827226185536388617148976288876631905960175014235606977753411897053358441745495749913410506299685444987461366893872804758541725558070614954270986140302476308242847358264041055572025032993767268568763006603389290199978248534484857208986959386837725188014288977937705440761241071949198144164867508957532880813062920841329257541822974954520005874159552789083143201639141908564269665129607450167555891483277842943966274380557651698192667254602297431013468573077602232278470885361995888654673970472583627494700063132071164946287039339271191972867419624936839772668933725546882019492795937335936482414931757010519424397191335831197881736316539538497441569477776779158105529118001497086873911732725004888097975664475723421047677680532097407500854135994735054820573305884613790367184709730577968072451436936879832605478201645081472767130310282102752780612747822457629695556521363999831786191174254427006840706694730434620018014931969542016643261574933508273229098270857332168238517853628392493879680800815400458559500516946997256537128729325158473012481499231708825655754736387223770681325877805315220326253957290631757139197504496233551754781503149683704781741663920992839298930251243982282782493963966540701487875958301129587941687815295524442366172729621011060036868014163850316434072009837290088621412766574106682668821558473569184062088148419064308760493614879879039046699074698182592303163940679049234174616017149066721903703214080411790496614300840147306751355283536115837036704807195784418827475866268901128199396617720694977637284592277370208760639515946280938386842853445288752672211447142455174852755234731376769996867630896639643132396608702356086293731785244530994441349543411436747531872243538869651040043995051922484688789335694637720816247518153364035138327806421062012877848141804511377127289243931114486693420212209272052158940333867725390544840332473587913439745726172848705495822373035270965288466821754207705533017904198614030342040948120445730649796479304438742720353786401721991226386015667757791346410116301486500099561889762059693239434475393207064000100359086898836194990078808543097211872646633616657292216785508432009562669935589787873968285628057799752087973409257382316832432933083049505283866816389123147495727348957571174793128888466249287846282927375265139368137122073266976793650283408281180500293000242412655303558988626765917680760025710239966371909139215192494880323092239975588727988136786468678766243013343934614896764334067850781816674182065633140572900445682314555175072152076134976705698696876899346051504442075091996344790773648950359727221068164476645254722504633171260815846735405385418600751399133490658653615344790866611857656840523630285404518243082577839124119089741510753755216314816204600634136171492526061631078008628035437977291086471331120071524991901620193458366148481301177889663817872382961124706932976985786023598581603316811434109938572354074429128933357608590162530871150016412835261507393185615022980769061391875010582702940059627789265882873570465331055987361778471389899273510433423253422819347332456178772596550432601116402859584422752676116088531947563844161296168718713128816741688924757310631929351248088769786063269295083043174405304252473637956473612720332214509915928160383877071011115955168727157272763902147806283949485573692432913976158104487770674067692302894943927019209546936970992949680560775228475796693111311625070649897465603490963364809707629037882819860049913660303186415468241301705790890968239166919601891235509954601168850497784758309737704571612658752750511517265784735441516043880398685367962374925487714519155151277449044905377183352318824072554655861915986090951572273770737858024910653503161318722527308251054370128910151132566167254726545932744434043134377585281750372683814878031414072682595199281640024732397945239818332708401978275010639993958462042562696008105731680847028123255647334085631720404790675118475241272700458964263526213215628754666610813634523360691301612606930484355378891968799760849265924394581951111808043667751785923473870737100725405852688771511450651054656368910260996837363335142177733690345020731294698489327672278054861529765550771813484606789436375630028368725596806748882230140918948631970905109986726160827299493055122734303298220920405465171497515609355811023327278445391670247982470913403150634135571031733775917720316700859195566302152418708423254500965966970323565573350877360992381465671875260345432747339989390168268580285189403353107797269120190545325458040394377987764979404317846634992385415037989592184239703556049267346340322271401209047333335177664786662154005523459139934169380221111057697789649810152465251625297344261311332815156910589814508991358000214144161141516861646244364192431936767866992424954881906648575788481934984366456379075237602942247832022001489766075232494073181094554365687432350310504375527142400648776044218678138695640216451847315100025516929673967323509161598791544183788236690983589073677799526595500731585365355577268818325988648482640454933148849410838722077208382662557714765949968911815321417817329368902224644115235448859076295275168121181368689539341479225012307673507584257203078219002291355676704958414379598622727188622890443913619557895907654014675143934254322279983414518346487007277084157427134483239621382550070380881935582629414513021704586342234541441253591946093114345605598648127634817568126698711951731309839096846560684562597158430584514490933876639781107172559522942974456949773382610235439793097457228010256104431940188147999338003957369803097002112671991597340557406554793634579204884326312238805743412918192680237474732326942004025160345847963707975139598763877850795213092600348769784322217631583884664494559521589943905321360344387695600142796321849831190949786739828271300606490976800200589075925906948923427674970586248014045941915965058489700689372894187726260651182305036924588490155608518674237557922014132138123928693687640980801353882932867064200647588155863701589642147007917940800864343920232164855826069456455106656358734023025723806595314665408633885588547347352553487841235507528688654387675020489579914668829881270619196218568988976551356401849130358414170878618628469270254894917286660512412413310877873533634561472994418502629522883533563686267180915217303911185042119064855187283747429347825139109473645256966028163612789918893594864021820344531833888669668738407605228156393700584236543897872601772563378066210263091273560453699337728027923111591417828025128615410677185885181082182207708736254468534812425930216523660241119663293398294846826705689381936133942892208891079784753362617957364342038345486630510018712783589601304428018239433920683791028852465614096427463528389987910263841935409918146476522935331889709246050689818147478309201882961061832881280951910486545358400908394617243680254804374020798437475715677208755387050386066834832843614131908616166078721447955586317060874215773112475720084660176540574513784868290400545076576698605669708407850139539331972824854273834224811256967413785310360296998485132552426392708707810123606179147136040138558819805292367121265423431097955472834751463188178758553416533997796295669264036609054923539411542864324206152915257495698847703777069041653400516364305096927948163413924957100022554412544487948881947569732698351118187840792179879999074928525582309018182793186441682869354577846589979383011324314196169913765475500134284376424928506360231281195954317186568206440636061339068889703309380881673149373626220811265667005791615951193770597478969622338634141380087016454396456150359532004386745244883766928939713104954791545992703482302346231298418793187181463161991829203902487890689140723504142226186768631470924791454206622049727959262973352035868859374280146221856918246436989966518768127253094326880406917091983674624767693979474490688242877230563931898318614362666119804108851885684562215222521707426608663000137253827773569279867110860745269304829494844086497680633367348716515969970445576380082568805259325399102409264123062672087562954008857314974788923821448268515718427003083303482619112460750410705674784681469927595267781270494266897077691667937872365358996238720816262976076324360916412405926199771728088359047603056349203334410706026410841206371455628261391014625789493535396038826462404009214146373531004635916960235947273409666687185776498024363988786064646519961667863605735948455969572060105079653320180791006660851471872667288901218717072813951180578772251774521419983697245267603741359804174898357649394395535631434907875346012594169307577023868182472358375255338078038864661417205400782454827157646269824575102991029003072477867092236831755595726615368512051294050282076650506646026075105057744314137910816587918821582559149602832703983661606893934943608430240914326053555473086577126822139948792078432432934811857237378012556248220143421671228171685213501410670635965985171827255741876220452224148311809198995039998883178280417475712368151920867810435538442333726002566993469542586639157537156677149070187408583084717699045230260253877181012753999396764005387904181632964118049423438597756274325152883060914219302591547606813421239372374764835585527316147801465109523144791302783980635734218655240446265366418966580341668705239419048960945294872461504278834301088194548680123420235695786245380048401680485316226865720730870127239392722360738868195297911750776698909643256049600151720793317526342702908737831849241119935338878038527127404988899499960142447423408816044792172517947677755886176954880932603144553338500949761605473560378073617933887301231523168548987036243783267993854670288499127609321745371763430229833409091468429249905800773607703119062934003349475274987176315946302061079320897348038662391220884239637986034964463174428422392207928365474379821955165602118766629191098514990855540430353069222245499449197974430426958638768970030589505096764663307666065296414452730008920654351490062145149077529006947878215589806058003561243629246800947166770788966224840237745038102205897157265772359433044569117351387029539081266551668103492993914864062949113291831161149775681453468915741773437692558995168163661387068129757270208528783882815617376016861666850904948893540994355819229942097082686415188531341335711601962300435048504928365674404813348597363280989541892387415738869964946226255958538426210278396225886775824882435956432045500199265964002916108207070164907492670553170103352121097262011638270970679577988939217324255730234996103715459932516795751765431386746574165698855695363807941896286688037782931159030799708540910977690943681915448413964434319822802933006272188274909012372799107893554563457457093239230084643395216039265142516410439915795751895051565272512624671862244615673692022169350512611749389077706904335564543574831934989327242832558332343663272150979929880617945873026460236454296155083416050827597391604084721149852920023605146127660221263451302013483078762518255127600145539129167694908602851048867627094056697105818756641152708621003484919942062198675856600580483902434662138392036306449667010656100387794318348650220477616880413966133454492727689991659677487820844127965175441623234854818517396837592903263803375448341296502574020417234190349594263878343459622719572162082612093669599455559776170445135810875334506835283217191689017814146035489146314401177593929773884599221982450164408966774643613057157199463917092866677155485999842826456299031667274799955395093249553295174533796306208227429490808065306198353709705560427964732854776196776441904136859675241498910062791159603762039259365819563867442165240776023738689105052496242974087436256021504141157192051362618810408692279455109568866555933671192065453521379616821895249830561490145076421248531295421132761152377124488195014698339456256466704093512377405046894089011126235079451568187913002209900068375965260175565522062053022731688375960217354264824727177685360835190852065538148043911912511598435762452895452503427406842016419164013686435825505582157612935090754182088578884116134048641419276150320526885177412604331640994027482211517756925854601626192721622631886862128733333525021634002598200401540734747097689146713517525630659602839525214939653777152507804130112434643735385386377128987197721372169789549448539010821210602002638175954132907740030579338196052905220031098971558397604645975501600145914799294609065829535820741120218913725725349827977895666158199508580989040246038919046537740454142911698434527418859905367121866856666773391665860007697191181202715826164163565594276310034695887629193515680433277051105510477983559827980615059110735140636013652686626114541211496296848514480470371645184352921619244736394233901166991359994783413192371573481964073304713542268358586236630873178424014496604326738592341288196768313700961021581742393907429310477322765346644390574046836572340568333149007160449688145742059826999937559091857816610629983066422054828367291866914385901561674185509779934763920106102243169512339263391929256136710058515608397582586903230613892961991747595338136602812204503486428638289733212608222610994698928346141313536011880307549425823921413592259820990885233762931171126002676376147769796215051037520532475641675459941576898332585035969555447894694409450612542415672420262608732243092340830193851291148782497521537255872341202894875119954734749705559660131578735110633501334839884762815846586417114408632656812061457305758673702309865202187235569324955237371754141170790486567385704328252676074170789297013183154909231827757309545974706701026986054167792446230723009075606400542149185647363416040171308250827152736532089200504074384514848105629650693544568160439484069245846416839068972129643385170110771164402293428833845812714012380760391481795672323956166644563610027124635562804288426971660954172649164351062243218272925552639441284219154181249935432175508142610835979927579638719893632217807649098299029678149859844146987661276632449112193868783724197305691721607326596687376625472900552535964079472300685685919952643631276050841330246358251122362355935894634235365617586147670258529721308604029160535616055997507142105678911815273948439523237135902470262945194265622857447986106780334862324308880650657737037923160194224868244259617326570999489363521054313036484173217155458709476841239150070149108019766070925229872361402412252471996165905591578750493162199115336241842846103759795854672240588490017291074681765957256372805249667261306323180851312877911601089048307942076227440810671530849308793567154800558684885829819130007173227652871223213941252667039073098331007956562779138800970895283229080642623874192330465950006857091775620399165703416314545523291377296877094665119494477014144316173196584488780397855149022279206720706578672307100488794714021657745521916332016885657135652444519475604410280512777051251612325817481043366624218116795832724243595095612604434625424646942792108986099302716592273215058569384362637409142230519144296949314769094514845218477440411968335437985093924659509737833646333341715074808610779018355871553918721043875199109023232593034089658033120664236455840386383095904899339251371103861643192856058259416983368534947497180783602070363795645852835202323460933822043636017113376934175073498588635807164011652578828937125423246637790354133634503085915426404030972371707545464186439534448148005185679439394001162197207644519096613957830358010116451894200023332389892854744272748227040808099650307506255744239602467970722218067089729545383865501393561114033021027513770780119611487336458163312083838243539016808540206834444483604074230141378984344129480833456137987064987008934786979651430719618940894394830943006986913404902570043448202682191926396570902100612450071356231213403521221542235708590848818985909594484644072665640927123493595162700431757127088931134319429599638285055700388999226482702487202416119622856918250608336988359302584146476282330607168224071463245908809373831445526821070846677381497939942629354236531377228158425958866911519874196635213648174818995544480888456784308010844870467847373975079333553208315402410099829721467979679550861059889303257852951036376980087741220285781763033055195409576241062116681516851694769252048926635774844024862832516597112008921364173138801984828991310297048050722482545452167623574054229910154700303921557512540300506801469452328344204498589918741294212547760538659740196520749225158553405435254905387564600170317562201181998126631194603373917364007072922702355900614969204567214354506832865331544415544637577405907233427352193493262563887226410906331183198266542581941640037015011038605434064602419379921753371333012043962613006835329895353273479472350338798731078299843384659168218345740438931736689801840903945798992635605112430528843454547701732380872709502767425854855434090838997784477463815293606612681272316076830629433507573518931082405339961596528658836957097924059833819838660035706134022599771647511322704461738680259179363248093338117761129839512983968068241812649055663036110194195934476693020432142557355572773302303887014381902700151061698489046219105359974418283250672147718817384983152995370875079696209848001908200521297361993609629172087512655266661378916077060542326940974722521536565807699947404916276006034962613876161626793773014512298943294093602647136877098355928318007854734206643900273035150112274418247565736928512336038026090312873349438659185079585328197707361059971679623907140210667180004621515695764626845029716136485386852412426100554836255974165171811381548065260083883633536528087550391695706624069660740930985794820789579983401090918786925883070914498009883862036471454246646603740150996092453601153292323176671034681804422359698003851867953376700505579113172109436609694683640685310952561960597855995405839765811556179802265635008806819708828887438223149425715951264014374275806130448538939909096092974454423089409781551654700980038932548684926777583028859265238879082224823511976871068234935938504778942028536249675810836961377896406243553441296859861835227050146359315529335110898558571200656011577461829501595522682646271461363342072511879422050623105853454226771236211520882841278744513813302872188487617655750280883338189209202815013618374198747793166411300285420139677970067219222526459472394032496774735878584065334655971805834855476563213049531271652877053510131704369916700864125888963937051201277970198823632293040569460353617133156252727259262553326176260032352837562688083019437181884184728036116374015320667421785907025894109583098352677985101764347347265722486044015668117256282830580373697862882439986123637768503448463888749583666631808575450565124339450941038814730265111944913822559101607131372004848602775526957028238351693891358301750242785769667708450872398401471846600171176915840461677952010086665534611327497035399268647648724314633614790957314730603160232540119228146933591780044077594655471770723956684499849779356745672543487320811007987055430930505185331113779664102071874898134816585651662883782395622654038838906534540470778678118733808947132286973681530222115611233248232830833689152139934796076720881628013400863583867843230656494968506783322482386780687214255924870138331218920981722687993728516373707162017346611334112648618341317734973393904784612395010164882134244007647910503973872355147742684649449238093458947065936007977309904172930699895817489466173543789100390837934658706641231989305152984710262480376464304968479976771788390766163908063234188231698979804070988837860330526989713884841455068995015655461601672578842265992975169277518248340437825867245921832254664562731103227752587030742155639814273253643535333760643568535485633436679473624219898948273650854649808552169072470457677936962900263470308718974116081880496273540946537714685406228271849763207292337092402611356338936859218002097940696291210071770971861931490420323546613680037981086312162469862409915845175810365705233655993279706548134589873387616974678754493549249866408966595513223948995638600867544643776063396801731058694789448946154108322493662978444198460738165871515417640813500061502347266596578342377913686923877532074400648892386337569040245455303200336621701722309151126545722442869197275558919658990672061185887524734845048234049351432385225878153110885897004502468086525467714629417833962901001953841917327951125406295241580152839415992413359330489444932845495018719755475595124822121403020187579746906082207388918117834961315822733318770387443094308498847966448930305301068802999890501257802986347148365895112582281853533441527293108503864275481276557910094623440821338893876356104239733619175293953593036298085436236311787621909406327840609547011108870635270998009886330463911779736196768163648959417059811068301263855385224465708028084267384879679149879672263692950134027638590632279662173252367372595746232295337400393686244748950220548773497550499529852230120004184681721514969163326554598819735147692891866007267983857080474564192699772101646768549539491768147555044839871542137539549246430067065170772093286304584660970830304363042779741017144882444007872564318395031831643709515413301654885118037916529472064034561718485059512772676293817828016600105056218827619051785456387455213765508621976631518395707839633428074942174718468177433155101148805320050402640797319418925183550446507180543372600883809806583224300054572733343368356154268612306119523575712395889493358990983601874810379463993202497888154541557537958056395278946346288326526370781382011806304711209698887474432699282398912872355218137081338384861869212595689140017184700729773063938737612169961970011167763956850499031385538196110766127928535448197812333615491656628508540422370271393630344256704583537001519322783097094665068317561811223507269244143469482406226467077765672424870790531775743080017179698284058570636004670975033879427368069820283823619179340525810543470864880065574633155970259681148853604259569116967987042314627378578787582478105608282256837414505979122986804780793640108685723743831295669856853484288323702084769420669867549051031973892836494427532013181212451119356460516829968766844680668795800128145979709221938379420763579520683678215934514757409259777487603936785295959405451678101443459483927094441042904832474498216291707036835365744414346598458977021990437580175521199294646039875587405292698683197466543833585153786455778632188003621341937538894895611542145744021214647886267216788139091555406902028365657194017625232923521002856604988375914987376554893244596674907818868778075712823729545849032841172740510195485760906319787363331422293787871832871188159187435752746015524458105398903683666954750423490204964508866306481083497603787470452232438056627696406559009361199586856423088929229016784326377042905262334515251764880685924750659823331806852770004965134102845957255941695620957220718943442690782920228258161004768268080978449929070468247667330946972425671080599907848108891935743582839032266595599079784157348909619099004977152934473926372945737948189649346666099541186130737581885911372147814764624067567851994034211911932206186948959564498807153064310734423449220187954958760126548846607617020906797311786349962204957011502749288275485553217492294956974347705294910458229433268280012400644010602869694671979019859796680059607057381076082071834208331782515417946907699795033171555777946569312910955779788874101831746574401428462453330096908954633727349468528582448716427073865748850605620260655034369664936871387743962218238841288389218881476950044742853123142656465688420520478877041196845320753797126990767033581596449273140152907254511100282909780505837581758810534604937475778292562147888825712126616944869367438521523811932394339372597463540345349171087236071383738917807917953130186509816692026536900301721429494070966954771562409023141776162369887603500734138383467118893667787771568879170940776124544713404836436843540078666923759484017784970937694047263064457620350473657678020165723317027560367128954577219473948768974435179267795853437851456493368517751613365565552429270252312872035185559798476903540473371426935497132357852738795064386096466280578629104470131330710071346309676833841866483526731397678037569504757699257279574810606726741718877663006346027890237364540744607523009467626547928135614274769272122517724011954262617038484484458496303525720149419939848518498621491330534363848956996203782215492017980724726218751170938875412057382059050376295374889935184919914220303256143075301316267327559583770423058012567415702278016312684842968968526785946394136995326102742787587021466970054435905392711443232624279727639069901319422702364032084062682648514395414107973475218742303046825158934130205230596932714956754047750548448249022001299073811458683591523827858374983105933135961905995532242358072627180961317585964366611835386481531927320578940245069319542429663117096187907317254780938505581213517264444150009024049082697982795008047097408438523120463210669644660202441212607601975414862084265093606409607314925394513341391183597834510621123827553526027567477641658982769587057981564307392760309849438342511700155881344708126055392534833082783196978415057975122512879924606754049311879980690363910585567124556726569160881438829823652021325717715297289521761163845819902773600039279471334028470664539838895646874407073488030414866174902763688495854279432910385823096347016671238588909675073585324318512862720538193073651164732219439149323308629824778884358141057122973387444232248726180196112532365654979876154211803748536351659417369906957133859641175983498469709250822038065101283088417130212398018575620103796540978762281032159916734179603369701920480310316677399549593783435349201305552332285197908078113862724432436168511353607120535658738035122651405409025226537790160672672454351456802898793643630064582787577231818612634588635230048248443377550730210393633915316072211199492992466325751188246907072737226562170697767098311880355575660197112657296229404331561490623713202228894118463959445437676436388038506171452425254970419655563434174753404469802162439168465013702576412308340600943168349132751372442449903708291479099322008590561789705525179932703995548993507279278869117077960050373171649942683009007761489256062728603405065564607715078152855474187364594046479508647069233216078741725683687659274824190824540488200124548088443885497154789290462740854782390783403975768729271349099102032523468577303946298178095687604658491586220017661456864772570763852724234830136199540244504283940674313100883064172777247675144637142688310197769363656044495445577872118332150531037806617804271851171692852065437050719864240759423303227757376109966815860911828022497256317360550593515745254856571561678928349250181880216944140311342701665203143492117183642001150585011784700235614641708519826862852349629325024418733333535176050611782040791334645809222443714660678893740148720027658253918958157804237494462031032528394975996440188386694871504570198390787851664530430485878781787534728851491844282499345187748971092984994374625660609185345676522977761636603752251800184857523465541620983755555995441384012504638831563283364900406965606551296999062127591112943421862487616163224897048441676347656010734000613496278648970412975417122605452982027279059051201159597794093275341168701717003761730143404986664120642558187132068156180691340340408043456680447031043768716047504270925972453010385201526390333761318698695551461021700649479845185920137005733318116374100343572264808069446367834466569217467422984753569418324673178838709236919091916274937165046008755511488266538919820357002046966601768641394002750176219607508224288792090107087683444194926483281175242901907152412270354816855386309555697046628293493680866866690283372806485478304876644020899633241661188902422840030988332171659994947244599155767537055364860461768230140562995973786745112749729216419269802783036470141525081228299281302009699528026921907154694426817749076976946488138031050135900458921693143176199564100031545532519629358836184684613786803633630933285648616142382680378596389700836657396056826333702080250644786287992441922667516007070457789893333336518062477587822864917025621725964983658694641217771774835171886348337803520644177405762559233607458779437028699669481661791542710063570495497383231122904281957678857276853159216441590680299828294630092761443345424441642500590449081676444284947129089151220216387942709246707979469294197909697493490834754957640523280373725218167851391755536278932102768553302336407720072428061330605038462004271850969672019169247808139664225591370102135829546730357780730835998203294503955419053457456680634126081209923324628218039755450508423638909532695944539901220823883619668235100605164526547202572764893990199447203800316234323251584690392659801696071585401670372772857509052908438155644476883965204098047069529868155804571061156055169643824613896980259229931020873034012284774378122663704857612195220485302802858555102864028267650652494154048025246648223737747122111704394814646924493568730297808106115763367058337123830325997772759500063877488686541846689230642307182762455928006008753859815478843174638238265475933665172160268310436945272436619360089282121485606465381742224382991472722605798739157420205611652844442564631397292492834031339733987727265123483856651973488689385976860764287761185344553305937863089262631144658601327340811138713210108167368731379177539937242468135646755555849901886785532410963964068623816377827668187435285759994381455724587937834265514719558470579334219607739698943560643710205888036305045485705277687541504906209354599427502016896162257079585607102019823300495675650647751401372852602727997673408847450637402072452741887938985349349916358530382347069005792225446215493897770732481312953038583371668267989614956567449081218406983656400138914856350422019552077562710593602138795440162532976512243632502490227143916191006120744299009768771294881389833192780807004149555681922366284883058776039640019621304703891183040566707241448613854013284449188802468362581750962332074801951231536935108009082281707495465867963726478442895032967340389454575860208539925649885914588682053668421507123886991429293559980175215550804904806570478174522619547228295643194915918785322824831042243295970019904968529876161815012976368239703737627389198374719995146796872532016318473138631330509730451519612444737855217998336003751294949051310312515754558001437254120420671158171735714886231565766467302327927703910331895877814507617951526189031723163887989540005000887816579860944914714977457372878729241267994619426430063899361792326853830171501221339015726954411868700104223851216504305511730392607589211210821417244134320662462659151650258316062211901820384131057574858851548120779826200847073651569328313881198279237450393834900496905607126207670913873702910481527729568073691573388098212640126521066786196463950230836710781024464465637135656015638545724681154302982583515400780281443660452859764237712869494731558754796702395596138253934478136634660155599531922420994632275455386805164167187113939868630389189177258849894540887547602901658666139296106760443668939866765272511075045603996433259306500565964257178297271830970565983615214819075061119244898708640060231763172290502030393067000550011834288209513784122726865573789105453800070912907292843563867657554721594345872013715052786473368423046959568306897160896452037388472123418213787759686152761616504419047472174157870525417459253130302014829725336283085303556185487554466867436602160529277560469743263943718267431535635443935513268336796706241832361055588240907822038199331205718244907395020787683114202837337864064200651211643888323284990443216364146597849905813874958431125710112277951432988145543800715628593199210571136489732503931996152038046743512664070451196008390993588448104608991465528188733630602467545625883017302070339925401248686734831278313778926263488234470821200443848668750590501277311903671824168622560758782031469999645405180920762568997841760833026078782830327915273960031337558069352988060349664799729333920326165572610491287486298640699412904427283674962216103203465233376290068453029362350939639610260297144067826051608800466589633524930048230218269480527060697065075762324679807951935712613933125592402491152540227164421738411696358507143320933495178472723251843602273961217319162705229288546811440419034384301783233117646672014599621655422038005911777056966940135593186969842541424135580482176069848551282562433567599644420208978356642784238257677297808660270805940112950938934993956955236215509946904917639708243326896552677222141896856267886740586145253082034077810967948106438410635374834228771653799907121902998617157733059935008539895372584360094491277135466006795779933263133627722445551617066871276537420032293546773688488668285513692562077872657475356650070215443645255051353033896506320959484081263445068890000135685202799398704536892601153781509542161474896339801009938575916694884833777593654048627770541365142557252144007342488491179333437170957182801123687242434276020704029098590327210864276598901188808562479578158866952729941396485772703621258065916058268120128096224404302814537929629107013295481259819739527678267422779829586836763723881077758501170198515011552600068317091257345319410530674422491157737597899976218233090181162025877584798059619506853360384946636639740336682740605539535307758688449553767886810858620517095915671189687952021180299008202905544764473067194274746975546515450366378119379982206239493370179691021579664608940821573722250409342075406210560380627211108402568752051965201343346893295080733024513094431949823816538703217057331754344298766500432877210205184709262159698519556097336029215653709725990535038298436995434472791424824388937439596974289062119367637842497036494198712460815201948689444181038828648008657024179249485231183810493555259750222182019365090649949570109543657352673993886556602035124770186337772802743840736428111800758267434336847989552308515822457600002445145649280244642496474329933782084948165717183718910444078559928227531543033125223906815827897586603192793128553077459375502609719859032395900096088256707113357323386048683454584234196237932402916681018944452902305762474052279259674023994516674232147909171933302913079328559152395389001824399732239201268919847947910727488659471627027293648689942440261834434703857719411252450678646337612685375359153847344968875168304761677214431849506414727996260459731783111453444045980772642237786304210505078612637925346206729631443734066641767036916597275697029337559629987042727653634260966612325909320926285500711589531135436542032355895075041566713220312649885796186958145439763000163074469656731372464865591229947553763409223314987852245847197711656067390566965016893691219178190587532442249172611433679383067897928187944530004145139852574416915152774349339361363232196033758652786193623961542685808940434062593248251465134290279174339353260327212797639844790682789067020457415636359034624638374001374467732205029149887230491201713773614374294581558788191859934285851897917659833703674334246999017477495653850532641329746082840659617313714508544255787762194066909563686214465130607044935656003098221575740537562964859714646183759527665708654623747535522164879122260494923625889008095312411999570242880492840937515858411051728072882942333336789384869459566876978817713921272231704235943677015234950680542502419220746393603966159829975785308928928590674695715551657562266636621243394441060522712296074810279420507914244127640955783928665749646432190401119280366390711304441340308290577792112024377253931144027307029541176441694035978541312184710103129244904036272117576312516954263918283016953735885428441303096063912257474409282492067021094984816558830341341831819599523935049351254286623709750078361551088680793878303993278401717588295777111002630579902994970130513317067897130941806799120670867481479435624935129781637094024891031094245002596130110312199920374873408863103638137496498328115682280029062980742887850804839674380519017308931139476149935705572150056610621138154131384934689730407191933483540872985279481480034588765748706700439783780117205748872488636176680081398548501942021554950212927678821911640343579497605339063884198629350196930695556233226421440918569483636582237669567456783052382896195817563160295269845973674546089967694457063492981568515814637374608705755065952710429714658735515579264009491183093610659259033646498574426548749699203211009518836542463533739416879872776576574134895810915816142762943389911787472974759827969687547763538714861720285803428423658687921619712249640617336217486207922369560088826849562272286605341004563970875882180913080303532101510123015542173795820358028405356558155286231154387583979505617273946752643325451460962207841071043463931943369879943120160776720150086783648945856404003211771423860098758257100093137954514449317545053873906611728905653768443062446125519375882689593741092075995160667141720022319469359846797134388443907473551438494175068965314561651059617517781938992574401405580300277455722841694062812345452997132448364040143260521282242965617243050907390865913591678510803961586295552108857027962850610977871454566591646475030524229891672669282212404548594771056526026776269980235975755104010097548913196824097370583730556520391070572057730352699464242060477943311426600506896330020350811488171376369493747003113584804596050569031162341726258804620062710708956337107850451209818656099407871828889747346651458578747337564419950948561994464373247601302073754982480728120361516373209153421003319338362687065911052708604855750700653968229079488786688157016387164063060145038786127209233433009871107691390121703736224132230289720174183931402073860047672673731134725916447067948557668111718629599799761172497982060665432558929341429124421369214408484432736846573747843626385661759904162764919529672548208039902402879140695793301900819103537087075724383429114619596696652479899982477609893721475387182096900824926277185632637128459346028571262485304437952661370556726867800769550810279427030272276004698602035767524098960839544286366799266805321215598863302194871844182752045772081778451182952221076173612391712701324431369893987471314040892830208990592872442744506639138989049500651916448332980448636548627875717902868269801078952304960120253069936449926832324164489348104167325427474854854104795173341113853925576624817282889002699736474694034196572153501993073812234548941648185785143199406782283118925001572861160711303505795205310811840792895525169420152958229518664707945101775609769555258380094910471442914321968646113719599950830840716254246070252167532522470331981295664838458571690522321898670608455310485184247220619065749674321485480660238300830738033537207532523300093784504515034526989892429913327097153484179192772302480766748844899762996180646023483207785339180606987260832967759550074093704091456232934187411722739620072851905945252687341282312694778174554438735548539804991922500509365850745187999563174779393281799187364549586187786325505538172934956374032667193825480353833990678100903455644033810403269410992955800709137359624697189469392099804435585661088988333983333211876802300001259193154410901486887103760230126899141515391125027588078496166647599997171650122964258232741534490076872767068801524153160067730198201422035446577690773374700365291499899803036690236759517149949769137056271038897547732813433975734590823455655142706766081692774820193687602648915483520096705489844063222479207803422503358951630144125749343042279842444841406049410274631419155612743103781980074334258860673794633037926436564120787527581512732066245432585564706512813816596659108189422164123025350276876862694032964728839576168263233893946694083636721678030261821218023106324085236879532835168435885924343639196111449898898700242691169693248085083136219107770513075264292952826567542295922559368723693213204426328042664920649002383552241467836656021872018511104792872991343297184221425703861290270990757701975638320927634075238624885931502554395128844360828102154554074035554001162941406078831219385956268425143396314355898079171578837694339368907601575524747919538815470524985385758802203319709021943738451715767438825129665351713584746934669447896421746357121421151019047630353873944865533167019912673890413825439526838043732243769905724367734400974012808246436333641001872616159544822112084022378189452027237490302695200004432644360025910165754597696284326489126674844353345012091787413525415055105528318074258489661105353909061208304878057863460735442793178213190754350060629663189738195778252897368179098668764242748965540766666554329593318733894526091506487372254344969067356117189847579153728366190748107015695761405210392851593548054810261262434391268467382602950486839402295713869949161126907218440623158051057204738410302551304686152349143780687807410290611535429145939237576909881706332529058832189243983635907174590871004372029527815470480480330094974439293508352522052297367462654251224918675322141399206176954745082622741762695329920331218181220890547522082153173143875217081016078991078799577373112195948622872992096718859121334435566572722342673239817212205578699709956602016691065820007876405071828800765471715272965444854578736726685495164152628622152908053366977479740030224363523972872304745743159325047269839037587690971743742349437144731029130966156215919119259070471800864338928455296455326351409749614918988775895338908461116559697219771908321093248398904838342023941815940879795418543424342513722880839821849293321091598736467361803131250541803342992735532428990963908752224503546697170341249600104331554569870799532502802248074709018985191736101790605280594040619042201408019361003260617942119486815807542782287682244990970977969782142253760452539527619605579085950496602812218350391467706224552615557456682630326237020272353816753048498101514612236997567385887807885069332778099050005785941809680395747393490950997528759950520550719529232601119577408352536426205568202422587293430830180043976383258852373628924324866200774001358048084607706229355872570537998357319174431068122188949667841982562586339434779516419858436081351921599868419848103023035458254649599904543376351689572020143830914535905565816015393769008909012683759914840704081638465841647762257633926529661170954257872834835905248429178761234329869698325214628938038024247627820803833500243594041228389284680134269866194528941058403703393403340805310564221028640192510819020652374081294574433030412991655842464139111629907902238797397887890538563625295781148650064542039116117828884066525548900124826663653541928856906556146151172300379346199858242028263363571514575178127084465043373056809602806352741274418044874397092870241144827350676446876778846078179355899264055596108630809181461697491599204418126371585660552391117690876055842871954213628662026516555815921117618075818279232694748687084657460708985326307717838882989311632800109183723647685815173680946979222260461891125950321921270303229586839549545543268350067664103708906392889385720931602918186504732997400320506251528998745330744487802941871006975270546697795165548250507278533653095914405276435319490993172166621716179725104610092138863085045273227204410875676736837891017633141830572368775326406328281267407652565648624944484308598670564700005455245301570213291049389335055303349101154395774143092395997351228646074720676297872872049741125189773359152663756190740041276244460238075366998915354398473812768409330688357179558296782893936175249806582084510066558087062492203247821818293614130769718261998484406443428765699602224713997740730544735678584620287656813851814689657022018211440958202312008945326830189815522380376282070706602573062181372107541394459185006983207479054689312832016659040996017656796807409076445480359177411969652614989151459187594051390310038776314533435492903150090329131867957630434479183971040342561152232883582157754651465223016889815638132523958887543116483897405207243493168119897517027986499235813357099010156202671455071757438600585060005217541605066558807012181318878925958790955522352903573764068151311028283798618603110991187906242037455584347100635016349610495687609386485516185161299387669748550089385870469809435091975105305745481079713269225055485439799239273315591713783176733339589527510720389879391941100243394666885139242543226191054124842231862393933274725258646306286220394089385037834955482845829480620698987486337471945855585906974602774057014367533590622654502346537305691363709206225375873296647749535422786374135551773711847959134266827960698374400162515304556646065396586809602376712697848249466536585439418387148035954478506582724212221553991385407022462471713565931734165583059692943888480884662563892822011809739322952025680516170945850798636696145253910673046773692342781467588682065240809825281398837756491746955231395443824978845751763081484738453923074158716071634970656845443596149496705671437763241804663845799912400573605639629906097575174859249221320606118334072237317914553903181778537637885488531879210444683432660513111215985002148625746792534062049814545817158149547557063141868437596491313539257597378096812381329569575702662807276883642791737304690572831082057550242903946461573330379235107026150789465464520786220819212299186038937582278630931819326331920892634970092666704153701296153367027693939936112503847656747391833862818799277995882216899607256286007159165998683284610456146018535100266368056048747730574495792716362880867151168440747073377036602296405615278988281544127688417010411843725127693172963767251243332951739062790477993500917558024323873139811281828790607011169606838360416463298060110399265068417868435084796455386900425268400225734043548347259744361382973603654361550406714225895150439002542136773826871455363581775354162333530137057498093664262365590016615542876755297715639906037525242395375795972344578873822190686800321681318995412583557250012613018105743744423880829126891542038710299911864327162308684464062910980914262251866183163316581087628546581182660503928526486127158560543178623534648190167357786638677781113783232578346341366569914151971590916916210140415927675898486110275851634142884968831624070030300706169041446932224226647761293981440930239203891101200474742199121545432343512289217600602797635862549403808221537642439116609002162564079430802263183303825416120823092037324952907627142104198066806325342822380728951805432743141207591990266978712010078641109029539370060574672537266975639314155032586965435707952313922870526197858376750965939062013684065119652556279979217270770472251638959454682915857019294862737844981922262897578954550707664489981145836966228854761809458462749514845667726037282141163494588201380970680318382787256470563379663879233644985986005874861152677492830156506683929879518760278105134082209977938794671769593035792767940989350312617509743312896811976510877319037061996819297302254977152286149357439497060173245183420399288087349096608858802433329310206084641708483925320248469794852458894378921767138555096714784776924231829469604967599611743094358146636977793672621342208316349481724025444514863252089387964992772522146944519701855824721769405399587698920271766399165632194301874696105163106152523721468261147578571391873566799753973235677245689213217766492173824996905199177730432805682299059292548987732842776231405637800652781323871390926202269950502989319918199082239967083042433653348274330758614465161529621844344655959483479607150934826494708733818699388642325348639217649740224650713171949946018250781095455492063811401104431380125730847760139281029365818088047655950920794106069095875593808701744401100422148770450945314759220668184746174555348710860394471927498799495983146582362457562446385092802218065493036777106677641199854669486627234521641275962723351270281145664239989830666813975255394334506829173268340169951956714513667792786920153093819557492110149478873709429456747332012701616688019291160309512718951032306464240667326405139737698860052571021418762856226319666471005120532793487894221542958420994053885855129852748538272749058253678673554417916612183580951298182339410053816727782986587770322501004142291227926348964424606551146950949847372932326778347342841933925186384999039389501312604804374546612197617170673121122356868648514339665169562230319296864558080607651426465316405624696688157035869000984974607161295024315154709061711464602239192757822854617590555134645162597069812340663731822273010736999883393922272262179535138363624468899966433416924401106215834210581382735329327933179781831194462384920440880569884853689644839436816744350230280072378425428812642377763339601486220461458461547926298013233775063289027247265270213732483034928379513681469151973358516440355270200033179297920868859824643648997641864725206145220023208459947243276491053668744832706199644145143184044716398513303810370248275559207512531438556879045990719111035617859785973063048947429487582609960829477120785609896887861070547434577098695782170901737808147000630798507134811036283049870031504342495761204483668618176924090124800924498048171996433797963993124969127698064837419042665305237295571786062319931550879072104289765809353501966952615636801529208803315245931513029615956895008606155123576995564646459361384753666691005398976418240687127442707909543690347065086185913152801375043117792131016657386414329639482519079537803433361764472853069141513769227620867189469380902016822870419585920071864410724958451434809449066272129146089084099885348864970359722005422946733295509630006682928137217389275716928283307326521178143929473359456966190580072931583650233690762332324622690958006781428990859056437076005103470919478595608536997200551478580831512508159481530777609369420140661720331352103085082154820789539513616535169143003882422781869634621592777099924159182589397650480387285740145298205019631418635428571328414433009350180249488770487465746703057126414235535509308522588946369042524915967446701583696373051401108890414548833973155012367191994480285450867404976055984998045230340943472020286556219234123280106242976026069529494831835330929146086256339464593349388937341103119556847820662388495525748309214683270938779277938352877096190542770968038765066379894466952378330174679381630709337954659072138570291091751280597233263160792815576199385563355659777711644074494833735540259569949391292364339467256114687538791020966783722885546534400727376530442941156216125374045040793450542443860390733948704379138335795866793811187209006467376655538786686785048122907262777314475840101426259276350128497349335833579121838582270829225905539788142460866890337786700010322696498507805252155716151216932354722418505423112111346921782207423006625571911961553044770912698892719666686574613932210137314250163621023266140168651364366178416001019322391667400887911430793173120661170185365501088111788279482172778578080814734168520837832360923665019655066667299107249253528405623754330638241804233466539644237412721901945744000916462156434232298823637365017995127737835721155685143558530111730336110052249787893105571127156074466194473501416466778734163657601833144408343503260794877525940200567538596797328083753020870529262748696717284036826299168008266191681402917328309479952345883426944033048138373055985664726920169858677299734448630950682026151933146682553071213494173995744445390002488465450756346155921817529686295465229196380065104484823018533239596071391956322852705158174047827542834952487466736130215362181867298841297385641214242354594376481497755727101704555984607117054562718677731435466601360926278106076196321397406172687598561113310798298015986625491914429148898300557670806652445686919933125030465068441005199079467905564949257944983462858522663704254934025140479932175363195175434104703271659735353805349183904841249408220614939847250445582437911760701730171099657415723621265727356900655688592759668819252997208407913992367505492715148371437785306844843224247843296357563322241421187385254340796890365627332635238304930672364050210201294634982532469996796262504896959554707884417955712995686380382191857273526481759233840365086623586547578856590350293249769613167669855875889859517708924818800134950366780032893404636672704577907807219477615191725531138783477510550672218111063870580203761406298814476346577142399442601597702051078716135840435043555249663949311416034626032283982770240106376279024614965338935912875395935753000612461685575381238618065873264849069121423629172820122884231052977548605627499910368745345035433760122276913509201736738307978362134640773396138060079989657066188225493493901804742353524101410061574171943954531952171439835270076115677146630548169607938665232035058116805376375597490098903478890250621458531979344034002346130282153614498797450095058963577805226841356010999217255638349032797885730460242970582480251625931725821631147256070632255906215297642523442124871236261870587203972826970764446288949620693474510659807976942471611744350971890202209477772582324395604222852041630490441932074725091119754172475580856422749699319930934934633585267508971967633659330382089418148556418508542468449024592248276844008282847718761146422870567651024430480911234725262048716177344617043552146750444146819859668800829811728290818661167021621093412775360689228879895623166423543524943576575652650464101628144443951479595330001141822868505045066377431406119293278941259144894013255603806665095601430623118879991876927451594611140657068680804213338542835426073248139094512404305899143246239768812628969976539316639592969445014753408475318737146844029800131549793485306115712929609991816857819646258750109459152265616559347866290637152421346416653299105670827338758482602409293755292505995402257851631274084724226343020390476348772666977773364226774314594969095946580438421167839159399205966360330370222713291948918628130286999543075743990603188081784154275669843261013152746966099504290452777418210859183987762950801236387668470423289581442337889878929517339344960656604625514974536479312201880848220950267358025251160403978583630129148189328578097557356752908093272681441055171582829250993297279137582685236108121448707422450729893928381623690910960506346139685012044609080965342370402937423220342730983743653838699558421194451744421002437344507677911187293875602433734921631156923590617392827112852816096202612756765231941172917008294295423290264198051639533576748646128463187367572039416341651093781219956985087978722894516207585274095086603009560761309780941255163468216136318194810342720984178637501313703837332272944603553269229042691161042782098931463017961679655470949195459124601061859181195006442073361742414657955482145931674400180628999556687058748641695730752852343170287229050255133035044288223003860142574654377803379518515824874609714253132111455072258394201944972501650306637962825380051448338118016976796071424169802398237315987296296830466435032643214729348639424311555911527821655916129404419118042310812521445621250059523249938594500443951208758500812900612499691197791434121485505758119165794142128935280172998711333012267635871119594879259568333347573967215504458114419390605073019524278565424111945851655736104283047223730215416045315873761591073546869815465263125916050328300782017479025324718893321345428606979240636796220042264068398299566171035954084040707792466749786799768730619009769543638657140989007314474683730353920576217434084809682617657361309399808848945832779683866912747636525531991439280008364430707481364686148467134138846036615578832653396174984469406103471064456080272409593332818737934319991226570765481505007015734329197601331152490777662651202152266933523974378630032585817781668135094789010232086824402636004100881710867515784949141168980266319448899920134126052740808505413319535780991305133150946568779827019870268986959175881227913575676384590127895251165900691349665255195128578928004069134146151479663209291822431894287396509281327536949371993162513768489357019936323725167992523984399734058952451876825377336819686783434886996882956022027318838022900891749843342457165730690993527816680115859296254792377502263942856962597691696037800914456457130970883304781756`100000.41447239257 \[ImaginaryI] 

Verify 100, 000 MaxRecursion -> 16

In[42]:= t = (Timing[
    test2 = (1/Pi NIntegrate[g'[1 + I t] Exp[-Pi t], {t, 0, Infinity},
          WorkingPrecision -> 100000, Method -> "Trapezoidal", 
         MaxRecursion -> 16] - 
       2 I/Pi)])[[1]]; Print["Timing for verification=", t];


  Timing for verification=1.90774*10^6

In[50]:=  1.9077364375`*^6/3600

Out[50]= 529.927

  err = test - test2; Print["Error=", N[err, 20]]

Error=0.10^-100000+0.10^-100001 I

In[48]:= DateString[]  
Out[48]= "Wed 12 May 2021 06:04:32"
Print[Abs[test2]]

...
Attachments:
...Print[Abs[test2]]

0.6876523689276943698093124093654401649396373849036225417950710101074336625347849370686272982404984681887319293343354661232862876654094575659577211580255650416284625143925097120589697986500952590195706813170472538726506966897128633532224547486515672129994637765922702521974806957608959939320960275200276419204898630952795073857934498282503417322956533809181101532087948181335825805498812728097520936901677028741356923292264496477109032972648368293041749167375343087811805406229667842468746562451317420490048322164276655429005593502899361147822234242612858283264671860365001893153741476384896793655691227143987065195306513305688846550488579987385351626061167886335403896600528222374490828947986203972283317151981602436765765638330572359635915108652546003638748683763262233429872570955246376830059103531493539857361188688842017482419062608349817303422370398413326428269921074045506558966667483453656748906071577744414754842438822013366281627411698672457633017605891243802731997984088305950589130911719198776146941477264898934365742508503405073273852990354658711421749963558451447542965695932773286248993507649001286123224924467042322009048447796900447744894667043427919710333258185793751771989865742583276770011926585495711579480114327818546199372349313180236079138924880815475956430272731122319300522964089247402266509320796929779797230879548321825617140391652145925194320723410060908675584445905000466707963346545638317950978935794173691635274461184852166407791838662429404088348764706235465355810926576964427699436974155572226349459949283455829193795557370648072298238980631247223974628652717624888311612428546994730366718807550682650781147942858280736659940754490856099069986616723330714424576483574150117497967916607876523114517541119982582253217009185883362820212877796602660064784306844289431040134300393911723686724565673268671913920671602825581914180233170194202724833777163388244522504933432900882737132084900647284622686801112914919275488315399556092167120805967173270449925351732744752920829718067265412345730121875889227852589416793593098336321887751253399425197827209270000399413652069981326305332739913264169023117906331493154690692761277563399534820991116667872458946782176710659249866382705703436363224180712183154617549817801168728459043929332223126340630106686358907271729063029144198268411381919888010023118261358779810486361118543397600925486258552722284344590195894315356114882908324287401822648055427423139132476737614848553178776790812483187368857997911466285618461216453483637069937144046426376872466829161774368171976684974066359027773797749069318346132026666679347211677427661840812476796536979636273266898755679733812887612926455886765773741754861714680859213705687960298220660961388106949016638152882518020470331589671966706992307745435264972349603398589318830915039157957391605963945365518885633498035504728156029628815083668049982180691806786946857168770951808840896665371600935655671428169490491403898899696221383353063698727976967220041344889341991419095406310096225164910261467694433320121302471186895477274199167504519824694749957487202780065482182379711639929713186666286683221533291476132588098308121127218177551895153950385206311947230138276630382085146774326603935612349546191446396064438639422834221199837015235172023503499743403574351305175476157183504376947552864014462130776015948149671340140937495772920040065010031822698852401512738250949064290023655385149982365826945887397603205135539316165380601608044639419671931245416791515460244863862435457515333493229839340673417458031693493963289285107746103839947001536643991013697118690959933120451746226250837767347774578964530942514555919880253035140389792762289117223323913516742056716239887396547737149833508731039542279636238022753621215918452924364409428532876328687365339986759320089182346873853735681791600900720685759079298318455688214311838333281249174773305631311717969609492112067080201231001286411080043783185262069832745761903590426849803069343863268562321336686412952340425634554237656772128770623435912501658848377787697023608445627702394855133449059102259425374407763123266086959380945308774983090039320278773648213362814897999210954495484006794273503039110549602632187246812254249501702378581060582054539282010406927989306732459729904325176737033120691342928461456373230801836997236063801977842524654632983813163935504323638870804485730040869236573393289787680920202569330533297409141198363561903851444226378380174598330012146487955014667282707200231768639659858770248750957234942259344118480247634418728001445086006930712062175827755212484115865938617603670324712438922332700821007231867188489517930577872805188852441215848678186315503444722137990638606255991512917272583342055590185772969060595094167858705702564184836509080975087005186384280580318978497607609957495643666413145715009671147303306068406506074734076499819562142552482461165778721234749730729718484327610033811026786361897415427234548236996821666323341733850192911469767997446199904058929032715597446808970630245477602681718086266649912962817426557753929610353580767420395278207311592831754489131765470821597214501282394198074412804865859716397728039642731616964747530359508092747175428884183304684145842238771797456784304476385041812520635490161198673563298629974241651440445905697959389548816223394365267834726559602228262238594258791926588173253868804042127751553579375812660221181107121562768041934443251674740201949248294319630288607483296159278899105740966974332575830733316313624663236456378091246302961166220133461664236316453954384018130146920754889329014419664669876495975334232281414599698481590073749928121134254842890611229567058779439633677319929469468540818089913532467297316564511779416516462577225149901319750770912847389564362053522119161478741516903258046246677189012578934552126869793322197407222825713768806274892374746312842689175365697760380618757753956217158662580850329299609782616783331279336109425809962695141856858551896168763510183680471733152683382148292775911347597233085288294483303225795118524965780844978397592814421262946555540112177066794335473818201659917787932253531866938229998150000779396927483716678562908048876122219754987500416120880195447086272837187888969096112700812898855696889795122658932241339362129092216971221550166232888574685835109185406761219096081478853834056257820794019444782037475896404945347527959659475569776102323150335469660826614058842772527913240804182376045950487283200157740663749049347226661404745386087006568679287731724021530024511593917099046285984380765004982430017519570917296519732707867556231084103251857571248411884736777933686172403343721282127543218309431291779386731578455102752322700532715764803948836395370162396599560471169500485677376220315872395355427276685330991626734127579770190333032004299178032192804275220423890774619743655170765623231029719895087809159492889718251241687389622237818749955275292197671247327684250276015246133388813836260444368339662933989629765020498059741854928433987111382483428667129981681738758263899991591328663872859554613593534332772345506568374594055793189423733175329204547041093999957553751258530707556779422059138466349877017262701286440054319475078005699223211745357832038920986775838715366447434521654874820928491567903910300297453365977093165984687036441363467064858816019310684318810627833848481090651856659464313758251014167529925374001345270371753978359591634780806930389005301673182035654555333430866998823821558479723485783324071533773496489096333635289520915847211445196778925856164224384830123076136517435075981062474391802783678519443261273456417538652140678555230698206085566142085784464289245782184598165471741804331291575515534290224818566305238750103493474941404385031624344399573873510117346907617452974322817131614842451156150323618811203477331931151313291284279817062147282704767251266266085202168087312880621225022198016351604934395149203682719236545862400796242655441790607662164234000826449460400940096361876196374323333669972323080472861630414433778402319846590133372738440896374617891189584641060041699757608654313732917194469205542680126958211762321859383018330138696685012127166483139911927506630608408103758316517094456590019459145470562142528808680650416715739921366595622198788785072979507842823519173344407762315606635344180630180944723755838680076377972646901980151678176702995345435548690408666896113381743945071515112868525532177572689287044047374464813549899593505416033868566352358103788436922334406053203524454953097870796198271597563473957208788123015346040261089153308011097370009154067869698547964887709353869470394981467831817890634413154648023742067578449813776033680020549812223035367536801058767531317800761331040903391582907003895405140259268246431345657556805922087061797441343457620788958662012797062821630293362625609852141135488779200129218344299271349514811413250388686391821549559413570935660695683912312876471002455578815070099640356571548914812053619376308077196590877493217668757539617797004727987239068206485333331787673544196112681296243530671144793190002465810239494806072387437619299207453457707240901496717757988100320360384459746583867208924525464784494029734790758216284096857031103473570255888504159173545858780632182168146836255826981876549111549237035733520991681620137179988808783864356030162978405806047446880760131827476362631880526962792473697609659614343888975080721708988570658953770484503399501099050170403048597841390669347182305605897836176576654087585778015235340819135128638707916244613333344955183607347019344524835592928036976314942263243860699864472120834782935559684777588747207945933937600437744176645602413395462269934331455286274342142237119558946750781122497407666650510044733598529469874348153627795647298598937914205992766554731918043604766144515097163563332107066457676982850337242017638185408212291169344678535868564943235420079898520034482923076919165146298792926261968173404299941180581738262775032083657496060756493993519371331793877321996852937887564329770958109470571077508733734004843035613332980930784451330513053641945150278524047280060610354671811000342930352990649949471004791223780444924946887452586108350701058034937470104003085368562284891987844992939985143375153160086021888253287441660755929318465236651840528517242718462892709856035478272636321259759477095363444162322371800232682576668024142185208160963030314648625706400169919842237057672033582445546228577424451069412301526671854447968298658791727665688858177621624228786523158032912980803859190195245810858288679985045891386887089731622639978569520769759442807547986215544406329006993376316051975835380728408307339302708779454951300773679211221642920843925537409619659490412786909636271402229418497389159424880006112665431066850880999286853909931992396790064435822329298101216840439078969969222697453281273674072670500165577512497362009734518207252435914588590590217621878409265085266717119748001461223625946487276584311600635608689006769023302998269587520729300362620422327474566106950944075758845416931372648093736502125453434820998034695971542712479992782388240239668131931022208571930464807263285084847690320137874871864187757801754924672845497591173138032399210924415778190359387855420606436091464940988720764636219871857071771782855574515705549960610994504929444855442627745218400049294792393968113366768429933644260035359607403414545766633433179396127546203900762721399545203617729727218174536395825314574637871367491436279886191237061620454729560509949826892527014246817554188593645523039199630491400433777756835534742213036790534735027377834842622842866146909646282771553166122366198292296538587366365490680855264589923404820936593312667057527580234482957728951816111481754832870832326013717188738153743143849576316287201341253072908180085563161376790661119923544169131353695930622596984207321897752520680508901050308674477391180253126245873638381863298145441588893150027695948533557161740164386780245451807308374798168924322870769136350551924880152547072948440398183972772458132505427989458092415342403498072159111771345948171192018814637460973543770878972638108600237580253285146003605124502926707577739504106920316224981929256290666585842301885320528607879480618203595625349259801776941468071383960094348847297692815779508313156985668106597035460723191644079002312197192106364325301699214693435354138506532323273241634852836383020455029790145002834976027958603339786815431481068646478253530731655868374494976445140781757935335026604724512625758849637704746039516149186567024015774468169889684574005626933689121436794654751667862272049986270890923648880102924276332006371688033872304717915179817205859112424557579148977894444179255236039919879974316208579704649208728433154731523489170766358363734505833925084435220862607506521100204240285254899769622423189447658410430525298305119199322221905574182852409425237792558170303715289353407242540172037593488758173099182829032511750655578923083758313447321054729426019498298151986091259595433819183572099230886363022383528375925520551930077788153486728545459282782852463503109607788064805188697113369512611392966222955873281909760020762582403972728768971523438297401018576573937228419151314295923685328862745230854333763864404902580354410351068227063321811091195468857249458818724197100979008627599973183628282212969675456058448450325084101250683160555886301265913790346244995873252518861838090008805089405433606635579111937496582790627486484215188226885062129724810142831205490053358321694463186162612251008208294876955258481534212808366165219077242414602462500923116382001506867219557931218954865148759134543781375744165223382501657937048354674902502648609183562488558072910720639474312098944374259639794698653265736105022749252694482610391899619781363787117606023838209094656676583839904507374974980896790047756568520416314534976720225404965344570173179722458093113014443631596690770509016903565809025987503695615841644174424331241124298476776239652260258596220885955345657584644367405778280844998126190895498395124175974175072090158188472281750430401195745139509667381841485984206540900469677403491098929614485443534784107825174545200694532150525214448870231619050151383018167890046065235066791012374781717959519944829813311109276339775412834172791060573863168725474117481893818539726574724102342826925950727984889994747154562475864704244382778836805821848235305955335103133405294867823392361126518851481584776067482142309179310586319592881468675805525221889123989998729184599200943481675107872938462558594637921328255634920911178476558551396339267206748281667581614872619145161610999312814420227094719673475632523934211639804221876297140066678802225434391677222249745636809992100574649532120218890380357790635243503095503113586051921000009642939385117274595219523392339270567893077025470361403128424775590886993604235144422033080952662287575968733302277352440980801013986430944074295957387113913675755447195333133421060169183658156151223218196828368830359530480658012795765835277613879431211539382793360916984248750426447366328172640764926310859874065115700497402830642187475079580747118682630653681267667044310192878427702349586831268018890265753759846434634068089830962821269041687772221522099838410343155854574169692137581042524406804977963526938883898548381016464466015421598535531400219107218382683415036493311189763587210179428144265984307822386281519781826823490593410596201728919966448450985685115257171140774398122663424264897707790726291782159674679184598355219096426913723899832964378614088627600166925322441199998288577025810792632851617242226801459870003152564063183157234046599949982372774373586050419130373123129701477902211606490504711445487289962220648923459982658639652736104300137763100815946740094111505448417469921789441878023978223580681859294442579529035226459039112519492323917523838553054883149044813283074109472651068390236203284541582683941854134955551856778633971792479883513565266495542887474639098364871879251581992810112820815739256323226247730263313176151627939541094216607360342662564641549932544654444617696177770433259438339027184444478945239479966816543171083835433092814699225468236508845235178886938511228784382318145620288190331683171238921233508139975927407166166302505723928502727222807062178785088593281306427764845568284867914382110154121203991492688313787213631087889663652495919911919900845487011928525132766513065180438454989062078484437618535956301784617959985800637410556518038154589948153462431784475172398553433076711016489757041907488620428371339720616573244408099445650113953227842906236040606624509885364779689081737054194263547641006479035884441028641669803092843339344305458081215568671254763016564647198305754568131048600729435697094601033969296208382234552953692947984558311010177276104478927288235370228297776778447247562808363728552221123830214225871617130483257961671457638073027575006772136093075502480298587328830099671030652001251124780266357295397103097262131844045256921175419144948185823793968268477597877361287228339752878555655202676317952053687328180692151269180195691673936849958509778779315955813990758406680405126730283720534582051591680838190134740419403579080565546926691545871774676024685467095332253400360106179889446629207892363880866846303669442832230676566808308318346369552790527782697158419528164663797049120635984489283914271931990544990877953242097627560660008696595322802794391190457411155671000320786612854153765952653443364472069355792437217452494902668162180466674895984963150931617704769783423043655335822179411744288306568355070715617567590095821677285479204332724951588417688591068420189599295923010295460390561734708053615276874102523462835695500741693568769749928440467426927390090345039425100773402019839620032150948696904666116749471918748359438894566090150270263545885489448763176249450709578341996395142168239678481626166977218578225652731919882386163127130555733462903445449866114267784640691269292577444316809358989104066216438263379689305688044262182935387963163457897696323592162936082914335968954353797224791374070564919912943451221521574067903698774997418257101365853196464677884714934926141799896348235272122695564382001900482930901388076497512474634579443608648571462645164860080597715064011780590159551834589347965498893683571767072488431819207087348754389438633135548205611152544169642605194823263104367137114369786296522869629874139239119694144968898305424125260951530855457558442718597809686388875082469311043254540299480720571732313340517285075219045920266747610994342241024157337369802247973534365735431974849675138576307348058050173358881268305900777349590352932796504376110605445160013293795236438283708618703644472243011908324759845585824443076244654282662986699649283481402680377344944099552243048394098098472630569628523748191407120474256868060958686365974511375065355068959277951865784908524018457474202825155992251045290186004352404146365864703774223889343416580947029257045628499691554599944425119338103029014174621008156310714051632353881837782418471460363897211383252763499270893819040804915808082202475018471434468305602629714361136857350583839567912210945687297327143596597052753759437094833980048859880116093645302943658336115427204730867970436186403517159221783033440556375439910732421709482217658959825949800822436857051415977135903219294586579192639526056405610232727738495428103116849662899574884036686299947560531077553749241053838020519555639569118540544117172667178338088880915828798477202019560798346246807203959718200480813574928686500531345635444643273848857022897474811772724329296626166046232142297130908350687060518629299274876705694898776612119445020345900996133604959304634744994850167148212655277492161788875763593789150469477659212503323968352438075102339966980298225607319865174018343326842735001946636806080312394819053150537127976392608062717459775309387752873452392821285566208046953504163550250546092724730577737965574030993217138167118080945563703281953065712658778273456133686613404297242963006342085325008334609202556729583538938368679221329872182832332430589873622035108610109796917188460079876191071408434987626767245333973417779103875676071059932661312201664547307942462014239289945707213834128728207838162463167855356171821264895420052092304469175889524002182264092355150902252952961047877488966117212742964603955716039701348903072302767396559997018200654516669221631983414894891122111099315031661845989113253248138653576764615004459208475565996087384503793769976774925796444709394341278501904840618770059780952106464606003333670482377838719813531290236374378481859079589290809122381815282293135873168431707682948031223146623905967906198355292556157352112388210911201734668931335927934087517676234004474884962826731833752695794299614975783338253125255543130967031732268531154385826189965736984641970005691083044060436386301475035822020269282842304886725362056642198464576975372961465448943173598657751089576002815731858157948527064283729973764776788332969546878506295774189731243773205560517252607500108097775042328176441222493270120531558889791369920594346382650997712124170134448910894762688209092314362246116593646705305430451587556595647180771132204585438492052423156281339248137580084371204373663733898194184523628702738333496760030397509227904565662475879908266401666253959414734187665711327286915907813276028352498025241724299937010628978294638653746494917345223189502034509725098424318222047260344549171459915557250667062667521107423828205017076389807902623893962834268573549081249172470549034031109076566832936068902727280696450534979052046688931905617128873112085209989772058042605756033748406646631570010782703350553084572081345941142726635197957749019292292829154548037763844700627474105950140517500765640669730802837220220460120438215009630414460578695691117848810275877318173963996733049423325532578874141082552298546268464992510322909861846428443001096268953004814050849076443908898983570967412128412641173596818217960879985032099261033541830681133233532645264606295428364986589405757840915776460500987710481943916983522587496967481107973168835414616789659448489254333229314172820148634025828182659251733264164384348756416145844425824068592080247380641230068331153327673986191588081256253870366928933356696214306253135430545684788630516883639405179304898276158578342055375769224331886501977485531072487770110258874861427096396546776174166958492340018986100653416990811665809994624850088835499795065574879974100036556801833649098981516500429790892107547751283264882794358644296799068413606708695405899905484123997901822379030291763197528539759294205326142299798374711638468665690910311518143115627781025441233280721552152191321018856197858555122062094699790543618148238281250979721621453413920843872906311926881547553263112791729042582454517198855088742364006340598253756154834641362886371224268178513267137530593599168853042900304219403175027164415141138938114905229400526759747140342325086715254274914917891282251272928612540836735130893471794424046548464179557719592043361470439543121523344521476210245686071254343960775214611782315287749630761523778227047469583761778684261444450225648257878981760015791763641599403048060932247790364205461236615068731442295414671311950541183674958804688957911321153983047618712191060561264626938313186820821735390933910278420014172406902719011343306643622832022141015856613102612846816590780743575841801342162585787000762218420891436796523478156879043363603450310343502083433247661690905787672875438750410209221092804779333318347251856642888470565358592651273775348297372718378682518358057271376711934661596452179686759631001054884080754675530398158758303028855765894965095841190358882351392473248526711517111150667606691806690410771963425855098277353040422011054866569791297783396043044735384500490991130327963518631354141181853232334142738627836516777660169081680242461684437274045285967397315010121670362309608356323401978664579322550193011871300417026818334910307773110725804917869730046345798548918943839317601806547903855071847427488781757508653939381082289997463149981649611049424412948628621092282619793674779063398167743650292233490992144561473758994446784816724691742869587200108805718125574464812251799907526665760283447885356567018615492389676751965949456287247038411736288815036402996596732151163173321915164664803872131723363332150808071201454192756240933102176842638719021870745665928434780880742732808345195683642725689909727611872772979092585136472159892068028715438194183610400969105704967237173960658280018176106789409739427735806402044878460690692383667338394869874526679422996342399472552449221767516140911890562723201318868565633842655280176853206332816502705188509318822826458121380531304457865854674614224385254402817045488815962483759813036881705998290739933807913195309287559930253403753449353844626348376714686606017414871379538695282260763291635757854204344225321942942832109953892760426919241584040854743450899766327767285424363815480976132011431047128960455226669389784622005278700661657862418285650114050609108455319378562934939429741430327033685013809798870928840100050957283543580949609847164436556732364325861456164336969759713256763215817531877883799967183937266224554369805759397682895998477323341543511061448430046637239904866168641007720293517928438694013686378544970438857230030914955349370248350709195636291934004186358193109711655649304772536545542174372362357000767443342412280324936749747096119511698718932568391680868037870888344166273616541704410447324936683240958862785068712233365813443116359962470255843380165309605108881318544614031390924145706593555646868899258965003713914281892917294767024741470117386066931101016436798918344032529813682057539600075068401976750116495679292551708481592280048488129676408562351233896049836996594047558722829474153513122201194273406420464487723503358891920770416951866533676853248417307378324815723356713674688503435104681585301795742300943827256004271706254061187669220756597350737517743664511421256258403041269171776361893161091597287230380255151664850963875550714650417167899015390093213832325958469132432244565151286888971864584585438816424430514918843101570115156791039174787020614874578469789483226842539541829050724987508384691097427970614666826238127189360424910756443857764385178074004941147296452706277199380938714545372962563498916067542849048360215693032734196123964652224994328314022154328620771154309672454484800295472163606053146922060746386313821239717287493187775220549466785745104470770135686322725979075900988368212778538159022367866911630316109579217557179762038703229032082796930869882424818394455082552523447183800647444980307541415793493024106234816574326153970266001701115792127448193798544820705584638708278879732923366703443723347119791726483548760177032041536292871741449642354911321169545569290917836067885748773577687582841803800635431944248930119513338240223149787489233293781157213186515475107653665099891754043764269194331926312463596159753713213670763335640467460499288503744934440155810328372503632648436031098114690997713147877801834834742546121305209175390791595346797620847949745716545847112457354464680263904284407960566922759098850621874289537297650615829259423825904650702486979443946596407896382296411192843545266994515605655964909734112902911475609617575852413237188220639893999201170625562264070916031142330823118819130537632334007688502878152520282993555388355815816092761011357845965174596422833543691047204254994902525831153859797050037511983867010410162707216319785738469795075918247574045063145021410661217099728896268004637762123935622773046742637382028126125806239595497469193150518741722825791108626517191350943241423601238321606644866618721118257481001653706857080881841379129950410089895920929143008606512452756989486561283804195262646415803458674798557817613274803386127411272278459787125746777980499596345329144205004438840589926660613817291459446874255475884950366363774145311529681939042133759875189190333625667865310195170277177439447360997890843955443601071493601998926891538797824107724633367985453633074751205849139480390998339807696489093367794302909617191186598537685065444399300795391941448968578387365256228368524358475035081917865361601162655291461014893086724160874049670184401452806622152845952212959882675815641097655262877024150948530030932398760146633944417687875825613701110036231478912074700990346562152519938814580995631864703282800301728217201530773118240136874851550873314342390707017383808558254228518015252177960796129606590765549268986226536295046628547478275593665893078047788638909033652986332466269693692768783778947070248799861620177142255896830138323323016933225723366020656941828585659358646850250780269835049841619697855719251048587499068837545729672281484218993258417855860492384181856320108606716096834472444137104909688800179746969269022378198712116769151275316628897638125300735064193357482526402519675325687342324001916502216359926720193238785605311121116521744128276485739945557973211723957714854701853945510815133557152637682211969715434588897875991323953002541066676691110483996878092193455498221177697741515218000588201711300753546682759336365026689803940298195703416388388059008398573173683990588511284241611444775169647909756049117999483979526202554382051322588095475480524577618857574546724317058484224195930879728124196189317197080468742425405684280351739753260754556501443330997085301106747430562291785709007836303588933664059566329109323092188580896888075119392373655292866508721129698389182380389011465299814087498682445912898893710136452794433571684198772332252859981530575917112061954622231052324383903979933294187372151817342073889060181340531918048227190062670511372657596058616622597175753827570187804403538790654411898515700346345979934324483863041650211174993989488275648905296660883734022132917749117202524914531906251827996618499267383828488233260433175419043294517681624619805077966614073827259883398622774319478402316516780555884257970320746723555478022041128070803926625053627687873306767173642391942298881770580971464893419646933018126354982755549686869390567905082965909341285805385104796466074719813818813068368589723852600025667714719566248751808151353993938617912621617148511129477414648182961258039614126799306304446374996718215800767537694481619082396129609368655499831743416694943693233250500945178026763975151379152062693046521293861237207401694599140035400833062992938315252323888721226382664357441188502909234863985900033258695915444586350173955274557680442339702856580659581556637032489646639793672661027228247599393359817834748319359038514275921901792179848104483422869934347229745465592061339425879612223267383045576924155810821429853861591656428507601911166198803721411051126133161807009403366199225930508774271427298250446119997479943375079708007687125403556062174990656723798876335368843219699074136995011220652734206117535098822958275931827961229784606851952992658372482180736238296942165136253072945561641821699124931275778657246705686290888749130220574171992219786980081443320012216461396797534544138303900037652564934384499634986749279029681739994826095476256971869451489323821243764182060080418962521340760612556870754964260478183976824374730894249284900029195245009686144721066396813283499448543190102827038587497222498345897552351583006688381156465524396838669197706487755332272484987652503237624538260786412663844427049554993721951547791644980075579307152310328126736241453969966058942253602074845030432388885024034844978514501149967113373304801804797363117036594246858941797001169266003422226841579988779312189385956602084056917826007641906501261992262363420702744760662757523025845581140592435261177025922214401975735648208312996261179358077623504288226272763192253515854587915724991675178271149549131776078079807501675621276271043456098958250191203215311692395175547239257796925911256237700122805347800960916582850254993585820550471781982155243713012217091401140830075926935358963322440232283954095588962947406224086142610520221510114730024702684990015704243381500655696023446786108644944127992524908339375170349413283344415619800621246413882628858410754483176321615793771837057762092875102226431342730053728840266950625027444307201527549723057038073912360758348683685968109014781804864113948742369681095174502878726634060648295924094283501769507226915491429301091118186012251605927149865504956149134174995983803661681211792113378438907615155899590590015884243588209938413577741198921083515478408739920024658546678951561162880851657856664056406504807548195648934314489540621659739862153209841307742561293493428753148992311069596058549539494945747765551752112868992377963968119980655226025538991459287001829642320460200451160270342738881623981063777911913313507264726145201476335458573012181128152098634181461448748243493031974971009968653072025363944018187744228579128444256119907009922827090862651555276309744955677859168977200291921399668884685759266703415483663872556972867007089484762167709676708483974649044194442239654913638624738467833783394984291304746172344068716289167083331185518365516383849932554517768805019868474429638952775416516097255020780081041386609825013069150651106522009018358278614949612819956162309436056148194905836178367325901653821098792615497493184265340062446461743057750339172874579564619869650698609017580319697130445076452185537076776425853115471750433182215740003968023246219599280173582159054305048507794207358181679650720765740922572145873435778640786502465736169676593748303181356317187301824779767731130929870693425602084072913111750136636805556978913094700095101899955614982093229829612467920917726511574530215407446858528714687054286840264473252783461643008822192992001536625432951600198569694801974452300147087548975725383476317662907474451847613571658240128511370869026532371355783653733013467129305414976726759714109346420348978921686349246121297252330321533261445914370244103247691832560463016081000969629678598056212451738089290494403095054564232917151377984247025186556164878433273625469130300182007726023844629572880184494158199792911194403375788839636027201521931745244269263492228352075628008874010720004452889935619037062117458524025823364699739387461062061661569040278934581120657912305061366078429419665365080793913977379921915026419253787651036788058007169032606750428963128556210581442404432744656871319449118433447002529527664660559929907261228225202437364627713155617353462152307942733249256139095888723682289950206741656429479616709387296920306757797060315155328836507826197400986692760754241225012346073556134355800182382544187463776159605252149016974441400687501821612727420518051443374035151998949657782167628419183757229957698562436834759121768891077243448335760801529894122465805257412025454916266975382965190981959206876427577108708980089484643332228467370748168118350536526026975453276762920725109092287774850373126188645426990402285126545367647838099139377433335145379175981242893155135616101051174627008542659893063201138176269788794507774179266462636139116180187184332988671971376009671719522681866476750871369512025978780480793415096459978607284111050922610584244161099954148758729634872200206502473335592671972398804801661151100468231112217299610569052703066283247983943991233372147815974774435701344056763989544890382903795877056619751802374041961956222827379824980194271157056087595269410809956184513840496331608432249601417704088166816738067410607608514422688766905959280855836695619980648746912673974389918914462804912309331779361340217109667897429369749488615733780484602897730937631037573197061176753777223879681353168781216312259357382635252268210816445424402048383754485898520519299575604399804416124772868098585186656103679462692660480810751817416675368805333095039940322075529250131042576787257746735111621653875483715657891080900331064527526413504590273339023399379527428845938922251307115940331827240233970993576928829899718796697084284979929122954190541468521464309721492463274202428398401367332998234672359760341130656742478021088765056079627593371158431303283588364359909720443789497736022207185471500046007342962301272324713865079711093662136920624981212311612237052928995348381962664472353895565541585651250339455736060531830425471020063172608415566059859116502941992333065548341549141116860476640456110201389506363023524742746883817867331403575990962739384297153447539431461894083457840919562147447116791237060045081011458141612674162063915626896144430556452218488286015109016433525431748061854711384660394231242341931003015222390187436441867359951947250107258561393696562698323683573863868331140421631898132239264734393203953732880743137080917166259399541761386298761474495786762871454096900723984932457723392578728076377626993486223697844015834909994992043102529612359436006152095627491970747960759571513686649852960643262167866594332327799185698781113265826780213481588718361989445010837288620523664837569191749440371719060782046217178771690950520809690683713131333829725052749237499398034986658727559391862988572551007117506239390622034453755534373169532476425729691319215404343965652847882623147036687722519658991296291430747337641256329481699650544871728877871056391820521016696929975841399693545153521030142630013785929734734875894062515448062872332531167767653704646948624010816057351045349714841986050762896371738952874496358383058605466616196117873242574331345175997735761917507846583978710988942904211403772377842683068432236438687019154635698181339490148231157225775821335764412806769217227984866559496860808148276292024706761673332360694414469349771625303703047109231962027879149258567240759999017142813690904774747672375922321701257132098780927411442274469745705292731967450071191099482812683285056666901469150826557671688747680631777237400301944815440922591940602635459442696586846812726311608391611115338291959030487447496390021428767069655834373031046828304256892111601480361035009144279541574751071151078978023563721490993522032131757666038099079402992240801376558902297720448530587498323232643706010686386034691552853780821036663715036188264277364541339820919503621785330515930021320650779617771746027784459075143625845524072364336305547276681721777908233839248891659844413711270483284241645420202710446636280812348542246459413958658405804353156156230637596101832540860935828878935997934954672142841667917632893026566338747194209240020104326432729980808577580335251724570595810164981156485131840012372810889234342507520200116028578160201497404134982748033586694987633947448773083641952006332988668004221970688590835255368590679986383371654838812069099842909204465633228084060104616997040189856404988107407062031157342382499044748659696262420778980554314087407316555274419599658389254236675784293578956892823057344553949633303057231366779448904830553709550566007559887733035292602629237026658991368881617323594576048628503999294374415675749278590667014181635139156011929096047109164852423988081896027563876844627935812746641993810333932368377148575261416295493018685709356130647729071181023399333342620539860083544894634031665669618829717972876709764105749619282540007622805309504394270847274633133486805464653760911302476456283728675959982860844673568480105243554294112327446344333436274047851299388735471687675311435309078161920687379470527015068988661571962323561656214065185019168439424489896199465506739625114628831788116041565646486057399047104103870634856608921346546090031203701225607331662560822667603522134801497703551235412028827448642679988024517814482909741573883797151855412151594117353545450623258799811099482513994820054715472456947470856759467546416030277192701426961282065583041241057068114273615366902317282836702157816213230952238520519752205694963401481297756541666928085939342710089614405434240404756355468957436085029896518311464561175350189247194250913301156832646276324629299350741320422582183029191427281787335363848293194146947878999388825678291282053548910899561546826260148756259604343095350188239601352577091298852866415328193379380758678414446778507263977944261875998326904311573398120466984579992724349933403627810577324499244180672458727142785713125350170812379213854803324460769372771555989581494205840843204616526331937504996451567444619122712500311382584269317058516317773631032960450262774379981542790106572711567838198726892726817739319837898730948549481410183526592211934086795584402543322715079029350837618896930045391454560849709960328900334264104087700723945750356167886120545974456178852688692470207146694326708524756923650030424399342603057686556156108918964804178862774626713146116245639868611260249816990210326141664512860226237591136172361597011835350494208183077546080995294999913583989248761444488216401879013360849967673693117641416528134807413232325688193036818878992242313907768160599005011516655637370075931993854781761448510862477977721835077601139385491754440585327380719364759258855287013169644454062848020020884660744881303580799292264516912823472327627123421953364699023546454298414196295445157070059460180032015243495391101999690644542000405960050274925272349824096748116903859948468103731956128214465617500937622463092003664621847424729857530830383313103418436125171878354497366023041083678207220544488743155043955140390972568673582380102189172374288734687952544270569347520625652288659160933201900373806436095584373146974298332811247578589490150355069046330102741640399130287129383028608972997673791826993071675340394529642229905083688554527568812220849961863785769343707946580869581307102481614675667571060367637269774112568188904748997520308925769660100851412675004013956537332191916717084934629745028378923056232630471843810355458660319910539473244981315622751545476881151043612911539367228258040554517835781847948092216004040282640715031935530826226617726471310703561714990232844806168729984674326261471958966033268260161142581085287348015215553865230757692464207525266270711716536085665456793305668447496450475867814534645700029425502000920294053618100959968445454955785894088186057994180762412583616255175442988317486699430473856041666790507335922778773885601134864937988138468932625676180366386529628230749343023100824021682437560953568902645769445374038839401420570674693012557064009126599280295603601469506425960981697994541654048623308047248203040416746697534926306362081708380974372042579720848257600150540599664375264866880519917007085539309113488752941702792148244605926667422621303963125405414914838916043181825051461189241276267830139100441268213845734465374694844055302193838226712410246808399035682942748556104558983435367188008661526069150421069766296481136703889001192574229728479118062713022359474622233071422868638714039389060174676507739564923280280619846998227167917027474316804061070532064329672117841627755356725410739553215375627564901627407579967746498793615766840045491596232490678199138999212628057808241093200116716148272390020972374387828195958004522353480965416974102379428822494416262404635825974438208626230577903642826535254800457594676393620763060202076784347106613641574381636209491673261216301886811565538769138098713479311352483762094331597504312394149563925782322763369404773000971945624691921249366291915957723765842786052635030871561514241402156860878343843085222738331611800897965820963875971910509994542844225600357340042857310499928517052117215710132835927710063380323209453566575140500349606540174617741498279172021508568235248272201641600635899667587115023783209319000669371814737906907359281174745610869912497559050961285529339448525995347160893299118883535935261515298593504427221511712760444153373293200337366002248216257331901345515932179081697639747975102955595366849469311994822531621376320094385081641670291971716818603574999614590875009811284930881830144983417136209315408440442105938951090373327501090756638541455118586630969259665908313459304888731320124525968057841643535413669748072600524878054928266639050344567497427921502610269828539879768644970507679892103442577113455321676164927399104473813097351703289096483504056662553871061224466359067386708354005029465999864535726371606840698104307850247958945763666054211897148221245676959826001969901600554013904269393694386573420204363768268722000381972746709631104622000732399205171831876131291999458056143200579318827288870868421419522107485339409108243878522776062378765562945397859209363121261283238876882644906331118343628683891861243705719455289091371095533696728310430590867217302666743431870314741706056269127444988024023773964629529836948792835797901236852500445446092518423398258222660571034198780342931824609097209873942896377002369821060178387522704302980393921969520727380924644808073818575035130369535878920918341814043558933386317969963164055906784744255879115263010786845429025191205632104113302944897823648973047422158131395413021376017584035005198280482262471893192411555477588862978136141140552715869758331078527780465718347865377719539199909473719963795913983895416374207594510845640032163797894561305292446139942960845677322470984933893920004198447972038540408626280988659521771079510809373962952912996097955007977793109319818143268601996639470345801609928318281607330862539549676252423699310497655115953946406298037885813928135387880698333549866339761624124719104768497504516610209355394647453091471632068588667535665439684674790874364272081003104680805050804932962387107459186869112929219781445216783617118106071489817244658916288609000631210823520925919680029749701612228076545237947148352966396753792413801831595123977487172406074593967143169939170265433684783896811191633451626913240248007461820917423757791720481508854775230257077657608966802542692590157806939694309500297437185393817697690360390688493615332543691739626047394012182888352089542202843278535642805472354667333452142429257759302432535295587025882288971198394756200466392059576631160434596737795563348759335147351231588998336126045499389348208062086917077885582157768310230348947781475875937895817408213954204753688642067931877867014490216059572358347851981157478419179171297849881615371113822938785199452249736805067938819363966952963349640490882577201393936492455653659578751788767677350876597044584952383003190926889880342724760415740025769438212952890912562026532287428367686335230934451940384491400581668564723037984985429479552728276487927533896339540840062734694824397520589612305050367086419069710879752793882927127012654752388642535984598424930080627944686887555511856330429185647425030317555554097761392068766716030280234903942130079425243076001499818112844992977377986296090509304859485006560978802237326180474046539187065024528376063796464928309440466149011219210877537921559322935003142306278172233354312420502439091411777265321164327335408135815270705446706004223009551912572581519711102472716540656473113552605961378703404702935319141322949359628288458099332517571134183804563625231607674767821064886223524096878154161435994627388095492427036487359716401667363810400202693164599692606104033571868448983630910758988983970470070092771855923276459548345181697153561426200857134827544407472089326735766753650067801473720198123187376481257212448211574275831243035395930632597371877074757472346825503605525090097623967986515877589638952897241856419602124678679710613890636387989088469670255533455079083420003990739287442556517627545388301742519103648607861626373031595360936510431630498744931197762859276465692956475617406420948259882774392839325419505861853907623444574436302853645137269238919637611524455287827351890558145123382934016096869824248159140744277522244279795319730788140476174382960012268036340645703103108528133486589229968866274914686017587078227046329853995804845610743483035745109925159558180132542411989805371300171085862495997287003028151698234282077081441145681978255081375211577341434706459137624611353648688532912257532265535349374272190701426304615990498193587917881567412957425087309101784169787197766820597116733575240726125125252163111761424265712740737981650226454234401428905075295776949144567631716377472044899784089799380819070864977367978178008610656576335279093145650742413684692789007427940757165325070015918748028125272656619496310080806084333498400937450072284789424991754565131449841053811785534386790054839927566800676856758701764630364829462224634390258537479592203058979642849277117472507659347548071573982565343131525329045302026779971290853555610210636703505036465788377482187139009095987719469031889963653829583626964402412376978233353306036984964339038069026653873152197712343399038418315942626355213704218846164925740938320092284267739528204956416224960456811431016855306660461980371116225132892732098872072399609707075973763324068541798484351815575261564748018715033079777632978576977136266609944223057137922446221412755113242984719972122105693802544056543484652615272707811127182698080435432366511825849702223934450061914430830165904874873020229143498723734568300743042419112731445188558086033092280997272365582627135982667132091346635341480467346734637869453451011872316330571745885788160016954534278650529467753595870515902470116174911302273799237865243067361885817787503309647749680786186063618831573592075173837078916992601860347176405142161041341795077469472006571550584343131652906260279016755139126628228285381186020541750790789569974799948181189659663092592008153177590822980767434750937869654684586321037147127725475920128500029549431297590387622606486088305111265404062959836849832492685843041601492463481174100554682380708314799989963763922020449799515783808047201307314261374938683572829570547869422997926868997345880016068347449044601271022009707632261505682039402045340386139329800667974306873998844028554440751161379183600683545506692486583967760689686317183503941105794135460651530845876155098756959135878441577059819904228949295269674839509673198504673361709583430763421734576163959192228707985371945434428859452203803950065612868425816335423961480760338310581137677830723508481878652329860461988193757572255100709568853024705149313188874773268864789067095002603672773613869573680533919685258475292637236992493078575696569155249798452724688830302722078656586809436911162922961442112962383003196733495350006574361498086842309545614559530559381946437053823062549137609435747602245918633820535688716502751043319192527745147793154659335493346946230711440011956891588112283813441137514841646387502751332604936903647974191096189636404754675147498237871557664177528121975329508867842625437420086870342045000253251298449866915970191536022959883109032746030101801345288014977980675205246283327808726260884730565318557930576449572414404354684517282495683271984658030002137125554437194459222666205460074580155660203723068179479269241588827514679681617586845123105324278158451293758610360547516138240252817342722799395001633352559982548856395067548291688702404887507687955606381796628060709511675830532732644265302400951859660155604340540008882776097784185486908989391863000515506109090306939850151172148452006249610443643226154902047461391961671995147661895193891654146978612277403842915191074371221637412337349216195547162505678551274383351382777751363534153480245893514627680822015735425446519019621265506819814439654098749681488663183284467975210353724596803940878724288910538530793987029968083306960636863053009930066499542767090525369115117565938879616139623335184869495215058936387242648557534059564941628326221844110007090625988167277116085087822210482762396780241588935639609657642699147390744763793403461674346198018070026040377934061873844403075752689547113900048452672223814931371826706631205735982015347188426135717961131695618153653818612652357329092910637667818747459959509053086067733125573721425956606324662296284208863670508723611788314035102803991142304046540096555077570646221166746354827000972389973013989250924335403057366923511047439236916240775662591531188446428687460294218657888217082284070966410816714260856657329529176566774345968195965488659666583970397203730217161969184367100758913591294841628039927682608201931111350068539320424992251971325047394831437841774148400999957130201614259221486508171919881279888253381079208810848333567824484341986339071023333055703514630406239999008489932738479762525705784745691784076949903862536344668112892244145479401195946992117748433309832025608610538960728493915861753604879277443509023724178883980450878355516267479254408448066702350781868203181463496716232496112292561668439811987035366141608861038001131250572777932748725216369993052130987953346426160069711540093469869139577746426224184075698248015788002647666769179905075346584605943445720883575890867932246530049834621330293305509851761905000459966623601422811371570156481198871789313826004819427259301652369428210596306302398489397009739920218506732699132163602741985205426244793273024220939717467851109351749657374035394853979354744393886135780829087946495529626388803858253943343752052218538031942578205025239747539454864091464057769763560935682291201444990951303354210232750029390168862683392089778234953909707343427311017577956920374452634082523582792491181168384761233310074013541845378845598281533084098479837208569916971049959229186844007884919807462973944586168009383325964316373632387430206957057023144818592806242066430407620195258727369744035116952296344916478686186145948851392521872954575803553386580382957210392120471990940038647964923622550005699074631153935851933251348655910858189252205910773176164369782583341371499394440963476362000509597935293943102073053318239107170259435686654012591647993622447406311680540261428040137933203553960366032747570555561616031485020141517757525826444202232649630592372683644045347831478935252051600168901511219358710704320785470786639777396941832268197637552068385354912857779470103334812117811304683697132089384541780616260255511066761558382044729184776178902862265219744935589373050815687316036328282758627533694295179575506967389925698642379847863501933075221263215323976173268595821758326944487401592009818680311196387029146651445662901627502063514485265294742928501815265615648783950187608796677447502964568033022647686632776333810255889586336438991453403772015591297839181856958907056974045923769558625290682214875321870884739300259229594280469571870669991217637954009947882301531627167140579032862024269819756083663187396090838203415558350368316381422036217863966033776274058314852054746910584170480029507199191535376113551568739339623559144623964464738367167659934528013325927901640452593448617359106323556148079035384358015434383922529694634336887041239940530017534809746385585449307016926545480844578280774828441786355987781452409109186569583972994511980091635117616980843135421435401544749845899084562387966597692350302856796702469913629481536380162805780412799590996252722293231122291135384419915050437520046103834631293742714646250128945803567246778104211898226415569334442138633656286707150956785270253737476598088137797675511041453838147882528490441781017476068024972259312676911380162223114694464028331851954284888940479104589902815207717244689029754747198225393188341061959146038834620686091235063733585606881337706905460640441502611735529153038372009879807252491474584355631553447455153668062621301144108830827645298152443647987516401097858216161620058511423437441218647571742727620748323080673301060025825205753226478325749035631768630643373293905303701097243839753520458050346782137550214156371319333884158566486788223565254617404641167175709073760499921891147871362248384891098951992800579612650264611563087458402183546232119265404634893851951036182242191650115949245677277646767776517567182325590991347063303309500469967867127709723408602178723600197517377061999284797682711488458051528957185090199604519666796062785187298220771975394632710358766078997992681585728096504023891741130641867485391559364103668244537250177522623784284070829073693051410798492994736213371174945383203753207605675768568014242762967176734330584228562024920852193292562031800744985896054271064618516195661294347643813223946253634845759822656446009538275862641499386641310317464393875732836434613915103684329714339516855400341991659534887064143469322721950069097746162857495434979150006863287228546125176945566366054641165864409074169496954235103118591262690313475272498948540747042734857912074283847668834598154075982094730636193921900211711794738341270691739993190858535075037044867511800983792660792066705880116592982381461534439859457679533514278193588430895342601474252490206539791247681383257649966014734926787629545318734605404629928919885859947568399278872926638335060132249778181588805054780928776346664023600127652937967900406482768304160613804795648573561527177959199462402156831862037504014339471580688395079031259372260864631431200479639205423791770834122726567510357639510020836640750237594824475336450647360298353815401521348860068323413076340746342192280616428228066999819497999436337907584131210868786574240339551718304378918573164802258303877134788453203642380815631364018017132738756525843868453735105646655589078950869228168589209344163077088782677609077634337543674942084399924080488534832787605451715477122762819409770497502417386280359206760928324644456688968886851861208235361856203654416028210832516103321527910509376890122283743535544113631843785389037389210988171453892106894535494961482874477755447340891760420054704746207164324398481996154991840176237116879340625900038623586697737360736902880359100661333693607722229363944699888784708562560863831829153148903995416464641996143293500305561654759095216819822788238873064251135144666460275900804023747608614459298453623079199333817185624975379294804404248079186527314885030072461116990291339452501807001021563342234657114722418936964269931920931985316093869159651200657793932287625386010195637551771619688507957057820088214944274483287136255342985748855464972137412111546303659962619652037342943961330257403258903221685387228350764949817535685315708660033770514289235887920695490144935238974291332743313262797293035286269147128183021713538628390102978050781847808106989010161531023983869380215338005147660299844594230301843119445718194320530149612961244650135711862804816222706674148842178508441211887225182884413673201078726535748391927108803656606154190036082572928259899996424524070743736571368757625188373119532406849873145332850389780878944513169117927297186156489398505012794054933702687407214474783230818029429830005507371442503884553218314491060927412829676473539555685985425834967491598419866073918553926295452617727558580572391064790668381919762560451855027724011455454750589423894560005460305825814787623336836270328990262273316627604329789628925053271911150476503932321997334498945726754660426682383189261517730390809124193208918896517044764840578334857166819527557307754935205129508250073303614953668103559003818337932744062662954355088449170133922439503219413051629078148071987098342125325335919331885837901127024499053030588957932065167240190298341077960942592563287497367631105959021987900728228531055824490370407018429307000147619080847420627883288814830142043745533448360824992464700819076225469956858954397070619232810235791488895831134519502286592447883257739079425457080826690806717996064552758266585782717321226646263989470893932000527219064099515255029595388170661791646256211067431466395828645207555915467574226317981340034518434278030942331148871681127355523274492040553419942900954055555315678704090960611301946805691434707541731748548632016249382587916500392909870693409900561621303644606119473303680853543832744074462728605794041931857894546721476338494723818884103539054074009351900638245411439863800519431847155400283453922315423405381415565873605217115279901680593251367010917354871846417675116127219189221397408786999191209377951586094881174755426770343455585404193810075893544954017499596429448261893856803793565549832784261242397673893905902055505106293360993417282141371043981917713798234507264286031918783117089082037487244566548912846732759248749984289709850279236192270620709531136948629772227085229116864980789586148397183063634456146384364759620106239992011636521992239155530309146303746162544028252968737635316081166610777836775727018733297754288288713949564710351654048433500361314506312147614022972174549529427936039022551154505179099616946471254592062137048363967118295474773256532942497781205210216555598110335403854814407623570533971579791717763492124321473534296896118821234742127860970110670710586754673763040317254062024335952721095857162310795424449132027025316948504887532906366745938472501365513241137541178860368575684631450843531854279233708892084695487840615643174560918728007611999358788881843384157654408696324788329019942062143404211965539695220514494722658952926822006260864941699185407037327557882082209254165146801660790339967489867820733958041783880934334399883678254816715068693653498643889158127232591408789564634160210418660236746937893761056213315913049308886054588734661811949505345127065110247465216549649158682356196731678072240724732807773053738123154716994517666382063524509079441526104239909179451072674103440708571453141009127192039928395316385128049575213022300181128009881335458388928539235746330571744045310641695134585183763533051769901041788422401906515718419517497208072537590678537063422250985328166533823832415899236353340933127715443199509516535678867879471933873761792929104902389290584218303211913383917976585200649846320319242034065235166863101584939213232142729216345916152777846552140515687651635211554084618819682564860042482057967818428227486246109701914409299315475944608887438545232908148564561286361645852722821397960861325227667691026567517132318389402556439823782097363033762989633312413779746427147566491813385759801733481510051876757344765212087850571730816965791175378777681753173036237737072943020695596599258410283453147756544799419766151878963308569141904329999704357772391126289866811064590639286584893853643935223815604826258785121224113526541049906650400723639698301029840242274240117487388975207155615337822739876675320366049146103242491284400150171557146498844265230200926551985299364441549555142221538417347967838477312886263857315454063365738204652403135359370826627124651154039763669706784804140677627861046116635672710717369737460901518880461168907364248782595151077315322453140793911152964286110920562262031432683187260554854986569747569542268644671081180075392179153778815732862880009416017609370177707284923037932319321297155429715756541538892813628570282292090602481965247952149721347785670555674924934576720749793332827924977242319049272059476799325132388386886855848079336121471536867402394043312152492469385230518420198531348374081629125121697892931216844574203307621290104212210864048475655656070098035635411115876213263127579549583152451684217924970700104879783273071930813470130495844380488809410918166825096708637887149563780762147452536641928863459986567513260068709289087413359785213074192758079319803755104270941723204355576316733415485448685539808912138219453574111038442411504372179505654905689154420391751078414827246434830379317795555297247457998196058213521619337184267831465771796062836745381527593603653129702081344662563999147080582516881289040193870325526487619521754003517436540480615939483675110103167563179947528823878700582101536199889325614834081513394408349114040253889363938327169194921142666817886091479956343313257872912231488427998565184840721075476254582321079507686032202185151247098277202357167206185115173517704946945694569952236846471260531854671260487923226508183271940770488082739738038192248839185144681947715856769460751570793161459335716858291691096268730667676794737071491188037227126603710646466550580570915193263244053361535603520787414325456146813041056943257435422717580957865542130147400797003345709647736397029534000743701338993954083646291434508858576723238809186094936547058611213062024944036105808177797007936460052934166213520046801727657392027950073931637697832467424697626518836061383383415267484652443716114378415819526164929954370590344450782444614296072644340706064927843296468334010724925687370182491339167369376066764896055083155172274720747934103461281714393098316260330925369796679978319432974267430978790855795386533485533533813914361450491295338572132266101220441264373052131321661519740318675359414042436071720625899823485884419630317237627175939312476173662232832657971429536260027371453290967549157841004949541367865399857877718161591579881571059259052784536619088464230203988565579991414350080735117655336866524907031028615567047315701904753830586153485723052818045689388908982526999235696181198664348329141505565774854663084527845284430211865571133276658133286193540576638066306746940597383270300675979506814993564759456272163552239722641543636401461878592727990515123869413310932298038687623527173199838995622668874876660308962762486886381017892649161932856467543413050747643345845923216295853963052242247283863313329265682491769982539562203190189294707003819825991405218721809050311823048220106690515084239966770850273604943881234292264708965469020240103387010377105963643190995679496107548330440552980174040940595709520644266868889083655453333473659583385216022815917525838190446298992380727039029569265502377074281918126177210660996348060897013437682044706564958560399685523599865304093417838568146489052531823157403053794724204183793164179839242689396162024438286178790751132166690827716904575702918944082893703328877443942132553142336710798182088639983673982094710982899226736693135684118844025778266497076638772613710739453706765216756869621426812397638324388987421744423348538272629932512056336970179352576309382776808490280415000791443352434429848710889564040149540991017296130319524420033041728464249218829565254523568163688254786927692108035258898366866396743071565690201425043342602743323920194112247062712220097108061585285558273497245975729603871378003273215795369447739914286606044951893472423696090983431228271299865028405961517264333160478890335029288721524002277004197599421716497738103612574234084703655524512257198448857534149692400825524038677205389046252847723906868475567787647706371785861976169099746480099654815406191359282393184714640723020544370121123962780466874956227659289136884455523905423425292634989102658816399049922210783068731513846429609355837577553859111097856298463347708338534681623672836538576927269270621993951838857657982284629984330970540775671933211973355198670392421112215532938793935547289598047153475414977041847070745635771134848676215891154759723256414691492484438940850119471532347828251850840104079852157648462596988232673248920785138736676253066939173004370634735877331755249307547630069182109649891539747378673444397301839431344684548469508830874920329706977845789892733598517755207623401044930706101441463875529202171696400712054881225645374505524954885156615723831908963913069976701590075720979655297282700812706900767139533201117875063784315907933870835158043156949124455366384908301021677392584590139524202086651317305276958917955107290685450892782340371082130322332376490352902157230553562980334735773788462195407873103141447774397812788895995387440106248517267616873401032028659459392698354803474944779898690644837493302146840219808814405334660851660814337858515002139546855264586739357484684209625964287067985042119419229683187145011854428389619402548164126055395715049780028925244678078410092298070222050251650810355999295432844037148745624422674005338800525065358154545423148079679103357091212485099539246587047236637002675735083494962304431010679167266810294831294579998591492764329061617699876545846124624187293751838722055359339066634275453783642454596307006820149633321187144014073458898399157812941055370523659820996423526631521916441136790810553925426471140961130993126219625484613243407489187563957196464072805418647853603546126551518677318753764467963387969631905475521618972930136704012824953283234291654496792787977962699179252620914615100467362034128318147444174164743993327034078120471615160953510338267852045370748405363668900704315294169663210712268152957366624902542819310768981419381376430331858928619507544693687765753752118466775318670998720678453455198390747439495041367048256003165533186818663865400062958907286329171736974841354865240391814148903899710973937753140808968212850165317128025519791536860452015112472449136088704312353935188644125197171443948463553108802537575513092612685806765658619354621650827882646353526236644337123720986702787338804089142750547055436980800889034007144748119557571527648441183405037833724154770504702902826366967257810410304415242155152158958069569027449376638729802780679434858409986216314297855718989594129614887680814658901154696849724537598989414457937906890316411251948639082981902849605425503426875328153964365959796569972727748091229507361727747637831172762145545283293168308059222289035664210754292279738664426314552534726481645646531393163203428302374022515182389986008369198139316264606883540510053493826257832024266836951529729959119862547192040655069364727638931155220641358481453715129173402434150456033110710465261281481111227955259428498868464146657733007781618557397385223947878716755083396292563665315372065370340151597048322640774222392789181738642302403596653203827512066419566829908113230637966353236333062375786434432332412197962973427616925408454123297731894241132097347601593379362003244739720696120910373903069040221759218516288458380318593626475272739023809316452655946868646556572586464148172412239622010230453551690568680681892513286795724139475737979162470861178970435785944212237752349826742956054760335448447969005895538197006029475581806116870075760463510996519571974790534980211822625691407925808166738989956252647277303639402114751405694711220934647021152435513048960156307147928029072030331499051768433939654498570605947549936356939301957901477175438896675110354988227421635821230074417098872209727334932511707528323302325515246751981444987914093806782053009335376785750257303218338412304079968693700488160906772057335009919109982594989279057870869964693759788921348622283249945267207977062642087905084658584297125011574710178132736619865068515294400317367823989638009550420544963011984297817505638468214983852751878135451922795988849598254728291758287502106821824087659416080748965531405499996724445891430082979576703850096639678636794922506285155391588806206928448526341466114843854283393669765890283228877956402962436773554333563717156629799730908813503594256399515627082873627357605539317540378662464882531088496601792801386905042848137887684946585218204978618637137155874776991534896607952340409538520048739802200729362431857492188265622726617627915184141976559109686488968552234550260037922161164161558018935677158507802267867236497654861967416110422402237209726425616569610701479132143501952648072326898106286905838339559610057054873344188667780574779078778098529500814580741173422715902939995352189886614505414916041037763989155670042474210852029984326879400138526167004517688912030017833802667865870700793271681186736710817623567794035029475870186202292772005905497968552356175072986922282280912462852882981591538174980020194449101418340041202943745735166944501387321132368659998795323789177325686415885045029185385969025099745247817914430990140139433578639497600777910081595880076038616132678631638771779985468040327424221970306070564161201396100287913237841666800546727170541888602383388148899709924890307547773557962070960546527934083696447575318996778746460388609489739748544494095956207962477180497073234050868251602976490345775173231500159353030722853630671071588452755223022159707340047562987971555768890347417395405709307354812519360952051259899886561866404280181561483672563136677980273302965087258048130554488504927931413078590710849970304341083114158564234730954763556556069105952884577030243048750726450505644405635008340472173784996951161113445516533345692454072398717012760992399279414437543712182914238076362485569744952809925756392886191297865417111039400613932271100537948767695090716345122698612291209884966145557190031559370329872993708024864725141569472234577060293862824097409000802990573180670711710870505817001550876487882907319282522859301019019227929214135688373882157069867440112691679637062424486709388151175194280135189373972511918912702556830245700498114274340742315807537902813575220988384549748257273405632190777979024551329419848686107777799381566909078106951374107257352280803014738066109428352384906851007871916628052868004832155400257116067211497298255361988725728051326073549479700480976500057979057642194587433402978191762479005849299436119697095490996524369156161089337875231247192737124446594805055595939893198405279382930372345377748112048741743673118070978657921242390544026789492581674096480292543611980953382818498818705493054457288167802505413246321496450222591098868052902339319360153212758700659068769332697587094650804291897075072939764854395683441401543708332176844766015371988192637912469715823413184117801825101611508596269010047974520145501062641641824454780184864510089957600199232918020182803087934651714722009218282895550377946429156593817395761907830993100780516344093800741425772026187065917292028942063777659337806942775076801333704112558104744138632333045831515066310857076910838136932792009519122379711498993254600260804538695955732296529773062100583785743043051954645831379143239481186675489742454992217057728263201279739053235323730812498805879946625419068399242534046283656091507910823180340383017970564178629004352172830363781208107603367421798599402319221147221797085673936474878420145894214326868435449924645593250381918236083962939444981052794600643888372245914789962592781263860511857509051148270935812092599946858972877255468133694823089962500298912986218671056577391800592562302831973182212676501423868071270002237628153959563506560402890619748723753480770227913630533883105926059852887673627887367810266813907906293553534151109738654885736801378225144177671774451369484454828165404147226121553199457802726417376674046261823159823319279201199677124869339151636660807908341341685485784691619828423484787512680490507233655004168206763063553298851149294961264528771125694737110392940629178333687868747573852668265380624826450146505717328423390062006500670218413500766648029839308347212820325049654459209755705859475753456458720078263818533855056051669758979425123188165559290719718023869329030363255366535244588604982471870172860440124459091872976856319160385628491152572760884526646110734680342750093286499060427326419854987194573201226108812894824779890228334646111852175600190117121534094253794410128400938135013139216309588492375070719522441166856840107744375215848786902709565664224111064261203061348237917201614414511559704392805743513421787490925147540800564366976276592575582572240662030777674150029389669802888113090556469318800133275925565623843115937614645094373555948945466242101228524271459523602649138413059735987581371754907576169782557673555578499440865234182440431412314563845922183148656749235794309277241944498575246857333732159683945976788674228122038934566846779789682383594243143714988047586110247152786425157095133855545590157593813285300503058705438724156299950825193748003520719736386124777575074891957794755586696783287904325547376382695966698771718196012906393126557425549219831080877250416475807244703871488578531310129630829788358225905491668581745741594865271192884575571266240325333415878273698434226296781324989021274663206820719759026079034296250598496158508472990072568352366872517377648964875348421071538751457023659216166743372661949564927491154451937665345764962045634299786167808036700582051768558994788467878683657571226029343939220369737083853316746568907567695059311490590544613791423683366247636145402608726911255122511508535021709395726096797986786844580631938018846066580000226915632054351261590337788271870104034535723628684219929416862374110572174597462003329146793368764297668934803904092796854631084186925989430558890509046185892221759112441366724508212939901775822184260812115549221208241374598703102003536132907956356853784323925547325713093885870708232118205176963068152020981943667615030848487551592752108849685089748707516586362300315893090210485639097401760478535900490742462485944708561734967902859272199834606343475547866834385036742950130774718825811215915313693540526736737471585338654718462979317266153318233444936374587596114170810924987607576119325997873503750949340875293931492627416163700178710307472679515910335641416784910109594151166527237980494122998416790062874689450144742025409343774849232035389930335802697128830032281814109975176690816043307690521886174798521743864705008630691713833820977040065055582010901652565033941231084045371256855467740520131517683167178271830062114158443279355413478513922120229508381760414335511263521239428776787220705991673791977623746283064477711537042154582550675392366876809479890412500713243682262815009223254682300178649151965572729797585412736144908747765770083060887202950877496758551164879686984086426202514224348708908971700019144195535927391513470543806082747978019581154858592089434860306888072384555837780295874536116514834486606813279694378626290842773056130757617768998137972363485689524265711583720207829307766796564107179685610938350158520208478721693490656288016015995533796678510764090058584207918674580939939598540847972979588021600314938937916820368426342647576638698455656616360703433860585365888958569333856783960160914867105887920976681846011557348611405855303024895708744364487025052046958133722265058509406049509031893938169762250288247452991322693894596677139462690762933945881205247534578591305409246944038232317189148917001423568910175188594337438740112979388057477077406729451512912472362507567574525310130572269182870255257056983825767805547122516816357478060529904167607279323473128759866214557224126248272214828820759072279037560444956219345594609034188742876513765992767541335758793933966748831630986538334134254966487111132073122470914509461872719832515710746750949865311791225461662959850487803529645697043718136009982915189175336771782164451539008221040128622906846368016246661317141895577742990487221537243986639877870770237449449442379187482712740406010257569005737055187607492550463540138847679675208058614898523478638681136775234645482077509489377683648425454874901047144573763161576583203534688581382980670762260513287437017794178084315165913487266956009126438804386670130467555595653046847191461686895193451405448474383214580896048505710583305938268448666317212211387548860465372041283984066813360254775579677610112701635076992850536332872874653036593827108897244549897156209759918924006315446340965694862989740556732566177375502462401608838395106063506524020871817735925841764702616760440084577780716090103910032655263381110717833738666552487800475408233311285499732184506029987191792654471239222514264507003463145082746956068371734117588951939445990645786692952060981480759276209059661304154400294503438024663325703049387675024044681156048781324466461452286439870733488532271255531175989046157408959624212841697765137329924582627656731935378487928787880530482295642538046075076381328394924975874467113053010842800225761476654298027283185165081234697839383861345528179898369858144733231922739752951864135108267277489581846230526745067977217282188436155347557601632776975408638056529357325623850824390558332933123158118922319418891798939021549061700797114828625147564926967550478468633148894551759626314395625209445605841046075060600482542007769734264968486259016518395289595627927724217513668226023027736015981844405801852031495279021576518395696328165639039173711909273800616596931095044391091796941360114223077669683003154091446419342326061706992312144966703982869129163016885097483279833153815988154947815964853951068664337238657840576281404552088605477529752616859859264777830647383360132030408092550755526594279464747077947866594189856187750758956873738098873269402753843218871626178942649464512895498394210220548456842648666366482586739267842185481786793105857596186334953016668577258273362382798796011314276043764688216837961186983303700132384261653358691653383012231953581760578669961098642784400802818301268910379768179535959789701948823244776603265375087410887054424342102814526538934607372156812916764520476404135876970094520716164535380020438823396323238925729554332633581740003158678895205092770546297685299537708331016709756422359402344645816800892479945908431662613736557057457479046216105005167382917266662750272956730726679673108524608797304190661721578692131933655470300127442657941527341091137394820888455684959755871245398001984742607501216598360515380412635216359818852681744878393558046132548884153493539667289778049649475788972857418798096361886550983405324211133538123781897791515946264988597912689955472580935861998814431746978336609462237788579783901902708230229694289787377971945419940969008038758236558322435310872564137055829139488614568346481557917648728141772413174469584128147385857166913691272608827844318905525746965221214959520045134785377177374502066054216644838680123108146065384229587271375412322565368932579102477213196634285558056747079524261437555578084668377143232749482042839596355026302005903385182597910057965848141802674966084927879815760192866574552111708067785910093815648993759316757828475984955745590471506132753849570282509846186582999581366940279837944153276870600770906211744983406552359400936616048987887144717000145079817459044885743413704834713619078192064358845103612827091949944874983448623387196271669907118895558089356739335325421883403856632800103587264226582913999628660375648794461927367884074012938271539172406747744347103025090734388255830814060748791416057584828975124159551489143982907771234578754999554976061909785053362370809882277070645123528711254139413241677541647978414971130286136449181953738143363085146510049841385135051234280167387035776097483553090920294390625198284158638714784815095625570597632377771987087329906960840468704750122930424057294774698930594899512781758355006638593422288433815551243235328897215378406612525416015965209120080756668269108574118048519621909511678227973309308323685039086182877233443149271239828849756901283787713161124434132073259906418118530875271976607728437200392897122599030325407661051388534657212775269654706595813802693508320584198415984183103137911542954121614160114851391931316448014548776301741846887762116898887190481473977540318899658201049088229689066162564036140060684725359886087328364428894317085484190824901288707852181457540827913688486562928654608525906529629202129133871502006201977799477957399649230016295368142185627970485110486707128943621586692200537173353848176218220498519690966009070301568547751070475966647015963261933828159024496036832445831999706865333522602568408294959844093732408817425661730704539998169737822732768965578419366562780233708869225079150089412406128991183992073399978077533726886130825658820875157509499635011660525729300603181430456848728310016006880663644521917617777608425486989841938419357442056870941752739389804116460734689898664226791511306906356496820578526644702159309345176153073196958647765805455786796653150021839661539575934247510169697451412905425675906458736543617854702487407691502727043557881427683308042925714508097999110957206740752091320078369322932695123967872546945647272984403391331848733258080982649369451483165169297837382270684949579268031821477328009932392233117102444728550925441228122428488687417357185489459250667173642022917334702229275464684275069505745878202872820505906555961914945506449712955560313209632577480950491689339881990316859451729104000365420025013942188628235613331199231917620189219654997768599453839584105818734670909308535820456862590044568628578990727005632575280652207962209037430564123074833264066511114432466406192843144388304133835784636665175302303517495640833806068353624552273858354827025656593329227442854658058342986490226857614157067002456058545671578536627378800491451044114505228124822758629811025116368069632590828997500068266294652548354714692467681409010070333934618508304902648101640087483860689215946803675982178089613764822449181059734705063037910871098644195177657516309869805975815640673508260844468165304666248108731690273802325580697815615988795161686817700567153834930958358758711414377635039651697841430644314723280432520075739081875741371849793111771221519228028198141209201586204025798541271855068400793412351553149276863541467941400587117085647137964500611160697700841194059295902815828094355798249993079350689091854206641674884912621976056116662479868379162472331757545129540174814574372475059885735454116824781568461213474076034154305364599275581737494035197489193653076470252648708520722702195926882833605302726541427464108302685320049027609135159108722676823367698233627171070748209591837778609166779491117527629961085943949330239761919012367722025110442876197965393053065477107337927326244721320165791042498964975598535612390873471101473467733382981919856711284343982202481821953156359102983135669394515792573668194937589485575684759172473780035005247869379449991387300529943476627165802265918031544691633327469202515927456720708827528145398430502171979562196963813371842615749460915321581723144799887851170430173865024892383844329963834465991302850787650483907117268320594081761426877522905224221681341945315581926138834932525094151865542623386376672215609369149858439999373993712844701603799853758026291267135766322755347591091637862306297092907871168029947325541672541746684555474555607422385458386730278175233258653396553771367413037440897463060388705815019086239604668530611550132846207621549825226132946883794245579999741489458543409201431749746301402687143063795644387479732072407610207040129267379917631917990398988268352622336465649339327138797678438645619782536735306001084937430791280435647686397055390200107519481933758752763217074602872232441341965227694331008789224543313354220314223370984651564560313846487572843935838690665957778822118630508843589064408389157033473643291241916477491535035599854672469518163077344612547127450139642092614149952658127070665720470617426634510608898751993413992167460136648156904061072775964376696934015146680867557416648379090482428609878536783367189606982698405540119041139891298859432243065835774392858892080428325911671279037273462980615895311476437739128077535348029454932736336617675145319642763248558740998132918426174848303381470944251621950649758816703738171530091110149363190755768265746400957826738483738330783315970068445284935788145550908978599571587774054139146379372824955094742849418598384064615820820231297610568717228502147763018552548565434833221298699876532887055682321195630125564867536968286687005865090240855599804598502669025189507201317154231278743598941984171077154319818229812174264144914922121444617530926574366434548479658277392319930789720906781353979893639313273024904894968150794105561285194319310539077667925141412936140305058887661276664430554715321901403613104885127791849384961548877168936515042131488655045404987184000151196784241100808540530026385200477984585952370647745407443486029693212682408939708790220024661499762437543529925992123365824230910466643061410662109181648014574364325867654616291188341550276853560604444019563392784837878843618266745609952198638179608031049910221330240824243249565467131857790242501183944013004651421091925477419727221771895786246794077841867047279639168063446446350316195692656126701861493292579615982986861870534558945043878320237368992927568338561756017977688237302921512303291421443340484990688883062684685234226156782559802437431749000878570384676099496119566334881417920656933015520071379877738388775971932806840776080326441672401721650610204453814452772798052284915473725025914422562952034428090724848304837999941009498191950276541823821417182731568459772599681044367878260890076071099537189433530339856089652763925746738808514282701941366092984560926608044411796454888437654996179639144319162493973567313504355934970936638081789314314205181949974383771418598440558512914520255817259861681056322723552558966794428552703244128305348890325513153885620432195148716325870623937215029214849759074508871308157260520879891574777067606961321668218069659447955104043392607441242903820270557643555883299834916377494293730813433245570109588106535734576556232768791110113823134600585483980780459654123328993588699145360992235949148573592395643137201870891285537559659954956709183693214729414060963861253938507436687802183054653350904119857489159511068354193275254513229547995140461761373627617247160297068461157715249036335481255627849856624532021298165668910824931386855920658997507161728292097136322942313033910920388513255578440661337447549690256381511832378361539194720095701016190565232206995680713845813264363187832191980731927622920736127452764661878606618125595394502583084781357436080492404537963922945243150028990128324830056545539170360525074865684442638681379783520527505919020718597135825092165943917333374394725387253854880356847888280377644329616056390836863277751112167365349932163475357258648306377301342374342118837528549668421191027852804952475537519496693176593124482838955431298050588152886943785245128841982065070035040235018833212526994741952042175296922738003375750072679119143546313658496176268405160419839121347465777518099277798891702418531748478578426803468797590183077837749306984450268395356907299887170174621968514823134585082830269088570322796158033683976527798405736476649003214423178658193378475741802789258605697446881532305367639263118356482122869620869074532308076559621551434069320427781873824049562149511422369709575996469384359382861370825699733652840501283064240389981295128679496518401950589579628776869173938705017090417904394766608897158885309782420841541106338938248500382732907126047047165845488889928502508958893597510149185335876119296343554053411066307970238188402893675134764532670743551290473238843737035906513407035891211753377411532897856890833583474576229168567714348411781831839424858338202571007050994478371368342773673225756636316436626326744001396102838703719526924700017893743146416732695465484144592738232687549937514753930209470220816353859693847086953428159527052786601408700149083558149739096713204532083648287387184211590439302807331748500750336187148126584994879734484382083281527507376051919723754352511492030781935919078906634017853510347037571906429093959987228110554036362917528823907538534755303702049924533322727516674080746095680240794306424742632862054134006648763158419040134736640796634162781085910210528061215521853021005012022172990619808061071255622800878728396814997512184716260885438880814811517078319127033136904111105176886098514009391020287745748675379306945782326109173344081417594226824333249913299168669030835304008552478138035664483359749810794203603630365797230567308141571907639010018210726339824655744700080920591755109143053365456906221747965729070987276157063455761267268718068428216334630080289472567411642054800444257925205108153567003204202366453864212799288802396203256745914510021858484066594949273491548826403489952349722095079744905865061593784013311981531908756636143665659212989915495178059558008403309797117766236990458597337762626478294550397960108886751218795186533227637938511948291962232246504415450857869060343332015842882499732819785911111500160447178075321472769578445221638828278987887254867105102089272148293177867213098901146804904881353106669453634046434286002902161101766965457496482527655634586012398914453234887815153807352485767347468368375133415470620262498738748333283924271335375844404710410368610051706478206989864633726325795469089920989831579360828363961986926808552451331946574258039851408663409925971957035188265169799240966952479472590933042862246428116017996492701044096065422156019895442757829289704718660390427270921707834289566324916673876211734160564659319850658400402502100124323312714416215387697543988783907370990491392725203906061867829220055639352751879074572445804696902638609097636438075182625225121981911782588771605635002295627668556305231520432259743207189421695996789799432969530048274153948028197887813378425276356065023490311245290053995499212953976483645741282767837655686673777538011093085243669514697409194643625330815725209283100601150088745330292409526679286892815555327465000979869973103074672424222803633327059263345829584079966356988983800982397335007545495060315952873605424122161704425985021515088062071615698942658644923280413783556545222280433764032182040141451011786955135575306250415527557230300005606637158545845058204342020175801048693280475147333713571805298596558917317917006294073042026558959444881556502746929778174507086097933052803286408851330280858352679084929107514044501459582763110745793482570440143699371823633831765556212599458395645352137436675998812666214881229600063597736968368101677089710781940235051932767573453046746498496985857019960131767039558568542978473059069631601766172944293009785892130568470476442621366069367042323742966993875142781543241332849744088377964673003559420798422850712974466440571910550933547882046991457692714211038544154544300185804078752325144304545637607141415225953330006278994732108342853969366873006735694342566375536792001861013794331401648078098980621894530512757640730079399023425986019126613202750526483579985806274351286185043418080644928254601073303435377620818063019430154686631329979238742782899040953669886610652082792141088130326476123588015124444890519782897835306450480900656492831563499251344007701743182612085672365495508866129829804782444719191898462754517753269777203043928235609191565272434964170157922057888655434194561264411750045998601030552386900629951283269755893940525061526269106843294554268332880758914091362231975425513465017113267088150449808078068988138891983032207639250423018184264349108739737101250516619275279310764621177919204923976746818852745855022970137563686912758793702416167317018437603681892020532586835468755845620601431345298406209404142841149834472745176483810892665273556926054338680241890035239562103423841048368128543470250021865429116967448278224695957474234382103136777910360015203925386883154786752235104787967719136097285227009852810388490217975382548033895443125640742244262845367039949885361939451751072812238519568055488858603839477183518522094524705190225162887420257097362488114807191189399044444644726432175165708079037174397359033107584907142141362536614924198327559759672689301268089730181728642857950125280856854849434885588986360818811952797906220226984338999728811887433714394186858520240232856102716030093196285355394210758803767221678801815324581231676319313650651510409777588424765521318083108195658975335089093202882368839723703951729040013380761544578315686430973110041355505431860263611763642521514602726080744349308684997451360819646405071980259825634591149464897549518262647519195640142338664285897584931310044303490334926470427939644469956073662500066716873248641543831479677835574706335877875289781768908017493153282259177636946965840922290707205178363253465569326201441768121971562617493965446801035838560898334231713377316159500713243067897549101708455015647758180206713899432186259942536800665980942236589631880251918470817923953911184671619168997338276177547920716469923287828745744414048577553306135665673337951267802325597448357432913771171405018247204023332030933933609208365154315998127888240573217930812549075584186467451712209812218443279871077805338460750209181604334099466538532234320154661322172961397573471901885789606759817891539638942062997010207666429317550050780088038150988911615945495791090347776809453090577007690308866062501168826883462932316915577549281913480611679763047933675522080723554084612450490982451353462150496784930226107941299554902008327177878805995161061840140537844103960547372052985506860253376826128362179319927808909635791187936011589737953325533016388308190640492140099412428870921850192005074070159919867195759817210515047657257090602140367863506486287623852029585132183664444199088754571602685882445340222995885290241409061248819979467029304067511744995700508239571976882206166989265205843615207708122555384270915641877733322966218531416869450479974861771181210185396820415310156295971089257660486555883612136022417156758270649418545615425539443347610603870822625458021012969890461911594201055707757131837312848909284449496511804254365368875581271734497746011243426433952484349070288722537236768972139128821752796631650972704083476246321130454403052365620867525829478989506653976360001308063793528708125114708908943318282657091410639702217197588232360267908366012967490150985196519026171834111403195047236254297485137630233211690034127278667645650417847896052506563876136230929113032949544656998829722985515950724556649922121290194706081702580459649503410602498192499323471855007929155794408673770895166076798687936206201318400882656559469484465923369646664277867640172286117103801709537770011985202701088568095970232903667687793884126359380578360848874593482131293085566856593625501855534204586107975555489603032856843451120171173201550568212984518005591784763620433922076978848898925004840139356406365356424722118185513598202965330446702047999070573753310168814350079467519484217657926025108334669728396166585168898945000981592039932471064522248020792372233305295380787020130116363982216907360868953555703826132311392989095305274327516958486473357031504602739573315778751197146587354356490691520723010926681977537268639606261968345534799120169740411058747421257513640124400358930553745948384084392499751707388633165648606617939007835281233230711795703024034345501300921439830842344595209145404793397387008997203764087129710076509051306808246260874908525673530557471682972107362005917975832145393755153735655474861877630825561478064187752086705289977810928340843359945393964987775062505398479166337804919179499783172479319346793500233989241423934687937700720134851285576929949497073784901063040322932991801741301312106362432458181385646230231540102337842579165322231025356149764130317084519851186378105192376694354200555229013440968341671956924045109150563627885872832770477064948623969225145314461037326005531491977314460604804151597928160027262760898871164741852152886454487865868959037891697173668785362233119809620580886758678990538333922781860414288924083455232230410824069275118058987389672080443874393167264806454474637017051975208972522930260085571059107202745084833584295431605203569783210931111134065513776296722532625827468615761228135816465124554286762343655495001482386191492810991198424358198606792188251864217612369942431069141802220366175177574982990092617023539185800941257783429555646585039437725192586944953722592479606795209192529138839821307162055493148071151690915896304290597371951073178260417026513398603268432159706369844056690303045820268605819171858224081370121627999265382376326051640850220434488185509504703349016859455183728726906940022330186363561152968959628723435042292283492653935519971488806166261860413590098821090344645561536501851805336627475805783663412358577240653406326368103781135861169505699492335930901426069238406487463594956357540708447611680059269529058464152789473022350676939244880902580621983514174950602530604275369942853001837903093031400960520604684909454891319230034223534558336730877962425656619775827202729499857732158552303284564004543739910550421151875259742113479363992845409165657373324581743516251747811922022160284430296255799382115275714819166400947828810821558314071196740007529496888084514088230395893678151042763987547934467977585329655680001482438520897114003200674375899776879547363600897617852210784704259372297829575397628957364413944045904087952104829502631332813089317435764504535532437184267693591389995280930497701347256057931813123619595480749870068608426686067925972399767463217209103533183880820451412429853178918901254208976260701749432110048979980111515395515934675466860107648944965467510233143377826341344521470645327004705424847193195144661869228832928236752947592029783304452428232705019976764709142188435985798734230135012286267872528108392928066891738461481591929588030342766375934370884609703804383639722590491080652629794900152208168700621723076775253862650375998610595578012776932264178781987843712116113148707697137287466307515393953357294316239296141640579732724658880302631202973121547337879984810834184282755844490603783851877618469041922279647062043083135764870450865078927282449792665907129532399933284905716589567895014358387790501688416110537788720704986044157398497473135843096931787492539837586977290228412307695818366612542870858107545778832070954592427593252834377935627921516172019938787070538920853939995660116409954815079147377588910607503899236402109203364027644141267742302051855471`100001.01714067292

left=right

Using this new, fast method, I computed and proved to be correct 64,000 digits of the MKB constant

!

The computation time for the original calculation was 784,937 seconds, 9.08492 days. The computation time for the check was 900,860 seconds,10.42662 days. See attached "64k MKB proven.nb" for the work and digits.

The code for the calculation:

g[x_] = x^(1/x); t = 
 Timing[MKB64k = -(I NIntegrate[(g[(1 + t I)])/(Exp[Pi t]), {t, 0, 
          Infinity}, WorkingPrecision -> 64000, 
         Method -> "Trapezoidal", MaxRecursion -> 16] + I/Pi)][[1]];
t



DateString[]

The formula for the check: right

The code for the check:

g[x_] = x^(1/x); t = (Timing[
    test2 = (1/Pi  NIntegrate[
         g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, 
         WorkingPrecision -> 64000, Method -> "Trapezoidal", 
         MaxRecursion -> 16] - 2 I/Pi)])[[
  1]]; Print["Timing for verification=", t];

The code for the comparison:

  MKB64k - test2

 (* 0.*10^-64000 + 0.*10^-64000 I *)

Here are the new speed records

digits       seconds
2000        23
3000        96
4000       165
5000        442
6000        623
10000      3250
40000      175,551=49  hours
64000      784,937=218  hours, half a day longer than the 35,000 using the long code.

The 35,000 digit computation finished on Sun 14 Jun 2015 06:52:29, taking 727,844 seconds, 8.42412 days.

Attachments:

Here is part of the reason this new method of computing the MKB constant is so productive.

The integrated of enter image description here

is extremely oscillatory and does not converge.

Here is its plot:

g[x_]=x^(1/x); ReImPlot[Exp[Pi I x] g[x], {x, 1, 20}]

enter image description here

I said it does not converge because

g[x_] = x^(1/x); Limit[Exp[Pi I x] g[x], x -> Infinity]

gives Indeterminate.

On the other hand, the plot of the converging integrand we are now using to compute more digits looks like this. ReImPlot[Exp[-Pi t] g'[1 + I t], {t, 1, 20}] enter image description here And the verification formula looks like this. ReImPlot[Exp[-Pi t] g'[1 + I t], {t, 1, 20}] enter image description here

I said it is convergent because

g[x_] = x^(1/x); Limit[Exp[-Pi t] g'[1 + I t], t -> Infinity]

gives 0.

On Tue 6 Apr 2021 04:13:58, I computed 64,000 digits of the MKB constant using the following code.

g[x_] = x^(1/x); t = 
 Timing[t64k = -(I NIntegrate[(g[(1 + t I)])/(Exp[Pi t]), {t, 0, 
          Infinity}, WorkingPrecision -> 64000, 
         Method -> "Trapezoidal", MaxRecursion -> 15] + I/Pi)][[1]];
t
(*393847*)

I verified it to 40,000 digits, See attached 64KMKB.nb.

Later I found it was accurate only to 54,390 decimal places.

Attachments:

Here is proof of the faster integral I'm using is indeed exactly equal to the MKB constant integral. In the following hypothesis, the MKB constant integral=LHS and the faster integral I'm using=RHS.

g(x)=x^(1/x), M1=hypothesis Which is the same as

enter image description here because Changing the upper limit to 2N + 1 increases MI by 2i/π.

by Ariel Gershon.

Iimofg->1

Cauchy's Integral Theorem

Lim surface h gamma r=0

Lim surface h beta r=0

limit to 2n-1

limit to 2n-

Plugging in equations [5] and [6] into equation [2] gives us:

leftright

Now take the limit as N→∞ and apply equations [3] and [4] : QED He went on to note that

enter image description here

Today I followed a lots of links about your work on internet. And this is the first time I post in Mathematica community! Since I very interested in your efforts, I wish to become a successful man like you in mathematics so that my name remains eternal ... My dear friend Marvin Ray Burns. Your sincerely, Fereydoon Shekofte

@Fereydoon Shekofte: All it takes to leave a legacy is to keep planting seeds! A million baby steps >a mile.

I found out how to verify my MKB constant calculations beyond any shadow of a doubt. Use one iteration of partial integration, because for g(x)=x^(1/x),

enter image description here.

The following computation will show that the calculation was right by leaving a small error.

g[x_] = x^(1/x); t = (Timing[
    test = -(I NIntegrate[(g[(1 + t I)]) ( Exp[-Pi t]), {t, 0, 
           Infinity}, WorkingPrecision -> 2410, 
          Method -> "Trapezoidal", MaxRecursion -> 10] + I/Pi)])[[
  1]]; Print["Timing for calculation=", t]; t = (Timing[
    test2 = (1/Pi  NIntegrate[
         g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, 
         WorkingPrecision -> 2410, Method -> "Trapezoidal", 
         MaxRecursion -> 10] - 2 I/Pi)])[[
  1]]; Print["Timing for verification=", t]; err = 
 test - test2; Print["Error=", N[err, 20]]
(*Timing for calculation=48.0927

Timing for verification=69.4713

Error=-1.*10^-2410-1.03*10^-2408 I*)

The following will show that the calculation was wrong by leaving a large error.

g[x_] = x^(1/x); t = (Timing[
    test = -(I NIntegrate[(g[(1 + t I)]) ( Exp[-Pi t]), {t, 0, 
           Infinity}, WorkingPrecision -> 2410, 
          Method -> "Trapezoidal", MaxRecursion -> 9] + I/Pi)])[[
  1]]; Print["Timing for calculation=", t]; t = (Timing[
    test2 = (1/Pi  NIntegrate[
         g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, 
         WorkingPrecision -> 2410, Method -> "Trapezoidal", 
         MaxRecursion -> 9] - 2 I/Pi)])[[
  1]]; Print["Timing for verification=", t]; err = 
 test - test2; Print["Error=", N[err, 20]]

(* Timing for calculation=14.375
Timing for verification=18.7344
Error=-1.21910183828457949*10^-1311-1.6392815749781077289*10^-1309 I*)

The following proves that MaxRecursion -> 12 is good for calculating and verifying at least 8192 digits.

Compute 8192 with MaxRecursion -> 12

g[x_] = x^(1/x); t = (Timing[
    test = -(I NIntegrate[(g[(1 + t I)]) ( Exp[-Pi t]), {t, 0, 
           Infinity}, WorkingPrecision -> 8192, 
          Method -> "Trapezoidal", MaxRecursion -> 12] + I/Pi)])[[
  1]]; Print["Timing for calculation=", t]
   (*Timing for calculation=1111.69*)

Verify 8192 with MaxRecursion -> 12

g[x_] = x^(1/x); t = (Timing[
    test2 = (1/Pi NIntegrate[g'[1 + I t] Exp[-Pi t], {t, 0, Infinity},
          WorkingPrecision -> 8192, Method -> "Trapezoidal", 
         MaxRecursion -> 12] - 2 I/Pi)])[[
  1]]; Print["Timing for verification=", t]; err = 
 test - test2; Print["Error=", N[err, 20]]
(*Timing for verification=1419.66

Error=0.*10^-8193+0.*10^-8193 I*)

As time allows, I will post what all this parity-check has to say to confirm or unconfirm my latest table of recommended MaxRecursions (M.R.).

       digits    M.R.   
      1309  default
      2410      10
      4453      11    
      8182      12
      19734     13
      31286     14
      54390     15
      65942     16
      77494     17
      89046     18

We see that 4453 11

is confirmed, although the real part converges to a slightly higher magnitude:

g[x_] = x^(1/x); t = (Timing[
    test = -(I NIntegrate[(g[(1 + t I)]) (Exp[-Pi t]), {t, 0, 
           Infinity}, WorkingPrecision -> 5000, 
          Method -> "Trapezoidal", MaxRecursion -> 11] + 
        I/Pi)])[[1]]; Print["Timing for calculation=", t]; t = \
(Timing[test2 = (1/Pi NIntegrate[
         g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, 
         WorkingPrecision -> 5000, Method -> "Trapezoidal", 
         MaxRecursion -> 11] - 
       2 I/Pi)])[[1]]; Print["Timing for verification=", t]; err = 
 test - test2; Print["Error=", N[err, 20]]



Timing for calculation=230.391



Timing for verification=299.469

Error=2.8146045128793867*10^-4456+1.6474663184374133246*10^-4453 I

As for MaxRecursion -> 12 where the R.M. table shows up to 8182 digits, r.e.

      8182      12.

Actual inspection from this method shows it is possible to get all the way up to 8278 accurate digits of the real part and 8275 of the imaginary. That is the same difference that exists from it and 35,000 digits computed by a totally different method.

So

      8182      12.

should say

      8275      12.

Here is the work for the verification:

g[x_] = x^(1/x); t = (Timing[
    test = -(I NIntegrate[(g[(1 + t I)]) (Exp[-Pi t]), {t, 0, 
           Infinity}, WorkingPrecision -> 10000, 
          Method -> "Trapezoidal", MaxRecursion -> 12] + 
        I/Pi)])[[1]]; Print["Timing for calculation=", t]; t = \
(Timing[test2 = (1/Pi NIntegrate[
         g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, 
         WorkingPrecision -> 10000, Method -> "Trapezoidal", 
         MaxRecursion -> 12] - 
       2 I/Pi)])[[1]]; Print["Timing for verification=", t]; err = 
 test - test2; Print["Error=", N[err, 20]]



Timing for calculation=1764.03



Timing for verification=2247.2

Error=-7.2028204961753149*10^-8278-8.0907462882284574618*10^-8275 I

As for MaxRecursion -> 13 where the R.M. table shows up to 8182 digits, r.e.

      19734      12.

Actual inspection from this method shows it is possible to get all the way up to 15444 accurate digits of the real part and 15442 of the imaginary. That is the same difference that exists from it and 35,000 digits computed by a totally different method.

So

      19734      13

should say

      15442      13.

Here is the work for the verification:

g[x_] = x^(1/x); t = (Timing[
    test = -(I NIntegrate[(g[(1 + t I)]) (Exp[-Pi t]), {t, 0, 
           Infinity}, WorkingPrecision -> 20000, 
          Method -> "Trapezoidal", MaxRecursion -> 13] + 
        I/Pi)])[[1]]; Print["Timing for calculation=", t]; t = \
(Timing[test2 = (1/Pi NIntegrate[
         g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, 
         WorkingPrecision -> 20000, Method -> "Trapezoidal", 
         MaxRecursion -> 13] - 
       2 I/Pi)])[[1]]; Print["Timing for verification=", t]; err = 
 test - test2; Print["Error=", N[err, 20]]



Timing for calculation=11440.4



Timing for verification=14435.1

Error=1.269166151550935283*10^-15444-1.34038091454473637998*10^-15442 I

Through actual inspection the next row is

           28932   14.

More to come. But so far through actual inspection, we have the following.

        digits    M.R.   
       1309  default
       2410      10
       4453      11   
       8275      12
       15442     13
       28932     14

So far, the table gives a clear-cut pattern:

            digits     M.R.
1309*1.84 ~=2410         10 
2410*1.85~=4453          11
4453*1.86~=8275          12
8275*1.87~=15442         13
15442*1.875~= 28932      14

Following the growth with an eye on our experience were we proved the next row is

               54286          15

we get

            digits         M.R.

 28932*1.88~=54286          15
54286*1.89~=102600          16

March 30, 2021

I finally computed 40,000 digits of the MKB constant!!!!!

(March 30, 2021, approximately 8:00 am) The new 40,000 digit record took 362945 seconds, while the 35,000 digits old record took 727,844 seconds. That's more 2.29 times as fast: (40000/362945)/(35000/727844.) = 2.291867126660277. See attached first 40 K MKB.nb and 35KMKB (1).nb

Here is the short, very fast code.

g[x_] = x^(1/x); t = (Timing[
    test = -(I NIntegrate[(g[(1 + t I)])/(Exp[Pi t]), {t, 0, 
           Infinity}, WorkingPrecision -> 40000, 
          Method -> "Trapezoidal", MaxRecursion -> 18] + I/Pi)])[[1]];
t

The recommended setting for MaxRecursion (M.R.) is found in the following table.

digits     M.R.
2048      10
3000      11
4096      12

10000     13
40000     18

40000/2048+9 Here are the new speed records

digits       seconds
2000        23
3000        96
4000       165
5000        442
6000        623
10000      3250
40000      362945=101 hours

Documentation is available from the Wolfram Cloud here. (40,000 digits are saved at the bottom by the name of "test.") Here is a redo of the 10K run, where "test" is 40,000 digits of which 35,000 have been computed by very different methods.

 g[x_] =  x^(1/x); t = (Timing[ t10k = -(I NIntegrate[(g[(1 + t I)])/(Exp[Pi t]), {t, 0,  Infinity}, WorkingPrecision -> 10000,  Method -> "Trapezoidal", MaxRecursion -> 13] + I/Pi)])[[1]];t


 (*3250.55*)

 N[test - t10k, 10000]

  (* 0.*10^-10001 + 0.*10^-10001 I*)

"Thu 1 Apr 2021 11:42:14" I computed a much faster 40,000 digits of the MKB constant.

g[x_] = x^(1/x); t = (Timing[
test3 = -(I NIntegrate[(g[(1 + t I)])/(Exp[Pi t]), {t, 0, 
Infinity}, WorkingPrecision -> 40000, 
Method -> "Trapezoidal", MaxRecursion -> 15] + I/Pi)])[[1]];

175,551seconds That's more 473% as fast as the old 35,000 digit record!!!: (40000/175551)/(35000/727844.)=4.738347911921403

Here are the new speed records

digits       seconds
2000        23
3000        96
4000       165
5000        442
6000        623
10000      3250
40000      175551=49  hours

I made a quicker program for calculating the digits of the MKB constant in V12.1.0 enter image description here

Module[{$MaxExtraPrecision = 200, sinplus1, cosplus1, middle, end, a, 
  b, c, d, g, h}, prec = 5000; f[x_] = x^(1/x);
  Print[DateString[]];
  Print[T0 = SessionTime[]];

   d = Ceiling[0.264086 + 0.00143657 prec];
  h[n_] := 
    Sum[StirlingS1[n, k]*
        Sum[(-j)^(k - j)*Binomial[k, j], {j, 0, k}], {k, 1, n}];
  h[0] = 1;
  g = 2 I/Pi - Sum[-I^(n + 1) h[n]/Pi^(n + 1), {n, 1, d}];
  sinplus1 := Module[{},
     NIntegrate[
       Simplify[Sin[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)]];
  cosplus1 := Module[{},
     NIntegrate[
       Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)]];
  middle := Module[{}, Print[SessionTime[] - T0, " seconds"]];
  end := Module[{}, Print[SessionTime[] - T0, " seconds"];
      Print[N[Sqrt[a^2 - b^2], prec]]; Print[DateString[]]];
  If[Mod[d, 4] == 0, 
    Print[N[a = -Re[g] - (1/Pi)^(d + 1)*sinplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] - (1/Pi)^(d + 1)*cosplus1), prec]];
    end];
  If[Mod[d, 4] == 1, 
    Print[N[a = -Re[g] - (1/Pi)^(d + 1)*cosplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] + (1/Pi)^(d + 1)*sinplus1), prec]]; end];
  If[Mod[d, 4] == 2, 
    Print[N[a = -Re[g] + (1/Pi)^(d + 1)*sinplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] + (1/Pi)^(d + 1)*cosplus1), prec]];
    end];
  If[Mod[d, 4] == 3, 
    Print[N[a = -Re[g] + (1/Pi)^(d + 1)*cosplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] - (1/Pi)^(d + 1)*sinplus1), prec]];
    end];]

Whether it will allow me to calculate more digits is a question that will be answered in a week or two.

Here is a comparison of timings on similar computers.

 digits    seconds

                                              (Impoved code)
             V10.3       v11.3   V12.0         V12.1 
 2000       256            67      67           58
 3000       794           217     211          186
 4000       1633          514     492          447
 5000       2858          1005    925          854
 10000      17678         8327    7748        7470
 20000      121431       71000   66177
 30000      411848      ?        229560

Seethe following cloud notebook for the results from my improved code. https://www.wolframcloud.com/obj/bmmmburns/Published/2nd%2040k%20mkb%20prep.nb

June 5, 2018

Mathematica got hung up on the 40k run again! this time it complained about the dynamics stopping working and wouldn't quit complaining. I think it needs a smarter program! Anyone else want to try to beat this world record??

My computer is getting so sluggish that it has become nearly impossible to get snippets of RAM use! I was able to determine that it is, however, still working on the 40,000 digits. I'll let it do its job!

You might get tired of hearing this, but I made another improvement to my MKB computation formula and am trying to get 40,000 digits from it.

Code

 MaxMemoryUsed[(*Other program:For large calculations.Tested for \
 1000-35000 digits-- see post at \
 http://community.wolfram.com/groups/-/m/t/366628?p_p_auth=KA7y1gD4 \
 and search for "analog" to find pertinent replies.Designed to include \
 40000 digits.A157852 is saved as c,the real part as a and the \
 imaginary part as b.*)
  Block[{$MaxExtraPrecision = 200}, 
   prec = 40000(*Replace 40000 with number of desired digits.40000 \
 digits should take two weeks on a 3.5 GH Pentium processor.*);
   f[x_] = x^(1/x);
   ClearAll[a, b, h];
   Print[DateString[]];
   Print[T0 = SessionTime[]];
   If[prec > 35000, d = Ceiling[0.264086 + 0.0019 prec], 
    d = Ceiling[0.264086 + 0.00143657 prec]];
   h[n_] := 
    Sum[StirlingS1[n, k]*
      Sum[(-j)^(k - j)*Binomial[k, j], {j, 0, k}], {k, 1, n}];
   h[0] = 1;
   g = 2 I/Pi - Sum[-I^(n + 1) h[n]/Pi^(n + 1), {n, 1, d}];
   sinplus1 := 
    NIntegrate[
     Simplify[Sin[Pi*x]*Simplify[D[f[x], {x, d + 1}]]], {x, 1, 
      Infinity}, WorkingPrecision -> prec*(105/100), 
     PrecisionGoal -> prec*(105/100)];
   cosplus1 := 
    NIntegrate[
     Simplify[Cos[Pi*x]*Simplify[D[f[x], {x, d + 1}]]], {x, 1, 
      Infinity}, WorkingPrecision -> prec*(105/100), 
     PrecisionGoal -> prec*(105/100)];
   middle := Print[SessionTime[] - T0, " seconds"];
   end := Module[{}, Print[SessionTime[] - T0, " seconds"];
     Print[c = Abs[a + b]]; Print[DateString[]]];
   If[Mod[d, 4] == 0, 
    Print[N[a = -Re[g] - (1/Pi)^(d + 1)*sinplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] - (1/Pi)^(d + 1)*cosplus1), prec]];
    end];
   If[Mod[d, 4] == 1, 
    Print[N[a = -Re[g] - (1/Pi)^(d + 1)*cosplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] + (1/Pi)^(d + 1)*sinplus1), prec]]; end];
   If[Mod[d, 4] == 2, 
    Print[N[a = -Re[g] + (1/Pi)^(d + 1)*sinplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] + (1/Pi)^(d + 1)*cosplus1), prec]];
    end];
   If[Mod[d, 4] == 3, 
    Print[N[a = -Re[g] + (1/Pi)^(d + 1)*cosplus1, prec]];
    middle;
    Print[N[b = -I (Im[g] - (1/Pi)^(d + 1)*sinplus1), prec]];
    end];] (*Marvin Ray Burns,Aug 06 2015*)]

Output so far:

Fri 18 May 2018 08:03:35

65.6633081

Here are the results from the task manager:

enter image description here

I got substantial improvement in calculating the digits of MKB by using V11.3 in May 2018, my new computer (processor Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz, 3601 MHz, 4 Core(s), 8 Logical Processor(s) with 16 GB 2400 MH DDR4 RAM):

Digits  Seconds
2000    67.5503022
3000    217.096312
4000    514.48334
5000    1005.936397
10000   8327.18526
 20000 2*35630.379241 ~71000

They are found in the attached 2018 quad MKB.nb.

They are twice as fast,(or more) as my old records with the same program using Mathematica 10.2 in July 2015 on my old big computer (a six core Intel(R) Core(TM) i7-3930K CPU @ 3.20 GHz 3.20 GHz with 64 GB of 1066 MHz DDR3 RAM):

digits          seconds

2000    256.3853590 
3000    794.4361122
4000       1633.5822870
5000        2858.9390025
10000      17678.7446323 
20000      121431.1895170
40000       I got error msg
Attachments:
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard