SFFHelper.PRIMROOTCACHE := 
[ ,,,,,,,,,,,,,,,,,,,,,, 
  [ 7, 62, 11402, 135131, 6240513, 49589803, 1430256870, 76784189667, 
      512965545970, 21924400902239, 423236444630464, 20712649203191691, 
      195399462343098285, 8826619931300329286, 250617349193519546711, 
      2412945468550909878185, 132188241894546975400841, 
      2129350484683369456207049, 20987691997159018812792008, 
      761794391627481749911602342, 25083542963231145237288148734, 
      36414780426515991927959837472, 1584411359319865813236966992903, 
      214326153005600919804415388484096, 3234736054639220734341320767098958, 
      72350393975096445743211004922140954, 
      5272861182118624529752360423366763598, 
      20190683968641998041774194447316260224, 
      2362114450819778850192072008984892168442, 
      23368199903683597099274786982440052680114, 
      792712480434309910166398106716370430810438, 
      25682206474585618135121510313361227170810771, 
      687989082541050988976064393752013225620860168, 
      12845164497673492910666834837353250916308834736, 
      359183384211680851036235573044683346747921748161, 
      9976856789718212362059653594480212100722884258920, 
      93840741074778670079573332367273240397547657710712, 
      757621396350602033880898625243041630178025395218092, 
      14888134672740186544326875587951947200264447651054844, 
      599218217598977571472833125597303323034021756258203703, 
      9529584421116814590562420777342040671250908613599252198, 
      1034025102422732220581834495318863331387936439083555295376, 
      17371996291293158638707178746569606113327392726821796514491, 
      776319457651686794617539684043514404594188314040315520525746, 
      5903684451767116981310944746390795666459658254285998330387362, 
      40055084441571802468090097306449852907321997594899084971831198, 
      9722757794166618201523699432926445160742557562736499036049226486, 
      45610895243349961032616212275911125769518072945110823367275580799, 
      4094566494452006631907179660287234387613260260364462843597309077596, 
      45863691056386879011715668671389937135974579606444810970692804620800, 
      61793770997585399948234060244694261356953558352817407743149861172810, 
      4817926886266634844144958569362335205417683130842789786121724653953003, 
      880398520476302469716013022701361342289001820973002853644354559951502012
        , 
      119495729909767889226890931899865638899935342205832982613525928752881963\
29, 42403231505432707565435494527479968100158748549084350413271103941570134588\
4, 901660327970891881945374527839475846803541772566144478287450428154429782212\
8, 126476926359970834676350120968210216317016573080754774113932418213205608303\
965, 5993564337445611994432215040700168096231153089466465206097047652108021348\
878080, 
      309154099706896969617874779759050887156700778816910199357842662843058363\
34987410, 
      494009101463774165565720830116762230151174358816831960279319803029649721\
8916541589, 
      963600878921044345950501477560598435175886298481306908962111854223115649\
39919631586, 
      215845595190301741367461994641476824298066329822662042467643570622201562\
7020339610649, 
      312480390058581504051939792411687534763025599505329916985710852123947392\
34557097288494, 
      148372916778877310642891912836694991065617783217193134354463568749677131\
617564252441195, 
      138260545144467981302730859977689490578489767029620043736831168163188135\
35108101285938439, 
      462966034640637672515765791317315053302268417130287255416886964089628083\
5508426383738974, 
      484061799512735745624127408750483571842545428887332537730975081821293399\
0514838326680871837, 
      503189717706675384286189745359998683259581618814261126411285382160832321\
20313031541094886630, 
      580089712141055799261792167569609868975755891251691343916620333163875620\
0532456568868945814357, 
      129244453412585028573960700705201318240346502422635184923170516103115187\
73539085556882790034136, 
      301179331720581162116457709936596785377287123245753814879922809573612187\
9612637376908192865592358, 
      479402873138230662106125152123195307027885642575596263487390360014213900\
08616849896473468887442473, 
      107016617434019027001987553057481384732629734050834672625950461391722486\
6309564074616216388884056123, 
      163216219688581902407730346967644877857144854447361615825604338277373698\
83288722735345154814849125625, 
      552825264423694255433689309626803323782071567031179322233631679539898416\
919584881835042735642986544712, 
      188067870893160472646830361119406942139399701660012978197582528762128492\
66197434574594760259342706893036, 
      103813852150023340915314721003187239593573509867098654864930442054399851\
189027678049077028856056454695217, 
      509079806869309441854767866465656631680742870969065181690835778243525777\
000771580448133041530805756687950, 
      353442409798009647474994818079640901846098392454257362749028807118329419\
810017283645434301994928761845177495, 
      497115107385139560367924571219488431950514763215621600944857362069132123\
1600514498945280169242826012609273243, 
      168756952784357380444400743285012827151649796700283648116665433093913486\
925101539012793720611832410091904323684, 
      284276733733580449194088907727896116061678398769004414138003660879470330\
05692186206942344922240988860186925959, 
      296856243352509059023911791307321942205160395888529640094889801456467065\
49953381094200766303346897871832438926247, 
      128586596066323963713243622060433106211878428941807785365314689702332406\
5717561797587624731579103883038300637181136, 
      769548490591499706536873308614057516728074705520804086488730422327415003\
6316154972842969931079161650388517508335286, 
      142840645221838180731632965354889797877511645905685015485236302309028776\
412687931382694138470528949983959244892591601, 
      275564390148570981839371035844454256084831331209068140585685499332767950\
65845337319520825107165072939714475939395728479, 
      290158166889799660837864695502843228292572170004824365449215490609903843\
156012811197761789861839593226125539541955606875, 
      219791093947765185258481853240355143062331728318405486594026297167073624\
7862604471186626080759437667467474140468718232004, 
      466156210019281255815921431380571706930595948969770573528345243973047220\
4942613311914041907516973714042056490164796721199, 
      537515519940243664397726561760664215678527693358556626842085261234494776\
6383721233007231223187383313600701402191427175715241, 
      142478031756138346420269029898785160322364752747590124217301046363059920\
229782572961894797321856964275966076035126328193100442, 
      366188910652278379376904004443694928795420433850493789948453078985726057\
0265869898944303275688649005662014671155704882905242956, 
      570633324154198862832767702732772209855974206408936314197486575609302733\
63692446843107245760159459616125338767186199690836848526, 
      819597907786009229550663032015823547790234537944448277517902146688126243\
468364828390230257347399853416894674826532857867136976580, 
      197026995100107195027908701890882479775127976153312268508853696500730089\
15128883594755332205851416221054568445428324940527093364628, 
      474309245087881602969405721399869307512708704905676557683461884469301734\
924108516876774352038572349351987673754767357113479292805836, 
      962385835538115272068196940316173979304824404025964945447314545538674787\
954882233368964091338295008849921503513456209387971264426490, 
      371688422687008770283169305747693387626053585003716300618502049960542432\
074147320146117848579609131205973250231852990369549678404008999, 
      984583207881786992767553780289707261757012402947046123258371773265474835\
2278489037688022084717320205293675814404946899392055087552427332, 
      283798847953168892633235779396601034006241399784587559462180968590673612\
126502094682530446224090135358330869159986488770387982645741426527, 
      170104454993956913783032997224877510250889694898844279420057609394047458\
1064500264885152246008222073894130735624772802245565367594592589899, 
      150129590567226344202981727300801946989301700486046818955493732384466340\
814919608087058606052543681604557029785632852559535242819597214633134, 
      268296242246919684406363371765468177824151771598771785528305421214638737\
42685148807342411089653402061962367146986933417690905665574785582244, 
      723621698573756454324616228257329794444758492751904031343170700974143405\
15531429755464948545370156016492551916401513211533296547188712183100339, 
      144615719626224553800764766388617000455254583651516908970845481703971877\
9902319089531169287930977282722130407519756373128329970320498841745086241, 
      245714753164143905973988587215772920815362852954780982264240055746755692\
08391266668569816597401148816154199970328436981487500050131440256318940780, 
      652481148819331597799148680922987738748638698337383449672911416493775247\
035807833801779468351371995139694510831647298069801995378061612125825657235, 
      121295435111363311441704232900061607834752519356066974193613168646180071\
57314353879517342584917818986888008220311194021339424888387234443205669738729,
      496867164776407117222860271680630406293927301854137401186661988644015306\
163771798498518611259531156069698168483026515963540299721721305663332861607543
        , 
      488529288004283724622212055584800927230605304470297115827666604552698938\
757925653055423847013509086012512619515206915430040764759537662264154324580663\
1, 353505164954702231044929098801666114952866237270800675068007098897450507724\
10718579902325974375356126882824916845074318013758407034313011615909768621656,
      493548171191143178380201412375761016455993042293492534683308513433619532\
216544803523825128389893902458556792196631709063243091153228322313103775650008\
0312, 103291651691475661567378385683054496087522060946453147852963209580619574\
564781309592306663344876510917097270716291022273032664757191532176023744745731\
999257, 
      328897400002370419555101438117421574352899979165416914481160541760263694\
084224094965273889252651833033898976741946244957836152036751460639820144481160\
9875839, 
      366819796060789086159024275326642105546881854806861115378897574112838023\
582970616316863734383039538970729515523797732005349031609467894650171544971084\
86673230, 
      729057635464181201144271840011242556315246410950226618261817781941187765\
407939363747644445294334832853208010507873228694019058260806767747241346771417\
994612142, 
      180742993921716524334392335282720240025694192670626271450060449143452324\
708716728213308836000514675591142831189780716482696159106853244138860734675922\
36851799637, 
      332857243698362140101689870839735228771047820459827574933106859357575308\
916367919738219148885960395352433754518183665917927084307410757742657155869353\
350288381192, 
      104379714918438183083250582103860067976877233959167155738885081169098222\
672931857625757120676369314908877661025861854637286513200664673008663064260901\
90298559253319, 
      523237791206470051716588652223990494774506591522909335762640876430018178\
017199488030980729300849416669721859282147074769501963889817169087920373648480\
287524659811024, 
      132922049944184960490191954338558120128178476071927830433697658068591818\
571290982623079545921436224657834137894606685286451066327672611353034949610894\
163105142392172, 
      262162335168510477743660317289908796428516946230568156912933397579036610\
481059701746076803596610934615365555888291590564434613070978951638022579634225\
090677301968636734, 
      574366346629806346490598077209089805962782765241308997553368346889151680\
682085628083116985604831290857466861350456966284324389770644156021895701223441\
6121907164606408394, 
      125387636781692082932134530731701531041778626348989428444482151196345714\
913232475510564214163185607349501421723573249818817709939792615152687872348933\
629369513807114271308, 
      352516207952391402870336088628114978104149268881232525534104262960375243\
269462305876561372101649591872546120692408081659126245352562262410159020833203\
7078905384551630697236, 
      244664507199288123298767035680062185623401494998581110910434899979630043\
799379173911965584417746588381878953908704246321227864942806516787645091212364\
28636392407700263193905, 
      532199504550430403503808512272422610036419828589797576305576960559893833\
464580573424517191802333799363500201115831300192432866599355016890063500443672\
095266874706499507913359, 
      279942115231733724409315377101565053156012582421005394091219306763888378\
456584123276770246012775786553045038412454615774775862072869588430062920689660\
15377355860830392859063988, 
      421596579292627181778052519072580258337793717768202359451018474673479033\
593075416401676277301488951025559431615017081075859952355585879226489536914082\
011723269347644961327887425, 
      184703122421190000518207836137297484645228632681274466528098492417481697\
981646934989088402155993505786959766067632283985730380870843949198048759794083\
5482305457474683575844518183, 
      385352515455426452947531355189466821118915033568310993764690137341408551\
602264372772246347340719882296328301062985440246472060647671774472219144065265\
405720143875079762964205819269, 
      943918539036686224299453895133021281148417811537718687806014204471375512\
201715533461312725378518791316312347789733333318091709053524138583953453925430\
7508507166245412338997259468472, 
      629425942828653006994559576377818610421131623819526036667426287055854336\
546809051770040587542400330849240267800560212715489926408480530394908381309196\
85164658856420846043060426223075, 
      134511176304873498882950264417575215195973565455388146988801791391537796\
049512315837554028659949203093298168146339440247671409797949217794734380212009\
9843525398597580111508996262075911, 
      124087966176196444698110859974046789036449149606434013494154749028235494\
960702833793607409684065973532866755339142966416018709248609291384146563909183\
406971995289223139755680405501440488, 
      237026886283622858492482147619031288526384480411311123175707987408310635\
198813317300778740499049489329049822207477076937671110450001551922051447597847\
3781494582820321324162865024463112028, 
      332603966220896106409869043799574709607704265308392372223484768476968106\
709832848347203754388161983523253972286299622712767922348366353898351149929575\
94237686472698953522810569222152084544, 
      184820602083605844647351898691236636482255782990142896226820001548295262\
504596791553260660931590268675820704919337813591944996326874259368677374271443\
1152361881196066389900401965849683794995, 
      191176700363803232395110851923803203130461821742439395024220745651605069\
819884133610839943004930917227901056478499355471070314443791313293475188591840\
99957739105472876590869729160578545730436, 
      746407461439607565247632568738773820915786783817170117580765178401825545\
341551642660303445788151279650219251372643315682347316354251361334993147992758\
148789157610669888965560717187530996102614, 
      177599007721461135460515102068327981007171182841548537828574596016111892\
363812537736682704448914460768931567629861837446295445361555699053261859536307\
03687642325622641427834729610867425569166648, 
      415375187815468248171166910478991447743880241978191050097448525984787214\
588516484160899990995159511761623807030667383252954949454760302067858254672101\
827405920317925034489788253183502261307581063, 
      312071461736610525425085629881820270653640869045745329102325739938715021\
384833093955721129948470449499122137674738402833606817636055004391814566885922\
974653193784653909472062631142449228722764137, 
      552075433672557432233694481523360937984023147468960746492007804206658555\
089348798568391198431337296539107980943219010116528459191126224108309403021263\
75920722692088039798982328114868995512515109617, 
      376407469153174720722212982733754649932355044180300847331507685411354478\
929602514062923225919161778743254170533052498364637619617883425947356594711788\
5994882060075712949193276483968201166660699414746, 
      149833516815575998968048821813600550202103306942516439857266034506663154\
588357118479193005218359160443936734311298858642071743949432634437358139753902\
4468450647526980570414369192180433586564205769955, 
      160835222672456670996602484639933476364667049233256441872846457543902979\
881751341990330013964992047745622715099095543587246848434379653449720461192325\
2022300607731574468937442347194063415021890806668250, 
      654555922863972019694873905429997626608510365525956798330471402147035355\
123563073470455519975038170615480980653907479591639714551317974382692502767212\
56790795496801437375278572491202241066785407095428563, 
      867761633798978815414987361745938345083746117622942125247240213455946565\
559174998145301843878476151707800387354715454501194284730920355250140345023663\
277214773211972528506135978554023549375356955416173069, 
      103966365937906389617066774421413603464231540659637300659461412917059283\
829511111383623327966081641758957069061591413008334379810382163461184529684996\
86327032875961036808626499145484176362397885379914969920, 
      221871486862736925710889603460720978740459561230329442758161960529139484\
964052783016661946256436485001143318017449711954102242755944731759948102145803\
378903860930685727518031634504933070252541226585664555328, 
      418403535814453985181865576807524351000323713691601745117314639098087230\
167594205765827473631598887448911271149295758163232263959197415225292575993426\
5957154649408420071725125500733996505624570999153533069651, 
      470004621981135841018647509061866457788929362840916964558724958064710018\
287307155773959210904081815301818743086527344668926499919173691122157664495848\
944272870037181322069824378809245659381155482742288890250514, 
      103524024182617581472470646853590132603817650310131670831178866084336240\
129982410856667779671165651626410370285230278912979779191025645932840365537698\
68397051735739497767247501585772841300025045906844565531714246, 
      219787504612970822402674918635806183431681490463231401579169481883603240\
062762812804045321591160736467675295679277434876570030393366730439845017533003\
413875024993803317537845782114100350893884754164841173890117279, 
      869967321968643076689700175778707377425170577821844900320247452623852329\
718672820164530828125087170518717461378537280738391011099610445924552493187022\
087278685013041622916213495074430083328259545493816338497651674, 
      565022280907674599443481639614965116038501512518991846588921979600883621\
424190891664584299636910843323718116837958213886534223955410131230356904562205\
37420907978567456998602144668181332888773902141390039781337042247, 
      501759280219526778237372517031175354935939866953766434986336235982249849\
059390751480516717457404285210045272422747692338648231265932933583758252814244\
236253574169575816536204536232619156969889624666724664743159063066, 
      739777171212496110478321923784618145779932162494706494566720845658262507\
690917523500044549130522323554912896582022058858884779589852822628817380197589\
59699481618388624516406582729101736757681748593667022076777893255787, 
      735306392495798447553568926816257294677329462332522003354579578208432881\
185906304943284689278907056593908980923632585918161011648249335051208405847919\
556143926495614133089936018306777628044715123460874053230755136868408, 
      139894307362151207026824256911734541554508760710421724853300310749217237\
868300294156268942003933366614085245901832676671452342297276587643138340085761\
4716029016752287789076383300726123479437613924798581129490003275568805, 
      128786385908577307981454942664857213887993657464500493439024216349157362\
234624850833193447409403482490232930534994931873750289757739699916127555256107\
257952935726656593242404437257140378553842980639913045672224790097781873, 
      140621913817892057750138189452947696184863414112830011373096812793790262\
815060778943999260303483179455310520310819042268698379203688330359115776480704\
87876791472683259285336017949186667202628486377434716315715573734753584714, 
      475594947627722608780151241699568590661025276784236979236664121024149289\
646100222542083442240355312946304283237925300723175621473576593419580290446025\
143795623514519497567088379097904963839930684545807577822330202670433094150, 
      108358763931560390463316233821823984133225188646645269884212072942101673\
591956170386031862576020962539974305026821371676180369083163966490786229133612\
22204741761339318792455452293727069973363580459212571008595872054520065514780,
      151933173780064798630136025906865379223279964384100249997319585544387353\
732953309310832880873826118080478640824194544032758217680143232800347690925916\
772992440309011573408598825426783682164433747460348205458690784951572019997220
        , 
      270725770853844750888141737504112223382438212712544014348291647258604299\
953307039033167311983138262282488722354554056024696295689630625227878579681891\
541134716065069648585122040557623964282498513231047713282255852356371663255762\
9, 964053885654522023483343002337441838220260748861287696939911009855318775815\
976965976887294629743324482001757385244081494634639349722912624087448839230009\
18620231007468457783527475277362166432030483913628695082947948686920049588393,
      334090650937321416315281809801736593888323432671987257581135756443824619\
275286157213116923854390184570432671471371331450230962714470821618740161581820\
775241432579886964503273956368185436416708910943748023070916953567668169598794\
839, 6472153775994594948460958907551112647812839148791288703582127820398966923\
454328455591338564449331110584049950449312398696547665938055998019515517061640\
487130059161239795932779012607139026412584780060510079349382906776361589336130\
0562, 115378546858365375075182159084664217497350057465926212686271660949304642\
507493263965333994456843899217019531064403893298361125495942697228074710637385\
269629982099861278173052730517038196159061919675449575430801880098308188003414\
7486027, 
      410649603957032634577962717172447204320597403767317329942022418261409575\
941193241756729799258277196505056154229994239900858541295720864026411752714571\
583003048631362899027129651230548806078689954126720769484429244035775896109971\
3539380, 
      165610345442072496159804892002371103529181582496973759055602756434301210\
349902034282487874550941714883211693103783983386171671543401232937373159342411\
597523397570076145953885891332136873464117810680185636490695202641602084812826\
305194164, 
      701908712505094801172525230659229586080125359335993992119043062407238259\
801750655999259093022890077858918050378899400430883995666996550123097651319522\
955354723127084267702617070274285387492324366969517331616782161864568626946042\
7090694914, 
      100040548659137672498872133339062690034624128516274004331349394457074143\
871755278187515394168173312475245246004677373448367441097728297416507930167836\
749670983464872363046077148073079771461499931412036806522951777998854800871124\
046847847298, 
      306609204610302413730173047943816481207307001220374342234959590601476112\
851385419306477395741093041899063988193803428239181218964463161766010520553319\
710628032372929301281835116798845057604247020495593738607141806430973444923822\
2100344285776, 
      348129400239716867971691337864693127446036626094854262016547466548164041\
898241520623510610041889777584569078667850719662227608511328371760303158649788\
846689079111557245304048389403834696918831439838440689874754023409885931851322\
44553974404797, 
      789796731620853791568044323436724422375256026892436505549060925470749052\
081925965370029570604743458515834382597658486753699803614588494109921483468087\
792623618134129872399164880357033462783604191692461277394170487310149757282226\
324844406655217, 
      124395758753740776680459373060629529836984607141415319854512882704909117\
008233277479371359213971691499861942075855491600465435590350566229181023308723\
353287216515080769055334099461335548526600910954837626724797969369230926373283\
668556441031454662, 
      417802471027431655739495447098027219436510438226098911435453229574026248\
551338835680745642849909289554876388394161339492707196112117313384148464754618\
442297893992954702499158221708870701812526617405312015741516187787069221602297\
725842691120610319, 
      103808722969496829998082749460251643501487674364746766790895826935081323\
466018909638590141072983496700971480366334562746299332513509277297093824469027\
755644511632213339134875718831148663898992839555886305820976250744303990680944\
17957152650325846276, 
      611790215964863544892868809426821626668261997901504984711159777897227284\
575705341495961558229851242143214246542800774190997189398010483456770672224198\
948937382896065557864381800328487952511446960661847949372482387433611020076984\
173750860156351038206, 
      703057379438702748739827168981208679111097730250754586118762778917195544\
740189651348930792299428418957395429849921414617729296963299441861412732821125\
403107901254233632245113231222399856529728947231062329929940151787613519331003\
8408924515663735889315, 
      599821823415957520844810835827621592828073628964939664895600566071366050\
503443439650065656310862877168603499839096063304166648281259074647951676614683\
671810125725074438805780351953847947293916536065302808483186401393225501854415\
504448437404699105078159, 
      162564585853208777684263655146873524532092032468821703995549255597561036\
696374001688850476869530662805108751693831990068960353633064924807450217122028\
168151953703137969494346186098502672717707272088126060749787026536428391528949\
79092286629341554258260265, 
      335291166505529345201503935617880451129831561952575732926168310082319516\
144844203043008439357542843344044391550143585338316894299088139828328073799643\
977307272625820696498713252466865268250525858263947703239054048054212158665566\
863647028464202719534510677, 
      207046061029822810433496416438711614676541738047935920624792765007119991\
379494732830848011205360571298935632651472098880152193564587323257068053219088\
844268454080215080240310115907551037155932584618582533704649299661410961818600\
6796815603738548264992229612, 
      131370585599043270078827603774131387594312957448392369171737792628910985\
449995285157999205789739475023919374094846505298818983311948741746313502585913\
638654743629361071785008010980757100280559640915943247895428986197186135459960\
369071774885222388739539448352, 
      348811189647687272085700525958339924929029673565126461662447669386755894\
910702020599355208153730391656485087685670015547974042495018748087862579917184\
894915423748380704301134347286661906125893949174485309254968925873227488445249\
7168058457828867024071519887301 ] ];

