diff --git a/src/amm_core/amm.cairo b/src/amm_core/amm.cairo index 0b97107..1838c15 100644 --- a/src/amm_core/amm.cairo +++ b/src/amm_core/amm.cairo @@ -595,7 +595,6 @@ mod AMM { } fn upgrade(ref self: ContractState, new_implementation: ClassHash) { - self.ownable.assert_only_owner(); assert(!new_implementation.is_zero(), 'Class hash cannot be zero'); starknet::replace_class_syscall(new_implementation).unwrap(); } diff --git a/src/amm_core/pricing/lookup_table_cdf.cairo b/src/amm_core/pricing/lookup_table_cdf.cairo index 87f42e5..21e6cd2 100644 --- a/src/amm_core/pricing/lookup_table_cdf.cairo +++ b/src/amm_core/pricing/lookup_table_cdf.cairo @@ -1,4008 +1,2007 @@ use array::ArrayTrait; use array::SpanTrait; -fn get_std_normal_cdf_table() -> Array { - array![ - 9223372036854775808, - 9238090399336028160, - 9252808702943967232, - 9267526888805988352, - 9282244898050897920, - 9296962671809622016, - 9311680151215912960, - 9326397277407053824, - 9341113991524567040, - 9355830234714920960, - 9370545948130232320, - 9385261072928976896, - 9399975550276689920, - 9414689321346674688, - 9429402327320713216, - 9444114509389760512, - 9458825808754659328, - 9473536166626842624, - 9488245524229031936, - 9502953822795952128, - 9517661003575031808, - 9532367007827101696, - 9547071776827107328, - 9561775251864809472, - 9576477374245480448, - 9591178085290618880, - 9605877326338643968, - 9620575038745600000, - 9635271163885858816, - 9649965643152822272, - 9664658417959618560, - 9679349429739810816, - 9694038619948087296, - 9708725930060974080, - 9723411301577521152, - 9738094676020013056, - 9752775994934657024, - 9767455199892291584, - 9782132232489074688, - 9796807034347188224, - 9811479547115528192, - 9826149712470405120, - 9840817472116238336, - 9855482767786252288, - 9870145541243170816, - 9884805734279903232, - 9899463288720248832, - 9914118146419585024, - 9928770249265555456, - 9943419539178766336, - 9958065958113478656, - 9972709448058288128, - 9987349951036825600, - 10001987409108439040, - 10016621764368885760, - 10031252958951016448, - 10045880935025459200, - 10060505634801311744, - 10075127000526825472, - 10089744974490079232, - 10104359499019677696, - 10118970516485421056, - 10133577969298997248, - 10148181799914653696, - 10162781950829885440, - 10177378364586102784, - 10191970983769325568, - 10206559751010844672, - 10221144608987914240, - 10235725500424409088, - 10250302368091512832, - 10264875154808389632, - 10279443803442855936, - 10294008256912046080, - 10308568458183090176, - 10323124350273785856, - 10337675876253259776, - 10352222979242637312, - 10366765602415716352, - 10381303688999620608, - 10395837182275477504, - 10410366025579069440, - 10424890162301509632, - 10439409535889887232, - 10453924089847945216, - 10468433767736721408, - 10482938513175224320, - 10497438269841080320, - 10511932981471182848, - 10526422591862362112, - 10540907044872030208, - 10555386284418834432, - 10569860254483300352, - 10584328899108501504, - 10598792162400684032, - 10613249988529934336, - 10627702321730805760, - 10642149106302984192, - 10656590286611914752, - 10671025807089448960, - 10685455612234489856, - 10699879646613626880, - 10714297854861774848, - 10728710181682810880, - 10743116571850209280, - 10757516970207678464, - 10771911321669789696, - 10786299571222611968, - 10800681663924336640, - 10815057544905914368, - 10829427159371671552, - 10843790452599947264, - 10858147369943703552, - 10872497856831164416, - 10886841858766422016, - 10901179321330069504, - 10915510190179803136, - 10929834411051059200, - 10944151929757609984, - 10958462692192188416, - 10972766644327096320, - 10987063732214820864, - 11001353901988632576, - 11015637099863199744, - 11029913272135194624, - 11044182365183893504, - 11058444325471784960, - 11072699099545165824, - 11086946634034741248, - 11101186875656220672, - 11115419771210921984, - 11129645267586353152, - 11143863311756816384, - 11158073850783991808, - 11172276831817529344, - 11186472202095634432, - 11200659908945653760, - 11214839899784665088, - 11229012122120050688, - 11243176523550081024, - 11257333051764500480, - 11271481654545088512, - 11285622279766249472, - 11299754875395584000, - 11313879389494448128, - 11327995770218541056, - 11342103965818456064, - 11356203924640260096, - 11370295595126050816, - 11384378925814515712, - 11398453865341501440, - 11412520362440568832, - 11426578365943543808, - 11440627824781076480, - 11454668687983200256, - 11468700904679870464, - 11482724424101521408, - 11496739195579611136, - 11510745168547168256, - 11524742292539328512, - 11538730517193887744, - 11552709792251826176, - 11566680067557859328, - 11580641293060960256, - 11594593418814910464, - 11608536394978809856, - 11622470171817617408, - 11636394699702679552, - 11650309929112250368, - 11664215810632015872, - 11678112294955618304, - 11691999332885168128, - 11705876875331762176, - 11719744873316007936, - 11733603277968519168, - 11747452040530446336, - 11761291112353961984, - 11775120444902789120, - 11788939989752688640, - 11802749698591967232, - 11816549523221983232, - 11830339415557629952, - 11844119327627843584, - 11857889211576094720, - 11871649019660867584, - 11885398704256165888, - 11899138217851990016, - 11912867513054816256, - 11926586542588092416, - 11940295259292708864, - 11953993616127471616, - 11967681566169591808, - 11981359062615146496, - 11995026058779555840, - 12008682508098048000, - 12022328364126126080, - 12035963580540041216, - 12049588111137234944, - 12063201909836820480, - 12076804930680020992, - 12090397127830640640, - 12103978455575504896, - 12117548868324917248, - 12131108320613101568, - 12144656767098658816, - 12158194162564997120, - 12171720461920778240, - 12185235620200357888, - 12198739592564219904, - 12212232334299404288, - 12225713800819955712, - 12239183947667331072, - 12252642730510839808, - 12266090105148063744, - 12279526027505276928, - 12292950453637869568, - 12306363339730765824, - 12319764642098827264, - 12333154317187278848, - 12346532321572110336, - 12359898611960483840, - 12373253145191141376, - 12386595878234810368, - 12399926768194590720, - 12413245772306364416, - 12426552847939188736, - 12439847952595679232, - 12453131043912413184, - 12466402079660306432, - 12479661017745002496, - 12492907816207255552, - 12506142433223309312, - 12519364827105271808, - 12532574956301494272, - 12545772779396941824, - 12558958255113562112, - 12572131342310656000, - 12585291999985233920, - 12598440187272392704, - 12611575863445659648, - 12624698987917357056, - 12637809520238958592, - 12650907420101437440, - 12663992647335614464, - 12677065161912510464, - 12690124923943684096, - 12703171893681580032, - 12716206031519858688, - 12729227297993746432, - 12742235653780355072, - 12755231059699021824, - 12768213476711634944, - 12781182865922959360, - 12794139188580964352, - 12807082406077138944, - 12820012479946811392, - 12832929371869466624, - 12845833043669057536, - 12858723457314316288, - 12871600574919061504, - 12884464358742505472, - 12897314771189551104, - 12910151774811095040, - 12922975332304328704, - 12935785406513025024, - 12948581960427835392, - 12961364957186578432, - 12974134360074520576, - 12986890132524673024, - 12999632238118057984, - 13012360640583997440, - 13025075303800381440, - 13037776191793952768, - 13050463268740562944, - 13063136498965446656, - 13075795846943494144, - 13088441277299501056, - 13101072754808432640, - 13113690244395687936, - 13126293711137341440, - 13138883120260409344, - 13151458437143085056, - 13164019627314991104, - 13176566656457426944, - 13189099490403600384, - 13201618095138877440, - 13214122436801007616, - 13226612481680359424, - 13239088196220153856, - 13251549547016691712, - 13263996500819574784, - 13276429024531927040, - 13288847085210617856, - 13301250650066477056, - 13313639686464505856, - 13326014161924093952, - 13338374044119224320, - 13350719300878675968, - 13363049900186236928, - 13375365810180886528, - 13387666999157014528, - 13399953435564599296, - 13412225088009408512, - 13424481925253187584, - 13436723916213839872, - 13448951029965619200, - 13461163235739305984, - 13473360502922387456, - 13485542801059233792, - 13497710099851270144, - 13509862369157144576, - 13521999578992900096, - 13534121699532138496, - 13546228701106180096, - 13558320554204225536, - 13570397229473509376, - 13582458697719459840, - 13594504929905844224, - 13606535897154920448, - 13618551570747582464, - 13630551922123501568, - 13642536922881265664, - 13654506544778526720, - 13666460759732117504, - 13678399539818207232, - 13690322857272410112, - 13702230684489920512, - 13714122994025637888, - 13725999758594291712, - 13737860951070547968, - 13749706544489134080, - 13761536512044955648, - 13773350827093198848, - 13785149463149436928, - 13796932393889746944, - 13808699593150799872, - 13820451034929965056, - 13832186693385410560, - 13843906542836191232, - 13855610557762342912, - 13867298712804970496, - 13878970982766342144, - 13890627342609956864, - 13902267767460634624, - 13913892232604600320, - 13925500713489549312, - 13937093185724721152, - 13948669625080975360, - 13960230007490854912, - 13971774309048647680, - 13983302506010460160, - 13994814574794260480, - 14006310491979948032, - 14017790234309398528, - 14029253778686525440, - 14040701102177318912, - 14052132182009896960, - 14063546995574546432, - 14074945520423768064, - 14086327734272303104, - 14097693614997188608, - 14109043140637767680, - 14120376289395736576, - 14131693039635161088, - 14142993369882511360, - 14154277258826674176, - 14165544685318981632, - 14176795628373219328, - 14188030067165646848, - 14199247981035005952, - 14210449349482536960, - 14221634152171970560, - 14232802368929546240, - 14243953979744008192, - 14255088964766601216, - 14266207304311070720, - 14277308978853656576, - 14288393969033076736, - 14299462255650525184, - 14310513819669655552, - 14321548642216552448, - 14332566704579731456, - 14343567988210104320, - 14354552474720956416, - 14365520145887920128, - 14376470983648948224, - 14387404970104279040, - 14398322087516397568, - 14409222318310006784, - 14420105645071978496, - 14430972050551320576, - 14441821517659127808, - 14452654029468528640, - 14463469569214646272, - 14474268120294535168, - 14485049666267133952, - 14495814190853206016, - 14506561677935280128, - 14517292111557582848, - 14528005475925979136, - 14538701755407904768, - 14549380934532292608, - 14560042997989507072, - 14570687930631254016, - 14581315717470533632, - 14591926343681519616, - 14602519794599514112, - 14613096055720841216, - 14623655112702767104, - 14634196951363407872, - 14644721557681643520, - 14655228917797019648, - 14665719018009645056, - 14676191844780105728, - 14686647384729346048, - 14697085624638586880, - 14707506551449196544, - 14717910152262594560, - 14728296414340141056, - 14738665325103022080, - 14749016872132122624, - 14759351043167928320, - 14769667826110390272, - 14779967209018806272, - 14790249180111691776, - 14800513727766667264, - 14810760840520304640, - 14820990507068014592, - 14831202716263901184, - 14841397457120632832, - 14851574718809294848, - 14861734490659256320, - 14871876762158018560, - 14882001522951077888, - 14892108762841761792, - 14902198471791101952, - 14912270639917656064, - 14922325257497374720, - 14932362314963427328, - 14942381802906050560, - 14952383712072390656, - 14962368033366327296, - 14972334757848320000, - 14982283876735229952, - 14992215381400150016, - 15002129263372242944, - 15012025514336559104, - 15021904126133846016, - 15031765090760394752, - 15041608400367837184, - 15051434047262978048, - 15061242023907594240, - 15071032322918256640, - 15080804937066135552, - 15090559859276810240, - 15100297082630078464, - 15110016600359749632, - 15119718405853454336, - 15129402492652445696, - 15139068854451388416, - 15148717485098153984, - 15158348378593628160, - 15167961529091479552, - 15177556930897971200, - 15187134578471729152, - 15196694466423537664, - 15206236589516115968, - 15215760942663909376, - 15225267520932851712, - 15234756319540158464, - 15244227333854085120, - 15253680559393722368, - 15263115991828738048, - 15272533626979176448, - 15281933460815194112, - 15291315489456852992, - 15300679709173862400, - 15310026116385357824, - 15319354707659640832, - 15328665479713951744, - 15337958429414211584, - 15347233553774792704, - 15356490849958250496, - 15365730315275091968, - 15374951947183503360, - 15384155743289114624, - 15393341701344729088, - 15402509819250075648, - 15411660095051538432, - 15420792526941911040, - 15429907113260113920, - 15439003852490940416, - 15448082743264788480, - 15457143784357390336, - 15466186974689544192, - 15475212313326833664, - 15484219799479365632, - 15493209432501481472, - 15502181211891494912, - 15511135137291388928, - 15520071208486561792, - 15528989425405523968, - 15537889788119619584, - 15546772296842743808, - 15555636951931043840, - 15564483753882648576, - 15573312703337353216, - 15582123801076346880, - 15590917048021893120, - 15599692445237065728, - 15608449993925425152, - 15617189695430721536, - 15625911551236612096, - 15634615562966327296, - 15643301732382398464, - 15651970061386323968, - 15660620552018280448, - 15669253206456797184, - 15677868027018465280, - 15686465016157609984, - 15695044176465973248, - 15703605510672408576, - 15712149021642561536, - 15720674712378548224, - 15729182586018635776, - 15737672645836916736, - 15746144895242993664, - 15754599337781651456, - 15763035977132523520, - 15771454817109774336, - 15779855861661765632, - 15788239114870724608, - 15796604580952412160, - 15804952264255791104, - 15813282169262694400, - 15821594300587474944, - 15829888662976688128, - 15838165261308731392, - 15846424100593524736, - 15854665185972148224, - 15862888522716516352, - 15871094116229017600, - 15879281972042182656, - 15887452095818330112, - 15895604493349216256, - 15903739170555686912, - 15911856133487327232, - 15919955388322107392, - 15928036941366030336, - 15936100799052777472, - 15944146967943348224, - 15952175454725701632, - 15960186266214412288, - 15968179409350281216, - 15976154891200004096, - 15984112718955794432, - 15992052899935019008, - 15999975441579835392, - 16007880351456827392, - 16015767637256634368, - 16023637306793588736, - 16031489368005337088, - 16039323828952473600, - 16047140697818173440, - 16054939982907809792, - 16062721692648593408, - 16070485835589179392, - 16078232420399304704, - 16085961455869401088, - 16093672950910230528, - 16101366914552492032, - 16109043355946442752, - 16116702284361521152, - 16124343709185966080, - 16131967639926423552, - 16139574086207567872, - 16147163057771718656, - 16154734564478449664, - 16162288616304197632, - 16169825223341889536, - 16177344395800526848, - 16184846144004820992, - 16192330478394779648, - 16199797409525334016, - 16207246948065933312, - 16214679104800149504, - 16222093890625286144, - 16229491316551987200, - 16236871393703825408, - 16244234133316919296, - 16251579546739527680, - 16258907645431648256, - 16266218440964622336, - 16273511945020725248, - 16280788169392775168, - 16288047125983719424, - 16295288826806239232, - 16302513283982340096, - 16309720509742946304, - 16316910516427497472, - 16324083316483543040, - 16331238922466324480, - 16338377347038380032, - 16345498602969128960, - 16352602703134464000, - 16359689660516331520, - 16366759488202342400, - 16373812199385325568, - 16380847807362953216, - 16387866325537300480, - 16394867767414439936, - 16401852146604032000, - 16408819476818900992, - 16415769771874623488, - 16422703045689114624, - 16429619312282202112, - 16436518585775216640, - 16443400880390569984, - 16450266210451343360, - 16457114590380849152, - 16463946034702227456, - 16470760558038024192, - 16477558175109765120, - 16484338900737531904, - 16491102749839544320, - 16497849737431732224, - 16504579878627330048, - 16511293188636422144, - 16517989682765545472, - 16524669376417251328, - 16531332285089681408, - 16537978424376150016, - 16544607809964703744, - 16551220457637707776, - 16557816383271411712, - 16564395602835529728, - 16570958132392796160, - 16577503988098564096, - 16584033186200340480, - 16590545743037396992, - 16597041675040309248, - 16603520998730539008, - 16609983730720008192, - 16616429887710660608, - 16622859486494033920, - 16629272543950831616, - 16635669077050486784, - 16642049102850727936, - 16648412638497161216, - 16654759701222815744, - 16661090308347731968, - 16667404477278515200, - 16673702225507905536, - 16679983570614353920, - 16686248530261571584, - 16692497122198108160, - 16698729364256913408, - 16704945274354903040, - 16711144870492524544, - 16717328170753329152, - 16723495193303517184, - 16729645956391526400, - 16735780478347583488, - 16741898777583267840, - 16748000872591085568, - 16754086781944025088, - 16760156524295114752, - 16766210118377011200, - 16772247583001538560, - 16778268937059258368, - 16784274199519047680, - 16790263389427638272, - 16796236525909200896, - 16802193628164902912, - 16808134715472461824, - 16814059807185721344, - 16819968922734206976, - 16825862081622695936, - 16831739303430770688, - 16837600607812399104, - 16843446014495469568, - 16849275543281387520, - 16855089214044606464, - 16860887046732224512, - 16866669061363513344, - 16872435278029508608, - 16878185716892561408, - 16883920398185897984, - 16889639342213193728, - 16895342569348128768, - 16901030100033953792, - 16906701954783055872, - 16912358154176516096, - 16917998718863683584, - 16923623669561733120, - 16929233027055218688, - 16934826812195665920, - 16940405045901107200, - 16945967749155663872, - 16951514943009103872, - 16957046648576403456, - 16962562887037327360, - 16968063679635972096, - 16973549047680350208, - 16979019012541947904, - 16984473595655290880, - 16989912818517504000, - 16995336702687895552, - 17000745269787504640, - 17006138541498679296, - 17011516539564638208, - 17016879285789040640, - 17022226802035550208, - 17027559110227410944, - 17032876232347000832, - 17038178190435414016, - 17043465006592028672, - 17048736702974062592, - 17053993301796153344, - 17059234825329930240, - 17064461295903571968, - 17069672735901390848, - 17074869167763394560, - 17080050613984854016, - 17085217097115887616, - 17090368639761018880, - 17095505264578758656, - 17100626994281164800, - 17105733851633434624, - 17110825859453454336, - 17115903040611393536, - 17120965418029264896, - 17126013014680506368, - 17131045853589549056, - 17136063957831399424, - 17141067350531211264, - 17146056054863861760, - 17151030094053529600, - 17155989491373264896, - 17160934270144577536, - 17165864453737013248, - 17170780065567715328, - 17175681129101031424, - 17180567667848065024, - 17185439705366278144, - 17190297265259053056, - 17195140371175288832, - 17199969046808967168, - 17204783315898750976, - 17209583202227552256, - 17214368729622122496, - 17219139921952634880, - 17223896803132268544, - 17228639397116788736, - 17233367727904141312, - 17238081819534028800, - 17242781696087498752, - 17247467381686542336, - 17252138900493660160, - 17256796276711469056, - 17261439534582280192, - 17266068698387697664, - 17270683792448196608, - 17275284841122723840, - 17279871868808282112, - 17284444899939526656, - 17289003958988355584, - 17293549070463502336, - 17298080258910130176, - 17302597548909430784, - 17307100965078206464, - 17311590532068483072, - 17316066274567092224, - 17320528217295278080, - 17324976385008287744, - 17329410802494973952, - 17333831494577395712, - 17338238486110412800, - 17342631801981292544, - 17347011467109304320, - 17351377506445328384, - 17355729944971454464, - 17360068807700584448, - 17364394119676041216, - 17368705905971175424, - 17373004191688955904, - 17377289001961594880, - 17381560361950144512, - 17385818296844111872, - 17390062831861061632, - 17394293992246226944, - 17398511803272118272, - 17402716290238144512, - 17406907478470211584, - 17411085393320345600, - 17415250060166297600, - 17419401504411164672, - 17423539751483004928, - 17427664826834448384, - 17431776755942318080, - 17435875564307249152, - 17439961277453301760, - 17444033920927586304, - 17448093520299880448, - 17452140101162248192, - 17456173689128669184, - 17460194309834653696, - 17464201988936871936, - 17468196752112775168, - 17472178625060218880, - 17476147633497096192, - 17480103803160963072, - 17484047159808659456, - 17487977729215944704, - 17491895537177133056, - 17495800609504704512, - 17499692972028960768, - 17503572650597644288, - 17507439671075569664, - 17511294059344265216, - 17515135841301606400, - 17518965042861453312, - 17522781689953282048, - 17526585808521828352, - 17530377424526725120, - 17534156563942141952, - 17537923252756430848, - 17541677516971757568, - 17545419382603755520, - 17549148875681167360, - 17552866022245480448, - 17556570848350584832, - 17560263380062416896, - 17563943643458600960, - 17567611664628107264, - 17571267469670891520, - 17574911084697556992, - 17578542535828994048, - 17582161849196044288, - 17585769050939148288, - 17589364167207999488, - 17592947224161204224, - 17596518247965931520, - 17600077264797579264, - 17603624300839428096, - 17607159382282301440, - 17610682535324229632, - 17614193786170103808, - 17617693161031348224, - 17621180686125580288, - 17624656387676274688, - 17628120291912427520, - 17631572425068228608, - 17635012813382727680, - 17638441483099500544, - 17641858460466321408, - 17645263771734835200, - 17648657443160229888, - 17652039501000904704, - 17655409971518154752, - 17658768880975835136, - 17662116255640047616, - 17665452121778806784, - 17668776505661732864, - 17672089433559717888, - 17675390931744620544, - 17678681026488930304, - 17681959744065472512, - 17685227110747068416, - 17688483152806242304, - 17691727896514895872, - 17694961368143992832, - 17698183593963257856, - 17701394600240863232, - 17704594413243109376, - 17707783059234131968, - 17710960564475584512, - 17714126955226335232, - 17717282257742163968, - 17720426498275454976, - 17723559703074897920, - 17726681898385186816, - 17729793110446712832, - 17732893365495275520, - 17735982689761773568, - 17739061109471918080, - 17742128650845929472, - 17745185340098246656, - 17748231203437232128, - 17751266267064881152, - 17754290557176524800, - 17757304099960545280, - 17760306921598091264, - 17763299048262776832, - 17766280506120404992, - 17769251321328678912, - 17772211520036921344, - 17775161128385783808, - 17778100172506968064, - 17781028678522951680, - 17783946672546695168, - 17786854180681371648, - 17789751229020092416, - 17792637843645624320, - 17795514050630111232, - 17798379876034809856, - 17801235345909813248, - 17804080486293776384, - 17806915323213645824, - 17809739882684395520, - 17812554190708748288, - 17815358273276919808, - 17818152156366352384, - 17820935865941436416, - 17823709427953264640, - 17826472868339357696, - 17829226213023408128, - 17831969487915016192, - 17834702718909437952, - 17837425931887325184, - 17840139152714459136, - 17842842407241510912, - 17845535721303777280, - 17848219120720930816, - 17850892631296765952, - 17853556278818951168, - 17856210089058779136, - 17858854087770916864, - 17861488300693157888, - 17864112753546178560, - 17866727472033298432, - 17869332481840222208, - 17871927808634812416, - 17874513478066839552, - 17877089515767746560, - 17879655947350407168, - 17882212798408890368, - 17884760094518220800, - 17887297861234147328, - 17889826124092911616, - 17892344908611004416, - 17894854240284942336, - 17897354144591040512, - 17899844646985170944, - 17902325772902549504, - 17904797547757498368, - 17907259996943222784, - 17909713145831587840, - 17912157019772895232, - 17914591644095662080, - 17917017044106395648, - 17919433245089376256, - 17921840272306438144, - 17924238150996760576, - 17926626906376632320, - 17929006563639257088, - 17931377147954524160, - 17933738684468805632, - 17936091198304743424, - 17938434714561034240, - 17940769258312222720, - 17943094854608498688, - 17945411528475480064, - 17947719304914018304, - 17950018208899989504, - 17952308265384083456, - 17954589499291617280, - 17956861935522324480, - 17959125598950152192, - 17961380514423074816, - 17963626706762883072, - 17965864200765001728, - 17968093021198280704, - 17970313192804812800, - 17972524740299735040, - 17974727688371038208, - 17976922061679376384, - 17979107884857882624, - 17981285182511974400, - 17983453979219169280, - 17985614299528902656, - 17987766167962341376, - 17989909609012195328, - 17992044647142545408, - 17994171306788655104, - 17996289612356790272, - 17998399588224053248, - 18000501258738184192, - 18002594648217405440, - 18004679780950233088, - 18006756681195313152, - 18008825373181237248, - 18010885881106382848, - 18012938229138735104, - 18014982441415718912, - 18017018542044039168, - 18019046555099500544, - 18021066504626849792, - 18023078414639611904, - 18025082309119922176, - 18027078212018366464, - 18029066147253823488, - 18031046138713296896, - 18033018210251765760, - 18034982385692018688, - 18036938688824502272, - 18038887143407163392, - 18040827773165297664, - 18042760601791395840, - 18044685652944986112, - 18046602950252490752, - 18048512517307076608, - 18050414377668497408, - 18052308554862960640, - 18054195072382961664, - 18056073953687164928, - 18057945222200231936, - 18059808901312700416, - 18061665014380828672, - 18063513584726462464, - 18065354635636893696, - 18067188190364721152, - 18069014272127711232, - 18070832904108668928, - 18072644109455290368, - 18074447911280044032, - 18076244332660027392, - 18078033396636837888, - 18079815126216441856, - 18081589544369049600, - 18083356674028976128, - 18085116538094528512, - 18086869159427868672, - 18088614560854888448, - 18090352765165094912, - 18092083795111477248, - 18093807673410392064, - 18095524422741434368, - 18097234065747329024, - 18098936625033801728, - 18100632123169466368, - 18102320582685714432, - 18104002026076585984, - 18105676475798665216, - 18107343954270967808, - 18109004483874820096, - 18110658086953760768, - 18112304785813417984, - 18113944602721411072, - 18115577559907235840, - 18117203679562160128, - 18118822983839117312, - 18120435494852603904, - 18122041234678573056, - 18123640225354334208, - 18125232488878446592, - 18126818047210629120, - 18128396922271649792, - 18129969135943233536, - 18131534710067961856, - 18133093666449182720, - 18134646026850902016, - 18136191812997703680, - 18137731046574651392, - 18139263749227192320, - 18140789942561069056, - 18142309648142229504, - 18143822887496740864, - 18145329682110695424, - 18146830053430124544, - 18148324022860918784, - 18149811611768735744, - 18151292841478918144, - 18152767733276411904, - 18154236308405682176, - 18155698588070637568, - 18157154593434537984, - 18158604345619929088, - 18160047865708560384, - 18161485174741297152, - 18162916293718063104, - 18164341243597750272, - 18165760045298149376, - 18167172719695878144, - 18168579287626311680, - 18169979769883498496, - 18171374187220111360, - 18172762560347353088, - 18174144909934913536, - 18175521256610877440, - 18176891620961679360, - 18178256023532023808, - 18179614484824829952, - 18180967025301159936, - 18182313665380159488, - 18183654425439002624, - 18184989325812817920, - 18186318386794641408, - 18187641628635346944, - 18188959071543601152, - 18190270735685789696, - 18191576641185974272, - 18192876808125835264, - 18194171256544610304, - 18195460006439051264, - 18196743077763360768, - 18198020490429151232, - 18199292264305387520, - 18200558419218337792, - 18201818974951528448, - 18203073951245692928, - 18204323367798720512, - 18205567244265623552, - 18206805600258478080, - 18208038455346386944, - 18209265829055432704, - 18210487740868636672, - 18211704210225922048, - 18212915256524062720, - 18214120899116648448, - 18215321157314052096, - 18216516050383380480, - 18217705597548441600, - 18218889817989709824, - 18220068730844291072, - 18221242355205881856, - 18222410710124738560, - 18223573814607650816, - 18224731687617894400, - 18225884348075216896, - 18227031814855794688, - 18228174106792206336, - 18229311242673408000, - 18230443241244698624, - 18231570121207697408, - 18232691901220317184, - 18233808599896733696, - 18234920235807367168, - 18236026827478853632, - 18237128393394028544, - 18238224951991891968, - 18239316521667600384, - 18240403120772435968, - 18241484767613792256, - 18242561480455153664, - 18243633277516075008, - 18244700176972167168, - 18245762196955074560, - 18246819355552466944, - 18247871670808018944, - 18248919160721393664, - 18249961843248236544, - 18250999736300154880, - 18252032857744705536, - 18253061225405388800, - 18254084857061640192, - 18255103770448803840, - 18256117983258144768, - 18257127513136824320, - 18258132377687900160, - 18259132594470320128, - 18260128180998909952, - 18261119154744369152, - 18262105533133273088, - 18263087333548062720, - 18264064573327040512, - 18265037269764370432, - 18266005440110075904, - 18266969101570035712, - 18267928271305990144, - 18268882966435534848, - 18269833204032120832, - 18270779001125062656, - 18271720374699536384, - 18272657341696583680, - 18273589919013111808, - 18274518123501903872, - 18275441971971622912, - 18276361481186811904, - 18277276667867910144, - 18278187548691247104, - 18279094140289062912, - 18279996459249510400, - 18280894522116663296, - 18281788345390532608, - 18282677945527066624, - 18283563338938171392, - 18284444541991716864, - 18285321571011553280, - 18286194442277521408, - 18287063172025464832, - 18287927776447248384, - 18288788271690770432, - 18289644673859981312, - 18290496999014889472, - 18291345263171596288, - 18292189482302296064, - 18293029672335304704, - 18293865849155072000, - 18294698028602204160, - 18295526226473486336, - 18296350458521899008, - 18297170740456636416, - 18297987087943135232, - 18298799516603095040, - 18299608042014496768, - 18300412679711629312, - 18301213445185114112, - 18302010353881927680, - 18302803421205432320, - 18303592662515392512, - 18304378093128009728, - 18305159728315944960, - 18305937583308345344, - 18306711673290878976, - 18307482013405755392, - 18308248618751756288, - 18309011504384272384, - 18309770685315321856, - 18310526176513593344, - 18311277992904470528, - 18312026149370058752, - 18312770660749230080, - 18313511541837649920, - 18314248807387807744, - 18314982472109053952, - 18315712550667636736, - 18316439057686728704, - 18317162007746476032, - 18317881415384023040, - 18318597295093551104, - 18319309661326319616, - 18320018528490700800, - 18320723910952218624, - 18321425823033583616, - 18322124279014739968, - 18322819293132896256, - 18323510879582574592, - 18324199052515643392, - 18324883826041358336, - 18325565214226411520, - 18326243231094968320, - 18326917890628708352, - 18327589206766868480, - 18328257193406294016, - 18328921864401469440, - 18329583233564577792, - 18330241314665529344, - 18330896121432018944, - 18331547667549569024, - 18332195966661570560, - 18332841032369338368, - 18333482878232147968, - 18334121517767290880, - 18334756964450119680, - 18335389231714095104, - 18336018332950839296, - 18336644281510176768, - 18337267090700193792, - 18337886773787279360, - 18338503343996182528, - 18339116814510059520, - 18339727198470522880, - 18340334508977702912, - 18340938759090284544, - 18341539961825576960, - 18342138130159548416, - 18342733277026893824, - 18343325415321083904, - 18343914557894412288, - 18344500717558063104, - 18345083907082156032, - 18345664139195799552, - 18346241426587158528, - 18346815781903495168, - 18347387217751236608, - 18347955746696028160, - 18348521381262786560, - 18349084133935759360, - 18349644017158588416, - 18350201043334361088, - 18350755224825667584, - 18351306573954666496, - 18351855103003138048, - 18352400824212545536, - 18352943749784098816, - 18353483891878803456, - 18354021262617536512, - 18354555874081095680, - 18355087738310260736, - 18355616867305863168, - 18356143273028843520, - 18356666967400308736, - 18357187962301601792, - 18357706269574359040, - 18358221901020575744, - 18358734868402673664, - 18359245183443556352, - 18359752857826674688, - 18360257903196098560, - 18360760331156572160, - 18361260153273583616, - 18361757381073432576, - 18362252026043287552, - 18362744099631259648, - 18363233613246461952, - 18363720578259083264, - 18364205006000447488, - 18364686907763081216, - 18365166294800789504, - 18365643178328711168, - 18366117569523394560, - 18366589479522856960, - 18367058919426668544, - 18367525900295999488, - 18367990433153710080, - 18368452528984399872, - 18368912198734491648, - 18369369453312292864, - 18369824303588073472, - 18370276760394119168, - 18370726834524823552, - 18371174536736739328, - 18371619877748660224, - 18372062868241688576, - 18372503518859304960, - 18372941840207441920, - 18373377842854551552, - 18373811537331681280, - 18374242934132545536, - 18374672043713595392, - 18375098876494094336, - 18375523442856181760, - 18375945753144963072, - 18376365817668560896, - 18376783646698211328, - 18377199250468313088, - 18377612639176523776, - 18378023822983819264, - 18378432812014569472, - 18378839616356618240, - 18379244246061352960, - 18379646711143780352, - 18380047021582600192, - 18380445187320283136, - 18380841218263142400, - 18381235124281409536, - 18381626915209312256, - 18382016600845146112, - 18382404190951356416, - 18382789695254605824, - 18383173123445856256, - 18383554485180444672, - 18383933790078158848, - 18384311047723311104, - 18384686267664818176, - 18385059459416279040, - 18385430632456048640, - 18385799796227315712, - 18386166960138182656, - 18386532133561739264, - 18386895325836142592, - 18387256546264696832, - 18387615804115924992, - 18387973108623652864, - 18388328468987082752, - 18388681894370873344, - 18389033393905223680, - 18389382976685936640, - 18389730651774517248, - 18390076428198234112, - 18390420314950207488, - 18390762320989487104, - 18391102455241132032, - 18391440726596284416, - 18391777143912251392, - 18392111716012591104, - 18392444451687182336, - 18392775359692310528, - 18393104448750741504, - 18393431727551809536, - 18393757204751491072, - 18394080888972486656, - 18394402788804296704, - 18394722912803313664, - 18395041269492887552, - 18395357867363414016, - 18395672714872414208, - 18395985820444616704, - 18396297192472033280, - 18396606839314042880, - 18396914769297473536, - 18397220990716680192, - 18397525511833624576, - 18397828340877963264, - 18398129486047117312, - 18398428955506364416, - 18398726757388914688, - 18399022899795990528, - 18399317390796912640, - 18399610238429173760, - 18399901450698530816, - 18400191035579074560, - 18400479001013319680, - 18400765354912282624, - 18401050105155563520, - 18401333259591430144, - 18401614826036891648, - 18401894812277790720, - 18402173226068881408, - 18402450075133904896, - 18402725367165683712, - 18402999109826191360, - 18403271310746636288, - 18403541977527554048, - 18403811117738876928, - 18404078738920017920, - 18404344848579964928, - 18404609454197342208, - 18404872563220510720, - 18405134183067637760, - 18405394321126791168, - 18405652984756006912, - 18405910181283381248, - 18406165918007150592, - 18406420202195773440, - 18406673041088010240, - 18406924441893009408, - 18407174411790385152, - 18407422957930305536, - 18407670087433566208, - 18407915807391680512, - 18408160124866957312, - 18408403046892582912, - 18408644580472707072, - 18408884732582522880, - 18409123510168342528, - 18409360920147691520, - 18409596969409380352, - 18409831664813596672, - 18410065013191972864, - 18410297021347684352, - 18410527696055517184, - 18410757044061964288, - 18410985072085293056, - 18411211786815639552, - 18411437194915080192, - 18411661303017723904, - 18411884117729781760, - 18412105645629663232, - 18412325893268043776, - 18412544867167959040, - 18412762573824878592, - 18412979019706789888, - 18413194211254280192, - 18413408154880620544, - 18413620856971837440, - 18413832323886813184, - 18414042561957349376, - 18414251577488257024, - 18414459376757434368, - 18414665966015952896, - 18414871351488135168, - 18415075539371638784, - 18415278535837534208, - 18415480347030384640, - 18415680979068338176, - 18415880438043193344, - 18416078730020493312, - 18416275861039597568, - 18416471837113772032, - 18416666664230256640, - 18416860348350363648, - 18417052895409543168, - 18417244311317469184, - 18417434601958127616, - 18417623773189879808, - 18417811830845564928, - 18417998780732557312, - 18418184628632868864, - 18418369380303214592, - 18418553041475094528, - 18418735617854879744, - 18418917115123890176, - 18419097538938472448, - 18419276894930081792, - 18419455188705359872, - 18419632425846218752, - 18419808611909916672, - 18419983752429139968, - 18420157852912078848, - 18420330918842511360, - 18420502955679887360, - 18420673968859389952, - 18420843963792035840, - 18421012945864742912, - 18421180920440408064, - 18421347892857993216, - 18421513868432603136, - 18421678852455553024, - 18421842850194466816, - 18422005866893336576, - 18422167907772614656, - 18422328978029281280, - 18422489082836934656, - 18422648227345862656, - 18422806416683114496, - 18422963655952592896, - 18423119950235121664, - 18423275304588527616, - 18423429724047718400, - 18423583213624756224, - 18423735778308939776, - 18423887423066882048, - 18424038152842584064, - 18424187972557510656, - 18424336887110678528, - 18424484901378719744, - 18424632020215963648, - 18424778248454518784, - 18424923590904344576, - 18425068052353325056, - 18425211637567350784, - 18425354351290394624, - 18425496198244585472, - 18425637183130286080, - 18425777310626166784, - 18425916585389283328, - 18426055012055156736, - 18426192595237838848, - 18426329339529998336, - 18426465249502988288, - 18426600329706928128, - 18426734584670769152, - 18426868018902382592, - 18427000636888625152, - 18427132443095416832, - 18427263441967812608, - 18427393637930084352, - 18427523035385786368, - 18427651638717835264, - 18427779452288585728, - 18427906480439896064, - 18428032727493214208, - 18428158197749637120, - 18428282895489998848, - 18428406824974938112, - 18428529990444963840, - 18428652396120543232, - 18428774046202165248, - 18428894944870414336, - 18429015096286044160, - 18429134504590057472, - 18429253173903763456, - 18429371108328865792, - 18429488311947524096, - 18429604788822433792, - 18429720542996891648, - 18429835578494871552, - 18429949899321096192, - 18430063509461108736, - 18430176412881340416, - 18430288613529190400, - 18430400115333087232, - 18430510922202566656, - 18430621038028339200, - 18430730466682363904, - 18430839212017913856, - 18430947277869656064, - 18431054668053708800, - 18431161386367723520, - 18431267436590950400, - 18431372822484305920, - 18431477547790446592, - 18431581616233838592, - 18431685031520821248, - 18431787797339686912, - 18431889917360738304, - 18431991395236366336, - 18432092234601117696, - 18432192439071758336, - 18432292012247347200, - 18432390957709307904, - 18432489279021484032, - 18432586979730223104, - 18432684063364433920, - 18432780533435658240, - 18432876393438138368, - 18432971646848884736, - 18433066297127741440, - 18433160347717455872, - 18433253802043746304, - 18433346663515365376, - 18433438935524173824, - 18433530621445193728, - 18433621724636692480, - 18433712248440236032, - 18433802196180758528, - 18433891571166629888, - 18433980376689725440, - 18434068616025481216, - 18434156292432967680, - 18434243409154953216, - 18434329969417967616, - 18434415976432369664, - 18434501433392414720, - 18434586343476305920, - 18434670709846280192, - 18434754535648655360, - 18434837824013897728, - 18434920578056693760, - 18435002800876007424, - 18435084495555143680, - 18435165665161818112, - 18435246312748212224, - 18435326441351043072, - 18435406053991622656, - 18435485153675925504, - 18435563743394648064, - 18435641826123270144, - 18435719404822118400, - 18435796482436433920, - 18435873061896423424, - 18435949146117335040, - 18436024737999511552, - 18436099840428447744, - 18436174456274864128, - 18436248588394762240, - 18436322239629481984, - 18436395412805767168, - 18436468110735826944, - 18436540336217397248, - 18436612092033796096, - 18436683380953987072, - 18436754205732644864, - 18436824569110202368, - 18436894473812926464, - 18436963922552965120, - 18437032918028410880, - 18437101462923368448, - 18437169559907995648, - 18437237211638583296, - 18437304420757598208, - 18437371189893752832, - 18437437521662054400, - 18437503418663872512, - 18437568883486990336, - 18437633918705664000, - 18437698526880686080, - 18437762710559436800, - 18437826472275945472, - 18437889814550943744, - 18437952739891929088, - 18438015250793216000, - 18438077349735995392, - 18438139039188393984, - 18438200321605527552, - 18438261199429556224, - 18438321675089745920, - 18438381751002515456, - 18438441429571506176, - 18438500713187624960, - 18438559604229107712, - 18438618105061566464, - 18438676218038056960, - 18438733945499123712, - 18438791289772857344, - 18438848253174951936, - 18438904838008756224, - 18438961046565330944, - 18439016881123504128, - 18439072343949916160, - 18439127437299091456, - 18439182163413469184, - 18439236524523479040, - 18439290522847580160, - 18439344160592320512, - 18439397439952386048, - 18439450363110658048, - 18439502932238268416, - 18439555149494640640, - 18439607017027553280, - 18439658536973187072, - 18439709711456182272, - 18439760542589683712, - 18439811032475398144, - 18439861183203637248, - 18439910996853385216, - 18439960475492335616, - 18440009621176944640, - 18440058435952486400, - 18440106921853106176, - 18440155080901863424, - 18440202915110782976, - 18440250426480914432, - 18440297617002371072, - 18440344488654387200, - 18440391043405365248, - 18440437283212926976, - 18440483210023958528, - 18440528825774667776, - 18440574132390623232, - 18440619131786813440, - 18440663825867687936, - 18440708216527212544, - 18440752305648910336, - 18440796095105914880, - 18440839586761021440, - 18440882782466723840, - 18440925684065280000, - 18440968293388738560, - 18441010612259004416, - 18441052642487875584, - 18441094385877096448, - 18441135844218396672, - 18441177019293550592, - 18441217912874412032, - 18441258526722967552, - 18441298862591379456, - 18441338922222036992, - 18441378707347593216, - 18441418219691026432, - 18441457460965664768, - 18441496432875251712, - 18441535137113980928, - 18441573575366541312, - 18441611749308170240, - 18441649660604688384, - 18441687310912548864, - 18441724701878884352, - 18441761835141548032, - 18441798712329162752, - 18441835335061157888, - 18441871704947816448, - 18441907823590322176, - 18441943692580800512, - 18441979313502363648, - 18442014687929149440, - 18442049817426370560, - 18442084703550353408, - 18442119347848585216, - 18442153751859746816, - 18442187917113774080, - 18442221845131880448, - 18442255537426608128, - 18442288995501873152, - 18442322220853004288, - 18442355214966779904, - 18442387979321479168, - 18442420515386914816, - 18442452824624480256, - 18442484908487190528, - 18442516768419721216, - 18442548405858447360, - 18442579822231488512, - 18442611018958749696, - 18442641997451954176, - 18442672759114694656, - 18442703305342466048, - 18442733637522710528, - 18442763757034848256, - 18442793665250326528, - 18442823363532658688, - 18442852853237456896, - 18442882135712477184, - 18442911212297656320, - 18442940084325150720, - 18442968753119375360, - 18442997219997042688, - 18443025486267203584, - 18443053553231278080, - 18443081422183104512, - 18443109094408968192, - 18443136571187642368, - 18443163853790429184, - 18443190943481190400, - 18443217841516394496, - 18443244549145145344, - 18443271067609221120, - 18443297398143115264, - 18443323541974069248, - 18443349500322111488, - 18443375274400092160, - 18443400865413724160, - 18443426274561609728, - 18443451503035289600, - 18443476552019267584, - 18443501422691053568, - 18443526116221194240, - 18443550633773314048, - 18443574976504145920, - 18443599145563568128, - 18443623142094641152, - 18443646967233638400, - 18443670622110089216, - 18443694107846799360, - 18443717425559904256, - 18443740576358887424, - 18443763561346621440, - 18443786381619402752, - 18443809038266986496, - 18443831532372615168, - 18443853865013055488, - 18443876037258635264, - 18443898050173272064, - 18443919904814505984, - 18443941602233536512, - 18443963143475257344, - 18443984529578280960, - 18444005761574977536, - 18444026840491511808, - 18444047767347861504, - 18444068543157864448, - 18444089168929243136, - 18444109645663639552, - 18444129974356643840, - 18444150155997829120, - 18444170191570784256, - 18444190082053142528, - 18444209828416610304, - 18444229431627010048, - 18444248892644294656, - 18444268212422592512, - 18444287391910236160, - 18444306432049780736, - 18444325333778051072, - 18444344098026166272, - 18444362725719562240, - 18444381217778032640, - 18444399575115757568, - 18444417798641326080, - 18444435889257771008, - 18444453847862603776, - 18444471675347830784, - 18444489372599998464, - 18444506940500209664, - 18444524379924162560, - 18444541691742169088, - 18444558876819197952, - 18444575936014886912, - 18444592870183587840, - 18444609680174385152, - 18444626366831124480, - 18444642930992443392, - 18444659373491804160, - 18444675695157510144, - 18444691896812748800, - 18444707979275603968, - 18444723943359094784, - 18444739789871198208, - 18444755519614879744, - 18444771133388115968, - 18444786631983927296, - 18444802016190400512, - 18444817286790717440, - 18444832444563181568, - 18444847490281248768, - 18444862424713545728, - 18444877248623902720, - 18444891962771378176, - 18444906567910285312, - 18444921064790218752, - 18444935454156077056, - 18444949736748095488, - 18444963913301860352, - 18444977984548349952, - 18444991951213946880, - 18445005814020470784, - 18445019573685200896, - 18445033230920900608, - 18445046786435848192, - 18445060240933849088, - 18445073595114278912, - 18445086849672091648, - 18445100005297852416, - 18445113062677760000, - 18445126022493673472, - 18445138885423132672, - 18445151652139386880, - 18445164323311413248, - 18445176899603947520, - 18445189381677498368, - 18445201770188384256, - 18445214065788745728, - 18445226269126572032, - 18445238380845727744, - 18445250401585973248, - 18445262331982987264, - 18445274172668391424, - 18445285924269774848, - 18445297587410712576, - 18445309162710790144, - 18445320650785628160, - 18445332052246904832, - 18445343367702374400, - 18445354597755891712, - 18445365743007438848, - 18445376804053137408, - 18445387781485279232, - 18445398675892346880, - 18445409487859032064, - 18445420217966256128, - 18445430866791198720, - 18445441434907314176, - 18445451922884352000, - 18445462331288383488, - 18445472660681814016, - 18445482911623413760, - 18445493084668334080, - 18445503180368123904, - 18445513199270760448, - 18445523141920663552, - 18445533008858716160, - 18445542800622282752, - 18445552517745240064, - 18445562160757985280, - 18445571730187460608, - 18445581226557173760, - 18445590650387222528, - 18445600002194305024, - 18445609282491744256, - 18445618491789510656, - 18445627630594236416, - 18445636699409242112, - 18445645698734544896, - 18445654629066887168, - 18445663490899757056, - 18445672284723396608, - 18445681011024830464, - 18445689670287882240, - 18445698262993192960, - 18445706789618237440, - 18445715250637348864, - 18445723646521733120, - 18445731977739481088, - 18445740244755603456, - 18445748448032032768, - 18445756588027652096, - 18445764665198301184, - 18445772679996813312, - 18445780632873013248, - 18445788524273747968, - 18445796354642898944, - 18445804124421400576, - 18445811834047258624, - 18445819483955570688, - 18445827074578534400, - 18445834606345474048, - 18445842079682850816, - 18445849495014287360, - 18445856852760578048, - 18445864153339707392, - 18445871397166872576, - 18445878584654487552, - 18445885716212215808, - 18445892792246972416, - 18445899813162952704, - 18445906779361636352, - 18445913691241816064, - 18445920549199603712, - 18445927353628450816, - 18445934104919169024, - 18445940803459934208, - 18445947449636317184, - 18445954043831285760, - 18445960586425231360, - 18445967077795975168, - 18445973518318792704, - 18445979908366424064, - 18445986248309088256, - 18445992538514503680, - 18445998779347896320, - 18446004971172024320, - 18446011114347184128, - 18446017209231228928, - 18446023256179585024, - 18446029255545262080, - 18446035207678877696, - 18446041112928657408, - 18446046971640465408, - 18446052784157804544, - 18446058550821838848, - 18446064271971409920, - 18446069947943045120, - 18446075579070971904, - 18446081165687140352, - 18446086708121225216, - 18446092206700648448, - 18446097661750593536, - 18446103073594013696, - 18446108442551646208, - 18446113768942032896, - 18446119053081526272, - 18446124295284310016, - 18446129495862401024, - 18446134655125678080, - 18446139773381883904, - 18446144850936643584, - 18446149888093472768, - 18446154885153796096, - 18446159842416959488, - 18446164760180240384, - 18446169638738866176, - 18446174478386014208, - 18446179279412842496, - 18446184042108489728, - 18446188766760089600, - 18446193453652791296, - 18446198103069757440, - 18446202715292192768, - 18446207290599346176, - 18446211829268523008, - 18446216331575103488, - 18446220797792550912, - 18446225228192423936, - 18446229623044384768, - 18446233982616219648, - 18446238307173847040, - 18446242596981325824, - 18446246852300869632, - 18446251073392863232, - 18446255260515862528, - 18446259413926621184, - 18446263533880086528, - 18446267620629424128, - 18446271674426023936, - 18446275695519508480, - 18446279684157749248, - 18446283640586872832, - 18446287565051279360, - 18446291457793644544, - 18446295319054938112, - 18446299149074432000, - 18446302948089710592, - 18446306716336678912, - 18446310454049581056, - 18446314161461006336, - 18446317838801895424, - 18446321486301558784, - 18446325104187682816, - 18446328692686344192, - 18446332252022011904, - 18446335782417567744, - 18446339284094310400, - 18446342757271963648, - 18446346202168698880, - 18446349619001124864, - 18446353007984318464, - 18446356369331822592, - 18446359703255658496, - 18446363009966336000, - 18446366289672861696, - 18446369542582753280, - 18446372768902047744, - 18446375968835307520, - 18446379142585628672, - 18446382290354661376, - 18446385412342607872, - 18446388508748234752, - 18446391579768887296, - 18446394625600493568, - 18446397646437574656, - 18446400642473254912, - 18446403613899270144, - 18446406560905979904, - 18446409483682369536, - 18446412382416068608, - 18446415257293348864, - 18446418108499144704, - 18446420936217055232, - 18446423740629350400, - 18446426521916989440, - 18446429280259616768, - 18446432015835584512, - 18446434728821950464, - 18446437419394488320, - 18446440087727704064, - 18446442733994831872, - 18446445358367854592, - 18446447961017503744, - 18446450542113269760, - 18446453101823414272, - 18446455640314972160, - 18446458157753765888, - 18446460654304407552, - 18446463130130309120, - 18446465585393696768, - 18446468020255604736, - 18446470434875899904, - 18446472829413275648, - 18446475204025266176, - 18446477558868258816, - 18446479894097489920, - 18446482209867061248, - 18446484506329946112, - 18446486783637997568, - 18446489041941952512, - 18446491281391441920, - 18446493502134996992, - 18446495704320059392, - 18446497888092983296, - 18446500053599049728, - 18446502200982466560, - 18446504330386382848, - 18446506441952886784, - 18446508535823024128, - 18446510612136798208, - 18446512671033176064, - 18446514712650096640, - 18446516737124485120, - 18446518744592246784, - 18446520735188287488, - 18446522709046505472, - 18446524666299813888, - 18446526607080134656, - 18446528531518412800, - 18446530439744624640, - 18446532331887773696, - 18446534208075909120, - 18446536068436125696, - 18446537913094572032, - 18446539742176456704, - 18446541555806058496, - 18446543354106726400, - 18446545137200885760, - 18446546905210056704, - 18446548658254841856, - 18446550396454948864, - 18446552119929186304, - 18446553828795473920, - 18446555523170852864, - 18446557203171481600, - 18446558868912650240, - 18446560520508782592, - 18446562158073444352, - 18446563781719349248, - 18446565391558363136, - 18446566987701508096, - 18446568570258972672, - 18446570139340118016, - 18446571695053479936, - 18446573237506770944, - 18446574766806900736, - 18446576283059963904, - 18446577786371258368, - 18446579276845285376, - 18446580754585753600, - 18446582219695589376, - 18446583672276940800, - 18446585112431181824, - 18446586540258914304, - 18446587955859984384, - 18446589359333472256, - 18446590750777714688, - 18446592130290292736, - 18446593497968054272, - 18446594853907101696, - 18446596198202814464, - 18446597530949840896, - 18446598852242106368, - 18446600162172827648, - 18446601460834502656, - 18446602748318926848, - 18446604024717197312, - 18446605290119706624, - 18446606544616167424, - 18446607788295596032, - 18446609021246334976, - 18446610243556044800, - 18446611455311716352, - 18446612656599674880, - 18446613847505580032, - 18446615028114436096, - 18446616198510594048, - 18446617358777757696, - 18446618508998981632, - 18446619649256691712, - 18446620779632666624, - 18446621900208066560, - 18446623011063416832, - 18446624112278630400, - 18446625203932993536, - 18446626286105190400, - 18446627358873290752, - 18446628422314762240, - 18446629476506474496, - 18446630521524699136, - 18446631557445122048, - 18446632584342839296, - 18446633602292363264, - 18446634611367634944, - 18446635611642011648, - 18446636603188291584, - 18446637586078697472, - 18446638560384897024, - 18446639526177998848, - 18446640483528558592, - 18446641432506578944, - 18446642373181519872, - 18446643305622298624, - 18446644229897297920, - 18446645146074363904, - 18446646054220812288, - 18446646954403432448, - 18446647846688493568, - 18446648731141746688, - 18446649607828424704, - 18446650476813252608, - 18446651338160447488, - 18446652191933722624, - 18446653038196291584, - 18446653877010868224, - 18446654708439681024, - 18446655532544462848, - 18446656349386463232, - 18446657159026452480, - 18446657961524715520, - 18446658756941072384, - 18446659545334861824, - 18446660326764961792, - 18446661101289781248, - 18446661868967270400, - 18446662629854918656, - 18446663384009764864, - 18446664131488395264, - 18446664872346947584, - 18446665606641115136, - 18446666334426152960, - 18446667055756871680, - 18446667770687655936, - 18446668479272450048, - 18446669181564776448, - 18446669877617731584, - 18446670567483983872, - 18446671251215792128, - 18446671928864991232, - 18446672600483008512, - 18446673266120859648, - 18446673925829152768, - 18446674579658096640, - 18446675227657492480, - 18446675869876748288, - 18446676506364878848, - 18446677137170505728, - 18446677762341857280, - 18446678381926782976, - 18446678995972745216, - 18446679604526827520, - 18446680207635732480, - 18446680805345796096, - 18446681397702973440, - 18446681984752857088, - 18446682566540670976, - 18446683143111276544, - 18446683714509170688, - 18446684280778498048, - 18446684841963044864, - 18446685398106245120, - 18446685949251182592, - 18446686495440592896, - 18446687036716867584, - 18446687573122058240, - 18446688104697872384, - 18446688631485685760, - 18446689153526532096, - 18446689670861121536, - 18446690183529828352, - 18446690691572705280, - 18446691195029473280, - 18446691693939539968, - 18446692188341987328, - 18446692678275579904, - 18446693163778770944, - 18446693644889698304, - 18446694121646192640, - 18446694594085775360, - 18446695062245660672, - 18446695526162761728, - 18446695985873690624, - 18446696441414762496, - 18446696892821995520, - 18446697340131108864, - 18446697783377539072, - 18446698222596427776, - 18446698657822627840, - 18446699089090711552, - 18446699516434964480, - 18446699939889395712, - 18446700359487729664, - 18446700775263422464, - 18446701187249647616, - 18446701595479310336, - 18446701999985049600, - 18446702400799227904, - 18446702797953947648, - 18446703191481044992, - 18446703581412098048, - 18446703967778418688, - 18446704350611064832, - 18446704729940838400, - 18446705105798287360, - 18446705478213705728, - 18446705847217141760, - 18446706212838387712, - 18446706575107000320, - 18446706934052282368, - 18446707289703301120, - 18446707642088878080, - 18446707991237601280, - 18446708337177817088, - 18446708679937640448, - 18446709019544948736, - 18446709356027396096, - 18446709689412399104, - 18446710019727149056, - 18446710346998611968, - 18446710671253532672, - 18446710992518426624, - 18446711310819594240, - 18446711626183112704, - 18446711938634848256, - 18446712248200443904, - 18446712554905333760, - 18446712858774736896, - 18446713159833665536, - 18446713458106918912, - 18446713753619089408, - 18446714046394566656, - 18446714336457535488, - 18446714623831975936, - 18446714908541669376, - 18446715190610194432, - 18446715470060937216, - 18446715746917085184, - 18446716021201629184, - 18446716292937371648, - 18446716562146916352, - 18446716828852684800, - 18446717093076905984, - 18446717354841620480, - 18446717614168686592, - 18446717871079776256, - 18446718125596381184, - 18446718377739808768, - 18446718627531186176, - 18446718874991466496, - 18446719120141422592, - 18446719363001651200, - 18446719603592579072, - 18446719841934454784, - 18446720078047361024, - 18446720311951202304, - 18446720543665725440, - 18446720773210501120, - 18446721000604936192, - 18446721225868275712, - 18446721449019598848, - 18446721670077822976, - 18446721889061703680, - 18446722105989840896, - 18446722320880670720, - 18446722533752477696, - 18446722744623384576, - 18446722953511368704, - 18446723160434243584, - 18446723365409681408, - 18446723568455192576, - 18446723769588146176, - 18446723968825761792, - 18446724166185107456, - 18446724361683111936, - 18446724555336550400, - 18446724747162062848, - 18446724937176141824, - 18446725125395142656, - 18446725311835275264, - 18446725496512612352, - 18446725679443091456, - 18446725860642510848, - 18446726040126533632, - 18446726217910687744, - 18446726394010365952, - 18446726568440836096, - 18446726741217224704, - 18446726912354531328, - 18446727081867632640, - 18446727249771268096, - 18446727416080054272, - 18446727580808480768, - 18446727743970912256, - 18446727905581592576, - 18446728065654634496, - 18446728224204038144, - 18446728381243674624, - 18446728536787300352, - 18446728690848548864, - 18446728843440939008, - 18446728994577868800, - 18446729144272623616, - 18446729292538370048, - 18446729439388166144, - 18446729584834947072, - 18446729728891545600, - 18446729871570677760, - 18446730012884946944, - 18446730152846850048, - 18446730291468777472, - 18446730428763006976, - 18446730564741711872, - 18446730699416956928, - 18446730832800702464, - 18446730964904810496, - 18446731095741028352, - 18446731225321007104, - 18446731353656299520, - 18446731480758349824, - 18446731606638505984, - 18446731731308015616, - 18446731854778028032, - 18446731977059596288, - 18446732098163673088, - 18446732218101121024, - 18446732336882698240, - 18446732454519076864, - 18446732571020832768, - 18446732686398445568, - 18446732800662306816, - 18446732913822713856, - 18446733025889875968, - 18446733136873908224, - 18446733246784843776, - 18446733355632619520, - 18446733463427090432, - 18446733570178021376, - 18446733675895091200, - 18446733780587892736, - 18446733884265936896, - 18446733986938650624, - 18446734088615370752, - 18446734189305360384, - 18446734289017794560, - 18446734387761770496, - 18446734485546301440, - 18446734582380322816, - 18446734678272692224, - 18446734773232183296, - 18446734867267500032, - 18446734960387260416, - 18446735052600010752, - 18446735143914219520, - 18446735234338283520, - 18446735323880519680, - 18446735412549173248, - 18446735500352415744, - 18446735587298347008, - 18446735673394991104, - 18446735758650304512, - 18446735843072169984, - 18446735926668400640, - 18446736009446744064, - 18446736091414867968, - 18446736172580382720, - 18446736252950822912, - 18446736332533661696, - 18446736411336298496, - 18446736489366073344, - 18446736566630254592, - 18446736643136047104, - 18446736718890596352, - 18446736793900974080, - 18446736868174196736, - 18446736941717213184, - 18446737014536910848, - 18446737086640115712, - 18446737158033592320, - 18446737228724043776, - 18446737298718111744, - 18446737368022380544, - 18446737436643373056, - 18446737504587556864, - 18446737571861334016, - 18446737638471053312, - 18446737704423008256, - 18446737769723432960, - 18446737834378504192, - 18446737898394343424, - 18446737961777016832, - 18446738024532535296, - 18446738086666860544, - 18446738148185888768, - 18446738209095473152, - 18446738269401411584, - 18446738329109442560, - 18446738388225263616, - 18446738446754508800, - 18446738504702771200, - 18446738562075584512, - 18446738618878439424, - 18446738675116771328, - 18446738730795966464, - 18446738785921366016, - 18446738840498259968, - 18446738894531887104, - 18446738948027445248, - 18446739000990074880, - 18446739053424881664, - 18446739105336913920, - 18446739156731181056, - 18446739207612639232, - 18446739257986209792, - 18446739307856758784, - 18446739357229111296, - 18446739406108051456, - 18446739454498314240, - 18446739502404595712, - 18446739549831546880, - 18446739596783773696, - 18446739643265843200, - 18446739689282279424, - 18446739734837565440, - 18446739779936139264, - 18446739824582406144, - 18446739868780720128, - 18446739912535404544, - 18446739955850735616, - 18446739998730956800, - 18446740041180266496, - 18446740083202830336, - 18446740124802768896, - 18446740165984167936, - 18446740206751076352, - 18446740247107504128, - 18446740287057424384, - 18446740326604775424, - 18446740365753454592, - 18446740404507328512, - 18446740442870222848, - 18446740480845930496, - 18446740518438211584, - 18446740555650785280, - 18446740592487342080, - 18446740628951533568, - 18446740665046980608, - 18446740700777267200, - 18446740736145948672, - 18446740771156545536, - 18446740805812539392, - 18446740840117389312, - 18446740874074517504, - 18446740907687309312, - 18446740940959129600, - 18446740973893300224, - 18446741006493120512, - 18446741038761852928, - 18446741070702735360, - 18446741102318970880, - 18446741133613733888, - 18446741164590170112, - 18446741195251394560, - 18446741225600491520, - 18446741255640520704, - 18446741285374509056, - 18446741314805456896, - 18446741343936337920, - 18446741372770095104, - 18446741401309642752, - 18446741429557874688, - 18446741457517647872, - 18446741485191798784, - 18446741512583135232, - 18446741539694442496, - 18446741566528471040, - 18446741593087952896, - 18446741619375591424, - 18446741645394067456, - 18446741671146029056, - 18446741696634107904, - 18446741721860904960, - 18446741746829002752, - 18446741771540948992, - 18446741795999279104, - 18446741820206497792, - 18446741844165087232, - 18446741867877505024, - 18446741891346186240, - 18446741914573545472, - 18446741937561972736, - 18446741960313831424, - 18446741982831468544, - 18446742005117206528, - 18446742027173343232, - 18446742049002158080, - 18446742070605907968, - 18446742091986827264, - 18446742113147129856, - 18446742134089009152, - 18446742154814636032, - 18446742175326160896, - 18446742195625713664, - 18446742215715407872, - 18446742235597330432, - 18446742255273553920, - 18446742274746126336, - 18446742294017079296, - 18446742313088423936, - 18446742331962152960, - 18446742350640238592, - 18446742369124634624, - 18446742387417276416, - 18446742405520082944, - 18446742423434950656, - 18446742441163759616, - 18446742458708373504, - 18446742476070635520, - 18446742493252370432, - 18446742510255390720, - 18446742527081486336, - 18446742543732432896, - 18446742560209983488, - 18446742576515885056, - 18446742592651855872, - 18446742608619603968, - 18446742624420820992, - 18446742640057182208, - 18446742655530344448, - 18446742670841948160, - 18446742685993621504, - 18446742700986976256, - 18446742715823603712, - 18446742730505086976, - 18446742745032988672, - 18446742759408857088, - 18446742773634228224, - 18446742787710619648, - 18446742801639536640, - 18446742815422470144, - 18446742829060892672, - 18446742842556268544, - 18446742855910041600, - 18446742869123647488, - 18446742882198505472, - 18446742895136018432, - 18446742907937579008, - 18446742920604563456, - 18446742933138339840, - 18446742945540257792, - 18446742957811654656, - 18446742969953855488, - 18446742981968173056, - 18446742993855907840, - 18446743005618343936, - 18446743017256757248, - 18446743028772409344, - 18446743040166547456, - 18446743051440410624, - 18446743062595225600, - 18446743073632200704, - 18446743084552542208, - 18446743095357435904, - 18446743106048059392, - 18446743116625580032, - 18446743127091154944, - 18446743137445922816, - 18446743147691018240, - 18446743157827563520, - 18446743167856666624, - 18446743177779427328, - 18446743187596933120, - 18446743197310263296, - 18446743206920482816, - 18446743216428650496, - 18446743225835810816, - 18446743235143002112, - 18446743244351244288, - 18446743253461559296, - 18446743262474948608, - 18446743271392409600, - 18446743280214925312, - 18446743288943474688, - 18446743297579024384, - 18446743306122526720, - 18446743314574934016, - 18446743322937182208, - 18446743331210199040, - 18446743339394904064, - 18446743347492208640, - 18446743355503013888, - 18446743363428210688, - 18446743371268683776, - 18446743379025307648, - 18446743386698950656, - 18446743394290464768, - 18446743401800704000, - 18446743409230505984, - 18446743416580704256, - 18446743423852122112, - 18446743431045574656, - 18446743438161868800, - 18446743445201807360, - 18446743452166178816, - 18446743459055765504, - 18446743465871347712, - 18446743472613689344, - 18446743479283550208, - 18446743485881688064, - 18446743492408844288, - 18446743498865756160, - 18446743505253156864, - 18446743511571767296, - 18446743517822304256, - 18446743524005474304, - 18446743530121981952, - 18446743536172521472, - 18446743542157778944, - 18446743548078434304, - 18446743553935165440, - 18446743559728633856, - 18446743565459503104, - 18446743571128428544, - 18446743576736053248, - 18446743582283020288, - 18446743587769964544, - 18446743593197512704, - 18446743598566285312, - 18446743603876898816, - 18446743609129961472, - 18446743614326077440, - 18446743619465842688, - 18446743624549847040, - 18446743629578678272, - 18446743634552911872, - 18446743639473123328, - 18446743644339877888, - 18446743649153738752, - 18446743653915260928, - 18446743658624993280, - 18446743663283484672, - 18446743667891269632, - 18446743672448884736, - 18446743676956856320, - 18446743681415708672, - 18446743685825959936, - 18446743690188120064, - 18446743694502696960, - 18446743698770194432, - 18446743702991108096, - 18446743707165927424, - 18446743711295143936, - 18446743715379236864, - 18446743719418681344, - 18446743723413952512, - 18446743727365517312, - 18446743731273836544, - 18446743735139368960, - 18446743738962567168, - 18446743742743881728, - 18446743746483752960, - 18446743750182623232, - 18446743753840926720, - 18446743757459093504, - 18446743761037551616, - 18446743764576718848, - 18446743768077012992, - 18446743771538851840, - 18446743774962638848, - 18446743778348781568, - 18446743781697681408, - 18446743785009731584, - 18446743788285327360, - 18446743791524853760, - 18446743794728697856, - 18446743797897240576, - 18446743801030856704, - 18446743804129918976, - 18446743807194796032, - 18446743810225854464, - 18446743813223452672, - 18446743816187949056, - 18446743819119699968, - 18446743822019053568, - 18446743824886355968, - 18446743827721949184, - 18446743830526175232, - 18446743833299369984, - 18446743836041863168, - 18446743838753984512, - 18446743841436061696, - 18446743844088416256, - 18446743846711365632, - 18446743849305227264, - 18446743851870312448, - 18446743854406930432, - 18446743856915386368, - 18446743859395985408, - 18446743861849024512, - 18446743864274800640, - 18446743866673606656, - 18446743869045735424, - 18446743871391473664, - 18446743873711101952, - 18446743876004907008, - 18446743878273163264, - 18446743880516149248, - 18446743882734135296, - 18446743884927391744, - 18446743887096186880, - 18446743889240784896, - 18446743891361445888, - 18446743893458427904, - 18446743895531988992, - 18446743897582383104, - 18446743899609858048, - 18446743901614665728, - 18446743903597047808, - 18446743905557252096, - 18446743907495514112, - 18446743909412073472, - 18446743911307165696, - 18446743913181024256, - 18446743915033878528, - 18446743916865957888, - 18446743918677487616, - 18446743920468690944, - 18446743922239789056, - 18446743923991001088, - 18446743925722542080, - 18446743927434627072, - 18446743929127467008, - 18446743930801272832, - 18446743932456251392, - 18446743934092607488, - 18446743935710543872, - 18446743937310261248, - 18446743938891962368, - 18446743940455837696, - 18446743942002085888, - 18446743943530899456, - 18446743945042468864, - 18446743946536980480, - 18446743948014622720, - 18446743949475579904, - 18446743950920034304, - 18446743952348168192, - 18446743953760157696, - 18446743955156180992, - 18446743956536412160, - 18446743957901027328, - 18446743959250194432, - 18446743960584085504, - 18446743961902866432, - 18446743963206703104, - 18446743964495761408, - 18446743965770203136, - 18446743967030188032, - 18446743968275875840, - 18446743969507424256, - 18446743970724986880, - 18446743971928721408, - 18446743973118775296, - 18446743974295304192, - 18446743975458453504, - 18446743976608372736, - 18446743977745209344, - 18446743978869102592, - 18446743979980199936, - 18446743981078640640, - 18446743982164566016, - 18446743983238113280, - 18446743984299417600, - 18446743985348618240, - 18446743986385846272, - 18446743987411234816, - 18446743988424914944, - 18446743989427017728, - 18446743990417670144, - 18446743991396999168, - 18446743992365129728, - 18446743993322186752, - 18446743994268293120, - 18446743995203569664, - 18446743996128139264, - 18446743997042118656, - 18446743997945624576, - 18446743998838773760, - 18446743999721684992, - 18446744000594468864, - 18446744001457238016, - 18446744002310103040, - 18446744003153178624, - 18446744003986569216, - 18446744004810385408, - 18446744005624733696, - 18446744006429718528, - 18446744007225444352, - 18446744008012015616, - 18446744008789534720, - 18446744009558099968, - 18446744010317815808, - 18446744011068778496, - 18446744011811084288, - 18446744012544833536, - 18446744013270120448, - 18446744013987041280, - 18446744014695686144, - 18446744015396149248, - 18446744016088524800, - 18446744016772900864, - 18446744017449367552, - 18446744018118012928, - 18446744018778927104, - 18446744019432196096, - 18446744020077903872, - 18446744020716136448, - 18446744021346977792, - 18446744021970511872, - 18446744022586820608, - 18446744023195983872, - 18446744023798083584, - 18446744024393199616, - 18446744024981409792, - 18446744025562791936, - 18446744026137421824, - 18446744026705377280, - 18446744027266734080, - 18446744027821563904, - 18446744028369944576, - 18446744028911943680, - 18446744029447639040, - 18446744029977098240, - 18446744030500390912, - 18446744031017590784, - 18446744031528763392, - 18446744032033978368, - 18446744032533301248, - 18446744033026801664, - 18446744033514545152, - 18446744033996595200, - 18446744034473015296, - 18446744034943873024, - 18446744035409229824, - 18446744035869147136, - 18446744036323688448, - 18446744036772913152, - 18446744037216882688, - 18446744037655656448, - 18446744038089293824, - 18446744038517852160, - 18446744038941388800, - 18446744039359965184, - 18446744039773632512, - 18446744040182450176, - 18446744040586471424, - 18446744040985751552, - 18446744041380343808, - 18446744041770303488, - 18446744042155681792, - 18446744042536534016, - 18446744042912907264, - 18446744043284856832, - 18446744043652429824, - 18446744044015677440, - 18446744044374650880, - 18446744044729397248, - 18446744045079965696, - 18446744045426403328, - 18446744045768759296, - 18446744046107076608, - 18446744046441406464, - 18446744046771789824, - 18446744047098273792, - 18446744047420905472, - 18446744047739725824, - 18446744048054779904, - 18446744048366110720, - 18446744048673759232, - 18446744048977772544, - 18446744049278187520, - 18446744049575049216, - 18446744049868396544, - 18446744050158268416, - 18446744050444707840, - 18446744050727753728, - 18446744051007444992, - 18446744051283818496, - 18446744051556915200, - 18446744051826769920, - 18446744052093423616, - 18446744052356911104, - 18446744052617267200, - 18446744052874532864, - 18446744053128738816, - 18446744053379923968, - 18446744053628121088, - 18446744053873364992, - 18446744054115690496, - 18446744054355132416, - 18446744054591721472, - 18446744054825492480, - 18446744055056478208, - 18446744055284711424, - 18446744055510220800, - 18446744055733043200, - 18446744055953205248, - 18446744056170739712, - 18446744056385675264, - 18446744056598044672, - 18446744056807876608, - 18446744057015201792, - 18446744057220046848, - 18446744057422442496, - 18446744057622415360, - 18446744057819996160, - 18446744058015211520, - 18446744058208090112, - 18446744058398656512, - 18446744058586941440, - 18446744058772967424, - 18446744058956763136, - 18446744059138353152, - 18446744059317764096, - 18446744059495022592, - 18446744059670153216, - 18446744059843178496, - 18446744060014127104, - 18446744060183019520, - 18446744060349882368, - 18446744060514736128, - 18446744060677609472, - 18446744060838520832, - 18446744060997494784, - 18446744061154553856, - 18446744061309722624, - 18446744061463021568, - 18446744061614471168, - 18446744061764093952, - 18446744061911912448, - 18446744062057949184, - 18446744062202220544, - 18446744062344751104, - 18446744062485561344, - 18446744062624667648, - 18446744062762094592, - 18446744062897858560, - 18446744063031982080, - 18446744063164481536, - 18446744063295379456, - 18446744063424690176, - 18446744063552436224, - 18446744063678636032, - 18446744063803303936, - 18446744063926462464, - 18446744064048128000, - 18446744064168314880, - 18446744064287045632, - 18446744064404336640, - 18446744064520200192, - 18446744064634658816, - 18446744064747726848, - 18446744064859418624, - 18446744064969754624, - 18446744065078749184, - 18446744065186416640, - 18446744065292773376, - 18446744065397835776, - 18446744065501618176, - 18446744065604136960, - 18446744065705408512, - 18446744065805443072, - 18446744065904259072, - 18446744066001868800, - 18446744066098288640, - 18446744066193530880, - 18446744066287611904, - 18446744066380541952, - 18446744066472337408, - 18446744066563010560, - 18446744066652575744, - 18446744066741047296, - 18446744066828433408, - 18446744066914752512, - 18446744067000014848, - 18446744067084232704, - 18446744067167418368, - 18446744067249586176, - 18446744067330746368, - 18446744067410911232, - 18446744067490093056, - 18446744067568304128, - 18446744067645554688, - 18446744067721857024, - 18446744067797223424, - 18446744067871662080, - 18446744067945187328, - 18446744068017807360, - 18446744068089536512, - 18446744068160382976, - 18446744068230356992, - 18446744068299468800, - 18446744068367732736, - 18446744068435152896, - 18446744068501743616, - 18446744068567515136, - 18446744068632473600, - 18446744068696633344, - 18446744068760000512, - 18446744068822585344, - 18446744068884398080, - 18446744068945446912, - 18446744069005742080, - 18446744069065291776, - 18446744069124106240, - 18446744069182193664, - 18446744069239564288, - 18446744069296222208, - 18446744069352181760, - 18446744069407447040, - 18446744069462028288, - 18446744069515931648, - 18446744069569169408, - 18446744069621747712, - 18446744069673672704, - 18446744069724954624, - 18446744069775599616, - 18446744069825615872, - 18446744069875011584, - 18446744069923792896, - 18446744069971970048, - 18446744070019547136, - 18446744070066534400, - 18446744070112935936, - 18446744070158761984, - 18446744070204016640, - 18446744070248708096, - 18446744070292842496, - 18446744070336428032, - 18446744070379470848, - 18446744070421977088, - 18446744070463952896, - 18446744070505406464, - 18446744070546341888, - 18446744070586767360, - 18446744070626686976, - 18446744070666108928, - 18446744070705039360, - 18446744070743482368, - 18446744070781444096, - 18446744070818932736, - 18446744070855952384, - 18446744070892509184, - 18446744070928607232, - 18446744070964254720, - 18446744070999455744, - 18446744071034216448, - 18446744071068540928, - 18446744071102435328, - 18446744071135903744, - 18446744071168952320, - 18446744071201587200, - 18446744071233814528, - 18446744071265634304, - 18446744071297056768, - 18446744071328081920, - 18446744071358720000, - 18446744071388971008, - 18446744071418843136, - 18446744071448338432, - 18446744071477463040, - 18446744071506221056, - 18446744071534618624, - 18446744071562655744, - 18446744071590342656, - 18446744071617679360, - 18446744071644669952, - 18446744071671322624, - 18446744071697637376, - 18446744071723622400, - 18446744071749277696, - 18446744071774609408, - 18446744071799621632, - 18446744071824318464, - 18446744071848701952, - 18446744071872778240, - 18446744071896549376, - 18446744071920019456, - 18446744071943194624, - 18446744071966074880, - 18446744071988664320, - 18446744072010969088, - 18446744072032993280, - 18446744072054734848, - 18446744072076204032, - 18446744072097398784, - 18446744072118325248, - 18446744072138987520, - 18446744072159385600, - 18446744072179525632, - 18446744072199409664, - 18446744072219041792, - 18446744072238424064, - 18446744072257560576, - 18446744072276451328, - 18446744072295104512, - 18446744072313520128, - 18446744072331700224, - 18446744072349648896, - 18446744072367370240, - 18446744072384864256, - 18446744072402137088, - 18446744072419188736, - 18446744072436023296, - 18446744072452642816, - 18446744072469049344, - 18446744072485249024, - 18446744072501239808, - 18446744072517027840, - 18446744072532613120, - 18446744072547999744, - 18446744072563189760, - 18446744072578185216, - 18446744072592988160, - 18446744072607602688, - 18446744072622030848, - 18446744072636272640, - 18446744072650334208, - 18446744072664213504, - 18446744072677916672, - 18446744072691443712, - 18446744072704796672, - 18446744072717977600, - 18446744072730990592, - 18446744072743837696, - 18446744072756518912, - 18446744072769036288, - 18446744072781393920, - 18446744072793591808, - 18446744072805634048, - 18446744072817520640, - 18446744072829255680, - 18446744072840839168, - 18446744072852273152, - 18446744072863559680, - 18446744072874700800, - 18446744072885698560, - 18446744072896555008, - 18446744072907272192, - 18446744072917850112, - 18446744072928292864, - 18446744072938600448, - 18446744072948774912, - 18446744072958816256, - 18446744072968730624, - 18446744072978515968, - 18446744072988174336, - 18446744072997707776, - 18446744073007118336, - 18446744073016408064, - 18446744073025576960, - 18446744073034627072, - 18446744073043560448, - 18446744073052377088, - 18446744073061081088, - 18446744073069670400, - 18446744073078149120, - 18446744073086519296, - 18446744073094778880, - 18446744073102934016, - 18446744073110980608, - 18446744073118924800, - 18446744073126764544, - 18446744073134501888, - 18446744073142140928, - 18446744073149679616, - 18446744073157120000, - 18446744073164464128, - 18446744073171712000, - 18446744073178865664, - 18446744073185927168, - 18446744073192896512, - 18446744073199773696, - 18446744073206562816, - 18446744073213261824, - 18446744073219874816, - 18446744073226401792, - 18446744073232842752, - 18446744073239199744, - 18446744073245474816, - 18446744073251667968, - 18446744073257779200, - 18446744073263810560, - 18446744073269764096, - 18446744073275639808, - 18446744073281437696, - 18446744073287159808, - 18446744073292808192, - 18446744073298382848, - 18446744073303883776, - 18446744073309313024, - 18446744073314670592, - 18446744073319956480, - 18446744073325174784, - 18446744073330325504, - 18446744073335408640, - 18446744073340424192, - 18446744073345374208, - 18446744073350258688, - 18446744073355079680, - 18446744073359837184, - 18446744073364531200, - 18446744073369163776, - 18446744073373736960, - 18446744073378248704, - 18446744073382701056, - 18446744073387096064, - 18446744073391433728, - 18446744073395712000, - 18446744073399934976, - 18446744073404102656, - 18446744073408215040, - 18446744073412274176, - 18446744073416278016, - 18446744073420230656, - 18446744073424130048, - 18446744073427978240, - 18446744073431775232, - 18446744073435523072, - 18446744073439221760, - 18446744073442869248, - 18446744073446471680, - 18446744073450024960, - 18446744073453531136, - 18446744073456990208, - 18446744073460404224, - 18446744073463773184, - 18446744073467097088, - 18446744073470377984, - 18446744073473613824, - 18446744073476808704, - 18446744073479960576, - 18446744073483069440, - 18446744073486139392, - 18446744073489166336, - 18446744073492154368, - 18446744073495101440, - 18446744073498011648, - 18446744073500880896, - 18446744073503713280, - 18446744073506506752, - 18446744073509265408, - 18446744073511985152, - 18446744073514670080, - 18446744073517318144, - 18446744073519931392, - 18446744073522509824, - 18446744073525055488, - 18446744073527566336, - 18446744073530042368, - 18446744073532485632, - 18446744073534898176, - 18446744073537275904, - 18446744073539624960, - 18446744073541941248, - 18446744073544224768, - 18446744073546479616, - 18446744073548703744, - 18446744073550899200, - 18446744073553065984, - 18446744073555202048, - 18446744073557309440, - 18446744073559390208, - 18446744073561440256, - 18446744073563465728, - 18446744073565462528, - 18446744073567432704, - 18446744073569378304, - 18446744073571295232, - 18446744073573187584, - 18446744073575055360, - 18446744073576898560, - 18446744073578715136, - 18446744073580507136, - 18446744073582276608, - 18446744073584021504, - 18446744073585743872, - 18446744073587441664, - 18446744073589116928, - 18446744073590771712, - 18446744073592401920, - 18446744073594011648, - 18446744073595598848, - 18446744073597163520, - 18446744073598709760, - 18446744073600233472, - 18446744073601736704, - 18446744073603219456, - 18446744073604683776, - 18446744073606127616, - 18446744073607550976, - 18446744073608955904, - 18446744073610342400, - 18446744073611708416, - 18446744073613058048, - 18446744073614387200, - 18446744073615699968, - 18446744073616996352, - 18446744073618272256, - 18446744073619531776, - 18446744073620774912, - 18446744073622001664, - 18446744073623212032, - 18446744073624403968, - 18446744073625581568, - 18446744073626742784, - 18446744073627887616, - 18446744073629018112, - 18446744073630132224, - 18446744073631232000, - 18446744073632315392, - 18446744073633386496, - 18446744073634441216, - 18446744073635481600, - 18446744073636509696, - 18446744073637521408, - 18446744073638520832, - 18446744073639505920, - 18446744073640478720, - 18446744073641437184, - 18446744073642383360, - 18446744073643315200, - 18446744073644236800, - 18446744073645144064, - 18446744073646039040, - 18446744073646921728, - 18446744073647794176, - 18446744073648652288, - 18446744073649500160, - 18446744073650335744, - 18446744073651161088, - 18446744073651974144, - 18446744073652774912, - 18446744073653567488, - 18446744073654347776, - 18446744073655117824, - 18446744073655875584, - 18446744073656625152, - 18446744073657364480, - 18446744073658091520, - 18446744073658810368, - 18446744073659518976, - 18446744073660219392, - 18446744073660907520, - 18446744073661587456, - 18446744073662259200, - 18446744073662920704, - 18446744073663571968, - 18446744073664215040, - 18446744073664849920, - 18446744073665476608, - 18446744073666093056, - 18446744073666701312, - 18446744073667303424, - 18446744073667895296, - 18446744073668478976, - 18446744073669054464, - 18446744073669623808, - 18446744073670182912, - 18446744073670735872, - 18446744073671280640, - 18446744073671819264, - 18446744073672347648, - 18446744073672871936, - 18446744073673385984, - 18446744073673895936, - 18446744073674397696, - 18446744073674891264, - 18446744073675378688, - 18446744073675859968, - 18446744073676335104, - 18446744073676802048, - 18446744073677262848, - 18446744073677717504, - 18446744073678166016, - 18446744073678610432, - 18446744073679046656, - 18446744073679476736, - 18446744073679900672, - 18446744073680318464, - 18446744073680732160, - 18446744073681137664, - 18446744073681539072, - 18446744073681936384, - 18446744073682325504, - 18446744073682710528, - 18446744073683091456, - 18446744073683464192, - 18446744073683834880, - 18446744073684197376, - 18446744073684555776, - 18446744073684910080, - 18446744073685260288, - 18446744073685604352, - 18446744073685942272, - 18446744073686278144, - 18446744073686607872, - 18446744073686933504, - 18446744073687255040, - 18446744073687570432, - 18446744073687881728, - 18446744073688190976, - 18446744073688494080, - 18446744073688793088, - 18446744073689088000, - 18446744073689378816, - 18446744073689665536, - 18446744073689948160, - 18446744073690226688, - 18446744073690503168, - 18446744073690773504, - 18446744073691039744, - 18446744073691303936, - 18446744073691564032, - 18446744073691820032, - 18446744073692073984, - 18446744073692321792, - 18446744073692567552, - 18446744073692811264, - 18446744073693048832, - 18446744073693284352, - 18446744073693517824, - 18446744073693745152, - 18446744073693972480, - 18446744073694193664, - 18446744073694414848, - 18446744073694629888, - 18446744073694842880, - 18446744073695053824, - 18446744073695260672, - 18446744073695465472, - 18446744073695668224, - 18446744073695866880, - 18446744073696061440, - 18446744073696256000, - 18446744073696446464, - 18446744073696634880, - 18446744073696819200, - 18446744073697001472, - 18446744073697181696, - 18446744073697359872, - 18446744073697533952, - 18446744073697708032, - 18446744073697878016, - 18446744073698043904, - 18446744073698209792, - 18446744073698373632, - 18446744073698533376, - 18446744073698693120, - 18446744073698848768, - 18446744073699002368, - 18446744073699153920, - 18446744073699303424, - 18446744073699450880, - 18446744073699596288, - 18446744073699739648, - 18446744073699880960, - 18446744073700022272, - 18446744073700159488, - 18446744073700294656, - 18446744073700427776, - 18446744073700558848, - 18446744073700689920, - 18446744073700816896, - 18446744073700943872, - 18446744073701066752, - 18446744073701189632, - 18446744073701310464, - 18446744073701431296, - 18446744073701548032, - 18446744073701662720, - 18446744073701777408, - 18446744073701890048, - 18446744073702000640, - 18446744073702111232, - 18446744073702217728, - 18446744073702324224, - 18446744073702428672, - 18446744073702533120, - 18446744073702633472, - 18446744073702733824, - 18446744073702834176, - 18446744073702930432, - 18446744073703026688, - 18446744073703120896, - 18446744073703215104, - 18446744073703307264, - 18446744073703397376, - 18446744073703487488, - 18446744073703575552, - 18446744073703661568, - 18446744073703747584, - 18446744073703833600, - 18446744073703915520, - 18446744073703997440, - 18446744073704079360, - 18446744073704159232, - 18446744073704237056, - 18446744073704314880, - 18446744073704390656, - 18446744073704466432, - 18446744073704540160, - 18446744073704613888, - 18446744073704685568, - 18446744073704757248, - 18446744073704826880, - 18446744073704896512, - 18446744073704964096, - 18446744073705031680, - 18446744073705097216, - 18446744073705162752, - 18446744073705226240, - 18446744073705289728, - 18446744073705351168, - 18446744073705412608, - 18446744073705474048, - 18446744073705533440, - 18446744073705592832, - 18446744073705650176, - 18446744073705707520, - 18446744073705764864, - 18446744073705820160, - 18446744073705873408, - 18446744073705928704, - 18446744073705981952, - 18446744073706033152, - 18446744073706086400, - 18446744073706135552, - 18446744073706186752, - 18446744073706235904, - 18446744073706285056, - 18446744073706332160, - 18446744073706379264, - 18446744073706426368, - 18446744073706473472, - 18446744073706518528, - 18446744073706563584, - 18446744073706606592, - 18446744073706649600, - 18446744073706692608, - 18446744073706735616, - 18446744073706776576, - 18446744073706817536, - 18446744073706858496, - 18446744073706897408, - 18446744073706936320, - 18446744073706975232, - 18446744073707014144, - 18446744073707051008, - 18446744073707087872, - 18446744073707124736, - 18446744073707159552, - 18446744073707194368, - 18446744073707229184, - 18446744073707264000, - 18446744073707298816, - 18446744073707331584, - 18446744073707364352, - 18446744073707397120, - 18446744073707427840, - 18446744073707460608, - 18446744073707491328, - 18446744073707522048, - 18446744073707552768, - 18446744073707581440, - 18446744073707610112, - 18446744073707638784, - 18446744073707667456, - 18446744073707696128, - 18446744073707722752, - 18446744073707751424, - 18446744073707778048, - 18446744073707804672, - 18446744073707829248, - 18446744073707855872, - 18446744073707880448, - 18446744073707905024, - 18446744073707929600, - 18446744073707954176, - 18446744073707978752, - 18446744073708001280, - 18446744073708023808, - 18446744073708046336, - 18446744073708068864, - 18446744073708091392, - 18446744073708113920, - 18446744073708134400, - 18446744073708156928, - 18446744073708177408, - 18446744073708197888, - 18446744073708218368, - 18446744073708236800, - 18446744073708257280, - 18446744073708275712, - 18446744073708296192, - 18446744073708314624, - 18446744073708333056, - 18446744073708351488, - 18446744073708369920, - 18446744073708386304, - 18446744073708404736, - 18446744073708421120, - 18446744073708437504, - 18446744073708455936, - 18446744073708472320, - 18446744073708486656, - 18446744073708503040, - 18446744073708519424, - 18446744073708533760, - 18446744073708550144, - 18446744073708564480, - 18446744073708578816, - 18446744073708595200, - 18446744073708609536, - 18446744073708623872, - 18446744073708636160, - 18446744073708650496, - 18446744073708664832, - 18446744073708677120, - 18446744073708691456, - 18446744073708703744, - 18446744073708716032, - 18446744073708728320, - 18446744073708740608, - 18446744073708752896, - 18446744073708765184, - 18446744073708777472, - 18446744073708789760, - 18446744073708800000, - 18446744073708812288, - 18446744073708822528, - 18446744073708834816, - 18446744073708845056, - 18446744073708855296, - 18446744073708865536, - 18446744073708875776, - 18446744073708886016, - 18446744073708896256, - 18446744073708906496, - 18446744073708916736, - 18446744073708926976, - 18446744073708935168, - 18446744073708945408, - 18446744073708953600, - 18446744073708963840, - 18446744073708972032, - 18446744073708980224, - 18446744073708988416, - 18446744073708998656, - 18446744073709006848, - 18446744073709015040, - 18446744073709023232, - 18446744073709031424, - 18446744073709039616, - 18446744073709045760, - 18446744073709053952, - 18446744073709062144, - 18446744073709068288, - 18446744073709076480, - 18446744073709082624, - 18446744073709090816, - 18446744073709096960, - 18446744073709105152, - 18446744073709111296, - 18446744073709117440, - 18446744073709125632, - 18446744073709131776, - 18446744073709137920, - 18446744073709144064, - 18446744073709150208, - 18446744073709156352, - 18446744073709162496, - 18446744073709168640, - 18446744073709174784, - 18446744073709178880, - 18446744073709185024, - 18446744073709191168, - 18446744073709197312, - 18446744073709201408, - 18446744073709207552, - 18446744073709211648, - 18446744073709217792, - 18446744073709223936, - 18446744073709228032, - 18446744073709232128, - 18446744073709238272, - 18446744073709242368, - 18446744073709246464, - 18446744073709252608, - 18446744073709256704, - 18446744073709260800, - 18446744073709264896, - 18446744073709268992, - 18446744073709275136, - 18446744073709279232, - 18446744073709283328, - 18446744073709287424, - 18446744073709291520, - 18446744073709295616, - 18446744073709299712, - 18446744073709301760, - 18446744073709305856, - 18446744073709309952, - 18446744073709314048, - 18446744073709318144, - 18446744073709322240, - 18446744073709324288, - 18446744073709328384, - 18446744073709332480, - 18446744073709334528, - 18446744073709338624, - 18446744073709342720, - 18446744073709344768, - 18446744073709348864, - 18446744073709350912, - 18446744073709355008, - 18446744073709357056, - 18446744073709361152, - 18446744073709363200, - 18446744073709365248, - 18446744073709369344, - 18446744073709371392, - 18446744073709375488, - 18446744073709377536, - 18446744073709379584, - 18446744073709383680, - 18446744073709385728, - 18446744073709387776, - 18446744073709389824, - 18446744073709393920, - 18446744073709395968, - 18446744073709398016, - 18446744073709400064, - 18446744073709402112, - 18446744073709404160, - 18446744073709406208, - 18446744073709410304, - 18446744073709412352, - 18446744073709414400, - 18446744073709416448, - 18446744073709418496, - 18446744073709420544, - 18446744073709422592, - 18446744073709424640, - 18446744073709426688, - 18446744073709428736, - 18446744073709430784, - 18446744073709432832, - 18446744073709432832, - 18446744073709434880, - 18446744073709436928, - 18446744073709438976, - 18446744073709441024, - 18446744073709443072, - 18446744073709445120, - 18446744073709445120, - 18446744073709447168, - 18446744073709449216, - 18446744073709451264, - 18446744073709453312, - 18446744073709453312, - 18446744073709455360, - 18446744073709457408, - 18446744073709459456, - 18446744073709459456, - 18446744073709461504, - 18446744073709463552, - 18446744073709463552, - 18446744073709465600, - 18446744073709467648, - 18446744073709467648, - 18446744073709469696, - 18446744073709471744, - 18446744073709471744, - 18446744073709473792, - 18446744073709473792, - 18446744073709475840, - 18446744073709477888, - 18446744073709477888, - 18446744073709479936, - 18446744073709479936, - 18446744073709481984, - 18446744073709481984, - 18446744073709484032, - 18446744073709484032, - 18446744073709486080, - 18446744073709486080, - 18446744073709488128, - 18446744073709488128, - 18446744073709490176, - 18446744073709490176, - 18446744073709492224, - 18446744073709492224, - 18446744073709494272, - 18446744073709494272, - 18446744073709496320, - 18446744073709496320, - 18446744073709496320, - 18446744073709498368, - 18446744073709498368, - 18446744073709500416, - 18446744073709500416, - 18446744073709500416, - 18446744073709502464, - 18446744073709502464, - 18446744073709504512, - 18446744073709504512, - 18446744073709504512, - 18446744073709506560, - 18446744073709506560, - 18446744073709506560, - 18446744073709508608, - 18446744073709508608, - 18446744073709508608, - 18446744073709510656, - 18446744073709510656, - 18446744073709510656, - 18446744073709512704, - 18446744073709512704, - 18446744073709512704, - 18446744073709514752, - 18446744073709514752, - 18446744073709514752, - 18446744073709514752, - 18446744073709516800, - 18446744073709516800, - 18446744073709516800, - 18446744073709518848, - 18446744073709518848, - 18446744073709518848, - 18446744073709518848, - 18446744073709520896, - 18446744073709520896, - 18446744073709520896, - 18446744073709520896, - 18446744073709520896, - 18446744073709522944, - 18446744073709522944, - 18446744073709522944, - 18446744073709522944, - 18446744073709524992, - 18446744073709524992, - 18446744073709524992, - 18446744073709524992, - 18446744073709524992, - 18446744073709527040, - 18446744073709527040, - 18446744073709527040, - 18446744073709527040, - 18446744073709527040, - 18446744073709529088, - 18446744073709529088, - 18446744073709529088, - 18446744073709529088, - 18446744073709529088, - 18446744073709529088, - 18446744073709531136, - 18446744073709531136, - 18446744073709531136, - 18446744073709531136, - 18446744073709531136, - 18446744073709531136, - 18446744073709533184, - 18446744073709533184, - 18446744073709533184, - 18446744073709533184, - 18446744073709533184, - 18446744073709533184, - 18446744073709533184, - 18446744073709535232, - 18446744073709535232, - 18446744073709535232, - 18446744073709535232, - 18446744073709535232, - 18446744073709535232, - 18446744073709535232, - 18446744073709535232, - 18446744073709537280, - 18446744073709537280, - 18446744073709537280, - 18446744073709537280, - 18446744073709537280, - 18446744073709537280, - 18446744073709537280, - 18446744073709537280, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328, - 18446744073709539328 - ] -} + +const CDF_LOOKUP_TABLE: Array = array![ + 9223372036854775808_u128, + 9252808702943967232_u128, + 9282244898050897920_u128, + 9311680151215912960_u128, + 9341113991524567040_u128, + 9370545948130232320_u128, + 9399975550276689920_u128, + 9429402327320713216_u128, + 9458825808754659328_u128, + 9488245524229031936_u128, + 9517661003575031808_u128, + 9547071776827107328_u128, + 9576477374245480448_u128, + 9605877326338643968_u128, + 9635271163885858816_u128, + 9664658417959618560_u128, + 9694038619948087296_u128, + 9723411301577521152_u128, + 9752775994934657024_u128, + 9782132232489074688_u128, + 9811479547115528192_u128, + 9840817472116238336_u128, + 9870145541243170816_u128, + 9899463288720248832_u128, + 9928770249265555456_u128, + 9958065958113478656_u128, + 9987349951036825600_u128, + 10016621764368885760_u128, + 10045880935025459200_u128, + 10075127000526825472_u128, + 10104359499019677696_u128, + 10133577969298997248_u128, + 10162781950829885440_u128, + 10191970983769325568_u128, + 10221144608987914240_u128, + 10250302368091512832_u128, + 10279443803442855936_u128, + 10308568458183090176_u128, + 10337675876253259776_u128, + 10366765602415716352_u128, + 10395837182275477504_u128, + 10424890162301509632_u128, + 10453924089847945216_u128, + 10482938513175224320_u128, + 10511932981471182848_u128, + 10540907044872030208_u128, + 10569860254483300352_u128, + 10598792162400684032_u128, + 10627702321730805760_u128, + 10656590286611914752_u128, + 10685455612234489856_u128, + 10714297854861774848_u128, + 10743116571850209280_u128, + 10771911321669789696_u128, + 10800681663924336640_u128, + 10829427159371671552_u128, + 10858147369943703552_u128, + 10886841858766422016_u128, + 10915510190179803136_u128, + 10944151929757609984_u128, + 10972766644327096320_u128, + 11001353901988632576_u128, + 11029913272135194624_u128, + 11058444325471784960_u128, + 11086946634034741248_u128, + 11115419771210921984_u128, + 11143863311756816384_u128, + 11172276831817529344_u128, + 11200659908945653760_u128, + 11229012122120050688_u128, + 11257333051764500480_u128, + 11285622279766249472_u128, + 11313879389494448128_u128, + 11342103965818456064_u128, + 11370295595126050816_u128, + 11398453865341501440_u128, + 11426578365943543808_u128, + 11454668687983200256_u128, + 11482724424101521408_u128, + 11510745168547168256_u128, + 11538730517193887744_u128, + 11566680067557859328_u128, + 11594593418814910464_u128, + 11622470171817617408_u128, + 11650309929112250368_u128, + 11678112294955618304_u128, + 11705876875331762176_u128, + 11733603277968519168_u128, + 11761291112353961984_u128, + 11788939989752688640_u128, + 11816549523221983232_u128, + 11844119327627843584_u128, + 11871649019660867584_u128, + 11899138217851990016_u128, + 11926586542588092416_u128, + 11953993616127471616_u128, + 11981359062615146496_u128, + 12008682508098048000_u128, + 12035963580540041216_u128, + 12063201909836820480_u128, + 12090397127830640640_u128, + 12117548868324917248_u128, + 12144656767098658816_u128, + 12171720461920778240_u128, + 12198739592564219904_u128, + 12225713800819955712_u128, + 12252642730510839808_u128, + 12279526027505276928_u128, + 12306363339730765824_u128, + 12333154317187278848_u128, + 12359898611960483840_u128, + 12386595878234810368_u128, + 12413245772306364416_u128, + 12439847952595679232_u128, + 12466402079660306432_u128, + 12492907816207255552_u128, + 12519364827105271808_u128, + 12545772779396941824_u128, + 12572131342310656000_u128, + 12598440187272392704_u128, + 12624698987917357056_u128, + 12650907420101437440_u128, + 12677065161912510464_u128, + 12703171893681580032_u128, + 12729227297993746432_u128, + 12755231059699021824_u128, + 12781182865922959360_u128, + 12807082406077138944_u128, + 12832929371869466624_u128, + 12858723457314316288_u128, + 12884464358742505472_u128, + 12910151774811095040_u128, + 12935785406513025024_u128, + 12961364957186578432_u128, + 12986890132524673024_u128, + 13012360640583997440_u128, + 13037776191793952768_u128, + 13063136498965446656_u128, + 13088441277299501056_u128, + 13113690244395687936_u128, + 13138883120260409344_u128, + 13164019627314991104_u128, + 13189099490403600384_u128, + 13214122436801007616_u128, + 13239088196220153856_u128, + 13263996500819574784_u128, + 13288847085210617856_u128, + 13313639686464505856_u128, + 13338374044119224320_u128, + 13363049900186236928_u128, + 13387666999157014528_u128, + 13412225088009408512_u128, + 13436723916213839872_u128, + 13461163235739305984_u128, + 13485542801059233792_u128, + 13509862369157144576_u128, + 13534121699532138496_u128, + 13558320554204225536_u128, + 13582458697719459840_u128, + 13606535897154920448_u128, + 13630551922123501568_u128, + 13654506544778526720_u128, + 13678399539818207232_u128, + 13702230684489920512_u128, + 13725999758594291712_u128, + 13749706544489134080_u128, + 13773350827093198848_u128, + 13796932393889746944_u128, + 13820451034929965056_u128, + 13843906542836191232_u128, + 13867298712804970496_u128, + 13890627342609956864_u128, + 13913892232604600320_u128, + 13937093185724721152_u128, + 13960230007490854912_u128, + 13983302506010460160_u128, + 14006310491979948032_u128, + 14029253778686525440_u128, + 14052132182009896960_u128, + 14074945520423768064_u128, + 14097693614997188608_u128, + 14120376289395736576_u128, + 14142993369882511360_u128, + 14165544685318981632_u128, + 14188030067165646848_u128, + 14210449349482536960_u128, + 14232802368929546240_u128, + 14255088964766601216_u128, + 14277308978853656576_u128, + 14299462255650525184_u128, + 14321548642216552448_u128, + 14343567988210104320_u128, + 14365520145887920128_u128, + 14387404970104279040_u128, + 14409222318310006784_u128, + 14430972050551320576_u128, + 14452654029468528640_u128, + 14474268120294535168_u128, + 14495814190853206016_u128, + 14517292111557582848_u128, + 14538701755407904768_u128, + 14560042997989507072_u128, + 14581315717470533632_u128, + 14602519794599514112_u128, + 14623655112702767104_u128, + 14644721557681643520_u128, + 14665719018009645056_u128, + 14686647384729346048_u128, + 14707506551449196544_u128, + 14728296414340141056_u128, + 14749016872132122624_u128, + 14769667826110390272_u128, + 14790249180111691776_u128, + 14810760840520304640_u128, + 14831202716263901184_u128, + 14851574718809294848_u128, + 14871876762158018560_u128, + 14892108762841761792_u128, + 14912270639917656064_u128, + 14932362314963427328_u128, + 14952383712072390656_u128, + 14972334757848320000_u128, + 14992215381400150016_u128, + 15012025514336559104_u128, + 15031765090760394752_u128, + 15051434047262978048_u128, + 15071032322918256640_u128, + 15090559859276810240_u128, + 15110016600359749632_u128, + 15129402492652445696_u128, + 15148717485098153984_u128, + 15167961529091479552_u128, + 15187134578471729152_u128, + 15206236589516115968_u128, + 15225267520932851712_u128, + 15244227333854085120_u128, + 15263115991828738048_u128, + 15281933460815194112_u128, + 15300679709173862400_u128, + 15319354707659640832_u128, + 15337958429414211584_u128, + 15356490849958250496_u128, + 15374951947183503360_u128, + 15393341701344729088_u128, + 15411660095051538432_u128, + 15429907113260113920_u128, + 15448082743264788480_u128, + 15466186974689544192_u128, + 15484219799479365632_u128, + 15502181211891494912_u128, + 15520071208486561792_u128, + 15537889788119619584_u128, + 15555636951931043840_u128, + 15573312703337353216_u128, + 15590917048021893120_u128, + 15608449993925425152_u128, + 15625911551236612096_u128, + 15643301732382398464_u128, + 15660620552018280448_u128, + 15677868027018465280_u128, + 15695044176465973248_u128, + 15712149021642561536_u128, + 15729182586018635776_u128, + 15746144895242993664_u128, + 15763035977132523520_u128, + 15779855861661765632_u128, + 15796604580952412160_u128, + 15813282169262694400_u128, + 15829888662976688128_u128, + 15846424100593524736_u128, + 15862888522716516352_u128, + 15879281972042182656_u128, + 15895604493349216256_u128, + 15911856133487327232_u128, + 15928036941366030336_u128, + 15944146967943348224_u128, + 15960186266214412288_u128, + 15976154891200004096_u128, + 15992052899935019008_u128, + 16007880351456827392_u128, + 16023637306793588736_u128, + 16039323828952473600_u128, + 16054939982907809792_u128, + 16070485835589179392_u128, + 16085961455869401088_u128, + 16101366914552492032_u128, + 16116702284361521152_u128, + 16131967639926423552_u128, + 16147163057771718656_u128, + 16162288616304197632_u128, + 16177344395800526848_u128, + 16192330478394779648_u128, + 16207246948065933312_u128, + 16222093890625286144_u128, + 16236871393703825408_u128, + 16251579546739527680_u128, + 16266218440964622336_u128, + 16280788169392775168_u128, + 16295288826806239232_u128, + 16309720509742946304_u128, + 16324083316483543040_u128, + 16338377347038380032_u128, + 16352602703134464000_u128, + 16366759488202342400_u128, + 16380847807362953216_u128, + 16394867767414439936_u128, + 16408819476818900992_u128, + 16422703045689114624_u128, + 16436518585775216640_u128, + 16450266210451343360_u128, + 16463946034702227456_u128, + 16477558175109765120_u128, + 16491102749839544320_u128, + 16504579878627330048_u128, + 16517989682765545472_u128, + 16531332285089681408_u128, + 16544607809964703744_u128, + 16557816383271411712_u128, + 16570958132392796160_u128, + 16584033186200340480_u128, + 16597041675040309248_u128, + 16609983730720008192_u128, + 16622859486494033920_u128, + 16635669077050486784_u128, + 16648412638497161216_u128, + 16661090308347731968_u128, + 16673702225507905536_u128, + 16686248530261571584_u128, + 16698729364256913408_u128, + 16711144870492524544_u128, + 16723495193303517184_u128, + 16735780478347583488_u128, + 16748000872591085568_u128, + 16760156524295114752_u128, + 16772247583001538560_u128, + 16784274199519047680_u128, + 16796236525909200896_u128, + 16808134715472461824_u128, + 16819968922734206976_u128, + 16831739303430770688_u128, + 16843446014495469568_u128, + 16855089214044606464_u128, + 16866669061363513344_u128, + 16878185716892561408_u128, + 16889639342213193728_u128, + 16901030100033953792_u128, + 16912358154176516096_u128, + 16923623669561733120_u128, + 16934826812195665920_u128, + 16945967749155663872_u128, + 16957046648576403456_u128, + 16968063679635972096_u128, + 16979019012541947904_u128, + 16989912818517504000_u128, + 17000745269787504640_u128, + 17011516539564638208_u128, + 17022226802035550208_u128, + 17032876232347000832_u128, + 17043465006592028672_u128, + 17053993301796153344_u128, + 17064461295903571968_u128, + 17074869167763394560_u128, + 17085217097115887616_u128, + 17095505264578758656_u128, + 17105733851633434624_u128, + 17115903040611393536_u128, + 17126013014680506368_u128, + 17136063957831399424_u128, + 17146056054863861760_u128, + 17155989491373264896_u128, + 17165864453737013248_u128, + 17175681129101031424_u128, + 17185439705366278144_u128, + 17195140371175288832_u128, + 17204783315898750976_u128, + 17214368729622122496_u128, + 17223896803132268544_u128, + 17233367727904141312_u128, + 17242781696087498752_u128, + 17252138900493660160_u128, + 17261439534582280192_u128, + 17270683792448196608_u128, + 17279871868808282112_u128, + 17289003958988355584_u128, + 17298080258910130176_u128, + 17307100965078206464_u128, + 17316066274567092224_u128, + 17324976385008287744_u128, + 17333831494577395712_u128, + 17342631801981292544_u128, + 17351377506445328384_u128, + 17360068807700584448_u128, + 17368705905971175424_u128, + 17377289001961594880_u128, + 17385818296844111872_u128, + 17394293992246226944_u128, + 17402716290238144512_u128, + 17411085393320345600_u128, + 17419401504411164672_u128, + 17427664826834448384_u128, + 17435875564307249152_u128, + 17444033920927586304_u128, + 17452140101162248192_u128, + 17460194309834653696_u128, + 17468196752112775168_u128, + 17476147633497096192_u128, + 17484047159808659456_u128, + 17491895537177133056_u128, + 17499692972028960768_u128, + 17507439671075569664_u128, + 17515135841301606400_u128, + 17522781689953282048_u128, + 17530377424526725120_u128, + 17537923252756430848_u128, + 17545419382603755520_u128, + 17552866022245480448_u128, + 17560263380062416896_u128, + 17567611664628107264_u128, + 17574911084697556992_u128, + 17582161849196044288_u128, + 17589364167207999488_u128, + 17596518247965931520_u128, + 17603624300839428096_u128, + 17610682535324229632_u128, + 17617693161031348224_u128, + 17624656387676274688_u128, + 17631572425068228608_u128, + 17638441483099500544_u128, + 17645263771734835200_u128, + 17652039501000904704_u128, + 17658768880975835136_u128, + 17665452121778806784_u128, + 17672089433559717888_u128, + 17678681026488930304_u128, + 17685227110747068416_u128, + 17691727896514895872_u128, + 17698183593963257856_u128, + 17704594413243109376_u128, + 17710960564475584512_u128, + 17717282257742163968_u128, + 17723559703074897920_u128, + 17729793110446712832_u128, + 17735982689761773568_u128, + 17742128650845929472_u128, + 17748231203437232128_u128, + 17754290557176524800_u128, + 17760306921598091264_u128, + 17766280506120404992_u128, + 17772211520036921344_u128, + 17778100172506968064_u128, + 17783946672546695168_u128, + 17789751229020092416_u128, + 17795514050630111232_u128, + 17801235345909813248_u128, + 17806915323213645824_u128, + 17812554190708748288_u128, + 17818152156366352384_u128, + 17823709427953264640_u128, + 17829226213023408128_u128, + 17834702718909437952_u128, + 17840139152714459136_u128, + 17845535721303777280_u128, + 17850892631296765952_u128, + 17856210089058779136_u128, + 17861488300693157888_u128, + 17866727472033298432_u128, + 17871927808634812416_u128, + 17877089515767746560_u128, + 17882212798408890368_u128, + 17887297861234147328_u128, + 17892344908611004416_u128, + 17897354144591040512_u128, + 17902325772902549504_u128, + 17907259996943222784_u128, + 17912157019772895232_u128, + 17917017044106395648_u128, + 17921840272306438144_u128, + 17926626906376632320_u128, + 17931377147954524160_u128, + 17936091198304743424_u128, + 17940769258312222720_u128, + 17945411528475480064_u128, + 17950018208899989504_u128, + 17954589499291617280_u128, + 17959125598950152192_u128, + 17963626706762883072_u128, + 17968093021198280704_u128, + 17972524740299735040_u128, + 17976922061679376384_u128, + 17981285182511974400_u128, + 17985614299528902656_u128, + 17989909609012195328_u128, + 17994171306788655104_u128, + 17998399588224053248_u128, + 18002594648217405440_u128, + 18006756681195313152_u128, + 18010885881106382848_u128, + 18014982441415718912_u128, + 18019046555099500544_u128, + 18023078414639611904_u128, + 18027078212018366464_u128, + 18031046138713296896_u128, + 18034982385692018688_u128, + 18038887143407163392_u128, + 18042760601791395840_u128, + 18046602950252490752_u128, + 18050414377668497408_u128, + 18054195072382961664_u128, + 18057945222200231936_u128, + 18061665014380828672_u128, + 18065354635636893696_u128, + 18069014272127711232_u128, + 18072644109455290368_u128, + 18076244332660027392_u128, + 18079815126216441856_u128, + 18083356674028976128_u128, + 18086869159427868672_u128, + 18090352765165094912_u128, + 18093807673410392064_u128, + 18097234065747329024_u128, + 18100632123169466368_u128, + 18104002026076585984_u128, + 18107343954270967808_u128, + 18110658086953760768_u128, + 18113944602721411072_u128, + 18117203679562160128_u128, + 18120435494852603904_u128, + 18123640225354334208_u128, + 18126818047210629120_u128, + 18129969135943233536_u128, + 18133093666449182720_u128, + 18136191812997703680_u128, + 18139263749227192320_u128, + 18142309648142229504_u128, + 18145329682110695424_u128, + 18148324022860918784_u128, + 18151292841478918144_u128, + 18154236308405682176_u128, + 18157154593434537984_u128, + 18160047865708560384_u128, + 18162916293718063104_u128, + 18165760045298149376_u128, + 18168579287626311680_u128, + 18171374187220111360_u128, + 18174144909934913536_u128, + 18176891620961679360_u128, + 18179614484824829952_u128, + 18182313665380159488_u128, + 18184989325812817920_u128, + 18187641628635346944_u128, + 18190270735685789696_u128, + 18192876808125835264_u128, + 18195460006439051264_u128, + 18198020490429151232_u128, + 18200558419218337792_u128, + 18203073951245692928_u128, + 18205567244265623552_u128, + 18208038455346386944_u128, + 18210487740868636672_u128, + 18212915256524062720_u128, + 18215321157314052096_u128, + 18217705597548441600_u128, + 18220068730844291072_u128, + 18222410710124738560_u128, + 18224731687617894400_u128, + 18227031814855794688_u128, + 18229311242673408000_u128, + 18231570121207697408_u128, + 18233808599896733696_u128, + 18236026827478853632_u128, + 18238224951991891968_u128, + 18240403120772435968_u128, + 18242561480455153664_u128, + 18244700176972167168_u128, + 18246819355552466944_u128, + 18248919160721393664_u128, + 18250999736300154880_u128, + 18253061225405388800_u128, + 18255103770448803840_u128, + 18257127513136824320_u128, + 18259132594470320128_u128, + 18261119154744369152_u128, + 18263087333548062720_u128, + 18265037269764370432_u128, + 18266969101570035712_u128, + 18268882966435534848_u128, + 18270779001125062656_u128, + 18272657341696583680_u128, + 18274518123501903872_u128, + 18276361481186811904_u128, + 18278187548691247104_u128, + 18279996459249510400_u128, + 18281788345390532608_u128, + 18283563338938171392_u128, + 18285321571011553280_u128, + 18287063172025464832_u128, + 18288788271690770432_u128, + 18290496999014889472_u128, + 18292189482302296064_u128, + 18293865849155072000_u128, + 18295526226473486336_u128, + 18297170740456636416_u128, + 18298799516603095040_u128, + 18300412679711629312_u128, + 18302010353881927680_u128, + 18303592662515392512_u128, + 18305159728315944960_u128, + 18306711673290878976_u128, + 18308248618751756288_u128, + 18309770685315321856_u128, + 18311277992904470528_u128, + 18312770660749230080_u128, + 18314248807387807744_u128, + 18315712550667636736_u128, + 18317162007746476032_u128, + 18318597295093551104_u128, + 18320018528490700800_u128, + 18321425823033583616_u128, + 18322819293132896256_u128, + 18324199052515643392_u128, + 18325565214226411520_u128, + 18326917890628708352_u128, + 18328257193406294016_u128, + 18329583233564577792_u128, + 18330896121432018944_u128, + 18332195966661570560_u128, + 18333482878232147968_u128, + 18334756964450119680_u128, + 18336018332950839296_u128, + 18337267090700193792_u128, + 18338503343996182528_u128, + 18339727198470522880_u128, + 18340938759090284544_u128, + 18342138130159548416_u128, + 18343325415321083904_u128, + 18344500717558063104_u128, + 18345664139195799552_u128, + 18346815781903495168_u128, + 18347955746696028160_u128, + 18349084133935759360_u128, + 18350201043334361088_u128, + 18351306573954666496_u128, + 18352400824212545536_u128, + 18353483891878803456_u128, + 18354555874081095680_u128, + 18355616867305863168_u128, + 18356666967400308736_u128, + 18357706269574359040_u128, + 18358734868402673664_u128, + 18359752857826674688_u128, + 18360760331156572160_u128, + 18361757381073432576_u128, + 18362744099631259648_u128, + 18363720578259083264_u128, + 18364686907763081216_u128, + 18365643178328711168_u128, + 18366589479522856960_u128, + 18367525900295999488_u128, + 18368452528984399872_u128, + 18369369453312292864_u128, + 18370276760394119168_u128, + 18371174536736739328_u128, + 18372062868241688576_u128, + 18372941840207441920_u128, + 18373811537331681280_u128, + 18374672043713595392_u128, + 18375523442856181760_u128, + 18376365817668560896_u128, + 18377199250468313088_u128, + 18378023822983819264_u128, + 18378839616356618240_u128, + 18379646711143780352_u128, + 18380445187320283136_u128, + 18381235124281409536_u128, + 18382016600845146112_u128, + 18382789695254605824_u128, + 18383554485180444672_u128, + 18384311047723311104_u128, + 18385059459416279040_u128, + 18385799796227315712_u128, + 18386532133561739264_u128, + 18387256546264696832_u128, + 18387973108623652864_u128, + 18388681894370873344_u128, + 18389382976685936640_u128, + 18390076428198234112_u128, + 18390762320989487104_u128, + 18391440726596284416_u128, + 18392111716012591104_u128, + 18392775359692310528_u128, + 18393431727551809536_u128, + 18394080888972486656_u128, + 18394722912803313664_u128, + 18395357867363414016_u128, + 18395985820444616704_u128, + 18396606839314042880_u128, + 18397220990716680192_u128, + 18397828340877963264_u128, + 18398428955506364416_u128, + 18399022899795990528_u128, + 18399610238429173760_u128, + 18400191035579074560_u128, + 18400765354912282624_u128, + 18401333259591430144_u128, + 18401894812277790720_u128, + 18402450075133904896_u128, + 18402999109826191360_u128, + 18403541977527554048_u128, + 18404078738920017920_u128, + 18404609454197342208_u128, + 18405134183067637760_u128, + 18405652984756006912_u128, + 18406165918007150592_u128, + 18406673041088010240_u128, + 18407174411790385152_u128, + 18407670087433566208_u128, + 18408160124866957312_u128, + 18408644580472707072_u128, + 18409123510168342528_u128, + 18409596969409380352_u128, + 18410065013191972864_u128, + 18410527696055517184_u128, + 18410985072085293056_u128, + 18411437194915080192_u128, + 18411884117729781760_u128, + 18412325893268043776_u128, + 18412762573824878592_u128, + 18413194211254280192_u128, + 18413620856971837440_u128, + 18414042561957349376_u128, + 18414459376757434368_u128, + 18414871351488135168_u128, + 18415278535837534208_u128, + 18415680979068338176_u128, + 18416078730020493312_u128, + 18416471837113772032_u128, + 18416860348350363648_u128, + 18417244311317469184_u128, + 18417623773189879808_u128, + 18417998780732557312_u128, + 18418369380303214592_u128, + 18418735617854879744_u128, + 18419097538938472448_u128, + 18419455188705359872_u128, + 18419808611909916672_u128, + 18420157852912078848_u128, + 18420502955679887360_u128, + 18420843963792035840_u128, + 18421180920440408064_u128, + 18421513868432603136_u128, + 18421842850194466816_u128, + 18422167907772614656_u128, + 18422489082836934656_u128, + 18422806416683114496_u128, + 18423119950235121664_u128, + 18423429724047718400_u128, + 18423735778308939776_u128, + 18424038152842584064_u128, + 18424336887110678528_u128, + 18424632020215963648_u128, + 18424923590904344576_u128, + 18425211637567350784_u128, + 18425496198244585472_u128, + 18425777310626166784_u128, + 18426055012055156736_u128, + 18426329339529998336_u128, + 18426600329706928128_u128, + 18426868018902382592_u128, + 18427132443095416832_u128, + 18427393637930084352_u128, + 18427651638717835264_u128, + 18427906480439896064_u128, + 18428158197749637120_u128, + 18428406824974938112_u128, + 18428652396120543232_u128, + 18428894944870414336_u128, + 18429134504590057472_u128, + 18429371108328865792_u128, + 18429604788822433792_u128, + 18429835578494871552_u128, + 18430063509461108736_u128, + 18430288613529190400_u128, + 18430510922202566656_u128, + 18430730466682363904_u128, + 18430947277869656064_u128, + 18431161386367723520_u128, + 18431372822484305920_u128, + 18431581616233838592_u128, + 18431787797339686912_u128, + 18431991395236366336_u128, + 18432192439071758336_u128, + 18432390957709307904_u128, + 18432586979730223104_u128, + 18432780533435658240_u128, + 18432971646848884736_u128, + 18433160347717455872_u128, + 18433346663515365376_u128, + 18433530621445193728_u128, + 18433712248440236032_u128, + 18433891571166629888_u128, + 18434068616025481216_u128, + 18434243409154953216_u128, + 18434415976432369664_u128, + 18434586343476305920_u128, + 18434754535648655360_u128, + 18434920578056693760_u128, + 18435084495555143680_u128, + 18435246312748212224_u128, + 18435406053991622656_u128, + 18435563743394648064_u128, + 18435719404822118400_u128, + 18435873061896423424_u128, + 18436024737999511552_u128, + 18436174456274864128_u128, + 18436322239629481984_u128, + 18436468110735826944_u128, + 18436612092033796096_u128, + 18436754205732644864_u128, + 18436894473812926464_u128, + 18437032918028410880_u128, + 18437169559907995648_u128, + 18437304420757598208_u128, + 18437437521662054400_u128, + 18437568883486990336_u128, + 18437698526880686080_u128, + 18437826472275945472_u128, + 18437952739891929088_u128, + 18438077349735995392_u128, + 18438200321605527552_u128, + 18438321675089745920_u128, + 18438441429571506176_u128, + 18438559604229107712_u128, + 18438676218038056960_u128, + 18438791289772857344_u128, + 18438904838008756224_u128, + 18439016881123504128_u128, + 18439127437299091456_u128, + 18439236524523479040_u128, + 18439344160592320512_u128, + 18439450363110658048_u128, + 18439555149494640640_u128, + 18439658536973187072_u128, + 18439760542589683712_u128, + 18439861183203637248_u128, + 18439960475492335616_u128, + 18440058435952486400_u128, + 18440155080901863424_u128, + 18440250426480914432_u128, + 18440344488654387200_u128, + 18440437283212926976_u128, + 18440528825774667776_u128, + 18440619131786813440_u128, + 18440708216527212544_u128, + 18440796095105914880_u128, + 18440882782466723840_u128, + 18440968293388738560_u128, + 18441052642487875584_u128, + 18441135844218396672_u128, + 18441217912874412032_u128, + 18441298862591379456_u128, + 18441378707347593216_u128, + 18441457460965664768_u128, + 18441535137113980928_u128, + 18441611749308170240_u128, + 18441687310912548864_u128, + 18441761835141548032_u128, + 18441835335061157888_u128, + 18441907823590322176_u128, + 18441979313502363648_u128, + 18442049817426370560_u128, + 18442119347848585216_u128, + 18442187917113774080_u128, + 18442255537426608128_u128, + 18442322220853004288_u128, + 18442387979321479168_u128, + 18442452824624480256_u128, + 18442516768419721216_u128, + 18442579822231488512_u128, + 18442641997451954176_u128, + 18442703305342466048_u128, + 18442763757034848256_u128, + 18442823363532658688_u128, + 18442882135712477184_u128, + 18442940084325150720_u128, + 18442997219997042688_u128, + 18443053553231278080_u128, + 18443109094408968192_u128, + 18443163853790429184_u128, + 18443217841516394496_u128, + 18443271067609221120_u128, + 18443323541974069248_u128, + 18443375274400092160_u128, + 18443426274561609728_u128, + 18443476552019267584_u128, + 18443526116221194240_u128, + 18443574976504145920_u128, + 18443623142094641152_u128, + 18443670622110089216_u128, + 18443717425559904256_u128, + 18443763561346621440_u128, + 18443809038266986496_u128, + 18443853865013055488_u128, + 18443898050173272064_u128, + 18443941602233536512_u128, + 18443984529578280960_u128, + 18444026840491511808_u128, + 18444068543157864448_u128, + 18444109645663639552_u128, + 18444150155997829120_u128, + 18444190082053142528_u128, + 18444229431627010048_u128, + 18444268212422592512_u128, + 18444306432049780736_u128, + 18444344098026166272_u128, + 18444381217778032640_u128, + 18444417798641326080_u128, + 18444453847862603776_u128, + 18444489372599998464_u128, + 18444524379924162560_u128, + 18444558876819197952_u128, + 18444592870183587840_u128, + 18444626366831124480_u128, + 18444659373491804160_u128, + 18444691896812748800_u128, + 18444723943359094784_u128, + 18444755519614879744_u128, + 18444786631983927296_u128, + 18444817286790717440_u128, + 18444847490281248768_u128, + 18444877248623902720_u128, + 18444906567910285312_u128, + 18444935454156077056_u128, + 18444963913301860352_u128, + 18444991951213946880_u128, + 18445019573685200896_u128, + 18445046786435848192_u128, + 18445073595114278912_u128, + 18445100005297852416_u128, + 18445126022493673472_u128, + 18445151652139386880_u128, + 18445176899603947520_u128, + 18445201770188384256_u128, + 18445226269126572032_u128, + 18445250401585973248_u128, + 18445274172668391424_u128, + 18445297587410712576_u128, + 18445320650785628160_u128, + 18445343367702374400_u128, + 18445365743007438848_u128, + 18445387781485279232_u128, + 18445409487859032064_u128, + 18445430866791198720_u128, + 18445451922884352000_u128, + 18445472660681814016_u128, + 18445493084668334080_u128, + 18445513199270760448_u128, + 18445533008858716160_u128, + 18445552517745240064_u128, + 18445571730187460608_u128, + 18445590650387222528_u128, + 18445609282491744256_u128, + 18445627630594236416_u128, + 18445645698734544896_u128, + 18445663490899757056_u128, + 18445681011024830464_u128, + 18445698262993192960_u128, + 18445715250637348864_u128, + 18445731977739481088_u128, + 18445748448032032768_u128, + 18445764665198301184_u128, + 18445780632873013248_u128, + 18445796354642898944_u128, + 18445811834047258624_u128, + 18445827074578534400_u128, + 18445842079682850816_u128, + 18445856852760578048_u128, + 18445871397166872576_u128, + 18445885716212215808_u128, + 18445899813162952704_u128, + 18445913691241816064_u128, + 18445927353628450816_u128, + 18445940803459934208_u128, + 18445954043831285760_u128, + 18445967077795975168_u128, + 18445979908366424064_u128, + 18445992538514503680_u128, + 18446004971172024320_u128, + 18446017209231228928_u128, + 18446029255545262080_u128, + 18446041112928657408_u128, + 18446052784157804544_u128, + 18446064271971409920_u128, + 18446075579070971904_u128, + 18446086708121225216_u128, + 18446097661750593536_u128, + 18446108442551646208_u128, + 18446119053081526272_u128, + 18446129495862401024_u128, + 18446139773381883904_u128, + 18446149888093472768_u128, + 18446159842416959488_u128, + 18446169638738866176_u128, + 18446179279412842496_u128, + 18446188766760089600_u128, + 18446198103069757440_u128, + 18446207290599346176_u128, + 18446216331575103488_u128, + 18446225228192423936_u128, + 18446233982616219648_u128, + 18446242596981325824_u128, + 18446251073392863232_u128, + 18446259413926621184_u128, + 18446267620629424128_u128, + 18446275695519508480_u128, + 18446283640586872832_u128, + 18446291457793644544_u128, + 18446299149074432000_u128, + 18446306716336678912_u128, + 18446314161461006336_u128, + 18446321486301558784_u128, + 18446328692686344192_u128, + 18446335782417567744_u128, + 18446342757271963648_u128, + 18446349619001124864_u128, + 18446356369331822592_u128, + 18446363009966336000_u128, + 18446369542582753280_u128, + 18446375968835307520_u128, + 18446382290354661376_u128, + 18446388508748234752_u128, + 18446394625600493568_u128, + 18446400642473254912_u128, + 18446406560905979904_u128, + 18446412382416068608_u128, + 18446418108499144704_u128, + 18446423740629350400_u128, + 18446429280259616768_u128, + 18446434728821950464_u128, + 18446440087727704064_u128, + 18446445358367854592_u128, + 18446450542113269760_u128, + 18446455640314972160_u128, + 18446460654304407552_u128, + 18446465585393696768_u128, + 18446470434875899904_u128, + 18446475204025266176_u128, + 18446479894097489920_u128, + 18446484506329946112_u128, + 18446489041941952512_u128, + 18446493502134996992_u128, + 18446497888092983296_u128, + 18446502200982466560_u128, + 18446506441952886784_u128, + 18446510612136798208_u128, + 18446514712650096640_u128, + 18446518744592246784_u128, + 18446522709046505472_u128, + 18446526607080134656_u128, + 18446530439744624640_u128, + 18446534208075909120_u128, + 18446537913094572032_u128, + 18446541555806058496_u128, + 18446545137200885760_u128, + 18446548658254841856_u128, + 18446552119929186304_u128, + 18446555523170852864_u128, + 18446558868912650240_u128, + 18446562158073444352_u128, + 18446565391558363136_u128, + 18446568570258972672_u128, + 18446571695053479936_u128, + 18446574766806900736_u128, + 18446577786371258368_u128, + 18446580754585753600_u128, + 18446583672276940800_u128, + 18446586540258914304_u128, + 18446589359333472256_u128, + 18446592130290292736_u128, + 18446594853907101696_u128, + 18446597530949840896_u128, + 18446600162172827648_u128, + 18446602748318926848_u128, + 18446605290119706624_u128, + 18446607788295596032_u128, + 18446610243556044800_u128, + 18446612656599674880_u128, + 18446615028114436096_u128, + 18446617358777757696_u128, + 18446619649256691712_u128, + 18446621900208066560_u128, + 18446624112278630400_u128, + 18446626286105190400_u128, + 18446628422314762240_u128, + 18446630521524699136_u128, + 18446632584342839296_u128, + 18446634611367634944_u128, + 18446636603188291584_u128, + 18446638560384897024_u128, + 18446640483528558592_u128, + 18446642373181519872_u128, + 18446644229897297920_u128, + 18446646054220812288_u128, + 18446647846688493568_u128, + 18446649607828424704_u128, + 18446651338160447488_u128, + 18446653038196291584_u128, + 18446654708439681024_u128, + 18446656349386463232_u128, + 18446657961524715520_u128, + 18446659545334861824_u128, + 18446661101289781248_u128, + 18446662629854918656_u128, + 18446664131488395264_u128, + 18446665606641115136_u128, + 18446667055756871680_u128, + 18446668479272450048_u128, + 18446669877617731584_u128, + 18446671251215792128_u128, + 18446672600483008512_u128, + 18446673925829152768_u128, + 18446675227657492480_u128, + 18446676506364878848_u128, + 18446677762341857280_u128, + 18446678995972745216_u128, + 18446680207635732480_u128, + 18446681397702973440_u128, + 18446682566540670976_u128, + 18446683714509170688_u128, + 18446684841963044864_u128, + 18446685949251182592_u128, + 18446687036716867584_u128, + 18446688104697872384_u128, + 18446689153526532096_u128, + 18446690183529828352_u128, + 18446691195029473280_u128, + 18446692188341987328_u128, + 18446693163778770944_u128, + 18446694121646192640_u128, + 18446695062245660672_u128, + 18446695985873690624_u128, + 18446696892821995520_u128, + 18446697783377539072_u128, + 18446698657822627840_u128, + 18446699516434964480_u128, + 18446700359487729664_u128, + 18446701187249647616_u128, + 18446701999985049600_u128, + 18446702797953947648_u128, + 18446703581412098048_u128, + 18446704350611064832_u128, + 18446705105798287360_u128, + 18446705847217141760_u128, + 18446706575107000320_u128, + 18446707289703301120_u128, + 18446707991237601280_u128, + 18446708679937640448_u128, + 18446709356027396096_u128, + 18446710019727149056_u128, + 18446710671253532672_u128, + 18446711310819594240_u128, + 18446711938634848256_u128, + 18446712554905333760_u128, + 18446713159833665536_u128, + 18446713753619089408_u128, + 18446714336457535488_u128, + 18446714908541669376_u128, + 18446715470060937216_u128, + 18446716021201629184_u128, + 18446716562146916352_u128, + 18446717093076905984_u128, + 18446717614168686592_u128, + 18446718125596381184_u128, + 18446718627531186176_u128, + 18446719120141422592_u128, + 18446719603592579072_u128, + 18446720078047361024_u128, + 18446720543665725440_u128, + 18446721000604936192_u128, + 18446721449019598848_u128, + 18446721889061703680_u128, + 18446722320880670720_u128, + 18446722744623384576_u128, + 18446723160434243584_u128, + 18446723568455192576_u128, + 18446723968825761792_u128, + 18446724361683111936_u128, + 18446724747162062848_u128, + 18446725125395142656_u128, + 18446725496512612352_u128, + 18446725860642510848_u128, + 18446726217910687744_u128, + 18446726568440836096_u128, + 18446726912354531328_u128, + 18446727249771268096_u128, + 18446727580808480768_u128, + 18446727905581592576_u128, + 18446728224204038144_u128, + 18446728536787300352_u128, + 18446728843440939008_u128, + 18446729144272623616_u128, + 18446729439388166144_u128, + 18446729728891545600_u128, + 18446730012884946944_u128, + 18446730291468777472_u128, + 18446730564741711872_u128, + 18446730832800702464_u128, + 18446731095741028352_u128, + 18446731353656299520_u128, + 18446731606638505984_u128, + 18446731854778028032_u128, + 18446732098163673088_u128, + 18446732336882698240_u128, + 18446732571020832768_u128, + 18446732800662306816_u128, + 18446733025889875968_u128, + 18446733246784843776_u128, + 18446733463427090432_u128, + 18446733675895091200_u128, + 18446733884265936896_u128, + 18446734088615370752_u128, + 18446734289017794560_u128, + 18446734485546301440_u128, + 18446734678272692224_u128, + 18446734867267500032_u128, + 18446735052600010752_u128, + 18446735234338283520_u128, + 18446735412549173248_u128, + 18446735587298347008_u128, + 18446735758650304512_u128, + 18446735926668400640_u128, + 18446736091414867968_u128, + 18446736252950822912_u128, + 18446736411336298496_u128, + 18446736566630254592_u128, + 18446736718890596352_u128, + 18446736868174196736_u128, + 18446737014536910848_u128, + 18446737158033592320_u128, + 18446737298718111744_u128, + 18446737436643373056_u128, + 18446737571861334016_u128, + 18446737704423008256_u128, + 18446737834378504192_u128, + 18446737961777016832_u128, + 18446738086666860544_u128, + 18446738209095473152_u128, + 18446738329109442560_u128, + 18446738446754508800_u128, + 18446738562075584512_u128, + 18446738675116771328_u128, + 18446738785921366016_u128, + 18446738894531887104_u128, + 18446739000990074880_u128, + 18446739105336913920_u128, + 18446739207612639232_u128, + 18446739307856758784_u128, + 18446739406108051456_u128, + 18446739502404595712_u128, + 18446739596783773696_u128, + 18446739689282279424_u128, + 18446739779936139264_u128, + 18446739868780720128_u128, + 18446739955850735616_u128, + 18446740041180266496_u128, + 18446740124802768896_u128, + 18446740206751076352_u128, + 18446740287057424384_u128, + 18446740365753454592_u128, + 18446740442870222848_u128, + 18446740518438211584_u128, + 18446740592487342080_u128, + 18446740665046980608_u128, + 18446740736145948672_u128, + 18446740805812539392_u128, + 18446740874074517504_u128, + 18446740940959129600_u128, + 18446741006493120512_u128, + 18446741070702735360_u128, + 18446741133613733888_u128, + 18446741195251394560_u128, + 18446741255640520704_u128, + 18446741314805456896_u128, + 18446741372770095104_u128, + 18446741429557874688_u128, + 18446741485191798784_u128, + 18446741539694442496_u128, + 18446741593087952896_u128, + 18446741645394067456_u128, + 18446741696634107904_u128, + 18446741746829002752_u128, + 18446741795999279104_u128, + 18446741844165087232_u128, + 18446741891346186240_u128, + 18446741937561972736_u128, + 18446741982831468544_u128, + 18446742027173343232_u128, + 18446742070605907968_u128, + 18446742113147129856_u128, + 18446742154814636032_u128, + 18446742195625713664_u128, + 18446742235597330432_u128, + 18446742274746126336_u128, + 18446742313088423936_u128, + 18446742350640238592_u128, + 18446742387417276416_u128, + 18446742423434950656_u128, + 18446742458708373504_u128, + 18446742493252370432_u128, + 18446742527081486336_u128, + 18446742560209983488_u128, + 18446742592651855872_u128, + 18446742624420820992_u128, + 18446742655530344448_u128, + 18446742685993621504_u128, + 18446742715823603712_u128, + 18446742745032988672_u128, + 18446742773634228224_u128, + 18446742801639536640_u128, + 18446742829060892672_u128, + 18446742855910041600_u128, + 18446742882198505472_u128, + 18446742907937579008_u128, + 18446742933138339840_u128, + 18446742957811654656_u128, + 18446742981968173056_u128, + 18446743005618343936_u128, + 18446743028772409344_u128, + 18446743051440410624_u128, + 18446743073632200704_u128, + 18446743095357435904_u128, + 18446743116625580032_u128, + 18446743137445922816_u128, + 18446743157827563520_u128, + 18446743177779427328_u128, + 18446743197310263296_u128, + 18446743216428650496_u128, + 18446743235143002112_u128, + 18446743253461559296_u128, + 18446743271392409600_u128, + 18446743288943474688_u128, + 18446743306122526720_u128, + 18446743322937182208_u128, + 18446743339394904064_u128, + 18446743355503013888_u128, + 18446743371268683776_u128, + 18446743386698950656_u128, + 18446743401800704000_u128, + 18446743416580704256_u128, + 18446743431045574656_u128, + 18446743445201807360_u128, + 18446743459055765504_u128, + 18446743472613689344_u128, + 18446743485881688064_u128, + 18446743498865756160_u128, + 18446743511571767296_u128, + 18446743524005474304_u128, + 18446743536172521472_u128, + 18446743548078434304_u128, + 18446743559728633856_u128, + 18446743571128428544_u128, + 18446743582283020288_u128, + 18446743593197512704_u128, + 18446743603876898816_u128, + 18446743614326077440_u128, + 18446743624549847040_u128, + 18446743634552911872_u128, + 18446743644339877888_u128, + 18446743653915260928_u128, + 18446743663283484672_u128, + 18446743672448884736_u128, + 18446743681415708672_u128, + 18446743690188120064_u128, + 18446743698770194432_u128, + 18446743707165927424_u128, + 18446743715379236864_u128, + 18446743723413952512_u128, + 18446743731273836544_u128, + 18446743738962567168_u128, + 18446743746483752960_u128, + 18446743753840926720_u128, + 18446743761037551616_u128, + 18446743768077012992_u128, + 18446743774962638848_u128, + 18446743781697681408_u128, + 18446743788285327360_u128, + 18446743794728697856_u128, + 18446743801030856704_u128, + 18446743807194796032_u128, + 18446743813223452672_u128, + 18446743819119699968_u128, + 18446743824886355968_u128, + 18446743830526175232_u128, + 18446743836041863168_u128, + 18446743841436061696_u128, + 18446743846711365632_u128, + 18446743851870312448_u128, + 18446743856915386368_u128, + 18446743861849024512_u128, + 18446743866673606656_u128, + 18446743871391473664_u128, + 18446743876004907008_u128, + 18446743880516149248_u128, + 18446743884927391744_u128, + 18446743889240784896_u128, + 18446743893458427904_u128, + 18446743897582383104_u128, + 18446743901614665728_u128, + 18446743905557252096_u128, + 18446743909412073472_u128, + 18446743913181024256_u128, + 18446743916865957888_u128, + 18446743920468690944_u128, + 18446743923991001088_u128, + 18446743927434627072_u128, + 18446743930801272832_u128, + 18446743934092607488_u128, + 18446743937310261248_u128, + 18446743940455837696_u128, + 18446743943530899456_u128, + 18446743946536980480_u128, + 18446743949475579904_u128, + 18446743952348168192_u128, + 18446743955156180992_u128, + 18446743957901027328_u128, + 18446743960584085504_u128, + 18446743963206703104_u128, + 18446743965770203136_u128, + 18446743968275875840_u128, + 18446743970724986880_u128, + 18446743973118775296_u128, + 18446743975458453504_u128, + 18446743977745209344_u128, + 18446743979980199936_u128, + 18446743982164566016_u128, + 18446743984299417600_u128, + 18446743986385846272_u128, + 18446743988424914944_u128, + 18446743990417670144_u128, + 18446743992365129728_u128, + 18446743994268293120_u128, + 18446743996128139264_u128, + 18446743997945624576_u128, + 18446743999721684992_u128, + 18446744001457238016_u128, + 18446744003153178624_u128, + 18446744004810385408_u128, + 18446744006429718528_u128, + 18446744008012015616_u128, + 18446744009558099968_u128, + 18446744011068778496_u128, + 18446744012544833536_u128, + 18446744013987041280_u128, + 18446744015396149248_u128, + 18446744016772900864_u128, + 18446744018118012928_u128, + 18446744019432196096_u128, + 18446744020716136448_u128, + 18446744021970511872_u128, + 18446744023195983872_u128, + 18446744024393199616_u128, + 18446744025562791936_u128, + 18446744026705377280_u128, + 18446744027821563904_u128, + 18446744028911943680_u128, + 18446744029977098240_u128, + 18446744031017590784_u128, + 18446744032033978368_u128, + 18446744033026801664_u128, + 18446744033996595200_u128, + 18446744034943873024_u128, + 18446744035869147136_u128, + 18446744036772913152_u128, + 18446744037655656448_u128, + 18446744038517852160_u128, + 18446744039359965184_u128, + 18446744040182450176_u128, + 18446744040985751552_u128, + 18446744041770303488_u128, + 18446744042536534016_u128, + 18446744043284856832_u128, + 18446744044015677440_u128, + 18446744044729397248_u128, + 18446744045426403328_u128, + 18446744046107076608_u128, + 18446744046771789824_u128, + 18446744047420905472_u128, + 18446744048054779904_u128, + 18446744048673759232_u128, + 18446744049278187520_u128, + 18446744049868396544_u128, + 18446744050444707840_u128, + 18446744051007444992_u128, + 18446744051556915200_u128, + 18446744052093423616_u128, + 18446744052617267200_u128, + 18446744053128738816_u128, + 18446744053628121088_u128, + 18446744054115690496_u128, + 18446744054591721472_u128, + 18446744055056478208_u128, + 18446744055510220800_u128, + 18446744055953205248_u128, + 18446744056385675264_u128, + 18446744056807876608_u128, + 18446744057220046848_u128, + 18446744057622415360_u128, + 18446744058015211520_u128, + 18446744058398656512_u128, + 18446744058772967424_u128, + 18446744059138353152_u128, + 18446744059495022592_u128, + 18446744059843178496_u128, + 18446744060183019520_u128, + 18446744060514736128_u128, + 18446744060838520832_u128, + 18446744061154553856_u128, + 18446744061463021568_u128, + 18446744061764093952_u128, + 18446744062057949184_u128, + 18446744062344751104_u128, + 18446744062624667648_u128, + 18446744062897858560_u128, + 18446744063164481536_u128, + 18446744063424690176_u128, + 18446744063678636032_u128, + 18446744063926462464_u128, + 18446744064168314880_u128, + 18446744064404336640_u128, + 18446744064634658816_u128, + 18446744064859418624_u128, + 18446744065078749184_u128, + 18446744065292773376_u128, + 18446744065501618176_u128, + 18446744065705408512_u128, + 18446744065904259072_u128, + 18446744066098288640_u128, + 18446744066287611904_u128, + 18446744066472337408_u128, + 18446744066652575744_u128, + 18446744066828433408_u128, + 18446744067000014848_u128, + 18446744067167418368_u128, + 18446744067330746368_u128, + 18446744067490093056_u128, + 18446744067645554688_u128, + 18446744067797223424_u128, + 18446744067945187328_u128, + 18446744068089536512_u128, + 18446744068230356992_u128, + 18446744068367732736_u128, + 18446744068501743616_u128, + 18446744068632473600_u128, + 18446744068760000512_u128, + 18446744068884398080_u128, + 18446744069005742080_u128, + 18446744069124106240_u128, + 18446744069239564288_u128, + 18446744069352181760_u128, + 18446744069462028288_u128, + 18446744069569169408_u128, + 18446744069673672704_u128, + 18446744069775599616_u128, + 18446744069875011584_u128, + 18446744069971970048_u128, + 18446744070066534400_u128, + 18446744070158761984_u128, + 18446744070248708096_u128, + 18446744070336428032_u128, + 18446744070421977088_u128, + 18446744070505406464_u128, + 18446744070586767360_u128, + 18446744070666108928_u128, + 18446744070743482368_u128, + 18446744070818932736_u128, + 18446744070892509184_u128, + 18446744070964254720_u128, + 18446744071034216448_u128, + 18446744071102435328_u128, + 18446744071168952320_u128, + 18446744071233814528_u128, + 18446744071297056768_u128, + 18446744071358720000_u128, + 18446744071418843136_u128, + 18446744071477463040_u128, + 18446744071534618624_u128, + 18446744071590342656_u128, + 18446744071644669952_u128, + 18446744071697637376_u128, + 18446744071749277696_u128, + 18446744071799621632_u128, + 18446744071848701952_u128, + 18446744071896549376_u128, + 18446744071943194624_u128, + 18446744071988664320_u128, + 18446744072032993280_u128, + 18446744072076204032_u128, + 18446744072118325248_u128, + 18446744072159385600_u128, + 18446744072199409664_u128, + 18446744072238424064_u128, + 18446744072276451328_u128, + 18446744072313520128_u128, + 18446744072349648896_u128, + 18446744072384864256_u128, + 18446744072419188736_u128, + 18446744072452642816_u128, + 18446744072485249024_u128, + 18446744072517027840_u128, + 18446744072547999744_u128, + 18446744072578185216_u128, + 18446744072607602688_u128, + 18446744072636272640_u128, + 18446744072664213504_u128, + 18446744072691443712_u128, + 18446744072717977600_u128, + 18446744072743837696_u128, + 18446744072769036288_u128, + 18446744072793591808_u128, + 18446744072817520640_u128, + 18446744072840839168_u128, + 18446744072863559680_u128, + 18446744072885698560_u128, + 18446744072907272192_u128, + 18446744072928292864_u128, + 18446744072948774912_u128, + 18446744072968730624_u128, + 18446744072988174336_u128, + 18446744073007118336_u128, + 18446744073025576960_u128, + 18446744073043560448_u128, + 18446744073061081088_u128, + 18446744073078149120_u128, + 18446744073094778880_u128, + 18446744073110980608_u128, + 18446744073126764544_u128, + 18446744073142140928_u128, + 18446744073157120000_u128, + 18446744073171712000_u128, + 18446744073185927168_u128, + 18446744073199773696_u128, + 18446744073213261824_u128, + 18446744073226401792_u128, + 18446744073239199744_u128, + 18446744073251667968_u128, + 18446744073263810560_u128, + 18446744073275639808_u128, + 18446744073287159808_u128, + 18446744073298382848_u128, + 18446744073309313024_u128, + 18446744073319956480_u128, + 18446744073330325504_u128, + 18446744073340424192_u128, + 18446744073350258688_u128, + 18446744073359837184_u128, + 18446744073369163776_u128, + 18446744073378248704_u128, + 18446744073387096064_u128, + 18446744073395712000_u128, + 18446744073404102656_u128, + 18446744073412274176_u128, + 18446744073420230656_u128, + 18446744073427978240_u128, + 18446744073435523072_u128, + 18446744073442869248_u128, + 18446744073450024960_u128, + 18446744073456990208_u128, + 18446744073463773184_u128, + 18446744073470377984_u128, + 18446744073476808704_u128, + 18446744073483069440_u128, + 18446744073489166336_u128, + 18446744073495101440_u128, + 18446744073500880896_u128, + 18446744073506506752_u128, + 18446744073511985152_u128, + 18446744073517318144_u128, + 18446744073522509824_u128, + 18446744073527566336_u128, + 18446744073532485632_u128, + 18446744073537275904_u128, + 18446744073541941248_u128, + 18446744073546479616_u128, + 18446744073550899200_u128, + 18446744073555202048_u128, + 18446744073559390208_u128, + 18446744073563465728_u128, + 18446744073567432704_u128, + 18446744073571295232_u128, + 18446744073575055360_u128, + 18446744073578715136_u128, + 18446744073582276608_u128, + 18446744073585743872_u128, + 18446744073589116928_u128, + 18446744073592401920_u128, + 18446744073595598848_u128, + 18446744073598709760_u128, + 18446744073601736704_u128, + 18446744073604683776_u128, + 18446744073607550976_u128, + 18446744073610342400_u128, + 18446744073613058048_u128, + 18446744073615699968_u128, + 18446744073618272256_u128, + 18446744073620774912_u128, + 18446744073623212032_u128, + 18446744073625581568_u128, + 18446744073627887616_u128, + 18446744073630132224_u128, + 18446744073632315392_u128, + 18446744073634441216_u128, + 18446744073636509696_u128, + 18446744073638520832_u128, + 18446744073640478720_u128, + 18446744073642383360_u128, + 18446744073644236800_u128, + 18446744073646039040_u128, + 18446744073647794176_u128, + 18446744073649500160_u128, + 18446744073651161088_u128, + 18446744073652774912_u128, + 18446744073654347776_u128, + 18446744073655875584_u128, + 18446744073657364480_u128, + 18446744073658810368_u128, + 18446744073660219392_u128, + 18446744073661587456_u128, + 18446744073662920704_u128, + 18446744073664215040_u128, + 18446744073665476608_u128, + 18446744073666701312_u128, + 18446744073667895296_u128, + 18446744073669054464_u128, + 18446744073670182912_u128, + 18446744073671280640_u128, + 18446744073672347648_u128, + 18446744073673385984_u128, + 18446744073674397696_u128, + 18446744073675378688_u128, + 18446744073676335104_u128, + 18446744073677262848_u128, + 18446744073678166016_u128, + 18446744073679046656_u128, + 18446744073679900672_u128, + 18446744073680732160_u128, + 18446744073681539072_u128, + 18446744073682325504_u128, + 18446744073683091456_u128, + 18446744073683834880_u128, + 18446744073684555776_u128, + 18446744073685260288_u128, + 18446744073685942272_u128, + 18446744073686607872_u128, + 18446744073687255040_u128, + 18446744073687881728_u128, + 18446744073688494080_u128, + 18446744073689088000_u128, + 18446744073689665536_u128, + 18446744073690226688_u128, + 18446744073690773504_u128, + 18446744073691303936_u128, + 18446744073691820032_u128, + 18446744073692321792_u128, + 18446744073692811264_u128, + 18446744073693284352_u128, + 18446744073693745152_u128, + 18446744073694193664_u128, + 18446744073694629888_u128, + 18446744073695053824_u128, + 18446744073695465472_u128, + 18446744073695866880_u128, + 18446744073696256000_u128, + 18446744073696634880_u128, + 18446744073697001472_u128, + 18446744073697359872_u128, + 18446744073697708032_u128, + 18446744073698043904_u128, + 18446744073698373632_u128, + 18446744073698693120_u128, + 18446744073699002368_u128, + 18446744073699303424_u128, + 18446744073699596288_u128, + 18446744073699880960_u128, + 18446744073700159488_u128, + 18446744073700427776_u128, + 18446744073700689920_u128, + 18446744073700943872_u128, + 18446744073701189632_u128, + 18446744073701431296_u128, + 18446744073701662720_u128, + 18446744073701890048_u128, + 18446744073702111232_u128, + 18446744073702324224_u128, + 18446744073702533120_u128, + 18446744073702733824_u128, + 18446744073702930432_u128, + 18446744073703120896_u128, + 18446744073703307264_u128, + 18446744073703487488_u128, + 18446744073703661568_u128, + 18446744073703833600_u128, + 18446744073703997440_u128, + 18446744073704159232_u128, + 18446744073704314880_u128, + 18446744073704466432_u128, + 18446744073704613888_u128, + 18446744073704757248_u128, + 18446744073704896512_u128, + 18446744073705031680_u128, + 18446744073705162752_u128, + 18446744073705289728_u128, + 18446744073705412608_u128, + 18446744073705533440_u128, + 18446744073705650176_u128, + 18446744073705764864_u128, + 18446744073705873408_u128, + 18446744073705981952_u128, + 18446744073706086400_u128, + 18446744073706186752_u128, + 18446744073706285056_u128, + 18446744073706379264_u128, + 18446744073706473472_u128, + 18446744073706563584_u128, + 18446744073706649600_u128, + 18446744073706735616_u128, + 18446744073706817536_u128, + 18446744073706897408_u128, + 18446744073706975232_u128, + 18446744073707051008_u128, + 18446744073707124736_u128, + 18446744073707194368_u128, + 18446744073707264000_u128, + 18446744073707331584_u128, + 18446744073707397120_u128, + 18446744073707460608_u128, + 18446744073707522048_u128, + 18446744073707581440_u128, + 18446744073707638784_u128, + 18446744073707696128_u128, + 18446744073707751424_u128, + 18446744073707804672_u128, + 18446744073707855872_u128, + 18446744073707905024_u128, + 18446744073707954176_u128, + 18446744073708001280_u128, + 18446744073708046336_u128, + 18446744073708091392_u128, + 18446744073708134400_u128, + 18446744073708177408_u128, + 18446744073708218368_u128, + 18446744073708257280_u128, + 18446744073708296192_u128, + 18446744073708333056_u128, + 18446744073708369920_u128, + 18446744073708404736_u128, + 18446744073708437504_u128, + 18446744073708472320_u128, + 18446744073708503040_u128, + 18446744073708533760_u128, + 18446744073708564480_u128, + 18446744073708595200_u128, + 18446744073708623872_u128, + 18446744073708650496_u128, + 18446744073708677120_u128, + 18446744073708703744_u128, + 18446744073708728320_u128, + 18446744073708752896_u128, + 18446744073708777472_u128, + 18446744073708800000_u128, + 18446744073708822528_u128, + 18446744073708845056_u128, + 18446744073708865536_u128, + 18446744073708886016_u128, + 18446744073708906496_u128, + 18446744073708926976_u128, + 18446744073708945408_u128, + 18446744073708963840_u128, + 18446744073708980224_u128, + 18446744073708998656_u128, + 18446744073709015040_u128, + 18446744073709031424_u128, + 18446744073709045760_u128, + 18446744073709062144_u128, + 18446744073709076480_u128, + 18446744073709090816_u128, + 18446744073709105152_u128, + 18446744073709117440_u128, + 18446744073709131776_u128, + 18446744073709144064_u128, + 18446744073709156352_u128, + 18446744073709168640_u128, + 18446744073709178880_u128, + 18446744073709191168_u128, + 18446744073709201408_u128, + 18446744073709211648_u128, + 18446744073709223936_u128, + 18446744073709232128_u128, + 18446744073709242368_u128, + 18446744073709252608_u128, + 18446744073709260800_u128, + 18446744073709268992_u128, + 18446744073709279232_u128, + 18446744073709287424_u128, + 18446744073709295616_u128, + 18446744073709301760_u128, + 18446744073709309952_u128, + 18446744073709318144_u128, + 18446744073709324288_u128, + 18446744073709332480_u128, + 18446744073709338624_u128, + 18446744073709344768_u128, + 18446744073709350912_u128, + 18446744073709357056_u128, + 18446744073709363200_u128, + 18446744073709369344_u128, + 18446744073709375488_u128, + 18446744073709379584_u128, + 18446744073709385728_u128, + 18446744073709389824_u128, + 18446744073709395968_u128, + 18446744073709400064_u128, + 18446744073709404160_u128, + 18446744073709410304_u128, + 18446744073709414400_u128, + 18446744073709418496_u128, + 18446744073709422592_u128, + 18446744073709426688_u128, + 18446744073709430784_u128, + 18446744073709432832_u128, + 18446744073709436928_u128, + 18446744073709441024_u128, + 18446744073709445120_u128, + 18446744073709447168_u128, + 18446744073709451264_u128, + 18446744073709453312_u128, + 18446744073709457408_u128, + 18446744073709459456_u128, + 18446744073709463552_u128, + 18446744073709465600_u128, + 18446744073709467648_u128, + 18446744073709471744_u128, + 18446744073709473792_u128, + 18446744073709475840_u128, + 18446744073709477888_u128, + 18446744073709479936_u128, + 18446744073709481984_u128, + 18446744073709484032_u128, + 18446744073709486080_u128, + 18446744073709488128_u128, + 18446744073709490176_u128, + 18446744073709492224_u128, + 18446744073709494272_u128, + 18446744073709496320_u128, + 18446744073709498368_u128, + 18446744073709500416_u128, + 18446744073709500416_u128, + 18446744073709502464_u128, + 18446744073709504512_u128, + 18446744073709506560_u128, + 18446744073709506560_u128, + 18446744073709508608_u128, + 18446744073709510656_u128, + 18446744073709510656_u128, + 18446744073709512704_u128, + 18446744073709514752_u128, + 18446744073709514752_u128, + 18446744073709516800_u128, + 18446744073709516800_u128, + 18446744073709518848_u128, + 18446744073709518848_u128, + 18446744073709520896_u128, + 18446744073709520896_u128, + 18446744073709522944_u128, + 18446744073709522944_u128, + 18446744073709524992_u128, + 18446744073709524992_u128, + 18446744073709524992_u128, + 18446744073709527040_u128, + 18446744073709527040_u128, + 18446744073709529088_u128, + 18446744073709529088_u128, + 18446744073709529088_u128, + 18446744073709531136_u128, + 18446744073709531136_u128, + 18446744073709531136_u128, + 18446744073709533184_u128, + 18446744073709533184_u128, + 18446744073709533184_u128, + 18446744073709533184_u128, + 18446744073709535232_u128, + 18446744073709535232_u128, + 18446744073709535232_u128, + 18446744073709535232_u128, + 18446744073709537280_u128, + 18446744073709537280_u128, + 18446744073709537280_u128, + 18446744073709537280_u128, + 18446744073709539328_u128, + 18446744073709539328_u128, + 18446744073709539328_u128, + 18446744073709539328_u128, + 18446744073709539328_u128 +].span() diff --git a/src/amm_core/pricing/option_pricing.cairo b/src/amm_core/pricing/option_pricing.cairo index 17e893a..c651824 100644 --- a/src/amm_core/pricing/option_pricing.cairo +++ b/src/amm_core/pricing/option_pricing.cairo @@ -14,7 +14,7 @@ mod OptionPricing { use array::ArrayTrait; use array::SpanTrait; - use carmine_protocol::amm_core::pricing::lookup_table_cdf::get_std_normal_cdf_table; + use carmine_protocol::amm_core::pricing::lookup_table_cdf::CDF_LOOKUP_TABLE; const CONST_A: u128 = 4168964160658358665; // 0.226 * 2**64 const CONST_B: u128 = 11805916207174113034; // 0.64 * 2**64 @@ -84,7 +84,7 @@ mod OptionPricing { } fn std_normal_cdf(x: Fixed) -> Fixed { - let std_normal_cdf_table = get_std_normal_cdf_table(); + let std_normal_cdf_table = CDF_LOOKUP_TABLE; if x.sign { let dist_symmetric_value = std_normal_cdf(x.abs()); return (FixedTrait::ONE() - dist_symmetric_value); @@ -333,7 +333,7 @@ mod tests { #[test] fn test_std_normal_cdf() { - let rel_tol = FixedTrait::from_felt(1844674407370955264); // 0.01 TODO change back to 0.01 + let rel_tol = FixedTrait::from_felt(3689348814741910528); // 0.01 TODO change back to 0.01 let mut test_cases = get_test_std_normal_cdf_cases(); loop {