diff options
Diffstat (limited to 'tests/mp_valid.dat')
-rw-r--r-- | tests/mp_valid.dat | 5468 |
1 files changed, 5468 insertions, 0 deletions
diff --git a/tests/mp_valid.dat b/tests/mp_valid.dat new file mode 100644 index 000000000..1b45bf9bb --- /dev/null +++ b/tests/mp_valid.dat @@ -0,0 +1,5468 @@ +# BigInt validation file + +# These are all in decimal, mostly to help make sure the I/O and decimal +# conversion stuff is working. We test the hex conversion in the PK tests +# anyway... + +# Some of the numbers have very simple binary representations (such as +# 2^256-2^192-1) while others are chosen 'randomly', mostly by me hitting +# random keys into 'bc'. Some where also machine generated with a strong PRNG. + +[Addition] +0:0:0 +0:1:1 +1:0:1 +1:1:2 +1:-1:0 + +5:-0:5 +-5:-0:-5 +-0:5:5 + +255:1:256 + +65535:1:65536 + +4294967295:1:4294967296 + +18446744073709551615:1:18446744073709551616 + +124536363637272472:124536363637272472:249072727274544944 + +9223372036854775807:281474976710655:9223653511831486462 + +9223372036854775807:137438953471:9223372174293729278 + +# Carry tests +340282366920938463463374607431768211455:\ +340282366920938463463374607431768211455:\ +680564733841876926926749214863536422910 + +340282366920938463463374607431768211455:\ +340282366920938463463374607431768211450:\ +680564733841876926926749214863536422905 + +11579208923731619542357098500868790785326998466564056403945758400791\ +3129639935:\ +11579208923731619542357098500868790785326998466564056403945758400791\ +3129639935:\ +23158417847463239084714197001737581570653996933128112807891516801582\ +6259279870 + +11579208923731619542357098500868790785326998466564056403945758400791\ +3129639935:\ +11579208923731619542357098500868790785326998466564056403945758400791\ +3129639919:\ +23158417847463239084714197001737581570653996933128112807891516801582\ +6259279854 + +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:\ +18446744073709551616:\ +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194658\ +8393177722715635711 + +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:1:\ +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084096 + +-397942700139194066108348269604271467697661897648384734165029652\ +9192053560111268857919862747528477749805933030612876334500852832\ +5994574657552726381901:\ +-342238655038:\ +-397942700139194066108348269604271467697661897648384734165029652\ +9192053560111268857919862747528477749805933030612876334500852832\ +5994574657894965036939 + +2511029185349894083125189792298767815734633609329237357694542628\ +9097725034326735312448621015537884914:\ +-365510811543986457345339657399796975273732516080550566276869562\ +81114038842935173436543461:\ +2511029185346238975009749927725314419160635639576500032533737123\ +2470038078045621273605685842101341453 + +27802650352:\ +660736146705288303126411072388564329913778942:\ +660736146705288303126411072388564357716429294 + +-134824589995504186480095446370988146623149603821668360871542456\ +6397833766910915722793041224478985289:\ +1151714952286618235856515264359526625702022859705853911311473221\ +8008332987904361457299261161227276764386173666571334749062651694\ +592291882972:\ +1151714952286618235856515264359526625701888035115858407124993126\ +3544623106438129961261044477618561339819775832804423833339858653\ +367812897683 + +-175405304416816169628682516351336019150390262549968865836182439\ +14226325157426408929602625346567256761818:\ +8652004279835272452069018101603566414024194616420826231795446815\ +19016990:\ +-175405304416816169628682516351327367146110427277516796818080835\ +57584922737964766846979445801885737744828 + +1288447760742982615563987140969486034581770182750513292185554983\ +74:\ +4438163138291508763620522351346106032205489281076979612299536118\ +73695276391917150913346479060246759720475193648:\ +4438163138291508763620522351346106032205489282365427373042518734\ +30093990488865754371523497335298088939030692022 + +1709484189262457846620911889502097055085989595277300243221975568\ +275935717696463:\ +-1646592344139809206374540620411514484579951199941360:\ +1709484189262457846620911887855504710946180388902759622810461083\ +695984517755103 + +3201758654296371761657093415761871025401806278064180152049287711\ +7023353895132395250905592913967322327352806288308303059519915387\ +7335714942842:\ +-282824169696073608987996588238668793593857085654548122761949764\ +0844399275054327390050478930503975773972:\ +3201758654296371761657093415761871025373523861094572791150488052\ +8784685101538538165251044791205372563268366360802870320514867494\ +6831739168870 + +-403539836054218172590829531210749614210541501474425943996337720\ +4111754181625695349185753326709217:\ +85450213703789913646546187382091037800:\ +-403539836054218172590829531210749614210541501474425943996329175\ +3898050391712048802998371235671417 + +-129216644607347987680152236338235788743165763918415128477552538\ +7363973852756087726243671676713861533673009088319851:\ +8045388958745181755374994252823750582362455317985903504033438417\ +6695557207064326714194569562489510933024274993575473943439469171\ +4971:\ +8045388958745181742453329792088951814347231684162324629716862025\ +8280428729511787977797184286880738308657107322189320576138560339\ +5120 + +-451986588700926309459451756852005697379481014956007968529234251\ +884946522682901215022086432597024324062240835564200177389:\ +15762983479:\ +-451986588700926309459451756852005697379481014956007968529234251\ +884946522682901215022086432597024324062240835548437193910 + +-390747541211572881697456702205527837411679402562428747433403883\ +1885743634200801846649105209920908153587891040882946582394429615\ +396962188674594744360388466:\ +1938936112365378546948796774781062371570792073982831173929981754\ +54362643521031390:\ +-390747541211572881697456702205527837411679402562428747433403883\ +1885743634006908235412567355226028476109784803725867374996146498\ +003964013220232100839357076 + +-72603710637966201224690926289:\ +-136184426422985332615812550349236126405125071507280171067688615\ +06299813289801666559564532:\ +-136184426422985332615812550349236126405125071507280171067689341\ +10010451256002891250490821 + +5607796083571305683140294840679074710788944676935750975947220760\ +3483968107693997028111823994257399379783658853302692762256851623\ +103019589392739:\ +-427057313888431079237360487703561848638868677065083968842:\ +5607796083571305683140294840679074710788944676935750975947220760\ +3483968107693997028111396936943510948704421492814989200408212754\ +425954505423897 + +-220980083850850444349478376253480033771210140515678470878219758\ +0824527899758308:\ +4284407650303949586450021392583759850781770841835415277411207859\ +6443089606598570396235816327987463393971710495985285591895096794\ +994387176281079:\ +4284407650303949586450021392583759850781770841835415277411207859\ +4233288768090065952741032565452663056259609090828500883112899214\ +169859276522771 + +3388776730880982684241784117615223232127223178833840452685901937\ +0507113927387984766381329515371768224976188337692:\ +349484339542971517481628970179002500341:\ +3388776730880982684241784117615223232127223178833840452685901937\ +0507113927737469105924301032853397195155190838033 + +8574808963985866072258732162153629808269070752641242695163010155\ +1228144063151688592419555048867068162:\ +-383634567691961960211191292397062452265352651123492760493087381\ +707279:\ +8574808963985866072258732162153591444812301556445221576033770448\ +8775878710500565099659061961485360883 + +23889807888563742283608049816129153552608399262924421832404872043475:\ +995:\ +23889807888563742283608049816129153552608399262924421832404872044470 + +-654786925833474864669230962582694222611472680701859262466465606\ +239654996048306783957549697781271829257774329538985:\ +-276137507159648540503039013089014674747:\ +-654786925833474864669230962582694222611472680701859262466465606\ +239654996048582921464709346321774868270863344213732 + +50463316268089933:\ +-140591583463431806921000349498135287589005423318927850947894242\ +9953101385694731575213124136524392343244191305277028999171613076\ +57443381774866237429:\ +-140591583463431806921000349498135287589005423318927850947894242\ +9953101385694731575213124136524392343244191305277028999171613076\ +57392918458598147496 + +1339015021665554488163337105187026760232395594198925052890859936\ +418304234254229440059229155546157793544192:\ +6294037420283433712414743361937677483761554699961644450461297486\ +2247932788230044871756877711635975905661325925915992499702811257\ +81761944353272:\ +6294037420283433712414743361937677485100569721627198938624634591\ +4118200390554000813746128240544575269844368268458286900295102813\ +27919737897464 + +-241446683:\ +-282671163032866994488211995758272717472259277760825940523445628\ +442206062910449311538519756165635175664610569214430918184214:\ +-282671163032866994488211995758272717472259277760825940523445628\ +442206062910449311538519756165635175664610569214431159630897 + +2358605503303452637996081421902056515951744611718383128442445119\ +505739707550326378912342448355046239066896995563581:\ +-383043722914532516527336452555126144064884579194968166126094695\ +6860463720730123941973615:\ +2358605503303452637996081418071619286806419446445018602891183678\ +856893915600644717651395491494582518336773053589966 + +1860794367587960058388097846258490:\ +-237344494507203983863096991896035366478949095337787603280:\ +-237344494507203983863095131101667778518890707239941344790 + +-286399096802321907543674770412181810379003627366516307780436082\ +546:\ +6433131620680089024037442172197761714707480582555136398379812339\ +597187475099646442833150194:\ +6433131620680089024037441885798664912385573038880365986198001960\ +593560108583338662397067648 + +1811803390771023695595378175836278947833228041818597295747524425\ +7214680056902377349016498752054120312533829578576324428322456925\ +9250011493:\ +-119912766577350317025030707802803587547945939765717835695952624\ +5067549497129923023348187933280753018204983010837846725666878521\ +137637491:\ +1799812114113288663892875105055998589078433447842025512177929163\ +2707925107189385046681679958726045010713331277492539755755769073\ +8112374002 + +-641402013955555338114086428916201846520512758110759261762820321\ +4491558550345077676836677565241902214951203461131114985869530775\ +0874152:\ +174441039:\ +-641402013955555338114086428916201846520512758110759261762820321\ +4491558550345077676836677565241902214951203461131114985869530757\ +6433113 + +1272757944308835857208037878018507337530557445422230495561634616\ +5037244198775127175123602392596401935136013522028214622088960493\ +31599624285621:\ +7326562354017884140300121264633612334070903165496641915889499701\ +38457507491850467631029977010:\ +1272757944308835857208037878018507337530557445422963151797036404\ +9177544320039760787457673295761898577051903021729599197163878997\ +99230654262631 + +-296171972628230:\ +-829576609912184321900082369936222286517382010256973151771639172\ +7126741710202086962877467940292139:\ +-829576609912184321900082369936222286517382010256973151771639172\ +7126741710202086963173639912920369 + +7469859140681995100248436821088394448284142227691915206159676323\ +62127522466922882591:\ +-20487191102299831461877807785745372724903547246374023:\ +7469859140681995100248436821088189576373119229377296428081818869\ +89402618919676508568 + +-4:\ +-234439009075326480604323496098115161312227136676259000693031887\ +6906455201397017135:\ +-234439009075326480604323496098115161312227136676259000693031887\ +6906455201397017139 + +-448761802739957373377693318750581411296787367117499463888322757\ +67882143882764:\ +20982187786:\ +-448761802739957373377693318750581411296787367117499463888322757\ +67861161694978 + +-601944008264824351134005823298148744369561537910415436895793990\ +7896782179207195666302228625496897271988494:\ +5325663024991554160033166078015937845836527207540797603647364222\ +91735917382015688217276924340984564880:\ +-601890751634574435592405491637368584991103172638340028919757517\ +1474490443289813650614011348572556287423614 + +-737554715636160268477263493571675308338509596629210590529282292\ +3781472871944886871927821129478599825311797681268315326408823018\ +2865250970217610487:\ +-30100016097092378349958946184353117306134810372681:\ +-737554715636160268477263493571675308338509596629210590529282292\ +3781472871944886871927821129478602835313407390506150322303441453\ +5982557105027983168 + +-221117706668970434568685275663894630667495895204444708028536428\ +3965878599873864667094550865713828159912:\ +-536556043937245689200756579876160678199726920153847573681478030\ +0517383963455858081652308237033460360040921820049494698892905680\ +307378540208:\ +-536556043937245689200756579876160678420844626822818008250163305\ +7156330270130817033696755317318824644006800419923359365987456546\ +021206700120 + +6074122512337108841968521649035076841633691574254417104144285970\ +8190687151580370231498672521465704184848502349798380642493738161\ +63440:\ +301843614094506325875637699:\ +6074122512337108841968521649035076841633691574254417104144285970\ +8190687151580370231498672521465704184848505368234521587556996918\ +01139 + +-518214776931158149908771340564348982010543985108065053479219152\ +7346598920424997741288096547136515478330872068932567407374262007\ +15673766732196603988:\ +-298351725577476937261155258873861370046745453114225573456588840\ +38760353928226157702249175218280718951979:\ +-518214776931158149908771340564348982010544014943237611226912878\ +8501857794286367788033549661362088934919712456536106689635839029\ +64848985012915555967 + +15937412249227240968245047444122:\ +1862146803761694261088224507009788278865690534402542585855766455\ +30381613666540347032550716844628275956253:\ +1862146803761694261088224507009788278865690534402542585855766455\ +30381613682477759281777957812873323400375 + +-125280101162586858550475042529281076239231054587017617079119695\ +27003855713485846140551107967495813584097081777160:\ +-539986280927242338236008809854961759996986302156061552378097160\ +849129372827386927545686899193598721998757419572890:\ +-552514291043501024091056314107889867620909407614763314086009130\ +376133228540872773686238007161094535582854501350050 + +-2454746908:\ +-382295712788939478005524215636037018707559207865555237605060467\ +9934415014573879513870030211860839641756441626913419699098985245\ +833920954444218:\ +-382295712788939478005524215636037018707559207865555237605060467\ +9934415014573879513870030211860839641756441626913419699098985245\ +833923409191126 + +-54288706131860071583318409080596095357980447323635:\ +-425339410556015631098973742993327323051438456819027069606294261\ +157940297643297240559452124432779202181589763874:\ +-425339410556015631098973742993327323051438456819027069606294315\ +446646429503368823877861205028874560162037087509 + +1418766894051319870818496026367686195459604395660119754151922014\ +257535705077512233275240217434104:\ +-111987390206074845527:\ +1418766894051319870818496026367686195459604395660119754151922014\ +257535705077400245885034142588577 + +-690410131860410477456103857594543515409677479242833618634809302\ +4529626004763532868225501682312348541164651530788457447229874477\ +19420052500874721214723:\ +-258469037743394674731135699243278836145549479106673938483740960\ +9897387109736539600623155880918146331681272708396146283818299:\ +-690410131860410477456103860179233892843624226554190611067597663\ +9084573915430926716599597781286219638530047537020016256411337794\ +00692760897021005033022 + +-2326153002179462643778624079324592172489363679671158:\ +-109819757548464054181938329012610459679:\ +-2326153002179572463536172543378774110818376290130837 + +-442875225056652548835385770919494174299378557880791141401695920\ +6453045495320705299466107784149485981354180907411034982168391:\ +-392477782593742153255217680053880075265812358324465405897205608\ +55741992694947322437679214611686905696:\ +-442875225056652548835389695697320111720911110057591680202448578\ +7688877941861295020026963526142180928676618586625646669074087 + +3047:\ +-735645878503131535237769321637196107334337768903902046180401737\ +9719600010085607082927794304834315616579528230750813527764131521\ +4:\ +-735645878503131535237769321637196107334337768903902046180401737\ +9719600010085607082927794304834315616579528230750813527764131216\ +7 + +-89094716573076464980713547115099137014719483620102078148320806773871\ +083148864:\ +89094716573076464980713547115099137014719483620102078148320806773871\ +083148864:0 + +-89094716573076464980713547115099137014719483620102078148320806773871\ +083148864:\ +-89094716573076464980713547115099137014719483620102078148320806773871\ +083148864:\ +-17818943314615292996142709423019827402943896724020415629664161354774\ +2166297728 + +7139718976538104911036273126224339498939049952371944598728684359\ +8407339615555456955143712741779487184644001767776382991377987516\ +772847242986:\ +-5821969555717973232123574849275726788359152255219972775831:\ +7139718976538104911036273126224339498939049952371944598728684359\ +8407339615555456949321743186061513952520426918500656203018835261\ +552874467155 + +-181409752656613138777964092635909379021826360390960647186726991\ +165227400176766831466541160049935205507919070233410228328274:\ +-523301382154855044703947051892202646490840761177533623732372519\ +6899184207698424247726764075013505280967149049152973476842478027\ +73107355881667545916901:\ +-523301382154855044703947052073612399147453899955497716368281898\ +7117447811608030719594033986665779282734817363818385077341830082\ +81026426115077774245175 + +6858961373707073067:\ +-334051508933893061433844279764271107181974906283364991309903077\ +649971606436918071327072869826471946094594594115614990907:\ +-334051508933893061433844279764271107181974906283364991309903077\ +649971606436918071327072869826471946087735632741907917840 + +-236350989303745694071719069604296168709084242815199446584909401\ +09956689534874971218650241680916564611:\ +-189589178757795228335995891331428279524485393011427187469792714\ +4384667023598274379343968662673642819854164720298367788750543006\ +0922528525205:\ +-189589178757795228335995891331428279524721744000730933163864433\ +5080709985285365221772120657139491913865160389251855285872408030\ +2603445089816 + +[Subtraction] +0:0:0 + +0:1:-1 + +1:-1:2 + +100:-100:200 + +0:-1:1 + +0:4294967296:-4294967296 + +4294967296:-4294967296:8589934592 +4294967295:-4294967295:8589934590 + +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:\ +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:0 + +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:\ +-13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:\ +26815615859885194199148049996411692254958731641184786755447122887443\ +52806014709395360374859633380685538006371637297210170750776562389313\ +9892867298012168190 + +17976931348623159077293051907890247336179769789423065727343008115773\ +26758055009631327084773224075360211201138798713933576587897688144166\ +22492847430639474124377767893424865485276302219601246094119453082952\ +08500576883815068234246288147391311054082723716335051068458629823994\ +7245938479716304835356329624224137215:\ +-17976931348623159077293051907890247336179769789423065727343008115773\ +26758055009631327084773224075360211201138798713933576587897688144166\ +22492847430639474124377767893424865485276302219601246094119453082952\ +08500576883815068234246288147391311054082723716335051068458629823994\ +7245938479716304835356329624224137215:\ +35953862697246318154586103815780494672359539578846131454686016231546\ +53516110019262654169546448150720422402277597427867153175795376288332\ +44985694861278948248755535786849730970552604439202492188238906165904\ +17001153767630136468492576294782622108165447432670102136917259647989\ +4491876959432609670712659248448274430 + +# 2^512 - 1 +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:1:\ +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084094 + +89094716573076464980713547115099137014719483620102078148320806773871\ +083148864:\ +49505213825110728957828173754776257356620450607893971553289366249708\ +672306581:\ +39589502747965736022885373360322879658099033012208106595031440524162\ +410842283 + +65894747009896006767807716946835412110318548717263922395390971078905\ +789585431:\ +38842697419255082259907154168620472841946037999026507486310396086843\ +67281358:\ +62010477267970498541817001529973364826123944917361271646759931470221\ +422304073 + +5950196396451977566902121301707054218364717196893101360011491777\ +7619522537369647091659626133477106071641786829877837558948110242\ +88429224592316636383:\ +8750653273562160761286422180115618621879821429145276197424652349\ +306577311499807887070429373153777028581165316131683348567:\ +5950196396451977566902121292956400944802556435606679179895873155\ +8821308245916885117413102640411332956643707959173543827410339957\ +07263908460633287816 + +9815262808265519920770782360080149146267723690:\ +1406700576889160928136491935811529134135218991825578039756006074\ +8765650205261663193732434161580120817:\ +-140670057688916092813649193581152913413521899182557803877447979\ +40500130284490880833652285015312397127 + +-390149102941948621568479722346940666704376013734485343840154221\ +6058534125031549938788864908670209347775308945934163371753998650\ +65870417717658815158195790:\ +1456031684988128870809574635750149625240648487837308:\ +-390149102941948621568479722346940666704376013734485343840154221\ +6058534125031549938788864908670209347789869262784044660462094397\ +01620567342899463646033098 + +7473774301764883450943:\ +-262563698593678907551573728200523874834027237901855629084919338\ +12453:\ +2625636985936789075515737282005238748340272379765933721025681726\ +3396 + +3624634325121492202413918675700914884929548559339795200323734966\ +0142296147421019916619944353877490544706223768684758263065399016\ +597969:\ +2574427901445527995149185461475228850098549655325125750771680756\ +4031046245695227927925972232181431549249881995623555170649626659\ +54307425375180:\ +-257442786519918474393426343733604209308940080602964015737372875\ +3165754964427226645371577306598198801047497654856131748380204402\ +888908408777211 + +30129746266682790628283889040897642317014108334116727:\ +-158048052389539876256372171547438090363007387136214391586439872\ +4834897608423:\ +1580480523895398762563751845220647586420702155251184813506715738\ +943231725150 + +-4614735863800137951667138933166372061:\ +87175694379075561307234146162193190462135078700346746992273:\ +-87175694379075561307238760898056990600086745839279913364334 + +-3753904:\ +-11269137783745339515071988205310702154422777729974:\ +11269137783745339515071988205310702154422773976070 + +5925239484953794400820212797381700884029188584554700501406527871\ +71830058864932939900794505955437856926902975870288:\ +-205854658295495452479104108497931263758143158076949293929661651\ +111:\ +5925239484953794400820212797381700884029188584556759047989482826\ +24309162973430871164552649113514806220832637521399 + +-33993701617495591491176844355:\ +3438065097398894672826284379125235190693300918673662774192379185\ +002391232383325160416036963599856704698280:\ +-343806509739889467282628437912523519069330091867366277419237918\ +5002391232383359154117654459191347881542635 + +26876428790838270949718735111909136008255051776703:\ +-178112811296681037328619200883114927554699563526876724185996760\ +9117529616872536681035700534316457543887601645022:\ +1781128112966810373286192008831149275546995635268767241859967635\ +993958407710807630754435646225593552142653421725 + +2059771092932179758019770618974659367350250375647433386639519387\ +69317693429941871882153770641334267205446421916220398066553188:\ +3342500267594994347156312297990633112620923791590960237694328174\ +171473763026:\ +2059771092932179758019770618974659367350250375647399961636843437\ +74970537117643881249041149717542676245208727588046226592790162 + +5545520403000578843599072515870982842927227412121917598877293331\ +575380404618111609:\ +5991287327241003718821424770352575362437680738923552868139860461\ +945460339860477495902:\ +-598574180683800313997782569783670437959475351151143095054098316\ +8613884959455859384293 + +248039029608125071340:\ +3664608673:\ +248039029604460462667 + +15425705711415937103627:\ +-143550406551774570344004527686898291075408140547412300376755421\ +1132837427846963435621523810229738262235546179779885824:\ +1435504065517745703440045276868982910754081405474123003767554211\ +132837427846963435621523810229753687941257595716989451 + +5088284720510864560728156892268365268867173823603073291434760082\ +1086:\ +12176160963158:\ +5088284720510864560728156892268365268867173823603073290217143985\ +7928 + +-354265185659858189476700478770330228855421724619735662285097710\ +5341631254320181588119095376220762923216041205830017303882425678\ +3171761132:\ +-486486260736646884318469435312383053458853801109381241820880813\ +5799:\ +-354265185659858189476700478770330228855421724619735662285097710\ +5341630767833920851472211057751327610832987746976216194501183857\ +4363625333 + +-142859621471226831038214482817138481252017914160812187001355640\ +2879770424002218157546599921571184:\ +-4054101:\ +-142859621471226831038214482817138481252017914160812187001355640\ +2879770424002218157546599917517083 + +-200931:\ +-445588024601304957594828329131607177911517867255705194754496076\ +5970517168228311149083493083504573514296684748300915751495017756\ +5952218520297258834187372:\ +4455880246013049575948283291316071779115178672557051947544960765\ +9705171682283111490834930835045735142966847483009157514950177565\ +952218520297258833986441 + +105704314890799915321259:\ +8279235459450764155749124384991698144145630668774941008316577611\ +9049069747385436947778487411878749535140554980332961534712093812\ +3226038208:\ +-827923545945076415574912438499169814414563066877494100831657761\ +1904906974738543694777848741187874953514055498033295096428060473\ +23310716949 + +1448979433940064018828919290452280235308901982649341:\ +303926827425887072291878308433008512899006711759770318009:\ +-303925378446453132227859479513718060618771402857787668668 + +-243237595290235750457450892290434789864:\ +1981770207633427640298127306741732109846753330094746386538370200\ +5126562800253466403934608765512316565811954342319565128573969:\ +-198177020763342764029812730674173210984675333009474638653837020\ +05126562800253466403934852003107606801562411793211855563363833 + +294037338365659932242802023634:\ +4401245995535867764294876849802142926077599828776505639975554254\ +356763769548465:\ +-440124599553586776429487684980214292607759982877621160263718859\ +4424520967524831 + +7303853946195223307036710881687367004566538357189824031021831088\ +365362:\ +119286025999378935715794641163321741:\ +7303853946195223307036710881687366885280512357810888315227189925\ +043621 + +5711673553432872356876026107141104160674262893635054129088049406\ +96550592413192300554016875:\ +15872188842802631759540597:\ +5711673553432872356876026107141104160674262893635054129088049406\ +80678403570389668794476278 + +1002240129784524388754179399598974973256811336031329881209395070\ +412702275169416754240:\ +5942948247886059134314539354042003351647830595287234900671578947\ +7946474753657206800070515207967709079933420746952:\ +-594294824788605913431453935394177933866937815641181696071168145\ +04689663417625876918861120137555006804764003992712 + +1370431648825444838359719050380239722263203134555431526491525074\ +601463042144798545817957389:\ +3473869878:\ +1370431648825444838359719050380239722263203134555431526491525074\ +601463042144798542344087511 + +8548280229254726209:\ +3306612503526990498184932043401689273494314593558214198996828084\ +6973981913056248918:\ +-330661250352699049818493204340168927349431459355821419899682808\ +38425701683801522709 + +-190235588326875064895081507959663321759901299630299289585841701\ +1175963029327693964733408210016910253836443785984639809506517193\ +6899503:\ +2489927112752354534228346876280965340763863196622012469575197689\ +4193103779443050843040771191227522843088079031762445684377195650\ +493065096847292797:\ +-248992711275425689011161562692991615584345982983961148257150068\ +2315168794955481047333404813087485692518824813430081012223704204\ +8588130268784192300 + +-180035357552270638928830562379719669053087020435672292804206122\ +8497437075035917720399302198953687023:\ +-118756682615304660537085387309407764121711064830726245327571774\ +71384128016458332544642788404765469924496127460164:\ +1187566826152866570013301602455148810654730928638209366255282074\ +8456085955229835107567752487045070622297173773141 + +-29861551039945217879:\ +1113473025916855642353456146647542930581669082348409639697282960\ +8778892265003199963808382325823762328728689476247937892128298859\ +34:\ +-111347302591685564235345614664754293058166908234840963969728296\ +0877889226500319996380838232582376232872868947654655340252775103\ +813 + +5655329636567611538382182775649579176587072976497579206763033016\ +55328103665512287797108510139837643506491641987188791892506290:\ +-2188105671531473889939411772533707:\ +5655329636567611538382182775649579176587072976497579206763033016\ +55328103665512287797108510142025749178023115877128203665039997 + +-349535960680522202843083381184496349093812380954435872337802226:\ +-1829600726218222026679938:\ +-349535960680522202843083381184496349091982780228217650311122288\ + +-1:-6726974989587128275:6726974989587128274 + +-107142709838121196902389095205618516687047338619382145236348309\ +762148611647954748824:42484103615491:\ +-107142709838121196902389095205618516687047338619382145236348309\ +762148654132058364315 + +-905466304300857697648396075281161213818488784945743608120275996\ +40018921358040178215575723:\ +-118922408531468986902800063237122125617455464103913195171141030\ +774109638861272017660698580914239435114280434761425243:\ +1189224085314689869028000631465754951873696943390735876430249093\ +92260760366697656848670981274220513756240256545849520 + +-554504466708242712880172641672765736000158843011357818285065757\ +3063241939882570324573086267287272360432363387213743735507218270\ +373633222520429:\ +-151423255459028627628896755237194376177115:\ +-554504466708242712880172641672765736000158843011357818285065757\ +3063241939882570324573086267287272360280940131754715107878321515\ +136438846343314 + +-5247636471953421659649611318164848102069:\ +-4024324110573096565232590473170599175885004:\ +4019076474101143143572940861852434327782935 + +3941289260601504332248485425387937172318645783859022479504017847\ +2832:\ +-503832132195745214503468781543289068482546657912347492184846539\ +3400312:\ +5077734214563467188357172669686770056548653036962065146643505571\ +873144 + +-559794145880092270356836245052087667531874697277996402772042742\ +07843317583292736333912783829528270272642583004969175230274821:\ +-109633110576212669339535976775635762395927171313557427036242111\ +4760163985793453669084013340255712657141281083080320737794421813\ +69365924213118258269679:\ +1096331105762126693395359207962211743867001356299329218274753582\ +8854667077970508970412712618225368242139177439524824425117190872\ +6782919243943027994858 + +-387523538981733893474792162857729999063252864213028668543507370\ +50533204094183249691110:\ +2428819407377764342156426895396654728835493564788997075896393065\ +230009911546390816091652653701035085361:\ +-242881940737776438090878079357004407631470985056199698222167948\ +6532876765897127866624856747884284776471 + +-2784579005241382005249492720344:\ +-164204542616919252351131740123094674:\ +164201758037914010969126490630374330 + +2009488574208715447478080609723750390524012808225058048517328681\ +00:\ +-795957177479360455258269298038670876462147576765875895105714:\ +2009496533780490241082633192416730777232777429700825707276279738\ +14 + +217570540819:\ +1219550835977204209833842821666933073941855304313684768349807483\ +02158718406063500763434561937200696970170700:\ +-121955083597720420983384282166693307394185530431368476834980748\ +302158718406063500763434561937200479399629881 + +2335319252198456765380587281374076367944:\ +-4500271:\ +2335319252198456765380587281374080868215 + +-393694614027544181700073367147249369966344727230221941008713805\ +434207925307052598:\ +-153972676737062409261153899615588515236137907791841623991260363\ +8406802955653131579724891681323455217806580074596028231257978067\ +70:\ +1539726767370624092611538996155885152361379077914479293772328196\ +5898022219816590860252282340511529983964929365416861520049075417\ +2 + +114832549702862263167:\ +1292186490722995955874527641883028787538667360089228102228659716\ +5773569473039953984775959232814911435097412913078625:\ +-129218649072299595587452764188302878753866736008922810222865971\ +65773569473039953984775959232814796602547710050815458 + +6489502346837936889305337487724547956628371915228387374094443896\ +2663621059310651530729834259117675802940765940789328350084947778\ +66083:\ +1099205476533612407829257935144627350486541654788267826664706620\ +630745291371323154513322608446957760026881954001581:\ +6489502346837936888206132011190935548799113980083760023607902241\ +4780942792663585324422381345404444257807539856319750749816128238\ +64502 + +1699911441239587542538013131736629773378508702733583789516405216\ +01077152994474340806917796870911557233689087716056557:\ +-15409167:\ +1699911441239587542538013131736629773378508702733583789516405216\ +01077152994474340806917796870911557233689087731465724 + +[Multiplication] +0:0:0 +0:1:0 +1:0:0 +1:-1:-1 +-1:1:-1 +-1:-1:1 + +-0:5:0 +5:-0:0 +-5:-0:0 +-0:-5:0 + +4294967296:4294967295:18446744069414584320 + +# Tests on sign handling and linear mul +15928512:20395958369873946873946873498674938762987:\ +324877267646037601269025261886125746185503585344 + +-15928512:20395958369873946873946873498674938762987:\ +-324877267646037601269025261886125746185503585344 + +15928512:-20395958369873946873946873498674938762987:\ +-324877267646037601269025261886125746185503585344 + +-15928512:-20395958369873946873946873498674938762987:\ +324877267646037601269025261886125746185503585344 + +20395958369873946873946873498674938762987:15928512:\ +324877267646037601269025261886125746185503585344 + +-20395958369873946873946873498674938762987:15928512:\ +-324877267646037601269025261886125746185503585344 + +20395958369873946873946873498674938762987:-15928512:\ +-324877267646037601269025261886125746185503585344 + +-20395958369873946873946873498674938762987:-15928512:\ +324877267646037601269025261886125746185503585344 + +# Some tests for comba4 +340282366920938463444927863358058067579:\ +340282366920938463463374325956791500548:\ +11579208923731619541729378749232972134965448161202875719419539386122\ +8599533292 + +340282366920938463463374607431768211455:\ +170141183460469231731687303715884105728:\ +57896044618658097711785492504343953926464851149359812787997104700240\ +680714240 + +170141183460469231731687303715884697989:\ +255211775190703847597530955573823923340:\ +43422033463993573283839119378257736288536818090295526758568867574118\ +988163260 + +297747071055821155530452781502797180927:\ +170141183460468022805867689086709264301:\ +50659039041325475543690391927479197318639397862390185708883012434796\ +959187027 + +14601326942920387013816701832353570086:\ +24264364577528921915881695974297771845:\ +35429192025871610141024926748879851702222338457773664017578783702084\ +5028670 + +146013269429203870138167018323535700860:\ +242643645775289219158816959742977718450:\ +35429192025871610141024926748879851702222338457773664017578783702084\ +502867000 + +14601326942920387013816701832353570086:\ +242643645775289219158816959742977718450:\ +35429192025871610141024926748879851702222338457773664017578783702084\ +50286700 + +146013269429203870138167018323535700860:\ +24264364577528921915881695974297771845:\ +35429192025871610141024926748879851702222338457773664017578783702084\ +50286700 + +# This one triggered an internal error in the Karatsuba routines pre-1.5.1 +84464209123861960605955522581978104887597821936897255830387847065955\ +8899906113628751877643450961:\ +98736951733086678034646082696089517704609210537259909243889983275639\ +1381482452634765035178337262:\ +83397385394360978145497699467080869269009479990938738462835142243431\ +68965095514489024855209740810586369398339972616667107927536797156602\ +16305715905081674268833475056324309733116240691616008782 + +# Bunch of random tests +65391683115015322641882045438465620784076516421367563767344998373464\ +211053082289513139:\ +14690551177765498638640685224012137037306962019402563878738998365076\ +1050984890:\ +96063986740135661881270234408778414507112892608292678410994214305223\ +58175678639192181958429173932035325313118014847793404794351246657465\ +400198770681540554545469710 + +1459164589787755339073553407089181299573246969:\ +4955710571301004201072727045590614350659542263:\ +72311973828792724517911747511119452992590495960205135450079047249531\ +44018123225390192150847 + +3793974577745786452436021977649815501504431203:\ +2923303082707524288431115654231878223978230055:\ +11090937578838235312365399492067271746660860774658228109409108903923\ +640884753924587454406165 + +101303541515453867913135264584014138619190734343846977507421629791:\ +36729564208551355196057918758932548366821793131129547653209379728:\ +37208349326455106997710672468998674976019345812041319483326955314975\ +51053692760634209776285429196890853333966465984989349956276848 + +44895767034162990997987303986882660674722497505237491649296190658571\ +47197906588923414435381184370662953551284823547380833018151742197013\ +59303201872276975123159197578062043415450227149917179130060317248184\ +61724742069401359454784533576615919680949125073761586043027941204059\ +690093447093117249681641020785611986:\ +16696330082433130739210985196630214321753266552182432027772967004925\ +52487573743509832387533060375698218277114850491112782115377202073776\ +62825100480410971654051009789510884031202872930809935194297665183801\ +70736075740497155051843194560584923206479837331572253151736065154330\ +02181215131563438851752144164132708:\ +74959454570640520505374182178324326203870806497691482733643463532317\ +75442982425470080130736910895976501997512084030656668411349679742847\ +21690931312000529989464756559726986788294230843854125058213935382088\ +33087270201941766663613578038620398830216648062658181759195126557523\ +37555785758593956590738976578724612143644830770362020115624628734003\ +14793973405636949715493148568894826023486325367366577289710265462268\ +93078189596361078496041841642207401666400444087608269521582499768080\ +07159362627730642339199533209051979652974085966347840098279340160090\ +19527545420793815544675402025957881285966830564213200530247666994380\ +88 + +31239732497959818638292779200667312725332984706050265703512759466859\ +84736003183931208107094690791134882086398364414246612787541657212152\ +296954515345861259:\ +44486010269203082806521604993132013139417339215738521529001729101974\ +65470989031351517957857643691181436996411785695418178273749379126148\ +152297344989418668:\ +13897310607113977660431400418487955410781290158603183057898927941454\ +42790371799023389229350908578189623154651948470463734628718228022175\ +37160459735416212605027206307627525795256098590275806474422724678539\ +64782315844000916960349331847619603498272594899577643345409426860228\ +282896290162148120168283702192583012 + +91271582:\ +1044096341139516502862794205655492738851558322471722173871372437\ +43310942332:\ +952963248162153539313947560906101692644945912572602330737192268\ +7571591624552409224 + +-91271582:\ +1044096341139516502862794205655492738851558322471722173871372437\ +43310942332:\ +-952963248162153539313947560906101692644945912572602330737192268\ +7571591624552409224 + +91271582:\ +-1044096341139516502862794205655492738851558322471722173871372437\ +43310942332:\ +-952963248162153539313947560906101692644945912572602330737192268\ +7571591624552409224 + +-91271582:\ +-1044096341139516502862794205655492738851558322471722173871372437\ +43310942332:\ +952963248162153539313947560906101692644945912572602330737192268\ +7571591624552409224 + +-9007685545468534598743641658049346286545924671394080257:\ +2708960019652616340610787776914583117699836940876415749938089814\ +6081690884713840035653793589401490015282276:\ +-244014600122770296285710957465763428914667734328300934010213909\ +4856883353826536741655516010662407431799548978798414309377210905\ +45677125226465989158836569253624932 + +428475864:\ +1642909320501970182957064144199510240834448195404018829560344234\ +44879791407290995292738391711524351126135935031044584272585059146:\ +7039469905757345878447661340893057388183882714889777970681372359\ +9286724999378785107476015314565835105810467743874695068716694731\ +073452144 + +3804585298456788532803090036944486:\ +9742592765295469751314273699067197683737589672961737725951028020\ +8013084557451228262241241203602290304633025697300826898557186337\ +686135242:\ +3706652520369461349681131925078860959899355051485269139180490532\ +0467536020217182138330427311026318308608257076867490449833762996\ +8681057630927906028048393947534475842175612 + +-35149344750729324695898480464299390828429941822615:\ +1752615203067497391770113249494248437526672507748487522889401580\ +803582387921659886646983402010731854517398777968222841997058767:\ +-616032759879889488930577794740723910260183908336496340745761376\ +2386195653397211971686493794958963315038864032857733526167220510\ +1088470032335610958791871921057479688753244615705 + +2224887148112689653000916580023252657898661078193469990759133236\ +362617772742210818665763748892926451655031017362736825860:\ +-2254472752938568904593125981795197834529:\ +-501594745378325694157035263090451802038729306146676277613732491\ +0318865702652093235942446178330845500337957245272966813848791221\ +008304843258214793080794968119940 + +-326328701700361893997973482656600190641887240518503116265346556\ +55295515493003511016396059566561:\ +-21680483:\ +7074963869626767136670866125187215271008195405978317997637869508\ +45488283622299239531287490699813128963 + +4389513377810870521262475775128351860157070070803223156864617016\ +76781196153736168934878334587194620411888:\ +1591402338122279449286758479905480147444383058415555680119818315\ +:\ +6985481852667243947827954917503754523391596798272663056116832798\ +8639257425760121941859610354487659319836581325691828420744517855\ +7475650610301655551351877918657026128720 + +-5742879080477972131875:-117203:\ +673082656869259767772145625 + +-41663152776865616597841653055290004804009193:\ +5835026797641751552624640633869101411165325469966866477145:\ +-243105612927253227498125135247022492715711849036333775420426222\ +096834839368617968764219011608104393985 + +4173221:-226716880742:-946139647767009982 + +-2:-419149616949225277707956479498985786267693664978807:\ +838299233898450555415912958997971572535387329957614 + +-7465837654969091645574504830799010297689933581098938996:\ +-202766795624052324242807175739440132217946363911505883055059139\ +6802793334274781900133686867487904621446567316359570842284699541\ +23774859572282855983153:\ +1513823977947471878037349023375096499530047411943626417913495002\ +9266163268789802231784935230530990513196596039364219349962480236\ +2882318096853516252518151818670572226535777283574688903592768015\ +9878750734388 + +3279753735679960497081857312:\ +-120409079507914667933587089469886612743428895521786295640815348\ +9755449324053336110735728979481112654778080841040146337772577107\ +9932:\ +-394912128325868511771837525267263805962903118191080245346895278\ +2101319174909498798792301813784053942666817514010081546325334905\ +4670131212205861739934570662784 + +4087017444924453990694625061188553846924665921421375573052029701\ +043709060984050262732827338392612774866740696110490073121:\ +3201354694306000008850909268274836475189060544721638298393454399\ +7010152870984867537367271090975150700374414635283625090662581086\ +8464508777654674:\ +1308399248301941463281797376424136020032561422146839113205163993\ +0095140051921364225220153999482159067766281848161373837807682105\ +9323529563247238502827327776282135135915279474234713191582888777\ +1511404594446973439104298431438185694530043948690757478249515261\ +147417554 + +-179313367402631288677862721876578030440889951889929042528322527\ +8085266134713795430545312954193172520148465554221323897345577960\ +264434757547077538451:\ +-33744480794260115381826015778:\ +6050836482472199350882052360070598557985968830769735487227048700\ +2553193437634540742425617610465933528817398184780529934951394335\ +131691780368690568505046871430214639380927679878 + +3180313045123330718974011402998828102633:\ +-395949120505103380356259679899143757026704962287504981215815665\ +380:\ +-125924215314748995932963128833366357734780900635789980947564937\ +2075592673896477843481666129302983824945540 + +78394433139310872652394899769973779113149326061838893498:\ +-506317937717:\ +-396925077155891232039161994526220415197346559686986697686085602\ +64066 + +6992304690095528264306828961300165566845561346363146805401105701\ +874655545973774463962200355744318214727682521358902:\ +-133619017321721689986267587295828262450483752049648766344634742\ +91685037600448415:\ +-934304881504630204568833073073911400366279420013023235031438382\ +2934806501904607000964107025275607243164225972618594885288739045\ +8800341193419320569112624739820560918330202201239246722530352040\ +330 + +-279747165826180670739009508896477442612565831634509:\ +1001070223323787961662547493417138134890156942660669560843733241\ +4633638061364752177870909932683912027813180522891316:\ +-280046557767811427898723527174997897592562433513837063010261215\ +7561198396498373067781895023542952270308263849208412127831845586\ +715174925803969788307318868622842023844 + +-152342817045381492055715979459468344477216937481934776490228525\ +31778605803188114866165739904589756975:\ +-2212835903613879894390831209261230372573882516571420663066:\ +3371096552157007383916181066595556807779212082757370662982557178\ +6303181325061530061815766217946054712863588378057790411549645679\ +971413325974723607366298385350 + +-6494091656668836641394369738257289569440116499061905611026:\ +1112275782840317521987084233672591688806254182453409490318139855\ +2744964172429976273740793816660934415725201105937791700128767940\ +628761787374194934304:\ +-722322088125810479882613158179027486065378866899909715094586413\ +7631103621500568007359634288605863429230875357724233639767911115\ +2068815511020712301669909478881408853498125187530355741482610911\ +208923048035904 + +1259075970239705718009909682383850925181613342972607875664276820\ +78026:\ +-318663749166949940724436640747496455489904112200179629829091439\ +2694468149048117282961429675979014117768927070124265356881836359\ +049426402836926666527884852:\ +-401221869162599711356856060105595763645472859526212982202400149\ +5177647664741074762667141421159412849263518723551697751858002053\ +7542672075930439535906386249755965714824568354356750289932068520\ +3787316784029369163777807462152 + +2209196064019679034549708549203671427517764511470713969280084552\ +75125503453318134640933653347485145888239438775112197321859:\ +124322370280092642752:\ +2746524910923777881431201305680978264281158564024544236980377993\ +0636867162970792373254349391903852439413048040893096230035640839\ +019184047515968 + +3082058203728546610432890576347992072668373530737159518097003484\ +3125203068791784796435721368414598060677372556794113220896530315\ +739449185455779351233:\ +-552090427013053554588518469958636851397777719282856055637956259\ +9226137:\ +-170157482977557810525065897604283065952067566293743982849411731\ +4057452157313429551986153220866320527892664570619020242072409661\ +0134368039649413644973455415575096896642638467426667020714240674\ +6077334196123944909716776921 + +-750276999830609236437180125267494301299136351451377419221886149\ +8911986254315057380891206497595590249266192106292303419043717156\ +81219472681905129612:\ +4205355271908551:\ +-315518133662938357806548055254433388492269241826339016138263604\ +4618312099336135707474248962067915083570475597285597855437079628\ +850888491804577876260379972266112212 + +-891480538085009501272618223055661423871310460861205688650041631\ +6753749755092306432442174291514301244257968406437077389253407330\ +1027650622821713282798669:\ +1823891225274156993815141670030683418070006803521364429343774264\ +50339496570500278332821206013754250417471107492:\ +-162596353091593275777884582766611115972439819895849702568800957\ +2367685595981932088283461337162038543383704114341129033405716497\ +0880798827330185683075499346562579922155299739327439570345879557\ +1617840239191503928488539315719099552021212289189718073280973406\ +93528148 + +2124681182585249920847800665256356364758375848619965937406893722\ +55899052138313727858090571132568351249080019:\ +166675024913973810158544:\ +3541312890416478684229072496000778308444354108581194567659019593\ +9857314201986899403459218685673527418723464730927296640736532532\ +336 + +1821270812209449323858422000208483696090755511739052940949819411\ +630382944845340233359392421633:\ +2128599324432790723202832411330404647604668944765842006449683716\ +50019:\ +3876755820478193889141631692181181045914395285524928078325690250\ +7363257606428059488182369494828732792776883797717522047063810333\ +3437096328016399478420072360461027 + +-335011184237031303208123967960797661123087083840830392886248022\ +143119440501379:\ +-230989343999262588479185165706529031246884375719671837094628940\ +050182325:\ +7738401367932796012865144293474273194190542200590231371857014534\ +2578579884777706655220887725142189714172038628849075667359933189\ +054779585318363926175 + +9198355732743233736216530024186914753135748283508055875656089812\ +193:\ +5265840759145098384429490542373787636725124845354712989635142593\ +95934459401303991397630:\ +4843707653459529764586164414557294257741706853681297466140467212\ +4298268715305496704100180574245676306441226124334746402488026433\ +56143901511622354285302590 + +8714296327732867082392471731937188058841333771145620157971112718\ +8495045603213379592320067530490555856585188563018570084376435672\ +250185088374873:\ +4210349889307237465841484620878589644044295847340349009991385858\ +7615774626884639631625125100679586906920885988199787927848195684\ +62193938751049439136295957:\ +3669023657886054286232729883213956427553614823342184148988934625\ +8269564694550999939890817870432701814483867503196358666291080568\ +3307419798404926447543906006174853340917944983123029252530968474\ +2688682844881192340842766518335434033712938061191158275417587681\ +07991512024470998588265108393429890288461 + +2981019:\ +4433245119720584557487584549690245587480169135936518003445698498\ +9177614053957189552768994493672410015:\ +1321558793354433725697708180673306621094454631744034296211369269\ +35453261869513407243405875196532834030505285 + +3371841482115264548260749392909612923666167033836512042138667346\ +1110922005108438730679287361069225:\ +-1224839645782921647445211493292528894:\ +-412996512659022216647456819920862349778936230990047619735626685\ +9000246454258876625428723876322584511859911068016361053904468404\ +6687150 + +-339290341643379646242121130133274175571738607527:\ +3271401581452035936363564486098243173858343994842704626634540604\ +0333753792872314861533886742557607640566446319092917014148799834\ +8498182361629081026057:\ +-110995496022355374018357458920157866276843573465657648989031507\ +1492983893793639677118229990155541637204519376994267321550212870\ +3024690173524970745190362239190804266551097416929422331908148558\ +3331039 + +-302193108025958893465396831014238400181355654244499365872812914\ +0671578942520441667218976086488594667623103779245243552871642908\ +5538517727995241:\ +2017851085218627867440914776334445037676170997318580940821659303\ +5046997219650546605682041506090881913886238203842281306969809595\ +246163485422064601589012:\ +-609780690975771196107607785560739006824539433569270870499177868\ +0127071341610096112489032765719159734331084718676312427284431166\ +3160752183891441001416955478885614399224358737795082762053960238\ +3642229098982445564368202356432336746046757695325766162758445391\ +517573101567916271503836326565773891892 + +-35188123484838216734793425643059054080:\ +9000600267361446370368675857998:\ +-316714233645582443508665110125938608546684298371094101256326282\ +531840 + +-287546392987328273673797823271747266125547785306672698267720774\ +608232552065:-724:\ +2081835885228256701398296240487450206748965965620310335458298408\ +16360367695060 + +7239719440345013275638025455463886572537307213436218405718641390\ +921197615256801869733473418374:\ +1273855558831670011845427584052189147328498974982056877978612327\ +370857472534105245496452412950690926717874:\ +9222356853465202151464594272999727525831895475287638674380433334\ +6933374970835844231896759667044442575039030759210684473734626375\ +4867082551600245844507805177238750672856996150996602083141097106\ +5816876 + +-467193764317015751447832154618223252689085556761857235622959651\ +6527745:\ +4062614168720459964554950353412675872692580185950353528672485067\ +66348747462819:\ +-189802800645215543819126042173342480893460145936335827236015901\ +5836446083789360925533289958276050415814781716398053517857780132\ +893397801668369413155 + +-256291521346916076469577753590332243088939322304016068224382551\ +5025546499325406138:\ +-605053480861014149406513375530972230393655979785947325614347032\ +55672033601321733124376224905086861012031956149097:\ +1550700771061164855884803447589885127420417575088485989466750817\ +5220547092689946197222125349076097067231864772732377382975294424\ +7005994565440548405623573916996459703805738162154040744466006957\ +386 + +37657585687987148872355696565539718:\ +-1434800894234388160687:\ +-54031137619832058507887448613713814837731429449464666266 + +4393856668836163872660314169038850961070596126492582636740923958\ +869429568049592915508:\ +-725654263195468754856026662040358630736857297829750596111795962\ +7542041685201743870533093436197634453:\ +-318842082361080325483580016771866191199973311649234286812044253\ +9591641099237099919800666371105550379907533870255064162462208188\ +3994207992073068621770789270796474452792924978217098797124 + +-22262682191673391309862211106958012450603677337242458360760:\ +220733215635032249425562508910063071532478728405839033930940264210:\ +-491411342882883504420371271016231681619217410641501118113820080\ +3099803240779721785281408106422401055283687004275837896399600 + +-1943809061953917342683052893090:\ +7700827546161027851150293971073751401383411867756623153657156490\ +3719544057834222201379883202137441380031452353172493763083243:\ +-149689383687721546514336832201365455374120959277626078690972108\ +3971845846592875060793450410610935237925773161603531529842259112\ +43685728191984096169649490870 + +3786170367178724834730573252874138148565139634940161475730134462\ +072806346795721773969696184:\ +5642009735645474144794852846572624514752624565190901861011302937\ +5113755663421195546:\ +2136161007243476508223846179651669079978058344237194176489154392\ +7622668375501304536598877419397709190638503067245194075783305398\ +2326877049744197485569753314370744763673996464 + +13489797398057489738508057443:\ +-39829491566872094526554950598431919339453350924955014031891083289:\ +-537291771704743910798219370322043426391226290103531988511540464\ +278547553363892492512309370027 + +-323325112374943657482631147177688351925959386858544487312506089\ +86289604167358883842577746321363893167908786:\ +-246925431746938028131175064627088867042153744157154625487424933\ +24630571161151476958595194:\ +7983719296781021810724607567340308787943618592037051108694438338\ +2489270621359904712938918152105643713875728369108646194020367483\ +4484438934808794593359943127130153265367987222230213154933289974\ +484 + +-435100258456539648627052287294649432161393329378094060187883773\ +2690708495675481854054541928447945875268:\ +-10155417715410577307402999881053155099930501238885853034128275227:\ +4418624872709263597834477604499556163338660202529113122166495103\ +6300436212506625541915615934966052700868562630468721925914800339\ +297995368984918582710621377945716385836 + +# comba8 tests (256x256->512) +11579208923731619541729388327330122708943419524243289762333678181937\ +5385575424:\ +74179307167655687693225162271190690968501083926425986337482366849894\ +604086426:\ +85893769551194762664489787067237470111583081643887491027483108939248\ +54152414995879834924747381994424629165311199542893443807287227310529\ +677629685837594624 + +11574114654373435432769681547953871289980961721498085841658839565237\ +8326940031:\ +10711660777805634592035489333768778748163480146501669697332609614056\ +735426801:\ +12397798998107734697368913960056304565756856899698066529320990905885\ +80174831683647898327881664370985256756518936891247178025618131778049\ +267698975117170831 + +27006267526871349343129256945225699676622244016828866963870625652221\ +609619338:\ +10706691322561929820710026337093404691680917641214496572907959829962\ +995350055:\ +28914777018473950489193423936996699498718323255670979720398132582868\ +12326099575727022500582226148289338093647474428048875439902371078972\ +17011952607363590 + +# Karatsuba tests (512x512->1024) +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243025426876941405973284\ +973216824503042048:\ +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243025426876941405973284\ +973216824503042048:\ +44942328371557897693232629769725618340449424473557664318357520289433\ +16895137524078317711933060188400528002846996784833941469744220360415\ +56232118576598685310944419733562163713190755549003115235298632707380\ +21251442209537670585615720368478277635206809290837627671146574559986\ +811484619929076208839082406056034304 + +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243025426876941405973284\ +973216824503042048:\ +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243025426876941405973284\ +973216824503042049:\ +44942328371557897693232629769725618340449424473557664318357520289433\ +16895137524078317711933060188400528002846996784833941469744220360415\ +56232118576598685377983459383275149211060880540032345872695461810342\ +17940303990259531467630757141966678572355892742551472687075667803012\ +238361561335049493812299230559076352 + +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149085058651889274919368784987519218104008495487\ +966999617338343424:\ +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149085058651889274919368784987519218104008495487\ +966999617338343423:\ +44942328371557897693232629769725618340449424473557664318357520289433\ +16895137524078317711933062342952193277060785350743397497444921769834\ +74555755777883734829695075352889186645794406339299840443362841695908\ +49124479353346416074683250011190629511478487550142982175186156043821\ +992372090244262099992413871225700352 + +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:\ +13407807929942597099574024998205846127479365820592393377723561443721\ +76403007354697680187429816690342769003185818648605085375388281194656\ +9946433649006084095:\ +17976931348623159077293051907890247336179769789423065727343008115773\ +26758055009631327084773224075360211201138798713933576587897688144166\ +22492847430639474097562152033539671286128252223189553839160721441767\ +29825032171526323881440273437995950679223090335649513062086992526784\ +5538430714092411695463462326211969025 + +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243365709243862344436748\ +347824256271253504:\ +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243365709243862344436748\ +347824256271253504:\ +44942328371557897693232629769725618340449424473557664318357520289433\ +16895137524078317711933060188400528002846996785290185531506439882279\ +67948175579511934243229492219161469505115934541754787322072497766508\ +32568813609316312895189314891581055577244380152406865341154204627445\ +048144934853380616505964511432278016 + +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243365709243862344436748\ +347824256271253504:\ +67039039649712985497870124991029230637396829102961966888617807218608\ +82015036773488400937149083451713845015929093243025426876941405973303\ +419960898212593664:\ +44942328371557897693232629769725618340449424473557664318357520289433\ +16895137524078317711933060188400528002846996785062063500625330121359\ +98742154443577980079599561074597766784810090551438150849000845701430\ +39463393843012149940933139094628420823280505085783531419710269806521\ +710678242326571370194267352288198656 + +13407807929942597099574024998205846127479365820592393377723561443372\ +67729797885965581514188847955651931542202341709841678538338597448558\ +6698740166243034228:\ +13407807929942597099574024998205846127479365820592393377723557015178\ +15690541073572989474743035547506906776301480077261237516040494971968\ +7212579269664735026:\ +17976931348623159077293051907890247336179769789423065727343002177599\ +00942480367760499251857295455939596154105772404450931317906536826768\ +15455762278256937871060873932808316066099592555454681197347421682785\ +09568862593066461743520871555375522976812396705343420538862100685795\ +3308142564518141627105027011868469928 + +13407807929942597099574024998205846127479365820592393377723557015178\ +15690541073572989474743035547506906776301480077261237516040494971968\ +7212579269664735026:\ +13407807929942597099574024998205846127479365820592393377723561443372\ +67729797885965581514188847955651931542202341709841678538338597448558\ +6698740166243034228:\ +17976931348623159077293051907890247336179769789423065727343002177599\ +00942480367760499251857295455939596154105772404450931317906536826768\ +15455762278256937871060873932808316066099592555454681197347421682785\ +09568862593066461743520871555375522976812396705343420538862100685795\ +3308142564518141627105027011868469928 + +# 1024x1024->2048 +17976931348623159077293051907890247336179769789423065727343008115773\ +26758055009631327084773224075360211201138798713933576587897688144166\ +22492847430639474137785575823367462584850327217807092221598818903544\ +47838349239959440410649295502088991241512540406677820071644448472599\ +8099692362528251405302763273230221311:\ +17976931348623159077293051907890247336179769789423065727343008115773\ +26758055009631327084773224075360211201138798713933576587897688144166\ +22492847430639474124377767893424865485276302219601246094119453082952\ +08500576883815068234246288158970519977814343258692149569327420609321\ +7230604120280344292940337537353777151:\ +32317006071311007300714876688669951960444102669715484032130345427524\ +65513886789089319720141152291346368871796092189801949411955915049092\ +10950881523864482855309433042883335846718668037787037650188893055840\ +73018927951831283900011347985854627812829075980481789955530757008122\ +88824849145421420410206954413439564292684600051414432901225421532791\ +01381942730678481306279979329106412319570512109276383150572147028830\ +25199880085119057947572011024091985929007350883874353448844224836795\ +78442377318748543006187648103374862164234771293283689764786919194438\ +37888284136626985706746129572759980426766233612587290367814732695050\ +64961 + +17976931348623159077293051907890247336179769789423065727343008115773\ +26758055009631327084773224075360211201138798713933576587897688144166\ +22492847430639474124377767893424865485276302219601246094119453082952\ +08500576883815068234246288147391311054082723716335051068458629823994\ +7245938479716304835356329624224137247:\ +10112023883600526980977341698188264126601120506550474471630442065122\ +46301405942917621485184938542390118800640574276587636830692449581093\ +50152226679734704194962494440051486835467919998525700927942192359160\ +54781574497145975881763537082907612467921532090438466226007979275997\ +0325840394840421469887935413626077183:\ +18178315915112441606652118137376847977749807751714959768073319302982\ +61851561318862742342579398163882332490385301856763596544225202215114\ +31159870857173771592553548685191068103016094862345941793100727824215\ +91038007155695622986473612841033928065392845889702175791770421586624\ +26143899184951734174822450721084185903177062211837438496534372480202\ +97467411486790074725866007726424039330919514310082034160544731735015\ +05505148992020823080165429348056649053453259548580079987024817945821\ +06278219961860441688154154020423122651667491374047530445279534822367\ +96606089062121158502205590789299321244993290459201196063373244192071\ +35201 + +17976931348623159077293051907890247336179769789423065727343008115773\ +26758055009616165775278099964665396948321782087417396060386782903823\ +07012341545824090641587839835926419363551226096078071585202389405050\ +15136893796472153753067084907045685619026471680211462175364329863209\ +0971267582066228875273648785630167039:\ +16853373139334211634962236163647106877668534177584124119384070108537\ +43835676571529369141974897570650198001067623794312728051154082635155\ +83587044466224506991604157400085811392446533330876168213236987265267\ +57969290828576626469605895138179354113202553484064110376679965459995\ +054306732473403578314655902271012864:\ +30297193191854069344420196895628079962916346252858266280122198838304\ +36419268864745685317012104530668242911371513575805609806190451951607\ +10557715881476395538121318622342054920551385626039497775648111929192\ +11010149235353314669473560070738635821344900819492979642122564308821\ +93832836355009007808239907501987022158846860226885245037291654118972\ +21789040347542992939815493420694907963244430325400081905612531817013\ +53434121697017777687388707760265950247661467236793723639977817395453\ +05333658727917987431471148302830409557728284992844256725143219605511\ +19105089461515317003555642348174884134868178964134073119096779203778\ +9696 + +# a1 = random 512 bit integer +# b1 = (17*a1) mod 2^512 +# a = (a1 * 2^512) + a1 +# b = (b1 * 2^512) + b1 +17930121528120518743193890185292405362795914617726312913105692310966\ +79834089760159821608571760102261884739604751290203318392915809389705\ +18533152042879507565469760620770664602498091326659618430896499562864\ +33097556186753511259807783990999180942484334496111552855551238437298\ +5931442517394084353378720570213259961:\ +17181164400078273397607302623726933788654231870578267885308639434063\ +29050645768615733989348336532688661355059992510519187273205749318328\ +55178025838720042408416717379221896884862317068300037779659390111981\ +97244867335458644846343599813562216158033039927051277398059877872479\ +1239444995247411522594037321941878345:\ +30806036568802130707161344222425760549041581576622091565254201628592\ +14385467809668014385184785152271193843047948236592285206889142604429\ +75839733409984928244101830825691058271214860952936075111998155431716\ +66320122704699248615782786577874030694743967942269571299270175479177\ +49821546067026790701696727687868585663474591471567191830596615534450\ +88805296433793120856742255208087463783715754626092601017174650889346\ +66486074650833697034162201049220647206717383818466106882937622653918\ +76822429098414628373727606690842310063586870064304131814649299854186\ +12692628024925259230119912648154125622594020560204924767989260701214\ +44545 + +# 4096x4096->8192 +46230924351836247700632620916046176424079105466354534064042561034208\ +87179012808190823424753309565308557946849439937602914646826017759588\ +34308955397574010098112170264341488598373518621050984822173335661543\ +05503155484221582314725443772226962279179435429752927046418702379683\ +85046488722729558633796252405133615796333361764094300077585699651413\ +87522520295445886581348613967739679507144536630498779984858498466466\ +53949495585121328172175753765616536867610443894070462179968529055982\ +76558996753670646519698363689763792814553110716478538561711411517385\ +25392668340231371551312445292385216029091676115617060930552232679124\ +82696223439453451825724430911002048100764625928528148630937654751536\ +06304398468385126736497735857773379804983839043683211519322520305495\ +88047388177062785807692948814175519084337222913843071456581602029935\ +54683753460812611659451099340378672619627415242236591287093912255783\ +13140160231289453522976275483766396153309206695863277854402154450459\ +37546852895213179224578947936523539421852140479791200605839865108481\ +29541228564089187837510575385124529321309276742969232912010920107981\ +03957776659416089212281297890809164014975660550116306748020139153256\ +22848023511467181919573893647538869361729907908714966872881945389100\ +86101428:\ +54530990288249437719619266581633527950202167725686915722413802215908\ +13898808427693785305297340466057132347876044193194335670208491816947\ +45347065813804383143878587001488929429088856726119741100265880818083\ +08072469093027021085621909472228082331188302646328041787611120322548\ +39496025029182050271578730610401719162676648561607998168984589242763\ +61184308631479552158835170369552925804999967396481740557274002486324\ +19060734996166150772822594482483029608131347141723539465860333111879\ +99028176225288916692803103016047215834727819406429598388635703974625\ +46062134344556400079860063468483319482068487707023772004276424916600\ +70752394601181923057555584615258415106502514105268940487020754841912\ +85424335310397208518018385485167186844809177247714124187041081497708\ +96511319230068019588583992177882717832582994338933822583078086805742\ +83390233167682320436242724359199417834794808081825191377785708613777\ +86102596609226847851937748841875768625507263876321447582064560528748\ +35920609680394258473797857062463125872573573911021820161622994930998\ +20654635987081600595958107506315942531393518613570935900767436989518\ +52479980745679719049556332080920670567304319030704337342023640878866\ +09889825375285512294624431826722345023789066121979651546281497741903\ +392437648:\ +25210180868467768546757726362059843626852926905412382608676629170550\ +13500472614635251047265443464861022066815047034258382305517605789179\ +87828662358961696066164456254433404354134132444755460484661087112315\ +33092792254341786823634449794876609511305489030701548587221933119990\ +83152382137766693945997257582640307701836825909703642483047169261811\ +29415178374784201058252543144281486261236848516767550523665279551861\ +74465512384172617149107052187550658300617578084736260341723260747161\ +99876271562142167533309479325645255667176279131317552047451026692967\ +20839234037422676688042090117497405271103578405099807691583810119265\ +54336379063605406653618342419878681737223923065560012276952760198274\ +01935961653423534734281217002142980219703525915889622098752381243251\ +51337680928833690966007811584949672395686773570000393884061584225434\ +46095563213259068817841045213587660574716357554630835216272902060443\ +34556862089899310391156917797805143517814316196396914215338901147216\ +79277404380234128913536426196746405226500140030500544578565101666905\ +45355602687691883828602277709718492121846971571916556642975486330113\ +36222756064112088369190359637323581593192113210931211230367909305308\ +34626706120315368242528268242337577529275810260388371559227416421225\ +18288153930546296286935770867979820870699234878779491860155905073232\ +51502558862837164130223049756749662881084284616449485647823253076640\ +97817765026456231979422968578849627137552880186111486959114938973490\ +88961199014636207851962534069247724700485273408823799958467863418841\ +50462661461823344684758580652604422779162692518313890388399982545703\ +35206898267568862459046844795531325319249988156277069565297520226091\ +64600766297485223302985129710063725127737025349700933151412377658954\ +23709434501778907216692625235665266668930171909330255035266777372724\ +58877961350127654808072552639834541127026665379146043251830475968219\ +15018615283403488179263459581211497821758602281724174575392739616669\ +25703910463568680165861589391919447127830393426572990195899393637221\ +86477741974371802750413668808535147675421719142045765725335254381364\ +41785131009861024178374832421597792578801840696203626157231517656464\ +14052894526701810933176118179541201020906393719709492349877490392992\ +00696634018140352649412293680281970033556175696751860800582932013588\ +35349743517428143168973670929259662004881928288066741418602389631277\ +36600832956552929991925721216698487543280154312867126099744478225237\ +72707253967514116707979742986501040393426058104944823682176865543029\ +42410605893761344 + +# Tests for the asymetric Karatsuba. Historically this code has had +# more bugs in it. Getting good test cases can be hard for this stuff + +14092703816360934475287812379721584643540920654551533543420378905278\ +43263869087702953436962300677113653357118503684241080095903812797217\ +981771103880205148628392675409404139:\ +85196387648463903836201075338727419426772257423386800834159433024105\ +22722534550698330414221220484658429569965031071685565584585568273727\ +521831711430243837:\ +12006474573536728376030033121297441343323401321882664768043719554452\ +72355962084445501636044192472676171283378029237295859040510289867684\ +42082336586473179649397097120830906529744851914004493486594202273964\ +92849411579105282151504500626551480203959164076691081552725026900241\ +832342905034386191256909160400547992155689411647041343 + +57586096570152913699974892898380567793532123114264532903689671329431\ +52103259504474008372078212980297151898765610906745757706580551032703\ +6019308994315074097345724415:\ +14396524142538228424993723224595141948383030778566133225922417832357\ +88025814876118502093019553245074287974691402726686439426645137758175\ +9004827248578768524336431105:\ +82903962954674429277182094016068528967498403743392611678986796248035\ +46708705089408694697316410864619322862709322416615890526565883322100\ +81247286886157264936638535413026388243763541729092783487919143933560\ +11669949922966041936103836718052579102251260556254458882685015932709\ +9748064577321171189330220691056136254107213091963928575 + +# Got this one wrong in early versions of the asymetric Karatsuba code +69328033643988284668153554428298153814569184083886776453465872993395\ +29710746972404168269687728407520676676052832464833364865313305188652\ +27796258747613771385136143521786728820782913230366107236761071531140\ +69858079626875179117509513890923817643832927518504150773412897517798\ +24069151513573630274310883822191771430575394116104021217164852793487\ +74039487132887730707079890109620203394040795732717864706534187311456\ +47616397480632810489298476433897092835849191354914181079718876936239\ +96759799034047278741267946259806379049845381337965241128934112089387\ +26387200493807084368512264417392541693498708056601725438254379619500\ +04878549999476514473638562844231061393907117784824855718620742441873\ +33707730767137725282689693949863277338600908221830652962675544003225\ +784824252054526036890965:\ +69328033643988284668153554428298153814569184083886776453465872993395\ +29710746972404168269687728407520676676052832464833364865313305188652\ +27796258747613771385136143521786728820782913230366107236761071531140\ +69858079626875179117509513890923817643832927518504150773412897517798\ +24069151513573630274310883822191771430575394116104021217164852793487\ +74039487132887730707079890109620203394040795732717864706534187311456\ +47616397480632810489298476433897092835849191354914181079718876936239\ +96759799034047278741267946259806379049845381337965241128934112089387\ +26387200493807084368512264417392541693498708056601725438254379619500\ +04878549999476514473638562844231061393907117784824855718620742441873\ +33707730767137725282689693949863277338600908221830652962675544003225\ +784824252054526036890965:\ +48063762489419715168951981307754794589808870758952639965091476616647\ +54056167932393419567481296681069246248216008267853889839320423981745\ +60479443107279226057663425943342008520701374986979347783572983701184\ +85422697584729139817700527441440371002219958422883649678565900879400\ +20025210106297773515746894906726443036026187076658079744151459354129\ +76880294234848336533442648147663722096199825871118396947178334215521\ +76943880892409643115274415151713386236948639022804530054018234460138\ +65934020545172727964007195157289495135921213561302426988267171336165\ +92297396800884174510773976233843978906677436838567701962214997325767\ +17494685809458185719292759364630203908885946118898336175097083972837\ +89342035200573700398720235821406614593531258231227043379738167751614\ +68684582976839207443768269161778663395778873870774323940683360928515\ +48027194465603770338336645857674917792255648723659298382428421752797\ +57375177034382470966583814365325881784225896969066012430257742547184\ +72418596829523189950619686978201887223055028706607853375875849336866\ +58034693741263352377027728101357005623322435070019152178347117503006\ +68898867912930645058149633650634442077017541758124699937775536013889\ +00090985949751232201541388041823183135436540422469067343022614303960\ +55855903221443598575395492738166423176780792097697804248465562838489\ +55947563036566122615600202990367217608222400507033340848053927107788\ +50110168698504066173013701126736282373942179302874896060705586003228\ +79037941627812442489494360833298836822298442280730034168111230609093\ +310545565906004082962175112065394876123298631225 + +[Square] +0:0 + +-1:1 + +1:1 + +549755813888:302231454903657293676544 + +18140671814051116644:329083973865108631122076757343293822736 + +18446744073709551615:340282366920938463426481119284349108225 + +85070591670813493966310340604280700927:\ +72370055672222822149686532165239924548184855554193955235705358728264\ +18659329 + +85070591670813493966310340603475394559:\ +72370055672222822149686532163869766764144178225565969340654319581407\ +26804481 + +85070591670813493970922026622708088831:\ +72370055672222822157532909328992644361925323993014681825303471075565\ +86946561 + +85070591670813493980145398659562864639:\ +72370055672222822173225663656498083990682319746609654242487350548038\ +36600321 + +340282366920938463463374607431768211455:\ +11579208923731619542357098500868790785258941993179868711253083479304\ +9593217025 + +3138550867693340381917894711603833208069318394046068373092:\ +98505015490986198030697600250359034513838056601414221774853647899383\ +99716620339203600092485547982803495343709640464 + +3291009114642412084309938365114701009965471749407831540748334692:\ +10830740992659433045228180406808920716548582445089016068317535718032\ +308295472658277178853031537853949474393196307576171250734864 + +# These set off the bug in word3_muladd_2 with sizeof(word) == 1 +251232322172118783022840239225457019863:\ +63117679703995287066909540140557654581113950055128878944628202319505\ +176538769 + +273689842353342519508740475928754711696:\ +74906129807397480797309133044676004424334564639782656684007505697520\ +079196416 + +271302823667110475639266093952890097614:\ +73605222129747240032647628582852465568122948805929122728180342334818\ +448492996 + +319387279021025860024422185475130973014:\ +10200823400045462544411223752203740218511249559589398235010527269723\ +0396244196 + +293643199753680203052743123832843662352:\ +86226328761579733262787961688682814116999624225084316052032576511892\ +182171904 + +# word3_muladd_2 bug with sizeof(word) == 2 +202324725318880963191371356135299852624:\ +40935294475360631472543732691759944656086403346062162368816126408076\ +119685376 + +309321842385349400717946354447033364075:\ +95680002176666937035836738263162897574421497416350873907840493696211\ +500605625 + +233489517300128090786970749707229607527:\ +54517354689046815002040771363970021549478312409815296261172173208794\ +455055729 + +[LeftShift] +2121258017766159160754962465958381577677890208124499494536189186\ +869637798499791383037162061664492554205374097:204:\ +5453968336700566799508983726051663849667997549076624612345231282\ +8439638899716201006845993775936915589934028192020733447985075402\ +867441526514914927633382250278301101719552 + +9127815530925814339720645654057304030995143310324020188491605652\ +0167383202307739291645752386748299386607033417580789665740910548\ +485496057884342754125:116:\ +7583092465041842489806678334004575989684288504372713429243106807\ +3821340263788338036051275796540123856480834349684104861172576642\ +18512263948855799232636502228939840695954790558990336000 + +2720447254558553014578566972012963115777446398846598038146885883\ +1866886314261120634838361392523025566783357944737665:164:\ +6361500986895495805616781332881685455158868774711923425935172754\ +6665493357037199343516238602124200135772591677608344475613159685\ +2488399997844504678061831690534256640 + +2346814922039931311567833556790864002896525919808081028569793383\ +4008825609596357974972673276604:112:\ +1218535974727059175894407931694205043690238717758619344357411498\ +0976423842428997921600747804778709388243970226872640908420343398\ +4 + +136766652934857914:106:\ +11095829099781028284216214312551702886842940522496 + +-401051144733532769909045041716441134958154294462987253741112236\ +561026903932355958855274471955131:63:\ +-369904391368386363775763871932535866765470702774151965641848084\ +2144652587998489299622223077809753503943936440270848 + +2620878467008554581948549874850974711547561914123735587938770041\ +8388598339275821514904454964587607270922729716663659446422771149\ +9620476383257:195:\ +1316121661879758521098806625253965626323323320500789427869263340\ +6367324456851018233189899650111735222276905756611447392283605658\ +6424209018483795579529997393099798973115070359293039187878410704\ +39858176 + +4986386024639314608574963909430738820138995826850354329027683283\ +7084148930520285795218001501791951858649714264370213994065039723\ +183:24:\ +8365767539475510328001762170072394222505708301016699425463251243\ +0365357678350782716810417828388796339416772455162018414465188948\ +4421398528 + +-455552309543147716127587827277903635248610246950391821050011180\ +4998378889619941436810075030388024035287640271262080871447338739:\ +87:\ +-704933054965487499017626788420861259932661059464379088499410099\ +2559199084336675766400427127749751321008643932765664940335284556\ +99667386383995835821064192 + +1037757592587696398725288196824188929011363632075879222442626801\ +16359163984447531185310046467135652319371987503:95:\ +4110981359797486520990313529905064933484217701344426282406713957\ +3073026585644903347542613235747258250235327631427113860134353360\ +95122325504 + +1078541466278039800083311:111:\ +2800053733577506391526406073538574747169164913752227708928 + +-458929098580755:143:\ +-5117230445820379540747782782105603341274706553475212247040 + +-122928855329072870073433015110819526943336867562196620340919010\ +07272608951275193:11:\ +-251758295713941237910390814946958391179953904767378678458202132\ +62894303132211595264 + +2253797880121520663606973674330182144804901367932449178312384948\ +1031054670305841291542789729087450336886747413803342773383544037\ +2581272420142035100:211:\ +7417269366041670925252065169199359207792625796677651698479867559\ +0580700643261572311187905593603949279149066613049589728766147448\ +5040626948461011388280995781694782614846527093302465736147768556\ +526048195169484800 + +6442142951860149863781434107200105215105005142361888584824558528\ +2484597164156116892847036815:107:\ +1045297456599241794709977613787275378715930460342137602357284620\ +3705135174457613106078796927549665575893358403516669173432320 + +5097783526093860243839154243285093453167843731134916160503060680\ +6809190520533632436146045688586:126:\ +4336714610774466073591769540544761879648163769201204653675081413\ +2084346529112353622016096796405522770364375296300671020674092934\ +10304 + +-331899363008322441533569955164860025843805741291332922663910367\ +2943065616917605415617171113991360901486760154578289560762927508\ +7724:91:\ +-821743020962630744101604179924332933222787625033777030204941339\ +2423604240087684356284281911697948345840642580768340681886419299\ +0501324963749459198616746852352 + +-184253938912501307159324447512804721862709269931381112790263931\ +81321750494139191589459903767473167677816275893773523:152:\ +-105190403673940947755727602264308003613546006738759564870362217\ +0667469418523232027185126832293519850235443686300723583174147136\ +58107043639016550258714106195345408 + +4027173611709683208685144938635076643642081573452904517803697826\ +5275420130:216:\ +4241108819962870257795832303288513204199186270237663098986852370\ +8839925819263809342179370062199525789246961806149451534207820475\ +33392199680 + +1654910280148247058930466878701929681980555724947453908536393353\ +732583647848670616170583254506:78:\ +5001659417042237892080348861898586734617398707583112481824590338\ +23652150179951382510963323144882735068533089594507264 + +-353256518864739539912727355980967022578755727546889874982122719\ +759:107:\ +-573191472861980058226433447553366186933814120008015485620963412\ +26306829015345625594865954588721152 + +3358622889967376849369646308014887582255587127977426994425421674\ +4686208321633331897065809513496651:69:\ +1982581020522590603474492135975397792733918369926415317084561070\ +3822831264254057644126980676514200036423975856884416512 + +-8326918561933317515897484042242279813635:222:\ +-561233200828572354853379214799650393202723352144809535912742619\ +21980589457786088539861748815344432096215040 + +1738239605092625935802720509793:210:\ +2860281191896129448328585042777498571666530315075635885634512550\ +142285038644212151822720172032 + +1541590531164046827151493969434074217996086405826244177284191842\ +623229626655598394491064824017724575585890968239654882203827:130:\ +2098304299069634414151232805637412871131277307615398366601971342\ +9665834217942888720462643703124214574302721592303513592056859315\ +13427518479162077139334989713768448 + +1822414219485473007729455052579570934353421556802754634400780753\ +581487672806631709:25:\ +6115007400355837902569347395883763750593834759507216779268585854\ +2958784576028372828684288 + +5336246625295048457347325312327723275413189882766845079019668950\ +23491709759645168524198853958247909:145:\ +2380045526144475863333782125314997581392105067362688736487270903\ +5095219526391819075074039117499741190364575496806391148745118026\ +089345253900288 + +-276651306081170196285504936260680311592104354245874357656134941\ +6718897362629511494172851413903784541053958724076679151843367695\ +9748070409785949098743856:225:\ +-149170089146918319214991272148007797149650392266859882932532072\ +0896314266755406819672840795334582356690986796948912969229786129\ +8759392443252182124719967927140260518022196506128222178285661500\ +32303899305525355025417633792 + +-103357876921000174182112715460846616262383449332882137139998255\ +68582685162004410585410474998733490779307256347656936844453628:\ +128:\ +-351708629986009787155639181729583046307639877673123732501848524\ +3559886115426724541117518475093181639785217728536729396711614403\ +275792414126622561825487435090362368 + +1094708276267187017583512230031436979221999105657255772315062187\ +0590945418853726695999585645264076550:76:\ +8271381875782668577777728720058787519656348054693237381352477271\ +29815039067706300744940289871871309203285264026829638860800 + +-815525457724752321603940535029563571154068567797107498491974746\ +2624523816971433695155984655769263875263814891:185:\ +-399932520776254684164524385851380762766645298639846935216904114\ +2896647055743804753583601279854374681737834012702515619494942793\ +50304095670986950350223830081561690112 + +4052679849880044255138459864411550773099421944874654179650065311\ +7857061613513287290910396020606030441122363087181232793161493035:1:\ +8105359699760088510276919728823101546198843889749308359300130623\ +5714123227026574581820792041212060882244726174362465586322986070\ + +-248399491197694456686506789360892375748400795979825040399299010\ +53517808438265883:176:\ +-237919445383638978127975473390525029152877274034190677596480116\ +8519869938343860007136898454280955008871656020990685920874468986\ +585088 + +-341602794141123390057384653491582990307091266762526194256752907\ +742814:102:\ +-173213194813054140534683117609830955377834183581805190021073324\ +3591496880056169249935512491320672256 + +-958393530005648757477093349096350288904499954214052393312348399\ +2770943667934610603880158622319612235433869275282625539708353046\ +09:167:\ +-179288795303756735253272048111864507295054051907270903858033299\ +1984105913251800521090082264035457471680922762784248326006303327\ +80357892372568802535086338017562314555143800752177152 + +-244934270799654899396979330417224591920216069659327770883960842\ +308099872348715409398096:24:\ +-410931516700830297264139197394514709915731976734558842691872198\ +6944930107966825746000286580736 + +-2106457461641547906609473458:69:\ +-1243433014305839647767580171740431469025056260096 + +135142685675091:202:\ +8686636920585527698499063657324055240285043487766458873488405392\ +44004900864 + +-116790541221558472322206451254911347381714818839018118383610841\ +510309754344586351337420036400717803838650415501291198800754587:74:\ +-220611094952357360270322465694065886169870282492555195903063877\ +7058528470895456709658637256734101042181231965942902938524566534\ +006236702950668894208 + +-113662437497188191611046105180147670725123405622356749057822533\ +9374200354866981925638532649150827622554422704805900523233811186\ +7804339566343416115467056:164:\ +-265788541608259131511323286352380846617232004964000794820926894\ +1982659118064626109656559724002147778215968030048122363389101341\ +4916257633270717425007538758533769604203658211543099937688495500\ +8515178496 + +3139835124875473212694109318074161136799592793072048253708819570\ +6031251397956934770541559259048189239569502903816890554914148616\ +8710074892985168204104697:95:\ +1243816837708147260845084661039007547826018395188591656306366764\ +7513402868999491043335036172230767347465042406686594960568733454\ +486595586019513727045751542829562936306306793756164096 + +5599994070119518146348:199:\ +4499421759449900671784284327121118030698801585196299978528243915\ +527017858726887424 + +10270683209834825258725306919273690176679518030925177258309490:43:\ +9034188491533697033850866046124648731048958323889347163636163337\ +5107153920 + +4578000383070746273307:184:\ +1122522427702119950972128384343669227408405080033193267723578847\ +06832894656512 + +4806080526717717017641435948049790217951184540837962383194474375\ +4177372178226:213:\ +6326741927653364567544399799665952033829979000600292660407440869\ +8862171634248299057579558184663298119372699195026451647955448240\ +7792959291392 + +-213240753886670778938493896779297584390212374893239014196784169\ +31016786722016582:85:\ +-824935210136591658197356601203169660873055716952680926144487605\ +063939313393392322678258809253441593933824 + +-187286407031666462047035483383441327248520717346072223723620843\ +4454125887374738735368124928725176429609366:134:\ +-407873676011864041904214443478531790285593140265704678916369737\ +8659007443902659865299628228125085923760625746613398039989747449\ +2137333668230201344 + +8621689714197434562630867265841464865623072938828506100870809463\ +96744539349725331277869713700313427547966:97:\ +1366161267647991190642664883853673418069284183801958399635868396\ +0937205383180691314472971265906730508050012658612328503341173152\ +3633152 + +16955933412697913917032678757506722466737685:229:\ +1462819393593898553961710324275156357656459346902684987437691843\ +5481519688706703310919911715271056730027164958720 + +2180018258288311836232601230248111131649953969135839015779353659\ +8104321725586576274057148974991731503239472085567581116:165:\ +1019552081247881910408108587819850135603932052219933414781931958\ +7658929796456697439849089055853009742845594506749609005029155283\ +87206223717397886377023326519137153318912 + +[RightShift] +3163645694280286863843274284995813000413750703767888062060371447\ +2548769377833432476732199026703457620511:71:\ +1339856068247304299517035929669762064048406302964464795193542030\ +8616778680708128951 + +-14453551017278988424486997167045:183:0 + +-14453551017278988424486997167045:184:0 + +-14453551017278988424486997167045:250:0 + +-243110742861195501591733619507439366721710893401851315001032874\ +934976816617401149916967847829528780962:77:\ +-160877194558516235935268045675608004834374082748681492335699377\ +1554731869523279 + +1578511491667772739870432690812184603408439934845400990951391424\ +2042606791815444346835351458430330984370157647950174636188696067\ +901582998887813:172:\ +2636868630877883693962671763727310843333678410156464570287439347\ +867714845687034115945072876 + +-369990587551414900909444219626623817296602594145580698921004093\ +03886523992221862362854753622740275252526720452:175:\ +-772576394901327014846975657022405166419128733678436351046 + +664523869708591456637358847652496607157050130461836524747531314:\ +191:211729 + +-424946102426960838249158490450106473832054726611725352096551869\ +301633439915:132:-78050272313569003846694186065678698 + +-2477488754280410161548750939069:92:-500 + +3885576822798328723491155206700259517121985332303318810671479550\ +5721679465077987975131032494226814645578292798864088316633495241\ +72281732561:116:\ +4677092971402698635823599561404354384957452158155534044221842927\ +8654700322373721814974862542990905781201 + +-7784136527805956:72:0 + +173:199:0 + +4615578569620677656625:149:0 + +4905579994733063495470152932606524195238444602458194107223829134\ +6548096468622028014016518915362921381743841987304665341504653820\ +77:36:\ +7138558422932784735851095949483750439304923351240277562790767311\ +0236786987839191008266816665655527877597839669476765763 + +6860659646513892651503913841872495917865372347379124495074404003\ +48669:86:\ +8867194763939375066201545129950170866662337 + +4932993580763155556722299514:18:18817877123882887102975 + +-278747767898647506540238310041925406724691634519605101611983422\ +6204966588409142854005261436295569885823506142825506136904961441\ +137712103262466261:104:\ +-137433260320539729826934608254525294966481185197904919592889909\ +661839883445042061361887992911622135941137977531125 + +1882169262671501641122532021045100553271183358274828402533612516\ +4:215:0 + +-113308045504297792964762442633165425691924733661899127245385800\ +0508491250659909229734510933018929528943605300925959716095482095\ +0781551497986883190460:29:\ +-211052681327420832523633619087125036291637893136402829075950756\ +7637583707757125105214325586369129883020381072398200102328289477\ +3001878518586 + +57567025533800:64:0 + +-132072785244069918116388563501248470774742728409639846537789812\ +5119402223003876981196535555849118422274367340745545:47:\ +-938433581467776307621794014588434654731534070106419040781914109\ +4019259860231421876594989980795833320 + +332:218:0 + +-559822315679298304410139625796782279674102061246050482023351416\ +534297836795811816038579409314284017985789979551604:185:\ +-11415659555585642743745444064957984965053472879394546525917 + +-165370654266946240954843198912509990578949570887804349975976624\ +7848:193:-131725325 + +-194216125550322203453264566553636693381698:190:0 + +-574918037852237888178117788291362893480850545560575590351360319\ +3555180688115045992424767676514653030256481410814556185745502407\ +367635738697301:25:\ +-171338927105736103110944565621424583637967868316345092758941745\ +5659860577617599365837802790556744644122267189864682014508695127\ +77556053 + +22512966965683176238772169284:210:0 + +-571304627859240495908938310435848221105034147099897333911621990\ +2429210200375110530363596454364595974303366523715867605148466947\ +82:64:\ +-309704859338005592964733519326108195603366962254800737268694205\ +05469907491401631445860907279418326766038568169 + +-309596777436591740355404153813541201302898762127036944631572788\ +15893302883997570045883151320905855931366:104:\ +-152642996313836176964502120620181580006920013080253805054740742\ +4297460034 + +29089712758204609787443669188235835:57:201850430524318292 + +3772893855139299527739062333307773429569483215869291954483303258\ +8826307095346005890226120725877767624562307811438348806708086825\ +272884:33:\ +4392226523649063342878434729422178852336345258948034553885580109\ +062873187398771509787314655943513804180816259635420144385202 + +-107286131603440054982169113843212878238243177589333571934531:\ +220:0 + +-171860798431436300064006491940938069877937918743982288348494291\ +9605122825021394820452085254301230580701:35:\ +-500180753970740770641733228522754710510890927235544334248681238\ +27185564005671616773239955489 + +-736899297617589968040433744284158522983339306401749767611116884\ +1084063920382957413309258573768392475688901297388389668250828837:10:\ +-719628220329677703164486078402498557600917291407958757432731332\ +1371156172248981848934822825945695777039942673230849285401200 + +6494520002849829489554410861273180035603713191696971145227421658\ +53859125361930352324226:199:808309944002185489853551692 + +-8811428348398:35:-256 + +-472961757341800595001320983673882525933533190954393100297169797\ +9931906653571844489680727773893833490556432129528242730860714016\ +19:32:\ +-110119990385556732071871166972881771142951490114068868639219970\ +906430544647663936244340794484453124239957708155928243204 + +-950911712685005613285113124954832473131420819362306322439787774\ +9569705:103:-937671343067445278042307956226145570513 + +-879814295274183624334539929331740552569451467718612745386330333\ +5306363907959342879342226672:194:\ +-350406259275000216456910916623341 + +5510885178270303556262037168746873477241029300667748255749519664\ +7790961278402228092443936180348351958592120159109985931085584854\ +072:127:\ +3239007197543508321556333059695431531874740086907067131644479312\ +48944861718637164159925014157 + +-532599980357955121299969897485530088860096014928320106613667412\ +7658734:197:-26515022518 + +-751201308625232459519354741343046361775777470541080710058601279\ +4485802280356383896946090:190:-4786930913611882742357623031549 + +3399159309738603281217586458627167057868700201720622195013008494\ +5155275705802319966198750893042523074386045050458079803807735428\ +3187:206:\ +3305159424435509522890985455639702285024494664087298807252559331\ +827343 + +-163860953109333686549278104073264560158695392823410089526219985\ +3597217435977552163706193289327636667043413089396300868558342495\ +10158:28:\ +-610429618914923394282453149830045402641204717842527067386433427\ +630818425110560716579181436198814461768944967313222910671808 + +1169677491246850751212:155:0 + +1636926214665128743997698266803409352776056144809201:28:\ +6098025346789988666764267782879655632287473 + +32036789:197:0 + +-179819529231495425818261190658137469439875298005446780128564386\ +431:217:0 + +-13881:96:0 + +-201081314010698664682270171218698566959371060867314287561113777\ +01129681335253:40:\ +-182882389718268918552230544463508128464464844789576352524012488\ +18 + +[Division] +31082702275611665134711390509176302506278509424834232340028998555822\ +468563283335970816:\ +12141680576410806693246636917646993166515042744075872007823827560868\ +1517825325531136:256 + +31082702275611665134711390509176302506278509424834232340028998555822\ +468563283335970816:\ +12947964052188086825220046400459488806478932301299660383343378609832\ +0524868413554688:240 + +44966555772413807289969128318278041600000000000000000000000000000000\ +00000000000000000000000000000000000000000000000000000000000:\ +10000000000000000000000000000000000000000000000000000000000000000:\ +449665557724138072899691283182780416000000000000000000000000000 + +21098512396730698729871269182769821769128761892761987:3:\ +7032837465576899576623756394256607256376253964253995 + +105492561983653493649356345913849108845643809463809935:13:\ +8114812460281037973027411224142239141972600727985379 + +60281463990659139228203626236485205054653605407891394:5:\ +12056292798131827845640725247297041010930721081578278 + +105210958105812350283560987:65536:\ +1605391816800115208184 + +29614251982539440611171209425825912338459:524288:\ +56484703030661469671575945712711167 + +56978246562469415670177504927986945371616100345225344293332816228560\ +0752167:2147483648:\ +265325636428172773077047918587862259576172103850288988525666372052 + +37676726270241192487393385601963645387543268661126:\ +3162948793160806:11911898906396771271361947212182077 + +5381521826168870805682913114359466560841856996681731280221235281\ +1509347982906963231033117814383486428722076978472087592957820313\ +6046584241121779503933:\ +9668544070174123246320200737076440955801117408066349193856053605\ +114866903799592820480948520645947171624952907359157045540:\ +55660105462724064753070630466 + +1723834528325652138144287068293892732593026664886852512770150633\ +2776744620689:880523393623328:\ +19577384778297865485961051332688212998820791370774585297291841 + +1515496213019297763233177841945187397678421298227998213327928627\ +88716894139006899352549523462891658:\ +2837504714791238631293154232954335398939684196417059468771514311\ +350:53409469422883270966457345156344 + +9404536008735908917791097512770771428224998938693723982728653696\ +7624988457783138098124870580583091:142622867370:\ +6593988875807797411127801190252266506668676674421094260691453448\ +48811732719710346250661 + +1392866713189645633121390285073523887805815484659191269343858827\ +8526805205835017180928664701580352738609190657216273081064279937\ +78000446364:\ +3994371100075737516464195988347917583672726362309747721542773781\ +23623981222779902598092910701666748270156408025264:\ +3487073880449504057292395 + +2676049916504901888523537181437273561212503:\ +9341913943837642277221766393692439892564:286 + +2596351449981306834637204601381844425730435831169992187762230868\ +9984974618995828593891933726738665906555705360752479986:\ +1206034745333560481629722627489368003481730232554297338790:\ +21527998758138745589857127563572880142324265819094147184332850 + +5972458816709701659388787816816316579897252032508674599704692592\ +7058649324526265892715874715058327035883363955854176049442032564\ +309441091155243908284:363119954882801248387416067701593:\ +1644761940620239975738766021378227306491031556802927687823754679\ +29691855045229469191916674982018556672788351294907277 + +1179031947959075688529396972036519234258725785851394295456390535\ +71085372280587925290861953121759382460651235055866819:\ +6944577951175401788316018705171160466581578649464599557174064469\ +156454663085245879135170220436247473693597253951:\ +16977 + +2026650664981190253207120825245989396597395032888279675327874031\ +6428571783495257002384926183573616802093352971457675644937672443\ +66086144671180173:\ +11631153560785819891286797700491247192758386954476186081000494851:\ +1742433073718499161789694097861808628892528194276009183278062135\ +44214369556426533 + +2839636837334372650605745847855168203149142969651746071725807516\ +5633540988132586349575016474518431300299708784295829212402097919\ +78638935225269061241787155:\ +1906569338917937819117576221675263213381604280817243982366441014\ +3748504584308116848567559666016129206267348790454121809997280576\ +258634989:\ +148939604732445334 + +6371345663036222144347827991463755679970672243967017350001151581\ +3149043621560543503748545334895102360498672050891243434943238417\ +147807583195634840:\ +2803012481163625225461909183974367795369310930636762769680881703\ +4432088350353366279882990440057382400481292913134:\ +2273035067040180000190499573423209 + +3448761565369806483093631443732798385337886837688124530151199904\ +35214907404151562329499651293972622329230621111836:\ +1154398728297611607347339889796530761810873173035278653857672812\ +71070669711745252818396963830424218:\ +2987495984559585 + +3939766758764969916635508714517181254109527059899723535687606136\ +704576526260284945948460575945132796870670558656976658696699246:\ +2039193601576864286342975169071164596968234:\ +1932021930491755924504494733348282114697992509296048596879364255\ +013992177897790479689 + +2599570067192469214877296440421668709321992436666111483543544040\ +9558626508316404576861534763496892008536679796682457407142:\ +9865947223638288117488793858111648559036360190603549966937638974\ +384878768890886202494341034:\ +2634891519553273835810191600375 + +9953582546881861626054758979348156073957328868768555275026281270\ +3558132981561279486898511993570779719758639416109225470113031476\ +11758278075817:\ +72753887765933437843645860013004267290394240181603205482549:\ +1368116928528260130222427481511416637491457702447115334585560552\ +89688431510521935105 + +2777707354230450548824097922478859820718131575494711827631509815\ +849966141849784996342423141941423856370057172664302140424005921:\ +9887732931045287681192967993534615207992429003750153183843126191\ +7060602813748941:\ +28092459349393082079339190162534632411372212185 + +135175390055754599158926343035891673287590:4587240067074273761847622538022:\ +29467694753 + +1474508901852067097539817612956066371267340106475397703336120311\ +3477874932185558462473899178369214022436285310129280494436591650245178:\ +4880369721764333040209711516636996332699096293749849371410907103\ +371872025659064629729192743174282304112524555885248623478:\ +3021305732793 + +2458344447588213641014490759478425477739674803315383837923650388\ +1993781110774393121943801110702528757067967698929051580978401073\ +21258908424060287326045:\ +4220549808710022650484813532790907621975000231990739804525754365\ +8980362:\ +5824701896693376525879103155093475976637389780048291339267026554\ +0931549290645770 + +2235359829795993754168620762055024950392775900247276637443301544\ +6834872612125728471199341647165418100481804191461888838714869412\ +86190239242546459829:\ +1079446102417965701004684159063911518960227791488787275338443605\ +347380965151141469660172384738541132220010177148:\ +2070839687862853380670878474716925600 + +2261859020237326202277047516915478440734386573562935959890434522\ +4642995494057840711903761496596915458217743732578579075270459080\ +0633340:14203382288913876345794743990430:\ +1592479153365299674692434597912939527498958604158881610792107099\ +0007263922267553892387895651241383531760 + +1627272730547121895847771240538443456605751355188756262440532414\ +6146087377529161595400371637008556124469065:\ +4556444082143966348635739253264:\ +3571365523663868043578518888635769405026391569324510140958668270\ +949379670607 + +7053322761929289086579214480771179517943045501137109771651701088\ +637150889882789201445500740549670389506:\ +5820761818383944703677222410067006495183070681923349620668953689\ +735114782073218950052335558230765131355225215024903803474:0 + +72782874795717830428761392759834069051935680000647471818367555:\ +676006789231214575171585611498648177407768:\ +107665893235317651024 + +2678488124982838045802785770118519145558475116428679203089749164\ +976612334859762291787998110260325948674165281:\ +7944336793457702698467826157627761976858612495202494286895968701\ +65:3371569200324712887203021916554964731360476 + +[Modulo] +9:7:2 + +7:9:7 + +36049713:3409630:1953413 + +-5:7:2 + +-14:7:0 + +0:512568576:0 +-0:512568576:0 + +-512568576:512568576:0 + +-10062526826820804:29:0 + +-5:199461981:199461976 + +-8:7:6 +-7:7:0 +-6:7:1 +-5:7:2 +-4:7:3 +-3:7:4 +-2:7:5 +-1:7:6 +0:7:0 + +8254156815303331281824478486972822803470138521315156647307553049\ +3310587284245750487869183215107304761500042605982935676360476706\ +01141527698603403:\ +3106222408827874796097424168822651228359402578430811:\ +595826521675090943156444889338281014934863303289705 + +136863920521571139850391995526246731:\ +271472461994419020251392394864015015809448271748774:\ +136863920521571139850391995526246731 + +1828810863480002099820314884714568551379787631093473955109129851\ +510111922379100046301719263372:567966528088927995495333:\ +385016512426968327768361 + +861:7863900424362475800352483828371:861 + +31298056599359036104:\ +6834101648969675037772759079916190769657938079502342632053787936\ +8365474573457851465113672049521142215618176993202488827600681:\ +31298056599359036104 + +301132649529789235293089719211083808148317022029687377:\ +8985923799959631221206612:\ +174445061721403490019281 + +2281346996471575399039236209159382841371310520671504115347726755\ +6405318252398792419321309385257790020895332595371743866761791127\ +088953387770:\ +9148250100428904287337426958133211831148659494946573378694903126\ +9368755379167072338:\ +5712279541400722125363135520469561121058328307700157395773665287\ +3288007253222581108 + +18204134548129881201198951067056774604374867858971160:\ +2073934172352760752130567032660041512076751995427049488228564629\ +5445506418304709424209443465714405592187482184410284216568297836\ +202471453:\ +18204134548129881201198951067056774604374867858971160 + +1965719248782007406536742098914361273948365800827075363669455004\ +986089949754002988457038216772776062129273:55:8 + +242013738395129963274394550113335771936345:\ +5855690525992972254238170169720083764160159959672754491605994128\ +073126517:242013738395129963274394550113335771936345 + +25207834098049778316063817949139583672551899941064748428641:\ +2394034335403109766635463364608199166358381072109847929528549615\ +46998:25207834098049778316063817949139583672551899941064748428641 + +2806019740162818318268355414902530432876592478224294545991479160\ +4283116668034698476687974823971:\ +1582972323756438784786521922113831032463998151772165:\ +1502639578247286068956607674581436779911413521925746 + +7646186835577905185055298334837136208896759894169440852778842148\ +501161592245256816858212924947738806827200173857627:\ +52896776132731697503809705:\ +24742696196904988498029477 + +173957948128989810779090250062796172580059019371598891820856745013:\ +1799947313993959943024637237734385080822192208938376976998702929\ +3875551371653028911096579734599831769935491738680281300932262194\ +4984764:\ +173957948128989810779090250062796172580059019371598891820856745013 + +1013844499640750066199242350792839164:\ +19498430190523094593606790431509419:\ +19424559924072241925296038785858795 + +8622490124309718848844541942762:\ +2809153572052317438723547427922294488297174937286864313874241961\ +8679887592231751654390695362494978870866660168195696176431350266\ +533:\ +8622490124309718848844541942762 + +1072609375974667769429773421465107051839877399085576311546582931\ +2311070154546061306145007166868107111741792231898435921633768385:\ +1463259917133913245195500729566820615925140728085869641490936807\ +875627045359340:\ +1136336627131206018599354228978585378999102832169870507738700505\ +866665661308205 + +434178716356826614868022910336:\ +6634862369769044245968610325063754582:\ +434178716356826614868022910336 + +1415406337306642091120413528271804224015406023026499:\ +7034899662310880590118948531539534220057245091097123989790225455\ +718320598907482500:\ +1415406337306642091120413528271804224015406023026499 + +2119242142523650184634691519911880425707508853468661410230000555\ +581608937:\ +2008383355777044545530942339055540267683709901883165870378113231\ +22625039264578687:\ +2119242142523650184634691519911880425707508853468661410230000555\ +581608937 + +69585923602069681658329224976930117468163915197373271065425178:\ +2020927964630024370658097798162044021281840678272412358937742685\ +874564410640015186840535854739937:\ +69585923602069681658329224976930117468163915197373271065425178 + +96975588332536394385315130323058:\ +1315802351305852717882890944093568207768868622073415386004618717\ +2175427025633631880306918912341930581398571945990395254404556930\ +1546423248306886079218006:\ +96975588332536394385315130323058 + +1005028458858291820643604063469013555486792420347821851888080697\ +7432670023176937393067923:\ +9828498588177084544380049:\ +2075442833247971646995411 + +1189727226195844529530585:\ +6538657640728177165013773329092206385482700449306247249506942167\ +8887069241318642226489470387127398972818622366:\ +1189727226195844529530585 + +9913890361391387217552509180:38186248654:26592864996 + +7734726198125785627433577053431512633637067455428717621996818752\ +2575060294193475687274421372950273116057529131026941243649403546\ +7830323368528007:\ +5416039783030069273660577195279406145075794925910316773014188695\ +424126525007469657167631593847463121496915435500645:\ +4964806369541933457271704487044498217022879054817785578812091084\ +454769612571500637156272668116039380758996484864172 + +71080186231578425712419354407360937437540:\ +1176980859009014803857106593068944458701173958687578469120934483\ +659139465526500936333672752:\ +71080186231578425712419354407360937437540 + +6766067674766915237012186799976734148500111990982325235714483836\ +083584935230592805199170249391665243373021274113:\ +324423691845570163374834:\ +252059054229526041391927 + +2823188323141882531578618333354253113311374951152404070296742852\ +061375867436124935489341:\ +1728156565766891281495579170663414558716728498925558384066168759\ +527625796619507427264134231896939288551956874380:\ +2823188323141882531578618333354253113311374951152404070296742852\ +061375867436124935489341 + +262779290090979866282191640705312933450751046001:\ +1089280788909080319090197382760567576418992525818853374350259176\ +94325561016010292207663524094967470016917014:\ +262779290090979866282191640705312933450751046001 + +8360271732029582503734310894572886727078012043023629221111060787\ +7138104216267918615216895281636771:555311145:120907711 + +2366610337862898747408792992366342895990689944827378360469117410:\ +76427322404335731456359122655716444433:\ +30544640615708299605352469363039636872 + +97771381685586783382636393:2:1 + +435337671693078154773623349696989:834970971193485102214182395:\ +506732218892181192932591889 + +2322513198662380013738103320830701289301787295559139301156091472\ +554729188662496855277024270062871128249398241623259939409120778:\ +2:0 + +4680113793844806249835648380663376025372596959777178380:\ +2904997032241569138092132512949608009650334804336242983698449850\ +529852963482246181:\ +4680113793844806249835648380663376025372596959777178380 + +2117036483187135:\ +2956811587252136030883436487547510285350147695210005035315279431\ +098717006229487861087796324851514192381549211074032:\ +2117036483187135 + +5405482742629299751643548818366182062777872542836164736969326959\ +5853544020603118041671461286137567987302593373027659716:\ +4573526887169513117846642791864935937856091980821696964895032993\ +8:16470976317121249525195764490105435306011497015289420117425749982 + +4359239142132654586747373757743417755349625230737312986309991827\ +8424863374421135266551983:64803544028311:37353941578659 + +6890135792819098747339200650197811212669835729907537732727533511\ +643927448939258863466836536126445044614:1696179960288:\ +1324995865638 + +4586314642595210536059912268094819407838151440257177384187072112:\ +2948676315159331003320418147316303300898329201084534802048646109\ +2015178004559585679:\ +4586314642595210536059912268094819407838151440257177384187072112\ + +1295408061166295007189929428327291997766033572889635238933149973:\ +1972670797419796219560042479665734511348274052918937432115112357\ +6010380851770692946791:\ +1295408061166295007189929428327291997766033572889635238933149973\ + +3293867584681053035957322938418784576730188582989206165304195433\ +9408357109851822801814954109216343414383237957096721562712712888\ +0653015247183660828064748:\ +8765772621072630220689785618513364012217258182568420497034708789\ +586373847828131714253297705781538931737255620107899492006608937806:\ +8601837373552535609108321170415754873427613358207755850219844413\ +541399748799344512722771514163410191291986915042108883348141430988 + +1377746154164779665651413126473853834067870962817490604919589355\ +6407321117598745222627688834382600647541603271142562521784054:6:2 + +1667979945553031384209256450228364963479415272610809793730506411\ +9303788198076909155676052962187532066482528524026964557345352216\ +5283446668047080:\ +1259826323514238805985170200301657600905328450695745758777562588\ +7186049156983679189477135784008594900590887239:\ +8186664560221138319073860758641161066866118482696737858152118048\ +749012625273296415253954330502016523386663032 + +1604558310259870720456999045309843418780215517:\ +2314764593137129686707089727262818413583267016192300531282204770\ +7680963809189153750977995631646696992678572235424774049002424266\ +88494047914464727456:\ +1604558310259870720456999045309843418780215517 + +1409736422781005655489884086727910650059319122250699179352885575\ +1322893090584507459430329601684018675016713:\ +3037097985924054837918:2373301421797167262781 + +6701198625704:\ +3208271584698650102424018685293737567361186784549354155908725982\ +8050085877527140878207342707:6701198625704 + +6570726263552141736792215188836614380398234183174708281848591553\ +9115168019938378584836876558466414158281554497244823448201181:\ +1502182222571155013035645850314652637622098563760970718145694442\ +1198813038883709721878584487611894267955370991921368152768464674\ +7953186479:\ +6570726263552141736792215188836614380398234183174708281848591553\ +9115168019938378584836876558466414158281554497244823448201181 + +334479763778167:\ +2620180822092752558176129834916304534899606970427451061631144668\ +8169619730877675269585659135601795114355310342255614595194757773\ +7880241235214292696563:334479763778167 + +# Some that exposed old bugs +-19182011317708747655415793663840398231387658659684921854518950675010744\ +798088074160106794721561977563494710663654383617982647307741145787165689\ +415568325855995687160688325738126476982782410876428471011884289880631644\ +788665773228578260075978399410972382915954067959276715042755056729572829\ +093851913104244223672:\ +110589902576771067285674161059371867150853087104563757926013065022800986\ +359888876672387170062905874195180770816843413908369113777424570833424320\ +42777093021:\ +109391537162363400163656468557497811793910234020743027803411478222848317\ +478652922638466903221971706458039541796317994671218746507915453121571156\ +99186806428 + +-12729002947374921813333325067985579104471306056810166870370214872461518\ +835258302087462325432188644174454003894356884235513517741560628902891180\ +85736535643:\ +857393771208094202104259627990318636601332086981:\ +347124740076798815206019311966363093945724145995 + +-33561455954313714494272438259200225781962996013006223887793125858291980\ +416548560804296564715491363651855619074936805970007723556609659667595500\ +71261003601:\ +857393771208094202104259627990318636601332086981:\ +69829137374876952908916033728673445025 + +[ModExp] +# Sanity tests + +# 1:0:1:0 ??? + +1:0:2:1 + +2:103:150:8 + +3923:380:4033:1 + +6208938:141338444:179403587:74845992 + +# Random small test cases +35541290007:27861071413:54405498455:18392163817 + +33810311815:21623687837:67955609697:6168450286 + +390846234986723490867:258069:77811797476286981199753:388669864014945308514 + +# g=2 is a special case in pow_mod.cpp; make sure it's well tested +2:1024:159387639486734986734896734289672398467:\ +101251470522689220420018278313264853126 + +2:4096:4634968374896:302457470528 + +2:8190:46349683748963469823749683276389476398467349287:\ +22477714489988909289079275821119423277588139290 + +2:65537:4634968374896346982374968327638947639846734928734603867934764974\ +978569847636666666666663948673967394673496739673496739486739467:\ +39545100683930137608837226660935619825254176150139370772680647311426\ +83367133155871655171332348089412143539565993577352969480643 + +# A very big test case. bitsizes: (2624^2395)%2565 +79929780860261081309977632552711610540802328270286009268787208946266\ +52959801126270181797858326539991808408501955736107211154089990880864\ +13303849208224219100591662616178697815457369194539353353497852835501\ +41050889822915371610531527622477756791100346237932148802218221147910\ +83764160121545158487346802968250797762918640822953726116267698324397\ +97218709812746716531207101626249641544666652454598936868588048379676\ +16272912941048200311549530333983535276332190445765429717475889329196\ +82723327383286444096495073061099816572815545646462399372759381873394\ +86919484956198277784202729520512749754342112052047850740549446316888\ +78036856294503455545058266059097463500482961705306677988487417742491\ +15342399979893391684184998084322821589461452070845054017545885544579\ +571298686351226398527864005606439403913215:\ +57905475544917604320471424647112496473975795682168523689996102576776\ +26237088778306631051069455546703439634818835586436374397201459270953\ +73320224593906109498830519623033054321336538157343986271182875008898\ +46400895285646814945099135578078712638653971354390893897513549226862\ +42288943235147182911794944000641930092937330351756206882625430975695\ +44517498509112574132890275024912111320852904074917394291149467803521\ +35858911321807178002982306495559510988786798025982798386952917933172\ +94803214105228859170942097230151211488601051217081893388443911838163\ +36005486029723368697022501011466335322002083542926898677979222112122\ +26602746563675308094794277325137581108077975533806822750634437146271\ +95586058676179645844985231821190979452929:\ +10399205046598242703229657351883132701652276964362108506952937688714\ +32748288996020332036899375414937330955428206666889017559888570519250\ +50646752050470991826964779958550793771265289251619085920928563751890\ +69887180372385733236214632572059802975058104127044922162389962101924\ +84687865663461891419811205882677932740064370564080283318891658075996\ +58544432626283448453420230409266259464245167575870377225089095472270\ +35936225873319683727097162939426767650247431692626091054378261933883\ +04444592844359283277150336016415487591544524543727803303478523219741\ +67585351918391390323730198435093034895278122139553159165456287861721\ +05733915744785361299323192153909893286267220726431407206795271107384\ +11115626646378829487932946663804144605711055044827184543371896600950\ +5066861013496859002404865:\ +76383126271403199465553629505580460064061138700480822311446783865005\ +94033351331759734478813350785616549057262115034183484701333480536277\ +68750392900860337148760236002293999903452043982157916536463831543329\ +81510716218290076553514718078562286562453573978032941974718159086704\ +26254141182888039292181731039710070744775875012183282365743418038436\ +68118132938651461047089720835645326444415743163725663534054526664632\ +63369477979502118345322416804826584935088694928774075019074758940531\ +93696779256795084313220287359244619510038817488191412143951928835003\ +09516216069636385063459729195557820282023577637677540172121768705892\ +64355863735811421469235193223472628311338081133201771681274202506343\ +43861119601917402017293095701055272115112783553081034528116130152891\ +276971073856411987253305 + +958568327191:\ +10820434407851188405104973511902906513518224342681350271810370438073617412:\ +385412694768521967592874726457715560537359750887572236310781387057217187291:\ +124514485573662879135724475226939854111051534076732305767767212261825204773 + +993:\ +158082274092371197688912481356696199899964270448955828125938845871237934609:\ +195335598174576479907825469879133749630277214529613044392254617116806465841:\ +76319125426811367239700120840606231265432388418754186363393007030575232763 + +5837:5387594231:\ +52910803894426776035608204231136092295842162542576147924991587830017346711785:\ +41256038256951041015975957103736087906734912779021641091323861709915393683478 + +11820:\ +349248154095284306437849303504509069624812572044321414531019412890823663:\ +11695070112125499434524238623571455233638695379976237857792518028967433696813:\ +4877591936163920485322716677654737966141266950607206024720481980778956876733 + +1279509:\ +228828116455132585158359573618073983726467809680019810077325482377363026:\ +596955405275729008892203759914236488647769846458724773926971979942130809:\ +548455744959985761919173432531376978888129348803576565818991241228678799 + +1169325226204036541181168587818457846915410492286163370049583817559172758:583:\ +1347789004686354026667591408699204029024258192368477695588810277715014901:\ +986753196897611638420753041983500285520492197918271348656818055904410861 + +39684855714221597676995827906679339738237777820353232844682939092337386955:\ +79808721821529030962053171978817611068275131312667370272216709366985607610:\ +168218000729293476661981768796405354274622797227127241788417326533874081227:\ +10243904434954110191313565832244070050272803217812912164431747671168317597 + +473396006114590115230521230276516897096:\ +387145532418575837430469368595868663742:\ +554862946848974049157489689418354631387:\ +448855900130388136390865414336576134923 + +383239913102526615892890047333017777270:\ +5212692713946112175761972297467118924556477:\ +9600330398725582192064124044651400063154809:\ +553434761331054066751131351244038395387413 + +17023533902565202029648472226171284665775885307:\ +172062909283726569049023770937247425801:\ +2803129820108668499802071463467295777012106623420016438138627500\ +520764503324471534463345465793841061510744977815:\ +1087221030676278725112163308497001956646825599606083907052530601\ +511129847691028000053571012933461738616679305207 + +6861608600119069162748766903320668621565184418412102985517914652\ +495806067714718757017641467375130420763543:\ +6090170638405015131997058617056249184350028938641981546887188901\ +427704577888167364319592127129279546370159:\ +9244137284483765901488318500741614548852246750950515340492572279\ +249663219793564958021372197661101436416951:\ +4357639256086891490742558173162011739263189633058589469209912059\ +837628983627026566654010174880786564650028 + +1708391349301269900029298214389921761264445766152620652843393219\ +358035361114524948237829535432550149898389816132:\ +2879295558693495162441272767383253789140301947026867788739382060\ +6202058461437115060253107180150356177029255392:\ +4562451461011443048616592993727831094905333529601929282014937177\ +804484518010765376407040702135536959480150175881:\ +4780971485381051463987885157471185516431563444901967941411376359\ +86642717690683975282976174121121834972342669810 + +10517206412589906914919094336031596865011:\ +76918459253520716071622848977323758816926:\ +1505994032870020776188597437379504956214103601873594169817828353\ +64671206273170823011738702809865490437980268482169:\ +6782959072847327960243512935142614796318322133888530532951869324\ +5770409979689571346380672589348570036123781607470 + +11150372599265311570767859136324180752990207:\ +242724485078592151169084549880604092836:\ +5335081937310201228237642071226891497098426337909703107583644285\ +670654712470768061820964879543360755501155583507:\ +5289945663803755598608137950548888139591380435852466790487033227\ +703935262787324650046364967638572584406632742426 + +931466513478626427306310727788682496419061:\ +217994111091681034507066335081667319859874:\ +961964829688733829104056632507823404588589:\ +833173750092106303567501575871102318441517 + +33561455954313714494272438259200225781962996013006223887793125858291\ +98041654856080429656471549136365185561907493680597000772355660965966\ +759550071261003601:2:857393771208094202104259627990318636601332086981:\ +466300477512220407817532870461493708182430162598 + +18446735277616529408:13826086040399511551:18446744073709551615:\ +9742888130495268572 + +2066035337354981392130:590294614090054615042:2361183241434822623230:\ +1781635733335354182170 + +1134474769362516449295:595082722712944107321358:604472133179317082392560:\ +174433592678807302234305 + +229695905726779543194697727:2066107393815150067712:309482943713951236396941311:\ +255445792852673371383518814 + +39459263341931705341281566841:39614081257132168796776169468:\ +39768823762042823743243288575:\ +18000321392386817821819747971 + +20272506158886027804894759485695:549617402368:20282409301420215520289961803775:\ +16076875793871874811256029767300 + +2596146262862918777502064164487167:314746245562020587327614615663:\ +2596150595671908851028294725779457:\ +259452957580212247164799070673210 + +1329207713384983037494489787788165119:664613997894875751198207591023902719:\ +1329227995784911150537324190635131135:\ +74931525087637573584762278346674289 + +10548151117631103898774914151334543392:172799619169629461006416114606604025663:\ +329651139063474322636826247400920186848:\ +254360437154022212841099277211168659936 + +38376141213232727558396575742:1329227994546975833620537847773658111:\ +43556142965881361263351233020478837751809:\ +7882266656394285243334252622522460065897 + +21778071399863316876858889960666322788417536:\ +11498820413764356772438481831653151028019199:\ +22289866796490810914148393466930264140677119:\ +14729964266243087437392288444808082264778101 + +5708990752213998704593329684646961688917049344:\ +2854843834553050659596636958153505154652962815:\ +5708990770823839524233143877797963503100755967:\ +1213314932578782698488057585907187321685706398 + +730750818665451461617337784521558059081734815871:\ +1393626454453328567841481426032383385141247:\ +1461500243534328050602081880071791826653075734528:\ +36589747654349317493366392017756653058854469503 + +89070866165185702046997354469363290973544511:\ +186346454039417235798572176863886743203694761680896:\ +187072209709109072999178427506126808160274875473920:\ +100249235510137322305244318500270410808414700625921 + +47902131996019100606144108094978428095571288664305663:\ +2993086845361695763824823322725006109313429902753791:\ +92787815950867086729849642517788817830178254376402944:\ +18181546031587637786495774142309067527845892702867455 + +1529548788145367384096184954269576428877915687091175424:\ +12056429762861608322742191731114663972215007089166057476:\ +12259964326971363908120110422500131917968192676667850751:\ +8902920084964970240236816532130853187870192709742265794 + +2353913150770008068587063363810241845308506574699704057857:\ +3138646625189363653324706809064694288267491751083345182720:\ +3923188584616672689804218573216512748240601760727849500671:\ +3489390974396854920866482981414347185686425117732037645069 + +1606936511763450480099762299205357820433296497388387557425152:\ +803469034102116550437458728792540626818835681925841329078271:\ +1606938044241269568189324896739694197295702418787910950060063:\ +1157562321286461926797535419478313302393081562742400458360699 + +3213876088517798030634845491953821235713023677006992616701712:\ +3213876088143653611478475940912961815791384862556012511477519:\ +408162263241783712508107448828540402939725762911344125829726448:\ +122281118805505175989390918459315270668105883553864623340908704 + +78984217182142549712873118981592233473006640114480894037226160383:\ +5760069223485436434928560149104616326928233898135325375027216383:\ +99552222248912332632914142959201125252095559737149959554534998016:\ +41247250798037922665809643987819996157888990901800784592830922495 + +13479973333575319944101559938098667180961928064580133721038942904319:\ +26855457127760743210990263746907866885563833723466429463362889842687:\ +26959946667150448233089737658744041109190824095473979716229010554880:\ +4607597240742150841264334986939105818611232634350128984634238689279 + +842136766011397578903644245915826593531412765435262158042277347271:\ +3450872811831279520154373881535777460856934989266388205922935224893384:\ +3450873534956341851896676659253889011575130554466345406250460450390072:\ +2941993960288658419186702570424905470425182342242431371338739031000289 + +53919893334301279589333317246750913454504659246313017577474407530458:\ +6739986265053150380496772320847073259208890036638151707361168850938:\ +883423532389192164791648750371459428054925408907041210171646064226992134:\ +492758336596318698040859328657127140375877986248595653070848941543658036 + +226156424291639621926579153190770264338318253140113139871821757473724825599:\ +451871190736965126593740420689183849474145722254500160020199016340436025343:\ +452311985864973039565107702017281000194494432609785209457352422582971760895:\ +206371772933061478243841113960423056774774576761651915339101577209555247264 + +57790033794784404221549557662327731861420013371578836160427241519176533147775:\ +57924314171510248922886625261187774449046378992897298085839547689432814450688:\ +57952583724717841973873591369185127195523836514687066867214702092941619363713:\ +30824716483241910380864974328660094362176025123941170601847876346075141284097 + +28918869551816354203281711613902894032425850711410612119692317832977962516479:\ +495866234740560806246119743419725810834297242466511080670627014383220945892559\ +936815103:\ +497323236380839503266215595149699815784160894844461528162205565127963664108464\ +594206720:\ +440697051062127950986656813740859110279731333560329663474202710140688604235456\ +625459199 + +106799351796045504119751438634759911751541780368079101054831703056799294300145\ +5704188564864630783:\ +333574826615404906327500304126207076918083731520030795572399809917427817128427\ +78688178916162627:\ +210262853477245653824628919785807520574112980102524347845695344069257084608033\ +9296565121614087164:\ +409104360798917417291813850051124595330806127838297995165812231135684569475004\ +40718722077162199 + +458703222792498995654766639758361907295871229948786413097609299221006105306773\ +5952825387037031559982071808:\ +460489769191176719281070634883090802854130987372765146464988196226296563929972\ +3933955474653487352197939200:\ +515995193383849441469102286446062601363300939013770069105297836831971480370953\ +2563214502450470881158234143:\ +659547703225795194033022150219884091213642523951015644588235078686412285627182\ +367344348652198750000621152 + +196986157679658721490891675487601662607621770968694415540998524890432131851581\ +87202692035255772512656817673891379295:\ +197010019239259460322391226657892364459377568182195309352825547309153108344776\ +47441883397217965297498845885498785856:\ +197010042724685309927891926533239752567678950315810596221680825514112627345231\ +73779532010259679430892768332152438720:\ +137179420846547234067406976601358197278397049730470539175774522873573992073467\ +76021746214098327997514887107653801985 + +847391119992999934524199349353674514854291751712505505959030025038182456175487\ +06410023206098493171208237706404733847555014656:\ +846151640054596488392544893831962389136827375615193453811903893997804174756499\ +34005643884387451031908122452240583849211330561:\ +169230327991833950927130406588863731440469748857923375419335685667802027986222\ +849214463284936419152969154833126033227555799040:\ +349189575910521174427529872574358060849452576747366879257873145629782075381737\ +69987118124710215143697594673767867437417496576 + +363773922679155849804490373799047887070255597319813798670099566572410188562476\ +715746569693396483842472337060904644018022256610862170112:\ +363420748144189849661484420028667943524591114407411070567578632096069165317013\ +971108438891512258542050800333653426247960655590970098159:\ +726838724295606729158859740316021156162084950884048622161133512067230696906825\ +631024756704356676668490311500502220280677989703309328383:\ +943346883921579117927789498021289612809505916892467617091559887193179680886674\ +93495500793271702231092935340075784743548103583099497435 + +726817235936247126263260430648607055202648835404933070147906688351677352541780\ +455761429906966666196747516786299970565697677097477079549:\ +234093052017191430607182115877842057523848626380910523577170250602065847207693\ +0698964260600237574820110174647749068723384080950374168331821252671:\ +312174854958917499544535010352990586570582075637553335203799632779800065916509\ +9371268881853279967461640185705909541299326557227519445937390878719:\ +145302853941392118922007506272002487299963937517410130047273428475172876526225\ +9076047341515264479230430769734574243097862523252932932825253141972 + +671045713952809806399123039169834190798019141974546892007029164991525078219923\ +4391125404959464804845345485366292987522589442110638524087511900414515085184:\ +100557536540004987041680069388793478160856178388285075606319017466522431611276\ +04372666143401938996140992602417239266174708861116004272166930318315730493567:\ +117322411125256880287070703661466827296660099717666151256364253067407537321774\ +81453043340262460407996361047696194779616193209570049612020833710249930129407:\ +427871649943734485110261187040991584740792885674754749209956288838484438455821\ +658897465708725039952417256302479230141386301923866335632805714670209321122 + +278932655326622118269995036975129397274804915871779053661857452877736059384127\ +634121329158979878380308762008380717864597603986741316529923042329337194056562\ +72797696:\ +899755306212610356318503741485448444043870343919397771111093956461318054874347\ +506925592118887949241136986225190699279973940023756363811386274444692941093986\ +107360:\ +296928310374906891112672916920429076733917707224207361239234925375858327047910\ +642616560397719578137488697666937525679246721447350165597934983551162282236564\ +62909440:\ +242316297874126744650921408580636386530840551386127655793903111999255964792429\ +551816003299807569211621330176181568265209473311079342632474787953347234746268\ +71033856 + +124148179473785515753483900976495375463175846772040915179960100489407818801140\ +386153814821042480678618640451489409676707915268113955322684015273909012967691\ +886782085152636896:\ +123665200736552267406507870543825531794177933977409374905646479219118774517257\ +973807622099440598320501885812096771745713204136436987907373703825843415541022\ +788434988839731455:\ +247209634675622497908595434127935436962923052863983571692177307172631537244843\ +661156548338303197203448146561634356005137545974130825860468804615247631357152\ +530153440215560192:\ +227151603159069673471024527362679445256445037105065544871000576317073123237364\ +604084797373417939957837288408603530805839725771160247976092169911184119068741\ +367018032387764224 + +531137992816768042180194410275235231014748428305205626888268705039038344990275\ +830354075384778147544927229252517401075105596362556330873429304224033539575611\ +976005566560186153909092351:\ +265050813464019341782591409356985550250304855319320882107429943555822097503499\ +272972083491060855355721323865630537832749289776999351278833126739897988795898\ +656735540681074755105718273:\ +796706989225150648264712637003912871913902616519319137302870669417841387363802\ +156172552248205066036254625379206874854815904799303523142561330397016416523846\ +066183201328508392557248512:\ +698545628118937771982906207048042815086452530692273826870263365420275823865920\ +331297175545784912827197669087547062385185417204395003585916875778749766427837\ +598020564942703746008219647 + +228080258987601429783785474992174427586739769646031092021538411518877634348882\ +491496233308857187086201212813372631859510335831683775179841580083317899826613\ +3892944092033301325993915393173880831:\ +228115067660377094123994450837180666891393694772161695038634114516039674934627\ +382146111380516563790088849487371430448828251375203215238931943113494928476625\ +8187954558355770339844535454225399808:\ +228122032369942979810406767036506165373627878538481579651232185585577263193263\ +452701501572769356495314392670830974581266353880536039591679031450102201017921\ +9198761933328112699352214481187897344:\ +188118364158408827608598374748027473663722746113246066857055629489795083275585\ +483993987700818043460189047823239966027642347200047389646072848784274786337145\ +5943463799612120436208296575300009985 + +979780399682822443491892785902170763924781879549280551093039986318977412490374\ +820572934041688531845643651915891882538449654309523548461769956416513227908522\ +8686075817644680503147936264020312601634275264:\ +101039468281951584297686560036548091942411012440854522378852376905153792578820\ +526491315518099612383332261126602577172926074632204522288033372572884662174362\ +14873298305753687007109527313352488169563357439:\ +146967246829990890290903656685270947056224130697706076691594301841005877354951\ +511693670490721223810533170764128995482312897933437990829587501929497133433414\ +75336493704107769928389675253505708564947140607:\ +684959371832526206686430947871316889249296213907562741655046402973404058469411\ +574434903666572653568622512046494498859833252797479733824280863933973535971999\ +0333020252722024471681015912945572412442218911 + +841621744223245671643866579279256346136911547623359222174810514260914383937727\ +121410429326128729874900989894412586007929203561994663607708217810942721737146\ +26491757503017538570326008943386405354500810178050384127:\ +835046574370828214420674838257200536466910917751875501945774587594889789444136\ +302225444888660356416762449041493258337910008309807587888683709891384336253332\ +74759863160712788474606079777577457730028128186830688255:\ +841621744247739667719774695523853907093039222141056136701719295939675155834223\ +141149684242371435095129786018115963068262783083124493806231628599234421585579\ +21928826576429176563276365342658873320656199051680677887:\ +171641776792948162459046075712632105706046103351331224035634488479044326436946\ +267071750589184208741478002039826913665286507072870450357369747959973069038363\ +62541506807137632260196273977092987625405622494200180028 + +180736893273821241047722370828860910023880760767859964994951679501353749162120\ +203605437832944252005123541868958097681238184666838092849379709844193917151709\ +558226899081130864324270890306027182396849038235584045960808890367:\ +180692768076756988816453192173982571011886137644954034353729273534664667577005\ +041823639264451840815026890293403282937017290451562783468047486914361168600151\ +040243775282134184694362345916240250193020190224655532768042676718:\ +180736893440830578495937520520856965281294962427974927513923803474809907398510\ +127101312840561052766886364534727455968288789428988795776836882103119479700564\ +862711615006875176289790580203416819902296133104410194257483137024:\ +856661788868556497555753171743185880393161183385341462428419381946877665836578\ +199962988646553041182078781233731204095471916278402165655223689323271298503796\ +1339922330665845993661725775666216703697614062773907041502101505 + +776259092418999167049925214245436177424109960493498436136184095312197123376004\ +795375790473411612805585664979784011579876806454284352298115639603045683926030\ +903537688279162857882362427734768117441963255335355552816137136539678277632:\ +121288509543593157536898204330924655486052832909284930071758744941757945950880\ +258976854032621353240397386639778021043144249994876134221303021551238324071188\ +08492774035671616221114539578037521235144220388652802165110797155359064064:\ +776259219657772090649453843996866394475774596684687648535057403628332034108355\ +611066607174117655553905872561239570539253021857268837013419025583386516716964\ +587659533104995052034936360834479172532993217817302565615052417455676653568:\ +305302188836470524166781962849130967460893135312268963974479972180308406911754\ +538859753173126409205288056538854045449259583208628406288959956034674530999435\ +037939418456132677351720402924266526747303451369055972673944439836595585024 + +333400721643993898180167291500008858549337724902988425809863309629155281476569\ +602103172644528608068413148108449964895664127197189925898208663108138686848445\ +992492080997292009093986461606065890805476262463992002450774394420744247201036\ +9728527:\ +333380371857846072967701609460817537597789582723282597824650597501849679335199\ +343165565712820123477694623247671362715837945406204088089169100429147171465816\ +269689920112476023715179203714249590278743366983751924906793203159773370967365\ +4124545:\ +333400722264999950588128784924189501288148781675075833874370073621442316760550\ +969457847490067371539360403905027952438931451912805916056294160663364958654230\ +194140933939406783324948407102983872817828497801037425452968782973312618394797\ +7359359:\ +191012848913510661841936492643766538604255959987945238353884924715878564806758\ +593327616012865164078752970576943597333733988424992188290404523077022324817809\ +189178118148526234993783404998498531034729518740537930828760779143026209264808\ +6551290 + +269608431386678117330124798600322019513330037348510807763587572608984684820485\ +099507560920847896423415812921260088023923470440766548954896480563235486778166\ +893803674160051142780406433220103092708748615194963012338074677237186965242392\ +13837015188504575:\ +409699419814540648825903090993494587168941422131012027314724435806756415002725\ +730002734134641050555130553488952425241201226890060478767921277139881665021963\ +531696929957863896374687190132914171366526591020508308973068460775468838191084\ +26647076865:\ +286388629485329797488072582585056868548431161022570422255787002697298702709256\ +813771944129479856409438303437569682751301894627153626144370650986351427299852\ +075166843646142669895524464872603999221366997488770858351184230163999499423337\ +48667743685574655:\ +731316547320299473009802948839718933699371968857389661733759578532296057021760\ +846862432297683243528454189495999299873352828281770164022772481254538444068775\ +853418331116795185936220024821351607176607452472034832022557886060922843642335\ +6447770719100090 + +765579029331933520349539144930367940127041808604705953021365376767787488271445\ +567069445955211807579555895347116551864815362902663676261831877992582684811375\ +405761076827352616764484775509105057267897732024773034428016364008259105572667\ +3957089914455994872627199:\ +723633710948987223659268564308007616554309560380963432126033511509908717585273\ +546626366634744211578042747465871860594199818505802949748443789251683879775797\ +686215215798462109203266446923665330390385070823075823795278323802663655165931\ +8933324089676017271046143:\ +115345488557755414330776361322113119157258926529173637847203665301440120885478\ +677335178740503010376386315421509236239988383771391812122852150074951469818852\ +727753749904943486716982108725368950052795547672135658466638620098498386809740\ +293849492614104744086994944:\ +728560892737633947421554702112353738450141789163871676818635153973748693669573\ +448479281687250797619040755589520842213503985213836318323035348343126193465939\ +757353692921056693815541766204961643128445990868294388682016195348690362004520\ +09601759079872048794697727 + +264147265571676471792517898976003535998795143544348208307292049823228793860705\ +374559427272086581905030550570828405770064408977632805085552985146525677734256\ +322488754736438903318375960318613966766018117061799930785997358349430586513103\ +312038916962237091109489547264655360:\ +799670723747643562513858745954268822441899872123093356057006480952384548460543\ +631942199298579918456981801660713366162422040853699573046905509957873091593368\ +133494238336537470666970520103625275991862213504434346604932739824466577304932\ +4028957831645086285006850763061217:\ +264147266550926731590824490543947454035145979096502036438175149762592264948052\ +542099236682903142675633548390667785906943794578748446518858770545408274764751\ +076017093740752673070513703608300017969039297842666469024930681887370863818660\ +285848994819152936053058696319535103:\ +163960117509537169885185765544751448072103166533274802711689286450570501314450\ +181013914551560146294140894410969131721369255390050395079891621116407024156723\ +924187766467630524002804723042815349651807589429463613653227100116585010070145\ +598003641941695701361320654300586127 + +113449521136226407080100547456916576118865508424180848840856809509142657150436\ +480660810667328992315026289222556121139623497885164415957298020481635985305605\ +502860080953192373741846127188631866780846841609265891993111931115007469073288\ +2362222585405239700656024934387045151415468000:\ +113006355563382985070438933906844873784360292080648809339358581299294122162670\ +237023460411912253275887025991310920185401330365056885920514084695272763779288\ +227507093022125848698309873422797247070352573134267472557093609294915418676935\ +4491255378244606632152899102642090595430952929:\ +113451252251926523113481577009550261072578737383126609669712152864328986904013\ +726400467183882710411514321846188826070133509941606299192799418312429680388185\ +237849562812275619325288787338695413830801349366539767528834797069631336562598\ +0387841130399603245248753787383520821927477279:\ +372544003677066035405845677926063649933500301956988140070003461836409427635153\ +936260873454884884874872009940847169071403853728999948362041938364702514916481\ +082000540185716047517084923352347661475097928347881890126582391727367583267206\ +393623530525674298394598905509422410807081963 + +966917874568594524311571965174706744093609326805553740939445155015236530109245\ +033989689780678579986507554665982300735351491240973975420693019886517912302912\ +511033560991971824155089718640294034542841356774685799518971685297763052248371\ +7469711426817903212413144671394300484252198769176084480:\ +609080295977572689832308095945886194467480543485618753872525971871550249966312\ +822006640286707535097678388269312872601063152144665166593919160661696670770012\ +743062660382423279958730175949013672525745171749316593443910862522017201177223\ +8908501840931275225406292153278460133489486073333547009:\ +974471934985310293566176538924921918514518021155658140874447834136755022981820\ +334829060040627153420323935144848734558814608844029992218681633839376775005733\ +708069440845733194737993558642051221056493406346308358956825022947724827679150\ +5223900426631914166797199334491131683601712803162881920:\ +394728031137500513977875623763694998080109424408953800199525424838888318255101\ +044822035070974224776033481256740912500655646727892323826641816942077847990555\ +737788184386590737196029377013569942187918921989370709925728581168049584948563\ +3240371548476102047466490293292879139579697199140874880 + +209304571597029880536327127350730604301303890590129859247148403454779049227791\ +000787049827716519533789285419703922838938419119521748941457364776647918082787\ +941193483581643061458333557113287138430180563179177328854984566574876878384530\ +37794606238598511641155256579623743343806000539885327402944954368:\ +209279024841070810156553453175825960416360150761125175448249915520950235542877\ +360994750300136309149181066825151604457653711203734155990449940960513323208342\ +231157505645877711097261455287627206443335834682522962423900751115992671106504\ +92500016532899134210933050551596119461807513511116855553321598975:\ +418558049682135669341148657057337158039854551492960163951646072735018411026570\ +007054422575498875612770201867133759988392550729728519832552403006144140193552\ +153931499788766795891368901118721291220761847511166344568736230790146097003916\ +57957403476843827680630012670026245538630459324327636859848032254:\ +345846932903649047146070812047826896102950579824136404476234816108468580044146\ +291819070371280880374028615312562779390388495816606025083527127005543935189606\ +624949010774397812503965528275760287005029980654108356910082613864872208007537\ +2551777179070637720019619810793822820020917387755348545183160774 + +205729651569860332744468761005074635557707378722726041251039513224449459951372\ +746874236333529540466692983362620887350196678766665942957179982515689132953436\ +974770132935136642921490017990191429501318761597984560961381403053751468025261\ +7330678898606464808467216356069779351714522738030869328034342063079423:\ +884802089814944721368167913913788796264207351028519141178657049255429962231811\ +213471239485727840742721413217191357189302492734371482547349372948881367352872\ +033225203960519276368969491322677803673533067904995208079702478431589129875151\ +78023540558315546409960618491305219699925055693238918058582909723202813440:\ +898846567431259343332002080072240911623905610443476436311397074791911428452729\ +756791719638955581851459832631885672066788520121311074527003147323940523864051\ +197838996667043729638804493655732588026711408558223326986240742586193054060673\ +73116180577087232182040703207053652838392918223507389069606867244494618624:\ +330976120980886415880341776439141766074475070923522670247407044470660056410339\ +319047989087036151909966462358797141078288707480465550150995645272681354267129\ +654494998835125535045689668286072397759521435877473290295637545181814670935040\ +96018320630022436269224758382752228054160058737590227855261477128282046465 + +828634133235552891547949415996038020141374669297375123103501773454571754706122\ +914392204861156701708904011181338903063635143258893810617959224029486063329457\ +205028044206122996724902658213854905714837419353001726739501457021583785683060\ +022681268508478863876190541771622528094967653587662228717709292407057524105653\ +701288855605241:\ +889460011200789846558643724867431071648613289163004721800295399109718355338759\ +465396536214836616175019083618512400307417342019562430792158290417501953071388\ +907983538193217949876043007563884536448891075853968550749682439929375683628205\ +752681463645592019336782190426373657100855961915581360977984304404165600753123\ +703388161:\ +165807995089806536553080841379748499141419085711400164677283791796106513225069\ +933739851982831194393630836086467724121390864368721934138973430682848794624252\ +423075907830879747804132552275021019146514591380754570367019797503703664587896\ +993738784880257782274555044423738596580482485691527467335988696684937865639685\ +2589594599751679:\ +110635934182491981243859603763270543062085123156112531951423323825319710149786\ +262649487152256583001266676918239684245590236339101515601037814051209984411474\ +123159350277508478025415109219339194646933369161499227288905431119864676760349\ +219188381257693530391521680321264934362184406974021062841858562268094830995002\ +8192127665970318 + +150541419965910120885326072252950313344189183651987156815556666099319358977548\ +757540464956785407394966156474690665433860757820788208660505875454348822149567\ +833646306056756976268576008371933441783323146899832241210042622842820170922170\ +013073943000246409301401210947583406842573892339213553363242404793894576585917\ +15281979394194504179502637960396672:\ +458811110836105842892163217003080194920756125830221894885553163087430983606024\ +717514426394269628398547471083288557731642073252835200932599858655380701054336\ +739388989064110577905946637280912237005530686120766138816543134470793817826293\ +866180382873417692611530245913473019173332765419201619992688495465334977679026\ +16567195598932572455812410567033855:\ +461181854392848886965768146957613797147072606861590104150394760476730071739175\ +596911091201493515279199847197192254824197669058225673072549923240766228757219\ +299581067077447976564125089047078909578922878743155083031982942509181177816886\ +002114132413025677713368160296348727689034692287158664841219202959513613314130\ +26230956943832864125398233169002623:\ +162590279346602887977164044364443036449074286310852753145380867975929623403717\ +268705937818130556165447153611768482840789969812718919936741633256475037595880\ +589124428114502700660340519613372248238515521135116004539137604390650325070039\ +612466795694588288270783032230885065879047955794602938171974629709520283251314\ +59511059861134786141425569583552084 + +564215126435806420341075934101272051464484951545220849325716367147299918729635\ +059264315034631721012653124597426754863468803216200776820224611444355433544089\ +016953714499922832879928217567125518716263848096589402254946093084047791236233\ +041537620782525730166766620470289090257218611836032142113856043568548993879425\ +857343045015661372720768054473990769502917287833747472:\ +153985312207225573165801361717786415307948003209947275839192231423981964556105\ +831862996273658574402514739772918826503389548822333466586133449248493261025380\ +513000108958388124906407295157074190586877472638369698800058959415862466401009\ +134935248102799236934960651547161557058439807546464478323842048499236473561533\ +16224450501781239567570407442384568180523024:\ +564215143217890131185890171875808697353084826602711923044639015553408004509708\ +910415566240312984054777798822673770842058220177923549254407869260660786051572\ +546936867292468398632851404852714077388847574861791706472279552453122259355001\ +461517546751407364441206351253202963908807286144025173428972804993699343157175\ +636744120098500835969469443985678727998677464391892976:\ +280307553102846081257541846769604254437229063221807779862025516083645039959265\ +055718231538583268565686285413775596054577834139317274122484816751543024366977\ +847275685572018333067845653917320453037019259792834349890735111304353171755970\ +499652255412351191889178879306173768770029810064429995148734076934059455174169\ +846606500277900935967350034371625167814786968465071328 + +156330997529958487918177086881900440884006295444161043164584305911546310847924\ +024175009312456535487055875848720644484680186956347044362225642378352742268050\ +758212419446221677535836858478498438304194805882491490454166685752342090513455\ +839266832875839358373607977369552143320870423678628647403216466406948804712068\ +071326141631606511494425644601225915396941271955031509422471880114431:\ +104079318844838484272635474910207430779781510675090297991813928494995314614521\ +465462298090978135375300201792534241240585186557558393772320572916584658686962\ +210658892592424754545669607259944080726279075432472552301318052643405622090465\ +715301497561100132576170262836582815019435858892490536663887532234587320546911\ +83561044250986692200937236123240394613641778577730294737452449485455360252:\ +104079321946643990819253092012819110816177345166777894691533695943646152920533\ +471524764029748447855975389513264451712384893364577346908013500942202327306962\ +342882703907172147804714001620398701185453541494006698123775911874807200340621\ +933187849922703670200018620699727381486516617362232575982037404614229700995691\ +80609675206658975547530939841011183137196154282848918198966096478150328064:\ +147394054680024029448656968741795591022064260997135144671866502722895020822951\ +300747727605658269599951522355026658564837604325782631029718165533341359522958\ +964854562952773358755940140738903560261989383445929458033472219522327666099054\ +988913964570433307551281841442554322619577432710231080687502794019329786538349\ +1161555081277791430319129659894494481743591713783944415888427100634337281 + +192742432084353737485842854839651647001999897056173812871623545743516531988117\ +339965384701594199968858421836038634383751007277236960802615243995875484352722\ +412933609661767131538076407390574057362143783589050340998588110618896348883696\ +125563943789850482263335924348264978463696800136518277159728763582468261584108\ +952187726976751241197004762530942245967214454546324023837383825253721452567697\ +794717487988736:\ +959962193221060261422644519806640804198576629442953062819145414385117049511633\ +775715837809110979377194495477627960580385163300794684707031449896541743697640\ +300188397005993187221669181657827870954976790909453889666881000647263703290533\ +524554938671081027204878119718254611483250278714622283503977477943931268683567\ +228821203225209559904547168711726849817053683598748661499869606954765369133370\ +92229189074944:\ +287988692297244547960275404946170019735797583233687873238631909861129630181055\ +189937592294158362052357338925349968486342493580260686965128392458005042878845\ +787311719474658585332003197143332858202877105771179249083989766854910119274936\ +842225402329933307146112411447523761159515134744334199364909386848804189892410\ +642391088126216254627620090526321810543360916515537224247210206457156899530409\ +061785821773823:\ +116658763061752490388879442993468714217074502099780965508880493294489615320498\ +598916180658715224704417632908736433904267337946139013157407044465122089802783\ +402958839940493450623334698543728134227514977113292860752136122773954368172506\ +188585803287402128154114938464056710514970418494077099789909303447054979396744\ +953534970411543454895938681122288344412978480900638676348314872424347571041040\ +934996425995656 + +619786266658567161458334382543441083523001148027961994136463415241099020928995\ +027348108066376027576593442291905823546798067190985799584383502414253504844440\ +730247574898188831695302726465094372426547724102755426430985888819994718208395\ +058390426442949355070523840320102861103333260796003216406079590341075332153591\ +339953821651864082320219470134100954234839910065134150444399772935075524549882\ +1686711454288900391171944842526659:\ +708316352175880235861911402338223989844354847640203402787955259709095340391209\ +634971200147239107038172468635365524442887836970875407279489793714711202504935\ +603186491159650082737652479768187392853096298815404051593962772271625178036087\ +090235031173946705489376232274233435142076195961429400513783701379969616761834\ +406298266514873959908015450368421808843890754846316114141675745722301860170303\ +8186609114675801882755362128527359:\ +708327159071245727607641677856430760645108002834121423472231212800750464874953\ +994009996794996963892199050747305909874742043008824389073021408922823225270950\ +434784337183894602736156016019366364545812441288006044438890042032361728432168\ +647126262798386716769056482631622196248090362085776986511218520225633464194661\ +617883270231231246633118625078236896634828818179714270386680937604524829027569\ +9166178896599889783855804483371000:\ +302060381822935520393057552646980656167218247774880233099665711638991555083254\ +988184339043172276582509416808617025829546481721511566400979658296724433339381\ +138183103744717811455322545336544390098451333751418058080669065089698375948663\ +911223018430820919992809642584820022888411757631435070669578704942412723345473\ +703004410637171918163407825473429891681833137319253906550154525572046389799615\ +9415772989740353291713158957011339 + +153121807390302739814320555790491322156896526370099783033527376357833528629507\ +072515691840100734691181994318393269548229995135098319990512192626937617475424\ +997690525810727128795715843264102277360123945461634057007045209878677307238273\ +136848869249575375012231391768983573912372523393596396428337722854310251146437\ +239953120196926275327085598161995670186316402932609647786505944852306498255543\ +5549425517304653828321632266676000978771592890871297:\ +653316492411524793195892078547995825767516477217743425556207192884824165114775\ +887614442622963238321103829199042465482359783037710576054724960495221679655768\ +102679238927004930412729935015150226360017870925801117314655049626936769818734\ +136698840856955739890901597723331451307695069775326903870772317081632928639314\ +223760409198708384384900487404031387838282988007696741415605210868542206809944\ +87988820262340914486548869329656852304620641304182784:\ +658420452057899004207635147423858188617237713694681182960969189672458819472321\ +865389487378756656005747201783161436117773895089844774512676642936245146868932\ +496317002372523552012535615409675967307886968581018437555486380290655194321212\ +490753879241593151391416092988244869095332679547555898527069208024136264827587\ +406357645812242365718771152871395945234828080403153694761860209053482505446893\ +76096785758323665651986023230985317443529264307572735:\ +427098318891833150606691119955885207789571852401748509159112419251105429122047\ +630344479122893363065151314789568427503012899811125982294967632705944062349845\ +198892639907564700515687683476929508115943147561825217902155847790068439569814\ +968136127749809472291056535294255579047357877479140580598724255984129295730809\ +046715535219761247042310918587648037156504410040932515583047680138614669150889\ +91584985713380361876245120741860499998309141578063426 + +119691784090756354618475125889953171002036134515807563748079343880340594084231\ +503703696613116495657338394620973850999136042045776846616304492013860832778811\ +876296550621270497835164496576749549491607887309667857378295212909075868976019\ +270457554009833636161345471184655988634635109445455685549672896498242279296548\ +581782062314473968211379339320195545598851361344026540909992672508928806916416\ +6070460665693449677225330807040774887885863989834766872962436454378635264:\ +120751003418993136514467777966933214451558344083693106320774693531277965212748\ +123712723108409908609524943671372664643442820439616246054114335461385047571898\ +470435877578511065533412260433147378939396808831872774416156636119760608984686\ +375845719493409304186182273867116770354858381276841408315828240144548252654063\ +587803984461663506790631022955067453299217870062362109467777250060681435305211\ +3332587496286737780523118478748777405220188226473576965343499882873225278:\ +120868694455463890062105000863748067534460230373773776112403745267479861381124\ +125190846118847827203298674888323045418097901644329877738540164830443413631059\ +273497896767066740208861206611070835728860977413356308230070436198675030465026\ +104452845273083395291485424709762497423540532726191452535634477336654999348196\ +997365083216604753758873491788084713190659740240400641739766777125835378858604\ +8393559917823374804348084365752445214581069135270586621303802552945475584:\ +958194759315416644126875548259533242624955602300731820689682836016791464332203\ +610662447114317797562459804443140515271196956013571558349703589323614834378591\ +938642181092274940644952240084099929826614029057350142494858158806435906750389\ +637468377205892531502218773581812451063196214364290877065957720575387909171300\ +276632758896753184683770343175390824546838017656435941331331298229265536628804\ +262334171225139421241085151179044502022429281286227203444516024441896960 + +222312083207177133687311925138669093563928497099927117666030242446307491078382\ +979424932869501410520911530129235023661343294916529463305250947205042534007484\ +680871586164029714558637507923404030751686651125368687405052640066803140940597\ +689331760866640108160581451536268782896738408905937044691993708685252040548299\ +740910389022371269440063796535182866312087520132122618643126958518731753485941\ +963028484337400180363745363062544373276399647832332115882636263663929040532875\ +45137729634304:\ +551972315206063507668961565866195532640067153199730413232580696204342127335474\ +819404406651224302958880776551238666093576090792093189432499246020594211834908\ +026400210581296554360146614372887335978753526354636055817275779279033657100763\ +646489845563689520138636501101498644620525615639455003220053189532031342350232\ +139331381023004437925641490493987718296400242369486185901958756946221440080276\ +584593117957373057779314982014493841672253508388481953692431909141602700300082\ +2695447756801:\ +222312095532780792495729747304903173001915640076007811590115687659256710194618\ +602357645860386245983780889492087709710697935903115249605253792576276660553224\ +762447066292589955536234917592485038516259846884318174800149712368364251954915\ +530741710063434496140219128568292832105535524487039562653592710057343318324594\ +207899031572702955109290772047658923011488632173711704642888117589900223316658\ +470161939008073537120018952058648104319107165880786294565056218031781875036082\ +10505947152383:\ +364703482242040826179683217159847199718534303447383460181587832695349429508740\ +828381297990675899010066835083876695749292366947544741796326541183653367663448\ +858662489673784859632032361731246952835955774475093345427254905041782190144873\ +650108478410002261875610182455653581061846491564826677369668524321409245219390\ +824606803330049019199929037577685492370506122870140121866506987832313437477692\ +132622232761651090506331850971618512485198032209371437083104544806336122122736\ +2415161659270 + +835470119115520366465485095342106120387419298920149693003803589895808498182504\ +983286202220727418337337207909269990257957649105806780415934737679480816773820\ +273516790011393173384180265132943339477110538055082922309489559954517547651743\ +068351949242116841876424691199418459581205772134530173804916500398071970155716\ +922198041212121295839192394068512651615408411517444996976338436334441134374442\ +713655164951686636568673104074437978097901431528740467913275058211989566315928\ +70173066361218199879680:\ +410293649748098476201089630699481985224428497808971949270996133109083534591600\ +670527701955888156758454388111767623476138314652381907706003734896671448777355\ +984194654234823947975205873523969152823275400916148022876057112565895945730947\ +898902032152375738320212407368207184938289923571482058289483328400078849451781\ +494817989808064786401605330488039627168817711056510709245379074893123005265440\ +198622563570385829124084707962021763868731837706296040997472466128022701381080\ +735411984967128336633726905614335:\ +820186817556158186367038473869064839994319799765456959587833370810414083411158\ +254801407589470287722544233582367854026817545027881527768493255338366870066888\ +883492431923420017990172932704900043518701973291327881583990562288988556072718\ +797041582835554822801600149187529479456735632658100596008588685836761992714026\ +339410172759218320101282566836998419830856072288278488644518761524617056827770\ +234653382919693035187143125872988702135622344643430943915449281279745854042337\ +638536654819416181782103701159936:\ +675548500020711187873170838699317917071067460299127044209115129964576134510219\ +233170044019109685636566374840522184243533887027762119168428418928815966546246\ +335720281364688363402404806254650044381401966370921504063539292432277193902087\ +920366860582143125494711216824784927851927917872947951215648384329113756987750\ +587734405477772996825311824091354200813861933343740682982084916776684037811197\ +351928854247212562050174291245613540754928441172715138221125528385004514860228\ +862293768600598689250813502259200 + +756488815892504791004625569469850407323005400004366825207404880603579388162651\ +703075413006205741038090446597811692301531429251478568422655419814548515970242\ +812326082916923728976231890961858169567593524916371244544560188029929155491827\ +134623944636360217868055073268816228683761207684283469651538626753605200082212\ +376733114514981571862595679873708623166882437418411440280485090986420123182846\ +130264786076551202656316182175195248580618478705551455804205337921211363902792\ +1328660178276411994304854590561064213923122475171839:\ +524919320813988798094429054599723054652749576385950359071221442940266292048262\ +089959423438843494841640614151978216142379320930875545712205112045956996340748\ +510470311175198406264181115585735800827638688896471067176058188165078200739564\ +779352830424664799065003439382184581149262885183468097883789821076419894338204\ +684110415290954932314416633174988108986552716580951622201464331628605646922071\ +727967016015052699481645695546827982409220685913557512674201556843047948567320\ +12285735168099112790094833546362752:\ +151297763178500957676005793079503871808386976657240934483207847471025772450667\ +033546372863347216073852970411406489330952645048794316352726756320864428846657\ +451417794208787538731351412830517858010136176764071574554347982143178338298753\ +957404515205021833676624714923202238014375878305791745907317350603526871039417\ +499008665516380550421100807196416795115511752701599028142740630508483652342112\ +538377218527807228660221741802043890941250573340365867868658881226714445382883\ +90455437106126668343798555022177143445970739238273279:\ +706246357373242323651940744685811402297938886335836541988798279900547372639640\ +434568794691568713897746219715011960618387422314425760839536521283782231367426\ +638149049640380535167357481834788692421108386515754582099692858890072506755881\ +340585423333737687422160088887489190828691572998521664354872661477038917752581\ +211449873821004103651684533487921980935990783153174452907652978410436458340727\ +334522712855647100019370079018999372936157878410676623861134810944127539967714\ +8042656086991768134743565748018330789804311913260878 + +134914273957711817215491954130516625575218760622755806963876531979253214285747\ +641194554588882150281649580177869476612323276133217267570313678819356975147085\ +659263513840461834326154742273172704464743046341797711860972635338575790137015\ +259294043624888982908506563507262489906750942708846822315725563835081866809000\ +550633069490295488246378567577889046897797418739651556054482104963229769323366\ +477830288678375028712217783183759725102446211871376735609188495755722263811895\ +292592874257800015092439407743737673877281314481833548368387462303548397:\ +139547555813926683976421720270092560382963651902738755917245910012093643523143\ +643711670238254024616320509185269101827510000276660615336935193934446985558649\ +188355292374453790156141807656886204517479036372370432904348878607173593620472\ +446809776093481990260083684041394656025353396678394131324792231208955534221337\ +904393559837473569151592354948531482244486913419880793232269610976638201912325\ +512816802252531842160042924624922163707026881531578965042022203590528024136270\ +702522457610210729719877148067364869869193140363617404084902603658362880:\ +143908416933111381584810762138139711092365141100300394517267863550302806783470\ +597896318187669188526217676933576504844775887690776446480013942663676114056640\ +475030203125048375572942808228473583270484151796992726677207094887163056882629\ +224114079873969900375787619394103957169821647387838649446187620260920070333048\ +993174449935551298063499061276379132530173432160743068632129643546082545472796\ +435903332238217544615526557421309373919305927845490931849432719976269209443476\ +906004384628808389021633363107647214209685671746850846172055278056406543:\ +119318039859070569138149041519071295649436048820652970732706136473549711088970\ +848686008035761997294270119817035346987165565322649665312074113561945974034283\ +402248272206934123057945527272928729703511632790319407650864924750777574600718\ +280733543180592586396135755088900095726047018815794492555324551324738555073151\ +955747073423510267799209107297506834135891525427123859309210608692110492650024\ +632686644556709428361603523869111161894211225929164802872598834129533528491365\ +151111244022664430609675158094720423643928998542728274465765072677699598 + +482662134159467834812180767481173215715676742301631186501951391004198900377207\ +373589641343944384391440443178479031774560347819945250859069133111772556486191\ +096174425987664662050884831693651483182498574572407306200851620931672138233584\ +102711632254415860054789079384921326111412108618469341200674908446602081895559\ +527255068713571272693488779379312492209860974259702366178875806932512054439761\ +828304067214994678088532429561380223412984555716296603419647510999722983599018\ +402702474546842510376859866939455609421448723497378122855119713378396044836445\ +2485403771007:\ +482662134040067455805875594289390615545451031210555334083920141034036154844025\ +190757491350034139955422824242226851892262797599303963596736212929881628361851\ +338483867799795233369182160622541109711048539250430799191302255272447158707866\ +862214935616821935735521837178124737564314545318714540695685555657641731255622\ +471250984878511384547483927097075638203154103482553439380006457147914031074042\ +392936783369922997050945257733341963280647502243949126766065410802825915931599\ +442979251639378705636075101433244816559327337853672003799785649369942281793252\ +1995434459135:\ +514839609642239159369321098522268942457500528221329005145761642303113681519367\ +531450222321604640702865371254668166252308641479614910656095549944250474961480\ +457341734093153707140358914650438176117877308143347094568270556746278858613185\ +342984076062114817484042609709590521191851744222509150728812293017797169351645\ +480717151980812916216236707261110121486780096876744840696345828190952458663072\ +228051680212498645730442049017950970524517868146539196106917772713460062960896\ +643525317004733361589889637628324517737843666539446856763635201225654726897621\ +7368205262720:\ +573004858701619542920160672699460675807124555479776167761129859754838615143507\ +096345726469845687825264388039902688865701645600784795709612302732976169631710\ +068439293580767467191846584118836737804874997421837507104364911918592327812247\ +953231261568475026754847832752654436240041153220337156863708537770698186191567\ +486161376166467453144600329093584201525180299157733269208581982071881412637579\ +738514058207399502343387475474891305333223059184840470167478442318071873366760\ +589312307283030687027684698011894809280765264781686144320570806771584560428897\ +386974396543 + +504534201697040598200323807850877083840092726321359192845030112879520852529467\ +137537034010743287960022395701822675262054678747259278730311755008013387473920\ +354043297108246407255757342302486052070343130164118616667085280587121148105864\ +415135432677051671360120711340918556964899010059071854990133378162360385608417\ +690083444034475458423361457004206906395460683178954334052145525543540635509428\ +408343574244943570347180864652172435075911110022028361708468238809669180375984\ +361505612202172572186375255539865347539711509646231066668711717562116288021222\ +32419817052896834111407455732223:\ +593569179756566344675504124808668343648047094439834660131659156801096186313561\ +147311170282773753363055437659311168930061360938607681614587369252448092172541\ +783477388760604902312224165491550871038736894957393218255633091564070849449655\ +575617282381447175886843876269626913238828115902062470183540295482110793362293\ +593038058079025122648803217146549622715193186306695535505995655524443142875307\ +579658164167976120941601819942840478401094507760707482029306077358606545777206\ +950260429914781566838544170204495889621947151172402282733108226057509979868045\ +4802805093052908857688768774136:\ +890354530294283922652748941729925191878159619714541069989902378413631036649607\ +911542614012588176123737588265530607723402122084237870905347568338169257517228\ +235169532153285846886109349580954281772568362738068809533003821191161082852056\ +341523928947671614622150132396709249215828040804463577206121524624490277680288\ +342990513689892270115100636920983547664412774360602192809371727815659313360846\ +431774716832213398446346904492410653735005021439797698624044236748179376439483\ +829725191476600046769980993624822605302919181861367625197751093587453254287000\ +25939697047278766228426746494983:\ +294572671559777014381458797411928530393649334448735884939922374161176733794147\ +580811826609389858101804723338365550802992860518164761017012063517325957125069\ +342038031326190968775104312468849847989584066087428010276835422208951026312225\ +860874421325886914117597531258270231537714530006153667665531709333584476558074\ +257128148269263950937978489872101757854851961187965374831230685000391027084511\ +231088337870661165779138598040693111132726001036708539213418003567035462138019\ +020290505931654504167851814706825384251604912298085803798632768939951539427831\ +35116596641880856560800917256770 + +172453484063811385695144205778952736401660556978434537374640673371143334353576\ +570642366217082623359375558207626439782954816479910694843304831706655996627232\ +235892105585877720959851948802987934183715641428052514126370019001198819022324\ +604058913600759295791187782766185494063785641325690646469224808449402832897524\ +049639358645979604104491506865896292786253274510478904175661313285781016735698\ +720085359640008042410629230926480476718585874654572510645515609853634400543581\ +095227248970923430716360968574121726268352196864398080101472518469054986415767\ +1530664495100199680534279639039858273457994404462591:\ +985448479956738527071379308532272419819886442085170287001167137838671086267799\ +312283037745667610293587289906133513586493017516072856123288486063878822224621\ +927231080940671911186572958099076844227770962343574977271896011093978335955389\ +265996939038718592603124225853284363150741511446391176831836401142237444334536\ +516766813313107880948723844751829763055011704014722992787444903911772811849420\ +391324295523327165151755469837052218545692271949446523617241964502152200350605\ +909604877830771525694407493301422118777172362873370411634814849822736997175761\ +205322169847345870736382763705709391417224317632511:\ +172453484104601181956659582737914435020386272293903728088666065993673480227134\ +878510652321222012344152109444777211302302973769903472916266262841616316221298\ +942500138521065976687675717560251868908718753562584155082779841774375005952172\ +132315374372196974281476943240846694502463959252590941598802908940029524344789\ +329496833948193353052599527362616558694233548395437988743633698611799469803410\ +889328442501630489315589788463183298878319206661639384204964707600731845058788\ +735278311029859502119872600912650357733032135863362145677267207106391493648734\ +7703156832882588010272465516632045319666839727374367:\ +372304669527507317235352753542056161670850110027270225868451499060199969679716\ +012405895916682413602518537596497499688012911970317452906598295056919671735380\ +738207095623789680919013738873742222230171699957533537366557937022729669671138\ +788088172159707796465972043287300084470564149574009584107674748446598156638975\ +496365478748743280933467679259128874198540150466633828482035726419951475578386\ +867503043308391274504534730501287473188467697186301802126020885918628501846552\ +041519264024703307572266330247857183178884498165748968478042680268251067327564\ +75148563478581958963423401208533356248482167371614 + +403962479508663087109548633412217892417617035204767650431859302528229530742895\ +742033651742462459783834500313924115696422574653078671661435062805306468214482\ +588477458921865739093810961801773134879136162250419246817794766874021354682230\ +605950475438346752103393154640268772440373356691666816173825329547376129696614\ +425860046866190104850391483673305179185789649110530766305473073202379303858407\ +959751154257081007942759986814604359908065938558161711792085670165859981075713\ +055157027113666925697443594515843173886660276090934075765996176171153488557808\ +7589056445717173784815273994900632757500093911152413312330963129335803:\ +242377545552467842234840420020434027645818353726725481410889260223050170290156\ +161155675527731583327403678747755092689152937623685123083644515825430403092253\ +751548658290807473847925596482338804222507800847258646309987265109480716251421\ +173286865698565132982137921610700582454103035908835478508221948483529616781271\ +603687410045303194086611543280610432636406279236967231038368911876364388079055\ +683796043766099824175928046018542771463683799984282292513398330531403036612837\ +660309567830603708722911213478083874411301203023264112990450272681237371312718\ +00702097663252053173585397512121695417202951066338965816216909841956863:\ +282773803133376800536941864087867576784664522460860796643298465676050190052542\ +833459754617268935494218095584235811237233836250063631464303263937490306171679\ +857770239782371750923326892970152496017309863072565551051584835535905009943797\ +156810283281235301929269431559680730039766284149705806600741502370903978662148\ +703591399461875675015276207174580071286758739106355959584825913147748486084637\ +569670147973135003281266681579532611358234483736521638907952518322313988059226\ +160541032074571167259389432965656934700539931759606746231970771705272905999916\ +02513308937441091082589576001556395260554024570395436038531438203633668:\ +581988904342232530948044007845591870252619757626351647242472066895402452288878\ +709042144324910701138086373451385660059597466730279800379607432440569293164710\ +899898997255202859187168255718030294581656869713657596797502083769985891634461\ +687487341723021354550278938535644429211718210860858559320983290184434583734130\ +873025136908851186214129949483403068166702553532720795616795471533394760299912\ +826869514512595882295175000653225060472879095818624236630873555325725907576645\ +856584021562638827484452521161834908109120260354665504664323661497343785729804\ +1927436702300476589084483375730789091840695585559924682501773026192063 + +298071770121670991705190569380761255324895737173501053496018683772491375236797\ +376613685120294690736924237525548368089370345001836290595816278551023868343227\ +805758446487206383806823853079140505139738679085728261401209451765448708135408\ +450396857062442004967709015947017648765501366437692258792826406915912340241566\ +910049101821463512333736382409292590036535731503233362670502145921351856552724\ +450928617826833310549019598241797088502216114384862048801938144553969250541971\ +139543262458628655112122701491905841740280360046391542899807180883310215764780\ +221235384234625815076584629495505984947616223694413206319067667558940036180274\ +160661954560:\ +298071770117333476703804531166340495372758318857327150803671678132040695064016\ +634151781401896216312339488759227008714048216730463196606600476956890213729209\ +111003912523137171735063423813753123761972768398032269726070690554696798786901\ +315420554912578345622185900914139448015734774872389594376627524856933639458048\ +392427645201996545685467462492157360206606969629097494816941216204161322699629\ +573755717237021186146639851711820051248957527186871682249550183098589032478452\ +203795258104490042411580265916552217979801988667901158868057022859689080823983\ +813172981454888367624818098200775358066929805640819897056391260900808803860261\ +358851325951:\ +596143522459597721662693739712559817395899374121788438159883061362755544963621\ +340151185115957588108668098591584663285213393896019832141182007735033893725627\ +088759800011431132472663383591979482586114457942271963656741800901763411531305\ +927875223631530143141348225978447806611477223178617732602198510500755642465185\ +229594183093848951745422166042285513257194559634957364292350863530578132262499\ +566571911965830364272986784781834923134053882806849432780058535477881769133186\ +617727228491964253121334046012401031496354473070056520173279778404507152671599\ +536374791038172215652690152758040911382336597106085574215420770340944519886432\ +012762808321:\ +228189190452373975998687067720046402676850276224525352264828567832831069508142\ +881842738790829520407606559010724764756179733056929367197818687995101531487417\ +540164121663830097873427530280512587156518334815653537268374503709689585182374\ +425203787308377135963208255579470796173293592029250177512660045745607720995794\ +260565794021742758071065547703841895363554855982040274196939124300757983148672\ +793335089730621145928749488851840055321615413183485343177905971082188532779804\ +174536139289840790560285505424564589976749068458299567203033333705415982044319\ +548707144770805441630156069877698728165858208419544860258754909216438081994749\ +290874784779 + +549576895392555215050122058829785748470937386456930570866557813363668877971204\ +750721728277961197386655030221017716165921536808367639829982698695049399732541\ +737313619787427238232802589119968873754889339204072488760713545929764837122582\ +127158327126738900076509681659773377144253229414868414721757641883137593649552\ +987106569177270702836296442402331814976213264343032046939547732755758021651787\ +327866562104512308683492328733943282317930252992555877578121840181526378055115\ +238926782662754434856800830072592147890054206594596974167629093386856799357852\ +978525202457797266062408497155861632006337843899368546313308403854634979531628\ +5236895844700009481274852376575:\ +549878925785022673877927070783312216320021668280261080607911260853354967873322\ +810541105735080980852887074251225563641043674045952273187553569408046608782877\ +370636984301129983238537615146470167358062153854124706440455736687602218167940\ +311021784702208677715900230797134987075892750090047585628455153374983792775568\ +294127491225202181568625773821010138436249591498329908508247110906027360908999\ +243072335023340827252823243480226617574736181198622389466469996491882195687020\ +917814719167883132553075808761334760160385253136017250936480296542951816151618\ +601752734086159549664726587866498101779888807397229068115172907674364955354196\ +5507788687545892312234544070144:\ +549979597300651622463788585456698759218710876850585303664045294317149902903591\ +121944574817821700747325948144678170705535664738446778914413565790221669894948\ +182722220435315689076337997793377107795848811024837398947657522470971583543647\ +027702353840329374453138673214860595121296005460603541409748668750908150128346\ +198844283262798870911984051905771919054559671318589128663446392614045400949724\ +109225219700992821059170497807114186912021349337724625757726246350243877542214\ +908771718889784207768172418760168195563734000057905427129014175826861262482904\ +135970044144334501757986344895888503762060497891996004121665574667009911472637\ +3402927964770024933756787228671:\ +524704019535404941467883214399542392144536726201816851718964819044191660687414\ +228935857562040239884388430554417370276990628928019063142977488252908019885304\ +963823496715488856043385651915051999780301958912787482092328758707882622958835\ +706576600630427334703364862556736969145050395354151202853902975947513002675232\ +267369261603595183867825556537230916179415342435123678800540848412075676750116\ +926967694442301205453636040127260202737804138135473892349091568767281604803348\ +894205885580699054872534676566088272614939044721065783039122179574394659166598\ +734927001566034056858264694834428797354116202199986894965903274099605375099877\ +6136950779694020608617019983621 + +101230464775564845841728559986304705613817636499383056638407127744377964630689\ +754826248245368088788978044966352463118215232331556744972943605522773862070896\ +036600935621408989109285560073425684642623590087368423576276385919413364416066\ +437991993096114860225396670861960786945968121144544301365570811247690646163893\ +971608913115396879538068411003379326888093196741918450649107538941385562475415\ +584160237056319287728522698764272321135598636024863084997181557833208547327185\ +813184767729987424610054511115458669135660869620246494181444224249917383799159\ +442037532650631395781127512367897295092636575133524539508230563676101084057482\ +625359019353682835593110459560330633726597657526208:\ +792410588775426716231164932744812674204557772168091572404146183694608096943284\ +652900939788685928054641000342252235834336455968405402228636812879248387248096\ +826123436571708145650235053958556127432723612195601411978414956389825167552036\ +116935722145710737294923784152479093576914330397635301677033317083684699877056\ +539278689022858950843258922476804004778374708719854892944709424401122656004561\ +324316464490003044640187727721512470814233931699871487222430649339077930969598\ +674973301209754869606858387107949655496473915699039373011991532516454460854972\ +011307314502271830655074460634222364043503815993692398774231322338179190773280\ +404856376677573763370901210719998190388084998076:\ +101428567446369876668771509903370861498151058623765764422665978046659744125359\ +205712876037814987658349958632447005418167518868673905459766991835495989182087\ +145283564592452246666333233677906505288226720645978173064072415522276368047937\ +433566630492233743058779580638903783829317616834911353463797372663393855675671\ +626174378094501365920230683464938258009515957304101225946240574284032503580975\ +368714333766171294073499049498681256707100801955528790913482733295020626613912\ +256796653078724277211325015130403946792617600108186216752826522106944610492051\ +257917360149265461640486222299667925439867342391278891001214341522368994584199\ +820332948113570029614311030366805412684372744601664:\ +614988038527854563594121324080818688727355049138392499463043469368292786857984\ +787185677098585494895263990026591201698874504684771890624674016181192016398425\ +891647093903676091029855360096934308619247709930502305436728153370914397843894\ +247684881121120101552558648463772580417056948904282408807537641632082019677849\ +402826726998620227309975735533304953713088104828743744915505185369198699199028\ +184937679359209349913401319783419410383955977585573003559825133356603457797727\ +294316455222616520352406092538427848389025808778431243394684332840214279357184\ +353530077646723559699510536343543073579759673831728568487977471278334851417932\ +55762849108722751033866179476826664951821035900032 + +187102682544606671658971415655461190855533149783246896441212485149068792661466\ +916492729012824301411032137595425172292201197420813535552223019926143544570410\ +135297069853163972420120846881811551650434000968539259766247781494777072844312\ +486626637909244938692326421268056471034027471826967732238845768337979720971459\ +940091707257523640912238864050109759982174696333286705437875779595450305177041\ +255432981222874755231013669605038620924101482224813466425720501362381783132777\ +578483166565776646501318532783762483136758865354114173698839027469349060208884\ +875628178656495180378671615241992854425661655137575270125441054863618952713997\ +2588012514188916089130908353990300905644138665982639991006640258678783:\ +374114006357507427288500737419070048281003684939729166381430888965543131240028\ +948469694283866505437317168534462173981935099564739230901580385866441475529822\ +300565094307521290881381949959363727261736515401422791416262975634410124332809\ +658650429921967265572689162250643464722980633874682471870216282449199968380216\ +053257109639613807868429810288731361597786861617813950388101475526738149046192\ +084106590360636503952880897668316812674468356631174552127963738520578373889115\ +527854933315234758330492019518061448160683076010284246360380242932921009370216\ +360553328027267616075797995850161460090069584163357540681492472788739341147915\ +7369543528986538649355746661723186062819385784603047393131087590850559:\ +374205320480457624860957020238680055461352070984832899068701169658296313206733\ +038060493680817308439897283518426186727757391137120256972731802611141617202532\ +998673456695523843470290610276478876557432073270596859460447352802722174576623\ +617465067727613913270552298052675213382470924847303576402330921373967200316700\ +537887963428090292646573948506333751430311425868899118317852286422866334781862\ +117878234417352010501309904464550793273559234600860195264406466538171102306880\ +433350620978167583831636005779767855017984285957699400791590280596687046277265\ +854303522969050466910011084981660871300650808812220147617761140357020962665580\ +7183177381793657915609249819911619042131749195888984378170638589624447:\ +153531895010549366737274562714232427684086399378501312561171226801161002606909\ +477273286881522944022422509894766010580006620832865979568531408808335516265159\ +365058287639926463353361016745418606406748388173557973132849946992224747791471\ +366299313968217271689234688794354668785674349373594028062186752306511255498361\ +131689212497823860849218355211952415763095503827827460886257262793315050154771\ +580776514784730735268534973119279282288397812460566265854825609666685533818135\ +833896755450854049918881147020334658725771865431580296247218233236340041508483\ +658796292834848134122712580535505063661289808419966044724993762706644918801076\ +2441109090173077906861953924523769461987828737196117791305653477170410 + +151078351203878468970134589916228349419176985497911633052123878634121816025100\ +473284451342594609832012641506311301093381553983158535412679448868047926137945\ +132659538946468068018296511634294898825673883933814593611864955604916824706820\ +375314980389524154233309815666712161813582112359046490875230021775221200413294\ +040944212810919520564905350307565477721804659414054973441237634542394238597666\ +945567922475840744876415083863236162495784750319569801651441465590228924857416\ +654875407060765354870312398924063403059831524766366800157254741941973647296401\ +321458680805166171098823843806924038811268738360974456956796193406940830147859\ +652202853426039749840385569875321765661278734497083884782244968477779655801797\ +0177:\ +345143530040489495051184120744620602062341460252626861322702216020194576234476\ +779915793759519650405289318839374805504942561472824999899977050944038069963896\ +582090967864120887377381555059220979688475238272275627664813481458518510330349\ +335342972287417526650225178473910149302546630174412760586432109694074147396117\ +112424116577991678600581920316472316920894121033302012014921627261493383686354\ +812164265289757933234267241534982232805685029413102150871063740249862194033367\ +219879704032732058189276614127740544193554617142139886008263800042657193003045\ +097928182820144903101881314307945671646911160341774822844808387021537184052847\ +743181603149580208820030158861438803777245039132213940735632958054949747594723\ +58947291135:\ +690287044651858409269337849759439578759905532315771835762283328067209507207453\ +526963572403913394019723329428750251216512423826880571888169456281711320620329\ +143981928738594977098736671800545364074290979970015811703565904887051567978423\ +953859176208249323030962105775089623117859281093082505304098276011950592478389\ +926531292148253094842239063802695110256252098344593274289872768949790623755871\ +258462194469771332113953069621466405812245493670448587776190836321676143253126\ +273977154565389428127188142719374940047996359266404574578642709272183491354295\ +019999500192420036512897212224779719218807491452634902592533798534244521250723\ +013558529361853940146977866009705863165065935002976782176020402331459381295879\ +30589577215:\ +259307426368374740656047030890717319943922741843166527209674882455616641604966\ +923090876382832966389678473500289878140679879908239124226037525569096635872328\ +602967359860503995394910853247175263593055005961927979010413291816371166537560\ +700428996909634993850654889951181255772691932519679676741504260931397564000817\ +065144316919958191083174231842042627290722165963876124927377303428054410204142\ +393404279809323133955167215832763793476212797402659880770715205581739702380086\ +975359799607996743658395744515759167856402612064855314887079534932100935613518\ +101956312866742382937763383890166951743618276705950124275655006631249131676825\ +056099784628493429768170528593153313077778772661986512028373274168378651369453\ +62999568408 + +481860127535887278640489155050721683858230199530232560468174421194131532442358\ +530375507922039038395043047812131418599186355766273115363209728278906900298263\ +454490668439394975134380059154344103629136993024117780843353352657912281718861\ +859336453227284806158867153907427719180531160973285792920985765196127559544931\ +212602370159541882066164514333313513903878917378371492912189984374262500285093\ +164663645859149043701265158919210986174011971785566155658952755262057284244982\ +973587318866103927625233737353607146467805088117497861940096680592105436419812\ +330196610940160656917394500194184481139305063418639459439566806986893607744461\ +561166730411488652567983059857442571879719807347876080323777488300071657155521\ +2880974209379540757731340032:\ +497403980621080605240855893856869429047398618503402436479960691778588739596594\ +583831127879774006619635075446219972275557679669095783230301894719138891467848\ +728844897600040295946267255806747793904448678440872631831142499578178834315251\ +386280688408826946289768448660488295880537573496594422045155488309050658218911\ +790782210810022655217488562121312766455339331288497859517288501388425342020142\ +280107661122933579180567367944460795341229309909353663360428458033738224960147\ +507426103313449213619303423800587076859665645578840217254967791271622792154411\ +855487974494312849627428167608382228407024615803524050972815537681008232903709\ +137554512552015303920743044332206904323309330188964292032835848105307268257153\ +3579895324587076225968633602:\ +126838083336802747376160983603448523470452162145204527781407982536703327634271\ +747597079805257661480597772986326875514339496146821533419011270922951803154639\ +123493035272795958877184490135110408766464447628415963924119243695878829389163\ +169609003001003740883191637705425957165510096578865976816438207687302207203041\ +166405589926857821484285678312215154477683808523549363941820560827811610810589\ +409942641356625293746489630086699126922868816615986286938344378462183408042439\ +442605515717729960103290869121557044652450361962342622073042765546220145577119\ +862098876932293170103599518744218955277351135951205603883428212033802011341105\ +679555551702621629592683698911659432237325067437140891914219730326477466126396\ +9977401677729509178568494545151:\ +346025088668439463084536841179383789348644957238645298773372007838516124253922\ +016802531615637101878596059409033083407921771178994371838397133835661330476789\ +067877513201530704883843029514258864156806327140376852089556129356453647939494\ +880668045462793738391866612676608464084449559675443206350378184717831029814185\ +868984819874205862493317867900588572029453779388623240657754332696419141907010\ +408579016754362333841353053766750895815139017998918018067401931345702291070806\ +115531692422533335881732369469468381702124719555462318995427920732470129969099\ +799158005843680171101766232514382948689349881122254170092083174405965832017281\ +571425337114655480616136984267967701620585685178893419076425759876823667538684\ +288682203083349593052873703942 + +110105869746694998008396066329637626664629991231196581549610475727847247398922\ +039353902012976965584877602973481333864789136145664203376287677688877991502015\ +282167200261922289673374388782033345270119296102856746771432252417734975620144\ +661390748049060546578162843821904801595592327161481001704753177142358633161452\ +790908023699690419172455818826479050966567603917109180531380585056442488498594\ +637068451552141392495540083090840027530310740057963827584975695103209747903344\ +624373356665495573915292251879000149419532731243890501065794365500603795610507\ +898782208683365391005915657448047726473090752959667920783592108309858035277805\ +054226628250575134467145488486033750235278612707423371029511207272724621864352\ +73801862054483894623724948004984124660389758631936:\ +117446257329625366371682218897238287428068009257332549839066753738901750518910\ +368794943160338267276512713193710919447130139142518880095720492863660208497450\ +065869245085014811373388336424068391434464283880549051104966121432697751539928\ +532816770573887308769576929905491242681290802423722350882361509130557788273326\ +691208855522803098750751513150193980410449639802211428875448845625213774402969\ +869505000825940421345776011176438288012850689151886863374795116073315401122456\ +613416143992364516565549227264822174421592039665455353398112742478374238156740\ +147073317472489856252752944982465745312509731048465436477826388638996455193153\ +729098681408070158237248434429177194178164428203633643376077237259787485677574\ +95823473189944728736714125104464087422921902882817:\ +117446257329625379410842340790445987341805106632244773292456870239590528139402\ +828287151635321791896170071722787608753899649024792005345530993589559915063682\ +123582332532557330770567972522610018196051370196295683311529337012508773357284\ +425819146093674672965798810865019078521603865909076843435522230756237477809316\ +213715039449295062919453905443360187372726298518736743993381343336004929411998\ +352976537009706948613168169224175267034478098623275412836293576013808008382262\ +969628243478661953502557036691746926532945414469496525434157574159412669927843\ +814935618072460079251303760873939830191222772099050378219809031552432195208609\ +212863079229596620473509017330178396479974510494385905177684728318803423370564\ +41271085032171732086372143934429274617112011210751:\ +952053549814715563854880344672721095305249289204708534120572882835371266444407\ +026604986877371563126151002309311698564299148955009622019028538238498502655693\ +802934084711187858933924900995203282262736995362608649955531896305632800081736\ +177024381465003616586913938750153866024514728417074908311609255840179282458281\ +958081891009255299920017799566176450495530155200666435259722558704530374358860\ +814083576313289136167428431104608102281167231999790821967014746922967580395771\ +836110271625387065370637276151264481971257020998559184353047706240722290749085\ +930188994524219806265326018934023818725073144111593840028587445875848999746337\ +473402476832812217180528787367502792925237989219508713677677119870798818072814\ +748870628560334617873554628715455008761965485326 + +216437707903550637633919416420545773706786191615023300574910080584711922281290\ +030003257264393714286830979971440254668028304200827031696872458435080675046668\ +007234022047507545248348449837430086204641446537486220587622070406451223669283\ +093691621752320477636136711758134185335102232117843143217881295116904197641733\ +327108688417085062900677428752099154598377278329108152082350068064118725648010\ +208689135918509976948098442683041552775712327068275685350518778016037232304987\ +326883608636618885937431430004560135998650059257823377022700960973922930125642\ +669036336246371049135507467603924687579148605142388836290323619323190160387837\ +368813353428198066194917029100079412545257435453634376417739968228411951911043\ +233103246432929672579670400553144876223816352215288835668003303456895:\ +215605369718840947298552414206055246851449527391101300058268892175626808146417\ +186616180504072300566013925647702043421333899582400121577928221551304294587821\ +088454962242919916014341806182078354571463523945757274462923613759087793138937\ +804805171292056394319709963014160478255063521983343997799933655600864954978098\ +289372105376784226959867515264214187156254047780327672438396236150535419911143\ +456836828675813981017925991820820376171139818578704836318262782778429639291223\ +645635630531389304101325659764814845520561247219457016895870309154993294988493\ +975732160867173637939121793429598654402162833760238389852619137642666088450490\ +778578809218689655770317429798772766264053802001122156030848317489669387972449\ +969970339325954800661553442880573851225457419393713244222729599582208:\ +216861677505760924058026133128022813563433548789659545847005372774312367815860\ +072024022761301546428638941363329932370317100952933951899840888412094680905891\ +373994861328320144051694071313903151079313008206991189008339162023723311033433\ +375660782479030397183014039161492709397845703043915051850153151582750919062909\ +600125808252137332414010777901425255237762465506845578601118123607815852165398\ +002654276468237588425430579315328697264906541176229100951072014510063137024010\ +357470049094659868052781300960189746754584163310808466003912630024651204636662\ +984807852816823543241587328051726832494098395148070677172477809810794285727110\ +588182419015290805657808465309369193428417363010403157371087625477120275939830\ +628027659754468751067390092985630814036876112460244256777931700830208:\ +195427311488783715091289549188018710390187641606600673879209002150864647696026\ +480417078366967523376270364514854750190317996619424348969057645198799781280668\ +438616961018864632071667701580814359708092828948784846874160871527883091255249\ +911681971113159903954937114594564859582695509594023527235655635270629987149973\ +714768127525987113905124369700315792154506577352947122796140597988808077359482\ +571731958164454322685782629050521083262597805384761168347672751175125687957346\ +507516634726123644344680571741316913448747683114811087695908672281983216580893\ +989791978479361426423154704707856722483900461991383768431377835492451671088566\ +402906731617889554550509946803275878956545136593551648543501764468415173826716\ +286810028888531754058160231667492322941397287414387939348944651288577 + +399648904301305407243168499163086675249820845649954541030632948640521509337249\ +518062349794850003473794417490954092804728902981441979285046797446149277621271\ +025935893912791184765024085808602807787002514454105819243938699450904397538083\ +483396562149246578904138368413930002406095245399520389747251295263436338908153\ +453024660062003950059998323371448244783538476060131682703941973751178501120114\ +713043014876998498151130122465068000031699023906014928856478796775074169038757\ +991490689419232189727811716843502108257493128356801701883751885615388022102294\ +169028479113473602129270538171567348393261631156268104956711029597175085276273\ +821816283713273108393623388442018527469659585434357789745205098694097111555263\ +774186068795490972835013622847487146464167763390874860832021649360281586885655\ +0014582768:\ +399655002459635199071389930092979514358846645155128566692954915815948872844277\ +023763440522357648761843074303393208946619126993313187383802070191451584999066\ +686094501621637296494533533340607044391439977265773475793890056939140065164714\ +701691089951169045788257979546599266201053041974074433172294687625106800034420\ +030299528038823082331640016646800135936139414584909702973839139307765443580249\ +752097555989542377988110062752066918619463983090554282902179617405052078963843\ +432344304368908692768228196922592037699919749750415831782745691574083454410749\ +397284038356504467314298966151872011068504394109295907711561391361246095020006\ +728959248235185652000860657860724095736526534630489648085019834715063594164510\ +583190728461866020390942080398956085019169176370876370386025248406076852228051\ +2463568895:\ +774319763994244712903939294640612684263073289917054586771047667788873895370173\ +678313771307890493526768169358638695566162505104613000898318729230110299269947\ +611497593209360168812334480025348862048385305379000517248382621114567331809057\ +791285179760479852604979072574337452248902545999570172262980854792258748510569\ +525260679229216433703721192669134338547391035634019056678867719525610728209791\ +171121881865460370818807632646982458052498819097773443818981374965169244722963\ +849801649963457593032873196699405742946044291370921634472703518894049476728691\ +684735401434759912697588932090108629772151995583343998916848959552165277641641\ +627269927808349021219953166604324416757041659397868768722273963337048313725952\ +553929475645396869362446552865156720028553101440863494200149695831181758727519\ +2585945088:\ +152136865815250045155953875978339576654182300717992523362295785126199313042200\ +144396831342916118401590510589578632731557791050635044771714319899392919209099\ +007994881086971413132367082998899638778871489669374041560682889101305859736162\ +853657825067011259913860316187097548191151520724433104213416119566385307292215\ +753732584318986886964168293078572224329861326926802300565282892179813138043462\ +923759144977878641034458324319098216639568371952311815972270940099642517109675\ +117684477862870300730308985124331013246105617423060525344662613718998029912165\ +222329808954922913753395625677566876933500452677671132488360300260114186351273\ +559855236251983954547845614296450542559283481594776789685023013664381485874185\ +570152599835207541287207338505999818015146431472088538657102472704087441105277\ +0013478912 + +742981653399231356818063033694358480459881680940755083045954376886271778917854\ +258047493188413885795021324460587967727153640601646581020943404709452930067233\ +699863137463354174992762107613084050778151229239563933546078703082223391814120\ +089863798358010292257245698346707132724536900216115472187942575584903307521065\ +694373488496706960898879903034834463967658714598567569919260442186877433403409\ +500681278734725593204618140331652229575317732306029792140037358391736935462350\ +970638890401256686106155189010423717371173699299761541434254014258878970873149\ +187808075410939013401432216597613393656991522027736710802284951314498559471911\ +431210539367333566955579416184240300176421727343168944330878331201229260135650\ +443788990393548497519544151211718388897230201521575531129401232805906201879159\ +19608837734030785644660260862:\ +829374868567474094839286444522972159204988261265205566118417522410098188651792\ +568663894451365137928227999410891464821181838825245736915548018756111800066178\ +919687487225064017654867750164557332752566178338382718652736166642980470999835\ +925780396068713046401264953247488954361644749861563496840167847866445547220207\ +052254587473135409026589864920211227479866861778888920281529797639858764703482\ +415038179019188454396183921634692072169852409505013102892388017337688742007830\ +708931540208063776061658762382635496208948752812660093002207462678531004712112\ +359418718682914290715896900508495723211964499077938285182261735074576074257500\ +305165609196196930151744448253912845358679380609268320894986819433427806426161\ +162149549798904099667309236898074594895319190720135103928792767188784691827476\ +98343712547016070896302424064:\ +146292511599542768356031313638703406156631860089759245583856433125364247582708\ +113773847224352702095960520412214868578685298534177785334100138894066707778001\ +886249648844911165211077018505757127099376467127613112004886189108108474154299\ +443219004987350451243292741854216553800863404615365716546877165311760675874475\ +434540863630329878288999047925779532008175918374087070555573080484657102231183\ +066100314684193829972281357689585928534076573894340488656990038296741480111330\ +908682072010187952010854942660823221788978803110051783234634502405444492771211\ +217914462856775871633215469278529853331088739722739380298396597022300638166872\ +831969724714412316437214119367853279032082290521569169036889437909868221858136\ +939217212573790272233636167757646943841196254162044208312014500035173664548541\ +654089820108597317119403622400:\ +150408226598761910787442654562959567373808026283342607889576291752386978876250\ +102602684348134796149274304978096155403470389785479769255388707142346445401836\ +654005941393150840810114995348032107408656605545388431361290229609685029568338\ +494715174063330050905314258615684528964589603735994682857867470137990455381790\ +454242441942937105584852969205872744819219461630964053745021272461605880948652\ +303841345618823752075571637112132783130133063313585598723994106251752723039991\ +014507309812676296900834757573081882791029377887442029842880022280822567047112\ +617642257120745935919726975315737827155551433289076107843422346351193709727086\ +784832455183466854251044296952695097638862236734868788036428461530440373368317\ +585895047003443260890225222768784935306062559358345264657948775851306603081917\ +24487480208074598202145243136 + +647834534693645062848966542468118075586273508940482298645337097230360448276337\ +328013577785839564834654364557922429073145491154417748668174153821983510035201\ +224215380857795009567862899042632889996007985583508327885275745800803153812147\ +273521787019573794665606965021040606393538346993531070089054948344779986630539\ +385987887370641316734720767392060683189894783661736055392298714369519578381688\ +604012435454676950623040538815474552300597527534325398778321659684507705895674\ +539168738701375837293106023096542183318658120047516494779733243403345974853430\ +440356526019459130777519772361166133489925486565087840958562279814541165583608\ +425720472910109187454440871447309010924062401955852209293168162739010930850122\ +644885508868848346938425524124562346699849444912135747261940234092269564760434\ +960385533161995315093415258061492417720321:\ +424979559001764707386151881708527182591761374285327429188167377222865434985654\ +430001692530250814336224215427840806961610670816697378817096697515528765819787\ +098257055111250197547912890572479293439267885946776335863373065798726967204564\ +734362942376718225455897689417717590660962078393960022247331979541571555845061\ +822925646212145057489712819348486474125555442113656117399267630612054267942981\ +242094774219745775472544762835968512179364169053114120215959151599735129389929\ +035021901442337555922357065957498912346522271574702346463686398788969851213924\ +258284901812442815282088450457813753027004299664194519270651809754825940294077\ +793047410226100058692810448341979474313541344237710057809405396646594884173081\ +264496715149621528367624811079985474287166280358767146007868763851197628622662\ +22323442289294883906874854064232678266056474625:\ +135993475093031502629533621866117129285243929347039271828438941221898452876341\ +241101175905096630748446752331663415024874739757518702647113966338218533263694\ +958324445176003077498433111004113154836809954828641528518085915424120239837613\ +354531045006080893950724046150633298098530274515300172567771275682632725034107\ +241498997264578280282110972516937472297377455685458069899812667802866679379473\ +424556271396514762051706828851605831791237263742472750183227753166868543457829\ +037148860774048528160181523103252688126521568436101184199517252543074313420395\ +680283676335818649927888415868260783145395352666725912938277381377955516621573\ +944218427911690805763904462923926672592772062205197847405796240887346036807349\ +002585347534709508103750858684195442163479748937514612339428497667162592867353\ +1490629143948823007705955836917431631765112356863:\ +356833633926161673239649317596766982274779555794478967705140752259409221292502\ +323681767307067163689633659479127128258065300826588529675337476551577059959053\ +322240717578807428375285589676869637620635301113031224643183081610893898819972\ +321257605466848693651165728214101450252866448162503650842992232554995019132229\ +334715503962153252451466284814858455160451945668429701023642518690603710998677\ +363954688789101158545244921316063047578829303119483519141891830626615238047895\ +015243453177623888406183642338685469516381625742789371060807550180061379032677\ +156778410378314515304145160403112965314642697945528831080706082092004000851500\ +647049076558163140312916571702513594261727978586806828887140652877510243202897\ +339534788063714450178748996487293990533977462379780400551241602866133497266560\ +097045416298082176105251314070617841200305900387 + +486048445765488583377208845066515335251419826715506418890325168301357087697092\ +050055164454099214724606936203921317725187679893287519506949715881517862387400\ +026067911616391079326242773463754850808915931017080497535430066715175435326510\ +918222818797483335302537185407476950015814825229378785902371026959670528310227\ +034891760247307053345239334695815673043914103232741345028612611705174259261204\ +070763084269536692129487079309378984982127438403433814193408377529133618479079\ +392161343507793090911665068011001763048758367605524995387387580082888204057678\ +268943517851852720406719398469100321562970666627278849505718035540460931327751\ +481543813459285125074917381454778867155615061009006439742030392447139138996584\ +880783871556426147316086727624147084789574777177570043083122093046562486130308\ +64324733100467590590830072745766787105267054951211731805281997291519:\ +493887876050974717247045971916451330752629026580494120368124734488562854353407\ +323706194967504578874336853375454116266733771584632971760646474924664978022135\ +507486688729745294831080935555674404850694151221350747799289502148172925399343\ +534115429759707772910104217038918964435966696911982991594435633641300889763480\ +591527518118322578724934264215913268612184964235112757003001121771434663382285\ +992803190418265309432510813171756905706336019108364190432386309859643007027779\ +433674397481096181939851496083157603489119882947869519830782964160182194349759\ +805689218372483487611658123065223416648558591992729831498497139790675528605964\ +114807460554457910712291128449044200618674420101649858081857117979221330353395\ +893326494531610607249765530491857997752520865051482061641639631048579744445622\ +13099391100311875200083978593181139796770817165532721051967812534273:\ +501727366132419746560475697115109664259492380716114086462757344048631935828355\ +817079719019360482122114499900702836750605251560195583638053921674881209922956\ +802758789191558672516125206945587187971366709736323437320179000337610870910542\ +095546658482222814072426822713558635239411372128958618843736711148900723500334\ +602044951651759272850128925181646496829185295580841369572173199044930530675504\ +245091249388699815782529011654360789854787223170172868028632613308021552037584\ +971697532634820055301277943936723347893309349227193461498900951516120486851472\ +838156591375006102465825021769692418887496103573946225537114242438170008859868\ +228049306934745264891502155744158325357984973604032591087212203205596276021067\ +102091007754067336823854884852108577310129903733887529937067575109567536303038\ +96069930286611903150298410058853905451808850351998778372592125345728:\ +197255501810134466527763121418063065290290022369219487833295059537429337101189\ +783044175591353593062077175481267129854986283098700760325035876354445070947793\ +058914697030684503632373000359897949087848219409533770124680481080225742545585\ +001264761479203309653301922843981712229172043165392269421568541833342916317000\ +431426769244194972083689522924425943882388425693361949205142118058339661265928\ +420468862287502392063931445553953558252617038417114625507952241035841547410514\ +394005883910781839207458352346014901000953417864549874454663348884848145565578\ +199593520223446654381035611119886686031817474103111527201662428603960618821632\ +937407936357524153023755302046302905773264370856644700208433841509056781555411\ +660188917900123652089716016560204666296352463488770031009697451516218483009641\ +82483010579458536066467424146201741423392734933194874192670766237631 + +462761815904527247374371237881906779526209862691907173314485351687179809737722\ +931345308257495242463421293615351828538758186207268802798396373957165121523626\ +789875911805919063570708744918346529494870821528785305946867530876763356289183\ +020878512229850175444403397600236269241256121163159010557690004980364349927674\ +266628786610838462595542349210571478560306255425427580426313260244566871980314\ +778994691977986375810088905663917302318268129493934426093096005634357202982303\ +341973578728279937462400151270546916937907448334706322844376022068302207116976\ +975635726333381348311458411382095946880635668862121018217928578604974240727573\ +009938358386555995625898873391116629670531374874957657656053702029266863704529\ +183558279217169922152375055754169192057473646476815170172130362849017361505131\ +025100328311173700259394677245864989602860951689529969421821397767673840247211\ +076616192:\ +462761815905365718090264628943789111251245167780049156594066961600199213190186\ +990761433365703851489931654015525797206435744719053290202394165476834746447123\ +980799553499722965385226051119686309818777182319644972792901186416371226831460\ +036054466590141298536744156561235976224419933838581653186230666476066023843718\ +510489528520292393460554947658083722330550484669593877556727464060520374820215\ +792000273606151349856052385153086687104303800275392179543069519854086704029149\ +984751007903086215801148877951286153987793964765364727813177735845582222311790\ +083581426923417465712185651789393217147435036249858292520250580421675456143276\ +630010116061872750769276564528146875763629566422737982058916516747849759486929\ +983989874250741728811284202984071146582260090610444531549134818517659678264777\ +746542888025358444872665560128783707796803442119327576529884831282832682119403\ +428446207:\ +923715968479137369163724436587585531532138213080945884468747213427978838918940\ +350443957223240941731462470474292071939192179634746320649724244791514007954295\ +343065110737097544949096279769681825486885363942429235166655119118604772287306\ +647445785153266771593435740782510116343093335165900999271694884879992233946961\ +624257130612964862830380758139758424257874601828542900384367674952506989202075\ +688178948485881389532443742775324045494775140444272404692439312706758441142184\ +616717776946954879990106492809409557692412067367188095566519045820448544228694\ +046470185544854422351811987268400889046084021317615584844085537061429328271976\ +018445635181209137796749918224089008044981599793228052594754345467056201455209\ +273180726384107537172994000078965799738920376739886078918750406122677073849494\ +023151324437008173419839375345567084360772328017074342879281699318086591260574\ +330518015:\ +722197356712037968122082195084631955687391974019929557198336858595392352627851\ +624715317903792423347015969361357553554769958766775707129814706258283458363798\ +704380607891443558952153774460345989687269560617738649201538474275570240482879\ +982370319091359653068788782184060550409745861229925602130886505686858151334677\ +234096604770597181498342892806434528893583750409622849168291341326035281721134\ +108938415327271387323731732259327426638516200037624821519501177150284883644116\ +602739470796221235703172941126273090616938727714655644097429880496567136847390\ +134711274970570860530966589057648612414413205563559114850131079235219907285745\ +522873325314623797527364721545570049746034323598484653341278579018734530904263\ +714962407888543184422128317514111812392169545132004684759799167092760035192165\ +143166666115350364206261836159112613633415120657427726513034583501885635242774\ +361676663 + +852811240930917223716049700526055613310065325119410058273112841436173360389827\ +067600484597223592991489500301544412787608717657243183136933723030960499287961\ +180025805774535487472563698724649758571994979476521995282764349617515507339212\ +390599614045320387124877690667704170677140753880657675339809779909400894718137\ +604565854068470666832821593720551120853788490719824723593486587417222862684339\ +754433092850322556821622697344956887315924441780551414646763476811380389708531\ +753799326501114473171619525026547514448670363066644421017097413651564492593345\ +710519780675010742282886385080136359126471299991442756499680559269443950089997\ +798993542734822643160468572997180443964796467127430280656370432920766639078783\ +383559044567705679554288431235966912349185786572977030673184808055428417987655\ +917781167699794495514613317627762473374773116773977669528857170381839162700473\ +3270732096123644745048129056:\ +126185872261197230408785663078922613161955140827437502882718420027808646238493\ +787908909280295706915391344489678452391660180283082458553427428163567180851284\ +178414018437405329890385103605154102498924000147488288284768256431559436041069\ +145421094694428161753420072068389804255427680272205597683662873202026439502631\ +734404464774307421558224534489546863066233203479241736440781995791474856095838\ +269763759746717486811395066763383870576787904155415267764612635532467529605024\ +113578327813470451874837744405067387480491480674175950848338621132678697997473\ +231117847088919311534747594400514652223311092878351252315701789901426818100639\ +743458465831157999119023434005364674468180708937869307611770319238915718847174\ +443278769013419185628763247874874396573501766307940543298823915933595852178284\ +465051877197401039659156615481644405619173735595577659109290562579711724206886\ +228782624859173378064385:\ +853644878507584787725369781669211068013646036362792638671328081894540983566741\ +315340551128910068548346356307471316689509830314874104502824264923218962086029\ +594246918895715681697925329851367503055795117471451494533345154635216019808056\ +754332930337780097383866110492520542077488588004465726128141641500315486683197\ +075493597127544845509255220792452407533582871024031042223500130390318245548410\ +961386224468250971607581283215625738690213912411090551681753953384716961723633\ +970402516643015557682529478419228790638718769371240885850375637418127904946605\ +668979359702307723940424981607363068171212992098758183458079952429621843459294\ +616351675289095984517856562453241375418956622374813841018827909335236757473533\ +195891180589871263189636855365039600202321493523286253000780709318779395720875\ +725449007860631208557413853152750990804594625081373893725629633059436480731455\ +4720709619653726583942807551:\ +571419833968933968780282928116747017917747733267187012898009681162516457608558\ +529800774770535181263584711491636995016961706591180889255596876575502233274916\ +526701780138152631912358862350749345652961733415414869269691880092743157597094\ +781310891352846390995934685218465489638725549657131114228325051886693698728606\ +582807308857903512489180917892285184120167459998926127628926286674812011523196\ +764826460756220369911422884881080207086599164396548130143663970750660186146145\ +162758410665922759565495800804872879965340041290955113277172106045966354647531\ +447742509540632870301435509427148076652025696773164565347983110644984662895211\ +898510593007836353873250473884275094142598972095152878728883104457950224619531\ +660754936816660726177705116666517604032722323342912680646311072522068638542498\ +602982458767653696638914403227284963287902348793853455664160463486054732892279\ +0437174424639791607643532979 + +314804515107169253740988787564344743726371959907909986530733863976724456680313\ +996781489506686118596980242139912480973309314021838218548009298502905903798586\ +222682229349642577347490292285852490868370515350185388270830622046913974607961\ +008615109482340511856271142022898165642704974987179359034662759456885366695261\ +984774100970018053496216064206597760917739999870797275773847491336444219253241\ +465784827530729563643315024450014903204787864206742316796836747541109807997308\ +132602220405394657654320488171038695432220218839910434079702926197096278513500\ +717508987229351250252299272953987103763082900862891141630821972740832384617516\ +755802815053267049931210868380823069430645565358287150885227586948004972953278\ +525063339050094956405808328198168324001397720036736569171977198705397054825962\ +628632438635567872328817776845167551772686511034212695170736509715121636698584\ +945275639778914931647999718261952911164177350911:\ +157479297222944249861852791825730868428836544111522964151303023237017930749056\ +463120653861483042305611136447592894272434689747708939043321458827314030644357\ +342985486063752425472815250804610501606778706778886418586106059162683956810468\ +474441855585198366560350065692491813044476114769947511588935311622688326938158\ +980347134639621897235154278272705896829547627482982898566012996979583678894582\ +258214856868080975639461127459000147008501310596305911097723077384088864192838\ +127774607944001723826486861833544537206990960463703031475185136355798749852343\ +311708987822354831505793815190636225699728178417072780700389217551158684995495\ +398728026369441053088536594153149277238840378967494393598061176839628882296503\ +795464957990933163611487278037497137657977556563151170019840024822868265944419\ +592409077738048941857981926128411741213928755885294130222862629407509811640660\ +475615424360750145199809728518380752105765863423:\ +314934566479800090395800630582404683588882769850638147321908183392900499940478\ +711826765070664796051025929484174098344648790954303331399702083310348416189537\ +951271722950873255271484386142156748674606402037193726006995009474573463503846\ +366688495785381924934203123185936197223479061885022038982088821004595778755622\ +272579944109442284961814721978014283787368114529033454365196742612856882267911\ +867329529708527147581875685018067791183873594323619250118494771887245697922755\ +871573431959624219013664847917010441644464090171750723676535531693140158410205\ +250853526107289986726019109193894273884736753829782032523695039159909806471287\ +404948324668932861254789659433949959036844394547090376182188036838546074091483\ +526568813624543721497224251136840963710836493784649855958180292451605871787391\ +635146031158112879553281546410699048715448251524587514809150992040080432214899\ +116055841254393452230243614338291315183919824894:\ +235102202318388747686659165837007820879308762457981192430370983607809347274551\ +061782150140306067420319122473827155441904550381829285177777849856696886284492\ +601978143041094170470029007945125773944540494486009337679403599297936415071858\ +516861784075771605519965707790566093287679794349976469655292864473738885310357\ +259696318828604649024037320228463161532477452061792338452353394168553863483489\ +225130902083463266110007488259260939020481245136895118972793293637553341402461\ +162248103674418941581677139531413062427969665937757913571882705672371243332607\ +456470701445745359847663767598740174838821198442860522142523836965671913699479\ +800190472428927299043323353339916376058248776218929027726139670048776863089773\ +948516022857979492863833562765275733331992836456902089802561070702629083095999\ +605228216486519535202901673989395374979465755494937749558252302610157607052813\ +402194421037533391989263017241560413881096872325 + +290480299768498935136309295999873544407915464943400600039954272905588149923387\ +510357340485916145562954547158474841314612927265333901443335454794329247863049\ +177079398995327798879263258721537968694018587728829010899440236608024943146179\ +772594813223182898860671803813591651379854471613088661546185488996456120752039\ +639859487361722995647357317646050797538251169600705221381087174308456545232079\ +659190502086294993072010812156295264617373783953828184816455894260978809278843\ +758491284533534557127500537681626354100058943588164530302778157140688561547980\ +992000192006256050932850885871047127232926654761006877967573457228435629672911\ +293503981193083585947803819082083572999460719205767101939543957566569186380678\ +663953550007104394150723443962592816029104595317690792822828902146617944490188\ +893708687919694876126757447720063362745303421781825759257442697203068682892806\ +9375962000311861830922601152391711976682453697434291794619771387903:\ +145242366064604835818125284569375964967810955759865170539800768531314398793100\ +549912225743327677010552329433859758604413008767934359685746071149150491177427\ +541069271191340057823685358925076162020370848491370281180497432744363321899563\ +015258826807960996815486236535271298494296605639157023124476301892743814057341\ +442838059536172476192051816662388015995683188560785951473147101050495279827861\ +827523873641572678008952097298124111441464484359210951847742953415341876758797\ +008454047030540570128756352994472777513633143604516497768973759875201028863495\ +909540694351152599470217432744142291836102335770926775336010279257179140415532\ +635197055309986976958014463229454096481572318522349236115985647969752650797617\ +276979235794539088061329076052674841388578290536254495453521843766832334497236\ +641842867905935528910848500012024334122152654152649482130042100975709083917581\ +0970291401493977632927253885799189849233384239238079553716956954624:\ +435718233472390454471157883156197757738592005846272102449137108457634282063333\ +857709496748758717067221745634531129210951619997028462122131903376244132244486\ +324077021200804554149281407322876300843352730771540348029111182493537804745847\ +105879909902614965210893220753582265918189720475316898045057222835885653331597\ +611874566923321440768627184002286847688939831001005714064321117631852926648654\ +639658191802934549719271531552982603378838974583022685736478350966661549071779\ +017093552474024007896103087746260942963755792078516945395130434726694684679746\ +480284040227982052483373978310378433077947475251874329526031477847236662553422\ +129002848085158696081737229181943101139575392669794858739870569378276314998447\ +688898323822802189258021859549745377666875918132664123403981482359913030931773\ +496427558522984662260837409623920281323467247988487097235987209798850866533603\ +5265014535784677310338175176445581932767497518722031017005200441344:\ +241032897071759339841297482170069216829532398029341334811591631593624780479624\ +895310231870289957958771422704911870256024327331837245189800401483769817458704\ +475330277085503330060479583454783738351187390303843435454487949681256694519544\ +326708135183919797645127705333358221229565748387826255259855966168496698503649\ +518358981396374508873537641472737639014837971951461696809370378137660681638936\ +180758997554595846002220656152614786629370469042283296519989379256600596056409\ +523156759491546078028941853135584142831468881383773793213120717964291067060977\ +560324912830307218201706390719478223124279750279375766614900688671409312308702\ +682578231190872575958147208752080792355405689661801007677234693988842424250514\ +596102236908600103216133921572893445870511571454065749081585224490842823455345\ +709508691281473460372681286654122910836150367289191675109237629112890769339492\ +3865951135347065139483093125111917391451301319509607010747348418561 + +535845151956824308903875962473938970603880770165624098239831034079687485086726\ +155527002415890160510243417908154624295350102255793276591307691359481831468017\ +162155252181252767931535400063801551100662252851137375206603279982354130288532\ +565367236611175006158624744129460889184585401933934954816702571175226840820100\ +973696848397062764715788613933890842779403559178141020089231319859014200317134\ +562935387633026762519990650466786842093846495979552582856681652606837487800681\ +918890463375363085591091635594953947632180408589315057421756479406442183295542\ +825969881336044153537960992977129781673131586035498793093561740749304461047657\ +668750394188631917800307537367465919828253198483959320999995993819603170763557\ +685615280137426763464534057998617887154756141003787925036713387831297032690683\ +547272969560795684206542395862339262585938257024463571347102307846136756370316\ +243620033744452383708727823522350945403788452698126550770756181562819017176967\ +03627264:\ +535842085846738849817302393134318844432416424639723748060473783547852235181188\ +779114541607043960318877876082749046403808619285885776443374298617682732758486\ +039305462231560781629138737458322628511768820367336788790875307551967526093712\ +905513655081961958538510242100809381179448460073785761354707246737557552636901\ +562266514150391554825719701695419546172371136493043234117977513567764033842305\ +323685656209608389846945827943829182627347016465456385364072604143472072164495\ +292008430946136753917375430403908299622487090158914292768618766526816514797360\ +207285750449187208783552324067827879882719768503322692745713466159056792497037\ +510282894599078058030772244677916040025793009050274490213763022580407550172624\ +082278349335325004184170905593857212329261928358135274976427243742450852297038\ +750136462670173875092969241634489198270065964851364841109738596264017330858608\ +498905123368153324549490350776089339588082927644358808026914941542038748848508\ +36045824:\ +537934577227395072475585414092578420425236294691696410882859450678426713415007\ +623118785630096617855672384345013193698425850064098524117095069024501162187594\ +187411954215605692268550352698559025747683356286200421273157124094223492277718\ +780476115222525206286672294043511737957919706673276860640713028594402109826350\ +942563780147356441387809415746355333538925850899554981296614427261219088823101\ +763746454488553565788877417867803793197480801090708646941914337560044490377548\ +443947393023297120945211971853462621978806090223082601418991524926979861640423\ +495652782406472569733273567283018024956290467843462272145127890463853664911468\ +760164434428388755731374648199145165241965981468743155571250566222740714352598\ +968902004471668552181551699541161869612152558077339068788892446212702544203801\ +051206659519267205982455642111982090558650955706376774629619639552956516085986\ +846273887903711270753530051951176535404208539358050530879381142310931209459651\ +93232383:\ +434615995036145418876996071603109840028298157220070558756101719914392082121110\ +243768028728037754051998675767000433196585131533330653284673203425318072727121\ +807081294860851669567425125888183512740366128591873724137292713040229671896143\ +884361842269716737158468795685452239756524671138726273358881680997422384176375\ +848292260647858426833036681621357457684017612614708004917225052053573516391149\ +318301431692622379411539475201731897231886080919189723789251867346383166473021\ +145899600690198608363985986903753081034679441929618960792537425730781536566062\ +946694837120830881381871753096502084379048619484113258343337616993812330036567\ +808143433953058839350009432428104019400827123688426871664505952774735696967720\ +381153507549248445913784366046509185758189872026275712832326931622494065789908\ +101237062612792315658852693483723790326395754931103455361237224358686796816728\ +224022077855176537190464043947058205052713501004952100160335163199948293965733\ +65183097 + +196929730754513492008178390902247410630104493232010836746897527504893735260293\ +095151258384814981618522499920387777380436517983780057829824478705425873256077\ +933218674297167149248490663093379662736538278557013712288277184632113840932838\ +766122108698637125879083876028819479967457358845926633356338151866507612899859\ +774821030974666821097730641681518770895322668829072030610880250231215722211654\ +708460175817661939211689633581185755789284817278848733189236737237129615892915\ +216574720152960046304995338208622168688621045029698986691349095020239550375233\ +870321254008972062667942216148084448387435418841304018598658874235847841867222\ +013949775504624916918066318396784660602521304299160610922782783267219191621119\ +617020677517528452907811356182327606741913783755861708068183180143821596432157\ +328919089970449209042138174982864438663908082986283154895164125160322312430206\ +518375153695647741405828907406003794528335287326115514596624385665486989610949\ +9690666148260610767071475712:\ +123556654936410249602049549191499088534083656020240291647845259378211174962321\ +984522563124569495749565894947477543753194755891782370392196103711751556995175\ +031809956819238077083962790454727231990786168380834972245277387723903697209826\ +756814441181233008136458192383122718743160900036652714114280495156362269920249\ +626150513016137320577335254478080238794312061285861330791735163268317548593135\ +983932311524810248852259336161047123492256330659010452079487278323645489109977\ +237116633605762246590757123475180297115284646213168055277478325498278373840041\ +970992880400414698675318432068009711150245528911625026605727429269798649368122\ +333878115582436421783479673383548902261254731291609556378660400400774462493319\ +788437617794138959367959510462313014600803345984745301590931290165978769517594\ +768150405501575952022887097979944691253339527717949550645531700415678162368321\ +227992557930414974792780035237486800590514288868807870443325996919606099419607\ +5428888052657776335727493119:\ +197690647898256050939797027570635363670565608664381877560834129631505436769752\ +681004892256000448647844239974283716630421231527399882946715301822734177527313\ +579496062684344107965100871983067750860051300758022226312246197136463949901512\ +873512942725466496953059752095564894064492811931276262685149270733111838603563\ +555006947437029907829102932104107526234239093101632809134694179801451663197266\ +903338627301826850237586720858398240382479144022284512205267266998241755277260\ +763076435183169004388315148786347001309722521277645503850332663094916197673391\ +718082067677487212592534748916358752345083767279503501703497845811147809701209\ +690204146718682290277864237894328158658735889072006088128915571074857462135289\ +130632532443580462643314540707408547215793145195101986238733023483997640009114\ +904589359227563180865181953196727842454231330597071466222822300160135986356734\ +052630494567290920148679365196799288170540652204729225972969155011488930891525\ +8550583162748055955678691329:\ +194794295808570105812154845832036432928623596915565746417009271119094077259505\ +053528210005969153139881457258901495885683518874037578661071846057912985262593\ +316113905830128468115173665741269223477371577106364664414801251852384402750966\ +879021386134525525067966591755044698898614908919135506972061493269249379721720\ +603373823646928410172942900031035527387622218702588984072144813972316507914537\ +031894445106490654930154141283916335133427010011700632825688998913135987175709\ +451393668479972849543785638779706855557750501438689358753727020672268580218791\ +350503528829958819633394832907134882933021989102364770668056310102959525402808\ +015420988236024745507075693391761784217377916642702134887719735355155217036861\ +646051595316011096807083242430369721376504100797849285627155619265413283404597\ +142768409015462194484398690335257131009014617272350096411657327528415936093868\ +573431960078431497051048296223528169718593307374410294979088070559054899051627\ +8646279735219973189096570037 + +364674873320417134403673422912483517103680570819380209118217153729167829938514\ +654084973244562743588635837451028559626397875806676713653269696253940764442974\ +270458711885013051451597838047657179644972694391351470528158400417558181453413\ +269502455208700499232678603660580879444746888369470321749113175207116153873335\ +295360998148033762848484698546055445679424156126118347970252621076823425798782\ +453918541706131405831833124128254709803882945681214817959454731628665554054033\ +934545707117436007783752075452934717068789840538545492895770820483855031767239\ +835779790032668213041943750069984200816206468016517447836848581669296852479769\ +274518280917745566326722919334154661075958644803247730469363136372870517648512\ +000748546071317433652171959039886081692716928013639178700071213333429805520082\ +565396388793792518280575440058507986024722316590883229198493430921929282235934\ +049401525438601502565789906474906260231669443333464997680021692739533262463603\ +39798632198371401787129633463200020720875732992:\ +182337439377248143035636297540008057220123763990284826169219347638492844403143\ +666638277023150746509062353431430202052001080618333569438559536026598621741667\ +053358669815063417525556000337190043726278186662731274449183799680597941231728\ +691290666419751108373243757986486056221551827783457504812386137585365628606830\ +636791795071388413560146977478633723351542223490732970694381283132766649714673\ +739519822511180153478231807809148943442660632348898642543106119985173411846342\ +565954204185805614285056503167006919558784569088391512992248949000056485389773\ +124399339770915443555002132303504645717767090741909389178111541685692341422759\ +246210133073088071100405630857773120500986725162880587543499875572206208966862\ +974199917987891092218385244268668199350223535439793378422041027975952335161108\ +241014623455653692353675841875500378951985276522924699450005843510400937479141\ +896627877871507721751293097427863036691707784175310453198244686854623764562192\ +89006450892048345527516143948915177843738279935:\ +364674878754496124123093837417537796455099439028741522551058545273109556022556\ +231048967376149941923244744075844599533402019088705286037700826522670522096023\ +052076765281162924198835054730281989723425104136910803155052097391883179457959\ +486524340277256884828065314213865992999582164555392060592286351529795089513055\ +703086700574423740140469805208883572083879705693948013306736961590314213214775\ +512266773377491233599755045823820144875539416033053002900300209047366377340107\ +765356812051402416584201397114091342066727772039285554536581164374106294216325\ +679770619632812812566957807469978941276229079562207399589161627225202002827155\ +776206266083904819156046461096051102075486434499168971954300603184302086687173\ +742484675473407296629255897053808319429294811070072941125231960468358708960591\ +765727471305918561961773329919846159337942999536250839093468959203091644562262\ +977918032698616283492032173793576338961482001382755876249536987777639912211640\ +83091358892889451602007828595824368344165777159:\ +234275931568662209569785646184582488338584204381712875387163610562872257213031\ +745755563068733540005158674253149464343270071961839232808242778622094941486824\ +719851648165829521776355123615033557237270400097205445510457042496680404618118\ +554317033974213816431705928870141300121134507110546264148055146456260853616775\ +675799618380796973323987500787611552056774731718035702598900192252173820173717\ +904208484948440556834510592164911092621757019345328166701507246534340354231436\ +892405331256250684142214768962770763089510014638093762520123642744997801074754\ +738870362172196795597846524707029183108218828569581724347278597411130695310335\ +666351327919161490002101668894799708108441860422654281936614087970571165704094\ +692759205535654842911739981645056546406021092951768211657569469052947610747867\ +691220487138091720155805263796190880510935930544537377439081509444130206089973\ +243684567943257357666905522482325175926545393345943724611425835968476624907633\ +7919768055264810728665014210582280639544035866 + +325842170490290705748187269523610715230962413284573236635671173434987387663619\ +234443576263008534616164006858082884291775542385965435808750763661463874179742\ +210396474861456423041358976425492646789927976304091182734783611017743993202516\ +131170018741908051271023784794909337780076007257589528376111645586504408348018\ +339612426269666169458956053971866159625046372280082083728364973332113317999234\ +567170250802756878937142666970169539760142236694794526536571075957313110352410\ +555306101131526052657751368868999897178980981751645911999241386636278067124297\ +580834242446866921016065874491098143338574576533090124772585986300537234846424\ +771988838775175487611053475616274804334041384768158393857556259650057287627312\ +279376068440741840721592593393862006311704720764284318659619191918088817688667\ +697355333567434117576856982712419166229557461584320401433232789459813408836604\ +698254202336424249354175194955597369659701155574857549423694800673978576815566\ +794368398019186147733540918254963175426276854731273060109542096893:\ +336394266665964435093090916568824017327250721673286439742589667885478896720648\ +129645707730771000170829903315785170329559588751383640689871844505371199464382\ +638749662715299957973142863734878534933446573944790663882964066472306886192325\ +093970823234711350886415064015702568744255032614495621463115647333466919971055\ +072096427639300518367897426682705816830582715710594657960907975795468526813766\ +782718503410689905214204005887758743302798798735860523753038356866395610268066\ +969564518223914302099199074635310973020336244165922081798012778983777744053242\ +585928681082884011145627125158831036193515035319106877183308250328467448966482\ +904609102101202473574537194938114039605876694640837252622628585213375649332797\ +893054920989450475112769282759866253385077082475877309928952642707200011531577\ +292325563870801986668661546284568653777453210223867323599299732370199209633977\ +970088233488715105791002340089502196818968601051765180367562642478321162779819\ +872712881942411292656696080142635697497469465010173981795672915968:\ +346864245359158180058741467214421019036103728822169676892848521463662094746372\ +802550254361773414593052492400764699042063436380740707867096468679605152164869\ +799670663738732997016984446485285192031248782094341985075569145236536677563931\ +989385792384304039151939213031322341894595665284523631944405283772900891555679\ +097829316118044068954042759412115729874847497884883657825207707787743770398649\ +254916856186341364088011154403809442610703926030427892488247905484346839703795\ +141192334556209176530207156717860759136275707014836246519274972750982423441100\ +163890520166203552981446445376613449081470405381446884728055784244201127943066\ +422181906688081132221491110875927500319606301722464949170945987499100531748816\ +511290326430761171708452730224428721348288730408789483417799619425089538613151\ +977957031934020332109751598314463826084649537057546895638452585141286598249494\ +888666057364495825449649990598271098186201031993411666416627692107259850678535\ +095233281312443913870067001402541636318648322065095143626337288195:\ +209411333382565638138648783814173782052077835484550279461214316574619294882300\ +106398896344394220282595575798256848119894806756327704337500260469040544408346\ +452975425240871695380472667976160756329929377794786592915321228283714404372290\ +986199569710059922789315815907515450834733325717436824712841221293917479967910\ +565999941239969857755329626565526091801408460975615513369425319829107597870199\ +009590615974480308871586134732678347584209361841418765285548169794044146523984\ +597361937427866471589507542395636465054820659422778992512998174454590527387409\ +959894928541695910177114795274215715011876210510453804786245240115093566842821\ +044702403990475687998199163007705171272373112450593323027472382496066011540526\ +818090971167008407232012009374078459758539911686738860780090117860862044581404\ +857542105962507172036591248504271630930110333712617282048061030103118243599690\ +244353936073940167837188396611513926683769060778405595594189246719493147963771\ +585272425370343059241812465766626263037383448946247774922995538456 + +302959747450036387459894540235123971636233736081735225560103365199931874441130\ +028687844971235610936970397848406726190769677830014746268012196736101817081349\ +656655601763492235118245233981092827403053301561012707235399947855537227702673\ +115080193923405716924638051038778482672171811407158883251558505892377010455710\ +319990655264520998342215169193426050947066264799022089709463361911581991634132\ +236235181015365022124273668392673391203091206968415123756985139805619819948635\ +585098036367244625761459519500352081848996610385458320129436663789997480901710\ +236533281632351075631018953036605448865067979102609958698373202351739037084198\ +859959854686524052635434932149192814613278677798009981810176896062374905813080\ +695541723785722384752300108530162169759028847317412933357137852658857592530457\ +541194055519184988325702919625987235252373136433648520068960515999479321705266\ +200363737167510020818295330709991856368698071608390681308833732986190885417272\ +969842576509112966985081710151846086847390169261245145086453334691096277419871\ +3345:\ +930693231599434286203873573061837589132316455459049942576072973261411943411181\ +343392380390521702194933051584300041204961744546142818900341148108232245516308\ +352251529459927737087254844034560333288854935795743568330092727805587255201888\ +679616612146267914020856603417469217828373038740861077146231141116009601352411\ +392383630574556790807690450274886610842459205819782083851300701981300331709317\ +475854173928839271465703758308070132786907761074836798043983913773713425253745\ +831976706954608514918108081712101222457655798954574488488341447299796161150137\ +009120407480991579473472415230245163708194377271500338338173999820026824067740\ +589458443634325221026946288354108649966499309246314290378437430114881939751672\ +514482408975119068445770675902404635517404232907370586301639272254322050155034\ +259717291845144523268114851768774843831745033971003885574331760999006663507374\ +770033967116688049432839082145362127141174457535925434598494532740081104764167\ +980472435057459740893157068725871031296412012156643910826639579636068426712180\ +8506881:\ +124062134902771857808534580418343363680096712316389830971487874040892814366277\ +979003337153143912392086073485803429798539434004078813978547334012173367924872\ +380640790556349965429599395678570501617453158786742208890355307136759888856891\ +276775013281906113551864152989666063823091754247334449767837459584647332522056\ +264999522158048467939823289863499037033159285021818732441029276625360357100276\ +053803664807515020472139007624316362009343461498104129832981017728476807612215\ +749657607694537693693938752023498518709797429374937046822644050247374897188793\ +539778884978712969121438101727181570068127537788791830676329944755446141609531\ +351602952636510211504012081264927365652850221141519431920227501974972275913441\ +660006998810278915303002878707039246012431562603740303148913953818214501647835\ +712791799293270357450941115931425860798786834065418704907429618043480548270653\ +442867459973893772042179984852007957940974947913624728030501950890442886790939\ +700346822761779364643106218278137563910934859561945569647393834353388507452552\ +42760191:\ +123962089525803189340645553691212614302363853855543557349822186650150914186432\ +898393999367067391258981075575909795085317380631526665144469607131693030929830\ +698198672763433855712531664463102768536122636195589626097935017768275509340135\ +138183042169404589635378173076017770265901108818437308196015981439821888687063\ +679421203099550198220735030215228133233205046631686214889385173707764646419284\ +879265937898366220730636927592466305242434692837611984520364767068306530155575\ +158746803534424218143943673580671415397803145233350407883132078628854626024625\ +477908883655282397228457326089772811461407412147942464999219833942413592971357\ +125884309738312015793932263047744405054556347177874239251574844093800357087207\ +045232942767703546617290339746005616619589918774766179119453940997942058603251\ +939229300259242641872798089579522348953002024486435329603569577415004050714354\ +102280787634980471338703086794138575328071050747402127449860285197628523669695\ +322561641006873850163837943899691804729439097607350700217610338867039758415350\ +78830362 + +715344160546506053018067916441327666320749884565742835949429135080819680868007\ +605728851874165212452366804013327483427820566552268708174459045386672325127385\ +114495317950745682014690558839059759173739230320924114125600280099439596182740\ +415242014142137837064439154081376634277409771510843267178838423518517984154190\ +881063240091647479545363212073885459012971441095047397968320460580649550666059\ +837647322789021698711887017141345641123374090118785638881006401453133232644172\ +331172980349339167214619778709101974704518689271343834668314699245981805001489\ +636858718127486497636543614456608192432783080652621388179211975629806897188843\ +160582161919536541771038624146704077717992698607413512365889920967554179985948\ +913643651552422324073994685702863305075510372619806299978928483665712390138333\ +378535576543691534727690279125502997278044169433853749411712054086689855993754\ +194777773047860314479987880718474474208122784477954631198073705465610147706562\ +095075683476756851626930746022774727654675394852191931389475847426238529424530\ +5608567694592767669567485:\ +114455065714095307868118830275460538804108162103324825286996251939970997930952\ +103878379503236654773304063460212208670270996102095127387177178891841374083145\ +953297827166435956731563439707095227091812015877198291086689391005235918740298\ +557195603605444646583416971782465469965868723367600964923100738289374032822806\ +655958600209408352170101048167132066804210673864332444841572835615963803190909\ +701069237665660805927294756101280473851829248608516125059571134662861702896541\ +755725481139053420182841100105390452348024439591484585037533593493875207072432\ +359409146455631006993631948060089956410816334377031252202367078491619235997609\ +986105610843524330296901950536056461804549699993884593477349147261022998107556\ +579691032619966775842806283399706858032715408097094109847451273174384530688939\ +478296142574060797928168697264764376937561621691017425880612556478141476795574\ +722261381068868024840844490319844643333844547089136882140369759743439054489706\ +908265777804792475460491107562894549008209355776227278362567328262376036685902\ +241814686282474880803766279:\ +221756689822712543171568667673546882749997970869614248616369979310471231883369\ +759156518210166759571175979570426036792689132535595660453028079406628305634426\ +126354741732974447360339531606657846253145261260650338297373071090098459122118\ +542632608240189344977407220221943860131985891128494033654440909303354369268667\ +305965102083180890039831992013931068935991884255072260770538043416387896195570\ +068600870572595930073167117327013511431528650148295393679245072014929648399306\ +795217503670344174975930427627877672065933120373240636005619894527577062202858\ +549642035224973710177273699512743741795114791034835700158610227369990114201144\ +409001704727892137735419777288471088055643052134401665961364771254062335338038\ +438173234703407674274617707014247976596407973737363825852507059166273160087575\ +664045232102152438863049287538896170684071513707192263038225480698736391136579\ +627403626067060857856598763146924169128008894394528828908553255609044240978834\ +326971728303024990888455273771655186398230068031724002193942255726097719534016\ +457760585236821881745833983:\ +120170637729858074933418926892577794783235429821821586214132563645839307496789\ +114434874157827241680215392124717410719156662576847855199096204411456086253594\ +434722707883093457514430768668557206993816261932049454466567352105733111069047\ +236048677923186811003172530573492508493398009697646212117299916021082045074521\ +208482243837022521738457522425960731417742382135431762554367137890267792047121\ +878389298552396415116417803631714480857935305097583184237482527669003267218976\ +213643238351359594473477624907275150974211194068006608365559631835472549272961\ +312405607228416118716959085405617409757634996652938367589467464948309165738231\ +708291425589967338687133815869217104739590372931206904646450881014911081659420\ +227337167187510326512760827244218821110337553601099176054840981542057897153496\ +827811811213366033328471297905896179453273099812686556990847949741242434416624\ +519094734821636267383093930883549057375457430594423182636978491553748907389682\ +047367452786712471736707479239712857972135448722148077603424092556314162669344\ +280391246913077866587295271 + +158348444151469774548335765813521644515894096058831026317698686817873396376095\ +219186421363012902247862586077718495096164183176083638661355997918261465604389\ +164777987022637202915269811304453426529140886232730689357107369326896599546826\ +977879197866744214590813928782160670889333072713213372076914166814031740620222\ +096627966174797593473354188354467797039643805088081798071919426870672233314642\ +953082219125370097281416749121370007682492963462746019874621812683075856737391\ +007920705903971044050916451994891314339534606942005543166165795377741434662375\ +955229893463370206057311773277174926176509846932971298586879031626058990967970\ +505410940293948838884571678563798668093182157173484130828707113750334400398660\ +348235884809950348030411188436611054804982023783245270535153735126550769204667\ +434556945983891538476320011110669400000199540451791655950968071754732102936535\ +168723696208040682785637021766415238686083294832260449204853908570835780283356\ +963282883490691222614607938230023211016130039888113806142750994372202954417658\ +9609273623223472232904601214605349233381875712:\ +263907358103524308016003616240943568139453322722052833994193849431503541525058\ +995713943283395924782065325990023794137618869102264135554299500053436641830640\ +626299955141330592091874820579555896591857601896357815779451275593474551928543\ +804497439728361834065273595291575498635927176336000953278227104376648969789525\ +703208248990409514456586836046883778872764507544922919134165364811094117315511\ +894771593159662310894325440097675771180209977516431394740860477486319776519878\ +360572857547741688700823604288541642477327709995560287138588959518137553112505\ +679827156470494695761747914993997234830953625721012306409348099048606133247946\ +677588656444374878089406686542417592105579952839008606119230077891180195699633\ +851362277534563864366989638511839912058804595173568794241254796521946807992131\ +045318043218350590798105204025504581391864181733676325360766601269392329209315\ +187523661618291818419897568159877549759165996061868730643081008173729815374284\ +190887614668635462817804642909056283439325780981407041335722900189937717909205\ +462776149043535400479799536396435459472957438:\ +211133135824348337682086534294478483410615204298610764964437050600134692350033\ +411025411869480039197870925894560881379899503473755147191112593241776237231654\ +342798838338627674286533275678688560815411566252023050054315170758540942143984\ +008295253707455093419878382769349287304251187793859151157176173840363048243260\ +400483899385031403522809458387053773065030784347450520597797840658117177772403\ +000658673634443660675445999230969003812217525564493573904209997059225356457046\ +643331057306523326152874384039508229960772058482645923512877153986056774090200\ +811742866935514099215146596342819747966459096714001765101279023714626373299927\ +443383895075181545207386833580070794932388467628363739027968376926415952759709\ +397131484397293031273931252655877042079891608804690020094102049268889804085050\ +730129335727701084865660783523558260443144562362348283321635539321258047329763\ +071505828333710841893913354257538227063495876448125763532091931561288559286353\ +017858039298230922470823476011445724256270108727169418659906970562309554685398\ +1050706891848182833973758045880640459723759616:\ +797421018282309300276471146922392374361280725303771976263687044724945058896296\ +451309105463368903681696970153235477683299993604051654023373903149996643473426\ +166434265143380282785745212956236077797941832897001532940624177162025905739667\ +502819441373311769422777386686214623042675710170924642038905382252462485182661\ +524114024567848587159571579423965316485436953070099618710616908871984898104859\ +518520979551476408408878506846489536612480506172925117451120162875411998798910\ +629645301999381431439669279547348179362682729535153979540276434848292210821935\ +564796443872517939077424608576203698347529101270087333501730710945001551555155\ +540251494872452369069373652183820833813858644536695375055396279203484056295384\ +837626040377194020678066253140310026304907208174421305017384101678566613477185\ +572575244017575211126796263341583248723084854182022705297183955357678491491724\ +278510184968749519182312222178407427566490416770984084770910316973078295508562\ +993275346600008986039724266656410117395243871165589356580330661737127514660362\ +456330958501002723618710978858556875800559616 + +570513291024910857180683250916886630281059424414328988931422545533517561122793\ +631611698890692975369823565021867395616597231593865114054852988652595857222173\ +785886913949317711328526787771799158072614225857979913571626790248887317992360\ +167800299638616884182461004926831944232612168588972544178064099808031631865451\ +995501726940320446490738407683552476544375207587726360228516004525721031635167\ +189313406844483367879499127048185133020654599042180384794966476592498269287333\ +394273459198207137428730076666630101478663430585733673105509077278403044440224\ +515802378796047848113764972155433205375289582554589182264296349226836180582017\ +800829021699268814492289365041654321714838113199714700763684988192837776571621\ +041753135136959735893473906920185465471635513195159451498432346221258748335825\ +692841909451266601967997403894935550036529738793666792238250159177997490056776\ +328670581584491554242700556013301776049152944144145962242210164374109093577609\ +193798653166630449523508889477961157587292159917031040158514486371046850698665\ +403328230477729237209338647241174563848372252354929460284227583:\ +389090064478803238425733972877396658479573008733924311467488310125994876745978\ +265728517639007602019900455338801296015736830952779627163537976401354942031059\ +255968507737945477550546732698999740662321990696927104417850905895751344128036\ +309904986792819113482722824254526081607369602139248301886858284332413485304722\ +151671089791799609280132728020486736447880185660528840776199747817388639563882\ +578272823859464332390249881899219107224037658578163618277971161769958821308883\ +878958345509682643718372287295933347434151190430249861828790495151673867183795\ +799033293596814472790477600948685208383998583347199295232979843412101400520988\ +783820080907740294158571881335843414994333284856510342103216151071744491124911\ +990261465685618399319959135671701636031160052642583395020843964015761785362259\ +328768408878788095431168614078372538772404278191313779200894852629107049320017\ +258846438601547862385140157859503670871838184084510090792574281033587926199019\ +519816410838837378584463300653427089543268733889126702351652132482924347842112\ +35171680646026590945513301759285681091536143715910835768804704256:\ +389850748866830549216713947520052085840618738187290114045390699948062435462301\ +331981356410111029465239490497221784384528004804894050441412571928941114029614\ +401508629838533859866372064119581576407711498274915002737787813507365670922683\ +354834649155758577888929635132714336531213138805441420123523295002802371509329\ +856943111718534867581511939884626219914411129703524819095283076026512769798731\ +261078050989625023322588403020721217239057014905313658246666610834082223523316\ +512019983305841438870861931094976675735251295277422623893808579753950006185298\ +224861622986980508165905767826729986256550490823286773566585051844511095843507\ +855738364937872178905817408519573480546833176486981816284098507721096245857916\ +327537370957663200281352391542177127256013801809513340285155231376241334482035\ +357327124508089525274704732845010389141080369508103690865465831197313500100401\ +233940618536554311839573849160059627854061930449979293910303021516122940029443\ +019743696572446219355717454498535854741983743088553134832455818188606042161341\ +45213173620081314918751450217911557020823291320973945186837069824:\ +385050515979582938058684449317244459454543188847291753951308608752890815619344\ +418067929799272083548279079529764867908297817354566403941852679176504766181588\ +126669026481873939112166336071041441922517506254469620169659402374985953945928\ +677987133408787884226832363218232756849456355231661973760018153141282186541706\ +118749055945769990183527736294041132309358495297336272148994808704990117447881\ +473121375354205848245506374080828354735015786468367324134836307698950731331633\ +392088531033408793317653189104548710125193434962177839902896771413194314949479\ +782653752907021741048831277650278224109058573723776377672962251652182561109326\ +578869913576493811603879212797493914292901745983868798224200059853444221688741\ +981423885963230399822541813324599524535071333455856132404165710049819597890503\ +145434594517971428816214345153227839896738653503172028828267415572305502675384\ +561681061746799964421718827327455113766812720973290252157090591977363344191988\ +954148747606057442566422044297004703507172254103427691963065665454925138337969\ +76550081610997879196925233902454008520815752950469855858908987393 + +112257175050859411550752248084728681788327833874184396264053673467030037878596\ +969988703843029907736127965374317675974948069611105935122138212351277419722573\ +057011124405399665613653226476640209071786653482772221698300609700311608038648\ +590963921562560930617228290860978048535424272982746566346480687058647938931792\ +494772599734085765312766056205234046028863592507837419129992867085316460877885\ +789539171069649397622138447505558858829602695700582104463802776107914307926273\ +214698138431329653367976833729651926683947234915788607043713802723642663637964\ +025640637436341151017013067623453822445820764645585159304152273047344187434198\ +867025897525687276617237932574144068460864621430701337485740486427047413661483\ +598700092348322437326444026477488764821883728727014645994811437194748569816146\ +637297401701871436627436065564252496196647389702427641868798569366840114174731\ +009139856943870045531278316406330327666097190113056988423950985903950648913437\ +941903061243609720110536173494412493715304181396157897404816630618506774378126\ +656051207121858460635355814516494613320048954756343702670887714967179131994777\ +84576:\ +359223730951507047686474888926681248550952555597868396256182034819810022826661\ +034067274739878182888378066110740820008132913491632027784959679342819222345737\ +027677813259054891249428372903420422893266086909226894769732780025626089723922\ +406789743545011902150262709179337950528530359168404540850497452857903223605298\ +473153621614825810650813680225617009289051037184006086292900759359929112814468\ +972123389591255433994595098151461393996083110907393308647683311137256462223596\ +585259225213975588028764886936735444573431350424192620734174502489730489123221\ +344700889435428469044927072315024239903803264048061000758152155946765210567523\ +888750896289403659049999409689629719161113625114956814607072946438222123000438\ +810228802584203621237260571488035658499878399671492452713464211389474559573354\ +214818325834065832627997963753069853886591400943892997986698486507694378753104\ +273433657764449139981625487096493565718051243605694709201664988577246252840936\ +634080367542310643479799635673030367954737690270337653443034560877995332116573\ +847116980412102515874745598192226325580714248159368956390879934850154260139924\ +258817:\ +718446091617723823743472339783445505851897301395650654672873762721567280990140\ +047430441708659481697917967162683292917863371736949992580995225625799685473915\ +378751531891992346296580913672393129161494601291505877424862966232760119539495\ +026855520043834180400148438707547851619936204538620538566604848869011210681280\ +057458080507476672755098303144023100324642200310394846430112093113226789335462\ +593856427850182934327356269945617017966384726166767161387150750588378432402770\ +054808830616620216659203929959714386281725317569029476199032082945509509924387\ +248010561479556880727474465822543567698020655144612694849338701244417579696748\ +907538202228361418492140400845303299159502212700265159323931083639682418304129\ +255252690914821961200434524681829932197503648654196326743966131402129877271248\ +048776305078912127947091629883756392918045706107561262231739566550992365653607\ +143741986604170567716176934267603930852036052726419418870817131333887879102631\ +861902243094297899649348012869172232508195269963726340116188461821200382409452\ +823400516165136422481585720010982398981692816534425389645158169719299759587995\ +942911:\ +216508910512383622654019475845034476415847966603170291589788162796526699278772\ +190280169944859914998215465884713187196883397693482221933777604979888331827818\ +754472343836245705244148900472024935634984129277279331763529273031989392930335\ +645471788131265936927160886160369220002699883783343149019877323088836044017143\ +308371112376100327561822135526758829869999741446013982332224479585831487709721\ +630434273769419421629572533510046554786460685514577032828144707143473782672568\ +465556097523567950912879933097938161818019916174456153047557708713706315230398\ +277264366238145031097978159354114453606863929301161045270814481870283821986349\ +944645053745537437628565712608955009429036482124886620466443631772225938388759\ +835568942312412285594010078372192399542904340513569238676810665771368148881011\ +506400324035672016652102027333750356020885866464039924552417876836208934121171\ +031957651970606287945036733081616118341676478646035344937556044308952306817828\ +601060230648268515401210151002895147060519501408822305149342147983981551139345\ +702183956987879884819780766298173944149228882734386767851896416786193194714131\ +054615 + +132012216859757230037775572521506266291648756272586591176540307064815216284870\ +804003610829087044921463026377883996192642548317006159922776348121917260095755\ +503134200051254456758248492833354558969935426070515312351509557589645775009392\ +397810707096681214323988033368472601292127149614606307827332857383610261612880\ +149851800738072908871413867750169880457189422836293886350679863430046835998728\ +503968411374709502048085751758357279983700825511435135236186526528524349684289\ +866134994962853035963655110390488068559802069665057882626270889559694110103339\ +614714653776095707460432988245132622358044545269821640409714299840952736762208\ +678423825132629401993715370700397676439090535612169552217898132208953854961548\ +445665349681578584788319590102108919102047147072307672935028699164699040107819\ +593310650278220532797365455095688425828790267519291101928282274561719641398897\ +396081957317648029219764913746611937568613799412445678975833975300971447407392\ +459222225074004927053914848774907852123372400962227429830440936399869647850408\ +582086669064900153329904310469052934755802091273007485080741188845130751301081\ +28048904757072082585387072:\ +129941436987920745008991085029475121438777397790146567403211337730417712379420\ +810672905442153473828965317777618006675940038964965863501863753205590982758000\ +265985343205524418662054387799411630097716524251724020175535553226342575243102\ +792828854736046571752987875687176011346563044215064549787489930273914241921690\ +360463236956655954422737535567113313191315194737567299162991295856521652124495\ +254774984672580210362737013051904769336409044672998083198233697843820513763972\ +958624209721154415763986439755518609563243788023944791581234447986521345096272\ +984446226201954095697805912140252287415831724063316256194061029456987879279487\ +815830957249824542191293962613581112253131999349791416109393349349987103641545\ +802835092470245671300986876566152902892349087226268026451665896936117674090160\ +049066683964912466791304630955735872647829123099307672022195609348335040961712\ +358400200677845948106950096030843007492260830578849183604190891529531875550283\ +325863741697723661618410401676018089404896857593338554101796520439673783494219\ +440300214355795412525585850807370090159727867442169346197944653791573200710757\ +01509166981998875416525825:\ +133047606796335709112268627100040591998243327020541449553082422558420376208682\ +812484206578052890058795941694338109618131807517933671302919443122667592702678\ +968227517133973416102287506567128757513702279902956887279382455931529594870509\ +852688044848432851023700485235451355437228996320479116483848007252870080510845\ +552745086421846780875656215978127742824216822670050036139948341431498456760724\ +237650595397759071093528617834080926307030510609955891104442032133890173051463\ +793472420924159568637590973450962427086348790170186767766524089991948246349160\ +634941447607784305791894820169457600996189682835541020129838504465879493247100\ +594050162502276948805205568338213706657628486388253854427328536072410195068797\ +427426212555230531354636866127372286724319590459542530462092671607458209249325\ +231980424306796596670248227676437543945310861140304160993898390023766537422865\ +172170515737377517361279547196351431616792343370716486410377440682963654352730\ +062262504199678168036526444463734413258483741267332090969426417567959231863679\ +412410205085661065826423246746808225461753621174816132641031105254519638321541\ +76390562796364757722988543:\ +105130613687748440403511432011229858831972690175287239196829475993126648110400\ +750262533439421883033948180150733912153862305591700482578406948263180378500381\ +942931219795467825916079248469906047619791976986885180126238698257674081425340\ +187660775993577985654007302925895916589319240020972021684492407773144206030363\ +132442904576534511869473443243149793874019977128098791331139901450133819965368\ +234316071115387628104496140270727944750819077283366838327643799272035552251700\ +997531545884799098936139862696183081828300151270958111936893533015523807701302\ +280012251655859259294034717634431318512960859380211136821233191540925445878109\ +397507332797630853907140959471006719810224859482142000829423025569925049562908\ +428223824159491166638242779992937354620015709751676809773402034050102009775238\ +169253094733067091077789818173777065122385266544833416065682783863046016326950\ +633902607826253795147867077970524485908601617467197480710208554088974316649613\ +526490117927498859087490190284954433961157868901343184642190819205582059810497\ +194858496487160771768131880029400765917996988128276903178409122315952875645275\ +57120875929507253119655500 + +488949073114424331989857685876722644697601567909307207119156901581714458922486\ +197520366859879607964550035472266019650901472140564231295070075267661938549336\ +214739095130688064201210254178935360495766103323466914079277549850343782367165\ +199399551156706108508811131569540958310945961559911997430384872632983942678271\ +786950257384700840421378375689807688340388561619720283921588077501950433728498\ +616933267926716882174455871193412683215831679065172407852480948207101942981269\ +130381798608747400533535334314587863921523124691851558085847535204433322048503\ +544492501124937414992399846945843730930419783978767143647392381520185969513736\ +779137443415628083070836180003896971041282966652257736112342359421183591463096\ +216116107243340725938249561427959451975245383774860948337193997295206300081894\ +287362496290271383807813569883781976263221517101752202223195204013179955491073\ +380520386478832155548761454547836568875282932892731317136207806677815309844967\ +545785245423316464344779496891949695116889772538265179582984223181603301779234\ +234493039924829073877322179810246731866967782733768227520142349831930281194941\ +661283084656272617772312904338128176215506943:\ +488934151580000910273551273897697487644653750290386906745416457435487669400572\ +725015167842867670672320363495809767881356993535702298897577757848734165113091\ +204748029151688116772874879019483344769481497299041363106529080583752384971692\ +385733316678114521160674624371956108020693966402860493002707429115989177034229\ +628830451700707728343723558402728852434304305205267896241245153480508380259851\ +519246618374282298667728579021827360819305802512678832227667367684265007961936\ +748319449553126749205892203894237440842958517692736453869844147101725670888254\ +286293997359910755343549529806959986218437065451755335189343902303889634760666\ +178112203247542649271860671362987590093769540864579723342704323233629966980595\ +764687841035840334263565508118447507008468372635247141084232866472990523277759\ +579664833154630306391041429442958043888427243970823805487362702141697769613441\ +472269897703528416865587682885971103992712525308304403411844118759899727711564\ +645944547056710459139390891071209876487995360106990642740825919354388576521268\ +002236475346636454596001352245339072893736114056480478457630198355420953169919\ +712567823383028203488138604733315617138941951:\ +488949073121538988894643953985216199936024823203052479660203502749608642089638\ +295609471228823042099178808299295349744738873225644092743066960656373905335993\ +226594601021423386483533414143499965607377878255370919800951583762215921081413\ +178407903555239910874390448732145181095513246806670886194538146997695604119376\ +320137875242368153907031000685590768203853402852876962188866862977598879441556\ +746937923129924873312867723376777395682902527532315323218464968046891265803922\ +053445091259182777893870605821407728384214483686254470070998261258884066527425\ +861557185366656552209296984910159347803942427484871690944116736767282346016766\ +481058351623931611379188907104444816802262199432803773786084929928117511157651\ +560581397656796121762663813480037879330540630321311334742826531199827963323669\ +532749752637315112355801911055172776284138788073620374656915281024766882107181\ +697028340651677475325566247000777504448846697756197542339170820790556541789200\ +600239074196576371686317370946522040554247204578281543560411838691415567469924\ +895054150084305830609314327796155704111172955181321008323078497301990011464450\ +173595889401386807929213249376235683512844288:\ +410092040850741063574924314448267881004102909569185969267407508839136321838722\ +356274721146780423216131236149452232593357903453050689350036936858132109701764\ +176101779730272532720708856606560795421686565935598163200165965062174601538841\ +164283910598566893199077869356770126329745425450558301289250155105932429204583\ +900510475118100140064432426133911247203584879326182977470889502548763715620374\ +522351622758123300160219051142796256622252657590471977176037414742245195000339\ +606319546688416505608595725014401929887474344812706013677475706009565780205927\ +550652254709432187167550972375130327086038724827792277736100097234496216514314\ +992302320048801299291660341525213217242775422880584028047440325813749759959217\ +670606269298850195316471355073659231737687136475218967054387588527690043656123\ +882616735732589625869823197943162558694204859648083112026876285155808063060304\ +836177870164739817924670324040456826362170398791089139245928604549040239178325\ +233934107353043832431499717292477080819150756301917891165092117896598141214771\ +399791688514748727275067877283723067830016526019688241327241980707938730875970\ +453740869024411001035373774440383590514540543 + +138762351133548077743415873038775897676329559314243951028134391495680666126742\ +627318034187764134859143451991071936930648952641452215937583560898153959154212\ +331937446292503726864777568089403384312417201291981829383783933459053277056867\ +225409753882219567017371300560842417076989099209444310098365604624717628375379\ +980263242978656690485301861976573421512028141985948836449854756971767290548143\ +780811385408546699083000033158849327883052792311279379027140265841600803635947\ +440536613329178332625418476961881567444473913255263667920204837119032496842254\ +257874701769514109918551739476539710067144685650042109921696935353572737116331\ +674810302627994073861393023905796175030946147414899094376661678415597630609649\ +262528629908056136891571194817715459291132896292995415180128479030139829508266\ +122458174070238486081523938955700522865254574522668913798774012105047440049501\ +051199056786759978008347417066168967801203517201260585178426017111026017793989\ +389427220441022338169999067681396473395702714890439297080064935807881953245907\ +710418648591510662473342030438159472010166701281033339560643745499156949954805\ +270532411284472302932666918585682103751578546474039247829531600:\ +450975921267528881423655664394522845393144760681247938282886138716671928584487\ +222831784722571610760119796408472342902198794351346589152657054590389950570397\ +314721175514383846293965204256099643265796056995283154257081276647197478059605\ +765138807513641571717612457966253627811200941970620230492627213620382045894110\ +469714276752587178768026064572084351210314417379516375803478174760698119576394\ +787569645258079253648695609812953477740298964523455884378804191966227522764356\ +600534760371312662801696957336463525884203945587877581215431610912768542965213\ +973258775193701787203408162778500052944557185011551045817722710637113277056377\ +194162043167056436178509417085073054187975430946700646733270386867185849869150\ +444005384070488850346635956900040024282426501744312114727700197773208185313100\ +334333362225213224530361991455910413471238325420580530693997147323338852528605\ +198000330647125188683294538737601228675413778550212607904201819916998032050414\ +439983159532958667065493168642852135444972885666712576812493664152681407566007\ +517430132936159704479609263104823065901608783586055277282888612760789387599662\ +0564926323414005158200643160200198546102009764294645825323130880:\ +451192683260656724007957426058175976777092207494624540659324930236360646638381\ +683748354152678238888901081422396458079150319824763681794290803124911000694744\ +763297838595339341499141819712715703674786767683241670748717465070756997395708\ +230692393547042056494054159153649282192389880073295036214731189726993122338948\ +301018342872650826019627056625874376747927301076833848077967667942652566029676\ +700006973352060132083982618776926626894744409791135978994572773976897752724710\ +303176920500272525003225286717607554005509155367978660718062672677973254006291\ +141686416925496737373797847620211281271259929459353267080785600431822231813283\ +592471353056451607042931613125041704639357312712304328184964167095498090385813\ +245760095997698151316187380608878480838863599219402625774932726297002490673164\ +826377543103745873466160903009255870959444275271535698351498781578632176283638\ +339301369350211149155189020294373256873760442935544357552204447270695699693730\ +083652956783457798232234107862502396065843874829680908732247814702012605381641\ +436209355047373130907439514261953948347849205490168976048860487848929733725938\ +7326089475382441229043956958296017272682761283530723746513944560:\ +446184119671208116731905065703522497902043234617238555051056067843092348032891\ +591460924321171723954896988737841199338306791114255994017768369799443038690934\ +265424049645148434961727306575484801689290269903486783418579230865098016255093\ +174236751494762065116066048329793147094902679941001782420197392110666296371200\ +941018896020736329385172405696463143448863196504953197651412551935698489879160\ +581853587848680112767607301573783706850192260390533088906398143691112508630432\ +277728843876711210660327284250005174687993240419497348403091138395489187448438\ +209307144373995629378706203376537236321597224221218277288442465270546278441017\ +225541409833806604016495454896514502340263712904926721551331363653070594807386\ +860257878371074693164282777249794553676951198442131074282182102965574296192184\ +052980354391595239002270080320778089682666871907760754572051286486676178995463\ +851384630214661921228235007156263910432601675547830090179818959335877146323699\ +576805832909173702942007394737072402637185030919997419166896685516861374134897\ +869655965125233463039536329326686291213595507312366477350289024564617433264353\ +5342316784854950139977686415831803521094566978552745702330993120 + +831903739527981619512103753089137519713228192986178925775408205942180012522099\ +640684388037362799002320370468347104066520003815425691665405614581277200176607\ +782730471661515345192309554304825976546548710150905569065231825305057961656794\ +628039182592626014076367970646950872424030290697646402321825703423878216266652\ +900955805521905350525486061357725256595734651223339435738558399391490470763593\ +681310715114319956074442791035414591596946799515799872319507450922047519589477\ +836698412186337464899087907133509391879292836286349785539115873914709397098939\ +790692677671590426359583805212491988547718022262937978704736854378473126218653\ +216597107456040077128134577866252997621638478612464003506545825774377669622245\ +745117863435804465294709351137777724127819834545786340604064885412707258003472\ +309658903471228448349385729653549870016082649339121245922013524716940636658704\ +212674942253232094351213214914155291107946094530331716541051327682316835411879\ +960299096099942159123936953197028071299831558831268074532195442463722436742569\ +890936257897752214406575649075735374504079239199776231353313624359918324659945\ +837537839666547147362161015234531617411979361287655105218633484776868381951849\ +92256:\ +202903154644970578907066901471915938056103241027759488424976266346896332863996\ +577105222345382037962606044970414356716783878140720208512968992154967225502063\ +922323675353858686876826620497200852136344799891171720965517788611001849284654\ +819500741796727923615629693875400662961011170776943575005431164527113606996080\ +711062160590465520154800894792038172215983419340084929828561135213470190830269\ +810028533933059892135598863968222417113613268532189407487141051892594456413460\ +688753433134023206192160923154909780975586546521913167867158299054587293070409\ +472699006081353421952926601446178434716298310984010856094626873036294998837932\ +594868466717584114424627878695813066142621046524134182187022956305932944533934\ +112717710387560108440132059420032068917439412975622522640553303045874029389131\ +733278167814437396257168751465931175621062360747339592864982851015845676375114\ +687564401603309708108236375635092699423677819866661428223882147016449410708769\ +658969027685099652689359853191529126186394691692087207152945685056755622975671\ +832223670399391216117612881678571153759055985054420471219118489779207272895106\ +948975885455846322239725325865227133863914818873311141361622613595429645885092\ +48:\ +831903937869241835719124297616829171175599908742918156457814337752422676959605\ +567893008909426719860538923594340072599423882544311760127542260964030769674508\ +842175669466121924384624573869853318740990941612483864098293113008040625010431\ +484382367568034052393693572708679479223251660379676404830276387253389984636595\ +692895343262881243190233153137630334638781444541895073087171844547067578659392\ +645923506276242461469928487254317713265779021222866002373675128484010052888651\ +906829718441716620401222485041511586084858055930658977674915126336730849911841\ +508017756659552892438080974545034286817533359824445883015473972784351646282019\ +194761157184563880338089764234828562402118556451831946628274759699497727804780\ +924577663940525344754668083670127421386214903152965367391097466277756658880979\ +897531539564653736654279799647109783110428288736893230963656928636457710894573\ +740293427468108022749947385078359567867236885981495016752691720771084537480965\ +537785980673560224646953134468651574528769665979806376721529894790751017132709\ +355284827842960401963527955520726863776636695129640543316742224518493569755697\ +472934822430039832129660251188806428581613509427605270413171255014790855305283\ +82912:\ +111552875171678263962551551595357030862155883548710162189328121859380919029563\ +118821418527847248892763181107363724739318222757160410309304919044750709814412\ +699080460974974083364488317087514356817135937920417561332975505479370258645451\ +255059905317193440506894965864731680539917517837202787731718828208668046700523\ +579638368181783376854206459085484729009509874758288821472451058240513292339140\ +979172687142929392035671646767291532859056752153944881739945552117794907114258\ +905855293639098060301822758200362102288895285949628353276110020083572870798806\ +300293806314708625763124498028610024531336323454892263168627006796526212246310\ +430657304091316495615210061949055153253675336557290099004864335736003184680025\ +674900043399428599860047189558074363134466146084043942802117902368568094115721\ +538255417283846509722622907924000883355081227703595979001997851658916315505489\ +245000582750666282175144423635325064231811686813031239645634854183032791493243\ +760009207157314672275568474396250965858080984515988037386939278749146977048381\ +312158194379041727213578455743041067318070450508082422602487473371864572969326\ +513401874683477734240756893158727596125291716115451976744874152636669208741847\ +53152 + +671383797745264147954162281372916111442806253377242386985229782727326243981086\ +323821309626482674886080996177242334682780680556985471177460069832853288250634\ +907524791207432088926638636589481042199341150044308859876708566521421204433205\ +068298279176580833013061752761413540583857334245200181350723654442006810277345\ +649583753448542239352265959172686705777826287269591154653226912333050529413401\ +995405152142824070345050799462112848841713605727995865850511890239377197718129\ +091280151713202872965504668678242943846469314423987590504024074072524339488378\ +146283303707688430536932867267257651653195416169864403817008958526978168819717\ +653124343006247303678380512023815041108257729105443240764477823433212615008987\ +064672383106762999566440312998036181380890542180126271212189637635607197924946\ +875402333140707116940249836987087508629106087027904879345007065309916528197498\ +300853168142189372528498952434111791686169534344549024392666576281878020634508\ +289065836119096800189012527081925861714076969635272249471310781708074914885261\ +134179523901430900069909790834890887868601469687178335269209939796691696661137\ +813549119307508289197071385846953465244264494781652434050677420256175083326887\ +493546434273103600173024:\ +153459153770485659898199569050865484402380182186136884972384478926424074383277\ +654671124991861548435270875109374229931652090464556800329674746312234021403190\ +429792229925383839585953896560505924881804195095997257954593495732996807154842\ +755990630380373494862012691330576377299025840680046754183812394900999604143988\ +078362634277412829667224201192311704682127237421205384463399813793270719146630\ +600283065501510937761776423635857644740111823207367452059426466090898090739968\ +673474256706029204421700070567484024000657098924923640273681209317445462643516\ +772423107152732124611029898718065408316621155018309294887815359404527999666538\ +103701284456786590494409525708675132465042912099098305019476146737697193469373\ +802581182528517155669643276643789312906815657598074404047245818241853573315758\ +958116875534021040320432465453150637530492109806110647547624904979165028086728\ +894961901677543065558613905075473111206698257175436937653855734662695744641398\ +207426879061679917580570173376194087928666453103916659553916725352601812162358\ +866200420877185868032783900401375320536613038300689131956933998793677599429619\ +742649410949604394981993198051791417924928112630628613754058304660613384842029\ +9659496513057491284688880:\ +163050350880992719820577635973310588457645800231736719778060982665398109730958\ +082087604388306259050539757687478796928280993186468770629653636883477213378728\ +191572954821317531849546314310542162021167355696585144994916919719453772537865\ +961098977039013114766950752585090655952967480038027386936264792812622140280772\ +404345933308402322269131462666161026096170200066116152391760916369214898589834\ +754796050084731871141309166332653494039413122271426069673187150345641747829201\ +734097216058569687098769686307539053174471439419630240138902538078828303359081\ +736324513482581535297888829719380529359852407514958936027055865175896620417476\ +476901515713615709724938528864526212917352621110530647419333446067381229916739\ +415071984670613345551434048967214194778591813139822822650402500462770210674053\ +247737759244369540977247493588677012303305674804477875957093214624394454897302\ +447312654627495178566752025428528352194371477125664247816163918032476130897035\ +886801683423073118648650936386096939042145882641489962482021143519486525064260\ +371763914748441421706259194872513694470844838272575801659390459286919049043598\ +869933382555490414353736437876971481088655693480023441306407627813322999582906\ +0603634413892848391815168:\ +530236983316532815121276312462493313302244979845831268793960256836427678056484\ +239985220854510373435027337264429402494258326873558328901536786268005304821087\ +844012020288574034943337321935407987277263777240111820324554794585726440422596\ +505667244731173209767832806138985698287508795927799583696895535456501334071363\ +581769880395356799066234408229879482822572830977608643468237624956027864797423\ +586235857512343461117442624446253661621216730117571820305114802949293924795088\ +469378466450420308215216286716811254753888481724522824054730409319826351299935\ +472946577901462941707645656698846963210227662168227089484816699446623476171244\ +454947834296924098704491582819473124611649626238635033111611477997557974212435\ +417879411603156419602500032413931337781291884534876464557046774484325505645804\ +764973289979379900892852475728595228245644421519707496170231427739950306314986\ +568125306568539309864728756682828343094338384817342706318007503655580943680190\ +566875017929316200782060047581348699824454046197707897115756651557553791763375\ +160968927982687925139526398255278646789996675254054801580636256798657453673692\ +253297044467033402057939150379013860548523792131463034823280691750017926146347\ +801043426893645561724928 + +122767323014713684557442729020466715341998628979505657684229704353296171367037\ +411913095007864820101872659840219130921806524108172783872770953561653684711973\ +479454179643287645605369250975305419617992099021774731734202032562350315172851\ +051599262846066242243199033423457222590739308232716875092267161669332374842441\ +033709536797052024535253802757116497594313048969994513468569485219924282091766\ +851846329473013959889350563668814777094023803991281324449096344061373189842310\ +871741164084844375029689516357660686194578391021426716624076942361493550508533\ +861399550840205032339721827602828852030988319397856726113467258843800562329430\ +483426147344429825470487171292720412312379846608842662888412711801364929075534\ +818168329263188893027952089413166874643840762633509856840863653983066792940213\ +615981187635685914972961287592408585810539623909712990570635984468050599860960\ +512964905651309756084205884506503676067264808969169777929868316240650077023896\ +894760534528160799876259475786563781048739978005708796388465947006869969100284\ +689080994589678971029788944714946472141702800482259868529720578240597839652038\ +728875955725197176220764696162940982167885743583683249625628077780902824328183\ +74495228282447765019033596:\ +283082173536961452407769367287009588671836460353139711498444702961741370094862\ +011919362480004256368129404666079436619904216918618576358529666421751914667003\ +648686045447747880559647245780193258060552049786949498294078220911769154403482\ +908464450865396980151361401805791636605204655629776473344275525486233868837654\ +501433355682653095016417719035352170849236981962605254681032350889807679228657\ +339208147715806690406387465389002665078364969570247320372545575712536893526096\ +517278830517647359380258024816671232166242001241410481278086926781257898013081\ +623490482712187047669526675639071632566007109964224561499766028796075148090060\ +545618251860746305966499156912240578118516616212427586765263064290914553251991\ +641994270282459721084617998517693605514612275446180927995505725880023127272143\ +601500020407740318153128538776377847303065487726738179793060222351672651663823\ +054718747795788173621305190670281468854814564570116550308527078268490992255929\ +481209653503937949692856923140789522621771444091467248525545206048901545244653\ +262667619527268597563252358886854105990994760797998401581306778593376341791731\ +440285931943901934144256322193361952107800421806522223414379385783308185156165\ +07689033284559929416074758498792929170030587:\ +283082173536961452469153043433279646787353116659594153835464397785237177659818\ +661054026761310410340714410331745089854935296952496434186788622266068517400579\ +240885232507071469837501294647114162007923357439633436620054629105599450527279\ +740389244862630771222680930688120594192414008068149907433840690365210881741743\ +846857755990277235960311971201926886313310952951680318585492339146870269215396\ +759461504081160296394494628641549546205125095528198582109027987454568908496029\ +962070998113081843662098771235215994804696257073308477621318206042458346428193\ +242515478359296470259869258418134143745031961740592781544065338146950565712515\ +326078506819405416707658951407364319478572687317419444755588049792008524391713\ +808772219799431376197529021362461552277579793584731616880678539864682700547933\ +466742802917267807579321999386872847709151127207367069300780092598046326561248\ +832751954534013855151171074388332239953795610143186608819739948460269781922356\ +863938940192628760449958975012128807894786416376349237477603408703788545661925\ +930621204425858917099005358055754940818130644409418247186249031361560712923265\ +544722433144984974271319644039354834499448150252253228585920113524299491272807\ +28623000311992597274812061327491555351592963:\ +104372357383334289986292817667461264194888954369610998823507948238075347582750\ +179881661718016987707637785329022428383715469624249390235187152429241257445235\ +258850953198988783088270577595190769476713205732866219414232072742837598151283\ +694959534314198355342706247445539543907543712705535414466574612728233719806223\ +813367021218729837802571201092950438145079274101691878770387029409773069908631\ +353687210459507570570586259868725186263827647246593910834911892286133474136611\ +542237382010734393804101196386154252527423038171322892872097999881257158611174\ +552310035022692919804579739123438303288739555767831506130647466900968524829438\ +350529108249582563822916466584531927859539821095609026737741099632977425910380\ +198316123276586310320474644339573235030521194348791812442163477336134214348778\ +212715456495354331909810003694433078521910564648710203835419537824437170091199\ +984664525310195383056694530264296910103441849858415643216798372431449897146206\ +540165255219228094920989283566347674683940415543997090494204105714745493013393\ +831895378181212991812371909011012564226988765855789665256408612798883702336477\ +689855438381742653178553273785136999588612901958521591618295172172732140693886\ +65063489343687416257234703396408707511017972 + +522194442651902137132367021016973283365088710964886919844916237731280543021667\ +184627789987699144139338567518804019610971821764019430214861566469479361570954\ +373409672475865975826378842415779182383216248959219522583089722880566437953112\ +839500348472232142739344332182249839532962818445938123113862320657277226903093\ +327054024702213311597794328166699535158865783070284029112155303379373948117742\ +828750433052851737209792390388480633519127763108295558338163460454489768203949\ +943951986142761975262302207334578953183714354365492217896843414519795439426222\ +415176724294870127926261102538243233479188050889262389947148720154690006855364\ +156893184885514467708408648056103619852000369694323294031698211683273282845497\ +071594974092014156922155510503182678306186829920730336487161543412306431984657\ +522343323864700432556176184326306479522992522798848452612541828159035478186735\ +002693596898288329398889664027260078526565216719535981417164534841725235701031\ +631925309744004975349642218568396837904082718934690998632174389941826329032522\ +845318541469792725911607583280452178015448241183025931414034788831243325222675\ +396377622501556035123385573990237424494777698691436763366319719984800900377608\ +862721071289577116858421571465331047946047109574719845578047735:\ +101226168436990249832548694848521633437550115642738991813824538823515378979380\ +776009977671326701645443679508408552050890177203482181883822195286671585263626\ +084845268227842704623629921986284205514341294695305140730825603389858118415033\ +752399182713762563172288075742509059900299890911812246574035611228558271905248\ +742442147100194189383376568069084662825299315499233358067116658670334358506219\ +743457032738654662884430052884639263380485838159651138424187191765697416940347\ +452406630255665261133825717053590509770635829538804687441037437075189754522162\ +784724787336674917068283426031563390901011888479476080332618327236493351684503\ +570094093695559707776430327639749575128730780321400766975534127996811175711908\ +415377458716559199120810484882104949991740982639433724745622309633844499884701\ +846892554892900056951078640621746793570620217262279074150624229381892264499232\ +936382024355474137164860592629019224803473434211938006964560140372144239390336\ +974895383037829546803831648050410348373675399645097627049099617187123390437078\ +154613346873822277257688055822310172429299546029918681647044524535115679431862\ +521336686492308731734354415381358626822927668303902904423648318134084904509065\ +7697427563009331389461040980100618585268847388009439657449228287:\ +104438888138275678975664887447194279701713133250456660518822063036303422450717\ +933094093612514412421793336656911031056536739709976575096986716142925096154172\ +731805806017138014140133230398292983314505502205363333921547337814072417504221\ +488668985263219598051055173132624020659295385676407612150812492522572206533001\ +597613411407390487831154621600984730366928347514925191320805231875314018711926\ +108958730884607431991741280783658877084447973755533129611375100624549664607173\ +593004207049470166692311969166587519452308135813374412485340221090890373894092\ +547473219588151595817974438987375628117980455733550195635326163317296192091733\ +100632255613046181280276448489948180573483469974079672124146902276801610778660\ +886610601261687360060500328120394530433563029325101891648190581439619845488854\ +111504290823023818955212652041771624268130430972342217181240520628880135289459\ +727980006188945214421936203445014567819291218561438718674734422248294340000415\ +371982105892266044302071649095235053339823035550500783147251005929287324777164\ +498830989860510470393865137584837763438075028678783924768231642584082363258155\ +813646861557899903946629462961785279828997746823645764136794722968155251354538\ +4176355364270472266603290513654522383907518529754691654268223490:\ +934758354278336052364696838461442597967744986277020319834887979333018445832062\ +233986623238265813084552844580209031696784429400823397776870273881045920016346\ +267616112561945505979619905475988813557646379565575402321664246816363914496413\ +159591945732473903060746615296937923339942939160231506877132920668004619887290\ +097875968385600494526254981896171347486681707872148044189587898363930798490120\ +487948420471681027217101015820048148790357192889483843051220809971886629318351\ +683008420023383610964271479146229862470599428607334459129377337041532712134686\ +582961506648182279833738112277658115518336768935218767455723435647654249012998\ +781809105575400181554122940019038174912099395038845548799585508035099650377958\ +572177290022044670517072895740049720526330041448799254506126176394759697363862\ +351020178962460276320485508232548625696854159130325486668112368045217104212832\ +115042860486298021973158447248106503841184738709849961483251847777163668567753\ +680724029515132763905427005238717158628034354872542121828742537525579594955627\ +525627790483249000185291166968052200430258105646065423159234684964457417500990\ +758025816296882099734588259162326941283422448528935372072615562344496110828342\ +614627532773534491086926402957418489766158166431144861740676905 + +# Format number:is_prime, where is_prime is 0 or 1 +[PrimeTest] +0:0 +1:0 +2:1 +3:1 +4:0 +65537:1 + +# This one passes Miller-Rabin with a base of 2, but not with most others +4294967297:0 + +# Random ones +10416536965533130067:1 + +62073521899194104903553565787:1 + +170585900781008069215236465296032411499:1 + +1443993313735051633697456797423139085424112074517:1 + +10771372029656662585340604592252023412983364818055143344382694346546\ +2298290643:1 + +11771372029656662585340604592252023412983364818055143344382694346546\ +2298290643:0 + +42588518477191145729:0 + +# The following are of the form p1*p2*p3*...*pn + 1 where px is the x'th prime +# This is to make sure the number gets past any checks for small prime factors, +# and tests the Miller-Rabin routines. It would be nice to look up or search +# for some Carmichael numbers to help this testing some. +32589158477190044731:0 + +4014476939333036189094441199026045136645885247731:0 + +1907826688958019501360189182099275775721983966835701205590751690\ +4309700014933909014729740191:0 + +4445236185272185438169240794291312557432222642727183809026451438\ +704160103479600800432029464271:0 + +6107692946593319609927894338899785515035614388823837148866549657\ +4810764573680243467182799164806563626522181311132959748531230211:0 + +6989612506894284794136067796445539076219364950255126280242854713\ +9923075880112964253713561700013194221462347575861905534037645370\ +21369947456703810795390696338067840821591:0 + +2577426147548683169379880845613862450845254401055092509543183257\ +2701791887072337189992932234179329410389241899414841054215169960\ +1546741832617953638436279944072980418788682453341495300190580109\ +0622787969540076319408964006231:0 |