Group Abstract Group Abstract

Message Boards Message Boards

How to calculate the digits of the MKB constant

Feb 22, 2009

It appears that the absolute value, minus 1/2, of the limit(integral of (-1)^xx^(1/x) from 1 to 2N as N->infinity) would equal the partial sum of (-1)^xx^(1/x) from 1 to where the upper summation is even and growing without bound. Is anyone interested in improving or disproving this conjecture?

enter image description here

March 12, 2015

What about records of computing the integral analog of the MRB constant? (I call it the MKB constant.) See Google Scholar MKB constant.

Richard Mathar did a lot of work on it here , where M is the MRB constant and M1 is MKB:

enter image description here

M1 (MKB) can be written as and integral of a power of e:

enter image description here

I've gotten Mathematica to compute 125 digits. However, they are not proven to be correct yet! They are

0.68765236892769436980931240936544016493963738490362254179507101010743\
366253478493706862729824049846818873192933433546612328629

. First, we compute the real part as far as Mathematica will allow.

a1 = NIntegrate[Cos[x Pi] x^(1/x), {x, 1, Infinity}, 
  WorkingPrecision -> 100]

0.07077603931152880353952802183028200136575469620336299759658471973672\
987938741600037745028756981434374

a2 = NIntegrate[Cos[x Pi] x^(1/x), {x, 1, Infinity}, 
  WorkingPrecision -> 120]
a2 - a1

0.07077603931152880353952802183028200136575469620336302758317278266053\
31986618615110244568060496758380620699811570793175408

2.998658806292380331927444551064700651847986149432*10^-53

a3 = NIntegrate[Cos[x Pi] x^(1/x), {x, 1, Infinity}, 
  WorkingPrecision -> 150]
a3 - a2

0.07077603931152880353952802183028200136575469620336302758317278816361\
8457264385970709799491401005081151056924116255307801983594127144525095\
5653544005192

5.5030852586025244596853426853513292430889869429591759902612*10^-63

a4 = NIntegrate[Cos[x Pi] x^(1/x), {x, 1, Infinity}, 
  WorkingPrecision -> 200]
a4 - a3

0.07077603931152880353952802183028200136575469620336302758317278816361\
8457264382036580831881266177238210031756216795402920795214039271485948\
634659563768084109747493815003439875479076850383786911941519465

-3.9341289676101348278429410251678994599048811883800878730391469306948\
367511*10^-78

a5 = NIntegrate[Cos[x Pi] x^(1/x), {x, 1, Infinity}, 
  WorkingPrecision -> 250]
a5 - a4

0.07077603931152880353952802183028200136575469620336302758317278816361\
8457264382036580831881266177238209440733969109717926999044694539086929\
3857095687266500964737783523859835124762555195276023702167529617039725\
7261177753806842756198742365511173334813888

-5.9102224768568499379616934473239901924894999504143401327371546261745\
6363002821330856184541724766503*10^-103

Next, we compute the imaginary part to the same precision.

b1 = NIntegrate[I Sin[x Pi] x^(1/x), {x, 1, Infinity}, 
   WorkingPrecision -> 100] - I/Pi

0.*10^-117 - 
 0.6840003894379321291827444599926611267109914826550016181302726087470\
544306934833279937664708191960468 I

b2 = NIntegrate[I Sin[x Pi] x^(1/x), {x, 1, Infinity}, 
   WorkingPrecision -> 120] - I/Pi
b2 - b1

0.*10^-137 - 
 0.6840003894379321291827444599926611267109914826549994343226304054256\
46767722886537984405858512438464223325361496951820797 I

0.*10^-117 + 
 2.1838076422033214076629705967900093606123067575826*10^-51 I

b3 = NIntegrate[I Sin[x Pi] x^(1/x), {x, 1, Infinity}, 
   WorkingPrecision -> 150] - I/Pi
b3 - b2

0.*10^-167 - 
 0.6840003894379321291827444599926611267109914826549994343226303771381\
5305812568206208637713014270949108628424796532117557865488349026349505\
4352728287677 I

0.*10^-137 + 
 2.8287493709597204475898028728369728973137041113531630645218*10^-62 I

b4 = NIntegrate[I Sin[x Pi] x^(1/x), {x, 1, Infinity}, 
   WorkingPrecision -> 200] - I/Pi
b4 - b3

0.*10^-218 - 
 0.6840003894379321291827444599926611267109914826549994343226303771381\
5305812497663815095983421272147867735031056071869477552727290571462108\
208123698276619850397331432861469605963724235550107655309644965 I

0.*10^-167 + 
 7.0542393541729592998801240893393740460248080312761058454887397227149\
1304910*10^-76 I

b5 = NIntegrate[I Sin[x Pi] x^(1/x), {x, 1, Infinity}, 
   WorkingPrecision -> 250] - I/Pi
b5 - b4

0.*10^-268 - 
 0.6840003894379321291827444599926611267109914826549994343226303771381\
5305812497663815095983421272147867223796451609148860995867828496814126\
9810848570299802270095261060286697622600207986034863822997401942304753\
4951409792726050072747412751162199808963072 I

0.*10^-218 + 
 5.1123460446272061655685946207464798122703884124663962338780532683279\
9843703703436946621273009904771*10^-102 I

b6 = NIntegrate[I Sin[x Pi] x^(1/x), {x, 1, Infinity}, 
   WorkingPrecision -> 300] - I/Pi
b6 - b5

0.*10^-318 - 
 0.6840003894379321291827444599926611267109914826549994343226303771381\
5305812497663815095983421272147867223796451609148860995867804988314557\
9408739051911924508290758754789975176921766748245229306743723292030351\
1357229649514450909272015113199881208930542548540913212596310791355732\
04151474091653439098975 I

0.*10^-268 + 
 2.3508499569040210951838787776180450230549672244567844123778963451625\
36786502744023594180143211599163475397637962318600032530*10^-127 I

Notice that WorkingPrecision->100 gave 51 consistent (correct) digits, WorkingPrecision->120 gave 62 correct digits, WorkingPrecision->150 gave 76 correct digits, WorkingPrecision->200 gave 102 correct digits, so it is not too much of a stretch to believe WorkingPrecision->250 gave 125 correct digits.

In[78]:= c = N[Abs[a5 + b5], 125]

Out[78]= 0.\
6876523689276943698093124093654401649396373849036225417950710101074336\
6253478493706862729824049846818873192933433546612328629

April 18, 2015

Going back to integral analog of the MRB constant'

enter image description here:

Using formula 5 on page 3 of http://arxiv.org/pdf/0912.3844v3.pdf

.enter image description here

We can compute plenty of digits of the integral analog of the MRB constant' (I once called it the MKB constant, named after Marsha Kell-Burns my, now ex, wife.) In the paper, Mathar simply calls it M1.

Until further notice in this post when we compute the imaginary part of M1, we will be concerned with the imaginary part's absolute value only,

This time we will compute the Imaginary part first to at least 500 digits:

  a[1] = 0; For[n = 1, n < 11, 
    a[n] = N[2/Pi - 
       1/Pi*NIntegrate[
         Cos[Pi*x]*x^(1/x)*(1 - Log[x])/x^2, {x, 1, Infinity}, 
         WorkingPrecision -> 100*n], 50 n]; Print[a[n] - a[n - 1]], 
    n++]; Print[a[11]]
\

giving

0.6840003894379321291827444599926611267109914826549994343226303771381530581249766381509598342127214787

0.*10^-101

0.*10^-151

0.*10^-201

0.*10^-251

0.*10^-301

0.*10^-351

0.*10^-401

0.*10^-451

0.*10^-501

0.6840003894379321291827444599926611267109914826549994343226303771381530581249766381509598342127214786722379645160914886099586780498831455794087390519118879988351918366211827085883779918191195794251385436100844782462528597869421390620796113023053439642582325892202911183326091512210367124716901047132601108752764946385830438156754378694878046808312868541961166205744280461776232345922905313658259576212809654022016030244583148587352474339130505540080799774619683572540292971258866450201101870835703060314349396491402064932644813564545345219868887520120

. Likewise the real part:

b[1] = 0; For[n = 1, n < 11, 
 b[n] = N[-1/Pi*
    NIntegrate[Sin[Pi*x]*x^(1/x)*(1 - Log[x])/x^2, {x, 1, Infinity}, 
     WorkingPrecision -> 100*n], 50 n]; Print[b[n] - b[n - 1]], 
 n++]; Print[b[11]]

giving

0.07077603931152880353952802183028200136575469620336302758317278816361845726438203658083188126617723821

0.*10^-102

0.*10^-152

0.*10^-202

0.*10^-252

0.*10^-302

0.*10^-352

0.*10^-402

0.*10^-452

0.*10^-502

0.07077603931152880353952802183028200136575469620336302758317278816361845726438203658083188126617723820944073396910971792699904464538475364292258443860652193330471222906120205483985764336623434898438270710499897053952312269178485299032185072743545220051257328105422174249313177670295863771714489658779291185716175115405623656039914848817528200250723061535734571065031458992196831648681239079549382556509741967588147362548743205919028695774572411439927516593391029992733107982746794845130889328251307263102570083031527430861023428334369104098217022622689

. Then the magnitude:

N[Sqrt[a[11]^2 + b[11]^2], 500]

giving

0.68765236892769436980931240936544016493963738490362254179507101010743\
3662534784937068627298240498468188731929334335466123286287665409457565\
9577211580255650416284625143925097120589697986500952590195706813170472\
5387265069668971286335322245474865156721299946377659227025219748069576\
0895993932096027520027641920489863095279507385793449828250341732295653\
3809181101532087948181335825805498812728097520936901677028741356923292\
2644964771090329726483682930417491673753430878118054062296678424687465\
624513174205

. That checks with the 200 digits computed by the quadosc command in mpmath by FelisPhasma at https://github.com/FelisPhasma/MKB-Constant .The function is defined here: http://mpmath.googlecode.com/svn/trunk/doc/build/calculus/integration.html#oscillatory-quadrature-quadosc

enter image description here

P.S.

I just now finished 750 digits, (about the max with formula 5 from the paper, as far as Mathematica is concerned).

Here is the work:

a[1] = 0; For[n = 1, n < 16, 
 a[n] = N[2/Pi - 
    1/Pi*NIntegrate[
      Cos[Pi*x]*x^(1/x)*(1 - Log[x])/x^2, {x, 1, Infinity}, 
      WorkingPrecision -> 100*n], 50 n]; Print[a[n] - a[n - 1]], 
 n++]; Print[a[16]]; 
b[1] = 0; For[n = 1, n < 16, 
 b[n] = N[-1/Pi*
    NIntegrate[Sin[Pi*x]*x^(1/x)*(1 - Log[x])/x^2, {x, 1, Infinity}, 
     WorkingPrecision -> 100*n], 50 n]; Print[b[n] - b[n - 1]], 
 n++]; Print[b[16]]; Print[N[Sqrt[a[16]^2 + b[16]^2], 750]]

0.6840003894379321291827444599926611267109914826549994343226303771381530581249766381509598342127214787

0.*10^-101

0.*10^-151

0.*10^-201

0.*10^-251

0.*10^-301

0.*10^-351

0.*10^-401

0.*10^-451

0.*10^-501

0.*10^-551

0.*10^-601

3.*10^-650

-4.*10^-700

-2.6*10^-749

0.68400038943793212918274445999266112671099148265499943432263037713815\
3058124976638150959834212721478672237964516091488609958678049883145579\
4087390519118879988351918366211827085883779918191195794251385436100844\
7824625285978694213906207961130230534396425823258922029111833260915122\
1036712471690104713260110875276494638583043815675437869487804680831286\
8541961166205744280461776232345922905313658259576212809654022016030244\
5831485873524743391305055400807997746196835725402929712588664502011018\
7083570306031434939649140206493264481356454534521986888752011950353818\
1776359577265099302389566135475579468144849763261779452665955246258699\
8679271659049208654746533234375478909962633090080006358213908728990850\
5026759549928935029206442637425786005036048098598304092996753145589012\
64547453361707037686708654522699


0.07077603931152880353952802183028200136575469620336302758317278816361845726438203658083188126617723821

0.*10^-102

0.*10^-152

0.*10^-202

0.*10^-252

0.*10^-302

0.*10^-352

0.*10^-402

0.*10^-452

0.*10^-502

2.*10^-551

-1.*10^-600

1.8*10^-650

1.27*10^-699

4.34*10^-749

0.07077603931152880353952802183028200136575469620336302758317278816361\
8457264382036580831881266177238209440733969109717926999044645384753642\
9225844386065219333047122290612020548398576433662343489843827071049989\
7053952312269178485299032185072743545220051257328105422174249313177670\
2958637717144896587792911857161751154056236560399148488175282002507230\
6153573457106503145899219683164868123907954938255650974196758814736254\
8743205919028695774572411439927516593391029992733107982746794845130889\
3282513072631025700830315274308610234283343691040982170226226904594029\
7055093272952022662549075225941956559080574835998923469310063614655255\
0629713179601483134045038416878054929072981851045829413286377842843667\
5378730394247519728064887287780998671021887797977772522419765594172569\
277490031071938177749184834961300

0.687652368927694369809312409365440164939637384903622541795071010107433662534784937068627298240498468188731929334335466123286287665409457565957721158025565041628462514392509712058969798650095259019570681317047253872650696689712863353222454748651567212999463776592270252197480695760895993932096027520027641920489863095279507385793449828250341732295653380918110153208794818133582580549881272809752093690167702874135692329226449647710903297264836829304174916737534308781180540622966784246874656245131742049004832216427665542900559350289936114782223424261285828326467186036500189315374147638489679365569122714398706519530651330568884655048857998738535162606116788633540389660052822237449082894798620397228331715198160243676576563833057235963591510865254600

Using formula 7 from http://arxiv.org/pdf/0912.3844v3.pdf,

enter image description here .

(Treating it as we did formula 5), First, the imaginary part to at least 1000 digits::

a[1] = 0; For[n = 1, n < 21, 
 a[n] = N[2/Pi + 
    1/Pi^2 NIntegrate[
      Sin[x Pi] x^(1/x) (1 - 3 x + 2 (x - 1) Log[x] + Log[x]^2)/
        x^4, {x, 1, Infinity}, WorkingPrecision -> 100 n], 50 n];
 Print[a[n] - a[n - 1]], n++]; Print[a[21]]

0.6840003894379321291827444599926611267109914826549994343226303771381530581249766381509598342127214787

0.*10^-101

0.*10^-151

0.*10^-201

0.*10^-251

0.*10^-301

0.*10^-351

0.*10^-401

0.*10^-451

0.*10^-501

0.*10^-551

0.*10^-601

0.*10^-651

0.*10^-701

0.*10^-751

0.*10^-801

0.*10^-851

0.*10^-901

-2.*10^-950

5.*10^-1000

0.684000389437932129182744459992661126710991482654999434322630377138153058124976638150959834212721478672237964516091488609958678049883145579408739051911887998835191836621182708588377991819119579425138543610084478246252859786942139062079611302305343964258232589220291118332609151221036712471690104713260110875276494638583043815675437869487804680831286854196116620574428046177623234592290531365825957621280965402201603024458314858735247433913050554008079977461968357254029297125886645020110187083570306031434939649140206493264481356454534521986888752011950353818177635957726509930238956613547557946814484976326177945266595524625869986792716590492086547465332343754789099626330900800063582139087289908505026759549928935029206442637425786005036048098598304092996753145589012645474533617070376867086545228223060940434935219252885333298390272342234952870883304116640409421452765284609364941205344122569781634782508368641126766528707019957340895061936246645065753101916781254557006989818409283317145837167345971516970849116096077030635788389165381066055992688

Then the real part to at least 1000 digits:

b[1] = 0; For[n = 1, n < 21, 
 b[n] = N[1/Pi^2 - 
    1/Pi^2 NIntegrate[
      Cos[Pi x] x^(1/x) (1 - 3 x + 2 (x - 1) Log[x] + Log[x]^2)/
        x^4, {x, 1, Infinity}, WorkingPrecision -> 100 n], 50 n];
 Print[b[n] - b[n - 1]], n++]; Print[b[21]]

0.07077603931152880353952802183028200136575469620336302758317278816361845726438203658083188126617723821

0.*10^-102

0.*10^-152

0.*10^-202

0.*10^-252

0.*10^-302

0.*10^-352

0.*10^-402

0.*10^-452

0.*10^-502

0.*10^-552

0.*10^-602

0.*10^-652

0.*10^-702

0.*10^-752

0.*10^-802

0.*10^-852

-3.*10^-901

8.*10^-951

-4.6*10^-1000

0.0707760393115288035395280218302820013657546962033630275831727881636184572643820365808318812661772382094407339691097179269990446453847536429225844386065219333047122290612020548398576433662343489843827071049989705395231226917848529903218507274354522005125732810542217424931317767029586377171448965877929118571617511540562365603991484881752820025072306153573457106503145899219683164868123907954938255650974196758814736254874320591902869577457241143992751659339102999273310798274679484513088932825130726310257008303152743086102342833436910409821702262269045940297055093272952022662549075225941956559080574835998923469310063614655255062971317960148313404503841687805492907298185104582941328637784284366753787303942475197280648872877809986710218877979777725224197655941725692774900310719381777491848349627938468198411955193898347075098152638657614980900350262780319142430252921925131515239611841070722530473939496294305264627977744876814858325335947117076721493110160508928494597906728688873533031986215124467678736429981544321187124269147141804397293341613

Then the magnitude:

In[97]:= N[Sqrt[a[21]^2 + b[21]^2], 1000]

Out[97]= 0.\
6876523689276943698093124093654401649396373849036225417950710101074336\
6253478493706862729824049846818873192933433546612328628766540945756595\
7721158025565041628462514392509712058969798650095259019570681317047253\
8726506966897128633532224547486515672129994637765922702521974806957608\
9599393209602752002764192048986309527950738579344982825034173229565338\
0918110153208794818133582580549881272809752093690167702874135692329226\
4496477109032972648368293041749167375343087811805406229667842468746562\
4513174204900483221642766554290055935028993611478222342426128582832646\
7186036500189315374147638489679365569122714398706519530651330568884655\
0488579987385351626061167886335403896600528222374490828947986203972283\
3171519816024367657656383305723596359151086525460036387486837632622334\
2987257095524637683005910353149353985736118868884201748241906260834981\
7303422370398413326428269921074045506558966667483453656748906071577744\
4147548424388220133662816274116986724576330176058912438027319979840883\
05950589130911719199

PPS. I just now finished a 1500 digit computation of the integral analog of the MRB constant, but I don't have any way of checking it other than to see that it confirms smaller computations. Which thing it does.

In[99]:= aa = 
 N[2/Pi + 1/Pi^2 NIntegrate[
     Sin[x Pi] x^(1/x) (1 - 3 x + 2 (x - 1) Log[x] + Log[x]^2)/
       x^4, {x, 1, Infinity}, WorkingPrecision -> 3000], 1500]

Out[99]= 0.\
6840003894379321291827444599926611267109914826549994343226303771381530\
5812497663815095983421272147867223796451609148860995867804988314557940\
8739051911887998835191836621182708588377991819119579425138543610084478\
2462528597869421390620796113023053439642582325892202911183326091512210\
3671247169010471326011087527649463858304381567543786948780468083128685\
4196116620574428046177623234592290531365825957621280965402201603024458\
3148587352474339130505540080799774619683572540292971258866450201101870\
8357030603143493964914020649326448135645453452198688875201195035381817\
7635957726509930238956613547557946814484976326177945266595524625869986\
7927165904920865474653323437547890996263309008000635821390872899085050\
2675954992893502920644263742578600503604809859830409299675314558901264\
5474533617070376867086545228223060940434935219252885333298390272342234\
9528708833041166404094214527652846093649412053441225697816347825083686\
4112676652870701995734089506193624664506575310191678125455700698981840\
9283317145837167345971516970849116096077030635788389165381066055992708\
4284702473154303800276803908560080204997803241058414188902018357202062\
9532415382916822796942734253441520784640814155687968986766443021927163\
6249354786973717955004441549085673392105556692081075647388204227896978\
1483978754685921758294318270385312597177598977912650715548994562461701\
1553879109152932039370312241134127950112036269188660519350584627066913\
4925878278209048717316088629321353274101519307401594635990058104175474\
300641475776727955287474213040

In[98]:= bb = 
 N[1/Pi^2 - 
   1/Pi^2 NIntegrate[
     Cos[Pi x] x^(1/x) (1 - 3 x + 2 (x - 1) Log[x] + Log[x]^2)/
       x^4, {x, 1, Infinity}, WorkingPrecision -> 3000], 1500]

Out[98]= 0.\
0707760393115288035395280218302820013657546962033630275831727881636184\
5726438203658083188126617723820944073396910971792699904464538475364292\
2584438606521933304712229061202054839857643366234348984382707104998970\
5395231226917848529903218507274354522005125732810542217424931317767029\
5863771714489658779291185716175115405623656039914848817528200250723061\
5357345710650314589921968316486812390795493825565097419675881473625487\
4320591902869577457241143992751659339102999273310798274679484513088932\
8251307263102570083031527430861023428334369104098217022622690459402970\
5509327295202266254907522594195655908057483599892346931006361465525506\
2971317960148313404503841687805492907298185104582941328637784284366753\
7873039424751972806488728778099867102188779797777252241976559417256927\
7490031071938177749184834962793846819841195519389834707509815263865761\
4980900350262780319142430252921925131515239611841070722530473939496294\
3052646279777448768148583253359471170767214931101605089284945979067286\
8887353303198621512446767873642998154432118712426914714180439729334146\
8345902382977472975053271988386946291215512340931334841526712825988330\
6521193975174379922254198045615178994412133135553490942451521573377205\
4086429300485891441696490339106907723915822537813700713422515725943626\
7756749980892097547020923938358076198570370106085596863039832425037481\
4946826330552459256977035009973219582010379262683780372730214991685800\
3676611833579648850161974289307066295385292264148146789532534018500663\
1153014589399140567464592864024

In[109]:= c1500 = Sqrt[aa^2 + bb^2]

Out[109]= \
0.68765236892769436980931240936544016493963738490362254179507101010743\
3662534784937068627298240498468188731929334335466123286287665409457565\
9577211580255650416284625143925097120589697986500952590195706813170472\
5387265069668971286335322245474865156721299946377659227025219748069576\
0895993932096027520027641920489863095279507385793449828250341732295653\
3809181101532087948181335825805498812728097520936901677028741356923292\
2644964771090329726483682930417491673753430878118054062296678424687465\
6245131742049004832216427665542900559350289936114782223424261285828326\
4671860365001893153741476384896793655691227143987065195306513305688846\
5504885799873853516260611678863354038966005282223744908289479862039722\
8331715198160243676576563833057235963591510865254600363874868376326223\
3429872570955246376830059103531493539857361188688842017482419062608349\
8173034223703984133264282699210740455065589666674834536567489060715777\
4441475484243882201336628162741169867245763301760589124380273199798408\
8305950589130911719198776146941477264898934365742508503405073273852990\
3546587114217499635584514475429656959327732862489935076490012861232249\
2446704232200904844779690044774489466704342791971033325818579375177198\
9865742583276770011926585495711579480114327818546199372349313180236079\
1389248808154759564302727311223193005229640892474022665093207969297797\
9723087954832182561714039165214592519432072341006090867558444590500046\
6707963346545638317950978935794173691635274461184852166407791838662429\
40408834876470623546535579027725

Mathar gives a simple scheme to find better formulas at http://arxiv.org/pdf/0912.3844v3.pdf . I could use some help in programming it: (I keep getting erroneous results!) Does anyone get the right results here?

enter image description here

Below, where the upper limit of the following integrals shows Infinity, it is meant to be the (Ultraviolet limit of the sequence) as mentioned by Mathar here:

enter image description here

Until further notice in this post when we compute the imaginary part of M1, we will be concerned with the imaginary part's absolute value only,

I derived a new formula for computing the integral analog of the MRB constant':

f[x_]:=x^(1/x);-((2 I)/\[Pi]^3) + 1/\[Pi]^2 - (
 2 I)/\[Pi] + (I/Pi)^3*
  Integrate[(-1)^x*D[f[x], {x, 3}], {x, 1, Infinity}]

In the traditional form that is M1=

enter image description here

Using it I computed 2000 digits in only 10.8 minutes:

In[131]:= Timing[f[x_] = x^(1/x); 
 a = N[1/\[Pi]^2 + (1/Pi)^3*
     NIntegrate[Sin[Pi*x]*D[f[x], {x, 3}], {x, 1, Infinity}, 
      WorkingPrecision -> 4000], 2000]; 
 b = N[2/\[Pi]^3 + 
    2/\[Pi] + (1/Pi)^3*
     NIntegrate[Cos[Pi x]*D[f[x], {x, 3}], {x, 1, Infinity}, 
      WorkingPrecision -> 4000], 2000]; 
 Print[N[Sqrt[a^2 + b^2], 2000]]]

During evaluation of In[131]:= 0.68765236892769436980931240936544016493963738490362254179507101010743366253478493706862729824049846818873192933433546612328628766540945756595772115802556504162846251439250971205896979865009525901957068131704725387265069668971286335322245474865156721299946377659227025219748069576089599393209602752002764192048986309527950738579344982825034173229565338091811015320879481813358258054988127280975209369016770287413569232922644964771090329726483682930417491673753430878118054062296678424687465624513174204900483221642766554290055935028993611478222342426128582832646718603650018931537414763848967936556912271439870651953065133056888465504885799873853516260611678863354038966005282223744908289479862039722833171519816024367657656383305723596359151086525460036387486837632622334298725709552463768300591035314935398573611886888420174824190626083498173034223703984133264282699210740455065589666674834536567489060715777444147548424388220133662816274116986724576330176058912438027319979840883059505891309117191987761469414772648989343657425085034050732738529903546587114217499635584514475429656959327732862489935076490012861232249244670423220090484477969004477448946670434279197103332581857937517719898657425832767700119265854957115794801143278185461993723493131802360791389248808154759564302727311223193005229640892474022665093207969297797972308795483218256171403916521459251943207234100609086755844459050004667079633465456383179509789357941736916352744611848521664077918386624294040883487647062354653558109265769644276994369741555722263494599492834558291937955573706480722982389806312472239746286527176248883116124285469947303667188075506826507811479428582807366599407544908560990699866167233307144245764835741501174979679166078765231145175411199825822532170091858833628202128777966026600647843068442894310401343003939117236867245656732686719139206716028255819141802331701942027248337771633882445225049334329008827371320849006472846226868011129149192754883153995560921671208059671732704499253517327447921147157

Out[131]= {653.145, Null}

I am presently computing 10,000 digits using that formula. Come back here for results!

That formula didn't work out; I will try one of the following formulas.

Here are 2 more, more advanced formulas; remember f(x) is x^(1/x):

enter image description here

I did finish a 5,000 digit computation using M1=

enter image description here

in 48.11 minutes.

Here are the 5000 digits:of the magnitude:

0.68765236892769436980931240936544016493963738490362254179507101010743366253478493706862729824049846818873192933433546612328628766540945756595772115802556504162846251439250971205896979865009525901957068131704725387265069668971286335322245474865156721299946377659227025219748069576089599393209602752002764192048986309527950738579344982825034173229565338091811015320879481813358258054988127280975209369016770287413569232922644964771090329726483682930417491673753430878118054062296678424687465624513174204900483221642766554290055935028993611478222342426128582832646718603650018931537414763848967936556912271439870651953065133056888465504885799873853516260611678863354038966005282223744908289479862039722833171519816024367657656383305723596359151086525460036387486837632622334298725709552463768300591035314935398573611886888420174824190626083498173034223703984133264282699210740455065589666674834536567489060715777444147548424388220133662816274116986724576330176058912438027319979840883059505891309117191987761469414772648989343657425085034050732738529903546587114217499635584514475429656959327732862489935076490012861232249244670423220090484477969004477448946670434279197103332581857937517719898657425832767700119265854957115794801143278185461993723493131802360791389248808154759564302727311223193005229640892474022665093207969297797972308795483218256171403916521459251943207234100609086755844459050004667079633465456383179509789357941736916352744611848521664077918386624294040883487647062354653558109265769644276994369741555722263494599492834558291937955573706480722982389806312472239746286527176248883116124285469947303667188075506826507811479428582807366599407544908560990699866167233307144245764835741501174979679166078765231145175411199825822532170091858833628202128777966026600647843068442894310401343003939117236867245656732686719139206716028255819141802331701942027248337771633882445225049334329008827371320849006472846226868011129149192754883153995560921671208059671732704499253517327447529208297180672654123457301218758892278525894167935930983363218877512533994251978272092700003994136520699813263053327399132641690231179063314931546906927612775633995348209911166678724589467821767106592498663827057034363632241807121831546175498178011687284590439293322231263406301066863589072717290630291441982684113819198880100231182613587798104863611185433976009254862585527222843445901958943153561148829083242874018226480554274231391324767376148485531787767908124831873688579979114662856184612164534836370699371440464263768724668291617743681719766849740663590277737977490693183461320266666793472116774276618408124767965369796362732668987556797338128876129264558867657737417548617146808592137056879602982206609613881069490166381528825180204703315896719667069923077454352649723496033985893188309150391579573916059639453655188856334980355047281560296288150836680499821806918067869468571687709518088408966653716009356556714281694904914038988996962213833530636987279769672200413448893419914190954063100962251649102614676944333201213024711868954772741991675045198246947499574872027800654821823797116399297131866662866832215332914761325880983081211272181775518951539503852063119472301382766303820851467743266039356123495461914463960644386394228342211998370152351720235034997434035743513051754761571835043769475528640144621307760159481496713401409374957729200400650100318226988524015127382509490642900236553851499823658269458873976032051355393161653806016080446394196719312454167915154602448638624354575153334932298393406734174580316934939632892851077461038399470015366439910136971186909599331204517462262508377673477745789645309425145559198802530351403897927622891172233239135167420567162398873965477371498335087310395422796362380227536212159184529243644094285328763286873653399867593200891823468738537356817916009007206857590792983184556882143118383332812491747733056313117179696094921120670802012310012864110800437831852620698327457619035904268498030693438632685623213366864129523404256345542376567721287706234359125016588483777876970236084456277023948551334490591022594253744077631232660869593809453087749830900393202787736482133628148979992109544954840067942735030391105496026321872468122542495017023785810605820545392820104069279893067324597299043883381251767370331206913429284614563732308018369972360638019778425246546329838131639355043236388708044857300408692365733932897876809202025693305332974091411983635619038514442263783801745983300121464879550146672827072002317686396598587702487509572349422593441184802476344187280014450860069307120621758277552124841158659386176036703247124389223327008210072318671884895179305778728051888524412158486781863155034447221379906386062559915129172725833420555901857729690605950941678587057025641848365090809750870051863842805803189784976076099574956436664131457150096711473033060684065060747340764998195621425524824611657787212347497307297184843276100338110267863618974154272345482369968216663233417338501929114697679974461999040589290327155974468087040862022522065912789

I'm getting closer to 10K digits of M1: Using enter image description here , where f(x)=x^(1/x).

I got approx. 10K digits of the imaginary part, but the real part was a little garbled.

Finally using

enter image description here , where f(x) = x^(1/x) ,

.I got about 10000 digits of M1 in about 12 hours. (It showed that the 5000 digit computation was only correct to 4979 digits, though.) Here is a rough program to get it:

   f[x_]:=x^(1/x);  Print[DateString[]]; Print[T0 = SessionTime[]]; prec = 10000; 
  Timing[Print[
  a = N[Re[-(136584/Pi^10) - (34784*I)/Pi^9 + 
       5670/Pi^8 + (786*I)/Pi^7 - 90/Pi^6 - 
                 (4*I)/Pi^5 - 3/Pi^4 - (2*I)/Pi^3 + 
       1/Pi^2 - (2*I)/Pi] - 
             (1/Pi)^10*
      NIntegrate[Cos[Pi*x]*D[f[x], {x, 10}], {x, 1, Infinity}, 
       WorkingPrecision -> prec, 
                 PrecisionGoal -> prec], prec]]; 
 Print[SessionTime[] - T0, " seconds"]; 
     Print[
  N[b = -Im[-(136584/Pi^10) - (34784*I)/Pi^9 + 
        5670/Pi^8 + (786*I)/Pi^7 - 90/Pi^6 - 
                   (4*I)/Pi^5 - 3/Pi^4 - (2*I)/Pi^3 + 
        1/Pi^2 - (2*I)/Pi] + 
             (1/Pi)^10*
      NIntegrate[Sin[Pi*x]*D[f[x], {x, 10}], {x, 1, Infinity}, 
       WorkingPrecision -> prec, 
                 PrecisionGoal -> prec], prec]]]; Print[
 SessionTime[] - T0, " seconds"]; 
  Print[N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]]; 

See attached 10000MKB.pdf and 10KMKB.nb for work and digits.

On May 5, I computed another 10,000 digits in 9.55 hours see attached faster10KMKB.

On May 6, I computed another 10,000 digits in a blistering fast 5.1 hours see attached fastest10KMKB.nb.

On May 9, I improved that timing to 4.8 hours (17355 seconds). Here is the code I used:

d = 15; f[x_] = x^(1/x); ClearAll[a, b, h];
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}]; Print[
 DateString[]];
Print[T0 = SessionTime[]]; prec = 10000;
Print[N[a = -Re[g] + (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"];
Print[N[b = 
    Im[g] - (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Sin[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"]; Print[
 N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];

April 20, 2015

FelisPhasma has been helpful in providing me with a little competition in computing the integral analog of the MRB constant. See https://github.com/FelisPhasma/MKB-Constant.

I've never done this before. But I so much would like to see others breaking these records that I'm going to give away a program that is practically guaranteed to break my record of 10,000 digits, for the integral analog of the MRB constant in a day or so. The program could use some "clean up" if you care to go that far. (The imaginary part is given as a positive, real constant: it actually starts with a negative sign and of course ends with I.)

Here it is:

f[x_] = x^(1/x); Print[DateString[]]; Print[
 T0 = SessionTime[]]; prec = 11000; Timing[
 Print[a = 
   N[Re[(633666648 I)/\[Pi]^13 - 
       33137280/\[Pi]^12 - ((824760 I)/\[Pi]^11) - 
       136584/\[Pi]^10 - (34784 I)/\[Pi]^9 + 
       5670/\[Pi]^8 + (786 I)/\[Pi]^7 - 90/\[Pi]^6 - (4 I)/\[Pi]^5 - 
       3/\[Pi]^4 - (2 I)/\[Pi]^3 + 
       1/\[Pi]^2 - (2 I)/\[Pi]] + (1/Pi)^12*
      NIntegrate[Cos[Pi x]*D[f[x], {x, 12}], {x, 1, Infinity}, 
       WorkingPrecision -> prec, PrecisionGoal -> prec], prec]];
 Print[SessionTime[] - T0, " seconds"];
 Print[N[b = -Im[(633666648 I)/\[Pi]^13 - 
        33137280/\[Pi]^12 - ((824760 I)/\[Pi]^11) - 
        136584/\[Pi]^10 - (34784 I)/\[Pi]^9 + 
        5670/\[Pi]^8 + (786 I)/\[Pi]^7 + 90/\[Pi]^6 - (4 I)/\[Pi]^5 - 
        3/\[Pi]^4 - (2 I)/\[Pi]^3 + 
        1/\[Pi]^2 - (2 I)/\[Pi]] - (1/Pi)^13*
      NIntegrate[Cos[Pi x]*D[f[x], {x, 13}], {x, 1, Infinity}, 
       WorkingPrecision -> prec, PrecisionGoal -> prec], 
   prec]]]; Print[SessionTime[] - T0, " seconds"]; Print[
 N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];

Will anyone let me know you are running this program to break my record?

Edit: On Sat 2 May 2015 19:03:45 I started a 15,000 digit, new record computation of the real and imaginary parts and magnitude of the integral analog of the MRB constant, (where the imaginary part is given as a positive, real constant), using the following code.

 f[x_] = x^(1/x); ClearAll[a];
   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, 18}]; Print[DateString[]];
   Print[T0 = SessionTime[]]; prec = 15000;
   Print[N[a = 
       Re[g] + (1/Pi)^19*
         NIntegrate[
          Simplify[Sin[Pi*x]*D[f[x], {x, 19}]], {x, 1, Infinity}, 
          WorkingPrecision -> prec*(105/100), 
          PrecisionGoal -> prec*(105/100)], prec]];
   Print[SessionTime[] - T0, " seconds"];
   Print[N[b = -Im[g] + (1/Pi)^19*
         NIntegrate[
          Simplify[Cos[Pi*x]*D[f[x], {x, 19}]], {x, 1, Infinity}, 
          WorkingPrecision -> prec*(105/100), 
          PrecisionGoal -> prec*(105/100)], prec]];
   Print[SessionTime[] - T0, " seconds"]; Print[
    N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];

The formula behind this computation is enter image description here

Edit: The program took 33.75 hours, The full run is attached in 15KMKB3.nb.

Edit May 9, 2015: I better than halved my time! I computed 15000 digits in 14.83 hours. See fastestMKB15K.nb/. The faster formula is

enter image description here

If you still want me to write out a code for more digits, for you to break that record, let me know.

May 11, 2015

Still talking about the integral analog of the MRB constant:enter image description here

Here are my speed records -- can you beat any of them?

enter image description here

Here is a graph of those speed records with a trendline:

enter image description here

The 20,000 digit run is attached as MKB20K.nb, and MKB20K.pdf,

Here is the algorithm used:

enter image description here

Here is the code:

d = 30; f[x_] = x^(1/x); ClearAll[a, b, h];
a[n_] := Sum[
  StirlingS1[n, k]*Sum[(-j)^(k - j)*Binomial[k, j], {j, 0, k}], {k, 1,
    n}]; a[0] = 1; g = 
 2 I/Pi - Sum[-I^(n + 1) a[n]/Pi^(n + 1), {n, 1, d}]; Print[
 DateString[]];
Print[T0 = SessionTime[]]; prec = 20000;
Print[N[a = -Re[g] - (1/Pi)^(d)*
      NIntegrate[
       Simplify[Cos[Pi*x]*D[f[x], {x, d}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"];
Print[N[b = 
    Im[g] + (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"]; Print[
 N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];

I just now completed a 25,000 digit computation. It took 63.7 hours and confirmed the 20,000 digits. I updated MKB20K.nb and MKB20K.pdf. Here is the algorithm and the code I used:

enter image description here

d = 35; f[x_] = x^(1/x); ClearAll[a, b, h];
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}]; Print[
 DateString[]];
Print[T0 = SessionTime[]]; prec = 25000;
Print[N[a = -Re[g] + (1/Pi)^(d + 1)*
      NIntegrate[     Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"];
Print[N[b = 
    Im[g] - (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Sin[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"]; Print[
 N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];

Here is new a graph of those speed records with a trendline: enter image description here

Edit:

On Tue 26 May 2015 06:21:00, I started a 30,000 digit computation using the following code.

Does anyone else want to try to break the record?

 $MaxExtraPrecision = 100; d = 43; f[x_] = x^(1/x); ClearAll[a, b, h];
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}]; Print[
 DateString[]];
Print[T0 = SessionTime[]]; prec = 30000;
Print[N[a = -Re[g] + (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"];
Print[N[b = 
    Im[g] - (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Sin[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
Print[SessionTime[] - T0, " seconds"]; Print[
 N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];

Edit: My first full 30,0000 run finished on Sun 31 May 2015 00:45:09.

Time span: {"4.767 days", "114.4 hours", "6864 minutes", "411849 seconds"} See attached MKB30K2.nb worksheet.

Here is an updated speed record plot, with a trendline. (I think the 30,000 digit run can be done faster.)

enter image description here

Here is an extensive record of records of computing the integral analog of the MRB constant:

enter image description here

![enter image description here][62]

Here is a graph of those records. (The progression of computed digits is so extreme, it is almost unbelievable!) enter image description here

6

June 5, 2015

I think I came up with a rough program that computes any "prec" digits of the integral analog of the MRB constant. It chooses, d, the best (or close to the best) order of derivative to use in Mathar's algorithm mentioned in a previous post (formula (12) at http://arxiv.org/pdf/0912.3844v3.pdf ), Then uses the appropriate code that integrates the integral analog of the constant. It shows the real and imaginary parts as positive real constants and the value the integral and gives some timings. It could use a lot of cleanups! I hope someone can help me test it with varying values of prec. Please reply with your intentions to use it and the results. If no one else can clean it up I will after I tested it more.

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

Here are some of my best timings to compare with the program's results:

digits  seconds
1000    38.8650545
2000    437.4906125
3000    889.473875
4000    1586.000714
5000    2802.591704
6000    4569.41586
7000    6891.057587
8000    9659.318566
9000    13491.43967
10000   17355
11000   
12000   
13000   
14000   
15000   53385.02323
16000   
17000   
18000   
19000   
20000   123876.4331
21000   
22000   
23000   
24000   
25000   229130.3088
26000   
27000   
28000   
29000   
30000   411848.6322

Edit: On Fri 5 Jun 2015 20:41:45 I started a 35,000 digit computation with the above "automated" program.

Edit: The 35,000 digit computation should be done by 10:24:38 am EDT | Sunday, June 14, 2015. In the above "automated" program I forgot to adjust the MaxExtraPrecision, but that shouldn't affect the accuracy in that program. It already computed the real part of the integral to 35,000 digits and the first 30,000 of those are the same as the real part of my previously mentioned 30,000 digit calculation. I will keep you posted.

Edit: The 35,000 digit computation finished on Sun 14 Jun 2015 06:52:29, taking 727844 seconds. It is attached as 35KMKB.nb. The first 30,000 digits of those are the same as the ones of my previously mentioned 30,000 digit calculation. (That shows the computation didn't take any "wild" turns because of the lack of MaxExtraPrecision.) Further, it is a good check of the 30,000 digit run, as all of the bigger computations are of the smaller because they all are calculated with distinct formulas using different orders of the derivative of x^(1/x).

Feb 28, 2016

For 2000 digits Mathematica 10. 2.0 shows some remarkable improvement over 10.1.2 with the above "automated program" for computing the digits of the integral analog of the MRB constant.

I will post some speed records that are strictly what the program produces in V 10.2.0, below, no picking and choosing of the methods by a human being. Some results will naturally be slower than my previously mentioned speed records, because I tried so very many methods and recorded only the fastest results.

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

to be continued

I have to change the program for 40,000 digits! I'll post the new program when I get 40,000 to work.

As of Wed 29 Jul 2015 11:40:10, one of my computers was happily and busily churning away at 40,000 digits of the integral analog of the MRB constant, using the following formula.

Edit: Mathematica crashed at 11:07 PM 8/4/2016

(I used MKB as a symbol for the integral analog because it is called the MKB constant. You can find the name MKB constant at http://www.ebyte.it/library/educards/constants/MathConstants.html .) If you can weed through my code, at the bottom of this reply, you might want to check the formula for the placement of pluses, minuses, and imaginary units!!! A little hint when checking if the formula matches the code, d is 80 so Mod[d,4] =0.

f[x_] = x^(1/x) : a[n_] := 
  Sum[StirlingS1[n, k]*
    Sum[(-j)^(k - j)*Binomial[k, j], {j, 0, k}], {k, 1, n}]; a[0] = 1;
g = 2 I/Pi - Sum[-I^(n + 1) a[n]/Pi^(n + 1), {n, 1, 80}]
MKB = -g + (I/Pi)^81*
   Integrate[f[x]*D[f[x], {x, 81}], {x, 1, Infinity}]

Here is the code,cleaned up a little: This is the version from Aug 6, 2015 452 pm; for the first time the imaginary part is signed and shown to be multiplied by the imaginary unit!

Block[{$MaxExtraPrecision = 200}, prec = 4000; f[x_] = x^(1/x);
 ClearAll[a, b, h];
 Print[DateString[]];
 Print[T0 = SessionTime[]];

 If[prec > 35000, d = Ceiling[0.002 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]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
   WorkingPrecision -> prec*(105/100), 
   PrecisionGoal -> prec*(105/100)];

 cosplus1 := 
  NIntegrate[
   Simplify[Cos[Pi*x]*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];]

Come back to see if I decided whether to try the 40K run again.

EDIT: It looks like I've only got one more test for the program (if it passes) before I retry the 40,000 digit calculation!

EDIT: On Thu 6 Aug 2015 17:23:18, I restarted the 40K run with Windows 10.

EDIT: My first thought was the program took up too much RAM, apparently over 115 GB! ( I have 64GB installed and a 51 GB paging file; nevertheless, Windows 10 closed the Mathematica kernel to keep the computer from losing data. Can someone else try the 40K run on their computer? It should take 2 weeks on a fast one. Please let me know if you try it and let me know the results, so I will know I don't have a problem with my computer., If two weeks is too great of a commitment, can you try taking note on the RAM used for two progressively larger runs, like 20K and 30 K? I will do the same, and we can compare notes. Thank You!

EDIT: I've been monitoring memory usage for smaller runs and found the program only uses minimal memory! This makes the action of Windows 10 (closing Mathematica kernel to avoid data loss) all the more a mystery! Could the 40K run really use up all of that RAM?

I know there are quite a few of you viewing this post; however, is anyone out there working on these calculations?.

Aug 10, 2016

V. 11 is about 1.25 times faster than my newest program for calculating MKB, (the integral analog of the MRB sum). V 10. 4 calculated 20,000 digits in 121431.1895170 seconds and V 11 did it in 96979.6545388 seconds. I've got a little more testing to do, (about 1 day's worth), then I'll try 40,000 digits again, which should take about 12 days. I will post all my updates here, so you might want to save this message as a favorite so you won't lose it.

Update 1

The 40 K automatically started against my wishes on Thu 11 Aug 2016 15:42:08, (due to my pasting two codes at once). I'll keep you informed, how it goes.

Update 2

Windows 10 is pushing an update. Wednesday is the latest it will let me restart. I will restart now with all the updates I can get, Then deffer further ones and hopefully get 12 restart free days to do my 40K.

Update 3

I ran all the updates I could find, differed further ones and restarted 40K on Sun 14 Aug 2016 10:32:40.

Update 4

Widows 10 stopped the calculation! AGAIN! Can anyone else try it and see if you get anywhere? Here is my latest code:

(*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.002 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]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
   WorkingPrecision -> prec*(105/100), 
   PrecisionGoal -> prec*(105/100)];
 cosplus1 := 
  NIntegrate[
   Simplify[Cos[Pi*x]*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*)

Sometime in 2017,

To try to get windows 10 from closing Mathematica during the computation I tried the instructions found at https://www.autoitscript.com/forum/topic/177749-stopping-windows-10-from-auto-closing-programs-to-free-up-ram/ . I will record progress in this spot as I did before.

UPDATE I followed the memory usage on my computer and it did use around 64 GB of RAM. And then Windows closed down the Mathematica kernel. I assume that If I can ever afford to maximize my RAM to its 128GB limit the computation will be successful!

Anyone have better luck?

Nov 2017

Concentrating on integral analog of the MRB constant:

Search "integral analog" in the above messages for the understanding of the integral analog of the MRB constant. And search "For 2000 digits Mathematica 10. 2.0" for my history of calculating 40,000 digits of it.

. The basic program I wrote to calculate the Integral analog of the MRB constant is

(*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.0017 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]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
   WorkingPrecision -> prec*(105/100), 
   PrecisionGoal -> prec*(105/100)];
 cosplus1 := 
  NIntegrate[
   Simplify[Cos[Pi*x]*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,

I think I found out why the integral analog of the MRB constant is so hard to calculate to prec=40000 digits! I've been using too high of an order of the derivative of x^(1/x). I've been running out of memory because of using the 80th derivative from d = Ceiling[0.002 prec], because the 58th derivative from Ceiling[0.264086 + 0.00143657 prec] was apparently too small leaving an error statement. I just now asked myself, why make such a big jump? When my big computer gets back from its tuneup I think I will try Ceiling[0.00146 prec] = 59th derivative.

EDIT

I tried Ceiling[0.00146 prec] and Ceiling[0.00145 prec] in Mathematica 11.0 and lost the kernel both times after 6 - 12 hours!

I'm now trying Ceiling[0.0017 prec] with v 10.4. It's been over 12 hours and I've not lost the kernel yet. Wish me luck!

EDIT

I got the following error message and a real part that does not agree with previous computations.

"NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections in x near {x} = {<<42008>>}. NIntegrate obtained -<<42012>> and <<42014>> for the integral and error estimates."

I'm now trying Ceiling[0.0018 prec] with v 10.4....

Ceiling[0.0018 prec] with v 10.4 gave the same error.

I'm working on a new program that uses less memory; stay tuned!

March 13, 2018

I'm now trying Ceiling[0.0019 prec] with v 11.2...., on Mon 12 Mar 2018 05:40:13 Here is a record of the memory used by the program. At times the computer may use significantly more.

"Mon 12 Mar 2018 10:30:00" 14 GB DDR3 RAM

"Mon 12 Mar 2018 13:00:00" 15 GB DDR3 RAM

"Mon 12 Mar 2018 14:00:00" 16 GB DDR3 RAM

"Mon 12 Mar 2018 14:30:00" 17 GB DDR3 RAM

"Mon 12 Mar 2018 15:00:00" 18 GB DDR3 RAM

"Mon 12 Mar 2018 22:30:00" 24 GB DDR3 RAM

"Mon 12 Mar 2018 24:00:00" 26 GB DDR3 RAM

"Tue 13 Mar 2018 06:30:00" 33 GB DDR3 RAM

"Tue 13 Mar 2018 07:30:00" 14 GB DDR3 RAM

"Tue 13 Mar 2018 08:00:00" 15 GB DDR3 RAM

"Tue 13 Mar 2018 08:30:00" 16 GB DDR3 RAM

"Tue 13 Mar 2018 11:30:00" 19 GB DDR3 RAM

"Tue 13 Mar 2018 12:00:00" 20 GB DDR3 RAM

"Tue 13 Mar 2018 14:00:00" 22 GB DDR3 RAM

"Tue 13 Mar 2018 14:30:00" 5 GB DDR3 RAM

"Tue 13 Mar 2018 15:00:00" 6 GB DDR3 RAM

"Tue 13 Mar 2018 16:30:00" 8 GB DDR3 RAM

"Tue 13 Mar 2018 18:30:00" 11 GB DDR3 RAM

"Tue 13 Mar 2018 19:30:00" 13 GB DDR3 RAM

"Tue 13 Mar 2018 20:30:00" 14 GB DDR3 RAM

"Tue 13 Mar 2018 21:00:00" 8 GB DDR3 RAM

"Tue 13 Mar 2018 21:30:00" 11 GB DDR3 RAM

"Wed 14 Mar 2018 07:30:00" 26 GB DDR3 RAM

"Wed 14 Mar 2018 07:30:00" 26 GB DDR3 RAM

"Wed 14 Mar 2018 08:00:00" 25 GB DDR3 RAM.Total used by programs 44.54 GB DDR3 RAM.

"Wed 14 Mar 2018 20:00:00" 37 GB DDR3 RAM.Total used by programs 40.32 GB DDR3 RAM.

"Thu 15 Mar 2018 08:00:00" 0 GB DDR3 RAM.Total used by programs 3.84 GB DDR3 RAM.

Update:

V 11.2 cut off its kernel sometime between "Mon 14 Mar 2018 20:00:00" and "Mon 15 Mar 2018 08:00:00."

It seems to me that V11 under Windows 10 cuts off my RAM-intensive operations.

The last success I had was using V10.2 under Windows 7. I am trying that combination again, this time for the 40 k digits. Below is the code I used then and am using now. At first, I just changed only "prec=35000" to "prac=40000" and got an errant answer for the real part. And I got memory use starting out at

"Thu 15 Mar 2018 08:53:47" 0.3 GB, total computer use 3.84 GB

"Thu 15 Mar 2018 11:48:47" 04.3 GB, total computer use 7.68 GB

"Thu 15 Mar 2018 13:00:00" 01.3 GB, total computer use 5.12 GB

"Thu 15 Mar 2018 14:00:00" 01.3 GB, total computer use 5.12 GB

So now I also changed the coefficient of prec from "d = Ceiling[0.264086 + 0.00143657 prec]" to "d = Ceiling[ 0.002 prec]." I think I can get by with .002 because 10.3 in Windows 7 seems to use less memory that the V 11's in Windows 10.

prec = 40000; d = Ceiling[0.002 prec]; If[Mod[d, 4] == 0, 
 f[x_] = x^(1/x); ClearAll[a, b, h];
 a[n_] := 
  Sum[StirlingS1[n, k]*
    Sum[(-j)^(k - j)*Binomial[k, j], {j, 0, k}], {k, 1, n}]; a[0] = 1;
 g = 2 I/Pi - Sum[-I^(n + 1) a[n]/Pi^(n + 1), {n, 1, d}];
 Print[DateString[]];
 Print[T0 = SessionTime[]];
 Print[N[a = -Re[g] - (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Sin[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
 Print[SessionTime[] - T0, " seconds"];
 Print[N[b = 
    Im[g] - (1/Pi)^(d + 1)*
      NIntegrate[
       Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
       WorkingPrecision -> prec*(105/100), 
       PrecisionGoal -> prec*(105/100)], prec]];
 Print[SessionTime[] - T0, " seconds"];
 Print[N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];, 
 If[Mod[d, 4] == 1, f[x_] = x^(1/x); ClearAll[a, b, h];
  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}];
  Print[DateString[]];
  Print[T0 = SessionTime[]];
  Print[N[
    a = -Re[g] - (1/Pi)^(d + 1)*
       NIntegrate[
        Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
        WorkingPrecision -> prec*(105/100), 
        PrecisionGoal -> prec*(105/100)], prec]];
  Print[SessionTime[] - T0, " seconds"];
  Print[N[
    b = Im[g] + (1/Pi)^(d + 1)*
       NIntegrate[
        Simplify[Sin[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
        WorkingPrecision -> prec*(105/100), 
        PrecisionGoal -> prec*(105/100)], prec]];
  Print[SessionTime[] - T0, " seconds"];
  Print[N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];, 
  If[Mod[d, 4] == 2, f[x_] = x^(1/x); ClearAll[a, b, h];
   a[n_] := 
    Sum[StirlingS1[n, k]*
      Sum[(-j)^(k - j)*Binomial[k, j], {j, 0, k}], {k, 1, n}];
   a[0] = 1; g = 2 I/Pi - Sum[-I^(n + 1) a[n]/Pi^(n + 1), {n, 1, d}];
   Print[DateString[]];
   Print[T0 = SessionTime[]];
   Print[N[
     a = -Re[g] - (1/Pi)^(d)*
        NIntegrate[
         Simplify[Cos[Pi*x]*D[f[x], {x, d}]], {x, 1, Infinity}, 
         WorkingPrecision -> prec*(105/100), 
         PrecisionGoal -> prec*(105/100)], prec]];
   Print[SessionTime[] - T0, " seconds"];
   Print[N[
     b = Im[g] + (1/Pi)^(d + 1)*
        NIntegrate[
         Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
         WorkingPrecision -> prec*(105/100), 
         PrecisionGoal -> prec*(105/100)], prec]];
   Print[SessionTime[] - T0, " seconds"];
   Print[N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];, 
   If[Mod[d, 4] == 3, f[x_] = x^(1/x); ClearAll[a, b, h];
    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}];
    Print[DateString[]];
    Print[T0 = SessionTime[]];
    Print[
     N[a = -Re[g] + (1/Pi)^(d + 1)*
         NIntegrate[
          Simplify[Cos[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
          WorkingPrecision -> prec*(105/100), 
          PrecisionGoal -> prec*(105/100)], prec]];
    Print[SessionTime[] - T0, " seconds"];
    Print[
     N[b = Im[g] - (1/Pi)^(d + 1)*
         NIntegrate[
          Simplify[Sin[Pi*x]*D[f[x], {x, d + 1}]], {x, 1, Infinity}, 
          WorkingPrecision -> prec*(105/100), 
          PrecisionGoal -> prec*(105/100)], prec]];
    Print[SessionTime[] - T0, " seconds"];
    Print[N[Sqrt[a^2 + b^2], prec]]; Print[DateString[]];]]]]

Memory use:

"Thu 15 Mar 2018 16:30:46" .3 GB. Total used by programs 3.8 GB.

Here is a break down of the memory use as of 16:45 March 17, 2018

enter image description here

Mar 18, 2018, 8:10 AM

Just in case I run out of memory, I increased the size of my paging file!

enter image description here

"Sun 17 Mar 2018 16:00:00" 15 GB. Total used by programs 49.92 GB.

enter image description here

enter image description here

I no longer believe the V 11's use a lot more memory. If I hadn't increased my paging file Windows would have closed Mathematica already!

enter image description here

I might be slowing the computation down a little, but I don't want to take any chances of running out of memory, so I increased the paging file 1 more time. enter image description here enter image description here The computer has been committing up to 160 GB of total RAM for a while now. enter image description here Finally, the committed memory is going down. enter image description here

My computer is acting real sluggish right now. Mathematica is using a minimum amount of DDR3 RAM, but the computer is still committing a near-record of virtual RAM. enter image description here My computer is acting too funny, so I aborted the evaluation. The kernel remained running and overall memory remained maxed out. I tried to retrieve a and b (the variables with the real and imaginary parts of the solution), but the computer wouldn't recall them for me. The computer won't evaluate any Mathematica operations. I am restarting my computer and inspecting the damage!

Update:

Windows said it found no errors on my hard drive; that's great!

I'm going to replace my Intel 6 core processor with a faster 8 -core Intel Xeon E5-2687W v2 CPU, and add an additional hard drive. The new processor and my motherboard both take 128 GB RAM, but ECC is the only 16G DDR3 mims I can find. I'm not sure if my MSI Big Bang-XPower II will take ECC. 40,000 digits of the integral analog might have to wait for me to get a new system. I am working on a new program to compute the MRB constant in little steps and will use it on my new processor.

34 Replies

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

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

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

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

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

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

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

With

enter image description here

and

enter image description here

Latest:

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

gives {134.516,...

More details and results to come.

Latest speed records for the MKB constant

(digits and seconds)

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

* means from a fresh kernel.

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

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

They all have been checked to give accurate results.

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

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

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

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

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

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

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

Out[16]= 0.070776 - 0.0473807 I

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

enter image description here

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

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

Out[144]= 0.070776 - 0.0473806 I

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

Here is the Notebook I used to discover it.

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

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

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

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

Attachments:

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

we look at formulas previously used for the MKB constant.

The following subtle changes transform M2 to M1.

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.

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

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

New speed records up to 40k digits.

enter image description here

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

All worked out at

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

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

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

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

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

So we have the following.

enter image description here

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



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

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

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

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

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

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

enter image description here

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

Out[24]= {0.070776,-0.684}

This gives some improvement on timings, as shown below.

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

82.296875

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

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

I will follow up on this soon.

EDIT

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

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

MaxRecursion guide

     max digits M.R.   

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

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

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

and

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

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.07077603931152880353952802183028200136575469620336302758317278816361845726438203658083188126617723820944073396910971792699904464538475364292258443860652193330471222906120205483985764336623434898438270710499897053952312269178485299032185072743545220051257328105422174249313177670295863771714489658779291185716175115405623656039914848817528200250723061535734571065031458992196831648681239079549382556509741967588147362548743205919028695774572411439927516593391029992733107982746794845130889328251307263102570083031527430861023428334369104098217022622690459402970550932729520226625490752259419565590805748359989234693100636146552550629713179601483134045038416878054929072981851045829413286377842843667537873039424751972806488728778099867102188779797777252241976559417256927749003107193817774918483496279384681984119551938983470750981526386576149809003502627803191424302529219251315152396118410707225304739394962943052646279777448768148583253359471170767214931101605089284945979067286888735330319862151244676787364299815443211871242691471418043972933414683459023829774729750532719883869462912155123409313348415267128259883306521193975174379922254198045615178994412133135553490942451521573377205408642930048589144169649033910690772391582253781370071342251572594362677567499808920975470209239383580761985703701060855968630398324250374814946826330552459256977035009973219582010379262683780372730214991685800367661183357964885016197428930706629538529226414814678953253401850066311530145893991405674646428173225541242767398713437847690148648164301021426738211030994294821902625513428936892614145650783513004546551731245970234033122811126743549631605531411455678018750898959427121576342426271262753681846249671477954063497124349020344036551106573368287836435282064517556997850972938450343013990723354180760185449019556941656397695538767052313265123333664135693091475441531470407512786517873318972913388315734915392768105053931934202415883973475615262886612907281255793629481816182880865699735067686367810063866509045347176621318018458034748234232981578345259121255810205821964010786343520655569736473710013798766266339986478994396368658091710082607277967003235418733795259931586975834303233043078953584820513099576066296501944555910377438882939963556870169455614687566678101370286182614425807520849687487908345556832868109922937147107976554412386583615077935956205339747769600705204679193073507513246175591609043584839337278793543746547700154053159349116699042736793917136465993648407683948032656188884206691693402772619144551918281516523603996927190619916557296777446543565889536021246466885918243655971990259296688767731715772356476947096650480980371949561041255314794988939077454593378587307969775159664942356081052570229788101253506631095305917346699184699307345509335873773978563492582340494114719388853850860110309182783123446184972468187651823077670750405979820522362242556172027726453015086533936217003569126904502550996932189173156074118921809673225790471801702126915880409108189331098050572529022279316595757334861754576511308119568675829070688830667238378998168376707878993608699338194221957462186995167338096705301353579036312938828377193705198756062915785278012960431864180966081008297558236492760272218063461699985426928320277774782861029791162809901777602844641512992771011065715457373366479587182447765663756471484330546758342442460492405046869226774217858673931229808148581477703404500553487069712504523117831032910709604428740057861796934338567573095875311653478664916554862079015731415233037860028637929728658391856887154892519556507647681563013568325422068040338916361521228721960259466523943888257896063588905734286095855374962687234162657934054193325229612628993882876132729326435801984885784101749171594640265749043983789712342858396610984512307096066729606199953906737787451295674356086274075351656394923428145984655133252291582978556210320582145898094236682915562958876397108132239442745441670640980253964115439162902370145339171491694834766220312285746976929187135807375065114071175825067288409888880740540559344993026282276803331136865494066612396596168209762805178753315343226947797372540884861256857475952419164848640023615456119437805709289844118506366383018766929119865687888997812457908367464878155785718230693782388129268655860541351105369075507318396693503695367262931577683467448269146898885363482805938396399579762552871670251094456845663748442662504838037088437480868848238759896935651182783115725845752987615928292866443261329280503053431533402950095193512502769412409991020971081722477621016995619906726583924751264064219576421497947089067686995211417968430091445615589910842175933881656004616194433090230812331341772002424490673790255193676279937518912598481328651707922980235349897571660918463079717355079356492371340953690735155226250048523618811976884731369672664860114159281786997398679000432955391328092096332507009917700191238679287878095492448480858235526283804826470719570292392469897900132078134817799228781783966406048450356382020025865633496572653723635997802672579150410515751614079788395055602542198471480699518287871865333126891340101916622813409477321367233243879959485068337567896954383222032338849063883951049308210943475702372145809360052386964785879560259767505210236552925838579347933674237665256428165398109811926294893115716478490602579134052813160126203175534155726824533565310364276694808283976228866737318171484065806926302804499264790816407643980605539930214627144955868310017574480739924642525449900839720110611265485895397953895166838886928899074249199424136964720444306894494403918657962530246512255932794149967176760618965656391817656620491746340303112113284415016181905280856183425515777908928088757758543646533597702066693557245525388917957379521329904347879824487379231760154812402986199185532315068352479956812186524457253954718894277531013051083396327780043666469474275981939330190057846718358798507554840427136957835394242255610774040103240817040392686754171142593231735431101424909184982160823154519141377971201541308847536387068798855914397455842773329120930514061794516419994088698411356892696696093390876805565714219023788205424076634156301604683241223525807851120663914762101297014450395096795899156433106283277281230260880231164060902135093212780014523165274620859757738238885368748976192285250348145631165404037683287321922741542485782820641242853247894785238137630939734031105444034024537878642578179120989947784464415590121367511691836292619695268598199455951139176227054755967938457665573376332622656450453398298091125429449364995329239961676596919189731012367861247062697204953573886231034221322527325186627554386040160444373449726641785849345442855257550319959090657289745327614471129888599708333728879544684955186948674833883150262440901103039896845109518392778469185869195205289512731232700731880903093921038138566776230687456229949509420584304632916430788063530735846892423727568343086390740251790596896169172794666511890256600111078709010661381301458277838956179623083929426645450306391077673206068654120299880674477039134502908330437698903355160132534270306700750311642628843938811432398288897380485698225109278816728817807755380546719294302155562391386976863090610671710770534216891010565360911113566585028371523280506063099459024309333569797688168020577543192685516130371486059461937196377402259985019544095859588518552253861634724792360135096921552853889828890066325672950851901789408051311031088636404937190606554261621805871855274318149423952974490205121654929212587375524910975896210773736227827923420788516231778499070692750618450733707893754911259289950698915354168269261161668699344642358519485954794834927195028685551876921933768490146594987054301907325352321171715944820941777894195760778557283763493899181057816098460889188392235421210530387384040287364754129860886479946420099302174127061193169479553069423441540423582466248609532626190299718654727770728604409727094703676796518903926081960548909818349564988670237763093997615608673804871931665807936173273160178635365286140143114312719329125741266724178122037688207791724143913849087605231108229172395466883904357220300565569538694222121710976012755188953704171248419254796628848092293890171760340038631120456016198315413168103995024758535758309214151906723191070785296129894865093613823475618098637366816784135033545368269588146833969165904236126095020019541966652313361935632988250001552415081487550365778911747455708943601227725801802635729593658919796444321469220636429116946958381591983215968689943605701320730783671918711179934139030789358865656410391251824476423911727552656876398794571042162623532249451860284980505950391260155110751883822537832486308517013881811614499259982266764413017330800380613116992322801768602778538185472116851382549392612808114167166899511695657555883786412875973669489842802492014105023836328805920617259694202196467455141721732935245406605149281045226843704267314714056822066780208154856230269543500739522524694655738818680120135326231372572168018584292883066213604097242947361078806707259532711165891064449024791986218529484874948204838228871265969357777039693317464826698226603470315123846227972716160821174944438973117132044606436502770699502859541484145679791662537548421996767155392668503452298570164165186843840217738834603319513440691893575492164915430190026701456624417097672289320878752362868853570504250721094804349374498554431883241415942557880000635290365996773764975644283998840894746484572270792557307994304867089609801638393480191691283639946622279301722834272798955970857605828912865583563997978979745182572544156216828007540795410036090143376300127833392146774640592647670744474041713281527402041661488703497978496920453017116720254608788228091322355983390620232797660946266363855329933948396661375191309656542477853981975508410891731765701908805071963118059557197009251430213493061859065208846295974495555807696556037052050066368872388956559016384410980694463696352758331938362238560283982236296136053359198462180229539779167669276352693225606762168623588424927682365224457492730357122298006123394176904208710239625094603642133828932825777640065895527425902134497583105186029300330267137563364577228194854642732848647536780047246505831956385245077243072234600289470609153058636054262124665901295855421896685572914794720183910346466515434961878081268575714494327734634223113452928581414173302592518002220880720368861993413895488169199462501528316793985322298661572076464732516953282299064591920259384655837156725717526697816358054334500267880847714274779944645690524091683628761949808311466547205208659718935985221278499836113146094869264838229681593961579030181480654082987955966774932700069366403659232824999994547736797819931058735984820474009092223172261702171403249969744559081501670510056234406239205261352837515585125690126750732712203049754825748152688610637326374515345623133922836647393563437671343830936131409237287968675276753412728496191178400231888765880422190347756592772823187666619890327758741567767355283157717445576118010047174696922801512301543199092838121389265165223801289931236632240926672251634173014243293776909645869584159940987366435410983333532568532886142790325011899910988250697157128145723979940643074237814481545156687807058832131735590161535683820156292220169309573019567791972185816190617419475540293940316898493428813660475468652420886214479370827062548369861829935708636550058169849959643515349471639921396144621330948718158823950818855656499645481718554723380115307006989095952410027066348483376453895982908292601246095886624195990986380414790829526361545238540777286867148982310628272037179530309546822678339556182294552215195085709552419611890856670601178105173164817470107900815983099063903721936153188620216546964184643710932927564367007751617367559455846627118436833788540815686055666789917220542765801499852125896960809581586670106194398397427668534133591352807927436180581127115600855521513052845398174953324323407448711553595444337845965594329561612981630591669026999055685842452787085113402274757556373091804882264421853322265593001792371000812538008018817720937500058236220414729477324729746898902765784656565999398798344255552916106749200792140403587910953793364384026746139370426974775774946231134989608650195949187377901405018756604763001364662384985081258583438447053014218272257120593132663507360178775778417496017461391595028185460596447914634540816798427112090803238281424038478859144831271549815860811489657531209147407860164439196881725552931744374559667942662980503988733429533722850422219983309432467893481758732132277582699651344339971459164946441069608658173308869271271964185833498813122067820134599175696510839660259009418802964119995437052261187326935483198857514904522276031222186419785632371719437135038375513115834811068205837492375640365268904089870604534909093778785789657476755219592418220726554599772706356527244333334658917155082030136146918373515503845788765363702755717041706575509904886780433342478040726992388223122334658728063768220494298205398455542588921482954488136845663144685970317819473991047286018324515142426566495400288662428595207288290661471392250069210999638635992366322937639145117278287235545547144884042902855516074567742482221663666958545353785646822798035224178464589193295950283417567750290917379581008690396995621647470441754560531288014114765188702288047016573267919088114076780430428580195122702221807562786681914218115638896695091569683004287090596875109590420906238787349720173051750165662953864854513188445758636101480861455351877326607138521460039934670199013326283986526697340788662196502124636493510171259322798470779488101087525650161454539938275564944548141958402609981601729088822843527695378611597895144405777504153537473925209901068583063437584296719245879373731247565490563522147903919007222820474795635286392544445271799423839999871387015742294165110699991458465570617696031668626008026319569882568119443228166126419027162040283414177651294954505911355037344190895472270511854803600770693757925695409172541507752010363657889896290481680673428171804067052623599276084197134452841762719946134068033006659829598552285297047334384177369166328966773517209810645914947577019316905666521267478956029145426734807155659425378945140143598993110461254867836251215990691779856095098138929852689403178624280179834626819693709516572325033025060700008752080948707004478381680536107864448590825684292535439951626896180549356053002854094257315233903154526190864556095715075895673223508544942457929051434878551663226446841262698148453108798492686321404638417830313381192872054937923457451728727358500727354042750687433054735505457335539107637540238065083040476006348593801867932597755522859208596327133805720013843564328141461202453769645563871648389826486601702590968919828137393755561765601068301038729815987949891991394742917033971949958026186753676784602193728020697628947993874053420336115499150511011325127096064443163691244625251672787889202059629123486616824259693069610732893189494588106110240232749694696314675034822002926546188830806663935863710685658685642064862362768301533474829157153517786643237713675264840833152571560511863793862355768736177870223969291532111924229976052272240414553862827847307292637538215385789283036426560603520214090192415039189529170751108725395919871314597641202524464325821597864979063156892608983980522268993068739894091906644705163502845644326655301026967258069105724120140291036741803916185327978619564620916445141094044186245356821608613535482746435256843308538727764143214875570900424427570077767172954825753499411245918991088343359100496547337896441814804611599843729684831556352500052706721874171750093747110742509128237789781585970636162545676198777656451248429580944678542414039813768638099254889512731037074961452894273949269991639582318425253259862229217568363667297715101173651296603010459437895685914435744309939339867216727050903199298605493091159074307869488644643795243847581137827131122712423889103111699357232084170453444987447295469253888568903807036359299416934963619172858287222066072886833941507346987761523441930020906547858291248305189169892904584794171447380583566489567188239098802974469602516560311182180267729618880469516464786449900155380996840049844122301820587458705573834391397566110219974164055448607653514190323737759041898115777415498874273531393478854702935840559585029485275363558740569563473509204667079836407021764192961078996403096458358972077082726687533123671363686622910077614930382109642230991598636653201591365541512547406500743191867944715494841111117551832143134027231348081097217773260773387840396233848673842755880138286654683817023764247135172597764743978895551226437686539582927860467432630333189647362562109413611574350481061588195795062749907892404944300200274198061480625979460782153473395984982051528358940069055576493358969112106341208035956904823455735911022920058564049390894206722601851299136659552108138276050049987159753266176126824958296987298335225182646207297123266514253427776081922356475366737999242984655267625698501556520969706578205290182085172746917421327028568927636491393662722375495082275724805328636000859268041384669240053170865402363206803688261896692995250507923695539732569274551215272819430215792096924872353896737504283600364251567593402146703829615557407611904318137558728040018863393424290968882834060663794818952362686260992277773857917167098374124270234397142459505125883249750806353320642374795568383768167030351893590209081182120963672484274392603311460923634542803226881687155423313417133647413448791959910241275975978762762182164250505268348496487845882339399452847131437483609394968340038735617394477378303470342156598331289943933942602929379309360640232504782094524167818793557515900491539772893103211606939157643949458440162554228589802283742258394560990724983307378101551362408800140398624393691031531787431880644963179096074675594316302870066175303568305003976820825474558316006460773296765384327926466472998220781444465807045215294176039851386673947086136285255302670317636599381187017226837161401950030584052204176528000630110246822189181767353711174064145574754485117220897516115593672783631656163372635322175496285055143430732447322972798648790227531209219432824565566901506164250780612253910368298843235193542190769996851875129600929223206967763122934833083569506353070777816034870135703279227933312021720732763742292897914606372287832749413349394308690135424925792652018162950475907898876177886325687060823777292241796763918756238272543861555977444543648921700297259812675700294141561924936231120711077865158092798314892352453669777317798787165530376780882788278578618200940592560186598339732033642956347159336313316508785696476044250791006438152229412410065841282635959641978855254405080324699621350768657306593819223723672935802952571536031097367461874326342998873265663123725813537547047903419931689394827961572126932678598548723036715948316961044850829526085334078849362566217054523651489101888572284522816906368493594788198024311267635540002566116597832285778987401564979845327069925098087083356328426425851768132896360423430906894264934613141395064000483588156646136895658384618969252367207455784108763979041122237099365228940957511722486871986281511207798284210765429737311020073386882976356660580862835523096693253407300666983928969919278122038960753957402417645600544034419725170386144478453726386444456871867041250780912022161816742350366813644623912334125933993405449104007009288709398105011385754224207908512982269402357312285585100400233766988400345236190108746367354701880704221885728724366184955538069488064629231508574693498691473125617361995319020867039325280459494146950838653948950353572490156526703495432265174769130702914196590845647100506383647694911305595504675602797421939400306290565864043763965345678712779836704328997230151534329044364831859851124119929031305982841716202698436015838161002226614964646609612875505829376427020163890112845335619207699576847988462525569268183740775478274169872533626427062185804598261702994604454639337996999730815080787078949239517073121479008083293508686006938214926308646820370715056598162691409541734265996309340484376608075091663026691910417621546323706478009884122257915924074760780468785608890013790491314425675551817153432702509503220569100630869275503174524462619724396603683920349909982375910850067630794604289311599160235271135673579318618575939940250848375301557523760169537073933058068509325866622394825525359201274375184295470475575015494109669176044598312568374391202298418881229331272587069956728838053969023003439965222738526812839589114629636046516637071106138278855104072916422748675277126194673055840512896752256613203675484766818892001138780368880716998542028312822964167226082900488500994674947647754638898255536619178400635432509902548413116616871519001528921493514489172838796581368816638003737431891778024721467365843751229885943953431098319439630957967471923905074331001283212401013770176289466723523555135885594318307638121521960086429231569069675090043584269664712555665889997207011096713843597259389163289689896435885193671073734367982356624239562349810995356613123377643470454641381247862467371995814484120007977697912026289946526369790189535390777757506648438309783331138572736286026836594103374767025327188256442698897902054717376561378707243554669209694761854501075212856511739368971991819215391376066362635377104887986550821969238880395150475500345818010055865581069458771942761338231603805858342754816579419540779713946936617061191069726585803922257822431713816933314826500932163337091134072545431220853213329719421588303126477669060223350631650679481137298909048010962158689557794344318727615647212490535075507623447070147418473530037607452234636172488671196552855752261063146759359679065944159435638057630825055980873740222029844929228680794385077242283552951134784853941257443997508110041776306057236589615743578153288995416519957647091234532519460146938296445328196392184142604721987162700335530580323221262658841987652757321362417927456735470745082117021618881288638605946786659178351480386738030526108826947142774842895757509012037786518887456044568533303180958627077864892152550194114540455988189623926089880512516929016778215479875771045706939565837058815221736412869068151289477771785235100596480213536690625294007182433550803833745859074557986270827286489968563818064729863904097166199266852078564537708683863656555186249090864315296898792769068280396077706023241684666236592862273826039808892733634380319300694303615660077920311488030980860760751358190344038147290764560625192541117013877774410324074718777920260750738827911042707364408931797520220545286440501551176777219951905469124034214324388709289681174833448092208198488704748997970075826569000774149359921567957085590748509970144070737338282086022897862879001467816309444997057240462057141286134521516103534502014701833870816141140718747335753896577435675602445820770095337928550304432194328831531651898299711444036842938412479648250401193329391490439237900039271908637381611280721478257372972915925923485791421715197498218363259100556065344216332670723597911735964342667604369525369069577325042960591024296335280132013239548857754761364104527201043283121738961240718720866489565930694286226789255484344602393670465660784852792111475192224673007394017382848454497244431895941501732787093508512855217002444053818556807626084959063634515062551806138198846075625021062034062970023805841218934896229380908706747814564713404509401887350379731807876994524769675913610468653844337322867988546358281345933446385910881060631646224033089323693826120257112996778402136230222670747201403797512016416900417281216292161364856910040641636080652760946553800752936253312665589709185588563535042040399476170491618966783127029712987951672928193852466809752626892014593422991282895235108791456282964256331776970196520571732346335756862615025744323397727876467625998443075957184347617372710186321221139486336619191141006477216421707756009123058239653303437088519147268983272241806677087656369959395052292024972924379990120911791793333619411971729624688592829027072702969411936965567758018744856471685763234958549937025237284389453382920298316380092892882291163027409802492983164316211828252708231124289754338536164343088758503379162420505053631248082635318550906053966100093777516034799754486496783095052936218428785986106094440731121172962436937435551623906402808379742530554704218031783954279287937573557207696758326381508088697509864764730999134956110073475265868200808410013465032529770634058019559767220898700218146460748394745340127055409081886722487268775454923137213500041764574218405435359170611260075617434088711783902612457218689916543715931830711496301590681701281321460185674025597619075473087589175544199501106976430489650970786469343757275763422247122118926073210927679678304988253678478330081060612889465129470524008260208676184916468683939376810754039787675853346537377791785073542698628412584395605279513716749218471902553624338750460051197752253604271602562536128695390853342318309436018379199005516545646697539333237562096765137363336261265181454339245915883697619148010520237377154941371511433465325147153291056485704435272113744652681234729784495734499275132484012607665619715817891058800477140562243300104767055992387223187075322886569057248841361980322013615989929485368393276431533159893813250376193532474821321743373212038175037042493002180262084571131243999412888761850910588169635568067441858301766232389145520247798879763378757209422263953367270378521630219318712937262368694894610218216305473743835649514273948530189706388380229149661949172907622901763057193564591247131339518014548558032952298708628608257077972022739486341872359389974521805404050704116826171688094324128539572330410980626949224567029050101540777697897489942390128348055119512744295918654025254575504032598635103941674495909945520886962397032158899076859796354658945121166146376509357385792095429100064431120165144340554422135753479906076025644241179775998611959934843497753455717468723648107070907751470235259262130623614370644260598937476318110379963570324281434703994522056796843771555065592136732282807397524171733723651697765966408358624479037380869470647233494896039500294221730499692836833881176549627803309641110060768961371630865195629044478169963261775928743842954164169279634821636267514427191357910216141648608058049787154669427899959917457239941500136565532743032362736879369374520991795579020418627156175783737677464542663410672177864559545435139551226158774699386153405779385962241517238423361156828936957177572655371674940134892288980002861408416973109049200768736524643642079707332737619015635429201521325498131408734633045033742215171741071779549549768161843700066742143888665526974414623308897856911225347886029736255135048381636548064537719349030412539170708105138881016380242834663089826858934957849060859146066692271081363199121153300479494940580837936985725975202395350994732539056973255581163588702715071413300433605747912499756709784305192151243313368255614956469223821227941912720785434368842756491063250922082885325129373038983252604820781958366360384450482763158320535926185166697244346661003340414259583535073459633471849275676147112886832781049204883848772744044467050464813766875138420630276640089066996980085208475039223705024738593666928412855942875333144047097443556367366626239037420991615697519284241205904279225475758245057523883529958487171142943091551097994658351175277304065521787952205505491444185443397264512127137224689575435956145364747266947794190302095984787433015867151203662085722611484193274209237521342505836512617041484947872747718178653748606959185398118890031426698612536758623668660885270467634775228117187722960357706067990070023412014246511740894088629968033466582488531511123049931064102112327553368861364792100729677027626970290541587426286255298811205964524723671842497985731895391013195338366112480995389973756342607277986556750127986950709707545906231950208149960901900586171953335848257550846006553720188536371214376098151435860018258400439510468545714557121324866812444498822495095729517207829196727413418140860843059133756845507220262660640397901921867014236315137601955243664857721742078227578473741704641102085102651227815958036290304011014627233143761994504019657637749514483492554769756092916236109294492916774578380246125367465718369095225226151029512963859568500307772479492767457051808428119209496296201141425350322190082210764985705468862668714104179838249757490140176945988341432269960622453838653946467644887273098461852938483680406016713801350573368857334306048516382429129366390696408104472123626827199878388946551893419458954138194436078141859543618534314783221449463116209424483221085761443091301877150399372056146514606657302931219128418965275622676973469155841264015198056714890890342327883748979352942245799508012984862735676911505508967850998465445436198934199525944727842507222705165191314685452141467616034784608314396652693968904284991481078832768777492041807714335672029606199054899452884946355102257745465561193286923885719875115030339858749491530125982499076921250138320163020258335785442317438554258883250299286283018892199241941332657646564961243770632296738170080097435253339530013475148110617911019260170109796414552725472450006708275778207568911851870142314885946239342453969706398878884993623857881235679392191298644774440709905942161947800852378572872393371361676298767334414509442609005708069000641333348398426253602974098157695513591458764591288398185721108414657719497545257475123340419223015474292002802787008757553775443225434783826233908052003494945921007387768480240557797357041815225752627053430019304936845976528355142760356701994430486537396502509618484236963160778022419515174956846265758113910354910991168858776634199080569331282820875494736790838423066518916178407830991549378569734815406063880782293369765322225998076244761277638640451743690455259490406422291375264927567246388229334409480097240232440739526990581804799953741556286870115533966337876250611123526072808846745251023462311583774656811146327442620978008232525284635460944197273112346489573909232194724966473127926809309528289693425390706703003286337670614051572565934919671544047405063979188308628057089627237021296849698417408370992709913438203096473263744709531460686297922430124109754259326433909689013479744828608998177308160742107623725678571056313553390694736683703218401094600311891176301902048507601707314428022556271080985153818307623261926695270025872348283290225835656210224110455894864162638480483768196786711389939693859498862108197387398564920497593217860975882504601106348210030395591367758258739453792898955749893676393757474465766931860554099157217438656708759069753438044748995180192823298522531973167037501789734863706747182365470003030304925737075309838215297551876842672970490402377709604502547360970837703699711915650442820536517777739947443113305996097502955737546662958831354895987858275245508063650064330790832477151863907072652340181506142919461383943920913422728990975790823069003114815255746500688065060013180797762667161513678016260024972733657848870978793545344287579454530413384965405775507472466889554145302633849303988904733809605067822394633601027664234725474582686705474171329548921424265912393777624371794403854115665866488672209765641115928780923934973039411299922682138075537167437040586401192298906873069957541926164127870507331409287370953292828124467841657383399145412235640444342732999330991900916437311688974754182423168169158453571732481563576270787462519220801714628988473970633719190349589974690092588627791481030515294395291278780661954498069078696395810162472972499909260457928257301389495007176404821623545979303170311126723550417414519957416871196986620895441141250513573640712317762481673984346372801733560106875025191834783129311160141050763295785465483986979222751652310366363631075167506884116977427193412204648937735014470865759702175169001460900188108515734160226408492805989708413063160095623634277501254307052191955701479061048818436047456520664682848770713164257221756173613595538313594482415178043479048937627735554401755649364570773612673814555403655561646358377800502344669137277495408097180228264295679442439056792285366360545904339233337596081823278528052731394130968877593222935285225323463896407436541890694852586062651611535468445155138881108897879287438147093803765658973733759385152192371299676115283848272227835523771806202926039520811761618343309366444258787401513504543860786612760391891605005327345957636706951055312694491810981586386321421844726615489798880198204590988046862644566415957423813842839506767752015732588876867167322598751019238188002163408113655869600345616732495515024233542105362700287475799169921274854294126671127051959938170520780722141091063360002474524286153676520071455253131415372736651665407667428370465485844416182574021201531018966394218483787357049450039022042341164829356822514539352183865833707293289883382549437788866113469803213401193996720117522236450997887008393513964998802472135971992401379950236938604156830000216186295566670812308118687823102998025181416255313837768106506148633305532641829166152276959561322748554776610276471100784503236317004785559084058914180425600600800639231423018748150129510144552331344452856094275163899727556851652341814442762236737915511637598204844856560820281148698795791219938604021241773568318428860548087713215471023506437991373874298466359715635119902815994309478949993194976147699689029906059711972824776483351101397231158496201683298718426490059390860297303294699897419718120678478130564596169353454273574138234244968994741306273967706991484618370001973629558624462543461649348058801045839327003353089229076377694939384900565783792587499062013464992384740514257419950466006164348172036671788063998357272575030028948763738653064142539783412724669643472573242822213618699830283653727987422971509646728879895085941019133870906227376225072716626048881095265085826103223091601903923438449858864343053453068493384047804718459385981990541864676511842405663388908011850537226411696705263595027595239044674308615934433556595493288787147609290435902887557254345577860143817148505877769606552878601538838338384936736962413812845630801617158664924113422403971538434696990320548522991709672238941596539487774632665076619810572659847920317420839616257795660306586372537267706569511540611836336719967973308065325730232536618135280130463519181338583330296515559830561264824228387757446781821604020733181722186453681930073652099246083065864695723565820126153793703520677456541322300421542112721115574691206612713955531255288779877504639489601496155066893351741907251912722115054018943198880278038814772450027564184927760000878361959040892394664045152786482000034263755012093964899411854451184529020425644319150033797145193195365186043797259932435078542934394068008632387748138655167672755310761518306901811187432677217605125868785689110420864700817208266782471938316807182571775787450148383195652738916260540351059489455959628810644993069051406033544263152487505190363307801455624816426464723367321902646618519243346036072727318422922162469624735275798494631507224852793805864183424910197149455381251692247910153484197399249245884957595277251804571893326584913022475898436808728866767138099277469743263264919120793796591549664654991002081313030520889535225566176293373543418648212745504564740135453094772285067479712277586299938225669532552448422500893971713791848303499412371012589887751526638545266428413144440439078347699067738195849762930764423314847392288673055384547218501178340242430169725980897482220133060794561971157725414277544424461971813980735541167273301034455468190077304993944064389478585438284902916380191791364774421001998029048160722925551114324713201581386013881994130105325740694923413772039308105073306119534484088977624977247907377809934781662704830057846033869519206895695734272206278688329510561136643978608361508122892383491933206723740594619328920118319863542628963872302113039832909622217205658888242443446509393528781797603992994602860110857358071309805222800342129064412585021236572470188960010574185288706176132851786988764034947936298850391688466847119438955556779935757815674457894692919057122317489862125679518050071414813190608080688929704222747601707305621737937671882672933174575421442016420966235715584465653321737237827656292600710956231100815866187747058761389816691277904195556064412949641609724182234931687581896819065787829508652911119410942042758407338189031209668196745433411615396936688880623488474672448415872951262786037982661101525883949749465650970006178457138744006227263173278043910435584198846019130673679599506536609339177383621731160963971519936727850743748408576308116518565739986736058566186572378498547641403682197715153406393310604701208975838458831715976361853280624717188881932248372175666502993223454744410519338658958405515195498087296693895613434631325094581571155921486782668931492171205334149218196625007801428331900569045570122772546983685840914536016573085155741858256714289288260224156313311035068750436529021077072386729104633974448590773942894616755253458678293556272982488363767723525304191131820322237494004255958645125613371448039830110477979055756940542368394767595142969216969932562610699024595739508133687558949672033334535206976453712720040679686569423844041105496408703191943918317049884218082636959874776784222904579112799294887792464077323987608203366131050259190502401260534479120706012686136608705069010682144018641689079850270880597116077471138280063368469903765378277232685770734539599380538694634242608037206931232726908476301314135405210445763299300128649198798748629270376566097033054946998228658294128815693809604316476610442644773717684307913673905451775089003935231998355620536802738878794045282267118542916718343170590059058633867671112912273609123315071342312058305462272396496166990436237824719576261974471229744498824564714104397927317910362155492477597280545931441069422745494219128237850498847794362831963574459070447460006178556150259648619453553322711874618869129346679983769602311030406716327021190590679966474344016644601115843992022537111802207704430476282285112139715637666928181645197167674767881272265819932831602940625695292168328388928092958589821775525723619707366670144617639631816782747894203082283331353617330550984924123853171958438436167015811293395118633565605287391275859503241331196686086520924116710543259837808585880597282419586679930515926832034149111217797325351209446301579185236464307033453193859792895377648619395865420211699728044388940943838371410446455526685497216799205897921765409030782960859342847020583673132217668449323310508601865204180917216401339434707493862412718864626214007946958146901753801391175996551860877053112591933017108973798110873917409346394644912125137035788366939236686128763959310967917485395479481154184898331816843344421901496552063400923053427677117843560063020463776940301224394861907391795354589914912470666766995020497860384622323398079311870218350036996573142646734659035413769608601053663862655473509594433920104398661404238953759173417096629153598150190428343320805217099060380916398661558338368347080590860687414980773180331668454495446249697008808557698986200689633502527544138403093336786314606036972127427104336722094019413461234518699277041587339831228119112277060852440154349179941853048399428582102456675025754150407953824468349315731686215116421719720486292314791746716770931596498632599361187495157311849149263825585434055849370644403505588134282700008153179500346872955702227883037385371950013607860451487704722139420804982149815627326556129038060408632788898667105151890845293576075469968983254382147813704388792133910700094777802260061184102111590144689407960654320188606704807702537339806239869704842741486330677725972925724222456004828119768412238554178530594024423706618407352014010617872405789389712602302750072105767032623457717696703195914652158915590091638499674308502353012050814303242075872168749430684873401774545843297351979330736357475107179743313736171743404669553989583401313607188234049343857734539065351134110950373895294392296912279320667254486905258764489274784522982212945218057032416497866782125595514576323960092953260206260800175115211582802713549733077506506285385601653022978814094014084184286535869301270109196332984645570699848867277173747684321269489767916141187023362925298583319026947425193657115429948917642488272502446661813317563907495419797774865575772180161283270944543027579424937578902781668207746324198604858555191966234535464810124448726639935459966073886009523823986183115017869868013796962720660040311595692109101758776527936580106536372379993400119159268934072623636494878428544363942712371916817342820684391238798255952789591640339338258953861318102247858762025744892194914265474620452742863328605957226828803454937044365069630498851758438637453590050749501188414062261472287129155880852748139632951736890231216458404336606195088903577181893078193121712320339144995972584629552093814527880797830546251012744715190641006150424376281356017618584217728760543813909543321892572280560449044644126947960365607569705174344102194903397838310037956088817075282028973334975327744362231250290551259013370671382088133616446072328072892144180102163894886047316360817523974489608808397630309414552790577589438273762894332143228834145331630167809405815738645070648907796440460617161031102949965266422011787421914463177737214961049999226998203897130257297378355232651290417886716425982544061022027334632420144683899210529843792236785228280878324166816029043813257753467125339084625181332255622768080620340083418889038138687907032244952275808660584363492358368722353456525234007534180134124334038904867225034356077516202750686071947504682792795265379346090022549441255811368890338902014563233121678194909683886154366525721519061235691843325347123875561992628486475961971360299800165230172407347204419823275509259690187169629147113289207176667812339538722316790256708295262286336735382441499778126199498169894441790607509452199182854978214854200781927889630629804999165630662493064722613801615896077619899930621378131621130257961117890652049429637803697962040900457156788905678617366948382932820749783209414709242756773365402827952631629346171348068285150125268261908614017191938712118952906627311025200184093281854890399405383853781719533825818632660383905883830482723847879633143542819740320987712211447996485263217027143080551968010611928960289969538727553837774805108866804580840440264926343218922531265731187872833751844008034303966932618138840216092333673336223687356520567329635439212757934793026874904684136637434984709285788474807765448174625677984055405191622840223133419507366901714853751542412950380112767767292685557768114312223965363989784922869668301947219905367573265482118337323601868127459335732461431555883070886615734067339372793094117226821014062530419184564559019327650146680693645631801179977690504066449148425201841316332033583753420656439834807476097127498376547060877194536271404615678240727298748776536485932808044876631179601903904361077385490972362139532700207252882050882243871584333275496107278839095686554673747167401327216804032799765175323008812440664269691818661600569975738106862845523730687170837541441561514276997808696920682891862794027380517677506090626653560031391630794522030764418323468092451956997807019016619944677649312594748535048349922783492742011405396249935581466861024511788956404655281017932492730895720538003906110711276825698887321442461122643493437612290593070889414203232131554317223269709089677404024616637013038595233112031835652037033999929489001914615618345553772132179865554324496878657390901336405924687309164839157059638383966120960976600259013234709764042837762893931014080032480372227993542228457457083526873784692183978544007988085523926765806286624739889148016363639847808999012130974716012742697361963318330023567973754800677254088406293291157194067079000373931122418321187246326549187562664525211609162571181201010912250156647093399712694486670958057090518300021556335220224089711799671027624052827217092057138072953067581214380663386890598214345680293321392535089629758827730479377488318536430248963018644880812503745027491426182732475637130520482604662716180601576693514621272019070546776906269061478792664128244830843165283334217714882741932078257108205693729214277473407917095359963477962915342414940306596235791603489567530965527919287963673535224048694209222718854980156634047532297585797647161970500623067600756418212950396998414356687968032368666411185091376776541517110348192138612557639397041520265223139794689279349221251209753770621505460193850846770214976004068068037063045473124050662097842362224675905031600687577341033303988897076377413467215692187812977174930412146409733988778604817515416766410409400866114558698939044279477167198660840803631795603011609579866511230164693179388914787013378328046827953759995289142087538846153120990365358058058915284794758410142913244915962576895363614452926415726770780039215122379110836561708766405518755498001897005973956684541567759405923229287159269674843751338715580110417936387768160823812947153348691911493759258141460764727235141541759747565237593001773785131013065807808330218785317089753999860776653982608023886270248565634041498093864409403253221839168558912383450718903533916342083556706091128461670637542372286683711243499663534449627783379416043505986522816197190481490735202570168252258981544615987113269403843392084993840666902097556569526133504438709759472819765861242007136325331917297432058273884152417041059292960455863731609896153094807649987043701486284262924130547033977601708126921233730582382722046109326124918856652641145634105551059200641880021609329667561877005115632594351965815950222839910677091098343788708426140517168890107918690127654234351894587797159158808387175106751934703643072052897841829585489509338187269998966050764071951647858919508310077911010745350854174936342900034384442449731616089926992707082565711733368475874865156722718709294278724726453015874171703614507376581068972101023521650043067672830747598866375547503896091304924797405340004275107145546509151016110240702897225135422875276026493808146728696487589916772038720298011281974119374233409021041258960046677734286758860146147297025155929123480413998651763524591180245312369750846047651591902876261325989668918904255692918036824923494646566622492355335286611866789834827413204854399713278577422081973389540287770044674236841367598287919314837150218643924751862212183209507741227645215318102533365523800416946980733577876513206048259420450493230840918940806333543145293072144066254699273363290770965150038833860394202438559224488281255611459905403817830171469077206819997920907802770623439625068996447655485662156280212393014294423825841884222723498098067304837251895194762776364374680538964054140703612687654411517306678190357158325297676457297567668123963431645597087111515767016427813580506689806537103986622017490970965740961068756479389640122610722388061379150210721195253162633265904473050092745063852309831261833787192371218578875596405592634676931967350791083443200495216351482917803299683397467860649267831740477941421366962912962343319807636073332633678786854001225250243908406550147308414639040816101076013331825729873363533481907195152766361698251241561812738837337745068569770796545613761203340031001100911391000892487074480815222542027341085792615951604645882015515563943616919763472204821652872574507656240487498498515881858273826453750439777379654727915842275447062466032260931077519839489073939984307833962645844252707134887057380917392090843396470010055791072904753311048425419447136816134146186131589956637565940790559365529151271943334607987460685464808660760377003551198818497126314752264943489308639878118230247473347108919410963511421690377566496156495083424039521316633556395953677506126141472103336187788115793104843106052541531480438199057095794308583523778635738134136962487292698971286089428962255045444108532089536364055937480899524541340214443060836690597097051566243717442472178315231345502280650406691325381832024778952233334696793733379629212745760613389637254964521142013926463892360342984027343085122607104419409799751571994260436990631295219902801175810947720688243404555770857856798272595101875996324592764281784836808155578527362640751536427224450050169181741030162513783556031977577503338794720362156631214246318021847231296248895663413836097844841895753542077292624922702003996657559542966794110210482651504638176870248034048327485749740897485027130791999881032377560377796227613106840455561017827875390266879241528947308063102703061393358013382072044955079162556005851394747402102225726743744931996943953498821449300738280992408660502003492592258260604052859924231237481162556686598829856145442517669629150583891789380970100677626884627275139414846227183708595817333356719618806523777033466111046026750450430962952278369091030581738096187701781022824264317340870765544525328583457993160015390499085728128307560462734150843136434280495011937053154094200524683132125927907680131181837308401448139480283244364218056932008648844967772478536577456849961109904823143199971417222841095025427845546575953035338458026000098780115700276668062824298252206628195224450491721835308187745563783789192715418783511260409222723551585615778967387606209108850135942088974029482613902649121203798181594811653333732308670777918889069124563925760639355582009352286641622446351372787061808935213563399935539921759330881556897296284681671142400571770213651353206354681405745097428497842935432720576753166502113597057920883643591812752122338248366441373209899102767100560128237176737909845338672197576174359804628286931665910706950676066812212126707571532673942363963115448354462951163467677582403652302506868142627415204047893265933336391010099958533098302279501195153035863180269081495589914267722031915018731448169448396256058726555912378047995851190435238152954058969471808276891254523150698704574559849783974866764292224890355376504473807592604603697039618774197488814483531980379096381431327339886852438383166641783211706815497795382724579406573000804584043883600505164405680953912415004748912335889765571252542349826316500186853582052761521498408168155176242848377107165877785144739642953929410288374197901091407888412680867189841743049253908070347539204534031813236682437777298026633011427210276104555022854697238425805432358259751077303601093767587501517141047327818591786322418282341265033564057840120367353128607473179720692378121785824504223224565091911366017899066194016695107486324606221676053839536889138212312245971992927124113569043281922838800847528745981201027571634713103959322292588562905402471662497840132756917815869638452863199306703374689100640410517449496550019377248688087580555398369910577614402046085709852887149939138032560736003140167902510180311106572992880576881783125864897075019748468976207570846267188466353665946229446187369413187475325594410144048016983177184137708536885507469138956583704343981483141804925977458363884649466246405508827592961076684407924869703448475944735245210854453694902271738110891985145749049675554945836683348826421535660287036094346596060354823262282080869108214804468745651702031420741696335730925132600826181926669271574486463377219473088287205481167590421002880245858025793078950075755312775395168675793969625152511933643601647928969362704243107139227417096265753428216629526036727927470753204163082648427590643955902631677119018523241770367128178481904664737311301496204747494156471923889312466173561111169922387728662884859737605535522544132240152608456315372973222909532702884406710216001616950842363274424195360554103955815946679494561506728671372678006138979226756841375870813761070547762925883944937192253325741154765957968363800191930877581409196386201297289808151946682071219077775620417780641009447981168483406965162077132562812636315704344803936558000977611862076324476769411492980181725698870160053342592330677641791879513093373692604295906363493034272422259501509814565978762555662875995592891584571352757998361374842576718342768042668867568073536775139904985320325746427479934304380847664416689701579408107529089321423620305352364238223005252979248308179882609899465626094633574556197151585549075124669779521866333842310380546986070788550006481173429959625785702446607615082067239566885607059559424470247084530290839683533622142734855540607468671381197183460642283054147032555841150245216017383876118168139520315473194260874881004429972199730666196063920149296128098316654894866522066950574208845001297688116166027387078739450512152422208428708833946182609617206926900224298407127475212821564049418996982249945085954992896773361659513330988415927707242396641417802537743660976079313085343821411633004299967768507841545727238608438872391817895063697017357382986777453300561312271851037532650035878233554674617115400199904002246510811930960271624550924154967753689399446899915244007127015544993508726440140969009336565039901012985115014038175927810092217366200458700157824573809371662304546227804301792412513062713350284452615794282752806494983924629137719058277590114615578630285860082311276145736543937709462676747351126762533952617503471624287266406032584763888867745241638500894408124051214097747278830772104709117411596542858985601882323234878977067592535655392381811574618039447539876256011841952698075918386684804393604872375457030367609737112769737923549083819315202230282520271339817481077159756598388743895923457084746974696064835894528757938330628721459264420651046844007175529046088539202687725127428322268366240075722756401470749375075539093521406568190780215664212886451879694196428357945952219503165386477660262258713490033642346619212328037224168060393200274482807996062014272403556130527488573211841610180579791169660398131387849810870453146779132794654401169946647881468110582858004525686801425043156215817270824100443199018614790448868758707401591171304250771973876652038315918047123246055873908071272902855530200500908033353430802382641196252127938049796989801734548582264899287570936456025856852901836180590964186151222514789871431741658343137665197165011705344804774914261888142892155589974887988962870513628943203856346762226126365089633484301819539391154978614707919913591945179675801327004356101315735565695584153959225621288422813078018885426574633135541993757791693886128953948311175381482196918062755604069363773325236130632394458467999879601849779961205263196671714156461124482197409916485088871377505034020851316889162907480133321694412871504446615741990602618385118306952855788590470748892638506405212276530366915765974199500395593017867764529901644762496210704171169365610832510181481089079946435244914443788045099569632135461932904573418547066787751903775103649308496187617234892220363198596108559815391001903217425817913743472133367555996189729536516678964029630458934465958416046596244342395998255859607634161736785673241658155325892607870198085862595095291627764614264301615210913791694994787774560912818027507126421657048737071237620620777901689964725189404765797740521234530942286316343950274796512364493315789255614943880416375947253427495054969936589266104681860745671293723307939791250432736016926795118728596978308213271306916756488567353609955062189863108414331094127139140407506327687210610455442786024312493390410613321406640469649148754789374224560838299594180154885601287010477432205382044258044255890445216882671152007897038493954912261638667758430839317111095363940077457991534386157467993442100511896302306099872682386178044065517210900380874202317287086262931559835211420677525034041277587979488142572906183160655481613482506705517324648845223556984252792811742795871816915151706683108622016580012341302928993624868309932348111278616975180585984971095924801943164354135692485668532991700986560928146989205656391775114902845941078837175500966564938068231938999013531836556489593507289821312466577192334895734367539950376683584289761132881487118221229471037304576252233678015992340338295950682568121989551236253167708990928763644388823591964166602581952513453771583573475176763805609712873139044327057505782947028163586722908845681405632619363545368926838000971814028704772087500176148558732226036196736354740065357918632169040969926099679876155169087151999146445912663180257426270290169990685849047420907718832440871394956174800297265157679651365758046542668965251093307424027355885859430264645840362598754945939623920987789721188755547423480191177996737969136168641267189937365069187053818621891589914759093155101532979231106241941872322339351745967795793048926640025830153502839961386219166073089808538228115473162112499639318445116482854264879034292114073685585909380603617635973379797464389320679147100588419062732635693381351248824749320952641136795777365850745674289825451612610994199360592558958523000326422792969698454838920017420848985388195659741576399244285073789150064387977364495124000827202161094913884855266713144661284258811738710770200767081572188304391093483792971252207988079125668514291278910935113209832866647250921160862190008304270157848988340752408629635120789236297570082941515630628787306947165062377181560707372592275828070433178696326261023026754212205733952786213280129770555606285883716709844270372436749990989128191002453129201162368826735570889134103599931237782943504510228253688507211950049041281463600651593778475703334467541758566917340224436878473029828863723681797279805661482163628434034828911679763821577786693621605386255848616062785082841590590413403856945094320058004171654537788679564797197248996443294036040996991797553537215835099451835177412425816974552098405569543368519204729700641183693388880475237132942629251724653388535792615862456660780444989859681813440537516491572182653628140265012900907872425765807355783764965789585444055379849654787255371472276299209006430893946690243955469687449855706426911081263895102873645871384729023686049649074758782546579409438819267237312699717389797676379318244194875435003249272398991461114202221307024172879494804543181708487188840396068938599035627670596134539149777734106420821371705282520310437693217846027589402445197915109978802666310519472029804928990317876492602572092167913717859014020970893081566472326470522042605965356860212959714474344119007535918110878508890086609319145063658592346848261719558958202029735422762755572963130989189744722895458076124391479605792868330206888632288883603572313195828305507578157785646291084494574125247254594305312883996729572735819360695800430189007237742659119323614703607696343182694518577524512441034963627685512792435557346013591910508946304730473133291422186306391133028149725870406173713425055736872310869518653393472650506392440295863173158042633332992850483212986352883245677641201869964063548969939086913509514687929622617964554452791726353878214981119030111582717847450692618187576899949521571801478933720249443529147612200731143088775444337336751417200169044526168833253718921511408994623840319645256972964720503079049521873547731358276876673138416680084011318714440140007547766141428341244168733051324558400412840958154147406098081888977669294586116079457502017804737986600813656193019367424771311736282992216637095388664329968100692927945980866563806371643093723737458057090005635052550291651207204731168795970742605104977061650185965055279878660753035967262209525657655640613851929147670435503651768673291628194398479139650936744707667194188160856923869992687325018582071230620871071519350068377690942590277795162074911968477074435290349525300876869133964385176737625024456858286906399270339094863403607679963320199715966301309769579215128192227234433313966874164929757884638503576879007653536870799604513538404040897132961404423363919898706914772762023013819703024735206853729923350739970885956611136575931562403691896946368339634934247936030017017099038771611573971025846506036653314935020447218023211767147656592564158943908278573666549706874042962473194388661675873756013449669655674282649164113005657842735871313595499326964865929537645964376662378480226584567824594197428465988051651052519472333625322820803609965601236880166382851902234080601309047544587403321804081492536474887574224124766927537013344083073693441127759600675952599584301298221782306646472057659635952181895360334926124218702202542811651762941867412793516027026431699383318796042816197108816427456435876949743231005006282536061830981759160053093576100195562010950280459375149427800920752575756415735802846038864473821602932889493719156924336774443609101081001008312792108233948074474871921569326460887469027012778479970417643042849591528815962409059504304549443454921894213513528627228440793740391323962501206525082268414105676483459537498544161493534488164568698179173900919413902259239421747031714758411806736333021270233874387157937831611760442094011027315156681170238574427409513737864540674577624587151617086553626765371177231216434304571994742172179019022103430715503913459486780372635248286097910247796353713905863499817139165170431864036301545263973420113639036698359419860404723329959971303582281448523160325997458062106752771184669612198862342508368232494880369081327410131080255580386005237535685521546860142465236794683370154565765728629684856949036103647973722307723257875938160404694337873980772297131309122461846366362247136776513736936774004485687563019490338066199380995522181899444923565170653480681414750811697048085756324206516465012177838737165804324446513360573297575939305721862868078274185276564644297455935714209452962245370181509144239047756325973677560583805447460868044242230671338645418566532961006870227845630984968830592853749059718267928920678964527635991068073137193780953057712181171128955743936914913699282089937154595581439018424587163236989166211573111131562159877115885623123786927578096612208691745717669369765809415175633769584494330749059921669112290672033738877369747364189584177411054006981414115663649000381301691524014095640697182432638848505248057955595963905777424652488445693563339682629920424357457871807697726613937789963266769809299301014440194798967287489882664999869945604279758601555326568131579011711744801428783600873157006449237224359466027194638100035793606056933060206623419305919108482120459646348317977685757348895080491933178642607685385556524543854525585379383239519943187900057564559499707488436518477226100223658974158807813818089095312232368402174472106482707450213593667276379835003779346328953996025451054928935316757615574668179397442579262452916602456221654816777309581350511960735794888372258245832676902264378039047059384263477204085028994702097062402349456475647699089342538962556897510767199395159769233890665759138610101778179493309658147250328705050107809534111374740780767502456475757470109204157184016786001391254890428564140168840816944251497659733337183497473250938070146271093800486947220119048443480764365165925335349642141740566442267644588075566164790453946955930436296531761642520576320861532651802004772411791450442743579837294465443072094843116836488097796856342659963628305527123554548925630431611450979685628859612438210318777460307387186164892232475175363345873170344935431423163838168749112795484653319656309162561699285956917039864782205050064007539306559868983002706981096426424770384022602113150113046360871793501670962755717313247894289298152531639541145245314638420796033056776565602539780742456160228583393802530190142530065367247495813681304184686943802631267589218392648753759307896999232661655499039355802144873792932485020076921625259844783287278545531768212957934072093528482738521141681448638494935574674250770312802584666276905192296341024366375983119799170868867430539593198898873485133213195174134798425638189756028667273973905602140092665658366551991146035025012683674482784543025740367670915080120129665007949230173029072097294108910906944797481315849415567464689848028989505956275919779057046808719027563714051430744004740996076512592005578501676229381927213488940316879524530046186623543987941919465856084691850485710078194107527919870561139672735733344628054794178224153186799518487000435233676377032115441442675065749014893751769122888168501469322205367837988492344723351124888146799234561275505094267681716942738767294771152007048864247572004129307657320135008148386420970578815063018988418726407819305728819736464312992474194294939661118759544005012102496825696438719223475438857339024630014246663701589699731331214929535451984147239719071879905124568606816634356972823347351990107915562843844635769505831605235008151664462437797149851082679361789124786683090894436380709556171448325582245901401975262594753031384510048823105343099970298163786124822737302456434545851706494755422774099652032096765287281735049310094901203411060022481181954538913525972029665747196097996367663973902305057021188187570835879094572078793717955240831696822082226504093244616185879825927305546824739113779379830569139861986745487901572162488581882234295218644945337583265172169328405706221959963101594491742779763873491942385907582507737395653497654395355393378116930748468693001507901892626247572558813943394206943100988459221238881419293348937252597867192014297034252914009599068223539946776002089646745776579044897073201054589761842691787467792452578937390208838410711336711570735424399050906103141158231139970278477477493677795650796636655268890553918518436970290508823407446301936663759600068110037452574071457928401609217484111885440805849184011368574850486806902138482684163990039238962303624935990711537114514686281175510353610375268985234258563193086383755781376213106962777658684292348099786458304861083131743790819443469843044982565582289447503387552829751922321376156156844448973304925469899631151910773453387629610485856904979159583583030754554194602468159202376975164800000239363413500388676451372832037268696358412520586598510516421291786867806838339800760071417348674838055860154117923373672715493154696662754466668970208178678058898109948665256187287653040122651819610024730854906392534261892574276036783271193748408062681395999672691908512983004224795881511318358242874821484928145067727740267478055635189641091026935092505130175868462725753217329196443623246103310746156152684377885963332665437123343492951316115499282944922992425660565710288401064781199582940509290229411866635186387028860961059810616625908131213462394290727610492898751868835446013813427152723949200600344709773324604757870590984613570270779826721014867116818228751253387503247551493617000273698992179032409798237362872922578737715390837078783189001150626464522673170430548290617089541712305263478727554508109209667036930412823820351164270594067896991050934613469878106848239055000092911817083666875638854272929486367194865761369076452642202477609785676532884681185678877625027056499040811537273077472405927724684864939054491201042396654022846154829866964104251008445190067514038292327902800599697732028129414969492692920058099043365515663014714993189392807052010225650861149042639083671177706165539303214690332171673406638205707415934360002463592005559195702692323302513557711675419336021642024021960665071918648533573700371732495970375050965055569350311416704702601593105730327229546625081958428997214624271930491454320744879540468853815023102144061055656785185606334902944632022590588729306474965323112760338516874519409338923136523976959787204344251869859138671947791802124713361490599497148013578381106482885339977350873064050544442357001542337013389658868596286648339756347575921087300750003418351217927401975766692622458305807497849199371535734014944352888651224993576609275594300227705875900509053324795791315678897228779381230068151818281572112566521325611392307262583317990187277219076756518386311471026544413579010171691612316182304032822129700738247199615990560368431928109510085382435991826580884828440890308616717054010215052641986535516235075175488150978646705855731342359359638359142932221279341646403212328242178919199670638270329170536606700350359290734929958989115143736590648733683299002240496714156787579058722400871931503770612504319066074063376435344490834866990239312896932963966993825969887505792069460360204268479522960134282076480429005214494242896789463194533892335651595811831871938328772351341408885461125704526883708030189866774257741394850383650289968447659318898210272599990660085113673670478839858754966910896194453584568381300463824941619253857292353351514032642153322209547334436103888415042514056346903682146846009164283916320618092222008107633664120653633373323858230310016701867340175571400345385449643644009699078713320821532260441929063884017693648368438496972584468825188267411532654735122641302211789016691976274370082897218991522284961075157592428013259296013001096741201552554635598519250325412397459617105462284426586205778741435018494938656263017032758261359452360460195651455909951440589502395677268128031395732968761253949360956417886531175112956279788026987594147846740287870076914669746175382453881617007134904836246298552393374410295760457133520322599608378394981497768047736468696337492649821498144341316272300626415176776997567234743960699683284589261649279175875115936497769430617199474341625167968739118669342602430861033994717345800516864042316021219286651240429676318605864327873753090542872978165255924803090303616914285679675848218360670624487640186592254920075540382760756864168758413891425444497393959833954424391718621612059420166515399941779139052887426043207594903141362363092137112894190318998783811677504082459274616559384592449160211076545226896273297771409134249502333172834100815141737475493221927368175590328671378674539746879031816147367824504559480020522882059362002805571748059738543515734217273993027779191412410375081594747215473042754965532900442640965650131203960012979409813675789385747944586268700088023477905665628383967804070033419102995209093961218056990304168387235559334976371516106199090510185408886406233537455623237302926742773365990251477057512275843562880757061127434827159601943848567969139614346040822074189850637505182291233114182263595234793197641868272870623054238144618172776645598458327578869003161892554192547386621934271001479746729736100243761361224064472372618273135649445457152433911629558129454601072673732193861213645587788716672540776212621221359882422397200160885393447496423922975674354209279886950919110586553379660813424389239018191108809444647970479490905118099645706035221772747398335476093604774433925074698706344181368144550932704375881801968462579948118950179242405752395381630908027388634984198949973616469040767505793992887363657360589304144716646038486578717013544553292532225553871520641241042648802621654727658342627108382964193495258555259497171745351836134423186300065229067491941973071047860709544678430972029590958510849565284062083688763753590255901815585790010452851840262543974151444249726217079245424046975593173963719160895656931981436109985461409554387773114253705935496739385020205737224194947850029285489429985532395891322525600955667723074636144855805706967101066469888538878947956683483215121719405966199350549076464865708567312123337351571552526655778477366925375401655076805140425682294290941708300608377515443456438402162203258261704194916342987704295634379886574448870565494770147996270681185584032139991296127864785065642919140839400817496251959393756284549497588252404888070004486901447388085788898996085810272369970821808053847723834987928572210343004687364273363189853185610416566646277190275460741865744222024916472365716991340797901261141199039103244946581177377280807203746207307919375624281470793039403905937582250724956636422472428432107568636555009397953938699093844208735169705877998993524173594870717440242380472063442254404504028232465036575995842364169052166989643440858704526968628188537409012599688067696650231097917470049853312713693886235079545532019079711105990172145989751541947124830749942862392600302231613101605959980427141675629368215824062077035522217286857115425973497989874854570809591171370807332841424114197426113115349434286273349192588189379263083468765582947676367446062025332041519799032246140263967493823385471021455854240008710769570440170459948213818422168106382414371126595097931065282419971674611163562449926181938502714571545831207607596388281798511263827418697135276705562629050319873683334404713118531274971864541638580378701216710185443707569287700468830623360685559664118443429318388570993042303431434893083424176561283110945133828346253378548488633297277875156095227935308831618811189919476980302302791206186611774747222667748646589369842366470597144419880113642124572327203856354627849099165072992258772776070435752295948478588199368946567202082576202672295125202472017812676990374300970090895754357988665148747081020602320157071207980231120181020417099880568574584838097448219816427690779311478584168184974441731647980486511541533558529160164238297659138494607263942861790755935188132595858096352738812473983171561231682523045438633117872168777914770648220985919103473118598233396425167964909596540433774858425449180075299575951288921264019215314421689546234446602646638174016377051954177473881001530750337468478003925408708595301516517781023474729249479163440764697206981192995279534999610512975445064247087784521826924258128680388023418435180442659219803752460870267396375145847202999900973506529654412841658268709473073330030538794871613772159740568070983268052944130978490400917949773031692296920657216134047466895752023567771811005014402035790439298165692645151327985585265393099989359423113462016289403967940278535469842884210461372070189082686875323981346694705819228257418036688446317267713266268385389505926433567232602533271753528722050182217877754456823228954161281193032035732488541266785543654270317561543933045926672856015467882611436514014664848546446778904988932300610467548407513218753867057072214340782747720232552328621368386959914230381793400661401083356232217978504743417161359883252367150159120409423667957092083129078256306824349675147916668401016602473932608785384647734472490288569029840737107487945001068877427944486833871029376155439921679631541689595894742222581268328804613646794766869468877281837858192791875381618329482674685030851343204043364008401668871376323132789535326581625696364843732597992981104069748404973477703275450245126254083060867231912517922754119572275710238248071429776059527330582927558067438092511973468006820931949420569007048902744592607327469547597269768572312182357828641273654945027156318479161039829706989099876555063019601493402494155491864403234026911125848832476349277824606034626568382551922214362309485141891875238672735525930274399412678538927989654199117635756110442436107227994094243499443988690490837073375187352454765724546038393162132086080314375061934929181135852753764235360180047997336975559391369597619880996581511129802105800173454484576539147321939588864611719433120553622610891928300397370353529408527534865764357634006115408913322518183628088187910132169249494486016765362667139737627609251389910625067113180693364199608867134159634897162019125478121591328104222522374572624313233223579088028511132862396420930560857049368202728082607786617818849693767887619857690339735262551430430951494095933534350444150683461199834949261113975673269939547539221724712920910045539053167938224362334838794279388608457128535830237021141026666409572178486585803638828600149865262858385897745312777464573976253848489382830723197571309251014227288838941925587929944012731527320179580237022806126948834521914057867780993878006352875476817547312262811618242221110753111574101774158718117348039375296842076774438710972023979898960389724075092719031954504952594177370831187872477875732663973559554005914563791716193932243741707278158676299504760007491295652980544831906285195227020124537618539003449838681389774089383373715093195496413906921246495535999257741540829464523453338937492312033704517775918638515167538339870538666503445462463500166622344546127544472375867738432367300482641658800636112981023921828223954453682255389931603604575667490500921139208674857330604057499294249997354775887290629205056399653103343375537948461475280524608718128928673989356529571482344494349673254064626191519367991390489736728797448426144532303623129329505377572853801535415074432005288708417634797968044684635108897842220845743824646583623214489387578192340025259025496376979644907126334956498363018166544086771106559263327062821705737682321255627976233304107375546064076559624196712458542445925387387650277102800908273020450950161355518475554804835313781009642286557702727271230239677171755832190197545279072544766287054521265091075709060085350440411119395597123561058699116319765086687470421550839725074826089917448433745313370483881327468452671128156962311176870144361279694386100093000020208012711901788606699373878633060046024476457636206834253343867290771103523751874775306773161773773945098471492028288776234502767272611656204406740727369618151868565579990895361221692813193955797896336199341847242307346282294714721206792164741086411458503055670824268906805153985104177012313854366747429462791109435984822171635498207980533205711021327572212858658937573635033762843446126169552794758783796194684143081115420675044312005667594031452364308954907312221691251164148601288893031890733089538180118874758693217507680923034697207895261751625412521765782648329246404830428731892528259965017422042481972682607551383651744816770156881100620722895676023994068642198387966961428934137920475445634217306215725148682687326645727480761079827671615181482003159008622348302522815154876761877797984513315030363251758019033783968121309276673654844330429867569498714859202834273488888264330568217728254855559364899082801073521919771634623431493816559890668556954335352485394587976964895632809354311705233588646092652421867187317643568805860348917521143412091617212182570110202371825346658540904973681940726385273404301239774129100084656627923353434790430765258628424604212113894763495698378352964655642830041542010443617995614775662395978340479042592329748792293073045109246627731819199450749221677378486249182611763882854968467822854768884117574492668572483961213165073281673546797760709998116053390335168057080852481421476738499260727927153841318489966826753368636256973193553984493984971349101124796949732105080151244267458244943921112430542450757537271996694279352262481855558083445534721429733531704846853614478028658036326363165686126685707436405030857516530327543079993692683881004970409672829277529062396429702942497468681391261999200262217293881615272871782668081731551301903642708851475494609067981137931465080431614529145639813778017315707836687486435069953362062833734365902064642947075530075586559121990054582920915001316533117832283095808173623508264966636151731649063805307564933360388811510652509842553861037400132206440739284413639477326482169986455076065908882746245274468722373558099498641374947136827832421188293209658195171202914530682971607334474377456053217698745190996416429524294149721167211803844773090554326708600943536125699936249505185054933731521866521587316746340359459819734701645289065365594638956328943296439820480060200379051176101643914486342400560417799505106027703218481437128693611654290475616356161776748165435999727155279308437571386191262025271954816778775157358210699054810283187896096246631743795002859342774660611446709153949181936582936240968734691777823564110873761035009827227136008102130035657723972709209187557164840702389876747806047317661733025856095971547042368693062855131461502497632623541382676326411240420479104373827737676057415754560662047068075108073300772104894253553193575388478558389469787935908184170100783519579942710078494048424247270279792931312176948601632488320590182827589610150304560627345778941741803800324506480450133750186928034397574303067754253444072791886804749858119132567096336208007503831111245811705312834639930011378001423275226696848111926433474568306820986089881258796408010382317198298469962449062784954582098032586839418509514568425044223827069276327215640459056410706463492523094820301960148204181268838073618731001063943848081911542309250990426760222038843132013767341394322526929693953097862106229247991001254667552046453476276049817818811743436241796965458397445966685426630285841817517402112978291625297374432358821791158493133571903905432881374895202093214495209700718775658142418449242292857274062338955648824140128197994060443806846528283013853969284136296061119323603178292984760486870362021336104375624655281611826286849402411674219250662190466194762742915284962677368047710249960227638004735095457029682007636866482653876159272705229999749423317412257860662919194727539885989937351627873622353198846013063746338975258518507823103959445395527782337017013374776886998146017852206564663758629792418265784478529245696559365793223270643042392153804847516065005487522071351817123514767685961134110253221466974151399745254794726548485134762002638857283055032525750927784605740977883209440115847172278968904039664823853465133239659859755423207477328502626131691381686136461853329014186574476019966043663139512315550628249374079414981485730257477439367335639080485504514746108805091390261684921274840636885279431053904600225968888583781663745094030335301287238758126339127591966927732995141884457179595735406724651296545060805896541633676105168572669757546531530489084180098600747828128157414708735508591005984499319478966268786028717842817096468676129853706285399551759891891613262805379989565717977216238829095138670134840096800238236108897981540331215529626805734741160989015253043237313771326515184677673691637049801019964646355982301888048552682514663179930614398165889026782470633807122843784090593311126424699712859232337031095401188524011137906259234404582370026873076134103260790338448529760452310362127627576798980414162201853625488883909138098653563737815332684509599674551158158321495251755979214455389544231331298114308772466425447789572811994204048576715993710865927856918576550261839207220678107263829102899295219977456004897979531243438308600776099025269972149420692965295102148941446697374104427848810596933886461325488014752229371342521112516930399302542982597635582032710172177648987293680849919096753083686216667137608311636502022927546526280145339932017715817309805639387431800956026534511231040588039615893055237689440260963675199088194279932301631612832475499566094853513399450887723977272384885155238952474559496447269354908873384862692094374951674308661386158948630432168332670413971072517170330586982521353299852754758525994489548770361409580459718753953057188795877113538004444434736124319941474492751019524981011267717692969527451896230889775165840506053607936956564839776660585806174596070512417640474238465006653595966788688799021780003451654422904380222830639098676711704962542207950678933165367092420912676948382507253072200831496233464522057629965969426906691643584038218073104211702973931868931821977226801794639936588239985924235314743222361965174941651617729300604070553526876177235214686027030713651561289350194129580605406674294724632755193729015363996361314732105467881237387614973797578639709691468280028708794533678196279756310484258382563321639153841159889547298316961721588349029285448633158947961673476070394611694095838854940978780494403511716618671312006534715726918454948516474139079754493815349800475789627975959068649344002571339379877282492534757618524345901352284643275562744476574774485120746726713417173619464192537130133848349715034723009848065829720753327279361449423494282723060890707578534662221668606829043177176089323593868310870099295990632537703889434930483274511634938603872522689393033953700560480374584488530473789726373783302267965564123076941353783437768921986309577795960622086882406892257763544066193604995352539889505999186299642063470025003320226917071196431336094318428439623643057750963802722492924717538152256559523760517359674997592173206851062130715206074033584445759350337547072257346158885404881534229496248974376302288925029069281584743057142948864823771806171604626835849631319012880432265692005091915145174306638263572521375080611113657172506743635827895434512496237822989860610090821641087986611288105418537139757134375379962989374781081194337589819358223790297147336971284903133081946995966795792461137549531683556273346532900655604048170683344228151070257192347678118330544936303267598473576400457496160924677010588721829759457020375633807157478106940002483778888171699036924847005492477729880306118194771437246039283694109368802760594560749847939681222109824397461533763258944227259012041582641707011251735497232626929177991968437378475332737272507876147406821628398891179466406826220930895039966947182937860332731757780421776050278397478201722468339085068502245172268539295846858357779461378500122243136022445532445068001463054786008330533209630339593460664261902521988861583583761868967399934238946793280699266090722143315425929615274279195999142504681956498034859668836864162271566200269599823198120647683201336530940086958140706791641402869417426749875184953448364918826565687835621846816998712361397696351927901130915049504084062720341861146572793965928089067982709235289898908819255571446730287688773169547360513748028930971086202375426811572199912882407984954781224113686324922613609907490848593635942856961922631999799102751493702822038613752571652127761360944923175086470961273083111087311893844335688265556493983813296623853199576891150025748765409390632625228301064623838239253663746990693869271146393413235150340862655263947456915605181606281497663181032702265549028903226553691683999068620672751833770276115446289016808641301286440971224906938213727388178713973943144632804539353865854057385270530162673840064829941357074182938124596702059560983736453203275560941073475741394526651507056465897873290233207506471073136724878770295084317342414850375589268662480495981253093746159616568908802165214985426514456395069626420023438925742840635613349977709472577815987370561657878186374397576507643682512745192865793941449748137078387573050429431722365796236221726702388707901546566129055433210599614057570294306292559485239682902626347462298262779049206415947247879438686239923427130545365348722573877940463554368416946166208970301620389247266972427197343167767308260070193915163304742410702609067725201610752939388990917750858935025960468013968558093687492488118375195850663401817139963802075205946797355904818939538216379803643389350829298128274133525979727099464174234935607251642539813291986499601896353733807365620394852028302951324044709522874887307505341876517038642181454369750218689426286059247008199234514926642333492401882928648118734765049046637641857632616584675351375786392122742743644143040309620614138690373939392469502238027072233424592530115675158508732900666299339913496137132617491165495715341979507516501729975145436613938154734555542107050552525570604535120720531311697854687833249681772123767859317773832425907834778528191340960000696354727478546266451511885324757834264302458941927096731138102699640697668904950920539229659024079259676744079790761298421001579713706675997811269005232795565353854756097692115136285725701713546887791899739874212206973189755842940340272436435102855658591519376224543925685674139990236728718873403226093653620541613799378988942809675577650884211956444116811920509127713048935879881413402532420898169153969435006422573378744625237178447677855787190981494250537976474517724051594254468393240334734297539699897461745842906760675906381541685759878026992629466305615935800710052168592784351543265433313456781713074267548597144360399840105246737245453152711461508218933527807133843525585049686531164038004875494796748033517425179096002734567803781063402415312291473025175225271370401981832026678148251718875730044417076692974344566216363695436600062879336613392918671319261507408051768907842454281167220273684327575217819174714890344819000810337061242298066894890782572344338698128763903519704299543296414543068362062119010601236933495795700627638547129892264088806491133893027547285854300223306380676319350471916080051937646169856731047593714802087806686474586413538349508833667145473464656759330314698926118167014190396369965431749069004989827816039093980610537834205220817384020921452916902670428023488263184767394142605933267312787235922873494816422763110529321596358802865594539679462608736855600712792558683657604669503100539611026587659890047275475130969601840155562342545790215841208433477096071379335092862416541120748674687612291542680940028640943189174773847066461186330427869157540000979925890534924604985899423054153385932228698214327209299786854200188786149540556012535735075091384969443169000296639167679439041210801068328162321881833959073066137256312195957238160790139635045632549106251511960561013795020808250938383858945481134260792500651186273602641575120937067185840495691579936507059671702387102272426736672890394776189740718620491333818930329185974167555628763209835430149691401813373557776616826173437061641110298448068938845068783116252585873468844104588503641903214273311193150482402643739728666524232006026601908271578921532420966445748181559101118659679045359247216577373240692765789586258584082698669974076144641689901488970351961997475355811457734720402674049610733730645818409318513227459267613215879305686502677457537257734393756735454555996372831089529781973136010741088815190957723084364498490910350986376935240164397149941751283808321072697258345492051560086845292352905663583247343412217131710391846831044190489556108888098584118997498238900099772027271121157330613080523068619659412085746891510291156111148318711967539945751249288957675692955150660417294598342807337210710662938482935448909553127959726781259962568979181393827117880856732300366077380068243184791117260107850858064260302684763247717377081800203240027818864659034494755267393664221913494534112199848705398255957575960641941062723022095438250031226569440771038412798015209519588589070286234038070206150744662589921160994595975390111140802918759818744781354108716600099412159704922405897465782440266924415159382731579242690671170976582221819704374734122444806221538066844198824198666750251168496708004655046656741088746580199069745043526809199798809415351662357102860765108704682733134596378423306268090709657475580174701367001763092799591482328619367709471156512520902049589623975527057786313821106138715763765617271579603339999729490500334173113832362219550021793281425033620004906433806021619000025342307681308191677875005160207067862374236858733923836218835190375802050288168416566239508868712055153434294519592720021626114343690532514301016635889670377723693542144552468918790740278549302113081560245177508193240687894498178405144197536284609697644840845644762628255843017497974235139883869374570109105493452303522969340779251358323590778528457510789559310412577347989331446829014048528625827669576108376542736974763986762944854364386672619831911869940919962252976362237396560319931394228971430410500609179463045577538276917987287066872433661705764695277156292160671540177846646433782509269441445022855544817542618803258430313791724970030879441060093620935983916351770024142401824348916936046607821483807659292456684772326150668492583942523630099379743085369422491809075115190813976124385226546313644249899227898423913342684049583208376697057091391740225069224324741494809536871343905070640631610288417827822937033332916701305207962270833134114240465617462357067592494081399331163186496106844864637842367126994120979669719058702379977331121588362589850247220848704878364743547154592666352309139895210840270646428332386596370322155626369342038608751322203308801461954431042288665665282153129539758385136858969941639385098472016606544112224891319721890347594725147612647197755098779368340081711748941579003836531840275067283953711462308339606830185117264406308041992825584916446931704078968655046404659187373571499742986146970815947215928556671631712759372302315512773601458921439374013327659576442908400483955761775811106170130561393398422447362261530751754428857484266285903120626835243605671238258810599360030765181102229297169495759640068503220414134476663800531011995022611449031672095446291894723482573283539796484293879242703472066257594416048184965882121906357472260752312247778856159305434808769068803389128436216902788601596319990065296048168848303423915520926463438491955763768466282539888708871065849860612627423361027779937663145626964812986389712052650232100403342904122660424352641452317441103933660392340498537830856955144318256973997081138869850577488637691631629438608191146304870864682275183751972551046197495651801609727196215290845109644390313048989199602032774689774608262353297995541579223953408791428805351776273416892065976178111310950082756893111276568002885378675948094103450488210407995580180765878300723536251588233894288565205273590777171030707394245960927750784184878049978018841875486949404415142877332116531317994977905026363279141817864909142217461718102621917966529640281091163227015564361272444363179106442410232254605187195103997813314367178666085934616207626120605588449730201635680828281147607369614132387111516340338635421571237745538404554646455368452070663835739299788276293760106050641639372544683190338431833845799160331147078860959920835493837994493104221583194258795022084534246220488139169151069926372283178952741112159276642404357904237254350864159113059671367372295817591347506955403118726969084623866007592608253261150620507991130961710994490366154896013296498081014174259183286881438813481608571605357527551734173326161386172461026738105514389569715555354694566860368164087081221242026711525877182670714782402195144772150552497673114816794755802717853796232756892096753608990839335793099690628827382594596019388299905215493193072298564526621422536095618193815761223291019468439762240907642529628296259395646891370926120279074059064251258468780289814402358843910059843927084842278001351641893983392421696576057938177429607981901089220581727712609699230617217236671164239230660981538849385901843866895630752285915615308766814095692304821427226440885412521496980984888379700051263462603696683842810176390222662627569325815379530390358172366788591260229912150118871497771603687898448949168687108874717658272098535731066157648073531672708474423862501716090641740148427448397386288031582086706905266882809413329768687503200025847748260041075926523375364006940842831527542485509396123835314689197440507294472744777885928251891679739848199156751169314722539975954151185118412913273084813265304653097955493790088596313861782784726371426058695730000439201741392893982880277823201624329277025009317802599960593132526985183092119487356268792744363645550177251185522196767984824839031211722140304776513800318052292552555722152911834719432060912856565717203421399097783917910781827212278318549315783915133571149054755075681928579205050757193017313905889871453822167246644965758981954390460041428386077683435527629677818970884754773250986416941820355856663532155215374680085969647778669493321796887352266116510262698738989255071180771762923462235997603953170418091504007791528636449200641135887998590621459811239165719256608905381919532460043786783689085792495049260063057810493563556345543219063376587369757494305862704307792531117862993257424317003154689777292431019788761562761258077153907110376329957567419057734989532061618875692488733721060765402226267262128906359869766692814658847678195729134136566279323380146624823802868311006581076522547448042434698375928078989206279616720102857400430239707089554361815405249108240455964980656382807417893767603276218898784949716484951127827663377266710919672514708301830851042318605759939966540584501672552570386063538794639531960912320011013786224200555879456328444128958000709784252336531497977102641827008112901845476205651484676295192714477031519464224255026818510095441433113722561689735325087969001256767874663004107216862569404851369181013047715559318580875459544045784234902350577087391823874235238553884762218023220011716142369672671154243153409883810711364394841076858107276316149184505693351671621422737189518514078426743548536529787237970682584409130509941637090079458830165537492262918097339917103075567703800523232017902121660966037372744475919496874848974604328551546933300975328646114041187842913371023633824852535604154434974208233720910500245004203358096386049594453727594410964772325518714139863113516134881512678435249786662344149500291788629692141722309734166672632142181177664685796319499178123235792964459219057726252312746284802789075889985854068186951298297630531053635762077952742897731415008265610036500405620707401000517978672360109875750527681530055931973396682225050955394955290223613170448449651642729057664709920947861920149763205972428792426540748041471475116143871990489126675658808906828552461461361223506604590031218058182953540237694376214751816253146884659880597753069075227462129203417550585217680967927195833234638354919536035772865565340073575061022598949941925386800907486895558878337098490978351825017262783839950756225581217532177681170668915538740908774955179302012110369076625568575408639974755427028192803639179558645383531970772489735379720545683794517030573531121030370867960321519072362044989631169495093922488994366548722292907028348431811906052054735313539119825918256056607749733980208225293909931913093555877521032594150234557533182110171164211286307951749253291439793806823919916034235459201636613251595983032349961588797964569507894257023105693177323397916303725817286647475441277427908860105104193492988648709884309510033908725870740631130760524169399827357339505720232855051325602923203518264763233040118265774012035636357947263547594323618130857890597261061401596022257464632379103176701832223673698108351139273504868189749303071675540922318116314585342734491165942461280807238860025909274343497175569061926231243277456985026491804874964489458180001187931686134861048964865743719638240268065723062824111479895999922268305028398681486078745618812621737824625544026698552159820217008837296701772893192265439562707372301657902337352318797553454002963194424332864399619562953566023718746047149043444141426282040818055092873100365101404922480998321400337202332053614727887468862333852059637695522368764844060241866372457189839887191174292749101150007373215101689671433744525358528516561083512116308431880290444134644738506068116773409702361636763384733521774070348473140508266620986047610836026351401864696216478034648811455887159615033020110496623354911112476383210558854815058755877003499876356839089852890085081266469227950143887213078660505660664845921312893726735145895632727156288965090382717757804908473915936076588488884404766987437848660974218339871430811104003832064902397235571567276086516684660696318970904850129976258098256186121833572731258072355398589350487848843709942091492921321918484080516911696925645995724071975138733278520271651694738047478581180813759100133798065226352232136915090879684474459605283586551526165176187160950962101137735901425155938144792743074114582724346165958163206242692252054052982551784299366938551160378293985952979308654723440601190353180535318526419516907446189812583954511845801806231938932454492834382599889583503784480885799262868730468754824918734477496883433309168796866019889498973855864010301402324908853313565724216822303554288970547674613915536452495944328021340361683867659605811069417226325313538381610144793129795232595177712795644135990657781924093548889806465008233652590410661570283873794470792131653306020017738137940821199382795907780307962634484728233028449390673972711584197176801393242135371727239987838370852818680570959508264116627888042809529172074177333459563794210188798555904866363959143409850615498196003491675611247639279684144533802076413802446331560177083939446929001641835289514091343588231544022118044530036328508955467607859581320710868915877210038976703362190175386753556296542398416424486256617416117909837243204460182233697378477444487134935749401601972464198623767717634328961063247077631960543850692525729493891734788982125640902581781523027637997191007338972087319867247910425088491839523817305142642679013151395912186420034193200889442398939242609593946068276927343716623130105314254874328614136572835474409564620532212310502739301011460353806369315075772259555079589519878439513904968319392925250461220452570690888695481149115597063339013147614231179941870470084592446412687445437843315110346699280124138144054044520973339639935898226843268633485715838635327009648532028227361457242309599449-0.68400038943793212918274445999266112671099148265499943432263037713815305812497663815095983421272147867223796451609148860995867804988314557940873905191188799883519183662118270858837799181911957942513854361008447824625285978694213906207961130230534396425823258922029111833260915122103671247169010471326011087527649463858304381567543786948780468083128685419611662057442804617762323459229053136582595762128096540220160302445831485873524743391305055400807997746196835725402929712588664502011018708357030603143493964914020649326448135645453452198688875201195035381817763595772650993023895661354755794681448497632617794526659552462586998679271659049208654746533234375478909962633090080006358213908728990850502675954992893502920644263742578600503604809859830409299675314558901264547453361707037686708654522822306094043493521925288533329839027234223495287088330411664040942145276528460936494120534412256978163478250836864112676652870701995734089506193624664506575310191678125455700698981840928331714583716734597151697084911609607703063578838916538106605599270842847024731543038002768039085600802049978032410584141889020183572020629532415382916822796942734253441520784640814155687968986766443021927163624935478697371795500444154908567339210555669208107564738820422789697814839787546859217582943182703853125971775989779126507155489945624617011553879109152932039370312241134127950112036269188660519350584627066913492587827820904871731608862932135327410151930740159463599005810417547430064147577672795528747577211274733023919090010208573019799984438003502961409280275043125556599521620045097356160834695413280188646798489040137637492451450834808286836572309267149722428811283919059270586193413375708112207196796100632266165992094655463447384455084923126684735763619603618658677613508235551926399435432335855340874970417590296269937584675822180884630975727167996170041156917614279457235179934083835867238785064092068574980839610211088043858862898096210960564497941815320304088536820486232037922401786916408929546804773696647294645346050497533838613687281687940888036941361300820872655197423504623465638275574931525299152757456982298067032740056758966773931796515909324355966311917239611789657027781446736193022092856907158124613309089764013644517623899657078413117551550268904491722071864244199033932975312109856798156007173953099883327321149663538863850139469206652754568287704308114205702954220578339135785097113701872137378952010279282797040224960903729924449564383217019522293442122558083204037679738642445320577848977287524256968144287999797437844184642347562096244658894248933475194785307547265860010438522813703638767590220948846202554707796819458689103074501770335918986534430260617846420739703293012732482796699253375454327779742539659488766007286183162913750263438812661274936208683053811441486020378826153557820156438817422921696852511002573140030360849300310062222133784468545513908061552716116948829069180123539251497542997093933466600210069851139576711541382055865276222614381015434847888315672181139689778856542397455980472551051617253918142037424847377940505693372626456605729203747745602063013467594771275133467385512897960206146190276562358697374509510942891475833132326898543689200288201153283823961487207074569127787543337610244361446341893012750960856485029157227946745253560495285722994253206534781235182186676096735604416436631561090999734586380424523313417343559866998326912967509644861915279300181083908059686372177765339770519713177859952997390714739199089389181064559644288939323779311368866022256463780421556509024962981844541590569617803915806390643341454417276493865691116461992936698042225210746002020696234821859425324259203734372869324535617885323536789089380087533345116077896149676524689109179373947259854565440891957304586270389565093102492787252020411499503718246438933671990211637684510087890690548055481714519922042523730008315675511316966105092466501991850451838812656776519800243315244363960256967576985807271113068953019419867754047590774474044313736822536222246018414975107885623165246115169182342970403056512509476682108712155753525486394586233044937472138746754302650809315263710508066435910266031473274056055464829219879842190313725005042054163695264662173665611635215739341343124566647437679535761842809030391774967645735367659836511651787754277962726195787307787129934436056930914168237091272332417339914383754258867023742645576995447102920790606749461854181937869770566276270270788029490287735604259753270241579342711794105139656664297148199729115574047217795683829197879310304011132631798322812549281200614891069399350415133287800475586233335544324670955649050224840141572400454856876680030581305186983662563187167726057568943419127005249585485898195098893697161892635967559497483864030042026978892579975828412709651394016254407286472829248029913821415718617922657936965351460132268347924056720560755869056803115977172403160738516860873806226804289120716725002484153649734966568864584920493805069823450385918485323892930688895929127784199419320254254659895648314268781576346275943964747674917700959835975201168046288562237818390958043776760535649365442238846681221968486716825092217404018293721350395979700975595294021351862604209034624819798330357322153900013451229764394683404706374573545977593025527104508577613280762528476965518320012027419095436307792618995689574254022438989854596530128528326630549600975267347205809398562866531869862144551125466082094134856285837695148121579544596396029410308420466288068764866740655402689574607986012527442314004003761454366689141447834864404888378146098897876156530315305101351620101683076924925886561059251069667391736164017059616078900911849504871742848332731353062492274954313931545108387842086416515388480523473511920146677016371887173871154680299400994616282901104223737984374775774021766836388067783958050224690640846845097589966944529508769963558124645914666863454376741967353040129487008925216102514018124957638067387761339976786716390576038235394505089811675675779113913998383014733101942530466129894336086406034193027608586855091575294700018449114269971719064858509439274952166592574903302221560383266269579161208001214399080005736751393231043335132512177346087184507355675717261545878967972416390778443841578420930683422502750085139064048118194145258909943655554683396356558528958604371303549436589119517352480449265663710633040829758330103276899974541318489061832923766375457830872278785658018930585640566366703252579026351095600161664769093203613048888339496538678633876782946033281660177850617246066195768258408085990722400222483045394144500692012107022613087261565696785135542068765144756388877562826424483857946123439624309087989348935711485795093770789372212869783221932133486385000128611952696272071982017762223663034026726799582508769912995658341455146132324980950766811581182691724647704707271738848323862184700824891598224646472212060529999321396756288661227336198846440711254889513716621332868572498052249349495231645762759247158037077764650411983292229432666532415860247045934272976484084385922977052935408619818340534144704021607496986219036883984368410296008769654021212963043599298076294012243012711099279578304990762776498564607974631367222375120547188016891052586054939966155221047888169849316532118718406421805975975862565806179288637589876021630597919564272590803682250541112049503127583382717741908759648050882321927775538095759903317216570245567350803139788930005582921036412523654503980053235063447321334053696114816435198403243584811910103231448771825632489624066859847856139017965795587109424550233092657115317118691737220189725791281202616578442346654176085490768219328010206147263516835515970854196539627025580956986422425733890222732209010065065596271923375220180033171151179494599035086909247254862410744445137612899765081570740383852690513620230919982422821440208354245599143423387545916395305996617515339954306663651023241430794452180457525797276153084772794580139552619306124873062360502642430940374473048861462115115778521071854830105088299950775086238615505019071858630491086520022940759216391059244867755488493240021662640001960280264374856409212437675445764148295479544425212099440019941507651472297539338361454196015764723603620047493269826582194090441953980067870696357150972389685595022979664165380599724153747697224961537612164520547920903987202496146878871619560983255532325909146130315041484141021712946349917778985131804113256409133659561995681817958276165619973448148323238925304207736085819678881778781901898567796014916990978850793094271730000792275482491576816654256149915980101094593635063036125592396743475659095113317100257702272307194029700431803465328506845412364271164166316570023776046018638824148914163738585313419908960544281524238461795488266332349960681744907712354255745935544251397252871453722288341452963558630938242078471644604523205712438018028690628884500719137765260904615262664033311337836971955200993048822774453461808631956372605283404790460558284173870306291155167356318466415665348818391394336429446804877824238524180412118216959319250482540632005920627685105713455744641301833648927933845933055913005951197051514490314113695811626227692935455638403993818575588841827665698749050256542601025758608801804619742210646849461703724925844292061818089070530235688293844398477015030972162834623841669026493524873066312819368109148116525503310162218801867430799571384006227168986035047932075050390946863722794257664881101253363524030734033399229015925982033819540272930221590391001598205539013247689859476811129230965404432426010807814339758062051706202321512710169031397914991171083922347957303319863156958901638865425435473841979126937526168879811420007343972264993924177498963275771849160117339080370834899997657894072534437445555711966618712449149130657504271759522736242934571366029401731589310017559919790392975536350947161300582315252646419879549723666693344688338271785706017942201319163026747434439962589823202584497358042795579931629864071729423138089652538989308770416016912549893412711640429075192050502099862334392576992938307659290313649210061908809853092697511787589297347414360242182229559217606268966896064081030580895039126995376150565706561977381819459300539557626184838135137102947050292460531551750023065048394801752252416764688179767953504340548212798175428800561484885531637356998567388172180749972625834323043718554605395478638446577541829713969595565770305456992387968857040621055838127410428792006422584034095839346489716875535802560573505944684449777908524273361721125391669071143675119499789181872267016571000952536995345487812056541610216402000559605355047994993834546317079535604779975007274794173774287554217706691994038047451620790066242233852221274539780403924242022034010501281968607547357584552042031385542795412898333876178236810905258407797061173356957839228039314127847252484048976408245661144000046884496543358402941334834372722859152408562871637788078072483200329696777207537560685808091704129853607835842658996324486137315689518535185788723531407028843616406238607894898853808331349302087241754631429890428199272593780088447773418775471345996040827125492954293265470182076020759112653707988190253535589970338549045931971245485519795917401560479559490535014110852542237949366875682088594415446148495530048650420362720299158127681845862348228347435961639782007477815426127184399111664740083970728167009820917861709483691590820928906581304048797100440978853654188346103002944070952839727126656485269522054350020572908207113594985826751349904290048009290773425435234465068665476147122704801079083270251822706609399883156440036381762707216942088069034772099897808854580792832793786152671016657485667342014016114200282972473575492472329420713998736905642377821301032615914082125278260841007646322429330553173042956720192450171528112689824023823682329880708055019054251531362564753685080910678309972279804744766091073016101638243596427179115673847309673877011987510930928620037843390178644169448525538142916343593497758606518491777480546946099370118632012423846851083885906011891142972093356135730401997269297731940645900294970180488196468583442083108842423077326571451764485521989162994384722368839440935059231696133716334551116929104369395279930502948179522368239565677768269173814775456807390266129860302348636367388516903061668657892296159720044501793687123445213889393969084863225547805443713689652151530431403328468858376300355053668291466111977588920508605485283165034252939895232884887415783373271228455694831407841748241244626104271710174813189453841215342872253252279042448817562799945273543023830648069821839061834978386207649912637430365551975396755628124215464226140473932160112713550465886546740247840188683714597414964081983017384847101444633973979591712007308188491947358621198556494813264840888245660430024512587247523688974760576197499446085718128636146842296967793125921806142563456422510441071791037058917914020978619264500281684791391104029994377330678766939348982757681555905971705493270161358382609198989356552601823208375963319890970913858767335342480283844587678214697092267540050949366382683713967125651735162876066413368111092116533612132200812508437652120518555088556438910872936900810080331760218651278543557272598383025518172092931770532597229176893182526116991948394189976348667457470788140924683793004224711368634368775845278260897898322369219038023261910552683250917501986547561192495963457638826313582549366155721299539116389295811687397885364395863755641547362118956028809158365798936942565182911991604077819949920086225369495912932459180350113627798959935883981999994146094914238412575768230304588478946902069111841330233154088315530838463812512860995445409328353740574232786656280274767120511966627084454175658888954501613334748402304004489997932327079746682456917500811433095756683231888787428382709765986411084064682515097018622705308563258129387785887748535304243102361202066772984837679784355923442445747077311483156700993171499638158315659802966144866907361669270240529348405463112986739753895966729360890487222149358730616906615839581764356346022021313839442870002590600906825274068053583925891586250781011353557484964519167905153067271730240367278161926757244904852668962077295657208177452538825524357957040407513699990585417627180176361197028810824145441537139385512971021146959217956552896134767888299698806724046414369466440022829300509839204931824252950875585382569866466085779143495139194810369598168337466639638377817298757322217091447564278843790510036975609037012610265452149639107705040117198744191873705395484495664369272378805543146492599182640838754303930708891940115654145235294305559557076636855685105446468943906905327062519466576075984882499641199784517097622310707998950878362523039284056253977914860917265849042874806034843410730271939578231027511401795926175024252572801575828536640215939463647381202972992406475368538198131568545924786860356133024032943581091209921687687674788279690061567679926154384714331766041172755992617370700664539218094623649162640667642580810420603682589095478204126519338794923482888246145352773934358799317820790053622018674517142827538023434779548069173224382620623822352139908317273194369836454850302143908749054756074441845252543836818586709516131109739525717947552589623918885413304734615716763008338354725241421548049609097739079828646448495487275405162812176239922031417780403984598991608424185752479831720967199688732097525937442601148616769042669503122197939399423103725985444207080242221013650558665348070905984823559685839387517976372606815035252693787975019987292341831120554643567633262472509556753291433160158054124131498088312574054116357632405679035930623095052169427535500077313379699557009329153258144205555172295292969909751917504978721979378596996381881525443279070727954123293938979524173232310099589502994580648754309087038599266572927605639567828244359384994548921205264609605061873628397181176783935857052330917431453164507179046658023779784994734716618549097565694610485249808971272880606345146428998928869673856551174355523082194926426236018901226322669317940396678183497147551276431294319899815986606691448933511700282716021227390293267821170959365639304635871490279175612710109333712502844325768700186251861314571277999910323361748919947790127593093363798864062033584601055322131830579705057005298003432132771673779274354277860825998105544506364839238796910289203987881442922946050446771926745737080343045250576961008679831737689550094990821840624990910137146778990465244880162267714291153197413402525757416052727301301289235687916448461672857915958452482615989809489602922789205213833495333657830802749269076781935241837287649083372941157643648264400847376742658610041011208674873323442207435434415196821424881413916741066750148606546803940856607536815182354098641686323496066259199678759202241607584200537049080185005284395166208189170747182751203858583647223434665423744778473582456403801016328493328254900878239266184855476880753577546262684052169467485241473571976213937235582834731359144755262618438634704816319271735733744430803374993125190462531544181910761084789637589792516056019231857293220202910846954815907242950746772936234324940423471638773805428242292218516680937690394258767917626228771599086034837888314430893153315263063519473454256189686946438210719937124802988084862810968516687020748755138718022326597511915778917939603625221573088791630167885766443744883156676567170790239677076118896557256756276550527650584980416768532087214801372706180678031918852258026397598735014895847966701793112077415671786682357092884393708124086868182686552211271527171250040628907827129098698270234298104173965130211770424050798124757336057382905100921012499363907578545895851339124370966321080584066281212855770102829584994513247087821534400557938626001646692825572080327561866295400451088159952743461039371705661569398612529598748026208549031088823280408135382824460334061727141967200455989361590796472463028532438626236606842906170066191086204545378907634627484882981100197070259176295568824671661461168098450020181383708421543618074277179690618096075422805779387883392754971250759204063036256772227789901546112677513154173238739854300598110382466811499067911416574694022810059254914620553930607698624201966743457228305490649493266353817074868141598653963002353040560150957150572539081704674746025387369824503831785091107376744193170255951454436638687486023685960564588438180259964521713579925296777870737152495385917686801672473793271279774355442963637269424387810215275652967820470946746574694189608617563916738045278626138280944571061904446529590491691048723787628976824612636825121213367589994008395044593731196717754144446563714443349298294935703190459674438572180210344698474907697739079858670003515490409233982656702031665839283203137648661787009657668296858948768489905436332882696341903855899726471187131820980447158022617502567454463406731370430978058873233346200649519895604798016800867127164067601643150322699145537282864096617177382848594694485146964134136327650915694473400535835482754391884061707423155370899905295182993571075345027941786556144823629411958117430827002392560814200556539883157386326826118923252859063596824548884055253836728509078756114448851425271060982306121848927753404533476678384438596245276173614604217533187616122403677337937679352763051639456248695894752596309861872231669340869347874651177333348164002440737649189192696450237160057470212755185976230492936887056300657526646790998944611230107039890158512636316291371835346320071267937077551759982384083028771230344612247255553176244634042191252366787719319395949530128301742356474846182971809821489443791225938724645756879228479125093322382423243363656586127727937204585584191690712365930824773367522991385596633167457310323756675554677932401172358644467926001420643727606715201079288265736829548838789240180389479876766119717359420412780515783356208588246859461785400035340863381522812565324184043075104016721269491679967271302639499275598312524522581103329848761919259386798723181673047427393622274022527373281548229585971526692395116743777692464580666275146139724110960563796798279891225307741743177755268898070176092287976197835858936591222660546258053622981255583493196929144874128141546679921339896901472463295523002365717976255275723825422825294265071616011761558252000760223334574113973030507799061809601249193248059015542164325994139744731636792478427098017348991353000425036146637275788152230729250406582156019601440809833833232230288418814352829135539316082529963194144490976433087653218790461356418083464727418202737394963130008297562886047417607574858066325682001445999206575318040193673675859862396981027141660476717743764739556503823698208443678419362951508600152608021042719745484266706199988377802691105963077328213374452892822985016211663032257542460454011331545311304022181074043874504354273488438143504835088563728254425827332474189726719963296046940535186844896788190426412184641236768891248820025352574558137661571255803355097949946557368249909073374705168487368314628084147807163151304121742373381182547460573438187335409130791592718217049856511710180284971619280600592106623174713255914924752662819883862636362973404859420890275218516695767780058707375321110216448117914698498552988269551687640189482226770271245617581123381947023966391951836799427320605300210039139005137617524440164819524948530688973742580742130807167353323187419086869555788763513382406425366509127332038868806216510425485943826933763300533283884496896410234226909975462239708866840804447017159168451498046321048135090661401558044940218310324643797477960158417947386205532775564140847206164507957954331572127632275335673727458900171405509280647053430386474851001651364649059049010613055348142374762877388931122087886240930305926531224277741050653374706852208671123351768885910620173769944242211850117782286586719609617779482313616992130694835414223733399838282497749934151459700140412164982288399883636888910988799743353784440395246459852172032852011005888185353947060555894349089185774573741512544419019920623918605196812030482107813114431202306690377849540397318373624053070577397115371980643588798895469794543495248760444042812513141010491229704515308552751356244515147071336486667073895265023279715798326929800795532411652077636793408042686852766631120074024585476503195709357620326642141276923285173069878145697690796602210461635074132036461882738005461501948286611884688283533859658214780271105713492849931678764294837035527708746398751827473788912613484009507134446814627677050658432110091995324017604840294868507437176072915856256199136326891665941813914754184366203077415611104381953691298315670632964052769987616695873843291437681830428884731067603306234209023931642155524464020247100191259989378343725469670824190885710400560556416952123648801687850918287558843622780017382079955357446749243640004531094721049805951388248181729553386434226752723359621992857525822492549487806912677397734428064573292321110734040202866542080196969106592888549255029963601632816317458832980763694155923652761495360593675118269517540648310867599362800204826494259582937933149190773397505321362438961370013769282498500146432679802045212063951764038980984179587633729510290000410012470389484757923799597933578106654382903136653994811326752779463019221559592643141392860505830051472045115246303186011983552851182170353524855899855242578100098777023224809533621444113713405246496296127375009223716948502023634234602202318801887916317825401289245099398817272277015308019841232665879002527574246840397940158844134076126771342694453840162296279719223388919143176596990144067526960773972226654417262005771547089147683448950944296011238159113810284278487843266375137927365691032929998632728498967278212697867680649488540380558770164773287446354886649006129682234011323706575610569152033199813432273590130393168782708986970666214794522644676543505139763588836270945302552053962972635073517389849095154740096393024096102647270674041675919519019400239516983764321642617098186333404688662678406465220998879115015595721251115373233702376838573643374339677890512190330845911174294896597315321073394602957015892164595670748069400009103413652111142280707925432952113779922405358511537116019846384966491826278434538585009192842948524817932015637117431643685224853318187709284623744336950291502702897854432643155096242786467403080089893218315142112272207117603922914513648310424308264847923490061512938685772631092708211607211449464171874498612570737900741846672852159748233697006737864437990865207469582306269112557263897700071154861394136747052125225118623525284957583818433564031435461035660690756213251072539732938507504524785139333975610142579683096880985868205519231239826124356643647604942429998578994844641537124993176461790167137891203785150017086208043141629472257701177656794637116414560686177557030207775940951317238167506281790722184544101272255394226959545573292499716616626818811828257000987037961101794018160525467876885524405048321057275636264546832623912745873631862657139925864585069607926313397524018616945946746141754834767339343274444976993906564908511206798234951787208770920618318837699284369890276235471476291051064682359850761360608156380475796824410100176213591181233368062327837376231237840618216307036240096788647963004610264701270147347458763004897940229432545484675331584097647706921691345532070625466524143549763007906209776119915867676231734140047032070984175025822461593168877205078352690205263660651233622928307639317127310119970490292425007249325280987822681182054687939246454413131792934172087874111514660935034013858182571153423481805245850385331554300030393344622537896852843469650556083002953088860492416727864934993270338519514649947133741376231978013114904957423604176239578092871520851897863470305646094460329411928506694218154803418495727721891934571875517233903599842713925698855336027487299480654066547535187812720825417014531492092676658377177641796189815051923923202437973810770320274663566907647460604797139267424566610249255123241494861730793591997095170942227655296245674498981521029430566698123822263974194678733139321802298369071592547020129460121347505182465140417771461756366017769450912449600278507465137219456332652568527869035304865319360192314145101113930305675435729910580424862497444070258039931479469548177669891759799039225523859324000937980179290404596590204917303577936010764363363458038436656481801254998292964397989351814650857020059537983125942196734362267690027528976341016627884778388088762113795003612461160774877602240337119425325778150313990001507448773435810777439524095668581561751065818926288650352138112381139977016197182603125550324471569948663130816435823531049561554321697515956575729917348457437438121099420398202266599967170866185797952264322470463117684307607914473335596457383791036362535510816808069865393426183125961211604097725263684772576826048050683752306966049765721795999971785059285031577208052552379958000145385617258029399345758298203574611891962221625137928096247448393119168399527472337426640271046688559051800029659392254428419268968179154690170281418417371741334302056714946124907991632863833839014757847591466134916115339150378721941490206035303528996954688828173528348889737894723274950067611871270577632678943395574244793026160777984447982832453364611046761666044054927367344411226731908326179846785970920901234008679004774441749628992616567649145257965678959407364071717236447882781353149395155465930938176755850883670954708330449655064020509035741511024077584780284190459686901015512265094876667757924675069607781499428081302979534880883181139503043005804901734490433503980534205157925138116450869248242338770037130324351340387438250410232855535251152285095451989075020127187129300088783942231430732980542738849017224042279346102185236096629759097367536395369524149879805517363835884454195492944623597833415736498087739582728827311421312511482690225908548269627345115413841108774730463301697952491072679883938758492488353642304773360158196314243480922833348539581804322227424670728037376739480625573870613197897214354086659925325681169964936502361088407318939451083005527802476807817658769455056243911762376016581099110057770369207523506599209003448220128437483899159883942825459927430579364856539182837602616145294674662871451481808595860846004450600205535361443706213197929461342144928901783027568529061911126185397003226914228508911574919039849234589998913132881114372932177478005578323441721196884409806502169039188143816399922965591671877316170692478332001556726845538178010090635347090317134064350595923041722705868459655690823415029661102790150923666948446651220870506195158110990896184275487621282176145249267640612964830214937325097886137126807737413821132459397686874880088004092623025972567096634369293668011438763880256209290078778424538371891363296666776919869160255409725941174929915327675587450972834848599526026944226428100910524953358063011827246922604408570051287415807818410815704824903198575854049822955103512219903557031892516263464023175361333604114083435656889939544058959178002938632099718739752879712140348441276027345427774239226481308696781225889364651347803442193490090207486593927967865282501495795852618358920432444743413129571823514616042719056721257348588816421097323621274160167480417749601338085073150635663604933840197125301232261382600778068738525555541656070948438600507526903119728619357003838197243643662618422511404534735553551801079134053941788006025102643781153352666689382634037869730972585862036587165807585956544044466881653510620075443645005102514144235341328299854952641130836513917707304448155577166497506435451711145977117948313004173881455416162413290981083675631345649816902354397481153429572843742218055954260109027826068120246173537325346299016021826886170992781036288571880234877067949743815537456699786840020092031454294431629546800799228390919725050314950034963330787273505442223564951343877027501262773611055876058258580246497515423174172212096901004585577871533002149753568629283749165387890895004205519504857273163809535773199416903847437863551022490359128837183120597933866790115014232423193800521231756096127555408160064586275062196143254293679639183396820739680679367609496810106133593929684097941813909380367639955114152910526698931789991141418409082201167057217271050731005943337901215485827678265516905008849952135056269978947686931041258985041551084122863639626097410819979289768561907033280527370140106087764842413363244567465915285922754051247652854371839734315972926988598338603402153523104418214483692023946185077454669885517915217671646979195665022415346953886187157039989581933542136239400611597457131902112716538458824458751884701049113086550602084954259741234706984779145443855779686527316126226646348785572582595900303707879739669562884604889253877710643362968580064518981000890845554601079640556848011936602048832245163858218868488537038804661808649406797552033877446931234566591729262612142712222441700207766295955542074694849488663567017673441926121537718090699624588658741179632460964531695068292855576260649871921774085323174008645387850071376784768422669577699938280353988743113834415823940066455330339474374763349697689365706337406582458026587229029684808121202635620963441742217662577799841120824850187862990456659023117355125135166188788588414838424208904190384334849292637961634604134978989435477657050899079515770751604935622325984133852616894447909583453630913250723629321176443913921715153058068292610361428497196999901285267672936891952322783490377154487959550394276948434839198021589533247416801239618044697216136877631331352038256232333556271587229723885117803173430257543031408818851737357936419673726898003742723201475548024486770188213003805514060244773169476789879787595389748007013371804840876123558815346399041370335203865290173210646021260099902364572564601857653486815252380745529414224850517205465012438411486487459786073751863321714758967716202498467581450565811365651680620280870761336246508843628136114217372662504865014853970281147514344729760461257521669183786626455624613468909196741724550057016442901164696298811746146269072844806793933884579912252352606484522027333322551959105611247813593427661328449910665168290004497595661061998080883693531890698235298591326518374781585850063527240120479207519608772414588327689223266211298831622442207190322294039460308038926504230100974870210276675719058076697501565871848368931049142804462353635195004628408364250254589641408331469275533628163705729265634474226837641440945384963311086228668947754326674003951271588141084689796094270093964338356173435724927571418423872119504767364190809258322221206656626012120046408866518796861965132203178830037792005600136480035908978061662771244309981270538544607589703208418307752838119548311852331344488035525355992378198271924569847826209148615293684336374917352400707409399106141702006164014171195074035342868446707335377975458081375944792940521682196567716619579548669463480012243349445123436879696665829905753002019499974433432033944164108010070159992588741378206229211607367837867544312865000454576206698425478630805693671355852629137657424033478028301805278099684541797350250307424776329504495719156902671977523652921028838226653317904448351665506433344872394316700565741892194859393866551553819986744112950102057596156319537730356193082599368846873328972938799275635802259070593147811214831965242776694286030113359156888853135393230400513833346789998521030343222973053545703311100760944932076257983488840904626817452056681148572001629420883923833450062062348108875918934884770012648337934490587508618570625665890527165454164279803863083179753785275112137383312533387128218160712558994201944643059979680605579554031012655219531484395852808508882799351084154085200705306558489325815096246659974454233815866717997973107984301091705031037455508207920701526953912570714054182255682161509449305673327607537666547875925835028265765693118065455903680218994803525712111570563436218292203730463703418550183181202931273495795677523680092292658170193083005929944359828013295184622712750346928377698445069551169891701600002169976783324650030245556432312374835740691935822763377509502668337903163268176046536119506801854069114443007946114630506451500916205145112306418207348132416866531138866187720242665012101044338124845894503101079076485665964868130709076578617592194950615109451050886437721449027591297732389111803602177714281484247161982117906318259729923918182381238724172249783555309119553558317249750114025366676482740022280458220331822008541384523688377840203657328179413153954386613928989885016737503790709214365620500371182240834945872173582008336806240763392086428868171830707203798675610384206545819520768673517162671413345222462062496613785051596667288004292208477587593486436185466962129312724448871756962216406743591224586915869837804819900452003417091496903359573885258191590631635579796207168295468471781297506102739443278536319147783306591433644587094341125928731245754702707742369079372787899006042552454829426843383765235464062203620687240924482435792774654384611116305300570627867176603731208900781282346849561243166562220418388359213959840017452368176524725809749511718598629557187903536367221478911372434254024092912205441588275593249137827595089482708941071587324977448460880152889609718565033693725889230711478633572879446944799055605388202784636302847690334034370389454402545832029102137431564986229952278631559703992379783358494895697994773284410713101282980462492921799954723278351703312258033183541423774611336151288516234601588130666003167973356909640669227943177518281487562176875970910512089091951947477825154099398810150324437808205039078812236844836023096739364543913708361323491470347539298964751643727795846155764928981589377586821265401639818328056595216422171837903667865682431846196690487522519754545010425490987006685959499362629218900548938150109643911335945778986528469497059206968123539812085544778314545766682298794454829244317080659617624782942635565671952294425004345790951531946411048788846820084520909880732833383592995331909720335614605777417094420615964765284893166293567084435173952977813441854882489671614293231542517599215933361584491354476313118794098412066460463061164454925630091768989741792770128030713332596916159725453626883317155943735814846163003439845661225200985620717588416484083766786406008386217956766655473026098239944146158085259401029900555760761708250344986117660441605229036153309364179191345350427540445277171152198332777274645871981578762673941300353956215577760531831553662674636894694760256798799692624523785352995480228714918392001517669198217004431123772103760622901921232419508143120019145119306902581984670903314790318172024750398859412333746021963570149965990366800782043297362007166766340962031801793332143700309009060517422788355199140687144191281711799829107990588277611216173514186530379022644292426087680076027075374099746494029857019288074874050130837813067358951714326395104179266369786927856414775151642765368673394954131389940532299346541756553127762171817518833479310260650422323946639648763429869624884940282449128789704129836611293557865410282475770930260253573461696588671488592186950621306226095189496597163207950292735366372236477800466687564655632082014052379165969695851083816927127903135101541572483924063900992766260672124849485023811967834702941453879992178514672130201413759264205183893642726859332480499482990686556832696080483557972860994801007094158243005626343716689143574378690557680872490213322975692379586021360187983666626981696999660640562349134997813360592791684173265213708163725164601558873363009612347332847266653169385352084643586568950608875725697143505795444822106995126144343437212844471278415740193647347437670690908578807167771013421021666790982192260149248258373169356670761070283536518841436593171368323291484643794002797361848902010174262498054628379420295315372326715197914901624245154538215920401310853771731130501751756583659063217959056756681010782254003218984177532644434733740067858008853055301035784212736576295514478437369704633205073345892867664980815833240990073212540584619998093306487471483774298163143247660393722371624416132553176320348668457998976925526032750063582055131445581588100429143240123616566804911644755818883774584145689672540149476810104323238572708690813536425956342608885663141463986667052860736071849643016136434836017269073470902634518074959747707758046510412496546380005891182464907967760005693657083940745810359175495602236889760314713391598108489289306714439325673405748132631496377321772417249034792614348388466692807357800061705869344556126893505475159537904387228263029956126084624294461853016323428985739390369801586648512857843242731068543970204179261056323535646723864769256606987019626154414015044257974190479622176556000465930324601142731466835355346516773307406836005941653866395153495866079470357103367339524514226295844920643486443923982067351351786237236059571858835096367338958001168466686863520562162299932478382004546831901369946318342785488977489010319104410671283391998989866308821119469648459905782689618002917570050089760499860638818620911048431480341071029490367705492964636632304525369708383185823449555355476018785413482059917052603113560295605286805809114147807059886608676136860761671228673033927546841419320165229699819805762780425810093489536444467072682013141130578413013381837218699307507325380948228444857266901748045607047310425070390093232572262177049929081428322691395583726621044089173905169548036635710176193068975168011271624245327739808111290551623289118601126156060653621483554619581257609832908168972929100803541997290064266970627555993008311701100247255483408430011243136341134846428520597215667054187281874943894778682167219973092596276848526055032103625091991965167991893184386261000408981554461965422525191825050493692335134673435667270459735871820458168063657404398098808344583188113099165475311623892201283817314806733803758049497734048063259919181704515868810578226248608787878586771454743872697395119233969906498780519306849284858120489541103776796961448746700719934502598635323282737043123081377126529916659884591085902760529552423908658923188411481243864369687206424507133523751351313379395847998645871734777709573009283584282322652018815499041404699744116012933570549410868478677592435145786578135412798257112978796679699378298801789952211072657911197251283418503892308581945213054086230760112119116489147072299773786285941647575851902581906559172851628188301428973444332911724495193337223668426732015191223381324834764487178908294999060305820025111252193009883911372124779717544921909377698027781890473984926023584799027649241447372992054850928315292663198790998583442224308822444730749387317818900203102246579062761791372140368644246084567457005498302121430731314796190163462452521628515208972007341463535933755411928172430751446078187748975161213575061560901942573624592570452324586664902684387936283911644999385381564546198939030546356027010481825956988165536786811260259644708112238162663612688224528862447256687047129354504245326210181518874707998928308270775603284528234859663241661308081509824529467422754551102753470039790209599615488687696557118166166560743387277094557459156315676005409091796964244762467377402640570057861619761980290915847756087350200306193788039163260828454165911786845862205440472876182786199962992731756267806013663283097781754390572201806520619204762937086152013500666183565696376008196129189082207347524534522648451827224467991361098513528012413301221289951936542891964098935417153640206467841688189845755434405752631817257213821648907970636809914838834216864915532408400598311345719576084412955939950708697973587796621261753295948330383182411966931428211152610864294762308603477956338251847145312614230897409664166151774409630728518922148565723782673181932443961358038308990494279507354209790078973539769600259153376704193967306545734291443067575184785549621421225824715118692136388025053186923314608349788804902638109351285783430765539869736210317327025447021803722338366036524332704052111355663711918736648823364713359558516247602832672402737100555857517832406964085781965302909023698258039649615367527997331913669435076025175445612649880367044170327226520919923596076321547309509262302485268379377066015706695254798089576778029437677398736067417830952935497658215139124479101279818311888761934080485157062348535593369457562924778681913809867958744757786375768838455664270584575202332339256321987898945690071817953031879080127010902005265009442228006956038567368957045604484967368374700539322530077153995519134296606818545934012458940677493872142561545584129438217264232867173172298522377063397990640252861376914902614786547594009283723264799638687523239528467003836118367852471174903295629543281542594326652437177365617320784897375126825309355378216692727131288297356592075762675605787782300623045980813145255951722015270523307413904265230266469743302681260279211792645778130223311839919272922159673343354481468131995114975940537141433210758653654966341342816269450372326132789962218060695788213671098424696610713870390971738247872032545891739913708199321587850938343117010443003803761379085037695045073398404586458986803805554849372986272392991438799719962155378607303095492450962270472471940922615688417977959710305646495353716119342952158286150044920038690272040139375670357364713050088282187547067030538865735434020771234457091883578255545409811912294234144651990237458438079258853295144356081088044350409862873829497710022185381704159666050479756839359538891004069709619823665694850652267080265784193089405079507381666170321681758430908785537698597711733123094837138735430963546773524510621042991053685331545503965436218249401506932150763671823321849336055077892676368897995929249728456288584757570509619402831952508633293978308484901943885532317119400028468088977587977439696895787068320415840804898335389784983933328918080507436387747205746178257783945224646249626944755636605756236314689193219741297598354317241417304519395529321095408019415123338712667094087820116461198149647872654739833419934493357425190089352099938467183800246989574146028050283921970311195490404412830366803634163844108973770373612188406083750559114014534107104237891530730878385362745376488679271513954441808319512451615547608670469937377820698746915467938108485036825866852693550921299426024408294984888022552132859517345990674502713960397656288706197992145654170387153496322182419644411006541962980762474392824300289285473228791955956686561940473218622086289567050290568604013779151517149049685603597651475825024503349017946437716005625948190303635354654782722618553638861714897628887663190596017501423560697775341189705335844174549574991341050629968544498746136689387280475854172555807061495427098614030247630824284735826404105557202503299376726856876300660338929019997824853448485720898695938683772518801428897793770544076124107194919814416486750895753288081306292084132925754182297495452000587415955278908314320163914190856426966512960745016755589148327784294396627438055765169819266725460229743101346857307760223227847088536199588865467397047258362749470006313207116494628703933927119197286741962493683977266893372554688201949279593733593648241493175701051942439719133583119788173631653953849744156947777677915810552911800149708687391173272500488809797566447572342104767768053209740750085413599473505482057330588461379036718470973057796807245143693687983260547820164508147276713031028210275278061274782245762969555652136399983178619117425442700684070669473043462001801493196954201664326157493350827322909827085733216823851785362839249387968080081540045855950051694699725653712872932515847301248149923170882565575473638722377068132587780531522032625395729063175713919750449623355175478150314968370478174166392099283929893025124398228278249396396654070148787595830112958794168781529552444236617272962101106003686801416385031643407200983729008862141276657410668266882155847356918406208814841906430876049361487987903904669907469818259230316394067904923417461601714906672190370321408041179049661430084014730675135528353611583703670480719578441882747586626890112819939661772069497763728459227737020876063951594628093838684285344528875267221144714245517485275523473137676999686763089663964313239660870235608629373178524453099444134954341143674753187224353886965104004399505192248468878933569463772081624751815336403513832780642106201287784814180451137712728924393111448669342021220927205215894033386772539054484033247358791343974572617284870549582237303527096528846682175420770553301790419861403034204094812044573064979647930443874272035378640172199122638601566775779134641011630148650009956188976205969323943447539320706400010035908689883619499007880854309721187264663361665729221678550843200956266993558978787396828562805779975208797340925738231683243293308304950528386681638912314749572734895757117479312888846624928784628292737526513936813712207326697679365028340828118050029300024241265530355898862676591768076002571023996637190913921519249488032309223997558872798813678646867876624301334393461489676433406785078181667418206563314057290044568231455517507215207613497670569869687689934605150444207509199634479077364895035972722106816447664525472250463317126081584673540538541860075139913349065865361534479086661185765684052363028540451824308257783912411908974151075375521631481620460063413617149252606163107800862803543797729108647133112007152499190162019345836614848130117788966381787238296112470693297698578602359858160331681143410993857235407442912893335760859016253087115001641283526150739318561502298076906139187501058270294005962778926588287357046533105598736177847138989927351043342325342281934733245617877259655043260111640285958442275267611608853194756384416129616871871312881674168892475731063192935124808876978606326929508304317440530425247363795647361272033221450991592816038387707101111595516872715727276390214780628394948557369243291397615810448777067406769230289494392701920954693697099294968056077522847579669311131162507064989746560349096336480970762903788281986004991366030318641546824130170579089096823916691960189123550995460116885049778475830973770457161265875275051151726578473544151604388039868536796237492548771451915515127744904490537718335231882407255465586191598609095157227377073785802491065350316131872252730825105437012891015113256616725472654593274443404313437758528175037268381487803141407268259519928164002473239794523981833270840197827501063999395846204256269600810573168084702812325564733408563172040479067511847524127270045896426352621321562875466661081363452336069130161260693048435537889196879976084926592439458195111180804366775178592347387073710072540585268877151145065105465636891026099683736333514217773369034502073129469848932767227805486152976555077181348460678943637563002836872559680674888223014091894863197090510998672616082729949305512273430329822092040546517149751560935581102332727844539167024798247091340315063413557103173377591772031670085919556630215241870842325450096596697032356557335087736099238146567187526034543274733998939016826858028518940335310779726912019054532545804039437798776497940431784663499238541503798959218423970355604926734634032227140120904733333517766478666215400552345913993416938022111105769778964981015246525162529734426131133281515691058981450899135800021414416114151686164624436419243193676786699242495488190664857578848193498436645637907523760294224783202200148976607523249407318109455436568743235031050437552714240064877604421867813869564021645184731510002551692967396732350916159879154418378823669098358907367779952659550073158536535557726881832598864848264045493314884941083872207720838266255771476594996891181532141781732936890222464411523544885907629527516812118136868953934147922501230767350758425720307821900229135567670495841437959862272718862289044391361955789590765401467514393425432227998341451834648700727708415742713448323962138255007038088193558262941451302170458634223454144125359194609311434560559864812763481756812669871195173130983909684656068456259715843058451449093387663978110717255952294297445694977338261023543979309745722801025610443194018814799933800395736980309700211267199159734055740655479363457920488432631223880574341291819268023747473232694200402516034584796370797513959876387785079521309260034876978432221763158388466449455952158994390532136034438769560014279632184983119094978673982827130060649097680020058907592590694892342767497058624801404594191596505848970068937289418772626065118230503692458849015560851867423755792201413213812392869368764098080135388293286706420064758815586370158964214700791794080086434392023216485582606945645510665635873402302572380659531466540863388558854734735255348784123550752868865438767502048957991466882988127061919621856898897655135640184913035841417087861862846927025489491728666051241241331087787353363456147299441850262952288353356368626718091521730391118504211906485518728374742934782513910947364525696602816361278991889359486402182034453183388866966873840760522815639370058423654389787260177256337806621026309127356045369933772802792311159141782802512861541067718588518108218220770873625446853481242593021652366024111966329339829484682670568938193613394289220889107978475336261795736434203834548663051001871278358960130442801823943392068379102885246561409642746352838998791026384193540991814647652293533188970924605068981814747830920188296106183288128095191048654535840090839461724368025480437402079843747571567720875538705038606683483284361413190861616607872144795558631706087421577311247572008466017654057451378486829040054507657669860566970840785013953933197282485427383422481125696741378531036029699848513255242639270870781012360617914713604013855881980529236712126542343109795547283475146318817875855341653399779629566926403660905492353941154286432420615291525749569884770377706904165340051636430509692794816341392495710002255441254448794888194756973269835111818784079217987999907492852558230901818279318644168286935457784658997938301132431419616991376547550013428437642492850636023128119595431718656820644063606133906888970330938088167314937362622081126566700579161595119377059747896962233863414138008701645439645615035953200438674524488376692893971310495479154599270348230234623129841879318718146316199182920390248789068914072350414222618676863147092479145420662204972795926297335203586885937428014622185691824643698996651876812725309432688040691709198367462476769397947449068824287723056393189831861436266611980410885188568456221522252170742660866300013725382777356927986711086074526930482949484408649768063336734871651596997044557638008256880525932539910240926412306267208756295400885731497478892382144826851571842700308330348261911246075041070567478468146992759526778127049426689707769166793787236535899623872081626297607632436091641240592619977172808835904760305634920333441070602641084120637145562826139101462578949353539603882646240400921414637353100463591696023594727340966668718577649802436398878606464651996166786360573594845596957206010507965332018079100666085147187266728890121871707281395118057877225177452141998369724526760374135980417489835764939439553563143490787534601259416930757702386818247235837525533807803886466141720540078245482715764626982457510299102900307247786709223683175559572661536851205129405028207665050664602607510505774431413791081658791882158255914960283270398366160689393494360843024091432605355547308657712682213994879207843243293481185723737801255624822014342167122817168521350141067063596598517182725574187622045222414831180919899503999888317828041747571236815192086781043553844233372600256699346954258663915753715667714907018740858308471769904523026025387718101275399939676400538790418163296411804942343859775627432515288306091421930259154760681342123937237476483558552731614780146510952314479130278398063573421865524044626536641896658034166870523941904896094529487246150427883430108819454868012342023569578624538004840168048531622686572073087012723939272236073886819529791175077669890964325604960015172079331752634270290873783184924111993533887803852712740498889949996014244742340881604479217251794767775588617695488093260314455333850094976160547356037807361793388730123152316854898703624378326799385467028849912760932174537176343022983340909146842924990580077360770311906293400334947527498717631594630206107932089734803866239122088423963798603496446317442842239220792836547437982195516560211876662919109851499085554043035306922224549944919797443042695863876897003058950509676466330766606529641445273000892065435149006214514907752900694787821558980605800356124362924680094716677078896622484023774503810220589715726577235943304456911735138702953908126655166810349299391486406294911329183116114977568145346891574177343769255899516816366138706812975727020852878388281561737601686166685090494889354099435581922994209708268641518853134133571160196230043504850492836567440481334859736328098954189238741573886996494622625595853842621027839622588677582488243595643204550019926596400291610820707016490749267055317010335212109726201163827097067957798893921732425573023499610371545993251679575176543138674657416569885569536380794189628668803778293115903079970854091097769094368191544841396443431982280293300627218827490901237279910789355456345745709323923008464339521603926514251641043991579575189505156527251262467186224461567369202216935051261174938907770690433556454357483193498932724283255833234366327215097992988061794587302646023645429615508341605082759739160408472114985292002360514612766022126345130201348307876251825512760014553912916769490860285104886762709405669710581875664115270862100348491994206219867585660058048390243466213839203630644966701065610038779431834865022047761688041396613345449272768999165967748782084412796517544162323485481851739683759290326380337544834129650257402041723419034959426387834345962271957216208261209366959945555977617044513581087533450683528321719168901781414603548914631440117759392977388459922198245016440896677464361305715719946391709286667715548599984282645629903166727479995539509324955329517453379630620822742949080806530619835370970556042796473285477619677644190413685967524149891006279115960376203925936581956386744216524077602373868910505249624297408743625602150414115719205136261881040869227945510956886655593367119206545352137961682189524983056149014507642124853129542113276115237712448819501469833945625646670409351237740504689408901112623507945156818791300220990006837596526017556552206205302273168837596021735426482472717768536083519085206553814804391191251159843576245289545250342740684201641916401368643582550558215761293509075418208857888411613404864141927615032052688517741260433164099402748221151775692585460162619272162263188686212873333352502163400259820040154073474709768914671351752563065960283952521493965377715250780413011243464373538538637712898719772137216978954944853901082121060200263817595413290774003057933819605290522003109897155839760464597550160014591479929460906582953582074112021891372572534982797789566615819950858098904024603891904653774045414291169843452741885990536712186685666677339166586000769719118120271582616416356559427631003469588762919351568043327705110551047798355982798061505911073514063601365268662611454121149629684851448047037164518435292161924473639423390116699135999478341319237157348196407330471354226835858623663087317842401449660432673859234128819676831370096102158174239390742931047732276534664439057404683657234056833314900716044968814574205982699993755909185781661062998306642205482836729186691438590156167418550977993476392010610224316951233926339192925613671005851560839758258690323061389296199174759533813660281220450348642863828973321260822261099469892834614131353601188030754942582392141359225982099088523376293117112600267637614776979621505103752053247564167545994157689833258503596955544789469440945061254241567242026260873224309234083019385129114878249752153725587234120289487511995473474970555966013157873511063350133483988476281584658641711440863265681206145730575867370230986520218723556932495523737175414117079048656738570432825267607417078929701318315490923182775730954597470670102698605416779244623072300907560640054214918564736341604017130825082715273653208920050407438451484810562965069354456816043948406924584641683906897212964338517011077116440229342883384581271401238076039148179567232395616664456361002712463556280428842697166095417264916435106224321827292555263944128421915418124993543217550814261083597992757963871989363221780764909829902967814985984414698766127663244911219386878372419730569172160732659668737662547290055253596407947230068568591995264363127605084133024635825112236235593589463423536561758614767025852972130860402916053561605599750714210567891181527394843952323713590247026294519426562285744798610678033486232430888065065773703792316019422486824425961732657099948936352105431303648417321715545870947684123915007014910801976607092522987236140241225247199616590559157875049316219911533624184284610375979585467224058849001729107468176595725637280524966726130632318085131287791160108904830794207622744081067153084930879356715480055868488582981913000717322765287122321394125266703907309833100795656277913880097089528322908064262387419233046595000685709177562039916570341631454552329137729687709466511949447701414431617319658448878039785514902227920672070657867230710048879471402165774552191633201688565713565244451947560441028051277705125161232581748104336662421811679583272424359509561260443462542464694279210898609930271659227321505856938436263740914223051914429694931476909451484521847744041196833543798509392465950973783364633334171507480861077901835587155391872104387519910902323259303408965803312066423645584038638309590489933925137110386164319285605825941698336853494749718078360207036379564585283520232346093382204363601711337693417507349858863580716401165257882893712542324663779035413363450308591542640403097237170754546418643953444814800518567943939400116219720764451909661395783035801011645189420002333238989285474427274822704080809965030750625574423960246797072221806708972954538386550139356111403302102751377078011961148733645816331208383824353901680854020683444448360407423014137898434412948083345613798706498700893478697965143071961894089439483094300698691340490257004344820268219192639657090210061245007135623121340352122154223570859084881898590959448464407266564092712349359516270043175712708893113431942959963828505570038899922648270248720241611962285691825060833698835930258414647628233060716822407146324590880937383144552682107084667738149793994262935423653137722815842595886691151987419663521364817481899554448088845678430801084487046784737397507933355320831540241009982972146797967955086105988930325785295103637698008774122028578176303305519540957624106211668151685169476925204892663577484402486283251659711200892136417313880198482899131029704805072248254545216762357405422991015470030392155751254030050680146945232834420449858991874129421254776053865974019652074922515855340543525490538756460017031756220118199812663119460337391736400707292270235590061496920456721435450683286533154441554463757740590723342735219349326256388722641090633118319826654258194164003701501103860543406460241937992175337133301204396261300683532989535327347947235033879873107829984338465916821834574043893173668980184090394579899263560511243052884345454770173238087270950276742585485543409083899778447746381529360661268127231607683062943350757351893108240533996159652865883695709792405983381983866003570613402259977164751132270446173868025917936324809333811776112983951298396806824181264905566303611019419593447669302043214255735557277330230388701438190270015106169848904621910535997441828325067214771881738498315299537087507969620984800190820052129736199360962917208751265526666137891607706054232694097472252153656580769994740491627600603496261387616162679377301451229894329409360264713687709835592831800785473420664390027303515011227441824756573692851233603802609031287334943865918507958532819770736105997167962390714021066718000462151569576462684502971613648538685241242610055483625597416517181138154806526008388363353652808755039169570662406966074093098579482078957998340109091878692588307091449800988386203647145424664660374015099609245360115329232317667103468180442235969800385186795337670050557911317210943660969468364068531095256196059785599540583976581155617980226563500880681970882888743822314942571595126401437427580613044853893990909609297445442308940978155165470098003893254868492677758302885926523887908222482351197687106823493593850477894202853624967581083696137789640624355344129685986183522705014635931552933511089855857120065601157746182950159552268264627146136334207251187942205062310585345422677123621152088284127874451381330287218848761765575028088333818920920281501361837419874779316641130028542013967797006721922252645947239403249677473587858406533465597180583485547656321304953127165287705351013170436991670086412588896393705120127797019882363229304056946035361713315625272725926255332617626003235283756268808301943718188418472803611637401532066742178590702589410958309835267798510176434734726572248604401566811725628283058037369786288243998612363776850344846388874958366663180857545056512433945094103881473026511194491382255910160713137200484860277552695702823835169389135830175024278576966770845087239840147184660017117691584046167795201008666553461132749703539926864764872431463361479095731473060316023254011922814693359178004407759465547177072395668449984977935674567254348732081100798705543093050518533111377966410207187489813481658565166288378239562265403883890653454047077867811873380894713228697368153022211561123324823283083368915213993479607672088162801340086358386784323065649496850678332248238678068721425592487013833121892098172268799372851637370716201734661133411264861834131773497339390478461239501016488213424400764791050397387235514774268464944923809345894706593600797730990417293069989581748946617354378910039083793465870664123198930515298471026248037646430496847997677178839076616390806323418823169897980407098883786033052698971388484145506899501565546160167257884226599297516927751824834043782586724592183225466456273110322775258703074215563981427325364353533376064356853548563343667947362421989894827365085464980855216907247045767793696290026347030871897411608188049627354094653771468540622827184976320729233709240261135633893685921800209794069629121007177097186193149042032354661368003798108631216246986240991584517581036570523365599327970654813458987338761697467875449354924986640896659551322394899563860086754464377606339680173105869478944894615410832249366297844419846073816587151541764081350006150234726659657834237791368692387753207440064889238633756904024545530320033662170172230915112654572244286919727555891965899067206118588752473484504823404935143238522587815311088589700450246808652546771462941783396290100195384191732795112540629524158015283941599241335933048944493284549501871975547559512482212140302018757974690608220738891811783496131582273331877038744309430849884796644893030530106880299989050125780298634714836589511258228185353344152729310850386427548127655791009462344082133889387635610423973361917529395359303629808543623631178762190940632784060954701110887063527099800988633046391177973619676816364895941705981106830126385538522446570802808426738487967914987967226369295013402763859063227966217325236737259574623229533740039368624474895022054877349755049952985223012000418468172151496916332655459881973514769289186600726798385708047456419269977210164676854953949176814755504483987154213753954924643006706517077209328630458466097083030436304277974101714488244400787256431839503183164370951541330165488511803791652947206403456171848505951277267629381782801660010505621882761905178545638745521376550862197663151839570783963342807494217471846817743315510114880532005040264079731941892518355044650718054337260088380980658322430005457273334336835615426861230611952357571239588949335899098360187481037946399320249788815454155753795805639527894634628832652637078138201180630471120969888747443269928239891287235521813708133838486186921259568914001718470072977306393873761216996197001116776395685049903138553819611076612792853544819781233361549165662850854042237027139363034425670458353700151932278309709466506831756181122350726924414346948240622646707776567242487079053177574308001717969828405857063600467097503387942736806982028382361917934052581054347086488006557463315597025968114885360425956911696798704231462737857878758247810560828225683741450597912298680478079364010868572374383129566985685348428832370208476942066986754905103197389283649442753201318121245111935646051682996876684468687958001281459797092219383794207635795206836782159345147574092597774876039367852959594054516781014434594839270944410429048324744982162917070368353657444143465984589770219904375801755211992946460398755874052926986831974665438335851537864557786321880036213419375388948956115421457440212146478862672167881390915554069020283656571940176252329235210028566049883759149873765548932445966749078188687780757128237295458490328411727405101954857609063197873633314222937878718328711881591874357527460155244581053989036836669547504234902049645088663064810834976037874704522324380566276964065590093611995868564230889292290167843263770429052623345152517648806859247506598233318068527700049651341028459572559416956209572207189434426907829202282581610047682680809784499290704682476673309469724256710805999078481088919357435828390322665955990797841573489096190990049771529344739263729457379481896493466660995411861307375818859113721478147646240675678519940342119119322061869489595644988071530643107344234492201879549587601265488466076170209067973117863499622049570115027492882754855532174922949569743477052949104582294332682800124006440106028696946719790198597966800596070573810760820718342083317825154179469076997950331715557779465693129109557797888741018317465744014284624533300969089546337273494685285824487164270738657488506056202606550343696649368713877439622182388412883892188814769500447428531231426564656884205204788770411968453207537971269907670335815964492731401529072545111002829097805058375817588105346049374757782925621478888257121266169448693674385215238119323943393725974635403453491710872360713837389178079179531301865098166920265369003017214294940709669547715624090231417761623698876035007341383834671188936677877715688791709407761245447134048364368435400786669237594840177849709376940472630644576203504736576780201657233170275603671289545772194739487689744351792677958534378514564933685177516133655655524292702523128720351855597984769035404733714269354971323578527387950643860964662805786291044701313307100713463096768338418664835267313976780375695047576992572795748106067267417188776630063460278902373645407446075230094676265479281356142747692721225177240119542626170384844844584963035257201494199398485184986214913305343638489569962037822154920179807247262187511709388754120573820590503762953748899351849199142203032561430753013162673275595837704230580125674157022780163126848429689685267859463941369953261027427875870214669700544359053927114432326242797276390699013194227023640320840626826485143954141079734752187423030468251589341302052305969327149567540477505484482490220012990738114586835915238278583749831059331359619059955322423580726271809613175859643666118353864815319273205789402450693195424296631170961879073172547809385055812135172644441500090240490826979827950080470974084385231204632106696446602024412126076019754148620842650936064096073149253945133413911835978345106211238275535260275674776416589827695870579815643073927603098494383425117001558813447081260553925348330827831969784150579751225128799246067540493118799806903639105855671245567265691608814388298236520213257177152972895217611638458199027736404927600039279471334028470664539838895646874407073488030414866174902763688495854279432910385823096347016671238588909675073585324318512862720538193073651164732219439149323308629824778884358141057122973387444232248726180196112532365654979876154211803748536351659417369906957133859641175983498469709250822038065101283088417130212398018575620103796540978762281032159916734179603369701920480310316677399549593783435349201305552332285197908078113862724432436168511353607120535658738035122651405409025226537790160672672454351456802898793643630064582787577231818612634588635230048248443377550730210393633915316072211199492992466325751188246907072737226562170697767098311880355575660197112657296229404331561490623713202228894118463959445437676436388038506171452425254970419655563434174753404469802162439168465013702576412308340600943168349132751372442449903708291479099322008590561789705525179932703995548993507279278869117077960050373171649942683009007761489256062728603405065564607715078152855474187364594046479508647069233216078741725683687659274824190824540488200124548088443885497154789290462740854782390783403975768729271349099102032523468577303946298178095687604658491586220017661456864772570763852724234830136199540244504283940674313100883064172777247675144637142688310197769363656044495445577872118332150531037806617804271851171692852065437050719864240759423303227757376109966815860911828022497256317360550593515745254856571561678928349250181880216944140311342701665203143492117183642001150585011784700235614641708519826862852349629325024418733333535176050611782040791334645809222443714660678893740148720027658253918958157804237494462031032528394975996440188386694871504570198390787851664530430485878781787534728851491844282499345187748971092984994374625660609185345676522977761636603752251800184857523465541620983755555995441384012504638831563283364900406965606551296999062127591112943421862487616163224897048441676347656010734000613496278648970412975417122605452982027279059051201159597794093275341168701717003761730143404986664120642558187132068156180691340340408043456680447031043768716047504270925972453010385201526390333761318698695551461021700649479845185920137005733318116374100343572264808069446367834466569217467422984753569418324673178838709236919091916274937165046008755511488266538919820357002046966601768641394002750176219607508224288792090107087683444194926483281175242901907152412270354816855386309555697046628293493680866866690283372806485478304876644020899633241661188902422840030988332171659994947244599155767537055364860461768230140562995973786745112749729216419269802783036470141525081228299281302009699528026921907154694426817749076976946488138031050135900458921693143176199564100031545532519629358836184684613786803633630933285648616142382680378596389700836657396056826333702080250644786287992441922667516007070457789893333336518062477587822864917025621725964983658694641217771774835171886348337803520644177405762559233607458779437028699669481661791542710063570495497383231122904281957678857276853159216441590680299828294630092761443345424441642500590449081676444284947129089151220216387942709246707979469294197909697493490834754957640523280373725218167851391755536278932102768553302336407720072428061330605038462004271850969672019169247808139664225591370102135829546730357780730835998203294503955419053457456680634126081209923324628218039755450508423638909532695944539901220823883619668235100605164526547202572764893990199447203800316234323251584690392659801696071585401670372772857509052908438155644476883965204098047069529868155804571061156055169643824613896980259229931020873034012284774378122663704857612195220485302802858555102864028267650652494154048025246648223737747122111704394814646924493568730297808106115763367058337123830325997772759500063877488686541846689230642307182762455928006008753859815478843174638238265475933665172160268310436945272436619360089282121485606465381742224382991472722605798739157420205611652844442564631397292492834031339733987727265123483856651973488689385976860764287761185344553305937863089262631144658601327340811138713210108167368731379177539937242468135646755555849901886785532410963964068623816377827668187435285759994381455724587937834265514719558470579334219607739698943560643710205888036305045485705277687541504906209354599427502016896162257079585607102019823300495675650647751401372852602727997673408847450637402072452741887938985349349916358530382347069005792225446215493897770732481312953038583371668267989614956567449081218406983656400138914856350422019552077562710593602138795440162532976512243632502490227143916191006120744299009768771294881389833192780807004149555681922366284883058776039640019621304703891183040566707241448613854013284449188802468362581750962332074801951231536935108009082281707495465867963726478442895032967340389454575860208539925649885914588682053668421507123886991429293559980175215550804904806570478174522619547228295643194915918785322824831042243295970019904968529876161815012976368239703737627389198374719995146796872532016318473138631330509730451519612444737855217998336003751294949051310312515754558001437254120420671158171735714886231565766467302327927703910331895877814507617951526189031723163887989540005000887816579860944914714977457372878729241267994619426430063899361792326853830171501221339015726954411868700104223851216504305511730392607589211210821417244134320662462659151650258316062211901820384131057574858851548120779826200847073651569328313881198279237450393834900496905607126207670913873702910481527729568073691573388098212640126521066786196463950230836710781024464465637135656015638545724681154302982583515400780281443660452859764237712869494731558754796702395596138253934478136634660155599531922420994632275455386805164167187113939868630389189177258849894540887547602901658666139296106760443668939866765272511075045603996433259306500565964257178297271830970565983615214819075061119244898708640060231763172290502030393067000550011834288209513784122726865573789105453800070912907292843563867657554721594345872013715052786473368423046959568306897160896452037388472123418213787759686152761616504419047472174157870525417459253130302014829725336283085303556185487554466867436602160529277560469743263943718267431535635443935513268336796706241832361055588240907822038199331205718244907395020787683114202837337864064200651211643888323284990443216364146597849905813874958431125710112277951432988145543800715628593199210571136489732503931996152038046743512664070451196008390993588448104608991465528188733630602467545625883017302070339925401248686734831278313778926263488234470821200443848668750590501277311903671824168622560758782031469999645405180920762568997841760833026078782830327915273960031337558069352988060349664799729333920326165572610491287486298640699412904427283674962216103203465233376290068453029362350939639610260297144067826051608800466589633524930048230218269480527060697065075762324679807951935712613933125592402491152540227164421738411696358507143320933495178472723251843602273961217319162705229288546811440419034384301783233117646672014599621655422038005911777056966940135593186969842541424135580482176069848551282562433567599644420208978356642784238257677297808660270805940112950938934993956955236215509946904917639708243326896552677222141896856267886740586145253082034077810967948106438410635374834228771653799907121902998617157733059935008539895372584360094491277135466006795779933263133627722445551617066871276537420032293546773688488668285513692562077872657475356650070215443645255051353033896506320959484081263445068890000135685202799398704536892601153781509542161474896339801009938575916694884833777593654048627770541365142557252144007342488491179333437170957182801123687242434276020704029098590327210864276598901188808562479578158866952729941396485772703621258065916058268120128096224404302814537929629107013295481259819739527678267422779829586836763723881077758501170198515011552600068317091257345319410530674422491157737597899976218233090181162025877584798059619506853360384946636639740336682740605539535307758688449553767886810858620517095915671189687952021180299008202905544764473067194274746975546515450366378119379982206239493370179691021579664608940821573722250409342075406210560380627211108402568752051965201343346893295080733024513094431949823816538703217057331754344298766500432877210205184709262159698519556097336029215653709725990535038298436995434472791424824388937439596974289062119367637842497036494198712460815201948689444181038828648008657024179249485231183810493555259750222182019365090649949570109543657352673993886556602035124770186337772802743840736428111800758267434336847989552308515822457600002445145649280244642496474329933782084948165717183718910444078559928227531543033125223906815827897586603192793128553077459375502609719859032395900096088256707113357323386048683454584234196237932402916681018944452902305762474052279259674023994516674232147909171933302913079328559152395389001824399732239201268919847947910727488659471627027293648689942440261834434703857719411252450678646337612685375359153847344968875168304761677214431849506414727996260459731783111453444045980772642237786304210505078612637925346206729631443734066641767036916597275697029337559629987042727653634260966612325909320926285500711589531135436542032355895075041566713220312649885796186958145439763000163074469656731372464865591229947553763409223314987852245847197711656067390566965016893691219178190587532442249172611433679383067897928187944530004145139852574416915152774349339361363232196033758652786193623961542685808940434062593248251465134290279174339353260327212797639844790682789067020457415636359034624638374001374467732205029149887230491201713773614374294581558788191859934285851897917659833703674334246999017477495653850532641329746082840659617313714508544255787762194066909563686214465130607044935656003098221575740537562964859714646183759527665708654623747535522164879122260494923625889008095312411999570242880492840937515858411051728072882942333336789384869459566876978817713921272231704235943677015234950680542502419220746393603966159829975785308928928590674695715551657562266636621243394441060522712296074810279420507914244127640955783928665749646432190401119280366390711304441340308290577792112024377253931144027307029541176441694035978541312184710103129244904036272117576312516954263918283016953735885428441303096063912257474409282492067021094984816558830341341831819599523935049351254286623709750078361551088680793878303993278401717588295777111002630579902994970130513317067897130941806799120670867481479435624935129781637094024891031094245002596130110312199920374873408863103638137496498328115682280029062980742887850804839674380519017308931139476149935705572150056610621138154131384934689730407191933483540872985279481480034588765748706700439783780117205748872488636176680081398548501942021554950212927678821911640343579497605339063884198629350196930695556233226421440918569483636582237669567456783052382896195817563160295269845973674546089967694457063492981568515814637374608705755065952710429714658735515579264009491183093610659259033646498574426548749699203211009518836542463533739416879872776576574134895810915816142762943389911787472974759827969687547763538714861720285803428423658687921619712249640617336217486207922369560088826849562272286605341004563970875882180913080303532101510123015542173795820358028405356558155286231154387583979505617273946752643325451460962207841071043463931943369879943120160776720150086783648945856404003211771423860098758257100093137954514449317545053873906611728905653768443062446125519375882689593741092075995160667141720022319469359846797134388443907473551438494175068965314561651059617517781938992574401405580300277455722841694062812345452997132448364040143260521282242965617243050907390865913591678510803961586295552108857027962850610977871454566591646475030524229891672669282212404548594771056526026776269980235975755104010097548913196824097370583730556520391070572057730352699464242060477943311426600506896330020350811488171376369493747003113584804596050569031162341726258804620062710708956337107850451209818656099407871828889747346651458578747337564419950948561994464373247601302073754982480728120361516373209153421003319338362687065911052708604855750700653968229079488786688157016387164063060145038786127209233433009871107691390121703736224132230289720174183931402073860047672673731134725916447067948557668111718629599799761172497982060665432558929341429124421369214408484432736846573747843626385661759904162764919529672548208039902402879140695793301900819103537087075724383429114619596696652479899982477609893721475387182096900824926277185632637128459346028571262485304437952661370556726867800769550810279427030272276004698602035767524098960839544286366799266805321215598863302194871844182752045772081778451182952221076173612391712701324431369893987471314040892830208990592872442744506639138989049500651916448332980448636548627875717902868269801078952304960120253069936449926832324164489348104167325427474854854104795173341113853925576624817282889002699736474694034196572153501993073812234548941648185785143199406782283118925001572861160711303505795205310811840792895525169420152958229518664707945101775609769555258380094910471442914321968646113719599950830840716254246070252167532522470331981295664838458571690522321898670608455310485184247220619065749674321485480660238300830738033537207532523300093784504515034526989892429913327097153484179192772302480766748844899762996180646023483207785339180606987260832967759550074093704091456232934187411722739620072851905945252687341282312694778174554438735548539804991922500509365850745187999563174779393281799187364549586187786325505538172934956374032667193825480353833990678100903455644033810403269410992955800709137359624697189469392099804435585661088988333983333211876802300001259193154410901486887103760230126899141515391125027588078496166647599997171650122964258232741534490076872767068801524153160067730198201422035446577690773374700365291499899803036690236759517149949769137056271038897547732813433975734590823455655142706766081692774820193687602648915483520096705489844063222479207803422503358951630144125749343042279842444841406049410274631419155612743103781980074334258860673794633037926436564120787527581512732066245432585564706512813816596659108189422164123025350276876862694032964728839576168263233893946694083636721678030261821218023106324085236879532835168435885924343639196111449898898700242691169693248085083136219107770513075264292952826567542295922559368723693213204426328042664920649002383552241467836656021872018511104792872991343297184221425703861290270990757701975638320927634075238624885931502554395128844360828102154554074035554001162941406078831219385956268425143396314355898079171578837694339368907601575524747919538815470524985385758802203319709021943738451715767438825129665351713584746934669447896421746357121421151019047630353873944865533167019912673890413825439526838043732243769905724367734400974012808246436333641001872616159544822112084022378189452027237490302695200004432644360025910165754597696284326489126674844353345012091787413525415055105528318074258489661105353909061208304878057863460735442793178213190754350060629663189738195778252897368179098668764242748965540766666554329593318733894526091506487372254344969067356117189847579153728366190748107015695761405210392851593548054810261262434391268467382602950486839402295713869949161126907218440623158051057204738410302551304686152349143780687807410290611535429145939237576909881706332529058832189243983635907174590871004372029527815470480480330094974439293508352522052297367462654251224918675322141399206176954745082622741762695329920331218181220890547522082153173143875217081016078991078799577373112195948622872992096718859121334435566572722342673239817212205578699709956602016691065820007876405071828800765471715272965444854578736726685495164152628622152908053366977479740030224363523972872304745743159325047269839037587690971743742349437144731029130966156215919119259070471800864338928455296455326351409749614918988775895338908461116559697219771908321093248398904838342023941815940879795418543424342513722880839821849293321091598736467361803131250541803342992735532428990963908752224503546697170341249600104331554569870799532502802248074709018985191736101790605280594040619042201408019361003260617942119486815807542782287682244990970977969782142253760452539527619605579085950496602812218350391467706224552615557456682630326237020272353816753048498101514612236997567385887807885069332778099050005785941809680395747393490950997528759950520550719529232601119577408352536426205568202422587293430830180043976383258852373628924324866200774001358048084607706229355872570537998357319174431068122188949667841982562586339434779516419858436081351921599868419848103023035458254649599904543376351689572020143830914535905565816015393769008909012683759914840704081638465841647762257633926529661170954257872834835905248429178761234329869698325214628938038024247627820803833500243594041228389284680134269866194528941058403703393403340805310564221028640192510819020652374081294574433030412991655842464139111629907902238797397887890538563625295781148650064542039116117828884066525548900124826663653541928856906556146151172300379346199858242028263363571514575178127084465043373056809602806352741274418044874397092870241144827350676446876778846078179355899264055596108630809181461697491599204418126371585660552391117690876055842871954213628662026516555815921117618075818279232694748687084657460708985326307717838882989311632800109183723647685815173680946979222260461891125950321921270303229586839549545543268350067664103708906392889385720931602918186504732997400320506251528998745330744487802941871006975270546697795165548250507278533653095914405276435319490993172166621716179725104610092138863085045273227204410875676736837891017633141830572368775326406328281267407652565648624944484308598670564700005455245301570213291049389335055303349101154395774143092395997351228646074720676297872872049741125189773359152663756190740041276244460238075366998915354398473812768409330688357179558296782893936175249806582084510066558087062492203247821818293614130769718261998484406443428765699602224713997740730544735678584620287656813851814689657022018211440958202312008945326830189815522380376282070706602573062181372107541394459185006983207479054689312832016659040996017656796807409076445480359177411969652614989151459187594051390310038776314533435492903150090329131867957630434479183971040342561152232883582157754651465223016889815638132523958887543116483897405207243493168119897517027986499235813357099010156202671455071757438600585060005217541605066558807012181318878925958790955522352903573764068151311028283798618603110991187906242037455584347100635016349610495687609386485516185161299387669748550089385870469809435091975105305745481079713269225055485439799239273315591713783176733339589527510720389879391941100243394666885139242543226191054124842231862393933274725258646306286220394089385037834955482845829480620698987486337471945855585906974602774057014367533590622654502346537305691363709206225375873296647749535422786374135551773711847959134266827960698374400162515304556646065396586809602376712697848249466536585439418387148035954478506582724212221553991385407022462471713565931734165583059692943888480884662563892822011809739322952025680516170945850798636696145253910673046773692342781467588682065240809825281398837756491746955231395443824978845751763081484738453923074158716071634970656845443596149496705671437763241804663845799912400573605639629906097575174859249221320606118334072237317914553903181778537637885488531879210444683432660513111215985002148625746792534062049814545817158149547557063141868437596491313539257597378096812381329569575702662807276883642791737304690572831082057550242903946461573330379235107026150789465464520786220819212299186038937582278630931819326331920892634970092666704153701296153367027693939936112503847656747391833862818799277995882216899607256286007159165998683284610456146018535100266368056048747730574495792716362880867151168440747073377036602296405615278988281544127688417010411843725127693172963767251243332951739062790477993500917558024323873139811281828790607011169606838360416463298060110399265068417868435084796455386900425268400225734043548347259744361382973603654361550406714225895150439002542136773826871455363581775354162333530137057498093664262365590016615542876755297715639906037525242395375795972344578873822190686800321681318995412583557250012613018105743744423880829126891542038710299911864327162308684464062910980914262251866183163316581087628546581182660503928526486127158560543178623534648190167357786638677781113783232578346341366569914151971590916916210140415927675898486110275851634142884968831624070030300706169041446932224226647761293981440930239203891101200474742199121545432343512289217600602797635862549403808221537642439116609002162564079430802263183303825416120823092037324952907627142104198066806325342822380728951805432743141207591990266978712010078641109029539370060574672537266975639314155032586965435707952313922870526197858376750965939062013684065119652556279979217270770472251638959454682915857019294862737844981922262897578954550707664489981145836966228854761809458462749514845667726037282141163494588201380970680318382787256470563379663879233644985986005874861152677492830156506683929879518760278105134082209977938794671769593035792767940989350312617509743312896811976510877319037061996819297302254977152286149357439497060173245183420399288087349096608858802433329310206084641708483925320248469794852458894378921767138555096714784776924231829469604967599611743094358146636977793672621342208316349481724025444514863252089387964992772522146944519701855824721769405399587698920271766399165632194301874696105163106152523721468261147578571391873566799753973235677245689213217766492173824996905199177730432805682299059292548987732842776231405637800652781323871390926202269950502989319918199082239967083042433653348274330758614465161529621844344655959483479607150934826494708733818699388642325348639217649740224650713171949946018250781095455492063811401104431380125730847760139281029365818088047655950920794106069095875593808701744401100422148770450945314759220668184746174555348710860394471927498799495983146582362457562446385092802218065493036777106677641199854669486627234521641275962723351270281145664239989830666813975255394334506829173268340169951956714513667792786920153093819557492110149478873709429456747332012701616688019291160309512718951032306464240667326405139737698860052571021418762856226319666471005120532793487894221542958420994053885855129852748538272749058253678673554417916612183580951298182339410053816727782986587770322501004142291227926348964424606551146950949847372932326778347342841933925186384999039389501312604804374546612197617170673121122356868648514339665169562230319296864558080607651426465316405624696688157035869000984974607161295024315154709061711464602239192757822854617590555134645162597069812340663731822273010736999883393922272262179535138363624468899966433416924401106215834210581382735329327933179781831194462384920440880569884853689644839436816744350230280072378425428812642377763339601486220461458461547926298013233775063289027247265270213732483034928379513681469151973358516440355270200033179297920868859824643648997641864725206145220023208459947243276491053668744832706199644145143184044716398513303810370248275559207512531438556879045990719111035617859785973063048947429487582609960829477120785609896887861070547434577098695782170901737808147000630798507134811036283049870031504342495761204483668618176924090124800924498048171996433797963993124969127698064837419042665305237295571786062319931550879072104289765809353501966952615636801529208803315245931513029615956895008606155123576995564646459361384753666691005398976418240687127442707909543690347065086185913152801375043117792131016657386414329639482519079537803433361764472853069141513769227620867189469380902016822870419585920071864410724958451434809449066272129146089084099885348864970359722005422946733295509630006682928137217389275716928283307326521178143929473359456966190580072931583650233690762332324622690958006781428990859056437076005103470919478595608536997200551478580831512508159481530777609369420140661720331352103085082154820789539513635169143003882422781869634621592777099924159182589397650480387285740145298205019631418635428571328414433009350180249488770487465746703057126414235535509308522588946369042524915967446701583696373051401108890414548833973155012367191994480285450867404976055984998045230340943472020286556219234123280106242976026069529494831835330929146086256339464593349388937341103119556847820662388495525748309214683270938779277938352877096190542770968038765066379894466952378330174679381630709337954659072138570291091751280597233263160792815576199385563355659777711644074494833735540259569949391292364339467256114687538791020966783722885546534400727376530442941156216125374045040793450542443860390733948704379138335795866793811187209006467376655538786686785048122907262777314475840101426259276350128497349335833579121838582270829225905539788142460866890337786700010322696498507805252155716151216932354722418505423112111346921782207423006625571911961553044770912698892719666686574613932210137314250163621023266140168651364366178416001019322391667400887911430793173120661170185365501088111788279482172778578080814734168520837832360923665019655066667299107249253528405623754330638241804233466539644237412721901945744000916462156434232298823637365017995127737835721155685143558530111730336110052249787893105571127156074466194473501416466778734163657601833144408343503260794877525940200567538596797328083753020870529262748696717284036826299168008266191681402917328309479952345883426944033048138373055985664726920169858677299734448630950682026151933146682553071213494173995744445390002488465450756346155921817529686295465229196380065104484823018533239596071391956322852705158174047827542834952487466736130215362181867298841297385641214242354594376481497755727101704555984607117054562718677731435466601360926278106076196321397406172687598561113310798298015986625491914429148898300557670806652445686919933125030465068441005199079467905564949257944983462858522663704254934025140479932175363195175434104703271659735353805349183904841249408220614939847250445582437911760701730171099657415723621265727356900655688592759668819252997208407913992367505492715148371437785306844843224247843296357563322241421187385254340796890365627332635238304930672364050210201294634982532469996796262504896959554707884417955712995686380382191857273526481759233840365086623586547578856590350293249769613167669855875889859517708924818800134950366780032893404636672704577907807219477615191725531138783477510550672218111063870580203761406298814476346577142399442601597702051078716135840435043555249663949311416034626032283982770240106376279024614965338935912875395935753000612461685575381238618065873264849069121423629172820122884231052977548605627499910368745345035433760122276913509201736738307978362134640773396138060079989657066188225493493901804742353524101410061574171943954531952171439835270076115677146630548169607938665232035058116805376375597490098903478890250621458531979344034002346130282153614498797450095058963577805226841356010999217255638349032797885730460242970582480251625931725821631147256070632255906215297642523442124871236261870587203972826970764446288949620693474510659807976942471611744350971890202209477772582324395604222852041630490441932074725091119754172475580856422749699319930934934633585267508971967633659330382089418148556418508542468449024592248276844008282847718761146422870567651024430480911234725262048716177344617043552146750444146819859668800829811728290818661167021621093412775360689228879895623166423543524943576575652650464101628144443951479595330001141822868505045066377431406119293278941259144894013255603806665095601430623118879991876927451594611140657068680804213338542835426073248139094512404305899143246239768812628969976539316639592969445014753408475318737146844029800131549793485306115712929609991816857819646258750109459152265616559347866290637152421346416653299105670827338758482602409293755292505995402257851631274084724226343020390476348772666977773364226774314594969095946580438421167839159399205966360330370222713291948918628130286999543075743990603188081784154275669843261013152746966099504290452777418210859183987762950801236387668470423289581442337889878929517339344960656604625514974536479312201880848220950267358025251160403978583630129148189328578097557356752908093272681441055171582829250993297279137582685236108121448707422450729893928381623690910960506346139685012044609080965342370402937423220342730983743653838699558421194451744421002437344507677911187293875602433734921631156923590617392827112852816096202612756765231941172917008294295423290264198051639533576748646128463187367572039416341651093781219956985087978722894516207585274095086603009560761309780941255163468216136318194810342720984178637501313703837332272944603553269229042691161042782098931463017961679655470949195459124601061859181195006442073361742414657955482145931674400180628999556687058748641695730752852343170287229050255133035044288223003860142574654377803379518515824874609714253132111455072258394201944972501650306637962825380051448338118016976796071424169802398237315987296296830466435032643214729348639424311555911527821655916129404419118042310812521445621250059523249938594500443951208758500812900612499691197791434121485505758119165794142128935280172998711333012267635871119594879259568333347573967215504458114419390605073019524278565424111945851655736104283047223730215416045315873761591073546869815465263125916050328300782017479025324718893321345428606979240636796220042264068398299566171035954084040707792466749786799768730619009769543638657140989007314474683730353920576217434084809682617657361309399808848945832779683866912747636525531991439280008364430707481364686148467134138846036615578832653396174984469406103471064456080272409593332818737934319991226570765481505007015734329197601331152490777662651202152266933523974378630032585817781668135094789010232086824402636004100881710867515784949141168980266319448899920134126052740808505413319535780991305133150946568779827019870268986959175881227913575676384590127895251165900691349665255195128578928004069134146151479663209291822431894287396509281327536949371993162513768489357019936323725167992523984399734058952451876825377336819686783434886996882956022027318838022900891749843342457165730690993527816680115859296254792377502263942856962597691696037800914456457130970883304781756`100000.41447239257 \[ImaginaryI] 

Verify 100, 000 MaxRecursion -> 16

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


  Timing for verification=1.90774*10^6

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

Out[50]= 529.927

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

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

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

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

0.6876523689276943698093124093654401649396373849036225417950710101074336625347849370686272982404984681887319293343354661232862876654094575659577211580255650416284625143925097120589697986500952590195706813170472538726506966897128633532224547486515672129994637765922702521974806957608959939320960275200276419204898630952795073857934498282503417322956533809181101532087948181335825805498812728097520936901677028741356923292264496477109032972648368293041749167375343087811805406229667842468746562451317420490048322164276655429005593502899361147822234242612858283264671860365001893153741476384896793655691227143987065195306513305688846550488579987385351626061167886335403896600528222374490828947986203972283317151981602436765765638330572359635915108652546003638748683763262233429872570955246376830059103531493539857361188688842017482419062608349817303422370398413326428269921074045506558966667483453656748906071577744414754842438822013366281627411698672457633017605891243802731997984088305950589130911719198776146941477264898934365742508503405073273852990354658711421749963558451447542965695932773286248993507649001286123224924467042322009048447796900447744894667043427919710333258185793751771989865742583276770011926585495711579480114327818546199372349313180236079138924880815475956430272731122319300522964089247402266509320796929779797230879548321825617140391652145925194320723410060908675584445905000466707963346545638317950978935794173691635274461184852166407791838662429404088348764706235465355810926576964427699436974155572226349459949283455829193795557370648072298238980631247223974628652717624888311612428546994730366718807550682650781147942858280736659940754490856099069986616723330714424576483574150117497967916607876523114517541119982582253217009185883362820212877796602660064784306844289431040134300393911723686724565673268671913920671602825581914180233170194202724833777163388244522504933432900882737132084900647284622686801112914919275488315399556092167120805967173270449925351732744752920829718067265412345730121875889227852589416793593098336321887751253399425197827209270000399413652069981326305332739913264169023117906331493154690692761277563399534820991116667872458946782176710659249866382705703436363224180712183154617549817801168728459043929332223126340630106686358907271729063029144198268411381919888010023118261358779810486361118543397600925486258552722284344590195894315356114882908324287401822648055427423139132476737614848553178776790812483187368857997911466285618461216453483637069937144046426376872466829161774368171976684974066359027773797749069318346132026666679347211677427661840812476796536979636273266898755679733812887612926455886765773741754861714680859213705687960298220660961388106949016638152882518020470331589671966706992307745435264972349603398589318830915039157957391605963945365518885633498035504728156029628815083668049982180691806786946857168770951808840896665371600935655671428169490491403898899696221383353063698727976967220041344889341991419095406310096225164910261467694433320121302471186895477274199167504519824694749957487202780065482182379711639929713186666286683221533291476132588098308121127218177551895153950385206311947230138276630382085146774326603935612349546191446396064438639422834221199837015235172023503499743403574351305175476157183504376947552864014462130776015948149671340140937495772920040065010031822698852401512738250949064290023655385149982365826945887397603205135539316165380601608044639419671931245416791515460244863862435457515333493229839340673417458031693493963289285107746103839947001536643991013697118690959933120451746226250837767347774578964530942514555919880253035140389792762289117223323913516742056716239887396547737149833508731039542279636238022753621215918452924364409428532876328687365339986759320089182346873853735681791600900720685759079298318455688214311838333281249174773305631311717969609492112067080201231001286411080043783185262069832745761903590426849803069343863268562321336686412952340425634554237656772128770623435912501658848377787697023608445627702394855133449059102259425374407763123266086959380945308774983090039320278773648213362814897999210954495484006794273503039110549602632187246812254249501702378581060582054539282010406927989306732459729904388338125176737033120691342928461456373230801836997236063801977842524654632983813163935504323638870804485730040869236573393289787680920202569330533297409141198363561903851444226378380174598330012146487955014667282707200231768639659858770248750957234942259344118480247634418728001445086006930712062175827755212484115865938617603670324712438922332700821007231867188489517930577872805188852441215848678186315503444722137990638606255991512917272583342055590185772969060595094167858705702564184836509080975087005186384280580318978497607609957495643666413145715009671147303306068406506074734076499819562142552482461165778721234749730729718484327610033811026786361897415427234548236996821666323341733850192911469767997446199904058929032715597446808970630245477602681718086266649912962817426557753929610353580767420395278207311592831754489131765470821597214501282394198074412804865859716397728039642731616964747530359508092747175428884183304684145842238771797456784304476385041812520635490161198673563298629974241651440445905697959389548816223394365267834726559602228262238594258791926588173253868804042127751553579375812660221181107121562768041934443251674740201949248294319630288607483296159278899105740966974332575830733316313624663236456378091246302961166220133461664236316453954384018130146920754889329014419664669876495975334232281414599698481590073749928121134254842890611229567058779439633677319929469468540818089913532467297316564511779416516462577225149901319750770912847389564362053522119161478741516903258046246677189012578934552126869793322197407222825713768806274892374746312842689175365697760380618757753956217158662580850329299609782616783331279336109425809962695141856858551896168763510183680471733152683382148292775911347597233085288294483303225795118524965780844978397592814421262946555540112177066794335473818201659917787932253531866938229998150000779396927483716678562908048876122219754987500416120880195447086272837187888969096112700812898855696889795122658932241339362129092216971221550166232888574685835109185406761219096081478853834056257820794019444782037475896404945347527959659475569776102323150335469660826614058842772527913240804182376045950487283200157740663749049347226661404745386087006568679287731724021530024511593917099046285984380765004982430017519570917296519732707867556231084103251857571248411884736777933686172403343721282127543218309431291779386731578455102752322700532715764803948836395370162396599560471169500485677376220315872395355427276685330991626734127579770190333032004299178032192804275220423890774619743655170765623231029719895087809159492889718251241687389622237818749955275292197671247327684250276015246133388813836260444368339662933989629765020498059741854928433987111382483428667129981681738758263899991591328663872859554613593534332772345506568374594055793189423733175329204547041093999957553751258530707556779422059138466349877017262701286440054319475078005699223211745357832038920986775838715366447434521654874820928491567903910300297453365977093165984687036441363467064858816019310684318810627833848481090651856659464313758251014167529925374001345270371753978359591634780806930389005301673182035654555333430866998823821558479723485783324071533773496489096333635289520915847211445196778925856164224384830123076136517435075981062474391802783678519443261273456417538652140678555230698206085566142085784464289245782184598165471741804331291575515534290224818566305238750103493474941404385031624344399573873510117346907617452974322817131614842451156150323618811203477331931151313291284279817062147282704767251266266085202168087312880621225022198016351604934395149203682719236545862400796242655441790607662164234000826449460400940096361876196374323333669972323080472861630414433778402319846590133372738440896374617891189584641060041699757608654313732917194469205542680126958211762321859383018330138696685012127166483139911927506630608408103758316517094456590019459145470562142528808680650416715739921366595622198788785072979507842823519173344407762315606635344180630180944723755838680076377972646901980151678176702995345435548690408666896113381743945071515112868525532177572689287044047374464813549899593505416033868566352358103788436922334406053203524454953097870796198271597563473957208788123015346040261089153308011097370009154067869698547964887709353869470394981467831817890634413154648023742067578449813776033680020549812223035367536801058767531317800761331040903391582907003895405140259268246431345657556805922087061797441343457620788958662012797062821630293362625609852141135488779200129218344299271349514811413250388686391821549559413570935660695683912312876471002455578815070099640356571548914812053619376308077196590877493217668757539617797004727987239068206485333331787673544196112681296243530671144793190002465810239494806072387437619299207453457707240901496717757988100320360384459746583867208924525464784494029734790758216284096857031103473570255888504159173545858780632182168146836255826981876549111549237035733520991681620137179988808783864356030162978405806047446880760131827476362631880526962792473697609659614343888975080721708988570658953770484503399501099050170403048597841390669347182305605897836176576654087585778015235340819135128638707916244613333344955183607347019344524835592928036976314942263243860699864472120834782935559684777588747207945933937600437744176645602413395462269934331455286274342142237119558946750781122497407666650510044733598529469874348153627795647298598937914205992766554731918043604766144515097163563332107066457676982850337242017638185408212291169344678535868564943235420079898520034482923076919165146298792926261968173404299941180581738262775032083657496060756493993519371331793877321996852937887564329770958109470571077508733734004843035613332980930784451330513053641945150278524047280060610354671811000342930352990649949471004791223780444924946887452586108350701058034937470104003085368562284891987844992939985143375153160086021888253287441660755929318465236651840528517242718462892709856035478272636321259759477095363444162322371800232682576668024142185208160963030314648625706400169919842237057672033582445546228577424451069412301526671854447968298658791727665688858177621624228786523158032912980803859190195245810858288679985045891386887089731622639978569520769759442807547986215544406329006993376316051975835380728408307339302708779454951300773679211221642920843925537409619659490412786909636271402229418497389159424880006112665431066850880999286853909931992396790064435822329298101216840439078969969222697453281273674072670500165577512497362009734518207252435914588590590217621878409265085266717119748001461223625946487276584311600635608689006769023302998269587520729300362620422327474566106950944075758845416931372648093736502125453434820998034695971542712479992782388240239668131931022208571930464807263285084847690320137874871864187757801754924672845497591173138032399210924415778190359387855420606436091464940988720764636219871857071771782855574515705549960610994504929444855442627745218400049294792393968113366768429933644260035359607403414545766633433179396127546203900762721399545203617729727218174536395825314574637871367491436279886191237061620454729560509949826892527014246817554188593645523039199630491400433777756835534742213036790534735027377834842622842866146909646282771553166122366198292296538587366365490680855264589923404820936593312667057527580234482957728951816111481754832870832326013717188738153743143849576316287201341253072908180085563161376790661119923544169131353695930622596984207321897752520680508901050308674477391180253126245873638381863298145441588893150027695948533557161740164386780245451807308374798168924322870769136350551924880152547072948440398183972772458132505427989458092415342403498072159111771345948171192018814637460973543770878972638108600237580253285146003605124502926707577739504106920316224981929256290666585842301885320528607879480618203595625349259801776941468071383960094348847297692815779508313156985668106597035460723191644079002312197192106364325301699214693435354138506532323273241634852836383020455029790145002834976027958603339786815431481068646478253530731655868374494976445140781757935335026604724512625758849637704746039516149186567024015774468169889684574005626933689121436794654751667862272049986270890923648880102924276332006371688033872304717915179817205859112424557579148977894444179255236039919879974316208579704649208728433154731523489170766358363734505833925084435220862607506521100204240285254899769622423189447658410430525298305119199322221905574182852409425237792558170303715289353407242540172037593488758173099182829032511750655578923083758313447321054729426019498298151986091259595433819183572099230886363022383528375925520551930077788153486728545459282782852463503109607788064805188697113369512611392966222955873281909760020762582403972728768971523438297401018576573937228419151314295923685328862745230854333763864404902580354410351068227063321811091195468857249458818724197100979008627599973183628282212969675456058448450325084101250683160555886301265913790346244995873252518861838090008805089405433606635579111937496582790627486484215188226885062129724810142831205490053358321694463186162612251008208294876955258481534212808366165219077242414602462500923116382001506867219557931218954865148759134543781375744165223382501657937048354674902502648609183562488558072910720639474312098944374259639794698653265736105022749252694482610391899619781363787117606023838209094656676583839904507374974980896790047756568520416314534976720225404965344570173179722458093113014443631596690770509016903565809025987503695615841644174424331241124298476776239652260258596220885955345657584644367405778280844998126190895498395124175974175072090158188472281750430401195745139509667381841485984206540900469677403491098929614485443534784107825174545200694532150525214448870231619050151383018167890046065235066791012374781717959519944829813311109276339775412834172791060573863168725474117481893818539726574724102342826925950727984889994747154562475864704244382778836805821848235305955335103133405294867823392361126518851481584776067482142309179310586319592881468675805525221889123989998729184599200943481675107872938462558594637921328255634920911178476558551396339267206748281667581614872619145161610999312814420227094719673475632523934211639804221876297140066678802225434391677222249745636809992100574649532120218890380357790635243503095503113586051921000009642939385117274595219523392339270567893077025470361403128424775590886993604235144422033080952662287575968733302277352440980801013986430944074295957387113913675755447195333133421060169183658156151223218196828368830359530480658012795765835277613879431211539382793360916984248750426447366328172640764926310859874065115700497402830642187475079580747118682630653681267667044310192878427702349586831268018890265753759846434634068089830962821269041687772221522099838410343155854574169692137581042524406804977963526938883898548381016464466015421598535531400219107218382683415036493311189763587210179428144265984307822386281519781826823490593410596201728919966448450985685115257171140774398122663424264897707790726291782159674679184598355219096426913723899832964378614088627600166925322441199998288577025810792632851617242226801459870003152564063183157234046599949982372774373586050419130373123129701477902211606490504711445487289962220648923459982658639652736104300137763100815946740094111505448417469921789441878023978223580681859294442579529035226459039112519492323917523838553054883149044813283074109472651068390236203284541582683941854134955551856778633971792479883513565266495542887474639098364871879251581992810112820815739256323226247730263313176151627939541094216607360342662564641549932544654444617696177770433259438339027184444478945239479966816543171083835433092814699225468236508845235178886938511228784382318145620288190331683171238921233508139975927407166166302505723928502727222807062178785088593281306427764845568284867914382110154121203991492688313787213631087889663652495919911919900845487011928525132766513065180438454989062078484437618535956301784617959985800637410556518038154589948153462431784475172398553433076711016489757041907488620428371339720616573244408099445650113953227842906236040606624509885364779689081737054194263547641006479035884441028641669803092843339344305458081215568671254763016564647198305754568131048600729435697094601033969296208382234552953692947984558311010177276104478927288235370228297776778447247562808363728552221123830214225871617130483257961671457638073027575006772136093075502480298587328830099671030652001251124780266357295397103097262131844045256921175419144948185823793968268477597877361287228339752878555655202676317952053687328180692151269180195691673936849958509778779315955813990758406680405126730283720534582051591680838190134740419403579080565546926691545871774676024685467095332253400360106179889446629207892363880866846303669442832230676566808308318346369552790527782697158419528164663797049120635984489283914271931990544990877953242097627560660008696595322802794391190457411155671000320786612854153765952653443364472069355792437217452494902668162180466674895984963150931617704769783423043655335822179411744288306568355070715617567590095821677285479204332724951588417688591068420189599295923010295460390561734708053615276874102523462835695500741693568769749928440467426927390090345039425100773402019839620032150948696904666116749471918748359438894566090150270263545885489448763176249450709578341996395142168239678481626166977218578225652731919882386163127130555733462903445449866114267784640691269292577444316809358989104066216438263379689305688044262182935387963163457897696323592162936082914335968954353797224791374070564919912943451221521574067903698774997418257101365853196464677884714934926141799896348235272122695564382001900482930901388076497512474634579443608648571462645164860080597715064011780590159551834589347965498893683571767072488431819207087348754389438633135548205611152544169642605194823263104367137114369786296522869629874139239119694144968898305424125260951530855457558442718597809686388875082469311043254540299480720571732313340517285075219045920266747610994342241024157337369802247973534365735431974849675138576307348058050173358881268305900777349590352932796504376110605445160013293795236438283708618703644472243011908324759845585824443076244654282662986699649283481402680377344944099552243048394098098472630569628523748191407120474256868060958686365974511375065355068959277951865784908524018457474202825155992251045290186004352404146365864703774223889343416580947029257045628499691554599944425119338103029014174621008156310714051632353881837782418471460363897211383252763499270893819040804915808082202475018471434468305602629714361136857350583839567912210945687297327143596597052753759437094833980048859880116093645302943658336115427204730867970436186403517159221783033440556375439910732421709482217658959825949800822436857051415977135903219294586579192639526056405610232727738495428103116849662899574884036686299947560531077553749241053838020519555639569118540544117172667178338088880915828798477202019560798346246807203959718200480813574928686500531345635444643273848857022897474811772724329296626166046232142297130908350687060518629299274876705694898776612119445020345900996133604959304634744994850167148212655277492161788875763593789150469477659212503323968352438075102339966980298225607319865174018343326842735001946636806080312394819053150537127976392608062717459775309387752873452392821285566208046953504163550250546092724730577737965574030993217138167118080945563703281953065712658778273456133686613404297242963006342085325008334609202556729583538938368679221329872182832332430589873622035108610109796917188460079876191071408434987626767245333973417779103875676071059932661312201664547307942462014239289945707213834128728207838162463167855356171821264895420052092304469175889524002182264092355150902252952961047877488966117212742964603955716039701348903072302767396559997018200654516669221631983414894891122111099315031661845989113253248138653576764615004459208475565996087384503793769976774925796444709394341278501904840618770059780952106464606003333670482377838719813531290236374378481859079589290809122381815282293135873168431707682948031223146623905967906198355292556157352112388210911201734668931335927934087517676234004474884962826731833752695794299614975783338253125255543130967031732268531154385826189965736984641970005691083044060436386301475035822020269282842304886725362056642198464576975372961465448943173598657751089576002815731858157948527064283729973764776788332969546878506295774189731243773205560517252607500108097775042328176441222493270120531558889791369920594346382650997712124170134448910894762688209092314362246116593646705305430451587556595647180771132204585438492052423156281339248137580084371204373663733898194184523628702738333496760030397509227904565662475879908266401666253959414734187665711327286915907813276028352498025241724299937010628978294638653746494917345223189502034509725098424318222047260344549171459915557250667062667521107423828205017076389807902623893962834268573549081249172470549034031109076566832936068902727280696450534979052046688931905617128873112085209989772058042605756033748406646631570010782703350553084572081345941142726635197957749019292292829154548037763844700627474105950140517500765640669730802837220220460120438215009630414460578695691117848810275877318173963996733049423325532578874141082552298546268464992510322909861846428443001096268953004814050849076443908898983570967412128412641173596818217960879985032099261033541830681133233532645264606295428364986589405757840915776460500987710481943916983522587496967481107973168835414616789659448489254333229314172820148634025828182659251733264164384348756416145844425824068592080247380641230068331153327673986191588081256253870366928933356696214306253135430545684788630516883639405179304898276158578342055375769224331886501977485531072487770110258874861427096396546776174166958492340018986100653416990811665809994624850088835499795065574879974100036556801833649098981516500429790892107547751283264882794358644296799068413606708695405899905484123997901822379030291763197528539759294205326142299798374711638468665690910311518143115627781025441233280721552152191321018856197858555122062094699790543618148238281250979721621453413920843872906311926881547553263112791729042582454517198855088742364006340598253756154834641362886371224268178513267137530593599168853042900304219403175027164415141138938114905229400526759747140342325086715254274914917891282251272928612540836735130893471794424046548464179557719592043361470439543121523344521476210245686071254343960775214611782315287749630761523778227047469583761778684261444450225648257878981760015791763641599403048060932247790364205461236615068731442295414671311836749588046889579113211539830476187121910605612646269383131868208217353909339102784200141724069027190113433066436228320221410158566131026128468165907807435758418013421625857870007622184208914367965234781568790433636034503103435020834332476616909057876728754387504102092210928047793333183472518566428884705653585926512737753482973727183786825183580572713767119346615964521796867596310010548840807546755303981587583030288557658949650958411903588823513924732485267115171111506676066918066904107719634258550982773530404220110548665697912977833960430447353845004909911303279635186313541411818532323341427386278365167776601690816802424616844372740452859673973150101216703623096083563234019786645793225501930118713004170268183349103077731107258049178697300463457985489189438393176018065479038550718474274887817575086539393810822899974631499816496110494244129486286210922826197936747790633981677436502922334909921445614737589944467848167246917428695872001088057181255744648122517999075266657602834478853565670186154923896767519659494562872470384117362888150364029965967321511631733219151646648038721317233633321508080712014541927562409331021768426387190218707456659284347808807427328083451956836427256899097276118727729790925851364721598920680287154381941836104009691057049672371739606582800181761067894097394277358064020448784606906923836673383948698745266794229963423994725524492217675161409118905627232013188685656338426552801768532063328165027051885093188228264581213805313044578658546746142243852544028170454888159624837598130368817059982907399338079131953092875599302534037534493538446263483767146866060174148713795386952822607632916357578542043442253219429428321099538927604269192415840408547434508997663277672854243638154809761320114310471289604552266693897846220052787006616578624182856501140506091084553193785629349394297414303270336850138097988709288401000509572835435809496098471644365567323643258614561643369697597132567632158175318778837999671839372662245543698057593976828959984773233415435110614484300466372399048661686410077202935179284386940136863785449704388572300309149553493702483507091956362919340041863581931097116556493047725365455421743723623570007674433424122803249367497470961195116987189325683916808680378708883441662736165417044104473249366832409588627850687122333658134431163599624702558433801653096051088813185446140313909241457065935556468688992589650037139142818929172947670247414701173860669311010164367989183440325298136820575396000750684019767501164956792925517084815922800484881296764085623512338960498369965940475587228294741535131222011942734064204644877235033588919207704169518665336768532484173073783248157233567136746885034351046815853017957423009438272560042717062540611876692207565973507375177436645114212562584030412691717763618931610915972872303802551516648509638755507146504171678990153900932138323259584691324322445651512868889718645845854388164244305149188431015701151567910391747870206148745784697894832268425395418290507249875083846910974279706146668262381271893604249107564438577643851780740049411472964527062771993809387145453729625634989160675428490483602156930327341961239646522249943283140221543286207711543096724544848002954721636060531469220607463863138212397172874931877752205494667857451044707701356863227259790759009883682127785381590223678669116303161095792175571797620387032290320827969308698824248183944550825525234471838006474449803075414157934930241062348165743261539702660017011157921274481937985448207055846387082788797329233667034437233471197917264835487601770320415362928717414496423549113211695455692909178360678857487735776875828418038006354319442489301195133382402231497874892332937811572131865154751076536650998917540437642691943319263124635961597537132136707633356404674604992885037449344401558103283725036326484360310981146909977131478778018348347425461213052091753907915953467976208479497457165458471124573544646802639042844079605669227590988506218742895372976506158292594238259046507024869794439465964078963822964111928435452669945156056559649097341129029114756096175758524132371882206398939992011706255622640709160311423308231188191305376323340076885028781525202829935553883558158160927610113578459651745964228335436910472042549949025258311538597970500375119838670104101627072163197857384697950759182475740450631450214106612170997288962680046377621239356227730467426373820281261258062395954974691931505187417228257911086265171913509432414236012383216066448666187211182574810016537068570808818413791299504100898959209291430086065124527569894865612838041952626464158034586747985578176132748033861274112722784597871257467779804995963453291442050044388405899266606138172914594468742554758849503663637741453115296819390421337598751891903336256678653101951702771774394473609978908439554436010714936019989268915387978241077246333679854536330747512058491394803909983398076964890933677943029096171911865985376850654443993007953919414489685783873652562283685243584750350819178653616011626552914610148930867241608740496701844014528066221528459522129598826758156410976552628770241509485300309323987601466339444176878758256137011100362314789120747009903465621525199388145809956318647032828003017282172015307731182401368748515508733143423907070173838085582542285180152521779607961296065907655492689862265362950466285474782755936658930780477886389090336529863324662696936927687837789470702487998616201771422558968301383233230169332257233660206569418285856593586468502507802698350498416196978557192510485874990688375457296722814842189932584178558604923841818563201086067160968344724441371049096888001797469692690223781987121167691512753166288976381253007350641933574825264025196753256873423240019165022163599267201932387856053111211165217441282764857399455579732117239577148547018539455108151335571526376822119697154345888978759913239530025410666766911104839968780921934554982211776977415152180005882017113007535466827593363650266898039402981957034163883880590083985731736839905885112842416114447751696479097560491179994839795262025543820513225880954754805245776188575745467243170584842241959308797281241961893171970804687424254056842803517397532607545565014433309970853011067474305622917857090078363035889336640595663291093230921885808968880751193923736552928665087211296983891823803890114652998140874986824459128988937101364527944335716841987723322528599815305759171120619546222310523243839039799332941873721518173420738890601813405319180482271900626705113726575960586166225971757538275701878044035387906544118985157003463459799343244838630416502111749939894882756489052966608837340221329177491172025249145319062518279966184992673838284882332604331754190432945176816246198050779666140738272598833986227743194784023165167805558842579703207467235554780220411280708039266250536276878733067671736423919422988817705809714648934196469330181263549827555496868693905679050829659093412858053851047964660747198138188130683685897238526000256677147195662487518081513539939386179126216171485111294774146481829612580396141267993063044463749967182158007675376944816190823961296093686554998317434166949436932332505009451780267639751513791520626930465212938612372074016945991400354008330629929383152523238887212263826643574411885029092348639859000332586959154445863501739552745576804423397028565806595815566370324896466397936726610272282475993933598178347483193590385142759219017921798481044834228699343472297454655920613394258796122232673830455769241558108214298538615916564285076019111661988037214110511261331618070094033661992259305087742714272982504461199974799433750797080076871254035560621749906567237988763353688432196990741369950112206527342061175350988229582759318279612297846068519529926583724821807362382969421651362530729455616418216991249312757786572467056862908887491302205741719922197869800814433200122164613967975345441383039000376525649343844996349867492790296817399948260954762569718694514893238212437641820600804189625213407606125568707549642604781839768243747308942492849000291952450096861447210663968132834994485431901028270385874972224983458975523515830066883811564655243968386691977064877553322724849876525032376245382607864126638444270495549937219515477916449800755793071523103281267362414539699660589422536020748450304323888850240348449785145011499671133733048018047973631170365942468589417970011692660034222268415799887793121893859566020840569178260076419065012619922623634207027447606627575230258455811405924352611770259222144019757356482083129962611793580776235042882262727631922535158545879157249916751782711495491317760780798075016756212762710434560989582501912032153116923951755472392577969259112562377001228053478009609165828502549935858205504717819821552437130122170914011408300759269353589633224402322839540955889629474062240861426105202215101147300247026849900157042433815006556960234467861086449441279925249083393751703494132833444156198006212464138826288584107544831763216157937718370577620928751022264313427300537288402669506250274443072015275497230570380739123607583486836859681090147818048641139487423696810951745028787266340606482959240942835017695072269154914293010911181860122516059271498655049561491341749959838036616812117921133784389076151558995905900158842435882099384135777411989210835154784087399200246585466789515611628808516578566640564065048075481956489343144895406216597398621532098413077425612934934287531489923110695960585495394949457477655517521128689923779639681199806552260255389914592870018296423204602004511602703427388816239810637779119133135072647261452014763354585730121811281520986341814614487482434930319749710099686530720253639440181877442285791284442561199070099228270908626515552763097449556778591689772002919213996688846857592667034154836638725569728670070894847621677096767084839746490441944422396549136386247384678337833949842913047461723440687162891670833311855183655163838499325545177688050198684744296389527754165160972550207800810413866098250130691506511065220090183582786149496128199561623094360561481949058361783673259016538210987926154974931842653400624464617430577503391728745795646198696506986090175803196971304450764521855370767764258531154717504331822157400039680232462195992801735821590543050485077942073581816796507207657409225721458734357786407865024657361696765937483031813563171873018247797677311309298706934256020840729131117501366368055569789130947000951018999556149820932298296124679209177265115745302154074468585287146870542868402644732527834616430088221929920015366254329516001985696948019744523001470875489757253834763176629074744518476135716582401285113708690265323713557836537330134671293054149767267597141093464203489789216863492461212972523303215332614459143702441032476918325604630160810009696296785980562124517380892904944030950545642329171513779842470251865561648784332736254691303001820077260238446295728801844941581997929111944033757888396360272015219317452442692634922283520756280088740107200044528899356190370621174585240258233646997393874610620616615690402789345811206579123050613660784294196653650807939139773799219150264192537876510367880580071690326067504289631285562105814424044327446568713194491184334470025295276646605599299072612282252024373646277131556173534621523079427332492561390958887236822899502067416564294796167093872969203067577970603151553288365078261974009866927607542412250123460735561343558001823825441874637761596052521490169744414006875018216127274205180514433740351519989496577821676284191837572299576985624368347591217688910772434483357608015298941224658052574120254549162669753829651909819592068764275771087089800894846433322284673707481681183505365260269754532767629207251090922877748503731261886454269904022851265453676478380991393774333351453791759812428931551356161010511746270085426598930632011381762697887945077741792664626361391161801871843329886719713760096717195226818664767508713695120259787804807934150964599786072841110509226105842441610999541487587296348722002065024733355926719723988048016611511004682311122172996105690527030662832479839439912333721478159747744357013440567639895448903829037958770566197518023740419619562228273798249801942711570560875952694108099561845138404963316084322496014177040881668167380674106076085144226887669059592808558366956199806487469126739743899189144628049123093317793613402171096678974293697494886157337804846028977309376310375731970611767537772238796813531687812163122593573826352522682108164454244020483837544858985205192995756043998044161247728680985851866561036794626926604808107518174166753688053330950399403220755292501310425767872577467351116216538754837156578910809003310645275264135045902733390233993795274288459389222513071159403318272402339709935769288298997187966970842849799291229541905414685214643097214924632742024283984013673329982346723597603411306567424780210887650560796275933711584313032835883643599097204437894977360222071854715000460073429623012723247138650797110936621369206249812123116122370529289953483819626644723538955655415856512503394557360605318304254710200631726084155660598591165029419923330655483415491411168604766404561102013895063630235247427468838178673314035759909627393842971534475394314618940834578409195621474471167912370600450810114581416126741620639156268961444305564522184882860151090164335254317480618547113846603942312423419310030152223901874364418673599519472501072585613936965626983236835738638683311404216318981322392647343932039537328807431370809171662593995417613862987614744957867628714540969007239849324577233925787280763776269934862236978440158349099949920431025296123594360061520956274919707479607595715136866498529606432621678665943323277991856987811132658267802134815887183619894450108372886205236648375691917494403717190607820462171787716909505208096906837131313338297250527492374993980349866587275593918629885725510071175062393906220344537555343731695324764257296913192154043439656528478826231470366877225196589912962914307473376412563294816996505448717288778710563918205210166969299758413996935451535210301426300137859297347348758940625154480628723325311677676537046469486240108160573510453497148419860507628963717389528744963583830586054666161961178732425743313451759977357619175078465839787109889429042114037723778426830684322364386870191546356981813394901482311572257758213357644128067692172279848665594968608081482762920247067616733323606944144693497716253037030471092319620278791492585672407599990171428136909047747476723759223217012571320987809274114422744697457052927319674500711910994828126832850566669014691508265576716887476806317772374003019448154409225919406026354594426965868468127263116083916111153382919590304874474963900214287670696558343730310468283042568921116014803610350091442795415747510711510789780235637214909935220321317576660380990794029922408013765589022977204485305874983232326437060106863860346915528537808210366637150361882642773645413398209195036217853305159300213206507796177717460277844590751436258455240723643363055472766817217779082338392488916598444137112704832842416454202027104466362808123485422464594139586584058043531561562306375961018325408609358288789359979349546721428416679176328930265663387471942092400201043264327299808085775803352517245705958101649811564851318400123728108892343425075202001160285781602014974041349827480335866949876339474487730836419520063329886680042219706885908352553685906799863833716548388120690998429092044656332280840601046169970401898564049881074070620311573423824990447486596962624207789805543140874073165552744195996583892542366757842935789568928230573445539496333030572313667794489048305537095505660075598877330352926026292370266589913688816173235945760486285039992943744156757492785906670141816351391560119290960471091648524239880818960275638768446279358127466419938103339323683771485752614162954930186857093561306477290711810233993333426205398600835448946340316656696188297179728767097641057496192825400076228053095043942708472746331334868054646537609113024764562837286759599828608446735684801052435542941123274463443334362740478512993887354716876753114353090781619206873794705270150689886615719623235616562140651850191684394244898961994655067396251146288317881160415656464860573990471041038706348566089213465460900312037012256073316625608226676035221348014977035512354120288274486426799880245178144829097415738837971518554121515941173535454506232587998110994825139948200547154724569474708567594675464160302771927014269612820655830412410570681142736153669023172828367021578162132309522385205197522056949634014812977565416669280859393427100896144054342404047563554689574360850298965183114645611753501892471942509133011568326462763246292993507413204225821830291914272817873353638482931941469478789993888256782912820535489108995615468262601487562596043430953501882396013525770912988528664153281933793807586784144467785072639779442618759983269043115733981204669845799927243499334036278105773244992441806724587271427857131253501708123792138548033244607693727715559895814942058408432046165263319375049964515674446191227125003113825842693170585163177736310329604502627743799815427901065727115678381987268927268177393198378987309485494814101835265922119340867955844025433227150790293508376188969300453914545608497099603289003342641040877007239457503561678861205459744561788526886924702071466943267085247569236500304243993426030576865561561089189648041788627746267131461162456398686112602498169902103261416645128602262375911361723615970118353504942081830775460809952949999135839892487614444882164018790133608499676736931176414165281348074132323256881930368188789922423139077681605990050115166556373700759319938547817614485108624779777218350776011393854917544405853273807193647592588552870131696444540628480200208846607448813035807992922645169128234723276271234219533646990235464542984141962954451570700594601800320152434953911019996906445420004059600502749252723498240967481169038599484681037319561282144656175009376224630920036646218474247298575308303833131034184361251718783544973660230410836782072205444887431550439551403909725686735823801021891723742887346879525442705693475206256522886591609332019003738064360955843731469742983328112475785894901503550690463301027416403991302871293830286089729976737918269930716753403945296422299050836885545275688122208499618637857693437079465808695813071024816146756675710603676372697741125681889047489975203089257696601008514126750040139565373321919167170849346297450283789230562326304718438103554586603199105394732449813156227515454768811510436129115393672282580405545178357818479480922160040402826407150319355308262266177264713107035617149902328448061687299846743262614719589660332682601611425810852873480152155538652307576924642075252662707117165360856654567933056684474964504758678145346457000294255020009202940536181009599684454549557858940881860579941807624125836162551754429883174866994304738560416667905073359227787738856011348649379881384689326256761803663865296282307493430231008240216824375609535689026457694453740388394014205706746930125570640091265992802956036014695064259609816979945416540486233080472482030404167466975349263063620817083809743720425797208482576001505405996643752648668805199170070855393091134887529417027921482446059266674226213039631254054149148389160431818250514611892412762678301391004412682138457344653746948440553021938382267124102468083990356829427485561045589834353671880086615260691504210697662964811367038890011925742297284791180627130223594746222330714228686387140393890601746765077395649232802806198469982271679170274743168040610705320643296721178416277553567254107395532153756275649016274075799677464987936157668400454915962324906781991389992126280578082410932001167161482723900209723743878281959580045223534809654169741023794288224944162624046358259744382086262305779036428265352548004575946763936207630602020767843471066136415743816362094916732612163018868115655387691380987134793113524837620943315975043123941495639257823227633694047730009719456246919212493662919159577237658427860526350308715615142414021568608783438430852227383316118008979658209638759719105099945428442256003573400428573104999285170521172157101328359277100633803232094535665751405003496065401746177414982791720215085682352482722016416006358996675871150237832093190006693718147379069073592811747456108699124975590509612855293394485259953471608932991188835359352615152985935044272215117127604441533732932003373660022482162573319013455159321790816976397479751029555953668494693119948225316213763200943850816416702919717168186035749996145908750098112849308818301449834171362093154084404421059389510903733275010907566385414551185866309692596659083134593048887313201245259680578416435354136697480726005248780549282666390503445674974279215026102698285398797686449705076798921034425771134553216761649273991044738130973517032890964835040566625538710612244663590673867083540050294659998645357263716068406981043078502479589457636660542118971482212456769598260019699016005540139042693936943865734202043637682687220003819727467096311046220007323992051718318761312919994580561432005793188272888708684214195221074853394091082438785227760623787655629453978592093631212612832388768826449063311183436286838918612437057194552890913710955336967283104305908672173026667434318703147417060562691274449880240237739646295298369487928357979012368525004454460925184233982582226605710341987803429318246090972098739428963770023698210601783875227043029803939219695207273809246448080738185750351303695358789209183418140435589333863179699631640559067847442558791152630107868454290251912056321041133029448978236489730474221581313954130213760175840350051982804822624718931924115554775888629781361411405527158697583310785277804657183478653777195391999094737199637959139838954163742075945108456400321637978945613052924461399429608456773224709849338939200041984479720385404086262809886595217710795108093739629529129960979550079777931093198181432686019966394703458016099283182816073308625395496762524236993104976551159539464062980378858139281353878806983335498663397616241247191047684975045166102093553946474530914716320685886675356654396846747908743642720810031046808050508049329623871074591868691129292197814452167836171181060714898172446589162886090006312108235209259196800297497016122280765452379471483529663967537924138018315951239774871724060745939671431699391702654336847838968111916334516269132402480074618209174237577917204815088547752302570776576089668025426925901578069396943095002974371853938176976903603906884936153325436917396260473940121828883520895422028432785356428054723546673334521424292577593024325352955870258822889711983947562004663920595766311604345967377955633487593351473512315889983361260454993893482080620869170778855821577683102303489477814758759378958174082139542047536886420679318778670144902160595723583478519811574784191791712978498816153711138229387851994522497368050679388193639669529633496404908825772013939364924556536595787517887676773508765970445849523830031909268898803427247604157400257694382129528909125620265322874283676863352309344519403844914005816685647230379849854294795527282764879275338963395408400627346948243975205896123050503670864190697108797527938829271270126547523886425359845984249300806279446868875555118563304291856474250303175555540977613920687667160302802349039421300794252430760014998181128449929773779862960905093048594850065609788022373261804740465391870650245283760637964649283094404661490112192108775379215593229350031423062781722333543124205024390914117772653211643273354081358152707054467060042230095519125725815197111024727165406564731135526059613787034047029353191413229493596282884580993325175711341838045636252316076747678210648862235240968781541614359946273880954924270364873597164016673638104002026931645996926061040335718684489836309107589889839704700700927718559232764595483451816971535614262008571348275444074720893267357667536500678014737201981231873764812572124482115742758312430353959306325973718770747574723468255036055250900976239679865158775896389528972418564196021246786797106138906363879890884696702555334550790834200039907392874425565176275453883017425191036486078616263730315953609365104316304987449311977628592764656929564756174064209482598827743928393254195058618539076234445744363028536451372692389196376115244552878273518905581451233829340160968698242481591407442775222442797953197307881404761743829600122680363406457031031085281334865892299688662749146860175870782270463298539958048456107434830357451099251595581801325424119898053713001710858624959972870030281516982342820770814411456819782550813752115773414347064591376246113536486885329122575322655353493742721907014263046159904981935879178815674129574250873091017841697871977668205971167335752407261251252521631117614242657127407379816502264542344014289050752957769491445676317163774720448997840897993808190708649773679781780086106565763352790931456507424136846927890074279407571653250700159187480281252726566194963100808060843334984009374500722847894249917545651314498410538117855343867900548399275668006768567587017646303648294622246343902585374795922030589796428492771174725076593475480715739825653431315253290453020267799712908535556102106367035050364657883774821871390090959877194690318899636538295836269644024123769782333533060369849643390380690266538731521977123433990384183159426263552137042188461649257409383200922842677395282049564162249604568114310168553066604619803711162251328927320988720723996097070759737633240685417984843518155752615647480187150330797776329785769771362666099442230571379224462214127551132429847199721221056938025440565434846526152727078111271826980804354323665118258497022239344500619144308301659048748730202291434987237345683007430424191127314451885580860330922809972723655826271359826671320913466353414804673467346378694534510118723163305717458857881600169545342786505294677535958705159024701161749113022737992378652430673618858177875033096477496807861860636188315735920751738370789169926018603471764051421610413417950774694720065715505843431316529062602790167551391266282282853811860205417507907895699747999481811896596630925920081531775908229807674347509378696546845863210371471277254759201285000295494312975903876226064860883051112654040629598368498324926858430416014924634811741005546823807083147999899637639220204497995157838080472013073142613749386835728295705478694229979268689973458800160683474490446012710220097076322615056820394020453403861393298006679743068739988440285544407511613791836006835455066924865839677606896863171835039411057941354606515308458761550987569591358784415770598199042289492952696748395096731985046733617095834307634217345761639591922287079853719454344288594522038039500656128684258163354239614807603383105811376778307235084818786523298604619881937575722551007095688530247051493131888747732688647890670950026036727736138695736805339196852584752926372369924930785756965691552497984527246888303027220786565868094369111629229614421129623830031967334953500065743614980868423095456145595305593819464370538230625491376094357476022459186338205356887165027510433191925277451477931546593354933469462307114400119568915881122838134411375148416463875027513326049369036479741910961896364047546751474982378715576641775281219753295088678426254374200868703420450002532512984498669159701915360229598831090327460301018013452880149779806752052462833278087262608847305653185579305764495724144043546845172824956832719846580300021371255544371944592226662054600745801556602037230681794792692415888275146796816175868451231053242781584512937586103605475161382402528173427227993950016333525599825488563950675482916887024048875076879556063817966280607095116758305327326442653024009518596601556043405400088827760977841854869089893918630005155061090903069398501511721484520062496104436432261549020474613919616719951476618951938916541469786122774038429151910743712216374123373492161955471625056785512743833513827777513635341534802458935146276808220157354254465190196212655068198144396540987496814886631832844679752103537245968039408787242889105385307939870299680833069606368630530099300664995427670905253691151175659388796161396233351848694952150589363872426485575340595649416283262218441100070906259881672771160850878222104827623967802415889356396096576426991473907447637934034616743461980180700260403779340618738444030757526895471139000484526722238149313718267066312057359820153471884261357179611316956181536538186126523573290929106376678187474599595090530860677331255737214259566063246622962842088636705087236117883140351028039911423040465400965550775706462211667463548270009723899730139892509243354030573669235110474392369162407756625915311884464286874602942186578882170822840709664108167142608566573295291765667743459681959654886596665839703972037302171619691843671007589135912948416280399276826082019311113500685393204249922519713250473948314378417741484009999571302016142592214865081719198812798882533810792088108483335678244843419863390710233330557035146304062399990084899327384797625257057847456917840769499038625363446681128922441454794011959469921177484333098320256086105389607284939158617536048792774435090237241788839804508783555162674792544084480667023507818682031814634967162324961122925616684398119870353661416088610380011312505727779327487252163699930521309879533464261600697115400934698691395777464262241840756982480157880026476667691799050753465846059434457208835758908679322465300498346213302933055098517619050004599666236014228113715701564811988717893138260048194272593016523694282105963063023984893970097399202185067326991321636027419852054262447932730242209397174678511093517496573740353948539793547443938861357808290879464955296263888038582539433437520522185380319425782050252397475394548640914640577697635609356822912014449909513033542102327500293901688626833920897782349539097073434273110175779569203744526340825235827924911811683847612333100740135418453788455982815330840984798372085699169710499592291868440078849198074629739445861680093833259643163736323874302069570570231448185928062420664304076201952587273697440351169522963449164786861861459488513925218729545758035533865803829572103921204719909400386479649236225500056990746311539358519332513486559108581892522059107731761643697825833413714993944409634763620005095979352939431020730533182391071702594356866540125916479936224474063116805402614280401379332035539603660327475705555616160314850201415177575258264442022326496305923726836440453478314789352520516001689015112193587107043207854707866397773969418322681976375520683853549128577794701033348121178113046836971320893845417806162602555110667615583820447291847761789028622652197449355893730508156873160363282827586275336942951795755069673899256986423798478635019330752212632153239761732685958217583269444874015920098186803111963870291466514456629016275020635144852652947429285018152656156487839501876087966774475029645680330226476866327763338102558895863364389914534037720155912978391818569589070569740459237695586252906822148753218708847393002592295942804695718706699912176379540099478823015316271671405790328620242698197560836631873960908382034155583503683163814220362178639660337762740583148520547469105841704800295071991915353761135515687393396235591446239644647383671676599345280133259279016404525934486173591063235561480790353843580154343839225296946343368870412399405300175348097463855854493070169265454808445782807748284417863559877814524091091865695839729945119800916351176169808431354214354015447498458990845623879665976923503028567967024699136294815363801628057804127995909962527222932311222911353844199150504375200461038346312937427146462501289458035672467781042118982264155693344421386336562867071509567852702537374765980881377976755110414538381478825284904417810174760680249722593126769113801622231146944640283318519542848889404791045899028152077172446890297547471982253931883410619591460388346206860912350637335856068813377069054606404415026117355291530383720098798072524914745843556315534474551536680626213011441088308276452981524436479875164010978582161616200585114234374412186475717427276207483230806733010600258252057532264783257490356317686306433732939053037010972438397535204580503467821375502141563713193338841585664867882235652546174046411671757090737604999218911478713622483848910989519928005796126502646115630874584021835462321192654046348938519510361822421916501159492456772776467677765175671823255909913470633033095004699678671277097234086021787236001975173770619992847976827114884580515289571850901996045196667960627851872982207719753946327103587660789979926815857280965040238917411306418674853915593641036682445372501775226237842840708290736930514107984929947362133711749453832037532076056757685680142427629671767343305842285620249208521932925620318007449858960542710646185161956612943476438132239462536348457598226564460095382758626414993866413103174643938757328364346139151036843297143395168554003419916595348870641434693227219500690977461628574954349791500068632872285461251769455663660546411658644090741694969542351031185912626903134752724989485407470427348579120742838476688345981540759820947306361939219002117117947383412706917399931908585350750370448675118009837926607920667058801165929823814615344398594576795335142781935884308953426014742524902065397912476813832576499660147349267876295453187346054046299289198858599475683992788729266383350601322497781815888050547809287763466640236001276529379679004064827683041606138047956485735615271779591994624021568318620375040143394715806883950790312593722608646314312004796392054237917708341227265675103576395100208366407502375948244753364506473602983538154015213488600683234130763407463421922806164282280669998194979994363379075841312108687865742403395517183043789185731648022583038771347884532036423808156313640180171327387565258438684537351056466555890789508692281685892093441630770887826776090776343375436749420843999240804885348327876054517154771227628194097704975024173862803592067609283246444566889688868518612082353618562036544160282108325161033215279105093768901222837435355441136318437853890373892109881714538921068945354949614828744777554473408917604200547047462071643243984819961549918401762371168793406259000386235866977373607369028803591006613336936077222293639446998887847085625608638318291531489039954164646419961432935003055616547590952168198227882388730642511351446664602759008040237476086144592984536230791993338171856249753792948044042480791865273148850300724611169902913394525018070010215633422346571147224189369642699319209319853160938691596512006577939322876253860101956375517716196885079570578200882149442744832871362553429857488554649721374121115463036599626196520373429439613302574032589032216853872283507649498175356853157086600337705142892358879206954901449352389742913327433132627972930352862691471281830217135386283901029780507818478081069890101615310239838693802153380051476602998445942303018431194457181943205301496129612446501357118628048162227066741488421785084412118872251828844136732010787265357483919271088036566061541900360825729282598999964245240707437365713687576251883731195324068498731453328503897808789445131691179272971861564893985050127940549337026874072144747832308180294298300055073714425038845532183144910609274128296764735395556859854258349674915984198660739185539262954526177275585805723910647906683819197625604518550277240114554547505894238945600054603058258147876233368362703289902622733166276043297896289250532719111504765039323219973344989457267546604266823831892615177303908091241932089188965170447648405783348571668195275573077549352051295082500733036149536681035590038183379327440626629543550884491701339224395032194130516290781480719870983421253253359193318858379011270244990530305889579320651672401902983410779609425925632874973676311059590219879007282285310558244903704070184293070001476190808474206278832888148301420437455334483608249924647008190762254699568589543970706192328102357914888958311345195022865924478832577390794254570808266908067179960645527582665857827173212266462639894708939320005272190640995152550295953881706617916462562110674314663958286452075559154675742263179813400345184342780309423311488716811273555232744920405534199429009540555553156787040909606113019468056914347075417317485486320162493825879165003929098706934099005616213036446061194733036808535438327440744627286057940419318578945467214763384947238188841035390540740093519006382454114398638005194318471554002834539223154234053814155658736052171152799016805932513670109173548718464176751161272191892213974087869991912093779515860948811747554267703434555854041938100758935449540174995964294482618938568037935655498327842612423976738939059020555051062933609934172821413710439819177137982345072642860319187831170890820374872445665489128467327592487499842897098502792361922706207095311369486297722270852291168649807895861483971830636344561463843647596201062399920116365219922391555303091463037461625440282529687376353160811666107778367757270187332977542882887139495647103516540484335003613145063121476140229721745495294279360390225511545051790996169464712545920621370483639671182954747732565329424977812052102165555981103354038548144076235705339715797917177634921243214735342968961188212347421278609701106707105867546737630403172540620243359527210958571623107954244491320270253169485048875329063667459384725013655132411375411788603685756846314508435318542792337088920846954878406156431745609187280076119993587888818433841576544086963247883290199420621434042119655396952205144947226589529268220062608649416991854070373275578820822092541651468016607903399674898678207339580417838809343343998836782548167150686936534986438891581272325914087895646341602104186602367469378937610562133159130493088860545887346618119495053451270651102474652165496491586823561967316780722407247328077730537381231547169945176663820635245090794415261042399091794510726741034407085714531410091271920399283953163851280495752130223001811280098813354583889285392357463305717440453106416951345851837635330517699010417884224019065157184195174972080725375906785370634222509853281665338238324158992363533409331277154431995095165356788678794719338737617929291049023892905842183032119133839179765852006498463203192420340652351668631015849392132321427292163459161527778465521405156876516352115540846188196825648600424820579678184282274862461097019144092993154759446088874385452329081485645612863616458527228213979608613252276676910265675171323183894025564398237820973630337629896333124137797464271475664918133857598017334815100518767573447652120878505717308169657911753753173036237737072943020695596599258410283453147756544799419766151878963308569141904329999704357772391126289866811064590639286584893853643935223815604826258785121224113526541049906650400723639698301029840242274240117487388975207155615337822739876675320366049146103242491284400150171557146498844265230200926551985299364441549555142221538417347967838477312886263857315454063365738204652403135359370826627124651154039763669706784804140677627861046116635672710717369737460901518880461168907364248782595151077315322453140793911152964286110920562262031432683187260554854986569747569542268644671081180075392179153778815732862880009416017609370177707284923037932319321297155429715756541538892813628570282292090602481965247952149721347785670555674924934576720749793332827924977242319049272059476799325132388386886855848079336121471536867402394043312152492469385230518420198531348374081629125121697892931216844574203307621290104212210864048475655656070098035635411115876213263127579549583152451684217924970700104879783273071930813470130495844380488809410918166825096708637887149563780762147452536641928863459986567513260068709289087413359785213074192758079319803755104270941723204355576316733415485448685539808912138219453574111038442411504372179505654905689154420391751078414827246434830379317795555297247457998196058213521619337184267831465771796062836745381527593603653129702081344662563999147080582516881289040193870325526487619521754003517436540480615939483675110103167563179947528823878700582101536199889325614834081513394408349114040253889363938327169194921142666817886091479956343313257872912231488427998565184840721075476254582321079507686032202185151247098277202357167206185115173517704946945694569952236846471260531854671260487923226508183271940770488082739738038192248839185144681947715856769460751570793161459335716858291691096268730667676794737071491188037227126603710646466550580570915193263244053361535603520787414325456146813041056943257435422717580957865542130147400797003345709647736397029534000743701338993954083646291434508858576723238809186094936547058611213062024944036105808177797007936460052934166213520046801727657392027950073931637697832467424697626518836061383383415267484652443716114378415819526164929954370590344450782444614296072644340706064927843296468334010724925687370182491339167369376066764896055083155172274720747934103461281714393098316260330925369796679978319432974267430978790855795386533485533533813914361450491295338572132266101220441264373052131321661519740318675359414042436071720625899823485884419630317237627175939312476173662232832657971429536260027371453290967549157841004949541367865399857877718161591579881571059259052784536619088464230203988565579991414350080735117655336866524907031028615567047315701904753830586153485723052818045689388908982526999235696181198664348329141505565774854663084527845284430211865571133276658133286193540576638066306746940597383270300675979506814993564759456272163552239722641543636401461878592727990515123869413310932298038687623527173199838995622668874876660308962762486886381017892649161932856467543413050747643345845923216295853963052242247283863313329265682491769982539562203190189294707003819825991405218721809050311823048220106690515084239966770850273604943881234292264708965469020240103387010377105963643190995679496107548330440552980174040940595709520644266868889083655453333473659583385216022815917525838190446298992380727039029569265502377074281918126177210660996348060897013437682044706564958560399685523599865304093417838568146489052531823157403053794724204183793164179839242689396162024438286178790751132166690827716904575702918944082893703328877443942132553142336710798182088639983673982094710982899226736693135684118844025778266497076638772613710739453706765216756869621426812397638324388987421744423348538272629932512056336970179352576309382776808490280415000791443352434429848710889564040149540991017296130319524420033041728464249218829565254523568163688254786927692108035258898366866396743071565690201425043342602743323920194112247062712220097108061585285558273497245975729603871378003273215795369447739914286606044951893472423696090983431228271299865028405961517264333160478890335029288721524002277004197599421716497738103612574234084703655524512257198448857534149692400825524038677205389046252847723906868475567787647706371785861976169099746480099654815406191359282393184714640723020544370121123962780466874956227659289136884455523905423425292634989102658816399049922210783068731513846429609355837577553859111097856298463347708338534681623672836538576927269270621993951838857657982284629984330970540775671933211973355198670392421112215532938793935547289598047153475414977041847070745635771134848676215891154759723256414691492484438940850119471532347828251850840104079852157648462596988232673248920785138736676253066939173004370634735877331755249307547630069182109649891539747378673444397301839431344684548469508830874920329706977845789892733598517755207623401044930706101441463875529202171696400712054881225645374505524954885156615723831908963913069976701590075720979655297282700812706900767139533201117875063784315907933870835158043156949124455366384908301021677392584590139524202086651317305276958917955107290685450892782340371082130322332376490352902157230553562980334735773788462195407873103141447774397812788895995387440106248517267616873401032028659459392698354803474944779898690644837493302146840219808814405334660851660814337858515002139546855264586739357484684209625964287067985042119419229683187145011854428389619402548164126055395715049780028925244678078410092298070222050251650810355999295432844037148745624422674005338800525065358154545423148079679103357091212485099539246587047236637002675735083494962304431010679167266810294831294579998591492764329061617699876545846124624187293751838722055359339066634275453783642454596307006820149633321187144014073458898399157812941055370523659820996423526631521916441136790810553925426471140961130993126219625484613243407489187563957196464072805418647853603546126551518677318753764467963387969631905475521618972930136704012824953283234291654496792787977962699179252620914615100467362034128318147444174164743993327034078120471615160953510338267852045370748405363668900704315294169663210712268152957366624902542819310768981419381376430331858928619507544693687765753752118466775318670998720678453455198390747439495041367048256003165533186818663865400062958907286329171736974841354865240391814148903899710973937753140808968212850165317128025519791536860452015112472449136088704312353935188644125197171443948463553108802537575513092612685806765658619354621650827882646353526236644337123720986702787338804089142750547055436980800889034007144748119557571527648441183405037833724154770504702902826366967257810410304415242155152158958069569027449376638729802780679434858409986216314297855718989594129614887680814658901154696849724537598989414457937906890316411251948639082981902849605425503426875328153964365959796569972727748091229507361727747637831172762145545283293168308059222289035664210754292279738664426314552534726481645646531393163203428302374022515182389986008369198139316264606883540510053493826257832024266836951529729306881356795911986254719204065506936472763893115522064135848145371512917340243415045603311071046526128148111122795525942849886846414665773300778161855739738522394787871675508339629256366531537206537034015159704832264077422239278918173864230240359665320382751206641956682990811323063796635323633306237578643443233241219796297342761692540845412329773189424113209734760159337936200324473972069612091037390306904022175921851628845838031859362647527273902380931645265594686864655657258646414817241223962201023045355169056868068189251328679572413947573797916247086117897043578594421223775234982674295605476033544844796900589553819700602947558180611687007576046351099651957197479053498021182262569140792580816673898995625264727730363940211475140569471122093464702115243551304896015630714792802907203033149905176843393965449857060594754993635693930195790147717543889667511035498822742163582123007441709887220972733493251170752832330232551524675198144498791409380678205300933537678575025730321833841230407996869370048816090677205733500991910998259498927905787086996469375978892134862228324994526720797706264208790508465858429712501157471017813273661986506851529440031736782398963800955042054496301198429781750563846821498385275187813545192279598884959825472829175828750210682182408765941608074896553140549999672444589143008297957670385009663967863679492250628515539158880620692844852634146611484385428339366976589028322887795640296243677355433356371715662979973090881350359425639951562708287362735760553931754037866246488253108849660179280138690504284813788768494658521820497861863713715587477699153489660795234040953852004873980220072936243185749218826562272661762791518414197655910968648896855223455026003792216116416155801893567715850780226786723649765486196741611042240223720972642561656961070147913214350195264807232689810628690583833955961005705487334418866778057477907877809852950081458074117342271590293999535218988661450541491604103776398915567004247421085202998432687940013852616700451768891203001783380266786587070079327168118673671081762356779403502947587018620229277200590549796855235617507298692228228091246285288298159153817498002019444910141834004120294374573516694450138732113236865999879532378917732568641588504502918538596902509974524781791443099014013943357863949760077791008159588007603861613267863163877177998546804032742422197030607056416120139610028791323784166680054672717054188860238338814889970992489030754777355796207096054652793408369644757531899677874646038860948973974854449409595620796247718049707323405086825160297649034577517323150015935303072285363067107158845275522302215970734004756298797155576889034741739540570930735481251936095205125989988656186640428018156148367256313667798027330296508725804813055448850492793141307859071084997030434108311415856423473095476355655606910595288457703024304875072645050564440563500834047217378499695116111344551653334569245407239871701276099239927941443754371218291423807636248556974495280992575639288619129786541711103940061393227110053794876769509071634512269861229120988496614555719003155937032987299370802486472514156947223457706029386282409740900080299057318067071171087050581700155087648788290731928252285930101901922792921413568837388215706986744011269167963706242448670938815117519428013518937397251191891270255683024570049811427434074231580753790281357522098838454974825727340563219077797902455132941984868610777779938156690907810695137410725735228080301473806610942835238490685100787191662805286800483215540025711606721149729825536198872572805132607354947970048097650005797905764219458743340297819176247900584929943611969709549099652436915616108933787523124719273712444659480505559593989319840527938293037234537774811204874174367311807097865792124239054402678949258167409648029254361198095338281849881870549305445728816780250541324632149645022259109886805290233931936015321275870065906876933269758709465080429189707507293976485439568344140154370833217684476601537198819263791246971582341318411780182510161150859626901004797452014550106264164182445478018486451008995760019923291802018280308793465171472200921828289555037794642915659381739576190783099310078051634409380074142577202618706591729202894206377765933780694277507680133370411255810474413863233304583151506631085707691083813693279200951912237971149899325460026080453869595573229652977306210058378574304305195464583137914323948118667548974245499221705772826320127973905323532373081249880587994662541906839924253404628365609150791082318034038301797056417862900435217283036378120810760336742179859940231922114722179708567393647487842014589421432686843544992464559325038191823608396293944498105279460064388837224591478996259278126386051185750905114827093581209259994685897287725546813369482308996250029891298621867105657739180059256230283197318221267650142386807127000223762815395956350656040289061974872375348077022791363053388310592605985288767362788736781026681390790629355353415110973865488573680137822514417767177445136948445482816540414722612155319945780272641737667404626182315982331927920119967712486933915163666080790834134168548578469161982842348478751268049050723365500416820676306355329885114929496126452877112569473711039294062917833368786874757385266826538062482645014650571732842339006200650067021841350076664802983930834721282032504965445920975570585947575345645872007826381853385505605166975897942512318816555929071971802386932903036325536653524458860498247187017286044012445909187297685631916038562849115257276088452664611073468034275009328649906042732641985498719457320122610881289482477989022833464611185217560019011712153409425379441012840093813501313921630958849237507071952244116685684010774437521584878690270956566422411106426120306134823791720161441451155970439280574351342178749092514754080056436697627659257558257224066203077767415002938966980288811309055646931880013327592556562384311593761464509437355594894546624210122852427145952360264913841305973598758137175490757616978255767355557849944086523418244043141231456384592218314865674923579430927724194449857524685733373215968394597678867422812203893456684677978968238359424314371498804758611024715278642515709513385554559015759381328530050305870543872415629995082519374800352071973638612477757507489195779475558669678328790432554737638269596669877171819601290639312655742554921983108087725041647580724470387148857853131012963082978835822590549166858174574159486527119288457557126624032533341587827369843422629678132498902127466320682071975902607903429625059849615850847299007256835236687251737764896487534842107153875145702365921616674337266194956492749115445193766534576496204563429978616780803670058205176855899478846787868365757122602934393922036973708385331674656890756769505931149059054461379142368336624763614540260872691125512251150853502170939572609679798678684458063193801884606658000022691563205435126159033778827187010403453572362868421992941686237411057217459746200332914679336876429766893480390409279685463108418692598943055889050904618589222175911244136672450821293990177582218426081211554922120824137459870310200353613290795635685378432392554732571309388587070823211820517696306815202098194366761503084848755159275210884968508974870751658636230031589309021048563909740176047853590049074246248594470856173496790285927219983460634347554786683438503674295013077471882581121591531369354052673673747158533865471846297931726615331823344493637458759611417081092498760757611932599787350375094934087529393149262741616370017871030747267951591033564141678491010959415116652723798049412299841679006287468945014474202540934377484923203538993033580269712883003228181410997517669081604330769052188617479852174386470500863069171383382097704006505558201090165256503394123108404537125685546774052013151768316717827183006211415844327935541347851392212022950838176041433551126352123942877678722070599167379197762374628306447771153704215458255067539236687680947989041250071324368226281500922325468230017864915196557272979758541273614490874776577008306088720295087749675855116487968698408642620251422434870890897170001914419553592739151347054380608274797801958115485859208943486030688807238455583778029587453611651483448660681327969437862629084277305613075761776899813797236348568952426571158372020782930776679656410717968561093835015852020847872169349065628801601599553379667851076409005858420791867458093993959854084797297958802160031493893791682036842634264757663869845565661636070343386058536588895856933385678396016091486710588792097668184601155734861140585530302489570874436448702505204695813372226505850940604950903189393816976225028824745299132269389459667713946269076293394588120524753457859130540924694403823231718914891700142356891017518859433743874011297938805747707740672945151291247236250756757452531013057226918287025525705698382576780554712251681635747806052990416760727932347312875986621455722412624827221482882075907227903756044495621934559460903418874287651376599276754133575879393396674883163098653833413425496648711113207312247091450946187271983251571074675094986531179122546166295985048780352964569704371813600998291518917533677178216445153900822104012862290684636801624666131714189557774299048722153724398663987787077023744944944237918748271274040601025756900573705518760749255046354013884767967520805861489852347863868113677523464548207750948937768364842545487490104714457376316157658320353468858138298067076226051328743701779417808431516591348726695600912643880438667013046755559565304684719146168689519345140544847438321458089604850571058330593826844866631721221138754886046537204128398406681336025477557967761011270163507699285053633287287465303659382710889724454989715620975991892400631544634096569486298974055673256617737550246240160883839510606350652402087181773592584176470261676044008457778071609010391003265526338111071783373866655248780047540823331128549973218450602998719179265447123922251426450700346314508274695606837173411758895193944599064578669295206098148075927620905966130415440029450343802466332570304938767502404468115604878132446646145228643987073348853227125553117598904615740895962421284169776513732992458262765673193537848792878788053048229564253804607507638132839492497587446711305301084280022576147665429802728318516508123469783938386134552817989836985814473323192273975295186413510826727748958184623052674506797721728218843615534755760163277697540863805652935732562385082439055833293312315811892231941889179893902154906170079711482862514756492696755047846863314889455175962631439562520944560584104607506060048254200776973426496848625901651839528959562792772421751366822602302773601598184440580185203149527902157651839569632816563903917371190927380061659693109504439109179694136011422307766968300315409144641934232606170699231214496670398286912916301688509748327983315381598815494781596485395106866433723865784057628140455208860547752975261685985926477783064738336013203040809255075552659427946474707794786659418985618775075895687373809887326940275384321887162617894264946451289549839421022054845684264866636648258673926784218548178679310585759618633495301666857725827336238279879601131427604376468821683796118698330370013238426165335869165338301223195358176057866996109864278440080281830126891037976817953595978970194882324477660326537508741088705442434210281452653893460737215681291676452047640413587697009452071616453538002043882339632323892572955433263358174000315867889520509277054629768529953770833101670975642235940234464581680089247994590843166261373655705745747904621610500516738291726666275027295673072667967310852460879730419066172157869213193365547030012744265794152734109113739482088845568495975587124539800198474260750121659836051538041263521635981885268174487839355804613254888415349353966728977804964947578897285741879809636188655098340532421113353812378189779151594626498859791268995547258093586199881443174697833660946223778857978390190270823022969428978737797194541994096900803875823655832243531087256413705582913948861456834648155791764872814177241317446958412814738585716691369127260882784431890552574696522121495952004513478537717737450206605421664483868012310814606538422958727137541232256536893257910247721319663428555805674707952426143755557808466837714323274948204283959635502630200590338518259791005796584814180267496608492787981576019286657455211170806778591009381564899375931675782847598495574559047150613275384957028250984618658299958136694027983794415327687060077090621174498340655235940093661604898788714471700014507981745904488574341370483471361907819206435884510361282709194994487498344862338719627166990711889555808935673933532542188340385663280010358726422658291399962866037564879446192736788407401293827153917240674774434710302509073438825583081406074879141605758482897512415955148914398290777123457875499955497606190978505336237080988227707064512352871125413941324167754164797841497113028613644918195373814336308514651004984138513505123428016738703577609748355309092029439062519828415863871478481509562557059763237777198708732990696084046870475012293042405729477469893059489951278175835500663859342228843381555124323532889721537840661252541601596520912008075666826910857411804851962190951167822797330930832368503908618287723344314927123982884975690128378771316112443413207325990641811853087527197660772843720039289712259903032540766105138853465721277526965470659581380269350832058419841598418310313791154295412161416011485139193131644801454877630174184688776211689888719048147397754031889965820104908822968906616256403614006068472535988608732836442889431708548419082490128870785218145754082791368848656292865460852590652962920212913387150200620197779947795739964923001629536814218562797048511048670712894362158669220053717335384817621822049851969096600907030156854775107047596664701596326193382815902449603683244583199970686533352260256840829495984409373240881742566173070453999816973782273276896557841936656278023370886922507915008941240612899118399207339997807753372688613082565882087515750949963501166052572930060318143045684872831001600688066364452191761777760842548698984193841935744205687094175273938980411646073468989866422679151130690635649682057852664470215930934517615307319695864776580545578679665315002183966153957593424751016969745141290542567590645873654361785470248740769150272704355788142768330804292571450809799911095720674075209132007836932293269512396787254694564727298440339133184873325808098264936945148316516929783738227068494957926803182147732800993239223311710244472855092544122812242848868741735718548945925066717364202291733470222927546468427506950574587820287282050590655596191494550644971295556031320963257748095049168933988199031685945172910400036542002501394218862823561333119923191762018921965499776859945383958410581873467090930853582045686259004456862857899072700563257528065220796220903743056412307483326406651111443246640619284314438830413383578463666517530230351749564083380606835362455227385835482702565659332922744285465805834298649022685761415706700245605854567157853662737880049145104411450522812482275862981102511636806963259082899750006826629465254835471469246768140901007033393461850830490264810164008748386068921594680367598217808961376482244918105973470506303791087109864419517765751630986980597581564067350826084446816530466624810873169027380232558069781561598879516168681770056715383493095835875871141437763503965169784143064431472328043252007573908187574137184979311177122151922802819814120920158620402579854127185506840079341235155314927686354146794140058711708564713796450061116069770084119405929590281582809435579824999307935068909185420664167488491262197605611666247986837916247233175754512954017481457437247505988573545411682478156846121347407603415430536459927558173749403519748919365307647025264870852072270219592688283360530272654142746410830268532004902760913515910872267682336769823362717107074820959183777860916677949111752762996108594394933023976191901236772202511044287619796539305306547710733792732624472132016579104249896497559853561239087347110147346773338298191985671128434398220248182195315635910298313566939451579257366819493758948557568475917247378003500524786937944999138730052994347662716580226591803154469163332746920251592745672070882752814539843050217197956219696381337184261574946091532158172314479988785117043017386502489238384432996383446599130285078765048390711726832059408176142687752290522422168134194531558192613883493252509415186554262338637667221560936914985843999937399371284470160379985375802629126713576632275534759109163786230629709290787116802994732554167254174668455547455560742238545838673027817523325865339655377136741303744089746306038870581501908623960466853061155013284620762154982522613294688379424557999974148945854340920143174974630140268714306379564438747973207240761020704012926737991763191799039898826835262233646564933932713879767843864561978253673530600108493743079128043564768639705539020010751948193375875276321707460287223244134196522769433100878922454331335422031422337098465156456031384648757284393583869066595777882211863050884358906440838915703347364329124191647749153503559985467246951816307734461254712745013964209261414995265812707066572047061742663451060889875199341399216746013664815690406107277596437669693401514668086755741664837909048242860987853678336718960698269840554011904113989129885943224306583577439285889208042832591167127903727346298061589531147643773912807753534802945493273633661767514531964276324855874099813291842617484830338147094425162195064975881670373817153009111014936319075576826574640095782673848373833078331597006844528493578814555090897859957158777405413914637937282495509474284941859838406461582082023129761056871722850214776301855254856543483322129869987653288705568232119563012556486753696828668700586509024085559980459850266902518950720131715423127874359894198417107715431981822981217426414491492212144461753092657436643454847965827739231993078972090678135397989363931327302490489496815079410556128519431931053907766792514141293614030505888766127666443055471532190140361310488512779184938496154887716893651504213148865504540498718400015119678424110080854053002638520047798458595237064774540744348602969321268240893970879022002466149976243754352992599212336582423091046664306141066210918164801457436432586765461629118834155027685356060444401956339278483787884361826674560995219863817960803104991022133024082424324956546713185779024250118394401300465142109192547741972722177189578624679407784186704727963916806344644635031619569265612670186149329257961598298686187053455894504387832023736899292756833856175601797768823730292151230329142144334048499068888306268468523422615678255980243743174900087857038467609949611956633488141792065693301552007137987773838877597193280684077608032644167240172165061020445381445277279805228491547372502591442256295203442809072484830483799994100949819195027654182382141718273156845977259968104436787826089007607109953718943353033985608965276392574673880851428270194136609298456092660804441179645488843765499617963914431916249397356731350435593497093663808178931431420518194997438377141859844055851291452025581725986168105632272355255896679442855270324412830534889032551315388562043219514871632587062393721502921484975907450887130815726052087989157477706760696132166821806965944795510404339260744124290382027055764355588329983491637749429373081343324557010958810653573457655623276879111011382313460058548398078045965412332899358869914536099223594914857359239564313720187089128553755965995495670918369321472941406096386125393850743668780218305465335090411985748915951106835419327525451322954799514046176137362761724716029706846115771524903633548125562784985662453202129816566891082493138685592065899750716172829209713632294231303391092038851325557844066133744754969025638151183237836153919472009570101619056523220699568071384581326436318783219198073192762292073612745276466187860661812559539450258308478135743608049240453796392294524315002899012832483005654553917036052507486568444263868137978352052750591902071859713582509216594391733337439472538725385488035684788828037764432961605639083686327775111216736534993216347535725864830637730134237434211883752854966842119102785280495247553751949669317659312448283895543129805058815288694378524512884198206507003504023501883321252699474195204217529692273800337575007267911914354631365849617626840516041983912134746577751809927779889170241853174847857842680346879759018307783774930698445026839535690729988717017462196851482313458508283026908857032279615803368397652779840573647664900321442317865819337847574180278925860569744688153230536763926311835648212286962086907453230807655962155143406932042778187382404956214951142236970957599646938435938286137082569973365284050128306424038998129512867949651840195058957962877686917393870501709041790439476660889715888530978242084154110633893824850038273290712604704716584548888992850250895889359751014918533587611929634355405341106630797023818840289367513476453267074355129047323884373703590651340703589121175337741153289785689083358347457622916856771434841178183183942485833820257100705099447837136834277367322575663631643662632674400139610283870371952692470001789374314641673269546548414459273823268754993751475393020947022081635385969384708695342815952705278660140870014908355814973909671320453208364828738718421159043930280733174850075033618714812658499487973448438208328152750737605191972375435251149203078193591907890663401785351034703757190642909395998722811055403636291752882390753853475530370204992453332272751667408074609568024079430642474263286205413400664876315841904013473664079663416278108591021052806121552185302100501202217299061980806107125562280087872839681499751218471626088543888081481151707831912703313690411110517688609851400939102028774574867537930694578232610917334408141759422682433324991329916866903083530400855247813803566448335974981079420360363036579723056730814157190763901001821072633982465574470008092059175510914305336545690622174796572907098727615706345576126726871806842821633463008028947256741164205480044425792520510815356700320420236645386421279928880239620325674591451002185848406659494927349154882640348995234972209507974490586506159378401331198153190875663614366565921298991549517805955800840330979711776623699045859733776262647829455039796010888675121879518653322763793851194829196223224650441545085786906034333201584288249973281978591111150016044717807532147276957844522163882827898788725486710510208927214829317786721309890114680490488135310666945363404643428600290216110176696545749648252765563458601239891445323488781515380735248576734746836837513341547062026249873874833328392427133537584440471041036861005170647820698986463372632579546908992098983157936082836396198692680855245133194657425803985140866340992597195703518826516979924096695247947259093304286224642811601799649270104409606542215601989544275782928970471866039042727092170783428956632491667387621173416056465931985065840040250210012432331271441621538769754398878390737099049139272520390606186782922005563935275187907457244580469690263860909763643807518262522512198191178258877160563500229562766855630523152043225974320718942169599678979943296953004827415394802819788781337842527635606502349031124529005399549921295397648364574128276783765568667377753801109308524366951469740919464362533081572520928310060115008874533029240952667928689281555532746500097986997310307467242422280363332705926334582958407996635698898380098239733500754549506031595287360542412216170442598502151508806207161569894265864492328041378355654522228043376403218204014145101178695513557530625041552755723030000560663715854584505820434202017580104869328047514733371357180529859655891731791700629407304202655895944488155650274692977817450708609793305280328640885133028085835267908492910751404450145958276311074579348257044014369937182363383176555621259945839564535213743667599881266621488122960006359773696836810167708971078194023505193276757345304674649849698585701996013176703955856854297847305906963160176617294429300978589213056847047644262136606936704232374296699387514278154324133284974408837796467300355942079842285071297446644057191055093354788204699145769271421103854415454430018580407875232514430454563760714141522595333000627899473210834285396936687300673569434256637553679200186101379433140164807809898062189453051275764073007939902342598601912661320275052648357998580627435128618504341808064492825460107330343537762081806301943015468663132997923874278289904095366988661065208279214108813032647612358801512444489051978289783530645048090065649283156349925134400770174318261208567236549550886612982980478244471919189846275451775326977720304392823560919156527243496417015792205788865543419456126441175004599860103055238690062995128326975589394052506152626910684329455426833288075891409136223197542551346501711326708815044980807806898813889198303220763925042301818426434910873973710125051661927527931076462117791920492397674681885274585502297013756368691275879370241616731701843760368189202053258683546875584562060143134529840620940414284114983447274517648381089266527355692605433868024189003523956210342384104836812854347025002186542911696744827822469595747423438210313677791036001520392538688315478675223510478796771913609728522700985281038849021797538254803389544312564074224426284536703994988536193945175107281223851956805548885860383947718351852209452470519022516288742025709736248811480719118939904444464472643217516570807903717439735903310758490714214136253661492419832755975967268930126808973018172864285795012528085685484943488558898636081881195279790622022698433899972881188743371439418685852024023285610271603009319628535539421075880376722167880181532458123167631931365065151040977758842476552131808310819565897533508909320288236883972370395172904001338076154457831568643097311004135550543186026361176364252151460272608074434930868499745136081964640507198025982563459114946489754951826264751919564014233866428589758493131004430349033492647042793964446995607366250006671687324864154383147967783557470633587787528978176890801749315328225917763694696584092229070720517836325346556932620144176812197156261749396544680103583856089833423171337731615950071324306789754910170845501564775818020671389943218625994253680066598094223658963188025191847081792395391118467161916899733827617754792071646992328782874574441404857755330613566567333795126780232559744835743291377117140501824720402333203093393360920836515431599812788824057321793081254907558418646745171220981221844327987107780533846075020918160433409946653853223432015466132217296139757347190188578960675981789153963894206299701020766642931755005078008803815098891161594549579109034777680945309057700769030886606250116882688346293231691557754928191348061167976304793367552208072355408461245049098245135346215049678493022610794129955490200832717787880599516106184014053784410396054737205298550686025337682612836217931992780890963579118793601158973795332553301638830819064049214009941242887092185019200507407015991986719575981721051504765725709060214036786350648628762385202958513218366444419908875457160268588244534022299588529024140906124881997946702930406751174499570050823957197688220616698926520584361520770812255538427091564187773332296621853141686945047997486177118121018539682041531015629597108925766048655588361213602241715675827064941854561542553944334761060387082262545802101296989046191159420105570775713183731284890928444949651180425436536887558127173449774601124342643395248434907028872253723676897213912882175279663165097270408347624632113045440305236562086752582947898950665397636000130806379352870812511470890894331828265709141063970221719758823236026790836601296749015098519651902617183411140319504723625429748513763023321169003412727866764565041784789605250656387613623092911303294954465699882972298551595072455664992212129019470608170258045964950341060249819249932347185500792915579440867377089516607679868793620620131840088265655946948446592336964666427786764017228611710380170953777001198520270108856809597023290366768779388412635938057836084887459348213129308556685659362550185553420458610797555548960303285684345112017117320155056821298451800559178476362043392207697884889892500484013935640636535642472211818551359820296533044670204799907057375331016881435007946751948421765792602510833466972839616658516889894500098159203993247106452224802079237223330529538078702013011636398221690736086895355570382613231139298909530527432751695848647335703150460273957331577875119714658735435649069152072301092668197753726863960626196834553479912016974041105874742125751364012440035893055374594838408439249975170738863316564860661793900783528123323071179570302403434550130092143983084234459520914540479339738700899720376408712971007650905130680824626087490852567353055747168297210736200591797583214539375515373565547486187763082556147806418775208670528997781092834084335994539396498777506250539847916633780491917949978319346793500233989241423934687937700720134851285576929949497073784901063040322932991801741301312106362432458181385646230231540102337842579165322231025356149764130317084519851186378105192376694354200555229013440968341671956924045109150563627885872832770477064948623969225145314461037326005531491977314460604804151597928160027262760898871164741852152886454487865868959037891697173668785362233119809620580886758678990538333922781860414288924083455232230410824069275118058987389672080443874393167264806454474637017051975208972522930260085571059107202745084833584295431605203569783210931111134065513776296722532625827468615761228135816465124554286762343655495001482386191492810991198424358198606792188251864217612369942431069141802220366175177574982990092617023539185800941257783429555646585039437725192586944953722592479606795209192529138839821307162055493148071151690915896304290597371951073178260417026513398603268432159706369844056690303045820268605819171858224081370121627999265382376326051640850220434488185509504703349016859455183728726906940022330186363561152968959628723435042292283492653935519971488806166261860413590098821090344645561536501851805336627475805783663412358577240653406326368103781135861169505699492335930901426069238406487463594956357540708447611680059269529058464152789473022350676939244880902580621983514174950602530604275369942853001837903093031400960520604684909454891319230034223534558336730877962425656619775827202729499857732158552303284564004543739910550421151875259742113479363992845409165657373324581743516251747811922022160284430296255799382115275714819166400947828810821558314071196740007529496888084514088230395893678151042763987547934467977585329655680001482438520897114003200674375899776879547363600897617852210784704259372297829575397628957364413944045904087952104829502631332813089317435764504535532437184267693591389995280930497701347256057931813123619595480749870068608426686067925972399767463217209103533183880820451412429853178918901254208976260701749432110048979980111515395515934675466860107648944965467510233143377826341344521470645327004705424847193195144661869228832928236752947592029783304452428232705019976764709142188435985798734230135012286267872528108392928066891738461481591929588030342766375934370884609703804383639722590491080652629794900152208168700621723076775253862650375998610595578012776932264178781987843712116113148707697137287466307515393953357294316239296141640579732724658880302631202973121547337879984810834184282755844490603783851877618469041922279647062043083135764870450865078927282449792665907129532399933284905716589567895014358387790501688416110537788720704986044157398497473135843096931787492539837586977290228412307695818366612542870858107545778832070954592427593252834377935627921516172019938787070538920853939995660116409954815079147377588910607503899236402109203364027644141267742302051855471`100001.01714067292

left=right

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

!

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

The code for the calculation:

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



DateString[]

The formula for the check: right

The code for the check:

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

The code for the comparison:

  MKB64k - test2

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

Here are the new speed records

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

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

Attachments:

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

The integrated of enter image description here

is extremely oscillatory and does not converge.

Here is its plot:

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

enter image description here

I said it does not converge because

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

gives Indeterminate.

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

I said it is convergent because

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

gives 0.

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

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

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

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

Attachments:

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

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

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

by Ariel Gershon.

Iimofg->1

Cauchy's Integral Theorem

Lim surface h gamma r=0

Lim surface h beta r=0

limit to 2n-1

limit to 2n-

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

leftright

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

enter image description here

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:

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

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

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

enter image description here.

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

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

Timing for verification=69.4713

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

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

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

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

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

Compute 8192 with MaxRecursion -> 12

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

Verify 8192 with MaxRecursion -> 12

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

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

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

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

We see that 4453 11

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

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



Timing for calculation=230.391



Timing for verification=299.469

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

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

      8182      12.

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

So

      8182      12.

should say

      8275      12.

Here is the work for the verification:

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



Timing for calculation=1764.03



Timing for verification=2247.2

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

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

      19734      12.

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

So

      19734      13

should say

      15442      13.

Here is the work for the verification:

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



Timing for calculation=11440.4



Timing for verification=14435.1

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

Through actual inspection the next row is

           28932   14.

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

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

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

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

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

               54286          15

we get

            digits         M.R.

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

March 30, 2021

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

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

Here is the short, very fast code.

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

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

digits     M.R.
2048      10
3000      11
4096      12

10000     13
40000     18

40000/2048+9 Here are the new speed records

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

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

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


 (*3250.55*)

 N[test - t10k, 10000]

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

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

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

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

Here are the new speed records

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

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

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

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

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

Here is a comparison of timings on similar computers.

 digits    seconds

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

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

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

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

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

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

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

enter image description here

June 5, 2018

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

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

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

Code

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

Output so far:

Fri 18 May 2018 08:03:35

65.6633081

Here are the results from the task manager:

enter image description here

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

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

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

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

digits          seconds

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