# How to calculate the digits of the MKB constant

Posted 4 years ago
147114 Views
|
33 Replies
|
19 Total Likes
|

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

## 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:

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

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'

:

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

.

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

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,

.

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

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:

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=

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):

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

in 48.11 minutes.

Here are the 5000 digits:of the magnitude:

0.68765236892769436980931240936544016493963738490362254179507101010743366253478493706862729824049846818873192933433546612328628766540945756595772115802556504162846251439250971205896979865009525901957068131704725387265069668971286335322245474865156721299946377659227025219748069576089599393209602752002764192048986309527950738579344982825034173229565338091811015320879481813358258054988127280975209369016770287413569232922644964771090329726483682930417491673753430878118054062296678424687465624513174204900483221642766554290055935028993611478222342426128582832646718603650018931537414763848967936556912271439870651953065133056888465504885799873853516260611678863354038966005282223744908289479862039722833171519816024367657656383305723596359151086525460036387486837632622334298725709552463768300591035314935398573611886888420174824190626083498173034223703984133264282699210740455065589666674834536567489060715777444147548424388220133662816274116986724576330176058912438027319979840883059505891309117191987761469414772648989343657425085034050732738529903546587114217499635584514475429656959327732862489935076490012861232249244670423220090484477969004477448946670434279197103332581857937517719898657425832767700119265854957115794801143278185461993723493131802360791389248808154759564302727311223193005229640892474022665093207969297797972308795483218256171403916521459251943207234100609086755844459050004667079633465456383179509789357941736916352744611848521664077918386624294040883487647062354653558109265769644276994369741555722263494599492834558291937955573706480722982389806312472239746286527176248883116124285469947303667188075506826507811479428582807366599407544908560990699866167233307144245764835741501174979679166078765231145175411199825822532170091858833628202128777966026600647843068442894310401343003939117236867245656732686719139206716028255819141802331701942027248337771633882445225049334329008827371320849006472846226868011129149192754883153995560921671208059671732704499253517327447529208297180672654123457301218758892278525894167935930983363218877512533994251978272092700003994136520699813263053327399132641690231179063314931546906927612775633995348209911166678724589467821767106592498663827057034363632241807121831546175498178011687284590439293322231263406301066863589072717290630291441982684113819198880100231182613587798104863611185433976009254862585527222843445901958943153561148829083242874018226480554274231391324767376148485531787767908124831873688579979114662856184612164534836370699371440464263768724668291617743681719766849740663590277737977490693183461320266666793472116774276618408124767965369796362732668987556797338128876129264558867657737417548617146808592137056879602982206609613881069490166381528825180204703315896719667069923077454352649723496033985893188309150391579573916059639453655188856334980355047281560296288150836680499821806918067869468571687709518088408966653716009356556714281694904914038988996962213833530636987279769672200413448893419914190954063100962251649102614676944333201213024711868954772741991675045198246947499574872027800654821823797116399297131866662866832215332914761325880983081211272181775518951539503852063119472301382766303820851467743266039356123495461914463960644386394228342211998370152351720235034997434035743513051754761571835043769475528640144621307760159481496713401409374957729200400650100318226988524015127382509490642900236553851499823658269458873976032051355393161653806016080446394196719312454167915154602448638624354575153334932298393406734174580316934939632892851077461038399470015366439910136971186909599331204517462262508377673477745789645309425145559198802530351403897927622891172233239135167420567162398873965477371498335087310395422796362380227536212159184529243644094285328763286873653399867593200891823468738537356817916009007206857590792983184556882143118383332812491747733056313117179696094921120670802012310012864110800437831852620698327457619035904268498030693438632685623213366864129523404256345542376567721287706234359125016588483777876970236084456277023948551334490591022594253744077631232660869593809453087749830900393202787736482133628148979992109544954840067942735030391105496026321872468122542495017023785810605820545392820104069279893067324597299043883381251767370331206913429284614563732308018369972360638019778425246546329838131639355043236388708044857300408692365733932897876809202025693305332974091411983635619038514442263783801745983300121464879550146672827072002317686396598587702487509572349422593441184802476344187280014450860069307120621758277552124841158659386176036703247124389223327008210072318671884895179305778728051888524412158486781863155034447221379906386062559915129172725833420555901857729690605950941678587057025641848365090809750870051863842805803189784976076099574956436664131457150096711473033060684065060747340764998195621425524824611657787212347497307297184843276100338110267863618974154272345482369968216663233417338501929114697679974461999040589290327155974468087040862022522065912789


I'm getting closer to 10K digits of M1: Using , 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

, 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

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

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:

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

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

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

Here is the algorithm used:

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:

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:

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.) Here is an extensive record of records of computing the integral analog of the MRB constant: ![enter image description here][62] Here is a graph of those records. (The progression of computed digits is so extreme, it is almost unbelievable!) 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

## Mar 18, 2018, 8:10 AM

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

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

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!

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. The computer has been committing up to 160 GB of total RAM for a while now. Finally, the committed memory is going down.

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

Attachments:
33 Replies
Sort By:
Posted 4 years ago
 I got substantial improvement in calculating the digits of MKB by using V11.3 in May 2018, my new computer (processor Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz, 3601 MHz, 4 Core(s), 8 Logical Processor(s) with 16 GB 2400 MH DDR4 RAM): Digits Seconds 2000 67.5503022 3000 217.096312 4000 514.48334 5000 1005.936397 10000 8327.18526 20000 2*35630.379241 ~71000 They are found in the attached 2018 quad MKB.nb.They are twice as fast,(or more) as my old records with the same program using Mathematica 10.2 in July 2015 on my old big computer (a six core Intel(R) Core(TM) i7-3930K CPU @ 3.20 GHz 3.20 GHz with 64 GB of 1066 MHz DDR3 RAM): digits seconds 2000 256.3853590 3000 794.4361122 4000 1633.5822870 5000 2858.9390025 10000 17678.7446323 20000 121431.1895170 40000 I got error msg  Attachments:
Posted 4 years ago
 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:3565.6633081 Here are the results from the task manager: Answer Posted 3 years ago  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! Answer Posted 3 years ago ## 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?? Answer Posted 2 years ago  Shutterstock has found the MKB constant, I(2N), at least 2 times! Answer Posted 2 years ago  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." Attachments: Answer Posted 1 year ago  I made a quicker program for calculating the digits of the MKB constant in V12.1.0 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
Posted 10 months ago

# 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

Attachments:
Posted 10 months ago
 On Tue 6 Apr 2021 04:13:58, I computed 64,000 digits of the MKB constant using the following code. g[x_] = x^(1/x); t = Timing[t64k = -(I NIntegrate[(g[(1 + t I)])/(Exp[Pi t]), {t, 0, Infinity}, WorkingPrecision -> 64000, Method -> "Trapezoidal", MaxRecursion -> 15] + I/Pi)][[1]]; t (*393847*) I verified it to 40,000 digits, See attached 64KMKB.nb.Later I found it was accurate only to 54,390 decimal places. Attachments:
Posted 10 months ago
 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= Which is the same as because Changing the upper limit to 2N + 1 increases MI by 2i/π.by Ariel Gershon.Plugging in equations [5] and [6] into equation [2] gives us:Now take the limit as N→∞ and apply equations [3] and [4] : He went on to note that
Posted 10 months ago
 I found the 64,000 digit computation was accurate only to 54,390 decimal places; see attached 54390 confirmed MKB digits.nb. The new recommended setting for MaxRecursion (M.R.), as hypothesized, is found in the following table. It starts out at digits around 2^(M.R.+1).  digits M.R. 1309 default 2410 10 4453 11 8182 12 19734 13 31286 14 54390 15  Attachments:
Posted 10 months ago
 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
Posted 10 months ago
 @Fereydoon Shekofte: All it takes to leave a legacy is to keep planting seeds! A million baby steps >a mile.
Posted 10 months ago
 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),.The following computation will show that the calculation was right by leaving a small error. g[x_] = x^(1/x); t = (Timing[ test = -(I NIntegrate[(g[(1 + t I)]) ( Exp[-Pi t]), {t, 0, Infinity}, WorkingPrecision -> 2410, Method -> "Trapezoidal", MaxRecursion -> 10] + I/Pi)])[[ 1]]; Print["Timing for calculation=", t]; t = (Timing[ test2 = (1/Pi NIntegrate[ g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, WorkingPrecision -> 2410, Method -> "Trapezoidal", MaxRecursion -> 10] - 2 I/Pi)])[[ 1]]; Print["Timing for verification=", t]; err = test - test2; Print["Error=", N[err, 20]] (*Timing for calculation=48.0927 Timing for verification=69.4713 Error=-1.*10^-2410-1.03*10^-2408 I*) The following will show that the calculation was wrong by leaving a large error. g[x_] = x^(1/x); t = (Timing[ test = -(I NIntegrate[(g[(1 + t I)]) ( Exp[-Pi t]), {t, 0, Infinity}, WorkingPrecision -> 2410, Method -> "Trapezoidal", MaxRecursion -> 9] + I/Pi)])[[ 1]]; Print["Timing for calculation=", t]; t = (Timing[ test2 = (1/Pi NIntegrate[ g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, WorkingPrecision -> 2410, Method -> "Trapezoidal", MaxRecursion -> 9] - 2 I/Pi)])[[ 1]]; Print["Timing for verification=", t]; err = test - test2; Print["Error=", N[err, 20]] (* Timing for calculation=14.375 Timing for verification=18.7344 Error=-1.21910183828457949*10^-1311-1.6392815749781077289*10^-1309 I*) The following proves that MaxRecursion -> 12 is good for calculating and verifying at least 8192 digits.Compute 8192 with MaxRecursion -> 12 g[x_] = x^(1/x); t = (Timing[ test = -(I NIntegrate[(g[(1 + t I)]) ( Exp[-Pi t]), {t, 0, Infinity}, WorkingPrecision -> 8192, Method -> "Trapezoidal", MaxRecursion -> 12] + I/Pi)])[[ 1]]; Print["Timing for calculation=", t] (*Timing for calculation=1111.69*) Verify 8192 with MaxRecursion -> 12 g[x_] = x^(1/x); t = (Timing[ test2 = (1/Pi NIntegrate[g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, WorkingPrecision -> 8192, Method -> "Trapezoidal", MaxRecursion -> 12] - 2 I/Pi)])[[ 1]]; Print["Timing for verification=", t]; err = test - test2; Print["Error=", N[err, 20]] (*Timing for verification=1419.66 Error=0.*10^-8193+0.*10^-8193 I*) As time allows, I will post what all this parity-check has to say to confirm or unconfirm my latest table of recommended MaxRecursions (M.R.).  digits M.R. 1309 default 2410 10 4453 11 8182 12 19734 13 31286 14 54390 15 65942 16 77494 17 89046 18 We see that 4453 11 is confirmed, although the real part converges to a slightly higher magnitude: g[x_] = x^(1/x); t = (Timing[ test = -(I NIntegrate[(g[(1 + t I)]) (Exp[-Pi t]), {t, 0, Infinity}, WorkingPrecision -> 5000, Method -> "Trapezoidal", MaxRecursion -> 11] + I/Pi)])[[1]]; Print["Timing for calculation=", t]; t = \ (Timing[test2 = (1/Pi NIntegrate[ g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, WorkingPrecision -> 5000, Method -> "Trapezoidal", MaxRecursion -> 11] - 2 I/Pi)])[[1]]; Print["Timing for verification=", t]; err = test - test2; Print["Error=", N[err, 20]] Timing for calculation=230.391 Timing for verification=299.469 Error=2.8146045128793867*10^-4456+1.6474663184374133246*10^-4453 I As for MaxRecursion -> 12 where the R.M. table shows up to 8182 digits, r.e.  8182 12. Actual inspection from this method shows it is possible to get all the way up to 8278 accurate digits of the real part and 8275 of the imaginary. That is the same difference that exists from it and 35,000 digits computed by a totally different method.So  8182 12. should say  8275 12. Here is the work for the verification: g[x_] = x^(1/x); t = (Timing[ test = -(I NIntegrate[(g[(1 + t I)]) (Exp[-Pi t]), {t, 0, Infinity}, WorkingPrecision -> 10000, Method -> "Trapezoidal", MaxRecursion -> 12] + I/Pi)])[[1]]; Print["Timing for calculation=", t]; t = \ (Timing[test2 = (1/Pi NIntegrate[ g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, WorkingPrecision -> 10000, Method -> "Trapezoidal", MaxRecursion -> 12] - 2 I/Pi)])[[1]]; Print["Timing for verification=", t]; err = test - test2; Print["Error=", N[err, 20]] Timing for calculation=1764.03 Timing for verification=2247.2 Error=-7.2028204961753149*10^-8278-8.0907462882284574618*10^-8275 I As for MaxRecursion -> 13 where the R.M. table shows up to 8182 digits, r.e.  19734 12. Actual inspection from this method shows it is possible to get all the way up to 15444 accurate digits of the real part and 15442 of the imaginary. That is the same difference that exists from it and 35,000 digits computed by a totally different method.So  19734 13 should say  15442 13. Here is the work for the verification: g[x_] = x^(1/x); t = (Timing[ test = -(I NIntegrate[(g[(1 + t I)]) (Exp[-Pi t]), {t, 0, Infinity}, WorkingPrecision -> 20000, Method -> "Trapezoidal", MaxRecursion -> 13] + I/Pi)])[[1]]; Print["Timing for calculation=", t]; t = \ (Timing[test2 = (1/Pi NIntegrate[ g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, WorkingPrecision -> 20000, Method -> "Trapezoidal", MaxRecursion -> 13] - 2 I/Pi)])[[1]]; Print["Timing for verification=", t]; err = test - test2; Print["Error=", N[err, 20]] Timing for calculation=11440.4 Timing for verification=14435.1 Error=1.269166151550935283*10^-15444-1.34038091454473637998*10^-15442 I Through actual inspection the next row is  28932 14. More to come. But so far through actual inspection, we have the following.  digits M.R. 1309 default 2410 10 4453 11 8275 12 15442 13 28932 14 So far, the table gives a clear-cut pattern:  digits M.R. 1309*1.84 ~=2410 10 2410*1.85~=4453 11 4453*1.86~=8275 12 8275*1.87~=15442 13 15442*1.875~= 28932 14 Following the growth with an eye on our experience were we proved the next row is  54286 15 we get  digits M.R. 28932*1.88~=54286 15 54286*1.89~=102600 16 
Posted 9 months ago

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

The integrated of

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


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}] And the verification formula looks like this. ReImPlot[Exp[-Pi t] g'[1 + I t], {t, 1, 20}]

I said it is convergent because

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


gives 0.

Posted 9 months ago
 =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: The code for the check: g[x_] = x^(1/x); t = (Timing[ test2 = (1/Pi NIntegrate[ g'[1 + I t] Exp[-Pi t], {t, 0, Infinity}, WorkingPrecision -> 64000, Method -> "Trapezoidal", MaxRecursion -> 16] - 2 I/Pi)])[[ 1]]; Print["Timing for verification=", t]; The code for the comparison:  MKB64k - test2 (* 0.*10^-64000 + 0.*10^-64000 I *) Here are the new speed records digits seconds 2000 23 3000 96 4000 165 5000 442 6000 623 10000 3250 40000 175,551=49 hours 64000 784,937=218 hours, half a day longer than the 35,000 using the long code. The 35,000 digit computation finished on Sun 14 Jun 2015 06:52:29, taking 727,844 seconds, 8.42412 days. Attachments:
Posted 9 months ago

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

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

## 100, 000 digits of CMKB

calculated here are saved as "test."

Compute 100,000--- 16

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


Timing for calculation=", 1502377.625

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

In[95]:=1502377.625/3600

Out[95]=417.327

In[96]:=test

Out[96]=0.0707760393115288035395280218302820013657546962033630275831727881636184572643820365808318812661772382094407339691097179269990446453847536429225844386065219333047122290612020548398576433662343489843827071049989705395231226917848529903218507274354522005125732810542217424931317767029586377171448965877929118571617511540562365603991484881752820025072306153573457106503145899219683164868123907954938255650974196758814736254874320591902869577457241143992751659339102999273310798274679484513088932825130726310257008303152743086102342833436910409821702262269045940297055093272952022662549075225941956559080574835998923469310063614655255062971317960148313404503841687805492907298185104582941328637784284366753787303942475197280648872877809986710218877979777725224197655941725692774900310719381777491848349627938468198411955193898347075098152638657614980900350262780319142430252921925131515239611841070722530473939496294305264627977744876814858325335947117076721493110160508928494597906728688873533031986215124467678736429981544321187124269147141804397293341468345902382977472975053271988386946291215512340931334841526712825988330652119397517437992225419804561517899441213313555349094245152157337720540864293004858914416964903391069077239158225378137007134225157259436267756749980892097547020923938358076198570370106085596863039832425037481494682633055245925697703500997321958201037926268378037273021499168580036766118335796488501619742893070662953852922641481467895325340185006631153014589399140567464642817322554124276739871343784769014864816430102142673821103099429482190262551342893689261414565078351300454655173124597023403312281112674354963160553141145567801875089895942712157634242627126275368184624967147795406349712434902034403655110657336828783643528206451755699785097293845034301399072335418076018544901955694165639769553876705231326512333366413569309147544153147040751278651787331897291338831573491539276810505393193420241588397347561526288661290728125579362948181618288086569973506768636781006386650904534717662131801845803474823423298157834525912125581020582196401078634352065556973647371001379876626633998647899439636865809171008260727796700323541873379525993158697583430323304307895358482051309957606629650194455591037743888293996355687016945561468756667810137028618261442580752084968748790834555683286810992293714710797655441238658361507793595620533974776960070520467919307350751324617559160904358483933727879354374654770015405315934911669904273679391713646599364840768394803265618888420669169340277261914455191828151652360399692719061991655729677744654356588953602124646688591824365597199025929668876773171577235647694709665048098037194956104125531479498893907745459337858730796977515966494235608105257022978810125350663109530591734669918469930734550933587377397856349258234049411471938885385086011030918278312344618497246818765182307767075040597982052236224255617202772645301508653393621700356912690450255099693218917315607411892180967322579047180170212691588040910818933109805057252902227931659575733486175457651130811956867582907068883066723837899816837670787899360869933819422195746218699516733809670530135357903631293882837719370519875606291578527801296043186418096608100829755823649276027221806346169998542692832027777478286102979116280990177760284464151299277101106571545737336647958718244776566375647148433054675834244246049240504686922677421785867393122980814858147770340450055348706971250452311783103291070960442874005786179693433856757309587531165347866491655486207901573141523303786002863792972865839185688715489251955650764768156301356832542206804033891636152122872196025946652394388825789606358890573428609585537496268723416265793405419332522961262899388287613272932643580198488578410174917159464026574904398378971234285839661098451230709606672960619995390673778745129567435608627407535165639492342814598465513325229158297855621032058214589809423668291556295887639710813223944274544167064098025396411543916290237014533917149169483476622031228574697692918713580737506511407117582506728840988888074054055934499302628227680333113686549406661239659616820976280517875331534322694779737254088486125685747595241916484864002361545611943780570928984411850636638301876692911986568788899781245790836746487815578571823069378238812926865586054135110536907550731839669350369536726293157768346744826914689888536348280593839639957976255287167025109445684566374844266250483803708843748086884823875989693565118278311572584575298761592829286644326132928050305343153340295009519351250276941240999102097108172247762101699561990672658392475126406421957642149794708906768699521141796843009144561558991084217593388165600461619443309023081233134177200242449067379025519367627993751891259848132865170792298023534989757166091846307971735507935649237134095369073515522625004852361881197688473136967266486011415928178699739867900043295539132809209633250700991770019123867928787809549244848085823552628380482647071957029239246989790013207813481779922878178396640604845035638202002586563349657265372363599780267257915041051575161407978839505560254219847148069951828787186533312689134010191662281340947732136723324387995948506833756789695438322203233884906388395104930821094347570237214580936005238696478587956025976750521023655292583857934793367423766525642816539810981192629489311571647849060257913405281316012620317553415572682453356531036427669480828397622886673731817148406580692630280449926479081640764398060553993021462714495586831001757448073992464252544990083972011061126548589539795389516683888692889907424919942413696472044430689449440391865796253024651225593279414996717676061896565639181765662049174634030311211328441501618190528085618342551577790892808875775854364653359770206669355724552538891795737952132990434787982448737923176015481240298619918553231506835247995681218652445725395471889427753101305108339632778004366646947427598193933019005784671835879850755484042713695783539424225561077404010324081704039268675417114259323173543110142490918498216082315451914137797120154130884753638706879885591439745584277332912093051406179451641999408869841135689269669609339087680556571421902378820542407663415630160468324122352580785112066391476210129701445039509679589915643310628327728123026088023116406090213509321278001452316527462085975773823888536874897619228525034814563116540403768328732192274154248578282064124285324789478523813763093973403110544403402453787864257817912098994778446441559012136751169183629261969526859819945595113917622705475596793845766557337633262265645045339829809112542944936499532923996167659691918973101236786124706269720495357388623103422132252732518662755438604016044437344972664178584934544285525755031995909065728974532761447112988859970833372887954468495518694867483388315026244090110303989684510951839277846918586919520528951273123270073188090309392103813856677623068745622994950942058430463291643078806353073584689242372756834308639074025179059689616917279466651189025660011107870901066138130145827783895617962308392942664545030639107767320606865412029988067447703913450290833043769890335516013253427030670075031164262884393881143239828889738048569822510927881672881780775538054671929430215556239138697686309061067171077053421689101056536091111356658502837152328050606309945902430933356979768816802057754319268551613037148605946193719637740225998501954409585958851855225386163472479236013509692155285388982889006632567295085190178940805131103108863640493719060655426162180587185527431814942395297449020512165492921258737552491097589621077373622782792342078851623177849907069275061845073370789375491125928995069891535416826926116166869934464235851948595479483492719502868555187692193376849014659498705430190732535232117171594482094177789419576077855728376349389918105781609846088918839223542121053038738404028736475412986088647994642009930217412706119316947955306942344154042358246624860953262619029971865472777072860440972709470367679651890392608196054890981834956498867023776309399761560867380487193166580793617327316017863536528614014311431271932912574126672417812203768820779172414391384908760523110822917239546688390435722030056556953869422212171097601275518895370417124841925479662884809229389017176034003863112045601619831541316810399502475853575830921415190672319107078529612989486509361382347561809863736681678413503354536826958814683396916590423612609502001954196665231336193563298825000155241508148755036577891174745570894360122772580180263572959365891979644432146922063642911694695838159198321596868994360570132073078367191871117993413903078935886565641039125182447642391172755265687639879457104216262353224945186028498050595039126015511075188382253783248630851701388181161449925998226676441301733080038061311699232280176860277853818547211685138254939261280811416716689951169565755588378641287597366948984280249201410502383632880592061725969420219646745514172173293524540660514928104522684370426731471405682206678020815485623026954350073952252469465573881868012013532623137257216801858429288306621360409724294736107880670725953271116589106444902479198621852948487494820483822887126596935777703969331746482669822660347031512384622797271616082117494443897311713204460643650277069950285954148414567979166253754842199676715539266850345229857016416518684384021773883460331951344069189357549216491543019002670145662441709767228932087875236286885357050425072109480434937449855443188324141594255788000063529036599677376497564428399884089474648457227079255730799430486708960980163839348019169128363994662227930172283427279895597085760582891286558356399797897974518257254415621682800754079541003609014337630012783339214677464059264767074447404171328152740204166148870349797849692045301711672025460878822809132235598339062023279766094626636385532993394839666137519130965654247785398197550841089173176570190880507196311805955719700925143021349306185906520884629597449555580769655603705205006636887238895655901638441098069446369635275833193836223856028398223629613605335919846218022953977916766927635269322560676216862358842492768236522445749273035712229800612339417690420871023962509460364213382893282577764006589552742590213449758310518602930033026713756336457722819485464273284864753678004724650583195638524507724307223460028947060915305863605426212466590129585542189668557291479472018391034646651543496187808126857571449432773463422311345292858141417330259251800222088072036886199341389548816919946250152831679398532229866157207646473251695328229906459192025938465583715672571752669781635805433450026788084771427477994464569052409168362876194980831146654720520865971893598522127849983611314609486926483822968159396157903018148065408298795596677493270006936640365923282499999454773679781993105873598482047400909222317226170217140324996974455908150167051005623440623920526135283751558512569012675073271220304975482574815268861063732637451534562313392283664739356343767134383093613140923728796867527675341272849619117840023188876588042219034775659277282318766661989032775874156776735528315771744557611801004717469692280151230154319909283812138926516522380128993123663224092667225163417301424329377690964586958415994098736643541098333353256853288614279032501189991098825069715712814572397994064307423781448154515668780705883213173559016153568382015629222016930957301956779197218581619061741947554029394031689849342881366047546865242088621447937082706254836986182993570863655005816984995964351534947163992139614462133094871815882395081885565649964548171855472338011530700698909595241002706634848337645389598290829260124609588662419599098638041479082952636154523854077728686714898231062827203717953030954682267833955618229455221519508570955241961189085667060117810517316481747010790081598309906390372193615318862021654696418464371093292756436700775161736755945584662711843683378854081568605566678991722054276580149985212589696080958158667010619439839742766853413359135280792743618058112711560085552151305284539817495332432340744871155359544433784596559432956161298163059166902699905568584245278708511340227475755637309180488226442185332226559300179237100081253800801881772093750005823622041472947732472974689890276578465656599939879834425555291610674920079214040358791095379336438402674613937042697477577494623113498960865019594918737790140501875660476300136466238498508125858343844705301421827225712059313266350736017877577841749601746139159502818546059644791463454081679842711209080323828142403847885914483127154981586081148965753120914740786016443919688172555293174437455966794266298050398873342953372285042221998330943246789348175873213227758269965134433997145916494644106960865817330886927127196418583349881312206782013459917569651083966025900941880296411999543705226118732693548319885751490452227603122218641978563237171943713503837551311583481106820583749237564036526890408987060453490909377878578965747675521959241822072655459977270635652724433333465891715508203013614691837351550384578876536370275571704170657550990488678043334247804072699238822312233465872806376822049429820539845554258892148295448813684566314468597031781947399104728601832451514242656649540028866242859520728829066147139225006921099963863599236632293763914511727828723554554714488404290285551607456774248222166366695854535378564682279803522417846458919329595028341756775029091737958100869039699562164747044175456053128801411476518870228804701657326791908811407678043042858019512270222180756278668191421811563889669509156968300428709059687510959042090623878734972017305175016566295386485451318844575863610148086145535187732660713852146003993467019901332628398652669734078866219650212463649351017125932279847077948810108752565016145453993827556494454814195840260998160172908882284352769537861159789514440577750415353747392520990106858306343758429671924587937373124756549056352214790391900722282047479563528639254444527179942383999987138701574229416511069999145846557061769603166862600802631956988256811944322816612641902716204028341417765129495450591135503734419089547227051185480360077069375792569540917254150775201036365788989629048168067342817180406705262359927608419713445284176271994613406803300665982959855228529704733438417736916632896677351720981064591494757701931690566652126747895602914542673480715565942537894514014359899311046125486783625121599069177985609509813892985268940317862428017983462681969370951657232503302506070000875208094870700447838168053610786444859082568429253543995162689618054935605300285409425731523390315452619086455609571507589567322350854494245792905143487855166322644684126269814845310879849268632140463841783031338119287205493792345745172872735850072735404275068743305473550545733553910763754023806508304047600634859380186793259775552285920859632713380572001384356432814146120245376964556387164838982648660170259096891982813739375556176560106830103872981598794989199139474291703397194995802618675367678460219372802069762894799387405342033611549915051101132512709606444316369124462525167278788920205962912348661682425969306961073289318949458810611024023274969469631467503482200292654618883080666393586371068565868564206486236276830153347482915715351778664323771367526484083315257156051186379386235576873617787022396929153211192422997605227224041455386282784730729263753821538578928303642656060352021409019241503918952917075110872539591987131459764120252446432582159786497906315689260898398052226899306873989409190664470516350284564432665530102696725806910572412014029103674180391618532797861956462091644514109404418624535682160861353548274643525684330853872776414321487557090042442757007776717295482575349941124591899108834335910049654733789644181480461159984372968483155635250005270672187417175009374711074250912823778978158597063616254567619877765645124842958094467854241403981376863809925488951273103707496145289427394926999163958231842525325986222921756836366729771510117365129660301045943789568591443574430993933986721672705090319929860549309115907430786948864464379524384758113782713112271242388910311169935723208417045344498744729546925388856890380703635929941693496361917285828722206607288683394150734698776152344193002090654785829124830518916989290458479417144738058356648956718823909880297446960251656031118218026772961888046951646478644990015538099684004984412230182058745870557383439139756611021997416405544860765351419032373775904189811577741549887427353139347885470293584055958502948527536355874056956347350920466707983640702176419296107899640309645835897207708272668753312367136368662291007761493038210964223099159863665320159136554151254740650074319186794471549484111111755183214313402723134808109721777326077338784039623384867384275588013828665468381702376424713517259776474397889555122643768653958292786046743263033318964736256210941361157435048106158819579506274990789240494430020027419806148062597946078215347339598498205152835894006905557649335896911210634120803595690482345573591102292005856404939089420672260185129913665955210813827605004998715975326617612682495829698729833522518264620729712326651425342777608192235647536673799924298465526762569850155652096970657820529018208517274691742132702856892763649139366272237549508227572480532863600085926804138466924005317086540236320680368826189669299525050792369553973256927455121527281943021579209692487235389673750428360036425156759340214670382961555740761190431813755872804001886339342429096888283406066379481895236268626099227777385791716709837412427023439714245950512588324975080635332064237479556838376816703035189359020908118212096367248427439260331146092363454280322688168715542331341713364741344879195991024127597597876276218216425050526834849648784588233939945284713143748360939496834003873561739447737830347034215659833128994393394260292937930936064023250478209452416781879355751590049153977289310321160693915764394945844016255422858980228374225839456099072498330737810155136240880014039862439369103153178743188064496317909607467559431630287006617530356830500397682082547455831600646077329676538432792646647299822078144446580704521529417603985138667394708613628525530267031763659938118701722683716140195003058405220417652800063011024682218918176735371117406414557475448511722089751611559367278363165616337263532217549628505514343073244732297279864879022753120921943282456556690150616425078061225391036829884323519354219076999685187512960092922320696776312293483308356950635307077781603487013570327922793331202172073276374229289791460637228783274941334939430869013542492579265201816295047590789887617788632568706082377729224179676391875623827254386155597744454364892170029725981267570029414156192493623112071107786515809279831489235245366977731779878716553037678088278827857861820094059256018659833973203364295634715933631331650878569647604425079100643815222941241006584128263595964197885525440508032469962135076865730659381922372367293580295257153603109736746187432634299887326566312372581353754704790341993168939482796157212693267859854872303671594831696104485082952608533407884936256621705452365148910188857228452281690636849359478819802431126763554000256611659783228577898740156497984532706992509808708335632842642585176813289636042343090689426493461314139506400048358815664613689565838461896925236720745578410876397904112223709936522894095751172248687198628151120779828421076542973731102007338688297635666058086283552309669325340730066698392896991927812203896075395740241764560054403441972517038614447845372638644445687186704125078091202216181674235036681364462391233412593399340544910400700928870939810501138575422420790851298226940235731228558510040023376698840034523619010874636735470188070422188572872436618495553806948806462923150857469349869147312561736199531902086703932528045949414695083865394895035357249015652670349543226517476913070291419659084564710050638364769491130559550467560279742193940030629056586404376396534567871277983670432899723015153432904436483185985112411992903130598284171620269843601583816100222661496464660961287550582937642702016389011284533561920769957684798846252556926818374077547827416987253362642706218580459826170299460445463933799699973081508078707894923951707312147900808329350868600693821492630864682037071505659816269140954173426599630934048437660807509166302669191041762154632370647800988412225791592407476078046878560889001379049131442567555181715343270250950322056910063086927550317452446261972439660368392034990998237591085006763079460428931159916023527113567357931861857593994025084837530155752376016953707393305806850932586662239482552535920127437518429547047557501549410966917604459831256837439120229841888122933127258706995672883805396902300343996522273852681283958911462963604651663707110613827885510407291642274867527712619467305584051289675225661320367548476681889200113878036888071699854202831282296416722608290048850099467494764775463889825553661917840063543250990254841311661687151900152892149351448917283879658136881663800373743189177802472146736584375122988594395343109831943963095796747192390507433100128321240101377017628946672352355513588559431830763812152196008642923156906967509004358426966471255566588999720701109671384359725938916328968989643588519367107373436798235662423956234981099535661312337764347045464138124786246737199581448412000797769791202628994652636979018953539077775750664843830978333113857273628602683659410337476702532718825644269889790205471737656137870724355466920969476185450107521285651173936897199181921539137606636263537710488798655082196923888039515047550034581801005586558106945877194276133823160380585834275481657941954077971394693661706119106972658580392225782243171381693331482650093216333709113407254543122085321332971942158830312647766906022335063165067948113729890904801096215868955779434431872761564721249053507550762344707014741847353003760745223463617248867119655285575226106314675935967906594415943563805763082505598087374022202984492922868079438507724228355295113478485394125744399750811004177630605723658961574357815328899541651995764709123453251946014693829644532819639218414260472198716270033553058032322126265884198765275732136241792745673547074508211702161888128863860594678665917835148038673803052610882694714277484289575750901203778651888745604456853330318095862707786489215255019411454045598818962392608988051251692901677821547987577104570693956583705881522173641286906815128947777178523510059648021353669062529400718243355080383374585907455798627082728648996856381806472986390409716619926685207856453770868386365655518624909086431529689879276906828039607770602324168466623659286227382603980889273363438031930069430361566007792031148803098086076075135819034403814729076456062519254111701387777441032407471877792026075073882791104270736440893179752022054528644050155117677721995190546912403421432438870928968117483344809220819848870474899797007582656900077414935992156795708559074850997014407073733828208602289786287900146781630944499705724046205714128613452151610353450201470183387081614114071874733575389657743567560244582077009533792855030443219432883153165189829971144403684293841247964825040119332939149043923790003927190863738161128072147825737297291592592348579142171519749821836325910055606534421633267072359791173596434266760436952536906957732504296059102429633528013201323954885775476136410452720104328312173896124071872086648956593069428622678925548434460239367046566078485279211147519222467300739401738284845449724443189594150173278709350851285521700244405381855680762608495906363451506255180613819884607562502106203406297002380584121893489622938090870674781456471340450940188735037973180787699452476967591361046865384433732286798854635828134593344638591088106063164622403308932369382612025711299677840213623022267074720140379751201641690041728121629216136485691004064163608065276094655380075293625331266558970918558856353504204039947617049161896678312702971298795167292819385246680975262689201459342299128289523510879145628296425633177697019652057173234633575686261502574432339772787646762599844307595718434761737271018632122113948633661919114100647721642170775600912305823965330343708851914726898327224180667708765636995939505229202497292437999012091179179333361941197172962468859282902707270296941193696556775801874485647168576323495854993702523728438945338292029831638009289288229116302740980249298316431621182825270823112428975433853616434308875850337916242050505363124808263531855090605396610009377751603479975448649678309505293621842878598610609444073112117296243693743555162390640280837974253055470421803178395427928793757355720769675832638150808869750986476473099913495611007347526586820080841001346503252977063405801955976722089870021814646074839474534012705540908188672248726877545492313721350004176457421840543535917061126007561743408871178390261245721868991654371593183071149630159068170128132146018567402559761907547308758917554419950110697643048965097078646934375727576342224712211892607321092767967830498825367847833008106061288946512947052400826020867618491646868393937681075403978767585334653737779178507354269862841258439560527951371674921847190255362433875046005119775225360427160256253612869539085334231830943601837919900551654564669753933323756209676513736333626126518145433924591588369761914801052023737715494137151143346532514715329105648570443527211374465268123472978449573449927513248401260766561971581789105880047714056224330010476705599238722318707532288656905724884136198032201361598992948536839327643153315989381325037619353247482132174337321203817503704249300218026208457113124399941288876185091058816963556806744185830176623238914552024779887976337875720942226395336727037852163021931871293726236869489461021821630547374383564951427394853018970638838022914966194917290762290176305719356459124713133951801454855803295229870862860825707797202273948634187235938997452180540405070411682617168809432412853957233041098062694922456702905010154077769789748994239012834805511951274429591865402525457550403259863510394167449590994552088696239703215889907685979635465894512116614637650935738579209542910006443112016514434055442213575347990607602564424117977599861195993484349775345571746872364810707090775147023525926213062361437064426059893747631811037996357032428143470399452205679684377155506559213673228280739752417173372365169776596640835862447903738086947064723349489603950029422173049969283683388117654962780330964111006076896137163086519562904447816996326177592874384295416416927963482163626751442719135791021614164860805804978715466942789995991745723994150013656553274303236273687936937452099179557902041862715617578373767746454266341067217786455954543513955122615877469938615340577938596224151723842336115682893695717757265537167494013489228898000286140841697310904920076873652464364207970733273761901563542920152132549813140873463304503374221517174107177954954976816184370006674214388866552697441462330889785691122534788602973625513504838163654806453771934903041253917070810513888101638024283466308982685893495784906085914606669227108136319912115330047949494058083793698572597520239535099473253905697325558116358870271507141330043360574791249975670978430519215124331336825561495646922382122794191272078543436884275649106325092208288532512937303898325260482078195836636038445048276315832053592618516669724434666100334041425958353507345963347184927567614711288683278104920488384877274404446705046481376687513842063027664008906699698008520847503922370502473859366692841285594287533314404709744355636736662623903742099161569751928424120590427922547575824505752388352995848717114294309155109799465835117527730406552178795220550549144418544339726451212713722468957543595614536474726694779419030209598478743301586715120366208572261148419327420923752134250583651261704148494787274771817865374860695918539811889003142669861253675862366866088527046763477522811718772296035770606799007002341201424651174089408862996803346658248853151112304993106410211232755336886136479210072967702762697029054158742628625529881120596452472367184249798573189539101319533836611248099538997375634260727798655675012798695070970754590623195020814996090190058617195333584825755084600655372018853637121437609815143586001825840043951046854571455712132486681244449882249509572951720782919672741341814086084305913375684550722026266064039790192186701423631513760195524366485772174207822757847374170464110208510265122781595803629030401101462723314376199450401965763774951448349255476975609291623610929449291677457838024612536746571836909522522615102951296385956850030777247949276745705180842811920949629620114142535032219008221076498570546886266871410417983824975749014017694598834143226996062245383865394646764488727309846185293848368040601671380135057336885733430604851638242912936639069640810447212362682719987838894655189341945895413819443607814185954361853431478322144946311620942448322108576144309130187715039937205614651460665730293121912841896527562267697346915584126401519805671489089034232788374897935294224579950801298486273567691150550896785099846544543619893419952594472784250722270516519131468545214146761603478460831439665269396890428499148107883276877749204187077656077143356720296061990548994528849463551022577454655611932869238857198751150303398587494915301259824990769212501383201630202583357854423174385542588832502992862830188921992419413326576465649612437706322967381700800974352533395300134751481106179110192601701097964145527254724500067082757782075689118518701423148859462393424539697063988788849936238578812356793921912986447744407099059421619478008523785728723933713616762987673344145094426090057080690006413333483984262536029740981576955135914587645912883981857211084146577194975452574751233404192230154742920028027870087575537754432254347838262339080520034949459210073877684802405577973570418152257526270534300193049368459765283551427603567019944304865373965025096184842369631607780224195151749568462657581139103549109911688587766341990805693312828208754947367908384230665189161784078309915493785697348154060638807822933697653222259980762447612776386404517436904552594904064222913752649275672463882293344094800972402324407395269905818047999537415562868701155339663378762506111235260728088467452510234623115837746568111463274426209780082325252846354609441972731123464895739092321947249664731279268093095282896934253907067030032863376706140515725659349196715440474050639791883086280570896272370212968496984174083709927099134382030964732637447095314606862979224301241097542593264339096890134797448286089981773081607421076237256785710563135533906947366837032184010946003118911763019020485076017073144280225562710809851538183076232619266952700258723482832902258356562102241104558948641626384804837681967867113899396938594988621081973873985649204975932178609758825046011063482100303955913677582587394537928989557498936763937574744657669318605540991572174386567087590697534380447489951801928232985225319731670375017897348637067471823654700030303049257370753098382152975518768426729704904023777096045025473609708377036997119156504428205365177777399474431133059960975029557375466629588313548959878582752455080636500643307908324771518639070726523401815061429194613839439209134227289909757908230690031148152557465006880650600131807977626671615136780162600249727336578488709787935453442875794545304133849654057755074724668895541453026338493039889047338096050678223946336010276642347254745826867054741713295489214242659123937776243717944038541156658664886722097656411159287809239349730394112999226821380755371674370405864011922989068730699575419261641278705073314092873709532928281244678416573833991454122356404443427329993309919009164373116889747541824231681691584535717324815635762707874625192208017146289884739706337191903495899746900925886277914810305152943952912787806619544980690786963958101624729724999092604579282573013894950071764048216235459793031703111267235504174145199574168711969866208954411412505135736407123177624816739843463728017335601068750251918347831293111601410507632957854654839869792227516523103663636310751675068841169774271934122046489377350144708657597021751690014609001881085157341602264084928059897084130631600956236342775012543070521919557014790610488184360474565206646828487707131642572217561736135955383135944824151780434790489376277355544017556493645707736126738145554036555616463583778005023446691372774954080971802282642956794424390567922853663605459043392333375960818232785280527313941309688775932229352852253234638964074365418906948525860626516115354684451551388811088978792874381470938037656589737337593851521923712996761152838482722278355237718062029260395208117616183433093664442587874015135045438607866127603918916050053273459576367069510553126944918109815863863214218447266154897988801982045909880468626445664159574238138428395067677520157325888768671673225987510192381880021634081136558696003456167324955150242335421053627002874757991699212748542941266711270519599381705207807221410910633600024745242861536765200714552531314153727366516654076674283704654858444161825740212015310189663942184837873570494500390220423411648293568225145393521838658337072932898833825494377888661134698032134011939967201175222364509978870083935139649988024721359719924013799502369386041568300002161862955666708123081186878231029980251814162553138377681065061486333055326418291661522769595613227485547766102764711007845032363170047855590840589141804256006008006392314230187481501295101445523313444528560942751638997275568516523418144427622367379155116375982048448565608202811486987957912199386040212417735683184288605480877132154710235064379913738742984663597156351199028159943094789499931949761476996890299060597119728247764833511013972311584962016832987184264900593908602973032946998974197181206784781305645961693534542735741382342449689947413062739677069914846183700019736295586244625434616493480588010458393270033530892290763776949393849005657837925874990620134649923847405142574199504660061643481720366717880639983572725750300289487637386530641425397834127246696434725732428222136186998302836537279874229715096467288798950859410191338709062273762250727166260488810952650858261032230916019039234384498588643430534530684933840478047184593859819905418646765118424056633889080118505372264116967052635950275952390446743086159344335565954932887871476092904359028875572543455778601438171485058777696065528786015388383383849367369624138128456308016171586649241134224039715384346969903205485229917096722389415965394877746326650766198105726598479203174208396162577956603065863725372677065695115406118363367199679733080653257302325366181352801304635191813385833302965155598305612648242283877574467818216040207331817221864536819300736520992460830658646957235658201261537937035206774565413223004215421127211155746912066127139555312552887798775046394896014961550668933517419072519127221150540189431988802780388147724500275641849277600008783619590408923946640451527864820000342637550120939648994118544511845290204256443191500337971451931953651860437972599324350785429343940680086323877481386551676727553107615183069018111874326772176051258687856891104208647008172082667824719383168071825717757874501483831956527389162605403510594894559596288106449930690514060335442631524875051903633078014556248164264647233673219026466185192433460360727273184229221624696247352757984946315072248527938058641834249101971494553812516922479101534841973992492458849575952772518045718933265849130224758984368087288667671380992774697432632649191207937965915496646549910020813130305208895352255661762933735434186482127455045647401354530947722850674797122775862999382256695325524484225008939717137918483034994123710125898877515266385452664284131444404390783476990677381958497629307644233148473922886730553845472185011783402424301697259808974822201330607945619711577254142775444244619718139807355411672733010344554681900773049939440643894785854382849029163801917913647744210019980290481607229255511143247132015813860138819941301053257406949234137720393081050733061195344840889776249772479073778099347816627048300578460338695192068956957342722062786883295105611366439786083615081228923834919332067237405946193289201183198635426289638723021130398329096222172056588882424434465093935287817976039929946028601108573580713098052228003421290644125850212365724701889600105741852887061761328517869887640349479362988503916884668471194389555567799357578156744578946929190571223174898621256795180500714148131906080806889297042227476017073056217379376718826729331745754214420164209662357155844656533217372378276562926007109562311008158661877470587613898166912779041955560644129496416097241822349316875818968190657878295086529111194109420427584073381890312096681967454334116153969366888806234884746724484158729512627860379826611015258839497494656509700061784571387440062272631732780439104355841988460191306736795995065366093391773836217311609639715199367278507437484085763081165185657399867360585661865723784985476414036821977151534063933106047012089758384588317159763618532806247171888819322483721756665029932234547444105193386589584055151954980872966938956134346313250945815711559214867826689314921712053341492181966250078014283319005690455701227725469836858409145360165730851557418582567142892882602241563133110350687504365290210770723867291046339744485907739428946167552534586782935562729824883637677235253041911318203222374940042559586451256133714480398301104779790557569405423683947675951429692169699325626106990245957395081336875589496720333345352069764537127200406796865694238440411054964087031919439183170498842180826369598747767842229045791127992948877924640773239876082033661310502591905024012605344791207060126861366087050690106821440186416890798502708805971160774711382800633684699037653782772326857707345395993805386946342426080372069312327269084763013141354052104457632993001286491987987486292703765660970330549469982286582941288156938096043164766104426447737176843079136739054517750890039352319983556205368027388787940452822671185429167183431705900590586338676711129122736091233150713423120583054622723964961669904362378247195762619744712297444988245647141043979273179103621554924775972805459314410694227454942191282378504988477943628319635744590704474600061785561502596486194535533227118746188691293466799837696023110304067163270211905906799664743440166446011158439920225371118022077044304762822851121397156376669281816451971676747678812722658199328316029406256952921683283889280929585898217755257236197073666701446176396318167827478942030822833313536173305509849241238531719584384361670158112933951186335656052873912758595032413311966860865209241167105432598378085858805972824195866799305159268320341491112177973253512094463015791852364643070334531938597928953776486193958654202116997280443889409438383714104464555266854972167992058979217654090307829608593428470205836731322176684493233105086018652041809172164013394347074938624127188646262140079469581469017538013911759965518608770531125919330171089737981108739174093463946449121251370357883669392366861287639593109679174853954794811541848983318168433444219014965520634009230534276771178435600630204637769403012243948619073917953545899149124706667669950204978603846223233980793118702183500369965731426467346590354137696086010536638626554735095944339201043986614042389537591734170966291535981501904283433208052170990603809163986615583383683470805908606874149807731803316684544954462496970088085576989862006896335025275441384030933367863146060369721274271043367220940194134612345186992770415873398312281191122770608524401543491799418530483994285821024566750257541504079538244683493157316862151164217197204862923147917467167709315964986325993611874951573118491492638255854340558493706444035055881342827000081531795003468729557022278830373853719500136078604514877047221394208049821498156273265561290380604086327888986671051518908452935760754699689832543821478137043887921339107000947778022600611841021115901446894079606543201886067048077025373398062398697048427414863306777259729257242224560048281197684122385541785305940244237066184073520140106178724057893897126023027500721057670326234577176967031959146521589155900916384996743085023530120508143032420758721687494306848734017745458432973519793307363574751071797433137361717434046695539895834013136071882340493438577345390653511341109503738952943922969122793206672544869052587644892747845229822129452180570324164978667821255955145763239600929532602062608001751152115828027135497330775065062853856016530229788140940140841842865358693012701091963329846455706998488672771737476843212694897679161411870233629252985833190269474251936571154299489176424882725024466618133175639074954197977748655757721801612832709445430275794249375789027816682077463241986048585551919662345354648101244487266399354599660738860095238239861831150178698680137969627206600403115956921091017587765279365801065363723799934001191592689340726236364948784285443639427123719168173428206843912387982559527895916403393382589538613181022478587620257448921949142654746204527428633286059572268288034549370443650696304988517584386374535900507495011884140622614722871291558808527481396329517368902312164584043366061950889035771818930781931217123203391449959725846295520938145278807978305462510127447151906410061504243762813560176185842177287605438139095433218925722805604490446441269479603656075697051743441021949033978383100379560888170752820289733349753277443622312502905512590133706713820881336164460723280728921441801021638948860473163608175239744896088083976303094145527905775894382737628943321432288341453316301678094058157386450706489077964404606171610311029499652664220117874219144631777372149610499992269982038971302572973783552326512904178867164259825440610220273346324201446838992105298437922367852282808783241668160290438132577534671253390846251813322556227680806203400834188890381386879070322449522758086605843634923583687223534565252340075341801341243340389048672250343560775162027506860719475046827927952653793460900225494412558113688903389020145632331216781949096838861543665257215190612356918433253471238755619926284864759619713602998001652301724073472044198232755092596901871696291471132892071766678123395387223167902567082952622863367353824414997781261994981698944417906075094521991828549782148542007819278896306298049991656306624930647226138016158960776198999306213781316211302579611178906520494296378036979620409004571567889056786173669483829328207497832094147092427567733654028279526316293461713480682851501252682619086140171919387121189529066273110252001840932818548903994053838537817195338258186326603839058838304827238478796331435428197403209877122114479964852632170271430805519680106119289602899695387275538377748051088668045808404402649263432189225312657311878728337518440080343039669326181388402160923336733362236873565205673296354392127579347930268749046841366374349847092857884748077654481746256779840554051916228402231334195073669017148537515424129503801127677672926855577681143122239653639897849228696683019472199053675732654821183373236018681274593357324614315558830708866157340673393727930941172268210140625304191845645590193276501466806936456318011799776905040664491484252018413163320335837534206564398348074760971274983765470608771945362714046156782407272987487765364859328080448766311796019039043610773854909723621395327002072528820508822438715843332754961072788390956865546737471674013272168040327997651753230088124406642696918186616005699757381068628455237306871708375414415615142769978086969206828918627940273805176775060906266535600313916307945220307644183234680924519569978070190166199446776493125947485350483499227834927420114053962499355814668610245117889564046552810179324927308957205380039061107112768256988873214424611226434934376122905930708894142032321315543172232697090896774040246166370130385952331120318356520370339999294890019146156183455537721321798655543244968786573909013364059246873091648391570596383839661209609766002590132347097640428377628939310140800324803722279935422284574570835268737846921839785440079880855239267658062866247398891480163636398478089990121309747160127426973619633183300235679737548006772540884062932911571940670790003739311224183211872463265491875626645252116091625711812010109122501566470933997126944866709580570905183000215563352202240897117996710276240528272170920571380729530675812143806633868905982143456802933213925350896297588277304793774883185364302489630186448808125037450274914261827324756371305204826046627161806015766935146212720190705467769062690614787926641282448308431652833342177148827419320782571082056937292142774734079170953599634779629153424149403065962357916034895675309655279192879636735352240486942092227188549801566340475322975857976471619705006230676007564182129503969984143566879680323686664111850913767765415171103481921386125576393970415202652231397946892793492212512097537706215054601938508467702149760040680680370630454731240506620978423622246759050316006875773410333039888970763774134672156921878129771749304121464097339887786048175154167664104094008661145586989390442794771671986608408036317956030116095798665112301646931793889147870133783280468279537599952891420875388461531209903653580580589152847947584101429132449159625768953636144529264157267707800392151223791108365617087664055187554980018970059739566845415677594059232292871592696748437513387155801104179363877681608238129471533486919114937592581414607647272351415417597475652375930017737851310130658078083302187853170897539998607766539826080238862702485656340414980938644094032532218391685589123834507189035339163420835567060911284616706375423722866837112434996635344496277833794160435059865228161971904814907352025701682522589815446159871132694038433920849938406669020975565695261335044387097594728197658612420071363253319172974320582738841524170410592929604558637316098961530948076499870437014862842629241305470339776017081269212337305823827220461093261249188566526411456341055510592006418800216093296675618770051156325943519658159502228399106770910983437887084261405171688901079186901276542343518945877971591588083871751067519347036430720528978418295854895093381872699989660507640719516478589195083100779110107453508541749363429000343844424497316160899269927070825657117333684758748651567227187092942787247264530158741717036145073765810689721010235216500430676728307475988663755475038960913049247974053400042751071455465091510161102407028972251354228752760264938081467286964875899167720387202980112819741193742334090210412589600466777342867588601461472970251559291234804139986517635245911802453123697508460476515919028762613259896689189042556929180368249234946465666224923553352866118667898348274132048543997132785774220819733895402877700446742368413675982879193148371502186439247518622121832095077412276452153181025333655238004169469807335778765132060482594204504932308409189408063335431452930721440662546992733632907709651500388338603942024385592244882812556114599054038178301714690772068199979209078027706234396250689964476554856621562802123930142944238258418842227234980980673048372518951947627763643746805389640541407036126876544115173066781903571583252976764572975676681239634316455970871115157670164278135805066898065371039866220174909709657409610687564793896401226107223880613791502107211952531626332659044730500927450638523098312618337871923712185788755964055926346769319673507910834432004952163514829178032996833974678606492678317404779414213669629129623433198076360733326336787868540012252502439084065501473084146390408161010760133318257298733635334819071951527663616982512415618127388373377450685697707965456137612033400310011009113910008924870744808152225420273410857926159516046458820155155639436169197634722048216528725745076562404874984985158818582738264537504397773796547279158422754470624660322609310775198394890739399843078339626458442527071348870573809173920908433964700100557910729047533110484254194471368161341461861315899566375659407905593655291512719433346079874606854648086607603770035511988184971263147522649434893086398781182302474733471089194109635114216903775664961564950834240395213166335563959536775061261414721033361877881157931048431060525415314804381990570957943085835237786357381341369624872926989712860894289622550454441085320895363640559374808995245413402144430608366905970970515662437174424721783152313455022806504066913253818320247789522333346967937333796292127457606133896372549645211420139264638923603429840273430851226071044194097997515719942604369906312952199028011758109477206882434045557708578567982725951018759963245927642817848368081555785273626407515364272244500501691817410301625137835560319775775033387947203621566312142463180218472312962488956634138360978448418957535420772926249227020039966575595429667941102104826515046381768702480340483274857497408974850271307919998810323775603777962276131068404555610178278753902668792415289473080631027030613933580133820720449550791625560058513947474021022257267437449319969439534988214493007382809924086605020034925922582606040528599242312374811625566865988298561454425176696291505838917893809701006776268846272751394148462271837085958173333567196188065237770334661110460267504504309629522783690910305817380961877017810228242643173408707655445253285834579931600153904990857281283075604627341508431364342804950119370531540942005246831321259279076801311818373084014481394802832443642180569320086488449677724785365774568499611099048231431999714172228410950254278455465759530353384580260000987801157002766680628242982522066281952244504917218353081877455637837891927154187835112604092227235515856157789673876062091088501359420889740294826139026491212037981815948116533337323086707779188890691245639257606393555820093522866416224463513727870618089352135633999355399217593308815568972962846816711424005717702136513532063546814057450974284978429354327205767531665021135970579208836435918127521223382483664413732098991027671005601282371767379098453386721975761743598046282869316659107069506760668122121267075715326739423639631154483544629511634676775824036523025068681426274152040478932659333363910100999585330983022795011951530358631802690814955899142677220319150187314481694483962560587265559123780479958511904352381529540589694718082768912545231506987045745598497839748667642922248903553765044738075926046036970396187741974888144835319803790963814313273398868524383831666417832117068154977953827245794065730008045840438836005051644056809539124150047489123358897655712525423498263165001868535820527615214984081681551762428483771071658777851447396429539294102883741979010914078884126808671898417430492539080703475392045340318132366824377772980266330114272102761045550228546972384258054323582597510773036010937675875015171410473278185917863224182823412650335640578401203673531286074731797206923781217858245042232245650919113660178990661940166951074863246062216760538395368891382123122459719929271241135690432819228388008475287459812010275716347131039593222925885629054024716624978401327569178158696384528631993067033746891006404105174494965500193772486880875805553983699105776144020460857098528871499391380325607360031401679025101803111065729928805768817831258648970750197484689762075708462671884663536659462294461873694131874753255944101440480169831771841377085368855074691389565837043439814831418049259774583638846494662464055088275929610766844079248697034484759447352452108544536949022717381108919851457490496755549458366833488264215356602870360943465960603548232622820808691082148044687456517020314207416963357309251326008261819266692715744864633772194730882872054811675904210028802458580257930789500757553127753951686757939696251525119336436016479289693627042431071392274170962657534282166295260367279274707532041630826484275906439559026316771190185232417703671281784819046647373113014962047474941564719238893124661735611111699223877286628848597376055355225441322401526084563153729732229095327028844067102160016169508423632744241953605541039558159466794945615067286713726780061389792267568413758708137610705477629258839449371922533257411547659579683638001919308775814091963862012972898081519466820712190777756204177806410094479811684834069651620771325628126363157043448039365580009776118620763244767694114929801817256988701600533425923306776417918795130933736926042959063634930342724222595015098145659787625556628759955928915845713527579983613748425767183427680426688675680735367751399049853203257464274799343043808476644166897015794081075290893214236203053523642382230052529792483081798826098994656260946335745561971515855490751246697795218663338423103805469860707885500064811734299596257857024466076150820672395668856070595594244702470845302908396835336221427348555406074686713811971834606422830541470325558411502452160173838761181681395203154731942608748810044299721997306661960639201492961280983166548948665220669505742088450012976881161660273870787394505121524222084287088339461826096172069269002242984071274752128215640494189969822499450859549928967733616595133309884159277072423966414178025377436609760793130853438214116330042999677685078415457272386084388723918178950636970173573829867774533005613122718510375326500358782335546746171154001999040022465108119309602716245509241549677536893994468999152440071270155449935087264401409690093365650399010129851150140381759278100922173662004587001578245738093716623045462278043017924125130627133502844526157942827528064949839246291377190582775901146155786302858600823112761457365439377094626767473511267625339526175034716242872664060325847638888677452416385008944081240512140977472788307721047091174115965428589856018823232348789770675925356553923818115746180394475398762560118419526980759183866848043936048723754570303676097371127697379235490838193152022302825202713398174810771597565983887438959234570847469746960648358945287579383306287214592644206510468440071755290460885392026877251274283222683662400757227564014707493750755390935214065681907802156642128864518796941964283579459522195031653864776602622587134900336423466192123280372241680603932002744828079960620142724035561305274885732118416101805797911696603981313878498108704531467791327946544011699466478814681105828580045256868014250431562158172708241004431990186147904488687587074015911713042507719738766520383159180471232460558739080712729028555302005009080333534308023826411962521279380497969898017345485822648992875709364560258568529018361805909641861512225147898714317416583431376651971650117053448047749142618881428921555899748879889628705136289432038563467622261263650896334843018195393911549786147079199135919451796758013270043561013157355656955841539592256212884228130780188854265746331355419937577916938861289539483111753814821969180627556040693637733252361306323944584679998796018497799612052631966717141564611244821974099164850888713775050340208513168891629074801333216944128715044466157419906026183851183069528557885904707488926385064052122765303669157659741995003955930178677645299016447624962107041711693656108325101814810890799464352449144437880450995696321354619329045734185470667877519037751036493084961876172348922203631985961085598153910019032174258179137434721333675559961897295365166789640296304589344659584160465962443423959982558596076341617367856732416581553258926078701980858625950952916277646142643016152109137916949947877745609128180275071264216570487370712376206207779016899647251894047657977405212345309422863163439502747965123644933157892556149438804163759472534274950549699365892661046818607456712937233079397912504327360169267951187285969783082132713069167564885673536099550621898631084143310941271391404075063276872106104554427860243124933904106133214066404696491487547893742245608382995941801548856012870104774322053820442580442558904452168826711520078970384939549122616386677584308393171110953639400774579915343861574679934421005118963023060998726823861780440655172109003808742023172870862629315598352114206775250340412775879794881425729061831606554816134825067055173246488452235569842527928117427958718169151517066831086220165800123413029289936248683099323481112786169751805859849710959248019431643541356924856685329917009865609281469892056563917751149028459410788371755009665649380682319389990135318365564895935072898213124665771923348957343675399503766835842897611328814871182212294710373045762522336780159923403382959506825681219895512362531677089909287636443888235919641666025819525134537715835734751767638056097128731390443270575057829470281635867229088456814056326193635453689268380009718140287047720875001761485587322260361967363547400653579186321690409699260996798761551690871519991464459126631802574262702901699906858490474209077188324408713949561748002972651576796513657580465426689652510933074240273558858594302646458403625987549459396239209877897211887555474234801911779967379691361686412671899373650691870538186218915899147590931551015329792311062419418723223393517459677957930489266400258301535028399613862191660730898085382281154731621124996393184451164828542648790342921140736855859093806036176359733797974643893206791471005884190627326356933813512488247493209526411367957773658507456742898254516126109941993605925589585230003264227929696984548389200174208489853881956597415763992442850737891500643879773644951240008272021610949138848552667131446612842588117387107702007670815721883043910934837929712522079880791256685142912789109351132098328666472509211608621900083042701578489883407524086296351207892362975700829415156306287873069471650623771815607073725922758280704331786963262610230267542122057339527862132801297705556062858837167098442703724367499909891281910024531292011623688267355708891341035999312377829435045102282536885072119500490412814636006515937784757033344675417585669173402244368784730298288637236817972798056614821636284340348289116797638215777866936216053862558486160627850828415905904134038569450943200580041716545377886795647971972489964432940360409969917975535372158350994518351774124258169745520984055695433685192047297006411836933888804752371329426292517246533885357926158624566607804449898596818134405375164915721826536281402650129009078724257658073557837649657895854440553798496547872553714722762992090064308939466902439554696874498557064269110812638951028736458713847290236860496490747587825465794094388192672373126997173897976763793182441948754350032492723989914611142022213070241728794948045431817084871888403960689385990356276705961345391497777341064208213717052825203104376932178460275894024451979151099788026663105194720298049289903178764926025720921679137178590140209708930815664723264705220426059653568602129597144743441190075359181108785088900866093191450636585923468482617195589582020297354227627555729631309891897447228954580761243914796057928683302068886322888836035723131958283055075781577856462910844945741252472545943053128839967295727358193606958004301890072377426591193236147036076963431826945185775245124410349636276855127924355573460135919105089463047304731332914221863063911330281497258704061737134250557368723108695186533934726505063924402958631731580426333329928504832129863528832456776412018699640635489699390869135095146879296226179645544527917263538782149811190301115827178474506926181875768999495215718014789337202494435291476122007311430887754443373367514172001690445261688332537189215114089946238403196452569729647205030790495218735477313582768766731384166800840113187144401400075477661414283412441687330513245584004128409581541474060980818889776692945861160794575020178047379866008136561930193674247713117362829922166370953886643299681006929279459808665638063716430937237374580570900056350525502916512072047311687959707426051049770616501859650552798786607530359672622095256576556406138519291476704355036517686732916281943984791396509367447076671941881608569238699926873250185820712306208710715193500683776909425902777951620749119684770744352903495253008768691339643851767376250244568582869063992703390948634036076799633201997159663013097695792151281922272344333139668741649297578846385035768790076535368707996045135384040408971329614044233639198987069147727620230138197030247352068537299233507399708859566111365759315624036918969463683396349342479360300170170990387716115739710258465060366533149350204472180232117671476565925641589439082785736665497068740429624731943886616758737560134496696556742826491641130056578427358713135954993269648659295376459643766623784802265845678245941974284659880516510525194723336253228208036099656012368801663828519022340806013090475445874033218040814925364748875742241247669275370133440830736934411277596006759525995843012982217823066464720576596359521818953603349261242187022025428116517629418674127935160270264316993833187960428161971088164274564358769497432310050062825360618309817591600530935761001955620109502804593751494278009207525757564157358028460388644738216029328894937191569243367744436091010810010083127921082339480744748719215693264608874690270127784799704176430428495915288159624090595043045494434549218942135135286272284407937403913239625012065250822684141056764834595374985441614935344881645686981791739009194139022592394217470317147584118067363330212702338743871579378316117604420940110273151566811702385744274095137378645406745776245871516170865536267653711772312164343045719947421721790190221034307155039134594867803726352482860979102477963537139058634998171391651704318640363015452639734201136390366983594198604047233299599713035822814485231603259974580621067527711846696121988623425083682324948803690813274101310802555803860052375356855215468601424652367946833701545657657286296848569490361036479737223077232578759381604046943378739807722971313091224618463663622471367765137369367740044856875630194903380661993809955221818994449235651706534806814147508116970480857563242065164650121778387371658043244465133605732975759393057218628680782741852765646442974559357142094529622453701815091442390477563259736775605838054474608680442422306713386454185665329610068702278456309849688305928537490597182679289206789645276359910680731371937809530577121811711289557439369149136992820899371545955814390184245871632369891662115731111315621598771158856231237869275780966122086917457176693697658094151756337695844943307490599216691122906720337388773697473641895841774110540069814141156636490003813016915240140956406971824326388485052480579555959639057774246524884456935633396826299204243574578718076977266139377899632667698092993010144401947989672874898826649998699456042797586015553265681315790117117448014287836008731570064492372243594660271946381000357936060569330602066234193059191084821204596463483179776857573488950804919331786426076853855565245438545255853793832395199431879000575645594997074884365184772261002236589741588078138180890953122323684021744721064827074502135936672763798350037793463289539960254510549289353167576155746681793974425792624529166024562216548167773095813505119607357948883722582458326769022643780390470593842634772040850289947020970624023494564756476990893425389625568975107671993951597692338906657591386101017781794933096581472503287050501078095341113747407807675024564757574701092041571840167860013912548904285641401688408169442514976597333371834974732509380701462710938004869472201190484434807643651659253353496421417405664422676445880755661647904539469559304362965317616425205763208615326518020047724117914504427435798372944654430720948431168364880977968563426599636283055271235545489256304316114509796856288596124382103187774603073871861648922324751753633458731703449354314231638381687491127954846533196563091625616992859569170398647822050500640075393065598689830027069810964264247703840226021131501130463608717935016709627557173132478942892981525316395411452453146384207960330567765656025397807424561602285833938025301901425300653672474958136813041846869438026312675892183926487537593078969992326616554990393558021448737929324850200769216252598447832872785455317682129579340720935284827385211416814486384949355746742507703128025846662769051922963410243663759831197991708688674305395931988988734851332131951741347984256381897560286672739739056021400926656583665519911460350250126836744827845430257403676709150801201296650079492301730290720972941089109069447974813158494155674646898480289895059562759197790570468087190275637140514307440047409960765125920055785016762293819272134889403168795245300461866235439879419194658560846918504857100781941075279198705611396727357333446280547941782241531867995184870004352336763770321154414426750657490148937517691228881685014693222053678379884923447233511248881467992345612755050942676817169427387672947711520070488642475720041293076573201350081483864209705788150630189884187264078193057288197364643129924741942949396611187595440050121024968256964387192234754388573390246300142466637015896997313312149295354519841472397190718799051245686068166343569728233473519901079155628438446357695058316052350081516644624377971498510826793617891247866830908944363807095561714483255822459014019752625947530313845100488231053430999702981637861248227373024564345458517064947554227740996520320967652872817350493100949012034110600224811819545389135259720296657471960979963676639739023050570211881875708358790945720787937179552408316968220822265040932446161858798259273055468247391137793798305691398619867454879015721624885818822342952186449453375832651721693284057062219599631015944917427797638734919423859075825077373956534976543953553933781169307484686930015079018926262475725588139433942069431009884592212388814192933489372525978671920142970342529140095990682235399467760020896467457765790448970732010545897618426917874677924525789373902088384107113367115707354243990509061031411582311399702784774774936777956507966366552688905539185184369702905088234074463019366637596000681100374525740714579284016092174841118854408058491840113685748504868069021384826841639900392389623036249359907115371145146862811755103536103752689852342585631930863837557813762131069627776586842923480997864583048610831317437908194434698430449825655822894475033875528297519223213761561568444489733049254698996311519107734533876296104858569049791595835830307545541946024681592023769751648000002393634135003886764513728320372686963584125205865985105164212917868678068383398007600714173486748380558601541179233736727154931546966627544666689702081786780588981099486652561872876530401226518196100247308549063925342618925742760367832711937484080626813959996726919085129830042247958815113183582428748214849281450677277402674780556351896410910269350925051301758684627257532173291964436232461033107461561526843778859633326654371233434929513161154992829449229924256605657102884010647811995829405092902294118666351863870288609610598106166259081312134623942907276104928987518688354460138134271527239492006003447097733246047578705909846135702707798267210148671168182287512533875032475514936170002736989921790324097982373628729225787377153908370787831890011506264645226731704305482906170895417123052634787275545081092096670369304128238203511642705940678969910509346134698781068482390550000929118170836668756388542729294863671948657613690764526422024776097856765328846811856788776250270564990408115372730774724059277246848649390544912010423966540228461548298669641042510084451900675140382923279028005996977320281294149694926929200580990433655156630147149931893928070520102256508611490426390836711777061655393032146903321716734066382057074159343600024635920055591957026923233025135577116754193360216420240219606650719186485335737003717324959703750509650555693503114167047026015931057303272295466250819584289972146242719304914543207448795404688538150231021440610556567851856063349029446320225905887293064749653231127603385168745194093389231365239769597872043442518698591386719477918021247133614905994971480135783811064828853399773508730640505444423570015423370133896588685962866483397563475759210873007500034183512179274019757666926224583058074978491993715357340149443528886512249935766092755943002277058759005090533247957913156788972287793812300681518182815721125665213256113923072625833179901872772190767565183863114710265444135790101716916123161823040328221297007382471996159905603684319281095100853824359918265808848284408903086167170540102150526419865355162350751754881509786467058557313423593596383591429322212793416464032123282421789191996706382703291705366067003503592907349299589891151437365906487336832990022404967141567875790587224008719315037706125043190660740633764353444908348669902393128969329639669938259698875057920694603602042684795229601342820764804290052144942428967894631945338923356515958118318719383287723513414088854611257045268837080301898667742577413948503836502899684476593188982102725999906600851136736704788398587549669108961944535845683813004638249416192538572923533515140326421533222095473344361038884150425140563469036821468460091642839163206180922220081076336641206536333733238582303100167018673401755714003453854496436440096990787133208215322604419290638840176936483684384969725844688251882674115326547351226413022117890166919762743700828972189915222849610751575924280132592960130010967412015525546355985192503254123974596171054622844265862057787414350184949386562630170327582613594523604601956514559099514405895023956772681280313957329687612539493609564178865311751129562797880269875941478467402878700769146697461753824538816170071349048362462985523933744102957604571335203225996083783949814977680477364686963374926498214981443413162723006264151767769975672347439606996832845892616492791758751159364977694306171994743416251679687391186693426024308610339947173458005168640423160212192866512404296763186058643278737530905428729781652559248030903036169142856796758482183606706244876401865922549200755403827607568641687584138914254444973939598339544243917186216120594201665153999417791390528874260432075949031413623630921371128941903189987838116775040824592746165593845924491602110765452268962732977714091342495023331728341008151417374754932219273681755903286713786745397468790318161473678245045594800205228820593620028055717480597385435157342172739930277791914124103750815947472154730427549655329004426409656501312039600129794098136757893857479445862687000880234779056656283839678040700334191029952090939612180569903041683872355593349763715161061990905101854088864062335374556232373029267427733659902514770575122758435628807570611274348271596019438485679691396143460408220741898506375051822912331141822635952347931976418682728706230542381446181727766455984583275788690031618925541925473866219342710014797467297361002437613612240644723726182731356494454571524339116295581294546010726737321938612136455877887166725407762126212213598824223972001608853934474964239229756743542092798869509191105865533796608134243892390181911088094446479704794909051180996457060352217727473983354760936047744339250746987063441813681445509327043758818019684625799481189501792424057523953816309080273886349841989499736164690407675057939928873636573605893041447166460384865787170135445532925322255538715206412410426488026216547276583426271083829641934952585552594971717453518361344231863000652290674919419730710478607095446784309720295909585108495652840620836887637535902559018155857900104528518402625439741514442497262170792454240469755931739637191608956569319814361099854614095543877731142537059354967393850202057372241949478500292854894299855323958913225256009556677230746361448558057069671010664698885388789479566834832151217194059661993505490764648657085673121233373515715525266557784773669253754016550768051404256822942909417083006083775154434564384021622032582617041949163429877042956343798865744488705654947701479962706811855840321399912961278647850656429191408394008174962519593937562845494975882524048880700044869014473880857888989960858102723699708218080538477238349879285722103430046873642733631898531856104165666462771902754607418657442220249164723657169913407979012611411990391032449465811773772808072037462073079193756242814707930394039059375822507249566364224724284321075686365550093979539386990938442087351697058779989935241735948707174402423804720634422544045040282324650365759958423641690521669896434408587045269686281885374090125996880676966502310979174700498533127136938862350795455320190797111059901721459897515419471248307499428623926003022316131016059599804271416756293682158240620770355222172868571154259734979898748545708095911713708073328414241141974261131153494342862733491925881893792630834687655829476763674460620253320415197990322461402639674938233854710214558542400087107695704401704599482138184221681063824143711265950979310652824199716746111635624499261819385027145715458312076075963882817985112638274186971352767055626290503198736833344047131185312749718645416385803787012167101854437075692877004688306233606855596641184434293183885709930423034314348930834241765612831109451338283462533785484886332972778751560952279353088316188111899194769803023027912061866117747472226677486465893698423664705971444198801136421245723272038563546278490991650729922587727760704357522959484785881993689465672020825762026722951252024720178126769903743009700908957543579886651487470810206023201570712079802311201810204170998805685745848380974482198164276907793114785841681849744417316479804865115415335585291601642382976591384946072639428617907559351881325958580963527388124739831715612316825230454386331178721687779147706482209859191034731185982333964251679649095965404337748584254491800752995759512889212640192153144216895462344466026466381740163770519541774738810015307503374684780039254087085953015165177810234747292494791634407646972069811929951252279534999610512975445064247087784521826924258128680388023418435180442659219803752460870267396375145847202999900973506529654412841658268709473073330030538794871613772159740568070983268052944130978490400917949773031692296920657216134047466895752023567771811005014402035790439298165692645151327985585265393099989359423113462016289403967940278535469842884210461372070189082686875323981346694705819228257418036688446317267713266268385389505926433567232602533271753528722050182217877754456823228954161281193032035732488541266785543654270317561543933045926672856015467882611436514014664848546446778904988932300610467548407513218753867057072214340782747720232552328621368386959914230381793400661401083356232217978504743417161359883252367150159120409423667957092083129078256306824349675147916668401016602473932608785384647734472490288569029840737107487945001068877427944486833871029376155439921679631541689595894742222581268328804613646794766869468877281837858192791875381618329482674685030851343204043364008401668871376323132789535326581625696364843732597992981104069748404973477703275450245126254083060867231912517922754119572275710238248071429776059527330582927558067438092511973468006820931949420569007048902744592607327469547597269768572312182357828641273654945027156318479161039829706989099876555063019601493402494155491864403234026911125848832476349277824606034626568382551922214362309485141891875238672735525930274399412678538927989654199117635756110442436107227994094243499443988690490837073375187352454765724546038393162132086080314375061934929181135852753764235360180047997336975559391369597619880996581511129802105800173454484576539147321939588864611719433120553622610891928300397370353529408527534865764357634006115408913322518183628088187910132169249494486016765362667139737627609251389910625067113180693364199608867134159634897162019125478121591328104222522374572624313233223579088028511132862396420930560857049368202728082607786617818849693767887619857690339735262551430430951494095933534350444150683461199834949261113975673269939547539221724712920910045539053167938224362334838794279388608457128535830237021141026666409572178486585803638828600149865262858385897745312777464573976253848489382830723197571309251014227288838941925587929944012731527320179580237022806126948834521914057867780993878006352875476817547312262811618242221110753111574101774158718117348039375296842076774438710972023979898960389724075092719031954504952594177370831187872477875732663973559554005914563791716193932243741707278158676299504760007491295652980544831906285195227020124537618539003449838681389774089383373715093195496413906921246495535999257741540829464523453338937492312033704517775918638515167538339870538666503445462463500166622344546127544472375867738432367300482641658800636112981023921828223954453682255389931603604575667490500921139208674857330604057499294249997354775887290629205056399653103343375537948461475280524608718128928673989356529571482344494349673254064626191519367991390489736728797448426144532303623129329505377572853801535415074432005288708417634797968044684635108897842220845743824646583623214489387578192340025259025496376979644907126334956498363018166544086771106559263327062821705737682321255627976233304107375546064076559624196712458542445925387387650277102800908273020450950161355518475554804835313781009642286557702727271230239677171755832190197545279072544766287054521265091075709060085350440411119395597123561058699116319765086687470421550839725074826089917448433745313370483881327468452671128156962311176870144361279694386100093000020208012711901788606699373878633060046024476457636206834253343867290771103523751874775306773161773773945098471492028288776234502767272611656204406740727369618151868565579990895361221692813193955797896336199341847242307346282294714721206792164741086411458503055670824268906805153985104177012313854366747429462791109435984822171635498207980533205711021327572212858658937573635033762843446126169552794758783796194684143081115420675044312005667594031452364308954907312221691251164148601288893031890733089538180118874758693217507680923034697207895261751625412521765782648329246404830428731892528259965017422042481972682607551383651744816770156881100620722895676023994068642198387966961428934137920475445634217306215725148682687326645727480761079827671615181482003159008622348302522815154876761877797984513315030363251758019033783968121309276673654844330429867569498714859202834273488888264330568217728254855559364899082801073521919771634623431493816559890668556954335352485394587976964895632809354311705233588646092652421867187317643568805860348917521143412091617212182570110202371825346658540904973681940726385273404301239774129100084656627923353434790430765258628424604212113894763495698378352964655642830041542010443617995614775662395978340479042592329748792293073045109246627731819199450749221677378486249182611763882854968467822854768884117574492668572483961213165073281673546797760709998116053390335168057080852481421476738499260727927153841318489966826753368636256973193553984493984971349101124796949732105080151244267458244943921112430542450757537271996694279352262481855558083445534721429733531704846853614478028658036326363165686126685707436405030857516530327543079993692683881004970409672829277529062396429702942497468681391261999200262217293881615272871782668081731551301903642708851475494609067981137931465080431614529145639813778017315707836687486435069953362062833734365902064642947075530075586559121990054582920915001316533117832283095808173623508264966636151731649063805307564933360388811510652509842553861037400132206440739284413639477326482169986455076065908882746245274468722373558099498641374947136827832421188293209658195171202914530682971607334474377456053217698745190996416429524294149721167211803844773090554326708600943536125699936249505185054933731521866521587316746340359459819734701645289065365594638956328943296439820480060200379051176101643914486342400560417799505106027703218481437128693611654290475616356161776748165435999727155279308437571386191262025271954816778775157358210699054810283187896096246631743795002859342774660611446709153949181936582936240968734691777823564110873761035009827227136008102130035657723972709209187557164840702389876747806047317661733025856095971547042368693062855131461502497632623541382676326411240420479104373827737676057415754560662047068075108073300772104894253553193575388478558389469787935908184170100783519579942710078494048424247270279792931312176948601632488320590182827589610150304560627345778941741803800324506480450133750186928034397574303067754253444072791886804749858119132567096336208007503831111245811705312834639930011378001423275226696848111926433474568306820986089881258796408010382317198298469962449062784954582098032586839418509514568425044223827069276327215640459056410706463492523094820301960148204181268838073618731001063943848081911542309250990426760222038843132013767341394322526929693953097862106229247991001254667552046453476276049817818811743436241796965458397445966685426630285841817517402112978291625297374432358821791158493133571903905432881374895202093214495209700718775658142418449242292857274062338955648824140128197994060443806846528283013853969284136296061119323603178292984760486870362021336104375624655281611826286849402411674219250662190466194762742915284962677368047710249960227638004735095457029682007636866482653876159272705229999749423317412257860662919194727539885989937351627873622353198846013063746338975258518507823103959445395527782337017013374776886998146017852206564663758629792418265784478529245696559365793223270643042392153804847516065005487522071351817123514767685961134110253221466974151399745254794726548485134762002638857283055032525750927784605740977883209440115847172278968904039664823853465133239659859755423207477328502626131691381686136461853329014186574476019966043663139512315550628249374079414981485730257477439367335639080485504514746108805091390261684921274840636885279431053904600225968888583781663745094030335301287238758126339127591966927732995141884457179595735406724651296545060805896541633676105168572669757546531530489084180098600747828128157414708735508591005984499319478966268786028717842817096468676129853706285399551759891891613262805379989565717977216238829095138670134840096800238236108897981540331215529626805734741160989015253043237313771326515184677673691637049801019964646355982301888048552682514663179930614398165889026782470633807122843784090593311126424699712859232337031095401188524011137906259234404582370026873076134103260790338448529760452310362127627576798980414162201853625488883909138098653563737815332684509599674551158158321495251755979214455389544231331298114308772466425447789572811994204048576715993710865927856918576550261839207220678107263829102899295219977456004897979531243438308600776099025269972149420692965295102148941446697374104427848810596933886461325488014752229371342521112516930399302542982597635582032710172177648987293680849919096753083686216667137608311636502022927546526280145339932017715817309805639387431800956026534511231040588039615893055237689440260963675199088194279932301631612832475499566094853513399450887723977272384885155238952474559496447269354908873384862692094374951674308661386158948630432168332670413971072517170330586982521353299852754758525994489548770361409580459718753953057188795877113538004444434736124319941474492751019524981011267717692969527451896230889775165840506053607936956564839776660585806174596070512417640474238465006653595966788688799021780003451654422904380222830639098676711704962542207950678933165367092420912676948382507253072200831496233464522057629965969426906691643584038218073104211702973931868931821977226801794639936588239985924235314743222361965174941651617729300604070553526876177235214686027030713651561289350194129580605406674294724632755193729015363996361314732105467881237387614973797578639709691468280028708794533678196279756310484258382563321639153841159889547298316961721588349029285448633158947961673476070394611694095838854940978780494403511716618671312006534715726918454948516474139079754493815349800475789627975959068649344002571339379877282492534757618524345901352284643275562744476574774485120746726713417173619464192537130133848349715034723009848065829720753327279361449423494282723060890707578534662221668606829043177176089323593868310870099295990632537703889434930483274511634938603872522689393033953700560480374584488530473789726373783302267965564123076941353783437768921986309577795960622086882406892257763544066193604995352539889505999186299642063470025003320226917071196431336094318428439623643057750963802722492924717538152256559523760517359674997592173206851062130715206074033584445759350337547072257346158885404881534229496248974376302288925029069281584743057142948864823771806171604626835849631319012880432265692005091915145174306638263572521375080611113657172506743635827895434512496237822989860610090821641087986611288105418537139757134375379962989374781081194337589819358223790297147336971284903133081946995966795792461137549531683556273346532900655604048170683344228151070257192347678118330544936303267598473576400457496160924677010588721829759457020375633807157478106940002483778888171699036924847005492477729880306118194771437246039283694109368802760594560749847939681222109824397461533763258944227259012041582641707011251735497232626929177991968437378475332737272507876147406821628398891179466406826220930895039966947182937860332731757780421776050278397478201722468339085068502245172268539295846858357779461378500122243136022445532445068001463054786008330533209630339593460664261902521988861583583761868967399934238946793280699266090722143315425929615274279195999142504681956498034859668836864162271566200269599823198120647683201336530940086958140706791641402869417426749875184953448364918826565687835621846816998712361397696351927901130915049504084062720341861146572793965928089067982709235289898908819255571446730287688773169547360513748028930971086202375426811572199912882407984954781224113686324922613609907490848593635942856961922631999799102751493702822038613752571652127761360944923175086470961273083111087311893844335688265556493983813296623853199576891150025748765409390632625228301064623838239253663746990693869271146393413235150340862655263947456915605181606281497663181032702265549028903226553691683999068620672751833770276115446289016808641301286440971224906938213727388178713973943144632804539353865854057385270530162673840064829941357074182938124596702059560983736453203275560941073475741394526651507056465897873290233207506471073136724878770295084317342414850375589268662480495981253093746159616568908802165214985426514456395069626420023438925742840635613349977709472577815987370561657878186374397576507643682512745192865793941449748137078387573050429431722365796236221726702388707901546566129055433210599614057570294306292559485239682902626347462298262779049206415947247879438686239923427130545365348722573877940463554368416946166208970301620389247266972427197343167767308260070193915163304742410702609067725201610752939388990917750858935025960468013968558093687492488118375195850663401817139963802075205946797355904818939538216379803643389350829298128274133525979727099464174234935607251642539813291986499601896353733807365620394852028302951324044709522874887307505341876517038642181454369750218689426286059247008199234514926642333492401882928648118734765049046637641857632616584675351375786392122742743644143040309620614138690373939392469502238027072233424592530115675158508732900666299339913496137132617491165495715341979507516501729975145436613938154734555542107050552525570604535120720531311697854687833249681772123767859317773832425907834778528191340960000696354727478546266451511885324757834264302458941927096731138102699640697668904950920539229659024079259676744079790761298421001579713706675997811269005232795565353854756097692115136285725701713546887791899739874212206973189755842940340272436435102855658591519376224543925685674139990236728718873403226093653620541613799378988942809675577650884211956444116811920509127713048935879881413402532420898169153969435006422573378744625237178447677855787190981494250537976474517724051594254468393240334734297539699897461745842906760675906381541685759878026992629466305615935800710052168592784351543265433313456781713074267548597144360399840105246737245453152711461508218933527807133843525585049686531164038004875494796748033517425179096002734567803781063402415312291473025175225271370401981832026678148251718875730044417076692974344566216363695436600062879336613392918671319261507408051768907842454281167220273684327575217819174714890344819000810337061242298066894890782572344338698128763903519704299543296414543068362062119010601236933495795700627638547129892264088806491133893027547285854300223306380676319350471916080051937646169856731047593714802087806686474586413538349508833667145473464656759330314698926118167014190396369965431749069004989827816039093980610537834205220817384020921452916902670428023488263184767394142605933267312787235922873494816422763110529321596358802865594539679462608736855600712792558683657604669503100539611026587659890047275475130969601840155562342545790215841208433477096071379335092862416541120748674687612291542680940028640943189174773847066461186330427869157540000979925890534924604985899423054153385932228698214327209299786854200188786149540556012535735075091384969443169000296639167679439041210801068328162321881833959073066137256312195957238160790139635045632549106251511960561013795020808250938383858945481134260792500651186273602641575120937067185840495691579936507059671702387102272426736672890394776189740718620491333818930329185974167555628763209835430149691401813373557776616826173437061641110298448068938845068783116252585873468844104588503641903214273311193150482402643739728666524232006026601908271578921532420966445748181559101118659679045359247216577373240692765789586258584082698669974076144641689901488970351961997475355811457734720402674049610733730645818409318513227459267613215879305686502677457537257734393756735454555996372831089529781973136010741088815190957723084364498490910350986376935240164397149941751283808321072697258345492051560086845292352905663583247343412217131710391846831044190489556108888098584118997498238900099772027271121157330613080523068619659412085746891510291156111148318711967539945751249288957675692955150660417294598342807337210710662938482935448909553127959726781259962568979181393827117880856732300366077380068243184791117260107850858064260302684763247717377081800203240027818864659034494755267393664221913494534112199848705398255957575960641941062723022095438250031226569440771038412798015209519588589070286234038070206150744662589921160994595975390111140802918759818744781354108716600099412159704922405897465782440266924415159382731579242690671170976582221819704374734122444806221538066844198824198666750251168496708004655046656741088746580199069745043526809199798809415351662357102860765108704682733134596378423306268090709657475580174701367001763092799591482328619367709471156512520902049589623975527057786313821106138715763765617271579603339999729490500334173113832362219550021793281425033620004906433806021619000025342307681308191677875005160207067862374236858733923836218835190375802050288168416566239508868712055153434294519592720021626114343690532514301016635889670377723693542144552468918790740278549302113081560245177508193240687894498178405144197536284609697644840845644762628255843017497974235139883869374570109105493452303522969340779251358323590778528457510789559310412577347989331446829014048528625827669576108376542736974763986762944854364386672619831911869940919962252976362237396560319931394228971430410500609179463045577538276917987287066872433661705764695277156292160671540177846646433782509269441445022855544817542618803258430313791724970030879441060093620935983916351770024142401824348916936046607821483807659292456684772326150668492583942523630099379743085369422491809075115190813976124385226546313644249899227898423913342684049583208376697057091391740225069224324741494809536871343905070640631610288417827822937033332916701305207962270833134114240465617462357067592494081399331163186496106844864637842367126994120979669719058702379977331121588362589850247220848704878364743547154592666352309139895210840270646428332386596370322155626369342038608751322203308801461954431042288665665282153129539758385136858969941639385098472016606544112224891319721890347594725147612647197755098779368340081711748941579003836531840275067283953711462308339606830185117264406308041992825584916446931704078968655046404659187373571499742986146970815947215928556671631712759372302315512773601458921439374013327659576442908400483955761775811106170130561393398422447362261530751754428857484266285903120626835243605671238258810599360030765181102229297169495759640068503220414134476663800531011995022611449031672095446291894723482573283539796484293879242703472066257594416048184965882121906357472260752312247778856159305434808769068803389128436216902788601596319990065296048168848303423915520926463438491955763768466282539888708871065849860612627423361027779937663145626964812986389712052650232100403342904122660424352641452317441103933660392340498537830856955144318256973997081138869850577488637691631629438608191146304870864682275183751972551046197495651801609727196215290845109644390313048989199602032774689774608262353297995541579223953408791428805351776273416892065976178111310950082756893111276568002885378675948094103450488210407995580180765878300723536251588233894288565205273590777171030707394245960927750784184878049978018841875486949404415142877332116531317994977905026363279141817864909142217461718102621917966529640281091163227015564361272444363179106442410232254605187195103997813314367178666085934616207626120605588449730201635680828281147607369614132387111516340338635421571237745538404554646455368452070663835739299788276293760106050641639372544683190338431833845799160331147078860959920835493837994493104221583194258795022084534246220488139169151069926372283178952741112159276642404357904237254350864159113059671367372295817591347506955403118726969084623866007592608253261150620507991130961710994490366154896013296498081014174259183286881438813481608571605357527551734173326161386172461026738105514389569715555354694566860368164087081221242026711525877182670714782402195144772150552497673114816794755802717853796232756892096753608990839335793099690628827382594596019388299905215493193072298564526621422536095618193815761223291019468439762240907642529628296259395646891370926120279074059064251258468780289814402358843910059843927084842278001351641893983392421696576057938177429607981901089220581727712609699230617217236671164239230660981538849385901843866895630752285915615308766814095692304821427226440885412521496980984888379700051263462603696683842810176390222662627569325815379530390358172366788591260229912150118871497771603687898448949168687108874717658272098535731066157648073531672708474423862501716090641740148427448397386288031582086706905266882809413329768687503200025847748260041075926523375364006940842831527542485509396123835314689197440507294472744777885928251891679739848199156751169314722539975954151185118412913273084813265304653097955493790088596313861782784726371426058695730000439201741392893982880277823201624329277025009317802599960593132526985183092119487356268792744363645550177251185522196767984824839031211722140304776513800318052292552555722152911834719432060912856565717203421399097783917910781827212278318549315783915133571149054755075681928579205050757193017313905889871453822167246644965758981954390460041428386077683435527629677818970884754773250986416941820355856663532155215374680085969647778669493321796887352266116510262698738989255071180771762923462235997603953170418091504007791528636449200641135887998590621459811239165719256608905381919532460043786783689085792495049260063057810493563556345543219063376587369757494305862704307792531117862993257424317003154689777292431019788761562761258077153907110376329957567419057734989532061618875692488733721060765402226267262128906359869766692814658847678195729134136566279323380146624823802868311006581076522547448042434698375928078989206279616720102857400430239707089554361815405249108240455964980656382807417893767603276218898784949716484951127827663377266710919672514708301830851042318605759939966540584501672552570386063538794639531960912320011013786224200555879456328444128958000709784252336531497977102641827008112901845476205651484676295192714477031519464224255026818510095441433113722561689735325087969001256767874663004107216862569404851369181013047715559318580875459544045784234902350577087391823874235238553884762218023220011716142369672671154243153409883810711364394841076858107276316149184505693351671621422737189518514078426743548536529787237970682584409130509941637090079458830165537492262918097339917103075567703800523232017902121660966037372744475919496874848974604328551546933300975328646114041187842913371023633824852535604154434974208233720910500245004203358096386049594453727594410964772325518714139863113516134881512678435249786662344149500291788629692141722309734166672632142181177664685796319499178123235792964459219057726252312746284802789075889985854068186951298297630531053635762077952742897731415008265610036500405620707401000517978672360109875750527681530055931973396682225050955394955290223613170448449651642729057664709920947861920149763205972428792426540748041471475116143871990489126675658808906828552461461361223506604590031218058182953540237694376214751816253146884659880597753069075227462129203417550585217680967927195833234638354919536035772865565340073575061022598949941925386800907486895558878337098490978351825017262783839950756225581217532177681170668915538740908774955179302012110369076625568575408639974755427028192803639179558645383531970772489735379720545683794517030573531121030370867960321519072362044989631169495093922488994366548722292907028348431811906052054735313539119825918256056607749733980208225293909931913093555877521032594150234557533182110171164211286307951749253291439793806823919916034235459201636613251595983032349961588797964569507894257023105693177323397916303725817286647475441277427908860105104193492988648709884309510033908725870740631130760524169399827357339505720232855051325602923203518264763233040118265774012035636357947263547594323618130857890597261061401596022257464632379103176701832223673698108351139273504868189749303071675540922318116314585342734491165942461280807238860025909274343497175569061926231243277456985026491804874964489458180001187931686134861048964865743719638240268065723062824111479895999922268305028398681486078745618812621737824625544026698552159820217008837296701772893192265439562707372301657902337352318797553454002963194424332864399619562953566023718746047149043444141426282040818055092873100365101404922480998321400337202332053614727887468862333852059637695522368764844060241866372457189839887191174292749101150007373215101689671433744525358528516561083512116308431880290444134644738506068116773409702361636763384733521774070348473140508266620986047610836026351401864696216478034648811455887159615033020110496623354911112476383210558854815058755877003499876356839089852890085081266469227950143887213078660505660664845921312893726735145895632727156288965090382717757804908473915936076588488884404766987437848660974218339871430811104003832064902397235571567276086516684660696318970904850129976258098256186121833572731258072355398589350487848843709942091492921321918484080516911696925645995724071975138733278520271651694738047478581180813759100133798065226352232136915090879684474459605283586551526165176187160950962101137735901425155938144792743074114582724346165958163206242692252054052982551784299366938551160378293985952979308654723440601190353180535318526419516907446189812583954511845801806231938932454492834382599889583503784480885799262868730468754824918734477496883433309168796866019889498973855864010301402324908853313565724216822303554288970547674613915536452495944328021340361683867659605811069417226325313538381610144793129795232595177712795644135990657781924093548889806465008233652590410661570283873794470792131653306020017738137940821199382795907780307962634484728233028449390673972711584197176801393242135371727239987838370852818680570959508264116627888042809529172074177333459563794210188798555904866363959143409850615498196003491675611247639279684144533802076413802446331560177083939446929001641835289514091343588231544022118044530036328508955467607859581320710868915877210038976703362190175386753556296542398416424486256617416117909837243204460182233697378477444487134935749401601972464198623767717634328961063247077631960543850692525729493891734788982125640902581781523027637997191007338972087319867247910425088491839523817305142642679013151395912186420034193200889442398939242609593946068276927343716623130105314254874328614136572835474409564620532212310502739301011460353806369315075772259555079589519878439513904968319392925250461220452570690888695481149115597063339013147614231179941870470084592446412687445437843315110346699280124138144054044520973339639935898226843268633485715838635327009648532028227361457242309599449-0.68400038943793212918274445999266112671099148265499943432263037713815305812497663815095983421272147867223796451609148860995867804988314557940873905191188799883519183662118270858837799181911957942513854361008447824625285978694213906207961130230534396425823258922029111833260915122103671247169010471326011087527649463858304381567543786948780468083128685419611662057442804617762323459229053136582595762128096540220160302445831485873524743391305055400807997746196835725402929712588664502011018708357030603143493964914020649326448135645453452198688875201195035381817763595772650993023895661354755794681448497632617794526659552462586998679271659049208654746533234375478909962633090080006358213908728990850502675954992893502920644263742578600503604809859830409299675314558901264547453361707037686708654522822306094043493521925288533329839027234223495287088330411664040942145276528460936494120534412256978163478250836864112676652870701995734089506193624664506575310191678125455700698981840928331714583716734597151697084911609607703063578838916538106605599270842847024731543038002768039085600802049978032410584141889020183572020629532415382916822796942734253441520784640814155687968986766443021927163624935478697371795500444154908567339210555669208107564738820422789697814839787546859217582943182703853125971775989779126507155489945624617011553879109152932039370312241134127950112036269188660519350584627066913492587827820904871731608862932135327410151930740159463599005810417547430064147577672795528747577211274733023919090010208573019799984438003502961409280275043125556599521620045097356160834695413280188646798489040137637492451450834808286836572309267149722428811283919059270586193413375708112207196796100632266165992094655463447384455084923126684735763619603618658677613508235551926399435432335855340874970417590296269937584675822180884630975727167996170041156917614279457235179934083835867238785064092068574980839610211088043858862898096210960564497941815320304088536820486232037922401786916408929546804773696647294645346050497533838613687281687940888036941361300820872655197423504623465638275574931525299152757456982298067032740056758966773931796515909324355966311917239611789657027781446736193022092856907158124613309089764013644517623899657078413117551550268904491722071864244199033932975312109856798156007173953099883327321149663538863850139469206652754568287704308114205702954220578339135785097113701872137378952010279282797040224960903729924449564383217019522293442122558083204037679738642445320577848977287524256968144287999797437844184642347562096244658894248933475194785307547265860010438522813703638767590220948846202554707796819458689103074501770335918986534430260617846420739703293012732482796699253375454327779742539659488766007286183162913750263438812661274936208683053811441486020378826153557820156438817422921696852511002573140030360849300310062222133784468545513908061552716116948829069180123539251497542997093933466600210069851139576711541382055865276222614381015434847888315672181139689778856542397455980472551051617253918142037424847377940505693372626456605729203747745602063013467594771275133467385512897960206146190276562358697374509510942891475833132326898543689200288201153283823961487207074569127787543337610244361446341893012750960856485029157227946745253560495285722994253206534781235182186676096735604416436631561090999734586380424523313417343559866998326912967509644861915279300181083908059686372177765339770519713177859952997390714739199089389181064559644288939323779311368866022256463780421556509024962981844541590569617803915806390643341454417276493865691116461992936698042225210746002020696234821859425324259203734372869324535617885323536789089380087533345116077896149676524689109179373947259854565440891957304586270389565093102492787252020411499503718246438933671990211637684510087890690548055481714519922042523730008315675511316966105092466501991850451838812656776519800243315244363960256967576985807271113068953019419867754047590774474044313736822536222246018414975107885623165246115169182342970403056512509476682108712155753525486394586233044937472138746754302650809315263710508066435910266031473274056055464829219879842190313725005042054163695264662173665611635215739341343124566647437679535761842809030391774967645735367659836511651787754277962726195787307787129934436056930914168237091272332417339914383754258867023742645576995447102920790606749461854181937869770566276270270788029490287735604259753270241579342711794105139656664297148199729115574047217795683829197879310304011132631798322812549281200614891069399350415133287800475586233335544324670955649050224840141572400454856876680030581305186983662563187167726057568943419127005249585485898195098893697161892635967559497483864030042026978892579975828412709651394016254407286472829248029913821415718617922657936965351460132268347924056720560755869056803115977172403160738516860873806226804289120716725002484153649734966568864584920493805069823450385918485323892930688895929127784199419320254254659895648314268781576346275943964747674917700959835975201168046288562237818390958043776760535649365442238846681221968486716825092217404018293721350395979700975595294021351862604209034624819798330357322153900013451229764394683404706374573545977593025527104508577613280762528476965518320012027419095436307792618995689574254022438989854596530128528326630549600975267347205809398562866531869862144551125466082094134856285837695148121579544596396029410308420466288068764866740655402689574607986012527442314004003761454366689141447834864404888378146098897876156530315305101351620101683076924925886561059251069667391736164017059616078900911849504871742848332731353062492274954313931545108387842086416515388480523473511920146677016371887173871154680299400994616282901104223737984374775774021766836388067783958050224690640846845097589966944529508769963558124645914666863454376741967353040129487008925216102514018124957638067387761339976786716390576038235394505089811675675779113913998383014733101942530466129894336086406034193027608586855091575294700018449114269971719064858509439274952166592574903302221560383266269579161208001214399080005736751393231043335132512177346087184507355675717261545878967972416390778443841578420930683422502750085139064048118194145258909943655554683396356558528958604371303549436589119517352480449265663710633040829758330103276899974541318489061832923766375457830872278785658018930585640566366703252579026351095600161664769093203613048888339496538678633876782946033281660177850617246066195768258408085990722400222483045394144500692012107022613087261565696785135542068765144756388877562826424483857946123439624309087989348935711485795093770789372212869783221932133486385000128611952696272071982017762223663034026726799582508769912995658341455146132324980950766811581182691724647704707271738848323862184700824891598224646472212060529999321396756288661227336198846440711254889513716621332868572498052249349495231645762759247158037077764650411983292229432666532415860247045934272976484084385922977052935408619818340534144704021607496986219036883984368410296008769654021212963043599298076294012243012711099279578304990762776498564607974631367222375120547188016891052586054939966155221047888169849316532118718406421805975975862565806179288637589876021630597919564272590803682250541112049503127583382717741908759648050882321927775538095759903317216570245567350803139788930005582921036412523654503980053235063447321334053696114816435198403243584811910103231448771825632489624066859847856139017965795587109424550233092657115317118691737220189725791281202616578442346654176085490768219328010206147263516835515970854196539627025580956986422425733890222732209010065065596271923375220180033171151179494599035086909247254862410744445137612899765081570740383852690513620230919982422821440208354245599143423387545916395305996617515339954306663651023241430794452180457525797276153084772794580139552619306124873062360502642430940374473048861462115115778521071854830105088299950775086238615505019071858630491086520022940759216391059244867755488493240021662640001960280264374856409212437675445764148295479544425212099440019941507651472297539338361454196015764723603620047493269826582194090441953980067870696357150972389685595022979664165380599724153747697224961537612164520547920903987202496146878871619560983255532325909146130315041484141021712946349917778985131804113256409133659561995681817958276165619973448148323238925304207736085819678881778781901898567796014916990978850793094271730000792275482491576816654256149915980101094593635063036125592396743475659095113317100257702272307194029700431803465328506845412364271164166316570023776046018638824148914163738585313419908960544281524238461795488266332349960681744907712354255745935544251397252871453722288341452963558630938242078471644604523205712438018028690628884500719137765260904615262664033311337836971955200993048822774453461808631956372605283404790460558284173870306291155167356318466415665348818391394336429446804877824238524180412118216959319250482540632005920627685105713455744641301833648927933845933055913005951197051514490314113695811626227692935455638403993818575588841827665698749050256542601025758608801804619742210646849461703724925844292061818089070530235688293844398477015030972162834623841669026493524873066312819368109148116525503310162218801867430799571384006227168986035047932075050390946863722794257664881101253363524030734033399229015925982033819540272930221590391001598205539013247689859476811129230965404432426010807814339758062051706202321512710169031397914991171083922347957303319863156958901638865425435473841979126937526168879811420007343972264993924177498963275771849160117339080370834899997657894072534437445555711966618712449149130657504271759522736242934571366029401731589310017559919790392975536350947161300582315252646419879549723666693344688338271785706017942201319163026747434439962589823202584497358042795579931629864071729423138089652538989308770416016912549893412711640429075192050502099862334392576992938307659290313649210061908809853092697511787589297347414360242182229559217606268966896064081030580895039126995376150565706561977381819459300539557626184838135137102947050292460531551750023065048394801752252416764688179767953504340548212798175428800561484885531637356998567388172180749972625834323043718554605395478638446577541829713969595565770305456992387968857040621055838127410428792006422584034095839346489716875535802560573505944684449777908524273361721125391669071143675119499789181872267016571000952536995345487812056541610216402000559605355047994993834546317079535604779975007274794173774287554217706691994038047451620790066242233852221274539780403924242022034010501281968607547357584552042031385542795412898333876178236810905258407797061173356957839228039314127847252484048976408245661144000046884496543358402941334834372722859152408562871637788078072483200329696777207537560685808091704129853607835842658996324486137315689518535185788723531407028843616406238607894898853808331349302087241754631429890428199272593780088447773418775471345996040827125492954293265470182076020759112653707988190253535589970338549045931971245485519795917401560479559490535014110852542237949366875682088594415446148495530048650420362720299158127681845862348228347435961639782007477815426127184399111664740083970728167009820917861709483691590820928906581304048797100440978853654188346103002944070952839727126656485269522054350020572908207113594985826751349904290048009290773425435234465068665476147122704801079083270251822706609399883156440036381762707216942088069034772099897808854580792832793786152671016657485667342014016114200282972473575492472329420713998736905642377821301032615914082125278260841007646322429330553173042956720192450171528112689824023823682329880708055019054251531362564753685080910678309972279804744766091073016101638243596427179115673847309673877011987510930928620037843390178644169448525538142916343593497758606518491777480546946099370118632012423846851083885906011891142972093356135730401997269297731940645900294970180488196468583442083108842423077326571451764485521989162994384722368839440935059231696133716334551116929104369395279930502948179522368239565677768269173814775456807390266129860302348636367388516903061668657892296159720044501793687123445213889393969084863225547805443713689652151530431403328468858376300355053668291466111977588920508605485283165034252939895232884887415783373271228455694831407841748241244626104271710174813189453841215342872253252279042448817562799945273543023830648069821839061834978386207649912637430365551975396755628124215464226140473932160112713550465886546740247840188683714597414964081983017384847101444633973979591712007308188491947358621198556494813264840888245660430024512587247523688974760576197499446085718128636146842296967793125921806142563456422510441071791037058917914020978619264500281684791391104029994377330678766939348982757681555905971705493270161358382609198989356552601823208375963319890970913858767335342480283844587678214697092267540050949366382683713967125651735162876066413368111092116533612132200812508437652120518555088556438910872936900810080331760218651278543557272598383025518172092931770532597229176893182526116991948394189976348667457470788140924683793004224711368634368775845278260897898322369219038023261910552683250917501986547561192495963457638826313582549366155721299539116389295811687397885364395863755641547362118956028809158365798936942565182911991604077819949920086225369495912932459180350113627798959935883981999994146094914238412575768230304588478946902069111841330233154088315530838463812512860995445409328353740574232786656280274767120511966627084454175658888954501613334748402304004489997932327079746682456917500811433095756683231888787428382709765986411084064682515097018622705308563258129387785887748535304243102361202066772984837679784355923442445747077311483156700993171499638158315659802966144866907361669270240529348405463112986739753895966729360890487222149358730616906615839581764356346022021313839442870002590600906825274068053583925891586250781011353557484964519167905153067271730240367278161926757244904852668962077295657208177452538825524357957040407513699990585417627180176361197028810824145441537139385512971021146959217956552896134767888299698806724046414369466440022829300509839204931824252950875585382569866466085779143495139194810369598168337466639638377817298757322217091447564278843790510036975609037012610265452149639107705040117198744191873705395484495664369272378805543146492599182640838754303930708891940115654145235294305559557076636855685105446468943906905327062519466576075984882499641199784517097622310707998950878362523039284056253977914860917265849042874806034843410730271939578231027511401795926175024252572801575828536640215939463647381202972992406475368538198131568545924786860356133024032943581091209921687687674788279690061567679926154384714331766041172755992617370700664539218094623649162640667642580810420603682589095478204126519338794923482888246145352773934358799317820790053622018674517142827538023434779548069173224382620623822352139908317273194369836454850302143908749054756074441845252543836818586709516131109739525717947552589623918885413304734615716763008338354725241421548049609097739079828646448495487275405162812176239922031417780403984598991608424185752479831720967199688732097525937442601148616769042669503122197939399423103725985444207080242221013650558665348070905984823559685839387517976372606815035252693787975019987292341831120554643567633262472509556753291433160158054124131498088312574054116357632405679035930623095052169427535500077313379699557009329153258144205555172295292969909751917504978721979378596996381881525443279070727954123293938979524173232310099589502994580648754309087038599266572927605639567828244359384994548921205264609605061873628397181176783935857052330917431453164507179046658023779784994734716618549097565694610485249808971272880606345146428998928869673856551174355523082194926426236018901226322669317940396678183497147551276431294319899815986606691448933511700282716021227390293267821170959365639304635871490279175612710109333712502844325768700186251861314571277999910323361748919947790127593093363798864062033584601055322131830579705057005298003432132771673779274354277860825998105544506364839238796910289203987881442922946050446771926745737080343045250576961008679831737689550094990821840624990910137146778990465244880162267714291153197413402525757416052727301301289235687916448461672857915958452482615989809489602922789205213833495333657830802749269076781935241837287649083372941157643648264400847376742658610041011208674873323442207435434415196821424881413916741066750148606546803940856607536815182354098641686323496066259199678759202241607584200537049080185005284395166208189170747182751203858583647223434665423744778473582456403801016328493328254900878239266184855476880753577546262684052169467485241473571976213937235582834731359144755262618438634704816319271735733744430803374993125190462531544181910761084789637589792516056019231857293220202910846954815907242950746772936234324940423471638773805428242292218516680937690394258767917626228771599086034837888314430893153315263063519473454256189686946438210719937124802988084862810968516687020748755138718022326597511915778917939603625221573088791630167885766443744883156676567170790239677076118896557256756276550527650584980416768532087214801372706180678031918852258026397598735014895847966701793112077415671786682357092884393708124086868182686552211271527171250040628907827129098698270234298104173965130211770424050798124757336057382905100921012499363907578545895851339124370966321080584066281212855770102829584994513247087821534400557938626001646692825572080327561866295400451088159952743461039371705661569398612529598748026208549031088823280408135382824460334061727141967200455989361590796472463028532438626236606842906170066191086204545378907634627484882981100197070259176295568824671661461168098450020181383708421543618074277179690618096075422805779387883392754971250759204063036256772227789901546112677513154173238739854300598110382466811499067911416574694022810059254914620553930607698624201966743457228305490649493266353817074868141598653963002353040560150957150572539081704674746025387369824503831785091107376744193170255951454436638687486023685960564588438180259964521713579925296777870737152495385917686801672473793271279774355442963637269424387810215275652967820470946746574694189608617563916738045278626138280944571061904446529590491691048723787628976824612636825121213367589994008395044593731196717754144446563714443349298294935703190459674438572180210344698474907697739079858670003515490409233982656702031665839283203137648661787009657668296858948768489905436332882696341903855899726471187131820980447158022617502567454463406731370430978058873233346200649519895604798016800867127164067601643150322699145537282864096617177382848594694485146964134136327650915694473400535835482754391884061707423155370899905295182993571075345027941786556144823629411958117430827002392560814200556539883157386326826118923252859063596824548884055253836728509078756114448851425271060982306121848927753404533476678384438596245276173614604217533187616122403677337937679352763051639456248695894752596309861872231669340869347874651177333348164002440737649189192696450237160057470212755185976230492936887056300657526646790998944611230107039890158512636316291371835346320071267937077551759982384083028771230344612247255553176244634042191252366787719319395949530128301742356474846182971809821489443791225938724645756879228479125093322382423243363656586127727937204585584191690712365930824773367522991385596633167457310323756675554677932401172358644467926001420643727606715201079288265736829548838789240180389479876766119717359420412780515783356208588246859461785400035340863381522812565324184043075104016721269491679967271302639499275598312524522581103329848761919259386798723181673047427393622274022527373281548229585971526692395116743777692464580666275146139724110960563796798279891225307741743177755268898070176092287976197835858936591222660546258053622981255583493196929144874128141546679921339896901472463295523002365717976255275723825422825294265071616011761558252000760223334574113973030507799061809601249193248059015542164325994139744731636792478427098017348991353000425036146637275788152230729250406582156019601440809833833232230288418814352829135539316082529963194144490976433087653218790461356418083464727418202737394963130008297562886047417607574858066325682001445999206575318040193673675859862396981027141660476717743764739556503823698208443678419362951508600152608021042719745484266706199988377802691105963077328213374452892822985016211663032257542460454011331545311304022181074043874504354273488438143504835088563728254425827332474189768742671996329604694053518684489678819042641218464123676889124882002535257455813766157125580335509794994655736824990907337470516848736831462808414780716315130412174237338118254746057343818733540913079159271821704985651171018028497161928060059210662317471325591492475266281988386263636297340485942089027521851669576778005870737532111021644811791469849855298826955168764018948222677027124561758112338194702396639195183679942732060530021003913900513761752444016481952494853068897374258074213080716735332318741908686955578876351338240642536650912733203886880621651042548594382693376330053328388449689641023422690997546223970886684080444701715916845149804632104813509066140155804494021831032464379747796015841794738620553277556414084720616450795795433157212763227533567372745890017140550928064705343038647485100165136464905904901061305534814237476287738893112208788624093030592653122427774105065337470685220867112335176888591062017376994424221185011778228658671960961777948231361699213069483541422373339983828249774993415145970014041216498228839988363688891098879974335378444039524645985217203285201100588818535394706055589434908918577457374151254441901992062391860519681203048210781311443120230669037784954039731837362405307057739711537198064358879889546979454349524876044404281251314101049122970451530855275135624451514707133648666707389526502327971579832692980079553241165207763679340804268685276663112007402458547650319570935762032664214127692328517306987814569769079660221046163507413203646188273800546150194828661188468828353385965821478027110571349284993167876429483703552770874639875182747378891261348400950713444681462767705065843211009199532401760484029486850743717607291585625619913632689166594181391475418436620307741561110438195369129831567063296405276998761669587384329143768183042888473106760330623420902393164215552446402024710019125998937834372546967082419088571040056055641695212364880168785091828755884362278001738207995535744674924364000453109472104980595138824818172955338643422675272335962199285752582249254948780691267739773442806457329232111073404020286654208019696910659288854925502996360163281631745883298076369415592365276149536059367511826951754064831086759936280020482649425958293793314919077339750532136243896137001376928249850014643267980204521206395176403898098417958763372951029000041001247038948475792379959793357810665438290313665399481132675277946301922155959264314139286050583005147204511524630318601198355285118217035352485589985524257810009877702322480953362144411371340524649629612737500922371694850202363423460220231880188791631782540128924509939881727227701530801984123266587900252757424684039794015884413407612677134269445384016229627971922338891914317659699014406752696077397222665441726200577154708914768344895094429601123815911381028427848784326637513792736569103292999863272849896727821269786768064948854038055877016477328744635488664900612968223401132370657561056915203319981343227359013039316878270898697066621479452264467654350513976358883627094530255205396297263507351738984909515474009639302409610264727067404167591951901940023951698376432164261709818633340468866267840646522099887911501559572125111537323370237683857364337433967789051219033084591117429489659731532107339460295701589216459567074806940000910341365211114228070792543295211377992240535851153711601984638496649182627843453858500919284294852481793201563711743164368522485331818770928462374433695029150270289785443264315509624278646740308008989321831514211227220711760392291451364831042430826484792349006151293868577263109270821160721144946417187449861257073790074184667285215974823369700673786443799086520746958230626911255726389770007115486139413674705212522511862352528495758381843356403143546103566069075621325107253973293850750452478513933397561014257968309688098586820551923123982612435664364760494242999857899484464153712499317646179016713789120378515001708620804314162947225770117765679463711641456068617755703020777594095131723816750628179072218454410127225539422695954557329249971661662681881182825700098703796110179401816052546787688552440504832105727563626454683262391274587363186265713992586458506960792631339752401861694594674614175483476733934327444497699390656490851120679823495178720877092061831883769928436989027623547147629105106468235985076136060815638047579682441010017621359118123336806232783737623123784061821630703624009678864796300461026470127014734745876300489794022943254548467533158409764770692169134553207062546652414354976300790620977611991586767623173414004703207098417502582246159316887720507835269020526366065123362292830763931712731011997049029242500724932528098782268118205468793924645441313179293417208787411151466093503401385818257115342348180524585038533155430003039334462253789685284346965055608300295308886049241672786493499327033851951464994713374137623197801311490495742360417623957809287152085189786347030564609446032941192850669421815480341849572772189193457187551723390359984271392569885533602748729948065406654753518781272082541701453149209267665837717764179618981505192392320243797381077032027466356690764746060479713926742456661024925512324149486173079359199709517094222765529624567449898152102943056669812382226397419467873313932180229836907159254702012946012134750518246514041777146175636601776945091244960027850746513721945633265256852786903530486531936019231414510111393030567543572991058042486249744407025803993147946954817766989175979903922552385932400093798017929040459659020491730357793601076436336345803843665648180125499829296439798935181465085702005953798312594219673436226769002752897634101662788477838808876211379500361246116077487760224033711942532577815031399000150744877343581077743952409566858156175106581892628865035213811238113997701619718260312555032447156994866313081643582353104956155432169751595657572991734845743743812109942039820226659996717086618579795226432247046311768430760791447333559645738379103636253551081680806986539342618312596121160409772526368477257682604805068375230696604976572179599997178505928503157720805255237995800014538561725802939934575829820357461189196222162513792809624744839311916839952747233742664027104668855905180002965939225442841926896817915469017028141841737174133430205671494612490799163286383383901475784759146613491611533915037872194149020603530352899695468882817352834888973789472327495006761187127057763267894339557424479302616077798444798283245336461104676166604405492736734441122673190832617984678597092090123400867900477444174962899261656764914525796567895940736407171723644788278135314939515546593093817675585088367095470833044965506402050903574151102407758478028419045968690101551226509487666775792467506960778149942808130297953488088318113950304300580490173449043350398053420515792513811645086924824233877003713032435134038743825041023285553525115228509545198907502012718712930008878394223143073298054273884901722404227934610218523609662975909736753639536952414987980551736383588445419549294462359783341573649808773958272882731142131251148269022590854826962734511541384110877473046330169795249107267988393875849248835364230477336015819631424348092283334853958180432222742467072803737673948062557387061319789721435408665992532568116996493650236108840731893945108300552780247680781765876945505624391176237601658109911005777036920752350659920900344822012843748389915988394282545992743057936485653918283760261614529467466287145148180859586084600445060020553536144370621319792946134214492890178302756852906191112618539700322691422850891157491903984923458999891313288111437293217747800557832344172119688440980650216903918814381639992296559167187731617069247833200155672684553817801009063534709031713406435059592304172270586845965569082341502966110279015092366694844665122087050619515811099089618427548762128217614524926764061296483021493732509788613712680773741382113245939768687488008800409262302597256709663436929366801143876388025620929007877842453837189136329666677691986916025540972594117492991532767558745097283484859952602694422642810091052495335806301182724692260440857005128741580781841081570482490319857585404982295510351221990355703189251626346402317536133360411408343565688993954405895917800293863209971873975287971214034844127602734542777423922648130869678122588936465134780344219349009020748659392796786528250149579585261835892043244474341312957182351461604271905672125734858881642109732362127416016748041774960133808507315063566360493384019712530123226138260077806873852555554165607094843860050752690311972861935700383819724364366261842251140453473555355180107913405394178800602510264378115335266668938263403786973097258586203658716580758595654404446688165351062007544364500510251414423534132829985495264113083651391770730444815557716649750643545171114597711794831300417388145541616241329098108367563134564981690235439748115342957284374221805595426010902782606812024617353732534629901602182688617099278103628857188023487706794974381553745669978684002009203145429443162954680079922839091972505031495003496333078727350544222356495134387702750126277361105587605825858024649751542317417221209690100458557787153300214975356862928374916538789089500420551950485727316380953577319941690384743786355102249035912883718312059793386679011501423242319380052123175609612755540816006458627506219614325429367963918339682073968067936760949681010613359392968409794181390938036763995511415291052669893178999114141840908220116705721727105073100594333790121548582767826551690500884995213505626997894768693104125898504155108412286363962609741081997928976856190703328052737014010608776484241336324456746591528592275405124765285437183973431597292698859833860340215352310441821448369202394618507745466988551791521767164697919566502241534695388618715703998958193354213623940061159745713190211271653845882445875188470104911308655060208495425974123470698477914544385577968652731612622664634878557258259590030370787973966956288460488925387771064336296858006451898100089084555460107964055684801193660204883224516385821886848853703880466180864940679755203387744693123456659172926261214271222244170020776629595554207469484948866356701767344192612153771809069962458865874117963246096453169506829285557626064987192177408532317400864538785007137678476842266957769993828035398874311383441582394006645533033947437476334969768936570633740658245802658722902968480812120263562096344174221766257779984112082485018786299045665902311735512513516618878858841483842420890419038433484929263796163460413497898943547765705089907951577075160493562232598413385261689444790958345363091325072362932117644391392171515305806829261036142849719699990128526767293689195232278349037715448795955039427694843483919802158953324741680123961804469721613687763133135203825623233355627158722972388511780317343025754303140881885173735793641967372689800374272320147554802448677018821300380551406024477316947678987978759538974800701337180484087612355881534639904137033520386529017321064602126009990236457256460185765348681525238074552941422485051720546501243841148648745978607375186332171475896771620249846758145056581136565168062028087076133624650884362813611421737266250486501485397028114751434472976046125752166918378662645562461346890919674172455005701644290116469629881174614626907284480679393388457991225235260648452202733332255195910561124781359342766132844991066516829000449759566106199808088369353189069823529859132651837478158585006352724012047920751960877241458832768922326621129883162244220719032229403946030803892650423010097487021027667571905807669750156587184836893104914280446235363519500462840836425025458964140833146927553362816370572926563447422683764144094538496331108622866894775432667400395127158814108468979609427009396433835617343572492757141842387211950476736419080925832222120665662601212004640886651879686196513220317883003779200560013648003590897806166277124430998127053854460758970320841830775283811954831185233134448803552535599237819827192456984782620914861529368433637491735240070740939910614170200616401417119507403534286844670733537797545808137594479294052168219656771661957954866946348001224334944512343687969666582990575300201949997443343203394416410801007015999258874137820622921160736783786754431286500045457620669842547863080569367135585262913765742403347802830180527809968454179735025030742477632950449571915690267197752365292102883822665331790444835166550643334487239431670056574189219485939386655155381998674411295010205759615631953773035619308259936884687332897293879927563580225907059314781121483196524277669428603011335915688885313539323040051383334678999852103034322297305354570331110076094493207625798348884090462681745205668114857200162942088392383345006206234810887591893488477001264833793449058750861857062566589052716545416427980386308317975378527511213738331253338712821816071255899420194464305997968060557955403101265521953148439585280850888279935108415408520070530655848932581509624665997445423381586671799797310798430109170503103745550820792070152695391257071405418225568216150944930567332760753766654787592583502826576569311806545590368021899480352571211157056343621829220373046370341855018318120293127349579567752368009229265817019308300592994435982801329518462271275034692837769844506955116989170160000216997678332465003024555643231237483574069193582276337750950266833790316326817604653611950680185406911444300794611463050645150091620514511230641820734813241686653113886618772024266501210104433812484589450310107907648566596486813070907657861759219495061510945105088643772144902759129773238911180360217771428148424716198211790631825972992391818238123872417224978355530911955355831724975011402536667648274002228045822033182200854138452368837784020365732817941315395438661392898988501673750379070921436562050037118224083494587217358200833680624076339208642886817183070720379867561038420654581952076867351716267141334522246206249661378505159666728800429220847758759348643618546696212931272444887175696221640674359122458691586983780481990045200341709149690335957388525819159063163557979620716829546847178129750610273944327853631914778330659143364458709434112592873124575470270774236907937278789900604255245482942684338376523546406220362068724092448243579277465438461111630530057062786717660373120890078128234684956124316656222041838835921395984001745236817652472580974951171859862955718790353636722147891137243425402409291220544158827559324913782759508948270894107158732497744846088015288960971856503369372588923071147863357287944694479905560538820278463630284769033403437038945440254583202910213743156498622995227863155970399237978335849489569799477328441071310128298046249292179995472327835170331225803318354142377461133615128851623460158813066600316797335690964066922794317751828148756217687597091051208909195194747782515409939881015032443780820503907881223684483602309673936454391370836132349147034753929896475164372779584615576492898158937758682126540163981832805659521642217183790366786568243184619669048752251975454501042549098700668595949936262921890054893815010964391133594577898652846949705920696812353981208554477831454576668229879445482924431708065961762478294263556567195229442500434579095153194641104878884682008452090988073283338359299533190972033561460577741709442061596476528489316629356708443517395297781344185488248967161429323154251759921593336158449135447631311879409841206646046306116445492563009176898974179277012803071333259691615972545362688331715594373581484616300343984566122520098562071758841648408376678640600838621795676665547302609823994414615808525940102990055576076170825034498611766044160522903615330936417919134535042754044527717115219833277727464587198157876267394130035395621557776053183155366267463689469476025679879969262452378535299548022871491839200151766919821700443112377210376062290192123241950814312001914511930690258198467090331479031817202475039885941233374602196357014996599036680078204329736200716676634096203180179333214370030900906051742278835519914068714419128171179982910799058827761121617351418653037902264429242608768007602707537409974649402985701928807487405013083781306735895171432639510417926636978692785641477515164276536867339495413138994053229934654175655312776217181751883347931026065042232394663964876342986962488494028244912878970412983661129355786541028247577093026025357346169658867148859218695062130622609518949659716320795029273536637223647780046668756465563208201405237916596969585108381692712790313510154157248392406390099276626067212484948502381196783470294145387999217851467213020141375926420518389364272685933248049948299068655683269608048355797286099480100709415824300562634371668914357437869055768087249021332297569237958602136018798366662698169699966064056234913499781336059279168417326521370816372516460155887336300961234733284726665316938535208464358656895060887572569714350579544482210699512614434343721284447127841574019364734743767069090857880716777101342102166679098219226014924825837316935667076107028353651884143659317136832329148464379400279736184890201017426249805462837942029531537232671519791490162424515453821592040131085377173113050175175658365906321795905675668101078225400321898417753264443473374006785800885305530103578421273657629551447843736970463320507334589286766498081583324099007321254058461999809330648747148377429816314324766039372237162441613255317632034866845799897692552603275006358205513144558158810042914324012361656680491164475581888377458414568967254014947681010432323857270869081353642595634260888566314146398666705286073607184964301613643483601726907347090263451807495974770775804651041249654638000589118246490796776000569365708394074581035917549560223688976031471339159810848928930671443932567340574813263149637732177241724903479261434838846669280735780006170586934455612689350547515953790438722826302995612608462429446185301632342898573939036980158664851285784324273106854397020417926105632353564672386476925660698701962615441401504425797419047962217655600046593032460114273146683535534651677330740683600594165386639515349586607947035710336733952451422629584492064348644392398206735135178623723605957185883509636733895800116846668686352056216229993247838200454683190136994631834278548897748901031910441067128339199898986630882111946964845990578268961800291757005008976049986063881862091104843148034107102949036770549296463663230452536970838318582344955535547601878541348205991705260311356029560528680580911414780705988660867613686076167122867303392754684141932016522969981980576278042581009348953644446707268201314113057841301338183721869930750732538094822844485726690174804560704731042507039009323257226217704992908142832269139558372662104408917390516954803663571017619306897516801127162424532773980811129055162328911860112615606065362148355461958125760983290816897292910080354199729006426697062755599300831170110024725548340843001124313634113484642852059721566705418728187494389477868216721997309259627684852605503210362509199196516799189318438626100040898155446196542252519182505049369233513467343566727045973587182045816806365740439809880834458318811309916547531162389220128381731480673380375804949773404806325991918170451586881057822624860878787858677145474387269739511923396990649878051930684928485812048954110377679696144874670071993450259863532328273704312308137712652991665988459108590276052955242390865892318841148124386436968720642450713352375135131337939584799864587173477770957300928358428232265201881549904140469974411601293357054941086847867759243514578657813541279825711297879667969937829880178995221107265791119725128341850389230858194521305408623076011211911648914707229977378628594164757585190258190655917285162818830142897344433291172449519333722366842673201519122338132483476448717890829499906030582002511125219300988391137212477971754492190937769802778189047398492602358479902764924144737299205485092831529266319879099858344222430882244473074938731781890020310224657906276179137214036864424608456745700549830212143073131479619016346245252162851520897200734146353593375541192817243075144607818774897516121357506156090194257362459257045232458666490268438793628391164499938538156454619893903054635602701048182595698816553678681126025964470811223816266361268822452886244725668704712935450424532621018151887470799892830827077560328452823485966324166130808150982452946742275455110275347003979020959961548868769655711816616656074338727709455745915631567600540909179696424476246737740264057005786161976198029091584775608735020030619378803916326082845416591178684586220544047287618278619996299273175626780601366328309778175439057220180652061920476293708615201350066618356569637600819612918908220734752453452264845182722446799136109851352801241330122128995193654289196409893541715364020646784168818984575543440575263181725721382164890797063680991483883421686491553240840059831134571957608441295593995070869797358779662126175329594833038318241196693142821115261086429476230860347795633825184714531261423089740966416615177440963072851892214856572378267318193244396135803830899049427950735420979007897353976960025915337670419396730654573429144306757518478554962142122582471511869213638802505318692331460834978880490263810935128578343076553986973621031732702544702180372233836603652433270405211135566371191873664882336471335955851624760283267240273710055585751783240696408578196530290902369825803964961536752799733191366943507602517544561264988036704417032722652091992359607632154730950926230248526837937706601570669525479808957677802943767739873606741783095293549765821513912447910127981831188876193408048515706234853559336945756292477868191380986795874475778637576883845566427058457520233233925632198789894569007181795303187908012701090200526500944222800695603856736895704560448496736837470053932253007715399551913429660681854593401245894067749387214256154558412943821726423286717317229852237706339799064025286137691490261478654759400928372326479963868752323952846700383611836785247117490329562954328154259432665243717736561732078489737512682530935537821669272713128829735659207576267560578778230062304598081314525595172201527052330741390426523026646974330268126027921179264577813022331183991927292215967334335448146813199511497594053714143321075865365496634134281626945037232613278996221806069578821367109842469661071387039097173824787203254589173991370819932158785093834311701044300380376137908503769504507339840458645898680380555484937298627239299143879971996215537860730309549245096227047247194092261568841797795971030564649535371611934295215828615004492003869027204013937567035736471305008828218754706703053886573543402077123445709188357825554540981191229423414465199023745843807925885329514435608108804435040986287382949771002218538170415966605047975683935953889100406970961982366569485065226708026578419308940507950738166617032168175843090878553769859771173312309483713873543096354677352451062104299105368533154550396543621824940150693215076367182332184933605507789267636889799592924972845628858475757050961940283195250863329397830848490194388553231711940002846808897758797743969689578706832041584080489833538978498393332891808050743638774720574617825778394522464624962694475563660575623631468919321974129759835431724141730451939552932109540801941512333871266709408782011646119814964787265473983341993449335742519008935209993846718380024698957414602805028392197031119549040441283036680363416384410897377037361218840608375055911401453410710423789153073087838536274537648867927151395444180831951245161554760867046993737782069874691546793810848503682586685269355092129942602440829498488802255213285951734599067450271396039765628870619799214565417038715349632218241964441100654196298076247439282430028928547322879195595668656194047321862208628956705029056860401377915151714904968560359765147582502450334901794643771600562594819030363535465478272261855363886171489762888766319059601750142356069777534118970533584417454957499134105062996854449874613668938728047585417255580706149542709861403024763082428473582640410555720250329937672685687630066033892901999782485344848572089869593868377251880142889779377054407612410719491981441648675089575328808130629208413292575418229749545200058741595527890831432016391419085642696651296074501675558914832778429439662743805576516981926672546022974310134685730776022322784708853619958886546739704725836274947000631320711649462870393392711919728674196249368397726689337255468820194927959373359364824149317570105194243971913358311978817363165395384974415694777767791581055291180014970868739117327250048880979756644757234210476776805320974075008541359947350548205733058846137903671847097305779680724514369368798326054782016450814727671303102821027527806127478224576296955565213639998317861911742544270068407066947304346200180149319695420166432615749335082732290982708573321682385178536283924938796808008154004585595005169469972565371287293251584730124814992317088256557547363872237706813258778053152203262539572906317571391975044962335517547815031496837047817416639209928392989302512439822827824939639665407014878759583011295879416878152955244423661727296210110600368680141638503164340720098372900886214127665741066826688215584735691840620881484190643087604936148798790390466990746981825923031639406790492341746160171490667219037032140804117904966143008401473067513552835361158370367048071957844188274758662689011281993966177206949776372845922773702087606395159462809383868428534452887526722114471424551748527552347313767699968676308966396431323966087023560862937317852445309944413495434114367475318722435388696510400439950519224846887893356946377208162475181533640351383278064210620128778481418045113771272892439311144866934202122092720521589403338677253905448403324735879134397457261728487054958223730352709652884668217542077055330179041986140303420409481204457306497964793044387427203537864017219912263860156677577913464101163014865000995618897620596932394344753932070640001003590868988361949900788085430972118726466336166572922167855084320095626699355897878739682856280577997520879734092573823168324329330830495052838668163891231474957273489575711747931288884662492878462829273752651393681371220732669767936502834082811805002930002424126553035589886267659176807600257102399663719091392151924948803230922399755887279881367864686787662430133439346148967643340678507818166741820656331405729004456823145551750721520761349767056986968768993460515044420750919963447907736489503597272210681644766452547225046331712608158467354053854186007513991334906586536153447908666118576568405236302854045182430825778391241190897415107537552163148162046006341361714925260616310780086280354379772910864713311200715249919016201934583661484813011778896638178723829611247069329769857860235985816033168114341099385723540744291289333576085901625308711500164128352615073931856150229807690613918750105827029400596277892658828735704653310559873617784713898992735104334232534228193473324561787725965504326011164028595844227526761160885319475638441612961687187131288167416889247573106319293512480887697860632692950830431744053042524736379564736127203322145099159281603838770710111159551687271572727639021478062839494855736924329139761581044877706740676923028949439270192095469369709929496805607752284757966931113116250706498974656034909633648097076290378828198600499136603031864154682413017057908909682391669196018912355099546011688504977847583097377045716126587527505115172657847354415160438803986853679623749254877145191551512774490449053771833523188240725546558619159860909515722737707378580249106535031613187225273082510543701289101511325661672547265459327444340431343775852817503726838148780314140726825951992816400247323979452398183327084019782750106399939584620425626960081057316808470281232556473340856317204047906751184752412727004589642635262132156287546666108136345233606913016126069304843553788919687997608492659243945819511118080436677517859234738707371007254058526887715114506510546563689102609968373633351421777336903450207312946984893276722780548615297655507718134846067894363756300283687255968067488822301409189486319709051099867261608272994930551227343032982209204054651714975156093558110233272784453916702479824709134031506341355710317337759177203167008591955663021524187084232545009659669703235655733508773609923814656718752603454327473399893901682685802851894033531077972691201905453254580403943779877649794043178466349923854150379895921842397035560492673463403222714012090473333351776647866621540055234591399341693802211110576977896498101524652516252973442613113328151569105898145089913580002141441611415168616462443641924319367678669924249548819066485757884819349843664563790752376029422478320220014897660752324940731810945543656874323503105043755271424006487760442186781386956402164518473151000255169296739673235091615987915441837882366909835890736777995265955007315853653555772688183259886484826404549331488494108387220772083826625577147659499689118153214178173293689022246441152354488590762952751681211813686895393414792250123076735075842572030782190022913556767049584143795986227271886228904439136195578959076540146751439342543222799834145183464870072770841574271344832396213825500703808819355826294145130217045863422345414412535919460931143456055986481276348175681266987119517313098390968465606845625971584305845144909338766397811071725595229429744569497733826102354397930974572280102561044319401881479993380039573698030970021126719915973405574065547936345792048843263122388057434129181926802374747323269420040251603458479637079751395987638778507952130926003487697843222176315838846644945595215899439053213603443876956001427963218498311909497867398282713006064909768002005890759259069489234276749705862480140459419159650584897006893728941877262606511823050369245884901556085186742375579220141321381239286936876409808013538829328670642006475881558637015896421470079179408008643439202321648558260694564551066563587340230257238065953146654086338855885473473525534878412355075286886543876750204895799146688298812706191962185689889765513564018491303584141708786186284692702548949172866605124124133108778735336345614729944185026295228835335636862671809152173039111850421190648551872837474293478251391094736452569660281636127899188935948640218203445318338886696687384076052281563937005842365438978726017725633780662102630912735604536993377280279231115914178280251286154106771858851810821822077087362544685348124259302165236602411196632933982948468267056893819361339428922088910797847533626179573643420383454866305100187127835896013044280182394339206837910288524656140964274635283899879102638419354099181464765229353318897092460506898181474783092018829610618328812809519104865453584009083946172436802548043740207984374757156772087553870503860668348328436141319086161660787214479555863170608742157731124757200846601765405745137848682904005450765766986056697084078501395393319728248542738342248112569674137853103602969984851325524263927087078101236061791471360401385588198052923671212654234310979554728347514631881787585534165339977962956692640366090549235394115428643242061529152574956988477037770690416534005163643050969279481634139249571000225544125444879488819475697326983511181878407921798799990749285255823090181827931864416828693545778465899793830113243141961699137654755001342843764249285063602312811959543171865682064406360613390688897033093808816731493736262208112656670057916159511937705974789696223386341413800870164543964561503595320043867452448837669289397131049547915459927034823023462312984187931871814631619918292039024878906891407235041422261867686314709247914542066220497279592629733520358688593742801462218569182464369899665187681272530943268804069170919836746247676939794744906882428772305639318983186143626661198041088518856845622152225217074266086630001372538277735692798671108607452693048294948440864976806333673487165159699704455763800825688052593253991024092641230626720875629540088573149747889238214482685157184270030833034826191124607504107056747846814699275952677812704942668970776916679378723653589962387208162629760763243609164124059261997717280883590476030563492033344107060264108412063714556282613910146257894935353960388264624040092141463735310046359169602359472734096666871857764980243639887860646465199616678636057359484559695720601050796533201807910066608514718726672889012187170728139511805787722517745214199836972452676037413598041748983576493943955356314349078753460125941693075770238681824723583752553380780388646614172054007824548271576462698245751029910290030724778670922368317555957266153685120512940502820766505066460260751050577443141379108165879188215825591496028327039836616068939349436084302409143260535554730865771268221399487920784324329348118572373780125562482201434216712281716852135014106706359659851718272557418762204522241483118091989950399988831782804174757123681519208678104355384423337260025669934695425866391575371566771490701874085830847176990452302602538771810127539993967640053879041816329641180494234385977562743251528830609142193025915476068134212393723747648355855273161478014651095231447913027839806357342186552404462653664189665803416687052394190489609452948724615042788343010881945486801234202356957862453800484016804853162268657207308701272393927223607388681952979117507766989096432560496001517207933175263427029087378318492411199353388780385271274049888994999601424474234088160447921725179476777558861769548809326031445533385009497616054735603780736179338873012315231685489870362437832679938546702884991276093217453717634302298334090914684292499058007736077031190629340033494752749871763159463020610793208973480386623912208842396379860349644631744284223922079283654743798219551656021187666291910985149908555404303530692222454994491979744304269586387689700305895050967646633076660652964144527300089206543514900621451490775290069478782155898060580035612436292468009471667707889662248402377450381022058971572657723594330445691173513870295390812665516681034929939148640629491132918311611497756814534689157417734376925589951681636613870681297572702085287838828156173760168616668509049488935409943558192299420970826864151885313413357116019623004350485049283656744048133485973632809895418923874157388699649462262559585384262102783962258867758248824359564320455001992659640029161082070701649074926705531701033521210972620116382709706795779889392173242557302349961037154599325167957517654313867465741656988556953638079418962866880377829311590307997085409109776909436819154484139644343198228029330062721882749090123727991078935545634574570932392300846433952160392651425164104399157957518950515652725126246718622446156736920221693505126117493890777069043355645435748319349893272428325583323436632721509799298806179458730264602364542961550834160508275973916040847211498529200236051461276602212634513020134830787625182551276001455391291676949086028510488676270940566971058187566411527086210034849199420621986758566005804839024346621383920363064496670106561003877943183486502204776168804139661334544927276899916596774878208441279651754416232348548185173968375929032638033754483412965025740204172341903495942638783434596227195721620826120936695994555597761704451358108753345068352832171916890178141460354891463144011775939297738845992219824501644089667746436130571571994639170928666771554859998428264562990316672747999553950932495532951745337963062082274294908080653061983537097055604279647328547761967764419041368596752414989100627911596037620392593658195638674421652407760237386891050524962429740874362560215041411571920513626188104086922794551095688665559336711920654535213796168218952498305614901450764212485312954211327611523771244881950146983394562564667040935123774050468940890111262350794515681879130022099000683759652601755655220620530227316883759602173542648247271776853608351908520655381480439119125115984357624528954525034274068420164191640136864358255055821576129350907541820885788841161340486414192761503205268851774126043316409940274822115177569258546016261927216226318868621287333335250216340025982004015407347470976891467135175256306596028395252149396537771525078041301124346437353853863771289871977213721697895494485390108212106020026381759541329077400305793381960529052200310989715583976046459755016001459147992946090658295358207411202189137257253498279778956661581995085809890402460389190465377404541429116984345274188599053671218668566667733916658600076971911812027158261641635655942763100346958876291935156804332770511055104779835598279806150591107351406360136526866261145412114962968485144804703716451843529216192447363942339011669913599947834131923715734819640733047135422683585862366308731784240144966043267385923412881967683137009610215817423939074293104773227653466443905740468365723405683331490071604496881457420598269999375590918578166106299830664220548283672918669143859015616741855097799347639201061022431695123392633919292561367100585156083975825869032306138929619917475953381366028122045034864286382897332126082226109946989283461413135360118803075494258239214135922598209908852337629311711260026763761477697962150510375205324756416754599415768983325850359695554478946944094506125424156724202626087322430923408301938512911487824975215372558723412028948751199547347497055596601315787351106335013348398847628158465864171144086326568120614573057586737023098652021872355693249552373717541411707904865673857043282526760741707892970131831549092318277573095459747067010269860541677924462307230090756064005421491856473634160401713082508271527365320892005040743845148481056296506935445681604394840692458464168390689721296433851701107711644022934288338458127140123807603914817956723239561666445636100271246355628042884269716609541726491643510622432182729255526394412842191541812499354321755081426108359799275796387198936322178076490982990296781498598441469876612766324491121938687837241973056917216073265966873766254729005525359640794723006856859199526436312760508413302463582511223623559358946342353656175861476702585297213086040291605356160559975071421056789118152739484395232371359024702629451942656228574479861067803348623243088806506577370379231601942248682442596173265709994893635210543130364841732171554587094768412391500701491080197660709252298723614024122524719961659055915787504931621991153362418428461037597958546722405884900172910746817659572563728052496672613063231808513128779116010890483079420762274408106715308493087935671548005586848858298191300071732276528712232139412526670390730983310079565627791388009708952832290806426238741923304659500068570917756203991657034163145455232913772968770946651194944770141443161731965844887803978551490222792067207065786723071004887947140216577455219163320168856571356524445194756044102805127770512516123258174810433666242181167958327242435950956126044346254246469427921089860993027165922732150585693843626374091422305191442969493147690945148452184774404119683354379850939246595097378336463333417150748086107790183558715539187210438751991090232325930340896580331206642364558403863830959048993392513711038616431928560582594169833685349474971807836020703637956458528352023234609338220436360171133769341750734985886358071640116525788289371254232466377903541336345030859154264040309723717075454641864395344481480051856794393940011621972076445190966139578303580101164518942000233323898928547442727482270408080996503075062557442396024679707222180670897295453838655013935611140330210275137707801196114873364581633120838382435390168085402068344444836040742301413789843441294808334561379870649870089347869796514307196189408943948309430069869134049025700434482026821919263965709021006124500713562312134035212215422357085908488189859095944846440726656409271234935951627004317571270889311343194295996382850557003889992264827024872024161196228569182506083369883593025841464762823306071682240714632459088093738314455268210708466773814979399426293542365313772281584259588669115198741966352136481748189955444808884567843080108448704678473739750793335532083154024100998297214679796795508610598893032578529510363769800877412202857817630330551954095762410621166815168516947692520489266357748440248628325165971120089213641731388019848289913102970480507224825454521676235740542299101547003039215575125403005068014694523283442044985899187412942125477605386597401965207492251585534054352549053875646001703175622011819981266311946033739173640070729227023559006149692045672143545068328653315444155446375774059072334273521934932625638872264109063311831982665425819416400370150110386054340646024193799217533713330120439626130068353298953532734794723503387987310782998433846591682183457404389317366898018409039457989926356051124305288434545477017323808727095027674258548554340908389977844774638152936066126812723160768306294335075735189310824053399615965286588369570979240598338198386600357061340225997716475113227044617386802591793632480933381177611298395129839680682418126490556630361101941959344766930204321425573555727733023038870143819027001510616984890462191053599744182832506721477188173849831529953708750796962098480019082005212973619936096291720875126552666613789160770605423269409747225215365658076999474049162760060349626138761616267937730145122989432940936026471368770983559283180078547342066439002730351501122744182475657369285123360380260903128733494386591850795853281977073610599716796239071402106671800046215156957646268450297161364853868524124261005548362559741651718113815480652600838836335365280875503916957066240696607409309857948207895799834010909187869258830709144980098838620364714542466466037401509960924536011532923231766710346818044223596980038518679533767005055791131721094366096946836406853109525619605978559954058397658115561798022656350088068197088288874382231494257159512640143742758061304485389399090960929744544230894097815516547009800389325486849267775830288592652388790822248235119768710682349359385047789420285362496758108369613778964062435534412968598618352270501463593155293351108985585712006560115774618295015955226826462714613633420725118794220506231058534542267712362115208828412787445138133028721884876176557502808833381892092028150136183741987477931664113002854201396779700672192225264594723940324967747358785840653346559718058348554765632130495312716528770535101317043699167008641258889639370512012779701988236322930405694603536171331562527272592625533261762600323528375626880830194371818841847280361163740153206674217859070258941095830983526779851017643473472657224860440156681172562828305803736978628824399861236377685034484638887495836666318085754505651243394509410388147302651119449138225591016071313720048486027755269570282383516938913583017502427857696677084508723984014718466001711769158404616779520100866655346113274970353992686476487243146336147909573147306031602325401192281469335917800440775946554717707239566844998497793567456725434873208110079870554309305051853311137796641020718748981348165856516628837823956226540388389065345404707786781187338089471322869736815302221156112332482328308336891521399347960767208816280134008635838678432306564949685067833224823867806872142559248701383312189209817226879937285163737071620173466113341126486183413177349733939047846123950101648821342440076479105039738723551477426846494492380934589470659360079773099041729306998958174894661735437891003908379346587066412319893051529847102624803764643049684799767717883907661639080632341882316989798040709888378603305269897138848414550689950156554616016725788422659929751692775182483404378258672459218322546645627311032277525870307421556398142732536435353337606435685354856334366794736242198989482736508546498085521690724704576779369629002634703087189741160818804962735409465377146854062282718497632072923370924026113563389368592180020979406962912100717709718619314904203235466136800379810863121624698624099158451758103657052336559932797065481345898733876169746787544935492498664089665955132239489956386008675446437760633968017310586947894489461541083224936629784441984607381658715154176408135000615023472665965783423779136869238775320744006488923863375690402454553032003366217017223091511265457224428691972755589196589906720611858875247348450482340493514323852258781531108858970045024680865254677146294178339629010019538419173279511254062952415801528394159924133593304894449328454950187197554755951248221214030201875797469060822073889181178349613158227333187703874430943084988479664489303053010688029998905012578029863471483658951125822818535334415272931085038642754812765579100946234408213388938763561042397336191752939535930362980854362363117876219094063278406095470111088706352709980098863304639117797361967681636489594170598110683012638553852244657080280842673848796791498796722636929501340276385906322796621732523673725957462322953374003936862447489502205487734975504995298522301200041846817215149691633265545988197351476928918660072679838570804745641926997721016467685495394917681475550448398715421375395492464300670651707720932863045846609708303043630427797410171448824440078725643183950318316437095154133016548851180379165294720640345617184850595127726762938178280166001050562188276190517854563874552137655086219766315183957078396334280749421747184681774331551011488053200504026407973194189251835504465071805433726008838098065832243000545727333433683561542686123061195235757123958894933589909836018748103794639932024978881545415575379580563952789463462883265263707813820118063047112096988874744326992823989128723552181370813383848618692125956891400171847007297730639387376121699619700111677639568504990313855381961107661279285354481978123336154916566285085404223702713936303442567045835370015193227830970946650683175618112235072692441434694824062264670777656724248707905317757430800171796982840585706360046709750338794273680698202838236191793405258105434708648800655746331559702596811488536042595691169679870423146273785787875824781056082822568374145059791229868047807936401086857237438312956698568534842883237020847694206698675490510319738928364944275320131812124511193564605168299687668446806687958001281459797092219383794207635795206836782159345147574092597774876039367852959594054516781014434594839270944410429048324744982162917070368353657444143465984589770219904375801755211992946460398755874052926986831974665438335851537864557786321880036213419375388948956115421457440212146478862672167881390915554069020283656571940176252329235210028566049883759149873765548932445966749078188687780757128237295458490328411727405101954857609063197873633314222937878718328711881591874357527460155244581053989036836669547504234902049645088663064810834976037874704522324380566276964065590093611995868564230889292290167843263770429052623345152517648806859247506598233318068527700049651341028459572559416956209572207189434426907829202282581610047682680809784499290704682476673309469724256710805999078481088919357435828390322665955990797841573489096190990049771529344739263729457379481896493466660995411861307375818859113721478147646240675678519940342119119322061869489595644988071530643107344234492201879549587601265488466076170209067973117863499622049570115027492882754855532174922949569743477052949104582294332682800124006440106028696946719790198597966800596070573810760820718342083317825154179469076997950331715557779465693129109557797888741018317465744014284624533300969089546337273494685285824487164270738657488506056202606550343696649368713877439622182388412883892188814769500447428531231426564656884205204788770411968453207537971269907670335815964492731401529072545111002829097805058375817588105346049374757782925621478888257121266169448693674385215238119323943393725974635403453491710872360713837389178079179531301865098166920265369003017214294940709669547715624090231417761623698876035007341383834671188936677877715688791709407761245447134048364368435400786669237594840177849709376940472630644576203504736576780201657233170275603671289545772194739487689744351792677958534378514564933685177516133655655524292702523128720351855597984769035404733714269354971323578527387950643860964662805786291044701313307100713463096768338418664835267313976780375695047576992572795748106067267417188776630063460278902373645407446075230094676265479281356142747692721225177240119542626170384844844584963035257201494199398485184986214913305343638489569962037822154920179807247262187511709388754120573820590503762953748899351849199142203032561430753013162673275595837704230580125674157022780163126848429689685267859463941369953261027427875870214669700544359053927114432326242797276390699013194227023640320840626826485143954141079734752187423030468251589341302052305969327149567540477505484482490220012990738114586835915238278583749831059331359619059955322423580726271809613175859643666118353864815319273205789402450693195424296631170961879073172547809385055812135172644441500090240490826979827950080470974084385231204632106696446602024412126076019754148620842650936064096073149253945133413911835978345106211238275535260275674776416589827695870579815643073927603098494383425117001558813447081260553925348330827831969784150579751225128799246067540493118799806903639105855671245567265691608814388298236520213257177152972895217611638458199027736404927600039279471334028470664539838895646874407073488030414866174902763688495854279432910385823096347016671238588909675073585324318512862720538193073651164732219439149323308629824778884358141057122973387444232248726180196112532365654979876154211803748536351659417369906957133859641175983498469709250822038065101283088417130212398018575620103796540978762281032159916734179603369701920480310316677399549593783435349201305552332285197908078113862724432436168511353607120535658738035122651405409025226537790160672672454351456802898793643630064582787577231818612634588635230048248443377550730210393633915316072211199492992466325751188246907072737226562170697767098311880355575660197112657296229404331561490623713202228894118463959445437676436388038506171452425254970419655563434174753404469802162439168465013702576412308340600943168349132751372442449903708291479099322008590561789705525179932703995548993507279278869117077960050373171649942683009007761489256062728603405065564607715078152855474187364594046479508647069233216078741725683687659274824190824540488200124548088443885497154789290462740854782390783403975768729271349099102032523468577303946298178095687604658491586220017661456864772570763852724234830136199540244504283940674313100883064172777247675144637142688310197769363656044495445577872118332150531037806617804271851171692852065437050719864240759423303227757376109966815860911828022497256317360550593515745254856571561678928349250181880216944140311342701665203143492117183642001150585011784700235614641708519826862852349629325024418733333535176050611782040791334645809222443714660678893740148720027658253918958157804237494462031032528394975996440188386694871504570198390787851664530430485878781787534728851491844282499345187748971092984994374625660609185345676522977761636603752251800184857523465541620983755555995441384012504638831563283364900406965606551296999062127591112943421862487616163224897048441676347656010734000613496278648970412975417122605452982027279059051201159597794093275341168701717003761730143404986664120642558187132068156180691340340408043456680447031043768716047504270925972453010385201526390333761318698695551461021700649479845185920137005733318116374100343572264808069446367834466569217467422984753569418324673178838709236919091916274937165046008755511488266538919820357002046966601768641394002750176219607508224288792090107087683444194926483281175242901907152412270354816855386309555697046628293493680866866690283372806485478304876644020899633241661188902422840030988332171659994947244599155767537055364860461768230140562995973786745112749729216419269802783036470141525081228299281302009699528026921907154694426817749076976946488138031050135900458921693143176199564100031545532519629358836184684613786803633630933285648616142382680378596389700836657396056826333702080250644786287992441922667516007070457789893333336518062477587822864917025621725964983658694641217771774835171886348337803520644177405762559233607458779437028699669481661791542710063570495497383231122904281957678857276853159216441590680299828294630092761443345424441642500590449081676444284947129089151220216387942709246707979469294197909697493490834754957640523280373725218167851391755536278932102768553302336407720072428061330605038462004271850969672019169247808139664225591370102135829546730357780730835998203294503955419053457456680634126081209923324628218039755450508423638909532695944539901220823883619668235100605164526547202572764893990199447203800316234323251584690392659801696071585401670372772857509052908438155644476883965204098047069529868155804571061156055169643824613896980259229931020873034012284774378122663704857612195220485302802858555102864028267650652494154048025246648223737747122111704394814646924493568730297808106115763367058337123830325997772759500063877488686541846689230642307182762455928006008753859815478843174638238265475933665172160268310436945272436619360089282121485606465381742224382991472722605798739157420205611652844442564631397292492834031339733987727265123483856651973488689385976860764287761185344553305937863089262631144658601327340811138713210108167368731379177539937242468135646755555849901886785532410963964068623816377827668187435285759994381455724587937834265514719558470579334219607739698943560643710205888036305045485705277687541504906209354599427502016896162257079585607102019823300495675650647751401372852602727997673408847450637402072452741887938985349349916358530382347069005792225446215493897770732481312953038583371668267989614956567449081218406983656400138914856350422019552077562710593602138795440162532976512243632502490227143916191006120744299009768771294881389833192780807004149555681922366284883058776039640019621304703891183040566707241448613854013284449188802468362581750962332074801951231536935108009082281707495465867963726478442895032967340389454575860208539925649885914588682053668421507123886991429293559980175215550804904806570478174522619547228295643194915918785322824831042243295970019904968529876161815012976368239703737627389198374719995146796872532016318473138631330509730451519612444737855217998336003751294949051310312515754558001437254120420671158171735714886231565766467302327927703910331895877814507617951526189031723163887989540005000887816579860944914714977457372878729241267994619426430063899361792326853830171501221339015726954411868700104223851216504305511730392607589211210821417244134320662462659151650258316062211901820384131057574858851548120779826200847073651569328313881198279237450393834900496905607126207670913873702910481527729568073691573388098212640126521066786196463950230836710781024464465637135656015638545724681154302982583515400780281443660452859764237712869494731558754796702395596138253934478136634660155599531922420994632275455386805164167187113939868630389189177258849894540887547602901658666139296106760443668939866765272511075045603996433259306500565964257178297271830970565983615214819075061119244898708640060231763172290502030393067000550011834288209513784122726865573789105453800070912907292843563867657554721594345872013715052786473368423046959568306897160896452037388472123418213787759686152761616504419047472174157870525417459253130302014829725336283085303556185487554466867436602160529277560469743263943718267431535635443935513268336796706241832361055588240907822038199331205718244907395020787683114202837337864064200651211643888323284990443216364146597849905813874958431125710112277951432988145543800715628593199210571136489732503931996152038046743512664070451196008390993588448104608991465528188733630602467545625883017302070339925401248686734831278313778926263488234470821200443848668750590501277311903671824168622560758782031469999645405180920762568997841760833026078782830327915273960031337558069352988060349664799729333920326165572610491287486298640699412904427283674962216103203465233376290068453029362350939639610260297144067826051608800466589633524930048230218269480527060697065075762324679807951935712613933125592402491152540227164421738411696358507143320933495178472723251843602273961217319162705229288546811440419034384301783233117646672014599621655422038005911777056966940135593186969842541424135580482176069848551282562433567599644420208978356642784238257677297808660270805940112950938934993956955236215509946904917639708243326896552677222141896856267886740586145253082034077810967948106438410635374834228771653799907121902998617157733059935008539895372584360094491277135466006795779933263133627722445551617066871276537420032293546773688488668285513692562077872657475356650070215443645255051353033896506320959484081263445068890000135685202799398704536892601153781509542161474896339801009938575916694884833777593654048627770541365142557252144007342488491179333437170957182801123687242434276020704029098590327210864276598901188808562479578158866952729941396485772703621258065916058268120128096224404302814537929629107013295481259819739527678267422779829586836763723881077758501170198515011552600068317091257345319410530674422491157737597899976218233090181162025877584798059619506853360384946636639740336682740605539535307758688449553767886810858620517095915671189687952021180299008202905544764473067194274746975546515450366378119379982206239493370179691021579664608940821573722250409342075406210560380627211108402568752051965201343346893295080733024513094431949823816538703217057331754344298766500432877210205184709262159698519556097336029215653709725990535038298436995434472791424824388937439596974289062119367637842497036494198712460815201948689444181038828648008657024179249485231183810493555259750222182019365090649949570109543657352673993886556602035124770186337772802743840736428111800758267434336847989552308515822457600002445145649280244642496474329933782084948165717183718910444078559928227531543033125223906815827897586603192793128553077459375502609719859032395900096088256707113357323386048683454584234196237932402916681018944452902305762474052279259674023994516674232147909171933302913079328559152395389001824399732239201268919847947910727488659471627027293648689942440261834434703857719411252450678646337612685375359153847344968875168304761677214431849506414727996260459731783111453444045980772642237786304210505078612637925346206729631443734066641767036916597275697029337559629987042727653634260966612325909320926285500711589531135436542032355895075041566713220312649885796186958145439763000163074469656731372464865591229947553763409223314987852245847197711656067390566965016893691219178190587532442249172611433679383067897928187944530004145139852574416915152774349339361363232196033758652786193623961542685808940434062593248251465134290279174339353260327212797639844790682789067020457415636359034624638374001374467732205029149887230491201713773614374294581558788191859934285851897917659833703674334246999017477495653850532641329746082840659617313714508544255787762194066909563686214465130607044935656003098221575740537562964859714646183759527665708654623747535522164879122260494923625889008095312411999570242880492840937515858411051728072882942333336789384869459566876978817713921272231704235943677015234950680542502419220746393603966159829975785308928928590674695715551657562266636621243394441060522712296074810279420507914244127640955783928665749646432190401119280366390711304441340308290577792112024377253931144027307029541176441694035978541312184710103129244904036272117576312516954263918283016953735885428441303096063912257474409282492067021094984816558830341341831819599523935049351254286623709750078361551088680793878303993278401717588295777111002630579902994970130513317067897130941806799120670867481479435624935129781637094024891031094245002596130110312199920374873408863103638137496498328115682280029062980742887850804839674380519017308931139476149935705572150056610621138154131384934689730407191933483540872985279481480034588765748706700439783780117205748872488636176680081398548501942021554950212927678821911640343579497605339063884198629350196930695556233226421440918569483636582237669567456783052382896195817563160295269845973674546089967694457063492981568515814637374608705755065952710429714658735515579264009491183093610659259033646498574426548749699203211009518836542463533739416879872776576574134895810915816142762943389911787472974759827969687547763538714861720285803428423658687921619712249640617336217486207922369560088826849562272286605341004563970875882180913080303532101510123015542173795820358028405356558155286231154387583979505617273946752643325451460962207841071043463931943369879943120160776720150086783648945856404003211771423860098758257100093137954514449317545053873906611728905653768443062446125519375882689593741092075995160667141720022319469359846797134388443907473551438494175068965314561651059617517781938992574401405580300277455722841694062812345452997132448364040143260521282242965617243050907390865913591678510803961586295552108857027962850610977871454566591646475030524229891672669282212404548594771056526026776269980235975755104010097548913196824097370583730556520391070572057730352699464242060477943311426600506896330020350811488171376369493747003113584804596050569031162341726258804620062710708956337107850451209818656099407871828889747346651458578747337564419950948561994464373247601302073754982480728120361516373209153421003319338362687065911052708604855750700653968229079488786688157016387164063060145038786127209233433009871107691390121703736224132230289720174183931402073860047672673731134725916447067948557668111718629599799761172497982060665432558929341429124421369214408484432736846573747843626385661759904162764919529672548208039902402879140695793301900819103537087075724383429114619596696652479899982477609893721475387182096900824926277185632637128459346028571262485304437952661370556726867800769550810279427030272276004698602035767524098960839544286366799266805321215598863302194871844182752045772081778451182952221076173612391712701324431369893987471314040892830208990592872442744506639138989049500651916448332980448636548627875717902868269801078952304960120253069936449926832324164489348104167325427474854854104795173341113853925576624817282889002699736474694034196572153501993073812234548941648185785143199406782283118925001572861160711303505795205310811840792895525169420152958229518664707945101775609769555258380094910471442914321968646113719599950830840716254246070252167532522470331981295664838458571690522321898670608455310485184247220619065749674321485480660238300830738033537207532523300093784504515034526989892429913327097153484179192772302480766748844899762996180646023483207785339180606987260832967759550074093704091456232934187411722739620072851905945252687341282312694778174554438735548539804991922500509365850745187999563174779393281799187364549586187786325505538172934956374032667193825480353833990678100903455644033810403269410992955800709137359624697189469392099804435585661088988333983333211876802300001259193154410901486887103760230126899141515391125027588078496166647599997171650122964258232741534490076872767068801524153160067730198201422035446577690773374700365291499899803036690236759517149949769137056271038897547732813433975734590823455655142706766081692774820193687602648915483520096705489844063222479207803422503358951630144125749343042279842444841406049410274631419155612743103781980074334258860673794633037926436564120787527581512732066245432585564706512813816596659108189422164123025350276876862694032964728839576168263233893946694083636721678030261821218023106324085236879532835168435885924343639196111449898898700242691169693248085083136219107770513075264292952826567542295922559368723693213204426328042664920649002383552241467836656021872018511104792872991343297184221425703861290270990757701975638320927634075238624885931502554395128844360828102154554074035554001162941406078831219385956268425143396314355898079171578837694339368907601575524747919538815470524985385758802203319709021943738451715767438825129665351713584746934669447896421746357121421151019047630353873944865533167019912673890413825439526838043732243769905724367734400974012808246436333641001872616159544822112084022378189452027237490302695200004432644360025910165754597696284326489126674844353345012091787413525415055105528318074258489661105353909061208304878057863460735442793178213190754350060629663189738195778252897368179098668764242748965540766666554329593318733894526091506487372254344969067356117189847579153728366190748107015695761405210392851593548054810261262434391268467382602950486839402295713869949161126907218440623158051057204738410302551304686152349143780687807410290611535429145939237576909881706332529058832189243983635907174590871004372029527815470480480330094974439293508352522052297367462654251224918675322141399206176954745082622741762695329920331218181220890547522082153173143875217081016078991078799577373112195948622872992096718859121334435566572722342673239817212205578699709956602016691065820007876405071828800765471715272965444854578736726685495164152628622152908053366977479740030224363523972872304745743159325047269839037587690971743742349437144731029130966156215919119259070471800864338928455296455326351409749614918988775895338908461116559697219771908321093248398904838342023941815940879795418543424342513722880839821849293321091598736467361803131250541803342992735532428990963908752224503546697170341249600104331554569870799532502802248074709018985191736101790605280594040619042201408019361003260617942119486815807542782287682244990970977969782142253760452539527619605579085950496602812218350391467706224552615557456682630326237020272353816753048498101514612236997567385887807885069332778099050005785941809680395747393490950997528759950520550719529232601119577408352536426205568202422587293430830180043976383258852373628924324866200774001358048084607706229355872570537998357319174431068122188949667841982562586339434779516419858436081351921599868419848103023035458254649599904543376351689572020143830914535905565816015393769008909012683759914840704081638465841647762257633926529661170954257872834835905248429178761234329869698325214628938038024247627820803833500243594041228389284680134269866194528941058403703393403340805310564221028640192510819020652374081294574433030412991655842464139111629907902238797397887890538563625295781148650064542039116117828884066525548900124826663653541928856906556146151172300379346199858242028263363571514575178127084465043373056809602806352741274418044874397092870241144827350676446876778846078179355899264055596108630809181461697491599204418126371585660552391117690876055842871954213628662026516555815921117618075818279232694748687084657460708985326307717838882989311632800109183723647685815173680946979222260461891125950321921270303229586839549545543268350067664103708906392889385720931602918186504732997400320506251528998745330744487802941871006975270546697795165548250507278533653095914405276435319490993172166621716179725104610092138863085045273227204410875676736837891017633141830572368775326406328281267407652565648624944484308598670564700005455245301570213291049389335055303349101154395774143092395997351228646074720676297872872049741125189773359152663756190740041276244460238075366998915354398473812768409330688357179558296782893936175249806582084510066558087062492203247821818293614130769718261998484406443428765699602224713997740730544735678584620287656813851814689657022018211440958202312008945326830189815522380376282070706602573062181372107541394459185006983207479054689312832016659040996017656796807409076445480359177411969652614989151459187594051390310038776314533435492903150090329131867957630434479183971040342561152232883582157754651465223016889815638132523958887543116483897405207243493168119897517027986499235813357099010156202671455071757438600585060005217541605066558807012181318878925958790955522352903573764068151311028283798618603110991187906242037455584347100635016349610495687609386485516185161299387669748550089385870469809435091975105305745481079713269225055485439799239273315591713783176733339589527510720389879391941100243394666885139242543226191054124842231862393933274725258646306286220394089385037834955482845829480620698987486337471945855585906974602774057014367533590622654502346537305691363709206225375873296647749535422786374135551773711847959134266827960698374400162515304556646065396586809602376712697848249466536585439418387148035954478506582724212221553991385407022462471713565931734165583059692943888480884662563892822011809739322952025680516170945850798636696145253910673046773692342781467588682065240809825281398837756491746955231395443824978845751763081484738453923074158716071634970656845443596149496705671437763241804663845799912400573605639629906097575174859249221320606118334072237317914553903181778537637885488531879210444683432660513111215985002148625746792534062049814545817158149547557063141868437596491313539257597378096812381329569575702662807276883642791737304690572831082057550242903946461573330379235107026150789465464520786220819212299186038937582278630931819326331920892634970092666704153701296153367027693939936112503847656747391833862818799277995882216899607256286007159165998683284610456146018535100266368056048747730574495792716362880867151168440747073377036602296405615278988281544127688417010411843725127693172963767251243332951739062790477993500917558024323873139811281828790607011169606838360416463298060110399265068417868435084796455386900425268400225734043548347259744361382973603654361550406714225895150439002542136773826871455363581775354162333530137057498093664262365590016615542876755297715639906037525242395375795972344578873822190686800321681318995412583557250012613018105743744423880829126891542038710299911864327162308684464062910980914262251866183163316581087628546581182660503928526486127158560543178623534648190167357786638677781113783232578346341366569914151971590916916210140415927675898486110275851634142884968831624070030300706169041446932224226647761293981440930239203891101200474742199121545432343512289217600602797635862549403808221537642439116609002162564079430802263183303825416120823092037324952907627142104198066806325342822380728951805432743141207591990266978712010078641109029539370060574672537266975639314155032586965435707952313922870526197858376750965939062013684065119652556279979217270770472251638959454682915857019294862737844981922262897578954550707664489981145836966228854761809458462749514845667726037282141163494588201380970680318382787256470563379663879233644985986005874861152677492830156506683929879518760278105134082209977938794671769593035792767940989350312617509743312896811976510877319037061996819297302254977152286149357439497060173245183420399288087349096608858802433329310206084641708483925320248469794852458894378921767138555096714784776924231829469604967599611743094358146636977793672621342208316349481724025444514863252089387964992772522146944519701855824721769405399587698920271766399165632194301874696105163106152523721468261147578571391873566799753973235677245689213217766492173824996905199177730432805682299059292548987732842776231405637800652781323871390926202269950502989319918199082239967083042433653348274330758614465161529621844344655959483479607150934826494708733818699388642325348639217649740224650713171949946018250781095455492063811401104431380125730847760139281029365818088047655950920794106069095875593808701744401100422148770450945314759220668184746174555348710860394471927498799495983146582362457562446385092802218065493036777106677641199854669486627234521641275962723351270281145664239989830666813975255394334506829173268340169951956714513667792786920153093819557492110149478873709429456747332012701616688019291160309512718951032306464240667326405139737698860052571021418762856226319666471005120532793487894221542958420994053885855129852748538272749058253678673554417916612183580951298182339410053816727782986587770322501004142291227926348964424606551146950949847372932326778347342841933925186384999039389501312604804374546612197617170673121122356868648514339665169562230319296864558080607651426465316405624696688157035869000984974607161295024315154709061711464602239192757822854617590555134645162597069812340663731822273010736999883393922272262179535138363624468899966433416924401106215834210581382735329327933179781831194462384920440880569884853689644839436816744350230280072378425428812642377763339601486220461458461547926298013233775063289027247265270213732483034928379513681469151973358516440355270200033179297920868859824643648997641864725206145220023208459947243276491053668744832706199644145143184044716398513303810370248275559207512531438556879045990719111035617859785973063048947429487582609960829477120785609896887861070547434577098695782170901737808147000630798507134811036283049870031504342495761204483668618176924090124800924498048171996433797963993124969127698064837419042665305237295571786062319931550879072104289765809353501966952615636801529208803315245931513029615956895008606155123576995564646459361384753666691005398976418240687127442707909543690347065086185913152801375043117792131016657386414329639482519079537803433361764472853069141513769227620867189469380902016822870419585920071864410724958451434809449066272129146089084099885348864970359722005422946733295509630006682928137217389275716928283307326521178143929473359456966190580072931583650233690762332324622690958006781428990859056437076005103470919478595608536997200551478580831512508159481530777609369420140661720331352103085082154820789539513616535169143003882422781869634621592777099924159182589397650480387285740145298205019631418635428571328414433009350180249488770487465746703057126414235535509308522588946369042524915967446701583696373051401108890414548833973155012367191994480285450867404976055984998045230340943472020286556219234123280106242976026069529494831835330929146086256339464593349388937341103119556847820662388495525748309214683270938779277938352877096190542770968038765066379894466952378330174679381630709337954659072138570291091751280597233263160792815576199385563355659777711644074494833735540259569949391292364339467256114687538791020966783722885546534400727376530442941156216125374045040793450542443860390733948704379138335795866793811187209006467376655538786686785048122907262777314475840101426259276350128497349335833579121838582270829225905539788142460866890337786700010322696498507805252155716151216932354722418505423112111346921782207423006625571911961553044770912698892719666686574613932210137314250163621023266140168651364366178416001019322391667400887911430793173120661170185365501088111788279482172778578080814734168520837832360923665019655066667299107249253528405623754330638241804233466539644237412721901945744000916462156434232298823637365017995127737835721155685143558530111730336110052249787893105571127156074466194473501416466778734163657601833144408343503260794877525940200567538596797328083753020870529262748696717284036826299168008266191681402917328309479952345883426944033048138373055985664726920169858677299734448630950682026151933146682553071213494173995744445390002488465450756346155921817529686295465229196380065104484823018533239596071391956322852705158174047827542834952487466736130215362181867298841297385641214242354594376481497755727101704555984607117054562718677731435466601360926278106076196321397406172687598561113310798298015986625491914429148898300557670806652445686919933125030465068441005199079467905564949257944983462858522663704254934025140479932175363195175434104703271659735353805349183904841249408220614939847250445582437911760701730171099657415723621265727356900655688592759668819252997208407913992367505492715148371437785306844843224247843296357563322241421187385254340796890365627332635238304930672364050210201294634982532469996796262504896959554707884417955712995686380382191857273526481759233840365086623586547578856590350293249769613167669855875889859517708924818800134950366780032893404636672704577907807219477615191725531138783477510550672218111063870580203761406298814476346577142399442601597702051078716135840435043555249663949311416034626032283982770240106376279024614965338935912875395935753000612461685575381238618065873264849069121423629172820122884231052977548605627499910368745345035433760122276913509201736738307978362134640773396138060079989657066188225493493901804742353524101410061574171943954531952171439835270076115677146630548169607938665232035058116805376375597490098903478890250621458531979344034002346130282153614498797450095058963577805226841356010999217255638349032797885730460242970582480251625931725821631147256070632255906215297642523442124871236261870587203972826970764446288949620693474510659807976942471611744350971890202209477772582324395604222852041630490441932074725091119754172475580856422749699319930934934633585267508971967633659330382089418148556418508542468449024592248276844008282847718761146422870567651024430480911234725262048716177344617043552146750444146819859668800829811728290818661167021621093412775360689228879895623166423543524943576575652650464101628144443951479595330001141822868505045066377431406119293278941259144894013255603806665095601430623118879991876927451594611140657068680804213338542835426073248139094512404305899143246239768812628969976539316639592969445014753408475318737146844029800131549793485306115712929609991816857819646258750109459152265616559347866290637152421346416653299105670827338758482602409293755292505995402257851631274084724226343020390476348772666977773364226774314594969095946580438421167839159399205966360330370222713291948918628130286999543075743990603188081784154275669843261013152746966099504290452777418210859183987762950801236387668470423289581442337889878929517339344960656604625514974536479312201880848220950267358025251160403978583630129148189328578097557356752908093272681441055171582829250993297279137582685236108121448707422450729893928381623690910960506346139685012044609080965342370402937423220342730983743653838699558421194451744421002437344507677911187293875602433734921631156923590617392827112852816096202612756765231941172917008294295423290264198051639533576748646128463187367572039416341651093781219956985087978722894516207585274095086603009560761309780941255163468216136318194810342720984178637501313703837332272944603553269229042691161042782098931463017961679655470949195459124601061859181195006442073361742414657955482145931674400180628999556687058748641695730752852343170287229050255133035044288223003860142574654377803379518515824874609714253132111455072258394201944972501650306637962825380051448338118016976796071424169802398237315987296296830466435032643214729348639424311555911527821655916129404419118042310812521445621250059523249938594500443951208758500812900612499691197791434121485505758119165794142128935280172998711333012267635871119594879259568333347573967215504458114419390605073019524278565424111945851655736104283047223730215416045315873761591073546869815465263125916050328300782017479025324718893321345428606979240636796220042264068398299566171035954084040707792466749786799768730619009769543638657140989007314474683730353920576217434084809682617657361309399808848945832779683866912747636525531991439280008364430707481364686148467134138846036615578832653396174984469406103471064456080272409593332818737934319991226570765481505007015734329197601331152490777662651202152266933523974378630032585817781668135094789010232086824402636004100881710867515784949141168980266319448899920134126052740808505413319535780991305133150946568779827019870268986959175881227913575676384590127895251165900691349665255195128578928004069134146151479663209291822431894287396509281327536949371993162513768489357019936323725167992523984399734058952451876825377336819686783434886996882956022027318838022900891749843342457165730690993527816680115859296254792377502263942856962597691696037800914456457130970883304781756100000.41447239257 \[ImaginaryI]


## Verify 100, 000 MaxRecursion -> 16

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

Timing for verification=1.90774*10^6

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

Out[50]= 529.927

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


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

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

...

Attachments:
Posted 9 months ago
 ...Print[Abs[test2]] 0.68765236892769436980931240936544016493963738490362254179507101010743366253478493706862729824049846818873192933433546612328628766540945756595772115802556504162846251439250971205896979865009525901957068131704725387265069668971286335322245474865156721299946377659227025219748069576089599393209602752002764192048986309527950738579344982825034173229565338091811015320879481813358258054988127280975209369016770287413569232922644964771090329726483682930417491673753430878118054062296678424687465624513174204900483221642766554290055935028993611478222342426128582832646718603650018931537414763848967936556912271439870651953065133056888465504885799873853516260611678863354038966005282223744908289479862039722833171519816024367657656383305723596359151086525460036387486837632622334298725709552463768300591035314935398573611886888420174824190626083498173034223703984133264282699210740455065589666674834536567489060715777444147548424388220133662816274116986724576330176058912438027319979840883059505891309117191987761469414772648989343657425085034050732738529903546587114217499635584514475429656959327732862489935076490012861232249244670423220090484477969004477448946670434279197103332581857937517719898657425832767700119265854957115794801143278185461993723493131802360791389248808154759564302727311223193005229640892474022665093207969297797972308795483218256171403916521459251943207234100609086755844459050004667079633465456383179509789357941736916352744611848521664077918386624294040883487647062354653558109265769644276994369741555722263494599492834558291937955573706480722982389806312472239746286527176248883116124285469947303667188075506826507811479428582807366599407544908560990699866167233307144245764835741501174979679166078765231145175411199825822532170091858833628202128777966026600647843068442894310401343003939117236867245656732686719139206716028255819141802331701942027248337771633882445225049334329008827371320849006472846226868011129149192754883153995560921671208059671732704499253517327447529208297180672654123457301218758892278525894167935930983363218877512533994251978272092700003994136520699813263053327399132641690231179063314931546906927612775633995348209911166678724589467821767106592498663827057034363632241807121831546175498178011687284590439293322231263406301066863589072717290630291441982684113819198880100231182613587798104863611185433976009254862585527222843445901958943153561148829083242874018226480554274231391324767376148485531787767908124831873688579979114662856184612164534836370699371440464263768724668291617743681719766849740663590277737977490693183461320266666793472116774276618408124767965369796362732668987556797338128876129264558867657737417548617146808592137056879602982206609613881069490166381528825180204703315896719667069923077454352649723496033985893188309150391579573916059639453655188856334980355047281560296288150836680499821806918067869468571687709518088408966653716009356556714281694904914038988996962213833530636987279769672200413448893419914190954063100962251649102614676944333201213024711868954772741991675045198246947499574872027800654821823797116399297131866662866832215332914761325880983081211272181775518951539503852063119472301382766303820851467743266039356123495461914463960644386394228342211998370152351720235034997434035743513051754761571835043769475528640144621307760159481496713401409374957729200400650100318226988524015127382509490642900236553851499823658269458873976032051355393161653806016080446394196719312454167915154602448638624354575153334932298393406734174580316934939632892851077461038399470015366439910136971186909599331204517462262508377673477745789645309425145559198802530351403897927622891172233239135167420567162398873965477371498335087310395422796362380227536212159184529243644094285328763286873653399867593200891823468738537356817916009007206857590792983184556882143118383332812491747733056313117179696094921120670802012310012864110800437831852620698327457619035904268498030693438632685623213366864129523404256345542376567721287706234359125016588483777876970236084456277023948551334490591022594253744077631232660869593809453087749830900393202787736482133628148979992109544954840067942735030391105496026321872468122542495017023785810605820545392820104069279893067324597299043883381251767370331206913429284614563732308018369972360638019778425246546329838131639355043236388708044857300408692365733932897876809202025693305332974091411983635619038514442263783801745983300121464879550146672827072002317686396598587702487509572349422593441184802476344187280014450860069307120621758277552124841158659386176036703247124389223327008210072318671884895179305778728051888524412158486781863155034447221379906386062559915129172725833420555901857729690605950941678587057025641848365090809750870051863842805803189784976076099574956436664131457150096711473033060684065060747340764998195621425524824611657787212347497307297184843276100338110267863618974154272345482369968216663233417338501929114697679974461999040589290327155974468089706302454776026817180862666499129628174265577539296103535807674203952782073115928317544891317654708215972145012823941980744128048658597163977280396427316169647475303595080927471754288841833046841458422387717974567843044763850418125206354901611986735632986299742416514404459056979593895488162233943652678347265596022282622385942587919265881732538688040421277515535793758126602211811071215627680419344432516747402019492482943196302886074832961592788991057409669743325758307333163136246632364563780912463029611662201334616642363164539543840181301469207548893290144196646698764959753342322814145996984815900737499281211342548428906112295670587794396336773199294694685408180899135324672973165645117794165164625772251499013197507709128473895643620535221191614787415169032580462466771890125789345521268697933221974072228257137688062748923747463128426891753656977603806187577539562171586625808503292996097826167833312793361094258099626951418568585518961687635101836804717331526833821482927759113475972330852882944833032257951185249657808449783975928144212629465555401121770667943354738182016599177879322535318669382299981500007793969274837166785629080488761222197549875004161208801954470862728371878889690961127008128988556968897951226589322413393621290922169712215501662328885746858351091854067612190960814788538340562578207940194447820374758964049453475279596594755697761023231503354696608266140588427725279132408041823760459504872832001577406637490493472266614047453860870065686792877317240215300245115939170990462859843807650049824300175195709172965197327078675562310841032518575712484118847367779336861724033437212821275432183094312917793867315784551027523227005327157648039488363953701623965995604711695004856773762203158723953554272766853309916267341275797701903330320042991780321928042752204238907746197436551707656232310297198950878091594928897182512416873896222378187499552752921976712473276842502760152461333888138362604443683396629339896297650204980597418549284339871113824834286671299816817387582638999915913286638728595546135935343327723455065683745940557931894237331753292045470410939999575537512585307075567794220591384663498770172627012864400543194750780056992232117453578320389209867758387153664474345216548748209284915679039103002974533659770931659846870364413634670648588160193106843188106278338484810906518566594643137582510141675299253740013452703717539783595916347808069303890053016731820356545553334308669988238215584797234857833240715337734964890963336352895209158472114451967789258561642243848301230761365174350759810624743918027836785194432612734564175386521406785552306982060855661420857844642892457821845981654717418043312915755155342902248185663052387501034934749414043850316243443995738735101173469076174529743228171316148424511561503236188112034773319311513132912842798170621472827047672512662660852021680873128806212250221980163516049343951492036827192365458624007962426554417906076621642340008264494604009400963618761963743233336699723230804728616304144337784023198465901333727384408963746178911895846410600416997576086543137329171944692055426801269582117623218593830183301386966850121271664831399119275066306084081037583165170944565900194591454705621425288086806504167157399213665956221987887850729795078428235191733444077623156066353441806301809447237558386800763779726469019801516781767029953454355486904086668961133817439450715151128685255321775726892870440473744648135498995935054160338685663523581037884369223344060532035244549530978707961982715975634739572087881230153460402610891533080110973700091540678696985479648877093538694703949814678318178906344131546480237420675784498137760336800205498122230353675368010587675313178007613310409033915829070038954051402592682464313456575568059220870617974413434576207889586620127970628216302933626256098521411354887792001292183442992713495148114132503886863918215495594135709356606956839123128764710024555788150700996403565715489148120536193763080771965908774932176687575396177970047279872390682064853333317876735441961126812962435306711447931900024658102394948060723874376192992074534577072409014967177579881003203603844597465838672089245254647844940297347907582162840968570311034735702558885041591735458587806321821681468362558269818765491115492370357335209916816201371799888087838643560301629784058060474468807601318274763626318805269627924736976096596143438889750807217089885706589537704845033995010990501704030485978413906693471823056058978361765766540875857780152353408191351286387079162446133333449551836073470193445248355929280369763149422632438606998644721208347829355596847775887472079459339376004377441766456024133954622699343314552862743421422371195589467507811224974076666505100447335985294698743481536277956472985989379142059927665547319180436047661445150971635633321070664576769828503372420176381854082122911693446785358685649432354200798985200344829230769191651462987929262619681734042999411805817382627750320836574960607564939935193713317938773219968529378875643297709581094705710775087337340048430356133329809307844513305130536419451502785240472800606103546718110003429303529906499494710047912237804449249468874525861083507010580349374701040030853685622848919878449929399851433751531600860218882532874416607559293184652366518405285172427184628927098560354782726363212597594770953634441623223718002326825766680241421852081609630303146486257064001699198422370576720335824455462285774244510694123015266718544479682986587917276656888581776216242287865231580329129808038591901952458108582886799850458913868870897316226399785695207697594428075479862155444063290069933763160519758353807284083073393027087794549513007736792112216429208439255374096196594904127869096362714022294184973891594248800061126654310668508809992868539099319923967900644358223292981012168404390789699692226974532812736740726705001655775124973620097345182072524359145885905902176218784092650852667171197480014612236259464872765843116006356086890067690233029982695875207293003626204223274745661069509440757588454169313726480937365021254534348209980346959715427124799927823882402396681319310222085719304648072632850848476903201378748718641877578017549246728454975911731380323992109244157781903593878554206064360914649409887207646362198718570717717828555745157055499606109945049294448554426277452184000492947923939681133667684299336442600353596074034145457666334331793961275462039007627213995452036177297272181745363958253145746378713674914362798861912370616204547295605099498268925270142468175541885936455230391996304914004337777568355347422130367905347350273778348426228428661469096462827715531661223661982922965385873663654906808552645899234048209365933126670575275802344829577289518161114817548328708323260137171887381537431438495763162872013412530729081800855631613767906611199235441691313536959306225969842073218977525206805089010503086744773911802531262458736383818632981454415888931500276959485335571617401643867802454518073083747981689243228707691363505519248801525470729484403981839727724581325054279894580924153424034980721591117713459481711920188146374609735437708789726381086002375802532851460036051245029267075777395041069203162249819292562906665858423018853205286078794806182035956253492598017769414680713839600943488472976928157795083131569856681065970354607231916440790023121971921063643253016992146934353541385065323232732416348528363830204550297901450028349760279586033397868154314810686464782535307316558683744949764451407817579353350266047245126257588496377047460395161491865670240157744681698896845740056269336891214367946547516678622720499862708909236488801029242763320063716880338723047179151798172058591124245575791489778944441792552360399198799743162085797046492087284331547315234891707663583637345058339250844352208626075065211002042402852548997696224231894476584104305252983051191993222219055741828524094252377925581703037152893534072425401720375934887581730991828290325117506555789230837583134473210547294260194982981519860912595954338191835720992308863630223835283759255205519300777881534867285454592827828524635031096077880648051886971133695126113929662229558732819097600207625824039727287689715234382974010185765739372284191513142959236853288627452308543337638644049025803544103510682270633218110911954688572494588187241971009790086275999731836282822129696754560584484503250841012506831605558863012659137903462449958732525188618380900088050894054336066355791119374965827906274864842151882268850621297248101428312054900533583216944631861626122510082082948769552584815342128083661652190772424146024625009231163820015068672195579312189548651487591345437813757441652233825016579370483546749025026486091835624885580729107206394743120989443742596397946986532657361050227492526944826103918996197813637871176060238382090946566765838399045073749749808967900477565685204163145349767202254049653445701731797224580931130144436315966907705090169035658090259875036956158416441744243312411242984767762396522602585962208859553456575846443674057782808449981261908954983951241759741750720901581884722817504304011957451395096673818414859842065409004696774034910989296144854435347841078251745452006945321505252144488702316190501513830181678900460652350667910123747817179595199448298133111092763397754128341727910605738631687254741174818938185397265747241023428269259507279848899947471545624758647042443827788368058218482353059553351031334052948678233923611265188514815847760674821423091793105863195928814686758055252218891239899987291845992009434816751078729384625585946379213282556349209111784765585513963392672067482816675816148726191451616109993128144202270947196734756325239342116398042218762971400666788022254343916772222497456368099921005746495321202188903803577906352435030955031135860519210000096429393851172745952195233923392705678930770254703614031284247755908869936042351444220330809526622875759687333022773524409808010139864309440742959573871139136757554471953331334210601691836581561512232181968283688303595304806580127957658352776138794312115393827933609169842487504264473663281726407649263108598740651157004974028306421874750795807471186826306536812676670443101928784277023495868312680188902657537598464346340680898309628212690416877722215220998384103431558545741696921375810425244068049779635269388838985483810164644660154215985355314002191072183826834150364933111897635872101794281442659843078223862815197818268234905934105962017289199664484509856851152571711407743981226634242648977077907262917821596746791845983552190964269137238998329643786140886276001669253224411999982885770258107926328516172422268014598700031525640631831572340465999499823727743735860504191303731231297014779022116064905047114454872899622206489234599826586396527361043001377631008159467400941115054484174699217894418780239782235806818592944425795290352264590391125194923239175238385530548831490448132830741094726510683902362032845415826839418541349555518567786339717924798835135652664955428874746390983648718792515819928101128208157392563232262477302633131761516279395410942166073603426625646415499325446544446176961777704332594383390271844444789452394799668165431710838354330928146992254682365088452351788869385112287843823181456202881903316831712389212335081399759274071661663025057239285027272228070621787850885932813064277648455682848679143821101541212039914926883137872136310878896636524959199119199008454870119285251327665130651804384549890620784844376185359563017846179599858006374105565180381545899481534624317844751723985534330767110164897570419074886204283713397206165732444080994456501139532278429062360406066245098853647796890817370541942635476410064790358844410286416698030928433393443054580812155686712547630165646471983057545681310486007294356970946010339692962083822345529536929479845583110101772761044789272882353702282977767784472475628083637285522211238302142258716171304832579616714576380730275750067721360930755024802985873288300996710306520012511247802663572953971030972621318440452569211754191449481858237939682684775978773612872283397528785556552026763179520536873281806921512691801956916739368499585097787793159558139907584066804051267302837205345820515916808381901347404194035790805655469266915458717746760246854670953322534003601061798894466292078923638808668463036694428322306765668083083183463695527905277826971584195281646637970491206359844892839142719319905449908779532420976275606600086965953228027943911904574111556710003207866128541537659526534433644720693557924372174524949026681621804666748959849631509316177047697834230436553358221794117442883065683550707156175675900958216772854792043327249515884176885910684201895992959230102954603905617347080536152768741025234628356955007416935687697499284404674269273900903450394251007734020198396200321509486969046661167494719187483594388945660901502702635458854894487631762494507095783419963951421682396784816261669772185782256527319198823861631271305557334629034454498661142677846406912692925774443168093589891040662164382633796893056880442621829353879631634578976963235921629360829143359689543537972247913740705649199129434512215215740679036987749974182571013658531964646778847149349261417998963482352721226955643820019004829309013880764975124746345794436086485714626451648600805977150640117805901595518345893479654988936835717670724884318192070873487543894386331355482056111525441696426051948232631043671371143697862965228696298741392391196941449688983054241252609515308554575584427185978096863888750824693110432545402994807205717323133405172850752190459202667476109943422410241573373698022479735343657354319748496751385763073480580501733588812683059007773495903529327965043761106054451600132937952364382837086187036444722430119083247598455858244430762446542826629866996492834814026803773449440995522430483940980984726305696285237481914071204742568680609586863659745113750653550689592779518657849085240184574742028251559922510452901860043524041463658647037742238893434165809470292570456284996915545999444251193381030290141746210081563107140516323538818377824184714603638972113832527634992708938190408049158080822024750184714344683056026297143611368573505838395679122109456872973271435965970527537594370948339800488598801160936453029436583361154272047308679704361864035171592217830334405563754399107324217094822176589598259498008224368570514159771359032192945865791926395260564056102327277384954281031168496628995748840366862999475605310775537492410538380205195556395691185405441171726671783380888809158287984772020195607983462468072039597182004808135749286865005313456354446432738488570228974748117727243292966261660462321422971309083506870605186292992748767056948987766121194450203459009961336049593046347449948501671482126552774921617888757635937891504694776592125033239683524380751023399669802982256073198651740183433268427350019466368060803123948190531505371279763926080627174597753093877528734523928212855662080469535041635502505460927247305777379655740309932171381671180809455637032819530657126587782734561336866134042972429630063420853250083346092025567295835389383686792213298721828323324305898736220351086101097969171884600798761910714084349876267672453339734177791038756760710599326613122016645473079424620142392899457072138341287282078381624631678553561718212648954200520923044691758895240021822640923551509022529529610478774889661172127429646039557160397013489030723027673965599970182006545166692216319834148948911221110993150316618459891132532481386535767646150044592084755659960873845037937699767749257964447093943412785019048406187700597809521064646060033336704823778387198135312902363743784818590795892908091223818152822931358731684317076829480312231466239059679061983552925561573521123882109112017346689313359279340875176762340044748849628267318337526957942996149757833382531252555431309670317322685311543858261899657369846419700056910830440604363863014750358220202692828423048867253620566421984645769753729614654489431735986577510895760028157318581579485270642837299737647767883329695468785062957741897312437732055605172526075001080977750423281764412224932701205315588897913699205943463826509977121241701344489108947626882090923143622461165936467053054304515875565956471807711322045854384920524231562813392481375800843712043736637338981941845236287027383334967600303975092279045656624758799082664016662539594147341876657113272869159078132760283524980252417242999370106289782946386537464949173452231895020345097250984243182220472603445491714599155572506670626675211074238282050170763898079026238939628342685735490812491724705490340311090765668329360689027272806964505349790520466889319056171288731120852099897720580426057560337484066466315700107827033505530845720813459411427266351979577490192922928291545480377638447006274741059501405175007656406697308028372202204601204382150096304144605786956911178488102758773181739639967330494233255325788741410825522985462684649925103229098618464284430010962689530048140508490764439088989835709674121284126411735968182179608799850320992610335418306811332335326452646062954283649865894057578409157764605009877104819439169835225874969674811079731688354146167896594484892543332293141728201486340258281826592517332641643843487564161458444258240685920802473806412300683311533276739861915880812562538703669289333566962143062531354305456847886305168836394051793048982761585783420553757692243318865019774855310724877701102588748614270963965467761741669584923400189861006534169908116658099946248500888354997950655748799741000365568018336490989815165004297908921075477512832648827943586442967990684136067086954058999054841239979018223790302917631975285397592942053261422997983747116384686656909103115181431156277810254412332807215521521913210188561978585551220620946997905436181482382812509797216214534139208438729063119268815475532631127917290425824545171988550887423640063405982537561548346413628863712242681785132671375305935991688530429003042194031750271644151411389381149052294005267597471403423250867152542749149178912822512729286125408367351308934717944240465484641795577195920433614704395431215233445214762102456860712543439607752146117823152877496307615237782270474695837617786842614444502256482578789817600157917636415994030480609322477903642054612366150687314422954146713119505411836749588046889579113211539830476187121910605612646269383131868208217353909339102784200141724069027190113433066436228320221410158566131026128468165907807435758418013421625857870007622184208914367965234781568790433636034503103435020834332476616909057876728754387504102092210928047793333183472518566428884705653585926512737753482973727183786825183580572713767119346615964521796867596310010548840807546755303981587583030288557658949650958411903588823513924732485267115171111506676066918066904107719634258550982773530404220110548665697912977833960430447353845004909911303279635186313541411818532323341427386278365167776601690816802424616844372740452859673973150101216703623096083563234019786645793225501930118713004170268183349103077731107258049178697300463457985489189438393176018065479038550718474274887817575086539393810822899974631499816496110494244129486286210922826197936747790633981677436502922334909921445614737589944467848167246917428695872001088057181255744648122517999075266657602834478853565670186154923896767519659494562872470384117362888150364029965967321511631733219151646648038721317233633321508080712014541927562409331021768426387190218707456659284347808807427328083451956836427256899097276118727729790925851364721598920680287154381941836104009691057049672371739606582800181761067894097394277358064020448784606906923836673383948698745266794229963423994725524492217675161409118905627232013188685656338426552801768532063328165027051885093188228264581213805313044578658546746142243852544028170454888159624837598130368817059982907399338079131953092875599302534037534493538446263483767146866060174148713795386952822607632916357578542043442253219429428321099538927604269192415840408547434508997663277672854243638154809761320114310471289604552266693897846220052787006616578624182856501140506091084553193785629349394297414303270336850138097988709288401000509572835435809496098471644365567323643258614561643369697597132567632158175318778837999671839372662245543698057593976828959984773233415435110614484300466372399048661686410077202935179284386940136863785449704388572300309149553493702483507091956362919340041863581931097116556493047725365455421743723623570007674433424122803249367497470961195116987189325683916808680378708883441662736165417044104473249366832409588627850687122333658134431163599624702558433801653096051088813185446140313909241457065935556468688992589650037139142818929172947670247414701173860669311010164367989183440325298136820575396000750684019767501164956792925517084815922800484881296764085623512338960498369965940475587228294741535131222011942734064204644877235033588919207704169518665336768532484173073783248157233567136746885034351046815853017957423009438272560042717062540611876692207565973507375177436645114212562584030412691717763618931610915972872303802551516648509638755507146504171678990153900932138323259584691324322445651512868889718645845854388164244305149188431015701151567910391747870206148745784697894832268425395418290507249875083846910974279706146668262381271893604249107564438577643851780740049411472964527062771993809387145453729625634989160675428490483602156930327341961239646522249943283140221543286207711543096724544848002954721636060531469220607463863138212397172874931877752205494667857451044707701356863227259790759009883682127785381590223678669116303161095792175571797620387032290320827969308698824248183944550825525234471838006474449803075414157934930241062348165743261539702660017011157921274481937985448207055846387082788797329233667034437233471197917264835487601770320415362928717414496423549113211695455692909178360678857487735776875828418038006354319442489301195133382402231497874892332937811572131865154751076536650998917540437642691943319263124635961597537132136707633356404674604992885037449344401558103283725036326484360310981146909977131478778018348347425461213052091753907915953467976208479497457165458471124573544646802639042844079605669227590988506218742895372976506158292594238259046507024869794439465964078963822964111928435452669945156056559649097341129029114756096175758524132371882206398939992011706255622640709160311423308231188191305376323340076885028781525202829935553883558158160927610113578459651745964228335436910472042549949025258311538597970500375119838670104101627072163197857384697950759182475740450631450214106612170997288962680046377621239356227730467426373820281261258062395954974691931505187417228257911086265171913509432414236012383216066448666187211182574810016537068570808818413791299504100898959209291430086065124527569894865612838041952626464158034586747985578176132748033861274112722784597871257467779804995963453291442050044388405899266606138172914594468742554758849503663637741453115296819390421337598751891903336256678653101951702771774394473609978908439554436010714936019989268915387978241077246333679854536330747512058491394803909983398076964890933677943029096171911865985376850654443993007953919414489685783873652562283685243584750350819178653616011626552914610148930867241608740496701844014528066221528459522129598826758156410976552628770241509485300309323987601466339444176878758256137011100362314789120747009903465621525199388145809956318647032828003017282172015307731182401368748515508733143423907070173838085582542285180152521779607961296065907655492689862265362950466285474782755936658930780477886389090336529863324662696936927687837789470702487998616201771422558968301383233230169332257233660206569418285856593586468502507802698350498416196978557192510485874990688375457296722814842189932584178558604923841818563201086067160968344724441371049096888001797469692690223781987121167691512753166288976381253007350641933574825264025196753256873423240019165022163599267201932387856053111211165217441282764857399455579732117239577148547018539455108151335571526376822119697154345888978759913239530025410666766911104839968780921934554982211776977415152180005882017113007535466827593363650266898039402981957034163883880590083985731736839905885112842416114447751696479097560491179994839795262025543820513225880954754805245776188575745467243170584842241959308797281241961893171970804687424254056842803517397532607545565014433309970853011067474305622917857090078363035889336640595663291093230921885808968880751193923736552928665087211296983891823803890114652998140874986824459128988937101364527944335716841987723322528599815305759171120619546222310523243839039799332941873721518173420738890601813405319180482271900626705113726575960586166225971757538275701878044035387906544118985157003463459799343244838630416502111749939894882756489052966608837340221329177491172025249145319062518279966184992673838284882332604331754190432945176816246198050779666140738272598833986227743194784023165167805558842579703207467235554780220411280708039266250536276878733067671736423919422988817705809714648934196469330181263549827555496868693905679050829659093412858053851047964660747198138188130683685897238526000256677147195662487518081513539939386179126216171485111294774146481829612580396141267993063044463749967182158007675376944816190823961296093686554998317434166949436932332505009451780267639751513791520626930465212938612372074016945991400354008330629929383152523238887212263826643574411885029092348639859000332586959154445863501739552745576804423397028565806595815566370324896466397936726610272282475993933598178347483193590385142759219017921798481044834228699343472297454655920613394258796122232673830455769241558108214298538615916564285076019111661988037214110511261331618070094033661992259305087742714272982504461199974799433750797080076871254035560621749906567237988763353688432196990741369950112206527342061175350988229582759318279612297846068519529926583724821807362382969421651362530729455616418216991249312757786572467056862908887491302205741719922197869800814433200122164613967975345441383039000376525649343844996349867492790296817399948260954762569718694514893238212437641820600804189625213407606125568707549642604781839768243747308942492849000291952450096861447210663968132834994485431901028270385874972224983458975523515830066883811564655243968386691977064877553322724849876525032376245382607864126638444270495549937219515477916449800755793071523103281267362414539699660589422536020748450304323888850240348449785145011499671133733048018047973631170365942468589417970011692660034222268415799887793121893859566020840569178260076419065012619922623634207027447606627575230258455811405924352611770259222144019757356482083129962611793580776235042882262727631922535158545879157249916751782711495491317760780798075016756212762710434560989582501912032153116923951755472392577969259112562377001228053478009609165828502549935858205504717819821552437130122170914011408300759269353589633224402322839540955889629474062240861426105202215101147300247026849900157042433815006556960234467861086449441279925249083393751703494132833444156198006212464138826288584107544831763216157937718370577620928751022264313427300537288402669506250274443072015275497230570380739123607583486836859681090147818048641139487423696810951745028787266340606482959240942835017695072269154914293010911181860122516059271498655049561491341749959838036616812117921133784389076151558995905900158842435882099384135777411989210835154784087399200246585466789515611628808516578566640564065048075481956489343144895406216597398621532098413077425612934934287531489923110695960585495394949457477655517521128689923779639681199806552260255389914592870018296423204602004511602703427388816239810637779119133135072647261452014763354585730121811281520986341814614487482434930319749710099686530720253639440181877442285791284442561199070099228270908626515552763097449556778591689772002919213996688846857592667034154836638725569728670070894847621677096767084839746490441944422396549136386247384678337833949842913047461723440687162891670833311855183655163838499325545177688050198684744296389527754165160972550207800810413866098250130691506511065220090183582786149496128199561623094360561481949058361783673259016538210987926154974931842653400624464617430577503391728745795646198696506986090175803196971304450764521855370767764258531154717504331822157400039680232462195992801735821590543050485077942073581816796507207657409225721458734357786407865024657361696765937483031813563171873018247797677311309298706934256020840729131117501366368055569789130947000951018999556149820932298296124679209177265115745302154074468585287146870542868402644732527834616430088221929920015366254329516001985696948019744523001470875489757253834763176629074744518476135716582401285113708690265323713557836537330134671293054149767267597141093464203489789216863492461212972523303215332614459143702441032476918325604630160810009696296785980562124517380892904944030950545642329171513779842470251865561648784332736254691303001820077260238446295728801844941581997929111944033757888396360272015219317452442692634922283520756280088740107200044528899356190370621174585240258233646997393874610620616615690402789345811206579123050613660784294196653650807939139773799219150264192537876510367880580071690326067504289631285562105814424044327446568713194491184334470025295276646605599299072612282252024373646277131556173534621523079427332492561390958887236822899502067416564294796167093872969203067577970603151553288365078261974009866927607542412250123460735561343558001823825441874637761596052521490169744414006875018216127274205180514433740351519989496577821676284191837572299576985624368347591217688910772434483357608015298941224658052574120254549162669753829651909819592068764275771087089800894846433322284673707481681183505365260269754532767629207251090922877748503731261886454269904022851265453676478380991393774333351453791759812428931551356161010511746270085426598930632011381762697887945077741792664626361391161801871843329886719713760096717195226818664767508713695120259787804807934150964599786072841110509226105842441610999541487587296348722002065024733355926719723988048016611511004682311122172996105690527030662832479839439912333721478159747744357013440567639895448903829037958770566197518023740419619562228273798249801942711570560875952694108099561845138404963316084322496014177040881668167380674106076085144226887669059592808558366956199806487469126739743899189144628049123093317793613402171096678974293697494886157337804846028977309376310375731970611767537772238796813531687812163122593573826352522682108164454244020483837544858985205192995756043998044161247728680985851866561036794626926604808107518174166753688053330950399403220755292501310425767872577467351116216538754837156578910809003310645275264135045902733390233993795274288459389222513071159403318272402339709935769288298997187966970842849799291229541905414685214643097214924632742024283984013673329982346723597603411306567424780210887650560796275933711584313032835883643599097204437894977360222071854715000460073429623012723247138650797110936621369206249812123116122370529289953483819626644723538955655415856512503394557360605318304254710200631726084155660598591165029419923330655483415491411168604766404561102013895063630235247427468838178673314035759909627393842971534475394314618940834578409195621474471167912370600450810114581416126741620639156268961444305564522184882860151090164335254317480618547113846603942312423419310030152223901874364418673599519472501072585613936965626983236835738638683311404216318981322392647343932039537328807431370809171662593995417613862987614744957867628714540969007239849324577233925787280763776269934862236978440158349099949920431025296123594360061520956274919707479607595715136866498529606432621678665943323277991856987811132658267802134815887183619894450108372886205236648375691917494403717190607820462171787716909505208096906837131313338297250527492374993980349866587275593918629885725510071175062393906220344537555343731695324764257296913192154043439656528478826231470366877225196589912962914307473376412563294816996505448717288778710563918205210166969299758413996935451535210301426300137859297347348758940625154480628723325311677676537046469486240108160573510453497148419860507628963717389528744963583830586054666161961178732425743313451759977357619175078465839787109889429042114037723778426830684322364386870191546356981813394901482311572257758213357644128067692172279848665594968608081482762920247067616733323606944144693497716253037030471092319620278791492585672407599990171428136909047747476723759223217012571320987809274114422744697457052927319674500711910994828126832850566669014691508265576716887476806317772374003019448154409225919406026354594426965868468127263116083916111153382919590304874474963900214287670696558343730310468283042568921116014803610350091442795415747510711510789780235637214909935220321317576660380990794029922408013765589022977204485305874983232326437060106863860346915528537808210366637150361882642773645413398209195036217853305159300213206507796177717460277844590751436258455240723643363055472766817217779082338392488916598444137112704832842416454202027104466362808123485422464594139586584058043531561562306375961018325408609358288789359979349546721428416679176328930265663387471942092400201043264327299808085775803352517245705958101649811564851318400123728108892343425075202001160285781602014974041349827480335866949876339474487730836419520063329886680042219706885908352553685906799863833716548388120690998429092044656332280840601046169970401898564049881074070620311573423824990447486596962624207789805543140874073165552744195996583892542366757842935789568928230573445539496333030572313667794489048305537095505660075598877330352926026292370266589913688816173235945760486285039992943744156757492785906670141816351391560119290960471091648524239880818960275638768446279358127466419938103339323683771485752614162954930186857093561306477290711810233993333426205398600835448946340316656696188297179728767097641057496192825400076228053095043942708472746331334868054646537609113024764562837286759599828608446735684801052435542941123274463443334362740478512993887354716876753114353090781619206873794705270150689886615719623235616562140651850191684394244898961994655067396251146288317881160415656464860573990471041038706348566089213465460900312037012256073316625608226676035221348014977035512354120288274486426799880245178144829097415738837971518554121515941173535454506232587998110994825139948200547154724569474708567594675464160302771927014269612820655830412410570681142736153669023172828367021578162132309522385205197522056949634014812977565416669280859393427100896144054342404047563554689574360850298965183114645611753501892471942509133011568326462763246292993507413204225821830291914272817873353638482931941469478789993888256782912820535489108995615468262601487562596043430953501882396013525770912988528664153281933793807586784144467785072639779442618759983269043115733981204669845799927243499334036278105773244992441806724587271427857131253501708123792138548033244607693727715559895814942058408432046165263319375049964515674446191227125003113825842693170585163177736310329604502627743799815427901065727115678381987268927268177393198378987309485494814101835265922119340867955844025433227150790293508376188969300453914545608497099603289003342641040877007239457503561678861205459744561788526886924702071466943267085247569236500304243993426030576865561561089189648041788627746267131461162456398686112602498169902103261416645128602262375911361723615970118353504942081830775460809952949999135839892487614444882164018790133608499676736931176414165281348074132323256881930368188789922423139077681605990050115166556373700759319938547817614485108624779777218350776011393854917544405853273807193647592588552870131696444540628480200208846607448813035807992922645169128234723276271234219533646990235464542984141962954451570700594601800320152434953911019996906445420004059600502749252723498240967481169038599484681037319561282144656175009376224630920036646218474247298575308303833131034184361251718783544973660230410836782072205444887431550439551403909725686735823801021891723742887346879525442705693475206256522886591609332019003738064360955843731469742983328112475785894901503550690463301027416403991302871293830286089729976737918269930716753403945296422299050836885545275688122208499618637857693437079465808695813071024816146756675710603676372697741125681889047489975203089257696601008514126750040139565373321919167170849346297450283789230562326304718438103554586603199105394732449813156227515454768811510436129115393672282580405545178357818479480922160040402826407150319355308262266177264713107035617149902328448061687299846743262614719589660332682601611425810852873480152155538652307576924642075252662707117165360856654567933056684474964504758678145346457000294255020009202940536181009599684454549557858940881860579941807624125836162551754429883174866994304738560416667905073359227787738856011348649379881384689326256761803663865296282307493430231008240216824375609535689026457694453740388394014205706746930125570640091265992802956036014695064259609816979945416540486233080472482030404167466975349263063620817083809743720425797208482576001505405996643752648668805199170070855393091134887529417027921482446059266674226213039631254054149148389160431818250514611892412762678301391004412682138457344653746948440553021938382267124102468083990356829427485561045589834353671880086615260691504210697662964811367038890011925742297284791180627130223594746222330714228686387140393890601746765077395649232802806198469982271679170274743168040610705320643296721178416277553567254107395532153756275649016274075799677464987936157668400454915962324906781991389992126280578082410932001167161482723900209723743878281959580045223534809654169741023794288224944162624046358259744382086262305779036428265352548004575946763936207630602020767843471066136415743816362094916732612163018868115655387691380987134793113524837620943315975043123941495639257823227633694047730009719456246919212493662919159577237658427860526350308715615142414021568608783438430852227383316118008979658209638759719105099945428442256003573400428573104999285170521172157101328359277100633803232094535665751405003496065401746177414982791720215085682352482722016416006358996675871150237832093190006693718147379069073592811747456108699124975590509612855293394485259953471608932991188835359352615152985935044272215117127604441533732932003373660022482162573319013455159321790816976397479751029555953668494693119948225316213763200943850816416702919717168186035749996145908750098112849308818301449834171362093154084404421059389510903733275010907566385414551185866309692596659083134593048887313201245259680578416435354136697480726005248780549282666390503445674974279215026102698285398797686449705076798921034425771134553216761649273991044738130973517032890964835040566625538710612244663590673867083540050294659998645357263716068406981043078502479589457636660542118971482212456769598260019699016005540139042693936943865734202043637682687220003819727467096311046220007323992051718318761312919994580561432005793188272888708684214195221074853394091082438785227760623787655629453978592093631212612832388768826449063311183436286838918612437057194552890913710955336967283104305908672173026667434318703147417060562691274449880240237739646295298369487928357979012368525004454460925184233982582226605710341987803429318246090972098739428963770023698210601783875227043029803939219695207273809246448080738185750351303695358789209183418140435589333863179699631640559067847442558791152630107868454290251912056321041133029448978236489730474221581313954130213760175840350051982804822624718931924115554775888629781361411405527158697583310785277804657183478653777195391999094737199637959139838954163742075945108456400321637978945613052924461399429608456773224709849338939200041984479720385404086262809886595217710795108093739629529129960979550079777931093198181432686019966394703458016099283182816073308625395496762524236993104976551159539464062980378858139281353878806983335498663397616241247191047684975045166102093553946474530914716320685886675356654396846747908743642720810031046808050508049329623871074591868691129292197814452167836171181060714898172446589162886090006312108235209259196800297497016122280765452379471483529663967537924138018315951239774871724060745939671431699391702654336847838968111916334516269132402480074618209174237577917204815088547752302570776576089668025426925901578069396943095002974371853938176976903603906884936153325436917396260473940121828883520895422028432785356428054723546673334521424292577593024325352955870258822889711983947562004663920595766311604345967377955633487593351473512315889983361260454993893482080620869170778855821577683102303489477814758759378958174082139542047536886420679318778670144902160595723583478519811574784191791712978498816153711138229387851994522497368050679388193639669529633496404908825772013939364924556536595787517887676773508765970445849523830031909268898803427247604157400257694382129528909125620265322874283676863352309344519403844914005816685647230379849854294795527282764879275338963395408400627346948243975205896123050503670864190697108797527938829271270126547523886425359845984249300806279446868875555118563304291856474250303175555540977613920687667160302802349039421300794252430760014998181128449929773779862960905093048594850065609788022373261804740465391870650245283760637964649283094404661490112192108775379215593229350031423062781722333543124205024390914117772653211643273354081358152707054467060042230095519125725815197111024727165406564731135526059613787034047029353191413229493596282884580993325175711341838045636252316076747678210648862235240968781541614359946273880954924270364873597164016673638104002026931645996926061040335718684489836309107589889839704700700927718559232764595483451816971535614262008571348275444074720893267357667536500678014737201981231873764812572124482115742758312430353959306325973718770747574723468255036055250900976239679865158775896389528972418564196021246786797106138906363879890884696702555334550790834200039907392874425565176275453883017425191036486078616263730315953609365104316304987449311977628592764656929564756174064209482598827743928393254195058618539076234445744363028536451372692389196376115244552878273518905581451233829340160968698242481591407442775222442797953197307881404761743829600122680363406457031031085281334865892299688662749146860175870782270463298539958048456107434830357451099251595581801325424119898053713001710858624959972870030281516982342820770814411456819782550813752115773414347064591376246113536486885329122575322655353493742721907014263046159904981935879178815674129574250873091017841697871977668205971167335752407261251252521631117614242657127407379816502264542344014289050752957769491445676317163774720448997840897993808190708649773679781780086106565763352790931456507424136846927890074279407571653250700159187480281252726566194963100808060843334984009374500722847894249917545651314498410538117855343867900548399275668006768567587017646303648294622246343902585374795922030589796428492771174725076593475480715739825653431315253290453020267799712908535556102106367035050364657883774821871390090959877194690318899636538295836269644024123769782333533060369849643390380690266538731521977123433990384183159426263552137042188461649257409383200922842677395282049564162249604568114310168553066604619803711162251328927320988720723996097070759737633240685417984843518155752615647480187150330797776329785769771362666099442230571379224462214127551132429847199721221056938025440565434846526152727078111271826980804354323665118258497022239344500619144308301659048748730202291434987237345683007430424191127314451885580860330922809972723655826271359826671320913466353414804673467346378694534510118723163305717458857881600169545342786505294677535958705159024701161749113022737992378652430673618858177875033096477496807861860636188315735920751738370789169926018603471764051421610413417950774694720065715505843431316529062602790167551391266282282853811860205417507907895699747999481811896596630925920081531775908229807674347509378696546845863210371471277254759201285000295494312975903876226064860883051112654040629598368498324926858430416014924634811741005546823807083147999899637639220204497995157838080472013073142613749386835728295705478694229979268689973458800160683474490446012710220097076322615056820394020453403861393298006679743068739988440285544407511613791836006835455066924865839677606896863171835039411057941354606515308458761550987569591358784415770598199042289492952696748395096731985046733617095834307634217345761639591922287079853719454344288594522038039500656128684258163354239614807603383105811376778307235084818786523298604619881937575722551007095688530247051493131888747732688647890670950026036727736138695736805339196852584752926372369924930785756965691552497984527246888303027220786565868094369111629229614421129623830031967334953500065743614980868423095456145595305593819464370538230625491376094357476022459186338205356887165027510433191925277451477931546593354933469462307114400119568915881122838134411375148416463875027513326049369036479741910961896364047546751474982378715576641775281219753295088678426254374200868703420450002532512984498669159701915360229598831090327460301018013452880149779806752052462833278087262608847305653185579305764495724144043546845172824956832719846580300021371255544371944592226662054600745801556602037230681794792692415888275146796816175868451231053242781584512937586103605475161382402528173427227993950016333525599825488563950675482916887024048875076879556063817966280607095116758305327326442653024009518596601556043405400088827760977841854869089893918630005155061090903069398501511721484520062496104436432261549020474613919616719951476618951938916541469786122774038429151910743712216374123373492161955471625056785512743833513827777513635341534802458935146276808220157354254465190196212655068198144396540987496814886631832844679752103537245968039408787242889105385307939870299680833069606368630530099300664995427670905253691151175659388796161396233351848694952150589363872426485575340595649416283262218441100070906259881672771160850878222104827623967802415889356396096576426991473907447637934034616743461980180700260403779340618738444030757526895471139000484526722238149313718267066312057359820153471884261357179611316956181536538186126523573290929106376678187474599595090530860677331255737214259566063246622962842088636705087236117883140351028039911423040465400965550775706462211667463548270009723899730139892509243354030573669235110474392369162407756625915311884464286874602942186578882170822840709664108167142608566573295291765667743459681959654886596665839703972037302171619691843671007589135912948416280399276826082019311113500685393204249922519713250473948314378417741484009999571302016142592214865081719198812798882533810792088108483335678244843419863390710233330557035146304062399990084899327384797625257057847456917840769499038625363446681128922441454794011959469921177484333098320256086105389607284939158617536048792774435090237241788839804508783555162674792544084480667023507818682031814634967162324961122925616684398119870353661416088610380011312505727779327487252163699930521309879533464261600697115400934698691395777464262241840756982480157880026476667691799050753465846059434457208835758908679322465300498346213302933055098517619050004599666236014228113715701564811988717893138260048194272593016523694282105963063023984893970097399202185067326991321636027419852054262447932730242209397174678511093517496573740353948539793547443938861357808290879464955296263888038582539433437520522185380319425782050252397475394548640914640577697635609356822912014449909513033542102327500293901688626833920897782349539097073434273110175779569203744526340825235827924911811683847612333100740135418453788455982815330840984798372085699169710499592291868440078849198074629739445861680093833259643163736323874302069570570231448185928062420664304076201952587273697440351169522963449164786861861459488513925218729545758035533865803829572103921204719909400386479649236225500056990746311539358519332513486559108581892522059107731761643697825833413714993944409634763620005095979352939431020730533182391071702594356866540125916479936224474063116805402614280401379332035539603660327475705555616160314850201415177575258264442022326496305923726836440453478314789352520516001689015112193587107043207854707866397773969418322681976375520683853549128577794701033348121178113046836971320893845417806162602555110667615583820447291847761789028622652197449355893730508156873160363282827586275336942951795755069673899256986423798478635019330752212632153239761732685958217583269444874015920098186803111963870291466514456629016275020635144852652947429285018152656156487839501876087966774475029645680330226476866327763338102558895863364389914534037720155912978391818569589070569740459237695586252906822148753218708847393002592295942804695718706699912176379540099478823015316271671405790328620242698197560836631873960908382034155583503683163814220362178639660337762740583148520547469105841704800295071991915353761135515687393396235591446239644647383671676599345280133259279016404525934486173591063235561480790353843580154343839225296946343368870412399405300175348097463855854493070169265454808445782807748284417863559877814524091091865695839729945119800916351176169808431354214354015447498458990845623879665976923503028567967024699136294815363801628057804127995909962527222932311222911353844199150504375200461038346312937427146462501289458035672467781042118982264155693344421386336562867071509567852702537374765980881377976755110414538381478825284904417810174760680249722593126769113801622231146944640283318519542848889404791045899028152077172446890297547471982253931883410619591460388346206860912350637335856068813377069054606404415026117355291530383720098798072524914745843556315534474551536680626213011441088308276452981524436479875164010978582161616200585114234374412186475717427276207483230806733010600258252057532264783257490356317686306433732939053037010972438397535204580503467821375502141563713193338841585664867882235652546174046411671757090737604999218911478713622483848910989519928005796126502646115630874584021835462321192654046348938519510361822421916501159492456772776467677765175671823255909913470633033095004699678671277097234086021787236001975173770619992847976827114884580515289571850901996045196667960627851872982207719753946327103587660789979926815857280965040238917411306418674853915593641036682445372501775226237842840708290736930514107984929947362133711749453832037532076056757685680142427629671767343305842285620249208521932925620318007449858960542710646185161956612943476438132239462536348457598226564460095382758626414993866413103174643938757328364346139151036843297143395168554003419916595348870641434693227219500690977461628574954349791500068632872285461251769455663660546411658644090741694969542351031185912626903134752724989485407470427348579120742838476688345981540759820947306361939219002117117947383412706917399931908585350750370448675118009837926607920667058801165929823814615344398594576795335142781935884308953426014742524902065397912476813832576499660147349267876295453187346054046299289198858599475683992788729266383350601322497781815888050547809287763466640236001276529379679004064827683041606138047956485735615271779591994624021568318620375040143394715806883950790312593722608646314312004796392054237917708341227265675103576395100208366407502375948244753364506473602983538154015213488600683234130763407463421922806164282280669998194979994363379075841312108687865742403395517183043789185731648022583038771347884532036423808156313640180171327387565258438684537351056466555890789508692281685892093441630770887826776090776343375436749420843999240804885348327876054517154771227628194097704975024173862803592067609283246444566889688868518612082353618562036544160282108325161033215279105093768901222837435355441136318437853890373892109881714538921068945354949614828744777554473408917604200547047462071643243984819961549918401762371168793406259000386235866977373607369028803591006613336936077222293639446998887847085625608638318291531489039954164646419961432935003055616547590952168198227882388730642511351446664602759008040237476086144592984536230791993338171856249753792948044042480791865273148850300724611169902913394525018070010215633422346571147224189369642699319209319853160938691596512006577939322876253860101956375517716196885079570578200882149442744832871362553429857488554649721374121115463036599626196520373429439613302574032589032216853872283507649498175356853157086600337705142892358879206954901449352389742913327433132627972930352862691471281830217135386283901029780507818478081069890101615310239838693802153380051476602998445942303018431194457181943205301496129612446501357118628048162227066741488421785084412118872251828844136732010787265357483919271088036566061541900360825729282598999964245240707437365713687576251883731195324068498731453328503897808789445131691179272971861564893985050127940549337026874072144747832308180294298300055073714425038845532183144910609274128296764735395556859854258349674915984198660739185539262954526177275585805723910647906683819197625604518550277240114554547505894238945600054603058258147876233368362703289902622733166276043297896289250532719111504765039323219973344989457267546604266823831892615177303908091241932089188965170447648405783348571668195275573077549352051295082500733036149536681035590038183379327440626629543550884491701339224395032194130516290781480719870983421253253359193318858379011270244990530305889579320651672401902983410779609425925632874973676311059590219879007282285310558244903704070184293070001476190808474206278832888148301420437455334483608249924647008190762254699568589543970706192328102357914888958311345195022865924478832577390794254570808266908067179960645527582665857827173212266462639894708939320005272190640995152550295953881706617916462562110674314663958286452075559154675742263179813400345184342780309423311488716811273555232744920405534199429009540555553156787040909606113019468056914347075417317485486320162493825879165003929098706934099005616213036446061194733036808535438327440744627286057940419318578945467214763384947238188841035390540740093519006382454114398638005194318471554002834539223154234053814155658736052171152799016805932513670109173548718464176751161272191892213974087869991912093779515860948811747554267703434555854041938100758935449540174995964294482618938568037935655498327842612423976738939059020555051062933609934172821413710439819177137982345072642860319187831170890820374872445665489128467327592487499842897098502792361922706207095311369486297722270852291168649807895861483971830636344561463843647596201062399920116365219922391555303091463037461625440282529687376353160811666107778367757270187332977542882887139495647103516540484335003613145063121476140229721745495294279360390225511545051790996169464712545920621370483639671182954747732565329424977812052102165555981103354038548144076235705339715797917177634921243214735342968961188212347421278609701106707105867546737630403172540620243359527210958571623107954244491320270253169485048875329063667459384725013655132411375411788603685756846314508435318542792337088920846954878406156431745609187280076119993587888818433841576544086963247883290199420621434042119655396952205144947226589529268220062608649416991854070373275578820822092541651468016607903399674898678207339580417838809343343998836782548167150686936534986438891581272325914087895646341602104186602367469378937610562133159130493088860545887346618119495053451270651102474652165496491586823561967316780722407247328077730537381231547169945176663820635245090794415261042399091794510726741034407085714531410091271920399283953163851280495752130223001811280098813354583889285392357463305717440453106416951345851837635330517699010417884224019065157184195174972080725375906785370634222509853281665338238324158992363533409331277154431995095165356788678794719338737617929291049023892905842183032119133839179765852006498463203192420340652351668631015849392132321427292163459161527778465521405156876516352115540846188196825648600424820579678184282274862461097019144092993154759446088874385452329081485645612863616458527228213979608613252276676910265675171323183894025564398237820973630337629896333124137797464271475664918133857598017334815100518767573447652120878505717308169657911753787776817531730362377370729430206955965992584102834531477565447994197661518789633085691419043299997043577723911262898668110645906392865848938536439352238156048262587851212241135265410499066504007236396983010298402422742401174873889752071556153378227398766753203660491461032424912844001501715571464988442652302009265519852993644415495551422215384173479678384773128862638573154540633657382046524031353593708266271246511540397636697067848041406776278610461166356727107173697374609015188804611689073642487825951510773153224531407939111529642861109205622620314326831872605548549865697475695422686446710811800753921791537788157328628800094160176093701777072849230379323193212971554297157565415388928136285702822920906024819652479521497213477856705556749249345767207497933328279249772423190492720594767993251323883868868558480793361214715368674023940433121524924693852305184201985313483740816291251216978929312168445742033076212901042122108640484756556560700980356354111158762132631275795495831524516842179249707001048797832730719308134701304958443804888094109181668250967086378871495637807621474525366419288634599865675132600687092890874133597852130741927580793198037551042709417232043555763167334154854486855398089121382194535741110384424115043721795056549056891544203917510784148272464348303793177955552972474579981960582135216193371842678314657717960628367453815275936036531297020813446625639991470805825168812890401938703255264876195217540035174365404806159394836751101031675631799475288238787005821015361998893256148340815133944083491140402538893639383271691949211426668178860914799563433132578729122314884279985651848407210754762545823210795076860322021851512470982772023571672061851151735177049469456945699522368464712605318546712604879232265081832719407704880827397380381922488391851446819477158567694607515707931614593357168582916910962687306676767947370714911880372271266037106464665505805709151932632440533615356035207874143254561468130410569432574354227175809578655421301474007970033457096477363970295340007437013389939540836462914345088585767232388091860949365470586112130620249440361058081777970079364600529341662135200468017276573920279500739316376978324674246976265188360613833834152674846524437161143784158195261649299543705903444507824446142960726443407060649278432964683340107249256873701824913391673693760667648960550831551722747207479341034612817143930983162603309253697966799783194329742674309787908557953865334855335338139143614504912953385721322661012204412643730521313216615197403186753594140424360717206258998234858844196303172376271759393124761736622328326579714295362600273714532909675491578410049495413678653998578777181615915798815710592590527845366190884642302039885655799914143500807351176553368665249070310286155670473157019047538305861534857230528180456893889089825269992356961811986643483291415055657748546630845278452844302118655711332766581332861935405766380663067469405973832703006759795068149935647594562721635522397226415436364014618785927279905151238694133109322980386876235271731998389956226688748766603089627624868863810178926491619328564675434130507476433458459232162958539630522422472838633133292656824917699825395622031901892947070038198259914052187218090503118230482201066905150842399667708502736049438812342922647089654690202401033870103771059636431909956794961075483304405529801740409405957095206442668688890836554533334736595833852160228159175258381904462989923807270390295692655023770742819181261772106609963480608970134376820447065649585603996855235998653040934178385681464890525318231574030537947242041837931641798392426893961620244382861787907511321666908277169045757029189440828937033288774439421325531423367107981820886399836739820947109828992267366931356841188440257782664970766387726137107394537067652167568696214268123976383243889874217444233485382726299325120563369701793525763093827768084902804150007914433524344298487108895640401495409910172961303195244200330417284642492188295652545235681636882547869276921080352588983668663967430715656902014250433426027433239201941122470627122200971080615852855582734972459757296038713780032732157953694477399142866060449518934724236960909834312282712998650284059615172643331604788903350292887215240022770041975994217164977381036125742340847036555245122571984488575341496924008255240386772053890462528477239068684755677876477063717858619761690997464800996548154061913592823931847146407230205443701211239627804668749562276592891368844555239054234252926349891026588163990499222107830687315138464296093558375775538591110978562984633477083385346816236728365385769272692706219939518388576579822846299843309705407756719332119733551986703924211122155329387939355472895980471534754149770418470707456357711348486762158911547597232564146914924844389408501194715323478282518508401040798521576484625969882326732489207851387366762530669391730043706347358773317552493075476300691821096498915397473786734443973018394313446845484695088308749203297069778457898927335985177552076234010449307061014414638755292021716964007120548812256453745055249548851566157238319089639130699767015900757209796552972827008127069007671395332011178750637843159079338708351580431569491244553663849083010216773925845901395242020866513173052769589179551072906854508927823403710821303223323764903529021572305535629803347357737884621954078731031414477743978127888959953874401062485172676168734010320286594593926983548034749447798986906448374933021468402198088144053346608516608143378585150021395468552645867393574846842096259642870679850421194192296831871450118544283896194025481641260553957150497800289252446780784100922980702220502516508103559992954328440371487456244226740053388005250653581545454231480796791033570912124850995392465870472366370026757350834949623044310106791672668102948312945799985914927643290616176998765458461246241872937518387220553593390666342754537836424545963070068201496333211871440140734588983991578129410553705236598209964235266315219164411367908105539254264711409611309931262196254846132434074891875639571964640728054186478536035461265515186773187537644679633879696319054755216189729301367040128249532832342916544967927879779626991792526209146151004673620341283181474441741647439933270340781204716151609535103382678520453707484053636689007043152941696632107122681529573666249025428193107689814193813764303318589286195075446936877657537521184667753186709987206784534551983907474394950413670482560031655331868186638654000629589072863291717369748413548652403918141489038997109739377531408089682128501653171280255197915368604520151124724491360887043123539351886441251971714439484635531088025375755130926126858067656586193546216508278826463535262366443371237209867027873388040891427505470554369808008890340071447481195575715276484411834050378337241547705047029028263669672578104103044152421551521589580695690274493766387298027806794348584099862163142978557189895941296148876808146589011546968497245375989894144579379068903164112519486390829819028496054255034268753281539643659597965699727277480912295073617277476378311727621455452832931683080592222890356642107542922797386644263145525347264816456465313931632034283023740225151823899860083691981393162646068835405100534938262578320242668369515297293068813567959119862547192040655069364727638931155220641358481453715129173402434150456033110710465261281481111227955259428498868464146657733007781618557397385223947878716755083396292563665315372065370340151597048322640774222392789181738642302403596653203827512066419566829908113230637966353236333062375786434432332412197962973427616925408454123297731894241132097347601593379362003244739720696120910373903069040221759218516288458380318593626475272739023809316452655946868646556572586464148172412239622010230453551690568680681892513286795724139475737979162470861178970435785944212237752349826742956054760335448447969005895538197006029475581806116870075760463510996519571974790534980211822625691407925808166738989956252647277303639402114751405694711220934647021152435513048960156307147928029072030331499051768433939654498570605947549936356939301957901477175438896675110354988227421635821230074417098872209727334932511707528323302325515246751981444987914093806782053009335376785750257303218338412304079968693700488160906772057335009919109982594989279057870869964693759788921348622283249945267207977062642087905084658584297125011574710178132736619865068515294400317367823989638009550420544963011984297817505638468214983852751878135451922795988849598254728291758287502106821824087659416080748965531405499996724445891430082979576703850096639678636794922506285155391588806206928448526341466114843854283393669765890283228877956402962436773554333563717156629799730908813503594256399515627082873627357605539317540378662464882531088496601792801386905042848137887684946585218204978618637137155874776991534896607952340409538520048739802200729362431857492188265622726617627915184141976559109686488968552234550260037922161164161558018935677158507802267867236497654861967416110422402237209726425616569610701479132143501952648072326898106286905838339559610057054873344188667780574779078778098529500814580741173422715902939995352189886614505414916041037763989155670042474210852029984326879400138526167004517688912030017833802667865870700793271681186736710817623567794035029475870186202292772005905497968552356175072986922282280912462852882981591538174980020194449101418340041202943745735166944501387321132368659998795323789177325686415885045029185385969025099745247817914430990140139433578639497600777910081595880076038616132678631638771779985468040327424221970306070564161201396100287913237841666800546727170541888602383388148899709924890307547773557962070960546527934083696447575318996778746460388609489739748544494095956207962477180497073234050868251602976490345775173231500159353030722853630671071588452755223022159707340047562987971555768890347417395405709307354812519360952051259899886561866404280181561483672563136677980273302965087258048130554488504927931413078590710849970304341083114158564234730954763556556069105952884577030243048750726450505644405635008340472173784996951161113445516533345692454072398717012760992399279414437543712182914238076362485569744952809925756392886191297865417111039400613932271100537948767695090716345122698612291209884966145557190031559370329872993708024864725141569472234577060293862824097409000802990573180670711710870505817001550876487882907319282522859301019019227929214135688373882157069867440112691679637062424486709388151175194280135189373972511918912702556830245700498114274340742315807537902813575220988384549748257273405632190777979024551329419848686107777799381566909078106951374107257352280803014738066109428352384906851007871916628052868004832155400257116067211497298255361988725728051326073549479700480976500057979057642194587433402978191762479005849299436119697095490996524369156161089337875231247192737124446594805055595939893198405279382930372345377748112048741743673118070978657921242390544026789492581674096480292543611980953382818498818705493054457288167802505413246321496450222591098868052902339319360153212758700659068769332697587094650804291897075072939764854395683441401543708332176844766015371988192637912469715823413184117801825101611508596269010047974520145501062641641824454780184864510089957600199232918020182803087934651714722009218282895550377946429156593817395761907830993100780516344093800741425772026187065917292028942063777659337806942775076801333704112558104744138632333045831515066310857076910838136932792009519122379711498993254600260804538695955732296529773062100583785743043051954645831379143239481186675489742454992217057728263201279739053235323730812498805879946625419068399242534046283656091507910823180340383017970564178629004352172830363781208107603367421798599402319221147221797085673936474878420145894214326868435449924645593250381918236083962939444981052794600643888372245914789962592781263860511857509051148270935812092599946858972877255468133694823089962500298912986218671056577391800592562302831973182212676501423868071270002237628153959563506560402890619748723753480770227913630533883105926059852887673627887367810266813907906293553534151109738654885736801378225144177671774451369484454828165404147226121553199457802726417376674046261823159823319279201199677124869339151636660807908341341685485784691619828423484787512680490507233655004168206763063553298851149294961264528771125694737110392940629178333687868747573852668265380624826450146505717328423390062006500670218413500766648029839308347212820325049654459209755705859475753456458720078263818533855056051669758979425123188165559290719718023869329030363255366535244588604982471870172860440124459091872976856319160385628491152572760884526646110734680342750093286499060427326419854987194573201226108812894824779890228334646111852175600190117121534094253794410128400938135013139216309588492375070719522441166856840107744375215848786902709565664224111064261203061348237917201614414511559704392805743513421787490925147540800564366976276592575582572240662030777674150029389669802888113090556469318800133275925565623843115937614645094373555948945466242101228524271459523602649138413059735987581371754907576169782557673555578499440865234182440431412314563845922183148656749235794309277241944498575246857333732159683945976788674228122038934566846779789682383594243143714988047586110247152786425157095133855545590157593813285300503058705438724156299950825193748003520719736386124777575074891957794755586696783287904325547376382695966698771718196012906393126557425549219831080877250416475807244703871488578531310129630829788358225905491668581745741594865271192884575571266240325333415878273698434226296781324989021274663206820719759026079034296250598496158508472990072568352366872517377648964875348421071538751457023659216166743372661949564927491154451937665345764962045634299786167808036700582051768558994788467878683657571226029343939220369737083853316746568907567695059311490590544613791423683366247636145402608726911255122511508535021709395726096797986786844580631938018846066580000226915632054351261590337788271870104034535723628684219929416862374110572174597462003329146793368764297668934803904092796854631084186925989430558890509046185892221759112441366724508212939901775822184260812115549221208241374598703102003536132907956356853784323925547325713093885870708232118205176963068152020981943667615030848487551592752108849685089748707516586362300315893090210485639097401760478535900490742462485944708561734967902859272199834606343475547866834385036742950130774718825811215915313693540526736737471585338654718462979317266153318233444936374587596114170810924987607576119325997873503750949340875293931492627416163700178710307472679515910335641416784910109594151166527237980494122998416790062874689450144742025409343774849232035389930335802697128830032281814109975176690816043307690521886174798521743864705008630691713833820977040065055582010901652565033941231084045371256855467740520131517683167178271830062114158443279355413478513922120229508381760414335511263521239428776787220705991673791977623746283064477711537042154582550675392366876809479890412500713243682262815009223254682300178649151965572729797585412736144908747765770083060887202950877496758551164879686984086426202514224348708908971700019144195535927391513470543806082747978019581154858592089434860306888072384555837780295874536116514834486606813279694378626290842773056130757617768998137972363485689524265711583720207829307766796564107179685610938350158520208478721693490656288016015995533796678510764090058584207918674580939939598540847972979588021600314938937916820368426342647576638698455656616360703433860585365888958569333856783960160914867105887920976681846011557348611405855303024895708744364487025052046958133722265058509406049509031893938169762250288247452991322693894596677139462690762933945881205247534578591305409246944038232317189148917001423568910175188594337438740112979388057477077406729451512912472362507567574525310130572269182870255257056983825767805547122516816357478060529904167607279323473128759866214557224126248272214828820759072279037560444956219345594609034188742876513765992767541335758793933966748831630986538334134254966487111132073122470914509461872719832515710746750949865311791225461662959850487803529645697043718136009982915189175336771782164451539008221040128622906846368016246661317141895577742990487221537243986639877870770237449449442379187482712740406010257569005737055187607492550463540138847679675208058614898523478638681136775234645482077509489377683648425454874901047144573763161576583203534688581382980670762260513287437017794178084315165913487266956009126438804386670130467555595653046847191461686895193451405448474383214580896048505710583305938268448666317212211387548860465372041283984066813360254775579677610112701635076992850536332872874653036593827108897244549897156209759918924006315446340965694862989740556732566177375502462401608838395106063506524020871817735925841764702616760440084577780716090103910032655263381110717833738666552487800475408233311285499732184506029987191792654471239222514264507003463145082746956068371734117588951939445990645786692952060981480759276209059661304154400294503438024663325703049387675024044681156048781324466461452286439870733488532271255531175989046157408959624212841697765137329924582627656731935378487928787880530482295642538046075076381328394924975874467113053010842800225761476654298027283185165081234697839383861345528179898369858144733231922739752951864135108267277489581846230526745067977217282188436155347557601632776975408638056529357325623850824390558332933123158118922319418891798939021549061700797114828625147564926967550478468633148894551759626314395625209445605841046075060600482542007769734264968486259016518395289595627927724217513668226023027736015981844405801852031495279021576518395696328165639039173711909273800616596931095044391091796941360114223077669683003154091446419342326061706992312144966703982869129163016885097483279833153815988154947815964853951068664337238657840576281404552088605477529752616859859264777830647383360132030408092550755526594279464747077947866594189856187750758956873738098873269402753843218871626178942649464512895498394210220548456842648666366482586739267842185481786793105857596186334953016668577258273362382798796011314276043764688216837961186983303700132384261653358691653383012231953581760578669961098642784400802818301268910379768179535959789701948823244776603265375087410887054424342102814526538934607372156812916764520476404135876970094520716164535380020438823396323238925729554332633581740003158678895205092770546297685299537708331016709756422359402344645816800892479945908431662613736557057457479046216105005167382917266662750272956730726679673108524608797304190661721578692131933655470300127442657941527341091137394820888455684959755871245398001984742607501216598360515380412635216359818852681744878393558046132548884153493539667289778049649475788972857418798096361886550983405324211133538123781897791515946264988597912689955472580935861998814431746978336609462237788579783901902708230229694289787377971945419940969008038758236558322435310872564137055829139488614568346481557917648728141772413174469584128147385857166913691272608827844318905525746965221214959520045134785377177374502066054216644838680123108146065384229587271375412322565368932579102477213196634285558056747079524261437555578084668377143232749482042839596355026302005903385182597910057965848141802674966084927879815760192866574552111708067785910093815648993759316757828475984955745590471506132753849570282509846186582999581366940279837944153276870600770906211744983406552359400936616048987887144717000145079817459044885743413704834713619078192064358845103612827091949944874983448623387196271669907118895558089356739335325421883403856632800103587264226582913999628660375648794461927367884074012938271539172406747744347103025090734388255830814060748791416057584828975124159551489143982907771234578754999554976061909785053362370809882277070645123528711254139413241677541647978414971130286136449181953738143363085146510049841385135051234280167387035776097483553090920294390625198284158638714784815095625570597632377771987087329906960840468704750122930424057294774698930594899512781758355006638593422288433815551243235328897215378406612525416015965209120080756668269108574118048519621909511678227973309308323685039086182877233443149271239828849756901283787713161124434132073259906418118530875271976607728437200392897122599030325407661051388534657212775269654706595813802693508320584198415984183103137911542954121614160114851391931316448014548776301741846887762116898887190481473977540318899658201049088229689066162564036140060684725359886087328364428894317085484190824901288707852181457540827913688486562928654608525906529629202129133871502006201977799477957399649230016295368142185627970485110486707128943621586692200537173353848176218220498519690966009070301568547751070475966647015963261933828159024496036832445831999706865333522602568408294959844093732408817425661730704539998169737822732768965578419366562780233708869225079150089412406128991183992073399978077533726886130825658820875157509499635011660525729300603181430456848728310016006880663644521917617777608425486989841938419357442056870941752739389804116460734689898664226791511306906356496820578526644702159309345176153073196958647765805455786796653150021839661539575934247510169697451412905425675906458736543617854702487407691502727043557881427683308042925714508097999110957206740752091320078369322932695123967872546945647272984403391331848733258080982649369451483165169297837382270684949579268031821477328009932392233117102444728550925441228122428488687417357185489459250667173642022917334702229275464684275069505745878202872820505906555961914945506449712955560313209632577480950491689339881990316859451729104000365420025013942188628235613331199231917620189219654997768599453839584105818734670909308535820456862590044568628578990727005632575280652207962209037430564123074833264066511114432466406192843144388304133835784636665175302303517495640833806068353624552273858354827025656593329227442854658058342986490226857614157067002456058545671578536627378800491451044114505228124822758629811025116368069632590828997500068266294652548354714692467681409010070333934618508304902648101640087483860689215946803675982178089613764822449181059734705063037910871098644195177657516309869805975815640673508260844468165304666248108731690273802325580697815615988795161686817700567153834930958358758711414377635039651697841430644314723280432520075739081875741371849793111771221519228028198141209201586204025798541271855068400793412351553149276863541467941400587117085647137964500611160697700841194059295902815828094355798249993079350689091854206641674884912621976056116662479868379162472331757545129540174814574372475059885735454116824781568461213474076034154305364599275581737494035197489193653076470252648708520722702195926882833605302726541427464108302685320049027609135159108722676823367698233627171070748209591837778609166779491117527629961085943949330239761919012367722025110442876197965393053065477107337927326244721320165791042498964975598535612390873471101473467733382981919856711284343982202481821953156359102983135669394515792573668194937589485575684759172473780035005247869379449991387300529943476627165802265918031544691633327469202515927456720708827528145398430502171979562196963813371842615749460915321581723144799887851170430173865024892383844329963834465991302850787650483907117268320594081761426877522905224221681341945315581926138834932525094151865542623386376672215609369149858439999373993712844701603799853758026291267135766322755347591091637862306297092907871168029947325541672541746684555474555607422385458386730278175233258653396553771367413037440897463060388705815019086239604668530611550132846207621549825226132946883794245579999741489458543409201431749746301402687143063795644387479732072407610207040129267379917631917990398988268352622336465649339327138797678438645619782536735306001084937430791280435647686397055390200107519481933758752763217074602872232441341965227694331008789224543313354220314223370984651564560313846487572843935838690665957778822118630508843589064408389157033473643291241916477491535035599854672469518163077344612547127450139642092614149952658127070665720470617426634510608898751993413992167460136648156904061072775964376696934015146680867557416648379090482428609878536783367189606982698405540119041139891298859432243065835774392858892080428325911671279037273462980615895311476437739128077535348029454932736336617675145319642763248558740998132918426174848303381470944251621950649758816703738171530091110149363190755768265746400957826738483738330783315970068445284935788145550908978599571587774054139146379372824955094742849418598384064615820820231297610568717228502147763018552548565434833221298699876532887055682321195630125564867536968286687005865090240855599804598502669025189507201317154231278743598941984171077154319818229812174264144914922121444617530926574366434548479658277392319930789720906781353979893639313273024904894968150794105561285194319310539077667925141412936140305058887661276664430554715321901403613104885127791849384961548877168936515042131488655045404987184000151196784241100808540530026385200477984585952370647745407443486029693212682408939708790220024661499762437543529925992123365824230910466643061410662109181648014574364325867654616291188341550276853560604444019563392784837878843618266745609952198638179608031049910221330240824243249565467131857790242501183944013004651421091925477419727221771895786246794077841867047279639168063446446350316195692656126701861493292579615982986861870534558945043878320237368992927568338561756017977688237302921512303291421443340484990688883062684685234226156782559802437431749000878570384676099496119566334881417920656933015520071379877738388775971932806840776080326441672401721650610204453814452772798052284915473725025914422562952034428090724848304837999941009498191950276541823821417182731568459772599681044367878260890076071099537189433530339856089652763925746738808514282701941366092984560926608044411796454888437654996179639144319162493973567313504355934970936638081789314314205181949974383771418598440558512914520255817259861681056322723552558966794428552703244128305348890325513153885620432195148716325870623937215029214849759074508871308157260520879891574777067606961321668218069659447955104043392607441242903820270557643555883299834916377494293730813433245570109588106535734576556232768791110113823134600585483980780459654123328993588699145360992235949148573592395643137201870891285537559659954956709183693214729414060963861253938507436687802183054653350904119857489159511068354193275254513229547995140461761373627617247160297068461157715249036335481255627849856624532021298165668910824931386855920658997507161728292097136322942313033910920388513255578440661337447549690256381511832378361539194720095701016190565232206995680713845813264363187832191980731927622920736127452764661878606618125595394502583084781357436080492404537963922945243150028990128324830056545539170360525074865684442638681379783520527505919020718597135825092165943917333374394725387253854880356847888280377644329616056390836863277751112167365349932163475357258648306377301342374342118837528549668421191027852804952475537519496693176593124482838955431298050588152886943785245128841982065070035040235018833212526994741952042175296922738003375750072679119143546313658496176268405160419839121347465777518099277798891702418531748478578426803468797590183077837749306984450268395356907299887170174621968514823134585082830269088570322796158033683976527798405736476649003214423178658193378475741802789258605697446881532305367639263118356482122869620869074532308076559621551434069320427781873824049562149511422369709575996469384359382861370825699733652840501283064240389981295128679496518401950589579628776869173938705017090417904394766608897158885309782420841541106338938248500382732907126047047165845488889928502508958893597510149185335876119296343554053411066307970238188402893675134764532670743551290473238843737035906513407035891211753377411532897856890833583474576229168567714348411781831839424858338202571007050994478371368342773673225756636316436626326744001396102838703719526924700017893743146416732695465484144592738232687549937514753930209470220816353859693847086953428159527052786601408700149083558149739096713204532083648287387184211590439302807331748500750336187148126584994879734484382083281527507376051919723754352511492030781935919078906634017853510347037571906429093959987228110554036362917528823907538534755303702049924533322727516674080746095680240794306424742632862054134006648763158419040134736640796634162781085910210528061215521853021005012022172990619808061071255622800878728396814997512184716260885438880814811517078319127033136904111105176886098514009391020287745748675379306945782326109173344081417594226824333249913299168669030835304008552478138035664483359749810794203603630365797230567308141571907639010018210726339824655744700080920591755109143053365456906221747965729070987276157063455761267268718068428216334630080289472567411642054800444257925205108153567003204202366453864212799288802396203256745914510021858484066594949273491548826403489952349722095079744905865061593784013311981531908756636143665659212989915495178059558008403309797117766236990458597337762626478294550397960108886751218795186533227637938511948291962232246504415450857869060343332015842882499732819785911111500160447178075321472769578445221638828278987887254867105102089272148293177867213098901146804904881353106669453634046434286002902161101766965457496482527655634586012398914453234887815153807352485767347468368375133415470620262498738748333283924271335375844404710410368610051706478206989864633726325795469089920989831579360828363961986926808552451331946574258039851408663409925971957035188265169799240966952479472590933042862246428116017996492701044096065422156019895442757829289704718660390427270921707834289566324916673876211734160564659319850658400402502100124323312714416215387697543988783907370990491392725203906061867829220055639352751879074572445804696902638609097636438075182625225121981911782588771605635002295627668556305231520432259743207189421695996789799432969530048274153948028197887813378425276356065023490311245290053995499212953976483645741282767837655686673777538011093085243669514697409194643625330815725209283100601150088745330292409526679286892815555327465000979869973103074672424222803633327059263345829584079966356988983800982397335007545495060315952873605424122161704425985021515088062071615698942658644923280413783556545222280433764032182040141451011786955135575306250415527557230300005606637158545845058204342020175801048693280475147333713571805298596558917317917006294073042026558959444881556502746929778174507086097933052803286408851330280858352679084929107514044501459582763110745793482570440143699371823633831765556212599458395645352137436675998812666214881229600063597736968368101677089710781940235051932767573453046746498496985857019960131767039558568542978473059069631601766172944293009785892130568470476442621366069367042323742966993875142781543241332849744088377964673003559420798422850712974466440571910550933547882046991457692714211038544154544300185804078752325144304545637607141415225953330006278994732108342853969366873006735694342566375536792001861013794331401648078098980621894530512757640730079399023425986019126613202750526483579985806274351286185043418080644928254601073303435377620818063019430154686631329979238742782899040953669886610652082792141088130326476123588015124444890519782897835306450480900656492831563499251344007701743182612085672365495508866129829804782444719191898462754517753269777203043928235609191565272434964170157922057888655434194561264411750045998601030552386900629951283269755893940525061526269106843294554268332880758914091362231975425513465017113267088150449808078068988138891983032207639250423018184264349108739737101250516619275279310764621177919204923976746818852745855022970137563686912758793702416167317018437603681892020532586835468755845620601431345298406209404142841149834472745176483810892665273556926054338680241890035239562103423841048368128543470250021865429116967448278224695957474234382103136777910360015203925386883154786752235104787967719136097285227009852810388490217975382548033895443125640742244262845367039949885361939451751072812238519568055488858603839477183518522094524705190225162887420257097362488114807191189399044444644726432175165708079037174397359033107584907142141362536614924198327559759672689301268089730181728642857950125280856854849434885588986360818811952797906220226984338999728811887433714394186858520240232856102716030093196285355394210758803767221678801815324581231676319313650651510409777588424765521318083108195658975335089093202882368839723703951729040013380761544578315686430973110041355505431860263611763642521514602726080744349308684997451360819646405071980259825634591149464897549518262647519195640142338664285897584931310044303490334926470427939644469956073662500066716873248641543831479677835574706335877875289781768908017493153282259177636946965840922290707205178363253465569326201441768121971562617493965446801035838560898334231713377316159500713243067897549101708455015647758180206713899432186259942536800665980942236589631880251918470817923953911184671619168997338276177547920716469923287828745744414048577553306135665673337951267802325597448357432913771171405018247204023332030933933609208365154315998127888240573217930812549075584186467451712209812218443279871077805338460750209181604334099466538532234320154661322172961397573471901885789606759817891539638942062997010207666429317550050780088038150988911615945495791090347776809453090577007690308866062501168826883462932316915577549281913480611679763047933675522080723554084612450490982451353462150496784930226107941299554902008327177878805995161061840140537844103960547372052985506860253376826128362179319927808909635791187936011589737953325533016388308190640492140099412428870921850192005074070159919867195759817210515047657257090602140367863506486287623852029585132183664444199088754571602685882445340222995885290241409061248819979467029304067511744995700508239571976882206166989265205843615207708122555384270915641877733322966218531416869450479974861771181210185396820415310156295971089257660486555883612136022417156758270649418545615425539443347610603870822625458021012969890461911594201055707757131837312848909284449496511804254365368875581271734497746011243426433952484349070288722537236768972139128821752796631650972704083476246321130454403052365620867525829478989506653976360001308063793528708125114708908943318282657091410639702217197588232360267908366012967490150985196519026171834111403195047236254297485137630233211690034127278667645650417847896052506563876136230929113032949544656998829722985515950724556649922121290194706081702580459649503410602498192499323471855007929155794408673770895166076798687936206201318400882656559469484465923369646664277867640172286117103801709537770011985202701088568095970232903667687793884126359380578360848874593482131293085566856593625501855534204586107975555489603032856843451120171173201550568212984518005591784763620433922076978848898925004840139356406365356424722118185513598202965330446702047999070573753310168814350079467519484217657926025108334669728396166585168898945000981592039932471064522248020792372233305295380787020130116363982216907360868953555703826132311392989095305274327516958486473357031504602739573315778751197146587354356490691520723010926681977537268639606261968345534799120169740411058747421257513640124400358930553745948384084392499751707388633165648606617939007835281233230711795703024034345501300921439830842344595209145404793397387008997203764087129710076509051306808246260874908525673530557471682972107362005917975832145393755153735655474861877630825561478064187752086705289977810928340843359945393964987775062505398479166337804919179499783172479319346793500233989241423934687937700720134851285576929949497073784901063040322932991801741301312106362432458181385646230231540102337842579165322231025356149764130317084519851186378105192376694354200555229013440968341671956924045109150563627885872832770477064948623969225145314461037326005531491977314460604804151597928160027262760898871164741852152886454487865868959037891697173668785362233119809620580886758678990538333922781860414288924083455232230410824069275118058987389672080443874393167264806454474637017051975208972522930260085571059107202745084833584295431605203569783210931111134065513776296722532625827468615761228135816465124554286762343655495001482386191492810991198424358198606792188251864217612369942431069141802220366175177574982990092617023539185800941257783429555646585039437725192586944953722592479606795209192529138839821307162055493148071151690915896304290597371951073178260417026513398603268432159706369844056690303045820268605819171858224081370121627999265382376326051640850220434488185509504703349016859455183728726906940022330186363561152968959628723435042292283492653935519971488806166261860413590098821090344645561536501851805336627475805783663412358577240653406326368103781135861169505699492335930901426069238406487463594956357540708447611680059269529058464152789473022350676939244880902580621983514174950602530604275369942853001837903093031400960520604684909454891319230034223534558336730877962425656619775827202729499857732158552303284564004543739910550421151875259742113479363992845409165657373324581743516251747811922022160284430296255799382115275714819166400947828810821558314071196740007529496888084514088230395893678151042763987547934467977585329655680001482438520897114003200674375899776879547363600897617852210784704259372297829575397628957364413944045904087952104829502631332813089317435764504535532437184267693591389995280930497701347256057931813123619595480749870068608426686067925972399767463217209103533183880820451412429853178918901254208976260701749432110048979980111515395515934675466860107648944965467510233143377826341344521470645327004705424847193195144661869228832928236752947592029783304452428232705019976764709142188435985798734230135012286267872528108392928066891738461481591929588030342766375934370884609703804383639722590491080652629794900152208168700621723076775253862650375998610595578012776932264178781987843712116113148707697137287466307515393953357294316239296141640579732724658880302631202973121547337879984810834184282755844490603783851877618469041922279647062043083135764870450865078927282449792665907129532399933284905716589567895014358387790501688416110537788720704986044157398497473135843096931787492539837586977290228412307695818366612542870858107545778832070954592427593252834377935627921516172019938787070538920853939995660116409954815079147377588910607503899236402109203364027644141267742302051855471100001.01714067292 
Posted 9 months ago

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

So we have the following.

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


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

Out[24]= {0.070776,-0.684}


This gives some improvement on timings, as shown below.

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


82.296875

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


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

I will follow up on this soon.

## EDIT

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

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

MaxRecursion guide

     max digits M.R.

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


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

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


and

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

Posted 9 months ago
 Although the MKB constant is slow to converge, I did discover the following fast integral formula for it.
Posted 8 months ago
Posted 8 months ago
 Since the MKB constant comes from an oscillating integral, I thought about naming the convergent M2.
Posted 8 months ago
 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].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.nbThat includes a check of 100K digits, its time computed by the new version of the miraculous algorithm. See "I computed and confirmed 100,000 digits of the MKB constant" above for where the 100K digits were first computed and confirmed the first time.
Posted 8 months ago
Posted 7 months ago