#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define N 2000
#define BUFF10 20000
#define BIT 31
#define MASK 0x7fffffff
#define SIGN(x) (((x) >> (BIT - 1)) ? 1 : 0)
typedef unsigned int uintN[N];
void shift_div(int *mod, uintN q)
{
int cy, i;
cy = 0;
for (i = 0; i < N; i++) {
q[i] = q[i] << 1;
if (cy)
q[i] = q[i] | 0x01;
cy = (q[i] >> BIT);
q[i] = q[i] & MASK;
}
*mod = *mod << 1;
if (cy)
*mod = *mod | 0x01;
}
void copy_uintN(uintN a, uintN b)
{
int i;
for (i = 0; i < N; i++)
a[i] = b[i];
}
void clear_uintN(uintN n)
{
int i;
for (i = 0; i < N; i++)
n[i] = 0;
}
void output2(uintN n)
{
int i;
unsigned int j;
for (i = N - 1; i >= 0; --i) {
for (j = 0x8000; j > 0; j = (j >> 1)) {
putchar((n[i] & j) ? '1' : '0');
}
putchar(' ');
}
putchar('\n');
}
void div10(uintN n, uintN q, int *mod)
{
int i;
copy_uintN(q, n);
*mod = 0;
for (i = 0; i < N * BIT; i++) {
shift_div(mod, q);
if (*mod >= 10) {
q[0] = q[0] | 0x01;
*mod = *mod - 10;
}
}
}
int iszero_uintN(uintN n)
{
int i;
for (i = 0; i < N; i++)
if (n[i] != 0)
return 0;
return 1;
}
void add_uintN(uintN c, uintN a, uintN b)
{
int i, cy;
unsigned int s;
cy = 0;
for (i = 0; i < N; i++) {
s = a[i] + b[i] + cy;
cy = ((s >> BIT) > 0) ? 1 : 0;
c[i] = s & MASK;
}
}
void sub_uintN(uintN c, uintN a, uintN b)
{
int i, br;
unsigned int s;
br = 0;
for (i = 0; i < N; i++) {
s = a[i] - b[i] - br;
br = ((s >> BIT ) > 0) ? 1 : 0;
c[i] = s & MASK;
}
}
void output10(uintN m)
{
int mod10[BUFF10];
uintN q, n;
int i, mod;
copy_uintN(n, m);
for(i = 0;;) {
div10(n, q, &mod);
if (iszero_uintN(q) && mod == 0)
break;
mod10[i++] = mod;
copy_uintN(n, q);
}
i--;
if (i < 0) {
/* printf("0\n"); */
putchar('0');
return;
}
for (;i >= 0; --i)
putchar('0' + mod10[i]);
/* putchar('\n'); */
}
void mul10(uintN n)
{
int i;
uintN tmp1;
copy_uintN(tmp1, n);
for (i = 0; i < 9; i++) {
add_uintN(tmp1, tmp1, n);
}
copy_uintN(n, tmp1);
}
void input10(uintN n, char *p)
{
uintN tmp2;
clear_uintN(n);
for (;*p != '\0'; p++) {
clear_uintN(tmp2);
tmp2[0] = *p - '0';
mul10(n);
add_uintN(n, n, tmp2);
}
}
int shift_mul(uintN n)
{
int cy, i;
cy = 0;
for (i = 0; i < N; i++) {
n[i] = n[i] << 1;
if (cy)
n[i] = n[i] | 0x01;
cy = (n[i] >> BIT);
n[i] = n[i] & MASK;
}
return cy;
}
#if 0
void mul_uintN(uintN p, uintN a, uintN b)
{
uintN s;
int i, cy;
clear_uintN(p);
clear_uintN(s);
for (i = 0; i < N * BIT; i++) {
cy = shift_mul(b);
if (cy)
add_uintN(s, p, a);
if (i < N * BIT - 1)
shift_mul(s);
copy_uintN(p, s);
}
}
#endif
int shift_mul2(uintN n)
{
int cy1, cy2, i;
for (i = N - 1; n[i] == 0; --i)
;
cy1 = cy2 = 0;
for (; i >= 0; --i) {
if (n[i] & 1) cy1 = 1; else cy1 = 0;
if (cy2)
n[i] = n[i] | (MASK + 1);
n[i] = n[i] >> 1;
cy2 = cy1;
}
return cy2;
}
void mul_uintN(uintN p, uintN a, uintN b) {
uintN s;
int i, cy;
clear_uintN(p);
clear_uintN(s);
for (i = N * BIT; i > 0; i--) {
if(iszero_uintN(b))
goto shift;
if(shift_mul2(b)) {
add_uintN(s, a, s);
}
cy = shift_mul2(s);
if (cy)
p[N - 1] = p[N - 1] | (MASK + 1);
shift_mul2(p);
}
return;
shift:
while (i > 0) {
cy = shift_mul2(s);
if (cy)
p[N - 1] = p[N - 1] | (MASK + 1);
shift_mul2(p);
--i;
}
return;
}
int greater_uintN(uintN a, uintN b)
{
uintN x, y;
int cy1, cy2, i;
copy_uintN(x, a);
copy_uintN(y, b);
i = 0;
for(;;) {
i++;
if (i >= BIT * N)
break;
cy1 = shift_mul(x);
cy2 = shift_mul(y);
if (cy1 > cy2)
return 1;
if (cy1 < cy2)
return -1;
}
return 0;
}
void div_uintN(uintN q, uintN a, uintN b)
{
int i, cy;
uintN mod, x;
copy_uintN(x, a);
clear_uintN(mod);
for (i = 0; i < N * BIT; i++) {
cy = shift_mul(x);
if (cy)
mod[0] = mod[0] | 0x01;
if (greater_uintN(mod, b) >= 0) {
x[0] = x[0] | 0x01;
sub_uintN(mod, mod, b);
}
shift_mul(mod);
}
copy_uintN(q, x);
}
/*---------------------------------------------------------*/
#define M 5000
int main(int argc, char *argv[]) {
uintN p, x, t;
int n;
clear_uintN(p);
p[0] = 1;
for (n = 1; n <= M; n++) {
/* clear_uintN(x); */
x[0] = n;
mul_uintN(t, p, x);
copy_uintN(p, t);
printf("%d\n", n);
}
output10(p);
return 0;
}
/* end */
/*
42285779266055435222010642002335844053907866746266467488497824021813580527081082
00690899047871706387537084746657300685445878486066683812736337210893772787631279
39036305846216064390447898698223987192970889621161265296832177550039924219683703
14690726447287878979040475488416221522667192841096923691044956597173635294840022
38403811206448202308576711045023061748947554283097617817240408053248099278093287
84055486199364548291211876258248802189173977900050213212598043639244626460770511
35884659510867547058583392465522558903547443598834738317898803463300845863151020
90915099356538200109330479657425567419309170551728052002360750859911976352287559
07902043369743123506916831211924495971556267407521462198986233088625998302859864
85757874944596311528697088671004626842364817898990545469086139161321834417414880
71862344481148312094903611965468727677556178868287202691048140924564103418359756
04276458161513178575901661071782544156980883359372729995603371371200471049437656
29114248860533529949964230069997220491812010081905943914067505326500477553385089
90979451015510914869070044071195723360262433681323302187092876991968066565697527
90422258267841561083376425781032629202687211070274681394351128601502326190649959
17189736417637843649121970910984094451489535895910380417694195665783482207174910
55127526391483811720526048269651626427100949193933326610301043605304591170145572
09584714353721948246686793467375904872268133410207860903657108806376616249749507
41310707740168218058594552644517140927746923006269751134604417456794673582878226
16295842486751573791729427241787831054298582451175755118845065744248275746608002
38588378492396247368761507015767725898321128632295537044902516387925127590841791
74464046691353104734798446499615459554201399631735747630174003679619291994219076
28954456562617670417995381611333873128235115341525813090879158836383516647972259
12944270653557142511737323807232632958121797916679692329687096923901003255574789
05509980748706104723064619598495523965761220867386651417169930755769189790267515
73420758647963453384468350859654907273263219105040642897130962245051620646694680
98869917122127404504020684923266241760132910227866687270305284709452526825496617
77249964520669983692591069089408263740104349837159112645582228060636139411534431
67717699343536642849282944364147696158819936613882555774877099370045947539078451
49034434521174560594039916268444697661821387470705325559577933196460996662145377
56493547416970856238921477322286550718249043001618614219276045230767062114296176
72747041236161072200097437586474927536651495321647808490751463300710166913134206
62882562618283865836983632108760710427516073348347788414796732427080410860761841
28188830711509898213533840661065214708704687476099542747367350945155359976904036
73533855510525716826503176824057439934148623923319814325791821933218989404508650
13610998098383993110996355981328001049731588596312131853801205046787642910669365
60043730563343198487904899852470129330078934453286815667976288049553284638602013
34802652798369463933849956750499937078147465615434389304313842378789818478028860
09971088695632988347711863122382785963653115132377931373647397429369411499028751
97222799954518261548829895115192668211245135531847220999043535594988729992203506
20398160110863762365397821723802378466506736245106350344231873153383082120438047
10999419227821039747552717416043890169723961305549371844836119803565896062025009
09366439936017200738361335440509432907247651890950250772467584198941222465939216
31163520381473624795285397320893095334219106357028055766297201565565107677808059
33453631121829561792887673002802450932122778852968418208261778476955644980385691
27578737267804095915871173397110316523267806079812760924617350412018266687426280
53852758439791676090077433807484207511851191029219603393762809867536650852128692
55321536787932521882574101866137054328973735862725370178558806639851350386944039
60492825882018041917807364969388580259775839889201438974716546597351085260570623
44020696370656601295357340435829614734272758056308395106673753492596595185756469
39723218275780003250593895303820539697558870511543073920827422440516299708739599
76846120624662909811236801257989128480250509402891695976507939543719131137931442
74051355996303756422145272943417972461875979640742391478389935415658347161568584
99036773056611353833367087548900413091981676330749041510337597307246885839246941
71554829573075061850588158195952899266022562690343957331345066697295211523066869
62279209477799743365744726734714089280714112838880826933773780772931041107675136
39476200610858040596019639058015761002337463869352228385801434957178125581445862
93004247940406573685986200791460459025541392995008804471038475899032654809733816
69405000854527237135713949024638203086685418028383175276680642784895610057558599
91718966786449154063570014497194249878920859731254275567514575206399118150736397
48310249079384172565342189427676911659815343008463708776951029541513655173467505
40152397060425717460010899684404988459854779779050316325684891565572310064997264
98721480800181770357701502983008879487243887718884416833034708723239505377642232
94409577321913758237167392470421672300225688313577923039468890066246618253265849
07244067670249395796972174674855629981831496656117439976804820941662574638796603
05171274925119226367615337524381656217330771650129520988754856467131862602387619
96433486796151440832890206108283318089122132585368285646991600795210516696045169
54306142123057430068772174071554732179575770175959676405638127291538675136987123
95570542350999228605975469962186195531354132139126436676900465429996811680550737
86677066598802706297250200188284588614534436877145536130441446561336909286274827
69819468364805509529686817587148599729730823329240947770852752799233048927196333
14751563311192746150389219290616780607901383451137066300684376267199885515143681
26613731991210323546978675642121062489900555356402292434583126423103836341678171
99083541404117177401859506066741983481433454442471914368282256543800478603905759
22417071802670646875454211626958746795398540784464654140381751149965273621123540
88016699028014903322513946083266817093071386882654997737428612778941778475268132
83718187591036421408817832207398080597142032853097214430418454591830028334087057
83138284973283761286182927136745161897366207237396132790944984014154408304074405
39306754076712618254759713084347031138981569536597178856402275067423740032362185
00947652675219419012413874782798834264708736168124853844440127725210500722793158
53096279121131160167772077952572613800240684421885453537121341902236379684012385
25528860718996772569422743332394859507557083906187745015965218441499815547610754
80080541923184369481917326314306035483997907833072676367290909807728273558543480
32260067472537097785464567761181807367424367391769863758072145859791485033700592
99496379336910028344455808983805401763540373713301931129308095828761210738037480
06602697678428883582657374865567858688220151430462496559957603797686853181923658
06469199584071845493606922169776137542662239658644989770921478134709127917460871
63022082198143465424506573126268308957903101289336078864410723018480540037313601
42162291591469920198841482900144143128009031021078333050902384357267794161772468
73411503598700003151092815700331081727415624680432977205070450456683898626301702
98930114536447741685673251233037647788174903605257260552068437061611653975513254
13693038677832672082273236642492064323630892687688266509396918616832717397574795
52993242406186992420363781929485368098035256331092448215269276219116259145886393
67703465348036788712613336711696822645091499705544852125975187008472002567465875
24039320610459030700394382520193831024809290196846024721712983216282379946271253
66359971898374425099120673688383738299653892030662843074547559074235345274029211
60609134632768474952204601040957560734815510167720318758008922449475292203109384
16615888235849939317451499143955573576415841854798317024285239654510875254254647
77294595230360946416541997797947136806344915998772409176443137371178542210740572
12116686869215324049008038420592119262287544089826147890812369895636708080468762
85244998974408556779694569090423405303559435246407516778739531139286986143472275
72144946891896093294375476741234907792754338349412323060078767610089949156126934
03892114837021719338761782337035892581711286956345000136761989714540098664346192
21976769759300105552251989130021230217808319343308804465929545521659118559392025
79781122952065357362914478404946474565003115498072056580360667380889572746464375
42805581932229930508928780687453740132710027442831792535500345153669317211208822
76039428097886457273069799712856495769343540040307284405817466483766584980399589
64243370183454151720285337810904113124462432903353964296651109482836884580127588
70129315609922504451812546011327498601447043775731388100131927612467611661483352
89355575031060184497889943782746138546517082416131676814639118700008128451443414
06739985430072772303758111613511094355614896323929750846383152930263582535361784
83755851966694997225193551595380720783861514213028445005179523976096843319829259
89216232235823963902625488568558754581983715590084478600867459457091181287932282
22051767509371866110013193625845223493949829511199280837860523506412769337548130
60959426446342507760114733420913912854162818317226214378306296240814939199718752
81063673488766784816023427432300271581924041876865458265193619906873368928867151
33840245486110982482004482721799496658712257174429044916781194824165631560303473
83331766512121805278079595822029833061194516401941331555037966298021535768073112
45305859159697099739880557435500832790718449597523535946443547896803721263445094
23070253995102864458237454677761013556916212309752286152053213998745673034127676
50336963668230666555205156249113252892615586386850310084918092050768065826591527
61637199286942583506048597322739492860802606406275213410078018151056237879262120
39424781833439433877206395801115809084190794320195178235740190546595990289617711
77619527035405119372722972224844208044009875036941127768659302213301062503186208
51450764210529805088371979860525577503039496061584428388468661375109684415673098
38079394349570013029265177957120625555851951313574029897589283475525334409858911
40069444930843287400501555433258779389508024112853875872594513640083832494447134
64368261481954060041148458702340729266977406313258786347906676982661815012561176
92275715291249164821702372884416357600996851100939411444677628186007072278522314
94104856439625579680822128993579926220855388922116476522085036770647649149613378
93537615373915691778222377448376141202533426225080073005134734227714273331063459
71803240244226950458090539326689103619381998838844036231795282435495362489670734
15594806768851532107306447607785962862785228365724456430644909627751717265695423
83929419584095272532816595725345314283896298940058865394868241171139296273569389
73482935854650278689437014798383826002058208853517073216288725214522205265969614
96214788484012900450773725242460507433966081818296029601919631412499853842201769
51103613805617010163577435425311486693699941309409083682200719364351119785927824
93491477052187226546109199597269439152400467901173602521030051886080337084840114
81024635128826398617008180488838075020352144834874084915471871447885780957451549
95050050707894288428884100278777774559811323199406241765321486863165817367744100
84063436959989519288310869124517866342559353458242589411390516469440377562665821
57784593682990967975454835051047363377083915103385463960275348640163520463388434
23467149356414291608568467248742447820551137591682364722977936129710803025309344
78115527737540458968990354808058309381267323593563098546564376209385371052808344
60718907600338878161801985327375949856691670470344843836350341636832526640322417
45194766781404283193274828518821403443193844454754567652534196591943321325854322
70070759038565239668227171300009189122050845185261514627937717597528852978637931
71121252952944332375791007290900170355876379861248028146309394439191695012933631
50452851635393128685864274372961094461012356048774398632996118997559659966087490
49271167685268675335991297583209089553296409523640116060078495005377892783750147
34412212377790772713414664740448983758948767542329454689935422034166996136669897
65299785807958990558640503885070831373330768397668824636809923552197272418317351
27646189112380485883115569477888101759708977682149644340317924443085170303692214
13762119438864198950836033930645903736184293702871075832196660754611376107636254
39286143162428907540210822336200123093847373122203742690338385799286785729394341
68287053763374091938184632261131740934278117918891642447513543478446040549455379
83455616335381586844169205451869891943417538666390033575676560326436376790672162
66203308784255451572081172463812515126698466858872090131448616325604610195133718
14585249988176629925142145014710206193190373671380347663431029705222414785030188
27510634744624125870793733908509575772431673506688509420876153616444044375586016
06258370913005741620652736709418886679645705507447247141370019681652159543806985
15999483361357521322106131884771926641942395351412233546746461491743013475866037
33817653260455740292547227936028892618938589969565687678301718687398876388762597
27439760628132634466476794136797261849333950746658204416779898066042039371166663
36696282569349097348391155869004856032512219241534268522369316036765491047702733
52154014316833887296840544329696768403607318243533622486543382359812354416751460
83407811666618587817339806241992545778534626780390399375578027599429572052810437
75666979396838109341118959475766220191217535093638985465283078692370662512323684
39023558763622832465716118371407880766116217951788797280184157201963908440026903
74503811927971703144898718150313199921115639083030172880126106420620053592402782
77393918026391717720136125984776933980647063763022608885359937595079088789081791
80219576803338196860512048710761087489841156874015995302063909813899326109553886
82640840121608310405259745392515764037328890867369483664047346227085600408916107
82221943405179794550155347682966855320097501905581419914591124181501062255627411
23157137735869719437413082202738384381594063857138791333759236233044045348723304
72406687841333330478989952552214688479738135680839956445330052225513201552677688
95412770329278670827490041172076663112783638152343547681663121189086864991380236
28177527594606121181334205479180161922034691276038190052801234397359827046149981
45113246181956585282320446582700820649346802515565112728220838115631922565099452
01222666603226059396247019707668580396286975551115189973049085051758765306785758
00066042406689417062030384678586025737063435259958688508867965400446518779020894
29351532173167501137380314660346424294890763222281337632999196413365020286272892
68087560036613770607463575515079087982099722660130472907825746908175451952405573
79131311317061732319159867397158837310816891696865770415069551294765238613481576
69675803647620052890602227445317443054984028630488508695577615286503260809411606
88570698894762046478500884303973107412774191961697450517110329082815201273888663
42263149214709022001694063650481204703601673860229067162981641119820226860796132
47395500575675645682047546190404230110623713673959956789408847059768595145050172
41517746017351430990972615509378334720000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
from wolfram/alpha
422857792660554352220106420023358440539078667462664674884978240218135805270810820069089904787170638753708474665730068544587848606668381273633721089377278763127939036305846216064390447898698223987192970889621161265296832177550039924219683703146907264472878789790404754884162215226671928410969236910449565971736352948400223840381120644820230857671104502306174894755428309761781724040805324809927809328784055486199364548291211876258248802189173977900050213212598043639244626460770511358846595108675470585833924655225589035474435988347383178988034633008458631510209091509935653820010933047965742556741930917055172805200236075085991197635228755907902043369743123506916831211924495971556267407521462198986233088625998302859864857578749445963115286970886710046268423648178989905454690861391613218344174148807186234448114831209490361196546872767755617886828720269104814092456410341835975604276458161513178575901661071782544156980883359372729995603371371200471049437656291142488605335299499642300699972204918120100819059439140675053265004775533850899097945101551091486907004407119572336026243368132330218709287699196806656569752790422258267841561083376425781032629202687211070274681394351128601502326190649959171897364176378436491219709109840944514895358959103804176941956657834822071749105512752639148381172052604826965162642710094919393332661030104360530459117014557209584714353721948246686793467375904872268133410207860903657108806376616249749507413107077401682180585945526445171409277469230062697511346044174567946735828782261629584248675157379172942724178783105429858245117575511884506574424827574660800238588378492396247368761507015767725898321128632295537044902516387925127590841791744640466913531047347984464996154595542013996317357476301740036796192919942190762895445656261767041799538161133387312823511534152581309087915883638351664797225912944270653557142511737323807232632958121797916679692329687096923901003255574789055099807487061047230646195984955239657612208673866514171699307557691897902675157342075864796345338446835085965490727326321910504064289713096224505162064669468098869917122127404504020684923266241760132910227866687270305284709452526825496617772499645206699836925910690894082637401043498371591126455822280606361394115344316771769934353664284928294436414769615881993661388255577487709937004594753907845149034434521174560594039916268444697661821387470705325559577933196460996662145377564935474169708562389214773222865507182490430016186142192760452307670621142961767274704123616107220009743758647492753665149532164780849075146330071016691313420662882562618283865836983632108760710427516073348347788414796732427080410860761841281888307115098982135338406610652147087046874760995427473673509451553599769040367353385551052571682650317682405743993414862392331981432579182193321898940450865013610998098383993110996355981328001049731588596312131853801205046787642910669365600437305633431984879048998524701293300789344532868156679762880495532846386020133480265279836946393384995675049993707814746561543438930431384237878981847802886009971088695632988347711863122382785963653115132377931373647397429369411499028751972227999545182615488298951151926682112451355318472209990435355949887299922035062039816011086376236539782172380237846650673624510635034423187315338308212043804710999419227821039747552717416043890169723961305549371844836119803565896062025009093664399360172007383613354405094329072476518909502507724675841989412224659392163116352038147362479528539732089309533421910635702805576629720156556510767780805933453631121829561792887673002802450932122778852968418208261778476955644980385691275787372678040959158711733971103165232678060798127609246173504120182666874262805385275843979167609007743380748420751185119102921960339376280986753665085212869255321536787932521882574101866137054328973735862725370178558806639851350386944039604928258820180419178073649693885802597758398892014389747165465973510852605706234402069637065660129535734043582961473427275805630839510667375349259659518575646939723218275780003250593895303820539697558870511543073920827422440516299708739599768461206246629098112368012579891284802505094028916959765079395437191311379314427405135599630375642214527294341797246187597964074239147838993541565834716156858499036773056611353833367087548900413091981676330749041510337597307246885839246941715548295730750618505881581959528992660225626903439573313450666972952115230668696227920947779974336574472673471408928071411283888082693377378077293104110767513639476200610858040596019639058015761002337463869352228385801434957178125581445862930042479404065736859862007914604590255413929950088044710384758990326548097338166940500085452723713571394902463820308668541802838317527668064278489561005755859991718966786449154063570014497194249878920859731254275567514575206399118150736397483102490793841725653421894276769116598153430084637087769510295415136551734675054015239706042571746001089968440498845985477977905031632568489156557231006499726498721480800181770357701502983008879487243887718884416833034708723239505377642232944095773219137582371673924704216723002256883135779230394688900662466182532658490724406767024939579697217467485562998183149665611743997680482094166257463879660305171274925119226367615337524381656217330771650129520988754856467131862602387619964334867961514408328902061082833180891221325853682856469916007952105166960451695430614212305743006877217407155473217957577017595967640563812729153867513698712395570542350999228605975469962186195531354132139126436676900465429996811680550737866770665988027062972502001882845886145344368771455361304414465613369092862748276981946836480550952968681758714859972973082332924094777085275279923304892719633314751563311192746150389219290616780607901383451137066300684376267199885515143681266137319912103235469786756421210624899005553564022924345831264231038363416781719908354140411717740185950606674198348143345444247191436828225654380047860390575922417071802670646875454211626958746795398540784464654140381751149965273621123540880166990280149033225139460832668170930713868826549977374286127789417784752681328371818759103642140881783220739808059714203285309721443041845459183002833408705783138284973283761286182927136745161897366207237396132790944984014154408304074405393067540767126182547597130843470311389815695365971788564022750674237400323621850094765267521941901241387478279883426470873616812485384444012772521050072279315853096279121131160167772077952572613800240684421885453537121341902236379684012385255288607189967725694227433323948595075570839061877450159652184414998155476107548008054192318436948191732631430603548399790783307267636729090980772827355854348032260067472537097785464567761181807367424367391769863758072145859791485033700592994963793369100283444558089838054017635403737133019311293080958287612107380374800660269767842888358265737486556785868822015143046249655995760379768685318192365806469199584071845493606922169776137542662239658644989770921478134709127917460871630220821981434654245065731262683089579031012893360788644107230184805400373136014216229159146992019884148290014414312800903102107833305090238435726779416177246873411503598700003151092815700331081727415624680432977205070450456683898626301702989301145364477416856732512330376477881749036052572605520684370616116539755132541369303867783267208227323664249206432363089268768826650939691861683271739757479552993242406186992420363781929485368098035256331092448215269276219116259145886393677034653480367887126133367116968226450914997055448521259751870084720025674658752403932061045903070039438252019383102480929019684602472171298321628237994627125366359971898374425099120673688383738299653892030662843074547559074235345274029211606091346327684749522046010409575607348155101677203187580089224494752922031093841661588823584993931745149914395557357641584185479831702428523965451087525425464777294595230360946416541997797947136806344915998772409176443137371178542210740572121166868692153240490080384205921192622875440898261478908123698956367080804687628524499897440855677969456909042340530355943524640751677873953113928698614347227572144946891896093294375476741234907792754338349412323060078767610089949156126934038921148370217193387617823370358925817112869563450001367619897145400986643461922197676975930010555225198913002123021780831934330880446592954552165911855939202579781122952065357362914478404946474565003115498072056580360667380889572746464375428055819322299305089287806874537401327100274428317925355003451536693172112088227603942809788645727306979971285649576934354004030728440581746648376658498039958964243370183454151720285337810904113124462432903353964296651109482836884580127588701293156099225044518125460113274986014470437757313881001319276124676116614833528935557503106018449788994378274613854651708241613167681463911870000812845144341406739985430072772303758111613511094355614896323929750846383152930263582535361784837558519666949972251935515953807207838615142130284450051795239760968433198292598921623223582396390262548856855875458198371559008447860086745945709118128793228222051767509371866110013193625845223493949829511199280837860523506412769337548130609594264463425077601147334209139128541628183172262143783062962408149391997187528106367348876678481602342743230027158192404187686545826519361990687336892886715133840245486110982482004482721799496658712257174429044916781194824165631560303473833317665121218052780795958220298330611945164019413315550379662980215357680731124530585915969709973988055743550083279071844959752353594644354789680372126344509423070253995102864458237454677761013556916212309752286152053213998745673034127676503369636682306665552051562491132528926155863868503100849180920507680658265915276163719928694258350604859732273949286080260640627521341007801815105623787926212039424781833439433877206395801115809084190794320195178235740190546595990289617711776195270354051193727229722248442080440098750369411277686593022133010625031862085145076421052980508837197986052557750303949606158442838846866137510968441567309838079394349570013029265177957120625555851951313574029897589283475525334409858911400694449308432874005015554332587793895080241128538758725945136400838324944471346436826148195406004114845870234072926697740631325878634790667698266181501256117692275715291249164821702372884416357600996851100939411444677628186007072278522314941048564396255796808221289935799262208553889221164765220850367706476491496133789353761537391569177822237744837614120253342622508007300513473422771427333106345971803240244226950458090539326689103619381998838844036231795282435495362489670734155948067688515321073064476077859628627852283657244564306449096277517172656954238392941958409527253281659572534531428389629894005886539486824117113929627356938973482935854650278689437014798383826002058208853517073216288725214522205265969614962147884840129004507737252424605074339660818182960296019196314124998538422017695110361380561701016357743542531148669369994130940908368220071936435111978592782493491477052187226546109199597269439152400467901173602521030051886080337084840114810246351288263986170081804888380750203521448348740849154718714478857809574515499505005070789428842888410027877777455981132319940624176532148686316581736774410084063436959989519288310869124517866342559353458242589411390516469440377562665821577845936829909679754548350510473633770839151033854639602753486401635204633884342346714935641429160856846724874244782055113759168236472297793612971080302530934478115527737540458968990354808058309381267323593563098546564376209385371052808344607189076003388781618019853273759498566916704703448438363503416368325266403224174519476678140428319327482851882140344319384445475456765253419659194332132585432270070759038565239668227171300009189122050845185261514627937717597528852978637931711212529529443323757910072909001703558763798612480281463093944391916950129336315045285163539312868586427437296109446101235604877439863299611899755965996608749049271167685268675335991297583209089553296409523640116060078495005377892783750147344122123777907727134146647404489837589487675423294546899354220341669961366698976529978580795899055864050388507083137333076839766882463680992355219727241831735127646189112380485883115569477888101759708977682149644340317924443085170303692214137621194388641989508360339306459037361842937028710758321966607546113761076362543928614316242890754021082233620012309384737312220374269033838579928678572939434168287053763374091938184632261131740934278117918891642447513543478446040549455379834556163353815868441692054518698919434175386663900335756765603264363767906721626620330878425545157208117246381251512669846685887209013144861632560461019513371814585249988176629925142145014710206193190373671380347663431029705222414785030188275106347446241258707937339085095757724316735066885094208761536164440443755860160625837091300574162065273670941888667964570550744724714137001968165215954380698515999483361357521322106131884771926641942395351412233546746461491743013475866037338176532604557402925472279360288926189385899695656876783017186873988763887625972743976062813263446647679413679726184933395074665820441677989806604203937116666336696282569349097348391155869004856032512219241534268522369316036765491047702733521540143168338872968405443296967684036073182435336224865433823598123544167514608340781166661858781733980624199254577853462678039039937557802759942957205281043775666979396838109341118959475766220191217535093638985465283078692370662512323684390235587636228324657161183714078807661162179517887972801841572019639084400269037450381192797170314489871815031319992111563908303017288012610642062005359240278277393918026391717720136125984776933980647063763022608885359937595079088789081791802195768033381968605120487107610874898411568740159953020639098138993261095538868264084012160831040525974539251576403732889086736948366404734622708560040891610782221943405179794550155347682966855320097501905581419914591124181501062255627411231571377358697194374130822027383843815940638571387913337592362330440453487233047240668784133333047898995255221468847973813568083995644533005222551320155267768895412770329278670827490041172076663112783638152343547681663121189086864991380236281775275946061211813342054791801619220346912760381900528012343973598270461499814511324618195658528232044658270082064934680251556511272822083811563192256509945201222666603226059396247019707668580396286975551115189973049085051758765306785758000660424066894170620303846785860257370634352599586885088679654004465187790208942935153217316750113738031466034642429489076322228133763299919641336502028627289268087560036613770607463575515079087982099722660130472907825746908175451952405573791313113170617323191598673971588373108168916968657704150695512947652386134815766967580364762005289060222744531744305498402863048850869557761528650326080941160688570698894762046478500884303973107412774191961697450517110329082815201273888663422631492147090220016940636504812047036016738602290671629816411198202268607961324739550057567564568204754619040423011062371367395995678940884705976859514505017241517746017351430990972615509378334720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
*/