Message Boards Message Boards

How to calculate the digits of the MKB constant

POSTED BY: Marvin Ray Burns
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!
POSTED BY: Marvin Ray Burns

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.

POSTED BY: Marvin Ray Burns
POSTED BY: Marvin Ray Burns

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.

POSTED BY: Marvin Ray Burns

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:
POSTED BY: Marvin Ray Burns

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

POSTED BY: Marvin Ray Burns

we look at formulas previously used for the MKB constant.

POSTED BY: Marvin Ray Burns

The following subtle changes transform M2 to M1.

POSTED BY: Marvin Ray Burns

Here is a summary of my speed records.

First a full quote from a message summarizing the Burns-Mathar method I derived from the work in this paper.

I made a quicker program for calculating the digits of the MKB constant (also called M1, I{2N} or MKB) 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)
            V 10.1.2   V10.3       v11.3   V12.0         V12.1 
 2000        437      256            67      67           58
 3000        889      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

Then there are my recent programs from the Abel-Plana formula on V12.0 that computes M2 which is (the MKB constant also called M1, I{2N} or MKB)+C, specifically,

enter image description here

                  Method ( A, B or C)
                      in seconds
digits    A              B                 C
2000 -> 23 ->           20 ->             18
3000 -> 96 ->           80 ->             36
4000 -> 165 ->          141 ->            64
5000 -> 442 ->          418 ->           386
6000 -> 623 ->          591 ->           544
10000 -> 3250 ->       3070 ->           2800
40000 -> 175, 551 ->   164, 005 ->       148,817

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

II predicted the 40000 digit run in method C would finish in (164005/1.09=150463) seconds, about 2 days. It took only 148817 seconds. Here is the work and results with a check against 100,000 computed digits from Method A:

In[32]:= N[(Timing[
   M2 = Quiet[(NIntegrate[(Exp[Log[t]/t - Pi t/I]), {t, 1, 
         Infinity I}, WorkingPrecision -> 40000, 
        Method -> "Trapezoidal", MaxRecursion -> 15] + I/Pi)]]), 20]

Out[32]= {148817., 0.070776039311528803540 - 0.047380617070350786107 I}

In[33]:= M2100k - M2

Out[33]= 0.*10^-40001 + 0.*10^-40001 I

On 9.22.2021 I improved my timing for a 40,000 digit computation of M2 of the MKB constant using Method C by 1/2 an hour:

In[20]:= N[(Timing[(NIntegrate[(Exp[Log[t]/t - Pi t/I]), {t, 1, 
       Infinity I}, WorkingPrecision -> 40000, 
      Method -> "Trapezoidal", MaxRecursion -> 15] + I/Pi)])]

Out[20]= {147079., 0.070776 - 0.0473806 I}

200,000 digits of M2 are being computed using the MRB constant supercomputer in Methods A, B, and C.

Method A

  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]];

Method B :

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

Method C :

N[(Timing[(NIntegrate[(Exp[Log[t]/t - Pi t/I]), {t, 1, Infinity I}, 
WorkingPrecision -> 40000, Method -> "Trapezoidal", 
MaxRecursion -> 15] + I/Pi)])]

Where the MaxRecursion (M.R.) was no less than shown in this table. enter image description here

Some of the AbelPlana records are shown here.

POSTED BY: Marvin Ray Burns

POSTED BY: Marvin Ray Burns

POSTED BY: Marvin Ray Burns

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.

POSTED BY: Marvin Ray Burns

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

POSTED BY: Marvin Ray Burns

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

POSTED BY: Marvin Ray Burns

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)]
POSTED BY: Marvin Ray Burns

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.070776039311528803539528021830282001365754696203363027583172788163618457264382036580831881266177238209440733969109717926999044645384753642922584438606521933304712229061202054839857643366234348984382707104998970539523122691784852990321850727435452200512573281054221742493131776702958637717144896587792911857161751154056236560399148488175282002507230615357345710650314589921968316486812390795493825565097419675881473625487432059190286957745724114399275165933910299927331079827467948451308893282513072631025700830315274308610234283343691040982170226226904594029705509327295202266254907522594195655908057483599892346931006361465525506297131796014831340450384168780549290729818510458294132863778428436675378730394247519728064887287780998671021887797977772522419765594172569277490031071938177749184834962793846819841195519389834707509815263865761498090035026278031914243025292192513151523961184107072253047393949629430526462797774487681485832533594711707672149311016050892849459790672868887353303198621512446767873642998154432118712426914714180439729334146834590238297747297505327198838694629121551234093133484152671282598833065211939751743799222541980456151789944121331355534909424515215733772054086429300485891441696490339106907723915822537813700713422515725943626775674998089209754702092393835807619857037010608559686303983242503748149468263305524592569770350099732195820103792626837803727302149916858003676611833579648850161974289307066295385292264148146789532534018500663115301458939914056746464281732255412427673987134378476901486481643010214267382110309942948219026255134289368926141456507835130045465517312459702340331228111267435496316055314114556780187508989594271215763424262712627536818462496714779540634971243490203440365511065733682878364352820645175569978509729384503430139907233541807601854490195569416563976955387670523132651233336641356930914754415314704075127865178733189729133883157349153927681050539319342024158839734756152628866129072812557936294818161828808656997350676863678100638665090453471766213180184580347482342329815783452591212558102058219640107863435206555697364737100137987662663399864789943963686580917100826072779670032354187337952599315869758343032330430789535848205130995760662965019445559103774388829399635568701694556146875666781013702861826144258075208496874879083455568328681099229371471079765544123865836150779359562053397477696007052046791930735075132461755916090435848393372787935437465477001540531593491166990427367939171364659936484076839480326561888842066916934027726191445519182815165236039969271906199165572967774465435658895360212464668859182436559719902592966887677317157723564769470966504809803719495610412553147949889390774545933785873079697751596649423560810525702297881012535066310953059173466991846993073455093358737739785634925823404941147193888538508601103091827831234461849724681876518230776707504059798205223622425561720277264530150865339362170035691269045025509969321891731560741189218096732257904718017021269158804091081893310980505725290222793165957573348617545765113081195686758290706888306672383789981683767078789936086993381942219574621869951673380967053013535790363129388283771937051987560629157852780129604318641809660810082975582364927602722180634616999854269283202777747828610297911628099017776028446415129927710110657154573733664795871824477656637564714843305467583424424604924050468692267742178586739312298081485814777034045005534870697125045231178310329107096044287400578617969343385675730958753116534786649165548620790157314152330378600286379297286583918568871548925195565076476815630135683254220680403389163615212287219602594665239438882578960635889057342860958553749626872341626579340541933252296126289938828761327293264358019848857841017491715946402657490439837897123428583966109845123070960667296061999539067377874512956743560862740753516563949234281459846551332522915829785562103205821458980942366829155629588763971081322394427454416706409802539641154391629023701453391714916948347662203122857469769291871358073750651140711758250672884098888807405405593449930262822768033311368654940666123965961682097628051787533153432269477973725408848612568574759524191648486400236154561194378057092898441185063663830187669291198656878889978124579083674648781557857182306937823881292686558605413511053690755073183966935036953672629315776834674482691468988853634828059383963995797625528716702510944568456637484426625048380370884374808688482387598969356511827831157258457529876159282928664432613292805030534315334029500951935125027694124099910209710817224776210169956199067265839247512640642195764214979470890676869952114179684300914456155899108421759338816560046161944330902308123313417720024244906737902551936762799375189125984813286517079229802353498975716609184630797173550793564923713409536907351552262500485236188119768847313696726648601141592817869973986790004329553913280920963325070099177001912386792878780954924484808582355262838048264707195702923924698979001320781348177992287817839664060484503563820200258656334965726537236359978026725791504105157516140797883950556025421984714806995182878718653331268913401019166228134094773213672332438799594850683375678969543832220323388490638839510493082109434757023721458093600523869647858795602597675052102365529258385793479336742376652564281653981098119262948931157164784906025791340528131601262031755341557268245335653103642766948082839762288667373181714840658069263028044992647908164076439806055399302146271449558683100175744807399246425254499008397201106112654858953979538951668388869288990742491994241369647204443068944944039186579625302465122559327941499671767606189656563918176566204917463403031121132844150161819052808561834255157779089280887577585436465335977020666935572455253889179573795213299043478798244873792317601548124029861991855323150683524799568121865244572539547188942775310130510833963277800436664694742759819393301900578467183587985075548404271369578353942422556107740401032408170403926867541711425932317354311014249091849821608231545191413779712015413088475363870687988559143974558427733291209305140617945164199940886984113568926966960933908768055657142190237882054240766341563016046832412235258078511206639147621012970144503950967958991564331062832772812302608802311640609021350932127800145231652746208597577382388853687489761922852503481456311654040376832873219227415424857828206412428532478947852381376309397340311054440340245378786425781791209899477844644155901213675116918362926196952685981994559511391762270547559679384576655733763326226564504533982980911254294493649953292399616765969191897310123678612470626972049535738862310342213225273251866275543860401604443734497266417858493454428552575503199590906572897453276144711298885997083337288795446849551869486748338831502624409011030398968451095183927784691858691952052895127312327007318809030939210381385667762306874562299495094205843046329164307880635307358468924237275683430863907402517905968961691727946665118902566001110787090106613813014582778389561796230839294266454503063910776732060686541202998806744770391345029083304376989033551601325342703067007503116426288439388114323982888973804856982251092788167288178077553805467192943021555623913869768630906106717107705342168910105653609111135665850283715232805060630994590243093335697976881680205775431926855161303714860594619371963774022599850195440958595885185522538616347247923601350969215528538898288900663256729508519017894080513110310886364049371906065542616218058718552743181494239529744902051216549292125873755249109758962107737362278279234207885162317784990706927506184507337078937549112592899506989153541682692611616686993446423585194859547948349271950286855518769219337684901465949870543019073253523211717159448209417778941957607785572837634938991810578160984608891883922354212105303873840402873647541298608864799464200993021741270611931694795530694234415404235824662486095326261902997186547277707286044097270947036767965189039260819605489098183495649886702377630939976156086738048719316658079361732731601786353652861401431143127193291257412667241781220376882077917241439138490876052311082291723954668839043572203005655695386942221217109760127551889537041712484192547966288480922938901717603400386311204560161983154131681039950247585357583092141519067231910707852961298948650936138234756180986373668167841350335453682695881468339691659042361260950200195419666523133619356329882500015524150814875503657789117474557089436012277258018026357295936589197964443214692206364291169469583815919832159686899436057013207307836719187111799341390307893588656564103912518244764239117275526568763987945710421626235322494518602849805059503912601551107518838225378324863085170138818116144992599822667644130173308003806131169923228017686027785381854721168513825493926128081141671668995116956575558837864128759736694898428024920141050238363288059206172596942021964674551417217329352454066051492810452268437042673147140568220667802081548562302695435007395225246946557388186801201353262313725721680185842928830662136040972429473610788067072595327111658910644490247919862185294848749482048382288712659693577770396933174648266982266034703151238462279727161608211749444389731171320446064365027706995028595414841456797916625375484219967671553926685034522985701641651868438402177388346033195134406918935754921649154301900267014566244170976722893208787523628688535705042507210948043493744985544318832414159425578800006352903659967737649756442839988408947464845722707925573079943048670896098016383934801916912836399466222793017228342727989559708576058289128655835639979789797451825725441562168280075407954100360901433763001278333921467746405926476707444740417132815274020416614887034979784969204530171167202546087882280913223559833906202327976609462663638553299339483966613751913096565424778539819755084108917317657019088050719631180595571970092514302134930618590652088462959744955558076965560370520500663688723889565590163844109806944636963527583319383622385602839822362961360533591984621802295397791676692763526932256067621686235884249276823652244574927303571222980061233941769042087102396250946036421338289328257776400658955274259021344975831051860293003302671375633645772281948546427328486475367800472465058319563852450772430722346002894706091530586360542621246659012958554218966855729147947201839103464665154349618780812685757144943277346342231134529285814141733025925180022208807203688619934138954881691994625015283167939853222986615720764647325169532822990645919202593846558371567257175266978163580543345002678808477142747799446456905240916836287619498083114665472052086597189359852212784998361131460948692648382296815939615790301814806540829879559667749327000693664036592328249999945477367978199310587359848204740090922231722617021714032499697445590815016705100562344062392052613528375155851256901267507327122030497548257481526886106373263745153456231339228366473935634376713438309361314092372879686752767534127284961911784002318887658804221903477565927728231876666198903277587415677673552831577174455761180100471746969228015123015431990928381213892651652238012899312366322409266722516341730142432937769096458695841599409873664354109833335325685328861427903250118999109882506971571281457239799406430742378144815451566878070588321317355901615356838201562922201693095730195677919721858161906174194755402939403168984934288136604754686524208862144793708270625483698618299357086365500581698499596435153494716399213961446213309487181588239508188556564996454817185547233801153070069890959524100270663484833764538959829082926012460958866241959909863804147908295263615452385407772868671489823106282720371795303095468226783395561822945522151950857095524196118908566706011781051731648174701079008159830990639037219361531886202165469641846437109329275643670077516173675594558466271184368337885408156860556667899172205427658014998521258969608095815866701061943983974276685341335913528079274361805811271156008555215130528453981749533243234074487115535954443378459655943295616129816305916690269990556858424527870851134022747575563730918048822644218533222655930017923710008125380080188177209375000582362204147294773247297468989027657846565659993987983442555529161067492007921404035879109537933643840267461393704269747757749462311349896086501959491873779014050187566047630013646623849850812585834384470530142182722571205931326635073601787757784174960174613915950281854605964479146345408167984271120908032382814240384788591448312715498158608114896575312091474078601644391968817255529317443745596679426629805039887334295337228504222199833094324678934817587321322775826996513443399714591649464410696086581733088692712719641858334988131220678201345991756965108396602590094188029641199954370522611873269354831988575149045222760312221864197856323717194371350383755131158348110682058374923756403652689040898706045349090937787857896574767552195924182207265545997727063565272443333346589171550820301361469183735155038457887653637027557170417065755099048867804333424780407269923882231223346587280637682204942982053984555425889214829544881368456631446859703178194739910472860183245151424265664954002886624285952072882906614713922500692109996386359923663229376391451172782872355455471448840429028555160745677424822216636669585453537856468227980352241784645891932959502834175677502909173795810086903969956216474704417545605312880141147651887022880470165732679190881140767804304285801951227022218075627866819142181156388966950915696830042870905968751095904209062387873497201730517501656629538648545131884457586361014808614553518773266071385214600399346701990133262839865266973407886621965021246364935101712593227984707794881010875256501614545399382755649445481419584026099816017290888228435276953786115978951444057775041535374739252099010685830634375842967192458793737312475654905635221479039190072228204747956352863925444452717994238399998713870157422941651106999914584655706176960316686260080263195698825681194432281661264190271620402834141776512949545059113550373441908954722705118548036007706937579256954091725415077520103636578898962904816806734281718040670526235992760841971344528417627199461340680330066598295985522852970473343841773691663289667735172098106459149475770193169056665212674789560291454267348071556594253789451401435989931104612548678362512159906917798560950981389298526894031786242801798346268196937095165723250330250607000087520809487070044783816805361078644485908256842925354399516268961805493560530028540942573152339031545261908645560957150758956732235085449424579290514348785516632264468412626981484531087984926863214046384178303133811928720549379234574517287273585007273540427506874330547355054573355391076375402380650830404760063485938018679325977555228592085963271338057200138435643281414612024537696455638716483898264866017025909689198281373937555617656010683010387298159879498919913947429170339719499580261867536767846021937280206976289479938740534203361154991505110113251270960644431636912446252516727878892020596291234866168242596930696107328931894945881061102402327496946963146750348220029265461888308066639358637106856586856420648623627683015334748291571535177866432377136752648408331525715605118637938623557687361778702239692915321119242299760522722404145538628278473072926375382153857892830364265606035202140901924150391895291707511087253959198713145976412025244643258215978649790631568926089839805222689930687398940919066447051635028456443266553010269672580691057241201402910367418039161853279786195646209164451410940441862453568216086135354827464352568433085387277641432148755709004244275700777671729548257534994112459189910883433591004965473378964418148046115998437296848315563525000527067218741717500937471107425091282377897815859706361625456761987776564512484295809446785424140398137686380992548895127310370749614528942739492699916395823184252532598622292175683636672977151011736512966030104594378956859144357443099393398672167270509031992986054930911590743078694886446437952438475811378271311227124238891031116993572320841704534449874472954692538885689038070363592994169349636191728582872220660728868339415073469877615234419300209065478582912483051891698929045847941714473805835664895671882390988029744696025165603111821802677296188804695164647864499001553809968400498441223018205874587055738343913975661102199741640554486076535141903237377590418981157774154988742735313934788547029358405595850294852753635587405695634735092046670798364070217641929610789964030964583589720770827266875331236713636866229100776149303821096422309915986366532015913655415125474065007431918679447154948411111175518321431340272313480810972177732607733878403962338486738427558801382866546838170237642471351725977647439788955512264376865395829278604674326303331896473625621094136115743504810615881957950627499078924049443002002741980614806259794607821534733959849820515283589400690555764933589691121063412080359569048234557359110229200585640493908942067226018512991366595521081382760500499871597532661761268249582969872983352251826462072971232665142534277760819223564753667379992429846552676256985015565209697065782052901820851727469174213270285689276364913936627223754950822757248053286360008592680413005317086540236320680368826189669299525050792369553973256927455121527281943021579209692487235389673750428360036425156759340214670382961555740761190431813755872804001886339342429096888283406066379481895236268626099227777385791716709837412427023439714245950512588324975080635332064237479556838376816703035189359020908118212096367248427439260331146092363454280322688168715542331341713364741344879195991024127597597876276218216425050526834849648784588233939945284713143748360939496834003873561739447737830347034215659833128994393394260292937930936064023250478209452416781879355751590049153977289310321160693915764394945844016255422858980228374225839456099072498330737810155136240880014039862439369103153178743188064496317909607467559431630287006617530356830500397682082547455831600646077329676538432792646647299822078144446580704521529417603985138667394708613628525530267031763659938118701722683716140195003058405220417652800063011024682218918176735371117406414557475448511722089751611559367278363165616337263532217549628505514343073244732297279864879022753120921943282456556690150616425078061225391036829884323519354219076999685187512960092922320696776312293483308356950635307077781603487013570327922793331202172073276374229289791460637228783274941334939430869013542492579265201816295047590789887617788632568706082377729224179676391875623827254386155597744454364892170029725981267570029414156192493623112071107786515809279831489235245366977731779878716553037678088278827857861820094059256018659833973203364295634715933631331650878569647604425079100643815222941241006584128263595964197885525440508032469962135076865730659381922372367293580295257153603109736746187432634299887326566312372581353754704790341993168939482796157212693267859854872303671594831696104485082952608533407884936256621705452365148910188857228452281690636849359478819802431126763554000256611659783228577898740156497984532706992509808708335632842642585176813289636042343090689426493461314139506400048358815664613689565838461896925236720745578410876397904112223709936522894095751172248687198628151120779828421076542973731102007338688297635666058086283552309669325340730066698392896991927812203896075395740241764560054403441972517038614447845372638644445687186704125078091202216181674235036681364462391233412593399340544910400700928870939810501138575422420790851298226940235731228558510040023376698840034523619010874636735470188070422188572872436618495553806948806462923150857469349869147312561736199531902086703932528045949414695083865394895035357249015652670349543226517476913070291419659084564710050638364769491130559550467560279742193940030629056586404376396534567871277983670432899723015153432904436483185985112411992903130598284171620269843601583816100222661496464660961287550582937642702016389011284533561920769957684798846252556926818374077547827416987253362642706218580459826170299460445463933799699973081508078707894923951707312147900808329350868600693821492630864682037071505659816269140954173426599630934048437660807509166302669191041762154632370647800988412225791592407476078046878560889001379049131442567555181715343270250950322056910063086927550317452446261972439660368392034990998237591085006763079460428931159916023527113567357931861857593994025084837530155752376016953707393305806850932586662239482552535920127437518429547047557501549410966917604459831256837439120229841888122933127258706995672883805396902300343996522273852681283958911462963604651663707110613827885510407291642274867527712619467305584051289675225661320367548476681889200113878036888071699854202831282296416722608290048850099467494764775463889825553661917840063543250990254841311661687151900152892149351448917283879658136881663800373743189177802472146736584375122988594395343109831943963095796747192390507433100128321240101377017628946672352355513588559431830763812152196008642923156906967509004358426966471255566588999720701109671384359725938916328968989643588519367107373436798235662423956234981099535661312337764347045464138124786246737199581448412000797769791202628994652636979018953539077775750664843830978333113857273628602683659410337476702532718825644269889790205471737656137870724355466920969476185450107521285651173936897199181921539137606636263537710488798655082196923888039515047550034581801005586558106945877194276133823160380585834275481657941954077971394693661706119106972658580392225782243171381693331482650093216333709113407254543122085321332971942158830312647766906022335063165067948113729890904801096215868955779434431872761564721249053507550762344707014741847353003760745223463617248867119655285575226106314675935967906594415943563805763082505598087374022202984492922868079438507724228355295113478485394125744399750811004177630605723658961574357815328899541651995764709123453251946014693829644532819639218414260472198716270033553058032322126265884198765275732136241792745673547074508211702161888128863860594678665917835148038673803052610882694714277484289575750901203778651888745604456853330318095862707786489215255019411454045598818962392608988051251692901677821547987577104570693956583705881522173641286906815128947777178523510059648021353669062529400718243355080383374585907455798627082728648996856381806472986390409716619926685207856453770868386365655518624909086431529689879276906828039607770602324168466623659286227382603980889273363438031930069430361566007792031148803098086076075135819034403814729076456062519254111701387777441032407471877792026075073882791104270736440893179752022054528644050155117677721995190546912403421432438870928968117483344809220819848870474899797007582656900077414935992156795708559074850997014407073733828208602289786287900146781630944499705724046205714128613452151610353450201470183387081614114071874733575389657743567560244582077009533792855030443219432883153165189829971144403684293841247964825040119332939149043923790003927190863738161128072147825737297291592592348579142171519749821836325910055606534421633267072359791173596434266760436952536906957732504296059102429633528013201323954885775476136410452720104328312173896124071872086648956593069428622678925548434460239367046566078485279211147519222467300739401738284845449724443189594150173278709350851285521700244405381855680762608495906363451506255180613819884607562502106203406297002380584121893489622938090870674781456471340450940188735037973180787699452476967591361046865384433732286798854635828134593344638591088106063164622403308932369382612025711299677840213623022267074720140379751201641690041728121629216136485691004064163608065276094655380075293625331266558970918558856353504204039947617049161896678312702971298795167292819385246680975262689201459342299128289523510879145628296425633177697019652057173234633575686261502574432339772787646762599844307595718434761737271018632122113948633661919114100647721642170775600912305823965330343708851914726898327224180667708765636995939505229202497292437999012091179179333361941197172962468859282902707270296941193696556775801874485647168576323495854993702523728438945338292029831638009289288229116302740980249298316431621182825270823112428975433853616434308875850337916242050505363124808263531855090605396610009377751603479975448649678309505293621842878598610609444073112117296243693743555162390640280837974253055470421803178395427928793757355720769675832638150808869750986476473099913495611007347526586820080841001346503252977063405801955976722089870021814646074839474534012705540908188672248726877545492313721350004176457421840543535917061126007561743408871178390261245721868991654371593183071149630159068170128132146018567402559761907547308758917554419950110697643048965097078646934375727576342224712211892607321092767967830498825367847833008106061288946512947052400826020867618491646868393937681075403978767585334653737779178507354269862841258439560527951371674921847190255362433875046005119775225360427160256253612869539085334231830943601837919900551654564669753933323756209676513736333626126518145433924591588369761914801052023737715494137151143346532514715329105648570443527211374465268123472978449573449927513248401260766561971581789105880047714056224330010476705599238722318707532288656905724884136198032201361598992948536839327643153315989381325037619353247482132174337321203817503704249300218026208457113124399941288876185091058816963556806744185830176623238914552024779887976337875720942226395336727037852163021931871293726236869489461021821630547374383564951427394853018970638838022914966194917290762290176305719356459124713133951801454855803295229870862860825707797202273948634187235938997452180540405070411682617168809432412853957233041098062694922456702905010154077769789748994239012834805511951274429591865402525457550403259863510394167449590994552088696239703215889907685979635465894512116614637650935738579209542910006443112016514434055442213575347990607602564424117977599861195993484349775345571746872364810707090775147023525926213062361437064426059893747631811037996357032428143470399452205679684377155506559213673228280739752417173372365169776596640835862447903738086947064723349489603950029422173049969283683388117654962780330964111006076896137163086519562904447816996326177592874384295416416927963482163626751442719135791021614164860805804978715466942789995991745723994150013656553274303236273687936937452099179557902041862715617578373767746454266341067217786455954543513955122615877469938615340577938596224151723842336115682893695717757265537167494013489228898000286140841697310904920076873652464364207970733273761901563542920152132549813140873463304503374221517174107177954954976816184370006674214388866552697441462330889785691122534788602973625513504838163654806453771934903041253917070810513888101638024283466308982685893495784906085914606669227108136319912115330047949494058083793698572597520239535099473253905697325558116358870271507141330043360574791249975670978430519215124331336825561495646922382122794191272078543436884275649106325092208288532512937303898325260482078195836636038445048276315832053592618516669724434666100334041425958353507345963347184927567614711288683278104920488384877274404446705046481376687513842063027664008906699698008520847503922370502473859366692841285594287533314404709744355636736662623903742099161569751928424120590427922547575824505752388352995848717114294309155109799465835117527730406552178795220550549144418544339726451212713722468957543595614536474726694779419030209598478743301586715120366208572261148419327420923752134250583651261704148494787274771817865374860695918539811889003142669861253675862366866088527046763477522811718772296035770606799007002341201424651174089408862996803346658248853151112304993106410211232755336886136479210072967702762697029054158742628625529881120596452472367184249798573189539101319533836611248099538997375634260727798655675012798695070970754590623195020814996090190058617195333584825755084600655372018853637121437609815143586001825840043951046854571455712132486681244449882249509572951720782919672741341814086084305913375684550722026266064039790192186701423631513760195524366485772174207822757847374170464110208510265122781595803629030401101462723314376199450401965763774951448349255476975609291623610929449291677457838024612536746571836909522522615102951296385956850030777247949276745705180842811920949629620114142535032219008221076498570546886266871410417983824975749014017694598834143226996062245383865394646764488727309846185293848368040601671380135057336885733430604851638242912936639069640810447212362682719987838894655189341945895413819443607814185954361853431478322144946311620942448322108576144309130187715039937205614651460665730293121912841896527562267697346915584126401519805671489089034232788374897935294224579950801298486273567691150550896785099846544543619893419952594472784250722270516519131468545214146761603478460831439665269396890428499148107883276877749204187077656077143356720296061990548994528849463551022577454655611932869238857198751150303398587494915301259824990769212501383201630202583357854423174385542588832502992862830188921992419413326576465649612437706322967381700800974352533395300134751481106179110192601701097964145527254724500067082757782075689118518701423148859462393424539697063988788849936238578812356793921912986447744407099059421619478008523785728723933713616762987673344145094426090057080690006413333483984262536029740981576955135914587645912883981857211084146577194975452574751233404192230154742920028027870087575537754432254347838262339080520034949459210073877684802405577973570418152257526270534300193049368459765283551427603567019944304865373965025096184842369631607780224195151749568462657581139103549109911688587766341990805693312828208754947367908384230665189161784078309915493785697348154060638807822933697653222259980762447612776386404517436904552594904064222913752649275672463882293344094800972402324407395269905818047999537415562868701155339663378762506111235260728088467452510234623115837746568111463274426209780082325252846354609441972731123464895739092321947249664731279268093095282896934253907067030032863376706140515725659349196715440474050639791883086280570896272370212968496984174083709927099134382030964732637447095314606862979224301241097542593264339096890134797448286089981773081607421076237256785710563135533906947366837032184010946003118911763019020485076017073144280225562710809851538183076232619266952700258723482832902258356562102241104558948641626384804837681967867113899396938594988621081973873985649204975932178609758825046011063482100303955913677582587394537928989557498936763937574744657669318605540991572174386567087590697534380447489951801928232985225319731670375017897348637067471823654700030303049257370753098382152975518768426729704904023777096045025473609708377036997119156504428205365177777399474431133059960975029557375466629588313548959878582752455080636500643307908324771518639070726523401815061429194613839439209134227289909757908230690031148152557465006880650600131807977626671615136780162600249727336578488709787935453442875794545304133849654057755074724668895541453026338493039889047338096050678223946336010276642347254745826867054741713295489214242659123937776243717944038541156658664886722097656411159287809239349730394112999226821380755371674370405864011922989068730699575419261641278705073314092873709532928281244678416573833991454122356404443427329993309919009164373116889747541824231681691584535717324815635762707874625192208017146289884739706337191903495899746900925886277914810305152943952912787806619544980690786963958101624729724999092604579282573013894950071764048216235459793031703111267235504174145199574168711969866208954411412505135736407123177624816739843463728017335601068750251918347831293111601410507632957854654839869792227516523103663636310751675068841169774271934122046489377350144708657597021751690014609001881085157341602264084928059897084130631600956236342775012543070521919557014790610488184360474565206646828487707131642572217561736135955383135944824151780434790489376277355544017556493645707736126738145554036555616463583778005023446691372774954080971802282642956794424390567922853663605459043392333375960818232785280527313941309688775932229352852253234638964074365418906948525860626516115354684451551388811088978792874381470938037656589737337593851521923712996761152838482722278355237718062029260395208117616183433093664442587874015135045438607866127603918916050053273459576367069510553126944918109815863863214218447266154897988801982045909880468626445664159574238138428395067677520157325888768671673225987510192381880021634081136558696003456167324955150242335421053627002874757991699212748542941266711270519599381705207807221410910633600024745242861536765200714552531314153727366516654076674283704654858444161825740212015310189663942184837873570494500390220423411648293568225145393521838658337072932898833825494377888661134698032134011939967201175222364509978870083935139649988024721359719924013799502369386041568300002161862955666708123081186878231029980251814162553138377681065061486333055326418291661522769595613227485547766102764711007845032363170047855590840589141804256006008006392314230187481501295101445523313444528560942751638997275568516523418144427622367379155116375982048448565608202811486987957912199386040212417735683184288605480877132154710235064379913738742984663597156351199028159943094789499931949761476996890299060597119728247764833511013972311584962016832987184264900593908602973032946998974197181206784781305645961693534542735741382342449689947413062739677069914846183700019736295586244625434616493480588010458393270033530892290763776949393849005657837925874990620134649923847405142574199504660061643481720366717880639983572725750300289487637386530641425397834127246696434725732428222136186998302836537279874229715096467288798950859410191338709062273762250727166260488810952650858261032230916019039234384498588643430534530684933840478047184593859819905418646765118424056633889080118505372264116967052635950275952390446743086159344335565954932887871476092904359028875572543455778601438171485058777696065528786015388383383849367369624138128456308016171586649241134224039715384346969903205485229917096722389415965394877746326650766198105726598479203174208396162577956603065863725372677065695115406118363367199679733080653257302325366181352801304635191813385833302965155598305612648242283877574467818216040207331817221864536819300736520992460830658646957235658201261537937035206774565413223004215421127211155746912066127139555312552887798775046394896014961550668933517419072519127221150540189431988802780388147724500275641849277600008783619590408923946640451527864820000342637550120939648994118544511845290204256443191500337971451931953651860437972599324350785429343940680086323877481386551676727553107615183069018111874326772176051258687856891104208647008172082667824719383168071825717757874501483831956527389162605403510594894559596288106449930690514060335442631524875051903633078014556248164264647233673219026466185192433460360727273184229221624696247352757984946315072248527938058641834249101971494553812516922479101534841973992492458849575952772518045718933265849130224758984368087288667671380992774697432632649191207937965915496646549910020813130305208895352255661762933735434186482127455045647401354530947722850674797122775862999382256695325524484225008939717137918483034994123710125898877515266385452664284131444404390783476990677381958497629307644233148473922886730553845472185011783402424301697259808974822201330607945619711577254142775444244619718139807355411672733010344554681900773049939440643894785854382849029163801917913647744210019980290481607229255511143247132015813860138819941301053257406949234137720393081050733061195344840889776249772479073778099347816627048300578460338695192068956957342722062786883295105611366439786083615081228923834919332067237405946193289201183198635426289638723021130398329096222172056588882424434465093935287817976039929946028601108573580713098052228003421290644125850212365724701889600105741852887061761328517869887640349479362988503916884668471194389555567799357578156744578946929190571223174898621256795180500714148131906080806889297042227476017073056217379376718826729331745754214420164209662357155844656533217372378276562926007109562311008158661877470587613898166912779041955560644129496416097241822349316875818968190657878295086529111194109420427584073381890312096681967454334116153969366888806234884746724484158729512627860379826611015258839497494656509700061784571387440062272631732780439104355841988460191306736795995065366093391773836217311609639715199367278507437484085763081165185657399867360585661865723784985476414036821977151534063933106047012089758384588317159763618532806247171888819322483721756665029932234547444105193386589584055151954980872966938956134346313250945815711559214867826689314921712053341492181966250078014283319005690455701227725469836858409145360165730851557418582567142892882602241563133110350687504365290210770723867291046339744485907739428946167552534586782935562729824883637677235253041911318203222374940042559586451256133714480398301104779790557569405423683947675951429692169699325626106990245957395081336875589496720333345352069764537127200406796865694238440411054964087031919439183170498842180826369598747767842229045791127992948877924640773239876082033661310502591905024012605344791207060126861366087050690106821440186416890798502708805971160774711382800633684699037653782772326857707345395993805386946342426080372069312327269084763013141354052104457632993001286491987987486292703765660970330549469982286582941288156938096043164766104426447737176843079136739054517750890039352319983556205368027388787940452822671185429167183431705900590586338676711129122736091233150713423120583054622723964961669904362378247195762619744712297444988245647141043979273179103621554924775972805459314410694227454942191282378504988477943628319635744590704474600061785561502596486194535533227118746188691293466799837696023110304067163270211905906799664743440166446011158439920225371118022077044304762822851121397156376669281816451971676747678812722658199328316029406256952921683283889280929585898217755257236197073666701446176396318167827478942030822833313536173305509849241238531719584384361670158112933951186335656052873912758595032413311966860865209241167105432598378085858805972824195866799305159268320341491112177973253512094463015791852364643070334531938597928953776486193958654202116997280443889409438383714104464555266854972167992058979217654090307829608593428470205836731322176684493233105086018652041809172164013394347074938624127188646262140079469581469017538013911759965518608770531125919330171089737981108739174093463946449121251370357883669392366861287639593109679174853954794811541848983318168433444219014965520634009230534276771178435600630204637769403012243948619073917953545899149124706667669950204978603846223233980793118702183500369965731426467346590354137696086010536638626554735095944339201043986614042389537591734170966291535981501904283433208052170990603809163986615583383683470805908606874149807731803316684544954462496970088085576989862006896335025275441384030933367863146060369721274271043367220940194134612345186992770415873398312281191122770608524401543491799418530483994285821024566750257541504079538244683493157316862151164217197204862923147917467167709315964986325993611874951573118491492638255854340558493706444035055881342827000081531795003468729557022278830373853719500136078604514877047221394208049821498156273265561290380604086327888986671051518908452935760754699689832543821478137043887921339107000947778022600611841021115901446894079606543201886067048077025373398062398697048427414863306777259729257242224560048281197684122385541785305940244237066184073520140106178724057893897126023027500721057670326234577176967031959146521589155900916384996743085023530120508143032420758721687494306848734017745458432973519793307363574751071797433137361717434046695539895834013136071882340493438577345390653511341109503738952943922969122793206672544869052587644892747845229822129452180570324164978667821255955145763239600929532602062608001751152115828027135497330775065062853856016530229788140940140841842865358693012701091963329846455706998488672771737476843212694897679161411870233629252985833190269474251936571154299489176424882725024466618133175639074954197977748672180161283270944543027579424937578902781668207746324198604858555191966234535464810124448726639935459966073886009523823986183115017869868013796962720660040311595692109101758776527936580106536372379993400119159268934072623636494878428544363942712371916817342820684391238798255952789591640339338258953861318102247858762025744892194914265474620452742863328605957226828803454937044365069630498851758438637453590050749501188414062261472287129155880852748139632951736890231216458404336606195088903577181893078193121712320339144995972584629552093814527880797830546251012744715190641006150424376281356017618584217728760543813909543321892572280560449044644126947960365607569705174344102194903397838310037956088817075282028973334975327744362231250290551259013370671382088133616446072328072892144180102163894886047316360817523974489608808397630309414552790577589438273762894332143228834145331630167809405815738645070648907796440460617161031102949965266422011787421914463177737214961049999226998203897130257297378355232651290417886716425982544061022027334632420144683899210529843792236785228280878324166816029043813257753467125339084625181332255622768080620340083418889038138687907032244952275808660584363492358368722353456525234007534180134124334038904867225034356077516202750686071947504682792795265379346090022549441255811368890338902014563233121678194909683886154366525721519061235691843325347123875561992628486475961971360299800165230172407347204419823275509259690187169629147113289207176667812339538722316790256708295262286336735382441499778126199498169894441790607509452199182854978214854200781927889630629804999165630662493064722613801615896077619899930621378131621130257961117890652049429637803697962040900457156788905678617366948382932820749783209414709242756773365402827952631629346171348068285150125268261908614017191938712118952906627311025200184093281854890399405383853781719533825818632660383905883830482723847879633143542819740320987712211447996485263217027143080551968010611928960289969538727553837774805108866804580840440264926343218922531265731187872833751844008034303966932618138840216092333673336223687356520567329635439212757934793026874904684136637434984709285788474807765448174625677984055405191622840223133419507366901714853751542412950380112767767292685557768114312223965363989784922869668301947219905367573265482118337323601868127459335732461431555883070886615734067339372793094117226821014062530419184564559019327650146680693645631801179977690504066449148425201841316332033583753420656439834807476097127498376547060877194536271404615678240727298748776536485932808044876631179601903904361077385490972362139532700207252882050882243871584333275496107278839095686554673747167401327216804032799765175323008812440664269691818661600569975738106862845523730687170837541441561514276997808696920682891862794027380517677506090626653560031391630794522030764418323468092451956997807019016619944677649312594748535048349922783492742011405396249935581466861024511788956404655281017932492730895720538003906110711276825698887321442461122643493437612290593070889414203232131554317223269709089677404024616637013038595233112031835652037033999929489001914615618345553772132179865554324496878657390901336405924687309164839157059638383966120960976600259013234709764042837762893931014080032480372227993542228457457083526873784692183978544007988085523926765806286624739889148016363639847808999012130974716012742697361963318330023567973754800677254088406293291157194067079000373931122418321187246326549187562664525211609162571181201010912250156647093399712694486670958057090518300021556335220224089711799671027624052827217092057138072953067581214380663386890598214345680293321392535089629758827730479377488318536430248963018644880812503745027491426182732475637130520482604662716180601576693514621272019070546776906269061478792664128244830843165283334217714882741932078257108205693729214277473407917095359963477962915342414940306596235791603489567530965527919287963673535224048694209222718854980156634047532297585797647161970500623067600756418212950396998414356687968032368666411185091376776541517110348192138612557639397041520265223139794689279349221251209753770621505460193850846770214976004068068037063045473124050662097842362224675905031600687577341033303988897076377413467215692187812977174930412146409733988778604817515416766410409400866114558698939044279477167198660840803631795603011609579866511230164693179388914787013378328046827953759995289142087538846153120990365358058058915284794758410142913244915962576895363614452926415726770780039215122379110836561708766405518755498001897005973956684541567759405923229287159269674843751338715580110417936387768160823812947153348691911493759258141460764727235141541759747565237593001773785131013065807808330218785317089753999860776653982608023886270248565634041498093864409403253221839168558912383450718903533916342083556706091128461670637542372286683711243499663534449627783379416043505986522816197190481490735202570168252258981544615987113269403843392084993840666902097556569526133504438709759472819765861242007136325331917297432058273884152417041059292960455863731609896153094807649987043701486284262924130547033977601708126921233730582382722046109326124918856652641145634105551059200641880021609329667561877005115632594351965815950222839910677091098343788708426140517168890107918690127654234351894587797159158808387175106751934703643072052897841829585489509338187269998966050764071951647858919508310077911010745350854174936342900034384442449731616089926992707082565711733368475874865156722718709294278724726453015874171703614507376581068972101023521650043067672830747598866375547503896091304924797405340004275107145546509151016110240702897225135422875276026493808146728696487589916772038720298011281974119374233409021041258960046677734286758860146147297025155929123480413998651763524591180245312369750846047651591902876261325989668918904255692918036824923494646566622492355335286611866789834827413204854399713278577422081973389540287770044674236841367598287919314837150218643924751862212183209507741227645215318102533365523800416946980733577876513206048259420450493230840918940806333543145293072144066254699273363290770965150038833860394202438559224488281255611459905403817830171469077206819997920907802770623439625068996447655485662156280212393014294423825841884222723498098067304837251895194762776364374680538964054140703612687654411517306678190357158325297676457297567668123963431645597087111515767016427813580506689806537103986622017490970965740961068756479389640122610722388061379150210721195253162633265904473050092745063852309831261833787192371218578875596405592634676931967350791083443200495216351482917803299683397467860649267831740477941421366962912962343319807636073332633678786854001225250243908406550147308414639040816101076013331825729873363533481907195152766361698251241561812738837337745068569770796545613761203340031001100911391000892487074480815222542027341085792615951604645882015515563943616919763472204821652872574507656240487498498515881858273826453750439777379654727915842275447062466032260931077519839489073939984307833962645844252707134887057380917392090843396470010055791072904753311048425419447136816134146186131589956637565940790559365529151271943334607987460685464808660760377003551198818497126314752264943489308639878118230247473347108919410963511421690377566496156495083424039521316633556395953677506126141472103336187788115793104843106052541531480438199057095794308583523778635738134136962487292698971286089428962255045444108532089536364055937480899524541340214443060836690597097051566243717442472178315231345502280650406691325381832024778952233334696793733379629212745760613389637254964521142013926463892360342984027343085122607104419409799751571994260436990631295219902801175810947720688243404555770857856798272595101875996324592764281784836808155578527362640751536427224450050169181741030162513783556031977577503338794720362156631214246318021847231296248895663413836097844841895753542077292624922702003996657559542966794110210482651504638176870248034048327485749740897485027130791999881032377560377796227613106840455561017827875390266879241528947308063102703061393358013382072044955079162556005851394747402102225726743744931996943953498821449300738280992408660502003492592258260604052859924231237481162556686598829856145442517669629150583891789380970100677626884627275139414846227183708595817333356719618806523777033466111046026750450430962952278369091030581738096187701781022824264317340870765544525328583457993160015390499085728128307560462734150843136434280495011937053154094200524683132125927907680131181837308401448139480283244364218056932008648844967772478536577456849961109904823143199971417222841095025427845546575953035338458026000098780115700276668062824298252206628195224450491721835308187745563783789192715418783511260409222723551585615778967387606209108850135942088974029482613902649121203798181594811653333732308670777918889069124563925760639355582009352286641622446351372787061808935213563399935539921759330881556897296284681671142400571770213651353206354681405745097428497842935432720576753166502113597057920883643591812752122338248366441373209899102767100560128237176737909845338672197576174359804628286931665910706950676066812212126707571532673942363963115448354462951163467677582403652302506868142627415204047893265933336391010099958533098302279501195153035863180269081495589914267722031915018731448169448396256058726555912378047995851190435238152954058969471808276891254523150698704574559849783974866764292224890355376504473807592604603697039618774197488814483531980379096381431327339886852438383166641783211706815497795382724579406573000804584043883600505164405680953912415004748912335889765571252542349826316500186853582052761521498408168155176242848377107165877785144739642953929410288374197901091407888412680867189841743049253908070347539204534031813236682437777298026633011427210276104555022854697238425805432358259751077303601093767587501517141047327818591786322418282341265033564057840120367353128607473179720692378121785824504223224565091911366017899066194016695107486324606221676053839536889138212312245971992927124113569043281922838800847528745981201027571634713103959322292588562905402471662497840132756917815869638452863199306703374689100640410517449496550019377248688087580555398369910577614402046085709852887149939138032560736003140167902510180311106572992880576881783125864897075019748468976207570846267188466353665946229446187369413187475325594410144048016983177184137708536885507469138956583704343981483141804925977458363884649466246405508827592961076684407924869703448475944735245210854453694902271738110891985145749049675554945836683348826421535660287036094346596060354823262282080869108214804468745651702031420741696335730925132600826181926669271574486463377219473088287205481167590421002880245858025793078950075755312775395168675793969625152511933643601647928969362704243107139227417096265753428216629526036727927470753204163082648427590643955902631677119018523241770367128178481904664737311301496204747494156471923889312466173561111169922387728662884859737605535522544132240152608456315372973222909532702884406710216001616950842363274424195360554103955815946679494561506728671372678006138979226756841375870813761070547762925883944937192253325741154765957968363800191930877581409196386201297289808151946682071219077775620417780641009447981168483406965162077132562812636315704344803936558000977611862076324476769411492980181725698870160053342592330677641791879513093373692604295906363493034272422259501509814565978762555662875995592891584571352757998361374842576718342768042668867568073536775139904985320325746427479934304380847664416689701579408107529089321423620305352364238223005252979248308179882609899465626094633574556197151585549075124669779521866333842310380546986070788550006481173429959625785702446607615082067239566885607059559424470247084530290839683533622142734855540607468671381197183460642283054147032555841150245216017383876118168139520315473194260874881004429972199730666196063920149296128098316654894866522066950574208845001297688116166027387078739450512152422208428708833946182609617206926900224298407127475212821564049418996982249945085954992896773361659513330988415927707242396641417802537743660976079313085343821411633004299967768507841545727238608438872391817895063697017357382986777453300561312271851037532650035878233554674617115400199904002246510811930960271624550924154967753689399446899915244007127015544993508726440140969009336565039901012985115014038175927810092217366200458700157824573809371662304546227804301792412513062713350284452615794282752806494983924629137719058277590114615578630285860082311276145736543937709462676747351126762533952617503471624287266406032584763888867745241638500894408124051214097747278830772104709117411596542858985601882323234878977067592535655392381811574618039447539876256011841952698075918386684804393604872375457030367609737112769737923549083819315202230282520271339817481077159756598388743895923457084746974696064835894528757938330628721459264420651046844007175529046088539202687725127428322268366240075722756401470749375075539093521406568190780215664212886451879694196428357945952219503165386477660262258713490033642346619212328037224168060393200274482807996062014272403556130527488573211841610180579791169660398131387849810870453146779132794654401169946647881468110582858004525686801425043156215817270824100443199018614790448868758707401591171304250771973876652038315918047123246055873908071272902855530200500908033353430802382641196252127938049796989801734548582264899287570936456025856852901836180590964186151222514789871431741658343137665197165011705344804774914261888142892155589974887988962870513628943203856346762226126365089633484301819539391154978614707919913591945179675801327004356101315735565695584153959225621288422813078018885426574633135541993757791693886128953948311175381482196918062755604069363773325236130632394458467999879601849779961205263196671714156461124482197409916485088871377505034020851316889162907480133321694412871504446615741990602618385118306952855788590470748892638506405212276530366915765974199500395593017867764529901644762496210704171169365610832510181481089079946435244914443788045099569632135461932904573418547066787751903775103649308496187617234892220363198596108559815391001903217425817913743472133367555996189729536516678964029630458934465958416046596244342395998255859607634161736785673241658155325892607870198085862595095291627764614264301615210913791694994787774560912818027507126421657048737071237620620777901689964725189404765797740521234530942286316343950274796512364493315789255614943880416375947253427495054969936589266104681860745671293723307939791250432736016926795118728596978308213271306916756488567353609955062189863108414331094127139140407506327687210610455442786024312493390410613321406640469649148754789374224560838299594180154885601287010477432205382044258044255890445216882671152007897038493954912261638667758430839317111095363940077457991534386157467993442100511896302306099872682386178044065517210900380874202317287086262931559835211420677525034041277587979488142572906183160655481613482506705517324648845223556984252792811742795871816915151706683108622016580012341302928993624868309932348111278616975180585984971095924801943164354135692485668532991700986560928146989205656391775114902845941078837175500966564938068231938999013531836556489593507289821312466577192334895734367539950376683584289761132881487118221229471037304576252233678015992340338295950682568121989551236253167708990928763644388823591964166602581952513453771583573475176763805609712873139044327057505782947028163586722908845681405632619363545368926838000971814028704772087500176148558732226036196736354740065357918632169040969926099679876155169087151999146445912663180257426270290169990685849047420907718832440871394956174800297265157679651365758046542668965251093307424027355885859430264645840362598754945939623920987789721188755547423480191177996737969136168641267189937365069187053818621891589914759093155101532979231106241941872322339351745967795793048926640025830153502839961386219166073089808538228115473162112499639318445116482854264879034292114073685585909380603617635973379797464389320679147100588419062732635693381351248824749320952641136795777365850745674289825451612610994199360592558958523000326422792969698454838920017420848985388195659741576399244285073789150064387977364495124000827202161094913884855266713144661284258811738710770200767081572188304391093483792971252207988079125668514291278910935113209832866647250921160862190008304270157848988340752408629635120789236297570082941515630628787306947165062377181560707372592275828070433178696326261023026754212205733952786213280129770555606285883716709844270372436749990989128191002453129201162368826735570889134103599931237782943504510228253688507211950049041281463600651593778475703334467541758566917340224436878473029828863723681797279805661482163628434034828911679763821577786693621605386255848616062785082841590590413403856945094320058004171654537788679564797197248996443294036040996991797553537215835099451835177412425816974552098405569543368519204729700641183693388880475237132942629251724653388535792615862456660780444989859681813440537516491572182653628140265012900907872425765807355783764965789585444055379849654787255371472276299209006430893946690243955469687449855706426911081263895102873645871384729023686049649074758782546579409438819267237312699717389797676379318244194875435003249272398991461114202221307024172879494804543181708487188840396068938599035627670596134539149777734106420821371705282520310437693217846027589402445197915109978802666310519472029804928990317876492602572092167913717859014020970893081566472326470522042605965356860212959714474344119007535918110878508890086609319145063658592346848261719558958202029735422762755572963130989189744722895458076124391479605792868330206888632288883603572313195828305507578157785646291084494574125247254594305312883996729572735819360695800430189007237742659119323614703607696343182694518577524512441034963627685512792435557346013591910508946304730473133291422186306391133028149725870406173713425055736872310869518653393472650506392440295863173158042633332992850483212986352883245677641201869964063548969939086913509514687929622617964554452791726353878214981119030111582717847450692618187576899949521571801478933720249443529147612200731143088775444337336751417200169044526168833253718921511408994623840319645256972964720503079049521873547731358276876673138416680084011318714440140007547766141428341244168733051324558400412840958154147406098081888977669294586116079457502017804737986600813656193019367424771311736282992216637095388664329968100692927945980866563806371643093723737458057090005635052550291651207204731168795970742605104977061650185965055279878660753035967262209525657655640613851929147670435503651768673291628194398479139650936744707667194188160856923869992687325018582071230620871071519350068377690942590277795162074911968477074435290349525300876869133964385176737625024456858286906399270339094863403607679963320199715966301309769579215128192227234433313966874164929757884638503576879007653536870799604513538404040897132961404423363919898706914772762023013819703024735206853729923350739970885956611136575931562403691896946368339634934247936030017017099038771611573971025846506036653314935020447218023211767147656592564158943908278573666549706874042962473194388661675873756013449669655674282649164113005657842735871313595499326964865929537645964376662378480226584567824594197428465988051651052519472333625322820803609965601236880166382851902234080601309047544587403321804081492536474887574224124766927537013344083073693441127759600675952599584301298221782306646472057659635952181895360334926124218702202542811651762941867412793516027026431699383318796042816197108816427456435876949743231005006282536061830981759160053093576100195562010950280459375149427800920752575756415735802846038864473821602932889493719156924336774443609101081001008312792108233948074474871921569326460887469027012778479970417643042849591528815962409059504304534549218942135135286272284407937403913239625012065250822684141056764834595374985441614935344881645686981791739009194139022592394217470317147584118067363330212702338743871579378316117604420940110273151566811702385744274095137378645406745776245871516170865536267653711772312164343045719947421721790190221034307155039134594867803726352482860979102477963537139058634998171391651704318640363015452639734201136390366983594198604047233299599713035822814485231603259974580621067527711846696121988623425083682324948803690813274101310802555803860052375356855215468601424652367946833701545657657286296848569490361036479737223077232578759381604046943378739807722971313091224618463663622471367765137369367740044856875630194903380661993809955221818994449235651706534806814147508116970480857563242065164650121778387371658043244465133605732975759393057218628680782741852765646442974559357142094529622453701815091442390477563259736775605838054474608680442422306713386454185665329610068702278456309849688305928537490597182679289206789645276359910680731371937809530577121811711289557439369149136992820899371545955814390184245871632369891662115731111315621598771158856231237869275780966122086917457176693697658094151756337695844943307490599216691122906720337388773697473641895841774110540069814141156636490003813016915240140956406971824326388485052480579555959639057774246524884456935633396826299204243574578718076977266139377899632667698092993010144401947989672874898826649998699456042797586015553265681315790117117448014287836008731570064492372243594660271946381000357936060569330602066234193059191084821204596463483179776857573488950804919331786426076853855565245438545255853793832395199431879000575645594997074884365184772261002236589741588078138180890953122323684021744721064827074502135936672763798350037793463289539960254510549289353167576155746681793974425792624529166024562216548167773095813505119607357948883722582458326769022643780390470593842634772040850289947020970624023494564756476990893425389625568975107671993951597692338906657591386101017781794933096581472503287050501078095341113747407807675024564757574701092041571840167860013912548904285641401688408169442514976597333371834974732509380701462710938004869472201190484434807643651659253353496421417405664422676445880755661647904539469559304362965317616425205763208615326518020047724117914504427435798372944654430720948431168364880977968563426599636283055271235545489256304316114509796856288596124382103187774603073871861648922324751753633458731703449354314231638381687491127954846533196563091625616992859569170398647822050500640075393065598689830027069810964264247703840226021131501130463608717935016709627557173132478942892981525316395411452453146384207960330567765656025397807424561602285833938025301901425300653672474958136813041846869438026312675892183926487537593078969992326616554990393558021448737929324850200769216252598447832872785455317682129579340720935284827385211416814486384949355746742507703128025846662769051922963410243663759831197991708688674305395931988988734851332131951741347984256381897560286672739739056021400926656583665519911460350250126836744827845430257403676709150801201296650079492301730290720972941089109069447974813158494155674646898480289895059562759197790570468087190275637140514307440047409960765125920055785016762293819272134889403168795245300461866235439879419194658560846918504857100781941075279198705611396727357333446280547941782241531867995184870004352336763770321154414426750657490148937517691228881685014693222053678379884923447233511248881467992345612755050942676817169427387672947711520070488642475720041293076573201350081483864209705788150630189884187264078193057288197364643129924741942949396611187595440050121024968256964387192234754388573390246300142466637015896997313312149295354519841472397190718799051245686068166343569728233473519901079155628438446357695058316052350081516644624377971498510826793617891247866830908944363807095561714483255822459014019752625947530313845100488231053430999702981637861248227373024564345458517064947554227740996520320967652872817350493100949012034110600224811819545389135259720296657471960979963676639739023050570211881875708358790945720787937179552408316968220822265040932446161858798259273055468247391137793798305691398619867454879015721624885818822342952186449453375832651721693284057062219599631015944917427797638734919423859075825077373956534976543953553933781169307484686930015079018926262475725588139433942069431009884592212388814192933489372525978671920142970342529140095990682235399467760020896467457765790448970732010545897618426917874677924525789373902088384107113367115707354243990509061031411582311399702784774774936777956507966366552688905539185184369702905088234074463019366637596000681100374525740714579284016092174841118854408058491840113685748504868069021384826841639900392389623036249359907115371145146862811755103536103752689852342585631930863837557813762131069627776586842923480997864583048610831317437908194434698430449825655822894475033875528297519223213761561568444489733049254698996311519107734533876296104858569049791595835830307545541946024681592023769751648000002393634135003886764513728320372686963584125205865985105164212917868678068383398007600714173486748380558601541179233736727154931546966627544666689702081786780588981099486652561872876530401226518196100247308549063925342618925742760367832711937484080626813959996726919085129830042247958815113183582428748214849281450677277402674780556351896410910269350925051301758684627257532173291964436232461033107461561526843778859633326654371233434929513161154992829449229924256605657102884010647811995829405092902294118666351863870288609610598106166259081312134623942907276104928987518688354460138134271527239492006003447097733246047578705909846135702707798267210148671168182287512533875032475514936170002736989921790324097982373628729225787377153908370787831890011506264645226731704305482906170895417123052634787275545081092096670369304128238203511642705940678969910509346134698781068482390550000929118170836668756388542729294863671948657613690764526422024776097856765328846811856788776250270564990408115372730774724059277246848649390544912010423966540228461548298669641042510084451900675140382923279028005996977320281294149694926929200580990433655156630147149931893928070520102256508611490426390836711777061655393032146903321716734066382057074159343600024635920055591957026923233025135577116754193360216420240219606650719186485335737003717324959703750509650555693503114167047026015931057303272295466250819584289972146242719304914543207448795404688538150231021440610556567851856063349029446320225905887293064749653231127603385168745194093389231365239769597872043442518698591386719477918021247133614905994971480135783811064828853399773508730640505444423570015423370133896588685962866483397563475759210873007500034183512179274019757666926224583058074978491993715357340149443528886512249935766092755943002277058759005090533247957913156788972287793812300681518182815721125665213256113923072625833179901872772190767565183863114710265444135790101716916123161823040328221297007382471996159905603684319281095100853824359918265808848284408903086167170540102150526419865355162350751754881509786467058557313423593596383591429322212793416464032123282421789191996706382703291705366067003503592907349299589891151437365906487336832990022404967141567875790587224008719315037706125043190660740633764353444908348669902393128969329639669938259698875057920694603602042684795229601342820764804290052144942428967894631945338923356515958118318719383287723513414088854611257045268837080301898667742577413948503836502899684476593188982102725999906600851136736704788398587549669108961944535845683813004638249416192538572923533515140326421533222095473344361038884150425140563469036821468460091642839163206180922220081076336641206536333733238582303100167018673401755714003453854496436440096990787133208215322604419290638840176936483684384969725844688251882674115326547351226413022117890166919762743700828972189915222849610751575924280132592960130010967412015525546355985192503254123974596171054622844265862057787414350184949386562630170327582613594523604601956514559099514405895023956772681280313957329687612539493609564178865311751129562797880269875941478467402878700769146697461753824538816170071349048362462985523933744102957604571335203225996083783949814977680477364686963374926498214981443413162723006264151767769975672347439606996832845892616492791758751159364977694306171994743416251679687391186693426024308610339947173458005168640423160212192866512404296763186058643278737530905428729781652559248030903036169142856796758482183606706244876401865922549200755403827607568641687584138914254444973939598339544243917186216120594201665153999417791390528874260432075949031413623630921371128941903189987838116775040824592746165593845924491602110765452268962732977714091342495023331728341008151417374754932219273681755903286713786745397468790318161473678245045594800205228820593620028055717480597385435157342172739930277791914124103750815947472154730427549655329004426409656501312039600129794098136757893857479445862687000880234779056656283839678040700334191029952090939612180569903041683872355593349763715161061990905101854088864062335374556232373029267427733659902514770575122758435628807570611274348271596019438485679691396143460408220741898506375051822912331141822635952347931976418682728706230542381446181727766455984583275788690031618925541925473866219342710014797467297361002437613612240644723726182731356494454571524339116295581294546010726737321938612136455877887166725407762126212213598824223972001608853934474964239229756743542092798869509191105865533796608134243892390181911088094446479704794909051180996457060352217727473983354760936047744339250746987063441813681445509327043758818019684625799481189501792424057523953816309080273886349841989499736164690407675057939928873636573605893041447166460384865787170135445532925322255538715206412410426488026216547276583426271083829641934952585552594971717453518361344231863000652290674919419730710478607095446784309720295909585108495652840620836887637535902559018155857900104528518402625439741514442497262170792454240469755931739637191608956569319814361099854614095543877731142537059354967393850202057372241949478500292854894299855323958913225256009556677230746361448558057069671010664698885388789479566834832151217194059661993505490764648657085673121233373515715525266557784773669253754016550768051404256822942909417083006083775154434564384021622032582617041949163429877042956343798865744488705654947701479962706811855840321399912961278647850656429191408394008174962519593937562845494975882524048880700044869014473880857888989960858102723699708218080538477238349879285722103430046873642733631898531856104165666462771902754607418657442220249164723657169913407979012611411990391032449465811773772808072037462073079193756242814707930394039059375822507249566364224724284321075686365550093979539386990938442087351697058779989935241735948707174402423804720634422544045040282324650365759958423641690521669896434408587045269686281885374090125996880676966502310979174700498533127136938862350795455320190797111059901721459897515419471248307499428623926003022316131016059599804271416756293682158240620770355222172868571154259734979898748545708095911713708073328414241141974261131153494342862733491925881893792630834687655829476763674460620253320415197990322461402639674938233854710214558542400087107695704401704599482138184221681063824143711265950979310652824199716746111635624499261819385027145715458312076075963882817985112638274186971352767055626290503198736833344047131185312749718645416385803787012167101854437075692877004688306233606855596641184434293183885709930423034314348930834241765612831109451338283462533785484886332972778751560952279353088316188111899194769803023027912061866117747472226677486465893698423664705971444198801136421245723272038563546278490991650729922587727760704357522959484785881993689465672020825762026722951252024720178126769903743009700908957543579886651487470810206023201570712079802311201810204170998805685745848380974482198164276907793114785841681849744417316479804865115415335585291601642382976591384946072639428617907559351881325958580963527388124739831715612316825230454386331178721687779147706482209859191034731185982333964251679649095965404337748584254491800752995759512889212640192153144216895462344466026466381740163770519541774738810015307503374684780039254087085953015165177810234747292494791634407646972069811929951252279534999610512975445064247087784521826924258128680388023418435180442659219803752460870267396375145847202999900973506529654412841658268709473073330030538794871613772159740568070983268052944130978490400917949773031692296920657216134047466895752023567771811005014402035790439298165692645151327985585265393099989359423113462016289403967940278535469842884210461372070189082686875323981346694705819228257418036688446317267713266268385389505926433567232602533271753528722050182217877754456823228954161281193032035732488541266785543654270317561543933045926672856015467882611436514014664848546446778904988932300610467548407513218753867057072214340782747720232552328621368386959914230381793400661401083356232217978504743417161359883252367150159120409423667957092083129078256306824349675147916668401016602473932608785384647734472490288569029840737107487945001068877427944486833871029376155439921679631541689595894742222581268328804613646794766869468877281837858192791875381618329482674685030851343204043364008401668871376323132789535326581625696364843732597992981104069748404973477703275450245126254083060867231912517922754119572275710238248071429776059527330582927558067438092511973468006820931949420569007048902744592607327469547597269768572312182357828641273654945027156318479161039829706989099876555063019601493402494155491864403234026911125848832476349277824606034626568382551922214362309485141891875238672735525930274399412678538927989654199117635756110442436107227994094243499443988690490837073375187352454765724546038393162132086080314375061934929181135852753764235360180047997336975559391369597619880996581511129802105800173454484576539147321939588864611719433120553622610891928300397370353529408527534865764357634006115408913322518183628088187910132169249494486016765362667139737627609251389910625067113180693364199608867134159634897162019125478121591328104222522374572624313233223579088028511132862396420930560857049368202728082607786617818849693767887619857690339735262551430430951494095933534350444150683461199834949261113975673269939547539221724712920910045539053167938224362334838794279388608457128535830237021141026666409572178486585803638828600149865262858385897745312777464573976253848489382830723197571309251014227288838941925587929944012731527320179580237022806126948834521914057867780993878006352875476817547312262811618242221110753111574101774158718117348039375296842076774438710972023979898960389724075092719031954504952594177370831187872477875732663973559554005914563791716193932243741707278158676299504760007491295652980544831906285195227020124537618539003449838681389774089383373715093195496413906921246495535999257741540829464523453338937492312033704517775918638515167538339870538666503445462463500166622344546127544472375867738432367300482641658800636112981023921828223954453682255389931603604575667490500921139208674857330604057499294249997354775887290629205056399653103343375537948461475280524608718128928673989356529571482344494349673254064626191519367991390489736728797448426144532303623129329505377572853801535415074432005288708417634797968044684635108897842220845743824646583623214489387578192340025259025496376979644907126334956498363018166544086771106559263327062821705737682321255627976233304107375546064076559624196712458542445925387387650277102800908273020450950161355518475554804835313781009642286557702727271230239677171755832190197545279072544766287054521265091075709060085350440411119395597123561058699116319765086687470421550839725074826089917448433745313370483881327468452671128156962311176870144361279694386100093000020208012711901788606699373878633060046024476457636206834253343867290771103523751874775306773161773773945098471492028288776234502767272611656204406740727369618151868565579990895361221692813193955797896336199341847242307346282294714721206792164741086411458503055670824268906805153985104177012313854366747429462791109435984822171635498207980533205711021327572212858658937573635033762843446126169552794758783796194684143081115420675044312005667594031452364308954907312221691251164148601288893031890733089538180118874758693217507680923034697207895261751625412521765782648329246404830428731892528259965017422042481972682607551383651744816770156881100620722895676023994068642198387966961428934137920475445634217306215725148682687326645727480761079827671615181482003159008622348302522815154876761877797984513315030363251758019033783968121309276673654844330429867569498714859202834273488888264330568217728254855559364899082801073521919771634623431493816559890668556954335352485394587976964895632809354311705233588646092652421867187317643568805860348917521143412091617212182570110202371825346658540904973681940726385273404301239774129100084656627923353434790430765258628424604212113894763495698378352964655642830041542010443617995614775662395978340479042592329748792293073045109246627731819199450749221677378486249182611763882854968467822854768884117574492668572483961213165073281673546797760709998116053390335168057080852481421476738499260727927153841318489966826753368636256973193553984493984971349101124796949732105080151244267458244943921112430542450757537271996694279352262481855558083445534721429733531704846853614478028658036326363165686126685707436405030857516530327543079993692683881004970409672829277529062396429702942497468681391261999200262217293881615272871782668081731551301903642708851475494609067981137931465080431614529145639813778017315707836687486435069953362062833734365902064642947075530075586559121990054582920915001316533117832283095808173623508264966636151731649063805307564933360388811510652509842553861037400132206440739284413639477326482169986455076065908882746245274468722373558099498641374947136827832421188293209658195171202914530682971607334474377456053217698745190996416429524294149721167211803844773090554326708600943536125699936249505185054933731521866521587316746340359459819734701645289065365594638956328943296439820480060200379051176101643914486342400560417799505106027703218481437128693611654290475616356161776748165435999727155279308437571386191262025271954816778775157358210699054810283187896096246631743795002859342774660611446709153949181936582936240968734691777823564110873761035009827227136008102130035657723972709209187557164840702389876747806047317661733025856095971547042368693062855131461502497632623541382676326411240420479104373827737676057415754560662047068075108073300772104894253553193575388478558389469787935908184170100783519579942710078494048424247270279792931312176948601632488320590182827589610150304560627345778941741803800324506480450133750186928034397574303067754253444072791886804749858119132567096336208007503831111245811705312834639930011378001423275226696848111926433474568306820986089881258796408010382317198298469962449062784954582098032586839418509514568425044223827069276327215640459056410706463492523094820301960148204181268838073618731001063943848081911542309250990426760222038843132013767341394322526929693953097862106229247991001254667552046453476276049817818811743436241796965458397445966685426630285841817517402112978291625297374432358821791158493133571903905432881374895202093214495209700718775658142418449242292857274062338955648824140128197994060443806846528283013853969284136296061119323603178292984760486870362021336104375624655281611826286849402411674219250662190466194762742915284962677368047710249960227638004735095457029682007636866482653876159272705229999749423317412257860662919194727539885989937351627873622353198846013063746338975258518507823103959445395527782337017013374776886998146017852206564663758629792418265784478529245696559365793223270643042392153804847516065005487522071351817123514767685961134110253221466974151399745254794726548485134762002638857283055032525750927784605740977883209440115847172278968904039664823853465133239659859755423207477328502626131691381686136461853329014186574476019966043663139512315550628249374079414981485730257477439367335639080485504514746108805091390261684921274840636885279431053904600225968888583781663745094030335301287238758126339127591966927732995141884457179595735406724651296545060805896541633676105168572669757546531530489084180098600747828128157414708735508591005984499319478966268786028717842817096468676129853706285399551759891891613262805379989565717977216238829095138670134840096800238236108897981540331215529626805734741160989015253043237313771326515184677673691637049801019964646355982301888048552682514663179930614398165889026782470633807122843784090593311126424699712859232337031095401188524011137906259234404582370026873076134103260790338448529760452310362127627576798980414162201853625488883909138098653563737815332684509599674551158158321495251755979214455389544231331298114308772466425447789572811994204048576715993710865927856918576550261839207220678107263829102899295219977456004897979531243438308600776099025269972149420692965295102148941446697374104427848810596933886461325488014752229371342521112516930399302542982597635582032710172177648987293680849919096753083686216667137608311636502022927546526280145339932017715817309805639387431800956026534511231040588039615893055237689440260963675199088194279932301631612832475499566094853513399450887723977272384885155238952474559496447269354908873384862692094374951674308661386158948630432168332670413971072517170330586982521353299852754758525994489548770361409580459718753953057188795877113538004444434736124319941474492751019524981011267717692969527451896230889775165840506053607936956564839776660585806174596070512417640474238465006653595966788688799021780003451654422904380222830639098676711704962542207950678933165367092420912676948382507253072200831496233464522057629965969426906691643584038218073104211702973931868931821977226801794639936588239985924235314743222361965174941651617729300604070553526876177235214686027030713651561289350194129580605406674294724632755193729015363996361314732105467881237387614973797578639709691468280028708794533678196279756310484258382563321639153841159889547298316961721588349029285448633158947961673476070394611694095838854940978780494403511716618671312006534715726918454948516474139079754493815349800475789627975959068649344002571339379877282492534757618524345901352284643275562744476574774485120746726713417173619464192537130133848349715034723009848065829720753327279361449423494282723060890707578534662221668606829043177176089323593868310870099295990632537703889434930483274511634938603872522689393033953700560480374584488530473789726373783302267965564123076941353783437768921986309577795960622086882406892257763544066193604995352539889505999186299642063470025003320226917071196431336094318428439623643057750963802722492924717538152256559523760517359674997592173206851062130715206074033584445759350337547072257346158885404881534229496248974376302288925029069281584743057142948864823771806171604626835849631319012880432265692005091915145174306638263572521375080611113657172506743635827895434512496237822989860610090821641087986611288105418537139757134375379962989374781081194337589819358223790297147336971284903133081946995966795792461137549531683556273346532900655604048170683344228151070257192347678118330544936303267598473576400457496160924677010588721829759457020375633807157478106940002483778888171699036924847005492477729880306118194771437246039283694109368802760594560749847939681222109824397461533763258944227259012041582641707011251735497232626929177991968437378475332737272507876147406821628398891179466406826220930895039966947182937860332731757780421776050278397478201722468339085068502245172268539295846858357779461378500122243136022445532445068001463054786008330533209630339593460664261902521988861583583761868967399934238946793280699266090722143315425929615274279195999142504681956498034859668836864162271566200269599823198120647683201336530940086958140706791641402869417426749875184953448364918826565687835621846816998712361397696351927901130915049504084062720341861146572793965928089067982709235289898908819255571446730287688773169547360513748028930971086202375426811572199912882407984954781224113686324922613609907490848593635942856961922631999799102751493702822038613752571652127761360944923175086470961273083111087311893844335688265556493983813296623853199576891150025748765409390632625228301064623838239253663746990693869271146393413235150340862655263947456915605181606281497663181032702265549028903226553691683999068620672751833770276115446289016808641301286440971224906938213727388178713973943144632804539353865854057385270530162673840064829941357074182938124596702059560983736453203275560941073475741394526651507056465897873290233207506471073136724878770295084317342414850375589268662480495981253093746159616568908802165214985426514456395069626420023438925742840635613349977709472577815987370561657878186374397576507643682512745192865793941449748137078387573050429431722365796236221726702388707901546566129055433210599614057570294306292559485239682902626347462298262779049206415947247879438686239923427130545365348722573877940463554368416946166208970301620389247266972427197343167767308260070193915163304742410702609067725201610752939388990917750858935025960468013968558093687492488118375195850663401817139963802075205946797355904818939538216379803643389350829298128274133525979727099464174234935607251642539813291986499601896353733807365620394852028302951324044709522874887307505341876517038642181454369750218689426286059247008199234514926642333492401882928648118734765049046637641857632616584675351375786392122742743644143040309620614138690373939392469502238027072233424592530115675158508732900666299339913496137132617491165495715341979507516501729975145436613938154734555542107050552525570604535120720531311697854687833249681772123767859317773832425907834778528191340960000696354727478546266451511885324757834264302458941927096731138102699640697668904950920539229659024079259676744079790761298421001579713706675997811269005232795565353854756097692115136285725701713546887791899739874212206973189755842940340272436435102855658591519376224543925685674139990236728718873403226093653620541613799378988942809675577650884211956444116811920509127713048935879881413402532420898169153969435006422573378744625237178447677855787190981494250537976474517724051594254468393240334734297539699897461745842906760675906381541685759878026992629466305615935800710052168592784351543265433313456781713074267548597144360399840105246737245453152711461508218933527807133843525585049686531164038004875494796748033517425179096002734567803781063402415312291473025175225271370401981832026678148251718875730044417076692974344566216363695436600062879336613392918671319261507408051768907842454281167220273684327575217819174714890344819000810337061242298066894890782572344338698128763903519704299543296414543068362062119010601236933495795700627638547129892264088806491133893027547285854300223306380676319350471916080051937646169856731047593714802087806686474586413538349508833667145473464656759330314698926118167014190396369965431749069004989827816039093980610537834205220817384020921452916902670428023488263184767394142605933267312787235922873494816422763110529321596358802865594539679462608736855600712792558683657604669503100539611026587659890047275475130969601840155562342545790215841208433477096071379335092862416541120748674687612291542680940028640943189174773847066461186330427869157540000979925890534924604985899423054153385932228698214327209299786854200188786149540556012535735075091384969443169000296639167679439041210801068328162321881833959073066137256312195957238160790139635045632549106251511960561013795020808250938383858945481134260792500651186273602641575120937067185840495691579936507059671702387102272426736672890394776189740718620491333818930329185974167555628763209835430149691401813373557776616826173437061641110298448068938845068783116252585873468844104588503641903214273311193150482402643739728666524232006026601908271578921532420966445748181559101118659679045359247216577373240692765789586258584082698669974076144641689901488970351961997475355811457734720402674049610733730645818409318513227459267613215879305686502677457537257734393756735454555996372831089529781973136010741088815190957723084364498490910350986376935240164397149941751283808321072697258345492051560086845292352905663583247343412217131710391846831044190489556108888098584118997498238900099772027271121157330613080523068619659412085746891510291156111148318711967539945751249288957675692955150660417294598342807337210710662938482935448909553127959726781259962568979181393827117880856732300366077380068243184791117260107850858064260302684763247717377081800203240027818864659034494755267393664221913494534112199848705398255957575960641941062723022095438250031226569440771038412798015209519588589070286234038070206150744662589921160994595975390111140802918759818744781354108716600099412159704922405897465782440266924415159382731579242690671170976582221819704374734122444806221538066844198824198666750251168496708004655046656741088746580199069745043526809199798809415351662357102860765108704682733134596378423306268090709657475580174701367001763092799591482328619367709471156512520902049589623975527057786313821106138715763765617271579603339999729490500334173113832362219550021793281425033620004906433806021619000025342307681308191677875005160207067862374236858733923836218835190375802050288168416566239508868712055153434294519592720021626114343690532514301016635889670377723693542144552468918790740278549302113081560245177508193240687894498178405144197536284609697644840845644762628255843017497974235139883869374570109105493452303522969340779251358323590778528457510789559310412577347989331446829014048528625827669576108376542736974763986762944854364386672619831911869940919962252976362237396560319931394228971430410500609179463045577538276917987287066872433661705764695277156292160671540177846646433782509269441445022855544817542618803258430313791724970030879441060093620935983916351770024142401824348916936046607821483807659292456684772326150668492583942523630099379743085369422491809075115190813976124385226546313644249899227898423913342684049583208376697057091391740225069224324741494809536871343905070640631610288417827822937033332916701305207962270833134114240465617462357067592494081399331163186496106844864637842367126994120979669719058702379977331121588362589850247220848704878364743547154592666352309139895210840270646428332386596370322155626369342038608751322203308801461954431042288665665282153129539758385136858969941639385098472016606544112224891319721890347594725147612647197755098779368340081711748941579003836531840275067283953711462308339606830185117264406308041992825584916446931704078968655046404659187373571499742986146970815947215928556671631712759372302315512773601458921439374013327659576442908400483955761775811106170130561393398422447362261530751754428857484266285903120626835243605671238258810599360030765181102229297169495759640068503220414134476663800531011995022611449031672095446291894723482573283539796484293879242703472066257594416048184965882121906357472260752312247778856159305434808769068803389128436216902788601596319990065296048168848303423915520926463438491955763768466282539888708871065849860612627423361027779937663145626964812986389712052650232100403342904122660424352641452317441103933660392340498537830856955144318256973997081138869850577488637691631629438608191146304870864682275183751972551046197495651801609727196215290845109644390313048989199602032774689774608262353297995541579223953408791428805351776273416892065976178111310950082756893111276568002885378675948094103450488210407995580180765878300723536251588233894288565205273590777171030707394245960927750784184878049978018841875486949404415142877332116531317994977905026363279141817864909142217461718102621917966529640281091163227015564361272444363179106442410232254605187195103997813314367178666085934616207626120605588449730201635680828281147607369614132387111516340338635421571237745538404554646455368452070663835739299788276293760106050641639372544683190338431833845799160331147078860959920835493837994493104221583194258795022084534246220488139169151069926372283178952741112159276642404357904237254350864159113059671367372295817591347506955403118726969084623866007592608253261150620507991130961710994490366154896013296498081014174259183286881438813481608571605357527551734173326161386172461026738105514389569715555354694566860368164087081221242026711525877182670714782402195144772150552497673114816794755802717853796232756892096753608990839335793099690628827382594596019388299905215493193072298564526621422536095618193815761223291019468439762240907642529628296259395646891370926120279074059064251258468780289814402358843910059843927084842278001351641893983392421696576057938177429607981901089220581727712609699230617217236671164239230660981538849385901843866895630752285915615308766814095692304821427226440885412521496980984888379700051263462603696683842810176390222662627569325815379530390358172366788591260229912150118871497771603687898448949168687108874717658272098535731066157648073531672708474423862501716090641740148427448397386288031582086706905266882809413329768687503200025847748260041075926523375364006940842831527542485509396123835314689197440507294472744777885928251891679739848199156751169314722539975954151185118412913273084813265304653097955493790088596313861782784726371426058695730000439201741392893982880277823201624329277025009317802599960593132526985183092119487356268792744363645550177251185522196767984824839031211722140304776513800318052292552555722152911834719432060912856565717203421399097783917910781827212278318549315783915133571149054755075681928579205050757193017313905889871453822167246644965758981954390460041428386077683435527629677818970884754773250986416941820355856663532155215374680085969647778669493321796887352266116510262698738989255071180771762923462235997603953170418091504007791528636449200641135887998590621459811239165719256608905381919532460043786783689085792495049260063057810493563556345543219063376587369757494305862704307792531117862993257424317003154689777292431019788761562761258077153907110376329957567419057734989532061618875692488733721060765402226267262128906359869766692814658847678195729134136566279323380146624823802868311006581076522547448042434698375928078989206279616720102857400430239707089554361815405249108240455964980656382807417893767603276218898784949716484951127827663377266710919672514708301830851042318605759939966540584501672552570386063538794639531960912320011013786224200555879456328444128958000709784252336531497977102641827008112901845476205651484676295192714477031519464224255026818510095441433113722561689735325087969001256767874663004107216862569404851369181013047715559318580875459544045784234902350577087391823874235238553884762218023220011716142369672671154243153409883810711364394841076858107276316149184505693351671621422737189518514078426743548536529787237970682584409130509941637090079458830165537492262918097339917103075567703800523232017902121660966037372744475919496874848974604328551546933300975328646114041187842913371023633824852535604154434974208233720910500245004203358096386049594453727594410964772325518714139863113516134881512678435249786662344149500291788629692141722309734166672632142181177664685796319499178123235792964459219057726252312746284802789075889985854068186951298297630531053635762077952742897731415008265610036500405620707401000517978672360109875750527681530055931973396682225050955394955290223613170448449651642729057664709920947861920149763205972428792426540748041471475116143871990489126675658808906828552461461361223506604590031218058182953540237694376214751816253146884659880597753069075227462129203417550585217680967927195833234638354919536035772865565340073575061022598949941925386800907486895558878337098490978351825017262783839950756225581217532177681170668915538740908774955179302012110369076625568575408639974755427028192803639179558645383531970772489735379720545683794517030573531121030370867960321519072362044989631169495093922488994366548722292907028348431811906052054735313539119825918256056607749733980208225293909931913093555877521032594150234557533182110171164211286307951749253291439793806823919916034235459201636613251595983032349961588797964569507894257023105693177323397916303725817286647475441277427908860105104193492988648709884309510033908725870740631130760524169399827357339505720232855051325602923203518264763233040118265774012035636357947263547594323618130857890597261061401596022257464632379103176701832223673698108351139273504868189749303071675540922318116314585342734491165942461280807238860025909274343497175569061926231243277456985026491804874964489458180001187931686134861048964865743719638240268065723062824111479895999922268305028398681486078745618812621737824625544026698552159820217008837296701772893192265439562707372301657902337352318797553454002963194424332864399619562953566023718746047149043444141426282040818055092873100365101404922480998321400337202332053614727887468862333852059637695522368764844060241866372457189839887191174292749101150007373215101689671433744525358528516561083512116308431880290444134644738506068116773409702361636763384733521774070348473140508266620986047610836026351401864696216478034648811455887159615033020110496623354911112476383210558854815058755877003499876356839089852890085081266469227950143887213078660505660664845921312893726735145895632727156288965090382717757804908473915936076588488884404766987437848660974218339871430811104003832064902397235571567276086516684660696318970904850129976258098256186121833572731258072355398589350487848843709942091492921321918484080516911696925645995724071975138733278520271651694738047478581180813759100133798065226352232136915090879684474459605283586551526165176187160950962101137735901425155938144792743074114582724346165958163206242692252054052982551784299366938551160378293985952979308654723440601190353180535318526419516907446189812583954511845801806231938932454492834382599889583503784480885799262868730468754824918734477496883433309168796866019889498973855864010301402324908853313565724216822303554288970547674613915536452495944328021340361683867659605811069417226325313538381610144793129795232595177712795644135990657781924093548889806465008233652590410661570283873794470792131653306020017738137940821199382795907780307962634484728233028449390673972711584197176801393242135371727239987838370852818680570959508264116627888042809529172074177333459563794210188798555904866363959143409850615498196003491675611247639279684144533802076413802446331560177083939446929001641835289514091343588231544022118044530036328508955467607859581320710868915877210038976703362190175386753556296542398416424486256617416117909837243204460182233697378477444487134935749401601972464198623767717634328961063247077631960543850692525729493891734788982125640902581781523027637997191007338972087319867247910425088491839523817305142642679013151395912186420034193200889442398939242609593946068276927343716623130105314254874328614136572835474409564620532212310502739301011460353806369315075772259555079589519878439513904968319392925250461220452570690888695481149115597063339013147614231179941870470084592446412687445437843315110346699280124138144054044520973339639935898226843268633485715838635327009648532028227361457242309599449-0.684000389437932129182744459992661126710991482654999434322630377138153058124976638150959834212721478672237964516091488609958678049883145579408739051911887998835191836621182708588377991819119579425138543610084478246252859786942139062079611302305343964258232589220291118332609151221036712471690104713260110875276494638583043815675437869487804680831286854196116620574428046177623234592290531365825957621280965402201603024458314858735247433913050554008079977461968357254029297125886645020110187083570306031434939649140206493264481356454534521986888752011950353818177635957726509930238956613547557946814484976326177945266595524625869986792716590492086547465332343754789099626330900800063582139087289908505026759549928935029206442637425786005036048098598304092996753145589012645474533617070376867086545228223060940434935219252885333298390272342234952870883304116640409421452765284609364941205344122569781634782508368641126766528707019957340895061936246645065753101916781254557006989818409283317145837167345971516970849116096077030635788389165381066055992708428470247315430380027680390856008020499780324105841418890201835720206295324153829168227969427342534415207846408141556879689867664430219271636249354786973717955004441549085673392105556692081075647388204227896978148397875468592175829431827038531259717759897791265071554899456246170115538791091529320393703122411341279501120362691886605193505846270669134925878278209048717316088629321353274101519307401594635990058104175474300641475776727955287475772112747330239190900102085730197999844380035029614092802750431255565995216200450973561608346954132801886467984890401376374924514508348082868365723092671497224288112839190592705861934133757081122071967961006322661659920946554634473844550849231266847357636196036186586776135082355519263994354323358553408749704175902962699375846758221808846309757271679961700411569176142794572351799340838358672387850640920685749808396102110880438588628980962109605644979418153203040885368204862320379224017869164089295468047736966472946453460504975338386136872816879408880369413613008208726551974235046234656382755749315252991527574569822980670327400567589667739317965159093243559663119172396117896570277814467361930220928569071581246133090897640136445176238996570784131175515502689044917220718642441990339329753121098567981560071739530998833273211496635388638501394692066527545682877043081142057029542205783391357850971137018721373789520102792827970402249609037299244495643832170195222934421225580832040376797386424453205778489772875242569681442879997974378441846423475620962446588942489334751947853075472658600104385228137036387675902209488462025547077968194586891030745017703359189865344302606178464207397032930127324827966992533754543277797425396594887660072861831629137502634388126612749362086830538114414860203788261535578201564388174229216968525110025731400303608493003100622221337844685455139080615527161169488290691801235392514975429970939334666002100698511395767115413820558652762226143810154348478883156721811396897788565423974559804725510516172539181420374248473779405056933726264566057292037477456020630134675947712751334673855128979602061461902765623586973745095109428914758331323268985436892002882011532838239614872070745691277875433376102443614463418930127509608564850291572279467452535604952857229942532065347812351821866760967356044164366315610909997345863804245233134173435598669983269129675096448619152793001810839080596863721777653397705197131778599529973907147391990893891810645596442889393237793113688660222564637804215565090249629818445415905696178039158063906433414544172764938656911164619929366980422252107460020206962348218594253242592037343728693245356178853235367890893800875333451160778961496765246891091793739472598545654408919573045862703895650931024927872520204114995037182464389336719902116376845100878906905480554817145199220425237300083156755113169661050924665019918504518388126567765198002433152443639602569675769858072711130689530194198677540475907744740443137368225362222460184149751078856231652461151691823429704030565125094766821087121557535254863945862330449374721387467543026508093152637105080664359102660314732740560554648292198798421903137250050420541636952646621736656116352157393413431245666474376795357618428090303917749676457353676598365116517877542779627261957873077871299344360569309141682370912723324173399143837542588670237426455769954471029207906067494618541819378697705662762702707880294902877356042597532702415793427117941051396566642971481997291155740472177956838291978793103040111326317983228125492812006148910693993504151332878004755862333355443246709556490502248401415724004548568766800305813051869836625631871677260575689434191270052495854858981950988936971618926359675594974838640300420269788925799758284127096513940162544072864728292480299138214157186179226579369653514601322683479240567205607558690568031159771724031607385168608738062268042891207167250024841536497349665688645849204938050698234503859184853238929306888959291277841994193202542546598956483142687815763462759439647476749177009598359752011680462885622378183909580437767605356493654422388466812219684867168250922174040182937213503959797009755952940213518626042090346248197983303573221539000134512297643946834047063745735459775930255271045085776132807625284769655183200120274190954363077926189956895742540224389898545965301285283266305496009752673472058093985628665318698621445511254660820941348562858376951481215795445963960294103084204662880687648667406554026895746079860125274423140040037614543666891414478348644048883781460988978761565303153051013516201016830769249258865610592510696673917361640170596160789009118495048717428483327313530624922749543139315451083878420864165153884805234735119201466770163718871738711546802994009946162829011042237379843747757740217668363880677839580502246906408468450975899669445295087699635581246459146668634543767419673530401294870089252161025140181249576380673877613399767867163905760382353945050898116756757791139139983830147331019425304661298943360864060341930276085868550915752947000184491142699717190648585094392749521665925749033022215603832662695791612080012143990800057367513932310433351325121773460871845073556757172615458789679724163907784438415784209306834225027500851390640481181941452589099436555546833963565585289586043713035494365891195173524804492656637106330408297583301032768999745413184890618329237663754578308722787856580189305856405663667032525790263510956001616647690932036130488883394965386786338767829460332816601778506172460661957682584080859907224002224830453941445006920121070226130872615656967851355420687651447563888775628264244838579461234396243090879893489357114857950937707893722128697832219321334863850001286119526962720719820177622236630340267267995825087699129956583414551461323249809507668115811826917246477047072717388483238621847008248915982246464722120605299993213967562886612273361988464407112548895137166213328685724980522493494952316457627592471580370777646504119832922294326665324158602470459342729764840843859229770529354086198183405341447040216074969862190368839843684102960087696540212129630435992980762940122430127110992795783049907627764985646079746313672223751205471880168910525860549399661552210478881698493165321187184064218059759758625658061792886375898760216305979195642725908036822505411120495031275833827177419087596480508823219277755380957599033172165702455673508031397889300055829210364125236545039800532350634473213340536961148164351984032435848119101032314487718256324896240668598478561390179657955871094245502330926571153171186917372201897257912812026165784423466541760854907682193280102061472635168355159708541965396270255809569864224257338902227322090100650655962719233752201800331711511794945990350869092472548624107444451376128997650815707403838526905136202309199824228214402083542455991434233875459163953059966175153399543066636510232414307944521804575257972761530847727945801395526193061248730623605026424309403744730488614621151157785210718548301050882999507750862386155050190718586304910865200229407592163910592448677554884932400216626400019602802643748564092124376754457641482954795444252120994400199415076514722975393383614541960157647236036200474932698265821940904419539800678706963571509723896855950229796641653805997241537476972249615376121645205479209039872024961468788716195609832555323259091461303150414841410217129463499177789851318041132564091336595619956818179582761656199734481483232389253042077360858196788817787819018985677960149169909788507930942717300007922754824915768166542561499159801010945936350630361255923967434756590951133171002577022723071940297004318034653285068454123642711641663165700237760460186388241489141637385853134199089605442815242384617954882663323499606817449077123542557459355442513972528714537222883414529635586309382420784716446045232057124380180286906288845007191377652609046152626640333113378369719552009930488227744534618086319563726052834047904605582841738703062911551673563184664156653488183913943364294468048778242385241804121182169593192504825406320059206276851057134557446413018336489279338459330559130059511970515144903141136958116262276929354556384039938185755888418276656987490502565426010257586088018046197422106468494617037249258442920618180890705302356882938443984770150309721628346238416690264935248730663128193681091481165255033101622188018674307995713840062271689860350479320750503909468637227942576648811012533635240307340333992290159259820338195402729302215903910015982055390132476898594768111292309654044324260108078143397580620517062023215127101690313979149911710839223479573033198631569589016388654254354738419791269375261688798114200073439722649939241774989632757718491601173390803708348999976578940725344374455557119666187124491491306575042717595227362429345713660294017315893100175599197903929755363509471613005823152526464198795497236666933446883382717857060179422013191630267474344399625898232025844973580427955799316298640717294231380896525389893087704160169125498934127116404290751920505020998623343925769929383076592903136492100619088098530926975117875892973474143602421822295592176062689668960640810305808950391269953761505657065619773818194593005395576261848381351371029470502924605315517500230650483948017522524167646881797679535043405482127981754288005614848855316373569985673881721807499726258343230437185546053954786384465775418297139695955657703054569923879688570406210558381274104287920064225840340958393464897168755358025605735059446844497779085242733617211253916690711436751194997891818722670165710009525369953454878120565416102164020005596053550479949938345463170795356047799750072747941737742875542177066919940380474516207900662422338522212745397804039242420220340105012819686075473575845520420313855427954128983338761782368109052584077970611733569578392280393141278472524840489764082456611440000468844965433584029413348343727228591524085628716377880780724832003296967772075375606858080917041298536078358426589963244861373156895185351857887235314070288436164062386078948988538083313493020872417546314298904281992725937800884477734187754713459960408271254929542932654701820760207591126537079881902535355899703385490459319712454855197959174015604795594905350141108525422379493668756820885944154461484955300486504203627202991581276818458623482283474359616397820074778154261271843991116647400839707281670098209178617094836915908209289065813040487971004409788536541883461030029440709528397271266564852695220543500205729082071135949858267513499042900480092907734254352344650686654761471227048010790832702518227066093998831564400363817627072169420880690347720998978088545807928327937861526710166574856673420140161142002829724735754924723294207139987369056423778213010326159140821252782608410076463224293305531730429567201924501715281126898240238236823298807080550190542515313625647536850809106783099722798047447660910730161016382435964271791156738473096738770119875109309286200378433901786441694485255381429163435934977586065184917774805469460993701186320124238468510838859060118911429720933561357304019972692977319406459002949701804881964685834420831088424230773265714517644855219891629943847223688394409350592316961337163345511169291043693952799305029481795223682395656777682691738147754568073902661298603023486363673885169030616686578922961597200445017936871234452138893939690848632255478054437136896521515304314033284688583763003550536682914661119775889205086054852831650342529398952328848874157833732712284556948314078417482412446261042717101748131894538412153428722532522790424488175627999452735430238306480698218390618349783862076499126374303655519753967556281242154642261404739321601127135504658865467402478401886837145974149640819830173848471014446339739795917120073081884919473586211985564948132648408882456604300245125872475236889747605761974994460857181286361468422969677931259218061425634564225104410717910370589179140209786192645002816847913911040299943773306787669393489827576815559059717054932701613583826091989893565526018232083759633198909709138587673353424802838445876782146970922675400509493663826837139671256517351628760664133681110921165336121322008125084376521205185550885564389108729369008100803317602186512785435572725983830255181720929317705325972291768931825261169919483941899763486674574707881409246837930042247113686343687758452782608978983223692190380232619105526832509175019865475611924959634576388263135825493661557212995391163892958116873978853643958637556415473621189560288091583657989369425651829119916040778199499200862253694959129324591803501136277989599358839819999941460949142384125757682303045884789469020691118413302331540883155308384638125128609954454093283537405742327866562802747671205119666270844541756588889545016133347484023040044899979323270797466824569175008114330957566832318887874283827097659864110840646825150970186227053085632581293877858877485353042431023612020667729848376797843559234424457470773114831567009931714996381583156598029661448669073616692702405293484054631129867397538959667293608904872221493587306169066158395817643563460220213138394428700025906009068252740680535839258915862507810113535574849645191679051530672717302403672781619267572449048526689620772956572081774525388255243579570404075136999905854176271801763611970288108241454415371393855129710211469592179565528961347678882996988067240464143694664400228293005098392049318242529508755853825698664660857791434951391948103695981683374666396383778172987573222170914475642788437905100369756090370126102654521496391077050401171987441918737053954844956643692723788055431464925991826408387543039307088919401156541452352943055595570766368556851054464689439069053270625194665760759848824996411997845170976223107079989508783625230392840562539779148609172658490428748060348434107302719395782310275114017959261750242525728015758285366402159394636473812029729924064753685381981315685459247868603561330240329435810912099216876876747882796900615676799261543847143317660411727559926173707006645392180946236491626406676425808104206036825890954782041265193387949234828882461453527739343587993178207900536220186745171428275380234347795480691732243826206238223521399083172731943698364548503021439087490547560744418452525438368185867095161311097395257179475525896239188854133047346157167630083383547252414215480496090977390798286464484954872754051628121762399220314177804039845989916084241857524798317209671996887320975259374426011486167690426695031221979393994231037259854442070802422210136505586653480709059848235596858393875179763726068150352526937879750199872923418311205546435676332624725095567532914331601580541241314980883125740541163576324056790359306230950521694275355000773133796995570093291532581442055551722952929699097519175049787219793785969963818815254432790707279541232939389795241732323100995895029945806487543090870385992665729276056395678282443593849945489212052646096050618736283971811767839358570523309174314531645071790466580237797849947347166185490975656946104852498089712728806063451464289989288696738565511743555230821949264262360189012263226693179403966781834971475512764312943198998159866066914489335117002827160212273902932678211709593656393046358714902791756127101093337125028443257687001862518613145712779999103233617489199477901275930933637988640620335846010553221318305797050570052980034321327716737792743542778608259981055445063648392387969102892039878814429229460504467719267457370803430452505769610086798317376895500949908218406249909101371467789904652448801622677142911531974134025257574160527273013012892356879164484616728579159584524826159898094896029227892052138334953336578308027492690767819352418372876490833729411576436482644008473767426586100410112086748733234422074354344151968214248814139167410667501486065468039408566075368151823540986416863234960662591996787592022416075842005370490801850052843951662081891707471827512038585836472234346654237447784735824564038010163284933282549008782392661848554768807535775462626840521694674852414735719762139372355828347313591447552626184386347048163192717357337444308033749931251904625315441819107610847896375897925160560192318572932202029108469548159072429507467729362343249404234716387738054282422922185166809376903942587679176262287715990860348378883144308931533152630635194734542561896869464382107199371248029880848628109685166870207487551387180223265975119157789179396036252215730887916301678857664437448831566765671707902396770761188965572567562765505276505849804167685320872148013727061806780319188522580263975987350148958479667017931120774156717866823570928843937081240868681826865522112715271712500406289078271290986982702342981041739651302117704240507981247573360573829051009210124993639075785458958513391243709663210805840662812128557701028295849945132470878215344005579386260016466928255720803275618662954004510881599527434610393717056615693986125295987480262085490310888232804081353828244603340617271419672004559893615907964724630285324386262366068429061700661910862045453789076346274848829811001970702591762955688246716614611680984500201813837084215436180742771796906180960754228057793878833927549712507592040630362567722277899015461126775131541732387398543005981103824668114990679114165746940228100592549146205539306076986242019667434572283054906494932663538170748681415986539630023530405601509571505725390817046747460253873698245038317850911073767441931702559514544366386874860236859605645884381802599645217135799252967778707371524953859176868016724737932712797743554429636372694243878102152756529678204709467465746941896086175639167380452786261382809445710619044465295904916910487237876289768246126368251212133675899940083950445937311967177541444465637144433492982949357031904596744385721802103446984749076977390798586700035154904092339826567020316658392832031376486617870096576682968589487684899054363328826963419038558997264711871318209804471580226175025674544634067313704309780588732333462006495198956047980168008671271640676016431503226991455372828640966171773828485946944851469641341363276509156944734005358354827543918840617074231553708999052951829935710753450279417865561448236294119581174308270023925608142005565398831573863268261189232528590635968245488840552538367285090787561144488514252710609823061218489277534045334766783844385962452761736146042175331876161224036773379376793527630516394562486958947525963098618722316693408693478746511773333481640024407376491891926964502371600574702127551859762304929368870563006575266467909989446112301070398901585126363162913718353463200712679370775517599823840830287712303446122472555531762446340421912523667877193193959495301283017423564748461829718098214894437912259387246457568792284791250933223824232433636565861277279372045855841916907123659308247733675229913855966331674573103237566755546779324011723586444679260014206437276067152010792882657368295488387892401803894798767661197173594204127805157833562085882468594617854000353408633815228125653241840430751040167212694916799672713026394992755983125245225811033298487619192593867987231816730474273936222740225273732815482295859715266923951167437776924645806662751461397241109605637967982798912253077417431777552688980701760922879761978358589365912226605462580536229812555834931969291448741281415466799213398969014724632955230023657179762552757238254228252942650716160117615582520007602233345741139730305077990618096012491932480590155421643259941397447316367924784270980173489913530004250361466372757881522307292504065821560196014408098338332322302884188143528291355393160825299631941444909764330876532187904613564180834647274182027373949631300082975628860474176075748580663256820014459992065753180401936736758598623969810271416604767177437647395565038236982084436784193629515086001526080210427197454842667061999883778026911059630773282133744528928229850162116630322575424604540113315453113040221810740438745043542734884381435048350885637282544258273324741897687426719963296046940535186844896788190426412184641236768891248820025352574558137661571255803355097949946557368249909073374705168487368314628084147807163151304121742373381182547460573438187335409130791592718217049856511710180284971619280600592106623174713255914924752662819883862636362973404859420890275218516695767780058707375321110216448117914698498552988269551687640189482226770271245617581123381947023966391951836799427320605300210039139005137617524440164819524948530688973742580742130807167353323187419086869555788763513382406425366509127332038868806216510425485943826933763300533283884496896410234226909975462239708866840804447017159168451498046321048135090661401558044940218310324643797477960158417947386205532775564140847206164507957954331572127632275335673727458900171405509280647053430386474851001651364649059049010613055348142374762877388931122087886240930305926531224277741050653374706852208671123351768885910620173769944242211850117782286586719609617779482313616992130694835414223733399838282497749934151459700140412164982288399883636888910988799743353784440395246459852172032852011005888185353947060555894349089185774573741512544419019920623918605196812030482107813114431202306690377849540397318373624053070577397115371980643588798895469794543495248760444042812513141010491229704515308552751356244515147071336486667073895265023279715798326929800795532411652077636793408042686852766631120074024585476503195709357620326642141276923285173069878145697690796602210461635074132036461882738005461501948286611884688283533859658214780271105713492849931678764294837035527708746398751827473788912613484009507134446814627677050658432110091995324017604840294868507437176072915856256199136326891665941813914754184366203077415611104381953691298315670632964052769987616695873843291437681830428884731067603306234209023931642155524464020247100191259989378343725469670824190885710400560556416952123648801687850918287558843622780017382079955357446749243640004531094721049805951388248181729553386434226752723359621992857525822492549487806912677397734428064573292321110734040202866542080196969106592888549255029963601632816317458832980763694155923652761495360593675118269517540648310867599362800204826494259582937933149190773397505321362438961370013769282498500146432679802045212063951764038980984179587633729510290000410012470389484757923799597933578106654382903136653994811326752779463019221559592643141392860505830051472045115246303186011983552851182170353524855899855242578100098777023224809533621444113713405246496296127375009223716948502023634234602202318801887916317825401289245099398817272277015308019841232665879002527574246840397940158844134076126771342694453840162296279719223388919143176596990144067526960773972226654417262005771547089147683448950944296011238159113810284278487843266375137927365691032929998632728498967278212697867680649488540380558770164773287446354886649006129682234011323706575610569152033199813432273590130393168782708986970666214794522644676543505139763588836270945302552053962972635073517389849095154740096393024096102647270674041675919519019400239516983764321642617098186333404688662678406465220998879115015595721251115373233702376838573643374339677890512190330845911174294896597315321073394602957015892164595670748069400009103413652111142280707925432952113779922405358511537116019846384966491826278434538585009192842948524817932015637117431643685224853318187709284623744336950291502702897854432643155096242786467403080089893218315142112272207117603922914513648310424308264847923490061512938685772631092708211607211449464171874498612570737900741846672852159748233697006737864437990865207469582306269112557263897700071154861394136747052125225118623525284957583818433564031435461035660690756213251072539732938507504524785139333975610142579683096880985868205519231239826124356643647604942429998578994844641537124993176461790167137891203785150017086208043141629472257701177656794637116414560686177557030207775940951317238167506281790722184544101272255394226959545573292499716616626818811828257000987037961101794018160525467876885524405048321057275636264546832623912745873631862657139925864585069607926313397524018616945946746141754834767339343274444976993906564908511206798234951787208770920618318837699284369890276235471476291051064682359850761360608156380475796824410100176213591181233368062327837376231237840618216307036240096788647963004610264701270147347458763004897940229432545484675331584097647706921691345532070625466524143549763007906209776119915867676231734140047032070984175025822461593168877205078352690606512336229283076393171273101199704902924250072493252809878226811820546879392464544131317929341720878741115146609350340138581825711534234818052458503853315543000303933446225378968528434696505560830029530888604924167278649349932703385195146499471337413762319780131149049574236041762395780928715208518978634703056460944603294119285066942181548034184957277218919345718755172339035998427139256988553360274872994806540665475351878127208254170145314920926766583771776417961898150519239232024379738107703202746635669076474606047971392674245666102492551232414948617307935919970951709422276552962456744989815210294305666981238222639741946787331393218022983690715925470201294601213475051824651404177714617563660177694509124496002785074651372194563326525685278690353048653193601923141451011139303056754357299105804248624974440702580399314794695481776698917597990392255238593240009379801792904045965902049173035779360107643633634580384366564818012549982929643979893518146508570200595379831259421967343622676900275289763410166278847783880887621137950036124611607748776022403371194253257781503139900015074487734358107774395240956685815617510658189262886503521381123811399770161971826031255503244715699486631308164358235310495615543216975159565757299173484574374381210994203982022665999671708661857979522643224704631176843076079144733355964573837910363625355108168080698653934261831259612116040977252636847725768260480506837523069660497657217959999717850592850315772080525523799580001453856172580293993457582982035746118919622216251379280962474483931191683995274723374266402710466885590518000296593922544284192689681791546901702814184173717413343020567149461249079916328638338390147578475914661349161153391503787219414902060353035289969546888281735283488897378947232749500676118712705776326789433955742447930261607779844479828324533646110467616660440549273673444112267319083261798467859709209012340086790047744417496289926165676491452579656789594073640717172364478827813531493951554659309381767558508836709547083304496550640205090357415110240775847802841904596869010155122650948766677579246750696077814994280813029795348808831811395030430058049017344904335039805342051579251381164508692482423387700371303243513403874382504102328555352511522850954519890750201271871293000887839422314307329805427388490172240422793461021852360966297590973675363953695241498798055173638358844541954929446235978334157364980877395827288273114213125114826902259085482696273451154138411087747304633016979524910726798839387584924883536423047733601581963142434809228333485395818043222274246707280373767394806255738706131978972143540866599253256811699649365023610884073189394510830055278024768078176587694550562439117623760165810991100577703692075235065992090034482201284374838991598839428254599274305793648565391828376026161452946746628714514818085958608460044506002055353614437062131979294613421449289017830275685290619111261853970032269142285089115749190398492345899989131328811143729321774780055783234417211968844098065021690391881438163999229655916718773161706924783320015567268455381780100906353470903171340643505959230417227058684596556908234150296611027901509236669484466512208705061951581109908961842754876212821761452492676406129648302149373250978861371268077374138211324593976868748800880040926230259725670966343692936680114387638802562092900787784245383718913632966667769198691602554097259411749299153276755874509728348485995260269442264281009105249533580630118272469226044085700512874158078184108157048249031985758540498229551035122199035570318925162634640231753613336041140834356568899395440589591780029386320997187397528797121403484412760273454277742392264813086967812258893646513478034421934900902074865939279678652825014957958526183589204324447434131295718235146160427190567212573485888164210973236212741601674804177496013380850731506356636049338401971253012322613826007780687385255555416560709484386005075269031197286193570038381972436436626184225114045347355535518010791340539417880060251026437811533526666893826340378697309725858620365871658075859565440444668816535106200754436450051025141442353413282998549526411308365139177073044481555771664975064354517111459771179483130041738814554161624132909810836756313456498169023543974811534295728437422180559542601090278260681202461735373253462990160218268861709927810362885718802348770679497438155374566997868400200920314542944316295468007992283909197250503149500349633307872735054422235649513438770275012627736110558760582585802464975154231741722120969010045855778715330021497535686292837491653878908950042055195048572731638095357731994169038474378635510224903591288371831205979338667901150142324231938005212317560961275554081600645862750621961432542936796391833968207396806793676094968101061335939296840979418139093803676399551141529105266989317899911414184090822011670572172710507310059433379012154858276782655169050088499521350562699789476869310412589850415510841228636396260974108199792897685619070332805273701401060877648424133632445674659152859227540512476528543718397343159729269885983386034021535231044182144836920239461850774546698855179152176716469791956650224153469538861871570399895819335421362394006115974571319021127165384588244587518847010491130865506020849542597412347069847791454438557796865273161262266463487855725825959003037078797396695628846048892538777106433629685800645189810008908455546010796405568480119366020488322451638582188684885370388046618086494067975520338774469312345665917292626121427122224417002077662959555420746948494886635670176734419261215377180906996245886587411796324609645316950682928555762606498719217740853231740086453878500713767847684226695776999382803539887431138344158239400664553303394743747633496976893657063374065824580265872290296848081212026356209634417422176625777998411208248501878629904566590231173551251351661887885884148384242089041903843348492926379616346041349789894354776570508990795157707516049356223259841338526168944479095834536309132507236293211764439139217151530580682926103614284971969999012852676729368919523227834903771544879595503942769484348391980215895332474168012396180446972161368776313313520382562323335562715872297238851178031734302575430314088188517373579364196737268980037427232014755480244867701882130038055140602447731694767898797875953897480070133718048408761235588153463990413703352038652901732106460212600999023645725646018576534868152523807455294142248505172054650124384114864874597860737518633217147589677162024984675814505658113656516806202808707613362465088436281361142173726625048650148539702811475143447297604612575216691837866264556246134689091967417245500570164429011646962988117461462690728448067939338845799122523526064845220273333225519591056112478135934276613284499106651682900044975956610619980808836935318906982352985913265183747815858500635272401204792075196087724145883276892232662112988316224422071903222940394603080389265042301009748702102766757190580766975015658718483689310491428044623536351950046284083642502545896414083314692755336281637057292656344742268376414409453849633110862286689477543266740039512715881410846897960942700939643383561734357249275714184238721195047673641908092583222212066566260121200464088665187968619651322031788300377920056001364800359089780616627712443099812705385446075897032084183077528381195483118523313444880355253559923781982719245698478262091486152936843363749173524007074093991061417020061640141711950740353428684467073353779754580813759447929405216821965677166195795486694634800122433494451234368796966658299057530020194999744334320339441641080100701599925887413782062292116073678378675443128650004545762066984254786308056936713558526291376574240334780283018052780996845417973502503074247763295044957191569026719775236529210288382266533179044483516655064333448723943167005657418921948593938665515538199867441129501020575961563195377303561930825993688468733289729387992756358022590705931478112148319652427766942860301133591568888531353932304005138333467899985210303432229730535457033111007609449320762579834888409046268174520566811485720016294208839238334500620623481088759189348847700126483379344905875086185706256658905271654541642798038630831797537852751121373833125333871282181607125589942019446430599796806055795540310126552195314843958528085088827993510841540852007053065584893258150962466599744542338158667179979731079843010917050310374555082079207015269539125707140541822556821615094493056733276075376665478759258350282657656931180654559036802189948035257121115705634362182922037304637034185501831812029312734957956775236800922926581701930830059299443598280132951846227127503469283776984450695511698917016000021699767833246500302455564323123748357406919358227633775095026683379031632681760465361195068018540691144430079461146305064515009162051451123064182073481324168665311388661877202426650121010443381248458945031010790764856659648681307090765786175921949506151094510508864377214490275912977323891118036021777142814842471619821179063182597299239181823812387241722497835553091195535583172497501140253666764827400222804582203318220085413845236883778402036573281794131539543866139289898850167375037907092143656205003711822408349458721735820083368062407633920864288681718307072037986756103842065458195207686735171626714133452224620624966137850515966672880042922084775875934864361854669621293127244488717569622164067435912245869158698378048199004520034170914969033595738852581915906316355797962071682954684717812975061027394432785363191477833065914336445870943411259287312457547027077423690793727878990060425524548294268433837652354640622036206872409244824357927746543846111163053005706278671766037312089007812823468495612431665622204183883592139598400174523681765247258097495117185986295571879035363672214789113724342540240929122054415882755932491378275950894827089410715873249774484608801528896097185650336937258892307114786335728794469447990556053882027846363028476903340343703894544025458320291021374315649862299522786315597039923797833584948956979947732844107131012829804624929217999547232783517033122580331835414237746113361512885162346015881306660031679733569096406692279431775182814875621768759709105120890919519474778251540993988101503244378082050390788122368448360230967393645439137083613234914703475392989647516437277958461557649289815893775868212654016398183280565952164221718379036678656824318461966904875225197545450104254909870066859594993626292189005489381501096439113359457789865284694970592069681235398120855447783145457666822987944548292443170806596176247829426355656719522944250043457909515319464110487888468200845209098807328333835929953319097203356146057774170944206159647652848931662935670844351739529778134418548824896716142932315425175992159333615844913544763131187940984120664604630611644549256300917689897417927701280307133325969161597254536268833171559437358148461630034398456612252009856207175884164840837667864060083862179567666554730260982399441461580852594010299005557607617082503449861176604416052290361533093641791913453504275404452771711521983327772746458719815787626739413003539562155777605318315536626746368946947602567987996926245237853529954802287149183920015176691982170044311237721037606229019212324195081431200191451193069025819846709033147903181720247503988594123337460219635701499659903668007820432973620071667663409620318017933321437003090090605174227883551991406871441912817117998291079905882776112161735141865303790226442924260876800760270753740997464940298570192880748740501308378130673589517143263951041792663697869278564147751516427653686733949541313899405322993465417565531277621718175188334793102606504223239466396487634298696248849402824491287897041298366112935578654102824757709302602535734616965886714885921869506213062260951894965971632079502927353663722364778004666875646556320820140523791659696958510838169271279031351015415724839240639009927662606721248494850238119678347029414538799921785146721302014137592642051838936427268593324804994829906865568326960804835579728609948010070941582430056263437166891435743786905576808724902133229756923795860213601879836666269816969996606405623491349978133605927916841732652137081637251646015588733630096123473328472666531693853520846435865689506088757256971435057954448221069951261443434372128444712784157401936473474376706909085788071677710134210216667909821922601492482583731693566707610702835365188414365931713683232914846437940027973618489020101742624980546283794202953153723267151979149016242451545382159204013108537717311305017517565836590632179590567566810107822540032189841775326444347337400678580088530553010357842127365762955144784373697046332050733458928676649808158332409900732125405846199980933064874714837742981631432476603937223716244161325531763203486684579989769255260327500635820551314455815881004291432401236165668049116447558188837745841456896725401494768101043232385727086908135364259563426088856631414639866670528607360718496430161364348360172690734709026345180749597477077580465104124965463800058911824649079677600056936570839407458103591754956022368897603147133915981084892893067144393256734057481326314963773217724172490347926143483884666928073578000617058693445561268935054751595379043872282630299561260846242944618530163234289857393903698015866485128578432427310685439702041792610563235356467238647692566069870196261544140150442579741904796221765560004659303246011427314668353553465167733074068360059416538663951534958660794703571033673395245142262958449206434864439239820673513517862372360595718588350963673389580011684666868635205621622999324783820045468319013699463183427854889774890103191044106712833919989898663088211194696484599057826896180029175700500897604998606388186209110484314803410710294903677054929646366323045253697083831858234495553554760187854134820599170526031135602956052868058091141478070598866086761368607616712286730339275468414193201652296998198057627804258100934895364444670726820131411305784130133818372186993075073253809482284448572669017480456070473104250703900932325722621770499290814283226913955837266210440891739051695480366357101761930689751680112716242453277398081112905516232891186011261560606536214835546195812576098329081689729291008035419972900642669706275559930083117011002472554834084300112431363411348464285205972156670541872818749438947786821672199730925962768485260550321036250919919651679918931843862610004089815544619654225251918250504936923351346734356672704597358718204581680636574043980988083445831881130991654753116238922012838173148067338037580494977340480632599191817045158688105782262486087878785867714547438726973951192339699064987805193068492848581204895411037767969614487467007199345025986353232827370431230813771265299166598845910859027605295524239086589231884114812438643696872064245071335237513513133793958479986458717347777095730092835842823226520188154990414046997441160129335705494108684786775924351457865781354127982571129787966796993782988017899522110726579111972512834185038923085819452130540862307601121191164891470722997737862859416475758519025819065591728516281883014289734443329117244951933372236684267320151912233813248347644871789082949990603058200251112521930098839113721247797175449219093776980277818904739849260235847990276492414473729920548509283152926631987909985834422243088224447307493873178189002031022465790627617913721403686442460845674570054983021214307313147961901634624525216285152089720073414635359337554119281724307514460781877489751612135750615609019425736245925704523245866649026843879362839116449993853815645461989390305463560270104818259569881655367868112602596447081122381626636126882245288624472566870471293545042453262101815188747079989283082707756032845282348596632416613080815098245294674227545511027534700397902095996154886876965571181661665607433872770945574591563156760054090917969642447624673774026405700578616197619802909158477560873502003061937880391632608284541659117868458622054404728761827861999629927317562678060136632830977817543905722018065206192047629370861520135006661835656963760081961291890822073475245345226484518272244679913610985135280124133012212899519365428919640989354171536402064678416881898457554344057526318172572138216489079706368099148388342168649155324084005983113457195760844129559399507086979735877966212617532959483303831824119669314282111526108642947623086034779563382518471453126142308974096641661517744096307285189221485657237826731819324439613580383089904942795073542097900789735397696002591533767041939673065457342914430675751847855496214212258247151186921363880250531869233146083497888049026381093512857834307655398697362103173270254470218037223383660365243327040521113556637119187366488233647133595585162476028326724027371005558575178324069640857819653029090236982580396496153675279973319136694350760251754456126498803670441703272265209199235960763215473095092623024852683793770660157066952547980895767780294376773987360674178309529354976582151391244791012798183118887619340804851570623485355933694575629247786819138098679587447577863757688384556642705845752023323392563219878989456900718179530318790801270109020052650094422280069560385673689570456044849673683747005393225300771539955191342966068185459340124589406774938721425615455841294382172642328671731722985223770633979906402528613769149026147865475940092837232647996386875232395284670038361183678524711749032956295432815425943266524371773656173207848973751268253093553782166927271312882973565920757626756057877823006230459808131452559517220152705233074139042652302664697433026812602792117926457781302233118399192729221596733433544814681319951149759405371414332107586536549663413428162694503723261327899622180606957882136710984246966107138703909717382478720325458917399137081993215878509383431170104430038037613790850376950450733984045864589868038055548493729862723929914387997199621553786073030954924509622704724719409226156884179779597103056464953537161193429521582861500449200386902720401393756703573647130500882821875470670305388657354340207712344570918835782555454098119122942341446519902374584380792588532951443560810880443504098628738294977100221853817041596660504797568393595388910040697096198236656948506522670802657841930894050795073816661703216817584309087855376985977117331230948371387354309635467735245106210429910536853315455039654362182494015069321507636718233218493360550778926763688979959292497284562885847575705096194028319525086332939783084849019438855323171194000284680889775879774396968957870683204158408048983353897849839333289180805074363877472057461782577839452246462496269447556366057562363146891932197412975983543172414173045193955293210954080194151233387126670940878201164611981496478726547398334199344933574251900893520999384671838002469895741460280502839219703111954904044128303668036341638441089737703736121884060837505591140145341071042378915307308783853627453764886792715139544418083195124516155476086704699373778206987469154679381084850368258668526935509212994260244082949848880225521328595173459906745027139603976562887061979921456541703871534963221824196444110065419629807624743928243002892854732287919559566865619404732186220862895670502905686040137791515171490496856035976514758250245033490179464377160056259481903036353546547827226185536388617148976288876631905960175014235606977753411897053358441745495749913410506299685444987461366893872804758541725558070614954270986140302476308242847358264041055572025032993767268568763006603389290199978248534484857208986959386837725188014288977937705440761241071949198144164867508957532880813062920841329257541822974954520005874159552789083143201639141908564269665129607450167555891483277842943966274380557651698192667254602297431013468573077602232278470885361995888654673970472583627494700063132071164946287039339271191972867419624936839772668933725546882019492795937335936482414931757010519424397191335831197881736316539538497441569477776779158105529118001497086873911732725004888097975664475723421047677680532097407500854135994735054820573305884613790367184709730577968072451436936879832605478201645081472767130310282102752780612747822457629695556521363999831786191174254427006840706694730434620018014931969542016643261574933508273229098270857332168238517853628392493879680800815400458559500516946997256537128729325158473012481499231708825655754736387223770681325877805315220326253957290631757139197504496233551754781503149683704781741663920992839298930251243982282782493963966540701487875958301129587941687815295524442366172729621011060036868014163850316434072009837290088621412766574106682668821558473569184062088148419064308760493614879879039046699074698182592303163940679049234174616017149066032140804117904966143008401473067513552835361158370367048071957844188274758662689011281993966177206949776372845922773702087606395159462809383868428534452887526722114471424551748527552347313767699968676308966396431323966087023560862937317852445309944413495434114367475318722435388696510400439950519224846887893356946377208162475181533640351383278064210620128778481418045113771272892439311144866934202122092720521589403338677253905448403324735879134397457261728487054958223730352709652884668217542077055330179041986140303420409481204457306497964793044387427203537864017219912263860156677577913464101163014865000995618897620596932394344753932070640001003590868988361949900788085430972118726466336166572922167855084320095626699355897878739682856280577997520879734092573823168324329330830495052838668163891231474957273489575711747931288884662492878462829273752651393681371220732669767936502834082811805002930002424126553035589886267659176807600257102399663719091392151924948803230922399755887279881367864686787662430133439346148967643340678507818166741820656331405729004456823145551750721520761349767056986968768993460515044420750919963447907736489503597272210681644766452547225046331712608158467354053854186007513991334906586536153447908666118576568405236302854045182430825778391241190897415107537552163148162046006341361714925260616310780086280354379772910864713311200715249919016201934583661484813011778896638178723829611247069329769857860235985816033168114341099385723540744291289333576085901625308711500164128352615073931856150229807690613918750105827029400596277892658828735704653310559873617784713898992735104334232534228193473324561787725965504326011164028595844227526761160885319475638441612961687187131288167416889247573106319293512480887697860632692950830431744053042524736379564736127203322145099159281603838770710111159551687271572727639021478062839494855736924329139761581044877706740676923028949439270192095469369709929496805607752284757966931113116250706498974656034909633648097076290378828198600499136603031864154682413017057908909682391669196018912355099546011688504977847583097377045716126587527505115172657847354415160438803986853679623749254877145191551512774490449053771833523188240725546558619159860909515722737707378580249106535031613187225273082510543701289101511325661672547265459327444340431343775852817503726838148780314140726825951992816400247323979452398183327084019782750106399939584620425626960081057316808470281232556473340856317204047906751184752412727004589642635262132156287546666108136345233606913016126069304843553788919687997608492659243945819511118080436677517859234738707371007254058526887715114506510546563689102609968373633351421777336903450207312946984893276722780548615297655507718134846067894363756300283687255968067488822301409189486319709051099867261608272994930551227343032982209204054651714975156093558110233272784453916702479824709134031506341355710317337759177203167008591955663021524187084232545009659669703235655733508773609923814656718752603454327473399893901682685802851894033531077972691201905453254580403943779877649794043178466349923854150379895921842397035560492673463403222714012090473333351776647866621540055234591399341693802211110576977896498101524652516252973442613113328151569105898145089913580002141441611415168616462443641924319367678669924249548819066485757884819349843664563790752376029422478320220014897660752324940731810945543656874323503105043755271424006487760442186781386956402164518473151000255169296739673235091615987915441837882366909835890736777995265955007315853653555772688183259886484826404549331488494108387220772083826625577147659499689118153214178173293689022246441152354488590762952751681211813686895393414792250123076735075842572030782190022913556767049584143795986227271886228904439136195578959076540146751439342543222799834145183464870072770841574271344832396213825500703808819355826294145130217045863422345414412535919460931143456055986481276348175681266987119517313098390968465606845625971584305845144909338766397811071725595229429744569497733826102354397930974572280102561044319401881479993380039573698030970021126719915973405574065547936345792048843263122388057434129181926802374747323269420040251603458479637079751395987638778507952130926003487697843222176315838846644945595215899439053213603443876956001427963218498311909497867398282713006064909768002005890759259069489234276749705862480140459419159650584897006893728941877262606511823050369245884901556085186742375579220141321381239286936876409808013538829328670642006475881558637015896421470079179408008643439202321648558260694564551066563587340230257238065953146654086338855885473473525534878412355075286886543876750204895799146688298812706191962185689889765513564018491303584141708786186284692702548949172866605124124133108778735336345614729944185026295228835335636862671809152173039111850421190648551872837474293478251391094736452569660281636127899188935948640218203445318338886696687384076052281563937005842365438978726017725633780662102630912735604536993377280279231115914178280251286154106771858851810821822077087362544685348124259302165236602411196632933982948468267056893819361339428922088910797847533626179573643420383454866305100187127835896013044280182394339206837910288524656140964274635283899879102638419354099181464765229353318897092460506898181474783092018829610618328812809519104865453584009083946172436802548043740207984374757156772087553870503860668348328436141319086161660787214479555863170608742157731124757200846601765405745137848682904005450765766986056697084078501395393319728248542738342248112569674137853103602969984851325524263927087078101236061791471360401385588198052923671212654234310979554728347514631881787585534165339977962956692640366090549235394115428643242061529152574956988477037770690416534005163643050969279481634139249571000225544125444879488819475697326983511181878407921798799990749285255823090181827931864416828693545778465899793830113243141961699137654755001342843764249285063602312811959543171865682064406360613390688897033093808816731493736262208112656670057916159511937705974789696223386341413800870164543964561503595320043867452448837669289397131049547915459927034823023462312984187931871814631619918292039024878906891407235041422261867686314709247914542066220497279592629733520358688593742801462218569182464369899665187681272530943268804069170919836746247676939794744906882428772305639318983186143626661198041088518856845622152225217074266086630001372538277735692798671108607452693048294948440864976806333673487165159699704455763800825688052593253991024092641230626720875629540088573149747889238214482685157184270030833034826191124607504107056747846814699275952677812704942668970776916679378723653589962387208162629760763243609164124059261997717280883590476030563492033344107060264108412063714556282613910146257894935353960388264624040092141463735310046359169602359472734096666871857764980243639887860646465199616678636057359484559695720601050796533201807910066608514718726672889012187170728139511805787722517745214199836972452676037413598041748983576493943955356314349078753460125941693075770238681824723583752553380780388646614172054007824548271576462698245751029910290030724778670922368317555957266153685120512940502820766505066460260751050577443141379108165879188215825591496028327039836616068939349436084302409143260535554730865771268221399487920784324329348118572373780125562482201434216712281716852135014106706359659851718272557418762204522241483118091989950399988831782804174757123681519208678104355384423337260025669934695425866391575371566771490701874085830847176990452302602538771810127539993967640053879041816329641180494234385977562743251528830609142193025915476068134212393723747648355855273161478014651095231447913027839806357342186552404462653664189665803416687052394190489609452948724615042788343010881945486801234202356957862453800484016804853162268657207308701272393927223607388681952979117507766989096432560496001517207933175263427029087378318492411199353388780385271274049888994999601424474234088160447921725179476777558861769548809326031445533385009497616054735603780736179338873012315231685489870362437832679938546702884991276093217453717634302298334090914684292499058007736077031190629340033494752749871763159463020610793208973480386623912208842396379860349644631744284223922079283654743798219551656021187666291910985149908555404303530692222454994491979744304269586387689700305895050967646633076660652964144527300089206543514900621451490775290069478782155898060580035612436292468009471667707889662248402377450381022058971572657723594330445691173513870295390812665516681034929939148640629491132918311611497756814534689157417734376925589951681636613870681297572702085287838828156173760168616668509049488935409943558192299420970826864151885313413357116019623004350485049283656744048133485973632809895418923874157388699649462262559585384262102783962258867758248824359564320455001992659640029161082070701649074926705531701033521210972620116382709706795779889392173242557302349961037154599325167957517654313867465741656988556953638079418962866880377829311590307997085409109776909436819154484139644343198228029330062721882749090123727991078935545634574570932392300846433952160392651425164104399157957518950515652725126246718622446156736920221693505126117493890777069043355645435748319349893272428325583323436632721509799298806179458730264602364542961550834160508275973916040847211498529200236051461276602212634513020134830787625182551276001455391291676949086028510488676270940566971058187566411527086210034849199420621986758566005804839024346621383920363064496670106561003877943183486502204776168804139661334544927276899916596774878208441279651754416232348548185173968375929032638033754483412965025740204172341903495942638783434596227195721620826120936695994555597761704451358108753345068352832171916890178141460354891463144011775939297738845992219824501644089667746436130571571994639170928666771554859998428264562990316672747999553950932495532951745337963062082274294908080653061983537097055604279647328547761967764419041368596752414989100627911596037620392593658195638674421652407760237386891050524962429740874362560215041411571920513626188104086922794551095688665559336711920654535213796168218952498305614901450764212485312954211327611523771244881950146983394562564667040935123774050468940890111262350794515681879130022099000683759652601755655220620530227316883759602173542648247271776853608351908520655381480439119125115984357624528954525034274068420164191640136864358255055821576129350907541820885788841161340486414192761503205268851774126043316409940274822115177569258546016261927216226318868621287333335250216340025982004015407347470976891467135175256306596028395252149396537771525078041301124346437353853863771289871977213721697895494485390108212106020026381759541329077400305793381960529052200310989715583976046459755016001459147992946090658295358207411202189137257253498279778956661581995085809890402460389190465377404541429116984345274188599053671218668566667733916658600076971911812027158261641635655942763100346958876291935156804332770511055104779835598279806150591107351406360136526866261145412114962968485144804703716451843529216192447363942339011669913599947834131923715734819640733047135422683585862366308731784240144966043267385923412881967683137009610215817423939074293104773227653466443905740468365723405683331490071604496881457420598269999375590918578166106299830664220548283672918669143859015616741855097799347639201061022431695123392633919292561367100585156083975825869032306138929619917475953381366028122045034864286382897332126082226109946989283461413135360118803075494258239214135922598209908852337629311711260026763761477697962150510375205324756416754599415768983325850359695554478946944094506125424156724202626087322430923408301938512911487824975215372558723412028948751199547347497055596601315787351106335013348398847628158465864171144086326568120614573057586737023098652021872355693249552373717541411707904865673857043282526760741707892970131831549092318277573095459747067010269860541677924462307230090756064005421491856473634160401713082508271527365320892005040743845148481056296506935445681604394840692458464168390689721296433851701107711644022934288338458127140123807603914817956723239561666445636100271246355628042884269716609541726491643510622432182729255526394412842191541812499354321755081426108359799275796387198936322178076490982990296781498598441469876612766324491121938687837241973056917216073265966873766254729005525359640794723006856859199526436312760508413302463582511223623559358946342353656175861476702585297213086040291605356160559975071421056789118152739484395232371359024702629451942656228574479861067803348623243088806506577370379231601942248682442596173265709994893635210543130364841732171554587094768412391500701491080197660709252298723614024122524719961659055915787504931621991153362418428461037597958546722405884900172910746817659572563728052496672613063231808513128779116010890483079420762274408106715308493087935671548005586848858298191300071732276528712232139412526670390730983310079565627791388009708952832290806426238741923304659500068570917756203991657034163145455232913772968770946651194944770141443161731965844887803978551490222792067207065786723071004887947140216577455219163320168856571356524445194756044102805127770512516123258174810433666242181167958327242435950956126044346254246469427921089860993027165922732150585693843626374091422305191442969493147690945148452184774404119683354379850939246595097378336463333417150748086107790183558715539187210438751991090232325930340896580331206642364558403863830959048993392513711038616431928560582594169833685349474971807836020703637956458528352023234609338220436360171133769341750734985886358071640116525788289371254232466377903541336345030859154264040309723717075454641864395344481480051856794393940011621972076445190966139578303580101164518942000233323898928547442727482270408080996503075062557442396024679707222180670897295453838655013935611140330210275137707801196114873364581633120838382435390168085402068344444836040742301413789843441294808334561379870649870089347869796514307196189408943948309430069869134049025700434482026821919263965709021006124500713562312134035212215422357085908488189859095944846440726656409271234935951627004317571270889311343194295996382850557003889992264827024872024161196228569182506083369883593025841464762823306071682240714632459088093738314455268210708466773814979399426293542365313772281584259588669115198741966352136481748189955444808884567843080108448704678473739750793335532083154024100998297214679796795508610598893032578529510363769800877412202857817630330551954095762410621166815168516947692520489266357748440248628325165971120089213641731388019848289913102970480507224825454521676235740542299101547003039215575125403005068014694523283442044985899187412942125477605386597401965207492251585534054352549053875646001703175622011819981266311946033739173640070729227023559006149692045672143545068328653315444155446375774059072334273521934932625638872264109063311831982665425819416400370150110386054340646024193799217533713330120439626130068353298953532734794723503387987310782998433846591682183457404389317366898018409039457989926356051124305288434545477017323808727095027674258548554340908389977844774638152936066126812723160768306294335075735189310824053399615965286588369570979240598338198386600357061340225997716475113227044617386802591793632480933381177611298395129839680682418126490556630361101941959344766930204321425573555727733023038870143819027001510616984890462191053599744182832506721477188173849831529953708750796962098480019082005212973619936096291720875126552666613789160770605423269409747225215365658076999474049162760060349626138761616267937730145122989432940936026471368770983559283180078547342066439002730351501122744182475657369285123360380260903128733494386591850795853281977073610599716796239071402106671800046215156957646268450297161364853868524124261005548362559741651718113815480652600838836335365280875503916957066240696607409309857948207895799834010909187869258830709144980098838620364714542466466037401509960924536011532923231766710346818044223596980038518679533767005055791131721094366096946836406853109525619605978559954058397658115561798022656350088068197088288874382231494257159512640143742758061304485389399090960929744544230894097815516547009800389325486849267775830288592652388790822248235119768710682349359385047789420285362496758108369613778964062435534412968598618352270501463593155293351108985585712006560115774618295015955226826462714613633420725118794220506231058534542267712362115208828412787445138133028721884876176557502808833381892092028150136183741987477931664113002854201396779700672192225264594723940324967747358785840653346559718058348554765632130495312716528770535101317043699167008641258889639370512012779701988236322930405694603536171331562527272592625533261762600323528375626880830194371818841847280361163740153206674217859070258941095830983526779851017643473472657224860440156681172562828305803736978628824399861236377685034484638887495836666318085754505651243394509410388147302651119449138225591016071313720048486027755269570282383516938913583017502427857696677084508723984014718466001711769158404616779520100866655346113274970353992686476487243146336147909573147306031602325401192281469335917800440775946554717707239566844998497793567456725434873208110079870554309305051853311137796641020718748981348165856516628837823956226540388389065345404707786781187338089471322869736815302221156112332482328308336891521399347960767208816280134008635838678432306564949685067833224823867806872142559248701383312189209817226879937285163737071620173466113341126486183413177349733939047846123950101648821342440076479105039738723551477426846494492380934589470659360079773099041729306998958174894661735437891003908379346587066412319893051529847102624803764643049684799767717883907661639080632341882316989798040709888378603305269897138848414550689950156554616016725788422659929751692775182483404378258672459218322546645627311032277525870307421556398142732536435353337606435685354856334366794736242198989482736508546498085521690724704576779369629002634703087189741160818804962735409465377146854062282718497632072923370924026113563389368592180020979406962912100717709718619314904203235466136800379810863121624698624099158451758103657052336559932797065481345898733876169746787544935492498664089665955132239489956386008675446437760633968017310586947894489461541083224936629784441984607381658715154176408135000615023472665965783423779136869238775320744006488923863375690402454553032003366217017223091511265457224428691972755589196589906720611858875247348450482340493514323852258781531108858970045024680865254677146294178339629010019538419173279511254062952415801528394159924133593304894449328454950187197554755951248221214030201875797469060822073889181178349613158227333187703874430943084988479664489303053010688029998905012578029863471483658951125822818535334415272931085038642754812765579100946234408213388938763561042397336191752939535930362980854362363117876219094063278406095470111088706352709980098863304639117797361967681636489594170598110683012638553852244657080280842673848796791498796722636929501340276385906322796621732523673725957462322953374003936862447489502205487734975504995298522301200041846817215149691633265545988197351476928918660072679838570804745641926997721016467685495394917681475550448398715421375395492464300670651707720932863045846609708303043630427797410171448824440078725643183950318316437095154133016548851180379165294720640345617184850595127726762938178280166001050562188276190517854563874552137655086219766315183957078396334280749421747184681774331551011488053200504026407973194189251835504465071805433726008838098065832243000545727333433683561542686123061195235757123958894933589909836018748103794639932024978881545415575379580563952789463462883265263707813820118063047112096988874744326992823989128723552181370813383848618692125956891400171847007297730639387376121699619700111677639568504990313855381961107661279285354481978123336154916566285085404223702713936303442567045835370015193227830970946650683175618112235072692441434694824062264670777656724248707905317757430800171796982840585706360046709750338794273680698202838236191793405258105434708648800655746331559702596811488536042595691169679870423146273785787875824781056082822568374145059791229868047807936401086857237438312956698568534842883237020847694206698675490510319738928364944275320131812124511193564605168299687668446806687958001281459797092219383794207635795206836782159345147574092597774876039367852959594054516781014434594839270944410429048324744982162917070368353657444143465984589770219904375801755211992946460398755874052926986831974665438335851537864557786321880036213419375388948956115421457440212146478862672167881390915554069020283656571940176252329235210028566049883759149873765548932445966749078188687780757128237295458490328411727405101954857609063197873633314222937878718328711881591874357527460155244581053989036836669547504234902049645088663064810834976037874704522324380566276964065590093611995868564230889292290167843263770429052623345152517648806859247506598233318068527700049651341028459572559416956209572207189434426907829202282581610047682680809784499290704682476673309469724256710805999078481088919357435828390322665955990797841573489096190990049771529344739263729457379481896493466660995411861307375818859113721478147646240675678519940342119119322061869489595644988071530643107344234492201879549587601265488466076170209067973117863499622049570115027492882754855532174922949569743477052949104582294332682800124006440106028696946719790198597966800596070573810760820718342083317825154179469076997950331715557779465693129109557797888741018317465744014284624533300969089546337273494685285824487164270738657488506056202606550343696649368713877439622182388412883892188814769500447428531231426564656884205204788770411968453207537971269907670335815964492731401529072545111002829097805058375817588105346049374757782925621478888257121266169448693674385215238119323943393725974635403453491710872360713837389178079179531301865098166920265369003017214294940709669547715624090231417761623698876035007341383834671188936677877715688791709407761245447134048364368435400786669237594840177849709376940472630644576203504736576780201657233170275603671289545772194739487689744351792677958534378514564933685177516133655655524292702523128720351855597984769035404733714269354971323578527387950643860964662805786291044701313307100713463096768338418664835267313976780375695047576992572795748106067267417188776630063460278902373645407446075230094676265479281356142747692721225177240119542626170384844844584963035257201494199398485184986214913305343638489569962037822154920179807247262187511709388754120573820590503762953748899351849199142203032561430753013162673275595837704230580125674157022780163126848429689685267859463941369953261027427875870214669700544359053927114432326242797276390699013194227023640320840626826485143954141079734752187423030468251589341302052305969327149567540477505484482490220012990738114586835915238278583749831059331359619059955322423580726271809613175859643666118353864815319273205789402450693195424296631170961879073172547809385055812135172644441500090240490826979827950080470974084385231204632106696446602024412126076019754148620842650936064096073149253945133413911835978345106211238275535260275674776416589827695870579815643073927603098494383425117001558813447081260553925348330827831969784150579751225128799246067540493118799806903639105855671245567265691608814388298236520213257177152972895217611638458199027736404927600039279471334028470664539838895646874407073488030414866174902763688495854279432910385823096347016671238588909675073585324318512862720538193073651164732219439149323308629824778884358141057122973387444232248726180196112532365654979876154211803748536351659417369906957133859641175983498469709250822038065101283088417130212398018575620103796540978762281032159916734179603369701920480310316677399549593783435349201305552332285197908078113862724432436168511353607120535658738035122651405409025226537790160672672454351456802898793643630064582787577231818612634588635230048248443377550730210393633915316072211199492992466325751188246907072737226562170697767098311880355575660197112657296229404331561490623713202228894118463959445437676436388038506171452425254970419655563434174753404469802162439168465013702576412308340600943168349132751372442449903708291479099322008590561789705525179932703995548993507279278869117077960050373171649942683009007761489256062728603405065564607715078152855474187364594046479508647069233216078741725683687659274824190824540488200124548088443885497154789290462740854782390783403975768729271349099102032523468577303946298178095687604658491586220017661456864772570763852724234830136199540244504283940674313100883064172777247675144637142688310197769363656044495445577872118332150531037806617804271851171692852065437050719864240759423303227757376109966815860911828022497256317360550593515745254856571561678928349250181880216944140311342701665203143492117183642001150585011784700235614641708519826862852349629325024418733333535176050611782040791334645809222443714660678893740148720027658253918958157804237494462031032528394975996440188386694871504570198390787851664530430485878781787534728851491844282499345187748971092984994374625660609185345676522977761636603752251800184857523465541620983755555995441384012504638831563283364900406965606551296999062127591112943421862487616163224897048441676347656010734000613496278648970412975417122605452982027279059051201159597794093275341168701717003761730143404986664120642558187132068156180691340340408043456680447031043768716047504270925972453010385201526390333761318698695551461021700649479845185920137005733318116374100343572264808069446367834466569217467422984753569418324673178838709236919091916274937165046008755511488266538919820357002046966601768641394002750176219607508224288792090107087683444194926483281175242901907152412270354816855386309555697046628293493680866866690283372806485478304876644020899633241661188902422840030988332171659994947244599155767537055364860461768230140562995973786745112749729216419269802783036470141525081228299281302009699528026921907154694426817749076976946488138031050135900458921693143176199564100031545532519629358836184684613786803633630933285648616142382680378596389700836657396056826333702080250644786287992441922667516007070457789893333336518062477587822864917025621725964983658694641217771774835171886348337803520644177405762559233607458779437028699669481661791542710063570495497383231122904281957678857276853159216441590680299828294630092761443345424441642500590449081676444284947129089151220216387942709246707979469294197909697493490834754957640523280373725218167851391755536278932102768553302336407720072428061330605038462004271850969672019169247808139664225591370102135829546730357780730835998203294503955419053457456680634126081209923324628218039755450508423638909532695944539901220823883619668235100605164526547202572764893990199447203800316234323251584690392659801696071585401670372772857509052908438155644476883965204098047069529868155804571061156055169643824613896980259229931020873034012284774378122663704857612195220485302802858555102864028267650652494154048025246648223737747122111704394814646924493568730297808106115763367058337123830325997772759500063877488686541846689230642307182762455928006008753859815478843174638238265475933665172160268310436945272436619360089282121485606465381742224382991472722605798739157420205611652844442564631397292492834031339733987727265123483856651973488689385976860764287761185344553305937863089262631144658601327340811138713210108167368731379177539937242468135646755555849901886785532410963964068623816377827668187435285759994381455724587937834265514719558470579334219607739698943560643710205888036305045485705277687541504906209354599427502016896162257079585607102019823300495675650647751401372852602727997673408847450637402072452741887938985349349916358530382347069005792225446215493897770732481312953038583371668267989614956567449081218406983656400138914856350422019552077562710593602138795440162532976512243632502490227143916191006120744299009768771294881389833192780807004149555681922366284883058776039640019621304703891183040566707241448613854013284449188802468362581750962332074801951231536935108009082281707495465867963726478442895032967340389454575860208539925649885914588682053668421507123886991429293559980175215550804904806570478174522619547228295643194915918785322824831042243295970019904968529876161815012976368239703737627389198374719995146796872532016318473138631330509730451519612444737855217998336003751294949051310312515754558001437254120420671158171735714886231565766467302327927703910331895877814507617951526189031723163887989540005000887816579860944914714977457372878729241267994619426430063899361792326853830171501221339015726954411868700104223851216504305511730392607589211210821417244134320662462659151650258316062211901820384131057574858851548120779826200847073651569328313881198279237450393834900496905607126207670913873702910481527729568073691573388098212640126521066786196463950230836710781024464465637135656015638545724681154302982583515400780281443660452859764237712869494731558754796702395596138253934478136634660155599531922420994632275455386805164167187113939868630389189177258849894540887547602901658666139296106760443668939866765272511075045603996433259306500565964257178297271830970565983615214819075061119244898708640060231763172290502030393067000550011834288209513784122726865573789105453800070912907292843563867657554721594345872013715052786473368423046959568306897160896452037388472123418213787759686152761616504419047472174157870525417459253130302014829725336283085303556185487554466867436602160529277560469743263943718267431535635443935513268336796706241832361055588240907822038199331205718244907395020787683114202837337864064200651211643888323284990443216364146597849905813874958431125710112277951432988145543800715628593199210571136489732503931996152038046743512664070451196008390993588448104608991465528188733630602467545625883017302070339925401248686734831278313778926263488234470821200443848668750590501277311903671824168622560758782031469999645405180920762568997841760833026078782830327915273960031337558069352988060349664799729333920326165572610491287486298640699412904427283674962216103203465233376290068453029362350939639610260297144067826051608800466589633524930048230218269480527060697065075762324679807951935712613933125592402491152540227164421738411696358507143320933495178472723251843602273961217319162705229288546811440419034384301783233117646672014599621655422038005911777056966940135593186969842541424135580482176069848551282562433567599644420208978356642784238257677297808660270805940112950938934993956955236215509946904917639708243326896552677222141896856267886740586145253082034077810967948106438410635374834228771653799907121902998617157733059935008539895372584360094491277135466006795779933263133627722445551617066871276537420032293546773688488668285513692562077872657475356650070215443645255051353033896506320959484081263445068890000135685202799398704536892601153781509542161474896339801009938575916694884833777593654048627770541365142557252144007342488491179333437170957182801123687242434276020704029098590327210864276598901188808562479578158866952729941396485772703621258065916058268120128096224404302814537929629107013295481259819739527678267422779829586836763723881077758501170198515011552600068317091257345319410530674422491157737597899976218233090181162025877584798059619506853360384946636639740336682740605539535307758688449553767886810858620517095915671189687952021180299008202905544764473067194274746975546515450366378119379982206239493370179691021579664608940821573722250409342075406210560380627211108402568752051965201343346893295080733024513094431949823816538703217057331754344298766500432877210205184709262159698519556097336029215653709725990535038298436995434472791424824388937439596974289062119367637842497036494198712460815201948689444181038828648008657024179249485231183810493555259750222182019365090649949570109543657352673993886556602035124770186337772802743840736428111800758267434336847989552308515822457600002445145649280244642496474329933782084948165717183718910444078559928227531543033125223906815827897586603192793128553077459375502609719859032395900096088256707113357323386048683454584234196237932402916681018944452902305762474052279259674023994516674232147909171933302913079328559152395389001824399732239201268919847947910727488659471627027293648689942440261834434703857719411252450678646337612685375359153847344968875168304761677214431849506414727996260459731783111453444045980772642237786304210505078612637925346206729631443734066641767036916597275697029337559629987042727653634260966612325909320926285500711589531135436542032355895075041566713220312649885796186958145439763000163074469656731372464865591229947553763409223314987852245847197711656067390566965016893691219178190587532442249172611433679383067897928187944530004145139852574416915152774349339361363232196033758652786193623961542685808940434062593248251465134290279174339353260327212797639844790682789067020457415636359034624638374001374467732205029149887230491201713773614374294581558788191859934285851897917659833703674334246999017477495653850532641329746082840659617313714508544255787762194066909563686214465130607044935656003098221575740537562964859714646183759527665708654623747535522164879122260494923625889008095312411999570242880492840937515858411051728072882942333336789384869459566876978817713921272231704235943677015234950680542502419220746393603966159829975785308928928590674695715551657562266636621243394441060522712296074810279420507914244127640955783928665749646432190401119280366390711304441340308290577792112024377253931144027307029541176441694035978541312184710103129244904036272117576312516954263918283016953735885428441303096063912257474409282492067021094984816558830341341831819599523935049351254286623709750078361551088680793878303993278401717588295777111002630579902994970130513317067897130941806799120670867481479435624935129781637094024891031094245002596130110312199920374873408863103638137496498328115682280029062980742887850804839674380519017308931139476149935705572150056610621138154131384934689730407191933483540872985279481480034588765748706700439783780117205748872488636176680081398548501942021554950212927678821911640343579497605339063884198629350196930695556233226421440918569483636582237669567456783052382896195817563160295269845973674546089967694457063492981568515814637374608705755065952710429714658735515579264009491183093610659259033646498574426548749699203211009518836542463533739416879872776576574134895810915816142762943389911787472974759827969687547763538714861720285803428423658687921619712249640617336217486207922369560088826849562272286605341004563970875882180913080303532101510123015542173795820358028405356558155286231154387583979505617273946752643325451460962207841071043463931943369879943120160776720150086783648945856404003211771423860098758257100093137954514449317545053873906611728905653768443062446125519375882689593741092075995160667141720022319469359846797134388443907473551438494175068965314561651059617517781938992574401405580300277455722841694062812345452997132448364040143260521282242965617243050907390865913591678510803961586295552108857027962850610977871454566591646475030524229891672669282212404548594771056526026776269980235975755104010097548913196824097370583730556520391070572057730352699464242060477943311426600506896330020350811488171376369493747003113584804596050569031162341726258804620062710708956337107850451209818656099407871828889747346651458578747337564419950948561994464373247601302073754982480728120361516373209153421003319338362687065911052708604855750700653968229079488786688157016387164063060145038786127209233433009871107691390121703736224132230289720174183931402073860047672673731134725916447067948557668111718629599799761172497982060665432558929341429124421369214408484432736846573747843626385661759904162764919529672548208039902402879140695793301900819103537087075724383429114619596696652479899982477609893721475387182096900824926277185632637128459346028571262485304437952661370556726867800769550810279427030272276004698602035767524098960839544286366799266805321215598863302194871844182752045772081778451182952221076173612391712701324431369893987471314040892830208990592872442744506639138989049500651916448332980448636548627875717902868269801078952304960120253069936449926832324164489348104167325427474854854104795173341113853925576624817282889002699736474694034196572153501993073812234548941648185785143199406782283118925001572861160711303505795205310811840792895525169420152958229518664707945101775609769555258380094910471442914321968646113719599950830840716254246070252167532522470331981295664838458571690522321898670608455310485184247220619065749674321485480660238300830738033537207532523300093784504515034526989892429913327097153484179192772302480766748844899762996180646023483207785339180606987260832967759550074093704091456232934187411722739620072851905945252687341282312694778174554438735548539804991922500509365850745187999563174779393281799187364549586187786325505538172934956374032667193825480353833990678100903455644033810403269410992955800709137359624697189469392099804435585661088988333983333211876802300001259193154410901486887103760230126899141515391125027588078496166647599997171650122964258232741534490076872767068801524153160067730198201422035446577690773374700365291499899803036690236759517149949769137056271038897547732813433975734590823455655142706766081692774820193687602648915483520096705489844063222479207803422503358951630144125749343042279842444841406049410274631419155612743103781980074334258860673794633037926436564120787527581512732066245432585564706512813816596659108189422164123025350276876862694032964728839576168263233893946694083636721678030261821218023106324085236879532835168435885924343639196111449898898700242691169693248085083136219107770513075264292952826567542295922559368723693213204426328042664920649002383552241467836656021872018511104792872991343297184221425703861290270990757701975638320927634075238624885931502554395128844360828102154554074035554001162941406078831219385956268425143396314355898079171578837694339368907601575524747919538815470524985385758802203319709021943738451715767438825129665351713584746934669447896421746357121421151019047630353873944865533167019912673890413825439526838043732243769905724367734400974012808246436333641001872616159544822112084022378189452027237490302695200004432644360025910165754597696284326489126674844353345012091787413525415055105528318074258489661105353909061208304878057863460735442793178213190754350060629663189738195778252897368179098668764242748965540766666554329593318733894526091506487372254344969067356117189847579153728366190748107015695761405210392851593548054810261262434391268467382602950486839402295713869949161126907218440623158051057204738410302551304686152349143780687807410290611535429145939237576909881706332529058832189243983635907174590871004372029527815470480480330094974439293508352522052297367462654251224918675322141399206176954745082622741762695329920331218181220890547522082153173143875217081016078991078799577373112195948622872992096718859121334435566572722342673239817212205578699709956602016691065820007876405071828800765471715272965444854578736726685495164152628622152908053366977479740030224363523972872304745743159325047269839037587690971743742349437144731029130966156215919119259070471800864338928455296455326351409749614918988775895338908461116559697219771908321093248398904838342023941815940879795418543424342513722880839821849293321091598736467361803131250541803342992735532428990963908752224503546697170341249600104331554569870799532502802248074709018985191736101790605280594040619042201408019361003260617942119486815807542782287682244990970977969782142253760452539527619605579085950496602812218350391467706224552615557456682630326237020272353816753048498101514612236997567385887807885069332778099050005785941809680395747393490950997528759950520550719529232601119577408352536426205568202422587293430830180043976383258852373628924324866200774001358048084607706229355872570537998357319174431068122188949667841982562586339434779516419858436081351921599868419848103023035458254649599904543376351689572020143830914535905565816015393769008909012683759914840704081638465841647762257633926529661170954257872834835905248429178761234329869698325214628938038024247627820803833500243594041228389284680134269866194528941058403703393403340805310564221028640192510819020652374081294574433030412991655842464139111629907902238797397887890538563625295781148650064542039116117828884066525548900124826663653541928856906556146151172300379346199858242028263363571514575178127084465043373056809602806352741274418044874397092870241144827350676446876778846078179355899264055596108630809181461697491599204418126371585660552391117690876055842871954213628662026516555815921117618075818279232694748687084657460708985326307717838882989311632800109183723647685815173680946979222260461891125950321921270303229586839549545543268350067664103708906392889385720931602918186504732997400320506251528998745330744487802941871006975270546697795165548250507278533653095914405276435319490993172166621716179725104610092138863085045273227204410875676736837891017633141830572368775326406328281267407652565648624944484308598670564700005455245301570213291049389335055303349101154395774143092395997351228646074720676297872872049741125189773359152663756190740041276244460238075366998915354398473812768409330688357179558296782893936175249806582084510066558087062492203247821818293614130769718261998484406443428765699602224713997740730544735678584620287656813851814689657022018211440958202312008945326830189815522380376282070706602573062181372107541394459185006983207479054689312832016659040996017656796807409076445480359177411969652614989151459187594051390310038776314533435492903150090329131867957630434479183971040342561152232883582157754651465223016889815638132523958887543116483897405207243493168119897517027986499235813357099010156202671455071757438600585060005217541605066558807012181318878925958790955522352903573764068151311028283798618603110991187906242037455584347100635016349610495687609386485516185161299387669748550089385870469809435091975105305745481079713269225055485439799239273315591713783176733339589527510720389879391941100243394666885139242543226191054124842231862393933274725258646306286220394089385037834955482845829480620698987486337471945855585906974602774057014367533590622654502346537305691363709206225375873296647749535422786374135551773711847959134266827960698374400162515304556646065396586809602376712697848249466536585439418387148035954478506582724212221553991385407022462471713565931734165583059692943888480884662563892822011809739322952025680516170945850798636696145253910673046773692342781467588682065240809825281398837756491746955231395443824978845751763081484738453923074158716071634970656845443596149496705671437763241804663845799912400573605639629906097575174859249221320606118334072237317914553903181778537637885488531879210444683432660513111215985002148625746792534062049814545817158149547557063141868437596491313539257597378096812381329569575702662807276883642791737304690572831082057550242903946461573330379235107026150789465464520786220819212299186038937582278630931819326331920892634970092666704153701296153367027693939936112503847656747391833862818799277995882216899607256286007159165998683284610456146018535100266368056048747730574495792716362880867151168440747073377036602296405615278988281544127688417010411843725127693172963767251243332951739062790477993500917558024323873139811281828790607011169606838360416463298060110399265068417868435084796455386900425268400225734043548347259744361382973603654361550406714225895150439002542136773826871455363581775354162333530137057498093664262365590016615542876755297715639906037525242395375795972344578873822190686800321681318995412583557250012613018105743744423880829126891542038710299911864327162308684464062910980914262251866183163316581087628546581182660503928526486127158560543178623534648190167357786638677781113783232578346341366569914151971590916916210140415927675898486110275851634142884968831624070030300706169041446932224226647761293981440930239203891101200474742199121545432343512289217600602797635862549403808221537642439116609002162564079430802263183303825416120823092037324952907627142104198066806325342822380728951805432743141207591990266978712010078641109029539370060574672537266975639314155032586965435707952313922870526197858376750965939062013684065119652556279979217270770472251638959454682915857019294862737844981922262897578954550707664489981145836966228854761809458462749514845667726037282141163494588201380970680318382787256470563379663879233644985986005874861152677492830156506683929879518760278105134082209977938794671769593035792767940989350312617509743312896811976510877319037061996819297302254977152286149357439497060173245183420399288087349096608858802433329310206084641708483925320248469794852458894378921767138555096714784776924231829469604967599611743094358146636977793672621342208316349481724025444514863252089387964992772522146944519701855824721769405399587698920271766399165632194301874696105163106152523721468261147578571391873566799753973235677245689213217766492173824996905199177730432805682299059292548987732842776231405637800652781323871390926202269950502989319918199082239967083042433653348274330758614465161529621844344655959483479607150934826494708733818699388642325348639217649740224650713171949946018250781095455492063811401104431380125730847760139281029365818088047655950920794106069095875593808701744401100422148770450945314759220668184746174555348710860394471927498799495983146582362457562446385092802218065493036777106677641199854669486627234521641275962723351270281145664239989830666813975255394334506829173268340169951956714513667792786920153093819557492110149478873709429456747332012701616688019291160309512718951032306464240667326405139737698860052571021418762856226319666471005120532793487894221542958420994053885855129852748538272749058253678673554417916612183580951298182339410053816727782986587770322501004142291227926348964424606551146950949847372932326778347342841933925186384999039389501312604804374546612197617170673121122356868648514339665169562230319296864558080607651426465316405624696688157035869000984974607161295024315154709061711464602239192757822854617590555134645162597069812340663731822273010736999883393922272262179535138363624468899966433416924401106215834210581382735329327933179781831194462384920440880569884853689644839436816744350230280072378425428812642377763339601486220461458461547926298013233775063289027247265270213732483034928379513681469151973358516440355270200033179297920868859824643648997641864725206145220023208459947243276491053668744832706199644145143184044716398513303810370248275559207512531438556879045990719111035617859785973063048947429487582609960829477120785609896887861070547434577098695782170901737808147000630798507134811036283049870031504342495761204483668618176924090124800924498048171996433797963993124969127698064837419042665305237295571786062319931550879072104289765809353501966952615636801529208803315245931513029615956895008606155123576995564646459361384753666691005398976418240687127442707909543690347065086185913152801375043117792131016657386414329639482519079537803433361764472853069141513769227620867189469380902016822870419585920071864410724958451434809449066272129146089084099885348864970359722005422946733295509630006682928137217389275716928283307326521178143929473359456966190580072931583650233690762332324622690958006781428990859056437076005103470919478595608536997200551478580831512508159481530777609369420140661720331352103085082154820789539513616535169143003882422781869634621592777099924159182589397650480387285740145298205019631418635428571328414433009350180249488770487465746703057126414235535509308522588946369042524915967446701583696373051401108890414548833973155012367191994480285450867404976055984998045230340943472020286556219234123280106242976026069529494831835330929146086256339464593349388937341103119556847820662388495525748309214683270938779277938352877096190542770968038765066379894466952378330174679381630709337954659072138570291091751280597233263160792815576199385563355659777711644074494833735540259569949391292364339467256114687538791020966783722885546534400727376530442941156216125374045040793450542443860390733948704379138335795866793811187209006467376655538786686785048122907262777314475840101426259276350128497349335833579121838582270829225905539788142460866890337786700010322696498507805252155716151216932354722418505423112111346921782207423006625571911961553044770912698892719666686574613932210137314250163621023266140168651364366178416001019322391667400887911430793173120661170185365501088111788279482172778578080814734168520837832360923665019655066667299107249253528405623754330638241804233466539644237412721901945744000916462156434232298823637365017995127737835721155685143558530111730336110052249787893105571127156074466194473501416466778734163657601833144408343503260794877525940200567538596797328083753020870529262748696717284036826299168008266191681402917328309479952345883426944033048138373055985664726920169858677299734448630950682026151933146682553071213494173995744445390002488465450756346155921817529686295465229196380065104484823018533239596071391956322852705158174047827542834952487466736130215362181867298841297385641214242354594376481497755727101704555984607117054562718677731435466601360926278106076196321397406172687598561113310798298015986625491914429148898300557670806652445686919933125030465068441005199079467905564949257944983462858522663704254934025140479932175363195175434104703271659735353805349183904841249408220614939847250445582437911760701730171099657415723621265727356900655688592759668819252997208407913992367505492715148371437785306844843224247843296357563322241421187385254340796890365627332635238304930672364050210201294634982532469996796262504896959554707884417955712995686380382191857273526481759233840365086623586547578856590350293249769613167669855875889859517708924818800134950366780032893404636672704577907807219477615191725531138783477510550672218111063870580203761406298814476346577142399442601597702051078716135840435043555249663949311416034626032283982770240106376279024614965338935912875395935753000612461685575381238618065873264849069121423629172820122884231052977548605627499910368745345035433760122276913509201736738307978362134640773396138060079989657066188225493493901804742353524101410061574171943954531952171439835270076115677146630548169607938665232035058116805376375597490098903478890250621458531979344034002346130282153614498797450095058963577805226841356010999217255638349032797885730460242970582480251625931725821631147256070632255906215297642523442124871236261870587203972826970764446288949620693474510659807976942471611744350971890202209477772582324395604222852041630490441932074725091119754172475580856422749699319930934934633585267508971967633659330382089418148556418508542468449024592248276844008282847718761146422870567651024430480911234725262048716177344617043552146750444146819859668800829811728290818661167021621093412775360689228879895623166423543524943576575652650464101628144443951479595330001141822868505045066377431406119293278941259144894013255603806665095601430623118879991876927451594611140657068680804213338542835426073248139094512404305899143246239768812628969976539316639592969445014753408475318737146844029800131549793485306115712929609991816857819646258750109459152265616559347866290637152421346416653299105670827338758482602409293755292505995402257851631274084724226343020390476348772666977773364226774314594969095946580438421167839159399205966360330370222713291948918628130286999543075743990603188081784154275669843261013152746966099504290452777418210859183987762950801236387668470423289581442337889878929517339344960656604625514974536479312201880848220950267358025251160403978583630129148189328578097557356752908093272681441055171582829250993297279137582685236108121448707422450729893928381623690910960506346139685012044609080965342370402937423220342730983743653838699558421194451744421002437344507677911187293875602433734921631156923590617392827112852816096202612756765231941172917008294295423290264198051639533576748646128463187367572039416341651093781219956985087978722894516207585274095086603009560761309780941255163468216136318194810342720984178637501313703837332272944603553269229042691161042782098931463017961679655470949195459124601061859181195006442073361742414657955482145931674400180628999556687058748641695730752852343170287229050255133035044288223003860142574654377803379518515824874609714253132111455072258394201944972501650306637962825380051448338118016976796071424169802398237315987296296830466435032643214729348639424311555911527821655916129404419118042310812521445621250059523249938594500443951208758500812900612499691197791434121485505758119165794142128935280172998711333012267635871119594879259568333347573967215504458114419390605073019524278565424111945851655736104283047223730215416045315873761591073546869815465263125916050328300782017479025324718893321345428606979240636796220042264068398299566171035954084040707792466749786799768730619009769543638657140989007314474683730353920576217434084809682617657361309399808848945832779683866912747636525531991439280008364430707481364686148467134138846036615578832653396174984469406103471064456080272409593332818737934319991226570765481505007015734329197601331152490777662651202152266933523974378630032585817781668135094789010232086824402636004100881710867515784949141168980266319448899920134126052740808505413319535780991305133150946568779827019870268986959175881227913575676384590127895251165900691349665255195128578928004069134146151479663209291822431894287396509281327536949371993162513768489357019936323725167992523984399734058952451876825377336819686783434886996882956022027318838022900891749843342457165730690993527816680115859296254792377502263942856962597691696037800914456457130970883304781756`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:
POSTED BY: Marvin Ray Burns
...Print[Abs[test2]]

0.6876523689276943698093124093654401649396373849036225417950710101074336625347849370686272982404984681887319293343354661232862876654094575659577211580255650416284625143925097120589697986500952590195706813170472538726506966897128633532224547486515672129994637765922702521974806957608959939320960275200276419204898630952795073857934498282503417322956533809181101532087948181335825805498812728097520936901677028741356923292264496477109032972648368293041749167375343087811805406229667842468746562451317420490048322164276655429005593502899361147822234242612858283264671860365001893153741476384896793655691227143987065195306513305688846550488579987385351626061167886335403896600528222374490828947986203972283317151981602436765765638330572359635915108652546003638748683763262233429872570955246376830059103531493539857361188688842017482419062608349817303422370398413326428269921074045506558966667483453656748906071577744414754842438822013366281627411698672457633017605891243802731997984088305950589130911719198776146941477264898934365742508503405073273852990354658711421749963558451447542965695932773286248993507649001286123224924467042322009048447796900447744894667043427919710333258185793751771989865742583276770011926585495711579480114327818546199372349313180236079138924880815475956430272731122319300522964089247402266509320796929779797230879548321825617140391652145925194320723410060908675584445905000466707963346545638317950978935794173691635274461184852166407791838662429404088348764706235465355810926576964427699436974155572226349459949283455829193795557370648072298238980631247223974628652717624888311612428546994730366718807550682650781147942858280736659940754490856099069986616723330714424576483574150117497967916607876523114517541119982582253217009185883362820212877796602660064784306844289431040134300393911723686724565673268671913920671602825581914180233170194202724833777163388244522504933432900882737132084900647284622686801112914919275488315399556092167120805967173270449925351732744752920829718067265412345730121875889227852589416793593098336321887751253399425197827209270000399413652069981326305332739913264169023117906331493154690692761277563399534820991116667872458946782176710659249866382705703436363224180712183154617549817801168728459043929332223126340630106686358907271729063029144198268411381919888010023118261358779810486361118543397600925486258552722284344590195894315356114882908324287401822648055427423139132476737614848553178776790812483187368857997911466285618461216453483637069937144046426376872466829161774368171976684974066359027773797749069318346132026666679347211677427661840812476796536979636273266898755679733812887612926455886765773741754861714680859213705687960298220660961388106949016638152882518020470331589671966706992307745435264972349603398589318830915039157957391605963945365518885633498035504728156029628815083668049982180691806786946857168770951808840896665371600935655671428169490491403898899696221383353063698727976967220041344889341991419095406310096225164910261467694433320121302471186895477274199167504519824694749957487202780065482182379711639929713186666286683221533291476132588098308121127218177551895153950385206311947230138276630382085146774326603935612349546191446396064438639422834221199837015235172023503499743403574351305175476157183504376947552864014462130776015948149671340140937495772920040065010031822698852401512738250949064290023655385149982365826945887397603205135539316165380601608044639419671931245416791515460244863862435457515333493229839340673417458031693493963289285107746103839947001536643991013697118690959933120451746226250837767347774578964530942514555919880253035140389792762289117223323913516742056716239887396547737149833508731039542279636238022753621215918452924364409428532876328687365339986759320089182346873853735681791600900720685759079298318455688214311838333281249174773305631311717969609492112067080201231001286411080043783185262069832745761903590426849803069343863268562321336686412952340425634554237656772128770623435912501658848377787697023608445627702394855133449059102259425374407763123266086959380945308774983090039320278773648213362814897999210954495484006794273503039110549602632187246812254249501702378581060582054539282010406927989306732459729904388338125176737033120691342928461456373230801836997236063801977842524654632983813163935504323638870804485730040869236573393289787680920202569330533297409141198363561903851444226378380174598330012146487955014667282707200231768639659858770248750957234942259344118480247634418728001445086006930712062175827755212484115865938617603670324712438922332700821007231867188489517930577872805188852441215848678186315503444722137990638606255991512917272583342055590185772969060595094167858705702564184836509080975087005186384280580318978497607609957495643666413145715009671147303306068406506074734076499819562142552482461165778721234749730729718484327610033811026786361897415427234548236996821666323341733850192911469767997446199904058929032715597446808970630245477602681718086266649912962817426557753929610353580767420395278207311592831754489131765470821597214501282394198074412804865859716397728039642731616964747530359508092747175428884183304684145842238771797456784304476385041812520635490161198673563298629974241651440445905697959389548816223394365267834726559602228262238594258791926588173253868804042127751553579375812660221181107121562768041934443251674740201949248294319630288607483296159278899105740966974332575830733316313624663236456378091246302961166220133461664236316453954384018130146920754889329014419664669876495975334232281414599698481590073749928121134254842890611229567058779439633677319929469468540818089913532467297316564511779416516462577225149901319750770912847389564362053522119161478741516903258046246677189012578934552126869793322197407222825713768806274892374746312842689175365697760380618757753956217158662580850329299609782616783331279336109425809962695141856858551896168763510183680471733152683382148292775911347597233085288294483303225795118524965780844978397592814421262946555540112177066794335473818201659917787932253531866938229998150000779396927483716678562908048876122219754987500416120880195447086272837187888969096112700812898855696889795122658932241339362129092216971221550166232888574685835109185406761219096081478853834056257820794019444782037475896404945347527959659475569776102323150335469660826614058842772527913240804182376045950487283200157740663749049347226661404745386087006568679287731724021530024511593917099046285984380765004982430017519570917296519732707867556231084103251857571248411884736777933686172403343721282127543218309431291779386731578455102752322700532715764803948836395370162396599560471169500485677376220315872395355427276685330991626734127579770190333032004299178032192804275220423890774619743655170765623231029719895087809159492889718251241687389622237818749955275292197671247327684250276015246133388813836260444368339662933989629765020498059741854928433987111382483428667129981681738758263899991591328663872859554613593534332772345506568374594055793189423733175329204547041093999957553751258530707556779422059138466349877017262701286440054319475078005699223211745357832038920986775838715366447434521654874820928491567903910300297453365977093165984687670648588160193106843188106278338484810906518566594643137582510141675299253740013452703717539783595916347808069303890053016731820356545553334308669988238215584797234857833240715337734964890963336352895209158472114451967789258561642243848301230761365174350759810624743918027836785194432612734564175386521406785552306982060855661420857844642892457821845981654717418043312915755155342902248185663052387501034934749414043850316243443995738735101173469076174529743228171316148424511561503236188112034773319311513132912842798170621472827047672512662660852021680873128806212250221980163516049343951492036827192365458624007962426554417906076621642340008264494604009400963618761963743233336699723230804728616304144337784023198465901333727384408963746178911895846410600416997576086543137329171944692055426801269582117623218593830183301386966850121271664831399119275066306084081037583165170944565900194591454705621425288086806504167157399213665956221987887850729795078428235191733444077623156066353441806301809447237558386800763779726469019801516781767029953454355486904086668961133817439450715151128685255321775726892870440473744648135498995935054160338685663523581037884369223344060532035244549530978707961982715975634739572087881230153460402610891533080110973700091540678696985479648877093538694703949814678318178906344131546480237420675784498137760336800205498122230353675368010587675313178007613310409033915829070038954051402592682464313456575568059220870617974413434576207889586620127970628216302933626256098521411354887792001292183442992713495148114132503886863918215495594135709356606956839123128764710024555788150700996403565715489148120536193763080771965908774932176687575396177970047279872390682064853333317876735441961126812962435306711447931900024658102394948060723874376192992074534577072409014967177579881003203603844597465838672089245254647844940297347907582162840968570311034735702558885041591735458587806321821681468362558269818765491115492370357335209916816201371799888087838643560301629784058060474468807601318274763626318805269627924736976096596143438889750807217089885706589537704845033995010990501704030485978413906693471823056058978361765766540875857780152353408191351286387079162446133333449551836073470193445248355929280369763149422632438606998644721208347829355596847775887472079459339376004377441766456024133954622699343314552862743421422371195589467507811224974076666505100447335985294698743481536277956472985989379142059927665547319180436047661445150971635633321070664576769828503372420176381854082122911693446785358685649432354200798985200344829230769191651462987929262619681734042999411805817382627750320836574960607564939935193713317938773219968529378875643297709581094705710775087337340048430356133329809307844513305130536419451502785240472800606103546718110003429303529906499494710047912237804449249468874525861083507010580349374701040030853685622848919878449929399851433751531600860218882532874416607559293184652366518405285172427184628927098560354782726363212597594770953634441623223718002326825766680241421852081609630303146486257064001699198422370576720335824455462285774244510694123015266718544479682986587917276656888581776216242287865231580329129808038591901952458108582886799850458913868870897316226399785695207697594428075479862155444063290069933763160519758353807284083073393027087794549513007736792112216429208439255374096196594904127869096362714022294184973891594248800061126654310668508809992868539099319923967900644358223292981012168404390789699692226974532812736740726705001655775124973620097345182072524359145885905902176218784092650852667171197480014612236259464872765843116006356086890067690233029982695875207293003626204223274745661069509440757588454169313726480937365021254534348209980346959715427124799927823882402396681319310222085719304648072632850848476903201378748718641877578017549246728454975911731380323992109244157781903593878554206064360914649409887207646362198718570717717828555745157055499606109945049294448554426277452184000492947923939681133667684299336442600353596074034145457666334331793961275462039007627213995452036177297272181745363958253145746378713674914362798861912370616204547295605099498268925270142468175541885936455230391996304914004337777568355347422130367905347350273778348426228428661469096462827715531661223661982922965385873663654906808552645899234048209365933126670575275802344829577289518161114817548328708323260137171887381537431438495763162872013412530729081800855631613767906611199235441691313536959306225969842073218977525206805089010503086744773911802531262458736383818632981454415888931500276959485335571617401643867802454518073083747981689243228707691363505519248801525470729484403981839727724581325054279894580924153424034980721591117713459481711920188146374609735437708789726381086002375802532851460036051245029267075777395041069203162249819292562906665858423018853205286078794806182035956253492598017769414680713839600943488472976928157795083131569856681065970354607231916440790023121971921063643253016992146934353541385065323232732416348528363830204550297901450028349760279586033397868154314810686464782535307316558683744949764451407817579353350266047245126257588496377047460395161491865670240157744681698896845740056269336891214367946547516678622720499862708909236488801029242763320063716880338723047179151798172058591124245575791489778944441792552360399198799743162085797046492087284331547315234891707663583637345058339250844352208626075065211002042402852548997696224231894476584104305252983051191993222219055741828524094252377925581703037152893534072425401720375934887581730991828290325117506555789230837583134473210547294260194982981519860912595954338191835720992308863630223835283759255205519300777881534867285454592827828524635031096077880648051886971133695126113929662229558732819097600207625824039727287689715234382974010185765739372284191513142959236853288627452308543337638644049025803544103510682270633218110911954688572494588187241971009790086275999731836282822129696754560584484503250841012506831605558863012659137903462449958732525188618380900088050894054336066355791119374965827906274864842151882268850621297248101428312054900533583216944631861626122510082082948769552584815342128083661652190772424146024625009231163820015068672195579312189548651487591345437813757441652233825016579370483546749025026486091835624885580729107206394743120989443742596397946986532657361050227492526944826103918996197813637871176060238382090946566765838399045073749749808967900477565685204163145349767202254049653445701731797224580931130144436315966907705090169035658090259875036956158416441744243312411242984767762396522602585962208859553456575846443674057782808449981261908954983951241759741750720901581884722817504304011957451395096673818414859842065409004696774034910989296144854435347841078251745452006945321505252144488702316190501513830181678900460652350667910123747817179595199448298133111092763397754128341727910605738631687254741174818938185397265747241023428269259507279848899947471545624758647042443827788368058218482353059553351031334052948678233923611265188514815847760674821423091793105863195928814686758055252218891239899987291845992009434816751078729384625585946379213282556349209111784765585513963392672067482816675816148726191451616109993128144202270947196734756325239342116398042218762971400666788022254343916772222497456368099921005746495321202188903803577906352435030955031135860519210000096429393851172745952195233923392705678930770254703614031284247755908869936042351444220330809526622875759687333022773524409808010139864309440742959573871139136757554471953331334210601691836581561512232181968283688303595304806580127957658352776138794312115393827933609169842487504264473663281726407649263108598740651157004974028306421874750795807471186826306536812676670443101928784277023495868312680188902657537598464346340680898309628212690416877722215220998384103431558545741696921375810425244068049779635269388838985483810164644660154215985355314002191072183826834150364933111897635872101794281442659843078223862815197818268234905934105962017289199664484509856851152571711407743981226634242648977077907262917821596746791845983552190964269137238998329643786140886276001669253224411999982885770258107926328516172422268014598700031525640631831572340465999499823727743735860504191303731231297014779022116064905047114454872899622206489234599826586396527361043001377631008159467400941115054484174699217894418780239782235806818592944425795290352264590391125194923239175238385530548831490448132830741094726510683902362032845415826839418541349555518567786339717924798835135652664955428874746390983648718792515819928101128208157392563232262477302633131761516279395410942166073603426625646415499325446544446176961777704332594383390271844444789452394799668165431710838354330928146992254682365088452351788869385112287843823181456202881903316831712389212335081399759274071661663025057239285027272228070621787850885932813064277648455682848679143821101541212039914926883137872136310878896636524959199119199008454870119285251327665130651804384549890620784844376185359563017846179599858006374105565180381545899481534624317844751723985534330767110164897570419074886204283713397206165732444080994456501139532278429062360406066245098853647796890817370541942635476410064790358844410286416698030928433393443054580812155686712547630165646471983057545681310486007294356970946010339692962083822345529536929479845583110101772761044789272882353702282977767784472475628083637285522211238302142258716171304832579616714576380730275750067721360930755024802985873288300996710306520012511247802663572953971030972621318440452569211754191449481858237939682684775978773612872283397528785556552026763179520536873281806921512691801956916739368499585097787793159558139907584066804051267302837205345820515916808381901347404194035790805655469266915458717746760246854670953322534003601061798894466292078923638808668463036694428322306765668083083183463695527905277826971584195281646637970491206359844892839142719319905449908779532420976275606600086965953228027943911904574111556710003207866128541537659526534433644720693557924372174524949026681621804666748959849631509316177047697834230436553358221794117442883065683550707156175675900958216772854792043327249515884176885910684201895992959230102954603905617347080536152768741025234628356955007416935687697499284404674269273900903450394251007734020198396200321509486969046661167494719187483594388945660901502702635458854894487631762494507095783419963951421682396784816261669772185782256527319198823861631271305557334629034454498661142677846406912692925774443168093589891040662164382633796893056880442621829353879631634578976963235921629360829143359689543537972247913740705649199129434512215215740679036987749974182571013658531964646778847149349261417998963482352721226955643820019004829309013880764975124746345794436086485714626451648600805977150640117805901595518345893479654988936835717670724884318192070873487543894386331355482056111525441696426051948232631043671371143697862965228696298741392391196941449688983054241252609515308554575584427185978096863888750824693110432545402994807205717323133405172850752190459202667476109943422410241573373698022479735343657354319748496751385763073480580501733588812683059007773495903529327965043761106054451600132937952364382837086187036444722430119083247598455858244430762446542826629866996492834814026803773449440995522430483940980984726305696285237481914071204742568680609586863659745113750653550689592779518657849085240184574742028251559922510452901860043524041463658647037742238893434165809470292570456284996915545999444251193381030290141746210081563107140516323538818377824184714603638972113832527634992708938190408049158080822024750184714344683056026297143611368573505838395679122109456872973271435965970527537594370948339800488598801160936453029436583361154272047308679704361864035171592217830334405563754399107324217094822176589598259498008224368570514159771359032192945865791926395260564056102327277384954281031168496628995748840366862999475605310775537492410538380205195556395691185405441171726671783380888809158287984772020195607983462468072039597182004808135749286865005313456354446432738488570228974748117727243292966261660462321422971309083506870605186292992748767056948987766121194450203459009961336049593046347449948501671482126552774921617888757635937891504694776592125033239683524380751023399669802982256073198651740183433268427350019466368060803123948190531505371279763926080627174597753093877528734523928212855662080469535041635502505460927247305777379655740309932171381671180809455637032819530657126587782734561336866134042972429630063420853250083346092025567295835389383686792213298721828323324305898736220351086101097969171884600798761910714084349876267672453339734177791038756760710599326613122016645473079424620142392899457072138341287282078381624631678553561718212648954200520923044691758895240021822640923551509022529529610478774889661172127429646039557160397013489030723027673965599970182006545166692216319834148948911221110993150316618459891132532481386535767646150044592084755659960873845037937699767749257964447093943412785019048406187700597809521064646060033336704823778387198135312902363743784818590795892908091223818152822931358731684317076829480312231466239059679061983552925561573521123882109112017346689313359279340875176762340044748849628267318337526957942996149757833382531252555431309670317322685311543858261899657369846419700056910830440604363863014750358220202692828423048867253620566421984645769753729614654489431735986577510895760028157318581579485270642837299737647767883329695468785062957741897312437732055605172526075001080977750423281764412224932701205315588897913699205943463826509977121241701344489108947626882090923143622461165936467053054304515875565956471807711322045854384920524231562813392481375800843712043736637338981941845236287027383334967600303975092279045656624758799082664016662539594147341876657113272869159078132760283524980252417242999370106289782946386537464949173452231895020345097250984243182220472603445491714599155572506670626675211074238282050170763898079026238939628342685735490812491724705490340311090765668329360689027272806964505349790520466889319056171288731120852099897720580426057560337484066466315700107827033505530845720813459411427266351979577490192922928291545480377638447006274741059501405175007656406697308028372202204601204382150096304144605786956911178488102758773181739639967330494233255325788741410825522985462684649925103229098618464284430010962689530048140508490764439088989835709674121284126411735968182179608799850320992610335418306811332335326452646062954283649865894057578409157764605009877104819439169835225874969674811079731688354146167896594484892543332293141728201486340258281826592517332641643843487564161458444258240685920802473806412300683311533276739861915880812562538703669289333566962143062531354305456847886305168836394051793048982761585783420553757692243318865019774855310724877701102588748614270963965467761741669584923400189861006534169908116658099946248500888354997950655748799741000365568018336490989815165004297908921075477512832648827943586442967990684136067086954058999054841239979018223790302917631975285397592942053261422997983747116384686656909103115181431156277810254412332807215521521913210188561978585551220620946997905436181482382812509797216214534139208438729063119268815475532631127917290425824545171988550887423640063405982537561548346413628863712242681785132671375305935991688530429003042194031750271644151411389381149052294005267597471403423250867152542749149178912822512729286125408367351308934717944240465484641795577195920433614704395431215233445214762102456860712543439607752146117823152877496307615237782270474695837617786842614444502256482578789817600157917636415994030480609322477903642054612366150687314422954146713119505411836749588046889579113211539830476187121910605612646269383131868208217353909339102784200141724069027190113433066436228320221410158566131026128468165907807435758418013421625857870007622184208914367965234781568790433636034503103435020834332476616909057876728754387504102092210928047793333183472518566428884705653585926512737753482973727183786825183580572713767119346615964521796867596310010548840807546755303981587583030288557658949650958411903588823513924732485267115171111506676066918066904107719634258550982773530404220110548665697912977833960430447353845004909911303279635186313541411818532323341427386278365167776601690816802424616844372740452859673973150101216703623096083563234019786645793225501930118713004170268183349103077731107258049178697300463457985489189438393176018065479038550718474274887817575086539393810822899974631499816496110494244129486286210922826197936747790633981677436502922334909921445614737589944467848167246917428695872001088057181255744648122517999075266657602834478853565670186154923896767519659494562872470384117362888150364029965967321511631733219151646648038721317233633321508080712014541927562409331021768426387190218707456659284347808807427328083451956836427256899097276118727729790925851364721598920680287154381941836104009691057049672371739606582800181761067894097394277358064020448784606906923836673383948698745266794229963423994725524492217675161409118905627232013188685656338426552801768532063328165027051885093188228264581213805313044578658546746142243852544028170454888159624837598130368817059982907399338079131953092875599302534037534493538446263483767146866060174148713795386952822607632916357578542043442253219429428321099538927604269192415840408547434508997663277672854243638154809761320114310471289604552266693897846220052787006616578624182856501140506091084553193785629349394297414303270336850138097988709288401000509572835435809496098471644365567323643258614561643369697597132567632158175318778837999671839372662245543698057593976828959984773233415435110614484300466372399048661686410077202935179284386940136863785449704388572300309149553493702483507091956362919340041863581931097116556493047725365455421743723623570007674433424122803249367497470961195116987189325683916808680378708883441662736165417044104473249366832409588627850687122333658134431163599624702558433801653096051088813185446140313909241457065935556468688992589650037139142818929172947670247414701173860669311010164367989183440325298136820575396000750684019767501164956792925517084815922800484881296764085623512338960498369965940475587228294741535131222011942734064204644877235033588919207704169518665336768532484173073783248157233567136746885034351046815853017957423009438272560042717062540611876692207565973507375177436645114212562584030412691717763618931610915972872303802551516648509638755507146504171678990153900932138323259584691324322445651512868889718645845854388164244305149188431015701151567910391747870206148745784697894832268425395418290507249875083846910974279706146668262381271893604249107564438577643851780740049411472964527062771993809387145453729625634989160675428490483602156930327341961239646522249943283140221543286207711454484800295472163606053146922060746386313821239717287493187775220549466785745104470770135686322725979075900988368212778538159022367866911630316109579217557179762038703229032082796930869882424818394455082552523447183800647444980307541415793493024106234816574326153970266001701115792127448193798544820705584638708278879732923366703443723347119791726483548760177032041536292871741449642354911321169545569290917836067885748773577687582841803800635431944248930119513338240223149787489233293781157213186515475107653665099891754043764269194331926312463596159753713213670763335640467460499288503744934440155810328372503632648436031098114690997713147877801834834742546121305209175390791595346797620847949745716545847112457354464680263904284407960566922759098850621874289537297650615829259423825904650702486979443946596407896382296411192843545266994515605655964909734112902911475609617575852413237188220639893999201170625562264070916031142330823118819130537632334007688502878152520282993555388355815816092761011357845965174596422833543691047204254994902525831153859797050037511983867010410162707216319785738469795075918247574045063145021410661217099728896268004637762123935622773046742637382028126125806239595497469193150518741722825791108626517191350943241423601238321606644866618721118257481001653706857080881841379129950410089895920929143008606512452756989486561283804195262646415803458674798557817613274803386127411272278459787125746777980499596345329144205004438840589926660613817291459446874255475884950366363774145311529681939042133759875189190333625667865310195170277177439447360997890843955443601071493601998926891538797824107724633367985453633074751205849139480390998339807696489093367794302909617191186598537685065444399300795391941448968578387365256228368524358475035081917865361601162655291461014893086724160874049670184401452806622152845952212959882675815641097655262877024150948530030932398760146633944417687875825613701110036231478912074700990346562152519938814580995631864703282800301728217201530773118240136874851550873314342390707017383808558254228518015252177960796129606590765549268986226536295046628547478275593665893078047788638909033652986332466269693692768783778947070248799861620177142255896830138323323016933225723366020656941828585659358646850250780269835049841619697855719251048587499068837545729672281484218993258417855860492384181856320108606716096834472444137104909688800179746969269022378198712116769151275316628897638125300735064193357482526402519675325687342324001916502216359926720193238785605311121116521744128276485739945557973211723957714854701853945510815133557152637682211969715434588897875991323953002541066676691110483996878092193455498221177697741515218000588201711300753546682759336365026689803940298195703416388388059008398573173683990588511284241611444775169647909756049117999483979526202554382051322588095475480524577618857574546724317058484224195930879728124196189317197080468742425405684280351739753260754556501443330997085301106747430562291785709007836303588933664059566329109323092188580896888075119392373655292866508721129698389182380389011465299814087498682445912898893710136452794433571684198772332252859981530575917112061954622231052324383903979933294187372151817342073889060181340531918048227190062670511372657596058616622597175753827570187804403538790654411898515700346345979934324483863041650211174993989488275648905296660883734022132917749117202524914531906251827996618499267383828488233260433175419043294517681624619805077966614073827259883398622774319478402316516780555884257970320746723555478022041128070803926625053627687873306767173642391942298881770580971464893419646933018126354982755549686869390567905082965909341285805385104796466074719813818813068368589723852600025667714719566248751808151353993938617912621617148511129477414648182961258039614126799306304446374996718215800767537694481619082396129609368655499831743416694943693233250500945178026763975151379152062693046521293861237207401694599140035400833062992938315252323888721226382664357441188502909234863985900033258695915444586350173955274557680442339702856580659581556637032489646639793672661027228247599393359817834748319359038514275921901792179848104483422869934347229745465592061339425879612223267383045576924155810821429853861591656428507601911166198803721411051126133161807009403366199225930508774271427298250446119997479943375079708007687125403556062174990656723798876335368843219699074136995011220652734206117535098822958275931827961229784606851952992658372482180736238296942165136253072945561641821699124931275778657246705686290888749130220574171992219786980081443320012216461396797534544138303900037652564934384499634986749279029681739994826095476256971869451489323821243764182060080418962521340760612556870754964260478183976824374730894249284900029195245009686144721066396813283499448543190102827038587497222498345897552351583006688381156465524396838669197706487755332272484987652503237624538260786412663844427049554993721951547791644980075579307152310328126736241453969966058942253602074845030432388885024034844978514501149967113373304801804797363117036594246858941797001169266003422226841579988779312189385956602084056917826007641906501261992262363420702744760662757523025845581140592435261177025922214401975735648208312996261179358077623504288226272763192253515854587915724991675178271149549131776078079807501675621276271043456098958250191203215311692395175547239257796925911256237700122805347800960916582850254993585820550471781982155243713012217091401140830075926935358963322440232283954095588962947406224086142610520221510114730024702684990015704243381500655696023446786108644944127992524908339375170349413283344415619800621246413882628858410754483176321615793771837057762092875102226431342730053728840266950625027444307201527549723057038073912360758348683685968109014781804864113948742369681095174502878726634060648295924094283501769507226915491429301091118186012251605927149865504956149134174995983803661681211792113378438907615155899590590015884243588209938413577741198921083515478408739920024658546678951561162880851657856664056406504807548195648934314489540621659739862153209841307742561293493428753148992311069596058549539494945747765551752112868992377963968119980655226025538991459287001829642320460200451160270342738881623981063777911913313507264726145201476335458573012181128152098634181461448748243493031974971009968653072025363944018187744228579128444256119907009922827090862651555276309744955677859168977200291921399668884685759266703415483663872556972867007089484762167709676708483974649044194442239654913638624738467833783394984291304746172344068716289167083331185518365516383849932554517768805019868474429638952775416516097255020780081041386609825013069150651106522009018358278614949612819956162309436056148194905836178367325901653821098792615497493184265340062446461743057750339172874579564619869650698609017580319697130445076452185537076776425853115471750433182215740003968023246219599280173582159054305048507794207358181679650720765740922572145873435778640786502465736169676593748303181356317187301824779767731130929870693425602084072913111750136636805556978913094700095101899955614982093229829612467920917726511574530215407446858528714687054286840264473252783461643008822192992001536625432951600198569694801974452300147087548975725383476317662907474451847613571658240128511370869026532371355783653733013467129305414976726759714109346420348978921686349246121297252330321533261445914370244103247691832560463016081000969629678598056212451738089290494403095054564232917151377984247025186556164878433273625469130300182007726023844629572880184494158199792911194403375788839636027201521931745244269263492228352075628008874010720004452889935619037062117458524025823364699739387461062061661569040278934581120657912305061366078429419665365080793913977379921915026419253787651036788058007169032606750428963128556210581442404432744656871319449118433447002529527664660559929907261228225202437364627713155617353462152307942733249256139095888723682289950206741656429479616709387296920306757797060315155328836507826197400986692760754241225012346073556134355800182382544187463776159605252149016974441400687501821612727420518051443374035151998949657782167628419183757229957698562436834759121768891077243448335760801529894122465805257412025454916266975382965190981959206876427577108708980089484643332228467370748168118350536526026975453276762920725109092287774850373126188645426990402285126545367647838099139377433335145379175981242893155135616101051174627008542659893063201138176269788794507774179266462636139116180187184332988671971376009671719522681866476750871369512025978780480793415096459978607284111050922610584244161099954148758729634872200206502473335592671972398804801661151100468231112217299610569052703066283247983943991233372147815974774435701344056763989544890382903795877056619751802374041961956222827379824980194271157056087595269410809956184513840496331608432249601417704088166816738067410607608514422688766905959280855836695619980648746912673974389918914462804912309331779361340217109667897429369749488615733780484602897730937631037573197061176753777223879681353168781216312259357382635252268210816445424402048383754485898520519299575604399804416124772868098585186656103679462692660480810751817416675368805333095039940322075529250131042576787257746735111621653875483715657891080900331064527526413504590273339023399379527428845938922251307115940331827240233970993576928829899718796697084284979929122954190541468521464309721492463274202428398401367332998234672359760341130656742478021088765056079627593371158431303283588364359909720443789497736022207185471500046007342962301272324713865079711093662136920624981212311612237052928995348381962664472353895565541585651250339455736060531830425471020063172608415566059859116502941992333065548341549141116860476640456110201389506363023524742746883817867331403575990962739384297153447539431461894083457840919562147447116791237060045081011458141612674162063915626896144430556452218488286015109016433525431748061854711384660394231242341931003015222390187436441867359951947250107258561393696562698323683573863868331140421631898132239264734393203953732880743137080917166259399541761386298761474495786762871454096900723984932457723392578728076377626993486223697844015834909994992043102529612359436006152095627491970747960759571513686649852960643262167866594332327799185698781113265826780213481588718361989445010837288620523664837569191749440371719060782046217178771690950520809690683713131333829725052749237499398034986658727559391862988572551007117506239390622034453755534373169532476425729691319215404343965652847882623147036687722519658991296291430747337641256329481699650544871728877871056391820521016696929975841399693545153521030142630013785929734734875894062515448062872332531167767653704646948624010816057351045349714841986050762896371738952874496358383058605466616196117873242574331345175997735761917507846583978710988942904211403772377842683068432236438687019154635698181339490148231157225775821335764412806769217227984866559496860808148276292024706761673332360694414469349771625303703047109231962027879149258567240759999017142813690904774747672375922321701257132098780927411442274469745705292731967450071191099482812683285056666901469150826557671688747680631777237400301944815440922591940602635459442696586846812726311608391611115338291959030487447496390021428767069655834373031046828304256892111601480361035009144279541574751071151078978023563721490993522032131757666038099079402992240801376558902297720448530587498323232643706010686386034691552853780821036663715036188264277364541339820919503621785330515930021320650779617771746027784459075143625845524072364336305547276681721777908233839248891659844413711270483284241645420202710446636280812348542246459413958658405804353156156230637596101832540860935828878935997934954672142841667917632893026566338747194209240020104326432729980808577580335251724570595810164981156485131840012372810889234342507520200116028578160201497404134982748033586694987633947448773083641952006332988668004221970688590835255368590679986383371654838812069099842909204465633228084060104616997040189856404988107407062031157342382499044748659696262420778980554314087407316555274419599658389254236675784293578956892823057344553949633303057231366779448904830553709550566007559887733035292602629237026658991368881617323594576048628503999294374415675749278590667014181635139156011929096047109164852423988081896027563876844627935812746641993810333932368377148575261416295493018685709356130647729071181023399333342620539860083544894634031665669618829717972876709764105749619282540007622805309504394270847274633133486805464653760911302476456283728675959982860844673568480105243554294112327446344333436274047851299388735471687675311435309078161920687379470527015068988661571962323561656214065185019168439424489896199465506739625114628831788116041565646486057399047104103870634856608921346546090031203701225607331662560822667603522134801497703551235412028827448642679988024517814482909741573883797151855412151594117353545450623258799811099482513994820054715472456947470856759467546416030277192701426961282065583041241057068114273615366902317282836702157816213230952238520519752205694963401481297756541666928085939342710089614405434240404756355468957436085029896518311464561175350189247194250913301156832646276324629299350741320422582183029191427281787335363848293194146947878999388825678291282053548910899561546826260148756259604343095350188239601352577091298852866415328193379380758678414446778507263977944261875998326904311573398120466984579992724349933403627810577324499244180672458727142785713125350170812379213854803324460769372771555989581494205840843204616526331937504996451567444619122712500311382584269317058516317773631032960450262774379981542790106572711567838198726892726817739319837898730948549481410183526592211934086795584402543322715079029350837618896930045391454560849709960328900334264104087700723945750356167886120545974456178852688692470207146694326708524756923650030424399342603057686556156108918964804178862774626713146116245639868611260249816990210326141664512860226237591136172361597011835350494208183077546080995294999913583989248761444488216401879013360849967673693117641416528134807413232325688193036818878992242313907768160599005011516655637370075931993854781761448510862477977721835077601139385491754440585327380719364759258855287013169644454062848020020884660744881303580799292264516912823472327627123421953364699023546454298414196295445157070059460180032015243495391101999690644542000405960050274925272349824096748116903859948468103731956128214465617500937622463092003664621847424729857530830383313103418436125171878354497366023041083678207220544488743155043955140390972568673582380102189172374288734687952544270569347520625652288659160933201900373806436095584373146974298332811247578589490150355069046330102741640399130287129383028608972997673791826993071675340394529642229905083688554527568812220849961863785769343707946580869581307102481614675667571060367637269774112568188904748997520308925769660100851412675004013956537332191916717084934629745028378923056232630471843810355458660319910539473244981315622751545476881151043612911539367228258040554517835781847948092216004040282640715031935530826226617726471310703561714990232844806168729984674326261471958966033268260161142581085287348015215553865230757692464207525266270711716536085665456793305668447496450475867814534645700029425502000920294053618100959968445454955785894088186057994180762412583616255175442988317486699430473856041666790507335922778773885601134864937988138468932625676180366386529628230749343023100824021682437560953568902645769445374038839401420570674693012557064009126599280295603601469506425960981697994541654048623308047248203040416746697534926306362081708380974372042579720848257600150540599664375264866880519917007085539309113488752941702792148244605926667422621303963125405414914838916043181825051461189241276267830139100441268213845734465374694844055302193838226712410246808399035682942748556104558983435367188008661526069150421069766296481136703889001192574229728479118062713022359474622233071422868638714039389060174676507739564923280280619846998227167917027474316804061070532064329672117841627755356725410739553215375627564901627407579967746498793615766840045491596232490678199138999212628057808241093200116716148272390020972374387828195958004522353480965416974102379428822494416262404635825974438208626230577903642826535254800457594676393620763060202076784347106613641574381636209491673261216301886811565538769138098713479311352483762094331597504312394149563925782322763369404773000971945624691921249366291915957723765842786052635030871561514241402156860878343843085222738331611800897965820963875971910509994542844225600357340042857310499928517052117215710132835927710063380323209453566575140500349606540174617741498279172021508568235248272201641600635899667587115023783209319000669371814737906907359281174745610869912497559050961285529339448525995347160893299118883535935261515298593504427221511712760444153373293200337366002248216257331901345515932179081697639747975102955595366849469311994822531621376320094385081641670291971716818603574999614590875009811284930881830144983417136209315408440442105938951090373327501090756638541455118586630969259665908313459304888731320124525968057841643535413669748072600524878054928266639050344567497427921502610269828539879768644970507679892103442577113455321676164927399104473813097351703289096483504056662553871061224466359067386708354005029465999864535726371606840698104307850247958945763666054211897148221245676959826001969901600554013904269393694386573420204363768268722000381972746709631104622000732399205171831876131291999458056143200579318827288870868421419522107485339409108243878522776062378765562945397859209363121261283238876882644906331118343628683891861243705719455289091371095533696728310430590867217302666743431870314741706056269127444988024023773964629529836948792835797901236852500445446092518423398258222660571034198780342931824609097209873942896377002369821060178387522704302980393921969520727380924644808073818575035130369535878920918341814043558933386317969963164055906784744255879115263010786845429025191205632104113302944897823648973047422158131395413021376017584035005198280482262471893192411555477588862978136141140552715869758331078527780465718347865377719539199909473719963795913983895416374207594510845640032163797894561305292446139942960845677322470984933893920004198447972038540408626280988659521771079510809373962952912996097955007977793109319818143268601996639470345801609928318281607330862539549676252423699310497655115953946406298037885813928135387880698333549866339761624124719104768497504516610209355394647453091471632068588667535665439684674790874364272081003104680805050804932962387107459186869112929219781445216783617118106071489817244658916288609000631210823520925919680029749701612228076545237947148352966396753792413801831595123977487172406074593967143169939170265433684783896811191633451626913240248007461820917423757791720481508854775230257077657608966802542692590157806939694309500297437185393817697690360390688493615332543691739626047394012182888352089542202843278535642805472354667333452142429257759302432535295587025882288971198394756200466392059576631160434596737795563348759335147351231588998336126045499389348208062086917077885582157768310230348947781475875937895817408213954204753688642067931877867014490216059572358347851981157478419179171297849881615371113822938785199452249736805067938819363966952963349640490882577201393936492455653659578751788767677350876597044584952383003190926889880342724760415740025769438212952890912562026532287428367686335230934451940384491400581668564723037984985429479552728276487927533896339540840062734694824397520589612305050367086419069710879752793882927127012654752388642535984598424930080627944686887555511856330429185647425030317555554097761392068766716030280234903942130079425243076001499818112844992977377986296090509304859485006560978802237326180474046539187065024528376063796464928309440466149011219210877537921559322935003142306278172233354312420502439091411777265321164327335408135815270705446706004223009551912572581519711165406564731135526059613787034047029353191413229493596282884580993325175711341838045636252316076747678210648862235240968781541614359946273880954924270364873597164016673638104002026931645996926061040335718684489836309107589889839704700700927718559232764595483451816971535614262008571348275444074720893267357667536500678014737201981231873764812572124482115742758312430353959306325973718770747574723468255036055250900976239679865158775896389528972418564196021246786797106138906363879890884696702555334550790834200039907392874425565176275453883017425191036486078616263730315953609365104316304987449311977628592764656929564756174064209482598827743928393254195058618539076234445744363028536451372692389196376115244552878273518905581451233829340160968698242481591407442775222442797953197307881404761743829600122680363406457031031085281334865892299688662749146860175870782270463298539958048456107434830357451099251595581801325424119898053713001710858624959972870030281516982342820770814411456819782550813752115773414347064591376246113536486885329122575322655353493742721907014263046159904981935879178815674129574250873091017841697871977668205971167335752407261251252521631117614242657127407379816502264542344014289050752957769491445676317163774720448997840897993808190708649773679781780086106565763352790931456507424136846927890074279407571653250700159187480281252726566194963100808060843334984009374500722847894249917545651314498410538117855343867900548399275668006768567587017646303648294622246343902585374795922030589796428492771174725076593475480715739825653431315253290453020267799712908535556102106367035050364657883774821871390090959877194690318899636538295836269644024123769782333533060369849643390380690266538731521977123433990384183159426263552137042188461649257409383200922842677395282049564162249604568114310168553066604619803711162251328927320988720723996097070759737633240685417984843518155752615647480187150330797776329785769771362666099442230571379224462214127551132429847199721221056938025440565434846526152727078111271826980804354323665118258497022239344500619144308301659048748730202291434987237345683007430424191127314451885580860330922809972723655826271359826671320913466353414804673467346378694534510118723163305717458857881600169545342786505294677535958705159024701161749113022737992378652430673618858177875033096477496807861860636188315735920751738370789169926018603471764051421610413417950774694720065715505843431316529062602790167551391266282282853811860205417507907895699747999481811896596630925920081531775908229807674347509378696546845863210371471277254759201285000295494312975903876226064860883051112654040629598368498324926858430416014924634811741005546823807083147999899637639220204497995157838080472013073142613749386835728295705478694229979268689973458800160683474490446012710220097076322615056820394020453403861393298006679743068739988440285544407511613791836006835455066924865839677606896863171835039411057941354606515308458761550987569591358784415770598199042289492952696748395096731985046733617095834307634217345761639591922287079853719454344288594522038039500656128684258163354239614807603383105811376778307235084818786523298604619881937575722551007095688530247051493131888747732688647890670950026036727736138695736805339196852584752926372369924930785756965691552497984527246888303027220786565868094369111629229614421129623830031967334953500065743614980868423095456145595305593819464370538230625491376094357476022459186338205356887165027510433191925277451477931546593354933469462307114400119568915881122838134411375148416463875027513326049369036479741910961896364047546751474982378715576641775281219753295088678426254374200868703420450002532512984498669159701915360229598831090327460301018013452880149779806752052462833278087262608847305653185579305764495724144043546845172824956832719846580300021371255544371944592226662054600745801556602037230681794792692415888275146796816175868451231053242781584512937586103605475161382402528173427227993950016333525599825488563950675482916887024048875076879556063817966280607095116758305327326442653024009518596601556043405400088827760977841854869089893918630005155061090903069398501511721484520062496104436432261549020474613919616719951476618951938916541469786122774038429151910743712216374123373492161955471625056785512743833513827777513635341534802458935146276808220157354254465190196212655068198144396540987496814886631832844679752103537245968039408787242889105385307939870299680833069606368630530099300664995427670905253691151175659388796161396233351848694952150589363872426485575340595649416283262218441100070906259881672771160850878222104827623967802415889356396096576426991473907447637934034616743461980180700260403779340618738444030757526895471139000484526722238149313718267066312057359820153471884261357179611316956181536538186126523573290929106376678187474599595090530860677331255737214259566063246622962842088636705087236117883140351028039911423040465400965550775706462211667463548270009723899730139892509243354030573669235110474392369162407756625915311884464286874602942186578882170822840709664108167142608566573295291765667743459681959654886596665839703972037302171619691843671007589135912948416280399276826082019311113500685393204249922519713250473948314378417741484009999571302016142592214865081719198812798882533810792088108483335678244843419863390710233330557035146304062399990084899327384797625257057847456917840769499038625363446681128922441454794011959469921177484333098320256086105389607284939158617536048792774435090237241788839804508783555162674792544084480667023507818682031814634967162324961122925616684398119870353661416088610380011312505727779327487252163699930521309879533464261600697115400934698691395777464262241840756982480157880026476667691799050753465846059434457208835758908679322465300498346213302933055098517619050004599666236014228113715701564811988717893138260048194272593016523694282105963063023984893970097399202185067326991321636027419852054262447932730242209397174678511093517496573740353948539793547443938861357808290879464955296263888038582539433437520522185380319425782050252397475394548640914640577697635609356822912014449909513033542102327500293901688626833920897782349539097073434273110175779569203744526340825235827924911811683847612333100740135418453788455982815330840984798372085699169710499592291868440078849198074629739445861680093833259643163736323874302069570570231448185928062420664304076201952587273697440351169522963449164786861861459488513925218729545758035533865803829572103921204719909400386479649236225500056990746311539358519332513486559108581892522059107731761643697825833413714993944409634763620005095979352939431020730533182391071702594356866540125916479936224474063116805402614280401379332035539603660327475705555616160314850201415177575258264442022326496305923726836440453478314789352520516001689015112193587107043207854707866397773969418322681976375520683853549128577794701033348121178113046836971320893845417806162602555110667615583820447291847761789028622652197449355893730508156873160363282827586275336942951795755069673899256986423798478635019330752212632153239761732685958217583269444874015920098186803111963870291466514456629016275020635144852652947429285018152656156487839501876087966774475029645680330226476866327763338102558895863364389914534037720155912978391818569589070569740459237695586252906822148753218708847393002592295942804695718706699912176379540099478823015316271671405790328620242698197560836631873960908382034155583503683163814220362178639660337762740583148520547469105841704800295071991915353761135515687393396235591446239644647383671676599345280133259279016404525934486173591063235561480790353843580154343839225296946343368870412399405300175348097463855854493070169265454808445782807748284417863559877814524091091865695839729945119800916351176169808431354214354015447498458990845623879665976923503028567967024699136294815363801628057804127995909962527222932311222911353844199150504375200461038346312937427146462501289458035672467781042118982264155693344421386336562867071509567852702537374765980881377976755110414538381478825284904417810174760680249722593126769113801622231146944640283318519542848889404791045899028152077172446890297547471982253931883410619591460388346206860912350637335856068813377069054606404415026117355291530383720098798072524914745843556315534474551536680626213011441088308276452981524436479875164010978582161616200585114234374412186475717427276207483230806733010600258252057532264783257490356317686306433732939053037010972438397535204580503467821375502141563713193338841585664867882235652546174046411671757090737604999218911478713622483848910989519928005796126502646115630874584021835462321192654046348938519510361822421916501159492456772776467677765175671823255909913470633033095004699678671277097234086021787236001975173770619992847976827114884580515289571850901996045196667960627851872982207719753946327103587660789979926815857280965040238917411306418674853915593641036682445372501775226237842840708290736930514107984929947362133711749453832037532076056757685680142427629671767343305842285620249208521932925620318007449858960542710646185161956612943476438132239462536348457598226564460095382758626414993866413103174643938757328364346139151036843297143395168554003419916595348870641434693227219500690977461628574954349791500068632872285461251769455663660546411658644090741694969542351031185912626903134752724989485407470427348579120742838476688345981540759820947306361939219002117117947383412706917399931908585350750370448675118009837926607920667058801165929823814615344398594576795335142781935884308953426014742524902065397912476813832576499660147349267876295453187346054046299289198858599475683992788729266383350601322497781815888050547809287763466640236001276529379679004064827683041606138047956485735615271779591994624021568318620375040143394715806883950790312593722608646314312004796392054237917708341227265675103576395100208366407502375948244753364506473602983538154015213488600683234130763407463421922806164282280669998194979994363379075841312108687865742403395517183043789185731648022583038771347884532036423808156313640180171327387565258438684537351056466555890789508692281685892093441630770887826776090776343375436749420843999240804885348327876054517154771227628194097704975024173862803592067609283246444566889688868518612082353618562036544160282108325161033215279105093768901222837435355441136318437853890373892109881714538921068945354949614828744777554473408917604200547047462071643243984819961549918401762371168793406259000386235866977373607369028803591006613336936077222293639446998887847085625608638318291531489039954164646419961432935003055616547590952168198227882388730642511351446664602759008040237476086144592984536230791993338171856249753792948044042480791865273148850300724611169902913394525018070010215633422346571147224189369642699319209319853160938691596512006577939322876253860101956375517716196885079570578200882149442744832871362553429857488554649721374121115463036599626196520373429439613302574032589032216853872283507649498175356853157086600337705142892358879206954901449352389742913327433132627972930352862691471281830217135386283901029780507818478081069890101615310239838693802153380051476602998445942303018431194457181943205301496129612446501357118628048162227066741488421785084412118872251828844136732010787265357483919271088036566061541900360825729282598999964245240707437365713687576251883731195324068498731453328503897808789445131691179272971861564893985050127940549337026874072144747832308180294298300055073714425038845532183144910609274128296764735395556859854258349674915984198660739185539262954526177275585805723910647906683819197625604518550277240114554547505894238945600054603058258147876233368362703289902622733166276043297896289250532719111504765039323219973344989457267546604266823831892615177303908091241932089188965170447648405783348571668195275573077549352051295082500733036149536681035590038183379327440626629543550884491701339224395032194130516290781480719870983421253253359193318858379011270244990530305889579320651672401902983410779609425925632874973676311059590219879007282285310558244903704070184293070001476190808474206278832888148301420437455334483608249924647008190762254699568589543970706192328102357914888958311345195022865924478832577390794254570808266908067179960645527582665857827173212266462639894708939320005272190640995152550295953881706617916462562110674314663958286452075559154675742263179813400345184342780309423311488716811273555232744920405534199429009540555553156787040909606113019468056914347075417317485486320162493825879165003929098706934099005616213036446061194733036808535438327440744627286057940419318578945467214763384947238188841035390540740093519006382454114398638005194318471554002834539223154234053814155658736052171152799016805932513670109173548718464176751161272191892213974087869991912093779515860948811747554267703434555854041938100758935449540174995964294482618938568037935655498327842612423976738939059020555051062933609934172821413710439819177137982345072642860319187831170890820374872445665489128467327592487499842897098502792361922706207095311369486297722270852291168649807895861483971830636344561463843647596201062399920116365219922391555303091463037461625440282529687376353160811666107778367757270187332977542882887139495647103516540484335003613145063121476140229721745495294279360390225511545051790996169464712545920621370483639671182954747732565329424977812052102165555981103354038548144076235705339715797917177634921243214735342968961188212347421278609701106707105867546737630403172540620243359527210958571623107954244491320270253169485048875329063667459384725013655132411375411788603685756846314508435318542792337088920846954878406156431745609187280076119993587888818433841576544086963247883290199420621434042119655396952205144947226589529268220062608649416991854070373275578820822092541651468016607903399674898678207339580417838809343343998836782548167150686936534986438891581272325914087895646341602104186602367469378937610562133159130493088860545887346618119495053451270651102474652165496491586823561967316780722407247328077730537381231547169945176663820635245090794415261042399091794510726741034407085714531410091271920399283953163851280495752130223001811280098813354583889285392357463305717440453106416951345851837635330517699010417884224019065157184195174972080725375906785370634222509853281665338238324158992363533409331277154431995095165356788678794719338737617929291049023892905842183032119133839179765852006498463203192420340652351668631015849392132321427292163459161527778465521405156876516352115540846188196825648600424820579678184282274862461097019144092993154759446088874385452329081485645612863616458527228213979608613252276676910265675171323183894025564398237820973630337629896333124137797464271475664918133857598017334815100518767573447652120878505717308169657911753787776817531730362377370729430206955965992584102834531477565447994197661518789633085691419043299997043577723911262898668110645906392865848938536439352238156048262587851212241135265410499066504007236396983010298402422742401174873889752071556153378227398766753203660491461032424912844001501715571464988442652302009265519852993644415495551422215384173479678384773128862638573154540633657382046524031353593708266271246511540397636697067848041406776278610461166356727107173697374609015188804611689073642487825951510773153224531407939111529642861109205622620314326831872605548549865697475695422686446710811800753921791537788157328628800094160176093701777072849230379323193212971554297157565415388928136285702822920906024819652479521497213477856705556749249345767207497933328279249772423190492720594767993251323883868868558480793361214715368674023940433121524924693852305184201985313483740816291251216978929312168445742033076212901042122108640484756556560700980356354111158762132631275795495831524516842179249707001048797832730719308134701304958443804888094109181668250967086378871495637807621474525366419288634599865675132600687092890874133597852130741927580793198037551042709417232043555763167334154854486855398089121382194535741110384424115043721795056549056891544203917510784148272464348303793177955552972474579981960582135216193371842678314657717960628367453815275936036531297020813446625639991470805825168812890401938703255264876195217540035174365404806159394836751101031675631799475288238787005821015361998893256148340815133944083491140402538893639383271691949211426668178860914799563433132578729122314884279985651848407210754762545823210795076860322021851512470982772023571672061851151735177049469456945699522368464712605318546712604879232265081832719407704880827397380381922488391851446819477158567694607515707931614593357168582916910962687306676767947370714911880372271266037106464665505805709151932632440533615356035207874143254561468130410569432574354227175809578655421301474007970033457096477363970295340007437013389939540836462914345088585767232388091860949365470586112130620249440361058081777970079364600529341662135200468017276573920279500739316376978324674246976265188360613833834152674846524437161143784158195261649299543705903444507824446142960726443407060649278432964683340107249256873701824913391673693760667648960550831551722747207479341034612817143930983162603309253697966799783194329742674309787908557953865334855335338139143614504912953385721322661012204412643730521313216615197403186753594140424360717206258998234858844196303172376271759393124761736622328326579714295362600273714532909675491578410049495413678653998578777181615915798815710592590527845366190884642302039885655799914143500807351176553368665249070310286155670473157019047538305861534857230528180456893889089825269992356961811986643483291415055657748546630845278452844302118655711332766581332861935405766380663067469405973832703006759795068149935647594562721635522397226415436364014618785927279905151238694133109322980386876235271731998389956226688748766603089627624868863810178926491619328564675434130507476433458459232162958539630522422472838633133292656824917699825395622031901892947070038198259914052187218090503118230482201066905150842399667708502736049438812342922647089654690202401033870103771059636431909956794961075483304405529801740409405957095206442668688890836554533334736595833852160228159175258381904462989923807270390295692655023770742819181261772106609963480608970134376820447065649585603996855235998653040934178385681464890525318231574030537947242041837931641798392426893961620244382861787907511321666908277169045757029189440828937033288774439421325531423367107981820886399836739820947109828992267366931356841188440257782664970766387726137107394537067652167568696214268123976383243889874217444233485382726299325120563369701793525763093827768084902804150007914433524344298487108895640401495409910172961303195244200330417284642492188295652545235681636882547869276921080352588983668663967430715656902014250433426027433239201941122470627122200971080615852855582734972459757296038713780032732157953694477399142866060449518934724236960909834312282712998650284059615172643331604788903350292887215240022770041975994217164977381036125742340847036555245122571984488575341496924008255240386772053890462528477239068684755677876477063717858619761690997464800996548154061913592823931847146407230205443701211239627804668749562276592891368844555239054234252926349891026588163990499222107830687315138464296093558375775538591110978562984633477083385346816236728365385769272692706219939518388576579822846299843309705407756719332119733551986703924211122155329387939355472895980471534754149770418470707456357711348486762158911547597232564146914924844389408501194715323478282518508401040798521576484625969882326732489207851387366762530669391730043706347358773317552493075476300691821096498915397473786734443973018394313446845484695088308749203297069778457898927335985177552076234010449307061014414638755292021716964007120548812256453745055249548851566157238319089639130699767015900757209796552972827008127069007671395332011178750637843159079338708351580431569491244553663849083010216773925845901395242020866513173052769589179551072906854508927823403710821303223323764903529021572305535629803347357737884621954078731031414477743978127888959953874401062485172676168734010320286594593926983548034749447798986906448374933021468402198088144053346608516608143378585150021395468552645867393574846842096259642870679850421194192296831871450118544283896194025481641260553957150497800289252446780784100922980702220502516508103559992954328440371487456244226740053388005250653581545454231480796791033570912124850995392465870472366370026757350834949623044310106791672668102948312945799985914927643290616176998765458461246241872937518387220553593390666342754537836424545963070068201496333211871440140734588983991578129410553705236598209964235266315219164411367908105539254264711409611309931262196254846132434074891875639571964640728054186478536035461265515186773187537644679633879696319054755216189729301367040128249532832342916544967927879779626991792526209146151004673620341283181474441741647439933270340781204716151609535103382678520453707484053636689007043152941696632107122681529573666249025428193107689814193813764303318589286195075446936877657537521184667753186709987206784534551983907474394950413670482560031655331868186638654000629589072863291717369748413548652403918141489038997109739377531408089682128501653171280255197915368604520151124724491360887043123539351886441251971714439484635531088025375755130926126858067656586193546216508278826463535262366443371237209867027873388040891427505470554369808008890340071447481195575715276484411834050378337241547705047029028263669672578104103044152421551521589580695690274493766387298027806794348584099862163142978557189895941296148876808146589011546968497245375989894144579379068903164112519486390829819028496054255034268753281539643659597965699727277480912295073617277476378311727621455452832931683080592222890356642107542922797386644263145525347264816456465313931632034283023740225151823899860083691981393162646068835405100534938262578320242668369515297293068813567959119862547192040655069364727638931155220641358481453715129173402434150456033110710465261281481111227955259428498868464146657733007781618557397385223947878716755083396292563665315372065370340151597048322640774222392789181738642302403596653203827512066419566829908113230637966353236333062375786434432332412197962973427616925408454123297731894241132097347601593379362003244739720696120910373903069040221759218516288458380318593626475272739023809316452655946868646556572586464148172412239622010230453551690568680681892513286795724139475737979162470861178970435785944212237752349826742956054760335448447969005895538197006029475581806116870075760463510996519571974790534980211822625691407925808166738989956252647277303639402114751405694711220934647021152435513048960156307147928029072030331499051768433939654498570605947549936356939301957901477175438896675110354988227421635821230074417098872209727334932511707528323302325515246751981444987914093806782053009335376785750257303218338412304079968693700488160906772057335009919109982594989279057870869964693759788921348622283249945267207977062642087905084658584297125011574710178132736619865068515294400317367823989638009550420544963011984297817505638468214983852751878135451922795988849598254728291758287502106821824087659416080748965531405499996724445891430082979576703850096639678636794922506285155391588806206928448526341466114843854283393669765890283228877956402962436773554333563717156629799730908813503594256399515627082873627357605539317540378662464882531088496601792801386905042848137887684946585218204978618637137155874776991534896607952340409538520048739802200729362431857492188265622726617627915184141976559109686488968552234550260037922161164161558018935677158507802267867236497654861967416110422402237209726425616569610701479132143501952648072326898106286905838339559610057054873344188667780574779078778098529500814580741173422715902939995352189886614505414916041037763989155670042474210852029984326879400138526167004517688912030017833802667865870700793271681186736710817623567794035029475870186202292772005905497968552356175072986922282280912462852882981591538174980020194449101418340041202943745735166944501387321132368659998795323789177325686415885045029185385969025099745247817914430990140139433578639497600777910081595880076038616132678631638771779985468040327424221970306070564161201396100287913237841666800546727170541888602383388148899709924890307547773557962070960546527934083696447575318996778746460388609489739748544494095956207962477180497073234050868251602976490345775173231500159353030722853630671071588452755223022159707340047562987971555768890347417395405709307354812519360952051259899886561866404280181561483672563136677980273302965087258048130554488504927931413078590710849970304341083114158564234730954763556556069105952884577030243048750726450505644405635008340472173784996951161113445516533345692454072398717012760992399279414437543712182914238076362485569744952809925756392886191297865417111039400613932271100537948767695090716345122698612291209884966145557190031559370329872993708024864725141569472234577060293862824097409000802990573180670711710870505817001550876487882907319282522859301019019227929214135688373882157069867440112691679637062424486709388151175194280135189373972511918912702556830245700498114274340742315807537902813575220988384549748257273405632190777979024551329419848686107777799381566909078106951374107257352280803014738066109428352384906851007871916628052868004832155400257116067211497298255361988725728051326073549479700480976500057979057642194587433402978191762479005849299436119697095490996524369156161089337875231247192737124446594805055595939893198405279382930372345377748112048741743673118070978657921242390544026789492581674096480292543611980953382818498818705493054457288167802505413246321496450222591098868052902339319360153212758700659068769332697587094650804291897075072939764854395683441401543708332176844766015371988192637912469715823413184117801825101611508596269010047974520145501062641641824454780184864510089957600199232918020182803087934651714722009218282895550377946429156593817395761907830993100780516344093800741425772026187065917292028942063777659337806942775076801333704112558104744138632333045831515066310857076910838136932792009519122379711498993254600260804538695955732296529773062100583785743043051954645831379143239481186675489742454992217057728263201279739053235323730812498805879946625419068399242534046283656091507910823180340383017970564178629004352172830363781208107603367421798599402319221147221797085673936474878420145894214326868435449924645593250381918236083962939444981052794600643888372245914789962592781263860511857509051148270935812092599946858972877255468133694823089962500298912986218671056577391800592562302831973182212676501423868071270002237628153959563506560402890619748723753480770227913630533883105926059852887673627887367810266813907906293553534151109738654885736801378225144177671774451369484454828165404147226121553199457802726417376674046261823159823319279201199677124869339151636660807908341341685485784691619828423484787512680490507233655004168206763063553298851149294961264528771125694737110392940629178333687868747573852668265380624826450146505717328423390062006500670218413500766648029839308347212820325049654459209755705859475753456458720078263818533855056051669758979425123188165559290719718023869329030363255366535244588604982471870172860440124459091872976856319160385628491152572760884526646110734680342750093286499060427326419854987194573201226108812894824779890228334646111852175600190117121534094253794410128400938135013139216309588492375070719522441166856840107744375215848786902709565664224111064261203061348237917201614414511559704392805743513421787490925147540800564366976276592575582572240662030777674150029389669802888113090556469318800133275925565623843115937614645094373555948945466242101228524271459523602649138413059735987581371754907576169782557673555578499440865234182440431412314563845922183148656749235794309277241944498575246857333732159683945976788674228122038934566846779789682383594243143714988047586110247152786425157095133855545590157593813285300503058705438724156299950825193748003520719736386124777575074891957794755586696783287904325547376382695966698771718196012906393126557425549219831080877250416475807244703871488578531310129630829788358225905491668581745741594865271192884575571266240325333415878273698434226296781324989021274663206820719759026079034296250598496158508472990072568352366872517377648964875348421071538751457023659216166743372661949564927491154451937665345764962045634299786167808036700582051768558994788467878683657571226029343939220369737083853316746568907567695059311490590544613791423683366247636145402608726911255122511508535021709395726096797986786844580631938018846066580000226915632054351261590337788271870104034535723628684219929416862374110572174597462003329146793368764297668934803904092796854631084186925989430558890509046185892221759112441366724508212939901775822184260812115549221208241374598703102003536132907956356853784323925547325713093885870708232118205176963068152020981943667615030848487551592752108849685089748707516586362300315893090210485639097401760478535900490742462485944708561734967902859272199834606343475547866834385036742950130774718825811215915313693540526736737471585338654718462979317266153318233444936374587596114170810924987607576119325997873503750949340875293931492627416163700178710307472679515910335641416784910109594151166527237980494122998416790062874689450144742025409343774849232035389930335802697128830032281814109975176690816043307690521886174798521743864705008630691713833820977040065055582010901652565033941231084045371256855467740520131517683167178271830062114158443279355413478513922120229508381760414335511263521239428776787220705991673791977623746283064477711537042154582550675392366876809479890412500713243682262815009223254682300178649151965572729797585412736144908747765770083060887202950877496758551164879686984086426202514224348708908971700019144195535927391513470543806082747978019581154858592089434860306888072384555837780295874536116514834486606813279694378626290842773056130757617768998137972363485689524265711583720207829307766796564107179685610938350158520208478721693490656288016015995533796678510764090058584207918674580939939598540847972979588021600314938937916820368426342647576638698455656616360703433860585365888958569333856783960160914867105887920976681846011557348611405855303024895708744364487025052046958133722265058509406049509031893938169762250288247452991322693894596677139462690762933945881205247534578591305409246944038232317189148917001423568910175188594337438740112979388057477077406729451512912472362507567574525310130572269182870255257056983825767805547122516816357478060529904167607279323473128759866214557224126248272214828820759072279037560444956219345594609034188742876513765992767541335758793933966748831630986538334134254966487111132073122470914509461872719832515710746750949865311791225461662959850487803529645697043718136009982915189175336771782164451539008221040128622906846368016246661317141895577742990487221537243986639877870770237449449442379187482712740406010257569005737055187607492550463540138847679675208058614898523478638681136775234645482077509489377683648425454874901047144573763161576583203534688581382980670762260513287437017794178084315165913487266956009126438804386670130467555595653046847191461686895193451405448474383214580896048505710583305938268448666317212211387548860465372041283984066813360254775579677610112701635076992850536332872874653036593827108897244549897156209759918924006315446340965694862989740556732566177375502462401608838395106063506524020871817735925841764702616760440084577780716090103910032655263381110717833738666552487800475408233311285499732184506029987191792654471239222514264507003463145082746956068371734117588951939445990645786692952060981480759276209059661304154400294503438024663325703049387675024044681156048781324466461452286439870733488532271255531175989046157408959624212841697765137329924582627656731935378487928787880530482295642538046075076381328394924975874467113053010842800225761476654298027283185165081234697839383861345528179898369858144733231922739752951864135108267277489581846230526745067977217282188436155347557601632776975408638056529357325623850824390558332933123158118922319418891798939021549061700797114828625147564926967550478468633148894551759626314395625209445605841046075060600482542007769734264968486259016518395289595627927724217513668226023027736015981844405801852031495279021576518395696328165639039173711909273800616596931095044391091796941360114223077669683003154091446419342326061706992312144966703982869129163016885097483279833153815988154947815964853951068664337238657840576281404552088605477529752616859859264777830647383360132030408092550755526594279464747077947866594189856187750758956873738098873269402753843218871626178942649464512895498394210220548456842648666366482586739267842185481786793105857596186334953016668577258273362382798796011314276043764688216837961186983303700132384261653358691653383012231953581760578669961098642784400802818301268910379768179535959789701948823244776603265375087410887054424342102814526538934607372156812916764520476404135876970094520716164535380020438823396323238925729554332633581740003158678895205092770546297685299537708331016709756422359402344645816800892479945908431662613736557057457479046216105005167382917266662750272956730726679673108524608797304190661721578692131933655470300127442657941527341091137394820888455684959755871245398001984742607501216598360515380412635216359818852681744878393558046132548884153493539667289778049649475788972857418798096361886550983405324211133538123781897791515946264988597912689955472580935861998814431746978336609462237788579783901902708230229694289787377971945419940969008038758236558322435310872564137055829139488614568346481557917648728141772413174469584128147385857166913691272608827844318905525746965221214959520045134785377177374502066054216644838680123108146065384229587271375412322565368932579102477213196634285558056747079524261437555578084668377143232749482042839596355026302005903385182597910057965848141802674966084927879815760192866574552111708067785910093815648993759316757828475984955745590471506132753849570282509846186582999581366940279837944153276870600770906211744983406552359400936616048987887144717000145079817459044885743413704834713619078192064358845103612827091949944874983448623387196271669907118895558089356739335325421883403856632800103587264226582913999628660375648794461927367884074012938271539172406747744347103025090734388255830814060748791416057584828975124159551489143982907771234578754999554976061909785053362370809882277070645123528711254139413241677541647978414971130286136449181953738143363085146510049841385135051234280167387035776097483553090920294390625198284158638714784815095625570597632377771987087329906960840468704750122930424057294774698930594899512781758355006638593422288433815551243235328897215378406612525416015965209120080756668269108574118048519621909511678227973309308323685039086182877233443149271239828849756901283787713161124434132073259906418118530875271976607728437200392897122599030325407661051388534657212775269654706595813802693508320584198415984183103137911542954121614160114851391931316448014548776301741846887762116898887190481473977540318899658201049088229689066162564036140060684725359886087328364428894317085484190824901288707852181457540827913688486562928654608525906529629202129133871502006201977799477957399649230016295368142185627970485110486707128943621586692200537173353848176218220498519690966009070301568547751070475966647015963261933828159024496036832445831999706865333522602568408294959844093732408817425661730704539998169737822732768965578419366562780233708869225079150089412406128991183992073399978077533726886130825658820875157509499635011660525729300603181430456848728310016006880663644521917617777608425486989841938419357442056870941752739389804116460734689898664226791511306906356496820578526644702159309345176153073196958647765805455786796653150021839661539575934247510169697451412905425675906458736543617854702487407691502727043557881427683308042925714508097999110957206740752091320078369322932695123967872546945647272984403391331848733258080982649369451483165169297837382270684949579268031821477328009932392233117102444728550925441228122428488687417357185489459250667173642022917334702229275464684275069505745878202872820505906555961914945506449712955560313209632577480950491689339881990316859451729104000365420025013942188628235613331199231917620189219654997768599453839584105818734670909308535820456862590044568628578990727005632575280652207962209037430564123074833264066511114432466406192843144388304133835784636665175302303517495640833806068353624552273858354827025656593329227442854658058342986490226857614157067002456058545671578536627378800491451044114505228124822758629811025116368069632590828997500068266294652548354714692467681409010070333934618508304902648101640087483860689215946803675982178089613764822449181059734705063037910871098644195177657516309869805975815640673508260844468165304666248108731690273802325580697815615988795161686817700567153834930958358758711414377635039651697841430644314723280432520075739081875741371849793111771221519228028198141209201586204025798541271855068400793412351553149276863541467941400587117085647137964500611160697700841194059295902815828094355798249993079350689091854206641674884912621976056116662479868379162472331757545129540174814574372475059885735454116824781568461213474076034154305364599275581737494035197489193653076470252648708520722702195926882833605302726541427464108302685320049027609135159108722676823367698233627171070748209591837778609166779491117527629961085943949330239761919012367722025110442876197965393053065477107337927326244721320165791042498964975598535612390873471101473467733382981919856711284343982202481821953156359102983135669394515792573668194937589485575684759172473780035005247869379449991387300529943476627165802265918031544691633327469202515927456720708827528145398430502171979562196963813371842615749460915321581723144799887851170430173865024892383844329963834465991302850787650483907117268320594081761426877522905224221681341945315581926138834932525094151865542623386376672215609369149858439999373993712844701603799853758026291267135766322755347591091637862306297092907871168029947325541672541746684555474555607422385458386730278175233258653396553771367413037440897463060388705815019086239604668530611550132846207621549825226132946883794245579999741489458543409201431749746301402687143063795644387479732072407610207040129267379917631917990398988268352622336465649339327138797678438645619782536735306001084937430791280435647686397055390200107519481933758752763217074602872232441341965227694331008789224543313354220314223370984651564560313846487572843935838690665957778822118630508843589064408389157033473643291241916477491535035599854672469518163077344612547127450139642092614149952658127070665720470617426634510608898751993413992167460136648156904061072775964376696934015146680867557416648379090482428609878536783367189606982698405540119041139891298859432243065835774392858892080428325911671279037273462980615895311476437739128077535348029454932736336617675145319642763248558740998132918426174848303381470944251621950649758816703738171530091110149363190755768265746400957826738483738330783315970068445284935788145550908978599571587774054139146379372824955094742849418598384064615820820231297610568717228502147763018552548565434833221298699876532887055682321195630125564867536968286687005865090240855599804598502669025189507201317154231278743598941984171077154319818229812174264144914922121444617530926574366434548479658277392319930789720906781353979893639313273024904894968150794105561285194319310539077667925141412936140305058887661276664430554715321901403613104885127791849384961548877168936515042131488655045404987184000151196784241100808540530026385200477984585952370647745407443486029693212682408939708790220024661499762437543529925992123365824230910466643061410662109181648014574364325867654616291188341550276853560604444019563392784837878843618266745609952198638179608031049910221330240824243249565467131857790242501183944013004651421091925477419727221771895786246794077841867047279639168063446446350316195692656126701861493292579615982986861870534558945043878320237368992927568338561756017977688237302921512303291421443340484990688883062684685234226156782559802437431749000878570384676099496119566334881417920656933015520071379877738388775971932806840776080326441672401721650610204453814452772798052284915473725025914422562952034428090724848304837999941009498191950276541823821417182731568459772599681044367878260890076071099537189433530339856089652763925746738808514282701941366092984560926608044411796454888437654996179639144319162493973567313504355934970936638081789314314205181949974383771418598440558512914520255817259861681056322723552558966794428552703244128305348890325513153885620432195148716325870623937215029214849759074508871308157260520879891574777067606961321668218069659447955104043392607441242903820270557643555883299834916377494293730813433245570109588106535734576556232768791110113823134600585483980780459654123328993588699145360992235949148573592395643137201870891285537559659954956709183693214729414060963861253938507436687802183054653350904119857489159511068354193275254513229547995140461761373627617247160297068461157715249036335481255627849856624532021298165668910824931386855920658997507161728292097136322942313033910920388513255578440661337447549690256381511832378361539194720095701016190565232206995680713845813264363187832191980731927622920736127452764661878606618125595394502583084781357436080492404537963922945243150028990128324830056545539170360525074865684442638681379783520527505919020718597135825092165943917333374394725387253854880356847888280377644329616056390836863277751112167365349932163475357258648306377301342374342118837528549668421191027852804952475537519496693176593124482838955431298050588152886943785245128841982065070035040235018833212526994741952042175296922738003375750072679119143546313658496176268405160419839121347465777518099277798891702418531748478578426803468797590183077837749306984450268395356907299887170174621968514823134585082830269088570322796158033683976527798405736476649003214423178658193378475741802789258605697446881532305367639263118356482122869620869074532308076559621551434069320427781873824049562149511422369709575996469384359382861370825699733652840501283064240389981295128679496518401950589579628776869173938705017090417904394766608897158885309782420841541106338938248500382732907126047047165845488889928502508958893597510149185335876119296343554053411066307970238188402893675134764532670743551290473238843737035906513407035891211753377411532897856890833583474576229168567714348411781831839424858338202571007050994478371368342773673225756636316436626326744001396102838703719526924700017893743146416732695465484144592738232687549937514753930209470220816353859693847086953428159527052786601408700149083558149739096713204532083648287387184211590439302807331748500750336187148126584994879734484382083281527507376051919723754352511492030781935919078906634017853510347037571906429093959987228110554036362917528823907538534755303702049924533322727516674080746095680240794306424742632862054134006648763158419040134736640796634162781085910210528061215521853021005012022172990619808061071255622800878728396814997512184716260885438880814811517078319127033136904111105176886098514009391020287745748675379306945782326109173344081417594226824333249913299168669030835304008552478138035664483359749810794203603630365797230567308141571907639010018210726339824655744700080920591755109143053365456906221747965729070987276157063455761267268718068428216334630080289472567411642054800444257925205108153567003204202366453864212799288802396203256745914510021858484066594949273491548826403489952349722095079744905865061593784013311981531908756636143665659212989915495178059558008403309797117766236990458597337762626478294550397960108886751218795186533227637938511948291962232246504415450857869060343332015842882499732819785911111500160447178075321472769578445221638828278987887254867105102089272148293177867213098901146804904881353106669453634046434286002902161101766965457496482527655634586012398914453234887815153807352485767347468368375133415470620262498738748333283924271335375844404710410368610051706478206989864633726325795469089920989831579360828363961986926808552451331946574258039851408663409925971957035188265169799240966952479472590933042862246428116017996492701044096065422156019895442757829289704718660390427270921707834289566324916673876211734160564659319850658400402502100124323312714416215387697543988783907370990491392725203906061867829220055639352751879074572445804696902638609097636438075182625225121981911782588771605635002295627668556305231520432259743207189421695996789799432969530048274153948028197887813378425276356065023490311245290053995499212953976483645741282767837655686673777538011093085243669514697409194643625330815725209283100601150088745330292409526679286892815555327465000979869973103074672424222803633327059263345829584079966356988983800982397335007545495060315952873605424122161704425985021515088062071615698942658644923280413783556545222280433764032182040141451011786955135575306250415527557230300005606637158545845058204342020175801048693280475147333713571805298596558917317917006294073042026558959444881556502746929778174507086097933052803286408851330280858352679084929107514044501459582763110745793482570440143699371823633831765556212599458395645352137436675998812666214881229600063597736968368101677089710781940235051932767573453046746498496985857019960131767039558568542978473059069631601766172944293009785892130568470476442621366069367042323742966993875142781543241332849744088377964673003559420798422850712974466440571910550933547882046991457692714211038544154544300185804078752325144304545637607141415225953330006278994732108342853969366873006735694342566375536792001861013794331401648078098980621894530512757640730079399023425986019126613202750526483579985806274351286185043418080644928254601073303435377620818063019430154686631329979238742782899040953669886610652082792141088130326476123588015124444890519782897835306450480900656492831563499251344007701743182612085672365495508866129829804782444719191898462754517753269777203043928235609191565272434964170157922057888655434194561264411750045998601030552386900629951283269755893940525061526269106843294554268332880758914091362231975425513465017113267088150449808078068988138891983032207639250423018184264349108739737101250516619275279310764621177919204923976746818852745855022970137563686912758793702416167317018437603681892020532586835468755845620601431345298406209404142841149834472745176483810892665273556926054338680241890035239562103423841048368128543470250021865429116967448278224695957474234382103136777910360015203925386883154786752235104787967719136097285227009852810388490217975382548033895443125640742244262845367039949885361939451751072812238519568055488858603839477183518522094524705190225162887420257097362488114807191189399044444644726432175165708079037174397359033107584907142141362536614924198327559759672689301268089730181728642857950125280856854849434885588986360818811952797906220226984338999728811887433714394186858520240232856102716030093196285355394210758803767221678801815324581231676319313650651510409777588424765521318083108195658975335089093202882368839723703951729040013380761544578315686430973110041355505431860263611763642521514602726080744349308684997451360819646405071980259825634591149464897549518262647519195640142338664285897584931310044303490334926470427939644469956073662500066716873248641543831479677835574706335877875289781768908017493153282259177636946965840922290707205178363253465569326201441768121971562617493965446801035838560898334231713377316159500713243067897549101708455015647758180206713899432186259942536800665980942236589631880251918470817923953911184671619168997338276177547920716469923287828745744414048577553306135665673337951267802325597448357432913771171405018247204023332030933933609208365154315998127888240573217930812549075584186467451712209812218443279871077805338460750209181604334099466538532234320154661322172961397573471901885789606759817891539638942062997010207666429317550050780088038150988911615945495791090347776809453090577007690308866062501168826883462932316915577549281913480611679763047933675522080723554084612450490982451353462150496784930226107941299554902008327177878805995161061840140537844103960547372052985506860253376826128362179319927808909635791187936011589737953325533016388308190640492140099412428870921850192005074070159919867195759817210515047657257090602140367863506486287623852029585132183664444199088754571602685882445340222995885290241409061248819979467029304067511744995700508239571976882206166989265205843615207708122555384270915641877733322966218531416869450479974861771181210185396820415310156295971089257660486555883612136022417156758270649418545615425539443347610603870822625458021012969890461911594201055707757131837312848909284449496511804254365368875581271734497746011243426433952484349070288722537236768972139128821752796631650972704083476246321130454403052365620867525829478989506653976360001308063793528708125114708908943318282657091410639702217197588232360267908366012967490150985196519026171834111403195047236254297485137630233211690034127278667645650417847896052506563876136230929113032949544656998829722985515950724556649922121290194706081702580459649503410602498192499323471855007929155794408673770895166076798687936206201318400882656559469484465923369646664277867640172286117103801709537770011985202701088568095970232903667687793884126359380578360848874593482131293085566856593625501855534204586107975555489603032856843451120171173201550568212984518005591784763620433922076978848898925004840139356406365356424722118185513598202965330446702047999070573753310168814350079467519484217657926025108334669728396166585168898945000981592039932471064522248020792372233305295380787020130116363982216907360868953555703826132311392989095305274327516958486473357031504602739573315778751197146587354356490691520723010926681977537268639606261968345534799120169740411058747421257513640124400358930553745948384084392499751707388633165648606617939007835281233230711795703024034345501300921439830842344595209145404793397387008997203764087129710076509051306808246260874908525673530557471682972107362005917975832145393755153735655474861877630825561478064187752086705289977810928340843359945393964987775062505398479166337804919179499783172479319346793500233989241423934687937700720134851285576929949497073784901063040322932991801741301312106362432458181385646230231540102337842579165322231025356149764130317084519851186378105192376694354200555229013440968341671956924045109150563627885872832770477064948623969225145314461037326005531491977314460604804151597928160027262760898871164741852152886454487865868959037891697173668785362233119809620580886758678990538333922781860414288924083455232230410824069275118058987389672080443874393167264806454474637017051975208972522930260085571059107202745084833584295431605203569783210931111134065513776296722532625827468615761228135816465124554286762343655495001482386191492810991198424358198606792188251864217612369942431069141802220366175177574982990092617023539185800941257783429555646585039437725192586944953722592479606795209192529138839821307162055493148071151690915896304290597371951073178260417026513398603268432159706369844056690303045820268605819171858224081370121627999265382376326051640850220434488185509504703349016859455183728726906940022330186363561152968959628723435042292283492653935519971488806166261860413590098821090344645561536501851805336627475805783663412358577240653406326368103781135861169505699492335930901426069238406487463594956357540708447611680059269529058464152789473022350676939244880902580621983514174950602530604275369942853001837903093031400960520604684909454891319230034223534558336730877962425656619775827202729499857732158552303284564004543739910550421151875259742113479363992845409165657373324581743516251747811922022160284430296255799382115275714819166400947828810821558314071196740007529496888084514088230395893678151042763987547934467977585329655680001482438520897114003200674375899776879547363600897617852210784704259372297829575397628957364413944045904087952104829502631332813089317435764504535532437184267693591389995280930497701347256057931813123619595480749870068608426686067925972399767463217209103533183880820451412429853178918901254208976260701749432110048979980111515395515934675466860107648944965467510233143377826341344521470645327004705424847193195144661869228832928236752947592029783304452428232705019976764709142188435985798734230135012286267872528108392928066891738461481591929588030342766375934370884609703804383639722590491080652629794900152208168700621723076775253862650375998610595578012776932264178781987843712116113148707697137287466307515393953357294316239296141640579732724658880302631202973121547337879984810834184282755844490603783851877618469041922279647062043083135764870450865078927282449792665907129532399933284905716589567895014358387790501688416110537788720704986044157398497473135843096931787492539837586977290228412307695818366612542870858107545778832070954592427593252834377935627921516172019938787070538920853939995660116409954815079147377588910607503899236402109203364027644141267742302051855471`100001.01714067292
POSTED BY: Marvin Ray Burns

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:
POSTED BY: Marvin Ray Burns

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.

POSTED BY: Marvin Ray Burns

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:
POSTED BY: Marvin Ray Burns

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

POSTED BY: Marvin Ray Burns

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:
POSTED BY: Marvin Ray Burns

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

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

POSTED BY: Marvin Ray Burns

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
POSTED BY: Marvin Ray Burns

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
POSTED BY: Marvin Ray Burns
POSTED BY: Marvin Ray Burns

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

enter image description here

POSTED BY: Marvin Ray Burns

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??

POSTED BY: Marvin Ray Burns
POSTED BY: Marvin Ray Burns

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

POSTED BY: Marvin Ray Burns

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:
POSTED BY: Marvin Ray Burns
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract