/* This uses the PARI library to do path integrals on genus 2 curves. */
/* It does NOT use MathLink, just reads data from a file and writes it to 
   file again...  */

#include "genpari.h"
#include <stdio.h>
#include <string.h>
#include <time.h>

#define NUM_INTS 150
#define IN_LEN 6000
GEN infinite_integrate_on_curve(char *str);
GEN integrate_on_curve(char *str);
GEN integrate(GEN, GEN, GEN, long);
GEN ft1(GEN, GEN, GEN, GEN, long);
GEN kaps(long, long);
void initGPS();
GEN multtheta(char *);
GEN mysqrt(GEN,long);

GEN p[NUM_INTS+1];
GEN w[NUM_INTS+1];

int main()
{
  GEN ans;
  FILE *inF;
  int c;
  char str_from_math[IN_LEN];
  int i;

  pari_init(1000000, 2);

  inF=fopen("fromMMA.txt","r");
  i = 0;
  while(((c = fgetc(inF)) != EOF) && (i < IN_LEN)) str_from_math[i++] = c;
  str_from_math[i] = '\0';
  if(i == IN_LEN){
    printf("Input too long!");
    return 0;
  }
  fclose(inF);

  switchout("toMMA.txt");

  if(strncmp(str_from_math,"int:",4) == 0) {
    initGPS();
    ans=integrate_on_curve(str_from_math+4);
    brute(ans,'e',-1);
  }
  if(strncmp(str_from_math,"inf:",4) == 0) {
    initGPS();
    ans=infinite_integrate_on_curve(str_from_math+4);
    brute(ans,'e',-1);
  }
  if(strncmp(str_from_math,"th:",3) == 0) {
    ans=multtheta(str_from_math+3);
    brute(ans,'e',-1);
  }

  switchout(NULL);
  return 0;
}


/* This function does what gGIntP in ~/m/HypCurves/GInt2.m does. */
/* The input is a string containing a pari vector [rts, lst, pres] */
/* It returns a GEN containing a two component vector being the */
/* two integrals. */
GEN integrate_on_curve(char *str)
{
  GEN ans,dum,rts,lst,a,b,newp,st,k;
  long pres, pres_words, lverytop, ltop, lbot, i;
  lverytop = avma;


  dum = lisexpr(str);
  rts = (GEN)dum[1];
  lst = (GEN)dum[2];
  pres = gtolong((GEN)dum[3]);
  pres_words = (long)(pres*pariK1+3);

  ans = cgetg(3,17);
  ans[1] = lgetg(3,6);
  ((GEN)ans[1])[1] = lgetr(pres_words);
  ((GEN)ans[1])[2] = lgetr(pres_words);
  ans[2] = lgetg(3,6);
  ((GEN)ans[2])[1] = lgetr(pres_words);
  ((GEN)ans[2])[2] = lgetr(pres_words);
  gaffect(gzero,(GEN)((GEN)ans[1])[1]);
  gaffect(gzero,(GEN)((GEN)ans[1])[2]);
  gaffect(gzero,(GEN)((GEN)ans[2])[1]);
  gaffect(gzero,(GEN)((GEN)ans[2])[2]);

  k = cgetr(pres_words);
  a = cgetg(3,6);
  a[1] = lgetr(pres_words);
  a[2] = lgetr(pres_words);
  b = cgetg(3,6);
  b[1] = lgetr(pres_words);
  b[2] = lgetr(pres_words);
  newp = cgetg(3,6);
  newp[1] = lgetr(pres_words);
  newp[2] = lgetr(pres_words);
  st = cgetr(pres_words);
  gaffect(kaps(NUM_INTS,pres),k); /*  Note this makes the precision high */
  ltop = avma;
  for(i=1 ;i <= lg(lst)-2; i++) {
    gaffect((GEN)lst[i],a);
    gaffect((GEN)lst[i+1],b);
    gaffect(gmin(gmin(gmin(gmin(ft1(a,b,(GEN)rts[1],k,pres_words),
                                ft1(a,b,(GEN)rts[2],k,pres_words)),
                           ft1(a,b,(GEN)rts[3],k,pres_words)),
                      ft1(a,b,(GEN)rts[4],k,pres_words)),
                 ft1(a,b,(GEN)rts[5],k,pres_words)),st);
    while(gcmp(gun,st) > 0) {
      gaddz(a,gmul(st,gsub(b,a)),newp);
      gaddz(ans,integrate(a,newp,rts,pres_words),ans);
      gaffect(newp,a);
      gaffect(gmin(gmin(gmin(gmin(ft1(a,b,(GEN)rts[1],k,pres_words),
                                  ft1(a,b,(GEN)rts[2],k,pres_words)),
                             ft1(a,b,(GEN)rts[3],k,pres_words)),
                        ft1(a,b,(GEN)rts[4],k,pres_words)),
                   ft1(a,b,(GEN)rts[5],k,pres_words)),st);
      avma = ltop;
    };
    gaddz(ans,integrate(a,b,rts,pres_words),ans);
  };
  lbot = avma;
  ans = gerepile(lverytop,lbot,gcopy(ans));
  return ans;
}

/* This is to do integrals to "infinity" (in practice if you want p places */
/* precision infinity = 10^(2*p)). It reduces the precision as it gets */
/* further away from the first point in lst and assumes that you are always */
/* going further away from this point. */
/* It returns a GEN containing a two component vector being the */
/* two integrals. */
GEN infinite_integrate_on_curve(char *str)
{
  GEN ans,dum,rts,lst,a,b,newp,st,k;
  long pres, pres_words, lverytop, ltop, lbot, i, newpres;

  lverytop = avma;

  dum = lisexpr(str);
  rts = (GEN)dum[1];
  lst = (GEN)dum[2];
  pres = gtolong((GEN)dum[3]);
  pres_words = (long)(pres*pariK1+3);

  ans = cgetg(3,17);
  ans[1] = lgetg(3,6);
  ((GEN)ans[1])[1] = lgetr(pres_words);
  ((GEN)ans[1])[2] = lgetr(pres_words);
  ans[2] = lgetg(3,6);
  ((GEN)ans[2])[1] = lgetr(pres_words);
  ((GEN)ans[2])[2] = lgetr(pres_words);
  gaffect(gzero,(GEN)((GEN)ans[1])[1]);
  gaffect(gzero,(GEN)((GEN)ans[1])[2]);
  gaffect(gzero,(GEN)((GEN)ans[2])[1]);
  gaffect(gzero,(GEN)((GEN)ans[2])[2]);

  k = cgetr(pres_words);
  a = cgetg(3,6);
  a[1] = lgetr(pres_words);
  a[2] = lgetr(pres_words);
  b = cgetg(3,6);
  b[1] = lgetr(pres_words);
  b[2] = lgetr(pres_words);
  newp = cgetg(3,6);
  newp[1] = lgetr(pres_words);
  newp[2] = lgetr(pres_words);
  st = cgetr(pres_words);

  gaffect(kaps(NUM_INTS,pres),k); /*  Note this makes the precision high */

  ltop = avma;
  for(i=1 ;i <= lg(lst)-2; i++) {
    gaffect((GEN)lst[i],a);
    gaffect((GEN)lst[i+1],b);
    gaffect(gmin(gmin(gmin(gmin(ft1(a,b,(GEN)rts[1],k,pres_words),
                                ft1(a,b,(GEN)rts[2],k,pres_words)),
                           ft1(a,b,(GEN)rts[3],k,pres_words)),
                      ft1(a,b,(GEN)rts[4],k,pres_words)),
                 ft1(a,b,(GEN)rts[5],k,pres_words)),st);
    while(gcmp(gun,st) > 0) {
      gaddz(a,gmul(st,gsub(b,a)),newp);
      gaddz(ans,integrate(a,newp,rts,pres_words),ans);
      gaffect(newp,a);

      newpres = pres+10 - 
        floor(gtodouble(glog(gsub(a,(GEN)lst[1]),5))/(2*2.302585092));
      if(newpres > pres) newpres = pres;
      if(newpres < 27) newpres = 27;
      pres_words = (long)(newpres*pariK1+3);
      gaffect(kaps(NUM_INTS,newpres),k);
      gaffect(gmin(gmin(gmin(gmin(ft1(a,b,(GEN)rts[1],k,pres_words),
                                  ft1(a,b,(GEN)rts[2],k,pres_words)),
                             ft1(a,b,(GEN)rts[3],k,pres_words)),
                        ft1(a,b,(GEN)rts[4],k,pres_words)),
                   ft1(a,b,(GEN)rts[5],k,pres_words)),st);
      avma = ltop;
    };
    gaddz(ans,integrate(a,b,rts,pres_words),ans);
  };
  lbot = avma;
  ans = gerepile(lverytop,lbot,gcopy(ans));

  return ans;
}

/* This does the same as gGInt in ~/m/HypCurves/GInt2.m except that
   g=2 is assumed */
/* Note that most of the computation is done to the precision of begin and end, only when the big squareroot is taken do we use pres_words. */
GEN integrate(GEN begin, GEN end, GEN rts, long pres_words)
{
  long lverytop,ltop,lbot,i;
  GEN end_min_begin,ans,mid_point,dum,dum2,dum3,dum4;


/*
  printf("from %s to %s\n",GENtostr(begin),GENtostr(end));
*/
  lverytop = avma;
  end_min_begin = gsub(end,begin);

  ans = cgetg(3,17);
  ans[1] = (long)gzero;
  ans[2] = (long)gzero;

  ltop = avma;

  for(i=1; i <= NUM_INTS; i++)
    {
    mid_point = gadd(begin,gmul(p[i],end_min_begin));
    dum = gsub(mid_point,(GEN)rts[1]);
    dum2 = mysqrt(dum,4);  /* Compute the square root to 20 decimal places */

    dum3 = gsub(mid_point,(GEN)rts[2]);
    dum2 = gmul(dum2,mysqrt(dum3,4));
    dum = gmul(dum,dum3);

    dum3 = gsub(mid_point,(GEN)rts[3]);
    dum2 = gmul(dum2,mysqrt(dum3,4));
    dum = gmul(dum,dum3);

    dum3 = gsub(mid_point,(GEN)rts[4]);
    dum2 = gmul(dum2,mysqrt(dum3,4));
    dum = gmul(dum,dum3);

    dum3 = gsub(mid_point,(GEN)rts[5]);
    dum2 = gmul(dum2,mysqrt(dum3,4));
    dum = gmul(dum,dum3);
    /*  dum now contains Product[mid_point-rts[i],{i,1,5}] and dum2 contains
        Product[Sqrt[mid_point-rts[i]],{i,1,5}] to about 20 decimal places  */

    dum = gsqrt(dum,pres_words);
    /*  Now take the correct branch of the accurate squareroot.  */
    if(signe(greal(gdiv(dum,dum2))) < 0) dum = gsub(gzero,dum);
    dum = gdiv(w[i],dum);    
    dum3 = gmul(dum,mid_point);
    dum4 = cgetg(3,17);
    dum4[1] = (long)dum;
    dum4[2] = (long)dum3;
    lbot = avma;
    ans = gadd(ans,dum4);
    ans = gerepile(ltop,lbot,ans);
    }
  lbot = avma;
  ans = gmul(ans,end_min_begin);
  ans = gerepile(lverytop,lbot,ans);

  return ans;
}

/* This does the same as ft1 in ~/m/HypCurves/GInt2.m. */
/* The computations are done with three words accuracy but returns an answer 
with precision pres.  */
GEN ft1(GEN ain, GEN bin, GEN rtin, GEN kin, long pres_words)
{
  GEN ans,a,b,rt,k,dum1,dum2,c1,c2,c3,qa,qb,qc,tm,min,tmin;
  long ltop;

  ans = cgetr(pres_words);
  
  ltop = avma;
  
  a = cgetg(3,6);
  a[1] = lgetr(5);
  a[2] = lgetr(5);
  b = cgetg(3,6);
  b[1] = lgetr(5);
  b[2] = lgetr(5);
  rt = cgetg(3,6);
  rt[1] = lgetr(5);
  rt[2] = lgetr(5);
  k = cgetr(5);
  gaffect(ain,a);
  gaffect(bin,b);
  gaffect(rtin,rt);
  gaffect(kin,k);

  dum1 = gsub(b,a);
  dum2 = gsub(a,rt);
  c1 = gsqr(gabs(dum1,5));
  c3 = gsqr(gabs(dum2,5));
  c2 = gadd(gmul(greal(dum1),greal(dum2)),gmul(gimag(dum1),gimag(dum2)));
  tmin = gdiv(gsub(gzero,c2),c1);

  /*
    If[tmin < 0,N[k*Abs[a-s]/Abs[b-a]],
      min = Sqrt[c1*tmin^2+2*tmin*c2+c3];
      tm = N[k*min/Abs[b-a]];
      If[tm > tmin,
        tm,
        N[1/(2*qa)*(-qb-Sqrt[qb^2-4*qa*qc])]]]
  */
  if(gcmp(gzero,tmin) > 0)
    gmulz(k,gdiv(gabs(dum2,5),gabs(dum1,5)),ans);
  else {
    min = gadd(gadd(gmul(c1,gsqr(tmin)),gmul2n(gmul(tmin,c2),1)),c3);
    if(gcmp(gzero,min) > 0)
      min = gzero;
    else
      min = gsqrt(min,5);
/* min = gsqrt(gadd(gadd(gmul(c1,gsqr(tmin)),gmul2n(gmul(tmin,c2),1)),c3),5);*/
    tm = gdiv(gmul(k,min),gabs(dum1,5));
    if(gcmp(tm,tmin) > 0)
      gaffect(tm,ans);
    else {
      qa = gsub(gun,gdiv(gun,gsqr(k)));
      qb = gdiv(gmul2n(c2,1),c1);
      qc = gdiv(c3,c1);
      gdivz(gsub(gzero,gadd(qb,gsqrt(gsub(gsqr(qb),gmul2n(gmul(qa,qc),2)),5))),
        gmul2n(qa,1),ans);
    };
  };
  avma = ltop;

  return ans;
}

/* This is kaps */
GEN kaps(long n, long pres)
  {
  GEN gten, pow1, pow2, ans;
  long ltop;

  ans = cgetr(5);

  ltop = avma; 
  
  gten = cgetr(5);
  gaffect(stoi(10),gten);
  pow1 = cgetr(5);
  gaffect(stoi(-pres),pow1);
  pow2 = cgetr(5);
  gdivz(gun,stoi(2*n+3),pow2);

  /* N[(10^(-pres)/(Factorial[n+1]^4/((2*n+3)*Factorial[2*n+2]^2)))^(1/(2*n+3))];  */
  gaffect(gpui(gdiv(gpui(gten,pow1,5),gdiv(gpui(mpfactr(n+1,5),stoi(4),5),
    gmul(stoi(2*n+3),gsqr(mpfactr(2*n+2,5))))),pow2,5),ans);

  avma = ltop;
  return ans;
}

void initGPS()
  {
  p[1] = lisexpr("0.000063829777133323624258978492060020237277427207403062550950115815875748296520926774028389420475051462513687001551568847532973938387218064127811377889198394194920862493567193157410735332472348480727650758845294661013014273430614069704513384526014714502533077655950700350627057869795566146931508777984731934207966940685790440931348897183975454939868110409439083472420524940557646119782271459896842962499185159959429934297027565516293699061153101692965399580928368565997233908515938886995796429595016698573");
  w[1] = lisexpr("0.00016380433527688420758085691396265797635706379580488275622816080547375727850701934579350223411878184979174235915232801893772773226492422718189312871795519285672477141876470526145239688524206216564636597378027562760422870044092432149358201228684566030666336697442063958329922551289696437565124679274966977605337189837831745558749238119811473406615476522917351054596136985834637196429833479503254527485333348669611319752213300059150489830170465101499217707668411224256277162909217732140570125550276583096");
  p[2] = lisexpr("0.00033628474670264676367832289442351397973760128308032951350404510161690211272856943399726706515134389227146138404257856751257274966805936416920622111194272103067079254417812275025848072056384390489430950215056756885645438060225711993362379324459440564504990588864607346588537134977429232607079001847796749226029294645424109036414543144697569349459014668924424942277996993225432572742847874413953695991655623815360207126689896470140843711735547866247022631706114093276306937083708576587161539181799430541");
  w[2] = lisexpr("0.00038123604660605907708543416325110002127464657466440211826854239484192663924027538786818619156238868089713893475800987995051667932820586084943388208159343818783511659429202617946334864456520510875158857376123266743622459246338896803160534391681580972439403879774965076739031585000598156864088786717547591004162817758580748805378683539554131754091983202417575858503440109231373838579486997653749196458154850131875521232002537781911956615828270108086314632095476197009355792214321815940472121197948579716");
  p[3] = lisexpr("0.00082632753295831595301508909602318978437966317409248570993920187994221063478349301116175705913439854665542448634513293049909800295651125112924733646668193002114700491718211063780518774362774023229134172860211277148925511719183257463552718722527962916235759237993114946728691149266610209391639039994692436898847329085022211837287568986074422847540171937729803318940089601358458297852428523690727313852856158673069237910515602389911421181491064142482382495655836310485449658288833014297280512168254396615");
  w[3] = lisexpr("0.00059882374323481230916460312134059458504621302489919590144992281533571222922693979610130015576139980815454733008311854600958908296649634470447519994177036225299917855518570902601563266908745988588685948364227345538710892766906275455775046314131864712595364619101054486673674767902181022032470698375745342075247766315714903650898511424276940194108567394783949901605966972923009942743919215635473416402268164300083935130808649548849815421764952440356020374159556094332841831365813062183025271444347156253");
  p[4] = lisexpr("0.0015338535112001850715516722780475847332705551399490180992450138913126705301232700231811582710249390278789053698773551122398382288159158999108335872878912034047794927264064188518858511033101732731082023429926240358150723544891122356098743268160684685827797298346677963331865975606626624766251538021666156477982543276187914467758657796372645459847198255737715743332004747971316923739348087278685765834580284052725087823547822862875504519310165399297092228479891956265238630681023724629192116553501572438");
  w[4] = lisexpr("0.00081617849930525453684280561924821820069988476357816199497838425512936886058630375456264875472380208254025141770614398050703211708019616010809356049224349595387941254893485167080794522110986795889725924679875438895456885664440932784325921086043214676956196288265047668105839164660116131831752211216283193140605321962203333710056796056608357829353212729991632526729478352248634200947041598964084342368936441799190689045812085150201055270299602968812605044298546666180538242077552498139212903211328177471");
  p[5] = lisexpr("0.0024585677372355230234381246772621009054914124075147537294202211598595350787801212101467710474691219904919850553840806810084532542367133167857054375725425185221647912144596318035735206658901804789528504680512405299028200537390776024843972567102130630959560568276839671424438817780974013001750102265091680542085635939198922849221309196496150081607101874483627954584934076050341309586459813147269044495758141709829871924747390512062008339783855422337358233734546837720279806311420801291464607106626397599");
  w[5] = lisexpr("0.0010331832462069099052034551242936927982091191869587408242771703153732404929734736228772348612398063775387948652448389457867799939144220190858134781705629991204891033738233025308057614312767369663334681911367707747425112052344202103689752271244493950219039065269675729139845424697860270822089016841587046470513462865547078491464752879733771298153817494183398042365668951708750056242976633435704616754219076461126713703105698667663457580899027946818905127497518268834307930486019100560556154148789099356");
  p[6] = lisexpr("0.0036000704782813747415107792887158352996469234268491315541960139519942520613419753783476129956131867333163925847439300381279396595577326024757861249563670713042787652581527491365188231124378169647977159859310068037164924035730177932335101753955633554211216823976469650091872979819189732774894015642164506035462015220574905478715538678381126718518411719499776282519003237602818062485367752401590899147021642935154192012822350982701580792809475294261278389971997276345001684588289014451868886838101459435");
  w[6] = lisexpr("0.0012497394944472259323671315199619586106181924100600054974380738149534676894917347714510908637494564480234099511802629562838822869115714920506859545962924993818456134924154960475363820469663365654979738504064592108971286213643704927595945494358388118019360981068009897243295225197567943474591138948414850022385528511574063627002697637902924739630857295980876073105629886109086594439923657730375611456106480182326840728140431981055067848920823705678787008698422097889156698702027945286674615796933011207");
  p[7] = lisexpr("0.0049578654169904057138579085872417324427459545809771946450345540395748071954246678768415821198312124206846303376228379479871941641415661675280675001411552917277804428470731561355201544952116106185717470492442067685750204026434830323478801888921770397331955256572915364012016810127251501555806043788649536427735852212648028896429171082346168349505474863884427421134611279631876969981209070055908543977349953452533304648224650094339301151910074626868055303830036611445091848614657356420595926261362475142");
  w[7] = lisexpr("0.0014657518418279314666307101806443065954984934926524661761796780223556749629365548247267515544598642290770831734022035729860969016363495240084516447077916689665415562019324570863900601697932297152658526373137628851672355573030424829379308615872421726403846817157426858740102682352722775000219387789400456853013891128984797579100561971043121861105083906448686344896900307683982098653929645250578115462067852743057938370143501830791843509885314141890480196244485422953193769662087443860396333406125534072");
  p[8] = lisexpr("0.0065313613643602807316441127037765739824886084274152278701925917848394349840026607618097381077415379673089454659021506550335496049790236012852054414343943873547383629088136240853207246794653974240728811242866579919354761220241087505083269728547801341038940363979249173592537970220236214413384301745638774919514540905607817228073586655068388917654502189534211402404934931912763723483341203350735935901993826975823283953668521254594271447353133212466391132990460019706398034804210389075375717925978156236");
  w[8] = lisexpr("0.0016811258118389156588234058836630028066673844847386805846589632710725844073391278421014250257816357259050537857572592441271666064663489735202898051091961307080038013224056607867192254142277728032074822455679239603421501602404136368157807906330151904852733508006452764183461274509494992329626562916816717878181625166269055700857357718188289103909557932682569627728778514598513757013938856687072456149231157864922508100355775040671701741414116910969694990630530210053033376461339202334903851137991305584");
  p[9] = lisexpr("0.0083198729151235417119946050524209820741951934603185952716224276792977164607833875652119825715952339709756788145095941003388084634677985514622686368887357617008316074735621694867281979969932341719064903462965103316153187719711458828459781777304425523720313455881519155003193922328322587699566846416012674083068150750495386577728830601240252661511225768239684296994186404889035503387087314465392467820426690366216877667832293321373634024436694909670071561650908976915807854981162940095517828491238172663");
  w[9] = lisexpr("0.0018957674181725523623827779107465910507295056539161140139736594944355151063929722158620292300881174216976891032212552372738418282873219424525596397298979378178699090344758006573543447676419285046157312167630847766437106407697326212008878542700672515017920185626548528831014073204055049340688804835480585520648955338648022713987601369910934902926133408291768792255176539255650547682446193952019572889566231692824552400896118714863706065971524320233153811332069342071917363877598082421873854176702219188");
  p[10] = lisexpr("0.010322620878705302924080901402871861992244599132025966954973583491067848308911682194809729187748470887704284719507388186578794937257360314927465979456376286848426275581953481462569088692424570679905864157089959218387427414971987941678428294069358308052074488394134283584728204327525622677489015961393388909070869256600089531926445671555874982540884178839141173949264077062578532330841637878227072923821865022387429466363820189691029409312851258610366823822403784002705230595755097051022407800360754179");
  w[10] = lisexpr("0.0021095830714959556636061660011694333077475595551374412302715818256885618502152808904137062483727645652549598833243294595211549130516856962165205891646391707751589933803618745930345006963586138779040702942674394423946279637405129977670068728052031889549704844291901372711431228922216319829041190129163981449324820558956930028053984750417677268137720667498060273866117393322065370175057492221691863026325622341609753065135703061187353029267138395957088100574451728454781458416159270737388292446764912984");
  p[11] = lisexpr("0.012538732670202860861834925186717432944371905507008000344798934342568359900342237966783877967686192650774229491792497022423129180848219371211080684431372334982148985124273732893942757952280568107330094452359193724759035273695978596002021040959698494873290968990020111045080412359329595263652094893235336150680872572377472551241422745181693337831608602425845987542382997755795640348565962298127477827032213591905507606768693444153542696573741345024737371804583035954951852284646681362555098399151964056");
  w[11] = lisexpr("0.0023224795748982726976740955716078709653145506279783971633113766822571500679531288641231106549472933128963472741047041879716109877806574678883596238926956407608269464936637654558539269107911672380348657185251490640779741579964904274646845114289249663254002709026682965659785817536979088915715725309793942996908209259529693607291385965140337079890661558408536529034226523897489265014162430682739809018678961443226425994266873512735514970286944301718880044689756773545008464726604922090366560916800506056");
  p[12] = lisexpr("0.014967242713081336580487446406351601699562560659831973762337155815661978949679404135005769328450828153792572517601296338585127077095700090029031035157004223228440049192799355201193999177877072303774677035647528197351424500000253802353828576131433983021035195896756989916113867582079485110587219381969828148416568138672086709540065864446166954487895367698537929484331483839528320592429121772411791412598427272154357919690535520442257655495188075887956269495070291477606555478166816695635127584234117773");
  w[12] = lisexpr("0.0025343641469727941847962586594973948300713457770692472519920763618966145598495404016514678483278138372240276427882888600362100914698818488160272291041004265341488292570068023548235177406738923759364688144704684537399982277330966278051786521778085280581301748391321386707880910131040844948428966798098714293395651126144999888933041618631160241560870152859957888104484605888719943319624563279456131390006646800975252458559942455230942845517785402671870060866468693550842722395492215230694011513495097614");
  p[13] = lisexpr("0.017607092870652195165056346681133695363398484956211504244694283109596006972355104296223579677156767100794930665870833659582534184656033622690554563281694940613780766091232679381416254837623682885155296540921740595953908767390523245220813544074107351310849070187016856196498087473984955486133862320638832424414769677655163598050080380251407512054079685573516078396783684572736244753449877757694113977641710914175158605189857617017708800324060016073098404586314236868938387982707698622730384851227509326");
  w[13] = lisexpr("0.0027451444547243436834123728450740688414997694026667564690646784396757169505427491968989636633411667967907582955538659698830293778402675582614645965074164789358952732068013986759368010727658667446367287946658224311633895874343611541399722381892894236092580106042201230735330611875029744312840905798687514994644488835708423417482270114719479723435239198901265110895176687149257918327998799902579883165653209602524630253421281648660677802086161423449001942981310913242844070789869560418852290694567305594");
  p[14] = lisexpr("0.020457132912654797994904506385817515533277070230537028699266490750057464845177495140504427004786412126323903357149140349841241959711517001681322250562519446333185309930685391809932265814217852915425658494904539910228016793539360329991593308985578954512825055673558858335113648240558685412638851939140614799586791673948242044627411859939782513273926797101355017883818014187866496063623532815655603509168960181769068076727885742891496105286418200493089128528719384388708343614873368626039698521250063824");
  w[14] = lisexpr("0.0029547286502950538196575669211995800327714237794204479709795021204570315428827403122240113369633736564902797126106481854622033863755558814117919878692423648445895243735736659976025026452256027039922543119314016626231300700485310550324822826260492987572112153923502662244650838606642576781886099460378018669893065237693283932279871923171095962278221874041165819990305885278928778139536171800595938347201974558491431849420799881531046329864826635828909648243033868272957113716526360423519251543038250622");
  p[15] = lisexpr("0.023516121019451445986025348639402840757983636292467266507244607670375244746837876705106774218278836763706637906451507783771450664993713465455763864668369351585000151023599036553229012609926479386728728225234989841227829229087066267867910813083520145449473773961657658861581366568818630081549257815256020215680675565410534898831611681667676551067219869388243229146689583224138560615205251121235103326468231020126589047414342252290193653644135977083782323110858571210061011411325417329774171440898782158");
  w[15] = lisexpr("0.0031630254092351979186982294265314148084657653380315681038479791912433411269669389428097439825939963724373515748720675106943854313913954049855365633579909963664177642678033514069751062573292948000786070755330849320024522499547654700264543878308370730032995988458370415187641422247565253058211551217257743298404920337921210296336585532834618669019948652637917191716687126811940120797472563498652796210977589087265870458373353431815605400463688295628409703149387171989839309149839248989655381786933122849");
  p[16] = lisexpr("0.026782724324842610152918597829569485035053515188052753309159376574996149000226909672046074694121479731682397423975547163564335950570901357833475662528780666554868073762873084377823722918531791206056808171364158457224319118486293870247475907483212981829899770234649918510162893294502987587547313591727172874008214170737530354558656047694082772658170892141052136886579562482735955204084670283072427027364992223033328110564767192972022070680233361833343819384786995960055305602557920106046119325750459665");
  w[16] = lisexpr("0.0033699439693715548116742331602851796504864600562777939016424903595520132272921156800317879386026789740791400637568520351186093596105116929639739439125445368532616257160247777403441744443154934618187799599345264658857191844404163868176957127545048364317232579818237135072861677256281145929629009028673610070246567976005933106154461667961695110463695703636969116967356654977504048434253759414476222961633933607420146512641235039940306800925592199942891780097922063555252836747995959182596603722572367090");
  p[17] = lisexpr("0.030255519497858161066703729254734587015656834444130679208981533119334051907463305534650981517433340607484233921035411510095804371853327566398490908551137104461404997863730123600776733680964218028088499255197465772737680971211765704998142155850538993453241960258045290779456098803725257274331265419833266549726853596020985184662863657258976534475019602197102798033068682894421645050929103093810652184638887153187145848149803553493220549279987288931475746221733756519800838428718998801001890880878434408");
  w[17] = lisexpr("0.0035753941698427757316283363509003467987791652863125400358690675715054484039039170343731290945696924494668728168842145516341525204035931239010442703435565862868671311908265644335314720247693279278935614492581994661629495602607817657743264374409879333854791386860765105636250206532159854923415171045138253415205253280548869292933790132204930006751705243709802804646844591555749810786183969793384783149991100408485421979335253137975361957881945512402247618813726047232364700354288746910548039980385103704");
  p[18] = lisexpr("0.033932993363573650882319036015487566607755821086634175563321945096383408727314871802465427691929179542204204844204460769250355444307614640865264579313103064044062983937532503987909449767589086644232786725924008492923859610651576986971401636462624148089177897418826860586560436140305069839733052405778278641053603201356842957559996842881798880319931467896616261180523805331050154679766669413170193153949462401312334313908001679526502179793559258063655501305906316390873925444105177210621233879194703431");
  w[18] = lisexpr("0.0037792864900890820139788257443287602052362746074388929098934195051248873156964764976771933071743615617786994914291485683227783727454626119611240005064718254970451329484364838764202260013858572385554403184742047857901519933823974638932395334736296873764390749446541084944419184435332874188296469641150234683371498290551534280239504532497500408647975551891280297466355383233051593430441509059215027373086113743580434722780454795705323489119852411247951030961729760354460217256735492155742642704293562771");
  p[19] = lisexpr("0.037813543562843249797623178037496938286825945141788655457558149852447674897406575451847927328538034385261946654417994515641316298638209495733004267691654911467355957166821280737955798744953027459091882417459289038219541930100834482652705844685687427878170145984651281096559766175961826786442058348596877614928238622338853966968945028441521997329454723321392166934779340113799572532112853821977562528911646366287197823100251647364283891022546382115411106164317985178138193094779237917518888757206592793");
  w[19] = lisexpr("0.0039815320886816548919723515844515924561585800034773280749092342904890929253970768436856588542544188414459048524877150757706206035673271152896464777800433495516367422359188355712005227287741573445345395088562365172484250782624618967539344451182792870549909463858040985484428384221897375691843918239137729184511979199484934502665002158463557631160687272852692287009115542103768669621936581297740551131747812270635196519703897099088224706747207097605227698907481130545520322942694940957657533312759836418");
  p[20] = lisexpr("0.041895479250752395653233576316262105873185979676804869098480069261816153981530328198354157961927419421226421955370442911846765709185959775716231171801667873862806356584038650448704781910145283980173333744105653721227055003509879376462597740214547441450001452047817094833160520766024671310157654800967370567295961849315562591570562236917922160174487917478038930366403365866375830664617622704773650321521639951641208182603508192144999196029913154715043351553590836990475001442592540110454688121569807104");
  w[20] = lisexpr("0.0041820428419237593108769718057679378491728314415683775460970742849477011735011916748267732856050666050032987696229427805411017802991454419030480003303701041907364398719299117283841369455210972972888999935512954848512638779814544843716966317119860096580780692603909694785236852358823298260127113271487868479475251985677101697370196369778498838992792937043551047711490701633694092547880897087471276237735815398913121369575297576290524886315277936010502972126408512099137211344221978451612969588771698508");
  p[21] = lisexpr("0.046177021833538229086855962106205135419656360789786174167668332985234065982650070524427203751076795784687463170991818238468436383631279230839710136762025611329228387339153962647185063882084411560224489926261309966313190178236773956637352991087414018832914527183552663846163488937521801704148734179981061304503724038450261312087572098327759306613748629116352885722537383116033162686642533391134883731675296648551977946803383149079240325065144987477559710925182559527788962305160242641747756419976678637");
  w[21] = lisexpr("0.0043807313821790072872325198667134898894055684213065474994760479813581615010997776574655764347587301110610734583137166701537898136620739303015278333444442508006178090475488182854818876002402511979033424933876304533632868588486243444573086899998639554196244713315777562700019128493310944969079352373194942848492034235529899568313294570435730395639019150309277829355555079506286194303597766992728096310600026914782857286524524430710034566877011398803644815626439865540213250820582836205554664538544168313");
  p[22] = lisexpr("0.050656305743688040631943511326966435929794587134111923875694870787085569595895669209642918432531477211887592367521693759745319333643654733572760050191135065411447940822153998643320515067470352433498774126798077858716702923893784975647947417333999840590808801960419562068762461746087270494242138471301958219253723298643445535190134238904355681614765724496398159637230922553511798280135633989450081531557022956253355739226259819489900180229965383081620795597589597823373089079536579403274706717765606395");
  w[22] = lisexpr("0.0045775111358943985026074202119725549805757396070309649590960178877460846459098950495723006028942860267617961367611802175917552519191686272150657620661419958399736493130335178049228030574590958133129355960195781687841216878907230954209800828839651029496188749687640924257250231947411375325959292813485734915327515514689768962177394194955974283756989263706584627797205380143826035331295504501178377922202062238465286460929439848511110317619741848490571190843374527610686248663463461257149390018288744709");
  p[23] = lisexpr("0.055331379252897256724714293020234049769208551271477010352386228145022848205466107480249572988456496238053203176333158570077153903798893581730589378386399081383105991998307276488872507549226911479513040536263108245283414631614759627086667638165806097863109458456770481680929898502804866918197434116181513281879700653081822351170279378299325869870219678638332743689573828036891505183624143985119180709242017041181586089232963914383046237461937375815948089695198987677464443057977163642620060549666617773");
  w[23] = lisexpr("0.0047722963612924560583499894557278209419387788144584060116021590143594054780605376340357039833154749958434028307115888596738573468424291971991642961608379204453116713289489440605482543660826804918089832216567487542294147946729568434173817043227446463561812125056727370772793739507657431567960443684894933860040515030665149953738872455701027440580803624130734213611544176515360297096200148114416298309013268091438951291464732626014075928103255620159958987921467926915038596316800094905242853012043938387");
  p[24] = lisexpr("0.060200205322544881504946122025475843337691134279417867189665667937579861246386799264403054445020575166335019066337071068753198574848979506245659599581692511548477750970376449778297990357156740345336772194125512443464829604034898946912362429329013402747526262233564536561872280062814558411548728722295173801309196125796194928225064472164696145523230941144993584060297895745285844309699480172279735605828598514711870991182804633119458524744264312011437227816446178852289727405563142837748818725738266859");
  w[24] = lisexpr("0.0049650021857105778946059575015765690324245969168378715430648590373387565790142427252852959263374750516866810519462133303333190594720660328990470943481793841378180131884752550329043131771434983771496814468685918289160546775540727292806287702421065243374098769468753608126656106123283745768546062221430779777925597813978999646310435858500822543959418657403075389472012962117569590057236407284842874337719500269813612955407399752979501080837337681444737091226388528260132665292174879029489765714902819133");
  p[25] = lisexpr("0.065260662491323654800373067014931110495462640209961742546431425829161335482991103705832163234238172669909075524648119682459903655480058092759566777326842546570678498094126342392213055210324519895054473973591138925001326341913159303637000659148411168684809165143254000863493141530639159021947262632634101499196723486896357466245690367595722612528636192595580747770128630983295053770993726752380959122972344077557987552061701956836766341894414955343542579687790204790488712512069394775086577215137205152");
  w[25] = lisexpr("0.0051555446425679840718209927900534566988801715477354284153333506545466054979578666318498245141629590958207499193279681067454023096898662619201084829475223962323175176877904308752167257363850415546931178063243733492507919792148619631987102086909541922686400184842019449930180695693726408769466884348253186687392514300292229659154026077692637012119774332948405339181375299868101358204885262224467633723880108150468783903725221681475189009582193802555022968006259985843710823859433313717526337103066783699");
  p[26] = lisexpr("0.070510545799643322903346736811206279773078452870584790961338949861600147408267088641108069004823421733605898712358063253833171383967082104226598327720148600605867184427878316755242138732685663602512857331478801572601187412278389540002356738202877116231363930112797254818161021388139021039822693442702552443154605110144237497132542284012466856381867463867909090454380255127566852592529545877667868132473069866154146036570433662661885450619456741116284512999494995451301394850915980129534277161480882280");
  w[26] = lisexpr("0.0053438407079420476733369343271751721424892146036163399267340251555366709114835931705587299616333116229478212424309694662116578110252172579358843186545891380263568136872831170141546740136934354759614463278141504995086275505829205418515389473353206760784783906768505326690156496412215116531624747481145729764034255825153269998837358294457138532025075002557903029757520870284010447595870137509987930086047852222409596959374251073547160605099612100541073101224531811549136016301600626121031082270085119787");
  p[27] = lisexpr("0.075947567750407698839110169755154120322918181303410430527127838625440465040240491684924341092405179155652841001603543404343448007316727592295439117608990531806011386273339516605722146890270497009596150238903590893913232638168566868705315159650055962939808088440746475891806427372964375962970669415723573009488090879156294373910931570171521126503329926152588245749886379358613993268632875162382204595764446562201307504769175421988250408691710846853829497829019414716841462676001159095773780348535031539");
  w[27] = lisexpr("0.0055298083367367217748858635624255903160315033462309191183260096049708468003901142849799034114100740920013720983310178238316816897390175771693120206043815618481181863019284163179267460931653139037214394691197927563603572111055768797963621018143297740337293875085147461810186915470470647657975965555773116789939362493098188931790504538323791698761476044327742378223438380117968963366252967208119729817075932027301957944490746254254815575721898846383824200213022879758486260577502964392495099683045760697");
  p[28] = lisexpr("0.081569359305749241361998742516289692920619770978692796469812875327083907569405758780910350588729499138476746122360938773315594748733488629884299454248108364776432116921980240597553643104930221428141093361387766148765381831432673878078310571254787522824834162830765439952984607975694123975831709659044695699446736392328110259593117111456743369699642303405329409347165906704801235997235348458291449830746832988747033109529302212513051560680017061717255640592589784097975253860191151344655392897089083671");
  w[28] = lisexpr("0.0057133664984264200144894158994748065585597863799462503394944899896177123035075555862069092542435254054719797827332850941325572862640458079568023058393619964697093279073761206598143284256765963257954308857382937432470550054002685080223051355094984696258608445339059882191964784862506314526325274277597980798173253641514002822876194859545348678827381052216124321617350297834392762278787607220607657558919008313159318357707869062576925856064889833647450304768627238345207615667282972512856359387376900168");
  p[29] = lisexpr("0.087373470919288490064745477036010353477749656865775507367209165028161017425222754481891146869858994282604980725870178996980420076988046361153312201673933351914355572045886223970984977643221691124747879144200556221538975615248738415846952632341501608548033200604128504698749826680104429404585723616252438271019100685764015037900362346745334020985455012182690622998927719951650347442033093517143671669512339642200975915022949942821488510348323126793328013694364065928729403674094300862553967620694813172");
  w[29] = lisexpr("0.0058944352123591886975440382041538558000698575492875997035965011609399485240660680269910520245840423459851600513931938386090820423791452786238673877260551648315703188719724542670616573865834971601507059505584499845961017135688543299376154532914545637424200746582010022012243604458906683011697195435251269566537906585061665885741106792662328259594089781536976136532865335815088884923419775250657597867162048278316676395851519353608096292436890715975618714947569647880445069491236094370666497307376076079");
  p[30] = lisexpr("0.093357373603469729284320507861145490990528647240452237695331089493988216538893478329517682452324511010432416271979991028504087520145416464855880807039595442232217063063393371648372623899944959066169265558377947303277549152709515579503384537760379933687651612883472933662980177665296873333712494828539140651502045042692706063277724248768918270215660052352701198601182443623549158738219919277522544839673249031342311782968841230644663458170897995183385533059072154775615337539013945091478586967364344123");
  w[30] = lisexpr("0.0060729355826033906365484103923663883653709244853448616426836236457658524364448652420546647832438558776490594036353562097453457367020295590743060899029165203811550154635223800849720337439087234106069248707693879771754013880266976087900297489723537582916368836692388590571403376390579395805694471203771381009461362108071043128699707439869382138938344386432601357800935165306457886212291392971239450690036256987678595372043189930437819328683075389810699208377810946854044920560854914284365259954418193910");
  p[31] = lisexpr("0.099518460031508639175694315262186048059801372475782673718991749133618917764184554372046754242412439026692527275572877068114254119359474633540038994425734543607967406122020240777115899076224311330251029588792463823503790019286224431520044481745904687854914274988808322900338981982931452172026227688712376501133694561156398259260187529984912864890636167735533520667596017315979854986508817702391212257330602705491584278316978628880960929936658173931998318395131777759197601468516010709754796894282868986");
  w[31] = lisexpr("0.0062487898323224444504033256464890611641934009349125463074903124635162627818897713586882676649105692232322110515608720902308071701003901315105930993606364216180319232580011568823999334327188689061896150848569743761942131125376258678969108629047781884058809341204127325619836632712198928939813868680434033745593419862831140033997309443911158745725495971770391878655590987091574851327164370024544615660296878608804773060898235039412117514878563501828964867022566287331256700732541917264919080958573378873");
  p[32] = lisexpr("0.10585404567347238253656292397320934538753857628918420165299117065935591597787824189469587157624241675862146778385252097482125951324199223979660569294596543216357943058439103861140951302286800143110399767937481074493288560658633353655696801542378828735189108861634857612817033779212972284500670441176222898245392002547133520881875975063163733936277160999153443055518754686198318686698474263257755426083161743791650450033249859157785351394366516262307758151076602081354551127554009468284593441116139341");
  w[32] = lisexpr("0.0064219213376624516278836430817964993164068178085518016768837400322815501476093682667377657016114715802834332274687615158908734304848591149291374545813054556295536010744448513180723884981076970529305658023086208756464198245380114757121796395252839139103983577272505129241666486404417335211089253663077011117174653695192463864649923782353606291314276119395952706597675125685691012691207290980546548500243396389414526102175198739636428317097289692292763162777892676567466533623298667564067157012058822577");
  p[33] = lisexpr("0.11236136996599754365110224322375314494867884683819763861459829556368795617463437513734448110932518774766269147071217180805710565164042606714688833325000484104545962203945018493716855314079539433105279711766781166494575815959016676032794064881510711556831771960932117565566250204401001788888761645266444859555073405424441477789724181082701488009771815637121697397346531990201270929203407707223704845340678958267936478040664643566901361006032414037929697375091173562660601075298973993501172289816418619");
  w[33] = lisexpr("0.0065922546611378119248201034087310280309431745961269254161638439228974439687410339486582454580501000339227971720160858048380861665686546164902520835910620738370135906944819687050973245604118065123264964738743843897523619330532075821719303535719413383888040166411436800299515448461610847077228948984300092575316182229989965891092792686684720807379988108301102283383455522839702056755777666584852156066756036258743632795851508539746084961702436284986923453805497101775895027076623048803231012820917010453");
  p[34] = lisexpr("0.11903759751513656518705599874237603943346227172926464810189475875726885629230414232918777409128646343965442971132525871633642776601944673263415632881160254821371010019280916589729415123619767740621801868533841467872238490526089207565851678643152120307835424313508351331288958996388931847072831736053592094912918801371133841026556749705596712750711237623153229989762421483313413482606996050856858818474393690209637357188139072873420039079264856185328898801214322989080217522533184776689599478126433212");
  w[34] = lisexpr("0.0067597155845001847576972907979256607796289775915090308046069870789508440988011892148643008901169135877634106382470758661518939847869704418075147926233759191134063380191485328697590591992997865374950272419299467863971081058212075999496695278905914534763566738384819433726123969564699400099851791866946010158681953395922860050936959673821844139847961896629003423119072378541653826987902176771672506346274901981802720950744760901195630570209321131492093921960796807589632600676776803361390717811797518915");
  p[35] = lisexpr("0.12587981933180881296959616640994272339469535189367874912019421283089293303058870343040649263667684784982330458809920162483389832432582123294524150279855958451782351201724072594671622724044300717402381544555607819048302870126632070718844612013537677240626415758886890752306782155985152885159911327830401589620038579603113007165113588432126420138595349233775823656211523188691110881592684090706123218261434070729601600685051699712137673267245867855082780235636867830477781937098271089086824117061315379");
  w[35] = lisexpr("0.0069242311410764059720266894204321985123598788465822961162877294517595916357402360723426460125058424138445171729426427652811454157318484543656328521419978723020234307915038897680489321731365974346242066144920649635874376987717002189044145297180746531644672364332987848834414161920519765079064083529190626167394241321618458022110971485815123757171644727137138379636474642206674353945735675324276175695491446114593247691823326962694778691343935248783452265347378080441098896780474014367485340880360218859");
  p[36] = lisexpr("0.13288505409931813288312569923778053312225307655909767942290547757135050147986619553941101452196970534076653941975756947769770526966067362910577566295256844405320841958681918389401373612152005555595534803052471726105774930345454147115034440102397510803551101759220487709665995021659036907999480979012168367450401921406198281035397425507026555527154472745798286922929213408440660240963874328687700969633697241602282038682202613343013378774529140639981574762494139766195804824198669102962825680603977896");
  w[36] = lisexpr("0.0070857296475612194173507035790811014349585024403978038674041494150950793357413033016610061310809816516820748070348556672559033077313015877207843167859274400593065733198724813997243628148496350302774138271008157175385912777049019226648611236551095224643169022087306683982463258687758985684910759997007748625708660329508487043518547107600082359212135605766779346314689905779941811436703224956460121077569769929135840444445837161630995124694644031782341132861247753595994894817391503788298842514769925323");
  p[37] = lisexpr("0.14005024947238474884446825029124007592775967219779350334214335250025009690640350659680919014404595931215959373957635454268234643810004327450004758763367757064935840511675193825153518137893324340378014687768651207423312324629499348010702069900294067511712693917922889037240451549125618277075928529855207979093031347558181853212041605027079644537970045534392126045624246281858909814881424326421695368569834342476798632197378215093222578614820755824687598261468517047584221687469854842208506523177034934");
  w[37] = lisexpr("0.0072441407352509335557773783331204595086581527189247011694549120110572176035574806623072986542472896067873790861110870407411555923829495895230329472305566944951237198078300108872051356974042476697171255072812212592484243001539761769995495074835810348972282590215403662294067070103700097677270916187751499870333094840813885198916419884593512645606263237659628638231680040760664102249599024882036626381642321443642993213247510340144260295684845602018183729068393447369578474136157565013905086217602439886");
  p[38] = lisexpr("0.14737228340712558732665984127983748718920349410548825288553802018147448994030302945548040837357961112476785972518646813680561153279398493927400202941625442421533307021451472071165103301969281248696881452173125535018237465779841472776564100005385446238090153135461916444431918368333905600304151903212235683463008104488430855354385151870849281312820554435710071188775169399825874435795439878175499838454301218733675672658686095560789286055454695039341319172350255121785801940869904125945337134796929961");
  w[38] = lisexpr("0.0073993953807043664309320839813599848223131207435616129449535059468990877527043684274507403077387025972173018837167825210513167624928738820920200518174309036899240943458689199066538502893050229700651077856187399810536127190264742833268376804870429747093000037111059504436828680847378340033023331866964713339050686508486156667422097835216542561367342014148633734999130879412072333557693687582687968409619394079535978413098761109186492161199026364875718610456149738527537904118662690363385524140066447442");
  p[39] = lisexpr("0.15484796552140360514185703416230682485582914163524935297516786538406991478973736571027597217329176079172809512425840148997436818818014981179606982052504915317843534779790763495088778275049234849217238325152438856910628000742950954274190597274422217323561840464087259882474505031658516105458030959022434256090612123930448596303607152673484935651368748932170304077284826932192640404575070605468928622295230934966663284083798794643118131782784437414976322651916405199777024895865496232451398450090231552");
  w[39] = lisexpr("0.0075514259358176987463473101187680942469535705048772603532709880692405057043508266288215326455607104843396950443542854245903576162572140870113883026736359245643073037679804131561724202811041487759556610958798966156830245975257725435437301558679709496300449661483912386684095008513072164057051185598868598778300646824049544646601539512670864644717997965812444059860402574162616748475742152658201450861132105388272819060455128547809040623944945098112542510601428715586509758104583884932910539154073318811");
  p[40] = lisexpr("0.16247403848495344678970005413058945544056827373502297972715714021058390936820262054710361803388469085076145675101509516843939186834278395717509453154531024146076142775751693216055504731251541755401303246689701616695504134498688922047374528547619019079038158818386372415454452216067601731551303351304534333448817184410285646943193331982138411196450961762129300220965006640895536867750905369666130350844932321191066953440840742674937688369193599436879375032029019780644600643664364878041862726898929021");
  w[40] = lisexpr("0.0077001661573001152038365185748576043750338832683241650999541877802444998766071447880041426007764544051140156727358609957265650962672642552704640141380445323259538861353509872199618002243435507448644058325120169809299509607469882710829709718581864089058300616698583129415941465337985914561522634227096290151501099838819384512799257988239946807155237547853202171208586778025961596747891112327882704799457279697202042087898062168123528642678680829625781275474123300739000488875728246810247359687947317021");
  p[41] = lisexpr("0.17024717943867776984791462963450309995843059690311670342858995501824286766176891903269907526587155085914830566187759684754221380347771004062418226132511760488228956046847653198211507635890442933413137818259765730288729366616180286254639637176723420337030332545321624514744883684963806169016059917461004102632128529666953760330230676629121089887244271663283717286758118058887782180422564864100370184963720375739157205568255142246468603898906831620433987909792362102118281374282375979983541511881937368");
  w[41] = lisexpr("0.0078455512355373790501341132905377532600555993444451055634095156764434321140238903835999664911562173271752510261023102319365755314043062004162786437975646293631191922496259361842191689786303252012991427188762355041606033744152977464367223137488128613848873606820298419360585266505864921185627913496818727214479256522516353082420978101602046102266064084315724425296641089470028005862177872615246648214424664225195080364117791383655297539100778604677119919691960052059561320755942876759140011058270053338");
  p[42] = lisexpr("0.17816400144249585615938959806700419841420127143809683851624505636224913577681579728097826053583216235136480906996069406928135151703171061551167932223460330534037104178715722886862230766568117185047085476465402786875495033863131032612723175015991741521006522308839945646932089911993501144434801753177960414379469318257331493285580345367013063313411028775565316787399540863401664933232430129592303471312241638121106655024494853785861683361883466142637232905133088956119249413761113533432553200225125601");
  w[42] = lisexpr("0.0079875178228307542281722058391004891103091837935117783319614042229852673175790799752399083525996213729773340666178748757555469734918008551365234236723028518787844267523455057722665835535482776595548439374800781182082285811815299698574793281461066335568666560991357266590691461282395282310101060870551000840094038674543420950033000194110218044947647564062399700691557295991476765407189586190658511831530036523404608035939078906039404227474915099040707834509574367427222055097538463485938651041064049311");
  p[43] = lisexpr("0.18622105495111367768376529573227533260051144543905086160210289455352036989925555771606893030663398468712925858086977964148015985809381852080060518666400746108301932819536791535758595599122877050942164217564164259923899044616967409458739720071598381602950838517942665405736026753378900041004444552477038782363220950756951617428700252869796730206670080418263471226953969406847510034578776595927069850875054067265052725694326564146275084700069081385533909188907632252624696165691570935193860364301183306");
  w[43] = lisexpr("0.0081260040609989637704455823916854126826663443097585814528179527697749992783657490991541689538928730294129544510240003727485760824913931022310431227813723986862424601599689276226512833184124890001522542606122204460696054323249457250443972626328250890795457869545852900104188954640565387396779120859854526614325622052767982275137103019262983845491557146833394041074486674581768297620089253208084012889402518488724474307269371705706095262616675864587088426193229382695436587313768324491812410458669955618");
  p[44] = lisexpr("0.19441482931707241366267395687781384726256087151432730452872882752259951858135929405981604065274012675333849464021310580067202432955102316908833265135329793978233493152184336646384796342438167917787037938942381120012681357097934255476478548506199645289694838346149888733698043058195150363693341915864555573724399980957056109740252842081143177905379288563618969434765425428048787712906484657080661076751195055413099683886257264364750403519694442490906565092164853973447287954500471205807530628130009135");
  w[44] = lisexpr("0.0082609496083311521712141434036541854277371228556592861368346580381707450033487759540775404557879006049663205773812695453115414309313734533515813806289135571651966814811588658633644710944797684712652097744913473639877750207693150761091615758695332923174392077940045672957420707525845846495895300947166069917862459627628011689631072051216605046892595894619333089424462824359885075861355014354202490024703033264983847488831107120400621403249824224639426013949666043243609592329741449241772126416649292145");
  p[45] = lisexpr("0.20274175432042052506358569066200079330746133014934411753881783114608003250779328564793179867869604269216283757839565527522700450873282770335110134842902526808756821693419194347402044446837195409372604859414795115507629692618157236799007851214057424745494005868996047520243552347823049902132124162051771281321671147101294064154411220463963562722708676567511175055562330073896099926963163988088752538614930574900796681469615745650013693456376809650254906453743253187717273529480656594173393422297328847");
  w[45] = lisexpr("0.0083922956658791034425744666875863033115079013370275444837643104144015463117072434417744611072068384954886922803801176327190802959983886021095690666414563781064604213946711683523077275761441786326290634164414637468108506162186528939151463767355719790125549574967903114431781895380235182404705769614521427824633851294308803432616604758218641204202791940091204691729426505895827462324456996888492295843670497976277864466524442174567164838116772898555834208144390206173330868429924406906672314455480762264");
  p[46] = lisexpr("0.21119820172434288797541259880585099721646207800628838979292833704818751810769022725828167688267420474049977830091260774929395586854064710492295360199822208830932647888843008843701893410156635806864575672930565158953282441420790035800686575387583140931467893584937242655962273755647610986311699185746928499646370121656225489197431853336787164198066498014876221031129594377622987851153862270794770531932892109522316502031963648269769626950017685380513653951865573746205910474885579650389581810787385897");
  w[46] = lisexpr("0.0085199850030772553686351770836420031242332506979150030173774296415781745023512035426945026967928592443018318968297055590667124751943532762068578426687274498706876562821802563102730801798838460930147344020627460575240237438889498944850332430707014049538102052105243913082666205257292681462423661929467399832213429643271954268797760127310955752756200796572317448677327030392050133741032671659719830174897607756154170226502384693124625723630462418873946138231311132247313144551852046274331524600368113733");
  p[47] = lisexpr("0.21978048685606917454444420112916657737745026762976742817257280560648702119179420243042009229034346990945900345913300154839142767466028638017953911837480349527403685992686802303308145863946199938642487331455105216209613831001385053266612525144270037422095170145490485506613437920153630976128343898715043229857675584148049473387516685298216365258037955008504394183295818367622001337834239078051693040739092092556400743173554172206128202510211782655807378659542574816729778081981163433202678799563132949");
  w[47] = lisexpr("0.0086439619826793440660058298471028113519961169412297488470807112918846037949439496831135480861703807733279820170297525366423342004036561420993021391697431146769359770474532318796741582609209892760843940583385713875082711619058418500114363148510768077599951557975255254436889201599567286449796687334034223629769219312846904982439813522157455842979261424705373822703602359030365831178326641523586612156432277356504124060678399089876811618287395340206928114895727268697073804627152441224543217961165892979");
  p[48] = lisexpr("0.22848487021237265290968947744136940247595954929815752844050031957328219455388171492306152875566619816155387180559970649693934020618532700751495104223206782015932295909499463909194929024085060494576807013219826358738965235508194742171666367263416471234780583719273906778178855091821391569045249672657324204253268937624491334925660555235716136115592291012517455077922415616287880363255113655890539211000454018076967440959276074697533180241251933020736764390175030939889091610368048771926335112104134117");
  w[48] = lisexpr("0.0087641725850008112607871541316437764220733620427809256984936309066632229076147779810113341000070582249606075667145397850035509451180567176497670543061240879109024996210628481037181014881611240608166674537574101696673330017357444365242614392563948220565639392734745081294244767698347556899564765772982489193519659409871266879404015642599553967137321649201279806605532529059745784484295103197531065859917286886637841748170870460977469034194430559639679042029709090547894557070307487703909428366411884794");
  p[49] = lisexpr("0.23730755908895986108531945152402547478808538464496224720693293913670477328879313963237945320169443421127360974153059278289763799288309590861101145035956410470893416023993862116213365586317136747457635394644343357765569971104427156644764360839577117216995176414311784850306074061270972061118560939251027977714424229106323768061492696429107394189028384517098296645118085440839799300953436000164630768210531521462761410795996076394139311309236409249896131509380439320562656985280715348235648717657690163");
  w[49] = lisexpr("0.0088805644314564096100787668629834058980320644723127492305087823564666038191780520201525564832551050940789987734636579823151745444983638042514613145027529021063576021356692490774955223297460967987865475398194353397807031022105647922451870931687225864098668177151537483095047389379064145464716959032718032203602412114832606408459274667422359299844246176299808942755704562480742702620726075073188794935999133996238535357414789708934207958889652281426700256297520520860947920851209576313726554814781040178");
  p[50] = lisexpr("0.24624470923304119840942445558958247695243835150423290770453714472748167132639621133679393965107323642057915451402568769919732796277198517470314575305098394895284363549845389440500640218719944129734511894502415718084909435284948492610436402876540862856064652156080366242065259489491621218739681422811745807068140888493986334615657091305027021285858902090839042632352551791567135780395558308716282653074654855131065519230375185094083400327870008099913161557952711233932450822420359924226152647657243264");
  w[50] = lisexpr("0.0089930868073827488258706877998357664770524081630085448170226562784990907187440799270383089825948668897217685135560520386711169602760276333430745438685761375808004958866454240358292987539157449476383975721014918809236777958071253118831124845453451032715099071199587075969904989357581549226720516869754593084143317763131935926171201441293219504619139610322437748688129494259932345110933180395958502910304130762167234756542628600382676607819232396189462053391924827680242257364081591407183644849061023626");
  p[51] = lisexpr("0.25529242651836237648898154242372506872083484468307353180756016231678583669604524873539513863730635497887471654394851928172023175143746318766498993468689927560783019432241504157827075283097979266226663262046680746057700248233855204810132725392578604672063941958292915048851036137311546314506295850106742806484294658226025778919336664509312007151531857111063676357840177427174088142497691084645380585989744382175116773432036250359457785837952859060959498647560129505962574735913541927484803067488731019");
  w[51] = lisexpr("0.0091016906841358371882070371984757850891158007232951148091217045567314507715452377840929853666102830698953486060994360324370031545514193171722994002140516098743017522361085181515484028553889638820799915232873291761399430867569630032155726721540816364143144425722426254377778858310558768995703198265829291762855697054374143692148195037882210597137188900688526192692018529189860890079659265345012954666844177963157612757102820125394082366630580891913959703700977659051100930549184805665592256892496145990");
  p[52] = lisexpr("0.26444676864196688386049154349428263303102275525557592054441871166750697440104161279959696897613244524859979159120310327385110472408359526728066250983916471419821901904537229189637538654768025552843444726399407172189712751967892019898691538856593558814460745910861803701962208790662363386717225723983601030880572845169003777248710633530324464485678950406034239106721716694164528796649223270218414638529222868834955106796058661986455694804309884120914150718124951203946378828678963900640634546457094397");
  w[52] = lisexpr("0.0092063287404539891427494202128241003876539759800358634996569992388054409402068548310900716483208229812588562027954074247736865678319068100452151435035743611737503098655003641585208900666828262573965168756106258774029404207093080566281808819263363530171842266848868676234913453410528610830244819752885614030247156676099549473927865063224367155283077992780533718948494112013999026359990104687239879729521705747202934624167263336551094599258899757926341016198689088417122064379383905339956477293958799649");
  p[53] = lisexpr("0.27370374684195014907100712800327968908206069384102898995871168061850492059532846332677619258554338816364205795883999297165346610836166984909476268738582219894888279176490060103276469264559753836945211008366926164712233041686129558219109952553809705155918120893063767813042853783228744885482930153861562642401805179992588357663780495392470559108150470383033430337793302793029769436566565686226925005610444032509982069822879034388640679483748848136986083117128879108540250897417025494859857100305243375");
  w[53] = lisexpr("0.0093069553830767899396646133936502154281918635067327435734689238339158291427485182096400698577022198189906512317795435633435027470886167129561030428703856511142549795968378019458917611776259764346906094975572789236252878153340502974603817525416140232569251071208465903610044942419588582101830810458550939945297714031367238659082343070618719527632868054212674332932960000008175932982573660428643314358685046204602050453618657075800527914447979323618167052252272459990245486224137581024828323531189015723");
  p[54] = lisexpr("0.28305932763545693965397994457323578467856020620415478481175201439630194705823282664911165980997462695096709271981750502845808608177948971924365134515078940028698979283113352006367719532783370436038078691918104416160395966539510575878216626225876059429611425074934543226807019624240930499972427541740134637649020552676956389635719385317099582277337145765361679938662127517647682100997777439867439499495726677255089041090323451055008747827006434801363917703326894400787425697714301919328996047651136446");
  w[54] = lisexpr("0.0094035267666111325557871814428226671105673326055144535644383983801997189676259699389726076651264780199029474902472752611731032803512617860573084101974847353551407509941545062549807650909663170087258089525193206497841406559204127520181585248436007193369386843860703275157959968662169119143255044388395856958675100419299987868977467007313798502714988294241259117029901452225009589402718557729401492710471193081550009591570810104948177172346179266843459046863868117669140708507872909390948035106594476560");
  p[55] = lisexpr("0.29250943457616471348492046733849509063361190883080657524018322253375727001627791884505101766994689188981027640258469927017762616757775756860096938804546603321108008325634112177594269385406049312068280265249947297025510302769621323357449884453720286141954234994884595072012302611692186294752961287240938465533587575150058436371460462277097076791707215044048296379852286361435255890631428132100791449001782088903104513252202929210623970634864125774750965929749529750140930555039682319835873719669220775");
  w[55] = lisexpr("0.0094960008126356703160368748191123359953384371546649291802492595388820934505677715160625612732511626984816127278611659881471228838054965914148919968862295989528450267039462908952037121277503907148574808807097326724108103970964196818212009105475536712511257493342987275271097527253111868223347200319372701916510493692970037497625488789923713683563478325177207936273452598424593780812944048299071022910961173451050253375405559319315196756163981964593733428768704846371493552654847353459429609902573999302");
  p[56] = lisexpr("0.30204995003048714807377898386167899436331964705750686287558786554550528873484813992456995371040353707765423362557742602556591142144788199700562255075316256667254056688213397115196621205748456600972571784523212356758310720344299028891900051139778705314061576237134676650985302652325908655467663616854685611182214308122215257000839471554102747004851467093776784664637009600369950641365755777341544794420145430175971230237710367164704260453615492570162118150034280243744315582730387726176487295010326647");
  w[56] = lisexpr("0.0095843372280353605555669062663579779428427012540692928266897883541079505592073010047467576125491584396316646896994188876700741486008074123092233887964029842098635518395471462602571282898986260739387457604442284151376554026803679930390064980326305378068094057951275043328267940858453634075892862492637883437258894768074492041413031051127658124590392082715366014749490379765140605519398945858837071394746321783863805968054836555907847691249925042770280612243911804258042052289234097678661570634257237062");
  p[57] = lisexpr("0.31167671697172391616571169504178227421499806334956273095760416297633383762359220699446874650355623855366154703074938937278904263232765147319389756289497404473997364952818656170424574197720506521687243537641725867864631473283951853662009219196689941770085375108756056116217513806689032508625263985248097748143814593328629985367985259996196039722002717213133343879960854274153802658481563804246939628132910967418677448262789924011466876525895639163787919565571423522184463337856085763342782554637580424");
  w[57] = lisexpr("0.0096684975225581102006866163747518921310565165649694033531360653756735485662467778827527515686833167843830100682353569717268270194874409414586699461662104323853514761515498587973479648137867257859753479408462710392941963694596785791922048831704619563990936479641578826208728767628154882157728820053294896480645646382323593096007802242959416243217803534711530280891783307212011642101153579557657114155761630562631308443756409019779211811769708125378096582823834433578434226775315515892346570538967037475");
  p[58] = lisexpr("0.32138554079137495611930809353931406059226347515810349343178391611712036130727428079626675227619689089318212079543888149989423413172032645962241463209003978991174970687185686218982505157640452440628657030583301783683753813488648284806029371209503466062883590894671318216547200423952878076049964956987961515985025346608086774247498094637009181093653840604247093017144875876691088349254604797624571288274274400771198234311743446760022417208319713898880297908261032991032964133759205024732838567205042787");
  w[58] = lisexpr("0.0097484450255858731513375641264922935774280133991640479187589077362770730319565419225103081139178462958329294871164687254826070264586526780103314585980166676743190752352499144409466696961990347970875744332055756276826814253140508280397553944294054029275786787053006497707589003530598865931351026454222251916726753208112308452990870463086379032715646171467915458121457950042840539039794211962682251082823715918531190582816873560451973663121782426387299680146483244228913577117073622712478822304514311252");
  p[59] = lisexpr("0.33117219112683000630720331514808002873592025671627434725980469524953768565563865332669824692837361576023229827484448583090268086259190482540586462751102017393756871887922278422145261277080266178184939659865751744354700962456790559236147028237914369781706958933364644981887596194181156665255817955873083007552033615109299474840721614062823166962121533920629610302063033700346884748711130674601138922142178217735533711310310576871286387422143125230513861338663367423600132519266054804773817319242200548");
  w[59] = lisexpr("0.0098241449021128916756760876243923388389731888983563338153227848017761276929456366139936417628923772269684733998303979305321238270994037153765172968509994878216525571984174039908623336476651748206819121454794762728384519974245923330106709338692911578585987721681424795412029469152991176004787184932476010028911354684644853416783023239644296154420265078760538577003736895221651442541789425718892796890428582118451808731362376300364871014680499795494616492707119840996497370179392490743050768343757915490");
  p[60] = lisexpr("0.34103240370463703748791448208478395598348632427609854971144759306403523417258717029329200221475137234266184435537426800104037436283028930845509217440211726947089115958641668313586079031264741962773006360224275686854027120971402427432810833245120989767800936145734491306580184832590786165400946197847333634310514984694307954833126412604284469226707541909450637920095183845590898112513130960062892585782876257497525329270432880351574861666746292085352291953953159306046411948840062296985713244763724734");
  w[60] = lisexpr("0.0098955641679241195309994554408861134881452222956352209580945115114114629208146632358571474927900305661017937963112934401381201744481637610288925706932136986683050820303963013312052752683526909466870319733615807037105855777080102957480869580490378482324608294327206077561375242066199486946394775933730643973906008181966784865671353572949152690022596296445520819176307511991062050848117715849084248312051836849707932193084663639703937795777310244607851332167613218241256750927596185598920018184458426340");
  p[61] = lisexpr("0.35096188219854642883130782937290028388729411797770717381415463696486034691689685992699354966228828411402849968134803465685145990732278971592453361708858108890796484751295918304155522240233256242206673136077772844450787308078062182191131716149844149528946653672642058816583404438515447932253606013188788972355930566148425418150479340460002868359236733509645593876459487569504694594895003039583726936697840137152232563322855560157953811096142494300139529753976641365831957689028898458959595940130687935");
  w[61] = lisexpr("0.0099626717039672130559084510523397479626324299450100373549117227454885689010955009210995430481265520487508550430243404599444823757465805734747528173598496098444040540297693937190245036187211004069386607035993568764566716023261540286442825615615920033594139799937842323615833787367459396798557879326945001189328385522955594449807186038059879350183718667368919163431810825825110824726809047986913427284060679386475845393298877714154451573508749277340492979978243712622620085354305471540447185822517161940");
  p[62] = lisexpr("0.36095630010152129499513245267036013923139234412140486830744758919566626125050131720375665508994377198102140152074668013654712188606070387762662916136247804059168973538964831500435745639720001745622894903251551039255336857409314224808863206322520146001113658983589464387785085858332183772605178243194581080359855202215915525800954334255517537591625643966681947876848750340514678991311822113714665976736608459796497502826682025033527091153414336471177857161334880479830517775930180576560888968925191641");
  w[62] = lisexpr("0.010025438269911827885638025558286320619886236410369712445753321147174047101229100289373172209637799587865653490729518285663286759201188566460165184683225179561496575216082211283124933282865488831247341114931681556847327479230091650843982751958112869628979528698582363639481566343324529137733929962257057328033998775047595117082035770326163887795391342304423516054351111223533191938641770240927692678032268359924014110213739288918497126288382362832632090946647230506226143490162874768080547816132472773");
  p[63] = lisexpr("0.37101130261089828614700037164751601166550511796401635146008273010859316346263962230821932633317673135337616529547029707829878400234187747174623639919208752917139813763584702309147314980826565163847420163914216109575139776674487422775097084490552544184873825351266996742931226370155288948772786062675098037510595776371131088802873708261265540537621170983612914529356265214524450898438583213173841865366407853476699640630951924687163513551595041854853496837089064800403829728543753183074528030702034442");
  w[63] = lisexpr("0.010083836516890313073809067784034199759123968280177176717719931236648780871548673976440309391414361886978201184776358648333177420743763888891417868461289029446293019678862199137971943673368513064198682000641524318095888186435490237844309738197592141011929752462365490269141309641217346802215344664365280295774718257508965714122653009298863598649328709647765115661538936551758525321431104650900610251773094984778826130033306987293929905626449615059109347180113369897204206501874529909903593508047847559");
  p[64] = lisexpr("0.38112250852587745275269987093164609534721648684158782659293035128697446205030668289854349347733092191927995159068435823372714455774159896066954973992471518436021964270724900162133541423267647433390212914999016118235753395814543547689488068815994117066701031186809119721246040248212208816255568275254733490365148060320360100223620088080459310595115188754630315739418812626908517846814467662242861335066948834003684747624725446067569538122928793755602418660528229140092699840795706548681776147078932628");
  w[64] = lisexpr("0.010137840999414251105968211687395586012588110055817555447681768429323316082741972056267922544121129565141014855339057093192355896642301187806869052237042401053070491355315349883452707570723717291789145961843356299718152083849556508491698937274105739597424611537119329377052951528093494123972194710308861242576640565625824600821878645259408816611910667101529746922646955823555904206215079293889589456323347235262817389312304029094224585022981210532939883148264866540353097190582011332899833647315755667");
  p[65] = lisexpr("0.39128551215651439480130961954065052932151427302027050681023838302884100219371466867612928742447304436783506424943284577650858476484485163320013254855148865840093199356854884045352696206030481924306968380666104326529239686558048405583471937981734743084965187614229450014479747943286717999368297802799288387103203283281757185193377650349526669524005183605683112657165236920882003814239741350962444353116695328591818717596411225706790457364019286057781394845291412172003713300892262558525129549355835981");
  w[65] = lisexpr("0.010187428186461651408419109682359542029192533782184204938341458687723134353023588530475777179237503570167089582480605131792013616598694409275837498047682216492308225137693179550852115192056298256537243313383383408267774096265748554550181681133911850739658512386989598897395450337283615835448132037826407096756866531351058491090569805833582931478300154144296380461016072762649076136032307527094032538268896838660115520010908465379815772210260274456178666508762344098083725167941914019599272759356806903");
  p[66] = lisexpr("0.40149588524338290324837747240919175132157548790923785832475786635986299311869783922220722357865417076416384471392177583256176987219206030092238874105933486970228312372511614544487198216726984672957666049529536966925113545612318782311315212379798374853264082097911502285016786591133714944823397312855136961548378099470132937086816483206688337624189986981653710840579739216801236514793813227315501376104617654271684950089592589736481827955468846923584432922629387917187308026031616088476073388112905886");
  w[66] = lisexpr("0.010232576471729966334059228940805524377224088435686345088664253679758389050000623289586189313848111817107590636910192214437156965178584330427866473550879730416448189976336709712258955975072374770343787311296182858289102597210886833264970291643736593615003431867289568205683343757778299830072552716078081012189622577109934887823886274662908272364284096899775400016800672927183700521051096710352171028145188372427702784699893741961159582639195479261704223179366577866992643385812863198611137196037962006");
  p[67] = lisexpr("0.41174917888707165201208429121858956179847531628350354082269148252205822968269033676758749425830128803172390301314209156602480750788351578073516299518227125497715727801209989831372750120958218337803986453093289355513140928065295809450706133512564461615924546560647364148228603952844821107605960165654075976316313262481686154295270203212720785145900316612689637707145563201582927095991753124495696454078716288195908698129142420023955020458732428283094107604296918718918811565362163594706349900456720412");
  w[67] = lisexpr("0.010273266183050462088187847748461745417041845058308863425472720408235614642364416892214084009823854091107699187983288184189148336781508550717527280921379289957585754633197920409049992656762711469490273486853622776129593916808799395684159407835842652912863431303271685295009086863872390460493125256026603410805352621549988233697730250207890749937452105315434692380886555557663133290604457651488283131655679485624924350538777196095010802239491930095486479291577205921424499792041359335229716405765734180");
  p[68] = lisexpr("0.42204092548667421387793554222547259272270958398604064899011317563754179582946204296175114258205072041722576140893663904001500335556529772447647540724178812398278203087169020143654950827457931200778915507608392960154149576007039605874879967023992040944544367008840057363699075900873336669978804714454480341537515274566221936906410245405562531943451629210648412219096342125274342753395072234977906983625756793353949808555929859233998257011358187010561699590261542161349358934063025099492515394592688602");
  w[68] = lisexpr("0.010309479590959842483514702648912108032452250642524594463650569298911509699310666246485017775608791818157796000476519596805669279871564136170448798712869833446655012800707305043007911329093775982353741590542896934946200660264906587481107517818645601363864207924549576677676334900606591638182948969015262424654568329422335318270439931937479740647554464328193585443459063850666567227899929017801174242122085544467084732114038675280303323781741301533264178149626902247373477700815271424216199837842738338");
  p[69] = lisexpr("0.43236664068642775502072664190731528712795945548450773225618874548397547882210199347421389790442170408201961080003813760445431334021804701604448398908771294573438385536849626768756197781856491206213648978733670771051783538130884368758590242735164727904572820702243522435611818272605581761696168566664681958930591241126740970792715915922132647239914712017099078217905207811780141390489513079242719383715754760401141292591435184324310192890113850366211618650936860474754590311599069059895131074131941985");
  w[69] = lisexpr("0.010341200916425390625935091618906299566813027523847850158401810416603913401227218512532899717665613533996347163920144193248569541697856271922087241038112430371855740057011187688763684989538722012757074870600203164701143622932045615948328750551373719620381141026139673979162511365803190134408402113669129523871373475355462049981904308110200999683281581711898982648434638637549641483429431978004154715085743923141776356783031955219532929670408879316780476752464848193146563133517293849805908083360721001");
  p[70] = lisexpr("0.44272182532965221224456616383691544000997014892574732923038946726582529658381090292980967507342901143503651245486967252758772989984888465713682558552936889205482505161010401958919628167978014698822420809138514571878290606246513922154181097534595626124862456575376481126638963186162054308224708456820842465297968480109023658435043945270452694487082804047934401626797796124837440787219024144525105279307836534474863468054459618067972891779390411089479735543442292655166229877984012395469531799102703018");
  w[70] = lisexpr("0.010368416337720262471277869466729478489014880541664814247562801128347451685131993954453680801084580041844182147501208690936210129528887608231769018404347792938973029541725013775832732491781810930564479967030792395295416470806120322915016636536908423359773686811381876498781421776727052721203197717481553008349169023187917904076663280999271880939297667986191930719143722656669252755985502038829848358299535883587292533827137006091992264474038546674606385216248376363865857238719914780217596038936398123");
  p[71] = lisexpr("0.45310196741913857601871886779609227237073580665663723628525331271181072678000499247036673483743893556448901772976722704285797663595063195794317848956163677280935721379791723564686851199631865415571656699523397398355388577638119296901249480272679967595650191526162059592914701429480454842224249063141133110017630742914296666300605585291998626935851345747926891663467330301846301966992562719020718293239414624281769974250368241918072141949954671742725612179881260925663558746392358909045308302582151942");
  w[71] = lisexpr("0.010391113996445936497660396890860699514144269924247033238542464095532644217973334187814161987509325899637054447862358388062005988426880905639946878435390191920010493135833888617866073137448344795992302898903062547234103161310102455788103854039452679221359367691035538900059225321603478980712157511955186749995770311349319394188061560181666496344676995332408146594723202313662208699058904167055040561216822481839006542734218213278682711920131243521461446008805391080410969901741637054759577597154957282");
  p[72] = lisexpr("0.46350254408313209233419365028945488952573377557451080933349815951954322083208757602667827561367913229249270174527997500934007932430823556024817560335350390482993136923412854555434310006133328802989691865828626777499258802260863481898143396017763870438207580065593758188418124493126104862418905085071064891928742698851481862012159700906489996583321297323335800628528002107032160779041409157362734581126650157754345349877533666576618021324264921039246947657093221748808601814715709948181912578787296566");
  w[72] = lisexpr("0.010409284002699195347110917084762649376277608550889591965328564361411437374283087218998042712605344819500442201074435035520711783788785895904397215922139619576209013858400826661161575056870713732309840620660537330871074234409104655100331486289947629963269902653041735267546402971547517358768393741229045654082300030823011528511693870895280353912588206372570374596433468111759192199077250815858187353112827069386216910927637654746848309134504038059349202184734255155009904520229886208953490162842668997");
  p[73] = lisexpr("0.47391902354605375854710389172652021564760778696767199803179912332030049027475941761126289060573188311433116817040828539402995016470812967925668784750477184947257525748280499542974586198672836861217244195608836725712078316041508188650294287750908875931966021102018772307060970239233891884150249297783928654010844581910288362066819559288263160146299804253882462885053573263802803018538800986163005776869580069154883704280068485730986994481658980309923612907483584075858838225296182461481369244563530733");
  w[73] = lisexpr("0.010422918439381388041961670055973593750515154628576375617890425656163061726354733990533064686020382555350836258961943952523365201098278559689970801496879352741298676802723398539098555948186744917013294555854250102367099130956187481231186536671068887398885791750948010546492484440105359424301360392158786286105485821239290247855631896243654943363510761155042524564354184659600435458073028463900515853336486383735620641272834035518017631934968824605919453384712754718375745354022491703646865419552901686");
  p[74] = lisexpr("0.48434686710310142377157541321196511033130449104334332642620237815535685727327736908523818207650842354349271048747791276137340572075211108774026139303431233846288478966813519855580666981331583120491759681906042129835078425164193127056284089370968454075202457293036159592850124699099551982030240340887021243430677763680587346989390492000965286223920045881689493770271318464182768754438025427230093264094671864728513963378533183846906061694944560212428772409661129663803935938225993223003930797537438622");
  w[74] = lisexpr("0.010432011365648095113874597714832018604274671200552887042171937081077540599350765407820665744643693187286800763614475288792479366576855899074072340659950870772456055047608702577657236415372622307229509241077743950580905033538921795566337375520253983218066952803520727541626599070962513572061812880234240228781555561866570640902256411557693252741572264957214562979826795404432537525315077159593689155370103043402336316093302730138045295082569186505729096603254167106381409587202287885922428833011159060");
  p[75] = lisexpr("0.49478153109787011393654789234097997635335866655572936426096194781497341449494805236102519527547635640596105511593125075895875414059272130182166392797736475618822171612668519927835220567009249129351604319565365649601383552018340890615209086576568233313802887634301592943171879921819167232084661068953701328515637047280560416282077047836844590358460515180797608418358510196554012637045174100165245743400997111585764096524987896058939351670027003232514776457095158284731918330974172188135667808617976288");
  w[75] = lisexpr("0.010436558819497693533491750165675760125842668291841513328489380577021274088069452999734648757924888813340125136557513175359944124696673625111821260400080944395298044369303086375562164605137028337545916253028940192954476134683605027678892416539673919635985403148196407934958343463983354430768796134217821617617987506575386548185439700319944417450705281571603565340518294850435430770327443867212844501810350155166352813806219096089157488357988454719641775509961749509042704062413256250626440516458428309");
  p[76] = lisexpr("0.50521846890212988606345210765902002364664133344427063573903805218502658550505194763897480472452364359403894488406874924104124585940727869817833607202263524381177828387331480072164779432990750870648395680434634350398616447981659109384790913423431766686197112365698407056828120078180832767915338931046298671484362952719439583717922952163155409641539484819202391581641489803445987362954825899834754256599002888414235903475012103941060648329972996767485223542904841715268081669025827811864332191382023711");
  w[76] = lisexpr("0.010436558819497693533491750165675760125842668291841513328489380577021274088069452999734648757924888813340125136557513175359944124696673625111821260400080944395298044369303086375562164605137028337545916253028940192954476134683605027678892416539673919635985403148196407934958343463983354430768796134217821617617987506575386548185439700319944417450705281571603565340518294850435430770327443867212844501810350155166352813806219096089157488357988454719641775509961749509042704062413256250626440516458428309");
  p[77] = lisexpr("0.51565313289689857622842458678803488966869550895665667357379762184464314272672263091476181792349157645650728951252208723862659427924788891225973860696568766153711521033186480144419333018668416879508240318093957870164921574835806872943715910629031545924797542706963840407149875300900448017969759659112978756569322236319412653010609507999034713776079954118310506229728681535817231245561974572769906735905328135271486036621466816153093938305055439787571227590338870336196064061774006776996069202462561377");
  w[77] = lisexpr("0.010432011365648095113874597714832018604274671200552887042171937081077540599350765407820665744643693187286800763614475288792479366576855899074072340659950870772456055047608702577657236415372622307229509241077743950580905033538921795566337375520253983218066952803520727541626599070962513572061812880234240228781555561866570640902256411557693252741572264957214562979826795404432537525315077159593689155370103043402336316093302730138045295082569186505729096603254167106381409587202287885922428833011159060");
  p[78] = lisexpr("0.52608097645394624145289610827347978435239221303232800196820087667969950972524058238873710939426811688566883182959171460597004983529187032074331215249522815052742474251719500457025413801327163138782755804391163274287921683958491811349705712249091124068033978897981227692939029760766108115849750702216071345989155418089711637933180440711736839853700195746117537114946426736197196981461199013836994223130419930845116295719931514269013005518341019690076387092516415924141161774703817538518630755436469267");
  w[78] = lisexpr("0.010422918439381388041961670055973593750515154628576375617890425656163061726354733990533064686020382555350836258961943952523365201098278559689970801496879352741298676802723398539098555948186744917013294555854250102367099130956187481231186536671068887398885791750948010546492484440105359424301360392158786286105485821239290247855631896243654943363510761155042524564354184659600435458073028463900515853336486383735620641272834035518017631934968824605919453384712754718375745354022491703646865419552901686");
  p[79] = lisexpr("0.53649745591686790766580634971054511047426622442548919066650184048045677916791242397332172438632086770750729825472002499065992067569176443975182439664649609517006863076587145444565689993866671197010308134171373222500741197739136518101856603982236129561792419934406241811581875506873895137581094914928935108071257301148518137987840299093510003416678702676664199371471997892967839220958590842637265418873349842245654650122466333423381978675735078960753052342906778251191398185284290051818087421212703434");
  w[79] = lisexpr("0.010409284002699195347110917084762649376277608550889591965328564361411437374283087218998042712605344819500442201074435035520711783788785895904397215922139619576209013858400826661161575056870713732309840620660537330871074234409104655100331486289947629963269902653041735267546402971547517358768393741229045654082300030823011528511693870895280353912588206372570374596433468111759192199077250815858187353112827069386216910927637654746848309134504038059349202184734255155009904520229886208953490162842668997");
  p[80] = lisexpr("0.54689803258086142398128113220390772762926419334336276371474668728818927321999500752963326516256106443551098227023277295714202336404936804205682151043836322719064278620208276435313148800368134584428343300476602601644611422361880703098750519727320032404349808473837940407085298570519545157775750936858866889982369257085703333699394414708001373064148654252073108336532669698153698033007437280979281706760585375718230025749631758081927858050045328257274387820118739074336441253607641090954691697417848057");
  w[80] = lisexpr("0.010391113996445936497660396890860699514144269924247033238542464095532644217973334187814161987509325899637054447862358388062005988426880905639946878435390191920010493135833888617866073137448344795992302898903062547234103161310102455788103854039452679221359367691035538900059225321603478980712157511955186749995770311349319394188061560181666496344676995332408146594723202313662208699058904167055040561216822481839006542734218213278682711920131243521461446008805391080410969901741637054759577597154957282");
  p[81] = lisexpr("0.55727817467034778775543383616308455999002985107425267076961053273417470341618909707019032492657098856496348754513032747241227010015111534286317441447063110794517494838989598041080371832021985301177579190861485428121709393753486077845818902465404373875137543424623518873361036813837945691775291543179157534702031519890976341564956054729547305512917195952065598373202203875162559212780975855474894720692163465525136531945540381932027108220609588910520264456557707344833770122015987604530468200897296981");
  w[81] = lisexpr("0.010368416337720262471277869466729478489014880541664814247562801128347451685131993954453680801084580041844182147501208690936210129528887608231769018404347792938973029541725013775832732491781810930564479967030792395295416470806120322915016636536908423359773686811381876498781421776727052721203197717481553008349169023187917904076663280999271880939297667986191930719143722656669252755985502038829848358299535883587292533827137006091992264474038546674606385216248376363865857238719914780217596038936398123");
  p[82] = lisexpr("0.56763335931357224497927335809268471287204054451549226774381125451602452117789800652578610209557829591798038919996186239554568665978195298395551601091228705426561614463150373231243802218143508793786351021266329228948216461869115631241409757264835272095427179297756477564388181727394418238303831433335318041069408758873259029207284084077867352760085287982900921782094792188219858609510486920757280616284245239598858707408564815675689807109886149633788381349063139525245409688400930940104868925868058015");
  w[82] = lisexpr("0.010341200916425390625935091618906299566813027523847850158401810416603913401227218512532899717665613533996347163920144193248569541697856271922087241038112430371855740057011187688763684989538722012757074870600203164701143622932045615948328750551373719620381141026139673979162511365803190134408402113669129523871373475355462049981904308110200999683281581711898982648434638637549641483429431978004154715085743923141776356783031955219532929670408879316780476752464848193146563133517293849805908083360721001");
  p[83] = lisexpr("0.57795907451332578612206445777452740727729041601395935100988682436245820417053795703824885741794927958277423859106336095998499664443470227552352459275821187601721796912830979856345049172542068799221084492391607039845850423992960394125120032976007959055455632991159942636300924099126663330021195285545519658462484725433778063093589754594437468056548370789351587780903657874725657246604927765022093016374243206646050191444070140766001742988641812989438300409738457838650641065936974900507484605407311397");
  w[83] = lisexpr("0.010309479590959842483514702648912108032452250642524594463650569298911509699310666246485017775608791818157796000476519596805669279871564136170448798712869833446655012800707305043007911329093775982353741590542896934946200660264906587481107517818645601363864207924549576677676334900606591638182948969015262424654568329422335318270439931937479740647554464328193585443459063850666567227899929017801174242122085544467084732114038675280303323781741301533264178149626902247373477700815271424216199837842738338");
  p[84] = lisexpr("0.58825082111292834798791570878141043820152468371649645917730851747794177031730966323241250574169871196827609698685790843397519249211648421926483700481772874502284272198790010168627249879041781662196013546906710644486859071934704190549293866487435538384075453439352635851771396047155178892394039834345924023683686737518313845704729796787279214854099683387310362292854436798417072904008246875504303545921283711804091301870857579976044979541267571716905892395703081281081188434637836405293650099543279587");
  w[84] = lisexpr("0.010273266183050462088187847748461745417041845058308863425472720408235614642364416892214084009823854091107699187983288184189148336781508550717527280921379289957585754633197920409049992656762711469490273486853622776129593916808799395684159407835842652912863431303271685295009086863872390460493125256026603410805352621549988233697730250207890749937452105315434692380886555557663133290604457651488283131655679485624924350538777196095010802239491930095486479291577205921424499792041359335229716405765734180");
  p[85] = lisexpr("0.59850411475661709675162252759080824867842451209076214167524213364013700688130216077779277642134582923583615528607822416743823012780793969907761125894066513029771687627488385455512801783273015327042333950470463033074886454387681217688684787620201625146735917902088497714983213408866285055176602687144863038451621900529867062913183516793311662375810013018346289159420260783198763485206186772684498623895382345728315049910407410263518172044531153076415567077370612082812691973968383911523926611887094114");
  w[85] = lisexpr("0.010232576471729966334059228940805524377224088435686345088664253679758389050000623289586189313848111817107590636910192214437156965178584330427866473550879730416448189976336709712258955975072374770343787311296182858289102597210886833264970291643736593615003431867289568205683343757778299830072552716078081012189622577109934887823886274662908272364284096899775400016800672927183700521051096710352171028145188372427702784699893741961159582639195479261704223179366577866992643385812863198611137196037962006");
  p[86] = lisexpr("0.60871448784348560519869038045934947067848572697972949318976161697115899780628533132387071257552695563216493575056715422349141523515514836679986745144851134159906800643145115954647303793969518075693031619333895673470760313441951594416528062018265256915034812385770549985520252056713282000631702197200711612896796716718242814806622349650473330475994816394316887342834763079117996185760258649037555646883304671408181282403588774293209542635980713942218605154708587827996286699107737441474870450644164018");
  w[86] = lisexpr("0.010187428186461651408419109682359542029192533782184204938341458687723134353023588530475777179237503570167089582480605131792013616598694409275837498047682216492308225137693179550852115192056298256537243313383383408267774096265748554550181681133911850739658512386989598897395450337283615835448132037826407096756866531351058491090569805833582931478300154144296380461016072762649076136032307527094032538268896838660115520010908465379815772210260274456178666508762344098083725167941914019599272759356806903");
  p[87] = lisexpr("0.61887749147412254724730012906835390465278351315841217340706964871302553794969331710145650652266907808072004840931564176627285544225840103933045026007528481563978035729275099837866458576732352566609787085000983881764246604185456452310511931184005882933298968813190880278753959751787791183744431724745266509634851939679639899776379911919540689404884811245369684260581187373091482153185532337757138664933051165996315252375274553932430461877071206244397581339471770859907300159204293451318223852921067372");
  w[87] = lisexpr("0.010137840999414251105968211687395586012588110055817555447681768429323316082741972056267922544121129565141014855339057093192355896642301187806869052237042401053070491355315349883452707570723717291789145961843356299718152083849556508491698937274105739597424611537119329377052951528093494123972194710308861242576640565625824600821878645259408816611910667101529746922646955823555904206215079293889589456323347235262817389312304029094224585022981210532939883148264866540353097190582011332899833647315755667");
  p[88] = lisexpr("0.62898869738910171385299962835248398833449488203598364853991726989140683653736037769178067366682326864662383470452970292170121599765812252825376360080791247082860186236415297690852685019173434836152579836085783890424860223325512577224902915509447455815126174648733003257068773629844711051227213937324901962489404223628868911197126291738734459462378829016387085470643734785475549101561416786826158134633592146523300359369048075312836486448404958145146503162910935199596170271456246816925471969297965557");
  w[88] = lisexpr("0.010083836516890313073809067784034199759123968280177176717719931236648780871548673976440309391414361886978201184776358648333177420743763888891417868461289029446293019678862199137971943673368513064198682000641524318095888186435490237844309738197592141011929752462365490269141309641217346802215344664365280295774718257508965714122653009298863598649328709647765115661538936551758525321431104650900610251773094984778826130033306987293929905626449615059109347180113369897204206501874529909903593508047847559");
  p[89] = lisexpr("0.63904369989847870500486754732963986076860765587859513169255241080433373874949868279624334491005622801897859847925331986345287811393929612237337083863752195940831026461035168499564254360279998254377105096748448960744663142590685775191136793677479853998886341016410535612214914141667816227394821756805418919640144797784084474199045665744482462408374356033318052123151249659485321008688177886285334023263391540203502497173317974966472908846585663528822142838665119520169482224069819423439111031074808358");
  w[89] = lisexpr("0.010025438269911827885638025558286320619886236410369712445753321147174047101229100289373172209637799587865653490729518285663286759201188566460165184683225179561496575216082211283124933282865488831247341114931681556847327479230091650843982751958112869628979528698582363639481566343324529137733929962257057328033998775047595117082035770326163887795391342304423516054351111223533191938641770240927692678032268359924014110213739288918497126288382362832632090946647230506226143490162874768080547816132472773");
  p[90] = lisexpr("0.64903811780145357116869217062709971611270588202229282618584536303513965308310314007300645033771171588597150031865196534314854009267721028407546638291141891109203515248704081695844477759766743757793326863922227155549212691921937817808868283850155850471053346327357941183416595561484552067746393986811211027644069433851574581849520659539997131640763266490354406123540512430495305405104996960416273063302159862847767436677144439842046188903857505699860470246023358634168042310971101541040404059869312064");
  w[90] = lisexpr("0.0099626717039672130559084510523397479626324299450100373549117227454885689010955009210995430481265520487508550430243404599444823757465805734747528173598496098444040540297693937190245036187211004069386607035993568764566716023261540286442825615615920033594139799937842323615833787367459396798557879326945001189328385522955594449807186038059879350183718667368919163431810825825110824726809047986913427284060679386475845393298877714154451573508749277340492979978243712622620085354305471540447185822517161940");
  p[91] = lisexpr("0.65896759629536296251208551791521604401651367572390145028855240693596476582741282970670799778524862765733815564462573199895962563716971069154490782559788273052910884041358331686413920968735258037226993639775724313145972879028597572567189166754879010232199063854265508693419815167409213834599053802152666365689485015305692045166873587395715530773292458090549362079904816154409101887486869039937107414217123742502474670729567119648425138333253707914647708046046840693953588051159937703014286755236275265");
  w[91] = lisexpr("0.0098955641679241195309994554408861134881452222956352209580945115114114629208146632358571474927900305661017937963112934401381201744481637610288925706932136986683050820303963013312052752683526909466870319733615807037105855777080102957480869580490378482324608294327206077561375242066199486946394775933730643973906008181966784865671353572949152690022596296445520819176307511991062050848117715849084248312051836849707932193084663639703937795777310244607851332167613218241256750927596185598920018184458426340");
  p[92] = lisexpr("0.66882780887316999369279668485191997126407974328372565274019530475046231434436134667330175307162638423976770172515551416909731913740809517459413537248897982606243128112077721577854738722919733821815060340134248255645299037543209440763852971762085630218293041066635355018112403805818843334744182044126916992447966384890700525159278385937176833037878466079370389697936966299653115251288869325398861077857821782264466288689689423128713612577856874769486138661336632576399867480733945195226182680757799452");
  w[92] = lisexpr("0.0098241449021128916756760876243923388389731888983563338153227848017761276929456366139936417628923772269684733998303979305321238270994037153765172968509994878216525571984174039908623336476651748206819121454794762728384519974245923330106709338692911578585987721681424795412029469152991176004787184932476010028911354684644853416783023239644296154420265078760538577003736895221651442541789425718892796890428582118451808731362376300364871014680499795494616492707119840996497370179392490743050768343757915490");
  p[93] = lisexpr("0.67861445920862504388069190646068593940773652484189650656821608388287963869272571920373324772380310910681787920456111850010576586827967354037758536790996021008825029312814313781017494842359547559371342969416698216316246186511351715193970628790496533937116409105328681783452799576047121923950035043012038484014974653391913225752501905362990818906346159395752906982855124123308911650745395202375428711725725599228801765688256553239977582791680286101119702091738967008967035866240794975267161432794957212");
  w[93] = lisexpr("0.0097484450255858731513375641264922935774280133991640479187589077362770730319565419225103081139178462958329294871164687254826070264586526780103314585980166676743190752352499144409466696961990347970875744332055756276826814253140508280397553944294054029275786787053006497707589003530598865931351026454222251916726753208112308452990870463086379032715646171467915458121457950042840539039794211962682251082823715918531190582816873560451973663121782426387299680146483244228913577117073622712478822304514311252");
  p[94] = lisexpr("0.68832328302827608383428830495821772578500193665043726904239583702366616237640779300553125349644376144633845296925061062721095736767234852680610243710502595526002635047181343829575425802279493478312756462358274132135368526716048146337990780803310058229914624891243943883782486193310967491374736014751902251856185406671370014632014740003803960277997282786866656120039145725846197341518436195753060371867089032581322551737210075988533123474104360836212080434428576477815536662143914236657217445362419575");
  w[94] = lisexpr("0.0096684975225581102006866163747518921310565165649694033531360653756735485662467778827527515686833167843830100682353569717268270194874409414586699461662104323853514761515498587973479648137867257859753479408462710392941963694596785791922048831704619563990936479641578826208728767628154882157728820053294896480645646382323593096007802242959416243217803534711530280891783307212011642101153579557657114155761630562631308443756409019779211811769708125378096582823834433578434226775315515892346570538967037475");
  p[95] = lisexpr("0.69795004996951285192622101613832100563668035294249313712441213445449471126515186007543004628959646292234576637442257397443408857855211800299437744924683743332745943311786602884803378794251543399027428215476787643241689279655700971108099948860221294685938423762865323349014697347674091344532336383145314388817785691877784742999160528445897252995148532906223215335362990399630049358634244222658455205579854569824028769762289632835295739546384507429837881849965719756255684417269612273823512704989673352");
  w[95] = lisexpr("0.0095843372280353605555669062663579779428427012540692928266897883541079505592073010047467576125491584396316646896994188876700741486008074123092233887964029842098635518395471462602571282898986260739387457604442284151376554026803679930390064980326305378068094057951275043328267940858453634075892862492637883437258894768074492041413031051127658124590392082715366014749490379765140605519398945858837071394746321783863805968054836555907847691249925042770280612243911804258042052289234097678661570634257237062");
  p[96] = lisexpr("0.70749056542383528651507953266150490936638809116919342475981677746624272998372208115494898233005310811018972359741530072982237383242224243139903061195453396678891991674365887822405730614593950687931719734750052702974489697230378676642550115546279713858045765005115404927987697388307813705247038712759061534466412424849941563628539537722902923208292784955951703620147713638564744109368571867899208550998217911096895486747797070789376029365135874225249034070250470249859069444960317680164126280330779224");
  w[96] = lisexpr("0.0094960008126356703160368748191123359953384371546649291802492595388820934505677715160625612732511626984816127278611659881471228838054965914148919968862295989528450267039462908952037121277503907148574808807097326724108103970964196818212009105475536712511257493342987275271097527253111868223347200319372701916510493692970037497625488789923713683563478325177207936273452598424593780812944048299071022910961173451050253375405559319315196756163981964593733428768704846371493552654847353459429609902573999302");
  p[97] = lisexpr("0.71694067236454306034602005542676421532143979379584521518824798560369805294176717335088834019002537304903290728018249497154191391822051028075634865484921059971301020716886647993632280467216629563961921308081895583839604033460489424121783373774123940570388574925065456773192980375759069500027572458259865362350979447323043610364280614682900417722662854234638320061337872482352317899002222560132560500504273322744910958909676548944991252172993565198636082296673105599212574302285698080671003952348863554");
  w[97] = lisexpr("0.0094035267666111325557871814428226671105673326055144535644383983801997189676259699389726076651264780199029474902472752611731032803512617860573084101974847353551407509941545062549807650909663170087258089525193206497841406559204127520181585248436007193369386843860703275157959968662169119143255044388395856958675100419299987868977467007313798502714988294241259117029901452225009589402718557729401492710471193081550009591570810104948177172346179266843459046863868117669140708507872909390948035106594476560");
  p[98] = lisexpr("0.72629625315804985092899287199672031091793930615897101004128831938149507940467153667322380741445661183635794204116000702834653389163833015090523731261417780105111720823509939896723530735440246163054788991633073835287766958313870441780890047446190294844081879106936232186957146216771255114517069846138437357598194820007411642336219504607529440891849529616966569662206697206970230563433434313773074994389555967490017930177120965611359320516251151863013916882871120891459749102582974505140142899694756624");
  w[98] = lisexpr("0.0093069553830767899396646133936502154281918635067327435734689238339158291427485182096400698577022198189906512317795435633435027470886167129561030428703856511142549795968378019458917611776259764346906094975572789236252878153340502974603817525416140232569251071208465903610044942419588582101830810458550939945297714031367238659082343070618719527632868054212674332932960000008175932982573660428643314358685046204602050453618657075800527914447979323618167052252272459990245486224137581024828323531189015723");
  p[99] = lisexpr("0.73555323135803311613950845650571736696897724474442407945558128833249302559895838720040303102386755475140020840879689672614889527591640473271933749016083528580178098095462770810362461345231974447156555273600592827810287248032107980101308461143406441185539254089138196298037791209337636613282774276016398969119427154830996222751289366469675535514321049593965760893278283305835471203350776729781585361470777131165044893203941338013544305195690115879085849281875048796053621171321036099359365453542905602");
  w[99] = lisexpr("0.0092063287404539891427494202128241003876539759800358634996569992388054409402068548310900716483208229812588562027954074247736865678319068100452151435035743611737503098655003641585208900666828262573965168756106258774029404207093080566281808819263363530171842266848868676234913453410528610830244819752885614030247156676099549473927865063224367155283077992780533718948494112013999026359990104687239879729521705747202934624167263336551094599258899757926341016198689088417122064379383905339956477293958799649");
  p[100] = lisexpr("0.74470757348163762351101845757627493127916515531692646819243983768321416330395475126460486136269364502112528345605148071827976824856253681233501006531310072439216980567758495842172924716902020733773336737953319253942299751766144795189867274607421395327936058041707084951148963862688453685493704149893257193515705341773974221080663335490687992848468142888936323642159822572825911857502308915354619414010255617824883226567963749640542214162047140939040501352439870494037425264086458072515196932511268981");
  w[100] = lisexpr("0.0091016906841358371882070371984757850891158007232951148091217045567314507715452377840929853666102830698953486060994360324370031545514193171722994002140516098743017522361085181515484028553889638820799915232873291761399430867569630032155726721540816364143144425722426254377778858310558768995703198265829291762855697054374143692148195037882210597137188900688526192692018529189860890079659265345012954666844177963157612757102820125394082366630580891913959703700977659051100930549184805665592256892496145990");
  p[101] = lisexpr("0.75375529076695880159057554441041752304756164849576709229546285527251832867360378866320606034892676357942084548597431230080267203722801482529685424694901605104715636450154610559499359781280055870265488105497584281915090564715051507389563597123459137143935347843919633757934740510508378781260318577188254192931859111506013665384342908694972978714141097909160957367647448208432864219604441691283717346925345144868934480769624814905916599672129991900086838442047288766067549177579640075773847352342756735");
  w[101] = lisexpr("0.0089930868073827488258706877998357664770524081630085448170226562784990907187440799270383089825948668897217685135560520386711169602760276333430745438685761375808004958866454240358292987539157449476383975721014918809236777958071253118831124845453451032715099071199587075969904989357581549226720516869754593084143317763131935926171201441293219504619139610322437748688129494259932345110933180395958502910304130762167234756542628600382676607819232396189462053391924827680242257364081591407183644849061023626");
  p[102] = lisexpr("0.76269244091104013891468054847597452521191461535503775279306706086329522671120686036762054679830556578872639025846940721710236200711690409138898854964043589529106583976006137883786634413682863252542364605355656642234430028895572843355235639160422882783004823585688215149693925938729027938881439060748972022285575770893676231938507303570892605810971615482901703354881914559160200699046563999835369231789468478537238589204003923605860688690763590750103868490619560679437343014719284651764351282342309836");
  w[102] = lisexpr("0.0088805644314564096100787668629834058980320644723127492305087823564666038191780520201525564832551050940789987734636579823151745444983638042514613145027529021063576021356692490774955223297460967987865475398194353397807031022105647922451870931687225864098668177151537483095047389379064145464716959032718032203602412114832606408459274667422359299844246176299808942755704562480742702620726075073188794935999133996238535357414789708934207958889652281426700256297520520860947920851209576313726554814781040178");
  p[103] = lisexpr("0.77151512978762734709031052255863059752404045070184247155949968042671780544611828507693847124433380183844612819440029350306065979381467299248504895776793217984067704090500536090805070975914939505423192986780173641261034764491805257828333632736583528765219416280726093221821144908178608430954750327342675795746731062375508665074339444764283863884407708987482544922077584383712119636744886344109460788999545981923032559040723925302466819758748066979263235609824969060110908389631951228073664887895865882");
  w[103] = lisexpr("0.0087641725850008112607871541316437764220733620427809256984936309066632229076147779810113341000070582249606075667145397850035509451180567176497670543061240879109024996210628481037181014881611240608166674537574101696673330017357444365242614392563948220565639392734745081294244767698347556899564765772982489193519659409871266879404015642599553967137321649201279806605532529059745784484295103197531065859917286886637841748170870460977469034194430559639679042029709090547894557070307487703909428366411884794");
  p[104] = lisexpr("0.78021951314393082545555579887083342262254973237023257182742719439351297880820579756957990770965653009054099654086699845160857232533971361982046088162519650472596314007313197696691854136053800061357512668544894783790386168998614946733387474855729962577904829854509514493386562079846369023871656101284956770142324415851950526612483314701783634741962044991495605816704181632377998662165760921948306959260907907443599256826445827793871797489788217344192621340457425183270221918018836566797321200436867050");
  w[104] = lisexpr("0.0086439619826793440660058298471028113519961169412297488470807112918846037949439496831135480861703807733279820170297525366423342004036561420993021391697431146769359770474532318796741582609209892760843940583385713875082711619058418500114363148510768077599951557975255254436889201599567286449796687334034223629769219312846904982439813522157455842979261424705373822703602359030365831178326641523586612156432277356504124060678399089876811618287395340206928114895727268697073804627152441224543217961165892979");
  p[105] = lisexpr("0.78880179827565711202458740119414900278353792199371161020707166295181248189230977274171832311732579525950022169908739225070604413145935289507704639800177791169067352111156991156298106589843364193135424327069434841046717558579209964199313424612416859068532106415062757344037726244352389013688300814253071500353629878343774510802568146663212835801933501985123778968870405622377012148846137729205229468067107890477683497968036351730230373049982314619486346048134426253794089525114420349610418189212614103");
  w[105] = lisexpr("0.0085199850030772553686351770836420031242332506979150030173774296415781745023512035426945026967928592443018318968297055590667124751943532762068578426687274498706876562821802563102730801798838460930147344020627460575240237438889498944850332430707014049538102052105243913082666205257292681462423661929467399832213429643271954268797760127310955752756200796572317448677327030392050133741032671659719830174897607756154170226502384693124625723630462418873946138231311132247313144551852046274331524600368113733");
  p[106] = lisexpr("0.79725824567957947493641430933799920669253866985065588246118216885391996749220671435206820132130395730783716242160434472477299549126717229664889865157097473191243178306580805652597955553162804590627395140585204884492370307381842763200992148785942575254505994131003952479756447652176950097867875837948228718678328852898705935845588779536036437277291323432488824944437669926103900073036836011911247461385069425099203318530384254349986306543623190349745093546256746812282726470519343405826606577702671152");
  w[106] = lisexpr("0.0083922956658791034425744666875863033115079013370275444837643104144015463117072434417744611072068384954886922803801176327190802959983886021095690666414563781064604213946711683523077275761441786326290634164414637468108506162186528939151463767355719790125549574967903114431781895380235182404705769614521427824633851294308803432616604758218641204202791940091204691729426505895827462324456996888492295843670497976277864466524442174567164838116772898555834208144390206173330868429924406906672314455480762264");
  p[107] = lisexpr("0.80558517068292758633732604312218615273743912848567269547127117247740048141864070594018395934725987324666150535978689419932797567044897683091166734864670206021766506847815663353615203657561832082212962061057618879987318642902065744523521451493800354710305161653850111266301956941804849636306658084135444426275600019042943890259747157918856822094620711436381030565234574571951212287093515342919338923248804944586900316113742735635249596480305557509093434907835146026552712045499528794192469371869990864");
  w[107] = lisexpr("0.0082609496083311521712141434036541854277371228556592861368346580381707450033487759540775404557879006049663205773812695453115414309313734533515813806289135571651966814811588658633644710944797684712652097744913473639877750207693150761091615758695332923174392077940045672957420707525845846495895300947166069917862459627628011689631072051216605046892595894619333089424462824359885075861355014354202490024703033264983847488831107120400621403249824224639426013949666043243609592329741449241772126416649292145");
  p[108] = lisexpr("0.81377894504888632231623470426772466739948855456094913839789710544647963010074444228393106969336601531287074141913022035851984014190618147919939481333599253891698067180463208464241404400877122949057835782435835740076100955383032590541260279928401618397049161482057334594263973246621099958995555447522961217636779049243048382571299747130203269793329919581736528773046030593152489965421223404072930149124945932734947274305673435853724915299930918614466090811092367747375303834308429064806139635698816694");
  w[108] = lisexpr("0.0081260040609989637704455823916854126826663443097585814528179527697749992783657490991541689538928730294129544510240003727485760824913931022310431227813723986862424601599689276226512833184124890001522542606122204460696054323249457250443972626328250890795457869545852900104188954640565387396779120859854526614325622052767982275137103019262983845491557146833394041074486674581768297620089253208084012889402518488724474307269371705706095262616675864587088426193229382695436587313768324491812410458669955618");
  p[109] = lisexpr("0.82183599855750414384061040193299580158579872856190316148375494363775086422318420271902173946416783764863519093003930593071864848296828938448832067776539669465962895821284277113137769233431882814952914523534597213124504966136868967387276824984008258478993477691160054353067910088006498855565198246822039585620530681742668506714419654632986936686588971224434683212600459136598335066767569870407696528687758361878893344975505146214138316638116533857362767094866911043880750586238886466567446799774874398");
  w[109] = lisexpr("0.0079875178228307542281722058391004891103091837935117783319614042229852673175790799752399083525996213729773340666178748757555469734918008551365234236723028518787844267523455057722665835535482776595548439374800781182082285811815299698574793281461066335568666560991357266590691461282395282310101060870551000840094038674543420950033000194110218044947647564062399700691557295991476765407189586190658511831530036523404608035939078906039404227474915099040707834509574367427222055097538463485938651041064049311");
  p[110] = lisexpr("0.82975282056132223015208537036549690004156940309688329657141004498175713233823108096730092473412844914085169433812240315245778619652228995937581773867488239511771043953152346801788492364109557066586862181740234269711270633383819713745360362823276579662969667454678375485255116315036193830983940082538995897367871470333046239669769323370878910112755728336716282713241881941112217819577435135899629815036279624260842794431744857753531396101093168379566012090207637897881718625717624020016458488118062631");
  w[110] = lisexpr("0.0078455512355373790501341132905377532600555993444451055634095156764434321140238903835999664911562173271752510261023102319365755314043062004162786437975646293631191922496259361842191689786303252012991427188762355041606033744152977464367223137488128613848873606820298419360585266505864921185627913496818727214479256522516353082420978101602046102266064084315724425296641089470028005862177872615246648214424664225195080364117791383655297539100778604677119919691960052059561320755942876759140011058270053338");
  p[111] = lisexpr("0.83752596151504655321029994586941054455943172626497702027284285978941609063179737945289638196611530914923854324898490483156060813165721604282490546845468975853923857224248306783944495268748458244598696753310298383304495865501311077952625471452380980920961841181613627584545547783932398268448696648695465666551182815589714353056806668017861588803549038237870699779034993359104463132249094630333869649155067678808933046559159257325062311630806400563120624967970980219355399356335635121958137273101070978");
  w[111] = lisexpr("0.0077001661573001152038365185748576043750338832683241650999541877802444998766071447880041426007764544051140156727358609957265650962672642552704640141380445323259538861353509872199618002243435507448644058325120169809299509607469882710829709718581864089058300616698583129415941465337985914561522634227096290151501099838819384512799257988239946807155237547853202171208586778025961596747891112327882704799457279697202042087898062168123528642678680829625781275474123300739000488875728246810247359687947317021");
  p[112] = lisexpr("0.84515203447859639485814296583769317514417085836475064702483213461593008521026263428972402782670823920827190487574159851002563181181985018820393017947495084682156465220209236504911221724950765150782761674847561143089371999257049045725809402725577782676438159535912740117525494968341483894541969040977565743909387876069551403696392847326515064348631251067829695922715173067807359595424929394531071377704769065033336715916201205356881868217215562585023677348083594800222975104134503767548601549909768447");
  w[112] = lisexpr("0.0075514259358176987463473101187680942469535705048772603532709880692405057043508266288215326455607104843396950443542854245903576162572140870113883026736359245643073037679804131561724202811041487759556610958798966156830245975257725435437301558679709496300449661483912386684095008513072164057051185598868598778300646824049544646601539512670864644717997965812444059860402574162616748475742152658201450861132105388272819060455128547809040623944945098112542510601428715586509758104583884932910539154073318811");
  p[113] = lisexpr("0.85262771659287441267334015872016251281079650589451174711446197981852551005969697054451959162642038887523214027481353186319438846720601506072599797058374557578466692978548527928834896698030718751303118547826874464981762534220158527223435899994614553761909846864538083555568081631666094399695848096787764316536991895511569144645614848129150718687179445564289928811224830600174125564204560121824500161545698781266324327341313904439210713944545304960658680827649744878214198059130095874054662865203070038");
  w[113] = lisexpr("0.0073993953807043664309320839813599848223131207435616129449535059468990877527043684274507403077387025972173018837167825210513167624928738820920200518174309036899240943458689199066538502893050229700651077856187399810536127190264742833268376804870429747093000037111059504436828680847378340033023331866964713339050686508486156667422097835216542561367342014148633734999130879412072333557693687582687968409619394079535978413098761109186492161199026364875718610456149738527537904118662690363385524140066447442");
  p[114] = lisexpr("0.85994975052761525115553174970875992407224032780220649665785664749974990309359649340319080985595404068784040626042364545731765356189995672549995241236632242935064159488324806174846481862106675659621985312231348792576687675370500651989297930099705932488287306082077110962759548450874381722924071470144792020906968652441818146787958394972920355462029954465607873954375753718141090185118575673578304631430165657523201367802621784906777421385179244175312401738531482952415778312530145157791493476822965065");
  w[114] = lisexpr("0.0072441407352509335557773783331204595086581527189247011694549120110572176035574806623072986542472896067873790861110870407411555923829495895230329472305566944951237198078300108872051356974042476697171255072812212592484243001539761769995495074835810348972282590215403662294067070103700097677270916187751499870333094840813885198916419884593512645606263237659628638231680040760664102249599024882036626381642321443642993213247510340144260295684845602018183729068393447369578474136157565013905086217602439886");
  p[115] = lisexpr("0.867114945900681867116874300762219466877746923440902320577094522428649498520133804460588985478030294659233460580242430522302294730339326370894224337047431555946791580413180816105986263878479944444044651969475282738942250696545458528849655598976024891964488982407