; This file was generated by tools/src/bin/generate-modpow-tests.rs

modpow 129611417458120052427986861752201926247729548989382774407241508983345552347 1210240773130959764769120133170459961402409292412037359552670422841498247 618647406259080238687939799259772846516084811105368525175949 => 346752511404950771533260540529824748128350358777474698465132 | 1166145
modpow 0 9374945785892117986139682947759306779537813 7430267589416313592667327913663122195977723920851401316336706748042 => 0 | 706456
modpow -85194407795001763932013254767451978401903861899071 41918086415486708011879269411354413700825569751223461 -24390367090496846557768135841265349165057027103 => -15089242359341132853993039865200718936161228911 | 792840
modpow -1631860399325016202074908870085490 16806565036620321441000209162867390398200113 291585680065 => 33046163150 | 629300
modpow 30881094978094480339812243315321705185797448669067922 815469945668007329927 -283806890270 => -126966627702 | 307500
modpow 49453629535237766820532266913909528393718500493578912585340342646182137265415 72178595148740855788642556406 6917908478539450416504771337550343030556747672262823001806503278546 => 5366545653854062499126273936687712301847260916879563557700655952243 | 516912
modpow -120920267493683383759156844 55174312863658389319897242605746126029201680049484483459633513738242631743108 26109290146907734 => 731259484036940 | 1054051
modpow 31990337422233960 1568692991471 -2653261814720080381916745020849977389155485787884754101974 => -110066223414000136810660004307499807110167777493628342872 | 237676
modpow -288315429310426444278622608795232035 142463096635605900853112318658071480606688425399348845060895609 1262322525 => 340705650 | 852808
modpow 5599321575026565578401027815007629401732830 1079738854805886051609921596814215195 23332343524960804906943506584477924711487651795573253 => 10742593562224581006035158297140004645646123622757216 | 592368
modpow 494373323107649659818368473004602647654852915930134587455502 63502 600313413803022355457676853306434036077193565503848309209503 => 583273294429906897490484296623319927492221132953298388033914 | 129875
modpow 27998449023138068611507555137372928826570122208618613 951488618338599197207825372899718445831786047122 71561194289249587062508633495299909225785630713953790568 => 67281307238261478639527494393826841827628762918523584601 | 787456
modpow 5804845568265002244 5831 2055922121462269081080035226670233042139818664405744228421 => 939801224470082670543053828285013528100040748690111625456 | 91288
modpow -125467408938035139630842121509287653981 256990619319427794617363895942305067993 -5578037742715658 => -3000249329423557 | 568306
modpow -6604878070788453690134348956577014857024763 1759160205373862050304749016893699945666 4019204355375771685127775414390305458335157 => 46474014515205475179404330201582099152701 | 606288
modpow -12344790159371096278625566883071005158774591549954974426839637243132 19179963902227999548059889159400974234108460277948409186743328227 -6405996672024145526607155888905450038079 => -1752144295474838834075995443671990962139 | 944970
modpow -686780019335387775648595898451012430702890951677508958408503475602461079 1017744808981627175467121281944460 -103058165618868427454624297494436518181871072962 => -50115982669102783598996609673517456794248884025 | 511600
modpow -11636540683832019721917271964271644846968060372608938100 12062173 593361237910148883939163191807963268415753510718 => 470189284844449013592619343957628717857130352206 | 159320
modpow 47326133201951580110269552988208578296537215177062849 3004123081859303671033336520712729195774197510 -79560825833147404397629780 => -20009671561607197289293759 | 677372
modpow -98947171201145348456460647221203637070327647885 25263702197584726 820543010329496738115818254247005647147714239 => 178952738518992198402196215751281025693920103 | 262566
modpow 0 1530900288763016957773246299480138420158772053125967664762181538132 38809263451900019859182551419 => 0 | 945496
modpow -155488733308581631450725652876368350783 8636515382486882496 17588472191840954945713045 => 13304143825140327917258246 | 281570
modpow 363790928993533283184978799634681745181115510730414288282719356461453 13981728845238041715684425846118 -266761633317 => -39162336552 | 468675
modpow 512457065457357176105784554133683162233662510572899614387271 4856388039482229057028848042663668486441518830150798746303752273552379 -2441000873186740346870277567557 => -894616208579646395466997301656 | 1018775
modpow 164971 38073275631446273281423941507751339089455851666034841 -5133622693295286483377018971626033184714146489856277341197114471768 => -4644714029079129080805269571466568803812151588199188130727432110357 | 859968
modpow -1214961109096530152898837494511665835940437016257543329756 250837842567714152579438008450174321356321058158331 104964773370716718580850302527382097953613589776980 => 34020470072130013639463887473168649298452112884544 | 800230
modpow -3106377354056377338678077965644851439578680614378926378281121621995277 99208945503268804860729752416748445464398529193075 40506444490301346490003025491669043965166457998037341094060793399082607677 => 7750685121451559863357509889518496247971753122719187721724702001738282224 | 852857
modpow -478470020404575948621768324210923331 0 -64791059622358908478686621053081647219908135162502 => -64791059622358908478686621053081647219908135162501 | 18245
modpow -136828667184925639225987762411386490260691936402222916557591108 11737721639664524536385238176594941892540995180117857536227698800437 26007420978280888 => 18017775043772280 | 924888
modpow -15083332766067845759861898663225315076156881225137297919411643812 65150461910008958703278400470643340727306758971783 -21557258479838760854874435838 => -16695358669789045104094513718 | 714416
modpow 1109771294 162821107 -6448682941026310750680909931385071426263300630552724744641678647271286687166 => -1458132568482921453083377344193412493320140396661636661786864245291467394960 | 178936
modpow 496342424324 332990358763 43014931939503376766510123566964444766901 => 835368220914032352112938156118408120091 | 189255
modpow -250204311621 9210697228058462123548531160350828621333975 -16787995676192234390083120857778983608713188943 => -12432712088142551035986313931102387202427798364 | 651400
modpow -88688340174542968344095177 63207526568551504403621477683429488012426293680702855796986552050 703992967592262815911 => 254231697723546114938 | 931733
modpow 16560535089958560646082473917286820492307239188319683933979152119 23528323410501026408511290590780985762880 -140413863439553957796041871 => -19657259191832114093672667 | 578623
modpow 9829012805466683581357288946081440953582182987062067578 1088107597083643497765794753977611874904349846085 74715627455022604408929 => 51079621486631147373769 | 706790
modpow -32106590141549895761349567968813745822186432202347539 233677908200034405319950558502613207241109581641762985575899312 706691462070510660437142003468580918176260865153 => 111358949658857539946956408560095247227047348930 | 968880
modpow -17856244192567220147753948468068241427737100516519287 4798789590306687505227965448826182 836624631272420482360555358909091120088406523216396393207219744420837239 => 320003410257978782940977430810256106964411832290659260566976060998864330 | 607000
modpow -577818658799957662742002466049865 22089304920249682228717101356443175822288565730755476056342176762361 -423037970901856472289265238724384666496209026125272568375716902573693975 => -115901754543497439041587513406534784999460001214757901817384889907968625 | 1155400
modpow -37215428319727867228492123498292592629393612796950462 25965259216104867801387045153380178831684100414037730940372481487947 1224193747072538813965536371531979653785057559047486147861858502447 => 405277528264091772381267642540471427259018620847704609556379922180 | 1128784
modpow -313146360935440285735524851877430563290220771191910155001 310135235653240019163904567987086460820745479559757 -826636682119191483454122574469852 => -520423754700137060479417731819849 | 756732
modpow 3030416359469553714151136094768628533527623968730563509873 42063325841864854351507687425572218052955617410307099 13295080422260239016672648617 => 6628978752080143731214854245 | 747472
modpow 14216271260445502465324481498770670465988 1573849743636459847428478940709081535718454451 25891 => 8934 | 626042
modpow -1397494680483720069277965967098444402200643573437977037254743518768 354003330158008794575167159636213 87026901267388172642452245646427179783386544952741563572210116113173016 => 27199334092573173815934504494750368406859822244307197216077193944796664 | 568100
modpow 424608006461774739400694141347727302545094893245548954182273276212191114 208721468610105560518742637957992901633817351853766 755470809205753545622353404694846110849219612640382699029532 => 211477613622395150756680878220619344201971417011160474664212 | 833100
modpow -380882504 77 1812385490814647159903277352174988998140732 => 306921997491246999722304956480269679058916 | 52284
modpow 8070124835175813638595036134438 76557655878572483533681830407 -130168485718448487165479238 => -64299091739294426293450180 | 446317
modpow 2044643705503034045647 49320249429709863554015439052838235999825 19 => 12 | 593363
modpow 3597903 2443308133 660587715294633943529545371066839592 => 364538972170885330329212592603425031 | 186555
modpow -16121320513256377 551937155317532431181692045858977466003197940264673853361349137202154453 -1372764051943057469915574278640912 => -987818813552812638787496519867065 | 1024698
modpow -1953181288478649689372271400972139782332944119159994449593 831317481577409627784802293352571935 -387959056405320576468 => -318504364159873081989 | 540334
modpow -7037076515631598174919650558323373896152882555992538034 0 347095102463746757436925520749828970456375110 => 1 | 18287
modpow 4305727 47686314880886356510986408051841848431180 -317232068315233466568740521181440267993687069 => -59069235517944205971794079974581022378703450 | 645671
modpow 0 33881409773617763466725026579 4583268782845824881048396577603 => 0 | 417484
modpow 12996391926743454 237149910322214 140747339225913806224457969 => 44613250633947913935409004 | 248323
modpow -5477834901496391594102364952873886183228033388551679152629532292 245651237652668053514172387 497816558410720385783286 => 278960379059546319359394 | 411710
modpow 50993714974783337544605276640609320910557263430503293643201825103581692154203 177344895314623591688163355208378545833339692304586492300006923460232802 -9645258739253113768835636501797 => -7704646500616802661349482644964 | 1019006
modpow -24388799035691830948123625264990232606940242694126288570884791930903232947088 34211077016520504679567802058744443315912112165281761 -698658515331436201346498315390645221724830278712912308141677614373202959 => -674925926483076369622099352139442296809278783597530322134979889952762256 | 881900
modpow -111638615732627763304319194 53607683543742046 33660043959395424 => 28727106499239904 | 276643
modpow 1933770375740482212504020638491806 9559118 23540343043264955602754852056989381807426491414001368 => 9047772686258374823162984773808822105995032801191336 | 161736
modpow 137217712130033243671923986876610 54057346676512324930008539638005374042995416900963639823548510 85484887310652171430772279994998652618244761399664494495378493895835342586 => 80283511834019207557778876952916916116825654673780415318702863570741053576 | 1050532
modpow 0 17458507613040727543447292997306158709588491991230199991435357730757012748606 43610103062587956551307587436067919102049163546418815 => 0 | 1165344
modpow -1160823186883815517949 8463971465823763947065773790134 11928582064066369800461754420523308568036976104724519162422318124890 => 7935649747492062973267780252541396012260786343395146281657861181651 | 515808
modpow 2154161196045316540609788478091516368211717059930201 163061405189328543258463495393992158999032919120937336406476760957478641558 33879076068442152232255720 => 9692084051165251247370761 | 1040020
modpow 6162541063192226564549910324274690558020949837110690984974614180503 56973103298285422087106205285 16804 => 8743 | 434092
modpow 348910950829059240043647870351541677551427653756604757443431636274136334 465872849833957921200204882281112197778360068015633764492421 -25081517030980450511408629381513035919318 => -7393301421187581427439563377763664195414 | 876420
modpow -97525584836004306263696971537192108442 2228792 -2231778018018201916464 => -464422253249379433904 | 115678
modpow -4870294602578689339232904556243780960078285 34221 -2521147352512965065562079108663271128230970503056281463210 => -1185903196333755043679921896159141807949570591058500796605 | 128336
modpow 230172438479 137858719852361708057031877188727891878832368472496314153874469 -12036589568929727 => -8769740949645239 | 859537
modpow 73266016095100651659964052 9986054197505536679 -135814943455893876074640704642877718127 => -89551757410165845278920080542567329726 | 324308
modpow -10289546001909207835206889944456039657574348455759103 4121462519314871978237 -51364816556037644871147163994686814493584252014567806055965341194 => -38782784333090660715684355442074177573030246430056252212316785465 | 397164
modpow 8485263717433990649855627291185439251315020 793397254596858667671997207144610763 4132721361474522074187078691623268496510465 => 2835325429521544688918348930808602668000550 | 571696
modpow 9074011076155091550448775487515366259556820899943 433008785 148676776591162894020595802 => 8902742432451508392442043 | 149853
modpow 10755754963484890213046636984272952920716601 37240328071892305716679622386 56663883533379776729391178337950894283970581038775047101543053229357569685199 => 20816357968443162192501205615348156299264260793565337048551366039350390175886 | 501200
modpow -6834923916052042579592442345975496188967309410236449318474115003914867208562 176814055795419 22816 => 480 | 241988
modpow -831949584656841502553256701333281 37226527346803677 -67853389312760672525421611679667528855492778514491148063140480814054895171 => -37991442283798449288029604591777492219257141075238163678204239280036841070 | 336148
modpow -2747197466085626978910501462306855028934828633 37248426387667717455214818299865190052630 -15118741013162923537689 => -10340644351067813141378 | 575470
modpow -9916539008054168173404753488019897620474043979929901416441716743034 1367335354676154409533271438029826 -255742 => -148460 | 466742
modpow 24488041918055775442755063730189466829071128816410050022820080203 4813294514461005483236534922169178244278515503575020408645 -182890308774589593347865289737196559215325957624918229298752849597123571251 => -22647754694804763620548358530326563008045201521075996219968458521046212553 | 1011507
modpow 404145445712255657775701852960904577 48586690952794345870358349598939112741902586596794521305690494491675877261583 3630458975649943052 => 2525243746415237685 | 1058044
modpow 18193583556657179 191 13791455045232558 => 6859017588508433 | 82183
modpow -102203580480693514182322572101596960090 157474942450432 -26446265483980715710301679858436695321 => -22527570028245264705530334756656262503 | 256392
modpow 4077840951602079278163969578395539743735 20685507132958728 2685979064248344529970095922740325496982685803 => 1412749256343519286752680376217476125332441603 | 262449
modpow 128356955642512040961907518 4937220370958647466992366778991277276570824309056903468933 32 => 0 | 817451
modpow 9672753696701786791709735746232069364808 95071423300216288597554191579654917107533452524978921271754112337 -37156628583363650320584895281054938041 => -21617766536847300209662955401984058320 | 971436
modpow -520867657321373375074028626608958335849401547034331364321179542272180900 231330630515686489528174593577300664131435831566162 -603151524093526845659475152523240167946679413902543691115970308783729 => -355494720644187586571380736372154365839089914828262902904126810427999 | 871356
modpow -5972229456339433426402392869662634641698211031555871 20022192613361624030590627069905137892051987739766740146249285 1 => 0 | 849690
modpow 573123423552855599739509549063007931 26631598631151340060730047365797460254370137831511806379895849915803 -41885791748293669806018983649921273149045955818927396872502571415368152120320 => -14375450293056852137967509093853820313929902321541369043637398693774937103709 | 1184308
modpow -2088672468461047937671393658120552769957178222 2692305477315664681335 -288704807329296190128683342745550614 => -191205696293357473725758874439383616 | 356115
modpow 11372820180542960964674758036674434475349564387273023315 2221667857772576882011028652986058585704950633880256945145534990126310 -17770482216643826 => -12595122909831725 | 957199
modpow 1946996156015649041350004199878 2685976723368638488172569973687889460886588084 -542453258577 => -151165411232 | 629275
modpow -686587357815239772637806548635028925614024267233326456271 3289167404049763149860 32691118151726370837865214930 => 32679939040369613536401372481 | 349648
modpow -12477169879540647 72523507181569310383883965593131480899805817757918537 16 => 9 | 753361
modpow -616787207188835635048557031929728877 76473225109704952736321858302138899363647632942193833905549260332 -7093933 => -600148 | 915451
modpow 51362190408609 18 45497650458709739328477911401347194767105329971867959316278902757083707415994 => 24801661887915158424303558955821538859972462812625935085855821594664700994811 | 58464
modpow -392541143378639763448111320043474520568573266138 1153285567748457135215279532479384023114347536448523329183768 6100051918562226896482223872 => 4788584127429421596419781120 | 879952
modpow -162033280593759301005401143135275119778577513497107600260436472726490955624 76291374278120174370358633182367386434626202429108292117993546166 -4165643155417818238 => -3525623177821381918 | 928444
modpow -2808022904982941020433590614877683519002502097605701288533560523566540 4890911711013341580922882078173142306181168722501644188255111880618021 -2890673 => -891781 | 979917
modpow 22429924051841053999574886272707479867445 13135554935708007521 -1295160204979603765541141599950428052587899981 => -1185484931375852449585943866310133836816490190 | 332225
modpow 31234038435546823058659808171078290139339303703669274861206011648 36749030398234181974577508220 1 => 0 | 401683
% 3480036796661158246949301069902 -130119505476653770866575782 => -9377311946854877268219688 | 2324
% 719283810626828512057433444330891 108597938439536000290729795114771037437 => 719283810626828512057433444330891 | 2662
% 479529445135956684736969716718169 -22248857052002879272670103046 => -170905861372226889014232269 | 2436
% 15606419864313971315557696907 -24 => -13 | 1661
% 57 1 => 0 | 1100
% 436765988469115734198158384165073907115708733471 94558952169107236079648001876839753542 => 54974018671800313472019043878048844649 | 2992
% 15088791559651368166176627425294547863990239989265364317713302515082768708 -31624228205003747609938773135 => -11928437886586153502192691532 | 3307
% -115 1 => 0 | 1100
% -31418725584986851022037960197674018411 5687656773912152854 => 4082010842852112981 | 2292
% -3310430222717089291978341020964421442392729462876049675045459785 25788 => 2651 | 2475
% 726928931209577062470827916633114366611111238684785264589368311 587050935132137819964007492068055853 => 456597057912266054611555245143415714 | 3290
% -240479032143817459279536319357568617 27877692132115758382903960 => 17507214798024448202024503 | 2426
% -45137111382714337237516472998980743765119535546299330170060192296 -969351605 => -270469806 | 2600
% -488466582043287176914998250795959368436215198803198588769255 -1813753 => -53094 | 2437
% -7945589958650155743159455290781029297109532866997458949812869174327642004247 318553096766699833657289289954189334 => 241730564702366823265298357465628889 | 3548
% 431886641091632230196327391688731151267164559598479493431 1 => 0 | 2252
% -5 1253130 => 1253125 | 1230
% 11283629401445894423185957853094332860537124415432272875840170299361471636611 33063707707163 => 66374793084 | 2969
% 99325469922190297584841367975929820948996335 -113 => -67 | 2011
% -117523834445742472681549429357182862116038873671689935 155040628640391480845022648514917 => 107455334635119316720351628600215 | 3022
% -541337968745355731108499315667190689404359520758310086594201 -115172877075787 => -682258598129 | 2625
% -4164430399453159720439044860618231469561639 -24834602926550326 => -22046164099679647 | 2332
% -4001399 6243334 => 2241935 | 1330
% -2089721752459844553417845825011507 -558732167838718891502888 => -146645644828195660576219 | 2314
% 335067447351642951808066071257304 7611185879371650158 => 7438501275988402534 | 2191
% -17398429253 -394524949965 => -17398429253 | 1552
% -2951121296151360885281473662382240113995281283857382778871161527895 -2068017268700999233520 => -147423196781571503415 | 2965
% -8270523329166451163026064574411 -1758556277615053019663 => -1481354934956395867872 | 2201
% 0 228754655436 => 0 | 1250
% 28996 -3980313339799149839075024153266006327 => -3980313339799149839075024153265977331 | 2063
% -1483131235 9956 => 4129 | 1320
% -974435488068250474423 -1379561397692328192300773954241356 => -974435488068250474423 | 2252
% -9380525162074838747377547658153 -84 => -81 | 1711
% 133023165557663 148596563380418320049727308876665863387 => 133023165557663 | 2169
% 33786105728739852970036897571980297154428 -6 => -2 | 1911
% 101047441031034856383554452784649723 145691575335431446390597626 => 69549332165476853235830421 | 2426
% 76154429765068595548060697197596376049349382139077936264212803478373193 1719568331613069077005462745154111 => 1240314888557553416332304671197947 | 3382
% -34494191753765223134352888541178542953 -15714969899585561 => -14194758342276695 | 2231
% 0 6319 => 0 | 1100
% 13588180489269463338219640382 -150227905606106254841818072582420345395 => -150227905592518074352548609244200705013 | 2579
% -30507359692355546911174192986838261954446500903230 -2261109480966435981658 => -848597931715714081574 | 2608
% 1092465220714508477956824676597569228434285462455232330507028317207293 6820412982913743213 => 5650183701378982420 | 2953
% -105582345737169943470028604441630606690430568985404618335179722 -9633446644257540929988231163650 => -4796558573677626326830416513322 | 3113
% -82994721083321800028149996258477835858934428344394851242988513868869214116 598405178 => 13588994 | 2802
% -137951224006078384912187441092554157039521564500796 -2910881992171088 => -1397874027868940 | 2484
% -836411821147741413765283278196305076075515487397557849751 -196942910995294083422560 => -31357661243163637131351 | 2824
% -445599801321789027313490 11844342487129284 => 9420440134550674 | 1927
% -7220990 -10152 => -2918 | 1270
% 19650 25614305236285309 => 19650 | 1471
% 15265781408617974288436322496254974414436 -160735716563480694586593073867635424376 => -4111664912691697290019521170390901284 | 2837
% -94129602008093 130162415177990096144641541529284134761 => 130162415177990096144641447399682126668 | 2269
% 625474631395683527408 -128 => -16 | 1510
% 30067622095 -3833751285404602333 => -3833751255336980238 | 1734
% -165393788252323640232028048841451272473505570096101873312903731 -509107521727460102673 => -314787356193200936706 | 2863
% 855023615616559777181135289204886646281989451545407401014398317229229556 8038201 => 7808947 | 2689
% -139053255916526001285455876159572 589512597880616045284981 => 28204219056810495476873 | 2314
% 182384673220439118481738852310812813613736895735030466828853085749439024011 -1114133980783282257140824325616132 => -1062744098717236692041230426795701 | 3433
% -780546488465192563272819753043247961142419938375554570666357951069386545 -94491628816863 => -7271996755865 | 2878
% 608593473520410858948244642335494045518312683137314934479209 -42573247607188931896451242 => -9987715068503944804997541 | 2937
% 31366 -29633277109294017 => -29633277109262651 | 1521
% 7261026825174341926663333623452411837017818312813066047 -122453998286003524200553977706804060367 => -32126822254995665099378747538118554713 | 3146
% 0 -25543550279028011753736715733 => 0 | 1600
% -155663125202766492943908355579649582638 -3310333963961938573413857 => -1262647725587869102802199 | 2477
% -370030371416353594045706 -22319347095476988437494504309 => -370030371416353594045706 | 2212
% 415203111300552955436906 341625866284 => 325402066414 | 1805
% -494800818687430803018282118653898378 8971065330454683196 => 8383015624053863954 | 2242
% 0 13936725072364539881579451739 => 0 | 1600
% 2011423938030976450151442025793568806497708738524877801593 -572704866547727804998440960145056203 => -26736145104028313848479409047148707 | 3136
% -101 -765668221442379173900176761997723 => -101 | 1761
% 1295597254 -5049632467863054583 => -5049632466567457329 | 1683
% 212 7609642842796860127791532336802 => 212 | 1772
% -121997902378403719486162919 1331307559580139139054 => 459766401070938467533 | 2099
% 915789488510176211431129669359401696529805759211186505757 118729091030443 => 70889431152539 | 2574
% -362057955723884228585 44141984793556766396281219257867543659 => 44141984793556766034223263533983315074 | 2424
% -8081386731097670839063669274 11115490831655395477732951079 => 3034104100557724638669281805 | 2334
% -394976595001380553466359 404083291458845059259 => 216864045369914488943 | 2049
% -7522791 -478767820782606552026112320304284781 => -7522791 | 1934
% -13 -6264275702217012518547789205095 => -13 | 1711
% -199455690416215777522181855346510627828789948764602057810474109 1884105261090818755090148594340 => 576230457419881738165339238191 | 3113
% -22776302528324635273611011851443436588928805761342515724181746052 -958325 => -569827 | 2538
% -537195231397855967063323392177478975600081023382545129649794 5728553588028472924881323613882 => 3795336991886494793544365835396 | 3062
% 2236682558929588631064609520622914821642439380 12457448614446868277615332700862205648 => 6404731337559279073811114820532172276 | 2940
% -14 6381905157382245195 => 6381905157382245181 | 1530
% -77333275175420263539831552 846105134882222177739906283048127 => 846105057548947002319642743216575 | 2405
% 9942837946427862 97413600243 => 26596825338 | 1653
% 539668802232935884452960966290047629606689719768290637950474 -388887556 => -268237294 | 2500
% 533059960912116220613904 1582286167216269733302 => 1411808727449590224432 | 2049
% -28959400830941514956203802461 4 => 3 | 1661
% 76046315686619 -308731939671965839916331164171945 => -308731939671965839840284848485326 | 2148
% -44799752879153082364063646320227093730419213737599701900947585494608916995770 7854696518717993047 => 20569093238973993 | 3095
% -152000287586120345299 483121516317546215376110321882120 => 483121516317394215088524201536821 | 2302
% 1561259958388774403031 -2176712696418070774365343143886 => -2176712694856810815976568740855 | 2241
% 8223 3391821081433292697650334882144 => 8223 | 1772
% 123412399578286032585958878106450234571 -3443751053098676119405657022402 => -1729962099106932397861358749071 | 2600
% -88 12439 => 12351 | 1170
% -7694548400268204933648206814202343839774809 753439040 => 448671591 | 2147
% 7474930296635322771968771180027000525224728 -26507 => -21548 | 2023
% 1410303821 -4 => -3 | 1260
% 168786836066734666019266543634628869289 -4549156825899997352 => -1820336088045939039 | 2292
% 111968157766589867850085585 1346841021140857056565976519476898 => 111968157766589867850085585 | 2375
; 0^0 mod m edge cases
modpow 0 0 0 => FAIL
modpow 0 0 1 => 0 | 17020
modpow 0 0 -1 => 0 | 17020
modpow 0 0 2 => 1 | 17030
modpow 0 0 -2 => -1 | 17030
modpow 0 0 3 => 1 | 17030
modpow 0 0 -3 => -2 | 17030
modpow 0 0 127 => 1 | 17030
modpow 0 0 -128 => -127 | 17030
modpow 0 0 255 => 1 | 17050
modpow 0 0 256 => 1 | 17050
modpow 0 0 -256 => -255 | 17060
modpow 0 0 1000000007 => 1 | 17090
modpow 0 0 -1000000007 => -1000000006 | 17120
modpow 0 0 9223372036854775807 => 1 | 17170
modpow 0 0 -9223372036854775807 => -9223372036854775806 | 17240
modpow 0 0 123456789012345678901234567890123456789012345678901 => 1 | 17430
modpow 0 0 -123456789012345678901234567890123456789012345678901 => -123456789012345678901234567890123456789012345678900 | 17630
modpow 0 0 115792089237316195423570985008687907853269984665640564039457584007913129639937 => 1 | 17670
modpow 0 0 -115792089237316195423570985008687907853269984665640564039457584007913129639937 => -115792089237316195423570985008687907853269984665640564039457584007913129639936 | 17990
; b^1 mod m (== b % m) edge cases
modpow 0 1 1 => 0 | 49028
modpow 1 1 1 => 0 | 49049
modpow 2 1 1 => 0 | 49049
modpow 0 1 7 => 0 | 49028
modpow 42 1 7 => 0 | 49049
modpow -42 1 7 => 0 | 49049
modpow 42 1 -7 => 0 | 49049
modpow -42 1 -7 => 0 | 49049
modpow 100 1 1 => 0 | 49049
modpow -1 1 2 => 1 | 49059
modpow 255 1 256 => 255 | 49136
modpow 256 1 255 => 1 | 49126
modpow -128 1 127 => 126 | 49059
modpow 9223372036854775807 1 1000000007 => 291172003 | 49440
modpow -9223372036854775807 1 -1000000007 => -291172003 | 49440
modpow 123456789012345678901234567890123456789012345678901 1 1000000007 => 455352147 | 49752
modpow -123456789012345678901234567890123456789012345678901 1 -1000000007 => -455352147 | 49752
modpow 115792089237316195423570985008687907853269984665640564039457584007913129639937 1 115792089237316195423570985008687907853269984665640564039457584007913129639937 => 0 | 60121
modpow 0 1 92201355146467699897806966938307838211604356347459 => 0 | 52948
modpow -21859 1 5867850 => 5845991 | 49208
modpow 28503 1 -4780666565843581209144736445397984809067067 => -4780666565843581209144736445397984809038564 | 52208
modpow 41074041438640599382284294766211714019521936728370653286095861115 1 121958 => 114679 | 49783
modpow -39251557798421 1 -101944951042477 => -39251557798421 | 49624
modpow -24816798504604866819054687181088299201 1 1109707396605062023796766821647142419103074489559323799184 => 1109707396605062023771950023142537552284019802378235499983 | 55032
modpow 135780795196906344596522194357820279118537652640871703867124890519058732728 1 -7531508193928640825 => -2525404626062385472 | 50620
modpow -2694816942487081852397315980433061701475758813456144035792 1 21667661141344767 => 4437762975576881 | 50250
modpow 24940261977866135 1 -5541438804957255508516416001071491761928906 => -5541438804957255508516415976131229784062771 | 52398
modpow 724787930894581992722788204656928458012171243646899594961047 1 11909308911940880370821406014640340439107618036062619225 => 11209131683895115339077417946619568959825208200714165997 | 54997
modpow -113022175500802986632267900 1 -6815310046441651524023409919674096891101038 => -113022175500802986632267900 | 52480
modpow -19431032188467760575245880852011263558500148099477316529520671332 1 75872221677901018609765751378113687402747258498564 => 25324220053807414553116849471018863410011482318992 | 54265
modpow -19268252415515902302090715288 1 24525696656388613587540259201109953256725138450541188840428948853369483039701 => 24525696656388613587540259201109953256725138450521920588013432951067392324413 | 58776
modpow 8725735425166921121985639961130394045061759 1 1 => 0 | 49406
modpow -1490092863006819759389 1 -105432149734597046754816674646791515 => -1490092863006819759389 | 51505
modpow 1082715554535604516264130780044244658955 1 -7083851562723411741964094892919 => -4334534542738892401609202722946 | 51303
modpow -818257800014739940936248480822726618959455445333336394 1 -7920026388075425751071905417428976967155882 => -6695331189465189824928731834872534628898592 | 53006
modpow -25131354520900595688040881 1 -1835063730 => -1193543571 | 49512
modpow 27860135009917336113560682468186158777671754273796413960937438268 1 4483439 => 2132180 | 49783
modpow 368267712916303246097527422057463879360755042179 1 -130768368935221060732751880596495661827774298841689393755201527 => -130768368935220692465038964293249564300352241377810033000159348 | 56108
modpow 21378452429241038 1 -2197330568296501907595 => -2197309189844072666557 | 50121
modpow 45256810098776437444976181274258540189427135769437873230933785568921858463750 1 -27155 => -20890 | 49796
modpow -83184435498120328199696217500355845537888972213107 1 37070989783262 => 24961639048013 | 50014
modpow 2961643693747131533462406161439733123479038632222112161166469972865103 1 844631454043082321353438389851170725963141790 => 66079587066180926745515268798252565174624163 | 53589
modpow -42870396074686526911370216762263487978628980275240933136782269 1 -7369576016007837552014 => -5239312493275528525567 | 50880
modpow -11128048100054536600794214838 1 -49286067966919 => -2953785278597 | 49780
modpow -252504987837333910748019496864295731 1 -30407419815204990020989213947165558701187489231594637210413032507189976478907 => -252504987837333910748019496864295731 | 58762
modpow 0 1 -26153094076603240753430173296418355663624 => 0 | 51652
modpow 118776371719752348498482932863992592837 1 -61409083604522389523190337792129355171 => -4041795489292430547897742720266117505 | 52104
modpow -1149190236598553245456441651758777078151621477318369626256 1 -106835531773896309582401165326442835244427095012790859661101373517845359245 => -1149190236598553245456441651758777078151621477318369626256 | 58772
modpow 7093312186551861284 1 -151822056 => -65769868 | 49440
modpow 23338118765251179382897855048454366072124090169704326909273917804936292145038 1 37584144728177580250996265511973981122588640004372558622002102178 => 10326475510193463137356231604462546329907194655759926712258673380 | 57146
modpow 27651346467948498077673469871213159233 1 -94797719229752812488350560835856752832713955949573336642637842804946493 => -94797719229752812488350560835856725181367488001075258969167971591787260 | 57900
modpow 398532084 1 -338984478095728907203353763798045477 => -338984478095728907203353763399513393 | 51390
modpow -3091858474491190366342618296891381799957318001834659336308825755199795 1 -13309580681833011656724649145251348773480177142544041395703670963891 => -4035756305931661982499695193068884509916904764441732505574091577083 | 57504
modpow 83573227402519770441979201076474466948 1 -637 => -464 | 49444
modpow 17 1 -169962704700627060649621031985846161677 => -169962704700627060649621031985846161660 | 51564
modpow 547289798401777385215568647727900808754716736134 1 -2501086936266093782624997237573811220484007096205514273602 => -2501086935718803984223219852358242572756106287450797537468 | 55208
modpow 42181501369326011372618026398218215541501201137669609638804351598322640639 1 187113983590767054247305023852174072517575194545486107485501640249095376 => 80855061403424166974396031479049225046782364935235454566482542276181039 | 58650
modpow 125 1 30704674016676747040273262469 => 125 | 50434
modpow -16568644019749018306412163 1 -24205976749767935607421193706290568661283975901260879081580931 => -16568644019749018306412163 | 55544
modpow 163655762763295071054632904403879692888 1 -13272 => -7776 | 49444
modpow -39607151989275 1 -8679138684817887822223741205626007413990509 => -39607151989275 | 52240
modpow -410283454 1 -141405754524656842624144945059490107945058155089107488188035335 => -410283454 | 55152
modpow 58550671376806840219877909889479250108668521859 1 -20789121731004 => -9587573837569 | 49988
modpow -4331965695039137922 1 -70125504655254172170812204022595758619136480137393770283047132866394275481 => -4331965695039137922 | 57796
modpow -1346740142772725907822 1 -207595910530395774469503254151968380762312766197588352685414807624757100633 => -1346740142772725907822 | 57857
modpow -4905049569224855094381233220986864747586 1 -17028136898356430646092350285014095763608918674187348207320807999246087185610 => -4905049569224855094381233220986864747586 | 58886
modpow 6317765 1 -233720199334613817593534595303390009089387534242 => -233720199334613817593534595303390009089381216477 | 52920
modpow -9264735110548610217131308972717877834904559 1 39711047157388721131809486982189576620204977949471839083780808755447559556405 => 39711047157388721131809486982189567355469867400861621952471836037569724651846 | 59088
modpow 12427 1 -10294119304642139286392937505713253094700 => -10294119304642139286392937505713253082273 | 51896
modpow 6748057753356839262596576667600638609703220 1 -170757482779158370767539051687242950964703047943099585969761942767015954923 => -170757482779158370767539051687236202906949691103836989393094342128406251703 | 58536
modpow -76404828063244089935068598719355729276158706415809143472837714985769490397 1 -87149621061925171402943872227598718676735495416444666519972169998791943 => -61760012997639786089766647979251715338412431003615601342094066827748329 | 58650
modpow 2501915640042373015009743007595960632544467455196612017070 1 -49171441575542881526017474440548748330669349949861152254780973508309553332 => -49171441575542879024101834398175733320926342353900519710313518311697536262 | 58842
modpow -27040197942100040481673646264004536918342330987839904637132233042993749274807 1 8062556838272166290374163154101268601091892765650257985882809577274 => 5935660652252463702007552782985217068602775048455906780504043315285 | 57648
modpow -23572030222272269158214366888645912075807478016165231 1 -5185789008119461451416386690358094703677518769466179482 => -23572030222272269158214366888645912075807478016165231 | 54858
modpow -9947682963360449412104418406506847976766140395116475843989358908576 1 115190495920457 => 46932383483612 | 50196
modpow 42469924423588273258663757024542094048285371468098657031259094641 1 -1020707686993911490979496254040 => -825494584286378804618688344599 | 51633
modpow 198084285352830555328421316562331742876758229990971066863376784 1 -17219717562142948202012258396 => -1813275302943663925510666516 | 51344
modpow 37 1 1 => 0 | 49049
modpow 2808840876086421139849109643098 1 46787048387571206029628482455594278183758828062448543222758 => 2808840876086421139849109643098 | 55215
modpow -49 1 -5996329112621010447758664790378766171254827 => -49 | 52000
modpow 4230678152330716075 1 -8461688467954000216043210198613515641702976648112228 => -8461688467954000216043210198613511411024824317396153 | 53868
modpow 36596088585993466578063808445443913673547321778216299 1 -1315475418 => -43320359 | 49776
modpow -24171377807338486322566267820302527909374516423223828 1 -4702594284950233820310810891797 => -80523679514510401530852558134 | 51468
modpow -70272159905797057417840262 1 -33222419657165338567216037506944521448323935342593652032759500807 => -70272159905797057417840262 | 55999
modpow -39535935623109163833852432305575435748043656653871545 1 1344377863439231003943700237102990 => 591910020489435850059069854612245 | 51736
modpow 10959368712035653267275206163674114806350476160814138136 1 41046108596982168260445237390225348023128404671199202878833767573553887356171 => 10959368712035653267275206163674114806350476160814138136 | 59258
modpow 297379720005982248744839550084801585551639428285732771299246982620346865 1 8163156 => 8155289 | 49852
modpow -1246917843443718 1 301052885 => 155663727 | 49416
modpow -1776268229 1 1704565902244813416923533577522002010815296000954515610131366420995892 => 1704565902244813416923533577522002010815296000954515610131364644727663 | 56794
modpow -3496710011286990715161704479242 1 2038841578250362511903563669300522876059189711167112015493 => 2038841578250362511903563665803812864772198996005407536251 | 54900
modpow -431340435230359387053190 1 -5221639456501961844136772873487338957074422651440880290108238958588 => -431340435230359387053190 | 56412
modpow 22905153849839287705066423726 1 -5468329524936658970427256908008 => -5445424371086819682722190484282 | 51138
modpow 111 1 -8937615494654845197294880941627284309072883061700639266 => -8937615494654845197294880941627284309072883061700639155 | 53965
modpow 396007455326665247640150968331528444 1 -1527012331596657520624 => -349106600225767669540 | 50353
modpow 23002511090571301984949149105937166479 1 486064719280552015286262435563334 => 470380057738965557351867773511597 | 51532
modpow 27759225114748591042360154260860470904768635560993329828771306468 1 -81284008768957331308857686 => -38936298768927531669789356 | 51135
modpow -761163757497260720 1 -3882191418372963073599839111163352086398213241957030408799928235368 => -761163757497260720 | 56296
modpow 60146771426572 1 146188363360853547350114538340953639271128800202687 => 60146771426572 | 53254
modpow 65427930123492233648520442871713069092523413935983 1 24832 => 6767 | 49554
modpow -47491810147077462044170390402935800023843539563101998 1 -2096255193 => -608765955 | 49776
modpow -6489414720295779775615213186633612474585953014860958623838094 1 -13457190391431753432330738423047708942435001375340876588836396603093 => -6489414720295779775615213186633612474585953014860958623838094 | 57340
modpow -258952678609 1 94247253244277127799309588500974839333849629213395087368531241 => 94247253244277127799309588500974839333849629213394828415852632 | 55418
modpow -178132071436813626516541599903612230027023631112026342134738729 1 -6231752032237061445234167845147088683786148135158190 => -4115950184773608186454396359588650464283032754473079 | 54624
modpow -483781487245229409903476358347603634632443822699915088543836526413900958 1 -60693069720878241132643284252903417124560758973230067222647914115267852229 => -483781487245229409903476358347603634632443822699915088543836526413900958 | 59138
modpow 9742623751202420861817245307690457402154147 1 23191779706991099153427166119745222988314631926119090668232714339 => 9742623751202420861817245307690457402154147 | 56398
modpow -180007931501454603488213636729105281159600477206145854221196695 1 7534915100244239132847724136741231321111266 => 4318451408937629549533905998868012565054563 | 53120
modpow 1307950984714385198333909591914173178967008784796114599406140148202892 1 -4397369 => -3133132 | 49829
modpow 187825445230334651448711042371203991117339272687383995189531189890918959922 1 -108616223247130494115300981012963600 => -72846935086673145489973634309057678 | 52335
modpow 264501521193908098999916042085532910062699250236932570766963321486950030 1 76350730752 => 45660969102 | 50100
modpow 162025700613658806216756229061898308241724537602286 1 1895146301799017772380025741101118598437948310820219168069196080776303 => 162025700613658806216756229061898308241724537602286 | 57547
modpow 0 1 -7874228735884013667 => 0 | 49672
modpow 0 1 23842830081418 => 0 | 49408
modpow 2029568360579927108869 1 -1183 => -710 | 49290
modpow 2324276057296322718 1 -134177870476267669947135518833853825688589240867066 => -134177870476267669947135518833851501412531944544348 | 53486
modpow 124621657749004431874449260256577893862889468629411705044 1 -37746959123269236748737321399 => -7416895509561771105803211657 | 51280
modpow -107084787930701 1 643091424519667637792170513992742803827246104634536499071276553607042 => 643091424519667637792170513992742803827246104634536498964191765676341 | 56892
modpow -27650391910740231349081198581 1 -28090947594605594032971697167399929737413489253207096114 => -27650391910740231349081198581 | 54736
modpow 925336310262682157579669550262099317 1 628897832421090319162321769039386480653361259146200534706088 => 925336310262682157579669550262099317 | 55380
