use std::{str::FromStr, vec};
use num_bigint::BigInt;
lazy_static! {
pub static ref CONSTANTS_C_59: Vec<BigInt> = {
let numbers = [
"14397397413755236225575615486459253198602422701513067526754101844196324375522",
"10405129301473404666785234951972711717481302463898292859783056520670200613128",
"5179144822360023508491245509308555580251733042407187134628755730783052214509",
"9132640374240188374542843306219594180154739721841249568925550236430986592615",
"20360807315276763881209958738450444293273549928693737723235350358403012458514",
"17933600965499023212689924809448543050840131883187652471064418452962948061619",
"3636213416533737411392076250708419981662897009810345015164671602334517041153",
"2008540005368330234524962342006691994500273283000229509835662097352946198608",
"16018407964853379535338740313053768402596521780991140819786560130595652651567",
"20653139667070586705378398435856186172195806027708437373983929336015162186471",
"17887713874711369695406927657694993484804203950786446055999405564652412116765",
"4852706232225925756777361208698488277369799648067343227630786518486608711772",
"8969172011633935669771678412400911310465619639756845342775631896478908389850",
"20570199545627577691240476121888846460936245025392381957866134167601058684375",
"16442329894745639881165035015179028112772410105963688121820543219662832524136",
"20060625627350485876280451423010593928172611031611836167979515653463693899374",
"16637282689940520290130302519163090147511023430395200895953984829546679599107",
"15599196921909732993082127725908821049411366914683565306060493533569088698214",
"16894591341213863947423904025624185991098788054337051624251730868231322135455",
"1197934381747032348421303489683932612752526046745577259575778515005162320212",
"6172482022646932735745595886795230725225293469762393889050804649558459236626",
"21004037394166516054140386756510609698837211370585899203851827276330669555417",
"15262034989144652068456967541137853724140836132717012646544737680069032573006",
"15017690682054366744270630371095785995296470601172793770224691982518041139766",
"15159744167842240513848638419303545693472533086570469712794583342699782519832",
"11178069035565459212220861899558526502477231302924961773582350246646450941231",
"21154888769130549957415912997229564077486639529994598560737238811887296922114",
"20162517328110570500010831422938033120419484532231241180224283481905744633719",
"2777362604871784250419758188173029886707024739806641263170345377816177052018",
"15732290486829619144634131656503993123618032247178179298922551820261215487562",
"6024433414579583476444635447152826813568595303270846875177844482142230009826",
"17677827682004946431939402157761289497221048154630238117709539216286149983245",
"10716307389353583413755237303156291454109852751296156900963208377067748518748",
"14925386988604173087143546225719076187055229908444910452781922028996524347508",
"8940878636401797005293482068100797531020505636124892198091491586778667442523",
"18911747154199663060505302806894425160044925686870165583944475880789706164410",
"8821532432394939099312235292271438180996556457308429936910969094255825456935",
"20632576502437623790366878538516326728436616723089049415538037018093616927643",
"71447649211767888770311304010816315780740050029903404046389165015534756512",
"2781996465394730190470582631099299305677291329609718650018200531245670229393",
"12441376330954323535872906380510501637773629931719508864016287320488688345525",
"2558302139544901035700544058046419714227464650146159803703499681139469546006",
"10087036781939179132584550273563255199577525914374285705149349445480649057058",
"4267692623754666261749551533667592242661271409704769363166965280715887854739",
"4945579503584457514844595640661884835097077318604083061152997449742124905548",
"17742335354489274412669987990603079185096280484072783973732137326144230832311",
"6266270088302506215402996795500854910256503071464802875821837403486057988208",
"2716062168542520412498610856550519519760063668165561277991771577403400784706",
"19118392018538203167410421493487769944462015419023083813301166096764262134232",
"9386595745626044000666050847309903206827901310677406022353307960932745699524",
"9121640807890366356465620448383131419933298563527245687958865317869840082266",
"3078975275808111706229899605611544294904276390490742680006005661017864583210",
"7157404299437167354719786626667769956233708887934477609633504801472827442743",
"14056248655941725362944552761799461694550787028230120190862133165195793034373",
"14124396743304355958915937804966111851843703158171757752158388556919187839849",
"11851254356749068692552943732920045260402277343008629727465773766468466181076",
"9799099446406796696742256539758943483211846559715874347178722060519817626047",
"10156146186214948683880719664738535455146137901666656566575307300522957959544",
"19908645952733301583346063785055921934459499091029406575311417879963332475861",
];
numbers
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect()
};
pub static ref CONSTANTS_M_2: Vec<Vec<BigInt>> = vec![
vec![
"5905559862616915807900579325651902433433685645159267419610962108431726462693",
"12711080208452642132636348910936535131635469619255658927004323269777977499766"
],
vec![
"1630059164638566989648383609786744055995088365519873639181021774367459228529",
"18634098492055214324873285470566015538548967469826511946578953323931218028182"
]
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
pub static ref CONSTANTS_M_3: Vec<Vec<BigInt>> = vec![
vec![
"12711080208452642132636348910936535131635469619255658927004323269777977499766",
"11739432287187184656569880828944421268616385874806221589758215824904320817117",
"4977258759536702998522229302103997878600602264560359702680165243908162277980"
],
vec![
"18634098492055214324873285470566015538548967469826511946578953323931218028182",
"16872301185549870956030057498946148102848662396374401407323436343924021192350",
"107933704346764130067829474107909495889716688591997879426350582457782826785"
],
vec![
"10964855577711430604889230155222964616951177623752692235240949905229827667414",
"18618317300596756144100783409915332163189452886691331959651778092154775572832",
"13596762909635538739079656925495736900379091964739248298531655823337482778123"
],
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
pub static ref CONSTANTS_M_6: Vec<Vec<BigInt>> = vec![
vec![
"19167410339349846567561662441069598364702008768579734801591448511131028229281",
"14183033936038168803360723133013092560869148726790180682363054735190196956789",
"9067734253445064890734144122526450279189023719890032859456830213166173619761",
"16378664841697311562845443097199265623838619398287411428110917414833007677155",
"12968540216479938138647596899147650021419273189336843725176422194136033835172",
"3636162562566338420490575570584278737093584021456168183289112789616069756675"
],
vec![
"17034139127218860091985397764514160131253018178110701196935786874261236172431",
"2799255644797227968811798608332314218966179365168250111693473252876996230317",
"2482058150180648511543788012634934806465808146786082148795902594096349483974",
"16563522740626180338295201738437974404892092704059676533096069531044355099628",
"10468644849657689537028565510142839489302836569811003546969773105463051947124",
"3328913364598498171733622353010907641674136720305714432354138807013088636408"
],
vec![
"18985203040268814769637347880759846911264240088034262814847924884273017355969",
"8652975463545710606098548415650457376967119951977109072274595329619335974180",
"970943815872417895015626519859542525373809485973005165410533315057253476903",
"19406667490568134101658669326517700199745817783746545889094238643063688871948",
"17049854690034965250221386317058877242629221002521630573756355118745574274967",
"4964394613021008685803675656098849539153699842663541444414978877928878266244"
],
vec![
"19025623051770008118343718096455821045904242602531062247152770448380880817517",
"9077319817220936628089890431129759976815127354480867310384708941479362824016",
"4770370314098695913091200576539533727214143013236894216582648993741910829490",
"4298564056297802123194408918029088169104276109138370115401819933600955259473",
"6905514380186323693285869145872115273350947784558995755916362330070690839131",
"4783343257810358393326889022942241108539824540285247795235499223017138301952"
],
vec![
"16205238342129310687768799056463408647672389183328001070715567975181364448609",
"8303849270045876854140023508764676765932043944545416856530551331270859502246",
"20218246699596954048529384569730026273241102596326201163062133863539137060414",
"1712845821388089905746651754894206522004527237615042226559791118162382909269",
"13001155522144542028910638547179410124467185319212645031214919884423841839406",
"16037892369576300958623292723740289861626299352695838577330319504984091062115"
],
vec![
"15162889384227198851506890526431746552868519326873025085114621698588781611738",
"13272957914179340594010910867091459756043436017766464331915862093201960540910",
"9416416589114508529880440146952102328470363729880726115521103179442988482948",
"8035240799672199706102747147502951589635001418759394863664434079699838251138",
"21642389080762222565487157652540372010968704000567605990102641816691459811717",
"20261355950827657195644012399234591122288573679402601053407151083849785332516"
]
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
pub static ref CONSTANTS_M_7: Vec<Vec<BigInt>> = vec![
vec![
"14183033936038168803360723133013092560869148726790180682363054735190196956789",
"9067734253445064890734144122526450279189023719890032859456830213166173619761",
"16378664841697311562845443097199265623838619398287411428110917414833007677155",
"12968540216479938138647596899147650021419273189336843725176422194136033835172",
"3636162562566338420490575570584278737093584021456168183289112789616069756675",
"8949952361235797771659501126471156178804092479420606597426318793013844305422",
"13586657904816433080148729258697725609063090799921401830545410130405357110367"
],
vec![
"2799255644797227968811798608332314218966179365168250111693473252876996230317",
"2482058150180648511543788012634934806465808146786082148795902594096349483974",
"16563522740626180338295201738437974404892092704059676533096069531044355099628",
"10468644849657689537028565510142839489302836569811003546969773105463051947124",
"3328913364598498171733622353010907641674136720305714432354138807013088636408",
"8642889650254799419576843603477253661899356105675006557919250564400804756641",
"14300697791556510113764686242794463641010174685800128469053974698256194076125"
],
vec![
"8652975463545710606098548415650457376967119951977109072274595329619335974180",
"970943815872417895015626519859542525373809485973005165410533315057253476903",
"19406667490568134101658669326517700199745817783746545889094238643063688871948",
"17049854690034965250221386317058877242629221002521630573756355118745574274967",
"4964394613021008685803675656098849539153699842663541444414978877928878266244",
"15474947305445649466370538888925567099067120578851553103424183520405650587995",
"1016119095639665978105768933448186152078842964810837543326777554729232767846"
],
vec![
"9077319817220936628089890431129759976815127354480867310384708941479362824016",
"4770370314098695913091200576539533727214143013236894216582648993741910829490",
"4298564056297802123194408918029088169104276109138370115401819933600955259473",
"6905514380186323693285869145872115273350947784558995755916362330070690839131",
"4783343257810358393326889022942241108539824540285247795235499223017138301952",
"1420772902128122367335354247676760257656541121773854204774788519230732373317",
"14172871439045259377975734198064051992755748777535789572469924335100006948373"
],
vec![
"8303849270045876854140023508764676765932043944545416856530551331270859502246",
"20218246699596954048529384569730026273241102596326201163062133863539137060414",
"1712845821388089905746651754894206522004527237615042226559791118162382909269",
"13001155522144542028910638547179410124467185319212645031214919884423841839406",
"16037892369576300958623292723740289861626299352695838577330319504984091062115",
"19189494548480259335554606182055502469831573298885662881571444557262020106898",
"19032687447778391106390582750185144485341165205399984747451318330476859342654"
],
vec![
"13272957914179340594010910867091459756043436017766464331915862093201960540910",
"9416416589114508529880440146952102328470363729880726115521103179442988482948",
"8035240799672199706102747147502951589635001418759394863664434079699838251138",
"21642389080762222565487157652540372010968704000567605990102641816691459811717",
"20261355950827657195644012399234591122288573679402601053407151083849785332516",
"14514189384576734449268559374569145463190040567900950075547616936149781403109",
"19038036134886073991945204537416211699632292792787812530208911676638479944765"
],
vec![
"15627836782263662543041758927100784213807648787083018234961118439434298020664",
"5655785191024506056588710805596292231240948371113351452712848652644610823632",
"8265264721707292643644260517162050867559314081394556886644673791575065394002",
"17151144681903609082202835646026478898625761142991787335302962548605510241586",
"18731644709777529787185361516475509623264209648904603914668024590231177708831",
"20697789991623248954020701081488146717484139720322034504511115160686216223641",
"6200020095464686209289974437830528853749866001482481427982839122465470640886"
]
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
pub static ref CONSTANTS_M_9: Vec<Vec<BigInt>> = vec![
vec![
"16378664841697311562845443097199265623838619398287411428110917414833007677155",
"12968540216479938138647596899147650021419273189336843725176422194136033835172",
"3636162562566338420490575570584278737093584021456168183289112789616069756675",
"8949952361235797771659501126471156178804092479420606597426318793013844305422",
"13586657904816433080148729258697725609063090799921401830545410130405357110367",
"9234644095326950665182299534206533404013403644192586933457524891645396292987",
"21716239453658409906539773463855601090749352024072354407676420846971925763352",
"4217850196621719492070441371114581340961962601115446718610695075341064782843",
"14091314373946770079087815723744110798105826012788667211882320191290756637054"
],
vec![
"16563522740626180338295201738437974404892092704059676533096069531044355099628",
"10468644849657689537028565510142839489302836569811003546969773105463051947124",
"3328913364598498171733622353010907641674136720305714432354138807013088636408",
"8642889650254799419576843603477253661899356105675006557919250564400804756641",
"14300697791556510113764686242794463641010174685800128469053974698256194076125",
"5585884681068831368957819127799934550116264845072199016558603424861777753252",
"3478164595623309231528081170973492360030471123077314602599603198947503453402",
"7199924820941799838017782197767573398800843214159492464366697425752021794207",
"1154943146689858448412819104632261733949486281652220573359100064807135186211"
],
vec![
"19406667490568134101658669326517700199745817783746545889094238643063688871948",
"17049854690034965250221386317058877242629221002521630573756355118745574274967",
"4964394613021008685803675656098849539153699842663541444414978877928878266244",
"15474947305445649466370538888925567099067120578851553103424183520405650587995",
"1016119095639665978105768933448186152078842964810837543326777554729232767846",
"1094643194372100629123149177218988304969310518086967353237224710253647912217",
"19683112286289404632257045032408336402139497606956310649520051095163041093043",
"15078463390585580460701632423762128113753337560111211686732764674670454433375",
"1801502535278136950711454362447206750370371584220726360504187134310004854946"
],
vec![
"4298564056297802123194408918029088169104276109138370115401819933600955259473",
"6905514380186323693285869145872115273350947784558995755916362330070690839131",
"4783343257810358393326889022942241108539824540285247795235499223017138301952",
"1420772902128122367335354247676760257656541121773854204774788519230732373317",
"14172871439045259377975734198064051992755748777535789572469924335100006948373",
"701171404446517799603547590964435136387194297039347722754381539762095803416",
"9803177017074123807147870516958969882415683917143053879462479514476003798692",
"10882504770686057070666901469152010168883484553788707224519875015429176286468",
"16116223334794707241932949543829423645032061244136000915663484670112660674335"
],
vec![
"1712845821388089905746651754894206522004527237615042226559791118162382909269",
"13001155522144542028910638547179410124467185319212645031214919884423841839406",
"16037892369576300958623292723740289861626299352695838577330319504984091062115",
"19189494548480259335554606182055502469831573298885662881571444557262020106898",
"19032687447778391106390582750185144485341165205399984747451318330476859342654",
"12323575831655155253804858088151729263068755350164008078826612164541519408135",
"13364062595561633544353642535185185386831615196434150714209983763273382358030",
"9274699025052388999143876606332457090594226076618918017186910082987520766620",
"21666017696927606866900803180167159825580415253627077790152277311026667245774"
],
vec![
"8035240799672199706102747147502951589635001418759394863664434079699838251138",
"21642389080762222565487157652540372010968704000567605990102641816691459811717",
"20261355950827657195644012399234591122288573679402601053407151083849785332516",
"14514189384576734449268559374569145463190040567900950075547616936149781403109",
"19038036134886073991945204537416211699632292792787812530208911676638479944765",
"686782683208273499702675091923241011258708712578932107294509288335035332309",
"19460483659494742538635058842962321840203437040436001627070209503346220914620",
"2717363541929281429425363151363573812700929689092742076307025102432122849113",
"592856464239577084277812148344474334229160123467784799518401396518621499307"
],
vec![
"8265264721707292643644260517162050867559314081394556886644673791575065394002",
"17151144681903609082202835646026478898625761142991787335302962548605510241586",
"18731644709777529787185361516475509623264209648904603914668024590231177708831",
"20697789991623248954020701081488146717484139720322034504511115160686216223641",
"6200020095464686209289974437830528853749866001482481427982839122465470640886",
"15003643064481014784403977252896879471469342634022488726217418739723899468318",
"12647612870405528475535038805212974373775200663189541014169237057917818933775",
"4495592920221816845183500919899258791575337853955422662005352518056111526526",
"17016589944599426232470877677784553412045023522564439128359954090088542925927"
],
vec![
"19539311024738522891356101949155059335275979719197714163855792975479791830596",
"6659076024959487416731638372513310695435146898436979094444558067856073756736",
"18638411010780926799370141496147754702830985736366292681854483730874058975603",
"13991166219115538669786979327638629497368851557264728153209258584901344742173",
"10708464376044593093210642907737038037693199311429347815304064429229497756513",
"6487544089495620557439978277791925879985014522759859697996101158123830288903",
"2913307273815072522855995578822138088278918070152314785631428419886490815017",
"14285037819197997716648396320167175389429136413217640368836681114764148118185",
"3333794576395592518925638954760517866119123399586466538142440796174614359894"
],
vec![
"21422243299611537762274736309721876243615704845934179576439297719647792004094",
"454751400352787889753204068724447886439869504887169238390605352931357717966",
"18410998549604629667288121409987879184434965955790116388599455426890628819225",
"21124868883310895249704508909746850568648918888363322451096318445789496113765",
"3729190893061666874168977650023409592233396533084615654829157344975623505524",
"10648014247890130944143499130156012552468488977293052246766339673997837070992",
"9568023470137472494284353113734549348684200769702589788112091125656147667116",
"3536927330244885178374691992819629480677300039684470529320471913652629606838",
"11398590172899810645820530606484864595574598270604175688862890426075002823331"
]
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
pub static ref CONSTANTS_M_10: Vec<Vec<BigInt>> = vec![
vec![
"12968540216479938138647596899147650021419273189336843725176422194136033835172",
"3636162562566338420490575570584278737093584021456168183289112789616069756675",
"8949952361235797771659501126471156178804092479420606597426318793013844305422",
"13586657904816433080148729258697725609063090799921401830545410130405357110367",
"9234644095326950665182299534206533404013403644192586933457524891645396292987",
"21716239453658409906539773463855601090749352024072354407676420846971925763352",
"4217850196621719492070441371114581340961962601115446718610695075341064782843",
"14091314373946770079087815723744110798105826012788667211882320191290756637054",
"1836151420849876287257251498242729836824311746824392923242828663131666580828",
"6835788420848335173243495671810987843103243246225527562249885075005140362623"
],
vec![
"10468644849657689537028565510142839489302836569811003546969773105463051947124",
"3328913364598498171733622353010907641674136720305714432354138807013088636408",
"8642889650254799419576843603477253661899356105675006557919250564400804756641",
"14300697791556510113764686242794463641010174685800128469053974698256194076125",
"5585884681068831368957819127799934550116264845072199016558603424861777753252",
"3478164595623309231528081170973492360030471123077314602599603198947503453402",
"7199924820941799838017782197767573398800843214159492464366697425752021794207",
"1154943146689858448412819104632261733949486281652220573359100064807135186211",
"2014307020840030171599981482679561995491247943968618411317941095661736771072",
"3570239959937051869699597646596776576100477379279696986371716806585418148999"
],
vec![
"17049854690034965250221386317058877242629221002521630573756355118745574274967",
"4964394613021008685803675656098849539153699842663541444414978877928878266244",
"15474947305445649466370538888925567099067120578851553103424183520405650587995",
"1016119095639665978105768933448186152078842964810837543326777554729232767846",
"1094643194372100629123149177218988304969310518086967353237224710253647912217",
"19683112286289404632257045032408336402139497606956310649520051095163041093043",
"15078463390585580460701632423762128113753337560111211686732764674670454433375",
"1801502535278136950711454362447206750370371584220726360504187134310004854946",
"8621790518781836243437824920511539973165116610755426647487428365048155246615",
"12942512140539042341676889757219435053433203623152024989066217867030059451362"
],
vec![
"6905514380186323693285869145872115273350947784558995755916362330070690839131",
"4783343257810358393326889022942241108539824540285247795235499223017138301952",
"1420772902128122367335354247676760257656541121773854204774788519230732373317",
"14172871439045259377975734198064051992755748777535789572469924335100006948373",
"701171404446517799603547590964435136387194297039347722754381539762095803416",
"9803177017074123807147870516958969882415683917143053879462479514476003798692",
"10882504770686057070666901469152010168883484553788707224519875015429176286468",
"16116223334794707241932949543829423645032061244136000915663484670112660674335",
"1050574705143710849158660280515783436048703475592206287328683483437386496342",
"3193766187369768098819373128520920194995009659905354541728591134729338630146"
],
vec![
"13001155522144542028910638547179410124467185319212645031214919884423841839406",
"16037892369576300958623292723740289861626299352695838577330319504984091062115",
"19189494548480259335554606182055502469831573298885662881571444557262020106898",
"19032687447778391106390582750185144485341165205399984747451318330476859342654",
"12323575831655155253804858088151729263068755350164008078826612164541519408135",
"13364062595561633544353642535185185386831615196434150714209983763273382358030",
"9274699025052388999143876606332457090594226076618918017186910082987520766620",
"21666017696927606866900803180167159825580415253627077790152277311026667245774",
"19428861633624669932732235043823844526934683635426508396069006262580783292098",
"349092129900167299852086304168956780686281800973047308710033408193673557137"
],
vec![
"21642389080762222565487157652540372010968704000567605990102641816691459811717",
"20261355950827657195644012399234591122288573679402601053407151083849785332516",
"14514189384576734449268559374569145463190040567900950075547616936149781403109",
"19038036134886073991945204537416211699632292792787812530208911676638479944765",
"686782683208273499702675091923241011258708712578932107294509288335035332309",
"19460483659494742538635058842962321840203437040436001627070209503346220914620",
"2717363541929281429425363151363573812700929689092742076307025102432122849113",
"592856464239577084277812148344474334229160123467784799518401396518621499307",
"19605232505714887411140533539156676078023064817112556974818688529720554103027",
"17281837796802566248553868696561647661575293017929540397986609448489469656408"
],
vec![
"17151144681903609082202835646026478898625761142991787335302962548605510241586",
"18731644709777529787185361516475509623264209648904603914668024590231177708831",
"20697789991623248954020701081488146717484139720322034504511115160686216223641",
"6200020095464686209289974437830528853749866001482481427982839122465470640886",
"15003643064481014784403977252896879471469342634022488726217418739723899468318",
"12647612870405528475535038805212974373775200663189541014169237057917818933775",
"4495592920221816845183500919899258791575337853955422662005352518056111526526",
"17016589944599426232470877677784553412045023522564439128359954090088542925927",
"7427163762123037666168877552179990976257321514817431071386277873217974716214",
"6954714365751319627532260089365398510597789423888128188300193742623440858991"
],
vec![
"6659076024959487416731638372513310695435146898436979094444558067856073756736",
"18638411010780926799370141496147754702830985736366292681854483730874058975603",
"13991166219115538669786979327638629497368851557264728153209258584901344742173",
"10708464376044593093210642907737038037693199311429347815304064429229497756513",
"6487544089495620557439978277791925879985014522759859697996101158123830288903",
"2913307273815072522855995578822138088278918070152314785631428419886490815017",
"14285037819197997716648396320167175389429136413217640368836681114764148118185",
"3333794576395592518925638954760517866119123399586466538142440796174614359894",
"3845776014605207395343871969433626371796105685015639546701817312715048078273",
"9263887251631740182673249586528554091206122902651331921320275863021853816005"
],
vec![
"454751400352787889753204068724447886439869504887169238390605352931357717966",
"18410998549604629667288121409987879184434965955790116388599455426890628819225",
"21124868883310895249704508909746850568648918888363322451096318445789496113765",
"3729190893061666874168977650023409592233396533084615654829157344975623505524",
"10648014247890130944143499130156012552468488977293052246766339673997837070992",
"9568023470137472494284353113734549348684200769702589788112091125656147667116",
"3536927330244885178374691992819629480677300039684470529320471913652629606838",
"11398590172899810645820530606484864595574598270604175688862890426075002823331",
"13867154112143118575451613166385157242483631693788556304796979714601785936825",
"15587970419040244702732665316366587844861765432258110249032770438196575054494"
],
vec![
"6960294372035221293581956312209136863848983347653614884808509682463381341123",
"15065949325738665978704380810964125491600291026570726386996048869310110891732",
"15565208172936548126814901061215221899993229204075026231475743356766667186275",
"14273341415389175002732931022197371408910107356935395501556639778517250463216",
"5902907000654141499635699176721929039612928718177921573754626287345808685856",
"203666313136774023325316072654501128468371734762708925063627487502421439094",
"9450682786498823752891980662275296997029499323840362934742782429277244701264",
"5845919573782750816116964311797087944211904659910565804455233427824994872877",
"2620768939180089200997122995060391898943652408298747707765440591474859977536",
"6097212856823059610806594870167172449630826014160149958358449182659226854683"
]
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
pub static ref CONSTANTS_M_12: Vec<Vec<BigInt>> = vec![
vec![
"8949952361235797771659501126471156178804092479420606597426318793013844305422",
"13586657904816433080148729258697725609063090799921401830545410130405357110367",
"9234644095326950665182299534206533404013403644192586933457524891645396292987",
"21716239453658409906539773463855601090749352024072354407676420846971925763352",
"4217850196621719492070441371114581340961962601115446718610695075341064782843",
"14091314373946770079087815723744110798105826012788667211882320191290756637054",
"1836151420849876287257251498242729836824311746824392923242828663131666580828",
"6835788420848335173243495671810987843103243246225527562249885075005140362623",
"1980065348636533793938224420722478561090879463814453742159951744016644584724",
"15713403866108081374909941292970437652990369272785906691248434303775169969543",
"14959743792706716021142885528088392553078212698661562097167510503161229999990",
"15006586652538422799588174804684510919512328790284816768463531865354612746131"
],
vec![
"8642889650254799419576843603477253661899356105675006557919250564400804756641",
"14300697791556510113764686242794463641010174685800128469053974698256194076125",
"5585884681068831368957819127799934550116264845072199016558603424861777753252",
"3478164595623309231528081170973492360030471123077314602599603198947503453402",
"7199924820941799838017782197767573398800843214159492464366697425752021794207",
"1154943146689858448412819104632261733949486281652220573359100064807135186211",
"2014307020840030171599981482679561995491247943968618411317941095661736771072",
"3570239959937051869699597646596776576100477379279696986371716806585418148999",
"6444436284087049954311426326470253493866988349227325357692234777181945302138",
"4084181522452846717426267118401257065171304838427595913046458801675418547946",
"13989632073452219820350995430504114247219866494172950970739079321835291324671",
"13418719828600374542384556966295703666596070930672811607179449002639059599541"
],
vec![
"15474947305445649466370538888925567099067120578851553103424183520405650587995",
"1016119095639665978105768933448186152078842964810837543326777554729232767846",
"1094643194372100629123149177218988304969310518086967353237224710253647912217",
"19683112286289404632257045032408336402139497606956310649520051095163041093043",
"15078463390585580460701632423762128113753337560111211686732764674670454433375",
"1801502535278136950711454362447206750370371584220726360504187134310004854946",
"8621790518781836243437824920511539973165116610755426647487428365048155246615",
"12942512140539042341676889757219435053433203623152024989066217867030059451362",
"20440428457116895728643297727585714505972968360880851439871840763004876047842",
"501563077712479629714853317258969081525260934521262312772885253926721582762",
"753123978024633956735577324441899899633658365336405510640245528428125257350",
"15438139118673148272474914574603568698207304684426092003641682993272711781065"
],
vec![
"1420772902128122367335354247676760257656541121773854204774788519230732373317",
"14172871439045259377975734198064051992755748777535789572469924335100006948373",
"701171404446517799603547590964435136387194297039347722754381539762095803416",
"9803177017074123807147870516958969882415683917143053879462479514476003798692",
"10882504770686057070666901469152010168883484553788707224519875015429176286468",
"16116223334794707241932949543829423645032061244136000915663484670112660674335",
"1050574705143710849158660280515783436048703475592206287328683483437386496342",
"3193766187369768098819373128520920194995009659905354541728591134729338630146",
"5442308134552484158006176363860250847803335445074346356521667371941439320753",
"11191223378227773223878730222746316529427664100909744690819477729631161942363",
"11726035845675343757836923739489072381179982752991909557580776186859596967156",
"16901810476261424999482203611679314176669106099527895459084749754823603991308"
],
vec![
"19189494548480259335554606182055502469831573298885662881571444557262020106898",
"19032687447778391106390582750185144485341165205399984747451318330476859342654",
"12323575831655155253804858088151729263068755350164008078826612164541519408135",
"13364062595561633544353642535185185386831615196434150714209983763273382358030",
"9274699025052388999143876606332457090594226076618918017186910082987520766620",
"21666017696927606866900803180167159825580415253627077790152277311026667245774",
"19428861633624669932732235043823844526934683635426508396069006262580783292098",
"349092129900167299852086304168956780686281800973047308710033408193673557137",
"9891605682735775701372497220084495703059875491976279694547892411730413275106",
"9572033480346284888842892814742041052680607489312867118792896402407551781000",
"9419692140501576607876338606093398306760750606675978490359415622226726545243",
"8624211117939275106682081656519108589416393964885797669702352155223639676615"
],
vec![
"14514189384576734449268559374569145463190040567900950075547616936149781403109",
"19038036134886073991945204537416211699632292792787812530208911676638479944765",
"686782683208273499702675091923241011258708712578932107294509288335035332309",
"19460483659494742538635058842962321840203437040436001627070209503346220914620",
"2717363541929281429425363151363573812700929689092742076307025102432122849113",
"592856464239577084277812148344474334229160123467784799518401396518621499307",
"19605232505714887411140533539156676078023064817112556974818688529720554103027",
"17281837796802566248553868696561647661575293017929540397986609448489469656408",
"5179101331705486631216523439406626504427859861086380006880198353271403634284",
"21494373900212553862269598166466369411014604306433901007975656990265100086773",
"12479091560441248082862707244714931628551465467233671548318239199145856448347",
"12491607425761055729662442019363508424269807364745212435444190648207572076545"
],
vec![
"20697789991623248954020701081488146717484139720322034504511115160686216223641",
"6200020095464686209289974437830528853749866001482481427982839122465470640886",
"15003643064481014784403977252896879471469342634022488726217418739723899468318",
"12647612870405528475535038805212974373775200663189541014169237057917818933775",
"4495592920221816845183500919899258791575337853955422662005352518056111526526",
"17016589944599426232470877677784553412045023522564439128359954090088542925927",
"7427163762123037666168877552179990976257321514817431071386277873217974716214",
"6954714365751319627532260089365398510597789423888128188300193742623440858991",
"20741354368082668749519294669330263800034959643576788680679721465758396340655",
"8690392737093296508596420240113481624211167630103821946341025063336615861750",
"128326679649384002269047621993838921105558466114089093801619612520960648926",
"12703817225095950516595285538310896530137847080299329755804157103829069832883"
],
vec![
"13991166219115538669786979327638629497368851557264728153209258584901344742173",
"10708464376044593093210642907737038037693199311429347815304064429229497756513",
"6487544089495620557439978277791925879985014522759859697996101158123830288903",
"2913307273815072522855995578822138088278918070152314785631428419886490815017",
"14285037819197997716648396320167175389429136413217640368836681114764148118185",
"3333794576395592518925638954760517866119123399586466538142440796174614359894",
"3845776014605207395343871969433626371796105685015639546701817312715048078273",
"9263887251631740182673249586528554091206122902651331921320275863021853816005",
"14516758205336303628030971413987867488663371869161580208931064798637853946497",
"15357311091575984266241753426851379448502423574157741469776854720990327180318",
"15592199505650910310179975282703642781152274938814852803050516371497805905618",
"11696071630533658433430012425611085012006305934825565097498631527205190114355"
],
vec![
"21124868883310895249704508909746850568648918888363322451096318445789496113765",
"3729190893061666874168977650023409592233396533084615654829157344975623505524",
"10648014247890130944143499130156012552468488977293052246766339673997837070992",
"9568023470137472494284353113734549348684200769702589788112091125656147667116",
"3536927330244885178374691992819629480677300039684470529320471913652629606838",
"11398590172899810645820530606484864595574598270604175688862890426075002823331",
"13867154112143118575451613166385157242483631693788556304796979714601785936825",
"15587970419040244702732665316366587844861765432258110249032770438196575054494",
"1760728291310754125712539670786268511398339681699173022567759629151538940271",
"10983112402223375904816148852700278466880680448249842946746264282026432805356",
"15317492529014085340160234749721835831474162547771507349755909013051779433016",
"16522315899813393602217644554675335137456173932685599501256120168385052319551"
],
vec![
"15565208172936548126814901061215221899993229204075026231475743356766667186275",
"14273341415389175002732931022197371408910107356935395501556639778517250463216",
"5902907000654141499635699176721929039612928718177921573754626287345808685856",
"203666313136774023325316072654501128468371734762708925063627487502421439094",
"9450682786498823752891980662275296997029499323840362934742782429277244701264",
"5845919573782750816116964311797087944211904659910565804455233427824994872877",
"2620768939180089200997122995060391898943652408298747707765440591474859977536",
"6097212856823059610806594870167172449630826014160149958358449182659226854683",
"21035421258088434187064210132510536027666832877207574626482275926069854695763",
"13051875927006043184532456259732675608112064860752811133476026158472953275617",
"9863361682300502736731454118729857964509172642453643136605329752639270646259",
"6864936489606613569949200125517908551657368982395164693026803780881403832845"
],
vec![
"7324527588398529369832404971572555764840381229220960043028736393060929031165",
"16180780920520829787590397461786386727911681900904540409095357904584006980425",
"11923552431018057977761262750896735278348525198229774660021082286179569562761",
"16103000669516568314626924758129945191156182821310825343179071305812017533451",
"6703384075365774580846496809352382349237535411108756946275887008878257647636",
"8320969168029750438001524325485404349446296049650925704636382736628876200413",
"7711442374668991871896332031308406364421360151841877944011644435604249756323",
"4858024683814982254309886653697281467687205888514801303577930237690860071670",
"21452852726519764756830618853858002743210980897675031341247154775030934599037",
"13833240608470544540225953613275063421934297305979294165453842748748438594425",
"8100247873651925632034289001098959227000685657042182048193147401160223524912",
"10121389091958157720142199475024283036593233305586359212041679488821565236710"
],
vec![
"4504593921994952598155657828894656279482867500985575499664289188003946121851",
"14511147299412740304746841320688216321036602714960166007170353213473524352104",
"16528025842375043435837119470493256268433673445086331728490793208867786241828",
"9900154154386663479537586819894718944687713302473452381603628292243002702279",
"17445064292175618291837332432796219832109705978726091185424692935685474443383",
"9477523956585809224358176702160144713654392239223858397591554583998674321011",
"5579747340111624719474392885678928647910939579910780777119735981799709775053",
"5540078687649959444165462224899672030870257411479656684734160045273088947455",
"5080667717011927915807989683903164006615302718909764087091456973642565978968",
"8405426129356335885106454141349949656435052005686122818690562623647725612759",
"14153792492527926309111680484388508008319725250964284816755179056859092161333",
"9095727891321434705384160430973826842535919861682195638384112440257688759288"
]
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
pub static ref CONSTANTS_M_13: Vec<Vec<BigInt>> = vec![
vec![
"13586657904816433080148729258697725609063090799921401830545410130405357110367",
"9234644095326950665182299534206533404013403644192586933457524891645396292987",
"21716239453658409906539773463855601090749352024072354407676420846971925763352",
"4217850196621719492070441371114581340961962601115446718610695075341064782843",
"14091314373946770079087815723744110798105826012788667211882320191290756637054",
"1836151420849876287257251498242729836824311746824392923242828663131666580828",
"6835788420848335173243495671810987843103243246225527562249885075005140362623",
"1980065348636533793938224420722478561090879463814453742159951744016644584724",
"15713403866108081374909941292970437652990369272785906691248434303775169969543",
"14959743792706716021142885528088392553078212698661562097167510503161229999990",
"15006586652538422799588174804684510919512328790284816768463531865354612746131",
"6722003314234384626117852426038768604713438612656541411100053653684379192144",
"4242900714002637160237691581352854499594023697293551240818960152419012534784"
],
vec![
"14300697791556510113764686242794463641010174685800128469053974698256194076125",
"5585884681068831368957819127799934550116264845072199016558603424861777753252",
"3478164595623309231528081170973492360030471123077314602599603198947503453402",
"7199924820941799838017782197767573398800843214159492464366697425752021794207",
"1154943146689858448412819104632261733949486281652220573359100064807135186211",
"2014307020840030171599981482679561995491247943968618411317941095661736771072",
"3570239959937051869699597646596776576100477379279696986371716806585418148999",
"6444436284087049954311426326470253493866988349227325357692234777181945302138",
"4084181522452846717426267118401257065171304838427595913046458801675418547946",
"13989632073452219820350995430504114247219866494172950970739079321835291324671",
"13418719828600374542384556966295703666596070930672811607179449002639059599541",
"7644969330219224547287769516033436965799428928441591606450985163053392793344",
"6280436684085269171590673027048410351649289641146944008145604425101757414762"
],
vec![
"1016119095639665978105768933448186152078842964810837543326777554729232767846",
"1094643194372100629123149177218988304969310518086967353237224710253647912217",
"19683112286289404632257045032408336402139497606956310649520051095163041093043",
"15078463390585580460701632423762128113753337560111211686732764674670454433375",
"1801502535278136950711454362447206750370371584220726360504187134310004854946",
"8621790518781836243437824920511539973165116610755426647487428365048155246615",
"12942512140539042341676889757219435053433203623152024989066217867030059451362",
"20440428457116895728643297727585714505972968360880851439871840763004876047842",
"501563077712479629714853317258969081525260934521262312772885253926721582762",
"753123978024633956735577324441899899633658365336405510640245528428125257350",
"15438139118673148272474914574603568698207304684426092003641682993272711781065",
"10689812918505616661608691890720390469226403703723381016350310491737813313974",
"1924725056931387958278889757445074574089297279768556322739137505931263014453"
],
vec![
"14172871439045259377975734198064051992755748777535789572469924335100006948373",
"701171404446517799603547590964435136387194297039347722754381539762095803416",
"9803177017074123807147870516958969882415683917143053879462479514476003798692",
"10882504770686057070666901469152010168883484553788707224519875015429176286468",
"16116223334794707241932949543829423645032061244136000915663484670112660674335",
"1050574705143710849158660280515783436048703475592206287328683483437386496342",
"3193766187369768098819373128520920194995009659905354541728591134729338630146",
"5442308134552484158006176363860250847803335445074346356521667371941439320753",
"11191223378227773223878730222746316529427664100909744690819477729631161942363",
"11726035845675343757836923739489072381179982752991909557580776186859596967156",
"16901810476261424999482203611679314176669106099527895459084749754823603991308",
"4772799230215502787387625800375266198310018865322967995359111556777265293420",
"4288576265376429508866293694414174912547365651471706203767654622778961072749"
],
vec![
"19032687447778391106390582750185144485341165205399984747451318330476859342654",
"12323575831655155253804858088151729263068755350164008078826612164541519408135",
"13364062595561633544353642535185185386831615196434150714209983763273382358030",
"9274699025052388999143876606332457090594226076618918017186910082987520766620",
"21666017696927606866900803180167159825580415253627077790152277311026667245774",
"19428861633624669932732235043823844526934683635426508396069006262580783292098",
"349092129900167299852086304168956780686281800973047308710033408193673557137",
"9891605682735775701372497220084495703059875491976279694547892411730413275106",
"9572033480346284888842892814742041052680607489312867118792896402407551781000",
"9419692140501576607876338606093398306760750606675978490359415622226726545243",
"8624211117939275106682081656519108589416393964885797669702352155223639676615",
"12665059648441553978570163871651535927964637259373194577287421931722711027942",
"19902414416640214856640678626000636593994956378173579902243476569198060051869"
],
vec![
"19038036134886073991945204537416211699632292792787812530208911676638479944765",
"686782683208273499702675091923241011258708712578932107294509288335035332309",
"19460483659494742538635058842962321840203437040436001627070209503346220914620",
"2717363541929281429425363151363573812700929689092742076307025102432122849113",
"592856464239577084277812148344474334229160123467784799518401396518621499307",
"19605232505714887411140533539156676078023064817112556974818688529720554103027",
"17281837796802566248553868696561647661575293017929540397986609448489469656408",
"5179101331705486631216523439406626504427859861086380006880198353271403634284",
"21494373900212553862269598166466369411014604306433901007975656990265100086773",
"12479091560441248082862707244714931628551465467233671548318239199145856448347",
"12491607425761055729662442019363508424269807364745212435444190648207572076545",
"2158389749885037372770745658770751221882088914371545859189544616894572777936",
"444652790339185347562311359321953826932850429877175475185013904665251018946"
],
vec![
"6200020095464686209289974437830528853749866001482481427982839122465470640886",
"15003643064481014784403977252896879471469342634022488726217418739723899468318",
"12647612870405528475535038805212974373775200663189541014169237057917818933775",
"4495592920221816845183500919899258791575337853955422662005352518056111526526",
"17016589944599426232470877677784553412045023522564439128359954090088542925927",
"7427163762123037666168877552179990976257321514817431071386277873217974716214",
"6954714365751319627532260089365398510597789423888128188300193742623440858991",
"20741354368082668749519294669330263800034959643576788680679721465758396340655",
"8690392737093296508596420240113481624211167630103821946341025063336615861750",
"128326679649384002269047621993838921105558466114089093801619612520960648926",
"12703817225095950516595285538310896530137847080299329755804157103829069832883",
"2516481353863286804779030034991274003091884750376436535868787992170119380775",
"13185746349401158353633500923134753690414463215010331946684089239815388797999"
],
vec![
"10708464376044593093210642907737038037693199311429347815304064429229497756513",
"6487544089495620557439978277791925879985014522759859697996101158123830288903",
"2913307273815072522855995578822138088278918070152314785631428419886490815017",
"14285037819197997716648396320167175389429136413217640368836681114764148118185",
"3333794576395592518925638954760517866119123399586466538142440796174614359894",
"3845776014605207395343871969433626371796105685015639546701817312715048078273",
"9263887251631740182673249586528554091206122902651331921320275863021853816005",
"14516758205336303628030971413987867488663371869161580208931064798637853946497",
"15357311091575984266241753426851379448502423574157741469776854720990327180318",
"15592199505650910310179975282703642781152274938814852803050516371497805905618",
"11696071630533658433430012425611085012006305934825565097498631527205190114355",
"9675000134469381494468008700239205713775978238953418124765050248135042267115",
"21636111004377929229774040837424846543342293995051799920480015069120480600478"
],
vec![
"3729190893061666874168977650023409592233396533084615654829157344975623505524",
"10648014247890130944143499130156012552468488977293052246766339673997837070992",
"9568023470137472494284353113734549348684200769702589788112091125656147667116",
"3536927330244885178374691992819629480677300039684470529320471913652629606838",
"11398590172899810645820530606484864595574598270604175688862890426075002823331",
"13867154112143118575451613166385157242483631693788556304796979714601785936825",
"15587970419040244702732665316366587844861765432258110249032770438196575054494",
"1760728291310754125712539670786268511398339681699173022567759629151538940271",
"10983112402223375904816148852700278466880680448249842946746264282026432805356",
"15317492529014085340160234749721835831474162547771507349755909013051779433016",
"16522315899813393602217644554675335137456173932685599501256120168385052319551",
"5832666872201353066141882890901243110499314121092889231480902289394293205220",
"14778587923187278042924759519063503729377452007427310376922251107476335821851"
],
vec![
"14273341415389175002732931022197371408910107356935395501556639778517250463216",
"5902907000654141499635699176721929039612928718177921573754626287345808685856",
"203666313136774023325316072654501128468371734762708925063627487502421439094",
"9450682786498823752891980662275296997029499323840362934742782429277244701264",
"5845919573782750816116964311797087944211904659910565804455233427824994872877",
"2620768939180089200997122995060391898943652408298747707765440591474859977536",
"6097212856823059610806594870167172449630826014160149958358449182659226854683",
"21035421258088434187064210132510536027666832877207574626482275926069854695763",
"13051875927006043184532456259732675608112064860752811133476026158472953275617",
"9863361682300502736731454118729857964509172642453643136605329752639270646259",
"6864936489606613569949200125517908551657368982395164693026803780881403832845",
"13543108642878675312287084337358022913410274488752899319752800412871492410315",
"20735029507019217038441905900900011586082605676085434605827601381067408772839"
],
vec![
"16180780920520829787590397461786386727911681900904540409095357904584006980425",
"11923552431018057977761262750896735278348525198229774660021082286179569562761",
"16103000669516568314626924758129945191156182821310825343179071305812017533451",
"6703384075365774580846496809352382349237535411108756946275887008878257647636",
"8320969168029750438001524325485404349446296049650925704636382736628876200413",
"7711442374668991871896332031308406364421360151841877944011644435604249756323",
"4858024683814982254309886653697281467687205888514801303577930237690860071670",
"21452852726519764756830618853858002743210980897675031341247154775030934599037",
"13833240608470544540225953613275063421934297305979294165453842748748438594425",
"8100247873651925632034289001098959227000685657042182048193147401160223524912",
"10121389091958157720142199475024283036593233305586359212041679488821565236710",
"17679139357473294411084805082149369891566315066810950690553593909841224749698",
"5745168543650122191238012790353274949236757316939697215769496258381365157104"
],
vec![
"14511147299412740304746841320688216321036602714960166007170353213473524352104",
"16528025842375043435837119470493256268433673445086331728490793208867786241828",
"9900154154386663479537586819894718944687713302473452381603628292243002702279",
"17445064292175618291837332432796219832109705978726091185424692935685474443383",
"9477523956585809224358176702160144713654392239223858397591554583998674321011",
"5579747340111624719474392885678928647910939579910780777119735981799709775053",
"5540078687649959444165462224899672030870257411479656684734160045273088947455",
"5080667717011927915807989683903164006615302718909764087091456973642565978968",
"8405426129356335885106454141349949656435052005686122818690562623647725612759",
"14153792492527926309111680484388508008319725250964284816755179056859092161333",
"9095727891321434705384160430973826842535919861682195638384112440257688759288",
"525844820226607279261280990028210711618218343012201065882085947162542608108",
"10584421738198625238287526628685318785969653190071782510616238160463228408988"
],
vec![
"2882714818088102388247231723654063912187615406203152326122709307988347283077",
"18591374639006516669971631071969040281259448932717435559823992098426299707077",
"1680340864535981809898681240181403206011018277970403157094851711703425560715",
"2984952658486342048219059368566849957041027742693099614812811782460367613275",
"2928426982786615081330845232031686514230666920847050155182767214409180960814",
"3015367340702561841666387409334020137010037968536103279430071917711772540037",
"13663565517613094943055488310199504888408926491219128855167216364452908496200",
"16815342412796685070748229542687133133506812464709750021955403443804490467953",
"4533506778739702660383639084626571069692010901277393488174883882341066497912",
"14523936445207359641763389972803953600701474705478950437875748846368862178807",
"11962700467102255999055969416326709423256739554565579087170307880927509861042",
"2264910039365652727051642338056949842496033733584751140517379287045506472810",
"19889684800677035390159391514058316422087905364769196678613430344453618347396"
],
]
.iter()
.map(|vec| vec
.iter()
.map(|&num_str| BigInt::from_str(num_str).unwrap())
.collect::<Vec<BigInt>>())
.collect();
}