Group Abstract Group Abstract

Message Boards Message Boards

How to calculate the digits of the MKB constant

34 Replies

Since the original formula for the MKB constant is an integral, its domain is continuous. So, we have the following comparison of it to the original formula of the MRB constant which is a sum. (MKB has many more pairs of terms that are equal to each other.)

The MRB constant = Limit[Sum[(-1)^n n^(1/n),{n,1,2N}],N->Infinity]

In the domain of terms of the MRB constant ask, when are the pairs of terms equal?

•   Limit[x^(1/x) - (x + h)^(1/(x + h)) ,h->Infinity]  == 0 when x=1 because Limit[x^(1/x),x->Infinity]=1.
•   x^(1/x) - (x + 2)^(1/(x + 2)) == 0 when x=2 because 2^(1/2)=4^(1/4).
•   I think there are no more.

The MKB constant = Limit[Integrate[(-1)^x x^(1/x),{x,1,2N}],N->Infinity].

Compare the previous list to one using the domain of terms of the MKB constant, and ask when pairs of terms are equal?

•   For x != 0, x^(1/x) - (x + 0)^(1/(x + 0)) == 0 because, for example, Limit[x^(1/x) - (x + 10^-h)^(1/(x + 10^-h)), h -> Infinity]=0; see last line a special such x.
•   x^(1/x) - (x + 1)^(1/(x + 1)) == 0 when x= 2.2931662874… (By definition Foias’ second constant. See second constant at http://mathworld.wolfram.com/FoiasConstant.html).
•   x^(1/x) - (x + 2)^(1/(x + 2)) == 0 when x=2.
•   x^(1/x) - (x + 3)^(1/(x + 3)) == 0 when x= 1.801627661…
•   x^(1/x) - (x + 4)^(1/(x + 4)) == 0 when x= 1.6647142806…
•   x^(1/x) - (x + 10)^(1/(x + 10)) == 0 when x= 1.3295905071…
•   …
•   x^(1/x) - (x + 100)^(1/(x + 100)) == 0 when x= 1.00697415301373…
•   …
•   Limit[x^(1/x) - (x + h)^(1/(x + h)) ,h->Infinity]  == 0 when x=1 because Limit[x^(1/x),x->Infinity]=1, and that is where the sequence very slowly goes to.
•   Many more.
•   x^(1/x) - (x + 10^-1)^(1/(x +10^- 1)) == 0 when x 2.669048059942…
•   x^(1/x) - (x + 10^-2)^(1/(x + 10^-2)) == 0 when x= 2.713289492595…
•   x^(1/x) - (x + 10^-3)^(1/(x + 10^-3)) == 0 when x= 2.71778190…
•   x^(1/x) - (x + 4)^(1/(x + 4)) == 0 when x= 2.71823182922…
•   …
•   x^(1/x) - (x + 10^-10)^(1/(x + 10^-10)) == 0, when x= 2.718281828…
•   …
•   Many more.
•   Limit[x^(1/x) - (x +10^- h)^(1/(x + 10^-h)) ,h->Infinity]  == 0 when x=E, because that is where the sequence very rapidly goes to!

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:

I presented M1 and M2 in the above messages. Some of the formulae mentioned below are new ones for M2 (part 1) as mentioned in the immediately previous message and M1 (part2-i/Pi). enter image description here

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.

According to Wikipedia, improper integrals like that of the MKB constant can be transformed into proper ones by enter image description here.

So we have the following.

enter image description here

   g[x_] = x^(1/x); Timing[
   MKB = NIntegrate[Exp[I Pi t] (g[t]), {t, 1, Infinity}, 
      WorkingPrecision -> 100]
     - I/Pi];



    Timing[
   MKB - (-I NIntegrate[(g[(1 + t I)])/( Exp[Pi t]), {t, 0, Infinity}, 
        WorkingPrecision -> 51] - I/Pi)]

{0.078125, 0.10^-52 - 2.10^-51 I}

    u := (t/(1 - t));Timing[
   MKB - (-I NIntegrate[(g[(1 + u I)])/( Exp[Pi u] (1 - t)^2), {t, 0, 
         1}, WorkingPrecision -> 51] - I/Pi)]

{0.140625, 0.10^-52 - 2.10^-51 I}

Here is what the region of the proper integral's function looks like.

g[x_]=x^(1/x);u:=(t/(1-t));Plot[{Re[-I(g[(1+u I)])/( Exp[Pi u](1-t)^2)-I/Pi],Im[-I(g[(1+u I)])/( Exp[Pi u](1-t)^2)-I/Pi]},{t,0,1},TicksStyle->Directive[FontSize->6],Ticks->{0,1/4,1/2,3/4,1},PlotLabels->"Expressions",PlotStyle->{Red,Blue},PlotRange->{-2,.3}]

enter image description here

In[24]:= N[{Re[MKB],Im[MKB]}]

Out[24]= {0.070776,-0.684}

This gives some improvement on timings, as shown below.

Timing[MKB = (-I NIntegrate[(g[(1 + t I)])/( Exp[Pi t]), {t, 0, 
        Infinity}, WorkingPrecision -> 1000, MaxRecursion -> 11] - 
     I/Pi)][[1]]

82.296875

u := (t/(1 - t)); Timing[
 MKB - (-I NIntegrate[(g[(1 + u I)])/( Exp[Pi u] (1 - t)^2), {t, 0, 
       1}, WorkingPrecision -> 1250, Method -> "DoubleExponential"] - 
    I/Pi)]

{8.046875, 0.10^-1001 + 0.10^-1001 I}

I will follow up on this soon.

EDIT

The following notebook was completed in V 12.1 to show the precise differences in the computed integrals. V12.2 doesn't show that detail.

I tried to make sure Mathematica did not use the same formula for any of the last 3 integrals, so that any 2 of them combined may be sufficient to prove the accuracy of a calculation of the MKB constant digits.

MaxRecursion guide

     max digits M.R.   

       1309  default
       2410      10
       4453      11   
       8275      12
       15442     13
       28932     14
    54286          15
   102600          16
   193914          17

I am presently computing 200,000 digits from the following 2 different codes from the cyan (light blue)-colored methods mentioned above. They should agree to, and prove to be accurate 193,914 digits.

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

and

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)]
...Print[Abs[test2]]

0.687652368927694369809312409365440164939637384903622541795071010107433662534784937068627298240498468188731929334335466123286287665409457565957721158025565041628462514392509712058969798650095259019570681317047253872650696689712863353222454748651567212999463776592270252197480695760895993932096027520027641920489863095279507385793449828250341732295653380918110153208794818133582580549881272809752093690167702874135692329226449647710903297264836829304174916737534308781180540622966784246874656245131742049004832216427665542900559350289936114782223424261285828326467186036500189315374147638489679365569122714398706519530651330568884655048857998738535162606116788633540389660052822237449082894798620397228331715198160243676576563833057235963591510865254600363874868376326223342987257095524637683005910353149353985736118868884201748241906260834981730342237039841332642826992107404550655896666748345365674890607157774441475484243882201336628162741169867245763301760589124380273199798408830595058913091171919877614694147726489893436574250850340507327385299035465871142174996355845144754296569593277328624899350764900128612322492446704232200904844779690044774489466704342791971033325818579375177198986574258327677001192658549571157948011432781854619937234931318023607913892488081547595643027273112231930052296408924740226650932079692977979723087954832182561714039165214592519432072341006090867558444590500046670796334654563831795097893579417369163527446118485216640779183866242940408834876470623546535581092657696442769943697415557222634945994928345582919379555737064807229823898063124722397462865271762488831161242854699473036671880755068265078114794285828073665994075449085609906998661672333071442457648357415011749796791660787652311451754111998258225321700918588336282021287779660266006478430684428943104013430039391172368672456567326867191392067160282558191418023317019420272483377716338824452250493343290088273713208490064728462268680111291491927548831539955609216712080596717327044992535173274475292082971806726541234573012187588922785258941679359309833632188775125339942519782720927000039941365206998132630533273991326416902311790633149315469069276127756339953482099111666787245894678217671065924986638270570343636322418071218315461754981780116872845904392933222312634063010668635890727172906302914419826841138191988801002311826135877981048636111854339760092548625855272228434459019589431535611488290832428740182264805542742313913247673761484855317877679081248318736885799791146628561846121645348363706993714404642637687246682916177436817197668497406635902777379774906931834613202666667934721167742766184081247679653697963627326689875567973381288761292645588676577374175486171468085921370568796029822066096138810694901663815288251802047033158967196670699230774543526497234960339858931883091503915795739160596394536551888563349803550472815602962881508366804998218069180678694685716877095180884089666537160093565567142816949049140389889969622138335306369872797696722004134488934199141909540631009622516491026146769443332012130247118689547727419916750451982469474995748720278006548218237971163992971318666628668322153329147613258809830812112721817755189515395038520631194723013827663038208514677432660393561234954619144639606443863942283422119983701523517202350349974340357435130517547615718350437694755286401446213077601594814967134014093749577292004006501003182269885240151273825094906429002365538514998236582694588739760320513553931616538060160804463941967193124541679151546024486386243545751533349322983934067341745803169349396328928510774610383994700153664399101369711869095993312045174622625083776734777457896453094251455591988025303514038979276228911722332391351674205671623988739654773714983350873103954227963623802275362121591845292436440942853287632868736533998675932008918234687385373568179160090072068575907929831845568821431183833328124917477330563131171796960949211206708020123100128641108004378318526206983274576190359042684980306934386326856232133668641295234042563455423765677212877062343591250165884837778769702360844562770239485513344905910225942537440776312326608695938094530877498309003932027877364821336281489799921095449548400679427350303911054960263218724681225424950170237858106058205453928201040692798930673245972990438833812517673703312069134292846145637323080183699723606380197784252465463298381316393550432363887080448573004086923657339328978768092020256933053329740914119836356190385144422637838017459833001214648795501466728270720023176863965985877024875095723494225934411848024763441872800144508600693071206217582775521248411586593861760367032471243892233270082100723186718848951793057787280518885244121584867818631550344472213799063860625599151291727258334205559018577296906059509416785870570256418483650908097508700518638428058031897849760760995749564366641314571500967114730330606840650607473407649981956214255248246116577872123474973072971848432761003381102678636189741542723454823699682166632334173385019291146976799744619990405892903271559744680897063024547760268171808626664991296281742655775392961035358076742039527820731159283175448913176547082159721450128239419807441280486585971639772803964273161696474753035950809274717542888418330468414584223877179745678430447638504181252063549016119867356329862997424165144044590569795938954881622339436526783472655960222826223859425879192658817325386880404212775155357937581266022118110712156276804193444325167474020194924829431963028860748329615927889910574096697433257583073331631362466323645637809124630296116622013346166423631645395438401813014692075488932901441966466987649597533423228141459969848159007374992812113425484289061122956705877943963367731992946946854081808991353246729731656451177941651646257722514990131975077091284738956436205352211916147874151690325804624667718901257893455212686979332219740722282571376880627489237474631284268917536569776038061875775395621715866258085032929960978261678333127933610942580996269514185685855189616876351018368047173315268338214829277591134759723308528829448330322579511852496578084497839759281442126294655554011217706679433547381820165991778793225353186693822999815000077939692748371667856290804887612221975498750041612088019544708627283718788896909611270081289885569688979512265893224133936212909221697122155016623288857468583510918540676121909608147885383405625782079401944478203747589640494534752795965947556977610232315033546966082661405884277252791324080418237604595048728320015774066374904934722666140474538608700656867928773172402153002451159391709904628598438076500498243001751957091729651973270786755623108410325185757124841188473677793368617240334372128212754321830943129177938673157845510275232270053271576480394883639537016239659956047116950048567737622031587239535542727668533099162673412757977019033303200429917803219280427522042389077461974365517076562323102971989508780915949288971825124168738962223781874995527529219767124732768425027601524613338881383626044436833966293398962976502049805974185492843398711138248342866712998168173875826389999159132866387285955461359353433277234550656837459405579318942373317532920454704109399995755375125853070755677942205913846634987701726270128644005431947507800569922321174535783203892098677583871536644743452165487482092849156790391030029745336597709316598468703644136346706485881601931068431881062783384848109065185665946431375825101416752992537400134527037175397835959163478080693038900530167318203565455533343086699882382155847972348578332407153377349648909633363528952091584721144519677892585616422438483012307613651743507598106247439180278367851944326127345641753865214067855523069820608556614208578446428924578218459816547174180433129157551553429022481856630523875010349347494140438503162434439957387351011734690761745297432281713161484245115615032361881120347733193115131329128427981706214728270476725126626608520216808731288062122502219801635160493439514920368271923654586240079624265544179060766216423400082644946040094009636187619637432333366997232308047286163041443377840231984659013337273844089637461789118958464106004169975760865431373291719446920554268012695821176232185938301833013869668501212716648313991192750663060840810375831651709445659001945914547056214252880868065041671573992136659562219878878507297950784282351917334440776231560663534418063018094472375583868007637797264690198015167817670299534543554869040866689611338174394507151511286852553217757268928704404737446481354989959350541603386856635235810378843692233440605320352445495309787079619827159756347395720878812301534604026108915330801109737000915406786969854796488770935386947039498146783181789063441315464802374206757844981377603368002054981222303536753680105876753131780076133104090339158290700389540514025926824643134565755680592208706179744134345762078895866201279706282163029336262560985214113548877920012921834429927134951481141325038868639182154955941357093566069568391231287647100245557881507009964035657154891481205361937630807719659087749321766875753961779700472798723906820648533333178767354419611268129624353067114479319000246581023949480607238743761929920745345770724090149671775798810032036038445974658386720892452546478449402973479075821628409685703110347357025588850415917354585878063218216814683625582698187654911154923703573352099168162013717998880878386435603016297840580604744688076013182747636263188052696279247369760965961434388897508072170898857065895377048450339950109905017040304859784139066934718230560589783617657665408758577801523534081913512863870791624461333334495518360734701934452483559292803697631494226324386069986447212083478293555968477758874720794593393760043774417664560241339546226993433145528627434214223711955894675078112249740766665051004473359852946987434815362779564729859893791420599276655473191804360476614451509716356333210706645767698285033724201763818540821229116934467853586856494323542007989852003448292307691916514629879292626196817340429994118058173826277503208365749606075649399351937133179387732199685293788756432977095810947057107750873373400484303561333298093078445133051305364194515027852404728006061035467181100034293035299064994947100479122378044492494688745258610835070105803493747010400308536856228489198784499293998514337515316008602188825328744166075592931846523665184052851724271846289270985603547827263632125975947709536344416232237180023268257666802414218520816096303031464862570640016991984223705767203358244554622857742445106941230152667185444796829865879172766568885817762162422878652315803291298080385919019524581085828867998504589138688708973162263997856952076975944280754798621554440632900699337631605197583538072840830733930270877945495130077367921122164292084392553740961965949041278690963627140222941849738915942488000611266543106685088099928685390993199239679006443582232929810121684043907896996922269745328127367407267050016557751249736200973451820725243591458859059021762187840926508526671711974800146122362594648727658431160063560868900676902330299826958752072930036262042232747456610695094407575884541693137264809373650212545343482099803469597154271247999278238824023966813193102220857193046480726328508484769032013787487186418775780175492467284549759117313803239921092441577819035938785542060643609146494098872076463621987185707177178285557451570554996061099450492944485544262774521840004929479239396811336676842993364426003535960740341454576663343317939612754620390076272139954520361772972721817453639582531457463787136749143627988619123706162045472956050994982689252701424681755418859364552303919963049140043377775683553474221303679053473502737783484262284286614690964628277155316612236619829229653858736636549068085526458992340482093659331266705752758023448295772895181611148175483287083232601371718873815374314384957631628720134125307290818008556316137679066111992354416913135369593062259698420732189775252068050890105030867447739118025312624587363838186329814544158889315002769594853355716174016438678024545180730837479816892432287076913635055192488015254707294844039818397277245813250542798945809241534240349807215911177134594817119201881463746097354377087897263810860023758025328514600360512450292670757773950410692031622498192925629066658584230188532052860787948061820359562534925980177694146807138396009434884729769281577950831315698566810659703546072319164407900231219719210636432530169921469343535413850653232327324163485283638302045502979014500283497602795860333978681543148106864647825353073165586837449497644514078175793533502660472451262575884963770474603951614918656702401577446816988968457400562693368912143679465475166786227204998627089092364888010292427633200637168803387230471791517981720585911242455757914897789444417925523603991987997431620857970464920872843315473152348917076635836373450583392508443522086260750652110020424028525489976962242318944765841043052529830511919932222190557418285240942523779255817030371528935340724254017203759348875817309918282903251175065557892308375831344732105472942601949829815198609125959543381918357209923088636302238352837592552055193007778815348672854545928278285246350310960778806480518869711336951261139296622295587328190976002076258240397272876897152343829740101857657393722841915131429592368532886274523085433376386440490258035441035106822706332181109119546885724945881872419710097900862759997318362828221296967545605844845032508410125068316055588630126591379034624499587325251886183809000880508940543360663557911193749658279062748648421518822688506212972481014283120549005335832169446318616261225100820829487695525848153421280836616521907724241460246250092311638200150686721955793121895486514875913454378137574416522338250165793704835467490250264860918356248855807291072063947431209894437425963979469865326573610502274925269448261039189961978136378711760602383820909465667658383990450737497498089679004775656852041631453497672022540496534457017317972245809311301444363159669077050901690356580902598750369561584164417442433124112429847677623965226025859622088595534565758464436740577828084499812619089549839512417597417507209015818847228175043040119574513950966738184148598420654090046967740349109892961448544353478410782517454520069453215052521444887023161905015138301816789004606523506679101237478171795951994482981331110927633977541283417279106057386316872547411748189381853972657472410234282692595072798488999474715456247586470424438277883680582184823530595533510313340529486782339236112651885148158477606748214230917931058631959288146867580552522188912398999872918459920094348167510787293846255859463792132825563492091117847655855139633926720674828166758161487261914516161099931281442022709471967347563252393421163980422187629714006667880222543439167722224974563680999210057464953212021889038035779063524350309550311358605192100000964293938511727459521952339233927056789307702547036140312842477559088699360423514442203308095266228757596873330227735244098080101398643094407429595738711391367575544719533313342106016918365815615122321819682836883035953048065801279576583527761387943121153938279336091698424875042644736632817264076492631085987406511570049740283064218747507958074711868263065368126766704431019287842770234958683126801889026575375984643463406808983096282126904168777222152209983841034315585457416969213758104252440680497796352693888389854838101646446601542159853553140021910721838268341503649331118976358721017942814426598430782238628151978182682349059341059620172891996644845098568511525717114077439812266342426489770779072629178215967467918459835521909642691372389983296437861408862760016692532244119999828857702581079263285161724222680145987000315256406318315723404659994998237277437358605041913037312312970147790221160649050471144548728996222064892345998265863965273610430013776310081594674009411150544841746992178944187802397822358068185929444257952903522645903911251949232391752383855305488314904481328307410947265106839023620328454158268394185413495555185677863397179247988351356526649554288747463909836487187925158199281011282081573925632322624773026331317615162793954109421660736034266256464154993254465444461769617777043325943833902718444447894523947996681654317108383543309281469922546823650884523517888693851122878438231814562028819033168317123892123350813997592740716616630250572392850272722280706217878508859328130642776484556828486791438211015412120399149268831378721363108788966365249591991191990084548701192852513276651306518043845498906207848443761853595630178461795998580063741055651803815458994815346243178447517239855343307671101648975704190748862042837133972061657324440809944565011395322784290623604060662450988536477968908173705419426354764100647903588444102864166980309284333934430545808121556867125476301656464719830575456813104860072943569709460103396929620838223455295369294798455831101017727610447892728823537022829777677844724756280836372855222112383021422587161713048325796167145763807302757500677213609307550248029858732883009967103065200125112478026635729539710309726213184404525692117541914494818582379396826847759787736128722833975287855565520267631795205368732818069215126918019569167393684995850977877931595581399075840668040512673028372053458205159168083819013474041940357908056554692669154587177467602468546709533225340036010617988944662920789236388086684630366944283223067656680830831834636955279052778269715841952816466379704912063598448928391427193199054499087795324209762756066000869659532280279439119045741115567100032078661285415376595265344336447206935579243721745249490266816218046667489598496315093161770476978342304365533582217941174428830656835507071561756759009582167728547920433272495158841768859106842018959929592301029546039056173470805361527687410252346283569550074169356876974992844046742692739009034503942510077340201983962003215094869690466611674947191874835943889456609015027026354588548944876317624945070957834199639514216823967848162616697721857822565273191988238616312713055573346290344544986611426778464069126929257744431680935898910406621643826337968930568804426218293538796316345789769632359216293608291433596895435379722479137407056491991294345122152157406790369877499741825710136585319646467788471493492614179989634823527212269556438200190048293090138807649751247463457944360864857146264516486008059771506401178059015955183458934796549889368357176707248843181920708734875438943863313554820561115254416964260519482326310436713711436978629652286962987413923911969414496889830542412526095153085545755844271859780968638887508246931104325454029948072057173231334051728507521904592026674761099434224102415733736980224797353436573543197484967513857630734805805017335888126830590077734959035293279650437611060544516001329379523643828370861870364447224301190832475984558582444307624465428266298669964928348140268037734494409955224304839409809847263056962852374819140712047425686806095868636597451137506535506895927795186578490852401845747420282515599225104529018600435240414636586470377422388934341658094702925704562849969155459994442511933810302901417462100815631071405163235388183778241847146036389721138325276349927089381904080491580808220247501847143446830560262971436113685735058383956791221094568729732714359659705275375943709483398004885988011609364530294365833611542720473086797043618640351715922178303344055637543991073242170948221765895982594980082243685705141597713590321929458657919263952605640561023272773849542810311684966289957488403668629994756053107755374924105383802051955563956911854054411717266717833808888091582879847720201956079834624680720395971820048081357492868650053134563544464327384885702289747481177272432929662616604623214229713090835068706051862929927487670569489877661211944502034590099613360495930463474499485016714821265527749216178887576359378915046947765921250332396835243807510233996698029822560731986517401834332684273500194663680608031239481905315053712797639260806271745977530938775287345239282128556620804695350416355025054609272473057773796557403099321713816711808094556370328195306571265877827345613368661340429724296300634208532500833460920255672958353893836867922132987218283233243058987362203510861010979691718846007987619107140843498762676724533397341777910387567607105993266131220166454730794246201423928994570721383412872820783816246316785535617182126489542005209230446917588952400218226409235515090225295296104787748896611721274296460395571603970134890307230276739655999701820065451666922163198341489489112211109931503166184598911325324813865357676461500445920847556599608738450379376997677492579644470939434127850190484061877005978095210646460600333367048237783871981353129023637437848185907958929080912238181528229313587316843170768294803122314662390596790619835529255615735211238821091120173466893133592793408751767623400447488496282673183375269579429961497578333825312525554313096703173226853115438582618996573698464197000569108304406043638630147503582202026928284230488672536205664219846457697537296146544894317359865775108957600281573185815794852706428372997376477678833296954687850629577418973124377320556051725260750010809777504232817644122249327012053155888979136992059434638265099771212417013444891089476268820909231436224611659364670530543045158755659564718077113220458543849205242315628133924813758008437120437366373389819418452362870273833349676003039750922790456566247587990826640166625395941473418766571132728691590781327602835249802524172429993701062897829463865374649491734522318950203450972509842431822204726034454917145991555725066706266752110742382820501707638980790262389396283426857354908124917247054903403110907656683293606890272728069645053497905204668893190561712887311208520998977205804260575603374840664663157001078270335055308457208134594114272663519795774901929229282915454803776384470062747410595014051750076564066973080283722022046012043821500963041446057869569111784881027587731817396399673304942332553257887414108255229854626846499251032290986184642844300109626895300481405084907644390889898357096741212841264117359681821796087998503209926103354183068113323353264526460629542836498658940575784091577646050098771048194391698352258749696748110797316883541461678965944848925433322931417282014863402582818265925173326416438434875641614584442582406859208024738064123006833115332767398619158808125625387036692893335669621430625313543054568478863051688363940517930489827615857834205537576922433188650197748553107248777011025887486142709639654677617416695849234001898610065341699081166580999462485008883549979506557487997410003655680183364909898151650042979089210754775128326488279435864429679906841360670869540589990548412399790182237903029176319752853975929420532614229979837471163846866569091031151814311562778102544123328072155215219132101885619785855512206209469979054361814823828125097972162145341392084387290631192688154755326311279172904258245451719885508874236400634059825375615483464136288637122426817851326713753059359916885304290030421940317502716441514113893811490522940052675974714034232508671525427491491789128225127292861254083673513089347179442404654846417955771959204336147043954312152334452147621024568607125434396077521461178231528774963076152377822704746958376177868426144445022564825787898176001579176364159940304806093224779036420546123661506873144229541467131195054118367495880468895791132115398304761871219106056126462693831318682082173539093391027842001417240690271901134330664362283202214101585661310261284681659078074357584180134216258578700076221842089143679652347815687904336360345031034350208343324766169090578767287543875041020922109280477933331834725185664288847056535859265127377534829737271837868251835805727137671193466159645217968675963100105488408075467553039815875830302885576589496509584119035888235139247324852671151711115066760669180669041077196342585509827735304042201105486656979129778339604304473538450049099113032796351863135414118185323233414273862783651677766016908168024246168443727404528596739731501012167036230960835632340197866457932255019301187130041702681833491030777311072580491786973004634579854891894383931760180654790385507184742748878175750865393938108228999746314998164961104942441294862862109228261979367477906339816774365029223349099214456147375899444678481672469174286958720010880571812557446481225179990752666576028344788535656701861549238967675196594945628724703841173628881503640299659673215116317332191516466480387213172336333215080807120145419275624093310217684263871902187074566592843478088074273280834519568364272568990972761187277297909258513647215989206802871543819418361040096910570496723717396065828001817610678940973942773580640204487846069069238366733839486987452667942299634239947255244922176751614091189056272320131886856563384265528017685320633281650270518850931882282645812138053130445786585467461422438525440281704548881596248375981303688170599829073993380791319530928755993025340375344935384462634837671468660601741487137953869528226076329163575785420434422532194294283210995389276042691924158404085474345089976632776728542436381548097613201143104712896045522666938978462200527870066165786241828565011405060910845531937856293493942974143032703368501380979887092884010005095728354358094960984716443655673236432586145616433696975971325676321581753187788379996718393726622455436980575939768289599847732334154351106144843004663723990486616864100772029351792843869401368637854497043885723003091495534937024835070919563629193400418635819310971165564930477253654554217437236235700076744334241228032493674974709611951169871893256839168086803787088834416627361654170441044732493668324095886278506871223336581344311635996247025584338016530960510888131854461403139092414570659355564686889925896500371391428189291729476702474147011738606693110101643679891834403252981368205753960007506840197675011649567929255170848159228004848812967640856235123389604983699659404755872282947415351312220119427340642046448772350335889192077041695186653367685324841730737832481572335671367468850343510468158530179574230094382725600427170625406118766922075659735073751774366451142125625840304126917177636189316109159728723038025515166485096387555071465041716789901539009321383232595846913243224456515128688897186458458543881642443051491884310157011515679103917478702061487457846978948322684253954182905072498750838469109742797061466682623812718936042491075644385776438517807400494114729645270627719938093871454537296256349891606754284904836021569303273419612396465222499432831402215432862077115430967245448480029547216360605314692206074638631382123971728749318777522054946678574510447077013568632272597907590098836821277853815902236786691163031610957921755717976203870322903208279693086988242481839445508255252344718380064744498030754141579349302410623481657432615397026600170111579212744819379854482070558463870827887973292336670344372334711979172648354876017703204153629287174144964235491132116954556929091783606788574877357768758284180380063543194424893011951333824022314978748923329378115721318651547510765366509989175404376426919433192631246359615975371321367076333564046746049928850374493444015581032837250363264843603109811469099771314787780183483474254612130520917539079159534679762084794974571654584711245735446468026390428440796056692275909885062187428953729765061582925942382590465070248697944394659640789638229641119284354526699451560565596490973411290291147560961757585241323718822063989399920117062556226407091603114233082311881913053763233400768850287815252028299355538835581581609276101135784596517459642283354369104720425499490252583115385979705003751198386701041016270721631978573846979507591824757404506314502141066121709972889626800463776212393562277304674263738202812612580623959549746919315051874172282579110862651719135094324142360123832160664486661872111825748100165370685708088184137912995041008989592092914300860651245275698948656128380419526264641580345867479855781761327480338612741127227845978712574677798049959634532914420500443884058992666061381729145944687425547588495036636377414531152968193904213375987518919033362566786531019517027717743944736099789084395544360107149360199892689153879782410772463336798545363307475120584913948039099833980769648909336779430290961719118659853768506544439930079539194144896857838736525622836852435847503508191786536160116265529146101489308672416087404967018440145280662215284595221295988267581564109765526287702415094853003093239876014663394441768787582561370111003623147891207470099034656215251993881458099563186470328280030172821720153077311824013687485155087331434239070701738380855825422851801525217796079612960659076554926898622653629504662854747827559366589307804778863890903365298633246626969369276878377894707024879986162017714225589683013832332301693322572336602065694182858565935864685025078026983504984161969785571925104858749906883754572967228148421899325841785586049238418185632010860671609683447244413710490968880017974696926902237819871211676915127531662889763812530073506419335748252640251967532568734232400191650221635992672019323878560531112111652174412827648573994555797321172395771485470185394551081513355715263768221196971543458889787599132395300254106667669111048399687809219345549822117769774151521800058820171130075354668275933636502668980394029819570341638838805900839857317368399058851128424161144477516964790975604911799948397952620255438205132258809547548052457761885757454672431705848422419593087972812419618931719708046874242540568428035173975326075455650144333099708530110674743056229178570900783630358893366405956632910932309218858089688807511939237365529286650872112969838918238038901146529981408749868244591289889371013645279443357168419877233225285998153057591711206195462223105232438390397993329418737215181734207388906018134053191804822719006267051137265759605861662259717575382757018780440353879065441189851570034634597993432448386304165021117499398948827564890529666088373402213291774911720252491453190625182799661849926738382848823326043317541904329451768162461980507796661407382725988339862277431947840231651678055588425797032074672355547802204112807080392662505362768787330676717364239194229888177058097146489341964693301812635498275554968686939056790508296590934128580538510479646607471981381881306836858972385260002566771471956624875180815135399393861791262161714851112947741464818296125803961412679930630444637499671821580076753769448161908239612960936865549983174341669494369323325050094517802676397515137915206269304652129386123720740169459914003540083306299293831525232388872122638266435744118850290923486398590003325869591544458635017395527455768044233970285658065958155663703248964663979367266102722824759939335981783474831935903851427592190179217984810448342286993434722974546559206133942587961222326738304557692415581082142985386159165642850760191116619880372141105112613316180700940336619922593050877427142729825044611999747994337507970800768712540355606217499065672379887633536884321969907413699501122065273420611753509882295827593182796122978460685195299265837248218073623829694216513625307294556164182169912493127577865724670568629088874913022057417199221978698008144332001221646139679753454413830390003765256493438449963498674927902968173999482609547625697186945148932382124376418206008041896252134076061255687075496426047818397682437473089424928490002919524500968614472106639681328349944854319010282703858749722249834589755235158300668838115646552439683866919770648775533227248498765250323762453826078641266384442704955499372195154779164498007557930715231032812673624145396996605894225360207484503043238888502403484497851450114996711337330480180479736311703659424685894179700116926600342222684157998877931218938595660208405691782600764190650126199226236342070274476066275752302584558114059243526117702592221440197573564820831299626117935807762350428822627276319225351585458791572499167517827114954913177607807980750167562127627104345609895825019120321531169239517554723925779692591125623770012280534780096091658285025499358582055047178198215524371301221709140114083007592693535896332244023228395409558896294740622408614261052022151011473002470268499001570424338150065569602344678610864494412799252490833937517034941328334441561980062124641388262885841075448317632161579377183705776209287510222643134273005372884026695062502744430720152754972305703807391236075834868368596810901478180486411394874236968109517450287872663406064829592409428350176950722691549142930109111818601225160592714986550495614913417499598380366168121179211337843890761515589959059001588424358820993841357774119892108351547840873992002465854667895156116288085165785666405640650480754819564893431448954062165973986215320984130774256129349342875314899231106959605854953949494574776555175211286899237796396811998065522602553899145928700182964232046020045116027034273888162398106377791191331350726472614520147633545857301218112815209863418146144874824349303197497100996865307202536394401818774422857912844425611990700992282709086265155527630974495567785916897720029192139966888468575926670341548366387255697286700708948476216770967670848397464904419444223965491363862473846783378339498429130474617234406871628916708333118551836551638384993255451776880501986847442963895277541651609725502078008104138660982501306915065110652200901835827861494961281995616230943605614819490583617836732590165382109879261549749318426534006244646174305775033917287457956461986965069860901758031969713044507645218553707677642585311547175043318221574000396802324621959928017358215905430504850779420735818167965072076574092257214587343577864078650246573616967659374830318135631718730182477976773113092987069342560208407291311175013663680555697891309470009510189995561498209322982961246792091772651157453021540744685852871468705428684026447325278346164300882219299200153662543295160019856969480197445230014708754897572538347631766290747445184761357165824012851137086902653237135578365373301346712930541497672675971410934642034897892168634924612129725233032153326144591437024410324769183256046301608100096962967859805621245173808929049440309505456423291715137798424702518655616487843327362546913030018200772602384462957288018449415819979291119440337578883963602720152193174524426926349222835207562800887401072000445288993561903706211745852402582336469973938746106206166156904027893458112065791230506136607842941966536508079391397737992191502641925378765103678805800716903260675042896312855621058144240443274465687131944911843344700252952766466055992990726122822520243736462771315561735346215230794273324925613909588872368228995020674165642947961670938729692030675779706031515532883650782619740098669276075424122501234607355613435580018238254418746377615960525214901697444140068750182161272742051805144337403515199894965778216762841918375722995769856243683475912176889107724344833576080152989412246580525741202545491626697538296519098195920687642757710870898008948464333222846737074816811835053652602697545327676292072510909228777485037312618864542699040228512654536764783809913937743333514537917598124289315513561610105117462700854265989306320113817626978879450777417926646263613911618018718433298867197137600967171952268186647675087136951202597878048079341509645997860728411105092261058424416109995414875872963487220020650247333559267197239880480166115110046823111221729961056905270306628324798394399123337214781597477443570134405676398954489038290379587705661975180237404196195622282737982498019427115705608759526941080995618451384049633160843224960141770408816681673806741060760851442268876690595928085583669561998064874691267397438991891446280491230933177936134021710966789742936974948861573378048460289773093763103757319706117675377722387968135316878121631225935738263525226821081644542440204838375448589852051929957560439980441612477286809858518665610367946269266048081075181741667536880533309503994032207552925013104257678725774673511162165387548371565789108090033106452752641350459027333902339937952742884593892225130711594033182724023397099357692882989971879669708428497992912295419054146852146430972149246327420242839840136733299823467235976034113065674247802108876505607962759337115843130328358836435990972044378949773602220718547150004600734296230127232471386507971109366213692062498121231161223705292899534838196266447235389556554158565125033945573606053183042547102006317260841556605985911650294199233306554834154914111686047664045611020138950636302352474274688381786733140357599096273938429715344753943146189408345784091956214744711679123706004508101145814161267416206391562689614443055645221848828601510901643352543174806185471138466039423124234193100301522239018743644186735995194725010725856139369656269832368357386386833114042163189813223926473439320395373288074313708091716625939954176138629876147449578676287145409690072398493245772339257872807637762699348622369784401583490999499204310252961235943600615209562749197074796075957151368664985296064326216786659433232779918569878111326582678021348158871836198944501083728862052366483756919174944037171906078204621717877169095052080969068371313133382972505274923749939803498665872755939186298857255100711750623939062203445375553437316953247642572969131921540434396565284788262314703668772251965899129629143074733764125632948169965054487172887787105639182052101669692997584139969354515352103014263001378592973473487589406251544806287233253116776765370464694862401081605735104534971484198605076289637173895287449635838305860546661619611787324257433134517599773576191750784658397871098894290421140377237784268306843223643868701915463569818133949014823115722577582133576441280676921722798486655949686080814827629202470676167333236069441446934977162530370304710923196202787914925856724075999901714281369090477474767237592232170125713209878092741144227446974570529273196745007119109948281268328505666690146915082655767168874768063177723740030194481544092259194060263545944269658684681272631160839161111533829195903048744749639002142876706965583437303104682830425689211160148036103500914427954157475107115107897802356372149099352203213175766603809907940299224080137655890229772044853058749832323264370601068638603469155285378082103666371503618826427736454133982091950362178533051593002132065077961777174602778445907514362584552407236433630554727668172177790823383924889165984441371127048328424164542020271044663628081234854224645941395865840580435315615623063759610183254086093582887893599793495467214284166791763289302656633874719420924002010432643272998080857758033525172457059581016498115648513184001237281088923434250752020011602857816020149740413498274803358669498763394744877308364195200633298866800422197068859083525536859067998638337165483881206909984290920446563322808406010461699704018985640498810740706203115734238249904474865969626242077898055431408740731655527441959965838925423667578429357895689282305734455394963330305723136677944890483055370955056600755988773303529260262923702665899136888161732359457604862850399929437441567574927859066701418163513915601192909604710916485242398808189602756387684462793581274664199381033393236837714857526141629549301868570935613064772907118102339933334262053986008354489463403166566961882971797287670976410574961928254000762280530950439427084727463313348680546465376091130247645628372867595998286084467356848010524355429411232744634433343627404785129938873547168767531143530907816192068737947052701506898866157196232356165621406518501916843942448989619946550673962511462883178811604156564648605739904710410387063485660892134654609003120370122560733166256082266760352213480149770355123541202882744864267998802451781448290974157388379715185541215159411735354545062325879981109948251399482005471547245694747085675946754641603027719270142696128206558304124105706811427361536690231728283670215781621323095223852051975220569496340148129775654166692808593934271008961440543424040475635546895743608502989651831146456117535018924719425091330115683264627632462929935074132042258218302919142728178733536384829319414694787899938882567829128205354891089956154682626014875625960434309535018823960135257709129885286641532819337938075867841444677850726397794426187599832690431157339812046698457999272434993340362781057732449924418067245872714278571312535017081237921385480332446076937277155598958149420584084320461652633193750499645156744461912271250031138258426931705851631777363103296045026277437998154279010657271156783819872689272681773931983789873094854948141018352659221193408679558440254332271507902935083761889693004539145456084970996032890033426410408770072394575035616788612054597445617885268869247020714669432670852475692365003042439934260305768655615610891896480417886277462671314611624563986861126024981699021032614166451286022623759113617236159701183535049420818307754608099529499991358398924876144448821640187901336084996767369311764141652813480741323232568819303681887899224231390776816059900501151665563737007593199385478176144851086247797772183507760113938549175444058532738071936475925885528701316964445406284802002088466074488130358079929226451691282347232762712342195336469902354645429841419629544515707005946018003201524349539110199969064454200040596005027492527234982409674811690385994846810373195612821446561750093762246309200366462184742472985753083038331310341843612517187835449736602304108367820722054448874315504395514039097256867358238010218917237428873468795254427056934752062565228865916093320190037380643609558437314697429833281124757858949015035506904633010274164039913028712938302860897299767379182699307167534039452964222990508368855452756881222084996186378576934370794658086958130710248161467566757106036763726977411256818890474899752030892576966010085141267500401395653733219191671708493462974502837892305623263047184381035545866031991053947324498131562275154547688115104361291153936722825804055451783578184794809221600404028264071503193553082622661772647131070356171499023284480616872998467432626147195896603326826016114258108528734801521555386523075769246420752526627071171653608566545679330566844749645047586781453464570002942550200092029405361810095996844545495578589408818605799418076241258361625517544298831748669943047385604166679050733592277877388560113486493798813846893262567618036638652962823074934302310082402168243756095356890264576944537403883940142057067469301255706400912659928029560360146950642596098169799454165404862330804724820304041674669753492630636208170838097437204257972084825760015054059966437526486688051991700708553930911348875294170279214824460592666742262130396312540541491483891604318182505146118924127626783013910044126821384573446537469484405530219383822671241024680839903568294274855610455898343536718800866152606915042106976629648113670388900119257422972847911806271302235947462223307142286863871403938906017467650773956492328028061984699822716791702747431680406107053206432967211784162775535672541073955321537562756490162740757996774649879361576684004549159623249067819913899921262805780824109320011671614827239002097237438782819595800452235348096541697410237942882249441626240463582597443820862623057790364282653525480045759467639362076306020207678434710661364157438163620949167326121630188681156553876913809871347931135248376209433159750431239414956392578232276336940477300097194562469192124936629191595772376584278605263503087156151424140215686087834384308522273833161180089796582096387597191050999454284422560035734004285731049992851705211721571013283592771006338032320945356657514050034960654017461774149827917202150856823524827220164160063589966758711502378320931900066937181473790690735928117474561086991249755905096128552933944852599534716089329911888353593526151529859350442722151171276044415337329320033736600224821625733190134551593217908169763974797510295559536684946931199482253162137632009438508164167029197171681860357499961459087500981128493088183014498341713620931540844044210593895109037332750109075663854145511858663096925966590831345930488873132012452596805784164353541366974807260052487805492826663905034456749742792150261026982853987976864497050767989210344257711345532167616492739910447381309735170328909648350405666255387106122446635906738670835400502946599986453572637160684069810430785024795894576366605421189714822124567695982600196990160055401390426939369438657342020436376826872200038197274670963110462200073239920517183187613129199945805614320057931882728887086842141952210748533940910824387852277606237876556294539785920936312126128323887688264490633111834362868389186124370571945528909137109553369672831043059086721730266674343187031474170605626912744498802402377396462952983694879283579790123685250044544609251842339825822266057103419878034293182460909720987394289637700236982106017838752270430298039392196952072738092464480807381857503513036953587892091834181404355893338631796996316405590678474425587911526301078684542902519120563210411330294489782364897304742215813139541302137601758403500519828048226247189319241155547758886297813614114055271586975833107852778046571834786537771953919990947371996379591398389541637420759451084564003216379789456130529244613994296084567732247098493389392000419844797203854040862628098865952177107951080937396295291299609795500797779310931981814326860199663947034580160992831828160733086253954967625242369931049765511595394640629803788581392813538788069833354986633976162412471910476849750451661020935539464745309147163206858866753566543968467479087436427208100310468080505080493296238710745918686911292921978144521678361711810607148981724465891628860900063121082352092591968002974970161222807654523794714835296639675379241380183159512397748717240607459396714316993917026543368478389681119163345162691324024800746182091742375779172048150885477523025707765760896680254269259015780693969430950029743718539381769769036039068849361533254369173962604739401218288835208954220284327853564280547235466733345214242925775930243253529558702588228897119839475620046639205957663116043459673779556334875933514735123158899833612604549938934820806208691707788558215776831023034894778147587593789581740821395420475368864206793187786701449021605957235834785198115747841917917129784988161537111382293878519945224973680506793881936396695296334964049088257720139393649245565365957875178876767735087659704458495238300319092688988034272476041574002576943821295289091256202653228742836768633523093445194038449140058166856472303798498542947955272827648792753389633954084006273469482439752058961230505036708641906971087975279388292712701265475238864253598459842493008062794468688755551185633042918564742503031755555409776139206876671603028023490394213007942524307600149981811284499297737798629609050930485948500656097880223732618047404653918706502452837606379646492830944046614901121921087753792155932293500314230627817223335431242050243909141177726532116432733540813581527070544670600422300955191257258151971110247271654065647311355260596137870340470293531914132294935962828845809933251757113418380456362523160767476782106488622352409687815416143599462738809549242703648735971640166736381040020269316459969260610403357186844898363091075898898397047007009277185592327645954834518169715356142620085713482754440747208932673576675365006780147372019812318737648125721244821157427583124303539593063259737187707475747234682550360552509009762396798651587758963895289724185641960212467867971061389063638798908846967025553345507908342000399073928744255651762754538830174251910364860786162637303159536093651043163049874493119776285927646569295647561740642094825988277439283932541950586185390762344457443630285364513726923891963761152445528782735189055814512338293401609686982424815914074427752224427979531973078814047617438296001226803634064570310310852813348658922996886627491468601758707822704632985399580484561074348303574510992515955818013254241198980537130017108586249599728700302815169823428207708144114568197825508137521157734143470645913762461135364868853291225753226553534937427219070142630461599049819358791788156741295742508730910178416978719776682059711673357524072612512525216311176142426571274073798165022645423440142890507529577694914456763171637747204489978408979938081907086497736797817800861065657633527909314565074241368469278900742794075716532507001591874802812527265661949631008080608433349840093745007228478942499175456513144984105381178553438679005483992756680067685675870176463036482946222463439025853747959220305897964284927711747250765934754807157398256534313152532904530202677997129085355561021063670350503646578837748218713900909598771946903188996365382958362696440241237697823335330603698496433903806902665387315219771234339903841831594262635521370421884616492574093832009228426773952820495641622496045681143101685530666046198037111622513289273209887207239960970707597376332406854179848435181557526156474801871503307977763297857697713626660994422305713792244622141275511324298471997212210569380254405654348465261527270781112718269808043543236651182584970222393445006191443083016590487487302022914349872373456830074304241911273144518855808603309228099727236558262713598266713209134663534148046734673463786945345101187231633057174588578816001695453427865052946775359587051590247011617491130227379923786524306736188581778750330964774968078618606361883157359207517383707891699260186034717640514216104134179507746947200657155058434313165290626027901675513912662822828538118602054175079078956997479994818118965966309259200815317759082298076743475093786965468458632103714712772547592012850002954943129759038762260648608830511126540406295983684983249268584304160149246348117410055468238070831479998996376392202044979951578380804720130731426137493868357282957054786942299792686899734588001606834744904460127102200970763226150568203940204534038613932980066797430687399884402855444075116137918360068354550669248658396776068968631718350394110579413546065153084587615509875695913587844157705981990422894929526967483950967319850467336170958343076342173457616395919222870798537194543442885945220380395006561286842581633542396148076033831058113767783072350848187865232986046198819375757225510070956885302470514931318887477326886478906709500260367277361386957368053391968525847529263723699249307857569656915524979845272468883030272207865658680943691116292296144211296238300319673349535000657436149808684230954561455953055938194643705382306254913760943574760224591863382053568871650275104331919252774514779315465933549334694623071144001195689158811228381344113751484164638750275133260493690364797419109618963640475467514749823787155766417752812197532950886784262543742008687034204500025325129844986691597019153602295988310903274603010180134528801497798067520524628332780872626088473056531855793057644957241440435468451728249568327198465803000213712555443719445922266620546007458015566020372306817947926924158882751467968161758684512310532427815845129375861036054751613824025281734272279939500163335255998254885639506754829168870240488750768795560638179662806070951167583053273264426530240095185966015560434054000888277609778418548690898939186300051550610909030693985015117214845200624961044364322615490204746139196167199514766189519389165414697861227740384291519107437122163741233734921619554716250567855127438335138277775136353415348024589351462768082201573542544651901962126550681981443965409874968148866318328446797521035372459680394087872428891053853079398702996808330696063686305300993006649954276709052536911511756593887961613962333518486949521505893638724264855753405956494162832622184411000709062598816727711608508782221048276239678024158893563960965764269914739074476379340346167434619801807002604037793406187384440307575268954711390004845267222381493137182670663120573598201534718842613571796113169561815365381861265235732909291063766781874745995950905308606773312557372142595660632466229628420886367050872361178831403510280399114230404654009655507757064622116674635482700097238997301398925092433540305736692351104743923691624077566259153118844642868746029421865788821708228407096641081671426085665732952917656677434596819596548865966658397039720373021716196918436710075891359129484162803992768260820193111135006853932042499225197132504739483143784177414840099995713020161425922148650817191988127988825338107920881084833356782448434198633907102333305570351463040623999900848993273847976252570578474569178407694990386253634466811289224414547940119594699211774843330983202560861053896072849391586175360487927744350902372417888398045087835551626747925440844806670235078186820318146349671623249611229256166843981198703536614160886103800113125057277793274872521636999305213098795334642616006971154009346986913957774642622418407569824801578800264766676917990507534658460594344572088357589086793224653004983462133029330550985176190500045996662360142281137157015648119887178931382600481942725930165236942821059630630239848939700973992021850673269913216360274198520542624479327302422093971746785110935174965737403539485397935474439388613578082908794649552962638880385825394334375205221853803194257820502523974753945486409146405776976356093568229120144499095130335421023275002939016886268339208977823495390970734342731101757795692037445263408252358279249118116838476123331007401354184537884559828153308409847983720856991697104995922918684400788491980746297394458616800938332596431637363238743020695705702314481859280624206643040762019525872736974403511695229634491647868618614594885139252187295457580355338658038295721039212047199094003864796492362255000569907463115393585193325134865591085818925220591077317616436978258334137149939444096347636200050959793529394310207305331823910717025943568665401259164799362244740631168054026142804013793320355396036603274757055556161603148502014151775752582644420223264963059237268364404534783147893525205160016890151121935871070432078547078663977739694183226819763755206838535491285777947010333481211781130468369713208938454178061626025551106676155838204472918477617890286226521974493558937305081568731603632828275862753369429517957550696738992569864237984786350193307522126321532397617326859582175832694448740159200981868031119638702914665144566290162750206351448526529474292850181526561564878395018760879667744750296456803302264768663277633381025588958633643899145340377201559129783918185695890705697404592376955862529068221487532187088473930025922959428046957187066999121763795400994788230153162716714057903286202426981975608366318739609083820341555835036831638142203621786396603377627405831485205474691058417048002950719919153537611355156873933962355914462396446473836716765993452801332592790164045259344861735910632355614807903538435801543438392252969463433688704123994053001753480974638558544930701692654548084457828077482844178635598778145240910918656958397299451198009163511761698084313542143540154474984589908456238796659769235030285679670246991362948153638016280578041279959099625272229323112229113538441991505043752004610383463129374271464625012894580356724677810421189822641556933444213863365628670715095678527025373747659808813779767551104145383814788252849044178101747606802497225931267691138016222311469446402833185195428488894047910458990281520771724468902975474719822539318834106195914603883462068609123506373358560688133770690546064044150261173552915303837200987980725249147458435563155344745515366806262130114410883082764529815244364798751640109785821616162005851142343744121864757174272762074832308067330106002582520575322647832574903563176863064337329390530370109724383975352045805034678213755021415637131933388415856648678822356525461740464116717570907376049992189114787136224838489109895199280057961265026461156308745840218354623211926540463489385195103618224219165011594924567727764676777651756718232559099134706330330950046996786712770972340860217872360019751737706199928479768271148845805152895718509019960451966679606278518729822077197539463271035876607899799268158572809650402389174113064186748539155936410366824453725017752262378428407082907369305141079849299473621337117494538320375320760567576856801424276296717673433058422856202492085219329256203180074498589605427106461851619566129434764381322394625363484575982265644600953827586264149938664131031746439387573283643461391510368432971433951685540034199165953488706414346932272195006909774616285749543497915000686328722854612517694556636605464116586440907416949695423510311859126269031347527249894854074704273485791207428384766883459815407598209473063619392190021171179473834127069173999319085853507503704486751180098379266079206670588011659298238146153443985945767953351427819358843089534260147425249020653979124768138325764996601473492678762954531873460540462992891988585994756839927887292663833506013224977818158880505478092877634666402360012765293796790040648276830416061380479564857356152717795919946240215683186203750401433947158068839507903125937226086463143120047963920542379177083412272656751035763951002083664075023759482447533645064736029835381540152134886006832341307634074634219228061642822806699981949799943633790758413121086878657424033955171830437891857316480225830387713478845320364238081563136401801713273875652584386845373510564665558907895086922816858920934416307708878267760907763433754367494208439992408048853483278760545171547712276281940977049750241738628035920676092832464445668896888685186120823536185620365441602821083251610332152791050937689012228374353554411363184378538903738921098817145389210689453549496148287447775544734089176042005470474620716432439848199615499184017623711687934062590003862358669773736073690288035910066133369360772222936394469988878470856256086383182915314890399541646464199614329350030556165475909521681982278823887306425113514466646027590080402374760861445929845362307919933381718562497537929480440424807918652731488503007246111699029133945250180700102156334223465711472241893696426993192093198531609386915965120065779393228762538601019563755177161968850795705782008821494427448328713625534298574885546497213741211154630365996261965203734294396133025740325890322168538722835076494981753568531570866003377051428923588792069549014493523897429133274331326279729303528626914712818302171353862839010297805078184780810698901016153102398386938021533800514766029984459423030184311944571819432053014961296124465013571186280481622270667414884217850844121188722518288441367320107872653574839192710880365660615419003608257292825989999642452407074373657136875762518837311953240684987314533285038978087894451316911792729718615648939850501279405493370268740721447478323081802942983000550737144250388455321831449106092741282967647353955568598542583496749159841986607391855392629545261772755858057239106479066838191976256045185502772401145545475058942389456000546030582581478762333683627032899026227331662760432978962892505327191115047650393232199733449894572675466042668238318926151773039080912419320891889651704476484057833485716681952755730775493520512950825007330361495366810355900381833793274406266295435508844917013392243950321941305162907814807198709834212532533591933188583790112702449905303058895793206516724019029834107796094259256328749736763110595902198790072822853105582449037040701842930700014761908084742062788328881483014204374553344836082499246470081907622546995685895439707061923281023579148889583113451950228659244788325773907942545708082669080671799606455275826658578271732122664626398947089393200052721906409951525502959538817066179164625621106743146639582864520755591546757422631798134003451843427803094233114887168112735552327449204055341994290095405555531567870409096061130194680569143470754173174854863201624938258791650039290987069340990056162130364460611947330368085354383274407446272860579404193185789454672147633849472381888410353905407400935190063824541143986380051943184715540028345392231542340538141556587360521711527990168059325136701091735487184641767511612721918922139740878699919120937795158609488117475542677034345558540419381007589354495401749959642944826189385680379356554983278426124239767389390590205550510629336099341728214137104398191771379823450726428603191878311708908203748724456654891284673275924874998428970985027923619227062070953113694862977222708522911686498078958614839718306363445614638436475962010623999201163652199223915553030914630374616254402825296873763531608116661077783677572701873329775428828871394956471035165404843350036131450631214761402297217454952942793603902255115450517909961694647125459206213704836396711829547477325653294249778120521021655559811033540385481440762357053397157979171776349212432147353429689611882123474212786097011067071058675467376304031725406202433595272109585716231079542444913202702531694850488753290636674593847250136551324113754117886036857568463145084353185427923370889208469548784061564317456091872800761199935878888184338415765440869632478832901994206214340421196553969522051449472265895292682200626086494169918540703732755788208220925416514680166079033996748986782073395804178388093433439988367825481671506869365349864388915812723259140878956463416021041866023674693789376105621331591304930888605458873466181194950534512706511024746521654964915868235619673167807224072473280777305373812315471699451766638206352450907944152610423990917945107267410344070857145314100912719203992839531638512804957521302230018112800988133545838892853923574633057174404531064169513458518376353305176990104178842240190651571841951749720807253759067853706342225098532816653382383241589923635334093312771544319950951653567886787947193387376179292910490238929058421830321191338391797658520064984632031924203406523516686310158493921323214272921634591615277784655214051568765163521155408461881968256486004248205796781842822748624610970191440929931547594460888743854523290814856456128636164585272282139796086132522766769102656751713231838940255643982378209736303376298963331241377974642714756649181338575980173348151005187675734476521208785057173081696579117537877768175317303623773707294302069559659925841028345314775654479941976615187896330856914190432999970435777239112628986681106459063928658489385364393522381560482625878512122411352654104990665040072363969830102984024227424011748738897520715561533782273987667532036604914610324249128440015017155714649884426523020092655198529936444154955514222153841734796783847731288626385731545406336573820465240313535937082662712465115403976366970678480414067762786104611663567271071736973746090151888046116890736424878259515107731532245314079391115296428611092056226203143268318726055485498656974756954226864467108118007539217915377881573286288000941601760937017770728492303793231932129715542971575654153889281362857028229209060248196524795214972134778567055567492493457672074979333282792497724231904927205947679932513238838688685584807933612147153686740239404331215249246938523051842019853134837408162912512169789293121684457420330762129010421221086404847565565607009803563541111587621326312757954958315245168421792497070010487978327307193081347013049584438048880941091816682509670863788714956378076214745253664192886345998656751326006870928908741335978521307419275807931980375510427094172320435557631673341548544868553980891213821945357411103844241150437217950565490568915442039175107841482724643483037931779555529724745799819605821352161933718426783146577179606283674538152759360365312970208134466256399914708058251688128904019387032552648761952175400351743654048061593948367511010316756317994752882387870058210153619988932561483408151339440834911404025388936393832716919492114266681788609147995634331325787291223148842799856518484072107547625458232107950768603220218515124709827720235716720618511517351770494694569456995223684647126053185467126048792322650818327194077048808273973803819224883918514468194771585676946075157079316145933571685829169109626873066767679473707149118803722712660371064646655058057091519326324405336153560352078741432545614681304105694325743542271758095786554213014740079700334570964773639702953400074370133899395408364629143450885857672323880918609493654705861121306202494403610580817779700793646005293416621352004680172765739202795007393163769783246742469762651883606138338341526748465244371611437841581952616492995437059034445078244461429607264434070606492784329646833401072492568737018249133916736937606676489605508315517227472074793410346128171439309831626033092536979667997831943297426743097879085579538653348553353381391436145049129533857213226610122044126437305213132166151974031867535941404243607172062589982348588441963031723762717593931247617366223283265797142953626002737145329096754915784100494954136786539985787771816159157988157105925905278453661908846423020398856557999141435008073511765533686652490703102861556704731570190475383058615348572305281804568938890898252699923569618119866434832914150556577485466308452784528443021186557113327665813328619354057663806630674694059738327030067597950681499356475945627216355223972264154363640146187859272799051512386941331093229803868762352717319983899562266887487666030896276248688638101789264916193285646754341305074764334584592321629585396305224224728386331332926568249176998253956220319018929470700381982599140521872180905031182304822010669051508423996677085027360494388123429226470896546902024010338701037710596364319099567949610754833044055298017404094059570952064426686888908365545333347365958338521602281591752583819044629899238072703902956926550237707428191812617721066099634806089701343768204470656495856039968552359986530409341783856814648905253182315740305379472420418379316417983924268939616202443828617879075113216669082771690457570291894408289370332887744394213255314233671079818208863998367398209471098289922673669313568411884402577826649707663877261371073945370676521675686962142681239763832438898742174442334853827262993251205633697017935257630938277680849028041500079144335243442984871088956404014954099101729613031952442003304172846424921882956525452356816368825478692769210803525889836686639674307156569020142504334260274332392019411224706271222009710806158528555827349724597572960387137800327321579536944773991428660604495189347242369609098343122827129986502840596151726433316047889033502928872152400227700419759942171649773810361257423408470365552451225719844885753414969240082552403867720538904625284772390686847556778764770637178586197616909974648009965481540619135928239318471464072302054437012112396278046687495622765928913688445552390542342529263498910265881639904992221078306873151384642960935583757755385911109785629846334770833853468162367283653857692726927062199395183885765798228462998433097054077567193321197335519867039242111221553293879393554728959804715347541497704184707074563577113484867621589115475972325641469149248443894085011947153234782825185084010407985215764846259698823267324892078513873667625306693917300437063473587733175524930754763006918210964989153974737867344439730183943134468454846950883087492032970697784578989273359851775520762340104493070610144146387552920217169640071205488122564537450552495488515661572383190896391306997670159007572097965529728270081270690076713953320111787506378431590793387083515804315694912445536638490830102167739258459013952420208665131730527695891795510729068545089278234037108213032233237649035290215723055356298033473577378846219540787310314144777439781278889599538744010624851726761687340103202865945939269835480347494477989869064483749330214684021980881440533466085166081433785851500213954685526458673935748468420962596428706798504211941922968318714501185442838961940254816412605539571504978002892524467807841009229807022205025165081035599929543284403714874562442267400533880052506535815454542314807967910335709121248509953924658704723663700267573508349496230443101067916726681029483129457999859149276432906161769987654584612462418729375183872205535933906663427545378364245459630700682014963332118714401407345889839915781294105537052365982099642352663152191644113679081055392542647114096113099312621962548461324340748918756395719646407280541864785360354612655151867731875376446796338796963190547552161897293013670401282495328323429165449679278797796269917925262091461510046736203412831814744417416474399332703407812047161516095351033826785204537074840536366890070431529416966321071226815295736662490254281931076898141938137643033185892861950754469368776575375211846677531867099872067845345519839074743949504136704825600316553318681866386540006295890728632917173697484135486524039181414890389971097393775314080896821285016531712802551979153686045201511247244913608870431235393518864412519717144394846355310880253757551309261268580676565861935462165082788264635352623664433712372098670278733880408914275054705543698080088903400714474811955757152764844118340503783372415477050470290282636696725781041030441524215515215895806956902744937663872980278067943485840998621631429785571898959412961488768081465890115469684972453759898941445793790689031641125194863908298190284960542550342687532815396436595979656997272774809122950736172774763783117276214554528329316830805922228903566421075429227973866442631455253472648164564653139316320342830237402251518238998600836919813931626460688354051005349382625783202426683695152972930688135679591198625471920406550693647276389311552206413584814537151291734024341504560331107104652612814811112279552594284988684641466577330077816185573973852239478787167550833962925636653153720653703401515970483226407742223927891817386423024035966532038275120664195668299081132306379663532363330623757864344323324121979629734276169254084541232977318942411320973476015933793620032447397206961209103739030690402217592185162884583803185936264752727390238093164526559468686465565725864641481724122396220102304535516905686806818925132867957241394757379791624708611789704357859442122377523498267429560547603354484479690058955381970060294755818061168700757604635109965195719747905349802118226256914079258081667389899562526472773036394021147514056947112209346470211524355130489601563071479280290720303314990517684339396544985706059475499363569393019579014771754388966751103549882274216358212300744170988722097273349325117075283233023255152467519814449879140938067820530093353767857502573032183384123040799686937004881609067720573350099191099825949892790578708699646937597889213486222832499452672079770626420879050846585842971250115747101781327366198650685152944003173678239896380095504205449630119842978175056384682149838527518781354519227959888495982547282917582875021068218240876594160807489655314054999967244458914300829795767038500966396786367949225062851553915888062069284485263414661148438542833936697658902832288779564029624367735543335637171566297997309088135035942563995156270828736273576055393175403786624648825310884966017928013869050428481378876849465852182049786186371371558747769915348966079523404095385200487398022007293624318574921882656227266176279151841419765591096864889685522345502600379221611641615580189356771585078022678672364976548619674161104224022372097264256165696107014791321435019526480723268981062869058383395596100570548733441886677805747790787780985295008145807411734227159029399953521898866145054149160410377639891556700424742108520299843268794001385261670045176889120300178338026678658707007932716811867367108176235677940350294758701862022927720059054979685523561750729869222822809124628528829815915381749800201944491014183400412029437457351669445013873211323686599987953237891773256864158850450291853859690250997452478179144309901401394335786394976007779100815958800760386161326786316387717799854680403274242219703060705641612013961002879132378416668005467271705418886023833881488997099248903075477735579620709605465279340836964475753189967787464603886094897397485444940959562079624771804970732340508682516029764903457751732315001593530307228536306710715884527552230221597073400475629879715557688903474173954057093073548125193609520512598998865618664042801815614836725631366779802733029650872580481305544885049279314130785907108499703043410831141585642347309547635565560691059528845770302430487507264505056444056350083404721737849969511611134455165333456924540723987170127609923992794144375437121829142380763624855697449528099257563928861912978654171110394006139322711005379487676950907163451226986122912098849661455571900315593703298729937080248647251415694722345770602938628240974090008029905731806707117108705058170015508764878829073192825228593010190192279292141356883738821570698674401126916796370624244867093881511751942801351893739725119189127025568302457004981142743407423158075379028135752209883845497482572734056321907779790245513294198486861077777993815669090781069513741072573522808030147380661094283523849068510078719166280528680048321554002571160672114972982553619887257280513260735494797004809765000579790576421945874334029781917624790058492994361196970954909965243691561610893378752312471927371244465948050555959398931984052793829303723453777481120487417436731180709786579212423905440267894925816740964802925436119809533828184988187054930544572881678025054132463214964502225910988680529023393193601532127587006590687693326975870946508042918970750729397648543956834414015437083321768447660153719881926379124697158234131841178018251016115085962690100479745201455010626416418244547801848645100899576001992329180201828030879346517147220092182828955503779464291565938173957619078309931007805163440938007414257720261870659172920289420637776593378069427750768013337041125581047441386323330458315150663108570769108381369327920095191223797114989932546002608045386959557322965297730621005837857430430519546458313791432394811866754897424549922170577282632012797390532353237308124988058799466254190683992425340462836560915079108231803403830179705641786290043521728303637812081076033674217985994023192211472217970856739364748784201458942143268684354499246455932503819182360839629394449810527946006438883722459147899625927812638605118575090511482709358120925999468589728772554681336948230899625002989129862186710565773918005925623028319731822126765014238680712700022376281539595635065604028906197487237534807702279136305338831059260598528876736278873678102668139079062935535341511097386548857368013782251441776717744513694844548281654041472261215531994578027264173766740462618231598233192792011996771248693391516366608079083413416854857846916198284234847875126804905072336550041682067630635532988511492949612645287711256947371103929406291783336878687475738526682653806248264501465057173284233900620065006702184135007666480298393083472128203250496544592097557058594757534564587200782638185338550560516697589794251231881655592907197180238693290303632553665352445886049824718701728604401244590918729768563191603856284911525727608845266461107346803427500932864990604273264198549871945732012261088128948247798902283346461118521756001901171215340942537944101284009381350131392163095884923750707195224411668568401077443752158487869027095656642241110642612030613482379172016144145115597043928057435134217874909251475408005643669762765925755825722406620307776741500293896698028881130905564693188001332759255656238431159376146450943735559489454662421012285242714595236026491384130597359875813717549075761697825576735555784994408652341824404314123145638459221831486567492357943092772419444985752468573337321596839459767886742281220389345668467797896823835942431437149880475861102471527864251570951338555455901575938132853005030587054387241562999508251937480035207197363861247775750748919577947555866967832879043255473763826959666987717181960129063931265574255492198310808772504164758072447038714885785313101296308297883582259054916685817457415948652711928845755712662403253334158782736984342262967813249890212746632068207197590260790342962505984961585084729900725683523668725173776489648753484210715387514570236592161667433726619495649274911544519376653457649620456342997861678080367005820517685589947884678786836575712260293439392203697370838533167465689075676950593114905905446137914236833662476361454026087269112551225115085350217093957260967979867868445806319380188460665800002269156320543512615903377882718701040345357236286842199294168623741105721745974620033291467933687642976689348039040927968546310841869259894305588905090461858922217591124413667245082129399017758221842608121155492212082413745987031020035361329079563568537843239255473257130938858707082321182051769630681520209819436676150308484875515927521088496850897487075165863623003158930902104856390974017604785359004907424624859447085617349679028592721998346063434755478668343850367429501307747188258112159153136935405267367374715853386547184629793172661533182334449363745875961141708109249876075761193259978735037509493408752939314926274161637001787103074726795159103356414167849101095941511665272379804941229984167900628746894501447420254093437748492320353899303358026971288300322818141099751766908160433076905218861747985217438647050086306917138338209770400650555820109016525650339412310840453712568554677405201315176831671782718300621141584432793554134785139221202295083817604143355112635212394287767872207059916737919776237462830644777115370421545825506753923668768094798904125007132436822628150092232546823001786491519655727297975854127361449087477657700830608872029508774967585511648796869840864262025142243487089089717000191441955359273915134705438060827479780195811548585920894348603068880723845558377802958745361165148344866068132796943786262908427730561307576177689981379723634856895242657115837202078293077667965641071796856109383501585202084787216934906562880160159955337966785107640900585842079186745809399395985408479729795880216003149389379168203684263426475766386984556566163607034338605853658889585693338567839601609148671058879209766818460115573486114058553030248957087443644870250520469581337222650585094060495090318939381697622502882474529913226938945966771394626907629339458812052475345785913054092469440382323171891489170014235689101751885943374387401129793880574770774067294515129124723625075675745253101305722691828702552570569838257678055471225168163574780605299041676072793234731287598662145572241262482722148288207590722790375604449562193455946090341887428765137659927675413357587939339667488316309865383341342549664871111320731224709145094618727198325157107467509498653117912254616629598504878035296456970437181360099829151891753367717821644515390082210401286229068463680162466613171418955777429904872215372439866398778707702374494494423791874827127404060102575690057370551876074925504635401388476796752080586148985234786386811367752346454820775094893776836484254548749010471445737631615765832035346885813829806707622605132874370177941780843151659134872669560091264388043866701304675555956530468471914616868951934514054484743832145808960485057105833059382684486663172122113875488604653720412839840668133602547755796776101127016350769928505363328728746530365938271088972445498971562097599189240063154463409656948629897405567325661773755024624016088383951060635065240208718177359258417647026167604400845777807160901039100326552633811107178337386665524878004754082333112854997321845060299871917926544712392225142645070034631450827469560683717341175889519394459906457866929520609814807592762090596613041544002945034380246633257030493876750240446811560487813244664614522864398707334885322712555311759890461574089596242128416977651373299245826276567319353784879287878805304822956425380460750763813283949249758744671130530108428002257614766542980272831851650812346978393838613455281798983698581447332319227397529518641351082672774895818462305267450679772172821884361553475576016327769754086380565293573256238508243905583329331231581189223194188917989390215490617007971148286251475649269675504784686331488945517596263143956252094456058410460750606004825420077697342649684862590165183952895956279277242175136682260230277360159818444058018520314952790215765183956963281656390391737119092738006165969310950443910917969413601142230776696830031540914464193423260617069923121449667039828691291630168850974832798331538159881549478159648539510686643372386578405762814045520886054775297526168598592647778306473833601320304080925507555265942794647470779478665941898561877507589568737380988732694027538432188716261789426494645128954983942102205484568426486663664825867392678421854817867931058575961863349530166685772582733623827987960113142760437646882168379611869833037001323842616533586916533830122319535817605786699610986427844008028183012689103797681795359597897019488232447766032653750874108870544243421028145265389346073721568129167645204764041358769700945207161645353800204388233963232389257295543326335817400031586788952050927705462976852995377083310167097564223594023446458168008924799459084316626137365570574574790462161050051673829172666627502729567307266796731085246087973041906617215786921319336554703001274426579415273410911373948208884556849597558712453980019847426075012165983605153804126352163598188526817448783935580461325488841534935396672897780496494757889728574187980963618865509834053242111335381237818977915159462649885979126899554725809358619988144317469783366094622377885797839019027082302296942897873779719454199409690080387582365583224353108725641370558291394886145683464815579176487281417724131744695841281473858571669136912726088278443189055257469652212149595200451347853771773745020660542166448386801231081460653842295872713754123225653689325791024772131966342855580567470795242614375555780846683771432327494820428395963550263020059033851825979100579658481418026749660849278798157601928665745521117080677859100938156489937593167578284759849557455904715061327538495702825098461865829995813669402798379441532768706007709062117449834065523594009366160489878871447170001450798174590448857434137048347136190781920643588451036128270919499448749834486233871962716699071188955580893567393353254218834038566328001035872642265829139996286603756487944619273678840740129382715391724067477443471030250907343882558308140607487914160575848289751241595514891439829077712345787549995549760619097850533623708098822770706451235287112541394132416775416479784149711302861364491819537381433630851465100498413851350512342801673870357760974835530909202943906251982841586387147848150956255705976323777719870873299069608404687047501229304240572947746989305948995127817583550066385934222884338155512432353288972153784066125254160159652091200807566682691085741180485196219095116782279733093083236850390861828772334431492712398288497569012837877131611244341320732599064181185308752719766077284372003928971225990303254076610513885346572127752696547065958138026935083205841984159841831031379115429541216141601148513919313164480145487763017418468877621168988871904814739775403188996582010490882296890661625640361400606847253598860873283644288943170854841908249012887078521814575408279136884865629286546085259065296292021291338715020062019777994779573996492300162953681421856279704851104867071289436215866922005371733538481762182204985196909660090703015685477510704759666470159632619338281590244960368324458319997068653335226025684082949598440937324088174256617307045322732768965578419366562780233708869225079150089412406128991183992073399978077533726886130825658820875157509499635011660525729300603181430456848728310016006880663644521917617777608425486989841938419357442056870941752739389804116460734689898664226791511306906356496820578526644702159309345176153073196958647765805455786796653150021839661539575934247510169697451412905425675906458736543617854702487407691502727043557881427683308042925714508097999110957206740752091320078369322932695123967872546945647272984403391331848733258080982649369451483165169297837382270684949579268031821477328009932392233117102444728550925441228122428488687417357185489459250667173642022917334702229275464684275069505745878202872820505906555961914945506449712955560313209632577480950491689339881990316859451729104000365420025013942188628235613331199231917620189219654997768599453839584105818734670909308535820456862590044568628578990727005632575280652207962209037430564123074833264066511114432466406192843144388304133835784636665175302303517495640833806068353624552273858354827025656593329227442854658058342986490226857614157067002456058545671578536627378800491451044114505228124822758629811025116368069632590828997500068266294652548354714692467681409010070333934618508304902648101640087483860689215946803675982178089613764822449181059734705063037910871098644195177657516309869805975815640673508260844468165304666248108731690273802325580697815615988795161686817700567153834930958358758711414377635039651697841430644314723280432520075739081875741371849793111771221519228028198141209201586204025798541271855068400793412351553149276863541467941400587117085647137964500611160697700841194059295902815828094355798249993079350689091854206641674884912621976056116662479868379162472331757545129540174814574372475059885735454116824781568461213474076034154305364599275581737494035197489193653076470252648708520722702195926882833605302726541427464108302685320049027609135159108722676823367698233627171070748209591837778609166779491117527629961085943949330239761919012367722025110442876197965393053065477107337927326244721320165791042498964975598535612390873471101473467733382981919856711284343982202481821953156359102983135669394515792573668194937589485575684759172473780035005247869379449991387300529943476627165802265918031544691633327469202515927456720708827528145398430502171979562196963813371842615749460915321581723144799887851170430173865024892383844329963834465991302850787650483907117268320594081761426877522905224221681341945315581926138834932525094151865542623386376672215609369149858439999373993712844701603799853758026291267135766322755347591091637862306297092907871168029947325541672541746684555474555607422385458386730278175233258653396553771367413037440897463060388705815019086239604668530611550132846207621549825226132946883794245579999741489458543409201431749746301402687143063795644387479732072407610207040129267379917631917990398988268352622336465649339327138797678438645619782536735306001084937430791280435647686397055390200107519481933758752763217074602872232441341965227694331008789224543313354220314223370984651564560313846487572843935838690665957778822118630508843589064408389157033473643291241916477491535035599854672469518163077344612547127450139642092614149952658127070665720470617426634510608898751993413992167460136648156904061072775964376696934015146680867557416648379090482428609878536783367189606982698405540119041139891298859432243065835774392858892080428325911671279037273462980615895311476437739128077535348029454932736336617675145319642763248558740998132918426174848303381470944251621950649758816703738171530091110149363190755768265746400957826738483738330783315970068445284935788145550908978599571587774054139146379372824955094742849418598384064615820820231297610568717228502147763018552548565434833221298699876532887055682321195630125564867536968286687005865090240855599804598502669025189507201317154231278743598941984171077154319818229812174264144914922121444617530926574366434548479658277392319930789720906781353979893639313273024904894968150794105561285194319310539077667925141412936140305058887661276664430554715321901403613104885127791849384961548877168936515042131488655045404987184000151196784241100808540530026385200477984585952370647745407443486029693212682408939708790220024661499762437543529925992123365824230910466643061410662109181648014574364325867654616291188341550276853560604444019563392784837878843618266745609952198638179608031049910221330240824243249565467131857790242501183944013004651421091925477419727221771895786246794077841867047279639168063446446350316195692656126701861493292579615982986861870534558945043878320237368992927568338561756017977688237302921512303291421443340484990688883062684685234226156782559802437431749000878570384676099496119566334881417920656933015520071379877738388775971932806840776080326441672401721650610204453814452772798052284915473725025914422562952034428090724848304837999941009498191950276541823821417182731568459772599681044367878260890076071099537189433530339856089652763925746738808514282701941366092984560926608044411796454888437654996179639144319162493973567313504355934970936638081789314314205181949974383771418598440558512914520255817259861681056322723552558966794428552703244128305348890325513153885620432195148716325870623937215029214849759074508871308157260520879891574777067606961321668218069659447955104043392607441242903820270557643555883299834916377494293730813433245570109588106535734576556232768791110113823134600585483980780459654123328993588699145360992235949148573592395643137201870891285537559659954956709183693214729414060963861253938507436687802183054653350904119857489159511068354193275254513229547995140461761373627617247160297068461157715249036335481255627849856624532021298165668910824931386855920658997507161728292097136322942313033910920388513255578440661337447549690256381511832378361539194720095701016190565232206995680713845813264363187832191980731927622920736127452764661878606618125595394502583084781357436080492404537963922945243150028990128324830056545539170360525074865684442638681379783520527505919020718597135825092165943917333374394725387253854880356847888280377644329616056390836863277751112167365349932163475357258648306377301342374342118837528549668421191027852804952475537519496693176593124482838955431298050588152886943785245128841982065070035040235018833212526994741952042175296922738003375750072679119143546313658496176268405160419839121347465777518099277798891702418531748478578426803468797590183077837749306984450268395356907299887170174621968514823134585082830269088570322796158033683976527798405736476649003214423178658193378475741802789258605697446881532305367639263118356482122869620869074532308076559621551434069320427781873824049562149511422369709575996469384359382861370825699733652840501283064240389981295128679496518401950589579628776869173938705017090417904394766608897158885309782420841541106338938248500382732907126047047165845488889928502508958893597510149185335876119296343554053411066307970238188402893675134764532670743551290473238843737035906513407035891211753377411532897856890833583474576229168567714348411781831839424858338202571007050994478371368342773673225756636316436626326744001396102838703719526924700017893743146416732695465484144592738232687549937514753930209470220816353859693847086953428159527052786601408700149083558149739096713204532083648287387184211590439302807331748500750336187148126584994879734484382083281527507376051919723754352511492030781935919078906634017853510347037571906429093959987228110554036362917528823907538534755303702049924533322727516674080746095680240794306424742632862054134006648763158419040134736640796634162781085910210528061215521853021005012022172990619808061071255622800878728396814997512184716260885438880814811517078319127033136904111105176886098514009391020287745748675379306945782326109173344081417594226824333249913299168669030835304008552478138035664483359749810794203603630365797230567308141571907639010018210726339824655744700080920591755109143053365456906221747965729070987276157063455761267268718068428216334630080289472567411642054800444257925205108153567003204202366453864212799288802396203256745914510021858484066594949273491548826403489952349722095079744905865061593784013311981531908756636143665659212989915495178059558008403309797117766236990458597337762626478294550397960108886751218795186533227637938511948291962232246504415450857869060343332015842882499732819785911111500160447178075321472769578445221638828278987887254867105102089272148293177867213098901146804904881353106669453634046434286002902161101766965457496482527655634586012398914453234887815153807352485767347468368375133415470620262498738748333283924271335375844404710410368610051706478206989864633726325795469089920989831579360828363961986926808552451331946574258039851408663409925971957035188265169799240966952479472590933042862246428116017996492701044096065422156019895442757829289704718660390427270921707834289566324916673876211734160564659319850658400402502100124323312714416215387697543988783907370990491392725203906061867829220055639352751879074572445804696902638609097636438075182625225121981911782588771605635002295627668556305231520432259743207189421695996789799432969530048274153948028197887813378425276356065023490311245290053995499212953976483645741282767837655686673777538011093085243669514697409194643625330815725209283100601150088745330292409526679286892815555327465000979869973103074672424222803633327059263345829584079966356988983800982397335007545495060315952873605424122161704425985021515088062071615698942658644923280413783556545222280433764032182040141451011786955135575306250415527557230300005606637158545845058204342020175801048693280475147333713571805298596558917317917006294073042026558959444881556502746929778174507086097933052803286408851330280858352679084929107514044501459582763110745793482570440143699371823633831765556212599458395645352137436675998812666214881229600063597736968368101677089710781940235051932767573453046746498496985857019960131767039558568542978473059069631601766172944293009785892130568470476442621366069367042323742966993875142781543241332849744088377964673003559420798422850712974466440571910550933547882046991457692714211038544154544300185804078752325144304545637607141415225953330006278994732108342853969366873006735694342566375536792001861013794331401648078098980621894530512757640730079399023425986019126613202750526483579985806274351286185043418080644928254601073303435377620818063019430154686631329979238742782899040953669886610652082792141088130326476123588015124444890519782897835306450480900656492831563499251344007701743182612085672365495508866129829804782444719191898462754517753269777203043928235609191565272434964170157922057888655434194561264411750045998601030552386900629951283269755893940525061526269106843294554268332880758914091362231975425513465017113267088150449808078068988138891983032207639250423018184264349108739737101250516619275279310764621177919204923976746818852745855022970137563686912758793702416167317018437603681892020532586835468755845620601431345298406209404142841149834472745176483810892665273556926054338680241890035239562103423841048368128543470250021865429116967448278224695957474234382103136777910360015203925386883154786752235104787967719136097285227009852810388490217975382548033895443125640742244262845367039949885361939451751072812238519568055488858603839477183518522094524705190225162887420257097362488114807191189399044444644726432175165708079037174397359033107584907142141362536614924198327559759672689301268089730181728642857950125280856854849434885588986360818811952797906220226984338999728811887433714394186858520240232856102716030093196285355394210758803767221678801815324581231676319313650651510409777588424765521318083108195658975335089093202882368839723703951729040013380761544578315686430973110041355505431860263611763642521514602726080744349308684997451360819646405071980259825634591149464897549518262647519195640142338664285897584931310044303490334926470427939644469956073662500066716873248641543831479677835574706335877875289781768908017493153282259177636946965840922290707205178363253465569326201441768121971562617493965446801035838560898334231713377316159500713243067897549101708455015647758180206713899432186259942536800665980942236589631880251918470817923953911184671619168997338276177547920716469923287828745744414048577553306135665673337951267802325597448357432913771171405018247204023332030933933609208365154315998127888240573217930812549075584186467451712209812218443279871077805338460750209181604334099466538532234320154661322172961397573471901885789606759817891539638942062997010207666429317550050780088038150988911615945495791090347776809453090577007690308866062501168826883462932316915577549281913480611679763047933675522080723554084612450490982451353462150496784930226107941299554902008327177878805995161061840140537844103960547372052985506860253376826128362179319927808909635791187936011589737953325533016388308190640492140099412428870921850192005074070159919867195759817210515047657257090602140367863506486287623852029585132183664444199088754571602685882445340222995885290241409061248819979467029304067511744995700508239571976882206166989265205843615207708122555384270915641877733322966218531416869450479974861771181210185396820415310156295971089257660486555883612136022417156758270649418545615425539443347610603870822625458021012969890461911594201055707757131837312848909284449496511804254365368875581271734497746011243426433952484349070288722537236768972139128821752796631650972704083476246321130454403052365620867525829478989506653976360001308063793528708125114708908943318282657091410639702217197588232360267908366012967490150985196519026171834111403195047236254297485137630233211690034127278667645650417847896052506563876136230929113032949544656998829722985515950724556649922121290194706081702580459649503410602498192499323471855007929155794408673770895166076798687936206201318400882656559469484465923369646664277867640172286117103801709537770011985202701088568095970232903667687793884126359380578360848874593482131293085566856593625501855534204586107975555489603032856843451120171173201550568212984518005591784763620433922076978848898925004840139356406365356424722118185513598202965330446702047999070573753310168814350079467519484217657926025108334669728396166585168898945000981592039932471064522248020792372233305295380787020130116363982216907360868953555703826132311392989095305274327516958486473357031504602739573315778751197146587354356490691520723010926681977537268639606261968345534799120169740411058747421257513640124400358930553745948384084392499751707388633165648606617939007835281233230711795703024034345501300921439830842344595209145404793397387008997203764087129710076509051306808246260874908525673530557471682972107362005917975832145393755153735655474861877630825561478064187752086705289977810928340843359945393964987775062505398479166337804919179499783172479319346793500233989241423934687937700720134851285576929949497073784901063040322932991801741301312106362432458181385646230231540102337842579165322231025356149764130317084519851186378105192376694354200555229013440968341671956924045109150563627885872832770477064948623969225145314461037326005531491977314460604804151597928160027262760898871164741852152886454487865868959037891697173668785362233119809620580886758678990538333922781860414288924083455232230410824069275118058987389672080443874393167264806454474637017051975208972522930260085571059107202745084833584295431605203569783210931111134065513776296722532625827468615761228135816465124554286762343655495001482386191492810991198424358198606792188251864217612369942431069141802220366175177574982990092617023539185800941257783429555646585039437725192586944953722592479606795209192529138839821307162055493148071151690915896304290597371951073178260417026513398603268432159706369844056690303045820268605819171858224081370121627999265382376326051640850220434488185509504703349016859455183728726906940022330186363561152968959628723435042292283492653935519971488806166261860413590098821090344645561536501851805336627475805783663412358577240653406326368103781135861169505699492335930901426069238406487463594956357540708447611680059269529058464152789473022350676939244880902580621983514174950602530604275369942853001837903093031400960520604684909454891319230034223534558336730877962425656619775827202729499857732158552303284564004543739910550421151875259742113479363992845409165657373324581743516251747811922022160284430296255799382115275714819166400947828810821558314071196740007529496888084514088230395893678151042763987547934467977585329655680001482438520897114003200674375899776879547363600897617852210784704259372297829575397628957364413944045904087952104829502631332813089317435764504535532437184267693591389995280930497701347256057931813123619595480749870068608426686067925972399767463217209103533183880820451412429853178918901254208976260701749432110048979980111515395515934675466860107648944965467510233143377826341344521470645327004705424847193195144661869228832928236752947592029783304452428232705019976764709142188435985798734230135012286267872528108392928066891738461481591929588030342766375934370884609703804383639722590491080652629794900152208168700621723076775253862650375998610595578012776932264178781987843712116113148707697137287466307515393953357294316239296141640579732724658880302631202973121547337879984810834184282755844490603783851877618469041922279647062043083135764870450865078927282449792665907129532399933284905716589567895014358387790501688416110537788720704986044157398497473135843096931787492539837586977290228412307695818366612542870858107545778832070954592427593252834377935627921516172019938787070538920853939995660116409954815079147377588910607503899236402109203364027644141267742302051855471`100001.01714067292

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.0707760393115288035395280218302820013657546962033630275831727881636184572643820365808318812661772382094407339691097179269990446453847536429225844386065219333047122290612020548398576433662343489843827071049989705395231226917848529903218507274354522005125732810542217424931317767029586377171448965877929118571617511540562365603991484881752820025072306153573457106503145899219683164868123907954938255650974196758814736254874320591902869577457241143992751659339102999273310798274679484513088932825130726310257008303152743086102342833436910409821702262269045940297055093272952022662549075225941956559080574835998923469310063614655255062971317960148313404503841687805492907298185104582941328637784284366753787303942475197280648872877809986710218877979777725224197655941725692774900310719381777491848349627938468198411955193898347075098152638657614980900350262780319142430252921925131515239611841070722530473939496294305264627977744876814858325335947117076721493110160508928494597906728688873533031986215124467678736429981544321187124269147141804397293341468345902382977472975053271988386946291215512340931334841526712825988330652119397517437992225419804561517899441213313555349094245152157337720540864293004858914416964903391069077239158225378137007134225157259436267756749980892097547020923938358076198570370106085596863039832425037481494682633055245925697703500997321958201037926268378037273021499168580036766118335796488501619742893070662953852922641481467895325340185006631153014589399140567464642817322554124276739871343784769014864816430102142673821103099429482190262551342893689261414565078351300454655173124597023403312281112674354963160553141145567801875089895942712157634242627126275368184624967147795406349712434902034403655110657336828783643528206451755699785097293845034301399072335418076018544901955694165639769553876705231326512333366413569309147544153147040751278651787331897291338831573491539276810505393193420241588397347561526288661290728125579362948181618288086569973506768636781006386650904534717662131801845803474823423298157834525912125581020582196401078634352065556973647371001379876626633998647899439636865809171008260727796700323541873379525993158697583430323304307895358482051309957606629650194455591037743888293996355687016945561468756667810137028618261442580752084968748790834555683286810992293714710797655441238658361507793595620533974776960070520467919307350751324617559160904358483933727879354374654770015405315934911669904273679391713646599364840768394803265618888420669169340277261914455191828151652360399692719061991655729677744654356588953602124646688591824365597199025929668876773171577235647694709665048098037194956104125531479498893907745459337858730796977515966494235608105257022978810125350663109530591734669918469930734550933587377397856349258234049411471938885385086011030918278312344618497246818765182307767075040597982052236224255617202772645301508653393621700356912690450255099693218917315607411892180967322579047180170212691588040910818933109805057252902227931659575733486175457651130811956867582907068883066723837899816837670787899360869933819422195746218699516733809670530135357903631293882837719370519875606291578527801296043186418096608100829755823649276027221806346169998542692832027777478286102979116280990177760284464151299277101106571545737336647958718244776566375647148433054675834244246049240504686922677421785867393122980814858147770340450055348706971250452311783103291070960442874005786179693433856757309587531165347866491655486207901573141523303786002863792972865839185688715489251955650764768156301356832542206804033891636152122872196025946652394388825789606358890573428609585537496268723416265793405419332522961262899388287613272932643580198488578410174917159464026574904398378971234285839661098451230709606672960619995390673778745129567435608627407535165639492342814598465513325229158297855621032058214589809423668291556295887639710813223944274544167064098025396411543916290237014533917149169483476622031228574697692918713580737506511407117582506728840988888074054055934499302628227680333113686549406661239659616820976280517875331534322694779737254088486125685747595241916484864002361545611943780570928984411850636638301876692911986568788899781245790836746487815578571823069378238812926865586054135110536907550731839669350369536726293157768346744826914689888536348280593839639957976255287167025109445684566374844266250483803708843748086884823875989693565118278311572584575298761592829286644326132928050305343153340295009519351250276941240999102097108172247762101699561990672658392475126406421957642149794708906768699521141796843009144561558991084217593388165600461619443309023081233134177200242449067379025519367627993751891259848132865170792298023534989757166091846307971735507935649237134095369073515522625004852361881197688473136967266486011415928178699739867900043295539132809209633250700991770019123867928787809549244848085823552628380482647071957029239246989790013207813481779922878178396640604845035638202002586563349657265372363599780267257915041051575161407978839505560254219847148069951828787186533312689134010191662281340947732136723324387995948506833756789695438322203233884906388395104930821094347570237214580936005238696478587956025976750521023655292583857934793367423766525642816539810981192629489311571647849060257913405281316012620317553415572682453356531036427669480828397622886673731817148406580692630280449926479081640764398060553993021462714495586831001757448073992464252544990083972011061126548589539795389516683888692889907424919942413696472044430689449440391865796253024651225593279414996717676061896565639181765662049174634030311211328441501618190528085618342551577790892808875775854364653359770206669355724552538891795737952132990434787982448737923176015481240298619918553231506835247995681218652445725395471889427753101305108339632778004366646947427598193933019005784671835879850755484042713695783539424225561077404010324081704039268675417114259323173543110142490918498216082315451914137797120154130884753638706879885591439745584277332912093051406179451641999408869841135689269669609339087680556571421902378820542407663415630160468324122352580785112066391476210129701445039509679589915643310628327728123026088023116406090213509321278001452316527462085975773823888536874897619228525034814563116540403768328732192274154248578282064124285324789478523813763093973403110544403402453787864257817912098994778446441559012136751169183629261969526859819945595113917622705475596793845766557337633262265645045339829809112542944936499532923996167659691918973101236786124706269720495357388623103422132252732518662755438604016044437344972664178584934544285525755031995909065728974532761447112988859970833372887954468495518694867483388315026244090110303989684510951839277846918586919520528951273123270073188090309392103813856677623068745622994950942058430463291643078806353073584689242372756834308639074025179059689616917279466651189025660011107870901066138130145827783895617962308392942664545030639107767320606865412029988067447703913450290833043769890335516013253427030670075031164262884393881143239828889738048569822510927881672881780775538054671929430215556239138697686309061067171077053421689101056536091111356658502837152328050606309945902430933356979768816802057754319268551613037148605946193719637740225998501954409585958851855225386163472479236013509692155285388982889006632567295085190178940805131103108863640493719060655426162180587185527431814942395297449020512165492921258737552491097589621077373622782792342078851623177849907069275061845073370789375491125928995069891535416826926116166869934464235851948595479483492719502868555187692193376849014659498705430190732535232117171594482094177789419576077855728376349389918105781609846088918839223542121053038738404028736475412986088647994642009930217412706119316947955306942344154042358246624860953262619029971865472777072860440972709470367679651890392608196054890981834956498867023776309399761560867380487193166580793617327316017863536528614014311431271932912574126672417812203768820779172414391384908760523110822917239546688390435722030056556953869422212171097601275518895370417124841925479662884809229389017176034003863112045601619831541316810399502475853575830921415190672319107078529612989486509361382347561809863736681678413503354536826958814683396916590423612609502001954196665231336193563298825000155241508148755036577891174745570894360122772580180263572959365891979644432146922063642911694695838159198321596868994360570132073078367191871117993413903078935886565641039125182447642391172755265687639879457104216262353224945186028498050595039126015511075188382253783248630851701388181161449925998226676441301733080038061311699232280176860277853818547211685138254939261280811416716689951169565755588378641287597366948984280249201410502383632880592061725969420219646745514172173293524540660514928104522684370426731471405682206678020815485623026954350073952252469465573881868012013532623137257216801858429288306621360409724294736107880670725953271116589106444902479198621852948487494820483822887126596935777703969331746482669822660347031512384622797271616082117494443897311713204460643650277069950285954148414567979166253754842199676715539266850345229857016416518684384021773883460331951344069189357549216491543019002670145662441709767228932087875236286885357050425072109480434937449855443188324141594255788000063529036599677376497564428399884089474648457227079255730799430486708960980163839348019169128363994662227930172283427279895597085760582891286558356399797897974518257254415621682800754079541003609014337630012783339214677464059264767074447404171328152740204166148870349797849692045301711672025460878822809132235598339062023279766094626636385532993394839666137519130965654247785398197550841089173176570190880507196311805955719700925143021349306185906520884629597449555580769655603705205006636887238895655901638441098069446369635275833193836223856028398223629613605335919846218022953977916766927635269322560676216862358842492768236522445749273035712229800612339417690420871023962509460364213382893282577764006589552742590213449758310518602930033026713756336457722819485464273284864753678004724650583195638524507724307223460028947060915305863605426212466590129585542189668557291479472018391034646651543496187808126857571449432773463422311345292858141417330259251800222088072036886199341389548816919946250152831679398532229866157207646473251695328229906459192025938465583715672571752669781635805433450026788084771427477994464569052409168362876194980831146654720520865971893598522127849983611314609486926483822968159396157903018148065408298795596677493270006936640365923282499999454773679781993105873598482047400909222317226170217140324996974455908150167051005623440623920526135283751558512569012675073271220304975482574815268861063732637451534562313392283664739356343767134383093613140923728796867527675341272849619117840023188876588042219034775659277282318766661989032775874156776735528315771744557611801004717469692280151230154319909283812138926516522380128993123663224092667225163417301424329377690964586958415994098736643541098333353256853288614279032501189991098825069715712814572397994064307423781448154515668780705883213173559016153568382015629222016930957301956779197218581619061741947554029394031689849342881366047546865242088621447937082706254836986182993570863655005816984995964351534947163992139614462133094871815882395081885565649964548171855472338011530700698909595241002706634848337645389598290829260124609588662419599098638041479082952636154523854077728686714898231062827203717953030954682267833955618229455221519508570955241961189085667060117810517316481747010790081598309906390372193615318862021654696418464371093292756436700775161736755945584662711843683378854081568605566678991722054276580149985212589696080958158667010619439839742766853413359135280792743618058112711560085552151305284539817495332432340744871155359544433784596559432956161298163059166902699905568584245278708511340227475755637309180488226442185332226559300179237100081253800801881772093750005823622041472947732472974689890276578465656599939879834425555291610674920079214040358791095379336438402674613937042697477577494623113498960865019594918737790140501875660476300136466238498508125858343844705301421827225712059313266350736017877577841749601746139159502818546059644791463454081679842711209080323828142403847885914483127154981586081148965753120914740786016443919688172555293174437455966794266298050398873342953372285042221998330943246789348175873213227758269965134433997145916494644106960865817330886927127196418583349881312206782013459917569651083966025900941880296411999543705226118732693548319885751490452227603122218641978563237171943713503837551311583481106820583749237564036526890408987060453490909377878578965747675521959241822072655459977270635652724433333465891715508203013614691837351550384578876536370275571704170657550990488678043334247804072699238822312233465872806376822049429820539845554258892148295448813684566314468597031781947399104728601832451514242656649540028866242859520728829066147139225006921099963863599236632293763914511727828723554554714488404290285551607456774248222166366695854535378564682279803522417846458919329595028341756775029091737958100869039699562164747044175456053128801411476518870228804701657326791908811407678043042858019512270222180756278668191421811563889669509156968300428709059687510959042090623878734972017305175016566295386485451318844575863610148086145535187732660713852146003993467019901332628398652669734078866219650212463649351017125932279847077948810108752565016145453993827556494454814195840260998160172908882284352769537861159789514440577750415353747392520990106858306343758429671924587937373124756549056352214790391900722282047479563528639254444527179942383999987138701574229416511069999145846557061769603166862600802631956988256811944322816612641902716204028341417765129495450591135503734419089547227051185480360077069375792569540917254150775201036365788989629048168067342817180406705262359927608419713445284176271994613406803300665982959855228529704733438417736916632896677351720981064591494757701931690566652126747895602914542673480715565942537894514014359899311046125486783625121599069177985609509813892985268940317862428017983462681969370951657232503302506070000875208094870700447838168053610786444859082568429253543995162689618054935605300285409425731523390315452619086455609571507589567322350854494245792905143487855166322644684126269814845310879849268632140463841783031338119287205493792345745172872735850072735404275068743305473550545733553910763754023806508304047600634859380186793259775552285920859632713380572001384356432814146120245376964556387164838982648660170259096891982813739375556176560106830103872981598794989199139474291703397194995802618675367678460219372802069762894799387405342033611549915051101132512709606444316369124462525167278788920205962912348661682425969306961073289318949458810611024023274969469631467503482200292654618883080666393586371068565868564206486236276830153347482915715351778664323771367526484083315257156051186379386235576873617787022396929153211192422997605227224041455386282784730729263753821538578928303642656060352021409019241503918952917075110872539591987131459764120252446432582159786497906315689260898398052226899306873989409190664470516350284564432665530102696725806910572412014029103674180391618532797861956462091644514109404418624535682160861353548274643525684330853872776414321487557090042442757007776717295482575349941124591899108834335910049654733789644181480461159984372968483155635250005270672187417175009374711074250912823778978158597063616254567619877765645124842958094467854241403981376863809925488951273103707496145289427394926999163958231842525325986222921756836366729771510117365129660301045943789568591443574430993933986721672705090319929860549309115907430786948864464379524384758113782713112271242388910311169935723208417045344498744729546925388856890380703635929941693496361917285828722206607288683394150734698776152344193002090654785829124830518916989290458479417144738058356648956718823909880297446960251656031118218026772961888046951646478644990015538099684004984412230182058745870557383439139756611021997416405544860765351419032373775904189811577741549887427353139347885470293584055958502948527536355874056956347350920466707983640702176419296107899640309645835897207708272668753312367136368662291007761493038210964223099159863665320159136554151254740650074319186794471549484111111755183214313402723134808109721777326077338784039623384867384275588013828665468381702376424713517259776474397889555122643768653958292786046743263033318964736256210941361157435048106158819579506274990789240494430020027419806148062597946078215347339598498205152835894006905557649335896911210634120803595690482345573591102292005856404939089420672260185129913665955210813827605004998715975326617612682495829698729833522518264620729712326651425342777608192235647536673799924298465526762569850155652096970657820529018208517274691742132702856892763649139366272237549508227572480532863600085926804138466924005317086540236320680368826189669299525050792369553973256927455121527281943021579209692487235389673750428360036425156759340214670382961555740761190431813755872804001886339342429096888283406066379481895236268626099227777385791716709837412427023439714245950512588324975080635332064237479556838376816703035189359020908118212096367248427439260331146092363454280322688168715542331341713364741344879195991024127597597876276218216425050526834849648784588233939945284713143748360939496834003873561739447737830347034215659833128994393394260292937930936064023250478209452416781879355751590049153977289310321160693915764394945844016255422858980228374225839456099072498330737810155136240880014039862439369103153178743188064496317909607467559431630287006617530356830500397682082547455831600646077329676538432792646647299822078144446580704521529417603985138667394708613628525530267031763659938118701722683716140195003058405220417652800063011024682218918176735371117406414557475448511722089751611559367278363165616337263532217549628505514343073244732297279864879022753120921943282456556690150616425078061225391036829884323519354219076999685187512960092922320696776312293483308356950635307077781603487013570327922793331202172073276374229289791460637228783274941334939430869013542492579265201816295047590789887617788632568706082377729224179676391875623827254386155597744454364892170029725981267570029414156192493623112071107786515809279831489235245366977731779878716553037678088278827857861820094059256018659833973203364295634715933631331650878569647604425079100643815222941241006584128263595964197885525440508032469962135076865730659381922372367293580295257153603109736746187432634299887326566312372581353754704790341993168939482796157212693267859854872303671594831696104485082952608533407884936256621705452365148910188857228452281690636849359478819802431126763554000256611659783228577898740156497984532706992509808708335632842642585176813289636042343090689426493461314139506400048358815664613689565838461896925236720745578410876397904112223709936522894095751172248687198628151120779828421076542973731102007338688297635666058086283552309669325340730066698392896991927812203896075395740241764560054403441972517038614447845372638644445687186704125078091202216181674235036681364462391233412593399340544910400700928870939810501138575422420790851298226940235731228558510040023376698840034523619010874636735470188070422188572872436618495553806948806462923150857469349869147312561736199531902086703932528045949414695083865394895035357249015652670349543226517476913070291419659084564710050638364769491130559550467560279742193940030629056586404376396534567871277983670432899723015153432904436483185985112411992903130598284171620269843601583816100222661496464660961287550582937642702016389011284533561920769957684798846252556926818374077547827416987253362642706218580459826170299460445463933799699973081508078707894923951707312147900808329350868600693821492630864682037071505659816269140954173426599630934048437660807509166302669191041762154632370647800988412225791592407476078046878560889001379049131442567555181715343270250950322056910063086927550317452446261972439660368392034990998237591085006763079460428931159916023527113567357931861857593994025084837530155752376016953707393305806850932586662239482552535920127437518429547047557501549410966917604459831256837439120229841888122933127258706995672883805396902300343996522273852681283958911462963604651663707110613827885510407291642274867527712619467305584051289675225661320367548476681889200113878036888071699854202831282296416722608290048850099467494764775463889825553661917840063543250990254841311661687151900152892149351448917283879658136881663800373743189177802472146736584375122988594395343109831943963095796747192390507433100128321240101377017628946672352355513588559431830763812152196008642923156906967509004358426966471255566588999720701109671384359725938916328968989643588519367107373436798235662423956234981099535661312337764347045464138124786246737199581448412000797769791202628994652636979018953539077775750664843830978333113857273628602683659410337476702532718825644269889790205471737656137870724355466920969476185450107521285651173936897199181921539137606636263537710488798655082196923888039515047550034581801005586558106945877194276133823160380585834275481657941954077971394693661706119106972658580392225782243171381693331482650093216333709113407254543122085321332971942158830312647766906022335063165067948113729890904801096215868955779434431872761564721249053507550762344707014741847353003760745223463617248867119655285575226106314675935967906594415943563805763082505598087374022202984492922868079438507724228355295113478485394125744399750811004177630605723658961574357815328899541651995764709123453251946014693829644532819639218414260472198716270033553058032322126265884198765275732136241792745673547074508211702161888128863860594678665917835148038673803052610882694714277484289575750901203778651888745604456853330318095862707786489215255019411454045598818962392608988051251692901677821547987577104570693956583705881522173641286906815128947777178523510059648021353669062529400718243355080383374585907455798627082728648996856381806472986390409716619926685207856453770868386365655518624909086431529689879276906828039607770602324168466623659286227382603980889273363438031930069430361566007792031148803098086076075135819034403814729076456062519254111701387777441032407471877792026075073882791104270736440893179752022054528644050155117677721995190546912403421432438870928968117483344809220819848870474899797007582656900077414935992156795708559074850997014407073733828208602289786287900146781630944499705724046205714128613452151610353450201470183387081614114071874733575389657743567560244582077009533792855030443219432883153165189829971144403684293841247964825040119332939149043923790003927190863738161128072147825737297291592592348579142171519749821836325910055606534421633267072359791173596434266760436952536906957732504296059102429633528013201323954885775476136410452720104328312173896124071872086648956593069428622678925548434460239367046566078485279211147519222467300739401738284845449724443189594150173278709350851285521700244405381855680762608495906363451506255180613819884607562502106203406297002380584121893489622938090870674781456471340450940188735037973180787699452476967591361046865384433732286798854635828134593344638591088106063164622403308932369382612025711299677840213623022267074720140379751201641690041728121629216136485691004064163608065276094655380075293625331266558970918558856353504204039947617049161896678312702971298795167292819385246680975262689201459342299128289523510879145628296425633177697019652057173234633575686261502574432339772787646762599844307595718434761737271018632122113948633661919114100647721642170775600912305823965330343708851914726898327224180667708765636995939505229202497292437999012091179179333361941197172962468859282902707270296941193696556775801874485647168576323495854993702523728438945338292029831638009289288229116302740980249298316431621182825270823112428975433853616434308875850337916242050505363124808263531855090605396610009377751603479975448649678309505293621842878598610609444073112117296243693743555162390640280837974253055470421803178395427928793757355720769675832638150808869750986476473099913495611007347526586820080841001346503252977063405801955976722089870021814646074839474534012705540908188672248726877545492313721350004176457421840543535917061126007561743408871178390261245721868991654371593183071149630159068170128132146018567402559761907547308758917554419950110697643048965097078646934375727576342224712211892607321092767967830498825367847833008106061288946512947052400826020867618491646868393937681075403978767585334653737779178507354269862841258439560527951371674921847190255362433875046005119775225360427160256253612869539085334231830943601837919900551654564669753933323756209676513736333626126518145433924591588369761914801052023737715494137151143346532514715329105648570443527211374465268123472978449573449927513248401260766561971581789105880047714056224330010476705599238722318707532288656905724884136198032201361598992948536839327643153315989381325037619353247482132174337321203817503704249300218026208457113124399941288876185091058816963556806744185830176623238914552024779887976337875720942226395336727037852163021931871293726236869489461021821630547374383564951427394853018970638838022914966194917290762290176305719356459124713133951801454855803295229870862860825707797202273948634187235938997452180540405070411682617168809432412853957233041098062694922456702905010154077769789748994239012834805511951274429591865402525457550403259863510394167449590994552088696239703215889907685979635465894512116614637650935738579209542910006443112016514434055442213575347990607602564424117977599861195993484349775345571746872364810707090775147023525926213062361437064426059893747631811037996357032428143470399452205679684377155506559213673228280739752417173372365169776596640835862447903738086947064723349489603950029422173049969283683388117654962780330964111006076896137163086519562904447816996326177592874384295416416927963482163626751442719135791021614164860805804978715466942789995991745723994150013656553274303236273687936937452099179557902041862715617578373767746454266341067217786455954543513955122615877469938615340577938596224151723842336115682893695717757265537167494013489228898000286140841697310904920076873652464364207970733273761901563542920152132549813140873463304503374221517174107177954954976816184370006674214388866552697441462330889785691122534788602973625513504838163654806453771934903041253917070810513888101638024283466308982685893495784906085914606669227108136319912115330047949494058083793698572597520239535099473253905697325558116358870271507141330043360574791249975670978430519215124331336825561495646922382122794191272078543436884275649106325092208288532512937303898325260482078195836636038445048276315832053592618516669724434666100334041425958353507345963347184927567614711288683278104920488384877274404446705046481376687513842063027664008906699698008520847503922370502473859366692841285594287533314404709744355636736662623903742099161569751928424120590427922547575824505752388352995848717114294309155109799465835117527730406552178795220550549144418544339726451212713722468957543595614536474726694779419030209598478743301586715120366208572261148419327420923752134250583651261704148494787274771817865374860695918539811889003142669861253675862366866088527046763477522811718772296035770606799007002341201424651174089408862996803346658248853151112304993106410211232755336886136479210072967702762697029054158742628625529881120596452472367184249798573189539101319533836611248099538997375634260727798655675012798695070970754590623195020814996090190058617195333584825755084600655372018853637121437609815143586001825840043951046854571455712132486681244449882249509572951720782919672741341814086084305913375684550722026266064039790192186701423631513760195524366485772174207822757847374170464110208510265122781595803629030401101462723314376199450401965763774951448349255476975609291623610929449291677457838024612536746571836909522522615102951296385956850030777247949276745705180842811920949629620114142535032219008221076498570546886266871410417983824975749014017694598834143226996062245383865394646764488727309846185293848368040601671380135057336885733430604851638242912936639069640810447212362682719987838894655189341945895413819443607814185954361853431478322144946311620942448322108576144309130187715039937205614651460665730293121912841896527562267697346915584126401519805671489089034232788374897935294224579950801298486273567691150550896785099846544543619893419952594472784250722270516519131468545214146761603478460831439665269396890428499148107883276877749204187077656077143356720296061990548994528849463551022577454655611932869238857198751150303398587494915301259824990769212501383201630202583357854423174385542588832502992862830188921992419413326576465649612437706322967381700800974352533395300134751481106179110192601701097964145527254724500067082757782075689118518701423148859462393424539697063988788849936238578812356793921912986447744407099059421619478008523785728723933713616762987673344145094426090057080690006413333483984262536029740981576955135914587645912883981857211084146577194975452574751233404192230154742920028027870087575537754432254347838262339080520034949459210073877684802405577973570418152257526270534300193049368459765283551427603567019944304865373965025096184842369631607780224195151749568462657581139103549109911688587766341990805693312828208754947367908384230665189161784078309915493785697348154060638807822933697653222259980762447612776386404517436904552594904064222913752649275672463882293344094800972402324407395269905818047999537415562868701155339663378762506111235260728088467452510234623115837746568111463274426209780082325252846354609441972731123464895739092321947249664731279268093095282896934253907067030032863376706140515725659349196715440474050639791883086280570896272370212968496984174083709927099134382030964732637447095314606862979224301241097542593264339096890134797448286089981773081607421076237256785710563135533906947366837032184010946003118911763019020485076017073144280225562710809851538183076232619266952700258723482832902258356562102241104558948641626384804837681967867113899396938594988621081973873985649204975932178609758825046011063482100303955913677582587394537928989557498936763937574744657669318605540991572174386567087590697534380447489951801928232985225319731670375017897348637067471823654700030303049257370753098382152975518768426729704904023777096045025473609708377036997119156504428205365177777399474431133059960975029557375466629588313548959878582752455080636500643307908324771518639070726523401815061429194613839439209134227289909757908230690031148152557465006880650600131807977626671615136780162600249727336578488709787935453442875794545304133849654057755074724668895541453026338493039889047338096050678223946336010276642347254745826867054741713295489214242659123937776243717944038541156658664886722097656411159287809239349730394112999226821380755371674370405864011922989068730699575419261641278705073314092873709532928281244678416573833991454122356404443427329993309919009164373116889747541824231681691584535717324815635762707874625192208017146289884739706337191903495899746900925886277914810305152943952912787806619544980690786963958101624729724999092604579282573013894950071764048216235459793031703111267235504174145199574168711969866208954411412505135736407123177624816739843463728017335601068750251918347831293111601410507632957854654839869792227516523103663636310751675068841169774271934122046489377350144708657597021751690014609001881085157341602264084928059897084130631600956236342775012543070521919557014790610488184360474565206646828487707131642572217561736135955383135944824151780434790489376277355544017556493645707736126738145554036555616463583778005023446691372774954080971802282642956794424390567922853663605459043392333375960818232785280527313941309688775932229352852253234638964074365418906948525860626516115354684451551388811088978792874381470938037656589737337593851521923712996761152838482722278355237718062029260395208117616183433093664442587874015135045438607866127603918916050053273459576367069510553126944918109815863863214218447266154897988801982045909880468626445664159574238138428395067677520157325888768671673225987510192381880021634081136558696003456167324955150242335421053627002874757991699212748542941266711270519599381705207807221410910633600024745242861536765200714552531314153727366516654076674283704654858444161825740212015310189663942184837873570494500390220423411648293568225145393521838658337072932898833825494377888661134698032134011939967201175222364509978870083935139649988024721359719924013799502369386041568300002161862955666708123081186878231029980251814162553138377681065061486333055326418291661522769595613227485547766102764711007845032363170047855590840589141804256006008006392314230187481501295101445523313444528560942751638997275568516523418144427622367379155116375982048448565608202811486987957912199386040212417735683184288605480877132154710235064379913738742984663597156351199028159943094789499931949761476996890299060597119728247764833511013972311584962016832987184264900593908602973032946998974197181206784781305645961693534542735741382342449689947413062739677069914846183700019736295586244625434616493480588010458393270033530892290763776949393849005657837925874990620134649923847405142574199504660061643481720366717880639983572725750300289487637386530641425397834127246696434725732428222136186998302836537279874229715096467288798950859410191338709062273762250727166260488810952650858261032230916019039234384498588643430534530684933840478047184593859819905418646765118424056633889080118505372264116967052635950275952390446743086159344335565954932887871476092904359028875572543455778601438171485058777696065528786015388383383849367369624138128456308016171586649241134224039715384346969903205485229917096722389415965394877746326650766198105726598479203174208396162577956603065863725372677065695115406118363367199679733080653257302325366181352801304635191813385833302965155598305612648242283877574467818216040207331817221864536819300736520992460830658646957235658201261537937035206774565413223004215421127211155746912066127139555312552887798775046394896014961550668933517419072519127221150540189431988802780388147724500275641849277600008783619590408923946640451527864820000342637550120939648994118544511845290204256443191500337971451931953651860437972599324350785429343940680086323877481386551676727553107615183069018111874326772176051258687856891104208647008172082667824719383168071825717757874501483831956527389162605403510594894559596288106449930690514060335442631524875051903633078014556248164264647233673219026466185192433460360727273184229221624696247352757984946315072248527938058641834249101971494553812516922479101534841973992492458849575952772518045718933265849130224758984368087288667671380992774697432632649191207937965915496646549910020813130305208895352255661762933735434186482127455045647401354530947722850674797122775862999382256695325524484225008939717137918483034994123710125898877515266385452664284131444404390783476990677381958497629307644233148473922886730553845472185011783402424301697259808974822201330607945619711577254142775444244619718139807355411672733010344554681900773049939440643894785854382849029163801917913647744210019980290481607229255511143247132015813860138819941301053257406949234137720393081050733061195344840889776249772479073778099347816627048300578460338695192068956957342722062786883295105611366439786083615081228923834919332067237405946193289201183198635426289638723021130398329096222172056588882424434465093935287817976039929946028601108573580713098052228003421290644125850212365724701889600105741852887061761328517869887640349479362988503916884668471194389555567799357578156744578946929190571223174898621256795180500714148131906080806889297042227476017073056217379376718826729331745754214420164209662357155844656533217372378276562926007109562311008158661877470587613898166912779041955560644129496416097241822349316875818968190657878295086529111194109420427584073381890312096681967454334116153969366888806234884746724484158729512627860379826611015258839497494656509700061784571387440062272631732780439104355841988460191306736795995065366093391773836217311609639715199367278507437484085763081165185657399867360585661865723784985476414036821977151534063933106047012089758384588317159763618532806247171888819322483721756665029932234547444105193386589584055151954980872966938956134346313250945815711559214867826689314921712053341492181966250078014283319005690455701227725469836858409145360165730851557418582567142892882602241563133110350687504365290210770723867291046339744485907739428946167552534586782935562729824883637677235253041911318203222374940042559586451256133714480398301104779790557569405423683947675951429692169699325626106990245957395081336875589496720333345352069764537127200406796865694238440411054964087031919439183170498842180826369598747767842229045791127992948877924640773239876082033661310502591905024012605344791207060126861366087050690106821440186416890798502708805971160774711382800633684699037653782772326857707345395993805386946342426080372069312327269084763013141354052104457632993001286491987987486292703765660970330549469982286582941288156938096043164766104426447737176843079136739054517750890039352319983556205368027388787940452822671185429167183431705900590586338676711129122736091233150713423120583054622723964961669904362378247195762619744712297444988245647141043979273179103621554924775972805459314410694227454942191282378504988477943628319635744590704474600061785561502596486194535533227118746188691293466799837696023110304067163270211905906799664743440166446011158439920225371118022077044304762822851121397156376669281816451971676747678812722658199328316029406256952921683283889280929585898217755257236197073666701446176396318167827478942030822833313536173305509849241238531719584384361670158112933951186335656052873912758595032413311966860865209241167105432598378085858805972824195866799305159268320341491112177973253512094463015791852364643070334531938597928953776486193958654202116997280443889409438383714104464555266854972167992058979217654090307829608593428470205836731322176684493233105086018652041809172164013394347074938624127188646262140079469581469017538013911759965518608770531125919330171089737981108739174093463946449121251370357883669392366861287639593109679174853954794811541848983318168433444219014965520634009230534276771178435600630204637769403012243948619073917953545899149124706667669950204978603846223233980793118702183500369965731426467346590354137696086010536638626554735095944339201043986614042389537591734170966291535981501904283433208052170990603809163986615583383683470805908606874149807731803316684544954462496970088085576989862006896335025275441384030933367863146060369721274271043367220940194134612345186992770415873398312281191122770608524401543491799418530483994285821024566750257541504079538244683493157316862151164217197204862923147917467167709315964986325993611874951573118491492638255854340558493706444035055881342827000081531795003468729557022278830373853719500136078604514877047221394208049821498156273265561290380604086327888986671051518908452935760754699689832543821478137043887921339107000947778022600611841021115901446894079606543201886067048077025373398062398697048427414863306777259729257242224560048281197684122385541785305940244237066184073520140106178724057893897126023027500721057670326234577176967031959146521589155900916384996743085023530120508143032420758721687494306848734017745458432973519793307363574751071797433137361717434046695539895834013136071882340493438577345390653511341109503738952943922969122793206672544869052587644892747845229822129452180570324164978667821255955145763239600929532602062608001751152115828027135497330775065062853856016530229788140940140841842865358693012701091963329846455706998488672771737476843212694897679161411870233629252985833190269474251936571154299489176424882725024466618133175639074954197977748655757721801612832709445430275794249375789027816682077463241986048585551919662345354648101244487266399354599660738860095238239861831150178698680137969627206600403115956921091017587765279365801065363723799934001191592689340726236364948784285443639427123719168173428206843912387982559527895916403393382589538613181022478587620257448921949142654746204527428633286059572268288034549370443650696304988517584386374535900507495011884140622614722871291558808527481396329517368902312164584043366061950889035771818930781931217123203391449959725846295520938145278807978305462510127447151906410061504243762813560176185842177287605438139095433218925722805604490446441269479603656075697051743441021949033978383100379560888170752820289733349753277443622312502905512590133706713820881336164460723280728921441801021638948860473163608175239744896088083976303094145527905775894382737628943321432288341453316301678094058157386450706489077964404606171610311029499652664220117874219144631777372149610499992269982038971302572973783552326512904178867164259825440610220273346324201446838992105298437922367852282808783241668160290438132577534671253390846251813322556227680806203400834188890381386879070322449522758086605843634923583687223534565252340075341801341243340389048672250343560775162027506860719475046827927952653793460900225494412558113688903389020145632331216781949096838861543665257215190612356918433253471238755619926284864759619713602998001652301724073472044198232755092596901871696291471132892071766678123395387223167902567082952622863367353824414997781261994981698944417906075094521991828549782148542007819278896306298049991656306624930647226138016158960776198999306213781316211302579611178906520494296378036979620409004571567889056786173669483829328207497832094147092427567733654028279526316293461713480682851501252682619086140171919387121189529066273110252001840932818548903994053838537817195338258186326603839058838304827238478796331435428197403209877122114479964852632170271430805519680106119289602899695387275538377748051088668045808404402649263432189225312657311878728337518440080343039669326181388402160923336733362236873565205673296354392127579347930268749046841366374349847092857884748077654481746256779840554051916228402231334195073669017148537515424129503801127677672926855577681143122239653639897849228696683019472199053675732654821183373236018681274593357324614315558830708866157340673393727930941172268210140625304191845645590193276501466806936456318011799776905040664491484252018413163320335837534206564398348074760971274983765470608771945362714046156782407272987487765364859328080448766311796019039043610773854909723621395327002072528820508822438715843332754961072788390956865546737471674013272168040327997651753230088124406642696918186616005699757381068628455237306871708375414415615142769978086969206828918627940273805176775060906266535600313916307945220307644183234680924519569978070190166199446776493125947485350483499227834927420114053962499355814668610245117889564046552810179324927308957205380039061107112768256988873214424611226434934376122905930708894142032321315543172232697090896774040246166370130385952331120318356520370339999294890019146156183455537721321798655543244968786573909013364059246873091648391570596383839661209609766002590132347097640428377628939310140800324803722279935422284574570835268737846921839785440079880855239267658062866247398891480163636398478089990121309747160127426973619633183300235679737548006772540884062932911571940670790003739311224183211872463265491875626645252116091625711812010109122501566470933997126944866709580570905183000215563352202240897117996710276240528272170920571380729530675812143806633868905982143456802933213925350896297588277304793774883185364302489630186448808125037450274914261827324756371305204826046627161806015766935146212720190705467769062690614787926641282448308431652833342177148827419320782571082056937292142774734079170953599634779629153424149403065962357916034895675309655279192879636735352240486942092227188549801566340475322975857976471619705006230676007564182129503969984143566879680323686664111850913767765415171103481921386125576393970415202652231397946892793492212512097537706215054601938508467702149760040680680370630454731240506620978423622246759050316006875773410333039888970763774134672156921878129771749304121464097339887786048175154167664104094008661145586989390442794771671986608408036317956030116095798665112301646931793889147870133783280468279537599952891420875388461531209903653580580589152847947584101429132449159625768953636144529264157267707800392151223791108365617087664055187554980018970059739566845415677594059232292871592696748437513387155801104179363877681608238129471533486919114937592581414607647272351415417597475652375930017737851310130658078083302187853170897539998607766539826080238862702485656340414980938644094032532218391685589123834507189035339163420835567060911284616706375423722866837112434996635344496277833794160435059865228161971904814907352025701682522589815446159871132694038433920849938406669020975565695261335044387097594728197658612420071363253319172974320582738841524170410592929604558637316098961530948076499870437014862842629241305470339776017081269212337305823827220461093261249188566526411456341055510592006418800216093296675618770051156325943519658159502228399106770910983437887084261405171688901079186901276542343518945877971591588083871751067519347036430720528978418295854895093381872699989660507640719516478589195083100779110107453508541749363429000343844424497316160899269927070825657117333684758748651567227187092942787247264530158741717036145073765810689721010235216500430676728307475988663755475038960913049247974053400042751071455465091510161102407028972251354228752760264938081467286964875899167720387202980112819741193742334090210412589600466777342867588601461472970251559291234804139986517635245911802453123697508460476515919028762613259896689189042556929180368249234946465666224923553352866118667898348274132048543997132785774220819733895402877700446742368413675982879193148371502186439247518622121832095077412276452153181025333655238004169469807335778765132060482594204504932308409189408063335431452930721440662546992733632907709651500388338603942024385592244882812556114599054038178301714690772068199979209078027706234396250689964476554856621562802123930142944238258418842227234980980673048372518951947627763643746805389640541407036126876544115173066781903571583252976764572975676681239634316455970871115157670164278135805066898065371039866220174909709657409610687564793896401226107223880613791502107211952531626332659044730500927450638523098312618337871923712185788755964055926346769319673507910834432004952163514829178032996833974678606492678317404779414213669629129623433198076360733326336787868540012252502439084065501473084146390408161010760133318257298733635334819071951527663616982512415618127388373377450685697707965456137612033400310011009113910008924870744808152225420273410857926159516046458820155155639436169197634722048216528725745076562404874984985158818582738264537504397773796547279158422754470624660322609310775198394890739399843078339626458442527071348870573809173920908433964700100557910729047533110484254194471368161341461861315899566375659407905593655291512719433346079874606854648086607603770035511988184971263147522649434893086398781182302474733471089194109635114216903775664961564950834240395213166335563959536775061261414721033361877881157931048431060525415314804381990570957943085835237786357381341369624872926989712860894289622550454441085320895363640559374808995245413402144430608366905970970515662437174424721783152313455022806504066913253818320247789522333346967937333796292127457606133896372549645211420139264638923603429840273430851226071044194097997515719942604369906312952199028011758109477206882434045557708578567982725951018759963245927642817848368081555785273626407515364272244500501691817410301625137835560319775775033387947203621566312142463180218472312962488956634138360978448418957535420772926249227020039966575595429667941102104826515046381768702480340483274857497408974850271307919998810323775603777962276131068404555610178278753902668792415289473080631027030613933580133820720449550791625560058513947474021022257267437449319969439534988214493007382809924086605020034925922582606040528599242312374811625566865988298561454425176696291505838917893809701006776268846272751394148462271837085958173333567196188065237770334661110460267504504309629522783690910305817380961877017810228242643173408707655445253285834579931600153904990857281283075604627341508431364342804950119370531540942005246831321259279076801311818373084014481394802832443642180569320086488449677724785365774568499611099048231431999714172228410950254278455465759530353384580260000987801157002766680628242982522066281952244504917218353081877455637837891927154187835112604092227235515856157789673876062091088501359420889740294826139026491212037981815948116533337323086707779188890691245639257606393555820093522866416224463513727870618089352135633999355399217593308815568972962846816711424005717702136513532063546814057450974284978429354327205767531665021135970579208836435918127521223382483664413732098991027671005601282371767379098453386721975761743598046282869316659107069506760668122121267075715326739423639631154483544629511634676775824036523025068681426274152040478932659333363910100999585330983022795011951530358631802690814955899142677220319150187314481694483962560587265559123780479958511904352381529540589694718082768912545231506987045745598497839748667642922248903553765044738075926046036970396187741974888144835319803790963814313273398868524383831666417832117068154977953827245794065730008045840438836005051644056809539124150047489123358897655712525423498263165001868535820527615214984081681551762428483771071658777851447396429539294102883741979010914078884126808671898417430492539080703475392045340318132366824377772980266330114272102761045550228546972384258054323582597510773036010937675875015171410473278185917863224182823412650335640578401203673531286074731797206923781217858245042232245650919113660178990661940166951074863246062216760538395368891382123122459719929271241135690432819228388008475287459812010275716347131039593222925885629054024716624978401327569178158696384528631993067033746891006404105174494965500193772486880875805553983699105776144020460857098528871499391380325607360031401679025101803111065729928805768817831258648970750197484689762075708462671884663536659462294461873694131874753255944101440480169831771841377085368855074691389565837043439814831418049259774583638846494662464055088275929610766844079248697034484759447352452108544536949022717381108919851457490496755549458366833488264215356602870360943465960603548232622820808691082148044687456517020314207416963357309251326008261819266692715744864633772194730882872054811675904210028802458580257930789500757553127753951686757939696251525119336436016479289693627042431071392274170962657534282166295260367279274707532041630826484275906439559026316771190185232417703671281784819046647373113014962047474941564719238893124661735611111699223877286628848597376055355225441322401526084563153729732229095327028844067102160016169508423632744241953605541039558159466794945615067286713726780061389792267568413758708137610705477629258839449371922533257411547659579683638001919308775814091963862012972898081519466820712190777756204177806410094479811684834069651620771325628126363157043448039365580009776118620763244767694114929801817256988701600533425923306776417918795130933736926042959063634930342724222595015098145659787625556628759955928915845713527579983613748425767183427680426688675680735367751399049853203257464274799343043808476644166897015794081075290893214236203053523642382230052529792483081798826098994656260946335745561971515855490751246697795218663338423103805469860707885500064811734299596257857024466076150820672395668856070595594244702470845302908396835336221427348555406074686713811971834606422830541470325558411502452160173838761181681395203154731942608748810044299721997306661960639201492961280983166548948665220669505742088450012976881161660273870787394505121524222084287088339461826096172069269002242984071274752128215640494189969822499450859549928967733616595133309884159277072423966414178025377436609760793130853438214116330042999677685078415457272386084388723918178950636970173573829867774533005613122718510375326500358782335546746171154001999040022465108119309602716245509241549677536893994468999152440071270155449935087264401409690093365650399010129851150140381759278100922173662004587001578245738093716623045462278043017924125130627133502844526157942827528064949839246291377190582775901146155786302858600823112761457365439377094626767473511267625339526175034716242872664060325847638888677452416385008944081240512140977472788307721047091174115965428589856018823232348789770675925356553923818115746180394475398762560118419526980759183866848043936048723754570303676097371127697379235490838193152022302825202713398174810771597565983887438959234570847469746960648358945287579383306287214592644206510468440071755290460885392026877251274283222683662400757227564014707493750755390935214065681907802156642128864518796941964283579459522195031653864776602622587134900336423466192123280372241680603932002744828079960620142724035561305274885732118416101805797911696603981313878498108704531467791327946544011699466478814681105828580045256868014250431562158172708241004431990186147904488687587074015911713042507719738766520383159180471232460558739080712729028555302005009080333534308023826411962521279380497969898017345485822648992875709364560258568529018361805909641861512225147898714317416583431376651971650117053448047749142618881428921555899748879889628705136289432038563467622261263650896334843018195393911549786147079199135919451796758013270043561013157355656955841539592256212884228130780188854265746331355419937577916938861289539483111753814821969180627556040693637733252361306323944584679998796018497799612052631966717141564611244821974099164850888713775050340208513168891629074801333216944128715044466157419906026183851183069528557885904707488926385064052122765303669157659741995003955930178677645299016447624962107041711693656108325101814810890799464352449144437880450995696321354619329045734185470667877519037751036493084961876172348922203631985961085598153910019032174258179137434721333675559961897295365166789640296304589344659584160465962443423959982558596076341617367856732416581553258926078701980858625950952916277646142643016152109137916949947877745609128180275071264216570487370712376206207779016899647251894047657977405212345309422863163439502747965123644933157892556149438804163759472534274950549699365892661046818607456712937233079397912504327360169267951187285969783082132713069167564885673536099550621898631084143310941271391404075063276872106104554427860243124933904106133214066404696491487547893742245608382995941801548856012870104774322053820442580442558904452168826711520078970384939549122616386677584308393171110953639400774579915343861574679934421005118963023060998726823861780440655172109003808742023172870862629315598352114206775250340412775879794881425729061831606554816134825067055173246488452235569842527928117427958718169151517066831086220165800123413029289936248683099323481112786169751805859849710959248019431643541356924856685329917009865609281469892056563917751149028459410788371755009665649380682319389990135318365564895935072898213124665771923348957343675399503766835842897611328814871182212294710373045762522336780159923403382959506825681219895512362531677089909287636443888235919641666025819525134537715835734751767638056097128731390443270575057829470281635867229088456814056326193635453689268380009718140287047720875001761485587322260361967363547400653579186321690409699260996798761551690871519991464459126631802574262702901699906858490474209077188324408713949561748002972651576796513657580465426689652510933074240273558858594302646458403625987549459396239209877897211887555474234801911779967379691361686412671899373650691870538186218915899147590931551015329792311062419418723223393517459677957930489266400258301535028399613862191660730898085382281154731621124996393184451164828542648790342921140736855859093806036176359733797974643893206791471005884190627326356933813512488247493209526411367957773658507456742898254516126109941993605925589585230003264227929696984548389200174208489853881956597415763992442850737891500643879773644951240008272021610949138848552667131446612842588117387107702007670815721883043910934837929712522079880791256685142912789109351132098328666472509211608621900083042701578489883407524086296351207892362975700829415156306287873069471650623771815607073725922758280704331786963262610230267542122057339527862132801297705556062858837167098442703724367499909891281910024531292011623688267355708891341035999312377829435045102282536885072119500490412814636006515937784757033344675417585669173402244368784730298288637236817972798056614821636284340348289116797638215777866936216053862558486160627850828415905904134038569450943200580041716545377886795647971972489964432940360409969917975535372158350994518351774124258169745520984055695433685192047297006411836933888804752371329426292517246533885357926158624566607804449898596818134405375164915721826536281402650129009078724257658073557837649657895854440553798496547872553714722762992090064308939466902439554696874498557064269110812638951028736458713847290236860496490747587825465794094388192672373126997173897976763793182441948754350032492723989914611142022213070241728794948045431817084871888403960689385990356276705961345391497777341064208213717052825203104376932178460275894024451979151099788026663105194720298049289903178764926025720921679137178590140209708930815664723264705220426059653568602129597144743441190075359181108785088900866093191450636585923468482617195589582020297354227627555729631309891897447228954580761243914796057928683302068886322888836035723131958283055075781577856462910844945741252472545943053128839967295727358193606958004301890072377426591193236147036076963431826945185775245124410349636276855127924355573460135919105089463047304731332914221863063911330281497258704061737134250557368723108695186533934726505063924402958631731580426333329928504832129863528832456776412018699640635489699390869135095146879296226179645544527917263538782149811190301115827178474506926181875768999495215718014789337202494435291476122007311430887754443373367514172001690445261688332537189215114089946238403196452569729647205030790495218735477313582768766731384166800840113187144401400075477661414283412441687330513245584004128409581541474060980818889776692945861160794575020178047379866008136561930193674247713117362829922166370953886643299681006929279459808665638063716430937237374580570900056350525502916512072047311687959707426051049770616501859650552798786607530359672622095256576556406138519291476704355036517686732916281943984791396509367447076671941881608569238699926873250185820712306208710715193500683776909425902777951620749119684770744352903495253008768691339643851767376250244568582869063992703390948634036076799633201997159663013097695792151281922272344333139668741649297578846385035768790076535368707996045135384040408971329614044233639198987069147727620230138197030247352068537299233507399708859566111365759315624036918969463683396349342479360300170170990387716115739710258465060366533149350204472180232117671476565925641589439082785736665497068740429624731943886616758737560134496696556742826491641130056578427358713135954993269648659295376459643766623784802265845678245941974284659880516510525194723336253228208036099656012368801663828519022340806013090475445874033218040814925364748875742241247669275370133440830736934411277596006759525995843012982217823066464720576596359521818953603349261242187022025428116517629418674127935160270264316993833187960428161971088164274564358769497432310050062825360618309817591600530935761001955620109502804593751494278009207525757564157358028460388644738216029328894937191569243367744436091010810010083127921082339480744748719215693264608874690270127784799704176430428495915288159624090595043045494434549218942135135286272284407937403913239625012065250822684141056764834595374985441614935344881645686981791739009194139022592394217470317147584118067363330212702338743871579378316117604420940110273151566811702385744274095137378645406745776245871516170865536267653711772312164343045719947421721790190221034307155039134594867803726352482860979102477963537139058634998171391651704318640363015452639734201136390366983594198604047233299599713035822814485231603259974580621067527711846696121988623425083682324948803690813274101310802555803860052375356855215468601424652367946833701545657657286296848569490361036479737223077232578759381604046943378739807722971313091224618463663622471367765137369367740044856875630194903380661993809955221818994449235651706534806814147508116970480857563242065164650121778387371658043244465133605732975759393057218628680782741852765646442974559357142094529622453701815091442390477563259736775605838054474608680442422306713386454185665329610068702278456309849688305928537490597182679289206789645276359910680731371937809530577121811711289557439369149136992820899371545955814390184245871632369891662115731111315621598771158856231237869275780966122086917457176693697658094151756337695844943307490599216691122906720337388773697473641895841774110540069814141156636490003813016915240140956406971824326388485052480579555959639057774246524884456935633396826299204243574578718076977266139377899632667698092993010144401947989672874898826649998699456042797586015553265681315790117117448014287836008731570064492372243594660271946381000357936060569330602066234193059191084821204596463483179776857573488950804919331786426076853855565245438545255853793832395199431879000575645594997074884365184772261002236589741588078138180890953122323684021744721064827074502135936672763798350037793463289539960254510549289353167576155746681793974425792624529166024562216548167773095813505119607357948883722582458326769022643780390470593842634772040850289947020970624023494564756476990893425389625568975107671993951597692338906657591386101017781794933096581472503287050501078095341113747407807675024564757574701092041571840167860013912548904285641401688408169442514976597333371834974732509380701462710938004869472201190484434807643651659253353496421417405664422676445880755661647904539469559304362965317616425205763208615326518020047724117914504427435798372944654430720948431168364880977968563426599636283055271235545489256304316114509796856288596124382103187774603073871861648922324751753633458731703449354314231638381687491127954846533196563091625616992859569170398647822050500640075393065598689830027069810964264247703840226021131501130463608717935016709627557173132478942892981525316395411452453146384207960330567765656025397807424561602285833938025301901425300653672474958136813041846869438026312675892183926487537593078969992326616554990393558021448737929324850200769216252598447832872785455317682129579340720935284827385211416814486384949355746742507703128025846662769051922963410243663759831197991708688674305395931988988734851332131951741347984256381897560286672739739056021400926656583665519911460350250126836744827845430257403676709150801201296650079492301730290720972941089109069447974813158494155674646898480289895059562759197790570468087190275637140514307440047409960765125920055785016762293819272134889403168795245300461866235439879419194658560846918504857100781941075279198705611396727357333446280547941782241531867995184870004352336763770321154414426750657490148937517691228881685014693222053678379884923447233511248881467992345612755050942676817169427387672947711520070488642475720041293076573201350081483864209705788150630189884187264078193057288197364643129924741942949396611187595440050121024968256964387192234754388573390246300142466637015896997313312149295354519841472397190718799051245686068166343569728233473519901079155628438446357695058316052350081516644624377971498510826793617891247866830908944363807095561714483255822459014019752625947530313845100488231053430999702981637861248227373024564345458517064947554227740996520320967652872817350493100949012034110600224811819545389135259720296657471960979963676639739023050570211881875708358790945720787937179552408316968220822265040932446161858798259273055468247391137793798305691398619867454879015721624885818822342952186449453375832651721693284057062219599631015944917427797638734919423859075825077373956534976543953553933781169307484686930015079018926262475725588139433942069431009884592212388814192933489372525978671920142970342529140095990682235399467760020896467457765790448970732010545897618426917874677924525789373902088384107113367115707354243990509061031411582311399702784774774936777956507966366552688905539185184369702905088234074463019366637596000681100374525740714579284016092174841118854408058491840113685748504868069021384826841639900392389623036249359907115371145146862811755103536103752689852342585631930863837557813762131069627776586842923480997864583048610831317437908194434698430449825655822894475033875528297519223213761561568444489733049254698996311519107734533876296104858569049791595835830307545541946024681592023769751648000002393634135003886764513728320372686963584125205865985105164212917868678068383398007600714173486748380558601541179233736727154931546966627544666689702081786780588981099486652561872876530401226518196100247308549063925342618925742760367832711937484080626813959996726919085129830042247958815113183582428748214849281450677277402674780556351896410910269350925051301758684627257532173291964436232461033107461561526843778859633326654371233434929513161154992829449229924256605657102884010647811995829405092902294118666351863870288609610598106166259081312134623942907276104928987518688354460138134271527239492006003447097733246047578705909846135702707798267210148671168182287512533875032475514936170002736989921790324097982373628729225787377153908370787831890011506264645226731704305482906170895417123052634787275545081092096670369304128238203511642705940678969910509346134698781068482390550000929118170836668756388542729294863671948657613690764526422024776097856765328846811856788776250270564990408115372730774724059277246848649390544912010423966540228461548298669641042510084451900675140382923279028005996977320281294149694926929200580990433655156630147149931893928070520102256508611490426390836711777061655393032146903321716734066382057074159343600024635920055591957026923233025135577116754193360216420240219606650719186485335737003717324959703750509650555693503114167047026015931057303272295466250819584289972146242719304914543207448795404688538150231021440610556567851856063349029446320225905887293064749653231127603385168745194093389231365239769597872043442518698591386719477918021247133614905994971480135783811064828853399773508730640505444423570015423370133896588685962866483397563475759210873007500034183512179274019757666926224583058074978491993715357340149443528886512249935766092755943002277058759005090533247957913156788972287793812300681518182815721125665213256113923072625833179901872772190767565183863114710265444135790101716916123161823040328221297007382471996159905603684319281095100853824359918265808848284408903086167170540102150526419865355162350751754881509786467058557313423593596383591429322212793416464032123282421789191996706382703291705366067003503592907349299589891151437365906487336832990022404967141567875790587224008719315037706125043190660740633764353444908348669902393128969329639669938259698875057920694603602042684795229601342820764804290052144942428967894631945338923356515958118318719383287723513414088854611257045268837080301898667742577413948503836502899684476593188982102725999906600851136736704788398587549669108961944535845683813004638249416192538572923533515140326421533222095473344361038884150425140563469036821468460091642839163206180922220081076336641206536333733238582303100167018673401755714003453854496436440096990787133208215322604419290638840176936483684384969725844688251882674115326547351226413022117890166919762743700828972189915222849610751575924280132592960130010967412015525546355985192503254123974596171054622844265862057787414350184949386562630170327582613594523604601956514559099514405895023956772681280313957329687612539493609564178865311751129562797880269875941478467402878700769146697461753824538816170071349048362462985523933744102957604571335203225996083783949814977680477364686963374926498214981443413162723006264151767769975672347439606996832845892616492791758751159364977694306171994743416251679687391186693426024308610339947173458005168640423160212192866512404296763186058643278737530905428729781652559248030903036169142856796758482183606706244876401865922549200755403827607568641687584138914254444973939598339544243917186216120594201665153999417791390528874260432075949031413623630921371128941903189987838116775040824592746165593845924491602110765452268962732977714091342495023331728341008151417374754932219273681755903286713786745397468790318161473678245045594800205228820593620028055717480597385435157342172739930277791914124103750815947472154730427549655329004426409656501312039600129794098136757893857479445862687000880234779056656283839678040700334191029952090939612180569903041683872355593349763715161061990905101854088864062335374556232373029267427733659902514770575122758435628807570611274348271596019438485679691396143460408220741898506375051822912331141822635952347931976418682728706230542381446181727766455984583275788690031618925541925473866219342710014797467297361002437613612240644723726182731356494454571524339116295581294546010726737321938612136455877887166725407762126212213598824223972001608853934474964239229756743542092798869509191105865533796608134243892390181911088094446479704794909051180996457060352217727473983354760936047744339250746987063441813681445509327043758818019684625799481189501792424057523953816309080273886349841989499736164690407675057939928873636573605893041447166460384865787170135445532925322255538715206412410426488026216547276583426271083829641934952585552594971717453518361344231863000652290674919419730710478607095446784309720295909585108495652840620836887637535902559018155857900104528518402625439741514442497262170792454240469755931739637191608956569319814361099854614095543877731142537059354967393850202057372241949478500292854894299855323958913225256009556677230746361448558057069671010664698885388789479566834832151217194059661993505490764648657085673121233373515715525266557784773669253754016550768051404256822942909417083006083775154434564384021622032582617041949163429877042956343798865744488705654947701479962706811855840321399912961278647850656429191408394008174962519593937562845494975882524048880700044869014473880857888989960858102723699708218080538477238349879285722103430046873642733631898531856104165666462771902754607418657442220249164723657169913407979012611411990391032449465811773772808072037462073079193756242814707930394039059375822507249566364224724284321075686365550093979539386990938442087351697058779989935241735948707174402423804720634422544045040282324650365759958423641690521669896434408587045269686281885374090125996880676966502310979174700498533127136938862350795455320190797111059901721459897515419471248307499428623926003022316131016059599804271416756293682158240620770355222172868571154259734979898748545708095911713708073328414241141974261131153494342862733491925881893792630834687655829476763674460620253320415197990322461402639674938233854710214558542400087107695704401704599482138184221681063824143711265950979310652824199716746111635624499261819385027145715458312076075963882817985112638274186971352767055626290503198736833344047131185312749718645416385803787012167101854437075692877004688306233606855596641184434293183885709930423034314348930834241765612831109451338283462533785484886332972778751560952279353088316188111899194769803023027912061866117747472226677486465893698423664705971444198801136421245723272038563546278490991650729922587727760704357522959484785881993689465672020825762026722951252024720178126769903743009700908957543579886651487470810206023201570712079802311201810204170998805685745848380974482198164276907793114785841681849744417316479804865115415335585291601642382976591384946072639428617907559351881325958580963527388124739831715612316825230454386331178721687779147706482209859191034731185982333964251679649095965404337748584254491800752995759512889212640192153144216895462344466026466381740163770519541774738810015307503374684780039254087085953015165177810234747292494791634407646972069811929951252279534999610512975445064247087784521826924258128680388023418435180442659219803752460870267396375145847202999900973506529654412841658268709473073330030538794871613772159740568070983268052944130978490400917949773031692296920657216134047466895752023567771811005014402035790439298165692645151327985585265393099989359423113462016289403967940278535469842884210461372070189082686875323981346694705819228257418036688446317267713266268385389505926433567232602533271753528722050182217877754456823228954161281193032035732488541266785543654270317561543933045926672856015467882611436514014664848546446778904988932300610467548407513218753867057072214340782747720232552328621368386959914230381793400661401083356232217978504743417161359883252367150159120409423667957092083129078256306824349675147916668401016602473932608785384647734472490288569029840737107487945001068877427944486833871029376155439921679631541689595894742222581268328804613646794766869468877281837858192791875381618329482674685030851343204043364008401668871376323132789535326581625696364843732597992981104069748404973477703275450245126254083060867231912517922754119572275710238248071429776059527330582927558067438092511973468006820931949420569007048902744592607327469547597269768572312182357828641273654945027156318479161039829706989099876555063019601493402494155491864403234026911125848832476349277824606034626568382551922214362309485141891875238672735525930274399412678538927989654199117635756110442436107227994094243499443988690490837073375187352454765724546038393162132086080314375061934929181135852753764235360180047997336975559391369597619880996581511129802105800173454484576539147321939588864611719433120553622610891928300397370353529408527534865764357634006115408913322518183628088187910132169249494486016765362667139737627609251389910625067113180693364199608867134159634897162019125478121591328104222522374572624313233223579088028511132862396420930560857049368202728082607786617818849693767887619857690339735262551430430951494095933534350444150683461199834949261113975673269939547539221724712920910045539053167938224362334838794279388608457128535830237021141026666409572178486585803638828600149865262858385897745312777464573976253848489382830723197571309251014227288838941925587929944012731527320179580237022806126948834521914057867780993878006352875476817547312262811618242221110753111574101774158718117348039375296842076774438710972023979898960389724075092719031954504952594177370831187872477875732663973559554005914563791716193932243741707278158676299504760007491295652980544831906285195227020124537618539003449838681389774089383373715093195496413906921246495535999257741540829464523453338937492312033704517775918638515167538339870538666503445462463500166622344546127544472375867738432367300482641658800636112981023921828223954453682255389931603604575667490500921139208674857330604057499294249997354775887290629205056399653103343375537948461475280524608718128928673989356529571482344494349673254064626191519367991390489736728797448426144532303623129329505377572853801535415074432005288708417634797968044684635108897842220845743824646583623214489387578192340025259025496376979644907126334956498363018166544086771106559263327062821705737682321255627976233304107375546064076559624196712458542445925387387650277102800908273020450950161355518475554804835313781009642286557702727271230239677171755832190197545279072544766287054521265091075709060085350440411119395597123561058699116319765086687470421550839725074826089917448433745313370483881327468452671128156962311176870144361279694386100093000020208012711901788606699373878633060046024476457636206834253343867290771103523751874775306773161773773945098471492028288776234502767272611656204406740727369618151868565579990895361221692813193955797896336199341847242307346282294714721206792164741086411458503055670824268906805153985104177012313854366747429462791109435984822171635498207980533205711021327572212858658937573635033762843446126169552794758783796194684143081115420675044312005667594031452364308954907312221691251164148601288893031890733089538180118874758693217507680923034697207895261751625412521765782648329246404830428731892528259965017422042481972682607551383651744816770156881100620722895676023994068642198387966961428934137920475445634217306215725148682687326645727480761079827671615181482003159008622348302522815154876761877797984513315030363251758019033783968121309276673654844330429867569498714859202834273488888264330568217728254855559364899082801073521919771634623431493816559890668556954335352485394587976964895632809354311705233588646092652421867187317643568805860348917521143412091617212182570110202371825346658540904973681940726385273404301239774129100084656627923353434790430765258628424604212113894763495698378352964655642830041542010443617995614775662395978340479042592329748792293073045109246627731819199450749221677378486249182611763882854968467822854768884117574492668572483961213165073281673546797760709998116053390335168057080852481421476738499260727927153841318489966826753368636256973193553984493984971349101124796949732105080151244267458244943921112430542450757537271996694279352262481855558083445534721429733531704846853614478028658036326363165686126685707436405030857516530327543079993692683881004970409672829277529062396429702942497468681391261999200262217293881615272871782668081731551301903642708851475494609067981137931465080431614529145639813778017315707836687486435069953362062833734365902064642947075530075586559121990054582920915001316533117832283095808173623508264966636151731649063805307564933360388811510652509842553861037400132206440739284413639477326482169986455076065908882746245274468722373558099498641374947136827832421188293209658195171202914530682971607334474377456053217698745190996416429524294149721167211803844773090554326708600943536125699936249505185054933731521866521587316746340359459819734701645289065365594638956328943296439820480060200379051176101643914486342400560417799505106027703218481437128693611654290475616356161776748165435999727155279308437571386191262025271954816778775157358210699054810283187896096246631743795002859342774660611446709153949181936582936240968734691777823564110873761035009827227136008102130035657723972709209187557164840702389876747806047317661733025856095971547042368693062855131461502497632623541382676326411240420479104373827737676057415754560662047068075108073300772104894253553193575388478558389469787935908184170100783519579942710078494048424247270279792931312176948601632488320590182827589610150304560627345778941741803800324506480450133750186928034397574303067754253444072791886804749858119132567096336208007503831111245811705312834639930011378001423275226696848111926433474568306820986089881258796408010382317198298469962449062784954582098032586839418509514568425044223827069276327215640459056410706463492523094820301960148204181268838073618731001063943848081911542309250990426760222038843132013767341394322526929693953097862106229247991001254667552046453476276049817818811743436241796965458397445966685426630285841817517402112978291625297374432358821791158493133571903905432881374895202093214495209700718775658142418449242292857274062338955648824140128197994060443806846528283013853969284136296061119323603178292984760486870362021336104375624655281611826286849402411674219250662190466194762742915284962677368047710249960227638004735095457029682007636866482653876159272705229999749423317412257860662919194727539885989937351627873622353198846013063746338975258518507823103959445395527782337017013374776886998146017852206564663758629792418265784478529245696559365793223270643042392153804847516065005487522071351817123514767685961134110253221466974151399745254794726548485134762002638857283055032525750927784605740977883209440115847172278968904039664823853465133239659859755423207477328502626131691381686136461853329014186574476019966043663139512315550628249374079414981485730257477439367335639080485504514746108805091390261684921274840636885279431053904600225968888583781663745094030335301287238758126339127591966927732995141884457179595735406724651296545060805896541633676105168572669757546531530489084180098600747828128157414708735508591005984499319478966268786028717842817096468676129853706285399551759891891613262805379989565717977216238829095138670134840096800238236108897981540331215529626805734741160989015253043237313771326515184677673691637049801019964646355982301888048552682514663179930614398165889026782470633807122843784090593311126424699712859232337031095401188524011137906259234404582370026873076134103260790338448529760452310362127627576798980414162201853625488883909138098653563737815332684509599674551158158321495251755979214455389544231331298114308772466425447789572811994204048576715993710865927856918576550261839207220678107263829102899295219977456004897979531243438308600776099025269972149420692965295102148941446697374104427848810596933886461325488014752229371342521112516930399302542982597635582032710172177648987293680849919096753083686216667137608311636502022927546526280145339932017715817309805639387431800956026534511231040588039615893055237689440260963675199088194279932301631612832475499566094853513399450887723977272384885155238952474559496447269354908873384862692094374951674308661386158948630432168332670413971072517170330586982521353299852754758525994489548770361409580459718753953057188795877113538004444434736124319941474492751019524981011267717692969527451896230889775165840506053607936956564839776660585806174596070512417640474238465006653595966788688799021780003451654422904380222830639098676711704962542207950678933165367092420912676948382507253072200831496233464522057629965969426906691643584038218073104211702973931868931821977226801794639936588239985924235314743222361965174941651617729300604070553526876177235214686027030713651561289350194129580605406674294724632755193729015363996361314732105467881237387614973797578639709691468280028708794533678196279756310484258382563321639153841159889547298316961721588349029285448633158947961673476070394611694095838854940978780494403511716618671312006534715726918454948516474139079754493815349800475789627975959068649344002571339379877282492534757618524345901352284643275562744476574774485120746726713417173619464192537130133848349715034723009848065829720753327279361449423494282723060890707578534662221668606829043177176089323593868310870099295990632537703889434930483274511634938603872522689393033953700560480374584488530473789726373783302267965564123076941353783437768921986309577795960622086882406892257763544066193604995352539889505999186299642063470025003320226917071196431336094318428439623643057750963802722492924717538152256559523760517359674997592173206851062130715206074033584445759350337547072257346158885404881534229496248974376302288925029069281584743057142948864823771806171604626835849631319012880432265692005091915145174306638263572521375080611113657172506743635827895434512496237822989860610090821641087986611288105418537139757134375379962989374781081194337589819358223790297147336971284903133081946995966795792461137549531683556273346532900655604048170683344228151070257192347678118330544936303267598473576400457496160924677010588721829759457020375633807157478106940002483778888171699036924847005492477729880306118194771437246039283694109368802760594560749847939681222109824397461533763258944227259012041582641707011251735497232626929177991968437378475332737272507876147406821628398891179466406826220930895039966947182937860332731757780421776050278397478201722468339085068502245172268539295846858357779461378500122243136022445532445068001463054786008330533209630339593460664261902521988861583583761868967399934238946793280699266090722143315425929615274279195999142504681956498034859668836864162271566200269599823198120647683201336530940086958140706791641402869417426749875184953448364918826565687835621846816998712361397696351927901130915049504084062720341861146572793965928089067982709235289898908819255571446730287688773169547360513748028930971086202375426811572199912882407984954781224113686324922613609907490848593635942856961922631999799102751493702822038613752571652127761360944923175086470961273083111087311893844335688265556493983813296623853199576891150025748765409390632625228301064623838239253663746990693869271146393413235150340862655263947456915605181606281497663181032702265549028903226553691683999068620672751833770276115446289016808641301286440971224906938213727388178713973943144632804539353865854057385270530162673840064829941357074182938124596702059560983736453203275560941073475741394526651507056465897873290233207506471073136724878770295084317342414850375589268662480495981253093746159616568908802165214985426514456395069626420023438925742840635613349977709472577815987370561657878186374397576507643682512745192865793941449748137078387573050429431722365796236221726702388707901546566129055433210599614057570294306292559485239682902626347462298262779049206415947247879438686239923427130545365348722573877940463554368416946166208970301620389247266972427197343167767308260070193915163304742410702609067725201610752939388990917750858935025960468013968558093687492488118375195850663401817139963802075205946797355904818939538216379803643389350829298128274133525979727099464174234935607251642539813291986499601896353733807365620394852028302951324044709522874887307505341876517038642181454369750218689426286059247008199234514926642333492401882928648118734765049046637641857632616584675351375786392122742743644143040309620614138690373939392469502238027072233424592530115675158508732900666299339913496137132617491165495715341979507516501729975145436613938154734555542107050552525570604535120720531311697854687833249681772123767859317773832425907834778528191340960000696354727478546266451511885324757834264302458941927096731138102699640697668904950920539229659024079259676744079790761298421001579713706675997811269005232795565353854756097692115136285725701713546887791899739874212206973189755842940340272436435102855658591519376224543925685674139990236728718873403226093653620541613799378988942809675577650884211956444116811920509127713048935879881413402532420898169153969435006422573378744625237178447677855787190981494250537976474517724051594254468393240334734297539699897461745842906760675906381541685759878026992629466305615935800710052168592784351543265433313456781713074267548597144360399840105246737245453152711461508218933527807133843525585049686531164038004875494796748033517425179096002734567803781063402415312291473025175225271370401981832026678148251718875730044417076692974344566216363695436600062879336613392918671319261507408051768907842454281167220273684327575217819174714890344819000810337061242298066894890782572344338698128763903519704299543296414543068362062119010601236933495795700627638547129892264088806491133893027547285854300223306380676319350471916080051937646169856731047593714802087806686474586413538349508833667145473464656759330314698926118167014190396369965431749069004989827816039093980610537834205220817384020921452916902670428023488263184767394142605933267312787235922873494816422763110529321596358802865594539679462608736855600712792558683657604669503100539611026587659890047275475130969601840155562342545790215841208433477096071379335092862416541120748674687612291542680940028640943189174773847066461186330427869157540000979925890534924604985899423054153385932228698214327209299786854200188786149540556012535735075091384969443169000296639167679439041210801068328162321881833959073066137256312195957238160790139635045632549106251511960561013795020808250938383858945481134260792500651186273602641575120937067185840495691579936507059671702387102272426736672890394776189740718620491333818930329185974167555628763209835430149691401813373557776616826173437061641110298448068938845068783116252585873468844104588503641903214273311193150482402643739728666524232006026601908271578921532420966445748181559101118659679045359247216577373240692765789586258584082698669974076144641689901488970351961997475355811457734720402674049610733730645818409318513227459267613215879305686502677457537257734393756735454555996372831089529781973136010741088815190957723084364498490910350986376935240164397149941751283808321072697258345492051560086845292352905663583247343412217131710391846831044190489556108888098584118997498238900099772027271121157330613080523068619659412085746891510291156111148318711967539945751249288957675692955150660417294598342807337210710662938482935448909553127959726781259962568979181393827117880856732300366077380068243184791117260107850858064260302684763247717377081800203240027818864659034494755267393664221913494534112199848705398255957575960641941062723022095438250031226569440771038412798015209519588589070286234038070206150744662589921160994595975390111140802918759818744781354108716600099412159704922405897465782440266924415159382731579242690671170976582221819704374734122444806221538066844198824198666750251168496708004655046656741088746580199069745043526809199798809415351662357102860765108704682733134596378423306268090709657475580174701367001763092799591482328619367709471156512520902049589623975527057786313821106138715763765617271579603339999729490500334173113832362219550021793281425033620004906433806021619000025342307681308191677875005160207067862374236858733923836218835190375802050288168416566239508868712055153434294519592720021626114343690532514301016635889670377723693542144552468918790740278549302113081560245177508193240687894498178405144197536284609697644840845644762628255843017497974235139883869374570109105493452303522969340779251358323590778528457510789559310412577347989331446829014048528625827669576108376542736974763986762944854364386672619831911869940919962252976362237396560319931394228971430410500609179463045577538276917987287066872433661705764695277156292160671540177846646433782509269441445022855544817542618803258430313791724970030879441060093620935983916351770024142401824348916936046607821483807659292456684772326150668492583942523630099379743085369422491809075115190813976124385226546313644249899227898423913342684049583208376697057091391740225069224324741494809536871343905070640631610288417827822937033332916701305207962270833134114240465617462357067592494081399331163186496106844864637842367126994120979669719058702379977331121588362589850247220848704878364743547154592666352309139895210840270646428332386596370322155626369342038608751322203308801461954431042288665665282153129539758385136858969941639385098472016606544112224891319721890347594725147612647197755098779368340081711748941579003836531840275067283953711462308339606830185117264406308041992825584916446931704078968655046404659187373571499742986146970815947215928556671631712759372302315512773601458921439374013327659576442908400483955761775811106170130561393398422447362261530751754428857484266285903120626835243605671238258810599360030765181102229297169495759640068503220414134476663800531011995022611449031672095446291894723482573283539796484293879242703472066257594416048184965882121906357472260752312247778856159305434808769068803389128436216902788601596319990065296048168848303423915520926463438491955763768466282539888708871065849860612627423361027779937663145626964812986389712052650232100403342904122660424352641452317441103933660392340498537830856955144318256973997081138869850577488637691631629438608191146304870864682275183751972551046197495651801609727196215290845109644390313048989199602032774689774608262353297995541579223953408791428805351776273416892065976178111310950082756893111276568002885378675948094103450488210407995580180765878300723536251588233894288565205273590777171030707394245960927750784184878049978018841875486949404415142877332116531317994977905026363279141817864909142217461718102621917966529640281091163227015564361272444363179106442410232254605187195103997813314367178666085934616207626120605588449730201635680828281147607369614132387111516340338635421571237745538404554646455368452070663835739299788276293760106050641639372544683190338431833845799160331147078860959920835493837994493104221583194258795022084534246220488139169151069926372283178952741112159276642404357904237254350864159113059671367372295817591347506955403118726969084623866007592608253261150620507991130961710994490366154896013296498081014174259183286881438813481608571605357527551734173326161386172461026738105514389569715555354694566860368164087081221242026711525877182670714782402195144772150552497673114816794755802717853796232756892096753608990839335793099690628827382594596019388299905215493193072298564526621422536095618193815761223291019468439762240907642529628296259395646891370926120279074059064251258468780289814402358843910059843927084842278001351641893983392421696576057938177429607981901089220581727712609699230617217236671164239230660981538849385901843866895630752285915615308766814095692304821427226440885412521496980984888379700051263462603696683842810176390222662627569325815379530390358172366788591260229912150118871497771603687898448949168687108874717658272098535731066157648073531672708474423862501716090641740148427448397386288031582086706905266882809413329768687503200025847748260041075926523375364006940842831527542485509396123835314689197440507294472744777885928251891679739848199156751169314722539975954151185118412913273084813265304653097955493790088596313861782784726371426058695730000439201741392893982880277823201624329277025009317802599960593132526985183092119487356268792744363645550177251185522196767984824839031211722140304776513800318052292552555722152911834719432060912856565717203421399097783917910781827212278318549315783915133571149054755075681928579205050757193017313905889871453822167246644965758981954390460041428386077683435527629677818970884754773250986416941820355856663532155215374680085969647778669493321796887352266116510262698738989255071180771762923462235997603953170418091504007791528636449200641135887998590621459811239165719256608905381919532460043786783689085792495049260063057810493563556345543219063376587369757494305862704307792531117862993257424317003154689777292431019788761562761258077153907110376329957567419057734989532061618875692488733721060765402226267262128906359869766692814658847678195729134136566279323380146624823802868311006581076522547448042434698375928078989206279616720102857400430239707089554361815405249108240455964980656382807417893767603276218898784949716484951127827663377266710919672514708301830851042318605759939966540584501672552570386063538794639531960912320011013786224200555879456328444128958000709784252336531497977102641827008112901845476205651484676295192714477031519464224255026818510095441433113722561689735325087969001256767874663004107216862569404851369181013047715559318580875459544045784234902350577087391823874235238553884762218023220011716142369672671154243153409883810711364394841076858107276316149184505693351671621422737189518514078426743548536529787237970682584409130509941637090079458830165537492262918097339917103075567703800523232017902121660966037372744475919496874848974604328551546933300975328646114041187842913371023633824852535604154434974208233720910500245004203358096386049594453727594410964772325518714139863113516134881512678435249786662344149500291788629692141722309734166672632142181177664685796319499178123235792964459219057726252312746284802789075889985854068186951298297630531053635762077952742897731415008265610036500405620707401000517978672360109875750527681530055931973396682225050955394955290223613170448449651642729057664709920947861920149763205972428792426540748041471475116143871990489126675658808906828552461461361223506604590031218058182953540237694376214751816253146884659880597753069075227462129203417550585217680967927195833234638354919536035772865565340073575061022598949941925386800907486895558878337098490978351825017262783839950756225581217532177681170668915538740908774955179302012110369076625568575408639974755427028192803639179558645383531970772489735379720545683794517030573531121030370867960321519072362044989631169495093922488994366548722292907028348431811906052054735313539119825918256056607749733980208225293909931913093555877521032594150234557533182110171164211286307951749253291439793806823919916034235459201636613251595983032349961588797964569507894257023105693177323397916303725817286647475441277427908860105104193492988648709884309510033908725870740631130760524169399827357339505720232855051325602923203518264763233040118265774012035636357947263547594323618130857890597261061401596022257464632379103176701832223673698108351139273504868189749303071675540922318116314585342734491165942461280807238860025909274343497175569061926231243277456985026491804874964489458180001187931686134861048964865743719638240268065723062824111479895999922268305028398681486078745618812621737824625544026698552159820217008837296701772893192265439562707372301657902337352318797553454002963194424332864399619562953566023718746047149043444141426282040818055092873100365101404922480998321400337202332053614727887468862333852059637695522368764844060241866372457189839887191174292749101150007373215101689671433744525358528516561083512116308431880290444134644738506068116773409702361636763384733521774070348473140508266620986047610836026351401864696216478034648811455887159615033020110496623354911112476383210558854815058755877003499876356839089852890085081266469227950143887213078660505660664845921312893726735145895632727156288965090382717757804908473915936076588488884404766987437848660974218339871430811104003832064902397235571567276086516684660696318970904850129976258098256186121833572731258072355398589350487848843709942091492921321918484080516911696925645995724071975138733278520271651694738047478581180813759100133798065226352232136915090879684474459605283586551526165176187160950962101137735901425155938144792743074114582724346165958163206242692252054052982551784299366938551160378293985952979308654723440601190353180535318526419516907446189812583954511845801806231938932454492834382599889583503784480885799262868730468754824918734477496883433309168796866019889498973855864010301402324908853313565724216822303554288970547674613915536452495944328021340361683867659605811069417226325313538381610144793129795232595177712795644135990657781924093548889806465008233652590410661570283873794470792131653306020017738137940821199382795907780307962634484728233028449390673972711584197176801393242135371727239987838370852818680570959508264116627888042809529172074177333459563794210188798555904866363959143409850615498196003491675611247639279684144533802076413802446331560177083939446929001641835289514091343588231544022118044530036328508955467607859581320710868915877210038976703362190175386753556296542398416424486256617416117909837243204460182233697378477444487134935749401601972464198623767717634328961063247077631960543850692525729493891734788982125640902581781523027637997191007338972087319867247910425088491839523817305142642679013151395912186420034193200889442398939242609593946068276927343716623130105314254874328614136572835474409564620532212310502739301011460353806369315075772259555079589519878439513904968319392925250461220452570690888695481149115597063339013147614231179941870470084592446412687445437843315110346699280124138144054044520973339639935898226843268633485715838635327009648532028227361457242309599449-0.6840003894379321291827444599926611267109914826549994343226303771381530581249766381509598342127214786722379645160914886099586780498831455794087390519118879988351918366211827085883779918191195794251385436100844782462528597869421390620796113023053439642582325892202911183326091512210367124716901047132601108752764946385830438156754378694878046808312868541961166205744280461776232345922905313658259576212809654022016030244583148587352474339130505540080799774619683572540292971258866450201101870835703060314349396491402064932644813564545345219868887520119503538181776359577265099302389566135475579468144849763261779452665955246258699867927165904920865474653323437547890996263309008000635821390872899085050267595499289350292064426374257860050360480985983040929967531455890126454745336170703768670865452282230609404349352192528853332983902723422349528708833041166404094214527652846093649412053441225697816347825083686411267665287070199573408950619362466450657531019167812545570069898184092833171458371673459715169708491160960770306357883891653810660559927084284702473154303800276803908560080204997803241058414188902018357202062953241538291682279694273425344152078464081415568796898676644302192716362493547869737179550044415490856733921055566920810756473882042278969781483978754685921758294318270385312597177598977912650715548994562461701155387910915293203937031224113412795011203626918866051935058462706691349258782782090487173160886293213532741015193074015946359900581041754743006414757767279552874757721127473302391909001020857301979998443800350296140928027504312555659952162004509735616083469541328018864679848904013763749245145083480828683657230926714972242881128391905927058619341337570811220719679610063226616599209465546344738445508492312668473576361960361865867761350823555192639943543233585534087497041759029626993758467582218088463097572716799617004115691761427945723517993408383586723878506409206857498083961021108804385886289809621096056449794181532030408853682048623203792240178691640892954680477369664729464534605049753383861368728168794088803694136130082087265519742350462346563827557493152529915275745698229806703274005675896677393179651590932435596631191723961178965702778144673619302209285690715812461330908976401364451762389965707841311755155026890449172207186424419903393297531210985679815600717395309988332732114966353886385013946920665275456828770430811420570295422057833913578509711370187213737895201027928279704022496090372992444956438321701952229344212255808320403767973864244532057784897728752425696814428799979743784418464234756209624465889424893347519478530754726586001043852281370363876759022094884620255470779681945868910307450177033591898653443026061784642073970329301273248279669925337545432777974253965948876600728618316291375026343881266127493620868305381144148602037882615355782015643881742292169685251100257314003036084930031006222213378446854551390806155271611694882906918012353925149754299709393346660021006985113957671154138205586527622261438101543484788831567218113968977885654239745598047255105161725391814203742484737794050569337262645660572920374774560206301346759477127513346738551289796020614619027656235869737450951094289147583313232689854368920028820115328382396148720707456912778754333761024436144634189301275096085648502915722794674525356049528572299425320653478123518218667609673560441643663156109099973458638042452331341734355986699832691296750964486191527930018108390805968637217776533977051971317785995299739071473919908938918106455964428893932377931136886602225646378042155650902496298184454159056961780391580639064334145441727649386569111646199293669804222521074600202069623482185942532425920373437286932453561788532353678908938008753334511607789614967652468910917937394725985456544089195730458627038956509310249278725202041149950371824643893367199021163768451008789069054805548171451992204252373000831567551131696610509246650199185045183881265677651980024331524436396025696757698580727111306895301941986775404759077447404431373682253622224601841497510788562316524611516918234297040305651250947668210871215575352548639458623304493747213874675430265080931526371050806643591026603147327405605546482921987984219031372500504205416369526466217366561163521573934134312456664743767953576184280903039177496764573536765983651165178775427796272619578730778712993443605693091416823709127233241733991438375425886702374264557699544710292079060674946185418193786977056627627027078802949028773560425975327024157934271179410513965666429714819972911557404721779568382919787931030401113263179832281254928120061489106939935041513328780047558623333554432467095564905022484014157240045485687668003058130518698366256318716772605756894341912700524958548589819509889369716189263596755949748386403004202697889257997582841270965139401625440728647282924802991382141571861792265793696535146013226834792405672056075586905680311597717240316073851686087380622680428912071672500248415364973496656886458492049380506982345038591848532389293068889592912778419941932025425465989564831426878157634627594396474767491770095983597520116804628856223781839095804377676053564936544223884668122196848671682509221740401829372135039597970097559529402135186260420903462481979833035732215390001345122976439468340470637457354597759302552710450857761328076252847696551832001202741909543630779261899568957425402243898985459653012852832663054960097526734720580939856286653186986214455112546608209413485628583769514812157954459639602941030842046628806876486674065540268957460798601252744231400400376145436668914144783486440488837814609889787615653031530510135162010168307692492588656105925106966739173616401705961607890091184950487174284833273135306249227495431393154510838784208641651538848052347351192014667701637188717387115468029940099461628290110422373798437477577402176683638806778395805022469064084684509758996694452950876996355812464591466686345437674196735304012948700892521610251401812495763806738776133997678671639057603823539450508981167567577911391399838301473310194253046612989433608640603419302760858685509157529470001844911426997171906485850943927495216659257490330222156038326626957916120800121439908000573675139323104333513251217734608718450735567571726154587896797241639077844384157842093068342250275008513906404811819414525890994365555468339635655852895860437130354943658911951735248044926566371063304082975833010327689997454131848906183292376637545783087227878565801893058564056636670325257902635109560016166476909320361304888833949653867863387678294603328166017785061724606619576825840808599072240022248304539414450069201210702261308726156569678513554206876514475638887756282642448385794612343962430908798934893571148579509377078937221286978322193213348638500012861195269627207198201776222366303402672679958250876991299565834145514613232498095076681158118269172464770470727173884832386218470082489159822464647221206052999932139675628866122733619884644071125488951371662133286857249805224934949523164576275924715803707776465041198329222943266653241586024704593427297648408438592297705293540861981834053414470402160749698621903688398436841029600876965402121296304359929807629401224301271109927957830499076277649856460797463136722237512054718801689105258605493996615522104788816984931653211871840642180597597586256580617928863758987602163059791956427259080368225054111204950312758338271774190875964805088232192777553809575990331721657024556735080313978893000558292103641252365450398005323506344732133405369611481643519840324358481191010323144877182563248962406685984785613901796579558710942455023309265711531711869173722018972579128120261657844234665417608549076821932801020614726351683551597085419653962702558095698642242573389022273220901006506559627192337522018003317115117949459903508690924725486241074444513761289976508157074038385269051362023091998242282144020835424559914342338754591639530599661751533995430666365102324143079445218045752579727615308477279458013955261930612487306236050264243094037447304886146211511577852107185483010508829995077508623861550501907185863049108652002294075921639105924486775548849324002166264000196028026437485640921243767544576414829547954442521209944001994150765147229753933836145419601576472360362004749326982658219409044195398006787069635715097238968559502297966416538059972415374769722496153761216452054792090398720249614687887161956098325553232590914613031504148414102171294634991777898513180411325640913365956199568181795827616561997344814832323892530420773608581967888177878190189856779601491699097885079309427173000079227548249157681665425614991598010109459363506303612559239674347565909511331710025770227230719402970043180346532850684541236427116416631657002377604601863882414891416373858531341990896054428152423846179548826633234996068174490771235425574593554425139725287145372228834145296355863093824207847164460452320571243801802869062888450071913776526090461526266403331133783697195520099304882277445346180863195637260528340479046055828417387030629115516735631846641566534881839139433642944680487782423852418041211821695931925048254063200592062768510571345574464130183364892793384593305591300595119705151449031411369581162622769293545563840399381857558884182766569874905025654260102575860880180461974221064684946170372492584429206181808907053023568829384439847701503097216283462384166902649352487306631281936810914811652550331016221880186743079957138400622716898603504793207505039094686372279425766488110125336352403073403339922901592598203381954027293022159039100159820553901324768985947681112923096540443242601080781433975806205170620232151271016903139791499117108392234795730331986315695890163886542543547384197912693752616887981142000734397226499392417749896327577184916011733908037083489999765789407253443744555571196661871244914913065750427175952273624293457136602940173158931001755991979039297553635094716130058231525264641987954972366669334468833827178570601794220131916302674743443996258982320258449735804279557993162986407172942313808965253898930877041601691254989341271164042907519205050209986233439257699293830765929031364921006190880985309269751178758929734741436024218222955921760626896689606408103058089503912699537615056570656197738181945930053955762618483813513710294705029246053155175002306504839480175225241676468817976795350434054821279817542880056148488553163735699856738817218074997262583432304371855460539547863844657754182971396959556577030545699238796885704062105583812741042879200642258403409583934648971687553580256057350594468444977790852427336172112539166907114367511949978918187226701657100095253699534548781205654161021640200055960535504799499383454631707953560477997500727479417377428755421770669199403804745162079006624223385222127453978040392424202203401050128196860754735758455204203138554279541289833387617823681090525840779706117335695783922803931412784725248404897640824566114400004688449654335840294133483437272285915240856287163778807807248320032969677720753756068580809170412985360783584265899632448613731568951853518578872353140702884361640623860789489885380833134930208724175463142989042819927259378008844777341877547134599604082712549295429326547018207602075911265370798819025353558997033854904593197124548551979591740156047955949053501411085254223794936687568208859441544614849553004865042036272029915812768184586234822834743596163978200747781542612718439911166474008397072816700982091786170948369159082092890658130404879710044097885365418834610300294407095283972712665648526952205435002057290820711359498582675134990429004800929077342543523446506866547614712270480107908327025182270660939988315644003638176270721694208806903477209989780885458079283279378615267101665748566734201401611420028297247357549247232942071399873690564237782130103261591408212527826084100764632242933055317304295672019245017152811268982402382368232988070805501905425153136256475368508091067830997227980474476609107301610163824359642717911567384730967387701198751093092862003784339017864416944852553814291634359349775860651849177748054694609937011863201242384685108388590601189114297209335613573040199726929773194064590029497018048819646858344208310884242307732657145176448552198916299438472236883944093505923169613371633455111692910436939527993050294817952236823956567776826917381477545680739026612986030234863636738851690306166865789229615972004450179368712344521388939396908486322554780544371368965215153043140332846885837630035505366829146611197758892050860548528316503425293989523288488741578337327122845569483140784174824124462610427171017481318945384121534287225325227904244881756279994527354302383064806982183906183497838620764991263743036555197539675562812421546422614047393216011271355046588654674024784018868371459741496408198301738484710144463397397959171200730818849194735862119855649481326484088824566043002451258724752368897476057619749944608571812863614684229696779312592180614256345642251044107179103705891791402097861926450028168479139110402999437733067876693934898275768155590597170549327016135838260919898935655260182320837596331989097091385876733534248028384458767821469709226754005094936638268371396712565173516287606641336811109211653361213220081250843765212051855508855643891087293690081008033176021865127854355727259838302551817209293177053259722917689318252611699194839418997634866745747078814092468379300422471136863436877584527826089789832236921903802326191055268325091750198654756119249596345763882631358254936615572129953911638929581168739788536439586375564154736211895602880915836579893694256518291199160407781994992008622536949591293245918035011362779895993588398199999414609491423841257576823030458847894690206911184133023315408831553083846381251286099544540932835374057423278665628027476712051196662708445417565888895450161333474840230400448999793232707974668245691750081143309575668323188878742838270976598641108406468251509701862270530856325812938778588774853530424310236120206677298483767978435592344244574707731148315670099317149963815831565980296614486690736166927024052934840546311298673975389596672936089048722214935873061690661583958176435634602202131383944287000259060090682527406805358392589158625078101135355748496451916790515306727173024036727816192675724490485266896207729565720817745253882552435795704040751369999058541762718017636119702881082414544153713938551297102114695921795655289613476788829969880672404641436946644002282930050983920493182425295087558538256986646608577914349513919481036959816833746663963837781729875732221709144756427884379051003697560903701261026545214963910770504011719874419187370539548449566436927237880554314649259918264083875430393070889194011565414523529430555955707663685568510544646894390690532706251946657607598488249964119978451709762231070799895087836252303928405625397791486091726584904287480603484341073027193957823102751140179592617502425257280157582853664021593946364738120297299240647536853819813156854592478686035613302403294358109120992168768767478827969006156767992615438471433176604117275599261737070066453921809462364916264066764258081042060368258909547820412651933879492348288824614535277393435879931782079005362201867451714282753802343477954806917322438262062382235213990831727319436983645485030214390874905475607444184525254383681858670951613110973952571794755258962391888541330473461571676300833835472524142154804960909773907982864644849548727540516281217623992203141778040398459899160842418575247983172096719968873209752593744260114861676904266950312219793939942310372598544420708024222101365055866534807090598482355968583938751797637260681503525269378797501998729234183112055464356763326247250955675329143316015805412413149808831257405411635763240567903593062309505216942753550007731337969955700932915325814420555517229529296990975191750497872197937859699638188152544327907072795412329393897952417323231009958950299458064875430908703859926657292760563956782824435938499454892120526460960506187362839718117678393585705233091743145316450717904665802377978499473471661854909756569461048524980897127288060634514642899892886967385655117435552308219492642623601890122632266931794039667818349714755127643129431989981598660669144893351170028271602122739029326782117095936563930463587149027917561271010933371250284432576870018625186131457127799991032336174891994779012759309336379886406203358460105532213183057970505700529800343213277167377927435427786082599810554450636483923879691028920398788144292294605044677192674573708034304525057696100867983173768955009499082184062499091013714677899046524488016226771429115319741340252575741605272730130128923568791644846167285791595845248261598980948960292278920521383349533365783080274926907678193524183728764908337294115764364826440084737674265861004101120867487332344220743543441519682142488141391674106675014860654680394085660753681518235409864168632349606625919967875920224160758420053704908018500528439516620818917074718275120385858364722343466542374477847358245640380101632849332825490087823926618485547688075357754626268405216946748524147357197621393723558283473135914475526261843863470481631927173573374443080337499312519046253154418191076108478963758979251605601923185729322020291084695481590724295074677293623432494042347163877380542824229221851668093769039425876791762622877159908603483788831443089315331526306351947345425618968694643821071993712480298808486281096851668702074875513871802232659751191577891793960362522157308879163016788576644374488315667656717079023967707611889655725675627655052765058498041676853208721480137270618067803191885225802639759873501489584796670179311207741567178668235709288439370812408686818268655221127152717125004062890782712909869827023429810417396513021177042405079812475733605738290510092101249936390757854589585133912437096632108058406628121285577010282958499451324708782153440055793862600164669282557208032756186629540045108815995274346103937170566156939861252959874802620854903108882328040813538282446033406172714196720045598936159079647246302853243862623660684290617006619108620454537890763462748488298110019707025917629556882467166146116809845002018138370842154361807427717969061809607542280577938788339275497125075920406303625677222778990154611267751315417323873985430059811038246681149906791141657469402281005925491462055393060769862420196674345722830549064949326635381707486814159865396300235304056015095715057253908170467474602538736982450383178509110737674419317025595145443663868748602368596056458843818025996452171357992529677787073715249538591768680167247379327127977435544296363726942438781021527565296782047094674657469418960861756391673804527862613828094457106190444652959049169104872378762897682461263682512121336758999400839504459373119671775414444656371444334929829493570319045967443857218021034469847490769773907985867000351549040923398265670203166583928320313764866178700965766829685894876848990543633288269634190385589972647118713182098044715802261750256745446340673137043097805887323334620064951989560479801680086712716406760164315032269914553728286409661717738284859469448514696413413632765091569447340053583548275439188406170742315537089990529518299357107534502794178655614482362941195811743082700239256081420055653988315738632682611892325285906359682454888405525383672850907875611444885142527106098230612184892775340453347667838443859624527617361460421753318761612240367733793767935276305163945624869589475259630986187223166934086934787465117733334816400244073764918919269645023716005747021275518597623049293688705630065752664679099894461123010703989015851263631629137183534632007126793707755175998238408302877123034461224725555317624463404219125236678771931939594953012830174235647484618297180982148944379122593872464575687922847912509332238242324336365658612772793720458558419169071236593082477336752299138559663316745731032375667555467793240117235864446792600142064372760671520107928826573682954883878924018038947987676611971735942041278051578335620858824685946178540003534086338152281256532418404307510401672126949167996727130263949927559831252452258110332984876191925938679872318167304742739362227402252737328154822958597152669239511674377769246458066627514613972411096056379679827989122530774174317775526889807017609228797619783585893659122266054625805362298125558349319692914487412814154667992133989690147246329552300236571797625527572382542282529426507161601176155825200076022333457411397303050779906180960124919324805901554216432599413974473163679247842709801734899135300042503614663727578815223072925040658215601960144080983383323223028841881435282913553931608252996319414449097643308765321879046135641808346472741820273739496313000829756288604741760757485806632568200144599920657531804019367367585986239698102714166047671774376473955650382369820844367841936295150860015260802104271974548426670619998837780269110596307732821337445289282298501621166303225754246045401133154531130402218107404387450435427348843814350483508856372825442582733247418976874267199632960469405351868448967881904264121846412367688912488200253525745581376615712558033550979499465573682499090733747051684873683146280841478071631513041217423733811825474605734381873354091307915927182170498565117101802849716192806005921066231747132559149247526628198838626363629734048594208902752185166957677800587073753211102164481179146984985529882695516876401894822267702712456175811233819470239663919518367994273206053002100391390051376175244401648195249485306889737425807421308071673533231874190868695557887635133824064253665091273320388688062165104254859438269337633005332838844968964102342269099754622397088668408044470171591684514980463210481350906614015580449402183103246437974779601584179473862055327755641408472061645079579543315721276322753356737274589001714055092806470534303864748510016513646490590490106130553481423747628773889311220878862409303059265312242777410506533747068522086711233517688859106201737699442422118501177822865867196096177794823136169921306948354142237333998382824977499341514597001404121649822883998836368889109887997433537844403952464598521720328520110058881853539470605558943490891857745737415125444190199206239186051968120304821078131144312023066903778495403973183736240530705773971153719806435887988954697945434952487604440428125131410104912297045153085527513562445151470713364866670738952650232797157983269298007955324116520776367934080426868527666311200740245854765031957093576203266421412769232851730698781456976907966022104616350741320364618827380054615019482866118846882835338596582147802711057134928499316787642948370355277087463987518274737889126134840095071344468146276770506584321100919953240176048402948685074371760729158562561991363268916659418139147541843662030774156111043819536912983156706329640527699876166958738432914376818304288847310676033062342090239316421555244640202471001912599893783437254696708241908857104005605564169521236488016878509182875588436227800173820799553574467492436400045310947210498059513882481817295533864342267527233596219928575258224925494878069126773977344280645732923211107340402028665420801969691065928885492550299636016328163174588329807636941559236527614953605936751182695175406483108675993628002048264942595829379331491907733975053213624389613700137692824985001464326798020452120639517640389809841795876337295102900004100124703894847579237995979335781066543829031366539948113267527794630192215595926431413928605058300514720451152463031860119835528511821703535248558998552425781000987770232248095336214441137134052464962961273750092237169485020236342346022023188018879163178254012892450993988172722770153080198412326658790025275742468403979401588441340761267713426944538401622962797192233889191431765969901440675269607739722266544172620057715470891476834489509442960112381591138102842784878432663751379273656910329299986327284989672782126978676806494885403805587701647732874463548866490061296822340113237065756105691520331998134322735901303931687827089869706662147945226446765435051397635888362709453025520539629726350735173898490951547400963930240961026472706740416759195190194002395169837643216426170981863334046886626784064652209988791150155957212511153732337023768385736433743396778905121903308459111742948965973153210733946029570158921645956707480694000091034136521111422807079254329521137799224053585115371160198463849664918262784345385850091928429485248179320156371174316436852248533181877092846237443369502915027028978544326431550962427864674030800898932183151421122722071176039229145136483104243082648479234900615129386857726310927082116072114494641718744986125707379007418466728521597482336970067378644379908652074695823062691125572638977000711548613941367470521252251186235252849575838184335640314354610356606907562132510725397329385075045247851393339756101425796830968809858682055192312398261243566436476049424299985789948446415371249931764617901671378912037851500170862080431416294722577011776567946371164145606861775570302077759409513172381675062817907221845441012722553942269595455732924997166166268188118282570009870379611017940181605254678768855244050483210572756362645468326239127458736318626571399258645850696079263133975240186169459467461417548347673393432744449769939065649085112067982349517872087709206183188376992843698902762354714762910510646823598507613606081563804757968244101001762135911812333680623278373762312378406182163070362400967886479630046102647012701473474587630048979402294325454846753315840976477069216913455320706254665241435497630079062097761199158676762317341400470320709841750258224615931688772050783526902052636606512336229283076393171273101199704902924250072493252809878226811820546879392464544131317929341720878741115146609350340138581825711534234818052458503853315543000303933446225378968528434696505560830029530888604924167278649349932703385195146499471337413762319780131149049574236041762395780928715208518978634703056460944603294119285066942181548034184957277218919345718755172339035998427139256988553360274872994806540665475351878127208254170145314920926766583771776417961898150519239232024379738107703202746635669076474606047971392674245666102492551232414948617307935919970951709422276552962456744989815210294305666981238222639741946787331393218022983690715925470201294601213475051824651404177714617563660177694509124496002785074651372194563326525685278690353048653193601923141451011139303056754357299105804248624974440702580399314794695481776698917597990392255238593240009379801792904045965902049173035779360107643633634580384366564818012549982929643979893518146508570200595379831259421967343622676900275289763410166278847783880887621137950036124611607748776022403371194253257781503139900015074487734358107774395240956685815617510658189262886503521381123811399770161971826031255503244715699486631308164358235310495615543216975159565757299173484574374381210994203982022665999671708661857979522643224704631176843076079144733355964573837910363625355108168080698653934261831259612116040977252636847725768260480506837523069660497657217959999717850592850315772080525523799580001453856172580293993457582982035746118919622216251379280962474483931191683995274723374266402710466885590518000296593922544284192689681791546901702814184173717413343020567149461249079916328638338390147578475914661349161153391503787219414902060353035289969546888281735283488897378947232749500676118712705776326789433955742447930261607779844479828324533646110467616660440549273673444112267319083261798467859709209012340086790047744417496289926165676491452579656789594073640717172364478827813531493951554659309381767558508836709547083304496550640205090357415110240775847802841904596869010155122650948766677579246750696077814994280813029795348808831811395030430058049017344904335039805342051579251381164508692482423387700371303243513403874382504102328555352511522850954519890750201271871293000887839422314307329805427388490172240422793461021852360966297590973675363953695241498798055173638358844541954929446235978334157364980877395827288273114213125114826902259085482696273451154138411087747304633016979524910726798839387584924883536423047733601581963142434809228333485395818043222274246707280373767394806255738706131978972143540866599253256811699649365023610884073189394510830055278024768078176587694550562439117623760165810991100577703692075235065992090034482201284374838991598839428254599274305793648565391828376026161452946746628714514818085958608460044506002055353614437062131979294613421449289017830275685290619111261853970032269142285089115749190398492345899989131328811143729321774780055783234417211968844098065021690391881438163999229655916718773161706924783320015567268455381780100906353470903171340643505959230417227058684596556908234150296611027901509236669484466512208705061951581109908961842754876212821761452492676406129648302149373250978861371268077374138211324593976868748800880040926230259725670966343692936680114387638802562092900787784245383718913632966667769198691602554097259411749299153276755874509728348485995260269442264281009105249533580630118272469226044085700512874158078184108157048249031985758540498229551035122199035570318925162634640231753613336041140834356568899395440589591780029386320997187397528797121403484412760273454277742392264813086967812258893646513478034421934900902074865939279678652825014957958526183589204324447434131295718235146160427190567212573485888164210973236212741601674804177496013380850731506356636049338401971253012322613826007780687385255555416560709484386005075269031197286193570038381972436436626184225114045347355535518010791340539417880060251026437811533526666893826340378697309725858620365871658075859565440444668816535106200754436450051025141442353413282998549526411308365139177073044481555771664975064354517111459771179483130041738814554161624132909810836756313456498169023543974811534295728437422180559542601090278260681202461735373253462990160218268861709927810362885718802348770679497438155374566997868400200920314542944316295468007992283909197250503149500349633307872735054422235649513438770275012627736110558760582585802464975154231741722120969010045855778715330021497535686292837491653878908950042055195048572731638095357731994169038474378635510224903591288371831205979338667901150142324231938005212317560961275554081600645862750621961432542936796391833968207396806793676094968101061335939296840979418139093803676399551141529105266989317899911414184090822011670572172710507310059433379012154858276782655169050088499521350562699789476869310412589850415510841228636396260974108199792897685619070332805273701401060877648424133632445674659152859227540512476528543718397343159729269885983386034021535231044182144836920239461850774546698855179152176716469791956650224153469538861871570399895819335421362394006115974571319021127165384588244587518847010491130865506020849542597412347069847791454438557796865273161262266463487855725825959003037078797396695628846048892538777106433629685800645189810008908455546010796405568480119366020488322451638582188684885370388046618086494067975520338774469312345665917292626121427122224417002077662959555420746948494886635670176734419261215377180906996245886587411796324609645316950682928555762606498719217740853231740086453878500713767847684226695776999382803539887431138344158239400664553303394743747633496976893657063374065824580265872290296848081212026356209634417422176625777998411208248501878629904566590231173551251351661887885884148384242089041903843348492926379616346041349789894354776570508990795157707516049356223259841338526168944479095834536309132507236293211764439139217151530580682926103614284971969999012852676729368919523227834903771544879595503942769484348391980215895332474168012396180446972161368776313313520382562323335562715872297238851178031734302575430314088188517373579364196737268980037427232014755480244867701882130038055140602447731694767898797875953897480070133718048408761235588153463990413703352038652901732106460212600999023645725646018576534868152523807455294142248505172054650124384114864874597860737518633217147589677162024984675814505658113656516806202808707613362465088436281361142173726625048650148539702811475143447297604612575216691837866264556246134689091967417245500570164429011646962988117461462690728448067939338845799122523526064845220273333225519591056112478135934276613284499106651682900044975956610619980808836935318906982352985913265183747815858500635272401204792075196087724145883276892232662112988316224422071903222940394603080389265042301009748702102766757190580766975015658718483689310491428044623536351950046284083642502545896414083314692755336281637057292656344742268376414409453849633110862286689477543266740039512715881410846897960942700939643383561734357249275714184238721195047673641908092583222212066566260121200464088665187968619651322031788300377920056001364800359089780616627712443099812705385446075897032084183077528381195483118523313444880355253559923781982719245698478262091486152936843363749173524007074093991061417020061640141711950740353428684467073353779754580813759447929405216821965677166195795486694634800122433494451234368796966658299057530020194999744334320339441641080100701599925887413782062292116073678378675443128650004545762066984254786308056936713558526291376574240334780283018052780996845417973502503074247763295044957191569026719775236529210288382266533179044483516655064333448723943167005657418921948593938665515538199867441129501020575961563195377303561930825993688468733289729387992756358022590705931478112148319652427766942860301133591568888531353932304005138333467899985210303432229730535457033111007609449320762579834888409046268174520566811485720016294208839238334500620623481088759189348847700126483379344905875086185706256658905271654541642798038630831797537852751121373833125333871282181607125589942019446430599796806055795540310126552195314843958528085088827993510841540852007053065584893258150962466599744542338158667179979731079843010917050310374555082079207015269539125707140541822556821615094493056733276075376665478759258350282657656931180654559036802189948035257121115705634362182922037304637034185501831812029312734957956775236800922926581701930830059299443598280132951846227127503469283776984450695511698917016000021699767833246500302455564323123748357406919358227633775095026683379031632681760465361195068018540691144430079461146305064515009162051451123064182073481324168665311388661877202426650121010443381248458945031010790764856659648681307090765786175921949506151094510508864377214490275912977323891118036021777142814842471619821179063182597299239181823812387241722497835553091195535583172497501140253666764827400222804582203318220085413845236883778402036573281794131539543866139289898850167375037907092143656205003711822408349458721735820083368062407633920864288681718307072037986756103842065458195207686735171626714133452224620624966137850515966672880042922084775875934864361854669621293127244488717569622164067435912245869158698378048199004520034170914969033595738852581915906316355797962071682954684717812975061027394432785363191477833065914336445870943411259287312457547027077423690793727878990060425524548294268433837652354640622036206872409244824357927746543846111163053005706278671766037312089007812823468495612431665622204183883592139598400174523681765247258097495117185986295571879035363672214789113724342540240929122054415882755932491378275950894827089410715873249774484608801528896097185650336937258892307114786335728794469447990556053882027846363028476903340343703894544025458320291021374315649862299522786315597039923797833584948956979947732844107131012829804624929217999547232783517033122580331835414237746113361512885162346015881306660031679733569096406692279431775182814875621768759709105120890919519474778251540993988101503244378082050390788122368448360230967393645439137083613234914703475392989647516437277958461557649289815893775868212654016398183280565952164221718379036678656824318461966904875225197545450104254909870066859594993626292189005489381501096439113359457789865284694970592069681235398120855447783145457666822987944548292443170806596176247829426355656719522944250043457909515319464110487888468200845209098807328333835929953319097203356146057774170944206159647652848931662935670844351739529778134418548824896716142932315425175992159333615844913544763131187940984120664604630611644549256300917689897417927701280307133325969161597254536268833171559437358148461630034398456612252009856207175884164840837667864060083862179567666554730260982399441461580852594010299005557607617082503449861176604416052290361533093641791913453504275404452771711521983327772746458719815787626739413003539562155777605318315536626746368946947602567987996926245237853529954802287149183920015176691982170044311237721037606229019212324195081431200191451193069025819846709033147903181720247503988594123337460219635701499659903668007820432973620071667663409620318017933321437003090090605174227883551991406871441912817117998291079905882776112161735141865303790226442924260876800760270753740997464940298570192880748740501308378130673589517143263951041792663697869278564147751516427653686733949541313899405322993465417565531277621718175188334793102606504223239466396487634298696248849402824491287897041298366112935578654102824757709302602535734616965886714885921869506213062260951894965971632079502927353663722364778004666875646556320820140523791659696958510838169271279031351015415724839240639009927662606721248494850238119678347029414538799921785146721302014137592642051838936427268593324804994829906865568326960804835579728609948010070941582430056263437166891435743786905576808724902133229756923795860213601879836666269816969996606405623491349978133605927916841732652137081637251646015588733630096123473328472666531693853520846435865689506088757256971435057954448221069951261443434372128444712784157401936473474376706909085788071677710134210216667909821922601492482583731693566707610702835365188414365931713683232914846437940027973618489020101742624980546283794202953153723267151979149016242451545382159204013108537717311305017517565836590632179590567566810107822540032189841775326444347337400678580088530553010357842127365762955144784373697046332050733458928676649808158332409900732125405846199980933064874714837742981631432476603937223716244161325531763203486684579989769255260327500635820551314455815881004291432401236165668049116447558188837745841456896725401494768101043232385727086908135364259563426088856631414639866670528607360718496430161364348360172690734709026345180749597477077580465104124965463800058911824649079677600056936570839407458103591754956022368897603147133915981084892893067144393256734057481326314963773217724172490347926143483884666928073578000617058693445561268935054751595379043872282630299561260846242944618530163234289857393903698015866485128578432427310685439702041792610563235356467238647692566069870196261544140150442579741904796221765560004659303246011427314668353553465167733074068360059416538663951534958660794703571033673395245142262958449206434864439239820673513517862372360595718588350963673389580011684666868635205621622999324783820045468319013699463183427854889774890103191044106712833919989898663088211194696484599057826896180029175700500897604998606388186209110484314803410710294903677054929646366323045253697083831858234495553554760187854134820599170526031135602956052868058091141478070598866086761368607616712286730339275468414193201652296998198057627804258100934895364444670726820131411305784130133818372186993075073253809482284448572669017480456070473104250703900932325722621770499290814283226913955837266210440891739051695480366357101761930689751680112716242453277398081112905516232891186011261560606536214835546195812576098329081689729291008035419972900642669706275559930083117011002472554834084300112431363411348464285205972156670541872818749438947786821672199730925962768485260550321036250919919651679918931843862610004089815544619654225251918250504936923351346734356672704597358718204581680636574043980988083445831881130991654753116238922012838173148067338037580494977340480632599191817045158688105782262486087878785867714547438726973951192339699064987805193068492848581204895411037767969614487467007199345025986353232827370431230813771265299166598845910859027605295524239086589231884114812438643696872064245071335237513513133793958479986458717347777095730092835842823226520188154990414046997441160129335705494108684786775924351457865781354127982571129787966796993782988017899522110726579111972512834185038923085819452130540862307601121191164891470722997737862859416475758519025819065591728516281883014289734443329117244951933372236684267320151912233813248347644871789082949990603058200251112521930098839113721247797175449219093776980277818904739849260235847990276492414473729920548509283152926631987909985834422243088224447307493873178189002031022465790627617913721403686442460845674570054983021214307313147961901634624525216285152089720073414635359337554119281724307514460781877489751612135750615609019425736245925704523245866649026843879362839116449993853815645461989390305463560270104818259569881655367868112602596447081122381626636126882245288624472566870471293545042453262101815188747079989283082707756032845282348596632416613080815098245294674227545511027534700397902095996154886876965571181661665607433872770945574591563156760054090917969642447624673774026405700578616197619802909158477560873502003061937880391632608284541659117868458622054404728761827861999629927317562678060136632830977817543905722018065206192047629370861520135006661835656963760081961291890822073475245345226484518272244679913610985135280124133012212899519365428919640989354171536402064678416881898457554344057526318172572138216489079706368099148388342168649155324084005983113457195760844129559399507086979735877966212617532959483303831824119669314282111526108642947623086034779563382518471453126142308974096641661517744096307285189221485657237826731819324439613580383089904942795073542097900789735397696002591533767041939673065457342914430675751847855496214212258247151186921363880250531869233146083497888049026381093512857834307655398697362103173270254470218037223383660365243327040521113556637119187366488233647133595585162476028326724027371005558575178324069640857819653029090236982580396496153675279973319136694350760251754456126498803670441703272265209199235960763215473095092623024852683793770660157066952547980895767780294376773987360674178309529354976582151391244791012798183118887619340804851570623485355933694575629247786819138098679587447577863757688384556642705845752023323392563219878989456900718179530318790801270109020052650094422280069560385673689570456044849673683747005393225300771539955191342966068185459340124589406774938721425615455841294382172642328671731722985223770633979906402528613769149026147865475940092837232647996386875232395284670038361183678524711749032956295432815425943266524371773656173207848973751268253093553782166927271312882973565920757626756057877823006230459808131452559517220152705233074139042652302664697433026812602792117926457781302233118399192729221596733433544814681319951149759405371414332107586536549663413428162694503723261327899622180606957882136710984246966107138703909717382478720325458917399137081993215878509383431170104430038037613790850376950450733984045864589868038055548493729862723929914387997199621553786073030954924509622704724719409226156884179779597103056464953537161193429521582861500449200386902720401393756703573647130500882821875470670305388657354340207712344570918835782555454098119122942341446519902374584380792588532951443560810880443504098628738294977100221853817041596660504797568393595388910040697096198236656948506522670802657841930894050795073816661703216817584309087855376985977117331230948371387354309635467735245106210429910536853315455039654362182494015069321507636718233218493360550778926763688979959292497284562885847575705096194028319525086332939783084849019438855323171194000284680889775879774396968957870683204158408048983353897849839333289180805074363877472057461782577839452246462496269447556366057562363146891932197412975983543172414173045193955293210954080194151233387126670940878201164611981496478726547398334199344933574251900893520999384671838002469895741460280502839219703111954904044128303668036341638441089737703736121884060837505591140145341071042378915307308783853627453764886792715139544418083195124516155476086704699373778206987469154679381084850368258668526935509212994260244082949848880225521328595173459906745027139603976562887061979921456541703871534963221824196444110065419629807624743928243002892854732287919559566865619404732186220862895670502905686040137791515171490496856035976514758250245033490179464377160056259481903036353546547827226185536388617148976288876631905960175014235606977753411897053358441745495749913410506299685444987461366893872804758541725558070614954270986140302476308242847358264041055572025032993767268568763006603389290199978248534484857208986959386837725188014288977937705440761241071949198144164867508957532880813062920841329257541822974954520005874159552789083143201639141908564269665129607450167555891483277842943966274380557651698192667254602297431013468573077602232278470885361995888654673970472583627494700063132071164946287039339271191972867419624936839772668933725546882019492795937335936482414931757010519424397191335831197881736316539538497441569477776779158105529118001497086873911732725004888097975664475723421047677680532097407500854135994735054820573305884613790367184709730577968072451436936879832605478201645081472767130310282102752780612747822457629695556521363999831786191174254427006840706694730434620018014931969542016643261574933508273229098270857332168238517853628392493879680800815400458559500516946997256537128729325158473012481499231708825655754736387223770681325877805315220326253957290631757139197504496233551754781503149683704781741663920992839298930251243982282782493963966540701487875958301129587941687815295524442366172729621011060036868014163850316434072009837290088621412766574106682668821558473569184062088148419064308760493614879879039046699074698182592303163940679049234174616017149066721903703214080411790496614300840147306751355283536115837036704807195784418827475866268901128199396617720694977637284592277370208760639515946280938386842853445288752672211447142455174852755234731376769996867630896639643132396608702356086293731785244530994441349543411436747531872243538869651040043995051922484688789335694637720816247518153364035138327806421062012877848141804511377127289243931114486693420212209272052158940333867725390544840332473587913439745726172848705495822373035270965288466821754279041986140303420409481204457306497964793044387427203537864017219912263860156677577913464101163014865000995618897620596932394344753932070640001003590868988361949900788085430972118726466336166572922167855084320095626699355897878739682856280577997520879734092573823168324329330830495052838668163891231474957273489575711747931288884662492878462829273752651393681371220732669767936502834082811805002930002424126553035589886267659176807600257102399663719091392151924948803230922399755887279881367864686787662430133439346148967643340678507818166741820656331405729004456823145551750721520761349767056986968768993460515044420750919963447907736489503597272210681644766452547225046331712608158467354053854186007513991334906586536153447908666118576568405236302854045182430825778391241190897415107537552163148162046006341361714925260616310780086280354379772910864713311200715249919016201934583661484813011778896638178723829611247069329769857860235985816033168114341099385723540744291289333576085901625308711500164128352615073931856150229807690613918750105827029400596277892658828735704653310559873617784713898992735104334232534228193473324561787725965504326011164028595844227526761160885319475638441612961687187131288167416889247573106319293512480887697860632692950830431744053042524736379564736127203322145099159281603838770710111159551687271572727639021478062839494855736924329139761581044877706740676923028949439270192095469369709929496805607752284757966931113116250706498974656034909633648097076290378828198600499136603031864154682413017057908909682391669196018912355099546011688504977847583097377045716126587527505115172657847354415160438803986853679623749254877145191551512774490449053771833523188240725546558619159860909515722737707378580249106535031613187225273082510543701289101511325661672547265459327444340431343775852817503726838148780314140726825951992816400247323979452398183327084019782750106399939584620425626960081057316808470281232556473340856317204047906751184752412727004589642635262132156287546666108136345233606913016126069304843553788919687997608492659243945819511118080436677517859234738707371007254058526887715114506510546563689102609968373633351421777336903450207312946984893276722780548615297655507718134846067894363756300283687255968067488822301409189486319709051099867261608272994930551227343032982209204054651714975156093558110233272784453916702479824709134031506341355710317337759177203167008591955663021524187084232545009659669703235655733508773609923814656718752603454327473399893901682685802851894033531077972691201905453254580403943779877649794043178466349923854150379895921842397035560492673463403222714012090473333351776647866621540055234591399341693802211110576977896498101524652516252973442613113328151569105898145089913580002141441611415168616462443641924319367678669924249548819066485757884819349843664563790752376029422478320220014897660752324940731810945543656874323503105043755271424006487760442186781386956402164518473151000255169296739673235091615987915441837882366909835890736777995265955007315853653555772688183259886484826404549331488494108387220772083826625577147659499689118153214178173293689022246441152354488590762952751681211813686895393414792250123076735075842572030782190022913556767049584143795986227271886228904439136195578959076540146751439342543222799834145183464870072770841574271344832396213825500703808819355826294145130217045863422345414412535919460931143456055986481276348175681266987119517313098390968465606845625971584305845144909338766397811071725595229429744569497733826102354397930974572280102561044319401881479993380039573698030970021126719915973405574065547936345792048843263122388057434129181926802374747323269420040251603458479637079751395987638778507952130926003487697843222176315838846644945595215899439053213603443876956001427963218498311909497867398282713006064909768002005890759259069489234276749705862480140459419159650584897006893728941877262606511823050369245884901556085186742375579220141321381239286936876409808013538829328670642006475881558637015896421470079179408008643439202321648558260694564551066563587340230257238065953146654086338855885473473525534878412355075286886543876750204895799146688298812706191962185689889765513564018491303584141708786186284692702548949172866605124124133108778735336345614729944185026295228835335636862671809152173039111850421190648551872837474293478251391094736452569660281636127899188935948640218203445318338886696687384076052281563937005842365438978726017725633780662102630912735604536993377280279231115914178280251286154106771858851810821822077087362544685348124259302165236602411196632933982948468267056893819361339428922088910797847533626179573643420383454866305100187127835896013044280182394339206837910288524656140964274635283899879102638419354099181464765229353318897092460506898181474783092018829610618328812809519104865453584009083946172436802548043740207984374757156772087553870503860668348328436141319086161660787214479555863170608742157731124757200846601765405745137848682904005450765766986056697084078501395393319728248542738342248112569674137853103602969984851325524263927087078101236061791471360401385588198052923671212654234310979554728347514631881787585534165339977962956692640366090549235394115428643242061529152574956988477037770690416534005163643050969279481634139249571000225544125444879488819475697326983511181878407921798799990749285255823090181827931864416828693545778465899793830113243141961699137654755001342843764249285063602312811959543171865682064406360613390688897033093808816731493736262208112656670057916159511937705974789696223386341413800870164543964561503595320043867452448837669289397131049547915459927034823023462312984187931871814631619918292039024878906891407235041422261867686314709247914542066220497279592629733520358688593742801462218569182464369899665187681272530943268804069170919836746247676939794744906882428772305639318983186143626661198041088518856845622152225217074266086630001372538277735692798671108607452693048294948440864976806333673487165159699704455763800825688052593253991024092641230626720875629540088573149747889238214482685157184270030833034826191124607504107056747846814699275952677812704942668970776916679378723653589962387208162629760763243609164124059261997717280883590476030563492033344107060264108412063714556282613910146257894935353960388264624040092141463735310046359169602359472734096666871857764980243639887860646465199616678636057359484559695720601050796533201807910066608514718726672889012187170728139511805787722517745214199836972452676037413598041748983576493943955356314349078753460125941693075770238681824723583752553380780388646614172054007824548271576462698245751029910290030724778670922368317555957266153685120512940502820766505066460260751050577443141379108165879188215825591496028327039836616068939349436084302409143260535554730865771268221399487920784324329348118572373780125562482201434216712281716852135014106706359659851718272557418762204522241483118091989950399988831782804174757123681519208678104355384423337260025669934695425866391575371566771490701874085830847176990452302602538771810127539993967640053879041816329641180494234385977562743251528830609142193025915476068134212393723747648355855273161478014651095231447913027839806357342186552404462653664189665803416687052394190489609452948724615042788343010881945486801234202356957862453800484016804853162268657207308701272393927223607388681952979117507766989096432560496001517207933175263427029087378318492411199353388780385271274049888994999601424474234088160447921725179476777558861769548809326031445533385009497616054735603780736179338873012315231685489870362437832679938546702884991276093217453717634302298334090914684292499058007736077031190629340033494752749871763159463020610793208973480386623912208842396379860349644631744284223922079283654743798219551656021187666291910985149908555404303530692222454994491979744304269586387689700305895050967646633076660652964144527300089206543514900621451490775290069478782155898060580035612436292468009471667707889662248402377450381022058971572657723594330445691173513870295390812665516681034929939148640629491132918311611497756814534689157417734376925589951681636613870681297572702085287838828156173760168616668509049488935409943558192299420970826864151885313413357116019623004350485049283656744048133485973632809895418923874157388699649462262559585384262102783962258867758248824359564320455001992659640029161082070701649074926705531701033521210972620116382709706795779889392173242557302349961037154599325167957517654313867465741656988556953638079418962866880377829311590307997085409109776909436819154484139644343198228029330062721882749090123727991078935545634574570932392300846433952160392651425164104399157957518950515652725126246718622446156736920221693505126117493890777069043355645435748319349893272428325583323436632721509799298806179458730264602364542961550834160508275973916040847211498529200236051461276602212634513020134830787625182551276001455391291676949086028510488676270940566971058187566411527086210034849199420621986758566005804839024346621383920363064496670106561003877943183486502204776168804139661334544927276899916596774878208441279651754416232348548185173968375929032638033754483412965025740204172341903495942638783434596227195721620826120936695994555597761704451358108753345068352832171916890178141460354891463144011775939297738845992219824501644089667746436130571571994639170928666771554859998428264562990316672747999553950932495532951745337963062082274294908080653061983537097055604279647328547761967764419041368596752414989100627911596037620392593658195638674421652407760237386891050524962429740874362560215041411571920513626188104086922794551095688665559336711920654535213796168218952498305614901450764212485312954211327611523771244881950146983394562564667040935123774050468940890111262350794515681879130022099000683759652601755655220620530227316883759602173542648247271776853608351908520655381480439119125115984357624528954525034274068420164191640136864358255055821576129350907541820885788841161340486414192761503205268851774126043316409940274822115177569258546016261927216226318868621287333335250216340025982004015407347470976891467135175256306596028395252149396537771525078041301124346437353853863771289871977213721697895494485390108212106020026381759541329077400305793381960529052200310989715583976046459755016001459147992946090658295358207411202189137257253498279778956661581995085809890402460389190465377404541429116984345274188599053671218668566667733916658600076971911812027158261641635655942763100346958876291935156804332770511055104779835598279806150591107351406360136526866261145412114962968485144804703716451843529216192447363942339011669913599947834131923715734819640733047135422683585862366308731784240144966043267385923412881967683137009610215817423939074293104773227653466443905740468365723405683331490071604496881457420598269999375590918578166106299830664220548283672918669143859015616741855097799347639201061022431695123392633919292561367100585156083975825869032306138929619917475953381366028122045034864286382897332126082226109946989283461413135360118803075494258239214135922598209908852337629311711260026763761477697962150510375205324756416754599415768983325850359695554478946944094506125424156724202626087322430923408301938512911487824975215372558723412028948751199547347497055596601315787351106335013348398847628158465864171144086326568120614573057586737023098652021872355693249552373717541411707904865673857043282526760741707892970131831549092318277573095459747067010269860541677924462307230090756064005421491856473634160401713082508271527365320892005040743845148481056296506935445681604394840692458464168390689721296433851701107711644022934288338458127140123807603914817956723239561666445636100271246355628042884269716609541726491643510622432182729255526394412842191541812499354321755081426108359799275796387198936322178076490982990296781498598441469876612766324491121938687837241973056917216073265966873766254729005525359640794723006856859199526436312760508413302463582511223623559358946342353656175861476702585297213086040291605356160559975071421056789118152739484395232371359024702629451942656228574479861067803348623243088806506577370379231601942248682442596173265709994893635210543130364841732171554587094768412391500701491080197660709252298723614024122524719961659055915787504931621991153362418428461037597958546722405884900172910746817659572563728052496672613063231808513128779116010890483079420762274408106715308493087935671548005586848858298191300071732276528712232139412526670390730983310079565627791388009708952832290806426238741923304659500068570917756203991657034163145455232913772968770946651194944770141443161731965844887803978551490222792067207065786723071004887947140216577455219163320168856571356524445194756044102805127770512516123258174810433666242181167958327242435950956126044346254246469427921089860993027165922732150585693843626374091422305191442969493147690945148452184774404119683354379850939246595097378336463333417150748086107790183558715539187210438751991090232325930340896580331206642364558403863830959048993392513711038616431928560582594169833685349474971807836020703637956458528352023234609338220436360171133769341750734985886358071640116525788289371254232466377903541336345030859154264040309723717075454641864395344481480051856794393940011621972076445190966139578303580101164518942000233323898928547442727482270408080996503075062557442396024679707222180670897295453838655013935611140330210275137707801196114873364581633120838382435390168085402068344444836040742301413789843441294808334561379870649870089347869796514307196189408943948309430069869134049025700434482026821919263965709021006124500713562312134035212215422357085908488189859095944846440726656409271234935951627004317571270889311343194295996382850557003889992264827024872024161196228569182506083369883593025841464762823306071682240714632459088093738314455268210708466773814979399426293542365313772281584259588669115198741966352136481748189955444808884567843080108448704678473739750793335532083154024100998297214679796795508610598893032578529510363769800877412202857817630330551954095762410621166815168516947692520489266357748440248628325165971120089213641731388019848289913102970480507224825454521676235740542299101547003039215575125403005068014694523283442044985899187412942125477605386597401965207492251585534054352549053875646001703175622011819981266311946033739173640070729227023559006149692045672143545068328653315444155446375774059072334273521934932625638872264109063311831982665425819416400370150110386054340646024193799217533713330120439626130068353298953532734794723503387987310782998433846591682183457404389317366898018409039457989926356051124305288434545477017323808727095027674258548554340908389977844774638152936066126812723160768306294335075735189310824053399615965286588369570979240598338198386600357061340225997716475113227044617386802591793632480933381177611298395129839680682418126490556630361101941959344766930204321425573555727733023038870143819027001510616984890462191053599744182832506721477188173849831529953708750796962098480019082005212973619936096291720875126552666613789160770605423269409747225215365658076999474049162760060349626138761616267937730145122989432940936026471368770983559283180078547342066439002730351501122744182475657369285123360380260903128733494386591850795853281977073610599716796239071402106671800046215156957646268450297161364853868524124261005548362559741651718113815480652600838836335365280875503916957066240696607409309857948207895799834010909187869258830709144980098838620364714542466466037401509960924536011532923231766710346818044223596980038518679533767005055791131721094366096946836406853109525619605978559954058397658115561798022656350088068197088288874382231494257159512640143742758061304485389399090960929744544230894097815516547009800389325486849267775830288592652388790822248235119768710682349359385047789420285362496758108369613778964062435534412968598618352270501463593155293351108985585712006560115774618295015955226826462714613633420725118794220506231058534542267712362115208828412787445138133028721884876176557502808833381892092028150136183741987477931664113002854201396779700672192225264594723940324967747358785840653346559718058348554765632130495312716528770535101317043699167008641258889639370512012779701988236322930405694603536171331562527272592625533261762600323528375626880830194371818841847280361163740153206674217859070258941095830983526779851017643473472657224860440156681172562828305803736978628824399861236377685034484638887495836666318085754505651243394509410388147302651119449138225591016071313720048486027755269570282383516938913583017502427857696677084508723984014718466001711769158404616779520100866655346113274970353992686476487243146336147909573147306031602325401192281469335917800440775946554717707239566844998497793567456725434873208110079870554309305051853311137796641020718748981348165856516628837823956226540388389065345404707786781187338089471322869736815302221156112332482328308336891521399347960767208816280134008635838678432306564949685067833224823867806872142559248701383312189209817226879937285163737071620173466113341126486183413177349733939047846123950101648821342440076479105039738723551477426846494492380934589470659360079773099041729306998958174894661735437891003908379346587066412319893051529847102624803764643049684799767717883907661639080632341882316989798040709888378603305269897138848414550689950156554616016725788422659929751692775182483404378258672459218322546645627311032277525870307421556398142732536435353337606435685354856334366794736242198989482736508546498085521690724704576779369629002634703087189741160818804962735409465377146854062282718497632072923370924026113563389368592180020979406962912100717709718619314904203235466136800379810863121624698624099158451758103657052336559932797065481345898733876169746787544935492498664089665955132239489956386008675446437760633968017310586947894489461541083224936629784441984607381658715154176408135000615023472665965783423779136869238775320744006488923863375690402454553032003366217017223091511265457224428691972755589196589906720611858875247348450482340493514323852258781531108858970045024680865254677146294178339629010019538419173279511254062952415801528394159924133593304894449328454950187197554755951248221214030201875797469060822073889181178349613158227333187703874430943084988479664489303053010688029998905012578029863471483658951125822818535334415272931085038642754812765579100946234408213388938763561042397336191752939535930362980854362363117876219094063278406095470111088706352709980098863304639117797361967681636489594170598110683012638553852244657080280842673848796791498796722636929501340276385906322796621732523673725957462322953374003936862447489502205487734975504995298522301200041846817215149691633265545988197351476928918660072679838570804745641926997721016467685495394917681475550448398715421375395492464300670651707720932863045846609708303043630427797410171448824440078725643183950318316437095154133016548851180379165294720640345617184850595127726762938178280166001050562188276190517854563874552137655086219766315183957078396334280749421747184681774331551011488053200504026407973194189251835504465071805433726008838098065832243000545727333433683561542686123061195235757123958894933589909836018748103794639932024978881545415575379580563952789463462883265263707813820118063047112096988874744326992823989128723552181370813383848618692125956891400171847007297730639387376121699619700111677639568504990313855381961107661279285354481978123336154916566285085404223702713936303442567045835370015193227830970946650683175618112235072692441434694824062264670777656724248707905317757430800171796982840585706360046709750338794273680698202838236191793405258105434708648800655746331559702596811488536042595691169679870423146273785787875824781056082822568374145059791229868047807936401086857237438312956698568534842883237020847694206698675490510319738928364944275320131812124511193564605168299687668446806687958001281459797092219383794207635795206836782159345147574092597774876039367852959594054516781014434594839270944410429048324744982162917070368353657444143465984589770219904375801755211992946460398755874052926986831974665438335851537864557786321880036213419375388948956115421457440212146478862672167881390915554069020283656571940176252329235210028566049883759149873765548932445966749078188687780757128237295458490328411727405101954857609063197873633314222937878718328711881591874357527460155244581053989036836669547504234902049645088663064810834976037874704522324380566276964065590093611995868564230889292290167843263770429052623345152517648806859247506598233318068527700049651341028459572559416956209572207189434426907829202282581610047682680809784499290704682476673309469724256710805999078481088919357435828390322665955990797841573489096190990049771529344739263729457379481896493466660995411861307375818859113721478147646240675678519940342119119322061869489595644988071530643107344234492201879549587601265488466076170209067973117863499622049570115027492882754855532174922949569743477052949104582294332682800124006440106028696946719790198597966800596070573810760820718342083317825154179469076997950331715557779465693129109557797888741018317465744014284624533300969089546337273494685285824487164270738657488506056202606550343696649368713877439622182388412883892188814769500447428531231426564656884205204788770411968453207537971269907670335815964492731401529072545111002829097805058375817588105346049374757782925621478888257121266169448693674385215238119323943393725974635403453491710872360713837389178079179531301865098166920265369003017214294940709669547715624090231417761623698876035007341383834671188936677877715688791709407761245447134048364368435400786669237594840177849709376940472630644576203504736576780201657233170275603671289545772194739487689744351792677958534378514564933685177516133655655524292702523128720351855597984769035404733714269354971323578527387950643860964662805786291044701313307100713463096768338418664835267313976780375695047576992572795748106067267417188776630063460278902373645407446075230094676265479281356142747692721225177240119542626170384844844584963035257201494199398485184986214913305343638489569962037822154920179807247262187511709388754120573820590503762953748899351849199142203032561430753013162673275595837704230580125674157022780163126848429689685267859463941369953261027427875870214669700544359053927114432326242797276390699013194227023640320840626826485143954141079734752187423030468251589341302052305969327149567540477505484482490220012990738114586835915238278583749831059331359619059955322423580726271809613175859643666118353864815319273205789402450693195424296631170961879073172547809385055812135172644441500090240490826979827950080470974084385231204632106696446602024412126076019754148620842650936064096073149253945133413911835978345106211238275535260275674776416589827695870579815643073927603098494383425117001558813447081260553925348330827831969784150579751225128799246067540493118799806903639105855671245567265691608814388298236520213257177152972895217611638458199027736404927600039279471334028470664539838895646874407073488030414866174902763688495854279432910385823096347016671238588909675073585324318512862720538193073651164732219439149323308629824778884358141057122973387444232248726180196112532365654979876154211803748536351659417369906957133859641175983498469709250822038065101283088417130212398018575620103796540978762281032159916734179603369701920480310316677399549593783435349201305552332285197908078113862724432436168511353607120535658738035122651405409025226537790160672672454351456802898793643630064582787577231818612634588635230048248443377550730210393633915316072211199492992466325751188246907072737226562170697767098311880355575660197112657296229404331561490623713202228894118463959445437676436388038506171452425254970419655563434174753404469802162439168465013702576412308340600943168349132751372442449903708291479099322008590561789705525179932703995548993507279278869117077960050373171649942683009007761489256062728603405065564607715078152855474187364594046479508647069233216078741725683687659274824190824540488200124548088443885497154789290462740854782390783403975768729271349099102032523468577303946298178095687604658491586220017661456864772570763852724234830136199540244504283940674313100883064172777247675144637142688310197769363656044495445577872118332150531037806617804271851171692852065437050719864240759423303227757376109966815860911828022497256317360550593515745254856571561678928349250181880216944140311342701665203143492117183642001150585011784700235614641708519826862852349629325024418733333535176050611782040791334645809222443714660678893740148720027658253918958157804237494462031032528394975996440188386694871504570198390787851664530430485878781787534728851491844282499345187748971092984994374625660609185345676522977761636603752251800184857523465541620983755555995441384012504638831563283364900406965606551296999062127591112943421862487616163224897048441676347656010734000613496278648970412975417122605452982027279059051201159597794093275341168701717003761730143404986664120642558187132068156180691340340408043456680447031043768716047504270925972453010385201526390333761318698695551461021700649479845185920137005733318116374100343572264808069446367834466569217467422984753569418324673178838709236919091916274937165046008755511488266538919820357002046966601768641394002750176219607508224288792090107087683444194926483281175242901907152412270354816855386309555697046628293493680866866690283372806485478304876644020899633241661188902422840030988332171659994947244599155767537055364860461768230140562995973786745112749729216419269802783036470141525081228299281302009699528026921907154694426817749076976946488138031050135900458921693143176199564100031545532519629358836184684613786803633630933285648616142382680378596389700836657396056826333702080250644786287992441922667516007070457789893333336518062477587822864917025621725964983658694641217771774835171886348337803520644177405762559233607458779437028699669481661791542710063570495497383231122904281957678857276853159216441590680299828294630092761443345424441642500590449081676444284947129089151220216387942709246707979469294197909697493490834754957640523280373725218167851391755536278932102768553302336407720072428061330605038462004271850969672019169247808139664225591370102135829546730357780730835998203294503955419053457456680634126081209923324628218039755450508423638909532695944539901220823883619668235100605164526547202572764893990199447203800316234323251584690392659801696071585401670372772857509052908438155644476883965204098047069529868155804571061156055169643824613896980259229931020873034012284774378122663704857612195220485302802858555102864028267650652494154048025246648223737747122111704394814646924493568730297808106115763367058337123830325997772759500063877488686541846689230642307182762455928006008753859815478843174638238265475933665172160268310436945272436619360089282121485606465381742224382991472722605798739157420205611652844442564631397292492834031339733987727265123483856651973488689385976860764287761185344553305937863089262631144658601327340811138713210108167368731379177539937242468135646755555849901886785532410963964068623816377827668187435285759994381455724587937834265514719558470579334219607739698943560643710205888036305045485705277687541504906209354599427502016896162257079585607102019823300495675650647751401372852602727997673408847450637402072452741887938985349349916358530382347069005792225446215493897770732481312953038583371668267989614956567449081218406983656400138914856350422019552077562710593602138795440162532976512243632502490227143916191006120744299009768771294881389833192780807004149555681922366284883058776039640019621304703891183040566707241448613854013284449188802468362581750962332074801951231536935108009082281707495465867963726478442895032967340389454575860208539925649885914588682053668421507123886991429293559980175215550804904806570478174522619547228295643194915918785322824831042243295970019904968529876161815012976368239703737627389198374719995146796872532016318473138631330509730451519612444737855217998336003751294949051310312515754558001437254120420671158171735714886231565766467302327927703910331895877814507617951526189031723163887989540005000887816579860944914714977457372878729241267994619426430063899361792326853830171501221339015726954411868700104223851216504305511730392607589211210821417244134320662462659151650258316062211901820384131057574858851548120779826200847073651569328313881198279237450393834900496905607126207670913873702910481527729568073691573388098212640126521066786196463950230836710781024464465637135656015638545724681154302982583515400780281443660452859764237712869494731558754796702395596138253934478136634660155599531922420994632275455386805164167187113939868630389189177258849894540887547602901658666139296106760443668939866765272511075045603996433259306500565964257178297271830970565983615214819075061119244898708640060231763172290502030393067000550011834288209513784122726865573789105453800070912907292843563867657554721594345872013715052786473368423046959568306897160896452037388472123418213787759686152761616504419047472174157870525417459253130302014829725336283085303556185487554466867436602160529277560469743263943718267431535635443935513268336796706241832361055588240907822038199331205718244907395020787683114202837337864064200651211643888323284990443216364146597849905813874958431125710112277951432988145543800715628593199210571136489732503931996152038046743512664070451196008390993588448104608991465528188733630602467545625883017302070339925401248686734831278313778926263488234470821200443848668750590501277311903671824168622560758782031469999645405180920762568997841760833026078782830327915273960031337558069352988060349664799729333920326165572610491287486298640699412904427283674962216103203465233376290068453029362350939639610260297144067826051608800466589633524930048230218269480527060697065075762324679807951935712613933125592402491152540227164421738411696358507143320933495178472723251843602273961217319162705229288546811440419034384301783233117646672014599621655422038005911777056966940135593186969842541424135580482176069848551282562433567599644420208978356642784238257677297808660270805940112950938934993956955236215509946904917639708243326896552677222141896856267886740586145253082034077810967948106438410635374834228771653799907121902998617157733059935008539895372584360094491277135466006795779933263133627722445551617066871276537420032293546773688488668285513692562077872657475356650070215443645255051353033896506320959484081263445068890000135685202799398704536892601153781509542161474896339801009938575916694884833777593654048627770541365142557252144007342488491179333437170957182801123687242434276020704029098590327210864276598901188808562479578158866952729941396485772703621258065916058268120128096224404302814537929629107013295481259819739527678267422779829586836763723881077758501170198515011552600068317091257345319410530674422491157737597899976218233090181162025877584798059619506853360384946636639740336682740605539535307758688449553767886810858620517095915671189687952021180299008202905544764473067194274746975546515450366378119379982206239493370179691021579664608940821573722250409342075406210560380627211108402568752051965201343346893295080733024513094431949823816538703217057331754344298766500432877210205184709262159698519556097336029215653709725990535038298436995434472791424824388937439596974289062119367637842497036494198712460815201948689444181038828648008657024179249485231183810493555259750222182019365090649949570109543657352673993886556602035124770186337772802743840736428111800758267434336847989552308515822457600002445145649280244642496474329933782084948165717183718910444078559928227531543033125223906815827897586603192793128553077459375502609719859032395900096088256707113357323386048683454584234196237932402916681018944452902305762474052279259674023994516674232147909171933302913079328559152395389001824399732239201268919847947910727488659471627027293648689942440261834434703857719411252450678646337612685375359153847344968875168304761677214431849506414727996260459731783111453444045980772642237786304210505078612637925346206729631443734066641767036916597275697029337559629987042727653634260966612325909320926285500711589531135436542032355895075041566713220312649885796186958145439763000163074469656731372464865591229947553763409223314987852245847197711656067390566965016893691219178190587532442249172611433679383067897928187944530004145139852574416915152774349339361363232196033758652786193623961542685808940434062593248251465134290279174339353260327212797639844790682789067020457415636359034624638374001374467732205029149887230491201713773614374294581558788191859934285851897917659833703674334246999017477495653850532641329746082840659617313714508544255787762194066909563686214465130607044935656003098221575740537562964859714646183759527665708654623747535522164879122260494923625889008095312411999570242880492840937515858411051728072882942333336789384869459566876978817713921272231704235943677015234950680542502419220746393603966159829975785308928928590674695715551657562266636621243394441060522712296074810279420507914244127640955783928665749646432190401119280366390711304441340308290577792112024377253931144027307029541176441694035978541312184710103129244904036272117576312516954263918283016953735885428441303096063912257474409282492067021094984816558830341341831819599523935049351254286623709750078361551088680793878303993278401717588295777111002630579902994970130513317067897130941806799120670867481479435624935129781637094024891031094245002596130110312199920374873408863103638137496498328115682280029062980742887850804839674380519017308931139476149935705572150056610621138154131384934689730407191933483540872985279481480034588765748706700439783780117205748872488636176680081398548501942021554950212927678821911640343579497605339063884198629350196930695556233226421440918569483636582237669567456783052382896195817563160295269845973674546089967694457063492981568515814637374608705755065952710429714658735515579264009491183093610659259033646498574426548749699203211009518836542463533739416879872776576574134895810915816142762943389911787472974759827969687547763538714861720285803428423658687921619712249640617336217486207922369560088826849562272286605341004563970875882180913080303532101510123015542173795820358028405356558155286231154387583979505617273946752643325451460962207841071043463931943369879943120160776720150086783648945856404003211771423860098758257100093137954514449317545053873906611728905653768443062446125519375882689593741092075995160667141720022319469359846797134388443907473551438494175068965314561651059617517781938992574401405580300277455722841694062812345452997132448364040143260521282242965617243050907390865913591678510803961586295552108857027962850610977871454566591646475030524229891672669282212404548594771056526026776269980235975755104010097548913196824097370583730556520391070572057730352699464242060477943311426600506896330020350811488171376369493747003113584804596050569031162341726258804620062710708956337107850451209818656099407871828889747346651458578747337564419950948561994464373247601302073754982480728120361516373209153421003319338362687065911052708604855750700653968229079488786688157016387164063060145038786127209233433009871107691390121703736224132230289720174183931402073860047672673731134725916447067948557668111718629599799761172497982060665432558929341429124421369214408484432736846573747843626385661759904162764919529672548208039902402879140695793301900819103537087075724383429114619596696652479899982477609893721475387182096900824926277185632637128459346028571262485304437952661370556726867800769550810279427030272276004698602035767524098960839544286366799266805321215598863302194871844182752045772081778451182952221076173612391712701324431369893987471314040892830208990592872442744506639138989049500651916448332980448636548627875717902868269801078952304960120253069936449926832324164489348104167325427474854854104795173341113853925576624817282889002699736474694034196572153501993073812234548941648185785143199406782283118925001572861160711303505795205310811840792895525169420152958229518664707945101775609769555258380094910471442914321968646113719599950830840716254246070252167532522470331981295664838458571690522321898670608455310485184247220619065749674321485480660238300830738033537207532523300093784504515034526989892429913327097153484179192772302480766748844899762996180646023483207785339180606987260832967759550074093704091456232934187411722739620072851905945252687341282312694778174554438735548539804991922500509365850745187999563174779393281799187364549586187786325505538172934956374032667193825480353833990678100903455644033810403269410992955800709137359624697189469392099804435585661088988333983333211876802300001259193154410901486887103760230126899141515391125027588078496166647599997171650122964258232741534490076872767068801524153160067730198201422035446577690773374700365291499899803036690236759517149949769137056271038897547732813433975734590823455655142706766081692774820193687602648915483520096705489844063222479207803422503358951630144125749343042279842444841406049410274631419155612743103781980074334258860673794633037926436564120787527581512732066245432585564706512813816596659108189422164123025350276876862694032964728839576168263233893946694083636721678030261821218023106324085236879532835168435885924343639196111449898898700242691169693248085083136219107770513075264292952826567542295922559368723693213204426328042664920649002383552241467836656021872018511104792872991343297184221425703861290270990757701975638320927634075238624885931502554395128844360828102154554074035554001162941406078831219385956268425143396314355898079171578837694339368907601575524747919538815470524985385758802203319709021943738451715767438825129665351713584746934669447896421746357121421151019047630353873944865533167019912673890413825439526838043732243769905724367734400974012808246436333641001872616159544822112084022378189452027237490302695200004432644360025910165754597696284326489126674844353345012091787413525415055105528318074258489661105353909061208304878057863460735442793178213190754350060629663189738195778252897368179098668764242748965540766666554329593318733894526091506487372254344969067356117189847579153728366190748107015695761405210392851593548054810261262434391268467382602950486839402295713869949161126907218440623158051057204738410302551304686152349143780687807410290611535429145939237576909881706332529058832189243983635907174590871004372029527815470480480330094974439293508352522052297367462654251224918675322141399206176954745082622741762695329920331218181220890547522082153173143875217081016078991078799577373112195948622872992096718859121334435566572722342673239817212205578699709956602016691065820007876405071828800765471715272965444854578736726685495164152628622152908053366977479740030224363523972872304745743159325047269839037587690971743742349437144731029130966156215919119259070471800864338928455296455326351409749614918988775895338908461116559697219771908321093248398904838342023941815940879795418543424342513722880839821849293321091598736467361803131250541803342992735532428990963908752224503546697170341249600104331554569870799532502802248074709018985191736101790605280594040619042201408019361003260617942119486815807542782287682244990970977969782142253760452539527619605579085950496602812218350391467706224552615557456682630326237020272353816753048498101514612236997567385887807885069332778099050005785941809680395747393490950997528759950520550719529232601119577408352536426205568202422587293430830180043976383258852373628924324866200774001358048084607706229355872570537998357319174431068122188949667841982562586339434779516419858436081351921599868419848103023035458254649599904543376351689572020143830914535905565816015393769008909012683759914840704081638465841647762257633926529661170954257872834835905248429178761234329869698325214628938038024247627820803833500243594041228389284680134269866194528941058403703393403340805310564221028640192510819020652374081294574433030412991655842464139111629907902238797397887890538563625295781148650064542039116117828884066525548900124826663653541928856906556146151172300379346199858242028263363571514575178127084465043373056809602806352741274418044874397092870241144827350676446876778846078179355899264055596108630809181461697491599204418126371585660552391117690876055842871954213628662026516555815921117618075818279232694748687084657460708985326307717838882989311632800109183723647685815173680946979222260461891125950321921270303229586839549545543268350067664103708906392889385720931602918186504732997400320506251528998745330744487802941871006975270546697795165548250507278533653095914405276435319490993172166621716179725104610092138863085045273227204410875676736837891017633141830572368775326406328281267407652565648624944484308598670564700005455245301570213291049389335055303349101154395774143092395997351228646074720676297872872049741125189773359152663756190740041276244460238075366998915354398473812768409330688357179558296782893936175249806582084510066558087062492203247821818293614130769718261998484406443428765699602224713997740730544735678584620287656813851814689657022018211440958202312008945326830189815522380376282070706602573062181372107541394459185006983207479054689312832016659040996017656796807409076445480359177411969652614989151459187594051390310038776314533435492903150090329131867957630434479183971040342561152232883582157754651465223016889815638132523958887543116483897405207243493168119897517027986499235813357099010156202671455071757438600585060005217541605066558807012181318878925958790955522352903573764068151311028283798618603110991187906242037455584347100635016349610495687609386485516185161299387669748550089385870469809435091975105305745481079713269225055485439799239273315591713783176733339589527510720389879391941100243394666885139242543226191054124842231862393933274725258646306286220394089385037834955482845829480620698987486337471945855585906974602774057014367533590622654502346537305691363709206225375873296647749535422786374135551773711847959134266827960698374400162515304556646065396586809602376712697848249466536585439418387148035954478506582724212221553991385407022462471713565931734165583059692943888480884662563892822011809739322952025680516170945850798636696145253910673046773692342781467588682065240809825281398837756491746955231395443824978845751763081484738453923074158716071634970656845443596149496705671437763241804663845799912400573605639629906097575174859249221320606118334072237317914553903181778537637885488531879210444683432660513111215985002148625746792534062049814545817158149547557063141868437596491313539257597378096812381329569575702662807276883642791737304690572831082057550242903946461573330379235107026150789465464520786220819212299186038937582278630931819326331920892634970092666704153701296153367027693939936112503847656747391833862818799277995882216899607256286007159165998683284610456146018535100266368056048747730574495792716362880867151168440747073377036602296405615278988281544127688417010411843725127693172963767251243332951739062790477993500917558024323873139811281828790607011169606838360416463298060110399265068417868435084796455386900425268400225734043548347259744361382973603654361550406714225895150439002542136773826871455363581775354162333530137057498093664262365590016615542876755297715639906037525242395375795972344578873822190686800321681318995412583557250012613018105743744423880829126891542038710299911864327162308684464062910980914262251866183163316581087628546581182660503928526486127158560543178623534648190167357786638677781113783232578346341366569914151971590916916210140415927675898486110275851634142884968831624070030300706169041446932224226647761293981440930239203891101200474742199121545432343512289217600602797635862549403808221537642439116609002162564079430802263183303825416120823092037324952907627142104198066806325342822380728951805432743141207591990266978712010078641109029539370060574672537266975639314155032586965435707952313922870526197858376750965939062013684065119652556279979217270770472251638959454682915857019294862737844981922262897578954550707664489981145836966228854761809458462749514845667726037282141163494588201380970680318382787256470563379663879233644985986005874861152677492830156506683929879518760278105134082209977938794671769593035792767940989350312617509743312896811976510877319037061996819297302254977152286149357439497060173245183420399288087349096608858802433329310206084641708483925320248469794852458894378921767138555096714784776924231829469604967599611743094358146636977793672621342208316349481724025444514863252089387964992772522146944519701855824721769405399587698920271766399165632194301874696105163106152523721468261147578571391873566799753973235677245689213217766492173824996905199177730432805682299059292548987732842776231405637800652781323871390926202269950502989319918199082239967083042433653348274330758614465161529621844344655959483479607150934826494708733818699388642325348639217649740224650713171949946018250781095455492063811401104431380125730847760139281029365818088047655950920794106069095875593808701744401100422148770450945314759220668184746174555348710860394471927498799495983146582362457562446385092802218065493036777106677641199854669486627234521641275962723351270281145664239989830666813975255394334506829173268340169951956714513667792786920153093819557492110149478873709429456747332012701616688019291160309512718951032306464240667326405139737698860052571021418762856226319666471005120532793487894221542958420994053885855129852748538272749058253678673554417916612183580951298182339410053816727782986587770322501004142291227926348964424606551146950949847372932326778347342841933925186384999039389501312604804374546612197617170673121122356868648514339665169562230319296864558080607651426465316405624696688157035869000984974607161295024315154709061711464602239192757822854617590555134645162597069812340663731822273010736999883393922272262179535138363624468899966433416924401106215834210581382735329327933179781831194462384920440880569884853689644839436816744350230280072378425428812642377763339601486220461458461547926298013233775063289027247265270213732483034928379513681469151973358516440355270200033179297920868859824643648997641864725206145220023208459947243276491053668744832706199644145143184044716398513303810370248275559207512531438556879045990719111035617859785973063048947429487582609960829477120785609896887861070547434577098695782170901737808147000630798507134811036283049870031504342495761204483668618176924090124800924498048171996433797963993124969127698064837419042665305237295571786062319931550879072104289765809353501966952615636801529208803315245931513029615956895008606155123576995564646459361384753666691005398976418240687127442707909543690347065086185913152801375043117792131016657386414329639482519079537803433361764472853069141513769227620867189469380902016822870419585920071864410724958451434809449066272129146089084099885348864970359722005422946733295509630006682928137217389275716928283307326521178143929473359456966190580072931583650233690762332324622690958006781428990859056437076005103470919478595608536997200551478580831512508159481530777609369420140661720331352103085082154820789539513616535169143003882422781869634621592777099924159182589397650480387285740145298205019631418635428571328414433009350180249488770487465746703057126414235535509308522588946369042524915967446701583696373051401108890414548833973155012367191994480285450867404976055984998045230340943472020286556219234123280106242976026069529494831835330929146086256339464593349388937341103119556847820662388495525748309214683270938779277938352877096190542770968038765066379894466952378330174679381630709337954659072138570291091751280597233263160792815576199385563355659777711644074494833735540259569949391292364339467256114687538791020966783722885546534400727376530442941156216125374045040793450542443860390733948704379138335795866793811187209006467376655538786686785048122907262777314475840101426259276350128497349335833579121838582270829225905539788142460866890337786700010322696498507805252155716151216932354722418505423112111346921782207423006625571911961553044770912698892719666686574613932210137314250163621023266140168651364366178416001019322391667400887911430793173120661170185365501088111788279482172778578080814734168520837832360923665019655066667299107249253528405623754330638241804233466539644237412721901945744000916462156434232298823637365017995127737835721155685143558530111730336110052249787893105571127156074466194473501416466778734163657601833144408343503260794877525940200567538596797328083753020870529262748696717284036826299168008266191681402917328309479952345883426944033048138373055985664726920169858677299734448630950682026151933146682553071213494173995744445390002488465450756346155921817529686295465229196380065104484823018533239596071391956322852705158174047827542834952487466736130215362181867298841297385641214242354594376481497755727101704555984607117054562718677731435466601360926278106076196321397406172687598561113310798298015986625491914429148898300557670806652445686919933125030465068441005199079467905564949257944983462858522663704254934025140479932175363195175434104703271659735353805349183904841249408220614939847250445582437911760701730171099657415723621265727356900655688592759668819252997208407913992367505492715148371437785306844843224247843296357563322241421187385254340796890365627332635238304930672364050210201294634982532469996796262504896959554707884417955712995686380382191857273526481759233840365086623586547578856590350293249769613167669855875889859517708924818800134950366780032893404636672704577907807219477615191725531138783477510550672218111063870580203761406298814476346577142399442601597702051078716135840435043555249663949311416034626032283982770240106376279024614965338935912875395935753000612461685575381238618065873264849069121423629172820122884231052977548605627499910368745345035433760122276913509201736738307978362134640773396138060079989657066188225493493901804742353524101410061574171943954531952171439835270076115677146630548169607938665232035058116805376375597490098903478890250621458531979344034002346130282153614498797450095058963577805226841356010999217255638349032797885730460242970582480251625931725821631147256070632255906215297642523442124871236261870587203972826970764446288949620693474510659807976942471611744350971890202209477772582324395604222852041630490441932074725091119754172475580856422749699319930934934633585267508971967633659330382089418148556418508542468449024592248276844008282847718761146422870567651024430480911234725262048716177344617043552146750444146819859668800829811728290818661167021621093412775360689228879895623166423543524943576575652650464101628144443951479595330001141822868505045066377431406119293278941259144894013255603806665095601430623118879991876927451594611140657068680804213338542835426073248139094512404305899143246239768812628969976539316639592969445014753408475318737146844029800131549793485306115712929609991816857819646258750109459152265616559347866290637152421346416653299105670827338758482602409293755292505995402257851631274084724226343020390476348772666977773364226774314594969095946580438421167839159399205966360330370222713291948918628130286999543075743990603188081784154275669843261013152746966099504290452777418210859183987762950801236387668470423289581442337889878929517339344960656604625514974536479312201880848220950267358025251160403978583630129148189328578097557356752908093272681441055171582829250993297279137582685236108121448707422450729893928381623690910960506346139685012044609080965342370402937423220342730983743653838699558421194451744421002437344507677911187293875602433734921631156923590617392827112852816096202612756765231941172917008294295423290264198051639533576748646128463187367572039416341651093781219956985087978722894516207585274095086603009560761309780941255163468216136318194810342720984178637501313703837332272944603553269229042691161042782098931463017961679655470949195459124601061859181195006442073361742414657955482145931674400180628999556687058748641695730752852343170287229050255133035044288223003860142574654377803379518515824874609714253132111455072258394201944972501650306637962825380051448338118016976796071424169802398237315987296296830466435032643214729348639424311555911527821655916129404419118042310812521445621250059523249938594500443951208758500812900612499691197791434121485505758119165794142128935280172998711333012267635871119594879259568333347573967215504458114419390605073019524278565424111945851655736104283047223730215416045315873761591073546869815465263125916050328300782017479025324718893321345428606979240636796220042264068398299566171035954084040707792466749786799768730619009769543638657140989007314474683730353920576217434084809682617657361309399808848945832779683866912747636525531991439280008364430707481364686148467134138846036615578832653396174984469406103471064456080272409593332818737934319991226570765481505007015734329197601331152490777662651202152266933523974378630032585817781668135094789010232086824402636004100881710867515784949141168980266319448899920134126052740808505413319535780991305133150946568779827019870268986959175881227913575676384590127895251165900691349665255195128578928004069134146151479663209291822431894287396509281327536949371993162513768489357019936323725167992523984399734058952451876825377336819686783434886996882956022027318838022900891749843342457165730690993527816680115859296254792377502263942856962597691696037800914456457130970883304781756`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:

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.

@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

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

I found the 64,000 digit computation was accurate only to 54,390 decimal places; see attached 54390 confirmed MKB digits.nb.

The new recommended setting for MaxRecursion (M.R.), as hypothesized, is found in the following table. It starts out at digits around 2^(M.R.+1).

       digits    M.R.   
      1309  default
      2410      10
      4453      11    
      8182      12
      19734     13
      31286     14
      54390     15
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

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:

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

Here is a comparison between some of the last few versions of Mathematica computing the MKB constant on similar computers.

digits    seconds
            V10.3       v11.3   V12.0
2000       256            67      67
3000       794           217     211
4000       1633          514     492
5000       2858          1005    925
10000      17678         8327    7748
20000      121431       71000   66177
30000      411848      ?        229560

For documentation of the 229560 seconds 30000 digit computation see "mkb 30k v12p0 2020.nb."

For documentation of the 411848 seconds 30000 digit computation see "MKB30K2 (1).nb."

Shutterstock has found the MKB constant, I(2N), at least 2 times! enter image description here enter image description here

enter image description here

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