Changeset 8af63a in git


Ignore:
Timestamp:
Dec 7, 2014, 6:13:28 PM (9 years ago)
Author:
Stephan Oberfranz <oberfran@…>
Branches:
(u'spielwiese', 'd0474371d8c5d8068ab70bfb42719c97936b18a6')
Children:
11d9d00209c06444540d1707f2976c99061746a9
Parents:
8e682d5f25a78c164969b915eab58b33631463d205e73920ce04956d9a1cfb78192a4aeafb5f5b70
Message:
---
Merge branch 'spielwiese' of github.com:Singular/Sources into spielwiese
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/algebra.lib

    r8e682d r8af63a  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="version algebra.lib 4.0.0.0 Jun_2013 "; // $Id$
     2version="version algebra.lib 4.0.1.1 Dec_2014 "; // $Id$
    33category="Commutative Algebra";
    44info="
     
    7777    // ---------- create new ring with extra variables --------------------
    7878    execute ("ring R=("+charstr(br)+"),(x(1..n),y(1..m)),(dp(n),dp(m));");
    79     execute ("minpoly=number("+mp+");");
     79    if (mp!="0")
     80    { execute ("minpoly=number("+mp+");"); }
    8081    ideal vars=x(1..n);
    8182    map emb=br,vars;
     
    180181    execute
    181182   ("ring R=("+charstr(br)+"),(x(1..n),y(1..m),z(1..n)),(lp(n),dp(m),lp(n));");
    182     execute ("minpoly=number("+mp+");");
     183    if (mp!="0")
     184    { execute ("minpoly=number("+mp+");"); }
    183185    ideal vars = x(1..n);
    184186    map emb = br,vars;
     
    267269  // neu CL 10/05:
    268270  int is_qring;
    269   if (size(ideal(gnir))>0) {
     271  if (size(ideal(gnir))>0)
     272  {
    270273    is_qring=1;
    271274    ideal IdQ = ideal(gnir);
     
    276279   execute ("ring r1= ("+charstr(basering)+"),(x(1..n),y(0..z)),lp;");
    277280 //  execute ("ring r1= ("+charstr(basering)+"),(y(0..z),x(1..n)),dp;");
    278   execute ("minpoly=number("+mp+");");
     281  if (mp!="0")
     282  { execute ("minpoly=number("+mp+");"); }
    279283  ideal va = x(1..n);
    280284  map emb = gnir,va;
     
    364368    {
    365369      execute ("ring R1=("+charstr(br)+"),y(1..m),dp;");
    366       execute ("minpoly=number("+mp+");");
     370      if (mp!="0")
     371      { execute ("minpoly=number("+mp+");"); }
    367372      setring br;
    368373      map phi = R1,A;
     
    372377 // ---------- create new ring with extra variables --------------------
    373378    execute ("ring R2=("+charstr(br)+"),(x(1..n),y(1..m)),(dp);");
    374     execute ("minpoly=number("+mp+");");
     379    if (mp!="0")
     380    { execute ("minpoly=number("+mp+");"); }
    375381    if( tt == 1 )
    376382    {
     
    397403 // order
    398404       {execute ("ring R3=("+charstr(br)+"),(x(1..n),y(1..m)),(dp(n),dp(m));");
    399         execute ("minpoly=number("+mp+");");
     405        if (mp!="0")
     406        { execute ("minpoly=number("+mp+");"); }
    400407        if ( s != 0 )
    401408        { ideal vars = x(1..n);
     
    495502    def S = L[2];
    496503    execute ("ring R=("+charstr(basering)+"),(@(1..n),"+varstr(pr)+"),(dp);");
    497     execute ("minpoly=number("+mp+");");
     504    if (mp!="0")
     505    { execute ("minpoly=number("+mp+");"); }
    498506    ideal ker = fetch(S,ker);       //in order to have variable names correct
    499507    string sker = string(ker);
     
    645653  // ------------ create new ring with extra variables ---------------------
    646654    execute ("ring R=("+charstr(br)+"),(x(1..n),y(1..m)),(dp(n),dp(m));");
    647     execute ("minpoly=number("+mp+");");
     655    if (mp!="0")
     656    { execute ("minpoly=number("+mp+");"); }
    648657    ideal vars = x(1..n);
    649658    map emb = br,vars;
     
    717726  // ------------ create new ring with extra variables ---------------------
    718727    execute ("ring R=("+charstr(br)+"),(x(1..n),y(1..m)),(dp(n),dp(m));");
    719     execute ("minpoly=number("+mp+");");
     728    if (mp!="0")
     729    { execute ("minpoly=number("+mp+");"); }
    720730    ideal vars = x(1..n);
    721731    map emb = br,vars;
  • Singular/LIB/finvar.lib

    r8e682d r8af63a  
    11//////////////////////////////////////////////////////////////////////////////
    2 version="version finvar.lib 4.0.0.0 Jun_2013 "; // $Id$
     2version="version finvar.lib 4.0.1.1 Dec_2104 "; // $Id$
    33category="Invariant theory";
    44info="
     
    14901490    string mp=string(minpoly);
    14911491    execute("ring R=("+charstr(br)+"),("+varstr(br)+"),ds;");
    1492     execute("minpoly=number("+mp+");");
     1492    if (mp!="0")
     1493    {
     1494      execute("minpoly=number("+mp+");");
     1495    }
    14931496    poly A(1)=0;                      // A(1) will contain the sum of n terms -
    14941497    poly min;                         // min will be our smallest term -
     
    76267629    string mp=string(minpoly);
    76277630    execute("ring R=("+charstr(br)+"),("+varstr(br)+",y(1..m)),dp;");
    7628     execute("minpoly=number("+mp+");");
     7631    if (mp!="0")
     7632    { execute("minpoly=number("+mp+");"); }
    76297633    ideal I=ideal(imap(br,F));
    76307634    for (int i=1;i<=m;i++)
    7631     { I[i]=I[i]-y(i);
    7632     }
     7635    { I[i]=I[i]-y(i); }
    76337636    I=elim(I,1..n);
    76347637    execute("ring "+newring+"=("+charstr(br)+"),(y(1..m)),dp(m);");
    7635     execute("minpoly=number("+mp+");");
     7638    if (mp!="0")
     7639    { execute("minpoly=number("+mp+");"); }
    76367640    ideal vars;
    76377641    for (i=2;i<=n;i++)
     
    78557859    string mp=string(minpoly);
    78567860    execute("ring R=("+charstr(br)+"),("+varstr(br)+",y(1..m)),lp;");
    7857     execute("minpoly=number("+mp+");");
     7861    if (mp!="0")
     7862    { execute("minpoly=number("+mp+");"); }
    78587863    ideal J=ideal(imap(br,F));
    78597864    ideal I=imap(br,I);
     
    78817886    G=compress(G);
    78827887    execute("ring "+newring+"=("+charstr(br)+"),(y(1..m)),lp;");
    7883     execute("minpoly=number("+mp+");");
     7888    if (mp!="0")
     7889    { execute("minpoly=number("+mp+");"); }
    78847890    ideal vars;
    78857891    for (i=2;i<=n;i++)
  • Singular/LIB/grwalk.lib

    r05e7392 r8af63a  
    255255}
    256256
    257 proc gwalk(ideal Go, list #)
    258 "SYNTAX: gwalk(ideal i);
    259          gwalk(ideal i, intvec v, intvec w);
     257proc gwalk(ideal Go, int reduction,int printout, list #)
     258"SYNTAX: gwalk(ideal i, int reduction, int printout);
     259         gwalk(ideal i, int reduction, int printout, intvec v, intvec w);
    260260TYPE:    ideal
    261261PURPOSE: compute the standard basis of the ideal, calculated via
     
    284284   //print("//** help ring = " + string(basering));
    285285   ideal G = fetch(xR, Go);
    286    G = system("Mwalk", G, curr_weight, target_weight,basering);
     286   G = system("Mwalk", G, curr_weight, target_weight,basering,reduction,printout);
    287287
    288288   setring xR;
     
    300300  ring r = 32003,(z,y,x), lp;
    301301  ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    302   gwalk(I);
     302  gwalk(I,0,1);
    303303}
    304304
     
    346346}
    347347
    348 proc fwalk(ideal Go, list #)
    349 "SYNTAX: fwalk(ideal i);
    350          fwalk(ideal i, intvec v, intvec w);
     348proc fwalk(ideal Go, int reduction, int printout, list #)
     349"SYNTAX: fwalk(ideal i,int reductioin);
     350         fwalk(ideal i, int reduction intvec v, intvec w);
    351351TYPE:    ideal
    352352PURPOSE: compute the standard basis of the ideal w.r.t. the
     
    372372
    373373   ideal G = fetch(xR, Go);
    374    G = system("Mfwalk", G, curr_weight, target_weight);
     374   G = system("Mfwalk", G, curr_weight, target_weight, reduction, printout);
    375375
    376376   setring xR;
     
    387387    ring r = 32003,(z,y,x), lp;
    388388    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    389     fwalk(I);
     389    int reduction = 1;
     390    int printout = 1;
     391    fwalk(I,reduction,printout);
    390392}
    391393
     
    437439}
    438440
    439 proc pwalk(ideal Go, int n1, int n2, list #)
    440 "SYNTAX: pwalk(int d, ideal i, int n1, int n2);
    441          pwalk(int d, ideal i, int n1, int n2, intvec v, intvec w);
     441proc pwalk(ideal Go, int n1, int n2, int reduction, int printout, list #)
     442"SYNTAX: pwalk(int d, ideal i, int n1, int n2, int reduction, int printout);
     443         pwalk(int d, ideal i, int n1, int n2, int reduction, int printout, intvec v, intvec w);
    442444TYPE:    ideal
    443445PURPOSE: compute the standard basis of the ideal, calculated via
     
    477479  ideal G = fetch(xR, Go);
    478480
    479   G = system("Mpwalk", G, n1, n2, curr_weight, target_weight,nP);
     481  G = system("Mpwalk",G,n1,n2,curr_weight,target_weight,nP,reduction,printout);
    480482 
    481483  setring xR;
     
    492494    ring r = 32003,(z,y,x), lp;
    493495    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    494     //I = std(I);
    495     //ring rr = 32003,(z,y,x),lp;
    496     //ideal I = fetch(r,I);
    497     pwalk(I,2,2);
     496    int reduction = 1;
     497    int printout = 2;
     498    pwalk(I,2,2,reduction,printout);
    498499}
    499500
  • Singular/LIB/modwalk.lib

    • Property mode changed from 100644 to 100755
    r05e7392 r8af63a  
    1616
    1717PROCEDURES:
     18modpWalk(ideal,int,int,int[,int,int,int,int])    standard basis conversion of I in prime characteristic
    1819modWalk(ideal,int,int[,int,int,int,int]);        standard basis conversion of I using modular methods (chinese remainder)
    1920";
     
    2930////////////////////////////////////////////////////////////////////////////////
    3031
    31 static proc modpWalk(def II, int p, int variant, list #)
     32proc modpWalk(def II, int p, int variant, int reduction, list #)
    3233"USAGE:  modpWalk(I,p,#); I ideal, p integer, variant integer
    3334ASSUME:  If size(#) > 0, then
     
    8081    }
    8182  }
    82 
    83 //-------------------------  make i homogeneous  -----------------------------
    84   if(!mixedTest() && !h)
    85   {
    86     if(!((find(ordstr_R0, "M") > 0) || (find(ordstr_R0, "a") > 0) || neg))
    87     {
    88       if(!((order == "simple") || (sizerl > 4)))
    89       {
    90         list rl@r = ringlist(@r);
    91         nvar@r = nvars(@r);     
    92         intvec w;
    93         for(k = 1; k <= nvar@r; k++)
    94         {
    95           w[k] = deg(var(k));
    96         }
    97         w[nvar@r + 1] = 1;
    98         rl@r[2][nvar@r + 1] = "homvar";
    99         rl@r[3][2][2] = w;
    100         def HomR = ring(rl@r);
    101         setring HomR;
    102         ideal i = imap(@r, i);
    103         i = homog(i, homvar);
    104       }
    105     }
    106   }
    107 
    10883//-------------------------  compute a standard basis mod p  -----------------------------
    109 
    11084  if(variant == 1)
    11185  {
    11286    if(size(#)>0)
    11387    {
    114       i = rwalk(i,radius,pert_deg,#);
    115      // rwalk(i,radius,pert_deg,#); std(i);
    116     }
    117     else
    118     {
    119       i = rwalk(i,radius,pert_deg);
     88      i = rwalk(i,radius,pert_deg,reduction,#);
     89    }
     90    else
     91    {
     92      i = rwalk(i,radius,pert_deg,reduction);
    12093    }
    12194  }
     
    12497    if(size(#) == 2)
    12598    {
    126       i = gwalk(i,#);
    127     }
    128     else
    129     {
    130       i = gwalk(i);
     99      i = gwalk(i,reduction,#);
     100    }
     101    else
     102    {
     103      i = gwalk(i,reduction);
    131104    }
    132105  }
     
    135108    if(size(#) == 2)
    136109    {
    137       i = frandwalk(i,radius,#);
    138     }
    139     else
    140     {
    141       i = frandwalk(i,radius);
     110      i = frandwalk(i,radius,reduction,#);
     111    }
     112    else
     113    {
     114      i = frandwalk(i,radius,reduction);
    142115    }
    143116  }
     
    157130    if(size(#) == 2)
    158131    {
    159      i=prwalk(i,radius,pert_deg,pert_deg,#);
    160     }
    161     else
    162     {
    163       i=prwalk(i,radius,pert_deg,pert_deg);
     132     i=prwalk(i,radius,pert_deg,pert_deg,reduction,#);
     133    }
     134    else
     135    {
     136      i=prwalk(i,radius,pert_deg,pert_deg,reduction);
    164137    }
    165138  }
     
    168141    if(size(#) == 2)
    169142    {
    170       i=pwalk(i,pert_deg,pert_deg,#);
    171     }
    172     else
    173     {
    174       i=pwalk(i,pert_deg,pert_deg);
    175     }
    176   }
    177  
    178   if(!mixedTest() && !h)
    179   {
    180     if(!((find(ordstr_R0, "M") > 0) || (find(ordstr_R0, "a") > 0) || neg))
    181     {
    182       if(!((order == "simple") || (sizerl > 4)))
    183       {
    184         i = subst(i, homvar, 1);
    185         i = simplify(i, 34);
    186         setring @r;
    187         i = imap(HomR, i);
    188         i = interred(i);
    189         kill HomR;
    190       }
    191     }
    192   }
     143      i=pwalk(i,pert_deg,pert_deg,reduction,#);
     144    }
     145    else
     146    {
     147      i=pwalk(i,pert_deg,pert_deg,reduction);
     148    }
     149  }
     150
    193151  setring R0;
    194152  return(list(fetch(@r,i),p));
     
    204162  ring ra = 0,x(1..4),(a(a),lp);
    205163  ideal I = std(cyclic(4));
     164  int reduction = 1;
    206165  ring rb = 0,x(1..4),(a(b),lp);
    207166  ideal I = imap(ra,I);
    208   modpWalk(I,p,1,a,b);
     167  modpWalk(I,p,1,reduction,a,b);
    209168  std(I);
    210169}
     
    212171////////////////////////////////////////////////////////////////////////////////
    213172
    214 proc modWalk(def II, int variant, list #)
     173proc modWalk(def II, int variant, int reduction, list #)
    215174"USAGE:  modWalk(II); II ideal or list(ideal,int)
    216175ASSUME:  If variant =
     
    487446  if(n2 > 4)
    488447  {
    489   //  L[5] = prime(random(an,en));
     448    L[5] = prime(random(an,en));
    490449  }
    491450  if(printlevel >= 10)
     
    504463    for(i=1; i<=size(L); i++)
    505464    {
    506       Arguments[i] = list(II,L[i],variant,list(curr_weight,target_weight));
     465      Arguments[i] = list(II,L[i],variant,reduction,list(curr_weight,target_weight));
    507466    }
    508467  }
     
    511470    for(i=1; i<=size(L); i++)
    512471    {
    513       Arguments[i] = list(II,L[i],variant);
     472      Arguments[i] = list(II,L[i],variant,reduction);
    514473    }
    515474  }
     
    528487//-------------------  Now all leading ideals are the same  --------------------
    529488//-------------------  Lift results to basering via farey  ---------------------
    530 
    531489    tt = timer; rt = rtimer;
    532490    N = T2[1];
     
    545503
    546504//----------------  Test if we already have a standard basis of I --------------
    547 
    548505    tt = timer; rt = rtimer;
    549     pTest = pTestSB(I,J,L,variant);
    550     //pTest = primeTestSB(I,J,L,variant);
     506    pTest = primeTest(J, prime(random(1000000000,2134567879)));
    551507    if(printlevel >= 10)
    552508    {
     
    596552    }
    597553//--------------  We do not already have a standard basis of I, therefore do the main computation for more primes  --------------
    598 
    599554    T1 = H;
    600555    T2 = N;
     
    613568      for(i=j; i<=size(L); i++)
    614569      {
    615         //Arguments[i-j+1] = list(II,L[i],variant,list(curr_weight,target_weight));
    616         Arguments[size(Arguments)+1] = list(II,L[i],variant,list(curr_weight,target_weight));
     570        Arguments[size(Arguments)+1] = list(II,L[i],variant,reduction,list(curr_weight,target_weight));
    617571      }
    618572    }
     
    621575      for(i=j; i<=size(L); i++)
    622576      {
    623         //Arguments[i-j+1] = list(II,L[i],variant);
    624         Arguments[size(Arguments)+1] = list(II,L[i],variant);
     577        Arguments[size(Arguments)+1] = list(II,L[i],variant,reduction);
    625578      }
    626579    }
     
    632585    for(i=1; i<=size(PP); i++)
    633586    {
    634       //P[size(P) + 1] = PP[i];
    635587      T1[size(T1) + 1] = PP[i][1];
    636588      T2[size(T2) + 1] = bigint(PP[i][2]);
     
    649601  echo = 2;
    650602  ring R=0,(x,y,z),lp;
    651   ideal I=-x+y2z-z,xz+1,x2+y2-1;
    652   // I is a standard basis in dp
    653   ideal J = modWalk(I,1);
     603  ideal I= y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
     604  int reduction = 0;
     605  ideal J = modWalk(I,1,1);
    654606  J;
    655607}
     
    772724  return(J);
    773725}
    774 //////////////////////////////////////////////////////////////////////////////////
    775 static proc primeTestSB(def II, ideal J, list L, int variant, list #)
    776 "USAGE:  primeTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int
    777 RETURN:  1 (resp. 0) if for a randomly chosen prime p that is not in L
    778          J mod p is (resp. is not) a standard basis of I mod p
    779 EXAMPLE: example primeTestSB; shows an example
    780 "
    781 {
    782 if(typeof(II) == "ideal")
    783   {
    784   ideal I = II;
    785   int radius = 2;
    786   }
    787 if(typeof(II) == "list")
    788   {
    789   ideal I = II[1];
    790   int radius = II[2];
    791   }
    792 
    793 int i,j,k,p;
    794 def R = basering;
    795 list r = ringlist(R);
    796 
    797 while(!j)
    798   {
    799   j = 1;
    800   p = prime(random(1000000000,2134567879));
    801   for(i = 1; i <= size(L); i++)
    802     {
    803     if(p == L[i])
    804       {
    805       j = 0;
    806       break;
    807       }
    808     }
    809   if(j)
    810     {
    811     for(i = 1; i <= ncols(I); i++)
    812       {
    813       for(k = 2; k <= size(I[i]); k++)
    814         {
    815         if((denominator(leadcoef(I[i][k])) mod p) == 0)
    816           {
    817           j = 0;
    818           break;
    819           }
    820         }
    821       if(!j)
    822         {
    823         break;
    824         }
    825       }
    826     }
    827   if(j)
    828     {
    829     if(!primeTest(I,p))
    830       {
    831       j = 0;
    832       }
    833     }
    834   }
    835 r[1] = p;
    836 def @R = ring(r);
    837 setring @R;
    838 ideal I = imap(R,I);
    839 ideal J = imap(R,J);
    840 attrib(J,"isSB",1);
    841 
    842 int t = timer;
    843 j = 1;
    844 if(isIncluded(I,J) == 0)
    845   {
    846   j = 0;
    847   }
    848 if(printlevel >= 11)
    849   {
    850   "isIncluded(I,J) takes "+string(timer - t)+" seconds";
    851   "j = "+string(j);
    852   }
    853 t = timer;
    854 if(j)
    855   {
    856   if(size(#) > 0)
    857     {
    858     ideal K = modpWalk(I,p,variant,#)[1];
    859     }
    860   else
    861     {
    862     ideal K = modpWalk(I,p,variant)[1];
    863     }
    864   t = timer;
    865   if(isIncluded(J,K) == 0)
    866     {
    867     j = 0;
    868     }
    869   if(printlevel >= 11)
    870     {
    871     "isIncluded(K,J) takes "+string(timer - t)+" seconds";
    872     "j = "+string(j);
    873     }
    874   }
    875 setring R;
    876 
    877 return(j);
    878 }
    879 example
    880 { "EXAMPLE:"; echo = 2;
    881    intvec L = 2,3,5;
    882    ring r = 0,(x,y,z),lp;
    883    ideal I = x+1,x+y+1;
    884    ideal J = x+1,y;
    885    primeTestSB(I,I,L,1);
    886    primeTestSB(I,J,L,1);
    887 }
    888 
    889 ////////////////////////////////////////////////////////////////////////////////
    890 static proc pTestSB(ideal I, ideal J, list L, int variant, list #)
    891 "USAGE:  pTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int
    892 RETURN:  1 (resp. 0) if for a randomly chosen prime p that is not in L
    893          J mod p is (resp. is not) a standard basis of I mod p
    894 EXAMPLE: example pTestSB; shows an example
    895 "
    896 {
    897    int i,j,k,p;
    898    def R = basering;
    899    list r = ringlist(R);
    900 
    901    while(!j)
    902    {
    903       j = 1;
    904       p = prime(random(1000000000,2134567879));
    905       for(i = 1; i <= size(L); i++)
    906       {
    907          if(p == L[i]) { j = 0; break; }
    908       }
    909       if(j)
    910       {
    911          for(i = 1; i <= ncols(I); i++)
    912          {
    913             for(k = 2; k <= size(I[i]); k++)
    914             {
    915                if((denominator(leadcoef(I[i][k])) mod p) == 0) { j = 0; break; }
    916             }
    917             if(!j){ break; }
    918          }
    919       }
    920       if(j)
    921       {
    922          if(!primeTest(I,p)) { j = 0; }
    923       }
    924    }
    925    r[1] = p;
    926    def @R = ring(r);
    927    setring @R;
    928    ideal I = imap(R,I);
    929    ideal J = imap(R,J);
    930    attrib(J,"isSB",1);
    931 
    932    int t = timer;
    933    j = 1;
    934    if(isIncluded(I,J) == 0) { j = 0; }
    935 
    936    if(printlevel >= 11)
    937    {
    938       "isIncluded(I,J) takes "+string(timer - t)+" seconds";
    939       "j = "+string(j);
    940    }
    941 
    942    t = timer;
    943    if(j)
    944    {
    945       if(size(#) > 0)
    946       {
    947          ideal K = modpStd(I,p,variant,#[1])[1];
    948       }
    949       else
    950       {
    951          ideal K = groebner(I);
    952       }
    953       t = timer;
    954       if(isIncluded(J,K) == 0) { j = 0; }
    955 
    956       if(printlevel >= 11)
    957       {
    958          "isIncluded(J,K) takes "+string(timer - t)+" seconds";
    959          "j = "+string(j);
    960       }
    961    }
    962    setring R;
    963    return(j);
    964 }
    965 example
    966 { "EXAMPLE:"; echo = 2;
    967    intvec L = 2,3,5;
    968    ring r = 0,(x,y,z),dp;
    969    ideal I = x+1,x+y+1;
    970    ideal J = x+1,y;
    971    pTestSB(I,I,L,2);
    972    pTestSB(I,J,L,2);
    973 }
     726
    974727////////////////////////////////////////////////////////////////////////////////
    975728static proc mixedTest()
  • Singular/LIB/rwalk.lib

    • Property mode changed from 100644 to 100755
    r05e7392 r8af63a  
    1010rwalk(ideal,int,int[,intvec,intvec]);   standard basis of ideal via Random Walk algorithm
    1111rwalk(ideal,int[,intvec,intvec]);       standard basis of ideal via Random Perturbation Walk algorithm
    12 frwalk(ideal,int[,intvec,intvec]);      standard basis of ideal via Random Fractal Walk algorithm
     12frandwalk(ideal,int[,intvec,intvec]);      standard basis of ideal via Random Fractal Walk algorithm
    1313";
    1414
     
    141141 * Random Walk  *
    142142 ****************/
    143 proc rwalk(ideal Go, int radius, int pert_deg, list #)
     143proc rwalk(ideal Go, int radius, int pert_deg, int reduction, int printout, list #)
    144144"SYNTAX: rwalk(ideal i, int radius);
    145145         if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w);
     146         intermediate Groebner bases are not reduced if reduction = 0
    146147TYPE:    ideal
    147148PURPOSE: compute the standard basis of the ideal, calculated via
     
    178179
    179180ideal G = fetch(xR, Go);
    180 G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, basering);
     181G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, reduction, printout);
    181182
    182183setring xR;
     
    196197  int radius = 1;
    197198  int perturb_deg = 2;
    198   rwalk(I,radius,perturb_deg);
     199  int reduction = 0;
     200  int printout = 1;
     201  rwalk(I,radius,perturb_deg,reduction,printout);
    199202}
    200203
     
    202205 * Perturbation Walk with random element *
    203206 *****************************************/
    204 proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, list #)
     207proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, int reduction, int printout, list #)
    205208"SYNTAX: rwalk(ideal i, int radius);
    206209         if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w);
     
    227230  OSCTW= OrderStringalp_NP("al", #);
    228231  }
     232int nP = OSCTW[1];
    229233string ord_str = OSCTW[2];
    230234intvec curr_weight = OSCTW[3]; // original weight vector
     
    238242
    239243ideal G = fetch(xR, Go);
    240 G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg, basering);
     244G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg,
     245           nP, reduction, printout);
    241246
    242247setring xR;
     
    257262  int o_perturb_deg = 2;
    258263  int t_perturb_deg = 2;
    259   prwalk(I,radius,o_perturb_deg,t_perturb_deg);
     264  int reduction = 0;
     265  int printout = 2;
     266  prwalk(I,radius,o_perturb_deg,t_perturb_deg,reduction,printout);
    260267}
    261268
     
    263270 * Fractal Walk with random element *
    264271 ************************************/
    265 proc frandwalk(ideal Go, int radius, list #)
    266 "SYNTAX: frwalk(ideal i, int radius);
    267          frwalk(ideal i, int radius, intvec v, intvec w);
     272proc frandwalk(ideal Go, int radius, int reduction, int printout, list #)
     273"SYNTAX: frwalk(ideal i, int radius, int reduction, int printout);
     274         frwalk(ideal i, int radius, int reduction, int printout, intvec v, intvec w);
    268275TYPE:    ideal
    269276PURPOSE: compute the standard basis of the ideal, calculated via
     
    299306   ideal G = fetch(xR, Go);
    300307   int pert_deg = 2;
    301    G = system("Mfrwalk", G, curr_weight, target_weight, radius);
     308
     309   G = system("Mfrwalk", G, curr_weight, target_weight, radius, reduction, printout);
    302310
    303311   setring xR;
     
    314322    ring r = 0,(z,y,x), lp;
    315323    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    316     frandwalk(I,2);
    317 }
     324    int reduction = 0;
     325    frandwalk(I,2,0,1);
     326}
  • Singular/LIB/schreyer.lib

    r8e682d r8af63a  
    33category="General purpose";
    44info="
    5 LIBRARY: schreyer.lib     Helpers for computing a Schreyer resolution in @code{derham.lib}
     5LIBRARY: schreyer.lib     Schreyer resolution computations and helpers for @code{derham.lib}
    66AUTHOR:  Oleksandr Motsak <U@D>, where U={motsak}, D={mathematik.uni-kl.de}
    77KEYWORDS: Schreyer ordering; Schreyer resolution; syzygy
    88OVERVIEW:
    9 @* The library contains helper procedures for computing a Schreyer resoltion (cf. [SFO]),
    10    originally meant to be used by @code{derham.lib} (which requires resolutions over the homogenized Weyl algebra).
    11    The library works both in the commutative and non-commutative setting (cf. [MO]).
    12    Here, we call a free resolution a Schreyer resolution if each syzygy module is given by a Groebner basis
    13    with respect to the corresponding Schreyer ordering.
    14    A Schreyer resolution can be much bigger than a minimal resolution of the same module, but may be easier to construct.
    15 @* The input for the resolution computations is a set of vectors @code{M} in form of a module over some basering @code{R}.
    16    The ring @code{R} may be non-commutative, in which case the ring ordering should be global.
    17 @* These procedures produce/work with partial Schreyer resolutions of @code{(R^rank(M))/M} in form of
    18    a ring (endowed with a special ring ordering that will be extended in the course of a resolution computation)
    19    containing a list of modules @code{RES} and a module @code{MRES}:
    20 @* The list of modules @code{RES} contains the images of maps (also called syzygy modules) substituting the
    21    computed beginning of a Schreyer resolution, that is, each syzygy module is given by a Groebner basis
    22    with respect to the corresponding Schreyer ordering.
    23 @* The list @code{RES} starts with a zero map given by @code{rank(M)} zero generators indicating that the image of
    24    the first differential map is zero. The second map @code{RES[2]} is given by @code{M}, which indicates that
    25    the resolution of @code{(R^rank(M))/M} is being computed.
    26 @* The module @code{MRES} is a direct sum of modules from @code{RES} and thus comprises all computed differentials.
     9@* The library contains several procedures for computing a/part of Schreyer resoltion (cf. [SFO]),
     10   and some helpers for @code{derham.lib} (which requires resolutions over the homogenized Weyl algebra) for that purpose.
     11@* The input for any resolution computation is a set of vectors @code{M} in form of a module over some basering @code{R}.
     12   The helpers works both in the commutative and non-commutative setting (cf. [MO]), that is the ring @code{R} may be non-commutative,
     13   in which case the ring ordering over it must be global. They produce/work with partial Schreyer resolutions of @code{(R^rank(M))/M}
     14   in form of a specially constructed ring (endowed with a special ring ordering that will be extended in the
     15   course of a resolution computation) containing a list of modules @code{RES} and a module @code{MRES}:
     16@* @code{RES}: the list of modules contains the images of maps (also called syzygy modules) substituting the
     17     computed beginning of a Schreyer resolution, that is, each syzygy module is given by a Groebner basis
     18     with respect to the corresponding Schreyer ordering.
     19@* @code{RES}: the list of modules which starts with a zero map given by @code{rank(M)} zero generators indicating that the image of
     20     the first differential map is zero. The second map @code{RES[2]} is given by @code{M}, which indicates that
     21     the resolution of @code{(R^rank(M))/M} is being computed.
     22@* @code{MRES}: the module is a direct sum of modules from @code{RES} and thus comprises all computed differentials.
    2723@* Syzygies are shifted so that @code{gen(i)} is mapped to @code{MRES[i]} under the differential map.
     24NOTE:
     25@* Here, we call a free resolution a Schreyer resolution if each syzygy module is given by a Groebner basis
     26     with respect to the corresponding Schreyer ordering.
     27@* A Schreyer resolution can be much bigger than a minimal resolution of the same module, but may be easier to construct.
    2828@* The Schreyer ordering succesively extends the starting module ordering on @code{M} (defined in Singular by the basering @code{R})
    29    and is extended to higher syzygies using the following definition:
     29     and is extended to higher syzygies using the following definition:
    3030@*        a < b if and only if (d(a) < d(b)) OR ( (d(a) = d(b) AND (comp(a) < comp(b)) ),
    31 @* where @code{d(a)} is the image of a under the differential (given by @code{MRES}),
    32    and @code{comp(a)} is the module component, for any module terms @code{a} and @code{b} from the same higher syzygy module.
     31@* where @code{d(a)} is the image of an under the differential (given by @code{MRES}),
     32     and @code{comp(a)} is the module component, for any module terms @code{a} and @code{b} from the same higher syzygy module.
     33NOTE:
     34@* most comutations require the dynamic or built-in module @code{syzextra}, which will be auto-leaded on demand.
     35PROCEDURES:
     36  Sres(M,len)     helper for computing Schreyer resolution of module M of maximal length len
     37  Ssyz(M)         helper for computing Schreyer resolution of module M of length 1
     38  Scontinue(len)  helper for extending currently active resolution by (at most) len syszygies
     39  s_res(M, len)   compute Schreyer resolution of module M of maximal length len via LiftTree method from [BMSS]
    3340REFERENCES:
    34 [SFO] Schreyer, F.O.: Die Berechnung von Syzygien mit dem verallgemeinerten Weierstrassschen Divisionssatz,
    35       Master's thesis, Univ. Hamburg, 1980.
    36 [MO]  Motsak, O.: Non-commutative Computer Algebra with applications: Graded commutative algebra and related
    37       structures in Singular with applications, Ph.D. thesis, TU Kaiserslautern, 2010
    38 
    39 NOTE:  requires the dynamic or built-in module @code{syzextra}
    40 
    41 PROCEDURES:
    42   Sres(M,len)     compute Schreyer resolution of module M of maximal length len
    43   Ssyz(M)         compute Schreyer resolution of module M of length 1
    44   Scontinue(len)  extend currently active resolution by (at most) len syszygies
     41@*
     42[BMSS] Burcin, E., Motsak, O., Schreyer, F.-O., Steenpass, A.: NEW ALGORITHMS TO COMPUTE SYZYGIES, 2014.
     43@*
     44[SFO]  Schreyer, F.O.: Die Berechnung von Syzygien mit dem verallgemeinerten Weierstrassschen Divisionssatz,
     45       Master's thesis, Univ. Hamburg, 1980.
     46@*
     47[MO]   Motsak, O.: Non-commutative Computer Algebra with applications: Graded commutative algebra and related
     48       structures in Singular with applications, Ph.D. thesis, TU Kaiserslautern, 2010.
    4549";
    4650
     
    472476LIB "general.lib"; // for sort
    473477
    474 /* static proc Tail(def M) // DONE: in C++ (dyn. module: syzextra)!
    475 {
    476   int i = ncols(M); def m;
    477   while (i > 0)
    478   {
    479     m = M[i];
    480     m = m - lead(m); // m = tail(m)   
    481     M[i] = m;   
    482     i--;
    483   }
    484   return (M);
    485 }*/
    486 
    487 /* static */
    488 proc MySort(def M)
    489 "
    490    Sorts the given ideal or module wrt >_{(c, ds)}  (.<.<.<.<)
    491    NOTE: inplace??
    492 "
     478static proc MySort(def M)
     479" Sorts the given ideal or module wrt >_{(c, ds)}  (.<.<.<.<) "
    493480{
    494481  if( typeof( attrib(basering, "DEBUG") ) == "int" )
     
    841828
    842829/// Compute L(Syz(L))
    843 proc SSComputeLeadingSyzygyTerms(def L)
     830static proc SSComputeLeadingSyzygyTerms(def L)
    844831{
    845832  if( typeof( attrib(basering, "DEBUG") ) == "int" )
     
    960947
    961948/// Compute Syz(L), where L is a monomial (leading) module
    962 proc SSCompute2LeadingSyzygyTerms(def L)
     949static proc SSCompute2LeadingSyzygyTerms(def L)
    963950{
    964951  if( typeof( attrib(basering, "DEBUG") ) == "int" )
     
    11831170
    11841171/// TODO: save shortcut (syz: |-.->) LM(LM(m) * "t") -> syz?
    1185 proc SSFindReducer(def product, def syzterm, def L, list #)
     1172static proc SSFindReducer(def product, def syzterm, def L, list #)
    11861173{
    11871174  if( typeof( attrib(basering, "DEBUG") ) == "int" )
     
    13141301
    13151302/// TODO: save shortcut (syz: |-.->) LM(m) * "t" -> ?
    1316 proc SSReduceTerm(poly m, def t, def syzterm, def L, def T, list #)
     1303static proc SSReduceTerm(poly m, def t, def syzterm, def L, def T, list #)
    13171304{
    13181305  if( typeof( attrib(basering, "DEBUG") ) == "int" )
     
    14241411
    14251412// TODO: store m * @tail -.-^-.-^-.--> ?
    1426 proc SSTraverseTail(poly m, def @tail, def L, def T, list #)
     1413static proc SSTraverseTail(poly m, def @tail, def L, def T, list #)
    14271414{
    14281415  if( typeof( attrib(basering, "DEBUG") ) == "int" )
     
    14991486// -------------------------------------------------------- //
    15001487
    1501 proc SSSchreyerSyzygyNF(vector syz_lead, vector syz_2, def L, def T, list #)
    1502 "
    1503    Hybrid Syzygy computation: 'reduce' spoly by eliminating _any_ terms
    1504    while discurding terms of lower order!
    1505 
    1506    Return the tail syzygy (without: syz_lead, starting with: syz_2)
    1507 "
     1488static proc SSSchreyerSyzygyNF(vector syz_lead, vector syz_2, def L, def T, list #)
     1489"  Hybrid Syzygy computation: 'reduce' spoly by eliminating _any_ terms while discurding terms of lower order!
     1490   Return the tail syzygy (without: syz_lead, starting with: syz_2)"
    15081491{
    15091492  if( typeof( attrib(basering, "DEBUG") ) == "int" )
     
    15981581// module (N, LL, TT) = SSComputeSyzygy(L, T);
    15991582// Compute Syz(L ++ T) = N = LL ++ TT
    1600 proc SSComputeSyzygy(def L, def T)
     1583static proc SSComputeSyzygy(def L, def T)
    16011584{
    16021585//  rtimer, "***TIMESNAP0 for ComputeSyzygy(L,T): on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
     
    19591942}
    19601943
    1961 proc SScontinue(int l)
     1944static proc SScontinue(int l)
    19621945"USAGE:  SScontinue(l)
    19631946RETURN:  nothing, instead it changes RES and MRES variables in the current ring
     
    19971980}
    19981981
    1999 proc SSsyz(def M)
     1982static proc SSsyz(def M)
    20001983"USAGE:  SSsyz(M)
    20011984RETURN:  ring, containing a list of modules RES and a module MRES
     
    20542037}
    20552038
    2056 proc SSres(def M, int l)
     2039static proc SSres(def M, int l)
    20572040"USAGE:  SSres(I, l)
    20582041RETURN:  ring, containing a list of modules RES and a module MRES
     
    21232106  RES;
    21242107  MRES;
    2125   kill S;
    2126   setring r; kill M;
    2127 
    2128   def A = nc_algebra(-1,0); setring A;
    2129   ideal Q = var(1)^2, var(2)^2, var(3)^2;
    2130   qring SCA = twostd(Q);
    2131   basering;
    2132 
    2133   module M = maxideal(1);
    2134   def S = SSres(M, 2); setring S; S;
    2135   RES;
    2136   MRES;
    21372108}
    21382109
     
    21572128}
    21582129
     2130// cannot be automatically used via overloading :(
    21592131proc SRES_list(SRES SR)
     2132"TODO!"
    21602133{
    21612134  def save = basering; 
     
    21942167//    "om_ndebug?: ", system("with", "om_ndebug");
    21952168
     2169    listvar(Syzextra);
     2170    listvar(Schreyer);
    21962171    listvar(Top);
    2197     listvar(Schreyer);
    2198   }
    2199 //  listvar(Syzextra);
    2200 
    2201   if( !defined(DetailedPrint) )
     2172  }
     2173
     2174  if( !defined(Schreyer::DetailedPrint) )
    22022175  {
    22032176    if( 1 )
     
    22192192      }
    22202193     
    2221       exportto(Top, Syzextra::ClearContent);
    2222       exportto(Top, Syzextra::ClearDenominators);
    2223 
     2194//      exportto(Top, Syzextra::ClearContent);
     2195//      exportto(Top, Syzextra::ClearDenominators);
    22242196      exportto(Schreyer, Syzextra::m2_end);
    22252197     
     
    22632235
    22642236      newstruct("SRES","ring r,resolution rsltn"); // http://www.singular.uni-kl.de/Manual/latest/sing_179.htm#SEC218
    2265       newstruct("SSYZ","ring r,module szg"); // http://www.singular.uni-kl.de/Manual/latest/sing_179.htm#SEC218
    22662237      // TODO: SSres - return SRESOLUTION?
    22672238
     
    22762247     
    22772248      // TODO: SSsyz? SSYZYGY? // TODO: C/C++ computation for Syzygy?
     2249//      newstruct("SSYZ","ring r,module szg"); // http://www.singular.uni-kl.de/Manual/latest/sing_179.htm#SEC218
    22782250//      system("install","SSYZYGY","string",SSYZYGY_string, 1);
    22792251//      system("install","SSYZYGY","print",SSYZYGY_print, 1);
     
    22812253    }
    22822254
    2283     exportto(Top, DetailedPrint);
    2284     exportto(Top, GetInducedData);
     2255//    exportto(Top, DetailedPrint);
     2256//    exportto(Top, GetInducedData);
    22852257
    22862258    if( @DEBUG )
     
    23122284
    23132285
    2314 proc testallSexamples()
     2286static proc testallSexamples()
    23152287{
    23162288  example Ssyz;
     
    23192291}
    23202292
    2321 proc testallSSexamples()
     2293static proc testallSSexamples()
    23222294{
    23232295  example SSsyz;
     
    23252297  example SSres; 
    23262298}
    2327 
    23282299example
    23292300{ "EXAMPLE:"; echo = 2;
     
    23322303}
    23332304
    2334 /*static*/ proc  StartResTesting(list #)
     2305static proc  StartResTesting(list #)
    23352306{
    23362307  int @treeout = attrib(SSinit, "TREEOUTPUT");
     
    23542325}
    23552326
    2356 /*static*/ proc  StopResTesting()
     2327static proc  StopResTesting()
    23572328{
    23582329  int @treeout = attrib(SSinit, "TREEOUTPUT");
     
    24462417}
    24472418
    2448 /*static*/ proc StartAddResTest(string method, string desc)
     2419static proc StartAddResTest(string method, string desc)
    24492420{
    24502421  int @treeout = attrib(SSinit, "TREEOUTPUT");
     
    24732444
    24742445
    2475 /*static*/ proc StopAddResTest(def RR, intmat S, int @t, int @m)
     2446static proc StopAddResTest(def RR, intmat S, int @t, int @m)
    24762447{
    24772448  int @treeout = attrib(SSinit, "TREEOUTPUT");
     
    25022473
    25032474
    2504 /*static*/ proc SCheck(def S)
     2475static proc SCheck(def S)
    25052476{
    25062477  setring S; // for checking...
     
    25532524*/ 
    25542525}
     2526
    25552527//// TODO: SSres(0) fails..!!!??
    2556 proc TestSSres(def I)
     2528static proc TestSSres(def I)
    25572529{
    25582530  def save = basering;
     
    25832555
    25842556proc s_res(def I, int l)
    2585 {
    2586   int @prot = (find(option(),"prot") != 0);
     2557"USAGE:  s_res(ideal/module M, int len)
     2558RETURN:  SRES, a blackbox object containing a (part of) Schreyer resolution
     2559PURPOSE: compute a Schreyer resolution of M of length at most len (see [BMSS])
     2560NOTE:    If given len is zero then nvars(basering) + 1 is used instead.
     2561@* SRES can be printed, treated by betti and minres or converted to list & mapped into the current ring with @code{SRES_list}
     2562@* This functions is not related to other helpers from this library.
     2563@* One can switch on computation protocol and statistic (depending on the build) by setting the @code{prot} option.
     2564@* Further recognized switches are the following attributes of @code{Schreyer::SSinit} procedure:
     2565LEAD2SYZ, TAILREDSYZ, HYBRIDNF
     2566DEBUG, ...
     2567SEE ALSO: sres
     2568EXAMPLE: example s_res; shows an example
     2569"
     2570{
     2571  int @prot = (find(option(),"prot") != 0) && (defined(NumberStatsInit)) && (defined(NumberStatsPrint));
    25872572  def R=SSinit(I); setring R; int @l = size(RES);
    25882573  SRES ret; ret.r = R;
     
    25922577  return (ret);
    25932578}
    2594 
    2595 proc s_syz(def I)
     2579example
     2580{ "EXAMPLE:"; echo = 2;
     2581  ring R;
     2582  module M = maxideal(1); M;
     2583  SRES rs = s_res(M, 0);
     2584  print(rs);
     2585  print(betti(rs, 0)); // non-minimal betties
     2586  print(SRES_list(rs));
     2587  print(betti(rs, 1)); //minimal betties
     2588  print(minres(rs));
     2589}
     2590
     2591static proc s_syz(def I)
    25962592{
    25972593  def R=SSinit(I); setring R;
     
    26022598}
    26032599
    2604 proc TestSSSres(def I)
     2600static proc TestSSSres(def I)
    26052601{
    26062602  def save = basering;
     
    26322628
    26332629
    2634 proc TestSres(def I)
     2630static proc TestSres(def I)
    26352631{
    26362632  def save = basering;
     
    26482644
    26492645
    2650 proc Testsres(def M)
     2646static proc Testsres(def M)
    26512647{
    26522648  int @t,@m;
     
    26572653}
    26582654
    2659 proc Testlres(def M)
     2655static proc Testlres(def M)
    26602656{
    26612657  int @t,@m;
     
    26732669
    26742670
    2675 proc Testnres(def M)
     2671static proc Testnres(def M)
    26762672{
    26772673  int @t,@m;
     
    26842680}
    26852681
    2686 proc TestSSresAttribs(def M, list #)
    2687 {
     2682static proc TestSSresAttribs(def M, list #)
     2683{
     2684  M = groebner(M);
     2685 
    26882686  StartResTesting(#);
    2689   int @treeout = attrib(SSinit, "TREEOUTPUT");
    2690 // simple tests...
    2691 //  M = groebner(M);  "groebner: "; M;  "";
    2692 
    2693  if( !@treeout )
    2694  {
    2695 //   Testlres(M); 
    2696 //   Testnres(M);
    2697 //   Testsres(M);
    2698 //   TestSres(M); // too long for the last medium test :(
    2699  }
    2700 
    2701 //  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSres(M); // TODO: FIX ERROR!!!!
    2702 //  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 1); TestSSres(M);
    2703 
    2704 //  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 0); attrib(SSinit, "HYBRIDNF", 0); TestSSres(M);
    2705 //  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 0); attrib(SSinit, "HYBRIDNF", 1); TestSSres(M);
    2706 
    2707 //  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 2); TestSSSres(M);
     2687
    27082688  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSSres(M);
    27092689  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 1); TestSSSres(M);
    27102690
    2711 
    2712 //  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSres(M);
    2713  
    2714 
    2715   // the following 2 setups are bad for AGR@101n3d002s004%1:(((
    2716 //  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 0); attrib(SSinit, "HYBRIDNF", 0); TestSSres(M);
    2717 //  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 0); attrib(SSinit, "HYBRIDNF", 1); TestSSres(M);
    2718 
    2719   StopResTesting();
    2720 
    2721 }
    2722 
    2723 
    2724 proc TestSSresAttribs2tr(def M, list #)
    2725 {
    2726   StartResTesting(#);
    2727  
    2728   attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSSres(M);
    2729   attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 1); TestSSSres(M);
    2730 //  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 2); TestSSSres(M);
    2731 
     2691 // WRONG???! LEAD2SYZ?
    27322692//  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSSres(M);
    27332693//  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 1); TestSSSres(M);
    2734 //  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 2); TestSSSres(M);
    2735 
    2736  
    2737 //  Testlres(M); 
    2738 //  Testnres(M); 
    2739 //  Testsres(M); 
    2740 //  TestSres(M); // too long for the last medium test :(
    2741 
     2694
     2695  int @treeout = attrib(SSinit, "TREEOUTPUT");
     2696  if( !@treeout )
     2697  {
     2698   Testlres(M); Testnres(M);
     2699//   Testsres(M); //   TestSres(M); // too long for the last medium test :(
     2700  }
     2701 
    27422702  StopResTesting();
    27432703}
    27442704
    2745 
    2746 proc testSimple(list #)
     2705static proc TestSSresAttribs2tr(def M, list #)
     2706{
     2707  M = groebner(M);
     2708 
     2709  StartResTesting(#);
     2710 
     2711  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSSres(M);
     2712  Testlres(M); 
     2713
     2714  StopResTesting();
     2715}
     2716
     2717static proc testSimple(list #)
    27472718{
    27482719  mod_assure_load();
     
    27582729  // TODO: only for now!!
    27592730  attrib(SSinit, "DEBUG", (DEBUG > 0) );
    2760   attrib(SSinit, "SYZCHECK", 0);
    2761   attrib(SSinit, "KERCHECK",  (DEBUG > 0) );
     2731  attrib(SSinit, "SYZCHECK", (DEBUG > 0) );
     2732  attrib(SSinit, "KERCHECK", (DEBUG > 0) );
     2733
    27622734  attrib(SSinit, "TREEOUTPUT", 0);
    27632735  attrib(SSinit, "PROFILE", 0);
     2736  attrib(SSinit, "IGNORETAILS", 0); // not only frame
    27642737
    27652738  int @treeout = attrib(SSinit, "TREEOUTPUT");
     
    27692742    monitor("SimpleTests.json", "o");
    27702743    "{ \"SimpleTests\": [";
    2771   }
     2744  } else { option(prot); }
     2745 
    27722746
    27732747  ring r; ideal M = maxideal(1);
    2774 //  M;
    27752748  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
    27762749  kill r;
    27772750
    27782751  ring r = 0, (a, b, c, d), lp; ideal M = maxideal(1);
    2779 //  M;
    27802752  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
    27812753  kill r;
     
    27832755  ring R = 0, (w, x, y, z), dp;
    27842756  ideal M = w^2 - x*z,  w*x - y*z,  x^2 - w*y, x*y - z^2, y^2 - w*z;
    2785 //  M;
    27862757  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
    27872758  kill R;
     
    27892760
    27902761  ring r = 0, (a, b, c, d, e, f), dp; ideal M = maxideal(1);
    2791 //  M;
    27922762  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
    27932763  kill r; 
     
    27982768  kill r;
    27992769
    2800   ring r = 0, (x, y, z), lp; ideal M = xy + y2 +x + 2y -1, xz - x -y -z -2, yz +1;  // TODO: seg. fault?
     2770  ring r = 0, (x, y, z, t), dp; ideal M = homog(xy + y2 +x + 2y -1, t), homog(xz - x -y -z -2, t), homog(yz +1, t);  // TODO: seg. fault?
    28012771  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
    28022772  kill r;
     
    28062776  // simple: AGR@101n3d002s004%1:
    28072777  ideal M = c*d, b*d, a*d, c^2-d^2, b*c, a*c, b^2-d^2, a*b, a^2-d^2;
    2808 //  M;
    28092778  TestSSresAttribs(M, "simple: AGR@101n3d002s004%1");
    28102779
    28112780  // medium: AGR@101n3d004s009%1;
    28122781  M = a*b+7*a*c-16*b*c-27*a*d+37*b*d-2*c*d, d^3, c*d^2, b*d^2, a*d^2, c^2*d, b*c*d, a*c*d, b^2*d, a^2*d, c^3, b*c^2, a*c^2, b^2*c, a^2*c, b^3, a^3;
    2813 //  M;
    28142782  TestSSresAttribs(M, "medium: AGR@101n3d004s009%1");
    28152783
     
    28222790}
    28232791
    2824 proc testAGR(list #)
     2792static proc testAGR(list #)
    28252793{
    28262794  def DEBUG = 0;
     
    28352803  attrib(SSinit, "TREEOUTPUT", 0);
    28362804  attrib(SSinit, "PROFILE", 0);
     2805  attrib(SSinit, "IGNORETAILS", 0); // not only frame
    28372806 
    2838 //  option(prot);
     2807  option(prot);
    28392808
    28402809  ring AGR = (101), (a, b, c, d), dp; AGR;
    28412810  // lengthy: AGR@101n3d008s058%3, kernel only!
    28422811  ideal M = c^4*d^2+4*a^3*d^3+29*a^2*b*d^3-2*a*b^2*d^3+2*b^3*d^3-21*a^2*c*d^3+46*a*b*c*d^3+2*b^2*c*d^3-13*a*c^2*d^3+32*b*c^2*d^3+46*c^3*d^3-28*a^2*d^4+4*a*b*d^4+29*b^2*d^4-8*a*c*d^4+33*b*c*d^4-16*c^2*d^4+17*a*d^5-3*b*d^5-42*c*d^5+47*d^6,b*c^3*d^2+35*a^3*d^3+24*a^2*b*d^3+46*a*b^2*d^3-22*b^3*d^3-48*a^2*c*d^3+20*a*b*c*d^3-28*b^2*c*d^3-40*a*c^2*d^3-4*b*c^2*d^3+35*c^3*d^3-21*a^2*d^4+3*a*b*d^4+8*b^2*d^4-2*a*c*d^4-22*b*c*d^4+24*c^2*d^4+44*a*d^5+33*b*d^5+31*c*d^5+26*d^6,a*c^3*d^2-42*a^3*d^3+34*a^2*b*d^3-10*a*b^2*d^3+30*b^3*d^3-6*a^2*c*d^3-30*a*b*c*d^3-34*b^2*c*d^3+29*a*c^2*d^3+35*b*c^2*d^3+13*c^3*d^3+8*a^2*d^4+23*a*b*d^4-29*b^2*d^4+12*a*c*d^4-22*b*c*d^4-50*c^2*d^4-4*b*d^5+9*c*d^5+13*d^6,b^2*c^2*d^2+a^3*d^3-49*a^2*b*d^3+26*a*b^2*d^3+20*b^3*d^3+24*a^2*c*d^3-2*a*b*c*d^3+31*b^2*c*d^3-30*a*c^2*d^3+21*b*c^2*d^3-24*c^3*d^3-38*a^2*d^4-14*a*b*d^4-14*b^2*d^4+6*a*c*d^4+3*b*c*d^4+13*c^2*d^4-11*a*d^5-38*b*d^5+22*c*d^5+48*d^6,a*b*c^2*d^2+18*a^3*d^3-29*a^2*b*d^3-21*a*b^2*d^3-2*b^3*d^3-25*a^2*c*d^3+37*a*b*c*d^3-14*b^2*c*d^3-47*a*c^2*d^3-6*b*c^2*d^3-34*c^3*d^3+43*a^2*d^4+22*a*b*d^4-39*b^2*d^4-41*a*c*d^4-17*b*c*d^4-13*c^2*d^4-43*a*d^5+28*b*d^5-42*c*d^5-49*d^6,a^2*c^2*d^2-33*a^3*d^3+30*a^2*b*d^3-13*a*b^2*d^3+18*b^3*d^3-8*a^2*c*d^3-18*a*b*c*d^3-15*b^2*c*d^3-21*a*c^2*d^3+45*b*c^2*d^3-35*c^3*d^3-4*a^2*d^4-4*a*b*d^4+10*b^2*d^4-19*a*c*d^4-18*b*c*d^4-22*c^2*d^4-27*a*d^5+20*b*d^5-14*c*d^5+24*d^6,b^3*c*d^2-10*a^3*d^3+37*a*b^2*d^3-43*b^3*d^3-10*a^2*c*d^3-9*a*b*c*d^3+47*a*c^2*d^3-24*b*c^2*d^3+12*c^3*d^3+7*a^2*d^4+19*a*b*d^4-27*b^2*d^4-2*a*c*d^4-35*b*c*d^4+45*c^2*d^4-44*a*d^5-43*b*d^5+24*c*d^5+16*d^6,a*b^2*c*d^2+2*a^3*d^3-14*a^2*b*d^3+2*a*b^2*d^3+18*b^3*d^3-48*a^2*c*d^3+43*a*b*c*d^3-25*b^2*c*d^3+15*a*c^2*d^3-7*b*c^2*d^3+42*c^3*d^3-16*a^2*d^4+7*b^2*d^4-23*a*c*d^4+24*b*c*d^4+25*c^2*d^4-17*a*d^5-16*b*d^5-32*c*d^5-50*d^6,a^2*b*c*d^2-16*a^3*d^3+7*a^2*b*d^3-20*a*b^2*d^3+11*b^3*d^3+16*a^2*c*d^3+6*a*b*c*d^3-25*b^2*c*d^3+42*a*c^2*d^3-39*b*c^2*d^3-15*c^3*d^3-25*a^2*d^4+46*a*b*d^4-3*b^2*d^4+5*a*c*d^4+28*b*c*d^4+6*c^2*d^4-20*a*d^5-15*b*d^5-30*c*d^5+17*d^6,a^3*c*d^2+39*a^3*d^3+22*a^2*b*d^3-21*a*b^2*d^3+10*b^3*d^3+40*a^2*c*d^3-37*a*b*c*d^3+11*b^2*c*d^3+43*a*c^2*d^3+28*b*c^2*d^3-10*c^3*d^3+30*a^2*d^4+36*a*b*d^4-45*b^2*d^4-40*a*c*d^4-31*b*c*d^4+28*c^2*d^4+35*a*d^5+6*b*d^5+14*c*d^5+25*d^6,b^4*d^2+50*a^3*d^3+12*a^2*b*d^3+29*a*b^2*d^3-38*b^3*d^3-44*a^2*c*d^3+28*a*b*c*d^3+18*b^2*c*d^3-31*a*c^2*d^3+16*b*c^2*d^3-18*c^3*d^3+5*a^2*d^4-43*a*b*d^4+16*b^2*d^4+9*a*c*d^4-30*b*c*d^4+50*c^2*d^4+3*a*d^5+33*b*d^5+3*c*d^5-48*d^6,a*b^3*d^2+13*a^3*d^3-28*a^2*b*d^3-33*a*b^2*d^3-25*b^3*d^3-41*a^2*c*d^3+a*b*c*d^3+19*b^2*c*d^3+41*a*c^2*d^3-17*b*c^2*d^3+34*c^3*d^3-10*a^2*d^4+30*a*b*d^4+34*b^2*d^4+13*a*c*d^4+b*c*d^4-35*c^2*d^4-34*a*d^5+23*b*d^5-7*c*d^5+6*d^6,a^2*b^2*d^2+22*a^3*d^3-32*a^2*b*d^3+29*a*b^2*d^3+21*b^3*d^3-30*a^2*c*d^3-47*a*b*c*d^3-11*b^2*c*d^3-16*a*c^2*d^3-14*b*c^2*d^3+49*c^3*d^3+47*a^2*d^4-11*a*b*d^4+4*b^2*d^4+13*a*c*d^4+7*b*c*d^4-30*c^2*d^4+31*a*d^5+10*b*d^5-8*c*d^5-27*d^6,a^3*b*d^2-43*a^3*d^3-2*a^2*b*d^3+15*a*b^2*d^3+42*b^3*d^3+25*a^2*c*d^3+22*a*b*c*d^3-4*b^2*c*d^3-29*a*c^2*d^3-31*b*c^2*d^3-3*c^3*d^3+33*a^2*d^4+20*a*b*d^4-34*b^2*d^4+8*a*c*d^4+48*b*c*d^4-29*c^2*d^4-46*a*d^5+27*b*d^5+29*c*d^5+33*d^6,a^4*d^2+30*a^3*d^3-42*a*b^2*d^3-16*b^3*d^3-33*a^2*c*d^3+13*a*b*c*d^3+7*b^2*c*d^3-23*a*c^2*d^3+28*b*c^2*d^3-37*c^3*d^3+3*a^2*d^4-34*a*b*d^4+16*b^2*d^4-21*a*c*d^4-39*b*c*d^4+5*c^2*d^4+35*a*d^5+39*b*d^5-26*c*d^5-47*d^6,c^5*d+48*a^3*d^3-37*a^2*b*d^3+31*a*b^2*d^3-19*b^3*d^3+49*a^2*c*d^3-5*a*b*c*d^3+45*b^2*c*d^3+24*a*c^2*d^3-26*b*c^2*d^3-10*c^3*d^3-a^2*d^4+43*a*b*d^4-26*b^2*d^4+45*a*c*d^4-3*b*c*d^4+38*c^2*d^4+10*a*d^5-5*b*d^5-34*c*d^5+22*d^6,b*c^4*d+30*a^3*d^3-40*a^2*b*d^3-39*a*b^2*d^3+33*b^3*d^3+31*a^2*c*d^3-17*a*b*c*d^3-44*b^2*c*d^3+24*a*c^2*d^3+22*b*c^2*d^3-44*c^3*d^3-29*a^2*d^4+4*a*b*d^4-4*b^2*d^4+8*a*c*d^4-42*b*c*d^4+15*c^2*d^4-42*a*d^5+15*b*d^5-41*c*d^5-46*d^6,a*c^4*d-11*a^3*d^3-5*a^2*b*d^3+33*a*b^2*d^3+7*b^3*d^3-31*a^2*c*d^3-47*a*b*c*d^3-50*b^2*c*d^3-50*a*c^2*d^3-39*b*c^2*d^3+25*c^3*d^3+5*a^2*d^4+35*a*b*d^4-34*b^2*d^4+42*a*c*d^4-44*b*c*d^4-17*c^2*d^4+11*a*d^5+b*d^5+31*c*d^5+45*d^6,b^2*c^3*d+12*a^3*d^3-41*a^2*b*d^3+29*a*b^2*d^3-42*b^3*d^3-32*a^2*c*d^3+47*a*b*c*d^3-13*b^2*c*d^3-20*a*c^2*d^3+45*b*c^2*d^3-49*c^3*d^3-34*a^2*d^4+16*a*b*d^4+11*b^2*d^4-49*a*c*d^4-27*b*c*d^4-31*c^2*d^4+29*a*d^5-23*b*d^5+13*c*d^5+42*d^6,a*b*c^3*d-16*a^3*d^3-35*a^2*b*d^3+12*a*b^2*d^3-39*b^3*d^3-32*a*b*c*d^3-4*b^2*c*d^3+31*a*c^2*d^3+43*b*c^2*d^3-42*c^3*d^3+36*a^2*d^4-5*a*b*d^4-4*b^2*d^4+5*a*c*d^4+20*b*c*d^4+31*c^2*d^4+15*a*d^5+25*b*d^5-16*c*d^5-28*d^6,a^2*c^3*d-16*a^3*d^3+8*a^2*b*d^3+30*a*b^2*d^3-16*b^3*d^3+20*a^2*c*d^3-11*b^2*c*d^3-48*a*c^2*d^3+11*b*c^2*d^3-20*c^3*d^3-24*a^2*d^4-23*a*b*d^4+9*b^2*d^4+13*a*c*d^4-42*b*c*d^4+22*c^2*d^4-29*a*d^5-28*b*d^5-7*c*d^5-2*d^6,b^3*c^2*d+42*a^3*d^3-11*a^2*b*d^3+18*a*b^2*d^3-13*b^3*d^3+22*a^2*c*d^3-10*a*b*c*d^3-25*b^2*c*d^3-17*a*c^2*d^3-23*b*c^2*d^3-37*c^3*d^3-3*a^2*d^4-33*a*b*d^4+44*b^2*d^4-41*a*c*d^4+6*b*c*d^4-36*c^2*d^4-43*a*d^5+b*d^5+25*c*d^5+48*d^6,a*b^2*c^2*d+21*a^3*d^3+5*a^2*b*d^3+38*a*b^2*d^3+25*b^3*d^3-12*a^2*c*d^3+7*a*b*c*d^3+28*b^2*c*d^3+a*c^2*d^3+33*b*c^2*d^3+22*c^3*d^3+10*a^2*d^4-7*a*b*d^4-5*b^2*d^4+50*a*c*d^4-23*b*c*d^4+22*c^2*d^4-4*a*d^5+45*b*d^5-42*c*d^5+d^6,a^2*b*c^2*d-45*a^3*d^3+2*a^2*b*d^3+44*a*b^2*d^3-5*b^3*d^3-19*a^2*c*d^3-3*a*b*c*d^3+18*b^2*c*d^3-22*a*c^2*d^3+46*b*c^2*d^3+41*c^3*d^3-26*a^2*d^4-a*b*d^4-42*b^2*d^4-40*a*c*d^4+39*b*c*d^4+24*c^2*d^4-6*a*d^5-6*b*d^5+13*c*d^5-28*d^6,a^3*c^2*d+4*a^3*d^3+31*a^2*b*d^3+21*a*b^2*d^3+39*b^3*d^3-8*a^2*c*d^3+49*a*b*c*d^3-48*b^2*c*d^3-16*a*c^2*d^3-33*b*c^2*d^3+35*c^3*d^3+41*a^2*d^4+18*a*b*d^4+47*b^2*d^4-3*a*c*d^4+12*b*c*d^4+13*c^2*d^4+32*a*d^5-40*b*d^5+50*c*d^5-2*d^6,b^4*c*d+23*a^3*d^3+47*a^2*b*d^3-10*a*b^2*d^3-43*b^3*d^3+49*a^2*c*d^3+7*a*b*c*d^3+34*b^2*c*d^3-40*a*c^2*d^3-37*b*c^2*d^3-6*c^3*d^3+30*a^2*d^4-34*a*b*d^4-6*b^2*d^4+21*a*c*d^4+41*b*c*d^4-33*c^2*d^4-9*a*d^5+2*b*d^5+8*c*d^5+7*d^6,a*b^3*c*d-5*a^3*d^3-42*a^2*b*d^3+22*a*b^2*d^3-35*b^3*d^3+a^2*c*d^3+20*a*b*c*d^3-10*b^2*c*d^3+23*a*c^2*d^3-17*b*c^2*d^3+30*c^3*d^3+24*a^2*d^4+32*a*b*d^4-7*b^2*d^4-48*a*c*d^4-25*b*c*d^4-6*c^2*d^4-33*a*d^5+29*b*d^5+12*c*d^5+26*d^6,a^2*b^2*c*d+6*a^3*d^3-46*a^2*b*d^3-30*a*b^2*d^3+b^3*d^3-35*a^2*c*d^3+41*a*b*c*d^3-4*b^2*c*d^3-42*a*c^2*d^3+16*b*c^2*d^3+19*c^3*d^3-13*a^2*d^4-16*a*b*d^4+45*b^2*d^4-25*a*c*d^4-48*b*c*d^4+35*c^2*d^4+50*a*d^5+31*b*d^5-25*c*d^5+6*d^6,a^3*b*c*d+3*a^3*d^3-39*a^2*b*d^3+14*a*b^2*d^3-4*b^3*d^3-36*a^2*c*d^3+47*a*b*c*d^3+27*b^2*c*d^3+50*a*c^2*d^3-45*b*c^2*d^3+49*c^3*d^3-18*a^2*d^4+20*a*b*d^4+17*b^2*d^4+a*c*d^4+33*b*c*d^4+42*c^2*d^4+19*a*d^5+18*b*d^5+33*c*d^5+15*d^6,a^4*c*d-14*a^3*d^3-8*a^2*b*d^3-a*b^2*d^3-34*b^3*d^3-27*a^2*c*d^3-15*a*b*c*d^3-14*b^2*c*d^3+33*a*c^2*d^3-34*b*c^2*d^3-4*c^3*d^3+47*a^2*d^4+50*a*b*d^4-6*b^2*d^4+16*a*c*d^4+26*c^2*d^4-27*a*d^5+2*b*d^5-31*c*d^5+47*d^6,b^5*d+3*a^3*d^3-9*a^2*b*d^3+46*a*b^2*d^3+b^3*d^3-2*a^2*c*d^3-39*a*b*c*d^3-31*b^2*c*d^3-30*a*c^2*d^3+23*b*c^2*d^3+25*c^3*d^3+9*a^2*d^4-15*a*b*d^4-2*b^2*d^4-12*a*c*d^4+11*b*c*d^4+9*c^2*d^4+3*a*d^5+9*b*d^5+41*c*d^5-38*d^6,a*b^4*d-48*a^3*d^3+42*a^2*b*d^3+27*a*b^2*d^3+32*b^3*d^3+21*a^2*c*d^3-5*a*b*c*d^3-39*b^2*c*d^3+6*a*c^2*d^3-20*b*c^2*d^3+45*c^3*d^3-48*a^2*d^4+44*a*b*d^4+25*b^2*d^4-29*a*c*d^4+4*b*c*d^4+50*c^2*d^4-6*a*d^5-40*b*d^5-11*c*d^5-28*d^6,a^2*b^3*d-41*a^3*d^3+21*a^2*b*d^3+39*a*b^2*d^3-2*b^3*d^3+24*a*b*c*d^3-10*b^2*c*d^3+31*a*c^2*d^3-34*b*c^2*d^3-31*c^3*d^3+20*a^2*d^4+41*a*b*d^4-10*b^2*d^4-40*a*c*d^4+5*b*c*d^4+31*c^2*d^4+6*a*d^5+26*b*d^5+29*c*d^5-5*d^6,a^3*b^2*d-11*a^3*d^3-39*a^2*b*d^3+2*a*b^2*d^3-44*b^3*d^3-23*a^2*c*d^3+21*a*b*c*d^3-44*b^2*c*d^3-7*a*c^2*d^3+49*b*c^2*d^3+46*c^3*d^3+17*a^2*d^4+49*a*b*d^4-14*b^2*d^4+29*a*c*d^4-20*b*c*d^4-49*c^2*d^4-13*a*d^5-41*b*d^5-18*c*d^5+50*d^6,a^4*b*d+9*a^3*d^3+50*a^2*b*d^3+46*a*b^2*d^3-48*b^3*d^3+43*a^2*c*d^3-45*a*b*c*d^3+24*b^2*c*d^3-4*a*c^2*d^3-b*c^2*d^3-34*c^3*d^3+33*a^2*d^4+14*a*b*d^4-37*b^2*d^4-13*a*c*d^4+48*b*c*d^4-31*c^2*d^4-22*a*d^5+42*b*d^5+49*c*d^5-43*d^6,a^5*d+33*a^3*d^3-23*a^2*b*d^3+30*a*b^2*d^3+5*b^3*d^3-26*a^2*c*d^3-35*a*b*c*d^3-50*b^2*c*d^3-21*a*c^2*d^3+4*b*c^2*d^3+10*c^3*d^3+39*a^2*d^4-2*a*b*d^4+23*b^2*d^4+17*a*c*d^4-50*b*c*d^4-8*c^2*d^4-39*a*d^5+36*b*d^5-43*c*d^5-39*d^6,c^6+20*a^3*d^3-41*a*b^2*d^3+39*b^3*d^3+26*a^2*c*d^3-8*a*b*c*d^3-49*b^2*c*d^3+25*a*c^2*d^3+32*b*c^2*d^3-32*c^3*d^3-2*a^2*d^4-38*a*b*d^4-38*b^2*d^4+17*a*c*d^4+22*b*c*d^4-36*c^2*d^4-41*a*d^5+37*b*d^5-49*c*d^5-19*d^6,b*c^5-36*a^3*d^3+32*a^2*b*d^3-14*a*b^2*d^3-31*b^3*d^3-2*a^2*c*d^3-8*a*b*c*d^3-39*b^2*c*d^3-46*a*c^2*d^3+10*b*c^2*d^3+27*c^3*d^3+25*a^2*d^4-30*a*b*d^4+3*b^2*d^4-36*a*c*d^4+44*b*c*d^4+17*c^2*d^4-46*a*d^5-37*b*d^5-2*c*d^5-47*d^6,a*c^5-49*a^3*d^3+11*a^2*b*d^3-21*a*b^2*d^3-14*b^3*d^3+26*a^2*c*d^3-a*b*c*d^3+24*b^2*c*d^3-46*a*c^2*d^3+23*b*c^2*d^3+33*c^3*d^3-11*a^2*d^4-a*b*d^4+49*b^2*d^4-17*a*c*d^4+49*b*c*d^4+36*c^2*d^4+10*a*d^5-19*b*d^5+26*c*d^5-32*d^6,b^2*c^4-14*a^3*d^3+9*a^2*b*d^3-5*a*b^2*d^3+17*b^3*d^3+2*a^2*c*d^3+12*a*b*c*d^3-37*b^2*c*d^3-43*a*c^2*d^3+5*b*c^2*d^3-9*c^3*d^3-27*a^2*d^4+14*a*b*d^4-19*b^2*d^4+29*a*c*d^4+32*b*c*d^4-15*c^2*d^4-26*a*d^5-31*b*d^5+46*c*d^5-22*d^6,a*b*c^4+33*a^3*d^3-22*a^2*b*d^3-14*a*b^2*d^3-30*b^3*d^3-48*a^2*c*d^3+34*a*b*c*d^3-8*b^2*c*d^3-44*a*c^2*d^3-4*b*c^2*d^3+3*c^3*d^3+26*a^2*d^4+4*a*b*d^4+7*b^2*d^4-28*a*c*d^4-22*b*c*d^4-35*c^2*d^4-50*a*d^5-43*b*d^5+46*c*d^5-49*d^6,a^2*c^4-9*a^3*d^3+3*a^2*b*d^3+34*a*b^2*d^3+4*b^3*d^3+5*a^2*c*d^3-17*a*b*c*d^3-48*b^2*c*d^3+10*a*c^2*d^3+2*b*c^2*d^3-12*c^3*d^3-7*a^2*d^4-6*a*b*d^4+37*b^2*d^4-16*a*c*d^4+47*b*c*d^4+6*c^2*d^4-35*a*d^5-45*b*d^5-12*c*d^5-30*d^6,b^3*c^3-21*a^3*d^3-6*a^2*b*d^3-26*a*b^2*d^3-22*b^3*d^3-29*a*b*c*d^3-26*b^2*c*d^3+50*a*c^2*d^3-41*b*c^2*d^3+22*c^3*d^3-41*a^2*d^4+25*a*b*d^4+16*b^2*d^4+11*a*c*d^4+34*b*c*d^4+19*c^2*d^4-38*a*d^5-8*b*d^5-42*c*d^5-6*d^6,a*b^2*c^3+3*a^3*d^3-45*a^2*b*d^3+39*a*b^2*d^3+22*b^3*d^3+48*a^2*c*d^3-7*a*b*c*d^3-46*b^2*c*d^3-22*a*c^2*d^3-17*b*c^2*d^3-27*c^3*d^3-35*a^2*d^4+47*a*b*d^4+6*b^2*d^4-5*a*c*d^4-30*b*c*d^4+25*c^2*d^4-10*a*d^5+46*b*d^5+5*c*d^5-18*d^6,a^2*b*c^3-36*a^3*d^3+33*a^2*b*d^3+47*a*b^2*d^3-16*b^3*d^3-41*a^2*c*d^3+42*a*b*c*d^3-29*b^2*c*d^3+39*a*c^2*d^3-12*b*c^2*d^3-25*c^3*d^3-11*a^2*d^4-37*a*b*d^4+29*b^2*d^4-18*a*c*d^4+43*b*c*d^4+12*c^2*d^4-37*a*d^5+7*b*d^5+7*c*d^5-5*d^6,a^3*c^3+25*a^3*d^3+34*a^2*b*d^3+29*a*b^2*d^3-34*b^3*d^3-46*a^2*c*d^3-17*a*b*c*d^3+49*b^2*c*d^3-35*a*c^2*d^3-21*b*c^2*d^3-45*c^3*d^3+43*a^2*d^4+29*a*b*d^4+36*b^2*d^4+37*a*c*d^4+12*b*c*d^4-17*c^2*d^4+12*a*d^5+47*c*d^5-23*d^6,b^4*c^2-10*a^3*d^3+38*a^2*b*d^3+33*a*b^2*d^3+9*b^3*d^3-25*a^2*c*d^3+38*a*b*c*d^3-19*b^2*c*d^3-33*a*c^2*d^3-49*b*c^2*d^3-16*c^3*d^3-14*a^2*d^4-3*a*b*d^4-30*b^2*d^4-32*a*c*d^4+28*b*c*d^4-3*c^2*d^4-16*a*d^5+31*b*d^5-49*c*d^5-3*d^6,a*b^3*c^2+25*a^3*d^3-47*a^2*b*d^3+47*b^3*d^3+13*a^2*c*d^3-17*a*b*c*d^3+26*b^2*c*d^3-43*a*c^2*d^3+39*b*c^2*d^3-4*c^3*d^3+20*a^2*d^4+6*a*b*d^4+49*b^2*d^4+14*a*c*d^4-17*b*c*d^4+38*c^2*d^4+21*a*d^5-9*b*d^5-26*c*d^5+47*d^6,a^2*b^2*c^2+12*a^3*d^3+10*a^2*b*d^3-40*a*b^2*d^3+14*b^3*d^3+36*a^2*c*d^3-9*a*b*c*d^3+9*b^2*c*d^3+7*a*c^2*d^3+12*b*c^2*d^3-37*c^3*d^3-44*a^2*d^4-48*a*b*d^4+11*b^2*d^4-13*a*c*d^4+31*b*c*d^4+47*c^2*d^4+28*a*d^5+39*b*d^5+27*c*d^5-d^6,a^3*b*c^2-28*a^3*d^3-22*a^2*b*d^3-8*a*b^2*d^3+40*b^3*d^3-13*a^2*c*d^3+35*a*b*c*d^3-4*b^2*c*d^3+28*a*c^2*d^3+30*b*c^2*d^3-13*c^3*d^3+16*a^2*d^4+48*a*b*d^4-42*b^2*d^4+10*a*c*d^4-b*c*d^4+37*c^2*d^4-17*a*d^5-15*b*d^5+40*c*d^5+27*d^6,a^4*c^2+17*a^3*d^3+45*a^2*b*d^3+42*a*b^2*d^3-20*b^3*d^3-39*a^2*c*d^3-20*a*b*c*d^3-44*b^2*c*d^3+33*a*c^2*d^3+39*b*c^2*d^3-37*c^3*d^3+39*a^2*d^4+39*a*b*d^4-44*b^2*d^4+8*a*c*d^4-34*b*c*d^4+36*c^2*d^4-47*a*d^5+38*b*d^5-46*c*d^5+23*d^6,b^5*c+24*a^3*d^3+17*a^2*b*d^3-22*a*b^2*d^3-27*b^3*d^3+27*a^2*c*d^3+48*a*b*c*d^3+4*b^2*c*d^3+a*c^2*d^3-21*b*c^2*d^3-14*c^3*d^3+3*a^2*d^4+15*a*b*d^4+41*b^2*d^4-27*a*c*d^4+4*b*c*d^4+3*c^2*d^4-46*a*d^5+28*b*d^5+6*c*d^5+36*d^6,a*b^4*c-29*a^3*d^3+30*a^2*b*d^3+31*a*b^2*d^3+44*b^3*d^3-12*a^2*c*d^3-27*a*b*c*d^3+48*b^2*c*d^3+4*a*c^2*d^3+2*b*c^2*d^3-17*c^3*d^3-7*a^2*d^4+25*a*b*d^4-45*b^2*d^4-17*a*c*d^4-14*b*c*d^4-11*c^2*d^4-45*a*d^5-36*b*d^5-12*c*d^5-44*d^6,a^2*b^3*c-10*a^3*d^3-30*a^2*b*d^3-22*a*b^2*d^3-35*b^3*d^3+37*a^2*c*d^3-35*a*b*c*d^3-12*b^2*c*d^3-16*b*c^2*d^3+49*c^3*d^3+38*a^2*d^4-21*a*b*d^4-20*b^2*d^4-6*a*c*d^4+41*b*c*d^4+49*c^2*d^4+13*a*d^5-38*b*d^5-32*c*d^5-12*d^6,a^3*b^2*c+5*a^2*b*d^3-40*a*b^2*d^3+14*b^3*d^3-4*a^2*c*d^3-13*a*b*c*d^3+47*b^2*c*d^3+28*a*c^2*d^3+15*b*c^2*d^3+47*c^3*d^3-8*a^2*d^4-20*a*b*d^4+3*b^2*d^4+42*a*c*d^4+18*b*c*d^4-23*c^2*d^4-48*a*d^5+12*b*d^5-25*c*d^5-39*d^6,a^4*b*c+29*a^3*d^3+21*a^2*b*d^3-32*a*b^2*d^3+48*b^3*d^3-44*a^2*c*d^3-3*a*b*c*d^3-27*b^2*c*d^3+27*a*c^2*d^3+43*b*c^2*d^3-30*c^3*d^3+4*a^2*d^4+16*a*b*d^4+33*b^2*d^4+37*a*c*d^4-32*b*c*d^4+14*c^2*d^4+50*a*d^5-49*c*d^5-33*d^6,a^5*c-26*a^3*d^3-50*a^2*b*d^3+2*a*b^2*d^3+3*b^3*d^3-15*a^2*c*d^3-32*a*b*c*d^3-4*b^2*c*d^3-13*a*c^2*d^3-13*b*c^2*d^3+3*c^3*d^3+32*a^2*d^4-32*a*b*d^4-47*b^2*d^4-39*a*c*d^4-34*b*c*d^4-9*c^2*d^4-7*a*d^5-22*b*d^5+16*c*d^5+44*d^6,b^6+45*a^3*d^3-42*a^2*b*d^3-35*a*b^2*d^3+13*b^3*d^3+28*a^2*c*d^3-2*a*b*c*d^3-37*b^2*c*d^3-9*a*c^2*d^3+44*b*c^2*d^3-24*c^3*d^3+36*a^2*d^4+42*a*b*d^4-38*b^2*d^4-34*a*c*d^4-46*b*c*d^4+23*c^2*d^4-9*a*d^5-28*b*d^5+37*c*d^5+26*d^6,a*b^5-14*a^3*d^3+38*a^2*b*d^3-37*a*b^2*d^3-33*b^3*d^3-24*a^2*c*d^3+15*a*b*c*d^3+44*b^2*c*d^3-45*a*c^2*d^3+3*b*c^2*d^3-41*c^3*d^3-48*a^2*d^4-36*a*b*d^4+39*b^2*d^4+46*a*c*d^4-3*b*c*d^4+21*c^2*d^4-36*a*d^5-20*b*d^5+24*c*d^5-33*d^6,a^2*b^4-27*a^3*d^3-10*a^2*b*d^3-5*a*b^2*d^3+8*b^3*d^3+21*a^2*c*d^3+31*a*b*c*d^3-44*b^2*c*d^3+41*a*c^2*d^3+17*b*c^2*d^3-8*c^3*d^3+19*a^2*d^4+25*a*b*d^4+b^2*d^4+3*a*c*d^4+2*b*c*d^4-40*c^2*d^4+31*a*d^5-19*b*d^5+35*c*d^5-28*d^6,a^3*b^3-12*a^3*d^3-25*a^2*b*d^3+37*a*b^2*d^3-37*b^3*d^3+46*a^2*c*d^3+43*a*b*c*d^3+b^2*c*d^3-41*a*c^2*d^3-38*b*c^2*d^3-36*c^3*d^3-11*a*b*d^4+20*b^2*d^4-a*c*d^4-26*b*c*d^4+14*c^2*d^4-48*a*d^5+17*b*d^5+9*c*d^5+30*d^6,a^4*b^2+36*a^3*d^3+9*a^2*b*d^3-31*b^3*d^3+50*a^2*c*d^3+41*a*b*c*d^3+40*b^2*c*d^3+48*a*c^2*d^3-41*b*c^2*d^3-17*c^3*d^3+33*a^2*d^4+47*a*b*d^4+22*b^2*d^4+2*a*c*d^4+23*b*c*d^4-47*c^2*d^4+34*a*d^5-15*b*d^5-33*c*d^5-38*d^6,a^5*b-12*a^3*d^3-38*a^2*b*d^3+46*a*b^2*d^3-32*b^3*d^3-41*a^2*c*d^3+14*a*b*c*d^3-34*b^2*c*d^3+7*a*c^2*d^3-6*b*c^2*d^3+31*c^3*d^3+30*a^2*d^4+12*a*b*d^4-17*b^2*d^4-7*a*c*d^4-45*b*c*d^4+10*c^2*d^4+29*a*d^5-28*b*d^5+34*c*d^5-15*d^6,a^6-33*a^3*d^3-45*a^2*b*d^3+19*a*b^2*d^3+39*b^3*d^3-5*a^2*c*d^3-46*a*b*c*d^3+9*b^2*c*d^3+15*a*c^2*d^3-21*b*c^2*d^3+46*c^3*d^3-39*a^2*d^4-9*a*b*d^4+50*b^2*d^4-45*a*c*d^4-39*b*c*d^4-18*c^2*d^4-4*a*d^5-19*b*d^5+12*c*d^5+39*d^6,d^7,c*d^6,b*d^6,a*d^6,c^2*d^5,b*c*d^5,a*c*d^5,b^2*d^5,a*b*d^5,a^2*d^5,c^3*d^4,b*c^2*d^4,a*c^2*d^4,b^2*c*d^4,a*b*c*d^4,a^2*c*d^4,b^3*d^4,a*b^2*d^4,a^2*b*d^4,a^3*d^4;
    2843 //  M;
    28442812  TestSSresAttribs2tr(M, "AGR@101n3d008s058%3");
    28452813
    28462814  // AGR@101n3d010s010%3, a bit slower...
    28472815  M = a^2*b^5-50*a*b^6-26*a^6*c+15*a^5*b*c-42*a^4*b^2*c-2*a^3*b^3*c+40*a^2*b^4*c-20*a*b^5*c+11*b^6*c-17*a^5*c^2-4*a^4*b*c^2+13*a^3*b^2*c^2-7*a^2*b^3*c^2+13*a*b^4*c^2-46*b^5*c^2+38*a^4*c^3+32*a^3*b*c^3-49*a^2*b^2*c^3-41*a*b^3*c^3+9*b^4*c^3+17*a^3*c^4-23*a^2*b*c^4+46*a*b^2*c^4+9*b^3*c^4-20*a^2*c^5-34*a*b*c^5-46*b^2*c^5-3*a*c^6+11*b*c^6-22*a^6*d-5*a^5*b*d-21*a^4*b^2*d-43*a^3*b^3*d-29*a^2*b^4*d+43*a*b^5*d-2*b^6*d+24*a^5*c*d-9*a^4*b*c*d+3*a^3*b^2*c*d+20*a^2*b^3*c*d+47*a*b^4*c*d-41*b^5*c*d+11*a^4*c^2*d-14*a^3*b*c^2*d+13*a^2*b^2*c^2*d-19*a*b^3*c^2*d-12*b^4*c^2*d+41*a^3*c^3*d-49*a^2*b*c^3*d-10*a*b^2*c^3*d+19*b^3*c^3*d-13*a^2*c^4*d+10*a*b*c^4*d-49*b^2*c^4*d-3*a*c^5*d-10*b*c^5*d+31*c^6*d-16*a^5*d^2+24*a^4*b*d^2-43*a^3*b^2*d^2+36*a^2*b^3*d^2-36*a^4*c*d^2-36*a^3*b*c*d^2-16*a^2*b^2*c*d^2+35*a*b^3*c*d^2+29*b^4*c*d^2+40*a^3*c^2*d^2-24*a^2*b*c^2*d^2-24*a*b^2*c^2*d^2+7*b^3*c^2*d^2+28*a^2*c^3*d^2+49*a*b*c^3*d^2+49*b^2*c^3*d^2+7*a*c^4*d^2-9*b*c^4*d^2+21*c^5*d^2-28*a^4*d^3+24*a^3*b*d^3-24*a^2*b^2*d^3+23*a*b^3*d^3+24*b^4*d^3+24*a^3*c*d^3-25*a^2*b*c*d^3-9*a*b^2*c*d^3-43*b^3*c*d^3+15*a^2*c^2*d^3+49*a*b*c^2*d^3+24*b^2*c^2*d^3-20*a*c^3*d^3-30*b*c^3*d^3-20*c^4*d^3+13*a^3*d^4+34*a^2*b*d^4-45*a*b^2*d^4+9*b^3*d^4+9*a^2*c*d^4-31*a*b*c*d^4-6*b^2*c*d^4-16*a*c^2*d^4+9*b*c^2*d^4+24*c^3*d^4+38*a^2*d^5-23*a*b*d^5-35*b^2*d^5+22*a*c*d^5-22*b*c*d^5+46*c^2*d^5+12*a*d^6+21*b*d^6-23*c*d^6-2*d^7,a^3*b^4+34*a^6*c+14*a^5*b*c+34*a^4*b^2*c+43*a^3*b^3*c-26*a^2*b^4*c+13*a*b^5*c+10*b^6*c-43*a^5*c^2+50*a^4*b*c^2-23*a^3*b^2*c^2-a^2*b^3*c^2+39*a*b^4*c^2+50*b^5*c^2+16*a^4*c^3+31*a^3*b*c^3-49*a^2*b^2*c^3+26*a*b^3*c^3-b^4*c^3-5*a^3*c^4+3*a^2*b*c^4-26*a*b^2*c^4-b^3*c^4-24*a^2*c^5-39*a*b*c^5+50*b^2*c^5-13*a*c^6+10*b*c^6-39*a^6*d+35*a^5*b*d+44*a^4*b^2*d-39*a^3*b^3*d-26*a^2*b^4*d-47*a*b^5*d-42*b^6*d+34*a^5*c*d-43*a^4*b*c*d-39*a^3*b^2*c*d+41*a^2*b^3*c*d+32*a*b^4*c*d-10*b^5*c*d+43*a^4*c^2*d+12*a^3*b*c^2*d-43*a^2*b^2*c^2*d+23*a*b^3*c^2*d-46*b^4*c^2*d+12*a^3*c^3*d-10*a^2*b*c^3*d+13*a*b^2*c^3*d-15*b^3*c^3*d-a^2*c^4*d+17*a*b*c^4*d-47*b^2*c^4*d+49*a*c^5*d-31*b*c^5*d-22*c^6*d-28*a^5*d^2-39*a^4*b*d^2+33*a^3*b^2*d^2-40*a^2*b^3*d^2+31*a*b^4*d^2+5*b^5*d^2+42*a^4*c*d^2-a^3*b*c*d^2+37*a^2*b^2*c*d^2-13*a*b^3*c*d^2+b^4*c*d^2+35*a^3*c^2*d^2-9*a^2*b*c^2*d^2+46*a*b^2*c^2*d^2-2*b^3*c^2*d^2+15*a^2*c^3*d^2-48*a*b*c^3*d^2+38*b^2*c^3*d^2-37*a*c^4*d^2-40*b*c^4*d^2+25*c^5*d^2+5*a^4*d^3-4*a^3*b*d^3+30*a^2*b^2*d^3-42*a*b^3*d^3+11*b^4*d^3+10*a^3*c*d^3+34*a^2*b*c*d^3-48*a*b^2*c*d^3+17*b^3*c*d^3-33*a^2*c^2*d^3-12*a*b*c^2*d^3-44*b^2*c^2*d^3-6*a*c^3*d^3+6*b*c^3*d^3-45*c^4*d^3+6*a^3*d^4+8*a^2*b*d^4-22*a*b^2*d^4+23*b^3*d^4-22*a^2*c*d^4-38*a*b*c*d^4+44*b^2*c*d^4-13*a*c^2*d^4-50*b*c^2*d^4+30*c^3*d^4-6*a^2*d^5-46*a*b*d^5+17*b^2*d^5-23*a*c*d^5-10*b*c*d^5+32*c^2*d^5-47*a*d^6+2*b*d^6+20*c*d^6-46*d^7,a^4*b^3+30*a*b^6-49*a^6*c+18*a^5*b*c+37*a^4*b^2*c+44*a^3*b^3*c-27*a^2*b^4*c-a*b^5*c-35*b^6*c-20*a^5*c^2+32*a^4*b*c^2+28*a^3*b^2*c^2-13*a^2*b^3*c^2-32*a*b^4*c^2+27*b^5*c^2-4*a^4*c^3+25*a^3*b*c^3+22*a^2*b^2*c^3-23*a*b^3*c^3-47*b^4*c^3+41*a^3*c^4-25*a^2*b*c^4-34*a*b^2*c^4-47*b^3*c^4-33*a^2*c^5-43*a*b*c^5+27*b^2*c^5-31*a*c^6-35*b*c^6-49*a^6*d+30*a^5*b*d-4*a^4*b^2*d+11*a^3*b^3*d-12*a^2*b^4*d-38*a*b^5*d+45*b^6*d+5*a^5*c*d-45*a^4*b*c*d-42*a^3*b^2*c*d-11*a^2*b^3*c*d+21*a*b^4*c*d+18*b^5*c*d-50*a^4*c^2*d-25*a^3*b*c^2*d+35*a^2*b^2*c^2*d-a*b^3*c^2*d+30*b^4*c^2*d+28*a^3*c^3*d-46*a^2*b*c^3*d-4*a*b^2*c^3*d+32*b^3*c^3*d+21*a^2*c^4*d-34*a*b*c^4*d+27*b^2*c^4*d+11*a*c^5*d-45*b*c^5*d+4*c^6*d+2*a^5*d^2-43*a^4*b*d^2-36*a^3*b^2*d^2+14*a^2*b^3*d^2+35*a*b^4*d^2+8*b^5*d^2+34*a^4*c*d^2-12*a^3*b*c*d^2-a^2*b^2*c*d^2-5*a*b^3*c*d^2+43*b^4*c*d^2+45*a^3*c^2*d^2-34*a^2*b*c^2*d^2+26*a*b^2*c^2*d^2+10*b^3*c^2*d^2-19*a^2*c^3*d^2+5*a*b*c^3*d^2-47*b^2*c^3*d^2+40*a*c^4*d^2+8*b*c^4*d^2+30*c^5*d^2+42*a^4*d^3+27*a^3*b*d^3+31*a^2*b^2*d^3-6*a*b^3*d^3+36*b^4*d^3+37*a^2*b*c*d^3+34*a*b^2*c*d^3-13*b^3*c*d^3+a^2*c^2*d^3+29*a*b*c^2*d^3-b^2*c^2*d^3-11*a*c^3*d^3-21*b*c^3*d^3+32*c^4*d^3+9*a^3*d^4-21*a^2*b*d^4+26*a*b^2*d^4+43*b^3*d^4-42*a^2*c*d^4-2*a*b*c*d^4-34*b^2*c*d^4+10*a*c^2*d^4-26*b*c^2*d^4-50*c^3*d^4+23*a^2*d^5+49*a*b*d^5+28*b^2*d^5-48*a*c*d^5-18*b*c*d^5-2*c^2*d^5-2*a*d^6-30*b*d^6+36*c*d^6-21*d^7,a^5*b^2+9*a*b^6+6*a^6*c+34*a^5*b*c-14*a^4*b^2*c-43*a^3*b^3*c-27*a^2*b^4*c+14*a*b^5*c+9*b^6*c-28*a^5*c^2-10*a^4*b*c^2+39*a^3*b^2*c^2-49*a^2*b^3*c^2-38*a*b^4*c^2+45*b^5*c^2+4*a^4*c^3+5*a^3*b*c^3+15*a^2*b^2*c^3-11*a*b^3*c^3-11*b^4*c^3+24*a^3*c^4-32*a^2*b*c^4-2*a*b^2*c^4-11*b^3*c^4+32*a^2*c^5-38*a*b*c^5+45*b^2*c^5-4*a*c^6+9*b*c^6+23*a^6*d-13*a^5*b*d+8*a^4*b^2*d-46*a^3*b^3*d-9*a^2*b^4*d-8*a*b^5*d+17*b^6*d+a^5*c*d+5*a^4*b*c*d-50*a^3*b^2*c*d+22*a^2*b^3*c*d-34*a*b^4*c*d-49*b^5*c*d+44*a^4*c^2*d+41*a^3*b*c^2*d-44*a^2*b^2*c^2*d-49*a*b^3*c^2*d+37*b^4*c^2*d+45*a^3*c^3*d+12*a^2*b*c^3*d-23*a*b^2*c^3*d-32*b^3*c^3*d-14*a^2*c^4*d+5*a*b*c^4*d+48*b^2*c^4*d+5*a*c^5*d-20*b*c^5*d-c^6*d+5*a^5*d^2-45*a^4*b*d^2+42*a^3*b^2*d^2+50*a^2*b^3*d^2-8*a*b^4*d^2-49*b^5*d^2-35*a^4*c*d^2-25*a^3*b*c*d^2-4*a^2*b^2*c*d^2-26*a*b^3*c*d^2-28*b^4*c*d^2+46*a^3*c^2*d^2+22*a^2*b*c^2*d^2+43*a*b^2*c^2*d^2-4*b^3*c^2*d^2-25*a^2*c^3*d^2+31*a*b*c^3*d^2-31*b^2*c^3*d^2-30*a*c^4*d^2-18*b*c^4*d^2-12*c^5*d^2-33*a^4*d^3-48*a^3*b*d^3-36*a^2*b^2*d^3-6*a*b^3*d^3+8*b^4*d^3+3*a^3*c*d^3-43*a^2*b*c*d^3+34*a*b^2*c*d^3+19*b^3*c*d^3+19*a^2*c^2*d^3-49*a*b*c^2*d^3-2*b^2*c^2*d^3+12*a*c^3*d^3-29*b*c^3*d^3-16*c^4*d^3+27*a^3*d^4+22*a^2*b*d^4+22*a*b^2*d^4-12*b^3*d^4+34*a^2*c*d^4+8*a*b*c*d^4+50*b^2*c*d^4+40*a*c^2*d^4+27*b*c^2*d^4-35*c^3*d^4-30*a^2*d^5+24*a*b*d^5+7*b^2*d^5+16*a*c*d^5+17*b*c*d^5-40*c^2*d^5-47*a*d^6-12*b*d^6+16*c*d^6+6*d^7,a^6*b-45*a*b^6-30*a^6*c-5*a^5*b*c-39*a^4*b^2*c-37*a^3*b^3*c+a^2*b^4*c-14*a*b^5*c-37*b^6*c+49*a^5*c^2+28*a^4*b*c^2+7*a^3*b^2*c^2-10*a^2*b^3*c^2+10*a*b^4*c^2+17*b^5*c^2-34*a^4*c^3+24*a^3*b*c^3-36*a^2*b^2*c^3-13*a*b^3*c^3+34*b^4*c^3-20*a^3*c^4-38*a^2*b*c^4+32*a*b^2*c^4+34*b^3*c^4-13*a^2*c^5+44*a*b*c^5+17*b^2*c^5+20*a*c^6-37*b*c^6+10*a^6*d+26*a^5*b*d+15*a^4*b^2*d+23*a^3*b^3*d+16*a^2*b^4*d+48*a*b^5*d-30*b^6*d-9*a^5*c*d-20*a^4*b*c*d+49*a^3*b^2*c*d-48*a^2*b^3*c*d-36*a*b^4*c*d-21*b^5*c*d+9*a^4*c^2*d-24*a^3*b*c^2*d+42*a^2*b^2*c^2*d+26*a*b^3*c^2*d-46*b^4*c^2*d-50*a^3*c^3*d-11*a^2*b*c^3*d-34*a*b^2*c^3*d+32*b^3*c^3*d-16*a^2*c^4*d-25*a*b*c^4*d+6*b^2*c^4*d+18*a*c^5*d-40*b*c^5*d+41*c^6*d-8*a^5*d^2-27*a^4*b*d^2-48*a^3*b^2*d^2-a^2*b^3*d^2+50*a*b^4*d^2+21*b^5*d^2-48*a^4*c*d^2+4*a^3*b*c*d^2-28*a^2*b^2*c*d^2-4*a*b^3*c*d^2+16*b^4*c*d^2+50*a^3*c^2*d^2+40*a^2*b*c^2*d^2+35*a*b^2*c^2*d^2+29*b^3*c^2*d^2-34*a^2*c^3*d^2-21*a*b*c^3*d^2-b^2*c^3*d^2-9*a*c^4*d^2-29*b*c^4*d^2+6*c^5*d^2+16*a^4*d^3-34*a^3*b*d^3+3*a^2*b^2*d^3+21*a*b^3*d^3+39*b^4*d^3+21*a^3*c*d^3-44*a^2*b*c*d^3-16*a*b^2*c*d^3+b^3*c*d^3-38*a^2*c^2*d^3+18*a*b*c^2*d^3+37*b^2*c^2*d^3-46*a*c^3*d^3+25*b*c^3*d^3-50*c^4*d^3-8*a^3*d^4-24*a^2*b*d^4-2*a*b^2*d^4+6*b^3*d^4+9*a^2*c*d^4+12*a*b*c*d^4+33*b^2*c*d^4-44*a*c^2*d^4+23*b*c^2*d^4-4*c^3*d^4-9*a^2*d^5-2*a*b*d^5-14*b^2*d^5+21*a*c*d^5-16*b*c*d^5-19*c^2*d^5+17*a*d^6-20*b*d^6+11*c*d^6-41*d^7,a^7-10*a*b^6-6*a^6*c-48*a^5*b*c-14*a^4*b^2*c-16*a^3*b^3*c-4*a^2*b^4*c+24*a*b^5*c-10*b^6*c-2*a^5*c^2+23*a^3*b^2*c^2+26*a^2*b^3*c^2+22*a*b^4*c^2-50*b^5*c^2+14*a^4*c^3-7*a^3*b*c^3+a^2*b^2*c^3-49*a*b^3*c^3+b^4*c^3-46*a^3*c^4+9*a^2*b*c^4+10*a*b^2*c^4+b^3*c^4+38*a^2*c^5-26*a*b*c^5-50*b^2*c^5+28*a*c^6-10*b*c^6-7*a^6*d+24*a^5*b*d-8*a^4*b^2*d+23*a^3*b^3*d+9*a^2*b^4*d+28*a*b^5*d-23*b^6*d-42*a^4*b*c*d+24*a^3*b^2*c*d-30*a^2*b^3*c*d-42*a*b^4*c*d-43*b^5*c*d-42*a^4*c^2*d+11*a^3*b*c^2*d+9*a^2*b^2*c^2*d-8*a*b^3*c^2*d+4*b^4*c^2*d+10*a^3*c^3*d+43*a^2*b*c^3*d+3*a*b^2*c^3*d-14*b^3*c^3*d-5*a^2*c^4*d+25*a*b*c^4*d-50*b^2*c^4*d-17*a*c^5*d+35*b*c^5*d+47*c^6*d-4*a^5*d^2-43*a^4*b*d^2+35*a^3*b^2*d^2+19*a^2*b^3*d^2+48*a*b^4*d^2+45*b^5*d^2+3*a^4*c*d^2-46*a^3*b*c*d^2+8*a^2*b^2*c*d^2-35*a*b^3*c*d^2-27*b^4*c*d^2-49*a^3*c^2*d^2+37*a^2*b*c^2*d^2-43*a*b^2*c^2*d^2+32*b^3*c^2*d^2+48*a^2*c^3*d^2+9*a*b*c^3*d^2+b^2*c^3*d^2-31*a*c^4*d^2-23*b*c^4*d^2-21*c^5*d^2+34*a^4*d^3+38*a^3*b*d^3+41*a^2*b^2*d^3-24*a*b^3*d^3+28*b^4*d^3+47*a^3*c*d^3-6*a^2*b*c*d^3+27*a*b^2*c*d^3-43*b^3*c*d^3-24*a^2*c^2*d^3-19*a*b*c^2*d^3-50*b^2*c^2*d^3+31*a*c^3*d^3+40*b*c^3*d^3+19*c^4*d^3+4*a^3*d^4-36*a^2*b*d^4+43*a*b^2*d^4+27*b^3*d^4+49*a^2*c*d^4-27*a*b*c*d^4-39*b^2*c*d^4+46*a*c^2*d^4+40*b*c^2*d^4+5*c^3*d^4-12*a^2*d^5-5*a*b*d^5+16*b^2*d^5-26*a*c*d^5-31*b*c*d^5-38*c^2*d^5+17*a*d^6-11*b*d^6-7*c*d^6-39*d^7,b*c*d^6-21*c^2*d^6+36*a*d^7-34*b*d^7-40*c*d^7-11*d^8,a*c*d^6-24*c^2*d^6+5*a*d^7-7*b*d^7+21*c*d^7-43*d^8,b^2*d^6+20*c^2*d^6+6*a*d^7-30*b*d^7+25*c*d^7+4*d^8,a*b*d^6+23*c^2*d^6-43*a*d^7+47*b*d^7+42*c*d^7+29*d^8,a^2*d^6+49*c^2*d^6+6*a*d^7-35*b*d^7+19*c*d^7-11*d^8,c^3*d^5-38*c^2*d^6+47*a*d^7+35*b*d^7+46*c*d^7+21*d^8,b*c^2*d^5+41*c^2*d^6-8*a*d^7+8*b*d^7+46*c*d^7+42*d^8,a*c^2*d^5+44*c^2*d^6+10*a*d^7-36*b*d^7-21*c*d^7+28*d^8,b^2*c*d^5+9*c^2*d^6+35*a*d^7+20*b*d^7+49*c*d^7-47*d^8,a*b*c*d^5+44*c^2*d^6+24*a*d^7-12*b*d^7+24*c*d^7-5*d^8,a^2*c*d^5-9*c^2*d^6-34*a*d^7+27*b*d^7-49*c*d^7+d^8,b^3*d^5+21*c^2*d^6-37*a*d^7-13*b*d^7-48*c*d^7+25*d^8,a*b^2*d^5+4*c^2*d^6-8*a*d^7-42*b*d^7-31*c*d^7+21*d^8,a^2*b*d^5+26*c^2*d^6-47*a*d^7-37*b*d^7+24*c*d^7+6*d^8,a^3*d^5-32*c^2*d^6-31*a*d^7+26*b*d^7-35*c*d^7-39*d^8,c^4*d^4+25*c^2*d^6+35*a*d^7+24*b*d^7+32*c*d^7-46*d^8,b*c^3*d^4+10*c^2*d^6-9*a*d^7-27*b*d^7-17*c*d^7+11*d^8,a*c^3*d^4-41*c^2*d^6+5*a*d^7-18*b*d^7-43*c*d^7-25*d^8,b^2*c^2*d^4-9*c^2*d^6+15*a*d^7-7*b*d^7-27*c*d^7-40*d^8,a*b*c^2*d^4-4*c^2*d^6+25*a*d^7-9*b*d^7-41*c*d^7-11*d^8,a^2*c^2*d^4+15*c^2*d^6-5*a*d^7-34*b*d^7-11*c*d^7-29*d^8,b^3*c*d^4+49*c^2*d^6-24*a*d^7-8*b*d^7+7*c*d^7-46*d^8,a*b^2*c*d^4-20*c^2*d^6-4*a*d^7+32*b*d^7-42*c*d^7-d^8,a^2*b*c*d^4+15*c^2*d^6+31*a*d^7+16*b*d^7-25*c*d^7+29*d^8,a^3*c*d^4-48*c^2*d^6-36*a*d^7-10*b*d^7+4*c*d^7+27*d^8,b^4*d^4+26*c^2*d^6-25*a*d^7-3*b*d^7-45*c*d^7-26*d^8,a*b^3*d^4+c^2*d^6-21*a*d^7-13*b*d^7-20*c*d^7+16*d^8,a^2*b^2*d^4+22*c^2*d^6-27*a*d^7-23*b*d^7-5*c*d^7-27*d^8,a^3*b*d^4+2*c^2*d^6-29*a*d^7-6*b*d^7+26*c*d^7-46*d^8,a^4*d^4-40*c^2*d^6-9*a*d^7-24*b*d^7+2*c*d^7-37*d^8,c^5*d^3+14*c^2*d^6+40*a*d^7+21*b*d^7+50*c*d^7+31*d^8,b*c^4*d^3-21*c^2*d^6-2*a*d^7-9*b*d^7-28*c*d^7+20*d^8,a*c^4*d^3-39*c^2*d^6+38*a*d^7-24*b*d^7-42*c*d^7-30*d^8,b^2*c^3*d^3+19*c^2*d^6-50*a*d^7-33*b*d^7+16*c*d^7-45*d^8,a*b*c^3*d^3-6*c^2*d^6-38*a*d^7+35*b*d^7+32*c*d^7-12*d^8,a^2*c^3*d^3+44*c^2*d^6+35*a*d^7+42*b*d^7-10*c*d^7-48*d^8,b^3*c^2*d^3+33*c^2*d^6-7*a*d^7-41*b*d^7-3*c*d^7-33*d^8,a*b^2*c^2*d^3-21*c^2*d^6-22*a*d^7-23*b*d^7+24*c*d^7+47*d^8,a^2*b*c^2*d^3+c^2*d^6-32*a*d^7-34*b*d^7-42*c*d^7+7*d^8,a^3*c^2*d^3+6*c^2*d^6-31*a*d^7-26*b*d^7+19*c*d^7-49*d^8,b^4*c*d^3+6*c^2*d^6-24*a*d^7+10*b*d^7-18*c*d^7-4*d^8,a*b^3*c*d^3+46*c^2*d^6+41*a*d^7+7*b*d^7+8*c*d^7-28*d^8,a^2*b^2*c*d^3+33*c^2*d^6-15*a*d^7-11*b*d^7+38*c*d^7+14*d^8,a^3*b*c*d^3-29*c^2*d^6-4*a*d^7-32*b*d^7+13*c*d^7-3*d^8,a^4*c*d^3-34*c^2*d^6+5*a*d^7+29*b*d^7-15*c*d^7-48*d^8,b^5*d^3-42*c^2*d^6+33*a*d^7-49*b*d^7+33*c*d^7-43*d^8,a*b^4*d^3+25*c^2*d^6-11*a*d^7-16*b*d^7+32*c*d^7-2*d^8,a^2*b^3*d^3-36*c^2*d^6-47*a*d^7-16*b*d^7+19*c*d^7+9*d^8,a^3*b^2*d^3-30*c^2*d^6-21*a*d^7-6*b*d^7+16*c*d^7-14*d^8,a^4*b*d^3+47*c^2*d^6-16*a*d^7-13*b*d^7+21*c*d^7+30*d^8,a^5*d^3-2*c^2*d^6+40*a*d^7+34*b*d^7+14*c*d^7-50*d^8,c^6*d^2-4*c^2*d^6-41*a*d^7+46*b*d^7+17*c*d^7+19*d^8,b*c^5*d^2-49*c^2*d^6+5*a*d^7-31*b*d^7+30*c*d^7+28*d^8,a*c^5*d^2-12*c^2*d^6-23*a*d^7-39*b*d^7+6*c*d^7-27*d^8,b^2*c^4*d^2-12*c^2*d^6-30*a*d^7+13*b*d^7-42*c*d^7+38*d^8,a*b*c^4*d^2-31*c^2*d^6+5*a*d^7-41*b*d^7-24*c*d^7,a^2*c^4*d^2-c^2*d^6+4*a*d^7+21*b*d^7+19*c*d^7-34*d^8,b^3*c^3*d^2-50*c^2*d^6-11*a*d^7+24*b*d^7+24*c*d^7-44*d^8,a*b^2*c^3*d^2+2*c^2*d^6-42*a*d^7-17*b*d^7-33*c*d^7-10*d^8,a^2*b*c^3*d^2+20*c^2*d^6+29*a*d^7+35*b*d^7-31*c*d^7-35*d^8,a^3*c^3*d^2+35*c^2*d^6-13*a*d^7+20*b*d^7-15*c*d^7-45*d^8,b^4*c^2*d^2+c^2*d^6+36*a*d^7-42*b*d^7+32*c*d^7+16*d^8,a*b^3*c^2*d^2-9*c^2*d^6-43*a*d^7-5*b*d^7-17*c*d^7+50*d^8,a^2*b^2*c^2*d^2-36*c^2*d^6+31*a*d^7+4*b*d^7-26*c*d^7-11*d^8,a^3*b*c^2*d^2+15*c^2*d^6+40*a*d^7-18*b*d^7-31*c*d^7+43*d^8,a^4*c^2*d^2+41*c^2*d^6-49*a*d^7+37*b*d^7+47*c*d^7-48*d^8,b^5*c*d^2-49*c^2*d^6+15*a*d^7+48*b*d^7+22*c*d^7+38*d^8,a*b^4*c*d^2+12*c^2*d^6+16*a*d^7-22*b*d^7-c*d^7+29*d^8,a^2*b^3*c*d^2+31*c^2*d^6+19*a*d^7+45*b*d^7-6*c*d^7+42*d^8,a^3*b^2*c*d^2+29*c^2*d^6-39*a*d^7+25*b*d^7-48*c*d^7-d^8,a^4*b*c*d^2-31*c^2*d^6+24*a*d^7-2*b*d^7+36*c*d^7+37*d^8,a^5*c*d^2+33*c^2*d^6-46*a*d^7-41*b*d^7-29*c*d^7-12*d^8,b^6*d^2-39*c^2*d^6+35*a*d^7-8*b*d^7+35*c*d^7+47*d^8,a*b^5*d^2-38*c^2*d^6-11*a*d^7-37*b*d^7-7*c*d^7-5*d^8,a^2*b^4*d^2+29*c^2*d^6+36*a*d^7-29*b*d^7+20*c*d^7+39*d^8,a^3*b^3*d^2-44*c^2*d^6+43*a*d^7-50*b*d^7-24*c*d^7-16*d^8,a^4*b^2*d^2+20*c^2*d^6+33*a*d^7+6*b*d^7+47*c*d^7+40*d^8,a^5*b*d^2-10*c^2*d^6+25*a*d^7-8*b*d^7-14*c*d^7+16*d^8,a^6*d^2+48*c^2*d^6+14*a*d^7+32*b*d^7+17*c*d^7+13*d^8,c^7*d+38*c^2*d^6-39*a*d^7+22*b*d^7+15*c*d^7-d^8,b*c^6*d+9*c^2*d^6+37*a*d^7+12*b*d^7+27*c*d^7+3*d^8,a*c^6*d-5*c^2*d^6+34*a*d^7+15*b*d^7+2*c*d^7-21*d^8,b^2*c^5*d+35*c^2*d^6+27*a*d^7+13*b*d^7-39*c*d^7+8*d^8,a*b*c^5*d-34*c^2*d^6-18*a*d^7-21*b*d^7-31*c*d^7+46*d^8,a^2*c^5*d-16*c^2*d^6-6*a*d^7-18*b*d^7+3*c*d^7+47*d^8,b^3*c^4*d-46*c^2*d^6+4*a*d^7-38*b*d^7-29*c*d^7-4*d^8,a*b^2*c^4*d-35*c^2*d^6-14*a*d^7-32*b*d^7-40*c*d^7-35*d^8,a^2*b*c^4*d+23*c^2*d^6-44*a*d^7-3*b*d^7+4*c*d^7-4*d^8,a^3*c^4*d+24*c^2*d^6-7*a*d^7-44*b*d^7-16*c*d^7+10*d^8,b^4*c^3*d+43*c^2*d^6+12*a*d^7+43*b*d^7-49*c*d^7-23*d^8,a*b^3*c^3*d+22*c^2*d^6+6*a*d^7+2*b*d^7-9*c*d^7,a^2*b^2*c^3*d+4*c^2*d^6+21*a*d^7-24*b*d^7-26*c*d^7+33*d^8,a^3*b*c^3*d+13*c^2*d^6-18*a*d^7+31*b*d^7-28*c*d^7+2*d^8,a^4*c^3*d+10*c^2*d^6-14*a*d^7+30*b*d^7-40*c*d^7+33*d^8,b^5*c^2*d-35*c^2*d^6-33*a*d^7+7*b*d^7+13*c*d^7+26*d^8,a*b^4*c^2*d-49*c^2*d^6+9*a*d^7+20*b*d^7+11*c*d^7-32*d^8,a^2*b^3*c^2*d+33*c^2*d^6-43*a*d^7-27*b*d^7-31*c*d^7-41*d^8,a^3*b^2*c^2*d-6*c^2*d^6+23*a*d^7+20*b*d^7-8*c*d^7-6*d^8,a^4*b*c^2*d+10*c^2*d^6-24*a*d^7+30*b*d^7+42*c*d^7-23*d^8,a^5*c^2*d+12*c^2*d^6+20*a*d^7+24*b*d^7-9*c*d^7-9*d^8,b^6*c*d-12*c^2*d^6+36*a*d^7+4*b*d^7-12*c*d^7+26*d^8,a*b^5*c*d-19*c^2*d^6-39*a*d^7-26*b*d^7-4*c*d^7+10*d^8,a^2*b^4*c*d+38*c^2*d^6-6*a*d^7+6*b*d^7+41*c*d^7+49*d^8,a^3*b^3*c*d-34*c^2*d^6-42*a*d^7+22*b*d^7-26*c*d^7-13*d^8,a^4*b^2*c*d+14*c^2*d^6+40*a*d^7+39*b*d^7-34*d^8,a^5*b*c*d-8*c^2*d^6+45*a*d^7-35*b*d^7+48*c*d^7+47*d^8,a^6*c*d-6*c^2*d^6-24*a*d^7-2*b*d^7-9*c*d^7+7*d^8,b^7*d+34*c^2*d^6-14*a*d^7+46*b*d^7-50*c*d^7+26*d^8,a*b^6*d+6*c^2*d^6+23*a*d^7-27*b*d^7-25*c*d^7-2*d^8,c^8+43*c^2*d^6+11*b*d^7-39*c*d^7-30*d^8,b*c^7-44*c^2*d^6-4*a*d^7-10*b*d^7+31*c*d^7+42*d^8,a*c^7-6*a*d^7+31*b*d^7+37*c*d^7-41*d^8,b^2*c^6-11*c^2*d^6-35*a*d^7+32*b*d^7-25*c*d^7-21*d^8,a*b*c^6+2*c^2*d^6+43*a*d^7-48*b*d^7-49*c*d^7-19*d^8,a^2*c^6-20*c^2*d^6-11*a*d^7-35*b*d^7-33*c*d^7+28*d^8,b^3*c^5+4*c^2*d^6-7*a*d^7-21*b*d^7-14*c*d^7+48*d^8,a*b^2*c^5+17*c^2*d^6+45*a*d^7-32*b*d^7+29*c*d^7+38*d^8,a^2*b*c^5-13*c^2*d^6+46*a*d^7+4*b*d^7-18*c*d^7+19*d^8,a^3*c^5-23*c^2*d^6-a*d^7-3*b*d^7-15*c*d^7+19*d^8,b^4*c^4-50*c^2*d^6+39*a*d^7+49*b*d^7+47*c*d^7+7*d^8,a*b^3*c^4-33*c^2*d^6+10*a*d^7+32*b*d^7+21*c*d^7-39*d^8,a^2*b^2*c^4+23*c^2*d^6+27*a*d^7-17*b*d^7+29*c*d^7+9*d^8,a^3*b*c^4-47*c^2*d^6-43*a*d^7-47*b*d^7-34*c*d^7-23*d^8,a^4*c^4-6*c^2*d^6+7*a*d^7+38*b*d^7-27*c*d^7-9*d^8,b^5*c^3-47*c^2*d^6+18*a*d^7-44*b*d^7-4*c*d^7-18*d^8,a*b^4*c^3+30*c^2*d^6+36*a*d^7+25*b*d^7+42*c*d^7+d^8,a^2*b^3*c^3+10*c^2*d^6+31*a*d^7+45*b*d^7-44*c*d^7+37*d^8,a^3*b^2*c^3-41*c^2*d^6-15*a*d^7-34*b*d^7-22*c*d^7+28*d^8,a^4*b*c^3+19*c^2*d^6-23*a*d^7+18*b*d^7-13*c*d^7-48*d^8,a^5*c^3+16*c^2*d^6+22*a*d^7-31*b*d^7+33*c*d^7+15*d^8,b^6*c^2-42*c^2*d^6-10*a*d^7-16*b*d^7-46*c*d^7+42*d^8,a*b^5*c^2-23*c^2*d^6+34*a*d^7-37*b*d^7+2*c*d^7+10*d^8,a^2*b^4*c^2-45*c^2*d^6-5*a*d^7+43*b*d^7-18*c*d^7+7*d^8,a^3*b^3*c^2+36*c^2*d^6+19*a*d^7+21*b*d^7+46*c*d^7-24*d^8,a^4*b^2*c^2-17*c^2*d^6+30*a*d^7-39*b*d^7-39*c*d^7-24*d^8,a^5*b*c^2+10*c^2*d^6-24*a*d^7-36*b*d^7-14*c*d^7+26*d^8,a^6*c^2+47*c^2*d^6-41*a*d^7+32*b*d^7+6*c*d^7+42*d^8,b^7*c+44*c^2*d^6-6*a*d^7+5*b*d^7+20*c*d^7+50*d^8,a*b^6*c+29*c^2*d^6-16*a*d^7+45*b*d^7-3*c*d^7+14*d^8,b^8+48*c^2*d^6-40*a*d^7-44*b*d^7-10*c*d^7-23*d^8,a*b^7-32*c^2*d^6-41*a*d^7-11*b*d^7+50*c*d^7+13*d^8,d^9,c*d^8,b*d^8,a*d^8,c^2*d^7;
    2848 //  M;
    28492816  TestSSresAttribs2tr(M, "AGR@101n3d010s010%3"); 
    28502817  kill AGR;
     
    28552822f*h-g*h,e*h-g*h,d*h-g*h,c*h-g*h,b*h-g*h,a*h-g*h,e*g+48*f*g-49*g*h,d*g+5*f*g-6*g*h,c*g+49*f*g-50*g*h,b*g-7*f*g+6*g*h,a*g-50*f*g+49*g*h,e*f-20*f*g+19*g*h,d*f+40*f*g-41*g*h,c*f-12*f*g+11*g*h,b*f+45*f*g-46*g*h,a*f+4*f*g-5*g*h,d*e-f*g,c*e-30*f*g+29*g*h,b*e-39*f*g+38*g*h,a*e+10*f*g-11*g*h,c*d-41*f*g+40*g*h,b*d-23*f*g+22*g*h,a*d-20*f*g+19*g*h,b*c+17*f*g-18*g*h,a*c+6*f*g-7*g*h,a*b+28*f*g-29*g*h,g^2*h-g*h^2,f^2*g-8*f*g^2+7*g*h^2,g*h^4+50*h^5,g^5+41*h^5,f*g^4-18*h^5,f^5+29*h^5,e^5+6*h^5,d^5-23*h^5,c^5-32*h^5,
    28562823b^5+17*h^5,a^5+17*h^5,h^6;
    2857 //  M;
    28582824  TestSSresAttribs2tr(M, "AGR@101n7d005s010%2");
    2859 /*
    2860 options:  1 1 0 :  Time:  3/10
    2861 options:  1 1 1 :  Time:  2/6
    2862 lres  Time:  0
    2863 nres  Time:  25
    2864 sres  Time:  0
    2865 */
    28662825  kill AGR;
    28672826
     
    29102869b^3*d*e^2, a*b^2*d*e^2, a^2*b*d*e^2, a^3*d*e^2, c^4*e^2, b*c^3*e^2, a*c^3*e^2,
    29112870b^2*c^2*e^2, a*b*c^2*e^2;
    2912 //  M;
    29132871  TestSSresAttribs2tr(M, "AGR101n4d007s021%4");
    29142872/*
     
    30062964  ideal M =
    30072965b*d-13*c*d+7*a*e-32*b*e+31*c*e+3*d*e+46*a*f-13*b*f+22*c*f-19*d*f-33*e*f, a*d+2*c*d-42*a*e+46*b*e+7*c*e-38*d*e+31*a*f+9*b*f+27*c*f-19*d*f-24*e*f, b*c-35*c*d-34*a*e+4*b*e+33*c*e+23*d*e+4*a*f-43*b*f+43*c*f+17*d*f-13*e*f, a*c+49*c*d-28*a*e+18*b*e-23*c*e+3*d*e-5*a*f-23*b*f+2*c*f+46*d*f-40*e*f, a*b-38*c*d+a*e-49*b*e-20*c*e+32*d*e+13*a*f+25*b*f+37*c*f-27*d*f+25*e*f, f^4, e*f^3, d*f^3, c*f^3, b*f^3, a*f^3, e^2*f^2, d*e*f^2, c*e*f^2, b*e*f^2, a*e*f^2, d^2*f^2, c*d*f^2, c^2*f^2, b^2*f^2, a^2*f^2, e^3*f, d*e^2*f, c*e^2*f, b*e^2*f, a*e^2*f, d^2*e*f, d^3*f, c^3*f, b^3*f, a^3*f, e^4, d^4, c^4, b^4, a^4;
    3008 // M;
    3009 
    30102966  TestSSresAttribs(M, "AGR@101n5d005s016%1");
    3011 /*
    3012  * ?
    3013  */
    3014  kill M;
    3015 }
    3016 
    3017 proc testAGRhard(list #)
     2967  kill M;
     2968}
     2969
     2970static proc testAGRhard(list #)
    30182971{
    30192972  def DEBUG = 0;
     
    30292982  attrib(SSinit, "PROFILE", 0);
    30302983 
    3031 //  option(prot);
     2984  option(prot);
     2985  // AGR@101n5d006s016%1, new, hard
    30322986  ring AGR = (101), (a,b,c,d,e,f), dp; AGR;
    3033 
    3034 
    3035   // AGR@101n5d006s016%1, new, hard!?
    30362987  ideal M =
    30372988b*d+47*c*d-27*a*e+37*b*e+21*c*e+31*d*e-31*a*f+23*b*f+47*c*f+42*d*f+11*e*f, a*d+7*c*d+19*a*e+28*b*e-33*c*e-28*d*e+15*a*f+28*b*f+47*c*f+3*d*f+14*e*f, b*c+29*c*d-25*a*e+12*b*e+23*c*e-50*d*e-17*a*f+30*b*f-37*c*f+35*d*f-e*f, a*c+46*c*d+12*a*e+27*b*e+39*c*e+23*d*e-45*a*f+39*b*f-35*c*f+4*d*f-10*e*f, a*b+38*c*d-18*a*e-34*b*e-30*c*e+38*d*e+22*a*f+34*b*f+39*c*f+30*d*f-19*e*f, f^5, e*f^4, d*f^4, c*f^4, b*f^4, a*f^4, e^2*f^3, d*e*f^3, c*e*f^3, b*e*f^3, a*e*f^3, d^2*f^3, c*d*f^3, c^2*f^3, b^2*f^3, a^2*f^3, e^3*f^2, d*e^2*f^2, c*e^2*f^2, b*e^2*f^2, a*e^2*f^2, d^2*e*f^2, d^3*f^2, c^3*f^2, b^3*f^2, a^3*f^2, e^4*f, e^5, d^5, c^5, b^5, a^5;
    3038   TestSSresAttribs(M, "AGR@101n5d006s016%1_hard");
    3039 /*
    3040  * ?
    3041  */
     2989  TestSSresAttribs2tr(M, "AGR@101n5d006s016%1_hard");
    30422990 kill M;
    30432991}
    3044 
    3045 
    3046 
    3047 /*
    3048 proc testAGRFrame()
    3049 {
    3050   system("--min-time", "0.01");
    3051   system("--ticks-per-sec", 100);
    3052 
    3053   attrib(SSinit, "DEBUG", 0);
    3054   attrib(SSinit, "SYZCHECK", 0); // no such tests anymore with IGNORETAILS == 1!
    3055   attrib(SSinit, "KERCHECK", 0);
    3056   attrib(SSinit, "IGNORETAILS", 1);
    3057  
    3058 //  option(prot);
    3059 
    3060   ring AGR = (101), (a, b, c, d), dp; AGR;
    3061   "lengthy: AGR@101n3d008s058%3, kernel only!";
    3062   ideal M = c^4*d^2+4*a^3*d^3+29*a^2*b*d^3-2*a*b^2*d^3+2*b^3*d^3-21*a^2*c*d^3+46*a*b*c*d^3+2*b^2*c*d^3-13*a*c^2*d^3+32*b*c^2*d^3+46*c^3*d^3-28*a^2*d^4+4*a*b*d^4+29*b^2*d^4-8*a*c*d^4+33*b*c*d^4-16*c^2*d^4+17*a*d^5-3*b*d^5-42*c*d^5+47*d^6,b*c^3*d^2+35*a^3*d^3+24*a^2*b*d^3+46*a*b^2*d^3-22*b^3*d^3-48*a^2*c*d^3+20*a*b*c*d^3-28*b^2*c*d^3-40*a*c^2*d^3-4*b*c^2*d^3+35*c^3*d^3-21*a^2*d^4+3*a*b*d^4+8*b^2*d^4-2*a*c*d^4-22*b*c*d^4+24*c^2*d^4+44*a*d^5+33*b*d^5+31*c*d^5+26*d^6,a*c^3*d^2-42*a^3*d^3+34*a^2*b*d^3-10*a*b^2*d^3+30*b^3*d^3-6*a^2*c*d^3-30*a*b*c*d^3-34*b^2*c*d^3+29*a*c^2*d^3+35*b*c^2*d^3+13*c^3*d^3+8*a^2*d^4+23*a*b*d^4-29*b^2*d^4+12*a*c*d^4-22*b*c*d^4-50*c^2*d^4-4*b*d^5+9*c*d^5+13*d^6,b^2*c^2*d^2+a^3*d^3-49*a^2*b*d^3+26*a*b^2*d^3+20*b^3*d^3+24*a^2*c*d^3-2*a*b*c*d^3+31*b^2*c*d^3-30*a*c^2*d^3+21*b*c^2*d^3-24*c^3*d^3-38*a^2*d^4-14*a*b*d^4-14*b^2*d^4+6*a*c*d^4+3*b*c*d^4+13*c^2*d^4-11*a*d^5-38*b*d^5+22*c*d^5+48*d^6,a*b*c^2*d^2+18*a^3*d^3-29*a^2*b*d^3-21*a*b^2*d^3-2*b^3*d^3-25*a^2*c*d^3+37*a*b*c*d^3-14*b^2*c*d^3-47*a*c^2*d^3-6*b*c^2*d^3-34*c^3*d^3+43*a^2*d^4+22*a*b*d^4-39*b^2*d^4-41*a*c*d^4-17*b*c*d^4-13*c^2*d^4-43*a*d^5+28*b*d^5-42*c*d^5-49*d^6,a^2*c^2*d^2-33*a^3*d^3+30*a^2*b*d^3-13*a*b^2*d^3+18*b^3*d^3-8*a^2*c*d^3-18*a*b*c*d^3-15*b^2*c*d^3-21*a*c^2*d^3+45*b*c^2*d^3-35*c^3*d^3-4*a^2*d^4-4*a*b*d^4+10*b^2*d^4-19*a*c*d^4-18*b*c*d^4-22*c^2*d^4-27*a*d^5+20*b*d^5-14*c*d^5+24*d^6,b^3*c*d^2-10*a^3*d^3+37*a*b^2*d^3-43*b^3*d^3-10*a^2*c*d^3-9*a*b*c*d^3+47*a*c^2*d^3-24*b*c^2*d^3+12*c^3*d^3+7*a^2*d^4+19*a*b*d^4-27*b^2*d^4-2*a*c*d^4-35*b*c*d^4+45*c^2*d^4-44*a*d^5-43*b*d^5+24*c*d^5+16*d^6,a*b^2*c*d^2+2*a^3*d^3-14*a^2*b*d^3+2*a*b^2*d^3+18*b^3*d^3-48*a^2*c*d^3+43*a*b*c*d^3-25*b^2*c*d^3+15*a*c^2*d^3-7*b*c^2*d^3+42*c^3*d^3-16*a^2*d^4+7*b^2*d^4-23*a*c*d^4+24*b*c*d^4+25*c^2*d^4-17*a*d^5-16*b*d^5-32*c*d^5-50*d^6,a^2*b*c*d^2-16*a^3*d^3+7*a^2*b*d^3-20*a*b^2*d^3+11*b^3*d^3+16*a^2*c*d^3+6*a*b*c*d^3-25*b^2*c*d^3+42*a*c^2*d^3-39*b*c^2*d^3-15*c^3*d^3-25*a^2*d^4+46*a*b*d^4-3*b^2*d^4+5*a*c*d^4+28*b*c*d^4+6*c^2*d^4-20*a*d^5-15*b*d^5-30*c*d^5+17*d^6,a^3*c*d^2+39*a^3*d^3+22*a^2*b*d^3-21*a*b^2*d^3+10*b^3*d^3+40*a^2*c*d^3-37*a*b*c*d^3+11*b^2*c*d^3+43*a*c^2*d^3+28*b*c^2*d^3-10*c^3*d^3+30*a^2*d^4+36*a*b*d^4-45*b^2*d^4-40*a*c*d^4-31*b*c*d^4+28*c^2*d^4+35*a*d^5+6*b*d^5+14*c*d^5+25*d^6,b^4*d^2+50*a^3*d^3+12*a^2*b*d^3+29*a*b^2*d^3-38*b^3*d^3-44*a^2*c*d^3+28*a*b*c*d^3+18*b^2*c*d^3-31*a*c^2*d^3+16*b*c^2*d^3-18*c^3*d^3+5*a^2*d^4-43*a*b*d^4+16*b^2*d^4+9*a*c*d^4-30*b*c*d^4+50*c^2*d^4+3*a*d^5+33*b*d^5+3*c*d^5-48*d^6,a*b^3*d^2+13*a^3*d^3-28*a^2*b*d^3-33*a*b^2*d^3-25*b^3*d^3-41*a^2*c*d^3+a*b*c*d^3+19*b^2*c*d^3+41*a*c^2*d^3-17*b*c^2*d^3+34*c^3*d^3-10*a^2*d^4+30*a*b*d^4+34*b^2*d^4+13*a*c*d^4+b*c*d^4-35*c^2*d^4-34*a*d^5+23*b*d^5-7*c*d^5+6*d^6,a^2*b^2*d^2+22*a^3*d^3-32*a^2*b*d^3+29*a*b^2*d^3+21*b^3*d^3-30*a^2*c*d^3-47*a*b*c*d^3-11*b^2*c*d^3-16*a*c^2*d^3-14*b*c^2*d^3+49*c^3*d^3+47*a^2*d^4-11*a*b*d^4+4*b^2*d^4+13*a*c*d^4+7*b*c*d^4-30*c^2*d^4+31*a*d^5+10*b*d^5-8*c*d^5-27*d^6,a^3*b*d^2-43*a^3*d^3-2*a^2*b*d^3+15*a*b^2*d^3+42*b^3*d^3+25*a^2*c*d^3+22*a*b*c*d^3-4*b^2*c*d^3-29*a*c^2*d^3-31*b*c^2*d^3-3*c^3*d^3+33*a^2*d^4+20*a*b*d^4-34*b^2*d^4+8*a*c*d^4+48*b*c*d^4-29*c^2*d^4-46*a*d^5+27*b*d^5+29*c*d^5+33*d^6,a^4*d^2+30*a^3*d^3-42*a*b^2*d^3-16*b^3*d^3-33*a^2*c*d^3+13*a*b*c*d^3+7*b^2*c*d^3-23*a*c^2*d^3+28*b*c^2*d^3-37*c^3*d^3+3*a^2*d^4-34*a*b*d^4+16*b^2*d^4-21*a*c*d^4-39*b*c*d^4+5*c^2*d^4+35*a*d^5+39*b*d^5-26*c*d^5-47*d^6,c^5*d+48*a^3*d^3-37*a^2*b*d^3+31*a*b^2*d^3-19*b^3*d^3+49*a^2*c*d^3-5*a*b*c*d^3+45*b^2*c*d^3+24*a*c^2*d^3-26*b*c^2*d^3-10*c^3*d^3-a^2*d^4+43*a*b*d^4-26*b^2*d^4+45*a*c*d^4-3*b*c*d^4+38*c^2*d^4+10*a*d^5-5*b*d^5-34*c*d^5+22*d^6,b*c^4*d+30*a^3*d^3-40*a^2*b*d^3-39*a*b^2*d^3+33*b^3*d^3+31*a^2*c*d^3-17*a*b*c*d^3-44*b^2*c*d^3+24*a*c^2*d^3+22*b*c^2*d^3-44*c^3*d^3-29*a^2*d^4+4*a*b*d^4-4*b^2*d^4+8*a*c*d^4-42*b*c*d^4+15*c^2*d^4-42*a*d^5+15*b*d^5-41*c*d^5-46*d^6,a*c^4*d-11*a^3*d^3-5*a^2*b*d^3+33*a*b^2*d^3+7*b^3*d^3-31*a^2*c*d^3-47*a*b*c*d^3-50*b^2*c*d^3-50*a*c^2*d^3-39*b*c^2*d^3+25*c^3*d^3+5*a^2*d^4+35*a*b*d^4-34*b^2*d^4+42*a*c*d^4-44*b*c*d^4-17*c^2*d^4+11*a*d^5+b*d^5+31*c*d^5+45*d^6,b^2*c^3*d+12*a^3*d^3-41*a^2*b*d^3+29*a*b^2*d^3-42*b^3*d^3-32*a^2*c*d^3+47*a*b*c*d^3-13*b^2*c*d^3-20*a*c^2*d^3+45*b*c^2*d^3-49*c^3*d^3-34*a^2*d^4+16*a*b*d^4+11*b^2*d^4-49*a*c*d^4-27*b*c*d^4-31*c^2*d^4+29*a*d^5-23*b*d^5+13*c*d^5+42*d^6,a*b*c^3*d-16*a^3*d^3-35*a^2*b*d^3+12*a*b^2*d^3-39*b^3*d^3-32*a*b*c*d^3-4*b^2*c*d^3+31*a*c^2*d^3+43*b*c^2*d^3-42*c^3*d^3+36*a^2*d^4-5*a*b*d^4-4*b^2*d^4+5*a*c*d^4+20*b*c*d^4+31*c^2*d^4+15*a*d^5+25*b*d^5-16*c*d^5-28*d^6,a^2*c^3*d-16*a^3*d^3+8*a^2*b*d^3+30*a*b^2*d^3-16*b^3*d^3+20*a^2*c*d^3-11*b^2*c*d^3-48*a*c^2*d^3+11*b*c^2*d^3-20*c^3*d^3-24*a^2*d^4-23*a*b*d^4+9*b^2*d^4+13*a*c*d^4-42*b*c*d^4+22*c^2*d^4-29*a*d^5-28*b*d^5-7*c*d^5-2*d^6,b^3*c^2*d+42*a^3*d^3-11*a^2*b*d^3+18*a*b^2*d^3-13*b^3*d^3+22*a^2*c*d^3-10*a*b*c*d^3-25*b^2*c*d^3-17*a*c^2*d^3-23*b*c^2*d^3-37*c^3*d^3-3*a^2*d^4-33*a*b*d^4+44*b^2*d^4-41*a*c*d^4+6*b*c*d^4-36*c^2*d^4-43*a*d^5+b*d^5+25*c*d^5+48*d^6,a*b^2*c^2*d+21*a^3*d^3+5*a^2*b*d^3+38*a*b^2*d^3+25*b^3*d^3-12*a^2*c*d^3+7*a*b*c*d^3+28*b^2*c*d^3+a*c^2*d^3+33*b*c^2*d^3+22*c^3*d^3+10*a^2*d^4-7*a*b*d^4-5*b^2*d^4+50*a*c*d^4-23*b*c*d^4+22*c^2*d^4-4*a*d^5+45*b*d^5-42*c*d^5+d^6,a^2*b*c^2*d-45*a^3*d^3+2*a^2*b*d^3+44*a*b^2*d^3-5*b^3*d^3-19*a^2*c*d^3-3*a*b*c*d^3+18*b^2*c*d^3-22*a*c^2*d^3+46*b*c^2*d^3+41*c^3*d^3-26*a^2*d^4-a*b*d^4-42*b^2*d^4-40*a*c*d^4+39*b*c*d^4+24*c^2*d^4-6*a*d^5-6*b*d^5+13*c*d^5-28*d^6,a^3*c^2*d+4*a^3*d^3+31*a^2*b*d^3+21*a*b^2*d^3+39*b^3*d^3-8*a^2*c*d^3+49*a*b*c*d^3-48*b^2*c*d^3-16*a*c^2*d^3-33*b*c^2*d^3+35*c^3*d^3+41*a^2*d^4+18*a*b*d^4+47*b^2*d^4-3*a*c*d^4+12*b*c*d^4+13*c^2*d^4+32*a*d^5-40*b*d^5+50*c*d^5-2*d^6,b^4*c*d+23*a^3*d^3+47*a^2*b*d^3-10*a*b^2*d^3-43*b^3*d^3+49*a^2*c*d^3+7*a*b*c*d^3+34*b^2*c*d^3-40*a*c^2*d^3-37*b*c^2*d^3-6*c^3*d^3+30*a^2*d^4-34*a*b*d^4-6*b^2*d^4+21*a*c*d^4+41*b*c*d^4-33*c^2*d^4-9*a*d^5+2*b*d^5+8*c*d^5+7*d^6,a*b^3*c*d-5*a^3*d^3-42*a^2*b*d^3+22*a*b^2*d^3-35*b^3*d^3+a^2*c*d^3+20*a*b*c*d^3-10*b^2*c*d^3+23*a*c^2*d^3-17*b*c^2*d^3+30*c^3*d^3+24*a^2*d^4+32*a*b*d^4-7*b^2*d^4-48*a*c*d^4-25*b*c*d^4-6*c^2*d^4-33*a*d^5+29*b*d^5+12*c*d^5+26*d^6,a^2*b^2*c*d+6*a^3*d^3-46*a^2*b*d^3-30*a*b^2*d^3+b^3*d^3-35*a^2*c*d^3+41*a*b*c*d^3-4*b^2*c*d^3-42*a*c^2*d^3+16*b*c^2*d^3+19*c^3*d^3-13*a^2*d^4-16*a*b*d^4+45*b^2*d^4-25*a*c*d^4-48*b*c*d^4+35*c^2*d^4+50*a*d^5+31*b*d^5-25*c*d^5+6*d^6,a^3*b*c*d+3*a^3*d^3-39*a^2*b*d^3+14*a*b^2*d^3-4*b^3*d^3-36*a^2*c*d^3+47*a*b*c*d^3+27*b^2*c*d^3+50*a*c^2*d^3-45*b*c^2*d^3+49*c^3*d^3-18*a^2*d^4+20*a*b*d^4+17*b^2*d^4+a*c*d^4+33*b*c*d^4+42*c^2*d^4+19*a*d^5+18*b*d^5+33*c*d^5+15*d^6,a^4*c*d-14*a^3*d^3-8*a^2*b*d^3-a*b^2*d^3-34*b^3*d^3-27*a^2*c*d^3-15*a*b*c*d^3-14*b^2*c*d^3+33*a*c^2*d^3-34*b*c^2*d^3-4*c^3*d^3+47*a^2*d^4+50*a*b*d^4-6*b^2*d^4+16*a*c*d^4+26*c^2*d^4-27*a*d^5+2*b*d^5-31*c*d^5+47*d^6,b^5*d+3*a^3*d^3-9*a^2*b*d^3+46*a*b^2*d^3+b^3*d^3-2*a^2*c*d^3-39*a*b*c*d^3-31*b^2*c*d^3-30*a*c^2*d^3+23*b*c^2*d^3+25*c^3*d^3+9*a^2*d^4-15*a*b*d^4-2*b^2*d^4-12*a*c*d^4+11*b*c*d^4+9*c^2*d^4+3*a*d^5+9*b*d^5+41*c*d^5-38*d^6,a*b^4*d-48*a^3*d^3+42*a^2*b*d^3+27*a*b^2*d^3+32*b^3*d^3+21*a^2*c*d^3-5*a*b*c*d^3-39*b^2*c*d^3+6*a*c^2*d^3-20*b*c^2*d^3+45*c^3*d^3-48*a^2*d^4+44*a*b*d^4+25*b^2*d^4-29*a*c*d^4+4*b*c*d^4+50*c^2*d^4-6*a*d^5-40*b*d^5-11*c*d^5-28*d^6,a^2*b^3*d-41*a^3*d^3+21*a^2*b*d^3+39*a*b^2*d^3-2*b^3*d^3+24*a*b*c*d^3-10*b^2*c*d^3+31*a*c^2*d^3-34*b*c^2*d^3-31*c^3*d^3+20*a^2*d^4+41*a*b*d^4-10*b^2*d^4-40*a*c*d^4+5*b*c*d^4+31*c^2*d^4+6*a*d^5+26*b*d^5+29*c*d^5-5*d^6,a^3*b^2*d-11*a^3*d^3-39*a^2*b*d^3+2*a*b^2*d^3-44*b^3*d^3-23*a^2*c*d^3+21*a*b*c*d^3-44*b^2*c*d^3-7*a*c^2*d^3+49*b*c^2*d^3+46*c^3*d^3+17*a^2*d^4+49*a*b*d^4-14*b^2*d^4+29*a*c*d^4-20*b*c*d^4-49*c^2*d^4-13*a*d^5-41*b*d^5-18*c*d^5+50*d^6,a^4*b*d+9*a^3*d^3+50*a^2*b*d^3+46*a*b^2*d^3-48*b^3*d^3+43*a^2*c*d^3-45*a*b*c*d^3+24*b^2*c*d^3-4*a*c^2*d^3-b*c^2*d^3-34*c^3*d^3+33*a^2*d^4+14*a*b*d^4-37*b^2*d^4-13*a*c*d^4+48*b*c*d^4-31*c^2*d^4-22*a*d^5+42*b*d^5+49*c*d^5-43*d^6,a^5*d+33*a^3*d^3-23*a^2*b*d^3+30*a*b^2*d^3+5*b^3*d^3-26*a^2*c*d^3-35*a*b*c*d^3-50*b^2*c*d^3-21*a*c^2*d^3+4*b*c^2*d^3+10*c^3*d^3+39*a^2*d^4-2*a*b*d^4+23*b^2*d^4+17*a*c*d^4-50*b*c*d^4-8*c^2*d^4-39*a*d^5+36*b*d^5-43*c*d^5-39*d^6,c^6+20*a^3*d^3-41*a*b^2*d^3+39*b^3*d^3+26*a^2*c*d^3-8*a*b*c*d^3-49*b^2*c*d^3+25*a*c^2*d^3+32*b*c^2*d^3-32*c^3*d^3-2*a^2*d^4-38*a*b*d^4-38*b^2*d^4+17*a*c*d^4+22*b*c*d^4-36*c^2*d^4-41*a*d^5+37*b*d^5-49*c*d^5-19*d^6,b*c^5-36*a^3*d^3+32*a^2*b*d^3-14*a*b^2*d^3-31*b^3*d^3-2*a^2*c*d^3-8*a*b*c*d^3-39*b^2*c*d^3-46*a*c^2*d^3+10*b*c^2*d^3+27*c^3*d^3+25*a^2*d^4-30*a*b*d^4+3*b^2*d^4-36*a*c*d^4+44*b*c*d^4+17*c^2*d^4-46*a*d^5-37*b*d^5-2*c*d^5-47*d^6,a*c^5-49*a^3*d^3+11*a^2*b*d^3-21*a*b^2*d^3-14*b^3*d^3+26*a^2*c*d^3-a*b*c*d^3+24*b^2*c*d^3-46*a*c^2*d^3+23*b*c^2*d^3+33*c^3*d^3-11*a^2*d^4-a*b*d^4+49*b^2*d^4-17*a*c*d^4+49*b*c*d^4+36*c^2*d^4+10*a*d^5-19*b*d^5+26*c*d^5-32*d^6,b^2*c^4-14*a^3*d^3+9*a^2*b*d^3-5*a*b^2*d^3+17*b^3*d^3+2*a^2*c*d^3+12*a*b*c*d^3-37*b^2*c*d^3-43*a*c^2*d^3+5*b*c^2*d^3-9*c^3*d^3-27*a^2*d^4+14*a*b*d^4-19*b^2*d^4+29*a*c*d^4+32*b*c*d^4-15*c^2*d^4-26*a*d^5-31*b*d^5+46*c*d^5-22*d^6,a*b*c^4+33*a^3*d^3-22*a^2*b*d^3-14*a*b^2*d^3-30*b^3*d^3-48*a^2*c*d^3+34*a*b*c*d^3-8*b^2*c*d^3-44*a*c^2*d^3-4*b*c^2*d^3+3*c^3*d^3+26*a^2*d^4+4*a*b*d^4+7*b^2*d^4-28*a*c*d^4-22*b*c*d^4-35*c^2*d^4-50*a*d^5-43*b*d^5+46*c*d^5-49*d^6,a^2*c^4-9*a^3*d^3+3*a^2*b*d^3+34*a*b^2*d^3+4*b^3*d^3+5*a^2*c*d^3-17*a*b*c*d^3-48*b^2*c*d^3+10*a*c^2*d^3+2*b*c^2*d^3-12*c^3*d^3-7*a^2*d^4-6*a*b*d^4+37*b^2*d^4-16*a*c*d^4+47*b*c*d^4+6*c^2*d^4-35*a*d^5-45*b*d^5-12*c*d^5-30*d^6,b^3*c^3-21*a^3*d^3-6*a^2*b*d^3-26*a*b^2*d^3-22*b^3*d^3-29*a*b*c*d^3-26*b^2*c*d^3+50*a*c^2*d^3-41*b*c^2*d^3+22*c^3*d^3-41*a^2*d^4+25*a*b*d^4+16*b^2*d^4+11*a*c*d^4+34*b*c*d^4+19*c^2*d^4-38*a*d^5-8*b*d^5-42*c*d^5-6*d^6,a*b^2*c^3+3*a^3*d^3-45*a^2*b*d^3+39*a*b^2*d^3+22*b^3*d^3+48*a^2*c*d^3-7*a*b*c*d^3-46*b^2*c*d^3-22*a*c^2*d^3-17*b*c^2*d^3-27*c^3*d^3-35*a^2*d^4+47*a*b*d^4+6*b^2*d^4-5*a*c*d^4-30*b*c*d^4+25*c^2*d^4-10*a*d^5+46*b*d^5+5*c*d^5-18*d^6,a^2*b*c^3-36*a^3*d^3+33*a^2*b*d^3+47*a*b^2*d^3-16*b^3*d^3-41*a^2*c*d^3+42*a*b*c*d^3-29*b^2*c*d^3+39*a*c^2*d^3-12*b*c^2*d^3-25*c^3*d^3-11*a^2*d^4-37*a*b*d^4+29*b^2*d^4-18*a*c*d^4+43*b*c*d^4+12*c^2*d^4-37*a*d^5+7*b*d^5+7*c*d^5-5*d^6,a^3*c^3+25*a^3*d^3+34*a^2*b*d^3+29*a*b^2*d^3-34*b^3*d^3-46*a^2*c*d^3-17*a*b*c*d^3+49*b^2*c*d^3-35*a*c^2*d^3-21*b*c^2*d^3-45*c^3*d^3+43*a^2*d^4+29*a*b*d^4+36*b^2*d^4+37*a*c*d^4+12*b*c*d^4-17*c^2*d^4+12*a*d^5+47*c*d^5-23*d^6,b^4*c^2-10*a^3*d^3+38*a^2*b*d^3+33*a*b^2*d^3+9*b^3*d^3-25*a^2*c*d^3+38*a*b*c*d^3-19*b^2*c*d^3-33*a*c^2*d^3-49*b*c^2*d^3-16*c^3*d^3-14*a^2*d^4-3*a*b*d^4-30*b^2*d^4-32*a*c*d^4+28*b*c*d^4-3*c^2*d^4-16*a*d^5+31*b*d^5-49*c*d^5-3*d^6,a*b^3*c^2+25*a^3*d^3-47*a^2*b*d^3+47*b^3*d^3+13*a^2*c*d^3-17*a*b*c*d^3+26*b^2*c*d^3-43*a*c^2*d^3+39*b*c^2*d^3-4*c^3*d^3+20*a^2*d^4+6*a*b*d^4+49*b^2*d^4+14*a*c*d^4-17*b*c*d^4+38*c^2*d^4+21*a*d^5-9*b*d^5-26*c*d^5+47*d^6,a^2*b^2*c^2+12*a^3*d^3+10*a^2*b*d^3-40*a*b^2*d^3+14*b^3*d^3+36*a^2*c*d^3-9*a*b*c*d^3+9*b^2*c*d^3+7*a*c^2*d^3+12*b*c^2*d^3-37*c^3*d^3-44*a^2*d^4-48*a*b*d^4+11*b^2*d^4-13*a*c*d^4+31*b*c*d^4+47*c^2*d^4+28*a*d^5+39*b*d^5+27*c*d^5-d^6,a^3*b*c^2-28*a^3*d^3-22*a^2*b*d^3-8*a*b^2*d^3+40*b^3*d^3-13*a^2*c*d^3+35*a*b*c*d^3-4*b^2*c*d^3+28*a*c^2*d^3+30*b*c^2*d^3-13*c^3*d^3+16*a^2*d^4+48*a*b*d^4-42*b^2*d^4+10*a*c*d^4-b*c*d^4+37*c^2*d^4-17*a*d^5-15*b*d^5+40*c*d^5+27*d^6,a^4*c^2+17*a^3*d^3+45*a^2*b*d^3+42*a*b^2*d^3-20*b^3*d^3-39*a^2*c*d^3-20*a*b*c*d^3-44*b^2*c*d^3+33*a*c^2*d^3+39*b*c^2*d^3-37*c^3*d^3+39*a^2*d^4+39*a*b*d^4-44*b^2*d^4+8*a*c*d^4-34*b*c*d^4+36*c^2*d^4-47*a*d^5+38*b*d^5-46*c*d^5+23*d^6,b^5*c+24*a^3*d^3+17*a^2*b*d^3-22*a*b^2*d^3-27*b^3*d^3+27*a^2*c*d^3+48*a*b*c*d^3+4*b^2*c*d^3+a*c^2*d^3-21*b*c^2*d^3-14*c^3*d^3+3*a^2*d^4+15*a*b*d^4+41*b^2*d^4-27*a*c*d^4+4*b*c*d^4+3*c^2*d^4-46*a*d^5+28*b*d^5+6*c*d^5+36*d^6,a*b^4*c-29*a^3*d^3+30*a^2*b*d^3+31*a*b^2*d^3+44*b^3*d^3-12*a^2*c*d^3-27*a*b*c*d^3+48*b^2*c*d^3+4*a*c^2*d^3+2*b*c^2*d^3-17*c^3*d^3-7*a^2*d^4+25*a*b*d^4-45*b^2*d^4-17*a*c*d^4-14*b*c*d^4-11*c^2*d^4-45*a*d^5-36*b*d^5-12*c*d^5-44*d^6,a^2*b^3*c-10*a^3*d^3-30*a^2*b*d^3-22*a*b^2*d^3-35*b^3*d^3+37*a^2*c*d^3-35*a*b*c*d^3-12*b^2*c*d^3-16*b*c^2*d^3+49*c^3*d^3+38*a^2*d^4-21*a*b*d^4-20*b^2*d^4-6*a*c*d^4+41*b*c*d^4+49*c^2*d^4+13*a*d^5-38*b*d^5-32*c*d^5-12*d^6,a^3*b^2*c+5*a^2*b*d^3-40*a*b^2*d^3+14*b^3*d^3-4*a^2*c*d^3-13*a*b*c*d^3+47*b^2*c*d^3+28*a*c^2*d^3+15*b*c^2*d^3+47*c^3*d^3-8*a^2*d^4-20*a*b*d^4+3*b^2*d^4+42*a*c*d^4+18*b*c*d^4-23*c^2*d^4-48*a*d^5+12*b*d^5-25*c*d^5-39*d^6,a^4*b*c+29*a^3*d^3+21*a^2*b*d^3-32*a*b^2*d^3+48*b^3*d^3-44*a^2*c*d^3-3*a*b*c*d^3-27*b^2*c*d^3+27*a*c^2*d^3+43*b*c^2*d^3-30*c^3*d^3+4*a^2*d^4+16*a*b*d^4+33*b^2*d^4+37*a*c*d^4-32*b*c*d^4+14*c^2*d^4+50*a*d^5-49*c*d^5-33*d^6,a^5*c-26*a^3*d^3-50*a^2*b*d^3+2*a*b^2*d^3+3*b^3*d^3-15*a^2*c*d^3-32*a*b*c*d^3-4*b^2*c*d^3-13*a*c^2*d^3-13*b*c^2*d^3+3*c^3*d^3+32*a^2*d^4-32*a*b*d^4-47*b^2*d^4-39*a*c*d^4-34*b*c*d^4-9*c^2*d^4-7*a*d^5-22*b*d^5+16*c*d^5+44*d^6,b^6+45*a^3*d^3-42*a^2*b*d^3-35*a*b^2*d^3+13*b^3*d^3+28*a^2*c*d^3-2*a*b*c*d^3-37*b^2*c*d^3-9*a*c^2*d^3+44*b*c^2*d^3-24*c^3*d^3+36*a^2*d^4+42*a*b*d^4-38*b^2*d^4-34*a*c*d^4-46*b*c*d^4+23*c^2*d^4-9*a*d^5-28*b*d^5+37*c*d^5+26*d^6,a*b^5-14*a^3*d^3+38*a^2*b*d^3-37*a*b^2*d^3-33*b^3*d^3-24*a^2*c*d^3+15*a*b*c*d^3+44*b^2*c*d^3-45*a*c^2*d^3+3*b*c^2*d^3-41*c^3*d^3-48*a^2*d^4-36*a*b*d^4+39*b^2*d^4+46*a*c*d^4-3*b*c*d^4+21*c^2*d^4-36*a*d^5-20*b*d^5+24*c*d^5-33*d^6,a^2*b^4-27*a^3*d^3-10*a^2*b*d^3-5*a*b^2*d^3+8*b^3*d^3+21*a^2*c*d^3+31*a*b*c*d^3-44*b^2*c*d^3+41*a*c^2*d^3+17*b*c^2*d^3-8*c^3*d^3+19*a^2*d^4+25*a*b*d^4+b^2*d^4+3*a*c*d^4+2*b*c*d^4-40*c^2*d^4+31*a*d^5-19*b*d^5+35*c*d^5-28*d^6,a^3*b^3-12*a^3*d^3-25*a^2*b*d^3+37*a*b^2*d^3-37*b^3*d^3+46*a^2*c*d^3+43*a*b*c*d^3+b^2*c*d^3-41*a*c^2*d^3-38*b*c^2*d^3-36*c^3*d^3-11*a*b*d^4+20*b^2*d^4-a*c*d^4-26*b*c*d^4+14*c^2*d^4-48*a*d^5+17*b*d^5+9*c*d^5+30*d^6,a^4*b^2+36*a^3*d^3+9*a^2*b*d^3-31*b^3*d^3+50*a^2*c*d^3+41*a*b*c*d^3+40*b^2*c*d^3+48*a*c^2*d^3-41*b*c^2*d^3-17*c^3*d^3+33*a^2*d^4+47*a*b*d^4+22*b^2*d^4+2*a*c*d^4+23*b*c*d^4-47*c^2*d^4+34*a*d^5-15*b*d^5-33*c*d^5-38*d^6,a^5*b-12*a^3*d^3-38*a^2*b*d^3+46*a*b^2*d^3-32*b^3*d^3-41*a^2*c*d^3+14*a*b*c*d^3-34*b^2*c*d^3+7*a*c^2*d^3-6*b*c^2*d^3+31*c^3*d^3+30*a^2*d^4+12*a*b*d^4-17*b^2*d^4-7*a*c*d^4-45*b*c*d^4+10*c^2*d^4+29*a*d^5-28*b*d^5+34*c*d^5-15*d^6,a^6-33*a^3*d^3-45*a^2*b*d^3+19*a*b^2*d^3+39*b^3*d^3-5*a^2*c*d^3-46*a*b*c*d^3+9*b^2*c*d^3+15*a*c^2*d^3-21*b*c^2*d^3+46*c^3*d^3-39*a^2*d^4-9*a*b*d^4+50*b^2*d^4-45*a*c*d^4-39*b*c*d^4-18*c^2*d^4-4*a*d^5-19*b*d^5+12*c*d^5+39*d^6,d^7,c*d^6,b*d^6,a*d^6,c^2*d^5,b*c*d^5,a*c*d^5,b^2*d^5,a*b*d^5,a^2*d^5,c^3*d^4,b*c^2*d^4,a*c^2*d^4,b^2*c*d^4,a*b*c*d^4,a^2*c*d^4,b^3*d^4,a*b^2*d^4,a^2*b*d^4,a^3*d^4;
    3063 //  M;
    3064   TestSSresAttribs(M); 
    3065 
    3066   "AGR@101n3d010s010%3, a bit slower...";
    3067   M = a^2*b^5-50*a*b^6-26*a^6*c+15*a^5*b*c-42*a^4*b^2*c-2*a^3*b^3*c+40*a^2*b^4*c-20*a*b^5*c+11*b^6*c-17*a^5*c^2-4*a^4*b*c^2+13*a^3*b^2*c^2-7*a^2*b^3*c^2+13*a*b^4*c^2-46*b^5*c^2+38*a^4*c^3+32*a^3*b*c^3-49*a^2*b^2*c^3-41*a*b^3*c^3+9*b^4*c^3+17*a^3*c^4-23*a^2*b*c^4+46*a*b^2*c^4+9*b^3*c^4-20*a^2*c^5-34*a*b*c^5-46*b^2*c^5-3*a*c^6+11*b*c^6-22*a^6*d-5*a^5*b*d-21*a^4*b^2*d-43*a^3*b^3*d-29*a^2*b^4*d+43*a*b^5*d-2*b^6*d+24*a^5*c*d-9*a^4*b*c*d+3*a^3*b^2*c*d+20*a^2*b^3*c*d+47*a*b^4*c*d-41*b^5*c*d+11*a^4*c^2*d-14*a^3*b*c^2*d+13*a^2*b^2*c^2*d-19*a*b^3*c^2*d-12*b^4*c^2*d+41*a^3*c^3*d-49*a^2*b*c^3*d-10*a*b^2*c^3*d+19*b^3*c^3*d-13*a^2*c^4*d+10*a*b*c^4*d-49*b^2*c^4*d-3*a*c^5*d-10*b*c^5*d+31*c^6*d-16*a^5*d^2+24*a^4*b*d^2-43*a^3*b^2*d^2+36*a^2*b^3*d^2-36*a^4*c*d^2-36*a^3*b*c*d^2-16*a^2*b^2*c*d^2+35*a*b^3*c*d^2+29*b^4*c*d^2+40*a^3*c^2*d^2-24*a^2*b*c^2*d^2-24*a*b^2*c^2*d^2+7*b^3*c^2*d^2+28*a^2*c^3*d^2+49*a*b*c^3*d^2+49*b^2*c^3*d^2+7*a*c^4*d^2-9*b*c^4*d^2+21*c^5*d^2-28*a^4*d^3+24*a^3*b*d^3-24*a^2*b^2*d^3+23*a*b^3*d^3+24*b^4*d^3+24*a^3*c*d^3-25*a^2*b*c*d^3-9*a*b^2*c*d^3-43*b^3*c*d^3+15*a^2*c^2*d^3+49*a*b*c^2*d^3+24*b^2*c^2*d^3-20*a*c^3*d^3-30*b*c^3*d^3-20*c^4*d^3+13*a^3*d^4+34*a^2*b*d^4-45*a*b^2*d^4+9*b^3*d^4+9*a^2*c*d^4-31*a*b*c*d^4-6*b^2*c*d^4-16*a*c^2*d^4+9*b*c^2*d^4+24*c^3*d^4+38*a^2*d^5-23*a*b*d^5-35*b^2*d^5+22*a*c*d^5-22*b*c*d^5+46*c^2*d^5+12*a*d^6+21*b*d^6-23*c*d^6-2*d^7,a^3*b^4+34*a^6*c+14*a^5*b*c+34*a^4*b^2*c+43*a^3*b^3*c-26*a^2*b^4*c+13*a*b^5*c+10*b^6*c-43*a^5*c^2+50*a^4*b*c^2-23*a^3*b^2*c^2-a^2*b^3*c^2+39*a*b^4*c^2+50*b^5*c^2+16*a^4*c^3+31*a^3*b*c^3-49*a^2*b^2*c^3+26*a*b^3*c^3-b^4*c^3-5*a^3*c^4+3*a^2*b*c^4-26*a*b^2*c^4-b^3*c^4-24*a^2*c^5-39*a*b*c^5+50*b^2*c^5-13*a*c^6+10*b*c^6-39*a^6*d+35*a^5*b*d+44*a^4*b^2*d-39*a^3*b^3*d-26*a^2*b^4*d-47*a*b^5*d-42*b^6*d+34*a^5*c*d-43*a^4*b*c*d-39*a^3*b^2*c*d+41*a^2*b^3*c*d+32*a*b^4*c*d-10*b^5*c*d+43*a^4*c^2*d+12*a^3*b*c^2*d-43*a^2*b^2*c^2*d+23*a*b^3*c^2*d-46*b^4*c^2*d+12*a^3*c^3*d-10*a^2*b*c^3*d+13*a*b^2*c^3*d-15*b^3*c^3*d-a^2*c^4*d+17*a*b*c^4*d-47*b^2*c^4*d+49*a*c^5*d-31*b*c^5*d-22*c^6*d-28*a^5*d^2-39*a^4*b*d^2+33*a^3*b^2*d^2-40*a^2*b^3*d^2+31*a*b^4*d^2+5*b^5*d^2+42*a^4*c*d^2-a^3*b*c*d^2+37*a^2*b^2*c*d^2-13*a*b^3*c*d^2+b^4*c*d^2+35*a^3*c^2*d^2-9*a^2*b*c^2*d^2+46*a*b^2*c^2*d^2-2*b^3*c^2*d^2+15*a^2*c^3*d^2-48*a*b*c^3*d^2+38*b^2*c^3*d^2-37*a*c^4*d^2-40*b*c^4*d^2+25*c^5*d^2+5*a^4*d^3-4*a^3*b*d^3+30*a^2*b^2*d^3-42*a*b^3*d^3+11*b^4*d^3+10*a^3*c*d^3+34*a^2*b*c*d^3-48*a*b^2*c*d^3+17*b^3*c*d^3-33*a^2*c^2*d^3-12*a*b*c^2*d^3-44*b^2*c^2*d^3-6*a*c^3*d^3+6*b*c^3*d^3-45*c^4*d^3+6*a^3*d^4+8*a^2*b*d^4-22*a*b^2*d^4+23*b^3*d^4-22*a^2*c*d^4-38*a*b*c*d^4+44*b^2*c*d^4-13*a*c^2*d^4-50*b*c^2*d^4+30*c^3*d^4-6*a^2*d^5-46*a*b*d^5+17*b^2*d^5-23*a*c*d^5-10*b*c*d^5+32*c^2*d^5-47*a*d^6+2*b*d^6+20*c*d^6-46*d^7,a^4*b^3+30*a*b^6-49*a^6*c+18*a^5*b*c+37*a^4*b^2*c+44*a^3*b^3*c-27*a^2*b^4*c-a*b^5*c-35*b^6*c-20*a^5*c^2+32*a^4*b*c^2+28*a^3*b^2*c^2-13*a^2*b^3*c^2-32*a*b^4*c^2+27*b^5*c^2-4*a^4*c^3+25*a^3*b*c^3+22*a^2*b^2*c^3-23*a*b^3*c^3-47*b^4*c^3+41*a^3*c^4-25*a^2*b*c^4-34*a*b^2*c^4-47*b^3*c^4-33*a^2*c^5-43*a*b*c^5+27*b^2*c^5-31*a*c^6-35*b*c^6-49*a^6*d+30*a^5*b*d-4*a^4*b^2*d+11*a^3*b^3*d-12*a^2*b^4*d-38*a*b^5*d+45*b^6*d+5*a^5*c*d-45*a^4*b*c*d-42*a^3*b^2*c*d-11*a^2*b^3*c*d+21*a*b^4*c*d+18*b^5*c*d-50*a^4*c^2*d-25*a^3*b*c^2*d+35*a^2*b^2*c^2*d-a*b^3*c^2*d+30*b^4*c^2*d+28*a^3*c^3*d-46*a^2*b*c^3*d-4*a*b^2*c^3*d+32*b^3*c^3*d+21*a^2*c^4*d-34*a*b*c^4*d+27*b^2*c^4*d+11*a*c^5*d-45*b*c^5*d+4*c^6*d+2*a^5*d^2-43*a^4*b*d^2-36*a^3*b^2*d^2+14*a^2*b^3*d^2+35*a*b^4*d^2+8*b^5*d^2+34*a^4*c*d^2-12*a^3*b*c*d^2-a^2*b^2*c*d^2-5*a*b^3*c*d^2+43*b^4*c*d^2+45*a^3*c^2*d^2-34*a^2*b*c^2*d^2+26*a*b^2*c^2*d^2+10*b^3*c^2*d^2-19*a^2*c^3*d^2+5*a*b*c^3*d^2-47*b^2*c^3*d^2+40*a*c^4*d^2+8*b*c^4*d^2+30*c^5*d^2+42*a^4*d^3+27*a^3*b*d^3+31*a^2*b^2*d^3-6*a*b^3*d^3+36*b^4*d^3+37*a^2*b*c*d^3+34*a*b^2*c*d^3-13*b^3*c*d^3+a^2*c^2*d^3+29*a*b*c^2*d^3-b^2*c^2*d^3-11*a*c^3*d^3-21*b*c^3*d^3+32*c^4*d^3+9*a^3*d^4-21*a^2*b*d^4+26*a*b^2*d^4+43*b^3*d^4-42*a^2*c*d^4-2*a*b*c*d^4-34*b^2*c*d^4+10*a*c^2*d^4-26*b*c^2*d^4-50*c^3*d^4+23*a^2*d^5+49*a*b*d^5+28*b^2*d^5-48*a*c*d^5-18*b*c*d^5-2*c^2*d^5-2*a*d^6-30*b*d^6+36*c*d^6-21*d^7,a^5*b^2+9*a*b^6+6*a^6*c+34*a^5*b*c-14*a^4*b^2*c-43*a^3*b^3*c-27*a^2*b^4*c+14*a*b^5*c+9*b^6*c-28*a^5*c^2-10*a^4*b*c^2+39*a^3*b^2*c^2-49*a^2*b^3*c^2-38*a*b^4*c^2+45*b^5*c^2+4*a^4*c^3+5*a^3*b*c^3+15*a^2*b^2*c^3-11*a*b^3*c^3-11*b^4*c^3+24*a^3*c^4-32*a^2*b*c^4-2*a*b^2*c^4-11*b^3*c^4+32*a^2*c^5-38*a*b*c^5+45*b^2*c^5-4*a*c^6+9*b*c^6+23*a^6*d-13*a^5*b*d+8*a^4*b^2*d-46*a^3*b^3*d-9*a^2*b^4*d-8*a*b^5*d+17*b^6*d+a^5*c*d+5*a^4*b*c*d-50*a^3*b^2*c*d+22*a^2*b^3*c*d-34*a*b^4*c*d-49*b^5*c*d+44*a^4*c^2*d+41*a^3*b*c^2*d-44*a^2*b^2*c^2*d-49*a*b^3*c^2*d+37*b^4*c^2*d+45*a^3*c^3*d+12*a^2*b*c^3*d-23*a*b^2*c^3*d-32*b^3*c^3*d-14*a^2*c^4*d+5*a*b*c^4*d+48*b^2*c^4*d+5*a*c^5*d-20*b*c^5*d-c^6*d+5*a^5*d^2-45*a^4*b*d^2+42*a^3*b^2*d^2+50*a^2*b^3*d^2-8*a*b^4*d^2-49*b^5*d^2-35*a^4*c*d^2-25*a^3*b*c*d^2-4*a^2*b^2*c*d^2-26*a*b^3*c*d^2-28*b^4*c*d^2+46*a^3*c^2*d^2+22*a^2*b*c^2*d^2+43*a*b^2*c^2*d^2-4*b^3*c^2*d^2-25*a^2*c^3*d^2+31*a*b*c^3*d^2-31*b^2*c^3*d^2-30*a*c^4*d^2-18*b*c^4*d^2-12*c^5*d^2-33*a^4*d^3-48*a^3*b*d^3-36*a^2*b^2*d^3-6*a*b^3*d^3+8*b^4*d^3+3*a^3*c*d^3-43*a^2*b*c*d^3+34*a*b^2*c*d^3+19*b^3*c*d^3+19*a^2*c^2*d^3-49*a*b*c^2*d^3-2*b^2*c^2*d^3+12*a*c^3*d^3-29*b*c^3*d^3-16*c^4*d^3+27*a^3*d^4+22*a^2*b*d^4+22*a*b^2*d^4-12*b^3*d^4+34*a^2*c*d^4+8*a*b*c*d^4+50*b^2*c*d^4+40*a*c^2*d^4+27*b*c^2*d^4-35*c^3*d^4-30*a^2*d^5+24*a*b*d^5+7*b^2*d^5+16*a*c*d^5+17*b*c*d^5-40*c^2*d^5-47*a*d^6-12*b*d^6+16*c*d^6+6*d^7,a^6*b-45*a*b^6-30*a^6*c-5*a^5*b*c-39*a^4*b^2*c-37*a^3*b^3*c+a^2*b^4*c-14*a*b^5*c-37*b^6*c+49*a^5*c^2+28*a^4*b*c^2+7*a^3*b^2*c^2-10*a^2*b^3*c^2+10*a*b^4*c^2+17*b^5*c^2-34*a^4*c^3+24*a^3*b*c^3-36*a^2*b^2*c^3-13*a*b^3*c^3+34*b^4*c^3-20*a^3*c^4-38*a^2*b*c^4+32*a*b^2*c^4+34*b^3*c^4-13*a^2*c^5+44*a*b*c^5+17*b^2*c^5+20*a*c^6-37*b*c^6+10*a^6*d+26*a^5*b*d+15*a^4*b^2*d+23*a^3*b^3*d+16*a^2*b^4*d+48*a*b^5*d-30*b^6*d-9*a^5*c*d-20*a^4*b*c*d+49*a^3*b^2*c*d-48*a^2*b^3*c*d-36*a*b^4*c*d-21*b^5*c*d+9*a^4*c^2*d-24*a^3*b*c^2*d+42*a^2*b^2*c^2*d+26*a*b^3*c^2*d-46*b^4*c^2*d-50*a^3*c^3*d-11*a^2*b*c^3*d-34*a*b^2*c^3*d+32*b^3*c^3*d-16*a^2*c^4*d-25*a*b*c^4*d+6*b^2*c^4*d+18*a*c^5*d-40*b*c^5*d+41*c^6*d-8*a^5*d^2-27*a^4*b*d^2-48*a^3*b^2*d^2-a^2*b^3*d^2+50*a*b^4*d^2+21*b^5*d^2-48*a^4*c*d^2+4*a^3*b*c*d^2-28*a^2*b^2*c*d^2-4*a*b^3*c*d^2+16*b^4*c*d^2+50*a^3*c^2*d^2+40*a^2*b*c^2*d^2+35*a*b^2*c^2*d^2+29*b^3*c^2*d^2-34*a^2*c^3*d^2-21*a*b*c^3*d^2-b^2*c^3*d^2-9*a*c^4*d^2-29*b*c^4*d^2+6*c^5*d^2+16*a^4*d^3-34*a^3*b*d^3+3*a^2*b^2*d^3+21*a*b^3*d^3+39*b^4*d^3+21*a^3*c*d^3-44*a^2*b*c*d^3-16*a*b^2*c*d^3+b^3*c*d^3-38*a^2*c^2*d^3+18*a*b*c^2*d^3+37*b^2*c^2*d^3-46*a*c^3*d^3+25*b*c^3*d^3-50*c^4*d^3-8*a^3*d^4-24*a^2*b*d^4-2*a*b^2*d^4+6*b^3*d^4+9*a^2*c*d^4+12*a*b*c*d^4+33*b^2*c*d^4-44*a*c^2*d^4+23*b*c^2*d^4-4*c^3*d^4-9*a^2*d^5-2*a*b*d^5-14*b^2*d^5+21*a*c*d^5-16*b*c*d^5-19*c^2*d^5+17*a*d^6-20*b*d^6+11*c*d^6-41*d^7,a^7-10*a*b^6-6*a^6*c-48*a^5*b*c-14*a^4*b^2*c-16*a^3*b^3*c-4*a^2*b^4*c+24*a*b^5*c-10*b^6*c-2*a^5*c^2+23*a^3*b^2*c^2+26*a^2*b^3*c^2+22*a*b^4*c^2-50*b^5*c^2+14*a^4*c^3-7*a^3*b*c^3+a^2*b^2*c^3-49*a*b^3*c^3+b^4*c^3-46*a^3*c^4+9*a^2*b*c^4+10*a*b^2*c^4+b^3*c^4+38*a^2*c^5-26*a*b*c^5-50*b^2*c^5+28*a*c^6-10*b*c^6-7*a^6*d+24*a^5*b*d-8*a^4*b^2*d+23*a^3*b^3*d+9*a^2*b^4*d+28*a*b^5*d-23*b^6*d-42*a^4*b*c*d+24*a^3*b^2*c*d-30*a^2*b^3*c*d-42*a*b^4*c*d-43*b^5*c*d-42*a^4*c^2*d+11*a^3*b*c^2*d+9*a^2*b^2*c^2*d-8*a*b^3*c^2*d+4*b^4*c^2*d+10*a^3*c^3*d+43*a^2*b*c^3*d+3*a*b^2*c^3*d-14*b^3*c^3*d-5*a^2*c^4*d+25*a*b*c^4*d-50*b^2*c^4*d-17*a*c^5*d+35*b*c^5*d+47*c^6*d-4*a^5*d^2-43*a^4*b*d^2+35*a^3*b^2*d^2+19*a^2*b^3*d^2+48*a*b^4*d^2+45*b^5*d^2+3*a^4*c*d^2-46*a^3*b*c*d^2+8*a^2*b^2*c*d^2-35*a*b^3*c*d^2-27*b^4*c*d^2-49*a^3*c^2*d^2+37*a^2*b*c^2*d^2-43*a*b^2*c^2*d^2+32*b^3*c^2*d^2+48*a^2*c^3*d^2+9*a*b*c^3*d^2+b^2*c^3*d^2-31*a*c^4*d^2-23*b*c^4*d^2-21*c^5*d^2+34*a^4*d^3+38*a^3*b*d^3+41*a^2*b^2*d^3-24*a*b^3*d^3+28*b^4*d^3+47*a^3*c*d^3-6*a^2*b*c*d^3+27*a*b^2*c*d^3-43*b^3*c*d^3-24*a^2*c^2*d^3-19*a*b*c^2*d^3-50*b^2*c^2*d^3+31*a*c^3*d^3+40*b*c^3*d^3+19*c^4*d^3+4*a^3*d^4-36*a^2*b*d^4+43*a*b^2*d^4+27*b^3*d^4+49*a^2*c*d^4-27*a*b*c*d^4-39*b^2*c*d^4+46*a*c^2*d^4+40*b*c^2*d^4+5*c^3*d^4-12*a^2*d^5-5*a*b*d^5+16*b^2*d^5-26*a*c*d^5-31*b*c*d^5-38*c^2*d^5+17*a*d^6-11*b*d^6-7*c*d^6-39*d^7,b*c*d^6-21*c^2*d^6+36*a*d^7-34*b*d^7-40*c*d^7-11*d^8,a*c*d^6-24*c^2*d^6+5*a*d^7-7*b*d^7+21*c*d^7-43*d^8,b^2*d^6+20*c^2*d^6+6*a*d^7-30*b*d^7+25*c*d^7+4*d^8,a*b*d^6+23*c^2*d^6-43*a*d^7+47*b*d^7+42*c*d^7+29*d^8,a^2*d^6+49*c^2*d^6+6*a*d^7-35*b*d^7+19*c*d^7-11*d^8,c^3*d^5-38*c^2*d^6+47*a*d^7+35*b*d^7+46*c*d^7+21*d^8,b*c^2*d^5+41*c^2*d^6-8*a*d^7+8*b*d^7+46*c*d^7+42*d^8,a*c^2*d^5+44*c^2*d^6+10*a*d^7-36*b*d^7-21*c*d^7+28*d^8,b^2*c*d^5+9*c^2*d^6+35*a*d^7+20*b*d^7+49*c*d^7-47*d^8,a*b*c*d^5+44*c^2*d^6+24*a*d^7-12*b*d^7+24*c*d^7-5*d^8,a^2*c*d^5-9*c^2*d^6-34*a*d^7+27*b*d^7-49*c*d^7+d^8,b^3*d^5+21*c^2*d^6-37*a*d^7-13*b*d^7-48*c*d^7+25*d^8,a*b^2*d^5+4*c^2*d^6-8*a*d^7-42*b*d^7-31*c*d^7+21*d^8,a^2*b*d^5+26*c^2*d^6-47*a*d^7-37*b*d^7+24*c*d^7+6*d^8,a^3*d^5-32*c^2*d^6-31*a*d^7+26*b*d^7-35*c*d^7-39*d^8,c^4*d^4+25*c^2*d^6+35*a*d^7+24*b*d^7+32*c*d^7-46*d^8,b*c^3*d^4+10*c^2*d^6-9*a*d^7-27*b*d^7-17*c*d^7+11*d^8,a*c^3*d^4-41*c^2*d^6+5*a*d^7-18*b*d^7-43*c*d^7-25*d^8,b^2*c^2*d^4-9*c^2*d^6+15*a*d^7-7*b*d^7-27*c*d^7-40*d^8,a*b*c^2*d^4-4*c^2*d^6+25*a*d^7-9*b*d^7-41*c*d^7-11*d^8,a^2*c^2*d^4+15*c^2*d^6-5*a*d^7-34*b*d^7-11*c*d^7-29*d^8,b^3*c*d^4+49*c^2*d^6-24*a*d^7-8*b*d^7+7*c*d^7-46*d^8,a*b^2*c*d^4-20*c^2*d^6-4*a*d^7+32*b*d^7-42*c*d^7-d^8,a^2*b*c*d^4+15*c^2*d^6+31*a*d^7+16*b*d^7-25*c*d^7+29*d^8,a^3*c*d^4-48*c^2*d^6-36*a*d^7-10*b*d^7+4*c*d^7+27*d^8,b^4*d^4+26*c^2*d^6-25*a*d^7-3*b*d^7-45*c*d^7-26*d^8,a*b^3*d^4+c^2*d^6-21*a*d^7-13*b*d^7-20*c*d^7+16*d^8,a^2*b^2*d^4+22*c^2*d^6-27*a*d^7-23*b*d^7-5*c*d^7-27*d^8,a^3*b*d^4+2*c^2*d^6-29*a*d^7-6*b*d^7+26*c*d^7-46*d^8,a^4*d^4-40*c^2*d^6-9*a*d^7-24*b*d^7+2*c*d^7-37*d^8,c^5*d^3+14*c^2*d^6+40*a*d^7+21*b*d^7+50*c*d^7+31*d^8,b*c^4*d^3-21*c^2*d^6-2*a*d^7-9*b*d^7-28*c*d^7+20*d^8,a*c^4*d^3-39*c^2*d^6+38*a*d^7-24*b*d^7-42*c*d^7-30*d^8,b^2*c^3*d^3+19*c^2*d^6-50*a*d^7-33*b*d^7+16*c*d^7-45*d^8,a*b*c^3*d^3-6*c^2*d^6-38*a*d^7+35*b*d^7+32*c*d^7-12*d^8,a^2*c^3*d^3+44*c^2*d^6+35*a*d^7+42*b*d^7-10*c*d^7-48*d^8,b^3*c^2*d^3+33*c^2*d^6-7*a*d^7-41*b*d^7-3*c*d^7-33*d^8,a*b^2*c^2*d^3-21*c^2*d^6-22*a*d^7-23*b*d^7+24*c*d^7+47*d^8,a^2*b*c^2*d^3+c^2*d^6-32*a*d^7-34*b*d^7-42*c*d^7+7*d^8,a^3*c^2*d^3+6*c^2*d^6-31*a*d^7-26*b*d^7+19*c*d^7-49*d^8,b^4*c*d^3+6*c^2*d^6-24*a*d^7+10*b*d^7-18*c*d^7-4*d^8,a*b^3*c*d^3+46*c^2*d^6+41*a*d^7+7*b*d^7+8*c*d^7-28*d^8,a^2*b^2*c*d^3+33*c^2*d^6-15*a*d^7-11*b*d^7+38*c*d^7+14*d^8,a^3*b*c*d^3-29*c^2*d^6-4*a*d^7-32*b*d^7+13*c*d^7-3*d^8,a^4*c*d^3-34*c^2*d^6+5*a*d^7+29*b*d^7-15*c*d^7-48*d^8,b^5*d^3-42*c^2*d^6+33*a*d^7-49*b*d^7+33*c*d^7-43*d^8,a*b^4*d^3+25*c^2*d^6-11*a*d^7-16*b*d^7+32*c*d^7-2*d^8,a^2*b^3*d^3-36*c^2*d^6-47*a*d^7-16*b*d^7+19*c*d^7+9*d^8,a^3*b^2*d^3-30*c^2*d^6-21*a*d^7-6*b*d^7+16*c*d^7-14*d^8,a^4*b*d^3+47*c^2*d^6-16*a*d^7-13*b*d^7+21*c*d^7+30*d^8,a^5*d^3-2*c^2*d^6+40*a*d^7+34*b*d^7+14*c*d^7-50*d^8,c^6*d^2-4*c^2*d^6-41*a*d^7+46*b*d^7+17*c*d^7+19*d^8,b*c^5*d^2-49*c^2*d^6+5*a*d^7-31*b*d^7+30*c*d^7+28*d^8,a*c^5*d^2-12*c^2*d^6-23*a*d^7-39*b*d^7+6*c*d^7-27*d^8,b^2*c^4*d^2-12*c^2*d^6-30*a*d^7+13*b*d^7-42*c*d^7+38*d^8,a*b*c^4*d^2-31*c^2*d^6+5*a*d^7-41*b*d^7-24*c*d^7,a^2*c^4*d^2-c^2*d^6+4*a*d^7+21*b*d^7+19*c*d^7-34*d^8,b^3*c^3*d^2-50*c^2*d^6-11*a*d^7+24*b*d^7+24*c*d^7-44*d^8,a*b^2*c^3*d^2+2*c^2*d^6-42*a*d^7-17*b*d^7-33*c*d^7-10*d^8,a^2*b*c^3*d^2+20*c^2*d^6+29*a*d^7+35*b*d^7-31*c*d^7-35*d^8,a^3*c^3*d^2+35*c^2*d^6-13*a*d^7+20*b*d^7-15*c*d^7-45*d^8,b^4*c^2*d^2+c^2*d^6+36*a*d^7-42*b*d^7+32*c*d^7+16*d^8,a*b^3*c^2*d^2-9*c^2*d^6-43*a*d^7-5*b*d^7-17*c*d^7+50*d^8,a^2*b^2*c^2*d^2-36*c^2*d^6+31*a*d^7+4*b*d^7-26*c*d^7-11*d^8,a^3*b*c^2*d^2+15*c^2*d^6+40*a*d^7-18*b*d^7-31*c*d^7+43*d^8,a^4*c^2*d^2+41*c^2*d^6-49*a*d^7+37*b*d^7+47*c*d^7-48*d^8,b^5*c*d^2-49*c^2*d^6+15*a*d^7+48*b*d^7+22*c*d^7+38*d^8,a*b^4*c*d^2+12*c^2*d^6+16*a*d^7-22*b*d^7-c*d^7+29*d^8,a^2*b^3*c*d^2+31*c^2*d^6+19*a*d^7+45*b*d^7-6*c*d^7+42*d^8,a^3*b^2*c*d^2+29*c^2*d^6-39*a*d^7+25*b*d^7-48*c*d^7-d^8,a^4*b*c*d^2-31*c^2*d^6+24*a*d^7-2*b*d^7+36*c*d^7+37*d^8,a^5*c*d^2+33*c^2*d^6-46*a*d^7-41*b*d^7-29*c*d^7-12*d^8,b^6*d^2-39*c^2*d^6+35*a*d^7-8*b*d^7+35*c*d^7+47*d^8,a*b^5*d^2-38*c^2*d^6-11*a*d^7-37*b*d^7-7*c*d^7-5*d^8,a^2*b^4*d^2+29*c^2*d^6+36*a*d^7-29*b*d^7+20*c*d^7+39*d^8,a^3*b^3*d^2-44*c^2*d^6+43*a*d^7-50*b*d^7-24*c*d^7-16*d^8,a^4*b^2*d^2+20*c^2*d^6+33*a*d^7+6*b*d^7+47*c*d^7+40*d^8,a^5*b*d^2-10*c^2*d^6+25*a*d^7-8*b*d^7-14*c*d^7+16*d^8,a^6*d^2+48*c^2*d^6+14*a*d^7+32*b*d^7+17*c*d^7+13*d^8,c^7*d+38*c^2*d^6-39*a*d^7+22*b*d^7+15*c*d^7-d^8,b*c^6*d+9*c^2*d^6+37*a*d^7+12*b*d^7+27*c*d^7+3*d^8,a*c^6*d-5*c^2*d^6+34*a*d^7+15*b*d^7+2*c*d^7-21*d^8,b^2*c^5*d+35*c^2*d^6+27*a*d^7+13*b*d^7-39*c*d^7+8*d^8,a*b*c^5*d-34*c^2*d^6-18*a*d^7-21*b*d^7-31*c*d^7+46*d^8,a^2*c^5*d-16*c^2*d^6-6*a*d^7-18*b*d^7+3*c*d^7+47*d^8,b^3*c^4*d-46*c^2*d^6+4*a*d^7-38*b*d^7-29*c*d^7-4*d^8,a*b^2*c^4*d-35*c^2*d^6-14*a*d^7-32*b*d^7-40*c*d^7-35*d^8,a^2*b*c^4*d+23*c^2*d^6-44*a*d^7-3*b*d^7+4*c*d^7-4*d^8,a^3*c^4*d+24*c^2*d^6-7*a*d^7-44*b*d^7-16*c*d^7+10*d^8,b^4*c^3*d+43*c^2*d^6+12*a*d^7+43*b*d^7-49*c*d^7-23*d^8,a*b^3*c^3*d+22*c^2*d^6+6*a*d^7+2*b*d^7-9*c*d^7,a^2*b^2*c^3*d+4*c^2*d^6+21*a*d^7-24*b*d^7-26*c*d^7+33*d^8,a^3*b*c^3*d+13*c^2*d^6-18*a*d^7+31*b*d^7-28*c*d^7+2*d^8,a^4*c^3*d+10*c^2*d^6-14*a*d^7+30*b*d^7-40*c*d^7+33*d^8,b^5*c^2*d-35*c^2*d^6-33*a*d^7+7*b*d^7+13*c*d^7+26*d^8,a*b^4*c^2*d-49*c^2*d^6+9*a*d^7+20*b*d^7+11*c*d^7-32*d^8,a^2*b^3*c^2*d+33*c^2*d^6-43*a*d^7-27*b*d^7-31*c*d^7-41*d^8,a^3*b^2*c^2*d-6*c^2*d^6+23*a*d^7+20*b*d^7-8*c*d^7-6*d^8,a^4*b*c^2*d+10*c^2*d^6-24*a*d^7+30*b*d^7+42*c*d^7-23*d^8,a^5*c^2*d+12*c^2*d^6+20*a*d^7+24*b*d^7-9*c*d^7-9*d^8,b^6*c*d-12*c^2*d^6+36*a*d^7+4*b*d^7-12*c*d^7+26*d^8,a*b^5*c*d-19*c^2*d^6-39*a*d^7-26*b*d^7-4*c*d^7+10*d^8,a^2*b^4*c*d+38*c^2*d^6-6*a*d^7+6*b*d^7+41*c*d^7+49*d^8,a^3*b^3*c*d-34*c^2*d^6-42*a*d^7+22*b*d^7-26*c*d^7-13*d^8,a^4*b^2*c*d+14*c^2*d^6+40*a*d^7+39*b*d^7-34*d^8,a^5*b*c*d-8*c^2*d^6+45*a*d^7-35*b*d^7+48*c*d^7+47*d^8,a^6*c*d-6*c^2*d^6-24*a*d^7-2*b*d^7-9*c*d^7+7*d^8,b^7*d+34*c^2*d^6-14*a*d^7+46*b*d^7-50*c*d^7+26*d^8,a*b^6*d+6*c^2*d^6+23*a*d^7-27*b*d^7-25*c*d^7-2*d^8,c^8+43*c^2*d^6+11*b*d^7-39*c*d^7-30*d^8,b*c^7-44*c^2*d^6-4*a*d^7-10*b*d^7+31*c*d^7+42*d^8,a*c^7-6*a*d^7+31*b*d^7+37*c*d^7-41*d^8,b^2*c^6-11*c^2*d^6-35*a*d^7+32*b*d^7-25*c*d^7-21*d^8,a*b*c^6+2*c^2*d^6+43*a*d^7-48*b*d^7-49*c*d^7-19*d^8,a^2*c^6-20*c^2*d^6-11*a*d^7-35*b*d^7-33*c*d^7+28*d^8,b^3*c^5+4*c^2*d^6-7*a*d^7-21*b*d^7-14*c*d^7+48*d^8,a*b^2*c^5+17*c^2*d^6+45*a*d^7-32*b*d^7+29*c*d^7+38*d^8,a^2*b*c^5-13*c^2*d^6+46*a*d^7+4*b*d^7-18*c*d^7+19*d^8,a^3*c^5-23*c^2*d^6-a*d^7-3*b*d^7-15*c*d^7+19*d^8,b^4*c^4-50*c^2*d^6+39*a*d^7+49*b*d^7+47*c*d^7+7*d^8,a*b^3*c^4-33*c^2*d^6+10*a*d^7+32*b*d^7+21*c*d^7-39*d^8,a^2*b^2*c^4+23*c^2*d^6+27*a*d^7-17*b*d^7+29*c*d^7+9*d^8,a^3*b*c^4-47*c^2*d^6-43*a*d^7-47*b*d^7-34*c*d^7-23*d^8,a^4*c^4-6*c^2*d^6+7*a*d^7+38*b*d^7-27*c*d^7-9*d^8,b^5*c^3-47*c^2*d^6+18*a*d^7-44*b*d^7-4*c*d^7-18*d^8,a*b^4*c^3+30*c^2*d^6+36*a*d^7+25*b*d^7+42*c*d^7+d^8,a^2*b^3*c^3+10*c^2*d^6+31*a*d^7+45*b*d^7-44*c*d^7+37*d^8,a^3*b^2*c^3-41*c^2*d^6-15*a*d^7-34*b*d^7-22*c*d^7+28*d^8,a^4*b*c^3+19*c^2*d^6-23*a*d^7+18*b*d^7-13*c*d^7-48*d^8,a^5*c^3+16*c^2*d^6+22*a*d^7-31*b*d^7+33*c*d^7+15*d^8,b^6*c^2-42*c^2*d^6-10*a*d^7-16*b*d^7-46*c*d^7+42*d^8,a*b^5*c^2-23*c^2*d^6+34*a*d^7-37*b*d^7+2*c*d^7+10*d^8,a^2*b^4*c^2-45*c^2*d^6-5*a*d^7+43*b*d^7-18*c*d^7+7*d^8,a^3*b^3*c^2+36*c^2*d^6+19*a*d^7+21*b*d^7+46*c*d^7-24*d^8,a^4*b^2*c^2-17*c^2*d^6+30*a*d^7-39*b*d^7-39*c*d^7-24*d^8,a^5*b*c^2+10*c^2*d^6-24*a*d^7-36*b*d^7-14*c*d^7+26*d^8,a^6*c^2+47*c^2*d^6-41*a*d^7+32*b*d^7+6*c*d^7+42*d^8,b^7*c+44*c^2*d^6-6*a*d^7+5*b*d^7+20*c*d^7+50*d^8,a*b^6*c+29*c^2*d^6-16*a*d^7+45*b*d^7-3*c*d^7+14*d^8,b^8+48*c^2*d^6-40*a*d^7-44*b*d^7-10*c*d^7-23*d^8,a*b^7-32*c^2*d^6-41*a*d^7-11*b*d^7+50*c*d^7+13*d^8,d^9,c*d^8,b*d^8,a*d^8,c^2*d^7;
    3068 //  M;
    3069   TestSSresAttribs(M); 
    3070   kill AGR;
    3071 
    3072   ring AGR = (101), (a,b,c,d,e,f,g,h), dp; AGR;
    3073   "AGR@101n7d005s010%2_medium";
    3074   ideal M =
    3075 f*h-g*h,e*h-g*h,d*h-g*h,c*h-g*h,b*h-g*h,a*h-g*h,e*g+48*f*g-49*g*h,d*g+5*f*g-6*g*h,c*g+49*f*g-50*g*h,b*g-7*f*g+6*g*h,a*g-50*f*g+49*g*h,e*f-20*f*g+19*g*h,d*f+40*f*g-41*g*h,c*f-12*f*g+11*g*h,b*f+45*f*g-46*g*h,a*f+4*f*g-5*g*h,d*e-f*g,c*e-30*f*g+29*g*h,b*e-39*f*g+38*g*h,a*e+10*f*g-11*g*h,c*d-41*f*g+40*g*h,b*d-23*f*g+22*g*h,a*d-20*f*g+19*g*h,b*c+17*f*g-18*g*h,a*c+6*f*g-7*g*h,a*b+28*f*g-29*g*h,g^2*h-g*h^2,f^2*g-8*f*g^2+7*g*h^2,g*h^4+50*h^5,g^5+41*h^5,f*g^4-18*h^5,f^5+29*h^5,e^5+6*h^5,d^5-23*h^5,c^5-32*h^5,
    3076 b^5+17*h^5,a^5+17*h^5,h^6;
    3077 //  M;
    3078   TestSSresAttribs(M); 
    3079 // with tails:
    3080 // options:  1 1 0 :  Time:  3/10
    3081 // options:  1 1 1 :  Time:  2/6
    3082 
    3083   kill AGR;
    3084 
    3085 // from Andreas...tooo long!?
    3086 
    3087   ring AGR = (101), (a,b,c,d,e), dp; AGR;
    3088 
    3089   "AGR101n4d007s021%4... too hard?";
    3090  
    3091   ideal M = b^3*c*d-44*a*b*c^2*d-23*b^2*c^2*d-17*a*c^3*d+25*b*c^3*d-28*c^4*d+21*a^3*d^2+28*a^2*b*d^2+45*a*b^2*d^2-45*b^3*d^2+39*a^2*c*d^2+50*a*b*c*d^2-31*b^2*c*d^2+25*a*c^2*d^2-42*b*c^2*d^2-6*c^3*d^2+10*a^2*d^3-18*a*b*d^3-21*b^2*d^3-9*a*c*d^3+37*b*c*d^3-18*c^2*d^3+5*a*d^4+b*d^4-18*c*d^4+23*d^5-5*a^4*e+6*a^3*b*e-21*a^2*b^2*e-28*a*b^3*e+11*b^4*e+19*a^3*c*e+29*a^2*b*c*e-25*a*b^2*c*e-8*b^3*c*e+17*a^2*c^2*e+45*a*b*c^2*e-28*b^2*c^2*e+22*a*c^3*e+33*b*c^3*e+27*c^4*e-50*a^3*d*e+11*a^2*b*d*e-45*a*b^2*d*e-5*b^3*d*e-2*a^2*c*d*e-30*a*b*c*d*e-17*b^2*c*d*e-45*a*c^2*d*e+12*b*c^2*d*e-8*c^3*d*e+12*a^2*d^2*e+a*b*d^2*e-13*b^2*d^2*e-20*a*c*d^2*e+47*b*c*d^2*e-10*c^2*d^2*e+8*a*d^3*e+32*b*d^3*e-8*c*d^3*e+47*d^4*e+43*a^3*e^2+23*a^2*b*e^2+12*a*b^2*e^2+25*b^3*e^2-23*a^2*c*e^2-12*a*b*c*e^2+5*b^2*c*e^2-25*a*c^2*e^2-8*b*c^2*e^2-48*c^3*e^2+22*a^2*d*e^2+27*a*b*d*e^2-21*b^2*d*e^2+35*a*c*d*e^2-5*b*c*d*e^2+14*c^2*d*e^2+3*a*d^2*e^2-35*b*d^2*e^2+24*c*d^2*e^2-12*d^3*e^2-30*a^2*e^3+5*a*b*e^3-29*b^2*e^3-17*a*c*e^3-41*b*c*e^3-41*c^2*e^3-a*d*e^3-41*b*d*e^3+6*c*d*e^3+24*d^2*e^3+38*a*e^4+46*b*e^4+5*c*e^4-48*d*e^4-33*e^5,
    3092 a*b^2*c*d-8*a^2*c^2*d+35*a*b*c^2*d-9*b^2*c^2*d+41*a*c^3*d+11*b*c^3*d+36*c^4*d-36*a^3*d^2-11*a^2*b*d^2-45*a*b^2*d^2+20*b^3*d^2-38*a^2*c*d^2-21*a*b*c*d^2-26*b^2*c*d^2+26*a*c^2*d^2+45*b*c^2*d^2+2*c^3*d^2+35*a^2*d^3-15*a*b*d^3-30*b^2*d^3-37*a*c*d^3+3*b*c*d^3+29*c^2*d^3-39*a*d^4-13*b*d^4+42*c*d^4+50*d^5-47*a^4*e+a^3*b*e-10*a^2*b^2*e+10*a*b^3*e-19*b^4*e+47*a^3*c*e+29*a^2*b*c*e+33*a*b^2*c*e-7*b^3*c*e+29*a^2*c^2*e-2*b^2*c^2*e-19*a*c^3*e+16*b*c^3*e+44*c^4*e+47*a^3*d*e-14*a^2*b*d*e+48*a*b^2*d*e-21*b^3*d*e+13*a^2*c*d*e+4*a*b*c*d*e+20*b^2*c*d*e-3*a*c^2*d*e-34*b*c^2*d*e-2*c^3*d*e+10*a^2*d^2*e+38*a*b*d^2*e+18*b^2*d^2*e-a*c*d^2*e+24*b*c*d^2*e-11*c^2*d^2*e+24*a*d^3*e-10*b*d^3*e+15*c*d^3*e-44*d^4*e+6*a^3*e^2-7*a^2*b*e^2+30*a*b^2*e^2+25*b^3*e^2+40*a^2*c*e^2+33*a*b*c*e^2+26*b^2*c*e^2-2*a*c^2*e^2-2*b*c^2*e^2+32*c^3*e^2+31*a^2*d*e^2+50*a*b*d*e^2-5*b^2*d*e^2-43*a*c*d*e^2+37*b*c*d*e^2-16*c^2*d*e^2+39*a*d^2*e^2+15*b*d^2*e^2+35*c*d^2*e^2-47*d^3*e^2+38*a^2*e^3+7*a*b*e^3+16*b^2*e^3+43*a*c*e^3+23*b*c*e^3+9*c^2*e^3+37*a*d*e^3-18*b*d*e^3+32*c*d*e^3-2*d^2*e^3-31*a*e^4+18*b*e^4-35*c*e^4+9*d*e^4-49*e^5,
    3093 a^2*b*c*d+7*a^2*c^2*d-15*a*b*c^2*d+20*b^2*c^2*d+8*a*c^3*d-14*b*c^3*d+34*c^4*d+15*a^3*d^2+37*a^2*b*d^2-11*a*b^2*d^2-8*b^3*d^2-15*a^2*c*d^2-22*a*b*c*d^2-30*b^2*c*d^2+23*a*c^2*d^2+34*b*c^2*d^2+41*c^3*d^2-27*a^2*d^3+24*b^2*d^3-15*a*c*d^3+20*b*c*d^3-16*c^2*d^3-31*a*d^4+18*b*d^4-21*c*d^4+19*d^5+20*a^4*e+38*a^3*b*e-7*a^2*b^2*e+8*a*b^3*e-35*b^4*e+30*a^3*c*e-13*a^2*b*c*e+39*a*b^2*c*e-50*b^3*c*e+50*a^2*c^2*e-21*a*b*c^2*e+17*b^2*c^2*e-23*a*c^3*e+32*b*c^3*e-43*c^4*e-39*a^3*d*e+16*a^2*b*d*e+25*a*b^2*d*e-12*b^3*d*e+50*a^2*c*d*e+4*a*b*c*d*e-17*b^2*c*d*e-28*a*c^2*d*e-5*b*c^2*d*e+13*c^3*d*e+23*a^2*d^2*e+17*a*b*d^2*e+14*b^2*d^2*e-2*a*c*d^2*e+3*b*c*d^2*e+20*c^2*d^2*e-14*a*d^3*e+5*b*d^3*e-c*d^3*e+29*d^4*e-42*a^3*e^2-38*a^2*b*e^2-44*a*b^2*e^2-4*b^3*e^2+29*a^2*c*e^2-19*a*b*c*e^2+38*b^2*c*e^2+3*a*c^2*e^2-46*b*c^2*e^2-46*c^3*e^2-44*a^2*d*e^2+16*a*b*d*e^2-38*b^2*d*e^2+12*a*c*d*e^2+45*b*c*d*e^2-48*c^2*d*e^2+34*a*d^2*e^2+32*b*d^2*e^2+37*c*d^2*e^2+34*d^3*e^2+30*a^2*e^3+45*a*b*e^3+8*b^2*e^3+40*a*c*e^3-37*b*c*e^3-16*c^2*e^3-50*a*d*e^3-18*b*d*e^3-9*c*d*e^3-37*a*e^4-22*b*e^4+5*c*e^4+d*e^4+9*e^5,
    3094 a^3*c*d-44*a^2*c^2*d-38*a*b*c^2*d-26*b^2*c^2*d-12*a*c^3*d-21*b*c^3*d+43*c^4*d-22*a^3*d^2-23*a^2*b*d^2+32*a*b^2*d^2+45*b^3*d^2-48*a^2*c*d^2-40*a*b*c*d^2+3*b^2*c*d^2+2*a*c^2*d^2-27*b*c^2*d^2-35*c^3*d^2+33*a^2*d^3-11*a*b*d^3-5*b^2*d^3+8*a*c*d^3-42*b*c*d^3+41*c^2*d^3-41*b*d^4+29*c*d^4+5*d^5+32*a^4*e-46*a^3*b*e-46*a^2*b^2*e+19*a*b^3*e-14*b^4*e-24*a^3*c*e+3*a^2*b*c*e-22*a*b^2*c*e+49*b^3*c*e-47*a^2*c^2*e+27*a*b*c^2*e+48*b^2*c^2*e+20*a*c^3*e-3*b*c^3*e-11*c^4*e-21*a^3*d*e+a^2*b*d*e-13*a*b^2*d*e-33*b^3*d*e+13*a^2*c*d*e-3*a*b*c*d*e+15*b^2*c*d*e+35*a*c^2*d*e-20*b*c^2*d*e+45*c^3*d*e-14*a^2*d^2*e+11*a*b*d^2*e-38*b^2*d^2*e+40*a*c*d^2*e-30*b*c*d^2*e+14*c^2*d^2*e-26*a*d^3*e-43*b*d^3*e+38*c*d^3*e-24*d^4*e-10*a^3*e^2-31*a^2*b*e^2+a*b^2*e^2-34*b^3*e^2+5*a^2*c*e^2-12*a*b*c*e^2-6*b^2*c*e^2-30*a*c^2*e^2-b*c^2*e^2+31*c^3*e^2+22*a^2*d*e^2-26*a*b*d*e^2+9*b^2*d*e^2+32*a*c*d*e^2+24*b*c*d*e^2-36*c^2*d*e^2-a*d^2*e^2-14*b*d^2*e^2-24*c*d^2*e^2+7*d^3*e^2+38*a^2*e^3+35*a*b*e^3+16*b^2*e^3+25*a*c*e^3-30*b*c*e^3+30*c^2*e^3-25*a*d*e^3+3*b*d*e^3+40*c*d*e^3+16*d^2*e^3+45*a*e^4+15*b*e^4-12*c*e^4+42*d*e^4+7*e^5,
    3095 b^4*d+14*a^2*c^2*d+2*a*b*c^2*d+34*b^2*c^2*d-12*a*c^3*d+20*b*c^3*d-20*c^4*d+4*a^3*d^2-47*a^2*b*d^2-34*a*b^2*d^2-22*b^3*d^2+23*a^2*c*d^2-22*a*b*c*d^2-31*b^2*c*d^2-24*a*c^2*d^2+39*b*c^2*d^2-37*c^3*d^2-39*a^2*d^3-49*a*b*d^3-41*b^2*d^3-44*a*c*d^3+33*b*c*d^3-14*c^2*d^3-49*a*d^4+20*b*d^4+37*c*d^4+34*d^5+50*a^4*e-31*a^3*b*e-18*a^2*b^2*e-16*a*b^3*e+45*b^4*e+32*a^3*c*e+43*a^2*b*c*e-27*a*b^2*c*e+5*b^3*c*e+39*a^2*c^2*e+33*a*b*c^2*e-16*b^2*c^2*e-6*a*c^3*e-35*b*c^3*e-4*c^4*e-19*a^3*d*e+25*a^2*b*d*e-20*a*b^2*d*e+6*b^3*d*e-46*a^2*c*d*e-8*a*b*c*d*e+5*b^2*c*d*e+2*a*c^2*d*e-39*b*c^2*d*e-30*c^3*d*e+50*a^2*d^2*e-3*a*b*d^2*e-22*b^2*d^2*e+42*a*c*d^2*e-9*b*c*d^2*e+17*c^2*d^2*e+33*a*d^3*e+29*b*d^3*e-10*c*d^3*e+5*d^4*e+15*a^3*e^2+12*a^2*b*e^2-12*a*b^2*e^2+17*b^3*e^2+26*a^2*c*e^2+23*a*b*c*e^2+4*b^2*c*e^2-8*a*c^2*e^2+49*b*c^2*e^2-25*c^3*e^2-24*a^2*d*e^2-19*a*b*d*e^2+26*b^2*d*e^2+38*a*c*d*e^2+48*b*c*d*e^2-28*c^2*d*e^2-15*a*d^2*e^2+31*b*d^2*e^2-47*c*d^2*e^2-5*d^3*e^2-28*a^2*e^3+46*a*b*e^3-25*b^2*e^3-25*a*c*e^3-42*b*c*e^3-39*c^2*e^3-22*a*d*e^3+7*b*d*e^3+4*c*d*e^3-9*d^2*e^3+50*a*e^4-39*b*e^4+44*c*e^4+28*d*e^4+36*e^5,
    3096 a*b^3*d-32*a^2*c^2*d-43*a*b*c^2*d-38*b^2*c^2*d-33*a*c^3*d-34*b*c^3*d+15*c^4*d-10*a^3*d^2+20*a^2*b*d^2+23*a*b^2*d^2-6*b^3*d^2-46*a^2*c*d^2-29*a*b*c*d^2-20*b^2*c*d^2+17*a*c^2*d^2-42*b*c^2*d^2+27*c^3*d^2-15*a^2*d^3-27*a*b*d^3+43*b^2*d^3-a*c*d^3+45*b*c*d^3+7*c^2*d^3+4*a*d^4-5*b*d^4-13*c*d^4-26*d^5-24*a^4*e-5*a^2*b^2*e-27*a*b^3*e-23*b^4*e+9*a^3*c*e+33*a^2*b*c*e+25*a*b^2*c*e+39*b^3*c*e-30*a^2*c^2*e-33*a*b*c^2*e-37*b^2*c^2*e-13*a*c^3*e+49*b*c^3*e-30*c^4*e+8*a^3*d*e+20*a^2*b*d*e+18*a*b^2*d*e-34*b^3*d*e-19*a^2*c*d*e+39*a*b*c*d*e+21*b^2*c*d*e+12*a*c^2*d*e-15*b*c^2*d*e+39*c^3*d*e+34*a^2*d^2*e+49*a*b*d^2*e-10*b^2*d^2*e-46*a*c*d^2*e+18*b*c*d^2*e-6*c^2*d^2*e+9*a*d^3*e+30*b*d^3*e+20*c*d^3*e+3*d^4*e-15*a^3*e^2-18*a^2*b*e^2+5*a*b^2*e^2+14*b^3*e^2+19*a^2*c*e^2+30*a*b*c*e^2-b^2*c*e^2+33*a*c^2*e^2+41*b*c^2*e^2-7*c^3*e^2+12*a^2*d*e^2-13*a*b*d*e^2-3*b^2*d*e^2-49*a*c*d*e^2-17*b*c*d*e^2+29*c^2*d*e^2-19*a*d^2*e^2-38*b*d^2*e^2-10*c*d^2*e^2+50*d^3*e^2-17*a^2*e^3+47*a*b*e^3-7*b^2*e^3-25*a*c*e^3+29*b*c*e^3-41*c^2*e^3-35*a*d*e^3+b*d*e^3+32*c*d*e^3-15*d^2*e^3+9*a*e^4+22*c*e^4+12*d*e^4+36*e^5,
    3097 a^2*b^2*d-a^2*c^2*d-5*a*b*c^2*d+40*b^2*c^2*d+4*a*c^3*d+35*b*c^3*d+42*c^4*d-23*a^3*d^2-34*a^2*b*d^2+4*a*b^2*d^2+27*b^3*d^2+38*a^2*c*d^2-47*a*b*c*d^2+50*b^2*c*d^2+17*a*c^2*d^2+8*c^3*d^2+26*a^2*d^3-32*a*b*d^3+3*b^2*d^3+16*a*c*d^3-47*b*c*d^3-41*c^2*d^3-22*a*d^4-47*b*d^4-17*c*d^4-43*d^5-49*a^4*e+6*a^3*b*e-46*a^2*b^2*e+30*a*b^3*e-21*b^4*e+30*a^3*c*e+17*a^2*b*c*e+39*a*b^2*c*e+37*b^3*c*e+36*a^2*c^2*e+21*a*b*c^2*e-36*b^2*c^2*e-2*a*c^3*e+18*b*c^3*e-49*c^4*e-47*a^3*d*e+35*a^2*b*d*e+10*a*b^2*d*e+22*b^3*d*e-10*a^2*c*d*e-24*a*b*c*d*e-43*b^2*c*d*e-11*a*c^2*d*e+39*b*c^2*d*e+14*c^3*d*e-15*a^2*d^2*e+36*a*b*d^2*e+42*b^2*d^2*e+32*a*c*d^2*e+7*b*c*d^2*e-4*c^2*d^2*e-13*a*d^3*e+39*b*d^3*e+20*c*d^3*e+7*d^4*e+49*a^3*e^2+39*a^2*b*e^2-12*a*b^2*e^2+36*b^3*e^2+12*a^2*c*e^2-45*a*b*c*e^2+47*b^2*c*e^2+16*a*c^2*e^2+21*b*c^2*e^2+2*c^3*e^2+43*a^2*d*e^2+16*a*b*d*e^2+15*b^2*d*e^2+44*a*c*d*e^2+47*b*c*d*e^2+6*c^2*d*e^2+29*a*d^2*e^2-10*b*d^2*e^2-14*c*d^2*e^2+40*d^3*e^2+10*a^2*e^3-2*a*b*e^3-12*b^2*e^3-11*a*c*e^3+4*b*c*e^3+c^2*e^3-41*a*d*e^3-33*b*d*e^3+13*c*d*e^3+32*d^2*e^3-43*a*e^4+42*b*e^4-4*c*e^4-36*d*e^4,
    3098 a^3*b*d-15*a^2*c^2*d-32*a*b*c^2*d+24*b^2*c^2*d+48*a*c^3*d+6*b*c^3*d-40*a^3*d^2+34*a^2*b*d^2+29*a*b^2*d^2+18*b^3*d^2-17*a^2*c*d^2+34*a*b*c*d^2+5*b^2*c*d^2-31*a*c^2*d^2-29*b*c^2*d^2-12*c^3*d^2+11*a^2*d^3+8*a*b*d^3+3*b^2*d^3-33*a*c*d^3-34*b*c*d^3-12*c^2*d^3-48*a*d^4+18*b*d^4+41*c*d^4-45*d^5-22*a^4*e+a^3*b*e-25*a^2*b^2*e+3*a*b^3*e+49*b^4*e-27*a^3*c*e-42*a^2*b*c*e+2*a*b^2*c*e+3*b^3*c*e-40*a^2*c^2*e-30*a*b*c^2*e+2*b^2*c^2*e-14*a*c^3*e-6*b*c^3*e+22*c^4*e-16*a^3*d*e+32*a^2*b*d*e-2*a*b^2*d*e-27*b^3*d*e+16*a^2*c*d*e+42*a*b*c*d*e-6*b^2*c*d*e-46*a*c^2*d*e-9*b*c^2*d*e+31*c^3*d*e-23*a^2*d^2*e-a*b*d^2*e+22*b^2*d^2*e+29*a*c*d^2*e+22*b*c*d^2*e-28*c^2*d^2*e-32*a*d^3*e-10*b*d^3*e-10*c*d^3*e+19*d^4*e-41*a^3*e^2+27*a^2*b*e^2+44*a*b^2*e^2-32*b^3*e^2-24*a^2*c*e^2-6*a*b*c*e^2-25*b^2*c*e^2+29*a*c^2*e^2+19*b*c^2*e^2-47*c^3*e^2+20*a^2*d*e^2-3*a*b*d*e^2+43*b^2*d*e^2-14*a*c*d*e^2+2*b*c*d*e^2-37*c^2*d*e^2-24*a*d^2*e^2-19*b*d^2*e^2+30*c*d^2*e^2+29*d^3*e^2-a^2*e^3-6*a*b*e^3-18*b^2*e^3-48*a*c*e^3+13*b*c*e^3+40*c^2*e^3-48*a*d*e^3-45*b*d*e^3-23*c*d*e^3-6*d^2*e^3+4*a*e^4+12*b*e^4+36*c*e^4+32*d*e^4-20*e^5,
    3099 a^4*d+17*a^2*c^2*d-6*a*b*c^2*d-16*b^2*c^2*d-8*a*c^3*d+12*b*c^3*d+31*c^4*d-2*a^3*d^2+45*a^2*b*d^2+29*a*b^2*d^2-47*b^3*d^2+17*a^2*c*d^2-28*a*b*c*d^2-12*b^2*c*d^2-49*a*c^2*d^2-34*b*c^2*d^2-49*c^3*d^2-13*a^2*d^3+12*a*b*d^3-50*b^2*d^3-27*a*c*d^3+17*b*c*d^3+26*c^2*d^3-40*a*d^4+37*b*d^4+31*c*d^4+42*d^5-3*a^4*e+40*a^3*b*e+39*a^2*b^2*e-35*a*b^3*e+2*b^4*e-47*a^3*c*e-45*a^2*b*c*e-24*a*b^2*c*e-20*b^3*c*e+a^2*c^2*e-3*a*b*c^2*e+8*b^2*c^2*e-42*a*c^3*e-49*b*c^3*e-49*c^4*e+42*a^3*d*e+25*a^2*b*d*e+45*a*b^2*d*e+35*b^3*d*e+43*a^2*c*d*e-18*a*b*c*d*e+24*b^2*c*d*e-2*a*c^2*d*e-43*b*c^2*d*e+16*c^3*d*e-44*a^2*d^2*e+31*a*b*d^2*e+17*b^2*d^2*e-36*a*c*d^2*e+25*b*c*d^2*e-20*c^2*d^2*e+17*a*d^3*e-39*b*d^3*e-37*c*d^3*e+10*d^4*e-30*a^3*e^2+34*a^2*b*e^2-43*a*b^2*e^2-2*b^3*e^2-48*a^2*c*e^2+32*a*b*c*e^2+47*b^2*c*e^2+34*a*c^2*e^2-32*b*c^2*e^2+4*c^3*e^2-26*a^2*d*e^2+22*a*b*d*e^2+23*b^2*d*e^2-37*a*c*d*e^2+26*b*c*d*e^2-33*c^2*d*e^2-5*a*d^2*e^2+15*b*d^2*e^2+19*c*d^2*e^2-31*d^3*e^2+42*a^2*e^3+27*a*b*e^3+30*b^2*e^3+22*a*c*e^3-49*b*c*e^3-19*c^2*e^3+42*a*d*e^3+5*b*d*e^3+32*c*d*e^3+9*d^2*e^3-17*a*e^4-46*b*e^4+23*c*e^4-32*d*e^4-2*e^5,
    3100 c^5+40*a^2*c^2*d+34*a*b*c^2*d-16*b^2*c^2*d+9*a*c^3*d-13*b*c^3*d+30*c^4*d+18*a^3*d^2+27*a^2*b*d^2+37*a*b^2*d^2-30*b^3*d^2-38*a^2*c*d^2-40*a*b*c*d^2-10*b^2*c*d^2-28*a*c^2*d^2-26*b*c^2*d^2+15*c^3*d^2-7*a^2*d^3+2*a*b*d^3+28*b^2*d^3+27*a*c*d^3+11*b*c*d^3-9*c^2*d^3-18*a*d^4+39*b*d^4+8*c*d^4+20*d^5+34*a^4*e+27*a^3*b*e+10*a^2*b^2*e-10*a*b^3*e+15*b^4*e+a^3*c*e+16*a^2*b*c*e+47*a*b^2*c*e-50*b^3*c*e-45*a^2*c^2*e-47*a*b*c^2*e-38*b^2*c^2*e+49*a*c^3*e+11*b*c^3*e-8*c^4*e-24*a^3*d*e+41*a^2*b*d*e+31*a*b^2*d*e-31*b^3*d*e-44*a^2*c*d*e-a*b*c*d*e-15*b^2*c*d*e-27*a*c^2*d*e-50*b*c^2*d*e+29*c^3*d*e+30*a^2*d^2*e+41*a*b*d^2*e-31*b^2*d^2*e-40*a*c*d^2*e+14*b*c*d^2*e-18*c^2*d^2*e+4*a*d^3*e-27*b*d^3*e-36*c*d^3*e-26*d^4*e-2*a^3*e^2+39*a^2*b*e^2-17*a*b^2*e^2-b^3*e^2+24*a^2*c*e^2-6*a*b*c*e^2-12*b^2*c*e^2+38*a*c^2*e^2+6*b*c^2*e^2+38*c^3*e^2+15*a^2*d*e^2-2*a*b*d*e^2-22*b^2*d*e^2+30*a*c*d*e^2+50*b*c*d*e^2-37*c^2*d*e^2+2*a*d^2*e^2+27*b*d^2*e^2+2*c*d^2*e^2+19*d^3*e^2+48*a^2*e^3+24*a*b*e^3+49*b^2*e^3-35*a*c*e^3+49*b*c*e^3+2*c^2*e^3+20*a*d*e^3+34*b*d*e^3-50*c*d*e^3-41*d^2*e^3+48*a*e^4-24*b*e^4-14*c*e^4+32*d*e^4-11*e^5,
    3101 b*c^4+9*a^2*c^2*d-47*a*b*c^2*d-29*b^2*c^2*d+24*a*c^3*d-19*b*c^3*d-25*c^4*d+50*a^3*d^2-6*a^2*b*d^2-32*a*b^2*d^2-43*b^3*d^2+42*a^2*c*d^2-16*a*b*c*d^2-40*b^2*c*d^2+3*a*c^2*d^2+9*b*c^2*d^2+34*c^3*d^2-48*a^2*d^3-8*a*b*d^3-22*b^2*d^3+42*a*c*d^3+25*b*c*d^3-31*c^2*d^3-12*a*d^4+25*b*d^4+c*d^4+13*d^5-26*a^4*e+2*a^3*b*e-37*a^2*b^2*e+23*a*b^3*e+25*b^4*e+43*a^3*c*e-10*a^2*b*c*e+16*a*b^2*c*e-24*b^3*c*e+43*a^2*c^2*e-25*a*b*c^2*e+39*b^2*c^2*e+31*a*c^3*e-21*b*c^3*e+16*c^4*e+17*a^3*d*e-33*a^2*b*d*e+34*a*b^2*d*e-16*b^3*d*e+49*a^2*c*d*e+10*a*b*c*d*e-14*b^2*c*d*e+6*a*c^2*d*e+32*b*c^2*d*e-25*c^3*d*e-16*a^2*d^2*e-26*a*b*d^2*e+36*b^2*d^2*e+41*a*c*d^2*e-43*b*c*d^2*e-44*c^2*d^2*e+24*a*d^3*e+12*b*d^3*e-40*c*d^3*e+46*d^4*e-18*a^3*e^2+36*a^2*b*e^2-49*a*b^2*e^2+47*b^3*e^2-30*a^2*c*e^2+11*a*b*c*e^2-17*b^2*c*e^2-19*a*c^2*e^2-33*b*c^2*e^2+4*c^3*e^2-14*a^2*d*e^2-13*a*b*d*e^2-4*b^2*d*e^2-a*c*d*e^2+22*b*c*d*e^2-41*c^2*d*e^2+50*a*d^2*e^2+24*b*d^2*e^2-29*c*d^2*e^2-9*d^3*e^2+10*a^2*e^3+44*a*b*e^3+11*b^2*e^3+25*a*c*e^3+31*b*c*e^3+22*c^2*e^3+a*d*e^3-6*c*d*e^3+26*d^2*e^3-40*a*e^4+31*b*e^4-50*c*e^4+9*d*e^4+39*e^5,
    3102 a*c^4-47*a^2*c^2*d+40*a*b*c^2*d-8*b^2*c^2*d+3*a*c^3*d-3*b*c^3*d+38*c^4*d-13*a^3*d^2+3*a^2*b*d^2+19*a*b^2*d^2+24*b^3*d^2-27*a^2*c*d^2-12*a*b*c*d^2-45*b^2*c*d^2+28*a*c^2*d^2+35*b*c^2*d^2-28*c^3*d^2+7*a^2*d^3+3*a*b*d^3-34*b^2*d^3+15*a*c*d^3+36*b*c*d^3-18*c^2*d^3-49*a*d^4+44*b*d^4+c*d^4-10*d^5+31*a^4*e-18*a^3*b*e+7*a^2*b^2*e+38*a*b^3*e+37*b^4*e+18*a^3*c*e-50*a^2*b*c*e+12*a*b^2*c*e+43*b^3*c*e+33*a^2*c^2*e+13*a*b*c^2*e+13*b^2*c^2*e-4*a*c^3*e+13*b*c^3*e+20*c^4*e-32*a^3*d*e-36*a^2*b*d*e+47*a*b^2*d*e+43*b^3*d*e-13*a^2*c*d*e-27*a*b*c*d*e+7*b^2*c*d*e-40*a*c^2*d*e-30*b*c^2*d*e+21*c^3*d*e-18*a^2*d^2*e-32*a*b*d^2*e-20*b^2*d^2*e-47*a*c*d^2*e+34*b*c*d^2*e-3*c^2*d^2*e-22*a*d^3*e-29*b*d^3*e-47*c*d^3*e-33*d^4*e-3*a^3*e^2+46*a^2*b*e^2-42*a*b^2*e^2+6*b^3*e^2+16*a^2*c*e^2-9*a*b*c*e^2-35*b^2*c*e^2-24*b*c^2*e^2-5*c^3*e^2+18*a^2*d*e^2+43*a*b*d*e^2-43*b^2*d*e^2+6*a*c*d*e^2+8*b*c*d*e^2-33*c^2*d*e^2-26*a*d^2*e^2+31*b*d^2*e^2-29*c*d^2*e^2+d^3*e^2+45*a^2*e^3+45*a*b*e^3-31*b^2*e^3-26*a*c*e^3+35*b*c*e^3+30*c^2*e^3-33*a*d*e^3-4*b*d*e^3+34*c*d*e^3+21*d^2*e^3+41*a*e^4-14*b*e^4-32*c*e^4-19*d*e^4+29*e^5,
    3103 b^2*c^3+10*a^2*c^2*d+20*a*b*c^2*d+36*b^2*c^2*d-7*a*c^3*d+13*b*c^3*d+42*c^4*d-6*a^3*d^2+13*a^2*b*d^2+31*a*b^2*d^2-29*b^3*d^2+44*a^2*c*d^2-20*a*b*c*d^2+27*b^2*c*d^2+17*a*c^2*d^2-7*b*c^2*d^2-18*c^3*d^2-44*a^2*d^3-35*a*b*d^3-11*b^2*d^3-28*a*c*d^3+b*c*d^3+22*c^2*d^3-13*a*d^4-32*b*d^4-33*c*d^4-48*d^5-16*a^4*e+7*a^3*b*e-40*a^2*b^2*e-47*a*b^3*e+20*b^4*e-41*a^3*c*e+50*a^2*b*c*e-35*a*b^2*c*e+44*b^3*c*e-43*a^2*c^2*e+15*a*b*c^2*e-33*b^2*c^2*e-38*a*c^3*e-16*b*c^3*e+11*c^4*e+46*a^3*d*e+32*a^2*b*d*e+3*a*b^2*d*e+39*b^3*d*e-32*a^2*c*d*e-19*a*b*c*d*e+23*b^2*c*d*e-2*a*c^2*d*e-44*b*c^2*d*e-44*c^3*d*e+18*a^2*d^2*e+31*a*b*d^2*e+16*b^2*d^2*e+a*c*d^2*e+45*b*c*d^2*e-18*c^2*d^2*e+22*a*d^3*e+16*b*d^3*e+2*c*d^3*e+48*d^4*e-32*a^3*e^2+49*a^2*b*e^2-3*a*b^2*e^2+30*b^3*e^2+31*a^2*c*e^2+28*a*b*c*e^2-4*b^2*c*e^2+7*a*c^2*e^2+48*b*c^2*e^2+40*c^3*e^2-a^2*d*e^2+19*a*b*d*e^2+40*b^2*d*e^2-3*a*c*d*e^2+9*b*c*d*e^2+21*c^2*d*e^2+28*a*d^2*e^2+49*b*d^2*e^2+19*c*d^2*e^2+41*d^3*e^2-30*a^2*e^3-30*a*b*e^3+5*b^2*e^3-2*a*c*e^3+17*b*c*e^3-16*c^2*e^3+42*b*d*e^3-22*c*d*e^3+34*d^2*e^3+20*a*e^4+42*b*e^4+8*c*e^4+36*d*e^4-25*e^5,
    3104 a*b*c^3-48*a^2*c^2*d-19*a*b*c^2*d+46*b^2*c^2*d-49*a*c^3*d-43*b*c^3*d+c^4*d-12*a^3*d^2+28*a^2*b*d^2+11*a*b^2*d^2+13*b^3*d^2+36*a^2*c*d^2+20*a*b*c*d^2+8*b^2*c*d^2-5*a*c^2*d^2+44*b*c^2*d^2-50*c^3*d^2+34*a^2*d^3+a*b*d^3-25*b^2*d^3+5*a*c*d^3-47*b*c*d^3-4*c^2*d^3-33*a*d^4-29*b*d^4+34*c*d^4+d^5-15*a^4*e+50*a^3*b*e+14*a^2*b^2*e+15*a*b^3*e+34*b^4*e+9*a^3*c*e+38*a^2*b*c*e+12*a*b^2*c*e+21*b^3*c*e+18*a^2*c^2*e+37*a*b*c^2*e-16*b^2*c^2*e+13*a*c^3*e+47*b*c^3*e-41*c^4*e-29*a^3*d*e-45*a^2*b*d*e+3*a*b^2*d*e+44*b^3*d*e-31*a^2*c*d*e-8*a*b*c*d*e-5*b^2*c*d*e-22*a*c^2*d*e-6*b*c^2*d*e+3*c^3*d*e-43*a^2*d^2*e-45*a*b*d^2*e-24*b^2*d^2*e+15*a*c*d^2*e+15*b*c*d^2*e+7*c^2*d^2*e-17*a*d^3*e-8*b*d^3*e-31*c*d^3*e+19*d^4*e-41*a^3*e^2-25*a^2*b*e^2-11*a*b^2*e^2-4*b^3*e^2-25*a^2*c*e^2-32*a*b*c*e^2-42*b^2*c*e^2-46*a*c^2*e^2-41*b*c^2*e^2-36*c^3*e^2+40*a^2*d*e^2-43*a*b*d*e^2+35*b^2*d*e^2+2*a*c*d*e^2-28*b*c*d*e^2-43*c^2*d*e^2+21*a*d^2*e^2+8*b*d^2*e^2-42*c*d^2*e^2+50*d^3*e^2+48*a^2*e^3-25*a*b*e^3+22*b^2*e^3-3*a*c*e^3-42*b*c*e^3+22*c^2*e^3-5*a*d*e^3-35*b*d*e^3+36*c*d*e^3-34*d^2*e^3+14*a*e^4+34*b*e^4+23*c*e^4-35*d*e^4+46*e^5,
    3105 a^2*c^3-17*a^2*c^2*d-7*a*b*c^2*d+15*b^2*c^2*d+35*a*c^3*d-36*b*c^3*d-19*c^4*d+20*a^3*d^2-39*a^2*b*d^2-3*a*b^2*d^2-2*b^3*d^2+8*a^2*c*d^2+13*a*b*c*d^2-20*b^2*c*d^2+6*a*c^2*d^2-48*b*c^2*d^2-21*c^3*d^2+46*a^2*d^3+39*a*b*d^3+32*b^2*d^3-2*a*c*d^3+47*b*c*d^3+16*c^2*d^3+20*a*d^4-36*b*d^4-12*c*d^4+28*d^5+24*a^4*e+17*a^3*b*e-21*a^2*b^2*e+31*a*b^3*e+24*b^4*e-45*a^3*c*e+34*a^2*b*c*e+3*a*b^2*c*e+34*b^3*c*e+39*a^2*c^2*e+12*a*b*c^2*e+18*b^2*c^2*e+19*a*c^3*e-13*b*c^3*e+7*c^4*e+16*a^3*d*e-4*a^2*b*d*e+35*a*b^2*d*e+20*b^3*d*e+38*a^2*c*d*e-41*a*b*c*d*e+49*b^2*c*d*e+7*a*c^2*d*e+39*b*c^2*d*e+15*c^3*d*e+32*a^2*d^2*e+35*a*b*d^2*e-36*b^2*d^2*e+11*a*c*d^2*e+11*b*c*d^2*e-26*c^2*d^2*e+2*a*d^3*e-30*b*d^3*e-2*c*d^3*e+5*d^4*e-2*a^3*e^2-45*a^2*b*e^2-10*a*b^2*e^2-42*b^3*e^2+13*a^2*c*e^2+38*a*b*c*e^2+22*b^2*c*e^2+42*a*c^2*e^2+16*b*c^2*e^2+40*c^3*e^2-19*a^2*d*e^2-35*a*b*d*e^2-24*b^2*d*e^2+33*a*c*d*e^2-48*b*c*d*e^2-6*a*d^2*e^2+2*b*d^2*e^2-31*c*d^2*e^2-5*d^3*e^2+45*a^2*e^3+17*a*b*e^3+50*b^2*e^3-18*a*c*e^3+3*b*c*e^3+32*c^2*e^3+34*a*d*e^3-39*b*d*e^3-35*c*d*e^3+22*d^2*e^3-40*a*e^4+43*b*e^4+48*c*e^4-42*d*e^4+8*e^5,
    3106 b^3*c^2+2*a^2*c^2*d-42*a*b*c^2*d-42*b^2*c^2*d+22*a*c^3*d-28*b*c^3*d-24*c^4*d-24*a^3*d^2+40*a^2*b*d^2-7*a*b^2*d^2+31*b^3*d^2+13*a^2*c*d^2+33*a*b*c*d^2+6*b^2*c*d^2+40*a*c^2*d^2+37*b*c^2*d^2+40*c^3*d^2-12*a^2*d^3+26*a*b*d^3+23*b^2*d^3+44*a*c*d^3+13*b*c*d^3-24*c^2*d^3+31*a*d^4+44*b*d^4+32*c*d^4+48*d^5+42*a^4*e+2*a^3*b*e-25*a^2*b^2*e-27*a*b^3*e-21*b^4*e+44*a^3*c*e+50*a^2*b*c*e+42*a*b^2*c*e+28*b^3*c*e+28*a^2*c^2*e+20*a*b*c^2*e+11*b^2*c^2*e-25*a*c^3*e+35*b*c^3*e+11*c^4*e+13*a^3*d*e+13*a^2*b*d*e-33*a*b^2*d*e+26*b^3*d*e+10*a^2*c*d*e-47*a*b*c*d*e+44*b^2*c*d*e-50*a*c^2*d*e+6*b*c^2*d*e+38*c^3*d*e-43*a^2*d^2*e-43*a*b*d^2*e+50*b^2*d^2*e-36*a*c*d^2*e+39*b*c*d^2*e+4*c^2*d^2*e+26*a*d^3*e+6*b*d^3*e-30*c*d^3*e-21*d^4*e+16*a^3*e^2-19*a^2*b*e^2+43*a*b^2*e^2-b^3*e^2-9*a^2*c*e^2-3*a*b*c*e^2-44*b^2*c*e^2-34*a*c^2*e^2-24*b*c^2*e^2+15*c^3*e^2+47*a^2*d*e^2-45*a*b*d*e^2-22*b^2*d*e^2-21*a*c*d*e^2+36*b*c*d*e^2+c^2*d*e^2-13*a*d^2*e^2+47*b*d^2*e^2-12*c*d^2*e^2+16*d^3*e^2-30*a^2*e^3-49*a*b*e^3+40*b^2*e^3+46*a*c*e^3-25*b*c*e^3-38*c^2*e^3-30*a*d*e^3-27*b*d*e^3+47*c*d*e^3+37*d^2*e^3+49*a*e^4+6*b*e^4-6*c*e^4+43*d*e^4+5*e^5,
    3107 a*b^2*c^2-9*a^2*c^2*d+49*a*b*c^2*d+17*b^2*c^2*d-45*a*c^3*d+27*b*c^3*d-8*c^4*d-25*a^3*d^2-23*a^2*b*d^2+47*a*b^2*d^2+8*b^3*d^2+20*a^2*c*d^2+37*a*b*c*d^2+28*b^2*c*d^2+8*a*c^2*d^2+36*b*c^2*d^2+34*c^3*d^2+37*a^2*d^3+23*a*b*d^3+11*b^2*d^3-46*a*c*d^3+45*b*c*d^3-16*c^2*d^3-27*a*d^4-39*b*d^4+31*c*d^4-24*d^5+42*a^4*e-30*a^3*b*e+12*a^2*b^2*e-18*a*b^3*e+8*b^4*e-33*a^3*c*e+21*a^2*b*c*e-9*a*b^2*c*e+10*b^3*c*e+11*a^2*c^2*e-33*a*b*c^2*e-27*b^2*c^2*e+47*a*c^3*e-35*b*c^3*e+15*c^4*e-19*a^3*d*e+20*a^2*b*d*e+41*a*b^2*d*e+39*b^3*d*e+24*a^2*c*d*e-12*a*b*c*d*e-16*b^2*c*d*e+38*a*c^2*d*e-43*b*c^2*d*e+39*c^3*d*e-14*a^2*d^2*e+39*a*b*d^2*e+24*b^2*d^2*e-35*a*c*d^2*e-8*b*c*d^2*e-26*c^2*d^2*e-5*a*d^3*e+34*b*d^3*e+16*c*d^3*e+35*d^4*e-a^3*e^2+44*a^2*b*e^2+33*a*b^2*e^2+41*b^3*e^2+26*a^2*c*e^2-6*a*b*c*e^2-15*b^2*c*e^2-46*a*c^2*e^2-37*b*c^2*e^2-49*c^3*e^2-6*a^2*d*e^2+20*a*b*d*e^2-7*b^2*d*e^2+16*a*c*d*e^2+49*b*c*d*e^2-23*c^2*d*e^2+37*a*d^2*e^2+31*b*d^2*e^2+17*c*d^2*e^2-39*d^3*e^2-46*a^2*e^3-17*a*b*e^3+46*b^2*e^3-31*a*c*e^3+39*b*c*e^3-13*c^2*e^3+40*a*d*e^3+18*b*d*e^3+3*c*d*e^3-6*d^2*e^3-35*a*e^4+22*b*e^4-47*c*e^4-4*d*e^4+35*e^5,
    3108 a^2*b*c^2+25*a^2*c^2*d-27*a*b*c^2*d+43*b^2*c^2*d+3*a*c^3*d+35*b*c^3*d+39*c^4*d+12*a^3*d^2-39*a^2*b*d^2-38*a*b^2*d^2+8*b^3*d^2+14*a^2*c*d^2+42*a*b*c*d^2-16*b^2*c*d^2+32*a*c^2*d^2-26*b*c^2*d^2+31*c^3*d^2-34*a^2*d^3-4*a*b*d^3+40*b^2*d^3+34*a*c*d^3-31*b*c*d^3+11*c^2*d^3+9*a*d^4+27*b*d^4+19*c*d^4-44*d^5-45*a^4*e+43*a^3*b*e-36*a^2*b^2*e+23*a*b^3*e-14*b^4*e-2*a^3*c*e+20*a^2*b*c*e-34*a*b^2*c*e+26*b^3*c*e+2*a^2*c^2*e-32*a*b*c^2*e+35*b^2*c^2*e-44*a*c^3*e-47*b*c^3*e-6*c^4*e+4*a^3*d*e+34*a^2*b*d*e-38*a*b^2*d*e-21*b^3*d*e+45*a^2*c*d*e-25*a*b*c*d*e+30*b^2*c*d*e+43*a*c^2*d*e-2*b*c^2*d*e+17*c^3*d*e+30*a^2*d^2*e+48*a*b*d^2*e+5*b^2*d^2*e+31*a*c*d^2*e+46*b*c*d^2*e+42*c^2*d^2*e-39*a*d^3*e-30*b*d^3*e+34*c*d^3*e+37*d^4*e+45*a^3*e^2-37*a^2*b*e^2+16*a*b^2*e^2-12*b^3*e^2+21*a^2*c*e^2-36*a*b*c*e^2+45*b^2*c*e^2-39*a*c^2*e^2+8*c^3*e^2-47*a^2*d*e^2+38*a*b*d*e^2+48*b^2*d*e^2-30*a*c*d*e^2-40*b*c*d*e^2+34*c^2*d*e^2+42*a*d^2*e^2-38*b*d^2*e^2+24*c*d^2*e^2+37*d^3*e^2-26*a^2*e^3-50*a*b*e^3+10*b^2*e^3-29*a*c*e^3-48*b*c*e^3+8*c^2*e^3+26*a*d*e^3-26*b*d*e^3-44*c*d*e^3+30*d^2*e^3-31*a*e^4-21*b*e^4-44*c*e^4-17*d*e^4+26*e^5,
    3109 a^3*c^2+32*a^2*c^2*d+18*a*b*c^2*d+26*b^2*c^2*d-34*a*c^3*d+29*b*c^3*d+6*c^4*d-46*a^3*d^2-37*a^2*b*d^2-9*a*b^2*d^2+13*b^3*d^2-46*a^2*c*d^2-25*a*b*c*d^2-19*b^2*c*d^2-36*a*c^2*d^2-28*b*c^2*d^2+c^3*d^2-16*a^2*d^3-32*a*b*d^3-39*b^2*d^3-a*c*d^3-44*b*c*d^3-24*c^2*d^3+44*a*d^4-18*b*d^4-11*c*d^4+31*d^5-37*a^4*e+50*a^3*b*e-3*a^2*b^2*e+40*a*b^3*e-19*b^4*e+31*a^3*c*e+49*a^2*b*c*e+14*a*b^2*c*e+22*b^3*c*e-27*a^2*c^2*e-46*a*b*c^2*e+31*b^2*c^2*e+22*a*c^3*e+27*b*c^3*e+25*c^4*e+10*a^3*d*e-21*a^2*b*d*e-13*a*b^2*d*e-46*b^3*d*e-34*a^2*c*d*e+24*a*b*c*d*e-38*b^2*c*d*e-14*a*c^2*d*e+50*b*c^2*d*e+28*c^3*d*e+44*a^2*d^2*e+23*a*b*d^2*e-38*b^2*d^2*e-4*a*c*d^2*e-34*b*c*d^2*e-21*c^2*d^2*e+9*a*d^3*e-14*b*d^3*e-19*c*d^3*e+14*d^4*e+31*a^3*e^2-33*a^2*b*e^2-39*a*b^2*e^2+9*b^3*e^2+7*a^2*c*e^2+13*a*b*c*e^2-12*b^2*c*e^2+24*a*c^2*e^2+18*b*c^2*e^2+19*c^3*e^2+24*a^2*d*e^2-24*a*b*d*e^2-47*b^2*d*e^2-46*a*c*d*e^2+31*b*c*d*e^2+31*c^2*d*e^2-9*a*d^2*e^2+6*b*d^2*e^2+46*c*d^2*e^2+23*d^3*e^2-37*a^2*e^3+14*a*b*e^3-40*b^2*e^3+14*a*c*e^3-46*b*c*e^3-42*c^2*e^3+32*a*d*e^3+5*b*d*e^3-4*c*d*e^3-16*d^2*e^3-4*a*e^4+36*b*e^4+38*c*e^4+30*d*e^4-18*e^5,
    3110 b^4*c+25*a^2*c^2*d+37*a*b*c^2*d+12*b^2*c^2*d-31*b*c^3*d+40*c^4*d-49*a^3*d^2+8*a^2*b*d^2+36*a*b^2*d^2+48*b^3*d^2-15*a^2*c*d^2+20*a*b*c*d^2-13*b^2*c*d^2-2*a*c^2*d^2+11*b*c^2*d^2+46*c^3*d^2+49*a^2*d^3-3*a*b*d^3-31*b^2*d^3-11*a*c*d^3+4*b*c*d^3+7*c^2*d^3-27*b*d^4+c*d^4+43*d^5+41*a^4*e-28*a^3*b*e+37*a^2*b^2*e-18*a*b^3*e+20*b^4*e-3*a^3*c*e+42*a^2*b*c*e-26*a*b^2*c*e-36*b^3*c*e-32*a^2*c^2*e+33*a*b*c^2*e-18*b^2*c^2*e-45*a*c^3*e+22*b*c^3*e+22*c^4*e+28*a^3*d*e-17*a^2*b*d*e-37*a*b^2*d*e-11*b^3*d*e+44*a^2*c*d*e-21*a*b*c*d*e+27*b^2*c*d*e-16*a*c^2*d*e+45*b*c^2*d*e+37*c^3*d*e+13*a^2*d^2*e-24*a*b*d^2*e+46*b^2*d^2*e-18*a*c*d^2*e-24*b*c*d^2*e+10*c^2*d^2*e-22*a*d^3*e-19*b*d^3*e+26*c*d^3*e+24*d^4*e+50*a^3*e^2-21*a^2*b*e^2-31*a*b^2*e^2+12*b^3*e^2+18*a^2*c*e^2-9*a*b*c*e^2-3*b^2*c*e^2+49*a*c^2*e^2-22*b*c^2*e^2-7*c^3*e^2+34*a^2*d*e^2+14*a*b*d*e^2-10*b^2*d*e^2-21*a*c*d*e^2-49*b*c*d*e^2-32*c^2*d*e^2-31*a*d^2*e^2-37*b*d^2*e^2+17*c*d^2*e^2-2*d^3*e^2+23*a^2*e^3+38*a*b*e^3+16*b^2*e^3+7*a*c*e^3-6*b*c*e^3+7*c^2*e^3-35*a*d*e^3+46*b*d*e^3-2*c*d*e^3-47*d^2*e^3+15*a*e^4-22*b*e^4+25*c*e^4+12*d*e^4+36*e^5,
    3111 a*b^3*c+7*a^2*c^2*d-37*a*b*c^2*d-27*b^2*c^2*d-a*c^3*d-28*b*c^3*d+32*c^4*d-17*a^3*d^2+30*a^2*b*d^2+7*a*b^2*d^2-32*b^3*d^2-10*a^2*c*d^2+38*a*b*c*d^2-15*b^2*c*d^2+a*c^2*d^2-37*b*c^2*d^2-9*c^3*d^2-13*a^2*d^3+27*a*b*d^3-11*b^2*d^3+6*a*c*d^3+b*c*d^3-9*c^2*d^3+44*a*d^4+3*b*d^4-36*c*d^4+41*d^5-3*a^4*e+10*a^3*b*e-8*a*b^3*e-3*b^4*e-3*a^3*c*e+34*a^2*b*c*e+3*a*b^2*c*e+15*b^3*c*e-22*a^2*c^2*e-33*a*b*c^2*e-4*b^2*c^2*e+48*a*c^3*e+7*b*c^3*e-29*c^4*e+38*a^3*d*e+14*a^2*b*d*e-26*a*b^2*d*e+48*b^3*d*e-3*a^2*c*d*e-45*a*b*c*d*e+26*b^2*c*d*e+46*a*c^2*d*e+26*b*c^2*d*e+15*c^3*d*e+29*a^2*d^2*e+42*a*b*d^2*e+11*b^2*d^2*e+26*a*c*d^2*e+44*b*c*d^2*e-18*c^2*d^2*e-19*a*d^3*e+47*b*d^3*e+c*d^3*e+50*d^4*e+8*a^3*e^2-19*a^2*b*e^2+49*a*b^2*e^2+17*b^3*e^2-27*a^2*c*e^2+30*a*b*c*e^2+10*b^2*c*e^2+21*a*c^2*e^2+11*b*c^2*e^2+38*c^3*e^2+36*a^2*d*e^2-28*a*b*d*e^2+22*b^2*d*e^2-45*a*c*d*e^2-45*b*c*d*e^2+43*c^2*d*e^2-21*a*d^2*e^2+5*b*d^2*e^2-41*c*d^2*e^2+36*d^3*e^2-25*a^2*e^3-22*a*b*e^3-6*b^2*e^3+31*a*c*e^3+19*b*c*e^3-35*c^2*e^3+44*a*d*e^3+40*b*d*e^3-14*c*d*e^3+6*d^2*e^3+2*a*e^4-26*b*e^4+43*c*e^4+39*d*e^4+7*e^5,
    3112 a^2*b^2*c-22*a^2*c^2*d+2*a*b*c^2*d-39*b^2*c^2*d-32*a*c^3*d-39*b*c^3*d+32*c^4*d+47*a^3*d^2-9*a^2*b*d^2+36*a*b^2*d^2-22*b^3*d^2+a^2*c*d^2+7*a*b*c*d^2+21*b^2*c*d^2+35*a*c^2*d^2+31*b*c^2*d^2+38*c^3*d^2+4*a^2*d^3+50*a*b*d^3-10*b^2*d^3-7*a*c*d^3-8*b*c*d^3-23*c^2*d^3+18*a*d^4+13*b*d^4+5*c*d^4-6*d^5-41*a^4*e+50*a^3*b*e+3*a^2*b^2*e+20*a*b^3*e-26*b^4*e-22*a^3*c*e+9*a^2*b*c*e+5*a*b^2*c*e+38*b^3*c*e-16*a^2*c^2*e-35*a*b*c^2*e-17*b^2*c^2*e-4*a*c^3*e-32*b*c^3*e-19*c^4*e-21*a^3*d*e+23*a^2*b*d*e+37*a*b^2*d*e+48*b^3*d*e-2*a^2*c*d*e-48*a*b*c*d*e-44*b^2*c*d*e+4*a*c^2*d*e+9*b*c^2*d*e-33*c^3*d*e+30*a^2*d^2*e+25*a*b*d^2*e+34*b^2*d^2*e-39*a*c*d^2*e+27*b*c*d^2*e+25*c^2*d^2*e+3*a*d^3*e-50*b*d^3*e-49*c*d^3*e-9*d^4*e-39*a^3*e^2+10*a^2*b*e^2-33*a*b^2*e^2+36*b^3*e^2+20*a^2*c*e^2+43*a*b*c*e^2+7*b^2*c*e^2+36*a*c^2*e^2-39*b*c^2*e^2-33*c^3*e^2+14*a^2*d*e^2-46*a*b*d*e^2+8*b^2*d*e^2+23*a*c*d*e^2+30*b*c*d*e^2-8*c^2*d*e^2+28*a*d^2*e^2-5*b*d^2*e^2+25*c*d^2*e^2+17*d^3*e^2+28*a^2*e^3-38*a*b*e^3-46*b^2*e^3-27*a*c*e^3-5*b*c*e^3-20*c^2*e^3+2*a*d*e^3-4*b*d*e^3+15*c*d*e^3-36*d^2*e^3+41*a*e^4+6*b*e^4+20*c*e^4+8*d*e^4-2*e^5,
    3113 a^3*b*c+40*a^2*c^2*d-47*a*b*c^2*d-27*b^2*c^2*d+41*a*c^3*d-39*b*c^3*d-32*c^4*d+5*a^3*d^2-5*a^2*b*d^2-34*a*b^2*d^2-35*b^3*d^2+29*a^2*c*d^2+4*a*b*c*d^2-6*b^2*c*d^2+25*a*c^2*d^2+6*b*c^2*d^2-44*c^3*d^2-38*a^2*d^3-31*a*b*d^3+37*b^2*d^3-49*a*c*d^3-17*b*c*d^3+9*c^2*d^3+25*a*d^4+4*b*d^4-25*c*d^4-49*d^5-15*a^4*e-11*a^3*b*e+7*a^2*b^2*e+37*a*b^3*e-21*b^4*e+18*a^3*c*e+46*a^2*b*c*e+6*a*b^2*c*e+43*b^3*c*e-5*a^2*c^2*e+49*a*b*c^2*e+44*b^2*c^2*e-18*a*c^3*e+30*b*c^3*e+30*c^4*e+37*a^3*d*e-47*a^2*b*d*e+23*a*b^2*d*e-26*b^3*d*e-12*a^2*c*d*e+49*a*b*c*d*e+37*b^2*c*d*e+3*a*c^2*d*e-15*b*c^2*d*e+c^3*d*e-13*a^2*d^2*e+32*a*b*d^2*e-29*b^2*d^2*e-11*a*c*d^2*e-28*b*c*d^2*e+21*c^2*d^2*e-10*a*d^3*e-20*b*d^3*e-2*c*d^3*e-25*d^4*e-18*a^3*e^2-10*a^2*b*e^2-26*a*b^2*e^2+15*b^3*e^2-6*a^2*c*e^2+48*a*b*c*e^2-36*b^2*c*e^2-18*a*c^2*e^2+8*b*c^2*e^2+36*c^3*e^2+2*a^2*d*e^2+48*a*b*d*e^2-32*b^2*d*e^2+47*a*c*d*e^2+b*c*d*e^2-35*c^2*d*e^2+16*a*d^2*e^2-26*b*d^2*e^2+40*c*d^2*e^2+50*d^3*e^2+16*a^2*e^3+32*a*b*e^3-22*b^2*e^3-43*a*c*e^3+4*b*c*e^3-26*c^2*e^3-29*a*d*e^3+7*b*d*e^3+20*c*d*e^3+8*d^2*e^3-9*a*e^4-7*b*e^4+3*c*e^4+49*d*e^4-48*e^5,
    3114 a^4*c-40*a^2*c^2*d+21*a*b*c^2*d+43*b^2*c^2*d+31*a*c^3*d-4*b*c^3*d+49*c^4*d+24*a^3*d^2-14*a^2*b*d^2+3*a*b^2*d^2-6*b^3*d^2+27*a^2*c*d^2+24*a*b*c*d^2-47*b^2*c*d^2-16*a*c^2*d^2+21*b*c^2*d^2-33*c^3*d^2+39*a^2*d^3-34*a*b*d^3-7*b^2*d^3+3*a*c*d^3+30*b*c*d^3-10*c^2*d^3+17*a*d^4+28*b*d^4+16*c*d^4-19*d^5+16*a^4*e-14*a^3*b*e+19*a^2*b^2*e-12*a*b^3*e-41*b^4*e-28*a^3*c*e+13*a^2*b*c*e+35*a*b^2*c*e-35*b^3*c*e+37*a^2*c^2*e-7*a*b*c^2*e+33*b^2*c^2*e-30*a*c^3*e+36*b*c^3*e-26*c^4*e-27*a^3*d*e+28*a^2*b*d*e+2*a*b^2*d*e+22*b^3*d*e-9*a^2*c*d*e+39*a*b*c*d*e-11*b^2*c*d*e+48*a*c^2*d*e+b*c^2*d*e-25*c^3*d*e-28*a^2*d^2*e-38*a*b*d^2*e-13*b^2*d^2*e-12*a*c*d^2*e-35*b*c*d^2*e-45*c^2*d^2*e-27*a*d^3*e-31*b*d^3*e+20*c*d^3*e+40*d^4*e+11*a^3*e^2-33*a^2*b*e^2-3*a*b^2*e^2+32*b^3*e^2+10*a^2*c*e^2+48*a*b*c*e^2-50*b^2*c*e^2+2*a*c^2*e^2-46*b*c^2*e^2+15*c^3*e^2-15*a^2*d*e^2+29*a*b*d*e^2+4*b^2*d*e^2-16*a*c*d*e^2+34*b*c*d*e^2-21*c^2*d*e^2+44*a*d^2*e^2-35*b*d^2*e^2+4*c*d^2*e^2-16*d^3*e^2-14*a^2*e^3+39*a*b*e^3+44*b^2*e^3-22*a*c*e^3-16*b*c*e^3+38*c^2*e^3-a*d*e^3+14*b*d*e^3-44*c*d*e^3-31*d^2*e^3+4*a*e^4+33*c*e^4-5*d*e^4+46*e^5,
    3115 b^5-5*a^2*c^2*d-23*a*b*c^2*d+3*b^2*c^2*d-30*a*c^3*d-48*b*c^3*d-40*c^4*d-21*a^3*d^2-13*a^2*b*d^2+36*a*b^2*d^2-35*b^3*d^2-9*a^2*c*d^2+32*a*b*c*d^2-19*b^2*c*d^2+3*a*c^2*d^2-2*b*c^2*d^2+22*c^3*d^2-37*a^2*d^3+46*a*b*d^3-38*b^2*d^3-33*a*c*d^3-7*b*c*d^3+3*c^2*d^3-33*a*d^4+b*d^4+22*c*d^4+50*d^5-33*a^4*e+18*a^3*b*e+11*a^2*b^2*e-19*a*b^3*e+49*b^4*e+3*a^3*c*e-10*a^2*b*c*e-29*a*b^2*c*e-17*b^3*c*e-15*a^2*c^2*e+30*a*b*c^2*e+39*b^2*c^2*e+7*a*c^3*e-46*b*c^3*e+29*c^4*e-17*a^3*d*e+26*a^2*b*d*e+27*a*b^2*d*e-27*b^3*d*e-27*a^2*c*d*e-7*a*b*c*d*e-36*b^2*c*d*e+18*a*c^2*d*e-34*b*c^2*d*e+31*c^3*d*e+22*a^2*d^2*e-2*a*b*d^2*e+39*b^2*d^2*e+40*a*c*d^2*e+49*b*c*d^2*e-41*c^2*d^2*e-46*a*d^3*e-33*b*d^3*e-40*c*d^3*e+16*d^4*e-37*a^3*e^2-14*a^2*b*e^2-49*a*b^2*e^2+39*b^3*e^2-20*a^2*c*e^2-39*a*b*c*e^2+20*b^2*c*e^2+10*a*c^2*e^2+29*b*c^2*e^2+20*c^3*e^2-19*a^2*d*e^2+37*a*b*d*e^2+20*b^2*d*e^2+26*a*c*d*e^2-8*b*c*d*e^2+14*c^2*d*e^2+24*a*d^2*e^2-14*b*d^2*e^2-33*c*d^2*e^2-18*d^3*e^2-2*a^2*e^3-32*a*b*e^3-37*b^2*e^3+45*a*c*e^3-33*b*c*e^3+28*c^2*e^3-19*a*d*e^3-43*b*d*e^3-10*c*d*e^3+30*d^2*e^3+44*a*e^4+40*b*e^4-20*c*e^4-40*d*e^4-2*e^5,
    3116 a*b^4-14*a^2*c^2*d+14*b^2*c^2*d+36*a*c^3*d+7*b*c^3*d-14*c^4*d-11*a^3*d^2+40*a^2*b*d^2-29*a*b^2*d^2-45*b^3*d^2+23*a^2*c*d^2+8*a*b*c*d^2+28*b^2*c*d^2+42*a*c^2*d^2+14*b*c^2*d^2+42*c^3*d^2-36*a^2*d^3-4*a*b*d^3+6*a*c*d^3-18*b*c*d^3+40*c^2*d^3-47*a*d^4-19*b*d^4-16*c*d^4+31*d^5-15*a^4*e+46*a^3*b*e+13*a^2*b^2*e-18*a*b^3*e+9*b^4*e+50*a^3*c*e-10*a^2*b*c*e-12*a*b^2*c*e+44*b^3*c*e+7*a^2*c^2*e+39*a*b*c^2*e-36*b^2*c^2*e+29*a*c^3*e-37*b*c^3*e-28*c^4*e-43*a^3*d*e+50*a^2*b*d*e-16*a*b^2*d*e+17*b^3*d*e+23*a^2*c*d*e-14*a*b*c*d*e+10*b^2*c*d*e+18*a*c^2*d*e+40*b*c^2*d*e-30*c^3*d*e+44*a^2*d^2*e+26*a*b*d^2*e+17*b^2*d^2*e+9*a*c*d^2*e+37*b*c*d^2*e-38*c^2*d^2*e+46*a*d^3*e+15*b*d^3*e+33*c*d^3*e+20*d^4*e+4*a^3*e^2-43*a^2*b*e^2-14*a*b^2*e^2-29*b^3*e^2+44*a^2*c*e^2-37*a*b*c*e^2-2*b^2*c*e^2+39*a*c^2*e^2-36*b*c^2*e^2+45*c^3*e^2-34*a^2*d*e^2-48*a*b*d*e^2-25*b^2*d*e^2+48*a*c*d*e^2+5*b*c*d*e^2-16*c^2*d*e^2+20*a*d^2*e^2+8*b*d^2*e^2-48*c*d^2*e^2+27*d^3*e^2-39*a^2*e^3-23*a*b*e^3-45*b^2*e^3-34*a*c*e^3-50*b*c*e^3-42*c^2*e^3+50*a*d*e^3+26*b*d*e^3+48*c*d*e^3-37*d^2*e^3-20*a*e^4-19*b*e^4+23*c*e^4+23*d*e^4+12*e^5,
    3117 a^2*b^3-25*a^2*c^2*d+26*a*b*c^2*d+32*b^2*c^2*d-48*a*c^3*d-7*b*c^3*d-44*c^4*d+14*a^3*d^2+19*a^2*b*d^2-7*a*b^2*d^2-15*b^3*d^2+50*a^2*c*d^2-11*a*b*c*d^2-13*b^2*c*d^2-33*a*c^2*d^2-46*b*c^2*d^2+12*c^3*d^2-26*a^2*d^3-11*a*b*d^3+22*b^2*d^3+24*a*c*d^3-12*b*c*d^3-22*c^2*d^3+40*a*d^4-23*b*d^4-48*c*d^4-20*d^5+17*a^4*e-41*a^3*b*e-a^2*b^2*e-12*a*b^3*e-9*b^4*e-30*a^3*c*e+50*a^2*b*c*e+31*a*b^2*c*e+5*b^3*c*e+33*a^2*c^2*e+15*a*b*c^2*e-50*b^2*c^2*e+24*a*c^3*e-b*c^3*e-6*c^4*e-31*a^3*d*e-26*a^2*b*d*e+49*a*b^2*d*e-13*b^3*d*e+43*a^2*c*d*e-10*a*b*c*d*e+35*b^2*c*d*e+36*a*c^2*d*e-22*b*c^2*d*e+40*c^3*d*e-7*a^2*d^2*e+28*a*b*d^2*e-b^2*d^2*e+17*a*c*d^2*e+13*b*c*d^2*e+26*c^2*d^2*e+32*a*d^3*e+3*b*d^3*e+12*c*d^3*e+40*d^4*e-40*a^3*e^2+12*a^2*b*e^2+27*a*b^2*e^2-24*b^3*e^2+13*a^2*c*e^2-19*a*b*c*e^2-27*b^2*c*e^2-28*a*c^2*e^2+50*b*c^2*e^2-48*c^3*e^2-14*a^2*d*e^2+26*a*b*d*e^2+35*b^2*d*e^2-43*a*c*d*e^2+42*b*c*d*e^2+9*c^2*d*e^2-10*a*d^2*e^2+21*c*d^2*e^2-5*d^3*e^2-30*a^2*e^3+38*a*b*e^3-25*b^2*e^3-28*a*c*e^3+23*b*c*e^3+38*c^2*e^3-30*a*d*e^3-16*b*d*e^3-35*c*d*e^3+2*d^2*e^3+33*a*e^4+12*b*e^4-25*c*e^4+26*d*e^4-40*e^5,
    3118 a^3*b^2-40*a^2*c^2*d+50*a*b*c^2*d+25*b^2*c^2*d+46*a*c^3*d-45*b*c^3*d-6*c^4*d-24*a^3*d^2-9*a^2*b*d^2-15*a*b^2*d^2+5*b^3*d^2+36*a^2*c*d^2-19*a*b*c*d^2+19*b^2*c*d^2+17*a*c^2*d^2+12*b*c^2*d^2-25*c^3*d^2-33*a^2*d^3-27*a*b*d^3+42*b^2*d^3-4*a*c*d^3+33*b*c*d^3+32*c^2*d^3+10*a*d^4+47*c*d^4-3*d^5-23*a^4*e-45*a^3*b*e+41*a^2*b^2*e+47*a*b^3*e+15*b^4*e-2*a^3*c*e+12*a^2*b*c*e+13*a*b^2*c*e-45*b^3*c*e-28*a^2*c^2*e-3*a*b*c^2*e-37*b^2*c^2*e+39*a*c^3*e+37*c^4*e-12*a^3*d*e-48*a^2*b*d*e-5*a*b^2*d*e+47*b^3*d*e-41*a^2*c*d*e-36*a*b*c*d*e-37*b^2*c*d*e-a*c^2*d*e-38*b*c^2*d*e+17*c^3*d*e-29*a^2*d^2*e-3*a*b*d^2*e-23*b^2*d^2*e-19*a*c*d^2*e+43*b*c*d^2*e-48*c^2*d^2*e-46*a*d^3*e+48*b*d^3*e+40*c*d^3*e-15*d^4*e-23*a^3*e^2-22*a^2*b*e^2-50*a*b^2*e^2-33*b^3*e^2+27*a^2*c*e^2-46*a*b*c*e^2+29*b^2*c*e^2-14*a*c^2*e^2+9*b*c^2*e^2-43*c^3*e^2-19*a^2*d*e^2-38*a*b*d*e^2+12*b^2*d*e^2+18*a*c*d*e^2+20*b*c*d*e^2+3*c^2*d*e^2-9*a*d^2*e^2-27*b*d^2*e^2-6*c*d^2*e^2+38*d^3*e^2+43*a^2*e^3+43*a*b*e^3+3*b^2*e^3+10*a*c*e^3+8*b*c*e^3+13*c^2*e^3+37*a*d*e^3+b*d*e^3-21*c*d*e^3+27*d^2*e^3+26*a*e^4-29*b*e^4-39*c*e^4+29*d*e^4+21*e^5,
    3119 a^4*b-45*a^2*c^2*d-6*a*b*c^2*d-42*b^2*c^2*d-4*a*c^3*d-49*b*c^3*d+14*c^4*d+35*a^3*d^2-3*a^2*b*d^2+23*a*b^2*d^2+21*b^3*d^2-24*a^2*c*d^2-14*a*b*c*d^2+20*b^2*c*d^2-20*a*c^2*d^2+41*b*c^2*d^2-34*c^3*d^2-13*a^2*d^3-48*a*b*d^3-13*b^2*d^3+38*a*c*d^3+21*b*c*d^3+40*c^2*d^3-28*a*d^4-34*b*d^4+38*c*d^4-24*d^5-48*a^4*e-2*a^3*b*e-35*a^2*b^2*e+2*a*b^3*e-25*b^4*e+47*a^3*c*e-14*a^2*b*c*e+25*a*b^2*c*e-12*b^3*c*e-11*a^2*c^2*e+22*a*b*c^2*e+15*b^2*c^2*e+17*a*c^3*e+47*b*c^3*e-43*c^4*e+28*a^3*d*e+9*a^2*b*d*e+6*a*b^2*d*e+30*a^2*c*d*e+31*a*b*c*d*e-2*b^2*c*d*e-6*a*c^2*d*e-45*b*c^2*d*e-24*c^3*d*e-39*a^2*d^2*e-7*a*b*d^2*e-11*b^2*d^2*e+8*a*c*d^2*e-47*b*c*d^2*e+c^2*d^2*e+30*a*d^3*e-30*b*d^3*e-38*c*d^3*e-14*d^4*e-25*a^3*e^2-14*a^2*b*e^2+24*a*b^2*e^2-37*b^3*e^2-14*a^2*c*e^2+40*a*b*c*e^2+27*b^2*c*e^2+22*a*c^2*e^2-38*b*c^2*e^2+43*c^3*e^2-44*a^2*d*e^2+28*a*b*d*e^2-4*b^2*d*e^2-26*a*c*d*e^2+18*b*c*d*e^2+24*c^2*d*e^2-35*a*d^2*e^2+6*b*d^2*e^2+5*c*d^2*e^2-38*d^3*e^2-37*a^2*e^3+34*a*b*e^3-27*b^2*e^3-4*a*c*e^3-3*b*c*e^3-16*c^2*e^3+22*a*d*e^3-4*b*d*e^3-41*c*d*e^3+25*d^2*e^3-38*a*e^4+49*b*e^4+c*e^4+14*d*e^4+47*e^5,
    3120 a^5-45*a^2*c^2*d-14*a*b*c^2*d-47*b^2*c^2*d-8*a*c^3*d+13*b*c^3*d+50*c^4*d-34*a^3*d^2-5*a^2*b*d^2+36*a*b^2*d^2+11*b^3*d^2+41*a^2*c*d^2-32*a*b*c*d^2+41*b^2*c*d^2-40*a*c^2*d^2+14*b*c^2*d^2+5*c^3*d^2+25*a^2*d^3+10*a*b*d^3-24*b^2*d^3-33*b*c*d^3-21*c^2*d^3+a*d^4+44*b*d^4-46*c*d^4-23*d^5-13*a^4*e+13*a^3*b*e-49*a*b^3*e+18*b^4*e+2*a^3*c*e+15*a^2*b*c*e-14*a*b^2*c*e-38*b^3*c*e+34*a^2*c^2*e+42*a*b*c^2*e-42*b^2*c^2*e-36*a*c^3*e+35*b*c^3*e-11*c^4*e+20*a^3*d*e+41*a*b^2*d*e+40*b^3*d*e-39*a^2*c*d*e-35*a*b*c*d*e-7*b^2*c*d*e-34*a*c^2*d*e-35*b*c^2*d*e+45*c^3*d*e+17*a^2*d^2*e+39*a*b*d^2*e+5*b^2*d^2*e-35*a*c*d^2*e-26*b*c*d^2*e-47*c^2*d^2*e+5*a*d^3*e-2*b*d^3*e+44*c*d^3*e+9*d^4*e-12*a^3*e^2+49*a^2*b*e^2-2*a*b^2*e^2-11*b^3*e^2-49*a^2*c*e^2-16*a*b*c*e^2-34*b^2*c*e^2+19*a*c^2*e^2-24*b*c^2*e^2-33*c^3*e^2-39*a^2*d*e^2+2*a*b*d*e^2+46*b^2*d*e^2-17*a*c*d*e^2+47*b*c*d*e^2+39*c^2*d*e^2+13*a*d^2*e^2+50*b*d^2*e^2-11*c*d^2*e^2+3*d^3*e^2+22*a^2*e^3-50*a*b*e^3+30*b^2*e^3-22*a*c*e^3-29*b*c*e^3-40*c^2*e^3+34*a*d*e^3+15*b*d*e^3-17*c*d*e^3+43*d^2*e^3+46*a*e^4-19*b*e^4-46*c*e^4-39*d*e^4-e^5,
    3121 e^6, d*e^5, c*e^5, b*e^5, a*e^5, d^2*e^4, c*d*e^4, b*d*e^4, a*d*e^4, c^2*e^4,
    3122 b*c*e^4, a*c*e^4, b^2*e^4, a*b*e^4, a^2*e^4, d^3*e^3, c*d^2*e^3, b*d^2*e^3,
    3123 a*d^2*e^3, c^2*d*e^3, b*c*d*e^3, a*c*d*e^3, b^2*d*e^3, a*b*d*e^3, a^2*d*e^3,
    3124 c^3*e^3, b*c^2*e^3, a*c^2*e^3, b^2*c*e^3, a*b*c*e^3, a^2*c*e^3, b^3*e^3,
    3125 a*b^2*e^3, a^2*b*e^3, a^3*e^3, d^4*e^2, c*d^3*e^2, b*d^3*e^2, a*d^3*e^2,
    3126 c^2*d^2*e^2, b*c*d^2*e^2, a*c*d^2*e^2, b^2*d^2*e^2, a*b*d^2*e^2, a^2*d^2*e^2,
    3127 c^3*d*e^2, b*c^2*d*e^2, a*c^2*d*e^2, b^2*c*d*e^2, a*b*c*d*e^2, a^2*c*d*e^2,
    3128 b^3*d*e^2, a*b^2*d*e^2, a^2*b*d*e^2, a^3*d*e^2, c^4*e^2, b*c^3*e^2, a*c^3*e^2,
    3129 b^2*c^2*e^2, a*b*c^2*e^2;
    3130 //  M;
    3131   TestSSresAttribs(M); 
    3132 // with tails:
    3133 // options:  1 1 0 :  Time:  5/9/10 (35 without LCM)
    3134 // options:  1 1 1 :  Time:  6/8/25
    3135 
    3136   kill M;
    3137 
    3138 
    3139 
    3140   // too big?
    3141   // AGR101n4d008s020%1
    3142   ideal M =
    3143 c^5*d-49*a^4*d^2-36*a^3*b*d^2-a^2*b^2*d^2-26*a*b^3*d^2+2*b^4*d^2+8*a^3*c*d^2-46*a^2*b*c*d^2-43*a*b^2*c*d^2-46*b^3*c*d^2-3*a^2*c^2*d^2-43*a*b*c^2*d^2+49*b^2*c^2*d^2-10*a*c^3*d^2+35*b*c^3*d^2+20*c^4*d^2-42*a^3*d^3+45*a^2*b*d^3+32*a*b^2*d^3-45*b^3*d^3-27*a^2*c*d^3+13*a*b*c*d^3+25*b^2*c*d^3+8*a*c^2*d^3+9*b*c^2*d^3+9*c^3*d^3+45*a^2*d^4+30*a*b*d^4+39*b^2*d^4-23*a*c*d^4+2*b*c*d^4-16*c^2*d^4+32*a*d^5-34*b*d^5+39*c*d^5+12*d^6-29*a^5*e-23*a^4*b*e-29*a^3*b^2*e-a^2*b^3*e-20*a*b^4*e+42*b^5*e+20*a^4*c*e-27*a^3*b*c*e-5*a^2*b^2*c*e-14*b^4*c*e-27*a^3*c^2*e-7*a^2*b*c^2*e-25*a*b^2*c^2*e+14*b^3*c^2*e+19*a^2*c^3*e+43*a*b*c^3*e-31*b^2*c^3*e+37*a*c^4*e-34*b*c^4*e+44*c^5*e+21*a^4*d*e+22*a^3*b*d*e+14*a^2*b^2*d*e-35*a*b^3*d*e-29*b^4*d*e-9*a^3*c*d*e-41*a^2*b*c*d*e+28*a*b^2*c*d*e+35*b^3*c*d*e+48*a^2*c^2*d*e+26*a*b*c^2*d*e-47*b^2*c^2*d*e+18*a*c^3*d*e+8*b*c^3*d*e-46*c^4*d*e+50*a^3*d^2*e-46*a^2*b*d^2*e-41*a*b^2*d^2*e-44*b^3*d^2*e+7*a^2*c*d^2*e-a*b*c*d^2*e+38*b^2*c*d^2*e+33*a*c^2*d^2*e-24*b*c^2*d^2*e-7*c^3*d^2*e+27*a^2*d^3*e+19*a*b*d^3*e-14*b^2*d^3*e+9*a*c*d^3*e+3*b*c*d^3*e+34*c^2*d^3*e-49*a*d^4*e-2*b*d^4*e+9*c*d^4*e+17*d^5*e+12*a^4*e^2-17*a^3*b*e^2+16*a^2*b^2*e^2+2*a*b^3*e^2+25*b^4*e^2+49*a^3*c*e^2+10*a^2*b*c*e^2-43*a*b^2*c*e^2+5*b^3*c*e^2+4*a^2*c^2*e^2-44*a*b*c^2*e^2-25*b^2*c^2*e^2+15*a*c^3*e^2-44*b*c^3*e^2-17*c^4*e^2+17*a^3*d*e^2+40*a^2*b*d*e^2+3*a*b^2*d*e^2-25*b^3*d*e^2-47*a^2*c*d*e^2-45*a*b*c*d*e^2+9*b^2*c*d*e^2-41*a*c^2*d*e^2-36*b*c^2*d*e^2-17*c^3*d*e^2-15*a^2*d^2*e^2+49*a*b*d^2*e^2+13*b^2*d^2*e^2-39*a*c*d^2*e^2+36*b*c*d^2*e^2-32*c^2*d^2*e^2+23*a*d^3*e^2+14*b*d^3*e^2+10*c*d^3*e^2-d^4*e^2+24*a^3*e^3+27*a^2*b*e^3+31*a*b^2*e^3-45*b^3*e^3-50*a^2*c*e^3-a*b*c*e^3+43*b^2*c*e^3+46*a*c^2*e^3-25*b*c^2*e^3+2*c^3*e^3+44*a^2*d*e^3+43*a*b*d*e^3-30*b^2*d*e^3-18*a*c*d*e^3+44*b*c*d*e^3-34*c^2*d*e^3-49*a*d^2*e^3-18*b*d^2*e^3-21*c*d^2*e^3-43*d^3*e^3-26*a^2*e^4-18*a*b*e^4+6*b^2*e^4-48*a*c*e^4+6*b*c*e^4-16*c^2*e^4-2*a*d*e^4-21*b*d*e^4+5*c*d*e^4-18*d^2*e^4+33*a*e^5-23*b*e^5-48*c*e^5+37*d*e^5-44*e^6,
    3144 b*c^4*d-26*a^4*d^2-47*a^3*b*d^2+28*a^2*b^2*d^2+5*a*b^3*d^2+37*b^4*d^2-32*a^3*c*d^2+44*a^2*b*c*d^2+13*a*b^2*c*d^2-45*b^3*c*d^2+35*a^2*c^2*d^2-18*a*b*c^2*d^2-3*b^2*c^2*d^2-4*a*c^3*d^2-27*b*c^3*d^2-37*a^3*d^3-44*a^2*b*d^3-36*a*b^2*d^3+49*b^3*d^3-16*a^2*c*d^3+24*a*b*c*d^3+43*b^2*c*d^3-40*a*c^2*d^3-3*b*c^2*d^3-16*c^3*d^3+6*a^2*d^4+46*a*b*d^4+8*b^2*d^4-11*a*c*d^4-4*b*c*d^4-40*c^2*d^4-31*a*d^5-41*b*d^5-35*c*d^5-35*d^6+5*a^5*e-20*a^4*b*e+48*a^3*b^2*e-42*a^2*b^3*e+46*a*b^4*e-28*b^5*e+42*a^4*c*e+22*a^3*b*c*e+23*a^2*b^2*c*e-6*a*b^3*c*e-2*b^4*c*e+26*a^3*c^2*e+28*a^2*b*c^2*e+28*a*b^2*c^2*e-31*b^3*c^2*e-50*a^2*c^3*e+3*a*b*c^3*e+39*b^2*c^3*e-21*b*c^4*e+24*c^5*e-a^4*d*e+12*a^3*b*d*e+43*a^2*b^2*d*e+17*a*b^3*d*e-33*b^4*d*e-31*a^3*c*d*e+11*a^2*b*c*d*e-16*a*b^2*c*d*e-49*b^3*c*d*e+6*a^2*c^2*d*e+49*a*b*c^2*d*e-47*b^2*c^2*d*e-40*a*c^3*d*e-11*b*c^3*d*e-7*a^3*d^2*e+10*a^2*b*d^2*e-37*a*b^2*d^2*e+37*b^3*d^2*e+49*a^2*c*d^2*e+11*b^2*c*d^2*e-43*a*c^2*d^2*e+46*b*c^2*d^2*e-18*c^3*d^2*e+38*a^2*d^3*e+20*a*b*d^3*e-22*b^2*d^3*e-32*a*c*d^3*e+41*b*c*d^3*e+c^2*d^3*e+7*a*d^4*e+18*b*d^4*e-12*c*d^4*e-15*d^5*e+34*a^4*e^2-a^3*b*e^2+47*a^2*b^2*e^2+47*a*b^3*e^2-37*b^4*e^2-36*a^3*c*e^2-21*a^2*b*c*e^2-3*b^3*c*e^2-34*a^2*c^2*e^2-4*a*b*c^2*e^2+33*b^2*c^2*e^2+19*a*c^3*e^2+3*b*c^3*e^2-13*c^4*e^2-45*a^3*d*e^2+28*a^2*b*d*e^2-23*a*b^2*d*e^2+30*b^3*d*e^2+15*a^2*c*d*e^2+a*b*c*d*e^2-50*a*c^2*d*e^2-6*b*c^2*d*e^2+32*c^3*d*e^2+17*a^2*d^2*e^2-15*a*b*d^2*e^2+6*b^2*d^2*e^2+15*a*c*d^2*e^2-b*c*d^2*e^2+41*c^2*d^2*e^2-47*a*d^3*e^2+49*b*d^3*e^2-4*c*d^3*e^2-5*d^4*e^2+35*a^3*e^3+36*a^2*b*e^3+49*a*b^2*e^3+b^3*e^3-11*a^2*c*e^3+a*b*c*e^3+18*b^2*c*e^3+19*a*c^2*e^3+11*b*c^2*e^3-41*c^3*e^3-42*a^2*d*e^3+6*a*b*d*e^3-23*b^2*d*e^3+47*a*c*d*e^3+35*b*c*d*e^3+39*c^2*d*e^3-30*a*d^2*e^3-21*b*d^2*e^3-48*c*d^2*e^3-6*d^3*e^3+38*a^2*e^4-43*a*b*e^4-10*b^2*e^4-a*c*e^4+2*b*c*e^4-29*c^2*e^4+31*a*d*e^4+24*b*d*e^4+18*c*d*e^4+38*d^2*e^4+36*a*e^5-32*b*e^5-17*c*e^5+36*d*e^5+13*e^6,
    3145 a*c^4*d+8*a^4*d^2+41*a^3*b*d^2-36*a^2*b^2*d^2+7*a*b^3*d^2+35*b^4*d^2+19*a^3*c*d^2-31*a^2*b*c*d^2+23*a*b^2*c*d^2-18*b^3*c*d^2+14*a*b*c^2*d^2-8*b^2*c^2*d^2+31*a*c^3*d^2-46*b*c^3*d^2-29*c^4*d^2-42*a^3*d^3+46*a^2*b*d^3-24*a*b^2*d^3+46*b^3*d^3-18*a^2*c*d^3-49*a*b*c*d^3-6*b^2*c*d^3+20*a*c^2*d^3+17*b*c^2*d^3+38*c^3*d^3-36*a^2*d^4+16*a*b*d^4+23*b^2*d^4-34*a*c*d^4-9*b*c*d^4-18*c^2*d^4-18*a*d^5+26*b*d^5-9*c*d^5-3*d^6-17*a^5*e+32*a^4*b*e-23*a^3*b^2*e-4*a^2*b^3*e+42*a*b^4*e-43*b^5*e+28*a^4*c*e+5*a^3*b*c*e-14*a^2*b^2*c*e-43*a*b^3*c*e+41*b^4*c*e+2*a^3*c^2*e-27*a^2*b*c^2*e-35*a*b^2*c^2*e+2*b^3*c^2*e-42*a^2*c^3*e+47*a*b*c^3*e+50*b^2*c^3*e-a*c^4*e+10*b*c^4*e+47*c^5*e-23*a^4*d*e+25*a^3*b*d*e-41*a^2*b^2*d*e+32*a*b^3*d*e-35*b^4*d*e+14*a^3*c*d*e-25*a^2*b*c*d*e+47*a*b^2*c*d*e-32*b^3*c*d*e+50*a^2*c^2*d*e-30*a*b*c^2*d*e+39*b^2*c^2*d*e+30*a*c^3*d*e-33*b*c^3*d*e+37*c^4*d*e-21*a^3*d^2*e+34*a^2*b*d^2*e+7*a*b^2*d^2*e-43*b^3*d^2*e+13*a^2*c*d^2*e+32*a*b*c*d^2*e-35*b^2*c*d^2*e+18*a*c^2*d^2*e-2*b*c^2*d^2*e+9*c^3*d^2*e+13*a^2*d^3*e-32*a*b*d^3*e-9*b^2*d^3*e-35*a*c*d^3*e-14*b*c*d^3*e+9*c^2*d^3*e+19*a*d^4*e-50*b*d^4*e+28*c*d^4*e-40*d^5*e+17*a^4*e^2-44*a^3*b*e^2+30*a^2*b^2*e^2+41*a*b^3*e^2+20*b^4*e^2+21*a^3*c*e^2+48*a^2*b*c*e^2+15*a*b^2*c*e^2-40*b^3*c*e^2-6*a^2*c^2*e^2-29*a*b*c^2*e^2-42*b^2*c^2*e^2-40*a*c^3*e^2-48*b*c^3*e^2+36*c^4*e^2+38*a^3*d*e^2+19*a^2*b*d*e^2+41*a*b^2*d*e^2+34*b^3*d*e^2+20*a^2*c*d*e^2-23*a*b*c*d*e^2-2*b^2*c*d*e^2+36*a*c^2*d*e^2-37*b*c^2*d*e^2+9*c^3*d*e^2-47*a^2*d^2*e^2-35*a*b*d^2*e^2+13*b^2*d^2*e^2-20*a*c*d^2*e^2-45*b*c*d^2*e^2+17*c^2*d^2*e^2-32*a*d^3*e^2+13*b*d^3*e^2-4*c*d^3*e^2-26*d^4*e^2+32*a^3*e^3-25*a^2*b*e^3+30*a*b^2*e^3-12*b^3*e^3+28*a^2*c*e^3+41*a*b*c*e^3-49*b^2*c*e^3+35*a*c^2*e^3+38*b*c^2*e^3+49*c^3*e^3-9*a^2*d*e^3-31*a*b*d*e^3-6*b^2*d*e^3+29*a*c*d*e^3+13*b*c*d*e^3-14*c^2*d*e^3+36*a*d^2*e^3+33*b*d^2*e^3-46*c*d^2*e^3+50*d^3*e^3-47*a^2*e^4+5*a*b*e^4+36*b^2*e^4-5*a*c*e^4+4*b*c*e^4-20*c^2*e^4+29*a*d*e^4+25*b*d*e^4-24*c*d*e^4-10*d^2*e^4-2*a*e^5-29*b*e^5-34*c*e^5-d*e^5+e^6,
    3146 b^2*c^3*d-49*a^4*d^2+36*a^3*b*d^2-3*a^2*b^2*d^2+12*a*b^3*d^2+11*b^4*d^2+10*a^3*c*d^2+9*a^2*b*c*d^2-13*a*b^2*c*d^2+43*b^3*c*d^2-27*a^2*c^2*d^2-20*a*b*c^2*d^2+34*b^2*c^2*d^2-30*a*c^3*d^2-50*b*c^3*d^2+43*c^4*d^2+17*a^3*d^3+5*a^2*b*d^3+16*a*b^2*d^3+27*b^3*d^3-26*a^2*c*d^3+17*a*b*c*d^3-31*b^2*c*d^3-43*a*c^2*d^3-18*b*c^2*d^3-8*c^3*d^3-8*a^2*d^4+8*a*b*d^4+23*b^2*d^4+7*a*c*d^4-48*b*c*d^4+21*c^2*d^4+5*a*d^5+4*b*d^5+40*c*d^5-22*d^6+3*a^5*e-a^4*b*e+26*a^3*b^2*e+16*a^2*b^3*e-29*a*b^4*e-50*b^5*e-6*a^4*c*e+31*a^3*b*c*e+43*a^2*b^2*c*e+12*a*b^3*c*e+31*b^4*c*e-21*a^3*c^2*e+25*a^2*b*c^2*e+20*a*b^2*c^2*e+15*b^3*c^2*e-4*a^2*c^3*e-48*a*b*c^3*e-29*b^2*c^3*e+43*a*c^4*e-41*b*c^4*e-15*c^5*e-13*a^4*d*e-29*a^3*b*d*e+7*a^2*b^2*d*e+4*a*b^3*d*e-50*b^4*d*e+3*a^3*c*d*e+4*a^2*b*c*d*e+7*a*b^2*c*d*e+4*b^3*c*d*e+16*a^2*c^2*d*e-42*a*b*c^2*d*e+36*b^2*c^2*d*e-5*a*c^3*d*e+13*b*c^3*d*e+17*c^4*d*e+18*a^3*d^2*e-16*a^2*b*d^2*e-32*a*b^2*d^2*e-16*b^3*d^2*e-34*a^2*c*d^2*e-22*a*b*c*d^2*e-12*b^2*c*d^2*e+35*a*c^2*d^2*e+33*b*c^2*d^2*e-47*c^3*d^2*e+12*a^2*d^3*e-43*a*b*d^3*e+11*b^2*d^3*e+2*a*c*d^3*e+42*b*c*d^3*e-18*c^2*d^3*e+44*a*d^4*e+25*b*d^4*e+41*c*d^4*e+40*d^5*e+40*a^4*e^2-3*a^3*b*e^2-8*a^2*b^2*e^2+a*b^3*e^2-27*b^4*e^2+15*a^3*c*e^2+49*a^2*b*c*e^2-14*a*b^2*c*e^2+31*b^3*c*e^2+36*a^2*c^2*e^2-14*a*b*c^2*e^2-31*b^2*c^2*e^2+48*a*c^3*e^2-24*b*c^3*e^2-30*c^4*e^2-47*a^3*d*e^2+12*a^2*b*d*e^2+44*a*b^2*d*e^2+47*b^3*d*e^2-5*a^2*c*d*e^2+23*a*b*c*d*e^2+48*b^2*c*d*e^2-25*a*c^2*d*e^2-7*b*c^2*d*e^2+32*a^2*d^2*e^2+35*a*b*d^2*e^2-19*b^2*d^2*e^2+19*a*c*d^2*e^2+26*b*c*d^2*e^2+26*c^2*d^2*e^2+8*a*d^3*e^2-21*b*d^3*e^2-6*c*d^3*e^2-35*d^4*e^2-30*a^3*e^3+36*a^2*b*e^3-27*a*b^2*e^3-33*b^3*e^3-50*a^2*c*e^3+41*a*b*c*e^3+13*b^2*c*e^3+20*a*c^2*e^3+36*b*c^2*e^3+14*c^3*e^3+40*a^2*d*e^3-35*a*b*d*e^3+11*b^2*d*e^3+36*a*c*d*e^3+23*b*c*d*e^3-34*c^2*d*e^3+25*a*d^2*e^3-14*b*d^2*e^3-5*c*d^2*e^3+11*d^3*e^3+42*a^2*e^4-48*a*b*e^4-27*b^2*e^4-17*a*c*e^4+32*b*c*e^4-3*c^2*e^4-3*a*d*e^4-33*b*d*e^4-3*c*d*e^4-14*d^2*e^4+8*a*e^5+14*b*e^5+3*c*e^5-34*d*e^5-46*e^6,
    3147 a*b*c^3*d-20*a^4*d^2+23*a^3*b*d^2-14*a^2*b^2*d^2+29*a*b^3*d^2-36*b^4*d^2-48*a^3*c*d^2+39*a^2*b*c*d^2-34*a*b^2*c*d^2+b^3*c*d^2-25*a^2*c^2*d^2+22*a*b*c^2*d^2-12*b^2*c^2*d^2+48*a*c^3*d^2-41*b*c^3*d^2+13*c^4*d^2-24*a^3*d^3-43*a^2*b*d^3-31*a*b^2*d^3-13*b^3*d^3+10*a^2*c*d^3-16*a*b*c*d^3+48*b^2*c*d^3-18*a*c^2*d^3+7*b*c^2*d^3+8*c^3*d^3-14*a^2*d^4-14*a*b*d^4+49*b^2*d^4+43*a*c*d^4+7*b*c*d^4-50*c^2*d^4-21*a*d^5-33*b*d^5-44*c*d^5-40*d^6-42*a^5*e+39*a^4*b*e-14*a^3*b^2*e+34*a^2*b^3*e+22*a*b^4*e+37*b^5*e+24*a^4*c*e+39*a^3*b*c*e-43*a^2*b^2*c*e-40*a*b^3*c*e-6*b^4*c*e-45*a^3*c^2*e+18*a^2*b*c^2*e-8*a*b^2*c^2*e+22*b^3*c^2*e-36*a^2*c^3*e+31*a*b*c^3*e+15*b^2*c^3*e+7*a*c^4*e-18*b*c^4*e-31*c^5*e-20*a^4*d*e+25*a^3*b*d*e-11*a^2*b^2*d*e-21*a*b^3*d*e-23*b^4*d*e+18*a^3*c*d*e-49*a^2*b*c*d*e+5*a*b^2*c*d*e+21*b^3*c*d*e-2*a^2*c^2*d*e+42*a*b*c^2*d*e-37*b^2*c^2*d*e+28*a*c^3*d*e-8*b*c^3*d*e+c^4*d*e+10*a^3*d^2*e-16*a^2*b*d^2*e-20*a*b^2*d^2*e+42*b^3*d^2*e+23*a^2*c*d^2*e-16*a*b*c*d^2*e+39*b^2*c*d^2*e+3*a*c^2*d^2*e+25*b*c^2*d^2*e-16*c^3*d^2*e-33*a^2*d^3*e-28*a*b*d^3*e+4*b^2*d^3*e-15*a*c*d^3*e-30*b*c*d^3*e-5*c^2*d^3*e-8*b*d^4*e-21*c*d^4*e+6*d^5*e-9*a^4*e^2-23*a^3*b*e^2-45*a^2*b^2*e^2+33*a*b^3*e^2+14*b^4*e^2+8*a^3*c*e^2+5*a^2*b*c*e^2-13*a*b^2*c*e^2-39*b^3*c*e^2-4*a^2*c^2*e^2+30*a*b*c^2*e^2-38*b^2*c^2*e^2+24*a*c^3*e^2-29*b*c^3*e^2-3*c^4*e^2+3*a^3*d*e^2+43*a^2*b*d*e^2-21*a*b^2*d*e^2-45*b^3*d*e^2-3*a^2*c*d*e^2-22*a*b*c*d*e^2+16*b^2*c*d*e^2-42*b*c^2*d*e^2-43*c^3*d*e^2-10*a*b*d^2*e^2+23*b^2*d^2*e^2-36*a*c*d^2*e^2+29*b*c*d^2*e^2-11*c^2*d^2*e^2+18*a*d^3*e^2-46*b*d^3*e^2-34*c*d^3*e^2+21*d^4*e^2+4*a^3*e^3+23*a^2*b*e^3-18*a*b^2*e^3-10*b^3*e^3+3*a^2*c*e^3+a*b*c*e^3-32*b^2*c*e^3-19*a*c^2*e^3-5*b*c^2*e^3+25*c^3*e^3-40*a^2*d*e^3-37*a*b*d*e^3-10*b^2*d*e^3-20*a*c*d*e^3+35*b*c*d*e^3+2*c^2*d*e^3+46*a*d^2*e^3+46*b*d^2*e^3+25*c*d^2*e^3+14*d^3*e^3-28*a^2*e^4+24*a*b*e^4-38*b^2*e^4+11*a*c*e^4+15*b*c*e^4-10*c^2*e^4-32*a*d*e^4+37*b*d*e^4+21*c*d*e^4-25*d^2*e^4-47*a*e^5-32*b*e^5+5*c*e^5+17*d*e^5+44*e^6,
    3148 a^2*c^3*d+25*a^4*d^2-40*a^3*b*d^2-49*a^2*b^2*d^2+30*a*b^3*d^2-36*b^4*d^2+41*a^3*c*d^2+23*a^2*b*c*d^2-16*a*b^2*c*d^2-20*b^3*c*d^2-46*a^2*c^2*d^2-29*a*b*c^2*d^2-14*b^2*c^2*d^2-38*a*c^3*d^2+9*b*c^3*d^2+50*c^4*d^2-20*a^3*d^3-14*a^2*b*d^3+13*a*b^2*d^3+5*b^3*d^3+7*a^2*c*d^3+46*a*b*c*d^3+40*b^2*c*d^3-46*a*c^2*d^3+27*b*c^2*d^3-5*c^3*d^3+43*a^2*d^4+5*a*b*d^4+3*b^2*d^4+29*a*c*d^4-43*b*c*d^4-31*c^2*d^4-24*a*d^5-45*b*d^5-26*c*d^5-6*d^6+18*a^5*e+22*a^4*b*e-12*a^3*b^2*e+40*a^2*b^3*e-8*a*b^4*e+36*b^5*e+5*a^4*c*e+46*a^3*b*c*e+6*a^2*b^2*c*e-39*a*b^3*c*e-29*b^4*c*e+36*a^3*c^2*e+35*a^2*b*c^2*e+11*a*b^2*c^2*e-12*b^3*c^2*e+13*a^2*c^3*e+15*a*b*c^3*e+38*b^2*c^3*e-4*a*c^4*e-46*b*c^4*e+25*c^5*e-31*a^4*d*e+35*a^3*b*d*e+37*a^2*b^2*d*e+27*a*b^3*d*e-30*b^4*d*e-37*a^3*c*d*e-2*a^2*b*c*d*e+10*a*b^2*c*d*e+12*b^3*c*d*e+39*a^2*c^2*d*e+35*a*b*c^2*d*e-17*b^2*c^2*d*e-30*a*c^3*d*e+32*b*c^3*d*e+41*c^4*d*e+49*a^3*d^2*e-42*a^2*b*d^2*e-22*a*b^2*d^2*e-3*b^3*d^2*e+17*a^2*c*d^2*e+31*a*b*c*d^2*e+23*b^2*c*d^2*e+4*a*c^2*d^2*e+50*b*c^2*d^2*e+43*c^3*d^2*e+17*a^2*d^3*e-30*a*b*d^3*e+43*b^2*d^3*e+7*a*c*d^3*e+30*b*c*d^3*e+37*c^2*d^3*e-a*d^4*e+6*b*d^4*e+22*c*d^4*e-34*d^5*e-48*a^4*e^2+14*a^3*b*e^2+17*a^2*b^2*e^2-39*a*b^3*e^2+37*b^4*e^2-27*a^3*c*e^2+14*a^2*b*c*e^2-43*a*b^2*c*e^2+42*b^3*c*e^2-31*a^2*c^2*e^2+43*a*b*c^2*e^2-34*b^2*c^2*e^2-40*a*c^3*e^2-14*b*c^3*e^2+19*c^4*e^2+11*a^3*d*e^2+23*a^2*b*d*e^2+11*a*b^2*d*e^2+22*b^3*d*e^2+41*a^2*c*d*e^2-20*a*b*c*d*e^2+b^2*c*d*e^2-34*a*c^2*d*e^2-39*b*c^2*d*e^2-20*c^3*d*e^2+25*a^2*d^2*e^2+33*a*b*d^2*e^2-38*b^2*d^2*e^2-34*a*c*d^2*e^2-37*b*c*d^2*e^2-15*c^2*d^2*e^2-13*a*d^3*e^2-42*b*d^3*e^2+49*c*d^3*e^2+29*d^4*e^2-48*a^3*e^3+49*a^2*b*e^3-50*a*b^2*e^3-44*b^3*e^3-42*a^2*c*e^3+14*a*b*c*e^3-34*b^2*c*e^3+3*a*c^2*e^3-b*c^2*e^3+28*c^3*e^3+24*a^2*d*e^3+37*a*b*d*e^3+29*b^2*d*e^3-a*c*d*e^3+31*b*c*d*e^3-14*c^2*d*e^3-36*a*d^2*e^3-4*b*d^2*e^3+29*c*d^2*e^3-47*d^3*e^3-36*a^2*e^4-13*a*b*e^4-45*b^2*e^4-23*a*c*e^4-32*b*c*e^4+2*c^2*e^4+11*a*d*e^4-24*b*d*e^4-46*c*d*e^4-40*d^2*e^4-4*a*e^5-29*b*e^5+14*c*e^5-44*d*e^5+32*e^6,
    3149 b^3*c^2*d+13*a^4*d^2+14*a^3*b*d^2-11*a^2*b^2*d^2-12*a*b^3*d^2-8*b^4*d^2-46*a^3*c*d^2-26*a^2*b*c*d^2+28*a*b^2*c*d^2+13*b^3*c*d^2-36*a^2*c^2*d^2+35*a*b*c^2*d^2+49*b^2*c^2*d^2+32*a*c^3*d^2+17*b*c^3*d^2+34*c^4*d^2-8*a^3*d^3-10*a^2*b*d^3+31*a*b^2*d^3-22*b^3*d^3+a^2*c*d^3+32*a*b*c*d^3+33*b^2*c*d^3+34*a*c^2*d^3-36*b*c^2*d^3-11*c^3*d^3-42*a^2*d^4-15*a*b*d^4-3*b^2*d^4-48*a*c*d^4+12*b*c*d^4+35*c^2*d^4-43*a*d^5+9*b*d^5+47*c*d^5+19*d^6-18*a^5*e+9*a^4*b*e+34*a^3*b^2*e+5*a^2*b^3*e+46*a*b^4*e-34*b^5*e-42*a^4*c*e-36*a^3*b*c*e+5*a^2*b^2*c*e+43*a*b^3*c*e-18*b^4*c*e+21*a^3*c^2*e-45*a^2*b*c^2*e-31*a*b^2*c^2*e+2*b^3*c^2*e+a*b*c^3*e-45*b^2*c^3*e+41*a*c^4*e+37*b*c^4*e-32*c^5*e+19*a^4*d*e-30*a^3*b*d*e+5*a^2*b^2*d*e+17*a*b^3*d*e+47*b^4*d*e-23*a^3*c*d*e+4*a^2*b*c*d*e+14*a*b^2*c*d*e-31*b^3*c*d*e+50*a^2*c^2*d*e-18*a*b*c^2*d*e-37*b^2*c^2*d*e-35*a*c^3*d*e+29*b*c^3*d*e-28*c^4*d*e+3*a^3*d^2*e+13*a^2*b*d^2*e-30*a*b^2*d^2*e-9*b^3*d^2*e+20*a^2*c*d^2*e+17*a*b*c*d^2*e-21*b^2*c*d^2*e-41*a*c^2*d^2*e-32*b*c^2*d^2*e+33*c^3*d^2*e-3*a^2*d^3*e-23*a*b*d^3*e-47*b^2*d^3*e-19*c^2*d^3*e+12*a*d^4*e-32*b*d^4*e-37*c*d^4*e+20*d^5*e+21*a^4*e^2+18*a^3*b*e^2-4*a^2*b^2*e^2+25*a*b^3*e^2-13*b^4*e^2+28*a^3*c*e^2-28*a^2*b*c*e^2-37*a*b^2*c*e^2-32*b^3*c*e^2+8*a^2*c^2*e^2+34*a*b*c^2*e^2-21*b^2*c^2*e^2+15*a*c^3*e^2-39*b*c^3*e^2-45*c^4*e^2-26*a^3*d*e^2+34*a^2*b*d*e^2-25*a*b^2*d*e^2+24*b^3*d*e^2+5*a^2*c*d*e^2+36*a*b*c*d*e^2-27*b^2*c*d*e^2+31*a*c^2*d*e^2+31*b*c^2*d*e^2+13*c^3*d*e^2-3*a^2*d^2*e^2-18*a*b*d^2*e^2+47*b^2*d^2*e^2+20*a*c*d^2*e^2+8*b*c*d^2*e^2-37*c^2*d^2*e^2+21*a*d^3*e^2+3*b*d^3*e^2-34*c*d^3*e^2+28*d^4*e^2-19*a^3*e^3+33*a^2*b*e^3-50*a*b^2*e^3-44*b^3*e^3+17*a^2*c*e^3-48*a*b*c*e^3-3*b^2*c*e^3+33*a*c^2*e^3+13*b*c^2*e^3-29*c^3*e^3+38*a^2*d*e^3-44*a*b*d*e^3-36*b^2*d*e^3-17*a*c*d*e^3+38*b*c*d*e^3+47*c^2*d*e^3+4*a*d^2*e^3-11*b*d^2*e^3-14*c*d^2*e^3-46*d^3*e^3-17*a^2*e^4-23*a*b*e^4+26*b^2*e^4+24*a*c*e^4-37*b*c*e^4+34*c^2*e^4+24*a*d*e^4-32*b*d*e^4-19*c*d*e^4+15*d^2*e^4-33*a*e^5+7*b*e^5-29*c*e^5+37*d*e^5-16*e^6,
    3150 a*b^2*c^2*d-26*a^4*d^2-24*a^3*b*d^2-36*a^2*b^2*d^2+26*a*b^3*d^2+26*b^4*d^2+44*a^3*c*d^2-31*a^2*b*c*d^2-49*a*b^2*c*d^2-30*b^3*c*d^2-13*a^2*c^2*d^2+49*a*b*c^2*d^2-50*b^2*c^2*d^2+27*a*c^3*d^2+24*c^4*d^2-47*a^3*d^3+29*a^2*b*d^3+31*a*b^2*d^3-30*b^3*d^3+39*a^2*c*d^3+23*a*b*c*d^3+5*b^2*c*d^3-30*a*c^2*d^3-20*b*c^2*d^3-27*c^3*d^3-40*a^2*d^4+36*a*b*d^4+28*b^2*d^4+29*a*c*d^4+2*b*c*d^4+14*c^2*d^4-41*a*d^5+22*b*d^5+22*c*d^5+9*d^6-22*a^5*e-33*a^4*b*e-19*a^3*b^2*e+30*a^2*b^3*e+4*a*b^4*e+42*b^5*e-13*a^4*c*e+27*a^3*b*c*e-10*a^2*b^2*c*e+21*a*b^3*c*e-46*b^4*c*e-22*a^3*c^2*e-9*a^2*b*c^2*e+11*a*b^2*c^2*e+33*b^3*c^2*e-4*a^2*c^3*e-26*a*b*c^3*e+47*b^2*c^3*e+41*a*c^4*e-23*b*c^4*e-35*c^5*e-28*a^4*d*e+6*a^3*b*d*e+39*a^2*b^2*d*e+12*a*b^3*d*e-46*b^4*d*e+5*a^3*c*d*e-4*a^2*b*c*d*e+45*a*b^2*c*d*e-8*b^3*c*d*e-46*a^2*c^2*d*e-34*a*b*c^2*d*e-47*b^2*c^2*d*e+20*a*c^3*d*e+10*b*c^3*d*e+2*c^4*d*e+22*a^3*d^2*e-5*a^2*b*d^2*e+24*a*b^2*d^2*e+27*b^3*d^2*e+10*a^2*c*d^2*e-27*a*b*c*d^2*e+13*b^2*c*d^2*e+38*a*c^2*d^2*e+20*b*c^2*d^2*e-46*c^3*d^2*e-47*a^2*d^3*e+42*a*b*d^3*e-34*b^2*d^3*e-3*a*c*d^3*e+4*b*c*d^3*e+4*c^2*d^3*e+47*a*d^4*e+46*b*d^4*e+29*c*d^4*e+28*d^5*e+18*a^4*e^2+19*a^3*b*e^2+6*a^2*b^2*e^2-38*a*b^3*e^2-22*b^4*e^2-21*a^3*c*e^2+44*a^2*b*c*e^2-23*a*b^2*c*e^2-20*b^3*c*e^2-35*a^2*c^2*e^2-33*a*b*c^2*e^2+b^2*c^2*e^2+2*a*c^3*e^2+36*b*c^3*e^2+29*c^4*e^2-14*a^2*b*d*e^2-44*a*b^2*d*e^2+7*b^3*d*e^2+17*a^2*c*d*e^2-2*a*b*c*d*e^2+18*b^2*c*d*e^2-41*a*c^2*d*e^2+41*b*c^2*d*e^2+40*c^3*d*e^2+6*a^2*d^2*e^2-15*a*b*d^2*e^2-39*b^2*d^2*e^2-50*a*c*d^2*e^2-43*b*c*d^2*e^2-3*c^2*d^2*e^2+29*a*d^3*e^2-3*b*d^3*e^2+48*c*d^3*e^2+22*d^4*e^2+24*a^3*e^3+5*a^2*b*e^3-3*a*b^2*e^3-36*b^3*e^3-50*a^2*c*e^3+23*a*b*c*e^3+9*b^2*c*e^3+3*a*c^2*e^3+45*b*c^2*e^3-24*c^3*e^3-30*a^2*d*e^3+31*a*b*d*e^3+26*b^2*d*e^3-37*a*c*d*e^3-38*b*c*d*e^3-36*c^2*d*e^3-8*a*d^2*e^3-41*b*d^2*e^3-40*c*d^2*e^3+25*d^3*e^3-25*a^2*e^4+12*a*b*e^4-25*b^2*e^4-39*a*c*e^4-19*b*c*e^4-21*c^2*e^4+34*a*d*e^4-35*b*d*e^4+9*c*d*e^4-32*d^2*e^4+29*a*e^5+32*b*e^5-25*c*e^5-31*d*e^5-34*e^6,
    3151 a^2*b*c^2*d+14*a^4*d^2+25*a^3*b*d^2-2*a^2*b^2*d^2-32*a*b^3*d^2-31*b^4*d^2-40*a^3*c*d^2-15*a^2*b*c*d^2+50*a*b^2*c*d^2+b^3*c*d^2-7*a^2*c^2*d^2-14*a*b*c^2*d^2+8*b^2*c^2*d^2+25*a*c^3*d^2+6*b*c^3*d^2+25*c^4*d^2-20*a^3*d^3+a^2*b*d^3-27*a*b^2*d^3+24*b^3*d^3+33*a^2*c*d^3-14*a*b*c*d^3-48*b^2*c*d^3+10*a*c^2*d^3+8*b*c^2*d^3+13*c^3*d^3-11*a^2*d^4+41*a*b*d^4+48*b^2*d^4+29*a*c*d^4-29*b*c*d^4+40*c^2*d^4+50*a*d^5+33*b*d^5-35*c*d^5-17*d^6-31*a^5*e+42*a^4*b*e+48*a^3*b^2*e-48*a^2*b^3*e-6*a*b^4*e+27*b^5*e+31*a^4*c*e+6*a^3*b*c*e-20*a^2*b^2*c*e-10*a*b^3*c*e-34*b^4*c*e-45*a^3*c^2*e+15*a^2*b*c^2*e+37*a*b^2*c^2*e+34*b^3*c^2*e-14*a^2*c^3*e-9*a*b*c^3*e-33*b^2*c^3*e-42*a*c^4*e+20*b*c^4*e+4*c^5*e+28*a^4*d*e+10*a^3*b*d*e-23*a^2*b^2*d*e-17*a*b^3*d*e-44*b^4*d*e-8*a^3*c*d*e-13*a^2*b*c*d*e+35*a*b^2*c*d*e-49*b^3*c*d*e-23*a^2*c^2*d*e-43*a*b*c^2*d*e+11*b^2*c^2*d*e+45*a*c^3*d*e-38*b*c^3*d*e-44*c^4*d*e+45*a^3*d^2*e+9*a^2*b*d^2*e+31*a*b^2*d^2*e-18*b^3*d^2*e-30*a^2*c*d^2*e+4*a*b*c*d^2*e+50*b^2*c*d^2*e+24*a*c^2*d^2*e+24*b*c^2*d^2*e-11*c^3*d^2*e-11*a^2*d^3*e-36*a*b*d^3*e+5*b^2*d^3*e+26*a*c*d^3*e-18*b*c*d^3*e-41*c^2*d^3*e-2*a*d^4*e+17*b*d^4*e+46*c*d^4*e+9*d^5*e-49*a^4*e^2-13*a^3*b*e^2+47*a^2*b^2*e^2+19*a*b^3*e^2+42*b^4*e^2+15*a^3*c*e^2-48*a^2*b*c*e^2+33*a*b^2*c*e^2-28*b^3*c*e^2-5*a^2*c^2*e^2-32*a*b*c^2*e^2+2*b^2*c^2*e^2-25*a*c^3*e^2-8*b*c^3*e^2+8*c^4*e^2-48*a^3*d*e^2-12*a^2*b*d*e^2-49*a*b^2*d*e^2+49*b^3*d*e^2-4*a^2*c*d*e^2-40*a*b*c*d*e^2+42*b^2*c*d*e^2-11*a*c^2*d*e^2+12*b*c^2*d*e^2+5*c^3*d*e^2+40*a^2*d^2*e^2+21*a*b*d^2*e^2-37*b^2*d^2*e^2+10*a*c*d^2*e^2-38*b*c*d^2*e^2-22*c^2*d^2*e^2-a*d^3*e^2+20*b*d^3*e^2-31*c*d^3*e^2-15*d^4*e^2+31*a^3*e^3-24*a^2*b*e^3-6*b^3*e^3-10*a^2*c*e^3-27*a*b*c*e^3+15*b^2*c*e^3-40*b*c^2*e^3+36*c^3*e^3+12*a^2*d*e^3+32*a*b*d*e^3-39*b^2*d*e^3-9*a*c*d*e^3+13*b*c*d*e^3+35*c^2*d*e^3+31*a*d^2*e^3-4*b*d^2*e^3+14*c*d^2*e^3+19*d^3*e^3-36*a^2*e^4-44*a*b*e^4-10*b^2*e^4+29*a*c*e^4-26*b*c*e^4+43*c^2*e^4+5*a*d*e^4+3*b*d*e^4-17*c*d*e^4+48*d^2*e^4-16*a*e^5+2*b*e^5-41*c*e^5-15*d*e^5-19*e^6,
    3152 a^3*c^2*d+17*a^4*d^2+4*a^3*b*d^2+a^2*b^2*d^2+20*a*b^3*d^2-36*b^4*d^2-13*a^3*c*d^2+40*a^2*b*c*d^2-21*a*b^2*c*d^2-35*b^3*c*d^2-33*a^2*c^2*d^2-a*b*c^2*d^2+12*b^2*c^2*d^2+33*a*c^3*d^2-34*b*c^3*d^2-11*c^4*d^2+9*a^3*d^3-32*a^2*b*d^3+42*a*b^2*d^3-49*b^3*d^3-12*a^2*c*d^3-12*a*b*c*d^3+12*b^2*c*d^3+20*a*c^2*d^3+44*b*c^2*d^3+15*c^3*d^3+16*a^2*d^4+46*a*b*d^4+26*b^2*d^4+2*a*c*d^4-28*b*c*d^4-45*c^2*d^4+17*a*d^5-29*b*d^5+28*c*d^5-39*d^6+16*a^5*e+50*a^4*b*e+5*a^3*b^2*e+5*a^2*b^3*e-30*a*b^4*e-8*b^5*e+29*a^4*c*e-48*a^3*b*c*e-33*a^2*b^2*c*e-25*a*b^3*c*e+40*b^4*c*e-31*a^3*c^2*e-15*a^2*b*c^2*e+2*a*b^2*c^2*e+28*b^3*c^2*e-39*a^2*c^3*e+10*a*b*c^3*e-35*b^2*c^3*e+33*a*c^4*e-26*b*c^4*e-23*c^5*e+27*a^4*d*e-34*a^3*b*d*e+9*a^2*b^2*d*e+22*a*b^3*d*e-35*b^4*d*e+24*a^3*c*d*e+6*a^2*b*c*d*e+29*a*b^2*c*d*e-43*b^3*c*d*e+12*a^2*c^2*d*e+50*a*b*c^2*d*e-21*b^2*c^2*d*e-5*a*c^3*d*e-3*b*c^3*d*e-25*c^4*d*e+38*a^3*d^2*e-37*a^2*b*d^2*e+6*a*b^2*d^2*e+47*b^3*d^2*e+25*a^2*c*d^2*e+27*a*b*c*d^2*e+6*b^2*c*d^2*e-12*a*c^2*d^2*e-45*b*c^2*d^2*e-31*c^3*d^2*e-40*a^2*d^3*e+44*b^2*d^3*e-32*a*c*d^3*e-4*b*c*d^3*e-31*c^2*d^3*e+16*a*d^4*e-24*b*d^4*e+40*c*d^4*e-13*d^5*e-10*a^4*e^2+26*a^3*b*e^2+12*a^2*b^2*e^2+45*a*b^3*e^2+43*b^4*e^2+26*a^3*c*e^2+21*a^2*b*c*e^2-3*a*b^2*c*e^2-18*b^3*c*e^2+24*a^2*c^2*e^2+20*a*b*c^2*e^2-13*b^2*c^2*e^2+43*a*c^3*e^2+34*b*c^3*e^2-24*c^4*e^2+29*a^3*d*e^2+13*a^2*b*d*e^2-7*a*b^2*d*e^2-5*b^3*d*e^2+45*a^2*c*d*e^2+10*a*b*c*d*e^2+30*b^2*c*d*e^2-13*a*c^2*d*e^2+43*b*c^2*d*e^2+37*c^3*d*e^2+29*a^2*d^2*e^2+46*a*b*d^2*e^2+33*b^2*d^2*e^2+18*a*c*d^2*e^2-22*b*c*d^2*e^2+13*c^2*d^2*e^2+44*a*d^3*e^2+38*b*d^3*e^2+27*c*d^3*e^2+44*d^4*e^2-29*a^2*b*e^3-36*a*b^2*e^3+40*b^3*e^3+9*a^2*c*e^3-19*a*b*c*e^3+36*b^2*c*e^3+5*a*c^2*e^3+20*b*c^2*e^3+3*c^3*e^3+49*a^2*d*e^3-46*a*b*d*e^3+7*b^2*d*e^3-26*a*c*d*e^3+17*b*c*d*e^3-48*c^2*d*e^3-9*a*d^2*e^3-25*b*d^2*e^3-25*c*d^2*e^3-12*d^3*e^3+13*a^2*e^4+a*b*e^4+5*b^2*e^4+44*a*c*e^4+14*b*c*e^4+42*c^2*e^4+16*a*d*e^4+12*b*d*e^4+20*c*d*e^4+16*d^2*e^4-27*a*e^5+13*b*e^5+38*c*e^5-d*e^5-26*e^6,
    3153 b^4*c*d-16*a^4*d^2-19*a^3*b*d^2+43*a^2*b^2*d^2+18*a*b^3*d^2-14*b^4*d^2-6*a^3*c*d^2-33*a^2*b*c*d^2-38*a*b^2*c*d^2-4*b^3*c*d^2+16*a^2*c^2*d^2-38*a*b*c^2*d^2+40*b^2*c^2*d^2+11*a*c^3*d^2+36*b*c^3*d^2+26*c^4*d^2+a^3*d^3-37*a^2*b*d^3-5*a*b^2*d^3-36*b^3*d^3+38*a^2*c*d^3+32*a*b*c*d^3+12*b^2*c*d^3+24*a*c^2*d^3-40*b*c^2*d^3-9*c^3*d^3+15*a^2*d^4+36*a*b*d^4-50*b^2*d^4-43*a*c*d^4+43*b*c*d^4+33*c^2*d^4-8*a*d^5-28*b*d^5-42*c*d^5-20*d^6+16*a^5*e+4*a^4*b*e+41*a^3*b^2*e+18*a^2*b^3*e+26*a*b^4*e+12*b^5*e+3*a^4*c*e-50*a^3*b*c*e+12*a^2*b^2*c*e-6*a*b^3*c*e-40*b^4*c*e+48*a^3*c^2*e+46*a^2*b*c^2*e-24*a*b^2*c^2*e+47*b^3*c^2*e-30*a^2*c^3*e+30*a*b*c^3*e+19*b^2*c^3*e-9*a*c^4*e-33*b*c^4*e-43*c^5*e-31*a^4*d*e-46*a^3*b*d*e-19*a^2*b^2*d*e-40*a*b^3*d*e+17*b^4*d*e-7*a^3*c*d*e+27*a^2*b*c*d*e-18*a*b^2*c*d*e+40*b^3*c*d*e+13*a^2*c^2*d*e-40*a*b*c^2*d*e-21*b^2*c^2*d*e+48*a*c^3*d*e-23*b*c^3*d*e-41*c^4*d*e-19*a^3*d^2*e+26*a^2*b*d^2*e-35*a*b^2*d^2*e-5*b^3*d^2*e+23*a^2*c*d^2*e+44*a*b*c*d^2*e-11*b^2*c*d^2*e+2*a*c^2*d^2*e-23*b*c^2*d^2*e-9*c^3*d^2*e+26*a^2*d^3*e+3*a*b*d^3*e+27*b^2*d^3*e+24*a*c*d^3*e+b*c*d^3*e-33*c^2*d^3*e+27*a*d^4*e-49*b*d^4*e-33*c*d^4*e+3*d^5*e-5*a^4*e^2-39*a^3*b*e^2-a^2*b^2*e^2+9*a*b^3*e^2+38*b^4*e^2+48*a^3*c*e^2-50*a^2*b*c*e^2+31*a*b^2*c*e^2-b^3*c*e^2+40*a^2*c^2*e^2+46*a*b*c^2*e^2-9*b^2*c^2*e^2-5*a*c^3*e^2+2*b*c^3*e^2-3*c^4*e^2-4*a^3*d*e^2+20*a^2*b*d*e^2-42*a*b^2*d*e^2+5*b^3*d*e^2-29*a^2*c*d*e^2+21*a*b*c*d*e^2-36*b^2*c*d*e^2+34*a*c^2*d*e^2+18*b*c^2*d*e^2-45*c^3*d*e^2+13*a^2*d^2*e^2-25*a*b*d^2*e^2+27*b^2*d^2*e^2+32*b*c*d^2*e^2+38*c^2*d^2*e^2+2*a*d^3*e^2+10*b*d^3*e^2+31*c*d^3*e^2-6*d^4*e^2+8*a^3*e^3-40*a^2*b*e^3+34*a*b^2*e^3+50*b^3*e^3-10*a^2*c*e^3-36*a*b*c*e^3-17*b^2*c*e^3-39*a*c^2*e^3+19*b*c^2*e^3-13*c^3*e^3+28*a^2*d*e^3+27*a*b*d*e^3+28*b^2*d*e^3+13*a*c*d*e^3+47*b*c*d*e^3-32*c^2*d*e^3+6*a*d^2*e^3+16*b*d^2*e^3-2*c*d^2*e^3+39*d^3*e^3+12*a^2*e^4-12*a*b*e^4+27*b^2*e^4-4*a*c*e^4+7*b*c*e^4-2*c^2*e^4+30*a*d*e^4-16*b*d*e^4-13*c*d*e^4+18*d^2*e^4-6*a*e^5+32*b*e^5-46*c*e^5+33*d*e^5+26*e^6,
    3154 a*b^3*c*d-15*a^4*d^2-41*a^3*b*d^2-50*a^2*b^2*d^2-45*b^4*d^2+29*a^3*c*d^2+43*a^2*b*c*d^2-7*a*b^2*c*d^2-49*b^3*c*d^2+10*a^2*c^2*d^2+13*a*b*c^2*d^2-8*b^2*c^2*d^2+22*a*c^3*d^2+21*b*c^3*d^2-20*c^4*d^2-25*a^3*d^3+28*a^2*b*d^3+36*a*b^2*d^3+b^3*d^3-38*a^2*c*d^3+34*a*b*c*d^3-33*b^2*c*d^3+11*a*c^2*d^3+48*b*c^2*d^3+33*c^3*d^3+5*a^2*d^4+5*a*b*d^4+4*b^2*d^4+37*a*c*d^4+44*b*c*d^4-35*c^2*d^4+8*a*d^5+38*b*d^5+43*c*d^5-15*d^6+15*a^5*e+31*a^4*b*e-30*a^3*b^2*e+46*a^2*b^3*e-29*a*b^4*e+13*b^5*e-38*a^4*c*e+39*a^3*b*c*e+3*a^2*b^2*c*e-19*a*b^3*c*e-50*b^4*c*e-a^3*c^2*e+3*a^2*b*c^2*e-8*a*b^2*c^2*e-34*b^3*c^2*e-40*a^2*c^3*e+43*a*b*c^3*e+45*b^2*c^3*e-31*a*c^4*e+19*b*c^4*e+38*c^5*e+5*a^4*d*e-43*a^3*b*d*e+23*a^2*b^2*d*e+38*a*b^3*d*e-35*b^4*d*e-46*a^3*c*d*e+46*a^2*b*c*d*e-41*a*b^2*c*d*e+16*b^3*c*d*e-37*a^2*c^2*d*e+28*a*b*c^2*d*e-8*b^2*c^2*d*e+40*a*c^3*d*e-42*b*c^3*d*e-22*c^4*d*e+36*a^3*d^2*e+17*a^2*b*d^2*e+4*a*b^2*d^2*e+38*b^3*d^2*e-41*a^2*c*d^2*e-7*a*b*c*d^2*e-34*b^2*c*d^2*e+10*a*c^2*d^2*e-7*b*c^2*d^2*e-35*c^3*d^2*e-26*a^2*d^3*e-a*b*d^3*e-12*b^2*d^3*e+46*a*c*d^3*e-44*b*c*d^3*e+14*c^2*d^3*e-42*a*d^4*e-8*b*d^4*e+39*c*d^4*e+17*d^5*e+43*a^4*e^2+10*a^3*b*e^2-13*a^2*b^2*e^2-a*b^3*e^2+32*b^4*e^2+4*a^3*c*e^2+10*a^2*b*c*e^2-34*a*b^2*c*e^2+5*b^3*c*e^2-30*a^2*c^2*e^2-6*a*b*c^2*e^2+38*b^2*c^2*e^2-44*a*c^3*e^2+9*b*c^3*e^2+11*c^4*e^2+10*a^3*d*e^2+50*a^2*b*d*e^2-2*a*b^2*d*e^2-26*b^3*d*e^2+15*a^2*c*d*e^2-40*a*b*c*d*e^2+21*b^2*c*d*e^2-45*a*c^2*d*e^2-5*b*c^2*d*e^2-8*c^3*d*e^2+5*a^2*d^2*e^2+8*a*b*d^2*e^2-40*b^2*d^2*e^2+28*a*c*d^2*e^2-26*b*c*d^2*e^2+28*c^2*d^2*e^2+20*a*d^3*e^2-32*b*d^3*e^2-c*d^3*e^2-47*d^4*e^2-41*a^3*e^3-10*a^2*b*e^3-9*a*b^2*e^3+18*b^3*e^3-36*a^2*c*e^3+43*a*b*c*e^3+b^2*c*e^3+5*a*c^2*e^3+35*b*c^2*e^3-29*c^3*e^3+49*a^2*d*e^3+11*a*b*d*e^3-14*b^2*d*e^3-18*a*c*d*e^3+48*b*c*d*e^3-5*c^2*d*e^3-39*a*d^2*e^3+16*c*d^2*e^3+21*d^3*e^3+29*a^2*e^4+42*a*b*e^4+16*b^2*e^4+21*a*c*e^4-40*b*c*e^4-23*a*d*e^4-27*b*d*e^4+19*c*d*e^4-3*d^2*e^4+29*a*e^5+23*b*e^5-48*c*e^5-14*d*e^5-39*e^6,
    3155 a^2*b^2*c*d+30*a^4*d^2-8*a^3*b*d^2-31*a^2*b^2*d^2-48*a*b^3*d^2-8*b^4*d^2-a^3*c*d^2-45*a^2*b*c*d^2+24*a*b^2*c*d^2-50*b^3*c*d^2+26*a^2*c^2*d^2-21*a*b*c^2*d^2+7*b^2*c^2*d^2-23*a*c^3*d^2-3*b*c^3*d^2-37*c^4*d^2+30*a^3*d^3-49*a^2*b*d^3-10*a*b^2*d^3+19*b^3*d^3-a^2*c*d^3-23*a*b*c*d^3+27*b^2*c*d^3+8*a*c^2*d^3+36*b*c^2*d^3+14*c^3*d^3-14*a^2*d^4+11*a*b*d^4+24*b^2*d^4-22*a*c*d^4+14*b*c*d^4-12*c^2*d^4+33*a*d^5-35*b*d^5-20*c*d^5-22*d^6-25*a^5*e-50*a^4*b*e-3*a^3*b^2*e-49*a^2*b^3*e-47*a*b^4*e-12*b^5*e+24*a^4*c*e+10*a^3*b*c*e-49*a^2*b^2*c*e-46*a*b^3*c*e-39*b^4*c*e+47*a^3*c^2*e-a^2*b*c^2*e+45*a*b^2*c^2*e-46*b^3*c^2*e+27*a^2*c^3*e-27*a*b*c^3*e+7*b^2*c^3*e+48*a*c^4*e-17*b*c^4*e+13*c^5*e+40*a^4*d*e+50*a^3*b*d*e-9*a^2*b^2*d*e-9*a*b^3*d*e+18*b^4*d*e+30*a^3*c*d*e-36*a^2*b*c*d*e-41*a*b^2*c*d*e+34*b^3*c*d*e+10*a^2*c^2*d*e-19*a*b*c^2*d*e+38*b^2*c^2*d*e-17*a*c^3*d*e-15*b*c^3*d*e-25*c^4*d*e+26*a^3*d^2*e-22*a^2*b*d^2*e+33*a*b^2*d^2*e+3*b^3*d^2*e+33*a^2*c*d^2*e+13*a*b*c*d^2*e-36*b^2*c*d^2*e+16*a*c^2*d^2*e+16*b*c^2*d^2*e+27*c^3*d^2*e-20*a^2*d^3*e+8*a*b*d^3*e+12*b^2*d^3*e-7*a*c*d^3*e-11*b*c*d^3*e-32*c^2*d^3*e+49*a*d^4*e-45*b*d^4*e+4*c*d^4*e+23*d^5*e-42*a^4*e^2-10*a^3*b*e^2+47*a^2*b^2*e^2+31*a*b^3*e^2-9*b^4*e^2-45*a^3*c*e^2-16*a^2*b*c*e^2-16*a*b^2*c*e^2+6*b^3*c*e^2+9*a^2*c^2*e^2-35*a*b*c^2*e^2-17*b^2*c^2*e^2-48*a*c^3*e^2-6*b*c^3*e^2+33*c^4*e^2+46*a^3*d*e^2-22*a^2*b*d*e^2+41*a*b^2*d*e^2+28*b^3*d*e^2+37*a^2*c*d*e^2-35*a*b*c*d*e^2+11*b^2*c*d*e^2-40*a*c^2*d*e^2-25*b*c^2*d*e^2-6*c^3*d*e^2+50*a^2*d^2*e^2-29*a*b*d^2*e^2-30*b^2*d^2*e^2+12*a*c*d^2*e^2+37*b*c*d^2*e^2-23*c^2*d^2*e^2-30*a*d^3*e^2-43*b*d^3*e^2+31*c*d^3*e^2-35*d^4*e^2+32*a^3*e^3-45*a^2*b*e^3-35*a*b^2*e^3+26*b^3*e^3-43*a^2*c*e^3-41*a*b*c*e^3-6*b^2*c*e^3-14*a*c^2*e^3-20*b*c^2*e^3-44*c^3*e^3+10*a^2*d*e^3-4*a*b*d*e^3-38*b^2*d*e^3-28*a*c*d*e^3+8*b*c*d*e^3+30*c^2*d*e^3-5*a*d^2*e^3+24*b*d^2*e^3+2*c*d^2*e^3-19*d^3*e^3-25*a^2*e^4+21*a*b*e^4-20*b^2*e^4-11*a*c*e^4+40*b*c*e^4+12*c^2*e^4-30*a*d*e^4+8*b*d*e^4-14*c*d*e^4-23*d^2*e^4+20*a*e^5-7*b*e^5-38*c*e^5-50*d*e^5-30*e^6,
    3156 a^3*b*c*d+41*a^4*d^2+15*a^3*b*d^2-2*a^2*b^2*d^2-33*a*b^3*d^2+9*b^4*d^2+25*a^3*c*d^2-22*a^2*b*c*d^2-7*a*b^2*c*d^2-14*b^3*c*d^2-34*a^2*c^2*d^2-30*a*b*c^2*d^2+50*b^2*c^2*d^2+12*a*c^3*d^2-6*b*c^3*d^2+25*c^4*d^2-41*a^3*d^3-2*a^2*b*d^3+10*a*b^2*d^3+6*b^3*d^3-26*a^2*c*d^3+17*a*b*c*d^3+24*b^2*c*d^3+42*a*c^2*d^3-28*b*c^2*d^3+9*c^3*d^3+41*a^2*d^4-48*a*b*d^4+18*b^2*d^4-26*a*c*d^4+33*b*c*d^4-8*c^2*d^4+35*a*d^5+14*b*d^5-48*c*d^5-23*d^6+49*a^5*e+16*a^4*b*e+2*a^3*b^2*e+26*a^2*b^3*e+5*a*b^4*e+39*b^5*e-32*a^4*c*e+19*a^3*b*c*e-37*a^2*b^2*c*e+44*a*b^3*c*e+34*b^4*c*e+37*a^3*c^2*e-25*a^2*b*c^2*e-43*a*b^2*c^2*e+31*b^3*c^2*e-17*a^2*c^3*e-7*a*b*c^3*e-29*b^2*c^3*e+39*a*c^4*e-13*b*c^4*e+46*c^5*e-14*a^4*d*e-23*a^3*b*d*e-31*a^2*b^2*d*e+14*a*b^3*d*e+35*b^4*d*e-44*a^3*c*d*e+15*a^2*b*c*d*e-38*a*b^2*c*d*e-38*b^3*c*d*e-7*a^2*c^2*d*e-36*a*b*c^2*d*e-36*b^2*c^2*d*e+36*a*c^3*d*e+4*b*c^3*d*e+14*c^4*d*e+35*a^2*b*d^2*e+35*a*b^2*d^2*e-28*b^3*d^2*e+3*a^2*c*d^2*e+11*a*b*c*d^2*e-41*b^2*c*d^2*e-12*a*c^2*d^2*e-4*b*c^2*d^2*e+2*c^3*d^2*e+15*a^2*d^3*e-18*a*b*d^3*e+2*b^2*d^3*e+2*a*c*d^3*e-21*b*c*d^3*e+27*c^2*d^3*e+34*a*d^4*e+22*b*d^4*e-38*c*d^4*e+45*d^5*e+3*a^4*e^2+21*a^3*b*e^2-2*a^2*b^2*e^2+11*a*b^3*e^2-29*b^4*e^2-31*a^3*c*e^2+27*a^2*b*c*e^2-44*a*b^2*c*e^2-27*b^3*c*e^2-26*a^2*c^2*e^2+48*a*b*c^2*e^2-46*b^2*c^2*e^2-46*a*c^3*e^2-44*b*c^3*e^2-3*c^4*e^2+18*a^3*d*e^2-34*a^2*b*d*e^2+14*a*b^2*d*e^2+32*b^3*d*e^2+40*a^2*c*d*e^2+20*a*b*c*d*e^2+35*b^2*c*d*e^2-19*a*c^2*d*e^2+16*b*c^2*d*e^2-6*c^3*d*e^2-a^2*d^2*e^2+38*a*b*d^2*e^2+23*b^2*d^2*e^2-26*a*c*d^2*e^2-47*b*c*d^2*e^2+11*c^2*d^2*e^2+34*a*d^3*e^2-27*b*d^3*e^2-41*c*d^3*e^2-2*d^4*e^2+7*a^3*e^3-46*a^2*b*e^3-17*a*b^2*e^3+18*b^3*e^3+25*a^2*c*e^3+24*a*b*c*e^3+48*b^2*c*e^3-25*a*c^2*e^3-12*b*c^2*e^3+17*c^3*e^3+15*a^2*d*e^3+49*a*b*d*e^3-44*b^2*d*e^3+31*a*c*d*e^3-14*b*c*d*e^3-13*c^2*d*e^3-49*a*d^2*e^3-42*b*d^2*e^3-40*c*d^2*e^3+49*d^3*e^3-13*a^2*e^4-3*a*b*e^4-33*b^2*e^4+21*a*c*e^4-23*b*c*e^4+35*c^2*e^4+41*a*d*e^4-6*b*d*e^4+23*c*d*e^4-44*d^2*e^4-10*a*e^5-5*b*e^5+22*c*e^5-13*d*e^5-24*e^6,
    3157 a^4*c*d-22*a^3*b*d^2+25*a^2*b^2*d^2+46*a*b^3*d^2+4*b^4*d^2-49*a^3*c*d^2+10*a^2*b*c*d^2-18*a*b^2*c*d^2-24*b^3*c*d^2+a^2*c^2*d^2-44*a*b*c^2*d^2+19*b^2*c^2*d^2+2*a*c^3*d^2-16*b*c^3*d^2+23*c^4*d^2-34*a^3*d^3+29*a^2*b*d^3+18*a*b^2*d^3-31*b^3*d^3-26*a^2*c*d^3+35*a*b*c*d^3-2*b^2*c*d^3-3*a*c^2*d^3-8*b*c^2*d^3+50*c^3*d^3-11*a^2*d^4+30*a*b*d^4-41*b^2*d^4+41*a*c*d^4+12*b*c*d^4+2*c^2*d^4+44*a*d^5+5*b*d^5-8*c*d^5-37*d^6+10*a^5*e+20*a^4*b*e-32*a^3*b^2*e-7*a^2*b^3*e-11*a*b^4*e-3*b^5*e+47*a^4*c*e-39*a^3*b*c*e+27*a^2*b^2*c*e+14*a*b^3*c*e+25*b^4*c*e+45*a^3*c^2*e-22*a^2*b*c^2*e-4*a*b^2*c^2*e+8*b^3*c^2*e+10*a^2*c^3*e-18*a*b*c^3*e-25*b^2*c^3*e-35*a*c^4*e+7*b*c^4*e+44*c^5*e+13*a^4*d*e-17*a^3*b*d*e+23*a^2*b^2*d*e-4*a*b^3*d*e+23*b^4*d*e-4*a^3*c*d*e+34*a^2*b*c*d*e+48*a*b^2*c*d*e-32*b^3*c*d*e-44*a^2*c^2*d*e+37*a*b*c^2*d*e-38*b^2*c^2*d*e-23*a*c^3*d*e-42*b*c^3*d*e-19*c^4*d*e-48*a^3*d^2*e+29*a^2*b*d^2*e-25*a*b^2*d^2*e+36*b^3*d^2*e-46*a^2*c*d^2*e+37*a*b*c*d^2*e+28*b^2*c*d^2*e+12*a*c^2*d^2*e+2*b*c^2*d^2*e-13*c^3*d^2*e-40*a^2*d^3*e+44*a*b*d^3*e+29*b^2*d^3*e+20*a*c*d^3*e+23*b*c*d^3*e-44*c^2*d^3*e+23*a*d^4*e+22*b*d^4*e+12*c*d^4*e-16*d^5*e+50*a^4*e^2+12*a^3*b*e^2-16*a^2*b^2*e^2+27*a*b^3*e^2+27*b^4*e^2-25*a^3*c*e^2+13*a^2*b*c*e^2-21*a*b^2*c*e^2+46*b^3*c*e^2-6*a^2*c^2*e^2+13*a*b*c^2*e^2-8*b^2*c^2*e^2+39*a*c^3*e^2+36*b*c^3*e^2+46*c^4*e^2-9*a^3*d*e^2-35*a^2*b*d*e^2-47*a*b^2*d*e^2-41*b^3*d*e^2+26*a^2*c*d*e^2-38*a*b*c*d*e^2+48*b^2*c*d*e^2-36*a*c^2*d*e^2+32*b*c^2*d*e^2-17*c^3*d*e^2+39*a^2*d^2*e^2-a*b*d^2*e^2+48*a*c*d^2*e^2-20*b*c*d^2*e^2-49*c^2*d^2*e^2-37*a*d^3*e^2-8*b*d^3*e^2-c*d^3*e^2-8*d^4*e^2-47*a^3*e^3+2*a^2*b*e^3-14*a*b^2*e^3-32*b^3*e^3+18*a^2*c*e^3+49*a*b*c*e^3-43*b^2*c*e^3-8*a*c^2*e^3-36*b*c^2*e^3+18*c^3*e^3+11*a^2*d*e^3+4*a*b*d*e^3+49*b^2*d*e^3+26*a*c*d*e^3+5*b*c*d*e^3-14*c^2*d*e^3+12*a*d^2*e^3+b*d^2*e^3-49*c*d^2*e^3+24*d^3*e^3+11*a^2*e^4-43*a*b*e^4-36*b^2*e^4+30*a*c*e^4-12*b*c*e^4+10*c^2*e^4-29*a*d*e^4-12*b*d*e^4+37*c*d*e^4+46*d^2*e^4+34*a*e^5+14*b*e^5-26*c*e^5+d*e^5+35*e^6,
    3158 b^5*d-5*a^4*d^2-29*a^3*b*d^2-36*a^2*b^2*d^2-11*a*b^3*d^2+32*b^4*d^2-17*a^3*c*d^2+47*a^2*b*c*d^2+16*a*b^2*c*d^2-24*b^3*c*d^2+12*a^2*c^2*d^2+20*a*b*c^2*d^2-24*b^2*c^2*d^2-10*a*c^3*d^2-26*b*c^3*d^2+22*c^4*d^2-14*a^3*d^3-49*a^2*b*d^3-44*a*b^2*d^3-20*b^3*d^3+11*a^2*c*d^3-45*a*b*c*d^3-5*b^2*c*d^3-19*a*c^2*d^3-10*b*c^2*d^3-35*c^3*d^3-13*a^2*d^4+18*a*b*d^4+10*b^2*d^4+46*a*c*d^4+15*b*c*d^4-13*c^2*d^4-8*a*d^5+50*b*d^5+2*c*d^5-43*d^6-18*a^5*e-2*a^4*b*e-31*a^3*b^2*e-37*a^2*b^3*e+32*a*b^4*e-4*b^5*e+19*a^4*c*e-42*a^3*b*c*e+40*a^2*b^2*c*e+37*a*b^3*c*e+17*b^4*c*e+39*a^3*c^2*e+10*a^2*b*c^2*e-38*a*b^2*c^2*e+4*b^3*c^2*e+18*a^2*c^3*e+35*a*b*c^3*e-29*b^2*c^3*e-19*a*c^4*e-4*b*c^4*e+28*c^5*e+17*a^4*d*e-20*a^3*b*d*e+18*a^2*b^2*d*e+11*a*b^3*d*e+30*b^4*d*e-2*a^3*c*d*e+43*a^2*b*c*d*e+46*a*b^2*c*d*e+14*b^3*c*d*e+48*a^2*c^2*d*e-5*a*b*c^2*d*e-7*b^2*c^2*d*e+13*a*c^3*d*e+11*b*c^3*d*e+48*c^4*d*e+41*a^3*d^2*e+10*a^2*b*d^2*e-43*a*b^2*d^2*e-41*b^3*d^2*e+47*a^2*c*d^2*e-42*a*b*c*d^2*e+34*b^2*c*d^2*e+34*a*c^2*d^2*e-14*b*c^2*d^2*e-16*c^3*d^2*e-39*a^2*d^3*e+23*a*b*d^3*e-32*b^2*d^3*e-20*a*c*d^3*e+7*b*c*d^3*e-4*c^2*d^3*e+2*a*d^4*e+42*b*d^4*e-38*c*d^4*e-14*d^5*e-9*a^4*e^2+2*a^3*b*e^2-20*a^2*b^2*e^2-15*a*b^3*e^2+30*b^4*e^2-44*a^3*c*e^2-47*a^2*b*c*e^2+11*a*b^2*c*e^2+20*b^3*c*e^2-2*a^2*c^2*e^2+4*a*b*c^2*e^2+49*b^2*c^2*e^2-41*a*c^3*e^2-36*b*c^3*e^2+31*c^4*e^2+22*a^3*d*e^2+39*a^2*b*d*e^2-21*a*b^2*d*e^2+26*b^3*d*e^2+28*a^2*c*d*e^2+41*a*b*c*d*e^2-14*b^2*c*d*e^2+44*a*c^2*d*e^2+27*b*c^2*d*e^2-25*c^3*d*e^2-28*a^2*d^2*e^2-37*a*b*d^2*e^2+20*b^2*d^2*e^2+45*a*c*d^2*e^2+45*b*c*d^2*e^2-28*c^2*d^2*e^2-18*a*d^3*e^2+5*b*d^3*e^2-3*c*d^3*e^2+17*d^4*e^2+18*a^3*e^3+46*a^2*b*e^3+28*a*b^2*e^3-22*b^3*e^3-15*a^2*c*e^3+30*a*b*c*e^3-40*b^2*c*e^3-20*a*c^2*e^3+10*b*c^2*e^3-31*c^3*e^3+19*a^2*d*e^3+29*a*b*d*e^3+12*b^2*d*e^3-39*a*c*d*e^3-32*b*c*d*e^3+12*a*d^2*e^3-26*c*d^2*e^3+14*a^2*e^4+40*a*b*e^4-b^2*e^4+15*a*c*e^4+27*b*c*e^4+34*c^2*e^4-30*a*d*e^4+25*b*d*e^4-50*c*d*e^4+35*d^2*e^4+25*a*e^5+21*b*e^5-10*c*e^5-4*d*e^5-43*e^6,
    3159 a*b^4*d+47*a^4*d^2+25*a^3*b*d^2-13*a^2*b^2*d^2+26*a*b^3*d^2-24*b^4*d^2-4*a^3*c*d^2-30*a^2*b*c*d^2+11*a*b^2*c*d^2+49*b^3*c*d^2-11*a^2*c^2*d^2-4*a*b*c^2*d^2+44*b^2*c^2*d^2+46*a*c^3*d^2-3*b*c^3*d^2-30*c^4*d^2+8*a^3*d^3+49*a^2*b*d^3+33*a*b^2*d^3+8*b^3*d^3-34*a^2*c*d^3-29*a*b*c*d^3-35*b^2*c*d^3-10*a*c^2*d^3+13*b*c^2*d^3-22*c^3*d^3+8*a^2*d^4+2*a*b*d^4+7*b^2*d^4-14*a*c*d^4+40*b*c*d^4+41*c^2*d^4-14*a*d^5+10*c*d^5-11*d^6-43*a^5*e-2*a^4*b*e-10*a^3*b^2*e-39*a^2*b^3*e+15*a*b^4*e-8*b^5*e+19*a^4*c*e+35*a^3*b*c*e+48*a^2*b^2*c*e-24*a*b^3*c*e-41*b^4*c*e-24*a^3*c^2*e+35*a^2*b*c^2*e-47*a*b^2*c^2*e+28*b^3*c^2*e-10*a^2*c^3*e+28*a*b*c^3*e-43*b^2*c^3*e+10*a*c^4*e-26*b*c^4*e-30*c^5*e+3*a^4*d*e-42*a^3*b*d*e-23*a^2*b^2*d*e+41*a*b^3*d*e+12*b^4*d*e-16*a^3*c*d*e+4*a^2*b*c*d*e+30*a*b^2*c*d*e+14*b^3*c*d*e+15*a^2*c^2*d*e-11*a*b*c^2*d*e+34*b^2*c^2*d*e-48*a*c^3*d*e+15*b*c^3*d*e+38*c^4*d*e+26*a^3*d^2*e-41*a^2*b*d^2*e-8*a*b^2*d^2*e+44*b^3*d^2*e-7*a^2*c*d^2*e+11*a*b*c*d^2*e-3*b^2*c*d^2*e+42*a*c^2*d^2*e+31*b*c^2*d^2*e-35*c^3*d^2*e-23*a^2*d^3*e+47*a*b*d^3*e+26*b^2*d^3*e+40*a*c*d^3*e-24*b*c*d^3*e-34*c^2*d^3*e+4*a*d^4*e-48*b*d^4*e-49*c*d^4*e-23*d^5*e-5*a^4*e^2-15*a^3*b*e^2+5*a^2*b^2*e^2+41*a*b^3*e^2-7*b^4*e^2-35*a^3*c*e^2+5*a^2*b*c*e^2+25*a*b^2*c*e^2-50*b^3*c*e^2+23*a^2*c^2*e^2+43*a*b*c^2*e^2+41*b^2*c^2*e^2+9*a*c^3*e^2-36*b*c^3*e^2-49*c^4*e^2-36*a^3*d*e^2-43*a^2*b*d*e^2-24*a*b^2*d*e^2+34*b^3*d*e^2-29*a^2*c*d*e^2-48*a*b*c*d*e^2+42*b^2*c*d*e^2+34*a*c^2*d*e^2+20*b*c^2*d*e^2-31*c^3*d*e^2+18*a^2*d^2*e^2-3*a*b*d^2*e^2+24*b^2*d^2*e^2-39*a*c*d^2*e^2+39*b*c*d^2*e^2-48*c^2*d^2*e^2-30*a*d^3*e^2-28*b*d^3*e^2+4*c*d^3*e^2+13*d^4*e^2-30*a^3*e^3+47*a^2*b*e^3+2*a*b^2*e^3+31*b^3*e^3+35*a^2*c*e^3+36*a*b*c*e^3-47*b^2*c*e^3+48*a*c^2*e^3-8*b*c^2*e^3-23*c^3*e^3+35*a^2*d*e^3+21*a*b*d*e^3+17*b^2*d*e^3-15*a*c*d*e^3-41*b*c*d*e^3+13*c^2*d*e^3+17*a*d^2*e^3-19*b*d^2*e^3+26*c*d^2*e^3-26*d^3*e^3-38*a^2*e^4+17*a*b*e^4+22*b^2*e^4-6*a*c*e^4-18*b*c*e^4+42*c^2*e^4+26*a*d*e^4-19*b*d*e^4-36*c*d*e^4-22*d^2*e^4+44*a*e^5+32*b*e^5-15*c*e^5-16*d*e^5+2*e^6,
    3160 a^2*b^3*d-26*a^4*d^2+24*a^3*b*d^2-21*a^2*b^2*d^2-7*a*b^3*d^2-39*b^4*d^2-47*a^3*c*d^2+37*a^2*b*c*d^2+24*a*b^2*c*d^2-6*b^3*c*d^2+20*a^2*c^2*d^2-4*b^2*c^2*d^2+21*a*c^3*d^2-15*b*c^3*d^2-22*c^4*d^2-23*a^3*d^3+21*a^2*b*d^3-16*a*b^2*d^3-38*b^3*d^3-16*a^2*c*d^3+7*a*b*c*d^3-37*b^2*c*d^3-12*a*c^2*d^3+42*b*c^2*d^3+40*c^3*d^3-35*a^2*d^4+29*a*b*d^4-b^2*d^4+21*a*c*d^4+47*b*c*d^4-22*c^2*d^4-11*a*d^5-44*b*d^5+49*c*d^5+33*d^6-35*a^5*e-41*a^4*b*e+17*a^3*b^2*e-6*a^2*b^3*e-12*a*b^4*e+36*b^5*e-6*a^4*c*e-28*a^3*b*c*e+22*a^2*b^2*c*e+10*a*b^3*c*e-34*b^4*c*e+28*a^3*c^2*e-2*a^2*b*c^2*e-48*a*b^2*c^2*e-28*b^3*c^2*e+42*a^2*c^3*e+30*a*b*c^3*e-43*b^2*c^3*e-34*a*c^4*e+33*b*c^4*e-38*c^5*e+39*a^4*d*e-27*a^3*b*d*e+44*a^2*b^2*d*e+12*a*b^3*d*e+18*b^4*d*e-19*a^3*c*d*e-42*a^2*b*c*d*e+24*a*b^2*c*d*e-49*b^3*c*d*e+17*a^2*c^2*d*e+3*a*b*c^2*d*e+39*b^2*c^2*d*e-31*a*c^3*d*e-8*b*c^3*d*e+42*c^4*d*e-42*a^3*d^2*e+49*a^2*b*d^2*e-17*a*b^2*d^2*e-49*b^3*d^2*e-20*a^2*c*d^2*e-11*a*b*c*d^2*e-17*b^2*c*d^2*e+16*a*c^2*d^2*e+41*b*c^2*d^2*e+50*c^3*d^2*e-28*a^2*d^3*e+44*a*b*d^3*e-25*b^2*d^3*e-24*a*c*d^3*e-b*c*d^3*e-45*c^2*d^3*e-3*a*d^4*e-26*b*d^4*e-12*c*d^4*e+4*d^5*e+5*a^4*e^2+28*a^3*b*e^2-42*a^2*b^2*e^2+33*a*b^3*e^2-15*b^4*e^2-40*a^3*c*e^2+47*a^2*b*c*e^2-4*a*b^2*c*e^2-22*b^3*c*e^2-35*a^2*c^2*e^2-8*a*b*c^2*e^2-11*b^2*c^2*e^2-37*a*c^3*e^2-23*b*c^3*e^2+33*c^4*e^2-34*a^3*d*e^2+16*a^2*b*d*e^2-38*a*b^2*d*e^2+32*b^3*d*e^2+10*a^2*c*d*e^2-30*a*b*c*d*e^2+32*b^2*c*d*e^2-6*a*c^2*d*e^2-45*b*c^2*d*e^2-5*c^3*d*e^2-16*a^2*d^2*e^2-14*a*b*d^2*e^2+22*b^2*d^2*e^2+4*a*c*d^2*e^2-37*b*c*d^2*e^2-28*c^2*d^2*e^2-16*a*d^3*e^2+6*b*d^3*e^2+9*c*d^3*e^2-46*d^4*e^2-10*a^3*e^3-50*a^2*b*e^3+18*a*b^2*e^3+20*b^3*e^3-34*a^2*c*e^3+33*a*b*c*e^3-17*b^2*c*e^3-19*a*c^2*e^3-5*b*c^2*e^3+19*c^3*e^3-23*a^2*d*e^3+4*a*b*d*e^3+28*b^2*d*e^3+17*a*c*d*e^3+7*b*c*d*e^3+39*c^2*d*e^3+4*a*d^2*e^3-39*b*d^2*e^3-16*c*d^2*e^3-23*d^3*e^3-23*a^2*e^4-16*a*b*e^4-2*b^2*e^4-24*a*c*e^4-5*b*c*e^4+45*c^2*e^4-10*a*d*e^4-b*d*e^4+50*c*d*e^4+31*d^2*e^4+31*a*e^5-37*b*e^5-44*c*e^5+37*d*e^5-43*e^6,
    3161 a^3*b^2*d-42*a^4*d^2-17*a^3*b*d^2-23*a^2*b^2*d^2-17*a*b^3*d^2-27*b^4*d^2-50*a^3*c*d^2+27*a^2*b*c*d^2-30*a*b^2*c*d^2-7*b^3*c*d^2+21*a^2*c^2*d^2+13*a*b*c^2*d^2+29*b^2*c^2*d^2-46*a*c^3*d^2+43*b*c^3*d^2-2*c^4*d^2-2*a^3*d^3+45*a^2*b*d^3-15*a*b^2*d^3-47*b^3*d^3-17*a^2*c*d^3-25*a*b*c*d^3+9*b^2*c*d^3-24*a*c^2*d^3+32*b*c^2*d^3+37*c^3*d^3+14*a^2*d^4+23*a*b*d^4+49*b^2*d^4+10*a*c*d^4+19*b*c*d^4-13*c^2*d^4-9*a*d^5+44*b*d^5+39*c*d^5-28*d^6-2*a^5*e+5*a^4*b*e-36*a^3*b^2*e-12*a^2*b^3*e+2*a*b^4*e+15*b^5*e-31*a^4*c*e-3*a^3*b*c*e+46*a^2*b^2*c*e+33*a*b^3*c*e+16*b^4*c*e+24*a^3*c^2*e-36*a^2*b*c^2*e+10*a*b^2*c^2*e+4*b^3*c^2*e+44*a^2*c^3*e+18*a*b*c^3*e-37*b^2*c^3*e-47*a*c^4*e+32*b*c^4*e-29*c^5*e+14*a^4*d*e+6*a^3*b*d*e+44*a^2*b^2*d*e+23*a*b^3*d*e+33*b^4*d*e-7*a^3*c*d*e+10*a^2*b*c*d*e+30*a*b^2*c*d*e+41*b^3*c*d*e-50*a^2*c^2*d*e+a*b*c^2*d*e+33*b^2*c^2*d*e-26*a*c^3*d*e-32*b*c^3*d*e+47*c^4*d*e+39*a^3*d^2*e+40*a^2*b*d^2*e+6*a*b^2*d^2*e+30*b^3*d^2*e-30*a^2*c*d^2*e-21*a*b*c*d^2*e-41*b^2*c*d^2*e-21*a*c^2*d^2*e-17*b*c^2*d^2*e-21*c^3*d^2*e+26*a^2*d^3*e+50*a*b*d^3*e+39*b^2*d^3*e-34*a*c*d^3*e-25*b*c*d^3*e-34*c^2*d^3*e+9*a*d^4*e-40*b*d^4*e-45*c*d^4*e-3*d^5*e-34*a^4*e^2-22*a^3*b*e^2-5*a^2*b^2*e^2+45*a*b^3*e^2-16*b^4*e^2-12*a^3*c*e^2+33*a^2*b*c*e^2+31*a*b^2*c*e^2+19*b^3*c*e^2+49*a^2*c^2*e^2-19*a*b*c^2*e^2+8*b^2*c^2*e^2+32*a*c^3*e^2+31*b*c^3*e^2+21*c^4*e^2+13*a^3*d*e^2-35*a^2*b*d*e^2-29*a*b^2*d*e^2-41*b^3*d*e^2+11*a^2*c*d*e^2+46*a*b*c*d*e^2+b^2*c*d*e^2+5*a*c^2*d*e^2+18*c^3*d*e^2-17*a^2*d^2*e^2+45*a*b*d^2*e^2-40*b^2*d^2*e^2-6*a*c*d^2*e^2-32*b*c*d^2*e^2-19*c^2*d^2*e^2+48*a*d^3*e^2+41*b*d^3*e^2-30*c*d^3*e^2-38*d^4*e^2+4*a^3*e^3+8*a^2*b*e^3-49*a*b^2*e^3+36*b^3*e^3-5*a^2*c*e^3-21*a*b*c*e^3-27*b^2*c*e^3+5*a*c^2*e^3+31*b*c^2*e^3+15*c^3*e^3+41*a^2*d*e^3+19*a*b*d*e^3+10*b^2*d*e^3+41*a*c*d*e^3+45*b*c*d*e^3+12*c^2*d*e^3-28*a*d^2*e^3+14*b*d^2*e^3+4*c*d^2*e^3-25*d^3*e^3+38*a^2*e^4+37*a*b*e^4-15*b^2*e^4-11*a*c*e^4-24*b*c*e^4+33*c^2*e^4-31*a*d*e^4+14*b*d*e^4+49*c*d*e^4+34*d^2*e^4-34*a*e^5-23*b*e^5+50*c*e^5+19*d*e^5+26*e^6,
    3162 a^4*b*d+4*a^4*d^2-24*a^3*b*d^2+8*a^2*b^2*d^2-24*a*b^3*d^2-b^4*d^2+31*a^3*c*d^2-45*a^2*b*c*d^2-12*a*b^2*c*d^2+45*b^3*c*d^2+29*a^2*c^2*d^2+41*a*b*c^2*d^2-2*b^2*c^2*d^2-44*a*c^3*d^2-9*b*c^3*d^2+32*c^4*d^2+50*a^3*d^3-6*a^2*b*d^3+11*a*b^2*d^3-6*b^3*d^3-36*a^2*c*d^3-13*a*b*c*d^3-44*b^2*c*d^3+35*a*c^2*d^3+29*b*c^2*d^3-32*c^3*d^3+45*a^2*d^4-24*a*b*d^4-b^2*d^4+48*a*c*d^4+29*b*c*d^4+43*c^2*d^4+34*a*d^5-b*d^5+14*c*d^5+12*d^6-50*a^5*e-26*a^4*b*e-38*a^3*b^2*e-5*a^2*b^3*e+41*a*b^4*e+38*b^5*e-14*a^4*c*e+46*a^3*b*c*e-14*a^2*b^2*c*e-24*a*b^3*c*e+31*b^4*c*e-24*a^3*c^2*e-50*a^2*b*c^2*e+47*a*b^2*c^2*e+42*b^3*c^2*e-15*a^2*c^3*e-26*a*b*c^3*e+26*b^2*c^3*e-38*a*c^4*e-34*b*c^4*e+44*c^5*e-29*a^4*d*e+26*a^3*b*d*e-25*a^2*b^2*d*e+41*a*b^3*d*e+46*b^4*d*e+46*a^3*c*d*e-28*a^2*b*c*d*e-10*a*b^2*c*d*e+18*b^3*c*d*e+28*a^2*c^2*d*e+25*a*b*c^2*d*e-8*b^2*c^2*d*e-36*a*c^3*d*e+50*b*c^3*d*e-25*c^4*d*e+7*a^3*d^2*e+29*a^2*b*d^2*e-50*a*b^2*d^2*e-34*b^3*d^2*e-6*a^2*c*d^2*e-13*a*b*c*d^2*e+21*b^2*c*d^2*e+32*a*c^2*d^2*e-10*b*c^2*d^2*e-19*c^3*d^2*e-27*a^2*d^3*e+46*a*b*d^3*e-4*b^2*d^3*e+17*a*c*d^3*e+11*b*c*d^3*e+7*c^2*d^3*e+18*a*d^4*e-23*b*d^4*e-45*c*d^4*e+40*d^5*e+36*a^4*e^2-2*a^3*b*e^2-17*a^2*b^2*e^2+11*a*b^3*e^2+49*b^4*e^2-31*a^3*c*e^2+8*a^2*b*c*e^2-12*a*b^2*c*e^2-15*b^3*c*e^2+14*a^2*c^2*e^2-a*b*c^2*e^2+38*b^2*c^2*e^2-40*a*c^3*e^2-25*b*c^3*e^2+34*c^4*e^2-2*a^3*d*e^2-19*a^2*b*d*e^2+35*a*b^2*d*e^2-49*b^3*d*e^2-20*a^2*c*d*e^2+47*a*b*c*d*e^2-42*b^2*c*d*e^2+41*a*c^2*d*e^2+23*b*c^2*d*e^2+22*c^3*d*e^2-16*a^2*d^2*e^2+14*a*b*d^2*e^2-10*b^2*d^2*e^2+47*a*c*d^2*e^2+43*b*c*d^2*e^2+50*c^2*d^2*e^2-35*b*d^3*e^2+45*c*d^3*e^2+5*d^4*e^2+18*a^3*e^3+42*a^2*b*e^3+a*b^2*e^3+26*b^3*e^3+16*a^2*c*e^3+40*b^2*c*e^3-27*a*c^2*e^3-9*b*c^2*e^3-26*c^3*e^3-24*a^2*d*e^3-6*a*b*d*e^3-26*b^2*d*e^3+47*a*c*d*e^3-40*b*c*d*e^3+30*c^2*d*e^3-46*a*d^2*e^3-27*b*d^2*e^3-42*c*d^2*e^3-10*d^3*e^3+25*a^2*e^4+a*b*e^4-15*b^2*e^4-13*a*c*e^4-33*b*c*e^4+20*c^2*e^4+5*a*d*e^4-42*b*d*e^4-5*c*d*e^4-24*d^2*e^4-34*a*e^5+35*b*e^5-27*c*e^5-43*d*e^5-43*e^6,
    3163 a^5*d+14*a^4*d^2-3*a^3*b*d^2+7*a^2*b^2*d^2-31*a*b^3*d^2-42*b^4*d^2-16*a^3*c*d^2+36*a^2*b*c*d^2-17*a*b^2*c*d^2-15*b^3*c*d^2+17*a^2*c^2*d^2+36*a*b*c^2*d^2+12*b^2*c^2*d^2-47*a*c^3*d^2-16*b*c^3*d^2-9*c^4*d^2-38*a^3*d^3-43*a^2*b*d^3+2*a*b^2*d^3-44*b^3*d^3-12*a^2*c*d^3+32*a*b*c*d^3+21*b^2*c*d^3-10*a*c^2*d^3-28*b*c^2*d^3-c^3*d^3+18*a^2*d^4-13*a*b*d^4+13*b^2*d^4+31*a*c*d^4+27*b*c*d^4+34*c^2*d^4-19*a*d^5-36*b*d^5-46*c*d^5+11*d^6-26*a^5*e-24*a^4*b*e-5*a^3*b^2*e+27*a^2*b^3*e-6*a*b^4*e-30*b^5*e+35*a^4*c*e-42*a^3*b*c*e+a^2*b^2*c*e-22*a*b^3*c*e+12*b^4*c*e+7*a^3*c^2*e-26*a^2*b*c^2*e-43*a*b^2*c^2*e-18*b^3*c^2*e+10*a^2*c^3*e-10*a*b*c^3*e+48*b^2*c^3*e-19*a*c^4*e-29*b*c^4*e-3*c^5*e+20*a^4*d*e+10*a^3*b*d*e+28*a^2*b^2*d*e+14*a*b^3*d*e-15*b^4*d*e-7*a^3*c*d*e-24*a^2*b*c*d*e-26*a*b^2*c*d*e+32*b^3*c*d*e+2*a^2*c^2*d*e+16*a*b*c^2*d*e+44*b^2*c^2*d*e-48*a*c^3*d*e+7*b*c^3*d*e+3*c^4*d*e-8*a^3*d^2*e+23*a^2*b*d^2*e-39*a*b^2*d^2*e+35*b^3*d^2*e-2*a^2*c*d^2*e-17*a*b*c*d^2*e+46*b^2*c*d^2*e-26*a*c^2*d^2*e+7*b*c^2*d^2*e+47*c^3*d^2*e-38*a^2*d^3*e+12*a*b*d^3*e-14*b^2*d^3*e-a*c*d^3*e+12*b*c*d^3*e+30*c^2*d^3*e-50*a*d^4*e-34*b*d^4*e-6*c*d^4*e-24*d^5*e-37*a^4*e^2-15*a^3*b*e^2+17*a^2*b^2*e^2+26*a*b^3*e^2-31*b^4*e^2+14*a^3*c*e^2+30*a^2*b*c*e^2-9*a*b^2*c*e^2-42*b^3*c*e^2-39*a^2*c^2*e^2-43*a*b*c^2*e^2+41*b^2*c^2*e^2-38*a*c^3*e^2-47*b*c^3*e^2+33*c^4*e^2+15*a^3*d*e^2-36*a^2*b*d*e^2+6*a*b^2*d*e^2-15*b^3*d*e^2+24*a^2*c*d*e^2-50*a*b*c*d*e^2-6*b^2*c*d*e^2-41*a*c^2*d*e^2+42*b*c^2*d*e^2+28*c^3*d*e^2-19*a^2*d^2*e^2-47*a*b*d^2*e^2+49*b^2*d^2*e^2-41*a*c*d^2*e^2-3*b*c*d^2*e^2-38*c^2*d^2*e^2+4*a*d^3*e^2-30*b*d^3*e^2+47*c*d^3*e^2+11*d^4*e^2-44*a^3*e^3-25*a^2*b*e^3+18*a*b^2*e^3-14*b^3*e^3+18*a^2*c*e^3-15*a*b*c*e^3+32*b^2*c*e^3+38*a*c^2*e^3-30*b*c^2*e^3-3*c^3*e^3-33*a^2*d*e^3-42*a*b*d*e^3-8*b^2*d*e^3-14*a*c*d*e^3+49*b*c*d*e^3-40*c^2*d*e^3-40*a*d^2*e^3+32*b*d^2*e^3-40*c*d^2*e^3+11*d^3*e^3-43*a^2*e^4-29*a*b*e^4+9*b^2*e^4-20*a*c*e^4+14*b*c*e^4+38*c^2*e^4-32*a*d*e^4+22*b*d*e^4-9*c*d*e^4-34*d^2*e^4+6*a*e^5-15*b*e^5+13*c*e^5-40*d*e^5-40*e^6,
    3164 c^6+36*a^4*d^2-8*a^3*b*d^2-40*a^2*b^2*d^2-45*a*b^3*d^2+36*b^4*d^2-21*a^3*c*d^2-27*a^2*b*c*d^2+46*a*b^2*c*d^2+30*b^3*c*d^2+4*a*b*c^2*d^2-20*b^2*c^2*d^2+3*a*c^3*d^2-48*b*c^3*d^2-29*c^4*d^2+13*a^3*d^3-3*a^2*b*d^3-13*a*b^2*d^3-38*b^3*d^3+35*a^2*c*d^3-5*a*b*c*d^3-46*b^2*c*d^3-26*a*c^2*d^3-20*b*c^2*d^3-4*c^3*d^3+6*a^2*d^4-14*a*b*d^4+16*b^2*d^4+44*a*c*d^4-10*b*c*d^4+15*c^2*d^4+31*a*d^5-22*b*d^5-36*c*d^5-34*d^6-28*a^5*e+46*a^4*b*e+5*a^3*b^2*e+36*a^2*b^3*e-2*a*b^4*e+13*b^5*e-40*a^4*c*e+31*a^3*b*c*e+49*a^2*b^2*c*e+50*a*b^3*c*e+8*b^4*c*e-23*a^2*b*c^2*e+7*a*b^2*c^2*e+36*b^3*c^2*e-12*a^2*c^3*e-a*b*c^3*e-32*b^2*c^3*e+33*a*c^4*e-45*b*c^4*e+7*c^5*e-13*a^4*d*e-38*a^3*b*d*e+17*a^2*b^2*d*e-33*a*b^3*d*e-33*b^4*d*e-47*a^3*c*d*e+42*a^2*b*c*d*e-5*a*b^2*c*d*e-35*b^3*c*d*e-34*a^2*c^2*d*e-36*a*b*c^2*d*e+17*b^2*c^2*d*e+19*a*c^3*d*e+41*b*c^3*d*e-8*c^4*d*e-15*a^3*d^2*e-10*a^2*b*d^2*e-37*a*b^2*d^2*e-40*b^3*d^2*e-2*a^2*c*d^2*e-28*a*b*c*d^2*e+30*b^2*c*d^2*e+45*a*c^2*d^2*e+26*b*c^2*d^2*e-20*c^3*d^2*e-48*a^2*d^3*e+16*a*b*d^3*e+12*b^2*d^3*e+47*a*c*d^3*e-11*b*c*d^3*e+27*c^2*d^3*e-29*a*d^4*e+33*b*d^4*e+6*c*d^4*e-10*d^5*e-2*a^4*e^2-27*a^3*b*e^2-18*a^2*b^2*e^2-46*a*b^3*e^2-19*b^4*e^2+9*a^3*c*e^2+45*a^2*b*c*e^2+30*a*b^2*c*e^2+35*b^3*c*e^2-31*a^2*c^2*e^2+33*a*b*c^2*e^2+36*b^2*c^2*e^2-18*a*c^3*e^2+5*b*c^3*e^2-8*c^4*e^2-37*a^3*d*e^2+46*a^2*b*d*e^2-37*a*b^2*d*e^2+28*b^3*d*e^2+6*a^2*c*d*e^2-24*a*b*c*d*e^2+9*b^2*c*d*e^2+36*a*c^2*d*e^2-44*b*c^2*d*e^2+32*c^3*d*e^2+49*a^2*d^2*e^2-44*a*b*d^2*e^2-12*b^2*d^2*e^2-6*a*c*d^2*e^2+7*b*c*d^2*e^2-2*c^2*d^2*e^2+17*a*d^3*e^2-15*b*d^3*e^2+18*c*d^3*e^2-24*d^4*e^2-26*a^3*e^3+44*a^2*b*e^3-28*a*b^2*e^3+28*b^3*e^3-8*a^2*c*e^3+6*a*b*c*e^3-12*b^2*c*e^3-25*a*c^2*e^3-37*b*c^2*e^3+36*c^3*e^3-18*a^2*d*e^3-38*a*b*d*e^3+b^2*d*e^3+3*a*c*d*e^3+47*b*c*d*e^3+3*c^2*d*e^3-5*a*d^2*e^3-34*c*d^2*e^3-11*d^3*e^3-19*a^2*e^4+16*a*b*e^4+17*b^2*e^4+23*a*c*e^4-26*b*c*e^4+10*c^2*e^4+23*a*d*e^4-30*b*d*e^4-46*c*d*e^4-13*d^2*e^4-23*a*e^5+41*b*e^5+6*c*e^5-50*d*e^5+28*e^6,
    3165 b*c^5+8*a^4*d^2-16*a^3*b*d^2+26*a^2*b^2*d^2+a*b^3*d^2+40*b^4*d^2-34*a^3*c*d^2+5*a^2*b*c*d^2+18*a*b^2*c*d^2-30*b^3*c*d^2+9*a^2*c^2*d^2+30*a*b*c^2*d^2-17*b^2*c^2*d^2+26*a*c^3*d^2+49*b*c^3*d^2+42*c^4*d^2+2*a^3*d^3+28*a^2*b*d^3-7*a*b^2*d^3-37*b^3*d^3+38*a^2*c*d^3-5*a*b*c*d^3-13*b^2*c*d^3-11*a*c^2*d^3-37*b*c^2*d^3+4*c^3*d^3-8*a^2*d^4-9*a*b*d^4+28*b^2*d^4+4*a*c*d^4+27*b*c*d^4+39*c^2*d^4+9*a*d^5-24*b*d^5+27*c*d^5+13*d^6-23*a^5*e-41*a^4*b*e-23*a^3*b^2*e+28*a^2*b^3*e+29*a*b^4*e-49*b^5*e-4*a^4*c*e-16*a^3*b*c*e-16*a^2*b^2*c*e+29*a*b^3*c*e-15*b^4*c*e-27*a^3*c^2*e+44*a^2*b*c^2*e-23*a*b^2*c^2*e-18*b^3*c^2*e-24*a^2*c^3*e-12*b^2*c^3*e-48*a*c^4*e+12*b*c^4*e+28*c^5*e-49*a^4*d*e+18*a^3*b*d*e+40*a^2*b^2*d*e-5*a*b^3*d*e-23*b^4*d*e-9*a^3*c*d*e-12*a^2*b*c*d*e-39*a*b^2*c*d*e-43*b^3*c*d*e+36*a^2*c^2*d*e+19*a*b*c^2*d*e+11*b^2*c^2*d*e+24*a*c^3*d*e+22*b*c^3*d*e+14*c^4*d*e-23*a^3*d^2*e-14*a^2*b*d^2*e+47*a*b^2*d^2*e+32*b^3*d^2*e+47*a^2*c*d^2*e+26*a*b*c*d^2*e-39*b^2*c*d^2*e+11*a*c^2*d^2*e-44*b*c^2*d^2*e-20*c^3*d^2*e-23*a^2*d^3*e-3*a*b*d^3*e-11*b^2*d^3*e-34*a*c*d^3*e+5*b*c*d^3*e-3*c^2*d^3*e-6*a*d^4*e-15*b*d^4*e+41*c*d^4*e+18*d^5*e+44*a^4*e^2-49*a^3*b*e^2+38*a^2*b^2*e^2+7*a*b^3*e^2-11*b^4*e^2+2*a^3*c*e^2-6*a^2*b*c*e^2-34*a*b^2*c*e^2-21*b^3*c*e^2+12*a^2*c^2*e^2+7*a*b*c^2*e^2-20*b^2*c^2*e^2-3*a*c^3*e^2-38*b*c^3*e^2-5*c^4*e^2-46*a^3*d*e^2-20*a^2*b*d*e^2+21*a*b^2*d*e^2-36*b^3*d*e^2-14*a^2*c*d*e^2+6*a*b*c*d*e^2+29*b^2*c*d*e^2+12*a*c^2*d*e^2-2*b*c^2*d*e^2+41*c^3*d*e^2+41*a^2*d^2*e^2+34*a*b*d^2*e^2-2*b^2*d^2*e^2+9*a*c*d^2*e^2+10*b*c*d^2*e^2-11*c^2*d^2*e^2+45*a*d^3*e^2+38*b*d^3*e^2-20*c*d^3*e^2-12*d^4*e^2-35*a^3*e^3+23*a*b^2*e^3+37*b^3*e^3+10*a^2*c*e^3+6*a*b*c*e^3+21*b^2*c*e^3-24*a*c^2*e^3+28*b*c^2*e^3+26*c^3*e^3+22*a^2*d*e^3+26*a*b*d*e^3+50*b^2*d*e^3+43*a*c*d*e^3+39*b*c*d*e^3-42*c^2*d*e^3-27*a*d^2*e^3+38*b*d^2*e^3+19*c*d^2*e^3-15*d^3*e^3+37*a^2*e^4+7*a*b*e^4-12*b^2*e^4-34*a*c*e^4+25*b*c*e^4+26*c^2*e^4+a*d*e^4-25*b*d*e^4-15*c*d*e^4-50*d^2*e^4-50*a*e^5-45*b*e^5+30*c*e^5+6*d*e^5+49*e^6,
    3166 a*c^5+28*a^4*d^2-23*a^3*b*d^2+10*a^2*b^2*d^2-36*a*b^3*d^2+6*b^4*d^2+25*a^3*c*d^2-47*a^2*b*c*d^2+28*a*b^2*c*d^2-36*b^3*c*d^2-31*a^2*c^2*d^2-35*a*b*c^2*d^2-42*b^2*c^2*d^2+20*a*c^3*d^2-45*b*c^3*d^2+49*c^4*d^2-24*a^3*d^3+25*a^2*b*d^3+27*a*b^2*d^3+49*b^3*d^3-9*a^2*c*d^3-46*a*b*c*d^3-39*b^2*c*d^3-9*a*c^2*d^3-46*b*c^2*d^3+43*c^3*d^3-35*a^2*d^4+11*a*b*d^4+15*b^2*d^4-4*a*c*d^4+42*b*c*d^4+19*c^2*d^4-35*a*d^5-23*b*d^5-45*c*d^5+6*d^6-36*a^5*e-35*a^4*b*e+47*a^3*b^2*e-20*a^2*b^3*e+28*a*b^4*e+37*b^5*e-50*a^4*c*e-35*a^3*b*c*e+a^2*b^2*c*e+15*a*b^3*c*e-2*b^4*c*e-10*a^3*c^2*e-50*a^2*b*c^2*e-34*a*b^2*c^2*e+28*b^3*c^2*e+18*a^2*c^3*e-13*a*b*c^3*e-17*b^2*c^3*e-19*a*c^4*e+9*b*c^4*e-43*c^5*e-29*a^4*d*e-17*a^3*b*d*e+47*a^2*b^2*d*e+26*a*b^3*d*e-13*b^4*d*e+11*a^3*c*d*e+5*a^2*b*c*d*e-25*a*b^2*c*d*e+26*b^3*c*d*e-17*a^2*c^2*d*e-37*a*b*c^2*d*e-7*b^2*c^2*d*e+28*a*c^3*d*e+28*b*c^3*d*e-16*c^4*d*e+30*a^3*d^2*e-25*a^2*b*d^2*e+9*a*b^2*d^2*e+34*b^3*d^2*e+2*a^2*c*d^2*e+30*a*b*c*d^2*e-37*b^2*c*d^2*e+33*a*c^2*d^2*e-5*b*c^2*d^2*e-4*c^3*d^2*e+50*a^2*d^3*e-50*a*b*d^3*e+9*b^2*d^3*e+11*a*c*d^3*e-31*b*c*d^3*e+29*c^2*d^3*e-37*a*d^4*e-22*b*d^4*e-20*c*d^4*e-30*d^5*e+19*a^4*e^2+42*a^3*b*e^2+43*a^2*b^2*e^2-22*a*b^3*e^2+40*b^4*e^2-12*a^3*c*e^2-37*a^2*b*c*e^2-38*a*b^2*c*e^2+47*b^3*c*e^2+33*a^2*c^2*e^2-26*a*b*c^2*e^2+8*b^2*c^2*e^2+43*a*c^3*e^2+43*b*c^3*e^2-26*c^4*e^2+13*a^3*d*e^2+7*a^2*b*d*e^2-38*a*b^2*d*e^2+28*b^3*d*e^2-35*a^2*c*d*e^2+41*a*b*c*d*e^2+2*b^2*c*d*e^2-44*a*c^2*d*e^2-5*b*c^2*d*e^2+35*c^3*d*e^2+46*a^2*d^2*e^2-32*a*b*d^2*e^2-37*b^2*d^2*e^2+4*a*c*d^2*e^2+15*b*c*d^2*e^2+13*c^2*d^2*e^2+14*a*d^3*e^2+3*b*d^3*e^2-7*c*d^3*e^2+9*d^4*e^2-43*a^3*e^3+46*a^2*b*e^3-17*a*b^2*e^3+12*b^3*e^3-9*a^2*c*e^3+40*a*b*c*e^3+7*b^2*c*e^3-31*a*c^2*e^3+32*b*c^2*e^3-49*a^2*d*e^3+22*a*b*d*e^3+27*b^2*d*e^3+34*a*c*d*e^3-39*b*c*d*e^3-17*c^2*d*e^3-39*a*d^2*e^3+20*b*d^2*e^3-10*c*d^2*e^3+2*d^3*e^3+4*a^2*e^4+21*a*b*e^4+20*b^2*e^4+36*a*c*e^4+49*b*c*e^4+24*c^2*e^4-31*a*d*e^4+23*b*d*e^4+48*c*d*e^4-12*d^2*e^4+8*a*e^5-8*b*e^5-15*c*e^5-d*e^5+24*e^6,
    3167 b^2*c^4-39*a^4*d^2+a^3*b*d^2+26*a^2*b^2*d^2+29*a*b^3*d^2-5*b^4*d^2+13*a^3*c*d^2-47*a^2*b*c*d^2+17*a*b^2*c*d^2+22*b^3*c*d^2+25*a^2*c^2*d^2-2*a*b*c^2*d^2+18*b^2*c^2*d^2+43*a*c^3*d^2+48*b*c^3*d^2-24*c^4*d^2-17*a^3*d^3-16*a^2*b*d^3-3*a*b^2*d^3+35*b^3*d^3+8*a^2*c*d^3+30*a*b*c*d^3-6*b^2*c*d^3+17*a*c^2*d^3-25*b*c^2*d^3+34*c^3*d^3+13*a^2*d^4-49*a*b*d^4-48*b^2*d^4-6*a*c*d^4+43*b*c*d^4+31*c^2*d^4+30*a*d^5-12*b*d^5+4*c*d^5+39*d^6+48*a^5*e+15*a^4*b*e-41*a^3*b^2*e+41*a^2*b^3*e-16*a*b^4*e+28*b^5*e-48*a^4*c*e+11*a^3*b*c*e+42*a^2*b^2*c*e+34*a*b^3*c*e+48*b^4*c*e-24*a^3*c^2*e+29*a^2*b*c^2*e+6*a*b^2*c^2*e+18*b^3*c^2*e-31*a^2*c^3*e+15*a*b*c^3*e+22*b^2*c^3*e-a*c^4*e+15*b*c^4*e-46*c^5*e-36*a^4*d*e+a^3*b*d*e+46*a^2*b^2*d*e-29*a*b^3*d*e+41*b^4*d*e-13*a^3*c*d*e-4*a^2*b*c*d*e-39*a*b^2*c*d*e-39*b^3*c*d*e+35*a^2*c^2*d*e-29*a*b*c^2*d*e-26*b^2*c^2*d*e-37*a*c^3*d*e-8*b*c^3*d*e-13*c^4*d*e+44*a^3*d^2*e-9*a^2*b*d^2*e-38*a*b^2*d^2*e-30*b^3*d^2*e+49*a^2*c*d^2*e+8*a*b*c*d^2*e-35*b^2*c*d^2*e+40*a*c^2*d^2*e-19*b*c^2*d^2*e-25*c^3*d^2*e+47*a^2*d^3*e+17*a*b*d^3*e-41*b^2*d^3*e-18*a*c*d^3*e+38*b*c*d^3*e+22*c^2*d^3*e-30*a*d^4*e+25*b*d^4*e-11*c*d^4*e-8*d^5*e+47*a^4*e^2+2*a^3*b*e^2+5*a^2*b^2*e^2-31*a*b^3*e^2+21*b^4*e^2-46*a^3*c*e^2-28*a^2*b*c*e^2+49*a*b^2*c*e^2+31*b^3*c*e^2-45*a^2*c^2*e^2+26*a*b*c^2*e^2+18*b^2*c^2*e^2+6*a*c^3*e^2-17*b*c^3*e^2-4*c^4*e^2-8*a^3*d*e^2-37*a^2*b*d*e^2-43*a*b^2*d*e^2+10*b^3*d*e^2+32*a^2*c*d*e^2+21*a*b*c*d*e^2+9*b^2*c*d*e^2-34*a*c^2*d*e^2-50*b*c^2*d*e^2-7*c^3*d*e^2+31*a^2*d^2*e^2+22*b^2*d^2*e^2-35*a*c*d^2*e^2-3*b*c*d^2*e^2+13*c^2*d^2*e^2-35*a*d^3*e^2-45*b*d^3*e^2-44*c*d^3*e^2+44*d^4*e^2+7*a^3*e^3+17*a^2*b*e^3+8*a*b^2*e^3+30*b^3*e^3-28*a^2*c*e^3-25*a*b*c*e^3+6*b^2*c*e^3-29*a*c^2*e^3-29*b*c^2*e^3-23*c^3*e^3-43*a^2*d*e^3+44*a*b*d*e^3+41*b^2*d*e^3-8*a*c*d*e^3-13*b*c*d*e^3+27*c^2*d*e^3+5*a*d^2*e^3+8*b*d^2*e^3+11*c*d^2*e^3-50*d^3*e^3+4*a^2*e^4-31*a*b*e^4-2*b^2*e^4-2*a*c*e^4-27*b*c*e^4-c^2*e^4-17*a*d*e^4-30*b*d*e^4-15*c*d*e^4+5*d^2*e^4-34*a*e^5-49*b*e^5+26*c*e^5-44*d*e^5+46*e^6,
    3168 a*b*c^4+44*a^4*d^2-12*a^3*b*d^2-6*a^2*b^2*d^2-20*a*b^3*d^2+48*b^4*d^2+19*a^3*c*d^2+4*a^2*b*c*d^2+50*a*b^2*c*d^2+34*b^3*c*d^2-a^2*c^2*d^2-24*a*b*c^2*d^2+43*b^2*c^2*d^2-21*a*c^3*d^2-29*b*c^3*d^2+36*c^4*d^2+48*a^3*d^3-26*a^2*b*d^3-16*a*b^2*d^3+29*b^3*d^3-48*a^2*c*d^3-19*a*b*c*d^3-17*b^2*c*d^3-44*a*c^2*d^3+5*b*c^2*d^3-6*c^3*d^3-a^2*d^4-30*a*b*d^4-16*b^2*d^4+20*a*c*d^4+17*b*c*d^4-50*c^2*d^4+36*a*d^5-36*b*d^5-2*c*d^5+46*d^6-10*a^5*e-39*a^4*b*e+20*a^3*b^2*e+45*a^2*b^3*e-35*a*b^4*e+2*b^5*e+23*a^4*c*e-12*a^3*b*c*e-5*a^2*b^2*c*e+5*a*b^3*c*e-8*b^4*c*e+49*a^3*c^2*e+11*a^2*b*c^2*e-11*a*b^2*c^2*e+28*b^3*c^2*e+34*a^2*c^3*e+50*a*b*c^3*e+33*b^2*c^3*e-48*a*c^4*e-12*b*c^4*e+30*c^5*e+3*a^4*d*e-34*a^3*b*d*e+14*a^2*b^2*d*e-47*a*b^3*d*e+34*b^4*d*e-50*a^3*c*d*e-18*a^2*b*c*d*e-39*a*b^2*c*d*e-27*b^3*c*d*e-42*a^2*c^2*d*e-43*a*b*c^2*d*e+28*b^2*c^2*d*e+45*a*c^3*d*e+37*b*c^3*d*e-36*c^4*d*e+21*a^3*d^2*e+36*a^2*b*d^2*e+8*a*b^2*d^2*e-16*b^3*d^2*e+43*a^2*c*d^2*e+24*b^2*c*d^2*e-21*a*c^2*d^2*e+29*b*c^2*d^2*e-14*c^3*d^2*e+11*a^2*d^3*e+16*a*b*d^3*e-24*b^2*d^3*e+8*a*c*d^3*e-44*b*c*d^3*e+13*c^2*d^3*e-32*a*d^4*e+b*d^4*e-31*c*d^4*e-32*d^5*e+32*a^4*e^2-27*a^3*b*e^2+29*a^2*b^2*e^2-30*a*b^3*e^2+35*b^4*e^2-19*a^3*c*e^2+45*a^2*b*c*e^2-9*a*b^2*c*e^2+9*b^3*c*e^2-33*a^2*c^2*e^2+24*a*b*c^2*e^2-5*b^2*c^2*e^2-42*a*c^3*e^2+32*b*c^3*e^2+37*c^4*e^2+36*a^3*d*e^2-44*a^2*b*d*e^2+46*a*b^2*d*e^2+37*b^3*d*e^2+31*a^2*c*d*e^2+32*a*b*c*d*e^2-37*b^2*c*d*e^2-45*a*c^2*d*e^2-37*b*c^2*d*e^2+38*c^3*d*e^2+40*a^2*d^2*e^2-44*a*b*d^2*e^2+39*b^2*d^2*e^2-20*a*c*d^2*e^2+46*b*c*d^2*e^2+c^2*d^2*e^2-13*a*d^3*e^2+16*b*d^3*e^2-17*c*d^3*e^2+41*d^4*e^2-18*a^3*e^3+12*a^2*b*e^3-20*a*b^2*e^3+34*b^3*e^3+21*a^2*c*e^3+19*a*b*c*e^3+22*b^2*c*e^3+41*a*c^2*e^3+42*b*c^2*e^3-32*c^3*e^3-24*a^2*d*e^3-26*a*b*d*e^3-43*b^2*d*e^3-17*a*c*d*e^3-24*b*c*d*e^3+36*c^2*d*e^3+48*a*d^2*e^3+38*b*d^2*e^3-43*c*d^2*e^3-31*d^3*e^3-21*a^2*e^4+45*a*b*e^4-12*b^2*e^4-42*a*c*e^4-38*b*c*e^4-27*c^2*e^4-3*a*d*e^4-45*b*d*e^4-17*c*d*e^4+15*d^2*e^4+48*a*e^5+21*b*e^5-7*c*e^5-36*d*e^5+12*e^6,
    3169 a^2*c^4+45*a^4*d^2-49*a^3*b*d^2-20*a^2*b^2*d^2-12*a*b^3*d^2-21*b^4*d^2-29*a^3*c*d^2+23*a^2*b*c*d^2+6*a*b^2*c*d^2-30*b^3*c*d^2-33*a^2*c^2*d^2+31*a*b*c^2*d^2+12*b^2*c^2*d^2+20*a*c^3*d^2-48*b*c^3*d^2-21*c^4*d^2-23*a^3*d^3-38*a^2*b*d^3-41*a*b^2*d^3-3*b^3*d^3+13*a^2*c*d^3-10*a*b*c*d^3-14*b^2*c*d^3+47*a*c^2*d^3+46*b*c^2*d^3-49*c^3*d^3-a^2*d^4-13*a*b*d^4+34*b^2*d^4+8*a*c*d^4-44*b*c*d^4+c^2*d^4-10*a*d^5-b*d^5-34*c*d^5-8*d^6-28*a^5*e+21*a^4*b*e-44*a^3*b^2*e-3*a^2*b^3*e-7*a*b^4*e+49*b^5*e-25*a^4*c*e+22*a^3*b*c*e+18*a^2*b^2*c*e-15*a*b^3*c*e+31*b^4*c*e-27*a^3*c^2*e+9*a^2*b*c^2*e-9*a*b^2*c^2*e+50*b^3*c^2*e-a^2*c^3*e-20*a*b*c^3*e+21*b^2*c^3*e+25*a*c^4*e-29*b*c^4*e-41*c^5*e+28*a^4*d*e-7*a^3*b*d*e-18*a^2*b^2*d*e-33*a*b^3*d*e-32*b^4*d*e-9*a^3*c*d*e-18*a^2*b*c*d*e-7*a*b^2*c*d*e-49*b^3*c*d*e+23*a^2*c^2*d*e+32*a*b*c^2*d*e+17*b^2*c^2*d*e-26*a*c^3*d*e+30*b*c^3*d*e-4*c^4*d*e+17*a^3*d^2*e-31*a^2*b*d^2*e+7*a*b^2*d^2*e-10*a^2*c*d^2*e+9*a*b*c*d^2*e+49*b^2*c*d^2*e-26*a*c^2*d^2*e-21*b*c^2*d^2*e+13*c^3*d^2*e+32*a^2*d^3*e+8*a*b*d^3*e+44*b^2*d^3*e+49*a*c*d^3*e-b*c*d^3*e+39*c^2*d^3*e-a*d^4*e-19*b*d^4*e-40*c*d^4*e-30*d^5*e-2*a^4*e^2-5*a^3*b*e^2-10*a^2*b^2*e^2-31*a*b^3*e^2+37*b^4*e^2+45*a^3*c*e^2+17*a^2*b*c*e^2-34*a*b^2*c*e^2-32*b^3*c*e^2-7*a^2*c^2*e^2-21*a*b*c^2*e^2+50*b^2*c^2*e^2+35*a*c^3*e^2-38*b*c^3*e^2+14*c^4*e^2-21*a^3*d*e^2-4*a^2*b*d*e^2-14*a*b^2*d*e^2+13*b^3*d*e^2-38*a^2*c*d*e^2+44*a*b*c*d*e^2+7*b^2*c*d*e^2-16*a*c^2*d*e^2+38*b*c^2*d*e^2+38*c^3*d*e^2+25*a^2*d^2*e^2-34*a*b*d^2*e^2-32*b^2*d^2*e^2+22*a*c*d^2*e^2+40*b*c*d^2*e^2+4*c^2*d^2*e^2-16*a*d^3*e^2+36*b*d^3*e^2-39*c*d^3*e^2-45*d^4*e^2+39*a^3*e^3+31*a^2*b*e^3-43*a*b^2*e^3-18*b^3*e^3+44*a^2*c*e^3-8*a*b*c*e^3+38*b^2*c*e^3-4*a*c^2*e^3+3*b*c^2*e^3-43*c^3*e^3-6*a^2*d*e^3+34*a*b*d*e^3+6*b^2*d*e^3-13*a*c*d*e^3+32*b*c*d*e^3+30*c^2*d*e^3+28*a*d^2*e^3+17*b*d^2*e^3-19*c*d^2*e^3-46*d^3*e^3+12*a^2*e^4+44*a*b*e^4-42*b^2*e^4-41*a*c*e^4-35*b*c*e^4-37*c^2*e^4+42*a*d*e^4+43*b*d*e^4+5*c*d*e^4+11*d^2*e^4+25*a*e^5-9*b*e^5-27*c*e^5+50*d*e^5+23*e^6,
    3170 b^3*c^3-13*a^4*d^2-41*a^3*b*d^2+27*a^2*b^2*d^2+a*b^3*d^2+33*b^4*d^2+47*a^3*c*d^2-19*a^2*b*c*d^2-27*a*b^2*c*d^2-6*b^3*c*d^2+37*a^2*c^2*d^2+40*a*b*c^2*d^2+12*b^2*c^2*d^2+36*a*c^3*d^2-25*b*c^3*d^2-45*c^4*d^2-12*a^3*d^3-5*a^2*b*d^3+31*a*b^2*d^3-b^3*d^3-37*a^2*c*d^3+26*a*b*c*d^3-48*b^2*c*d^3+36*a*c^2*d^3+16*b*c^2*d^3+44*c^3*d^3+47*a^2*d^4-20*a*b*d^4-13*b^2*d^4+39*a*c*d^4+17*b*c*d^4-32*c^2*d^4-24*a*d^5-41*b*d^5-31*c*d^5+29*a^5*e+26*a^4*b*e+12*a^3*b^2*e-45*a^2*b^3*e+40*a*b^4*e+20*b^5*e-21*a^4*c*e-28*a^3*b*c*e+38*a^2*b^2*c*e+40*a*b^3*c*e-13*b^4*c*e-9*a^3*c^2*e-9*a^2*b*c^2*e-a*b^2*c^2*e-b^3*c^2*e+32*a^2*c^3*e+43*a*b*c^3*e-44*b^2*c^3*e+39*a*c^4*e+8*b*c^4*e-8*c^5*e+27*a^4*d*e+15*a^3*b*d*e-12*a^2*b^2*d*e-33*a*b^3*d*e+16*b^4*d*e+19*a^3*c*d*e-34*a^2*b*c*d*e+5*a*b^2*c*d*e-31*b^3*c*d*e+5*a^2*c^2*d*e-20*a*b*c^2*d*e-4*b^2*c^2*d*e-50*a*c^3*d*e+44*b*c^3*d*e-31*a^3*d^2*e+31*a^2*b*d^2*e+28*a*b^2*d^2*e-10*b^3*d^2*e+2*a^2*c*d^2*e-19*a*b*c*d^2*e-9*a*c^2*d^2*e+2*b*c^2*d^2*e+40*c^3*d^2*e+45*a^2*d^3*e+9*a*b*d^3*e+26*b^2*d^3*e-14*a*c*d^3*e+2*b*c*d^3*e+7*c^2*d^3*e+36*a*d^4*e-43*b*d^4*e-27*c*d^4*e-4*d^5*e+23*a^4*e^2+45*a^3*b*e^2+41*a^2*b^2*e^2+22*a*b^3*e^2+14*b^4*e^2-30*a^3*c*e^2+19*a^2*b*c*e^2-34*a*b^2*c*e^2+17*b^3*c*e^2-42*a^2*c^2*e^2-12*a*b*c^2*e^2-9*b^2*c^2*e^2-3*a*c^3*e^2+47*b*c^3*e^2+47*c^4*e^2+7*a^3*d*e^2+6*a^2*b*d*e^2+26*a*b^2*d*e^2+10*b^3*d*e^2-11*a^2*c*d*e^2-17*a*b*c*d*e^2+34*b^2*c*d*e^2+21*a*c^2*d*e^2+11*b*c^2*d*e^2+5*c^3*d*e^2-40*a^2*d^2*e^2+11*a*b*d^2*e^2+17*b^2*d^2*e^2+38*a*c*d^2*e^2-18*b*c*d^2*e^2+23*c^2*d^2*e^2+35*a*d^3*e^2+4*b*d^3*e^2-2*c*d^3*e^2+46*d^4*e^2+44*a^3*e^3-14*a^2*b*e^3+25*a*b^2*e^3-41*b^3*e^3-34*a^2*c*e^3-44*a*b*c*e^3+17*a*c^2*e^3+9*b*c^2*e^3+45*c^3*e^3+23*a^2*d*e^3-15*a*b*d*e^3+9*b^2*d*e^3-14*a*c*d*e^3-23*b*c*d*e^3+17*c^2*d*e^3+46*a*d^2*e^3+30*b*d^2*e^3+35*c*d^2*e^3-27*d^3*e^3-40*a^2*e^4-50*a*b*e^4-23*b^2*e^4-46*a*c*e^4+44*b*c*e^4+7*c^2*e^4+14*a*d*e^4-4*b*d*e^4-9*c*d*e^4+44*d^2*e^4-9*a*e^5+28*b*e^5+25*c*e^5+36*d*e^5+28*e^6,
    3171 a*b^2*c^3+41*a^4*d^2-33*a^3*b*d^2+21*a^2*b^2*d^2-47*a*b^3*d^2-23*b^4*d^2+9*a^3*c*d^2+49*a^2*b*c*d^2+44*a*b^2*c*d^2-25*b^3*c*d^2-28*a^2*c^2*d^2+37*a*b*c^2*d^2+9*b^2*c^2*d^2-21*a*c^3*d^2+36*b*c^3*d^2+48*c^4*d^2+2*a^3*d^3+15*a^2*b*d^3-3*a*b^2*d^3-40*b^3*d^3-19*a^2*c*d^3+4*a*b*c*d^3-29*b^2*c*d^3-48*a*c^2*d^3+41*b*c^2*d^3+34*c^3*d^3+33*a^2*d^4-13*a*b*d^4-34*b^2*d^4-47*a*c*d^4+36*b*c*d^4+34*c^2*d^4+41*a*d^5+25*b*d^5-28*c*d^5-31*d^6+22*a^5*e+a^4*b*e+27*a^3*b^2*e+5*a^2*b^3*e-33*a*b^4*e+2*b^5*e+20*a^4*c*e-30*a^3*b*c*e+11*a^2*b^2*c*e+44*a*b^3*c*e-37*b^4*c*e+a^3*c^2*e+7*a^2*b*c^2*e-20*a*b^2*c^2*e+34*b^3*c^2*e-35*a^2*c^3*e+28*a*b*c^3*e-50*b^2*c^3*e-11*a*c^4*e-26*b*c^4*e+c^5*e-37*a^4*d*e+23*a^3*b*d*e+50*a^2*b^2*d*e+35*a*b^3*d*e-4*b^4*d*e-15*a^3*c*d*e-39*a^2*b*c*d*e-50*a*b^2*c*d*e+47*b^3*c*d*e-38*a^2*c^2*d*e-42*a*b*c^2*d*e+43*b^2*c^2*d*e+24*a*c^3*d*e+31*b*c^3*d*e+41*c^4*d*e-15*a^3*d^2*e+20*a^2*b*d^2*e-24*a*b^2*d^2*e-47*b^3*d^2*e+4*a^2*c*d^2*e+42*a*b*c*d^2*e+20*b^2*c*d^2*e-37*a*c^2*d^2*e+42*b*c^2*d^2*e+6*c^3*d^2*e-45*a^2*d^3*e-7*a*b*d^3*e-37*b^2*d^3*e-34*a*c*d^3*e-44*b*c*d^3*e-c^2*d^3*e-29*a*d^4*e+22*b*d^4*e-27*c*d^4*e-34*d^5*e-13*a^4*e^2+48*a^3*b*e^2+22*a^2*b^2*e^2+30*a*b^3*e^2-10*b^4*e^2-2*a^3*c*e^2+10*a^2*b*c*e^2+23*a*b^2*c*e^2+27*b^3*c*e^2+15*a^2*c^2*e^2-a*b*c^2*e^2+33*b^2*c^2*e^2-13*a*c^3*e^2-13*b*c^3*e^2+44*c^4*e^2-34*a^3*d*e^2+7*a^2*b*d*e^2+a*b^2*d*e^2-50*b^3*d*e^2+23*a^2*c*d*e^2+12*a*b*c*d*e^2+50*b^2*c*d*e^2+29*a*c^2*d*e^2+41*b*c^2*d*e^2+22*c^3*d*e^2-20*a^2*d^2*e^2+4*a*b*d^2*e^2-33*b^2*d^2*e^2-38*a*c*d^2*e^2+47*b*c*d^2*e^2+21*c^2*d^2*e^2+18*b*d^3*e^2+44*c*d^3*e^2+31*d^4*e^2-3*a^3*e^3-32*a^2*b*e^3-45*a*b^2*e^3-20*b^3*e^3+29*a^2*c*e^3-35*a*b*c*e^3-11*b^2*c*e^3-13*a*c^2*e^3-38*b*c^2*e^3+17*c^3*e^3-41*a^2*d*e^3-36*a*b*d*e^3-6*b^2*d*e^3-14*a*c*d*e^3-16*b*c*d*e^3-6*c^2*d*e^3+20*a*d^2*e^3-29*b*d^2*e^3+50*c*d^2*e^3-37*d^3*e^3-27*a^2*e^4+15*a*b*e^4+46*b^2*e^4+39*a*c*e^4-26*b*c*e^4-10*c^2*e^4-40*a*d*e^4-5*b*d*e^4-23*c*d*e^4+36*d^2*e^4-21*a*e^5+4*b*e^5-48*c*e^5+38*d*e^5-36*e^6,
    3172 a^2*b*c^3+6*a^4*d^2-4*a^3*b*d^2+37*a^2*b^2*d^2+18*a*b^3*d^2-34*b^4*d^2+23*a^3*c*d^2-9*a^2*b*c*d^2-46*a*b^2*c*d^2+19*b^3*c*d^2+42*a^2*c^2*d^2-34*a*b*c^2*d^2-14*b^2*c^2*d^2-10*a*c^3*d^2+13*b*c^3*d^2+14*c^4*d^2-38*a^3*d^3-13*a^2*b*d^3+47*a*b^2*d^3-9*b^3*d^3-a^2*c*d^3+33*a*b*c*d^3+9*b^2*c*d^3+33*a*c^2*d^3+37*b*c^2*d^3+41*c^3*d^3+12*a^2*d^4-50*a*b*d^4+11*b^2*d^4-48*a*c*d^4+27*b*c*d^4-48*c^2*d^4-48*a*d^5-19*b*d^5+46*c*d^5+5*d^6+43*a^5*e-13*a^4*b*e-16*a^3*b^2*e+34*a^2*b^3*e+25*a*b^4*e+29*b^5*e-8*a^4*c*e-2*a^3*b*c*e+4*a^2*b^2*c*e+23*a*b^3*c*e+7*b^4*c*e-6*a^3*c^2*e-39*a^2*b*c^2*e-10*a*b^2*c^2*e+18*b^3*c^2*e-18*a^2*c^3*e+35*a*b*c^3*e+18*b^2*c^3*e-2*a*c^4*e+16*b*c^4*e-21*c^5*e-44*a^4*d*e-a^3*b*d*e+19*a^2*b^2*d*e+32*a*b^3*d*e+20*b^4*d*e+36*a^3*c*d*e+16*a^2*b*c*d*e+7*a*b^2*c*d*e+21*b^3*c*d*e+21*a^2*c^2*d*e-31*a*b*c^2*d*e+10*b^2*c^2*d*e-16*a*c^3*d*e+40*b*c^3*d*e-16*c^4*d*e-43*a^3*d^2*e+50*a^2*b*d^2*e-14*a*b^2*d^2*e-24*b^3*d^2*e-23*a^2*c*d^2*e-21*a*b*c*d^2*e-2*b^2*c*d^2*e+38*a*c^2*d^2*e+40*b*c^2*d^2*e+38*c^3*d^2*e-5*a^2*d^3*e+31*a*b*d^3*e-50*b^2*d^3*e+46*a*c*d^3*e-14*b*c*d^3*e+45*c^2*d^3*e-25*a*d^4*e-8*b*d^4*e+3*c*d^4*e+7*d^5*e-a^4*e^2-29*a^3*b*e^2-23*a^2*b^2*e^2+19*a*b^3*e^2-41*b^4*e^2+46*a^3*c*e^2-27*a^2*b*c*e^2-24*a*b^2*c*e^2+26*b^3*c*e^2+8*a^2*c^2*e^2-11*a*b*c^2*e^2-9*b^2*c^2*e^2+29*a*c^3*e^2+15*b*c^3*e^2-10*c^4*e^2-37*a^3*d*e^2+25*a^2*b*d*e^2-26*a*b^2*d*e^2+7*b^3*d*e^2-19*a^2*c*d*e^2-12*a*b*c*d*e^2+50*b^2*c*d*e^2-40*a*c^2*d*e^2-28*b*c^2*d*e^2+26*c^3*d*e^2+28*a^2*d^2*e^2+38*a*b*d^2*e^2+44*b^2*d^2*e^2-32*a*c*d^2*e^2-14*b*c*d^2*e^2+23*c^2*d^2*e^2+44*a*d^3*e^2+47*b*d^3*e^2+46*c*d^3*e^2+3*d^4*e^2-27*a^3*e^3+5*a^2*b*e^3-48*a*b^2*e^3+22*b^3*e^3+32*a^2*c*e^3+23*a*b*c*e^3+34*b^2*c*e^3+4*a*c^2*e^3-25*b*c^2*e^3+13*c^3*e^3+25*a^2*d*e^3-24*a*b*d*e^3+11*b^2*d*e^3+32*a*c*d*e^3-14*b*c*d*e^3+4*c^2*d*e^3+10*a*d^2*e^3-7*b*d^2*e^3+22*c*d^2*e^3-4*d^3*e^3+6*a^2*e^4+19*a*b*e^4+15*b^2*e^4+9*a*c*e^4-49*b*c*e^4+37*c^2*e^4-46*a*d*e^4+33*b*d*e^4+41*c*d*e^4-41*d^2*e^4+11*a*e^5-44*b*e^5+46*c*e^5+12*d*e^5-50*e^6,
    3173 a^3*c^3-8*a^4*d^2+24*a^3*b*d^2-28*a^2*b^2*d^2+27*a*b^3*d^2-17*b^4*d^2-40*a^3*c*d^2+28*a^2*b*c*d^2+2*a*b^2*c*d^2-18*b^3*c*d^2+45*a^2*c^2*d^2-13*a*b*c^2*d^2-14*b^2*c^2*d^2+35*a*c^3*d^2-32*b*c^3*d^2+2*c^4*d^2-27*a^3*d^3-41*a^2*b*d^3-36*a*b^2*d^3-50*b^3*d^3+23*a^2*c*d^3+25*a*b*c*d^3+22*b^2*c*d^3+15*a*c^2*d^3-36*b*c^2*d^3-43*c^3*d^3-26*a^2*d^4-43*a*b*d^4-25*b^2*d^4-14*a*c*d^4+32*b*c*d^4+25*c^2*d^4+23*a*d^5-32*b*d^5+28*c*d^5-24*d^6+4*a^5*e-15*a^4*b*e-45*a^3*b^2*e-47*a^2*b^3*e+50*a*b^4*e+3*b^5*e+41*a^4*c*e+45*a^2*b^2*c*e+7*a*b^3*c*e-41*b^4*c*e+13*a^3*c^2*e+5*a^2*b*c^2*e+33*a*b^2*c^2*e+35*b^3*c^2*e+9*a^2*c^3*e-4*a*b*c^3*e-43*b^2*c^3*e-8*a*c^4*e+10*b*c^4*e-17*c^5*e+24*a^4*d*e-6*a^3*b*d*e+22*a^2*b^2*d*e+3*a*b^3*d*e+31*b^4*d*e-24*a^3*c*d*e+10*a^2*b*c*d*e+28*a*b^2*c*d*e-28*b^3*c*d*e+49*a^2*c^2*d*e+17*a*b*c^2*d*e+21*b^2*c^2*d*e-29*a*c^3*d*e-18*b*c^3*d*e+18*c^4*d*e+46*a^3*d^2*e+27*a^2*b*d^2*e+5*a*b^2*d^2*e+17*b^3*d^2*e+42*a^2*c*d^2*e+37*a*b*c*d^2*e+48*b^2*c*d^2*e+34*a*c^2*d^2*e+35*b*c^2*d^2*e+8*c^3*d^2*e+a^2*d^3*e-27*a*b*d^3*e+31*b^2*d^3*e+16*a*c*d^3*e+49*b*c*d^3*e-c^2*d^3*e+3*a*d^4*e-22*b*d^4*e+50*c*d^4*e-18*d^5*e+26*a^4*e^2+23*a^3*b*e^2+23*a^2*b^2*e^2-47*a*b^3*e^2+32*b^4*e^2-5*a^3*c*e^2-10*a^2*b*c*e^2-32*a*b^2*c*e^2+21*b^3*c*e^2+50*a^2*c^2*e^2+9*a*b*c^2*e^2+39*b^2*c^2*e^2+24*a*c^3*e^2-15*b*c^3*e^2-12*c^4*e^2+25*a^3*d*e^2+39*a^2*b*d*e^2+34*a*b^2*d*e^2+9*b^3*d*e^2+4*a^2*c*d*e^2+45*a*b*c*d*e^2+14*b^2*c*d*e^2+24*a*c^2*d*e^2+25*b*c^2*d*e^2-33*c^3*d*e^2+43*a^2*d^2*e^2-27*a*b*d^2*e^2+19*b^2*d^2*e^2-20*a*c*d^2*e^2-35*b*c*d^2*e^2+45*c^2*d^2*e^2-17*a*d^3*e^2-48*b*d^3*e^2-25*c*d^3*e^2-19*d^4*e^2+44*a^3*e^3+10*a^2*b*e^3+21*a*b^2*e^3-42*b^3*e^3+40*a^2*c*e^3-50*a*b*c*e^3-9*a*c^2*e^3+39*b*c^2*e^3+25*c^3*e^3+23*a^2*d*e^3-14*a*b*d*e^3+16*b^2*d*e^3+16*a*c*d*e^3+43*b*c*d*e^3-13*c^2*d*e^3-9*a*d^2*e^3-7*b*d^2*e^3+26*c*d^2*e^3-44*d^3*e^3-24*a^2*e^4+34*a*b*e^4+41*b^2*e^4-9*a*c*e^4+13*b*c*e^4-37*c^2*e^4-20*a*d*e^4-37*b*d*e^4+29*c*d*e^4+34*d^2*e^4+45*a*e^5+8*b*e^5+7*d*e^5+e^6,
    3174 b^4*c^2-14*a^4*d^2-37*a^3*b*d^2+19*a^2*b^2*d^2+4*a*b^3*d^2+20*b^4*d^2+34*a^3*c*d^2+17*a^2*b*c*d^2-35*a*b^2*c*d^2-21*b^3*c*d^2+32*a^2*c^2*d^2-31*a*b*c^2*d^2+18*b^2*c^2*d^2+6*a*c^3*d^2+21*b*c^3*d^2+24*c^4*d^2-4*a^3*d^3+41*a^2*b*d^3-14*a*b^2*d^3+38*b^3*d^3-26*a^2*c*d^3-48*a*b*c*d^3-39*b^2*c*d^3+a*c^2*d^3+50*b*c^2*d^3-13*c^3*d^3+21*a^2*d^4-17*a*b*d^4+47*b^2*d^4+16*a*c*d^4+12*b*c*d^4+30*c^2*d^4+11*a*d^5-5*b*d^5-42*c*d^5-15*d^6+15*a^5*e-15*a^4*b*e+36*a^3*b^2*e-21*a^2*b^3*e-9*a*b^4*e-34*b^5*e-40*a^4*c*e+7*a^3*b*c*e-22*a^2*b^2*c*e+48*a*b^3*c*e-24*b^4*c*e-40*a^3*c^2*e+17*a^2*b*c^2*e-15*a*b^2*c^2*e+19*b^3*c^2*e-19*a^2*c^3*e-36*a*b*c^3*e+26*b^2*c^3*e-32*a*c^4*e-46*b*c^4*e+26*c^5*e-33*a^4*d*e+33*a^3*b*d*e+28*a^2*b^2*d*e+48*a*b^3*d*e-22*b^4*d*e+46*a^3*c*d*e+35*a^2*b*c*d*e-21*a*b^2*c*d*e+b^3*c*d*e+8*a^2*c^2*d*e+14*a*b*c^2*d*e+12*b^2*c^2*d*e-4*a*c^3*d*e+32*b*c^3*d*e-17*c^4*d*e-42*a^3*d^2*e-43*a^2*b*d^2*e+17*a*b^2*d^2*e+21*b^3*d^2*e-31*a^2*c*d^2*e-46*a*b*c*d^2*e-26*b^2*c*d^2*e+35*a*c^2*d^2*e+14*b*c^2*d^2*e-35*c^3*d^2*e-3*a^2*d^3*e+50*a*b*d^3*e+41*b^2*d^3*e+36*a*c*d^3*e+7*b*c*d^3*e+7*c^2*d^3*e+15*a*d^4*e-38*b*d^4*e-37*c*d^4*e-34*d^5*e+15*a^4*e^2+44*a^3*b*e^2+42*a^2*b^2*e^2+10*a*b^3*e^2-23*b^4*e^2+37*a^3*c*e^2+50*a^2*b*c*e^2+20*a*b^2*c*e^2-50*b^3*c*e^2-4*a^2*c^2*e^2-3*a*b*c^2*e^2-14*b^2*c^2*e^2-28*a*c^3*e^2-10*b*c^3*e^2-33*c^4*e^2-11*a^3*d*e^2-8*a^2*b*d*e^2-23*a*b^2*d*e^2-14*a^2*c*d*e^2+42*a*b*c*d*e^2-42*b^2*c*d*e^2-36*a*c^2*d*e^2+41*b*c^2*d*e^2-27*c^3*d*e^2+30*a^2*d^2*e^2+3*a*b*d^2*e^2+33*b^2*d^2*e^2-28*a*c*d^2*e^2-26*b*c*d^2*e^2+c^2*d^2*e^2+46*a*d^3*e^2+21*b*d^3*e^2-32*c*d^3*e^2-16*d^4*e^2-23*a^3*e^3+6*a^2*b*e^3+40*a*b^2*e^3-38*b^3*e^3+28*a^2*c*e^3-14*a*b*c*e^3+6*b^2*c*e^3+45*a*c^2*e^3+2*b*c^2*e^3-11*c^3*e^3+18*a^2*d*e^3+36*a*b*d*e^3-40*b^2*d*e^3-43*a*c*d*e^3+44*b*c*d*e^3-26*c^2*d*e^3+23*a*d^2*e^3+28*b*d^2*e^3+15*c*d^2*e^3-18*d^3*e^3-13*a^2*e^4-47*a*b*e^4-28*b^2*e^4-22*a*c*e^4+20*b*c*e^4+17*c^2*e^4+a*d*e^4+46*b*d*e^4-15*c*d*e^4+40*d^2*e^4+34*a*e^5-9*b*e^5-29*c*e^5+15*d*e^5+32*e^6,
    3175 a*b^3*c^2-37*a^4*d^2-46*a^3*b*d^2+11*a^2*b^2*d^2+21*a*b^3*d^2+21*b^4*d^2-23*a^3*c*d^2-3*a^2*b*c*d^2+3*a*b^2*c*d^2-32*b^3*c*d^2-37*a^2*c^2*d^2-36*a*b*c^2*d^2+37*b^2*c^2*d^2-6*a*c^3*d^2-34*b*c^3*d^2+48*c^4*d^2+28*a^3*d^3+43*a^2*b*d^3+43*a*b^2*d^3+17*b^3*d^3+26*a^2*c*d^3+33*a*b*c*d^3-2*b^2*c*d^3-21*a*c^2*d^3-14*b*c^2*d^3-39*c^3*d^3-a^2*d^4-22*a*b*d^4-39*b^2*d^4-35*a*c*d^4+13*b*c*d^4-24*c^2*d^4-11*a*d^5+16*b*d^5+30*c*d^5-22*d^6-22*a^5*e+19*a^4*b*e-15*a^3*b^2*e-8*a^2*b^3*e+14*a*b^4*e-5*b^5*e+6*a^4*c*e+6*a^3*b*c*e+46*a^2*b^2*c*e+39*a*b^3*c*e+21*b^4*c*e-22*a^3*c^2*e+26*a^2*b*c^2*e+24*a*b^2*c^2*e+10*b^3*c^2*e-23*a^2*c^3*e+26*a*b*c^3*e+b^2*c^3*e+39*a*c^4*e+35*b*c^4*e-19*c^5*e+17*a^4*d*e+38*a^3*b*d*e+9*a^2*b^2*d*e-19*a*b^3*d*e+42*b^4*d*e-11*a^3*c*d*e-6*a^2*b*c*d*e+10*a*b^2*c*d*e-10*b^3*c*d*e+41*a^2*c^2*d*e+10*a*b*c^2*d*e+46*b^2*c^2*d*e-33*a*c^3*d*e-6*b*c^3*d*e+11*c^4*d*e-33*a^3*d^2*e-22*a^2*b*d^2*e-6*a*b^2*d^2*e-11*b^3*d^2*e+34*a^2*c*d^2*e-39*a*b*c*d^2*e-45*b^2*c*d^2*e-17*a*c^2*d^2*e-8*b*c^2*d^2*e-41*c^3*d^2*e+13*a^2*d^3*e-11*a*b*d^3*e-13*b^2*d^3*e+3*a*c*d^3*e-28*b*c*d^3*e+33*c^2*d^3*e-8*a*d^4*e+24*b*d^4*e-34*c*d^4*e-7*d^5*e+26*a^4*e^2+12*a^3*b*e^2-20*a^2*b^2*e^2+5*a*b^3*e^2+30*b^4*e^2+6*a^3*c*e^2-45*a^2*b*c*e^2-49*a*b^2*c*e^2+43*b^3*c*e^2-29*a^2*c^2*e^2+4*a*b*c^2*e^2+17*b^2*c^2*e^2+13*a*c^3*e^2+21*b*c^3*e^2+16*c^4*e^2-25*a^3*d*e^2-7*a^2*b*d*e^2+42*a*b^2*d*e^2-44*b^3*d*e^2+19*a^2*c*d*e^2+5*a*b*c*d*e^2-38*b^2*c*d*e^2-17*a*c^2*d*e^2-15*b*c^2*d*e^2-26*c^3*d*e^2+47*a^2*d^2*e^2-42*a*b*d^2*e^2-26*b^2*d^2*e^2-50*a*c*d^2*e^2+25*b*c*d^2*e^2-3*c^2*d^2*e^2-47*a*d^3*e^2-40*b*d^3*e^2+24*c*d^3*e^2+35*d^4*e^2-22*a^3*e^3-5*a^2*b*e^3-10*a*b^2*e^3-7*b^3*e^3+6*a^2*c*e^3-16*a*b*c*e^3-28*b^2*c*e^3-43*a*c^2*e^3+24*b*c^2*e^3-9*c^3*e^3+42*a^2*d*e^3-12*a*b*d*e^3-29*b^2*d*e^3+35*a*c*d*e^3+27*b*c*d*e^3+40*c^2*d*e^3-17*a*d^2*e^3+29*b*d^2*e^3+38*c*d^2*e^3+13*d^3*e^3-23*a^2*e^4+32*a*b*e^4+5*b^2*e^4+11*a*c*e^4-b*c*e^4-37*c^2*e^4+3*a*d*e^4-3*b*d*e^4+37*c*d*e^4-28*d^2*e^4-33*a*e^5+18*b*e^5+45*c*e^5-11*d*e^5+42*e^6,
    3176 a^2*b^2*c^2+34*a^4*d^2+5*a^3*b*d^2-6*a^2*b^2*d^2-24*a*b^3*d^2+14*b^4*d^2+24*a^3*c*d^2-13*a^2*b*c*d^2+27*a*b^2*c*d^2+10*b^3*c*d^2-38*a^2*c^2*d^2+14*a*b*c^2*d^2+49*b^2*c^2*d^2+42*a*c^3*d^2-4*b*c^3*d^2+32*c^4*d^2+47*a^3*d^3+38*a^2*b*d^3+12*a*b^2*d^3-7*b^3*d^3+30*a^2*c*d^3+2*a*b*c*d^3+23*b^2*c*d^3-42*a*c^2*d^3+19*b*c^2*d^3-19*c^3*d^3-12*a^2*d^4+37*a*b*d^4+47*b^2*d^4+31*a*c*d^4+4*b*c*d^4-36*c^2*d^4-10*a*d^5-7*b*d^5+6*c*d^5-12*d^6-46*a^5*e-47*a^4*b*e+49*a^3*b^2*e+45*a^2*b^3*e+44*a*b^4*e+35*b^5*e+24*a^4*c*e+8*a^3*b*c*e-31*a^2*b^2*c*e+21*a*b^3*c*e+40*b^4*c*e-35*a^3*c^2*e+38*a^2*b*c^2*e+12*a*b^2*c^2*e-27*b^3*c^2*e+39*a^2*c^3*e-48*a*b*c^3*e+21*b^2*c^3*e+29*a*c^4*e-36*b*c^4*e-46*c^5*e-46*a^4*d*e+a^3*b*d*e+11*a^2*b^2*d*e+10*a*b^3*d*e-29*b^4*d*e-16*a^3*c*d*e-18*a^2*b*c*d*e+15*a*b^2*c*d*e-30*b^3*c*d*e-34*a^2*c^2*d*e+36*a*b*c^2*d*e+6*a*c^3*d*e-6*b*c^3*d*e+40*c^4*d*e+49*a^3*d^2*e-14*a^2*b*d^2*e-33*a*b^2*d^2*e+34*b^3*d^2*e-26*a^2*c*d^2*e-31*a*b*c*d^2*e-10*b^2*c*d^2*e+40*a*c^2*d^2*e+34*b*c^2*d^2*e+17*c^3*d^2*e-32*a^2*d^3*e-5*a*b*d^3*e-47*b^2*d^3*e-4*a*c*d^3*e+b*c*d^3*e+47*c^2*d^3*e+8*a*d^4*e+48*b*d^4*e-38*c*d^4*e+34*d^5*e-12*a^4*e^2+6*a^2*b^2*e^2-9*a*b^3*e^2-17*b^4*e^2-16*a^3*c*e^2-32*a^2*b*c*e^2+49*a*b^2*c*e^2+3*b^3*c*e^2+27*a^2*c^2*e^2-42*a*b*c^2*e^2-b^2*c^2*e^2+42*a*c^3*e^2+21*b*c^3*e^2-18*c^4*e^2-a^3*d*e^2+8*a^2*b*d*e^2+45*a*b^2*d*e^2+36*b^3*d*e^2+42*a^2*c*d*e^2-29*a*b*c*d*e^2+45*b^2*c*d*e^2-9*a*c^2*d*e^2-32*b*c^2*d*e^2-50*c^3*d*e^2-25*a^2*d^2*e^2+14*a*b*d^2*e^2-44*b^2*d^2*e^2-16*a*c*d^2*e^2+29*b*c*d^2*e^2+17*c^2*d^2*e^2-12*a*d^3*e^2+28*b*d^3*e^2+36*c*d^3*e^2+24*d^4*e^2+24*a^3*e^3-39*a^2*b*e^3-2*a*b^2*e^3-28*b^3*e^3+31*a^2*c*e^3-47*a*b*c*e^3-b^2*c*e^3-17*a*c^2*e^3+50*b*c^2*e^3-c^3*e^3-a^2*d*e^3+41*a*b*d*e^3-13*b^2*d*e^3-13*a*c*d*e^3+4*b*c*d*e^3+32*c^2*d*e^3-16*a*d^2*e^3-11*b*d^2*e^3+49*c*d^2*e^3+d^3*e^3+32*a^2*e^4-11*a*b*e^4+5*b^2*e^4+3*a*c*e^4-49*b*c*e^4+32*c^2*e^4-11*a*d*e^4-43*b*d*e^4+35*c*d*e^4-5*d^2*e^4+40*a*e^5+18*b*e^5+3*c*e^5+25*d*e^5+28*e^6,
    3177 a^3*b*c^2-30*a^4*d^2+28*a^3*b*d^2+41*a^2*b^2*d^2-11*a*b^3*d^2+27*b^4*d^2-36*a^3*c*d^2+27*a^2*b*c*d^2+50*a*b^2*c*d^2-34*b^3*c*d^2-21*a^2*c^2*d^2-6*a*b*c^2*d^2-8*b^2*c^2*d^2-14*a*c^3*d^2-35*b*c^3*d^2+21*c^4*d^2+37*a^3*d^3-14*a^2*b*d^3-41*a*b^2*d^3+30*b^3*d^3+35*a^2*c*d^3-28*a*b*c*d^3+26*b^2*c*d^3+19*a*c^2*d^3+b*c^2*d^3-5*c^3*d^3-29*a^2*d^4+25*a*b*d^4-38*b^2*d^4+50*a*c*d^4+10*b*c*d^4+30*c^2*d^4+31*a*d^5-49*b*d^5+39*c*d^5-40*d^6+16*a^5*e-47*a^4*b*e+39*a^3*b^2*e-41*a^2*b^3*e-27*a*b^4*e+10*b^5*e-20*a^4*c*e+23*a^3*b*c*e-39*a^2*b^2*c*e+28*a*b^3*c*e-16*b^4*c*e+20*a^3*c^2*e+22*a^2*b*c^2*e+45*a*b^2*c^2*e-b^3*c^2*e+37*a^2*c^3*e-3*a*b*c^3*e-49*b^2*c^3*e+8*a*c^4*e-3*b*c^4*e+41*c^5*e+33*a^4*d*e+35*a^3*b*d*e+10*a^2*b^2*d*e-42*a*b^3*d*e+14*b^4*d*e+a^3*c*d*e-28*a^2*b*c*d*e-26*a*b^2*c*d*e+35*b^3*c*d*e-24*a^2*c^2*d*e-3*a*b*c^2*d*e+20*b^2*c^2*d*e+a*c^3*d*e+8*b*c^3*d*e-41*c^4*d*e-12*a^3*d^2*e-43*a^2*b*d^2*e+32*a*b^2*d^2*e-26*b^3*d^2*e-37*a^2*c*d^2*e+50*a*b*c*d^2*e-21*b^2*c*d^2*e+46*a*c^2*d^2*e-26*b*c^2*d^2*e+41*c^3*d^2*e+39*a^2*d^3*e+6*a*b*d^3*e-34*b^2*d^3*e+13*a*c*d^3*e-12*b*c*d^3*e-7*c^2*d^3*e-31*a*d^4*e+19*b*d^4*e-22*c*d^4*e+44*d^5*e+15*a^4*e^2-24*a^3*b*e^2-23*a^2*b^2*e^2-25*a*b^3*e^2+21*b^4*e^2+28*a^3*c*e^2+32*a^2*b*c*e^2+6*a*b^2*c*e^2-6*b^3*c*e^2-32*a^2*c^2*e^2+37*a*b*c^2*e^2-15*b^2*c^2*e^2-3*a*c^3*e^2+5*b*c^3*e^2+33*c^4*e^2+50*a^3*d*e^2+46*a^2*b*d*e^2+3*a*b^2*d*e^2+11*b^3*d*e^2-6*a^2*c*d*e^2-26*a*b*c*d*e^2-26*b^2*c*d*e^2+49*a*c^2*d*e^2+48*b*c^2*d*e^2+14*c^3*d*e^2-11*a^2*d^2*e^2-49*a*b*d^2*e^2+37*b^2*d^2*e^2-20*a*c*d^2*e^2+10*b*c*d^2*e^2+22*c^2*d^2*e^2+46*a*d^3*e^2+3*b*d^3*e^2+24*c*d^3*e^2-49*d^4*e^2-31*a^3*e^3+35*a^2*b*e^3-38*a*b^2*e^3+4*b^3*e^3-10*a^2*c*e^3+a*b*c*e^3-15*b^2*c*e^3-8*a*c^2*e^3-18*b*c^2*e^3-26*c^3*e^3+26*a^2*d*e^3+23*a*b*d*e^3+4*b^2*d*e^3-37*a*c*d*e^3+49*b*c*d*e^3-9*c^2*d*e^3-39*a*d^2*e^3+44*b*d^2*e^3+44*c*d^2*e^3+6*d^3*e^3+49*a^2*e^4+23*a*b*e^4+15*a*c*e^4-10*b*c*e^4+24*c^2*e^4+23*a*d*e^4-34*b*d*e^4-9*c*d*e^4-11*d^2*e^4+49*a*e^5+32*b*e^5-12*c*e^5+32*d*e^5+13*e^6,
    3178 a^4*c^2-10*a^4*d^2+38*a^3*b*d^2-a^2*b^2*d^2+6*a*b^3*d^2+39*b^4*d^2-11*a^3*c*d^2+9*a^2*b*c*d^2+21*a*b^2*c*d^2-13*b^3*c*d^2+22*a^2*c^2*d^2+33*a*b*c^2*d^2-19*b^2*c^2*d^2-18*a*c^3*d^2-38*b*c^3*d^2-50*c^4*d^2-11*a^3*d^3-41*a^2*b*d^3-9*a*b^2*d^3-40*b^3*d^3-8*a^2*c*d^3+49*a*b*c*d^3+34*b^2*c*d^3+36*a*c^2*d^3-37*b*c^2*d^3+14*c^3*d^3-2*a^2*d^4+34*a*b*d^4+47*b^2*d^4+47*a*c*d^4-20*b*c*d^4-13*c^2*d^4+6*a*d^5-31*b*d^5+28*c*d^5-31*d^6-3*a^5*e+39*a^4*b*e+16*a^3*b^2*e+16*a^2*b^3*e+9*a*b^4*e+37*b^5*e-39*a^4*c*e+5*a^3*b*c*e+36*a^2*b^2*c*e-7*a*b^3*c*e+16*b^4*c*e-43*a^3*c^2*e-5*a^2*b*c^2*e+30*a*b^2*c^2*e+12*b^3*c^2*e-26*a^2*c^3*e+45*a*b*c^3*e+9*b^2*c^3*e+17*a*c^4*e-19*b*c^4*e-6*c^5*e-47*a^4*d*e-33*a^3*b*d*e+12*a^2*b^2*d*e+4*a*b^3*d*e+33*b^4*d*e+3*a^3*c*d*e-33*a^2*b*c*d*e-13*a*b^2*c*d*e+28*b^3*c*d*e-46*a^2*c^2*d*e-32*a*b*c^2*d*e+26*b^2*c^2*d*e-14*a*c^3*d*e+8*b*c^3*d*e-40*c^4*d*e+38*a^3*d^2*e-29*a^2*b*d^2*e+45*a*b^2*d^2*e+6*b^3*d^2*e-34*a^2*c*d^2*e-15*a*b*c*d^2*e-20*b^2*c*d^2*e-24*a*c^2*d^2*e-5*b*c^2*d^2*e-36*c^3*d^2*e+17*a^2*d^3*e-17*a*b*d^3*e-18*b^2*d^3*e+44*a*c*d^3*e+11*b*c*d^3*e-14*c^2*d^3*e-31*a*d^4*e-39*b*d^4*e-48*c*d^4*e+20*d^5*e+a^4*e^2-8*a^3*b*e^2+13*a^2*b^2*e^2-18*a*b^3*e^2-28*b^4*e^2-26*a^3*c*e^2+21*a^2*b*c*e^2-12*a*b^2*c*e^2-46*b^3*c*e^2-45*a^2*c^2*e^2+32*a*b*c^2*e^2-9*b^2*c^2*e^2+36*a*c^3*e^2+38*b*c^3*e^2-15*c^4*e^2-21*a^3*d*e^2+25*a^2*b*d*e^2-6*a*b^2*d*e^2+2*b^3*d*e^2-21*a*b*c*d*e^2+38*b^2*c*d*e^2-3*a*c^2*d*e^2-29*b*c^2*d*e^2-9*c^3*d*e^2-20*a^2*d^2*e^2+32*a*b*d^2*e^2-12*b^2*d^2*e^2-21*a*c*d^2*e^2-b*c*d^2*e^2-31*c^2*d^2*e^2-24*a*d^3*e^2-16*b*d^3*e^2+47*c*d^3*e^2+41*d^4*e^2-12*a^3*e^3-38*a^2*b*e^3-23*a*b^2*e^3+44*b^3*e^3-7*a^2*c*e^3+28*a*b*c*e^3+42*b^2*c*e^3+10*a*c^2*e^3-12*b*c^2*e^3-7*c^3*e^3+33*a^2*d*e^3+37*a*b*d*e^3+39*b^2*d*e^3-43*a*c*d*e^3-21*b*c*d*e^3+20*c^2*d*e^3+48*a*d^2*e^3+25*b*d^2*e^3-20*c*d^2*e^3+35*d^3*e^3+a^2*e^4+40*a*b*e^4+23*b^2*e^4+45*a*c*e^4-4*b*c*e^4-15*c^2*e^4+42*a*d*e^4-49*b*d*e^4-28*c*d*e^4-8*d^2*e^4-38*a*e^5-12*b*e^5+42*c*e^5+11*d*e^5+45*e^6,
    3179 b^5*c+40*a^4*d^2-47*a^3*b*d^2+16*a^2*b^2*d^2+18*a*b^3*d^2+33*b^4*d^2+9*a^3*c*d^2-38*a^2*b*c*d^2-22*a*b^2*c*d^2+8*b^3*c*d^2-21*a^2*c^2*d^2-2*a*b*c^2*d^2+33*b^2*c^2*d^2+5*a*c^3*d^2-50*b*c^3*d^2-35*c^4*d^2+29*a^3*d^3+25*a^2*b*d^3-38*a*b^2*d^3+17*b^3*d^3-32*a^2*c*d^3-44*a*b*c*d^3-20*b^2*c*d^3-26*a*c^2*d^3-37*b*c^2*d^3+47*c^3*d^3+19*a^2*d^4-34*a*b*d^4-20*b^2*d^4+31*a*c*d^4-14*b*c*d^4-37*c^2*d^4-37*a*d^5+7*b*d^5-42*c*d^5+16*d^6-23*a^5*e-48*a^3*b^2*e-41*a^2*b^3*e+6*a*b^4*e+49*a^4*c*e+34*a^3*b*c*e-8*a^2*b^2*c*e+17*a*b^3*c*e+39*b^4*c*e+2*a^3*c^2*e+42*a^2*b*c^2*e+21*a*b^2*c^2*e-8*b^3*c^2*e-11*a^2*c^3*e+50*a*b*c^3*e+25*b^2*c^3*e-46*a*c^4*e-4*b*c^4*e-10*c^5*e+12*a^4*d*e+9*a^3*b*d*e-46*a^2*b^2*d*e-12*a*b^3*d*e-44*b^4*d*e-35*a^3*c*d*e-46*a^2*b*c*d*e+17*a*b^2*c*d*e+48*b^3*c*d*e-28*a^2*c^2*d*e-50*a*b*c^2*d*e-46*b^2*c^2*d*e+4*a*c^3*d*e-41*b*c^3*d*e-8*c^4*d*e+42*a^3*d^2*e+39*a^2*b*d^2*e+27*a*b^2*d^2*e-40*b^3*d^2*e-8*a^2*c*d^2*e+40*a*b*c*d^2*e-20*b^2*c*d^2*e+35*a*c^2*d^2*e-26*b*c^2*d^2*e-2*c^3*d^2*e-14*a^2*d^3*e-34*a*b*d^3*e-24*b^2*d^3*e+22*a*c*d^3*e+45*b*c*d^3*e-9*c^2*d^3*e-38*a*d^4*e-14*b*d^4*e+50*c*d^4*e-49*d^5*e-23*a^4*e^2-10*a^3*b*e^2-4*a^2*b^2*e^2+49*a*b^3*e^2+28*b^4*e^2-50*a^3*c*e^2+38*a^2*b*c*e^2+26*a*b^2*c*e^2-44*b^3*c*e^2+3*a^2*c^2*e^2+46*a*b*c^2*e^2+42*b^2*c^2*e^2+9*a*c^3*e^2+18*b*c^3*e^2-9*c^4*e^2+16*a^3*d*e^2-42*a^2*b*d*e^2+37*a*b^2*d*e^2-10*b^3*d*e^2-41*a^2*c*d*e^2-5*a*b*c*d*e^2+19*b^2*c*d*e^2+17*a*c^2*d*e^2-19*b*c^2*d*e^2+16*c^3*d*e^2+21*a^2*d^2*e^2-17*a*b*d^2*e^2-15*b^2*d^2*e^2-49*a*c*d^2*e^2+36*b*c*d^2*e^2-41*c^2*d^2*e^2+37*a*d^3*e^2-13*b*d^3*e^2-27*c*d^3*e^2-37*d^4*e^2+37*a^3*e^3-50*a^2*b*e^3+21*a*b^2*e^3+14*b^3*e^3-16*a^2*c*e^3+24*a*b*c*e^3-44*b^2*c*e^3+18*b*c^2*e^3+3*c^3*e^3-38*a^2*d*e^3+41*a*b*d*e^3+29*b^2*d*e^3-9*a*c*d*e^3+9*b*c*d*e^3-39*c^2*d*e^3+42*a*d^2*e^3+22*b*d^2*e^3+18*c*d^2*e^3+35*d^3*e^3+43*a^2*e^4+5*a*b*e^4+5*b^2*e^4+16*a*c*e^4-37*b*c*e^4+20*c^2*e^4-10*a*d*e^4+45*b*d*e^4-46*c*d*e^4+42*d^2*e^4+14*a*e^5+15*b*e^5+38*c*e^5+49*d*e^5+3*e^6,
    3180 a*b^4*c+32*a^4*d^2+43*a^3*b*d^2+49*a^2*b^2*d^2+38*a*b^3*d^2+47*b^4*d^2+19*a^3*c*d^2+43*a^2*b*c*d^2-25*a*b^2*c*d^2+25*b^3*c*d^2+26*a^2*c^2*d^2-5*a*b*c^2*d^2-19*b^2*c^2*d^2+33*a*c^3*d^2-3*b*c^3*d^2-37*c^4*d^2+18*a^3*d^3-27*a^2*b*d^3-33*a*b^2*d^3-49*b^3*d^3+48*a^2*c*d^3-12*a*b*c*d^3+17*b^2*c*d^3+6*a*c^2*d^3-36*b*c^2*d^3+36*c^3*d^3+a^2*d^4-12*b^2*d^4-3*a*c*d^4-43*b*c*d^4-24*c^2*d^4-14*a*d^5-43*b*d^5-20*c*d^5+24*d^6-42*a^5*e-48*a^4*b*e+29*a^3*b^2*e-29*a^2*b^3*e-37*a*b^4*e+b^5*e-31*a^4*c*e+35*a^3*b*c*e+9*a^2*b^2*c*e-17*a*b^3*c*e-34*b^4*c*e+42*a^3*c^2*e-47*a^2*b*c^2*e+31*a*b^2*c^2*e+9*b^3*c^2*e+48*a^2*c^3*e-15*a*b*c^3*e+34*b^2*c^3*e+15*a*c^4*e-23*b*c^4*e+45*c^5*e-12*a^4*d*e+42*a^3*b*d*e-15*a^2*b^2*d*e-14*a*b^3*d*e+33*b^4*d*e-41*a^3*c*d*e+9*a^2*b*c*d*e+15*a*b^2*c*d*e-44*b^3*c*d*e-32*a^2*c^2*d*e+9*a*b*c^2*d*e+22*b^2*c^2*d*e-23*a*c^3*d*e+43*b*c^3*d*e-37*c^4*d*e+19*a^3*d^2*e-47*a^2*b*d^2*e+39*a*b^2*d^2*e-24*b^3*d^2*e-44*a^2*c*d^2*e-27*a*b*c*d^2*e-30*b^2*c*d^2*e-19*a*c^2*d^2*e-28*b*c^2*d^2*e-30*c^3*d^2*e-41*a^2*d^3*e+17*a*b*d^3*e-30*b^2*d^3*e+3*a*c*d^3*e+50*b*c*d^3*e+47*c^2*d^3*e+47*a*d^4*e-40*b*d^4*e+3*c*d^4*e+28*d^5*e-35*a^4*e^2+23*a^3*b*e^2+2*a^2*b^2*e^2-17*a*b^3*e^2-22*b^4*e^2+35*a^3*c*e^2-38*a^2*b*c*e^2-7*a*b^2*c*e^2-12*b^3*c*e^2+38*a^2*c^2*e^2-12*a*b*c^2*e^2+13*b^2*c^2*e^2+19*b*c^3*e^2-25*c^4*e^2-45*a^3*d*e^2-35*a^2*b*d*e^2+41*a*b^2*d*e^2+10*b^3*d*e^2+17*a^2*c*d*e^2-10*a*b*c*d*e^2-42*b^2*c*d*e^2+13*a*c^2*d*e^2-3*b*c^2*d*e^2-42*c^3*d*e^2-2*a^2*d^2*e^2-7*a*b*d^2*e^2+46*b^2*d^2*e^2+43*a*c*d^2*e^2+29*b*c*d^2*e^2+19*c^2*d^2*e^2-26*a*d^3*e^2+28*b*d^3*e^2+27*c*d^3*e^2+32*d^4*e^2+49*a^3*e^3+48*a^2*b*e^3+34*a*b^2*e^3-48*b^3*e^3+12*a^2*c*e^3+30*a*b*c*e^3+18*b^2*c*e^3-50*a*c^2*e^3+13*b*c^2*e^3+48*c^3*e^3+17*a^2*d*e^3+22*a*b*d*e^3-6*b^2*d*e^3-40*a*c*d*e^3-33*b*c*d*e^3-2*c^2*d*e^3-48*a*d^2*e^3-7*b*d^2*e^3+32*c*d^2*e^3-31*d^3*e^3+46*a^2*e^4+17*a*b*e^4+14*b^2*e^4+8*a*c*e^4-43*b*c*e^4+24*a*d*e^4-41*b*d*e^4-35*c*d*e^4-44*d^2*e^4-29*a*e^5+11*b*e^5+50*c*e^5-32*d*e^5+23*e^6,
    3181 a^2*b^3*c-22*a^4*d^2+38*a^3*b*d^2+10*a^2*b^2*d^2-31*a*b^3*d^2+42*b^4*d^2-7*a^3*c*d^2-47*a^2*b*c*d^2+37*a*b^2*c*d^2-23*b^3*c*d^2-43*a^2*c^2*d^2+38*a*b*c^2*d^2+18*b^2*c^2*d^2+18*a*c^3*d^2+25*b*c^3*d^2+4*c^4*d^2+36*a^3*d^3-21*a^2*b*d^3+35*a*b^2*d^3+28*b^3*d^3+13*a^2*c*d^3+36*a*b*c*d^3-33*b^2*c*d^3+9*a*c^2*d^3+18*b*c^2*d^3-49*c^3*d^3-5*a^2*d^4-8*a*b*d^4-34*b^2*d^4-43*a*c*d^4-47*b*c*d^4-12*c^2*d^4+34*a*d^5+50*b*d^5-13*c*d^5-20*d^6+29*a^5*e-10*a^4*b*e+17*a^3*b^2*e+7*a^2*b^3*e+45*a*b^4*e-23*b^5*e+41*a^4*c*e+31*a^3*b*c*e+9*a^2*b^2*c*e+3*a*b^3*c*e-11*b^4*c*e+6*a^3*c^2*e+11*a^2*b*c^2*e-42*a*b^2*c^2*e+17*b^3*c^2*e+5*a^2*c^3*e-44*a*b*c^3*e-44*b^2*c^3*e+42*a*c^4*e-29*b*c^4*e+6*c^5*e+7*a^4*d*e-50*a^3*b*d*e+29*a^2*b^2*d*e-42*a*b^3*d*e-25*b^4*d*e-5*a^3*c*d*e-33*a^2*b*c*d*e+36*a*b^2*c*d*e+47*b^3*c*d*e-41*a^2*c^2*d*e+4*a*b*c^2*d*e+44*b^2*c^2*d*e-10*a*c^3*d*e-2*b*c^3*d*e+20*c^4*d*e+21*a^3*d^2*e+6*a^2*b*d^2*e-50*a*b^2*d^2*e+35*b^3*d^2*e-8*a^2*c*d^2*e-17*a*b*c*d^2*e+7*b^2*c*d^2*e+35*a*c^2*d^2*e+28*b*c^2*d^2*e+25*c^3*d^2*e-6*a^2*d^3*e-16*a*b*d^3*e+35*b^2*d^3*e-12*a*c*d^3*e+46*b*c*d^3*e+7*c^2*d^3*e+16*a*d^4*e-24*b*d^4*e+32*c*d^4*e-26*d^5*e+6*a^4*e^2+48*a^3*b*e^2-27*a^2*b^2*e^2+15*a*b^3*e^2-15*b^4*e^2-25*a^3*c*e^2+39*a^2*b*c*e^2-21*a*b^2*c*e^2-8*b^3*c*e^2+15*a^2*c^2*e^2+31*a*b*c^2*e^2+33*b^2*c^2*e^2-31*a*c^3*e^2-27*b*c^3*e^2-16*c^4*e^2+41*a^3*d*e^2-17*a^2*b*d*e^2-25*a*b^2*d*e^2-3*b^3*d*e^2+6*a^2*c*d*e^2-24*a*b*c*d*e^2+b^2*c*d*e^2-a*c^2*d*e^2-15*b*c^2*d*e^2+16*c^3*d*e^2+42*a^2*d^2*e^2+6*a*b*d^2*e^2-25*b^2*d^2*e^2+21*a*c*d^2*e^2+48*b*c*d^2*e^2-10*c^2*d^2*e^2+31*b*d^3*e^2-32*c*d^3*e^2+2*d^4*e^2+35*a^3*e^3+42*a^2*b*e^3+10*a*b^2*e^3-38*b^3*e^3+32*a^2*c*e^3+34*a*b*c*e^3+14*b^2*c*e^3-7*a*c^2*e^3+22*b*c^2*e^3+37*c^3*e^3+2*a^2*d*e^3-42*a*b*d*e^3-6*b^2*d*e^3-9*a*c*d*e^3+22*b*c*d*e^3+19*c^2*d*e^3-21*a*d^2*e^3-37*b*d^2*e^3+43*c*d^2*e^3-36*d^3*e^3+16*a^2*e^4-21*a*b*e^4+44*b^2*e^4-48*a*c*e^4+35*b*c*e^4-25*c^2*e^4+15*a*d*e^4+42*b*d*e^4-27*c*d*e^4+27*d^2*e^4-25*a*e^5-12*b*e^5+20*c*e^5+7*d*e^5+3*e^6,
    3182 a^3*b^2*c-24*a^4*d^2+20*a^3*b*d^2+24*a^2*b^2*d^2-29*a*b^3*d^2-24*b^4*d^2+13*a^3*c*d^2+31*a*b^2*c*d^2-26*b^3*c*d^2-29*a^2*c^2*d^2-27*a*b*c^2*d^2+4*b^2*c^2*d^2+23*a*c^3*d^2+42*b*c^3*d^2-47*c^4*d^2+50*a^3*d^3+48*a^2*b*d^3-22*a*b^2*d^3+16*b^3*d^3-46*a^2*c*d^3-43*a*b*c*d^3+50*b^2*c*d^3-35*a*c^2*d^3-29*b*c^2*d^3-12*c^3*d^3+23*a^2*d^4+31*a*b*d^4+22*b^2*d^4-27*a*c*d^4-25*b*c*d^4-41*c^2*d^4+42*a*d^5-50*b*d^5+33*c*d^5+11*d^6+19*a^5*e-22*a^4*b*e+33*a^3*b^2*e+43*a^2*b^3*e+43*a*b^4*e-5*b^5*e-14*a^4*c*e-46*a^3*b*c*e-21*a^2*b^2*c*e+29*a*b^3*c*e+15*b^4*c*e+12*a^3*c^2*e-a^2*b*c^2*e-43*a*b^2*c^2*e+48*b^3*c^2*e+26*a^2*c^3*e-46*a*b*c^3*e-35*b^2*c^3*e+a*c^4*e+16*b*c^4*e+6*c^5*e-47*a^4*d*e-a^3*b*d*e+a^2*b^2*d*e-32*a*b^3*d*e-19*b^4*d*e-44*a^3*c*d*e+22*a^2*b*c*d*e+40*a*b^2*c*d*e-19*b^3*c*d*e+12*a^2*c^2*d*e-a*b*c^2*d*e-23*b^2*c^2*d*e-11*a*c^3*d*e-26*b*c^3*d*e-4*c^4*d*e-32*a^3*d^2*e-13*a^2*b*d^2*e-b^3*d^2*e+8*a^2*c*d^2*e-28*a*b*c*d^2*e+46*b^2*c*d^2*e-24*a*c^2*d^2*e+26*b*c^2*d^2*e+27*c^3*d^2*e+12*a^2*d^3*e+10*a*b*d^3*e-32*b^2*d^3*e-12*a*c*d^3*e-30*b*c*d^3*e+50*c^2*d^3*e+6*a*d^4*e+32*b*d^4*e+6*c*d^4*e-48*d^5*e+14*a^4*e^2+48*a^3*b*e^2+16*a^2*b^2*e^2+34*a*b^3*e^2+39*b^4*e^2+2*a^3*c*e^2+5*a^2*b*c*e^2-11*a*b^2*c*e^2-4*b^3*c*e^2-39*a^2*c^2*e^2+46*a*b*c^2*e^2-16*b^2*c^2*e^2-46*a*c^3*e^2-b*c^3*e^2+47*c^4*e^2-3*a^3*d*e^2-48*a^2*b*d*e^2-34*a*b^2*d*e^2+19*b^3*d*e^2+46*a^2*c*d*e^2-49*a*b*c*d*e^2-45*b^2*c*d*e^2-4*a*c^2*d*e^2+33*b*c^2*d*e^2-8*c^3*d*e^2-39*a^2*d^2*e^2-34*a*b*d^2*e^2+9*b^2*d^2*e^2-15*a*c*d^2*e^2+b*c*d^2*e^2+44*c^2*d^2*e^2-39*a*d^3*e^2+10*b*d^3*e^2+9*c*d^3*e^2-6*d^4*e^2-7*a^3*e^3+2*a^2*b*e^3+39*a*b^2*e^3+4*b^3*e^3-49*a^2*c*e^3+48*a*b*c*e^3+b^2*c*e^3+28*a*c^2*e^3-29*b*c^2*e^3-7*c^3*e^3+23*a^2*d*e^3+16*a*b*d*e^3+24*b^2*d*e^3-47*a*c*d*e^3+20*b*c*d*e^3+26*c^2*d*e^3+9*a*d^2*e^3+49*b*d^2*e^3+32*c*d^2*e^3+33*d^3*e^3-3*a^2*e^4+48*a*b*e^4-18*b^2*e^4-43*a*c*e^4-14*b*c*e^4-29*c^2*e^4+49*a*d*e^4-49*b*d*e^4-18*c*d*e^4-18*d^2*e^4+45*a*e^5-40*b*e^5-13*c*e^5+3*d*e^5+5*e^6,
    3183 a^4*b*c-38*a^4*d^2+23*a^3*b*d^2-28*a^2*b^2*d^2-49*a*b^3*d^2-37*b^4*d^2+46*a^3*c*d^2-39*a^2*b*c*d^2+31*a*b^2*c*d^2+43*b^3*c*d^2+40*a^2*c^2*d^2-30*a*b*c^2*d^2-7*b^2*c^2*d^2+32*a*c^3*d^2+50*b*c^3*d^2+13*c^4*d^2-9*a^3*d^3+23*a^2*b*d^3-12*a*b^2*d^3-42*b^3*d^3+4*a^2*c*d^3-3*a*b*c*d^3+50*b^2*c*d^3+16*a*c^2*d^3+40*b*c^2*d^3-23*c^3*d^3+39*a^2*d^4+35*a*b*d^4-45*b^2*d^4+45*a*c*d^4-15*b*c*d^4-26*c^2*d^4+29*a*d^5+37*b*d^5+3*c*d^5-22*d^6-8*a^5*e+15*a^4*b*e+19*a^3*b^2*e-12*a^2*b^3*e+22*a*b^4*e-48*b^5*e+32*a^4*c*e+48*a^3*b*c*e-14*a^2*b^2*c*e+43*a*b^3*c*e-23*b^4*c*e-36*a^3*c^2*e+36*a^2*b*c^2*e+15*a*b^2*c^2*e-34*b^3*c^2*e-16*a^2*c^3*e+20*a*b*c^3*e-23*b^2*c^3*e+39*a*c^4*e-37*b*c^4*e+43*c^5*e+30*a^4*d*e-38*a^3*b*d*e-25*a^2*b^2*d*e-5*a*b^3*d*e-24*b^4*d*e+5*a^3*c*d*e-47*a^2*b*c*d*e-17*a*b^2*c*d*e+30*b^3*c*d*e-a^2*c^2*d*e-43*a*b*c^2*d*e-6*b^2*c^2*d*e-46*a*c^3*d*e-37*b*c^3*d*e-43*c^4*d*e+48*a^3*d^2*e+20*a^2*b*d^2*e+21*a*b^2*d^2*e+35*b^3*d^2*e-47*a^2*c*d^2*e+27*a*b*c*d^2*e+b^2*c*d^2*e+7*a*c^2*d^2*e-11*b*c^2*d^2*e+46*c^3*d^2*e+40*a^2*d^3*e+43*a*b*d^3*e-31*b^2*d^3*e+22*a*c*d^3*e+2*b*c*d^3*e-18*c^2*d^3*e+35*a*d^4*e+31*b*d^4*e-48*c*d^4*e+43*d^5*e+16*a^4*e^2+27*a^3*b*e^2-28*a^2*b^2*e^2-13*a*b^3*e^2+17*b^4*e^2-34*a^3*c*e^2+12*a^2*b*c*e^2-25*a*b^2*c*e^2+7*b^3*c*e^2-19*a^2*c^2*e^2-31*a*b*c^2*e^2+22*b^2*c^2*e^2-45*a*c^3*e^2-25*b*c^3*e^2+7*c^4*e^2-9*a^3*d*e^2-3*a^2*b*d*e^2+20*a*b^2*d*e^2+28*b^3*d*e^2+41*a^2*c*d*e^2-2*a*b*c*d*e^2+8*b^2*c*d*e^2-20*a*c^2*d*e^2+35*b*c^2*d*e^2-11*c^3*d*e^2-27*a^2*d^2*e^2-29*a*b*d^2*e^2+28*b^2*d^2*e^2+10*a*c*d^2*e^2-8*b*c*d^2*e^2+13*c^2*d^2*e^2-32*a*d^3*e^2+23*b*d^3*e^2-50*c*d^3*e^2+20*d^4*e^2+49*a^3*e^3+9*a^2*b*e^3+27*a*b^2*e^3-15*b^3*e^3-38*a^2*c*e^3+26*a*b*c*e^3-47*b^2*c*e^3+10*a*c^2*e^3-21*b*c^2*e^3+2*c^3*e^3+7*a^2*d*e^3-8*a*b*d*e^3-25*b^2*d*e^3+15*a*c*d*e^3+17*b*c*d*e^3-39*c^2*d*e^3+7*a*d^2*e^3-47*b*d^2*e^3+6*c*d^2*e^3+5*d^3*e^3+21*a^2*e^4-49*a*b*e^4-35*b^2*e^4+32*a*c*e^4-16*b*c*e^4+7*c^2*e^4-25*a*d*e^4+30*b*d*e^4-31*c*d*e^4-21*d^2*e^4+42*a*e^5-b*e^5+14*c*e^5+18*d*e^5+28*e^6,
    3184 a^5*c-2*a^4*d^2-22*a^3*b*d^2-38*a^2*b^2*d^2+10*a*b^3*d^2+32*b^4*d^2-28*a^3*c*d^2+11*a^2*b*c*d^2-12*a*b^2*c*d^2-39*b^3*c*d^2+43*a^2*c^2*d^2+39*a*b*c^2*d^2-24*b^2*c^2*d^2+27*a*c^3*d^2+47*b*c^3*d^2+9*c^4*d^2+12*a^3*d^3+34*a^2*b*d^3-37*a*b^2*d^3+18*b^3*d^3+45*a^2*c*d^3+21*a*b*c*d^3+29*b^2*c*d^3+31*a*c^2*d^3+23*b*c^2*d^3+44*c^3*d^3-19*a^2*d^4+32*a*b*d^4+46*b^2*d^4+27*a*c*d^4+8*b*c*d^4-20*c^2*d^4-35*a*d^5-21*b*d^5+15*c*d^5-45*d^6-38*a^5*e-35*a^4*b*e-28*a^3*b^2*e-30*a^2*b^3*e-19*a*b^4*e-49*b^5*e+34*a^4*c*e-2*a^3*b*c*e-16*a^2*b^2*c*e-8*a*b^3*c*e-10*b^4*c*e-22*a^3*c^2*e+50*a^2*b*c^2*e-29*a*b^2*c^2*e-19*b^3*c^2*e+39*a^2*c^3*e-4*a*b*c^3*e-36*b^2*c^3*e-24*a*c^4*e-2*b*c^4*e-12*c^5*e-22*a^4*d*e-22*a^3*b*d*e-a^2*b^2*d*e-42*a*b^3*d*e-10*b^4*d*e-7*a^3*c*d*e-6*a^2*b*c*d*e+5*a*b^2*c*d*e+36*b^3*c*d*e-5*a^2*c^2*d*e-21*a*b*c^2*d*e-14*b^2*c^2*d*e-21*a*c^3*d*e+18*b*c^3*d*e+49*c^4*d*e-32*a^3*d^2*e-5*a^2*b*d^2*e-45*a*b^2*d^2*e+6*b^3*d^2*e-40*a*b*c*d^2*e-17*b^2*c*d^2*e-47*a*c^2*d^2*e+12*b*c^2*d^2*e-18*c^3*d^2*e-a^2*d^3*e+6*a*b*d^3*e+2*b^2*d^3*e-29*a*c*d^3*e+15*b*c*d^3*e+21*c^2*d^3*e-36*a*d^4*e-7*b*d^4*e+c*d^4*e-23*d^5*e-24*a^4*e^2+47*a^3*b*e^2+19*a^2*b^2*e^2-44*a*b^3*e^2-13*b^4*e^2+49*a^3*c*e^2+39*a^2*b*c*e^2+44*a*b^2*c*e^2+41*b^3*c*e^2-29*a^2*c^2*e^2+24*a*b*c^2*e^2+34*a*c^3*e^2+14*b*c^3*e^2+7*c^4*e^2+44*a^3*d*e^2+22*a^2*b*d*e^2+41*a*b^2*d*e^2+21*a^2*c*d*e^2+12*a*b*c*d*e^2-33*b^2*c*d*e^2-40*a*c^2*d*e^2+16*b*c^2*d*e^2-36*c^3*d*e^2+13*a^2*d^2*e^2-22*a*b*d^2*e^2+28*b^2*d^2*e^2+29*a*c*d^2*e^2+50*b*c*d^2*e^2+48*c^2*d^2*e^2+40*a*d^3*e^2+2*c*d^3*e^2-5*d^4*e^2-37*a^3*e^3+49*a^2*b*e^3-10*a*b^2*e^3-41*b^3*e^3+11*a^2*c*e^3-37*a*b*c*e^3+26*b^2*c*e^3-39*a*c^2*e^3-46*b*c^2*e^3-3*c^3*e^3+47*a^2*d*e^3+5*a*b*d*e^3-45*b^2*d*e^3+28*a*c*d*e^3+22*b*c*d*e^3+29*c^2*d*e^3+11*a*d^2*e^3+21*b*d^2*e^3+14*c*d^2*e^3+14*d^3*e^3+32*a^2*e^4-27*a*b*e^4-47*b^2*e^4-6*b*c*e^4-38*c^2*e^4-38*a*d*e^4-17*b*d*e^4+20*c*d*e^4-d^2*e^4-4*a*e^5-11*b*e^5-41*c*e^5+25*d*e^5-e^6,
    3185 b^6-11*a^4*d^2+23*a^3*b*d^2+41*a^2*b^2*d^2+7*a*b^3*d^2+10*b^4*d^2-31*a^3*c*d^2+10*a^2*b*c*d^2+7*a*b^2*c*d^2+36*b^3*c*d^2-10*a^2*c^2*d^2+9*a*b*c^2*d^2-41*b^2*c^2*d^2-26*a*c^3*d^2+26*b*c^3*d^2+12*c^4*d^2+36*a^3*d^3-35*a^2*b*d^3+12*a*b^2*d^3-8*b^3*d^3+23*a^2*c*d^3+16*a*b*c*d^3-24*b^2*c*d^3+17*a*c^2*d^3-29*b*c^2*d^3-48*c^3*d^3+33*a^2*d^4+30*a*b*d^4-41*b^2*d^4-23*a*c*d^4+8*b*c*d^4-10*c^2*d^4+22*a*d^5+5*b*d^5-32*c*d^5+19*d^6+19*a^5*e+21*a^4*b*e-29*a^3*b^2*e+10*a^2*b^3*e-6*a*b^4*e-10*b^5*e-35*a^4*c*e-47*a^3*b*c*e-16*a^2*b^2*c*e-35*a*b^3*c*e+34*b^4*c*e-28*a^3*c^2*e-6*a^2*b*c^2*e-44*a*b^2*c^2*e-47*b^3*c^2*e-18*a^2*c^3*e+48*a*b*c^3*e-b^2*c^3*e-17*a*c^4*e-48*b*c^4*e-25*c^5*e-29*a^4*d*e-18*a^3*b*d*e-28*a^2*b^2*d*e-43*a*b^3*d*e-48*b^4*d*e+45*a^3*c*d*e+18*a^2*b*c*d*e+19*a*b^2*c*d*e-27*b^3*c*d*e-13*a^2*c^2*d*e+50*a*b*c^2*d*e+33*b^2*c^2*d*e+14*a*c^3*d*e+40*b*c^3*d*e+41*c^4*d*e-34*a^3*d^2*e-41*a^2*b*d^2*e+2*a*b^2*d^2*e+37*b^3*d^2*e-a^2*c*d^2*e+8*a*b*c*d^2*e-22*b^2*c*d^2*e-25*a*c^2*d^2*e+41*b*c^2*d^2*e+35*c^3*d^2*e-14*a^2*d^3*e+32*a*b*d^3*e+20*b^2*d^3*e+3*a*c*d^3*e+12*b*c*d^3*e-6*c^2*d^3*e+44*a*d^4*e+36*b*d^4*e+32*c*d^4*e-6*d^5*e+17*a^4*e^2-39*a^3*b*e^2+22*a^2*b^2*e^2+9*a*b^3*e^2+7*b^4*e^2-9*a^3*c*e^2-49*a^2*b*c*e^2+36*a*b^2*c*e^2+16*b^3*c*e^2-10*a^2*c^2*e^2+20*a*b*c^2*e^2+b^2*c^2*e^2-29*a*c^3*e^2-4*b*c^3*e^2-34*c^4*e^2-47*a^3*d*e^2+38*a^2*b*d*e^2+10*a*b^2*d*e^2+21*b^3*d*e^2-42*a^2*c*d*e^2-28*a*b*c*d*e^2-6*b^2*c*d*e^2+22*a*c^2*d*e^2+7*b*c^2*d*e^2-12*c^3*d*e^2-6*a^2*d^2*e^2+2*a*b*d^2*e^2-4*b^2*d^2*e^2+7*a*c*d^2*e^2-39*b*c*d^2*e^2-c^2*d^2*e^2+45*a*d^3*e^2+40*b*d^3*e^2+46*c*d^3*e^2+44*d^4*e^2-30*a^3*e^3+3*a^2*b*e^3+27*a*b^2*e^3+42*b^3*e^3-18*a^2*c*e^3+11*a*b*c*e^3+18*b^2*c*e^3-31*a*c^2*e^3-37*b*c^2*e^3+5*c^3*e^3-46*a^2*d*e^3+32*a*b*d*e^3+34*b^2*d*e^3-50*a*c*d*e^3+8*b*c*d*e^3+47*c^2*d*e^3-35*a*d^2*e^3+38*b*d^2*e^3-38*c*d^2*e^3-47*d^3*e^3+35*a^2*e^4+25*a*b*e^4+31*b^2*e^4+8*a*c*e^4+9*b*c*e^4+40*c^2*e^4-3*a*d*e^4-29*b*d*e^4+20*c*d*e^4+16*d^2*e^4+25*a*e^5+b*e^5+21*c*e^5+13*d*e^5-e^6,
    3186 a*b^5+6*a^4*d^2-30*a^3*b*d^2+48*a^2*b^2*d^2+22*a*b^3*d^2+49*b^4*d^2-4*a^3*c*d^2+45*a^2*b*c*d^2-28*a*b^2*c*d^2-12*b^3*c*d^2+12*a^2*c^2*d^2+47*a*b*c^2*d^2-14*b^2*c^2*d^2+35*a*c^3*d^2-b*c^3*d^2-39*c^4*d^2-40*a^3*d^3+7*a^2*b*d^3+16*a*b^2*d^3+45*b^3*d^3-a^2*c*d^3+20*a*b*c*d^3-9*b^2*c*d^3-31*a*c^2*d^3-44*b*c^2*d^3-13*c^3*d^3+36*a^2*d^4+8*a*b*d^4+25*b^2*d^4-4*a*c*d^4-10*b*c*d^4-40*c^2*d^4+39*a*d^5-4*b*d^5-24*c*d^5-11*d^6+33*a^5*e+40*a^4*b*e+21*a^3*b^2*e-7*a^2*b^3*e-22*a*b^4*e-48*b^5*e-2*a^4*c*e-32*a^3*b*c*e+4*a^2*b^2*c*e-4*a*b^3*c*e+38*b^4*c*e+50*a^3*c^2*e-15*a^2*b*c^2*e-14*a*b^2*c^2*e+43*b^3*c^2*e+44*a^2*c^3*e-11*a*b*c^3*e-20*b^2*c^3*e-14*a*c^4*e+30*b*c^4*e-44*c^5*e-27*a^4*d*e+2*a^3*b*d*e-31*a^2*b^2*d*e-8*a*b^3*d*e-47*a^3*c*d*e-39*a^2*b*c*d*e-46*a*b^2*c*d*e+6*b^3*c*d*e+32*a^2*c^2*d*e+43*a*b*c^2*d*e-30*b^2*c^2*d*e-31*a*c^3*d*e-48*b*c^3*d*e+31*c^4*d*e+49*a^3*d^2*e-2*a^2*b*d^2*e-7*a*b^2*d^2*e-38*b^3*d^2*e+6*a^2*c*d^2*e+7*a*b*c*d^2*e+5*b^2*c*d^2*e+29*a*c^2*d^2*e-39*b*c^2*d^2*e-15*c^3*d^2*e+9*a^2*d^3*e-28*a*b*d^3*e+19*b^2*d^3*e-11*a*c*d^3*e-5*b*c*d^3*e-46*c^2*d^3*e-34*a*d^4*e-27*b*d^4*e-27*c*d^4*e+11*d^5*e-36*a^4*e^2-28*a^3*b*e^2+7*a^2*b^2*e^2+20*a*b^3*e^2-34*b^4*e^2+43*a^3*c*e^2-44*a^2*b*c*e^2+30*a*b^2*c*e^2-b^3*c*e^2-15*a^2*c^2*e^2+47*a*b*c^2*e^2-5*b^2*c^2*e^2-34*a*c^3*e^2-42*b*c^3*e^2-44*c^4*e^2-7*a^3*d*e^2+32*a^2*b*d*e^2-18*a*b^2*d*e^2-45*b^3*d*e^2+50*a^2*c*d*e^2+27*a*b*c*d*e^2-43*b^2*c*d*e^2-49*a*c^2*d*e^2-12*b*c^2*d*e^2+30*c^3*d*e^2-38*a^2*d^2*e^2+16*a*b*d^2*e^2-32*b^2*d^2*e^2-45*a*c*d^2*e^2+41*b*c*d^2*e^2+8*c^2*d^2*e^2+42*a*d^3*e^2+43*b*d^3*e^2+18*c*d^3*e^2-37*d^4*e^2-13*a^3*e^3+33*a^2*b*e^3-12*a*b^2*e^3-31*b^3*e^3-24*a^2*c*e^3+5*a*b*c*e^3-29*b^2*c*e^3+5*a*c^2*e^3+10*b*c^2*e^3+38*c^3*e^3+31*a^2*d*e^3+49*a*b*d*e^3-39*b^2*d*e^3+49*a*c*d*e^3+11*b*c*d*e^3+17*c^2*d*e^3-a*d^2*e^3+45*b*d^2*e^3-16*c*d^2*e^3+28*d^3*e^3+8*a^2*e^4+19*a*b*e^4+5*b^2*e^4+36*a*c*e^4-19*b*c*e^4-18*c^2*e^4-29*a*d*e^4+33*b*d*e^4-15*c*d*e^4+46*d^2*e^4+43*a*e^5+50*b*e^5+35*c*e^5+38*d*e^5+39*e^6,
    3187 a^2*b^4-27*a^4*d^2-11*a^3*b*d^2+23*a^2*b^2*d^2+42*a*b^3*d^2+33*b^4*d^2-45*a^2*b*c*d^2+42*a*b^2*c*d^2+30*b^3*c*d^2-a^2*c^2*d^2+41*a*b*c^2*d^2+32*b^2*c^2*d^2-4*a*c^3*d^2-4*b*c^3*d^2+50*c^4*d^2+14*a^3*d^3-17*a^2*b*d^3+20*a*b^2*d^3-31*b^3*d^3+44*a^2*c*d^3+14*a*b*c*d^3+43*b^2*c*d^3+48*a*c^2*d^3-10*b*c^2*d^3-3*c^3*d^3-33*a^2*d^4+9*a*b*d^4+28*b^2*d^4-3*a*c*d^4+15*b*c*d^4+46*c^2*d^4-35*a*d^5-42*b*d^5+44*c*d^5-4*d^6+28*a^5*e+46*a^4*b*e+16*a^3*b^2*e+31*a^2*b^3*e-20*a*b^4*e-15*b^5*e-50*a^4*c*e-8*a^3*b*c*e+4*a^2*b^2*c*e+38*a*b^3*c*e+27*b^4*c*e-29*a^3*c^2*e+27*a^2*b*c^2*e-33*a*b^2*c^2*e-22*b^3*c^2*e-3*a^2*c^3*e-40*a*b*c^3*e+10*b^2*c^3*e-20*a*c^4*e-38*b*c^4*e+36*c^5*e-26*a^4*d*e+41*a^3*b*d*e-15*a^2*b^2*d*e+50*a*b^3*d*e+41*b^4*d*e-18*a^3*c*d*e+18*a^2*b*c*d*e-32*a*b^2*c*d*e+41*b^3*c*d*e-5*a^2*c^2*d*e-a*b*c^2*d*e-10*b^2*c^2*d*e-12*a*c^3*d*e-46*b*c^3*d*e+34*c^4*d*e-42*a^3*d^2*e+2*a^2*b*d^2*e+37*a*b^2*d^2*e-b^3*d^2*e-29*a^2*c*d^2*e+46*a*b*c*d^2*e-49*b^2*c*d^2*e+24*a*c^2*d^2*e-47*b*c^2*d^2*e-34*c^3*d^2*e+46*a^2*d^3*e-5*a*b*d^3*e-27*b^2*d^3*e-29*a*c*d^3*e+25*b*c*d^3*e-30*c^2*d^3*e-2*a*d^4*e-50*b*d^4*e-46*c*d^4*e+2*d^5*e+11*a^4*e^2+48*a^3*b*e^2+24*a^2*b^2*e^2+41*a*b^3*e^2-17*b^4*e^2-10*a^3*c*e^2+8*a^2*b*c*e^2+28*b^3*c*e^2-21*a^2*c^2*e^2+23*a*b*c^2*e^2+8*b^2*c^2*e^2+41*a*c^3*e^2+12*b*c^3*e^2+25*c^4*e^2+25*a^3*d*e^2-49*a^2*b*d*e^2+24*a*b^2*d*e^2-7*b^3*d*e^2-20*a^2*c*d*e^2-48*a*b*c*d*e^2+46*b^2*c*d*e^2-18*a*c^2*d*e^2+13*b*c^2*d*e^2-31*c^3*d*e^2-40*a^2*d^2*e^2+2*a*b*d^2*e^2-48*b^2*d^2*e^2-38*a*c*d^2*e^2+20*b*c*d^2*e^2+47*c^2*d^2*e^2-3*a*d^3*e^2+27*b*d^3*e^2+44*c*d^3*e^2+19*d^4*e^2+38*a^3*e^3+22*a^2*b*e^3+37*a*b^2*e^3+20*b^3*e^3-6*a^2*c*e^3-33*a*b*c*e^3+45*b^2*c*e^3+24*a*c^2*e^3+33*b*c^2*e^3+c^3*e^3+50*a^2*d*e^3-44*a*b*d*e^3-50*b^2*d*e^3-11*a*c*d*e^3-11*b*c*d*e^3-30*c^2*d*e^3-a*d^2*e^3-14*b*d^2*e^3-11*c*d^2*e^3-42*d^3*e^3+3*a^2*e^4-6*a*b*e^4+31*b^2*e^4-47*a*c*e^4+23*b*c*e^4-44*c^2*e^4-28*a*d*e^4-50*b*d*e^4+41*c*d*e^4-19*d^2*e^4+10*a*e^5+13*b*e^5+47*c*e^5+31*d*e^5-49*e^6,
    3188 a^3*b^3-15*a^4*d^2-17*a^3*b*d^2-a^2*b^2*d^2+18*a*b^3*d^2-30*b^4*d^2-37*a^3*c*d^2+21*a^2*b*c*d^2-a*b^2*c*d^2+16*b^3*c*d^2-41*a^2*c^2*d^2+39*a*b*c^2*d^2-16*b^2*c^2*d^2-22*a*c^3*d^2+19*b*c^3*d^2+46*c^4*d^2-14*a^3*d^3+2*a^2*b*d^3+45*a*b^2*d^3+12*b^3*d^3-28*a^2*c*d^3-19*a*b*c*d^3-20*b^2*c*d^3-6*a*c^2*d^3+17*b*c^2*d^3-20*c^3*d^3+34*a^2*d^4+15*a*b*d^4-8*b^2*d^4+31*a*c*d^4-5*b*c*d^4+41*c^2*d^4-32*a*d^5-38*b*d^5+35*c*d^5-4*d^6-26*a^5*e-20*a^4*b*e-12*a^3*b^2*e+22*a^2*b^3*e-48*a*b^4*e+39*b^5*e-46*a^4*c*e-50*a^3*b*c*e+11*a^2*b^2*c*e-2*a*b^3*c*e+23*b^4*c*e+44*a^3*c^2*e+4*a^2*b*c^2*e+17*a*b^2*c^2*e-39*b^3*c^2*e-a^2*c^3*e-20*a*b*c^3*e-16*b^2*c^3*e+7*a*c^4*e+31*b*c^4*e+18*c^5*e-44*a^4*d*e+7*a^3*b*d*e+26*a^2*b^2*d*e-19*a*b^3*d*e-35*b^4*d*e+47*a^3*c*d*e+17*a^2*b*c*d*e-27*a*b^2*c*d*e-6*b^3*c*d*e-16*a^2*c^2*d*e-10*a*b*c^2*d*e+21*b^2*c^2*d*e-27*a*c^3*d*e+4*b*c^3*d*e-32*c^4*d*e-22*a^3*d^2*e+50*a^2*b*d^2*e-a*b^2*d^2*e+41*b^3*d^2*e-46*a^2*c*d^2*e-18*a*b*c*d^2*e+8*b^2*c*d^2*e-16*a*c^2*d^2*e-38*b*c^2*d^2*e-c^3*d^2*e+18*a^2*d^3*e-25*a*b*d^3*e-47*b^2*d^3*e-23*a*c*d^3*e+8*b*c*d^3*e+20*c^2*d^3*e-41*a*d^4*e-18*b*d^4*e-18*c*d^4*e+33*d^5*e+17*a^4*e^2-10*a^3*b*e^2+28*a^2*b^2*e^2-12*a*b^3*e^2-19*b^4*e^2-20*a^3*c*e^2+45*a^2*b*c*e^2+39*a*b^2*c*e^2+37*b^3*c*e^2-6*a^2*c^2*e^2+19*a*b*c^2*e^2+23*b^2*c^2*e^2+34*a*c^3*e^2+24*b*c^3*e^2+20*c^4*e^2+14*a^3*d*e^2-8*a^2*b*d*e^2+15*a*b^2*d*e^2+19*b^3*d*e^2+14*a^2*c*d*e^2-42*a*b*c*d*e^2-27*b^2*c*d*e^2+11*a*c^2*d*e^2+24*b*c^2*d*e^2-10*c^3*d*e^2+12*a^2*d^2*e^2+18*a*b*d^2*e^2+21*b^2*d^2*e^2+35*a*c*d^2*e^2-15*b*c*d^2*e^2-32*c^2*d^2*e^2+8*a*d^3*e^2+40*b*d^3*e^2+50*c*d^3*e^2-41*d^4*e^2+42*a^3*e^3-38*a^2*b*e^3-27*a*b^2*e^3+32*b^3*e^3+41*a^2*c*e^3+3*a*b*c*e^3+28*b^2*c*e^3+21*a*c^2*e^3-8*b*c^2*e^3+22*c^3*e^3+8*a^2*d*e^3+49*a*b*d*e^3-24*b^2*d*e^3-8*a*c*d*e^3+30*b*c*d*e^3+35*c^2*d*e^3+49*a*d^2*e^3+39*b*d^2*e^3+23*c*d^2*e^3-47*d^3*e^3+43*a^2*e^4-15*a*b*e^4+20*b^2*e^4-35*b*c*e^4+28*c^2*e^4+35*b*d*e^4+12*c*d*e^4+40*d^2*e^4+32*a*e^5-32*b*e^5+25*c*e^5+9*d*e^5-26*e^6,
    3189 a^4*b^2-31*a^4*d^2+30*a^3*b*d^2-42*a^2*b^2*d^2-32*a*b^3*d^2-38*b^4*d^2-49*a^3*c*d^2-4*a^2*b*c*d^2-45*a*b^2*c*d^2+8*b^3*c*d^2+44*a^2*c^2*d^2+21*a*b*c^2*d^2-13*b^2*c^2*d^2-16*a*c^3*d^2+31*b*c^3*d^2-42*c^4*d^2+49*a^3*d^3+44*a^2*b*d^3+a*b^2*d^3+47*b^3*d^3-31*a^2*c*d^3+42*a*b*c*d^3-34*b^2*c*d^3-44*a*c^2*d^3-3*b*c^2*d^3-14*c^3*d^3+24*a^2*d^4+12*a*b*d^4+14*b^2*d^4-32*a*c*d^4+16*b*c*d^4+40*c^2*d^4+8*a*d^5+5*b*d^5+35*c*d^5+2*d^6+7*a^5*e+a^4*b*e-24*a^3*b^2*e-25*a^2*b^3*e-8*a*b^4*e-46*b^5*e+12*a^4*c*e-49*a^3*b*c*e+47*a^2*b^2*c*e-22*a*b^3*c*e-22*b^4*c*e+31*a^3*c^2*e-48*a^2*b*c^2*e-46*a*b^2*c^2*e+28*b^3*c^2*e-5*a^2*c^3*e+42*a*b*c^3*e-9*b^2*c^3*e+13*a*c^4*e+23*b*c^4*e-29*c^5*e+9*a^4*d*e+9*a^3*b*d*e+3*a^2*b^2*d*e+47*a*b^3*d*e+31*b^4*d*e-25*a^3*c*d*e-37*a*b^2*c*d*e-23*b^3*c*d*e+18*a^2*c^2*d*e+8*a*b*c^2*d*e-15*b^2*c^2*d*e-40*a*c^3*d*e+26*b*c^3*d*e-29*c^4*d*e+20*a^3*d^2*e-25*a^2*b*d^2*e+41*a*b^2*d^2*e+10*b^3*d^2*e-12*a^2*c*d^2*e+38*a*b*c*d^2*e-30*b^2*c*d^2*e-49*b*c^2*d^2*e-34*c^3*d^2*e+14*a^2*d^3*e+45*a*b*d^3*e-29*b^2*d^3*e-23*a*c*d^3*e+33*b*c*d^3*e-23*c^2*d^3*e-36*a*d^4*e+29*b*d^4*e+22*c*d^4*e+45*d^5*e-46*a^4*e^2-37*a^3*b*e^2-36*a^2*b^2*e^2-23*a*b^3*e^2-4*b^4*e^2+31*a^3*c*e^2+45*a^2*b*c*e^2-34*a*b^2*c*e^2+6*b^3*c*e^2-38*a^2*c^2*e^2-26*a*b*c^2*e^2-5*b^2*c^2*e^2-24*a*c^3*e^2-28*b*c^3*e^2+20*c^4*e^2+25*a^3*d*e^2+14*a^2*b*d*e^2+a*b^2*d*e^2+18*b^3*d*e^2+12*a^2*c*d*e^2+32*a*b*c*d*e^2+17*b^2*c*d*e^2+50*a*c^2*d*e^2-12*b*c^2*d*e^2-46*c^3*d*e^2+4*a^2*d^2*e^2-29*a*b*d^2*e^2-16*b^2*d^2*e^2+38*a*c*d^2*e^2+3*b*c*d^2*e^2-19*c^2*d^2*e^2+50*a*d^3*e^2+23*b*d^3*e^2+5*c*d^3*e^2+47*d^4*e^2-38*a^3*e^3-31*a^2*b*e^3+14*a*b^2*e^3-43*b^3*e^3+22*a^2*c*e^3+26*a*b*c*e^3-28*b^2*c*e^3-49*a*c^2*e^3+15*c^3*e^3-40*a^2*d*e^3+5*a*b*d*e^3-20*b^2*d*e^3-40*a*c*d*e^3+35*b*c*d*e^3+17*c^2*d*e^3-8*a*d^2*e^3-6*b*d^2*e^3+3*c*d^2*e^3-7*d^3*e^3+45*a^2*e^4-49*a*b*e^4+45*b^2*e^4-25*a*c*e^4+b*c*e^4-33*c^2*e^4-44*a*d*e^4+30*b*d*e^4-26*c*d*e^4+42*d^2*e^4+14*b*e^5-3*c*e^5-47*d*e^5+22*e^6,
    3190 a^5*b-48*a^4*d^2-33*a^3*b*d^2-34*a^2*b^2*d^2-14*a*b^3*d^2-29*b^4*d^2-7*a^3*c*d^2-13*a^2*b*c*d^2+15*a*b^2*c*d^2+27*b^3*c*d^2+49*a^2*c^2*d^2-a*b*c^2*d^2+46*b^2*c^2*d^2+37*a*c^3*d^2+20*b*c^3*d^2-27*c^4*d^2+33*a^3*d^3+30*a^2*b*d^3+32*a*b^2*d^3+b^3*d^3-47*a^2*c*d^3-2*a*b*c*d^3-36*b^2*c*d^3-7*a*c^2*d^3-23*b*c^2*d^3-41*c^3*d^3-43*a^2*d^4-4*a*b*d^4+14*b^2*d^4+38*a*c*d^4+41*b*c*d^4+27*c^2*d^4-33*a*d^5-50*b*d^5+8*c*d^5+42*d^6-21*a^5*e+46*a^4*b*e+6*a^3*b^2*e+22*a^2*b^3*e+2*a*b^4*e-15*b^5*e+50*a^4*c*e-40*a^2*b^2*c*e+49*a*b^3*c*e+5*b^4*c*e+a^3*c^2*e+47*a^2*b*c^2*e-36*a*b^2*c^2*e+25*b^3*c^2*e-36*a^2*c^3*e+46*a*b*c^3*e+24*b^2*c^3*e-9*a*c^4*e+39*b*c^4*e-40*c^5*e+29*a^4*d*e-49*a^3*b*d*e+16*a^2*b^2*d*e+7*a*b^3*d*e-30*b^4*d*e+42*a^3*c*d*e+22*a^2*b*c*d*e-49*a*b^2*c*d*e+19*b^3*c*d*e-23*a^2*c^2*d*e+7*a*b*c^2*d*e+2*b^2*c^2*d*e-2*a*c^3*d*e-2*b*c^3*d*e+5*c^4*d*e+35*a^3*d^2*e-47*a^2*b*d^2*e-28*a*b^2*d^2*e+5*b^3*d^2*e+45*a^2*c*d^2*e+7*a*b*c*d^2*e+3*b^2*c*d^2*e+33*a*c^2*d^2*e-37*b*c^2*d^2*e+26*c^3*d^2*e-18*a*b*d^3*e-42*b^2*d^3*e-22*a*c*d^3*e-46*b*c*d^3*e-25*c^2*d^3*e+6*a*d^4*e-50*b*d^4*e+22*c*d^4*e-4*d^5*e-42*a^4*e^2+43*a^3*b*e^2+39*a^2*b^2*e^2+12*a*b^3*e^2-20*b^4*e^2+2*a^3*c*e^2+27*a^2*b*c*e^2-21*a*b^2*c*e^2+36*b^3*c*e^2+47*a^2*c^2*e^2-41*a*b*c^2*e^2-23*b^2*c^2*e^2+34*a*c^3*e^2-29*b*c^3*e^2-46*c^4*e^2+15*a^3*d*e^2+4*a^2*b*d*e^2-13*a*b^2*d*e^2+43*b^3*d*e^2-7*a^2*c*d*e^2+4*a*b*c*d*e^2-37*a*c^2*d*e^2-34*b*c^2*d*e^2+20*c^3*d*e^2-5*a^2*d^2*e^2-42*a*b*d^2*e^2+14*b^2*d^2*e^2+9*a*c*d^2*e^2-19*b*c*d^2*e^2+15*c^2*d^2*e^2-35*a*d^3*e^2+24*b*d^3*e^2-35*c*d^3*e^2-14*d^4*e^2-27*a^3*e^3-39*a^2*b*e^3-44*a*b^2*e^3-6*b^3*e^3-30*a^2*c*e^3+47*a*b*c*e^3-26*b^2*c*e^3+9*a*c^2*e^3+16*b*c^2*e^3+37*c^3*e^3-49*a^2*d*e^3+19*a*b*d*e^3+44*b^2*d*e^3-9*a*c*d*e^3-41*b*c*d*e^3+29*c^2*d*e^3-43*a*d^2*e^3+33*b*d^2*e^3-2*c*d^2*e^3-15*d^3*e^3-4*a^2*e^4-46*a*b*e^4+15*b^2*e^4+21*a*c*e^4+13*b*c*e^4+38*c^2*e^4-20*a*d*e^4+16*b*d*e^4-9*c*d*e^4-19*d^2*e^4+14*a*e^5-33*b*e^5+34*c*e^5+16*d*e^5-24*e^6,
    3191 a^6-2*a^4*d^2+3*a^3*b*d^2+18*a^2*b^2*d^2-46*a*b^3*d^2-31*b^4*d^2+48*a^3*c*d^2+7*a^2*b*c*d^2+26*a*b^2*c*d^2+17*b^3*c*d^2-30*a^2*c^2*d^2-2*a*b*c^2*d^2+5*b^2*c^2*d^2-43*a*c^3*d^2-33*b*c^3*d^2-28*c^4*d^2-26*a^3*d^3-5*a^2*b*d^3+48*a*b^2*d^3+2*b^3*d^3-15*a^2*c*d^3-18*a*b*c*d^3-16*b^2*c*d^3-12*a*c^2*d^3+21*b*c^2*d^3-31*c^3*d^3+34*a^2*d^4-40*a*b*d^4+41*b^2*d^4+21*a*c*d^4+26*b*c*d^4+50*c^2*d^4-20*a*d^5+8*b*d^5+30*c*d^5+48*d^6-37*a^5*e+28*a^4*b*e+8*a^3*b^2*e+30*a^2*b^3*e-a*b^4*e-49*b^5*e-8*a^4*c*e+26*a^3*b*c*e+20*a^2*b^2*c*e+19*a*b^3*c*e-23*b^4*c*e+11*a^3*c^2*e+37*a^2*b*c^2*e+40*a*b^2*c^2*e-33*b^3*c^2*e-26*a^2*c^3*e+12*a*b*c^3*e+29*b^2*c^3*e-a*c^4*e-15*b*c^4*e-24*c^5*e-41*a^4*d*e-4*a^3*b*d*e+42*a^2*b^2*d*e+9*a*b^3*d*e-49*b^4*d*e-11*a^3*c*d*e+21*a^2*b*c*d*e+22*a*b^2*c*d*e+22*b^3*c*d*e-9*a^2*c^2*d*e+27*a*b*c^2*d*e-36*b^2*c^2*d*e-10*a*c^3*d*e-39*b*c^3*d*e-3*c^4*d*e+16*a^3*d^2*e+9*a^2*b*d^2*e+7*a*b^2*d^2*e+33*b^3*d^2*e+42*a^2*c*d^2*e-38*a*b*c*d^2*e+33*b^2*c*d^2*e+41*a*c^2*d^2*e-36*b*c^2*d^2*e-21*c^3*d^2*e+34*a^2*d^3*e-43*a*b*d^3*e+32*b^2*d^3*e-9*a*c*d^3*e-34*b*c*d^3*e-4*c^2*d^3*e-10*a*d^4*e-29*b*d^4*e+4*c*d^4*e+36*d^5*e+40*a^4*e^2-32*a^3*b*e^2+13*a^2*b^2*e^2+22*a*b^3*e^2-15*b^4*e^2+31*a^3*c*e^2+7*a^2*b*c*e^2-15*a*b^2*c*e^2+43*b^3*c*e^2-45*a^2*c^2*e^2-42*a*b*c^2*e^2+41*b^2*c^2*e^2-46*a*c^3*e^2-6*b*c^3*e^2+26*c^4*e^2+45*a^3*d*e^2+11*a^2*b*d*e^2+10*a*b^2*d*e^2+5*b^3*d*e^2+3*a^2*c*d*e^2-49*a*b*c*d*e^2-10*b^2*c*d*e^2-50*a*c^2*d*e^2+38*b*c^2*d*e^2+21*c^3*d*e^2+37*a^2*d^2*e^2+a*b*d^2*e^2+38*b^2*d^2*e^2+25*a*c*d^2*e^2-7*b*c*d^2*e^2-13*c^2*d^2*e^2+32*a*d^3*e^2+37*b*d^3*e^2-27*c*d^3*e^2-7*d^4*e^2+44*a^3*e^3+48*a^2*b*e^3+21*a*b^2*e^3+11*b^3*e^3+9*a^2*c*e^3+49*a*b*c*e^3-39*b^2*c*e^3+24*a*c^2*e^3+35*b*c^2*e^3-11*c^3*e^3+17*a^2*d*e^3+36*a*b*d*e^3-19*b^2*d*e^3-47*a*c*d*e^3-47*b*c*d*e^3-12*c^2*d*e^3+34*a*d^2*e^3+35*b*d^2*e^3+18*d^3*e^3-31*a^2*e^4+45*a*b*e^4+27*b^2*e^4+43*a*c*e^4-35*b*c*e^4-29*c^2*e^4-21*a*d*e^4+49*b*d*e^4-23*c*d*e^4+34*d^2*e^4-2*a*e^5+47*b*e^5+31*c*e^5-46*d*e^5-13*e^6,
    3192 e^7, d*e^6, c*e^6, b*e^6, a*e^6, d^2*e^5, c*d*e^5, b*d*e^5, a*d*e^5, c^2*e^5,
    3193 b*c*e^5, a*c*e^5, b^2*e^5, a*b*e^5, a^2*e^5, d^3*e^4, c*d^2*e^4, b*d^2*e^4,
    3194 a*d^2*e^4, c^2*d*e^4, b*c*d*e^4, a*c*d*e^4, b^2*d*e^4, a*b*d*e^4, a^2*d*e^4,
    3195 c^3*e^4, b*c^2*e^4, a*c^2*e^4, b^2*c*e^4, a*b*c*e^4, a^2*c*e^4, b^3*e^4,
    3196 a*b^2*e^4, a^2*b*e^4, a^3*e^4, d^4*e^3, c*d^3*e^3, b*d^3*e^3, a*d^3*e^3,
    3197 c^2*d^2*e^3, b*c*d^2*e^3, a*c*d^2*e^3, b^2*d^2*e^3, a*b*d^2*e^3, a^2*d^2*e^3,
    3198 c^3*d*e^3, b*c^2*d*e^3, a*c^2*d*e^3, b^2*c*d*e^3, a*b*c*d*e^3, a^2*c*d*e^3,
    3199 b^3*d*e^3, a*b^2*d*e^3, a^2*b*d*e^3, a^3*d*e^3, c^4*e^3, b*c^3*e^3, a*c^3*e^3,
    3200 b^2*c^2*e^3, a*b*c^2*e^3, a^2*c^2*e^3, b^3*c*e^3, a*b^2*c*e^3, a^2*b*c*e^3,
    3201 a^3*c*e^3, b^4*e^3, a*b^3*e^3, a^2*b^2*e^3, a^3*b*e^3, a^4*e^3, d^5*e^2,
    3202 c*d^4*e^2, b*d^4*e^2, a*d^4*e^2, c^2*d^3*e^2, b*c*d^3*e^2, a*c*d^3*e^2,
    3203 b^2*d^3*e^2, a*b*d^3*e^2, a^2*d^3*e^2, c^3*d^2*e^2, b*c^2*d^2*e^2,
    3204 a*c^2*d^2*e^2, b^2*c*d^2*e^2, a*b*c*d^2*e^2;
    3205   M;
    3206   TestSSresAttribs(M); 
    3207 // with tails
    3208 // options:  1 1 0 :  Time:  34/73/92 (316 without LCM)
    3209 // options:  1 1 1 :  Time:  35/43/202
    3210   kill M;
    3211 
    3212 
    3213   kill AGR;
    3214 
    3215   ring AGR = (101), (a,b,c,d,e,f), dp; AGR;
    3216   ideal M = b*f+7*c*f+30*d*f-38*e*f, a*f+10*c*f-25*d*f+14*e*f, d*e-10*c*f-17*d*f+26*e*f, c*e-43*c*f+12*d*f+30*e*f, b*e+37*c*f+15*d*f+48*e*f, a*e+21*c*f+37*d*f+42*e*f, c*d+21*c*f+20*d*f-42*e*f, b*d-39*c*f+27*d*f+11*e*f, a*d-39*c*f+17*d*f+21*e*f, b*c+36*c*f+6*d*f-43*e*f, a*c+12*c*f-2*d*f-11*e*f, a*b-35*c*f+d*f+33*e*f, e*f^6+46*f^7, d*f^6-37*f^7, c*f^6+9*f^7, e^7+19*f^7, d^7+40*f^7, c^7+34*f^7, b^7+17*f^7, a^7+40*f^7;
    3217 
    3218   TestSSresAttribs(M); 
    3219  kill M;
    3220 }
    3221 */
    3222 
    3223 // TODO: faster betties!!!
  • Singular/LIB/swalk.lib

    • Property mode changed from 100644 to 100755
  • Singular/dyn_modules/syzextra/test.sh

    r8e682d r8af63a  
    44#"$SINGULAR_EXECUTABLE" -teq "$srcdir/ederc.tst" || exit 1
    55#"$SINGULAR_EXECUTABLE" -teq "$srcdir/syzextra.tst" || exit 1
    6 "$SINGULAR_EXECUTABLE" -tec 'LIB "schreyer.lib"; testSimple(0); $' || exit 1
     6"$SINGULAR_EXECUTABLE" -tec 'LIB "schreyer.lib"; listvar(Top); proc T(){ Schreyer::testSimple(1); /* Schreyer::testAGR(0); Schreyer::testAGRhard(0); */ } T(); $' || exit 1
  • Singular/extra.cc

    r05e7392 r8af63a  
    17771777    if (strcmp(sys_cmd, "Mwalk") == 0)
    17781778    {
    1779       const short t[]={4,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,RING_CMD};
     1779      const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,RING_CMD,INT_CMD,INT_CMD};
    17801780      if (!iiCheckTypes(h,t,1)) return TRUE;
    17811781      if (((intvec*) h->next->Data())->length() != currRing->N &&
     
    17881788      ideal arg1 = (ideal) h->Data();
    17891789      intvec* arg2 = (intvec*) h->next->Data();
    1790       intvec* arg3   =  (intvec*) h->next->next->Data();
    1791       ring arg4   =  (ring) h->next->next->next->Data();
    1792       ideal result = (ideal) Mwalk(arg1, arg2, arg3,arg4);
     1790      intvec* arg3 = (intvec*) h->next->next->Data();
     1791      ring arg4 = (ring) h->next->next->next->Data();
     1792      int arg5 = (int) (long) h->next->next->next->next->Data();
     1793      int arg6 = (int) (long) h->next->next->next->next->next->Data();
     1794      ideal result = (ideal) Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
    17931795      res->rtyp = IDEAL_CMD;
    17941796      res->data =  result;
     
    18261828    if (strcmp(sys_cmd, "Mpwalk") == 0)
    18271829    {
    1828       const short t[]={6,IDEAL_CMD,INT_CMD,INT_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD};
     1830      const short t[]={8,IDEAL_CMD,INT_CMD,INT_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD};
    18291831      if (!iiCheckTypes(h,t,1)) return TRUE;
    18301832      if(((intvec*) h->next->next->next->Data())->length() != currRing->N &&
     
    18401842      intvec* arg5 = (intvec*) h->next->next->next->next->Data();
    18411843      int arg6 = (int) (long) h->next->next->next->next->next->Data();
    1842       ideal result = (ideal) Mpwalk(arg1, arg2, arg3, arg4, arg5,arg6);
     1844      int arg7 = (int) (long) h->next->next->next->next->next->next->Data();
     1845      int arg8 = (int) (long) h->next->next->next->next->next->next->next->Data();
     1846      ideal result = (ideal) Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
    18431847      res->rtyp = IDEAL_CMD;
    18441848      res->data =  result;
     
    18521856    if (strcmp(sys_cmd, "Mrwalk") == 0)
    18531857    {
    1854       const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};
     1858      const short t[]={7,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD};
    18551859      if (!iiCheckTypes(h,t,1)) return TRUE;
    1856       if((((intvec*) h->next->Data())->length() != currRing->N &&
    1857          ((intvec*) h->next->next->Data())->length() != currRing->N ) &&
    1858          (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
    1859          ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ))
     1860      if(((intvec*) h->next->Data())->length() != currRing->N &&
     1861         ((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
     1862         ((intvec*) h->next->next->Data())->length() != currRing->N &&
     1863         ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) )
    18601864      {
    18611865        Werror("system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
     
    18681872      int arg4 = (int)(long) h->next->next->next->Data();
    18691873      int arg5 = (int)(long) h->next->next->next->next->Data();
    1870       ring arg6 = (ring) h->next->next->next->next->next->Data();
    1871       ideal result = (ideal) Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
     1874      int arg6 = (int)(long) h->next->next->next->next->next->Data();
     1875      int arg7 = (int)(long) h->next->next->next->next->next->next->Data();
     1876      ideal result = (ideal) Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
    18721877      res->rtyp = IDEAL_CMD;
    18731878      res->data =  result;
     
    19311936    if (strcmp(sys_cmd, "Mfwalk") == 0)
    19321937    {
    1933       const short t[]={3,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD};
     1938      const short t[]={5,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD};
    19341939      if (!iiCheckTypes(h,t,1)) return TRUE;
    19351940      if (((intvec*) h->next->Data())->length() != currRing->N &&
     
    19381943        Werror("system(\"Mfwalk\" ...) intvecs not of length %d\n",
    19391944                 currRing->N);
    1940         return TRUE;
    1941       }
    1942       ideal arg1 = (ideal) h->Data();
    1943       intvec* arg2 = (intvec*) h->next->Data();
    1944       intvec* arg3   =  (intvec*) h->next->next->Data();
    1945       ideal result = (ideal) Mfwalk(arg1, arg2, arg3);
    1946       res->rtyp = IDEAL_CMD;
    1947       res->data =  result;
    1948       return FALSE;
    1949     }
    1950     else
    1951   #endif
    1952   /*==================== Mfrwalk =================*/
    1953   #ifdef HAVE_WALK
    1954     if (strcmp(sys_cmd, "Mfrwalk") == 0)
    1955     {
    1956       const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};
    1957       if (!iiCheckTypes(h,t,1)) return TRUE;
    1958       if (((intvec*) h->next->Data())->length() != currRing->N &&
    1959           ((intvec*) h->next->next->Data())->length() != currRing->N)
    1960       {
    1961         Werror("system(\"Mfrwalk\" ...) intvecs not of length %d\n",currRing->N);
    19621945        return TRUE;
    19631946      }
     
    19661949      intvec* arg3 = (intvec*) h->next->next->Data();
    19671950      int arg4 = (int)(long) h->next->next->next->Data();
    1968       ideal result = (ideal) Mfrwalk(arg1, arg2, arg3, arg4);
     1951      int arg5 = (int)(long) h->next->next->next->next->Data();
     1952      ideal result = (ideal) Mfwalk(arg1, arg2, arg3, arg4, arg5);
    19691953      res->rtyp = IDEAL_CMD;
    19701954      res->data =  result;
     
    19721956    }
    19731957    else
     1958  #endif
     1959  /*==================== Mfrwalk =================*/
     1960  #ifdef HAVE_WALK
     1961    if (strcmp(sys_cmd, "Mfrwalk") == 0)
     1962    {
     1963      const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD};
     1964      if (!iiCheckTypes(h,t,1)) return TRUE;
     1965/*
     1966      if (((intvec*) h->next->Data())->length() != currRing->N &&
     1967          ((intvec*) h->next->next->Data())->length() != currRing->N)
     1968      {
     1969        Werror("system(\"Mfrwalk\" ...) intvecs not of length %d\n",currRing->N);
     1970        return TRUE;
     1971      }
     1972*/
     1973      if((((intvec*) h->next->Data())->length() != currRing->N &&
     1974         ((intvec*) h->next->next->Data())->length() != currRing->N ) &&
     1975         (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
     1976         ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ))
     1977      {
     1978        Werror("system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
     1979               currRing->N,(currRing->N)*(currRing->N));
     1980        return TRUE;
     1981      }
     1982
     1983      ideal arg1 = (ideal) h->Data();
     1984      intvec* arg2 = (intvec*) h->next->Data();
     1985      intvec* arg3 = (intvec*) h->next->next->Data();
     1986      int arg4 = (int)(long) h->next->next->next->Data();
     1987      int arg5 = (int)(long) h->next->next->next->next->Data();
     1988      int arg6 = (int)(long) h->next->next->next->next->next->Data();
     1989      ideal result = (ideal) Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
     1990      res->rtyp = IDEAL_CMD;
     1991      res->data =  result;
     1992      return FALSE;
     1993    }
     1994    else
    19741995  /*==================== Mprwalk =================*/
    19751996    if (strcmp(sys_cmd, "Mprwalk") == 0)
    19761997    {
    1977       const short t[]={7,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,RING_CMD};
     1998      const short t[]={9,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD};
    19781999      if (!iiCheckTypes(h,t,1)) return TRUE;
    1979       if (((intvec*) h->next->Data())->length() != currRing->N &&
    1980           ((intvec*) h->next->next->Data())->length() != currRing->N )
    1981       {
    1982         Werror("system(\"Mrwalk\" ...) intvecs not of length %d\n",
    1983                currRing->N);
     2000      if((((intvec*) h->next->Data())->length() != currRing->N &&
     2001         ((intvec*) h->next->next->Data())->length() != currRing->N ) &&
     2002         (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
     2003         ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ))
     2004      {
     2005        Werror("system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
     2006               currRing->N,(currRing->N)*(currRing->N));
    19842007        return TRUE;
    19852008      }
     
    19902013      int arg5 = (int)(long) h->next->next->next->next->Data();
    19912014      int arg6 = (int)(long) h->next->next->next->next->next->Data();
    1992       ring arg7 = (ring) h->next->next->next->next->next->next->Data();
    1993       ideal result = (ideal) Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
     2015      int arg7 = (int)(long) h->next->next->next->next->next->next->Data();
     2016      int arg8 = (int)(long) h->next->next->next->next->next->next->next->Data();
     2017      int arg9 = (int)(long) h->next->next->next->next->next->next->next->next->Data();
     2018      ideal result = (ideal) Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
    19942019      res->rtyp = IDEAL_CMD;
    19952020      res->data =  result;
  • Singular/ipassign.cc

    r8e682d r8af63a  
    5757#include "blackbox.h"
    5858
    59 #ifdef SINGULAR_4_1
    6059#include <Singular/number2.h>
    61 #endif
    6260
    6361
  • Singular/newstruct.cc

    r8e682d r8af63a  
    267267      lists n2=(lists)r->Data();
    268268      n2=lCopy_newstruct(n2);
     269      r->CleanUp();
    269270      if (l->rtyp==IDHDL)
    270271      {
  • Singular/number2.h

    r8e682d r8af63a  
    22#define NUMBER2_H
    33
     4#include <libpolys/misc/auxiliary.h>
     5
    46#ifdef SINGULAR_4_1
    5 #include<libpolys/coeffs/coeffs.h>
     7#include <omalloc/omalloc.h>
     8#include <libpolys/coeffs/coeffs.h>
     9#include <kernel/structs.h>
    610struct snumber2;
    711typedef struct snumber2 *   number2;
  • Singular/table.h

    r8e682d r8af63a  
    551551,{D(jjEXTGCD_BI), EXTGCD_CMD,     LIST_CMD,       BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL |ALLOW_RING}
    552552,{D(jjEXTGCD_P),  EXTGCD_CMD,     LIST_CMD,       POLY_CMD,   POLY_CMD, NO_PLURAL |NO_RING}
    553 ,{D(jjFAC_P2),     FAC_CMD,        IDEAL_CMD,      POLY_CMD,   INT_CMD, NO_PLURAL |NO_RING}
     553,{D(jjFAC_P2),    FAC_CMD,        IDEAL_CMD,      POLY_CMD,   INT_CMD, NO_PLURAL |NO_RING}
    554554,{D(jjFACSTD2),   FACSTD_CMD,     LIST_CMD,       IDEAL_CMD,  IDEAL_CMD, NO_PLURAL |NO_RING}
    555555,{D(jjFAREY_BI),  FAREY_CMD,      NUMBER_CMD,     BIGINT_CMD,  BIGINT_CMD, ALLOW_PLURAL |NO_RING}
    556 ,{D(jjFAREY_ID),   FAREY_CMD,     ANY_TYPE/*set by p*/,IDEAL_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}
    557 ,{D(jjFAREY_ID),   FAREY_CMD,     ANY_TYPE/*set by p*/,MODUL_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}
    558 ,{D(jjFAREY_ID),   FAREY_CMD,     ANY_TYPE/*set by p*/,MATRIX_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}
     556,{D(jjFAREY_ID),  FAREY_CMD,     ANY_TYPE/*set by p*/,IDEAL_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}
     557,{D(jjFAREY_ID),  FAREY_CMD,     ANY_TYPE/*set by p*/,MODUL_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}
     558,{D(jjFAREY_ID),  FAREY_CMD,     ANY_TYPE/*set by p*/,MATRIX_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}
    559559,{D(jjFETCH),     FETCH_CMD,      ANY_TYPE/*set by p*/,RING_CMD,  ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}
    560560,{D(jjFETCH),     FETCH_CMD,      ANY_TYPE/*set by p*/,QRING_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}
     
    636636,{D(jjQUOT),      QUOTIENT_CMD,   IDEAL_CMD,      MODUL_CMD,  MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}
    637637,{D(jjRANDOM),    RANDOM_CMD,     INT_CMD,        INT_CMD,    INT_CMD, ALLOW_PLURAL |ALLOW_RING}
    638 ,{D(jjRANK2),     RANK_CMD,       INT_CMD,        MATRIX_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}
     638,{D(jjRANK2),     RANK_CMD,       INT_CMD,        MATRIX_CMD, INT_CMD, ALLOW_PLURAL |NO_RING}
    639639,{D(jjREAD2),     READ_CMD,       STRING_CMD,     LINK_CMD,   STRING_CMD, ALLOW_PLURAL |ALLOW_RING}
    640640,{D(jjREDUCE_P),  REDUCE_CMD,     POLY_CMD,       POLY_CMD,   IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}
     
    844844,{D(jjSTD_HILB_WP), STD_CMD,       IDEAL_CMD,           4      , NO_PLURAL |NO_RING}
    845845,{D(jjQRDS),      QRDS_CMD,        LIST_CMD,            4      , ALLOW_PLURAL |ALLOW_RING}
    846 ,{D(jjFactModD_M),FMD_CMD,         LIST_CMD,           -2      , ALLOW_PLURAL |ALLOW_RING}
     846,{D(jjFactModD_M),FMD_CMD,         LIST_CMD,           -2      , NO_PLURAL |NO_RING}
    847847,{NULL_VAL,       0,               0,                   0      , NO_PLURAL |NO_RING}
    848848};
  • Singular/walk.cc

    • Property mode changed from 100644 to 100755
    <
    r05e7392 r8af63a  
    431431#endif
    432432
    433 #ifdef CHECK_IDEAL_MWALK
     433//#ifdef CHECK_IDEAL_MWALK
    434434static void idString(ideal L, const char* st)
    435435{
     
    443443  Print(" %s;", pString(L->m[nL-1]));
    444444}
    445 #endif
     445//#endif
    446446
    447447#if defined(CHECK_IDEAL_MWALK) || defined(ENDWALKS)
     
    560560  }
    561561  return p0;
     562}
     563
     564/*****************************************************************************
     565 * compute the gcd of the entries of the vectors curr_weight and diff_weight *
     566 *****************************************************************************/
     567static int simplify_gcd(intvec* curr_weight, intvec* diff_weight)
     568{
     569  int j;
     570  int nRing = currRing->N;
     571  int gcd_tmp = (*curr_weight)[0];
     572  for (j=1; j<nRing; j++)
     573  {
     574    gcd_tmp = gcd(gcd_tmp, (*curr_weight)[j]);
     575    if(gcd_tmp == 1)
     576    {
     577      break;
     578    }
     579  }
     580  if(gcd_tmp != 1)
     581  {
     582    for (j=0; j<nRing; j++)
     583    {
     584    gcd_tmp = gcd(gcd_tmp, (*diff_weight)[j]);
     585    if(gcd_tmp == 1)
     586      {
     587        break;
     588      }
     589    }
     590  }
     591  return gcd_tmp;
    562592}
    563593
     
    955985}
    956986
    957 /*****************************************************************************
    958 * create a weight matrix order as intvec of an extra weight vector (a(iv),lp)*
    959 ******************************************************************************/
     987/*********************************************************************************
     988* create a weight matrix order as intvec of an extra weight vector (a(iv),M(iw)) *
     989**********************************************************************************/
    960990intvec* MivMatrixOrderRefine(intvec* iv, intvec* iw)
    961991{
    962   assume(iv->length() == iw->length());
    963   int i, nR = iv->length();
     992  assume((iv->length())*(iv->length()) == iw->length());
     993  int i,j, nR = iv->length();
    964994 
    965995  intvec* ivm = new intvec(nR*nR);
     
    968998  {
    969999    (*ivm)[i] = (*iv)[i];
    970     (*ivm)[i+nR] = (*iw)[i];
    971   }
    972   for(i=2; i<nR; i++)
    973   {
    974     (*ivm)[i*nR+i-2] = 1;
     1000  }
     1001  for(i=1; i<nR; i++)
     1002  {
     1003    for(j=0; j<nR; j++)
     1004    {
     1005      (*ivm)[j+i*nR] = (*iw)[j+i*nR];
     1006    }
    9751007  }
    9761008  return ivm;
     
    18611893}
    18621894
     1895
     1896/**************************************************************
     1897 * Look for the position of the smallest absolut value in vec *
     1898 **************************************************************/
     1899static int MivAbsMaxArg(intvec* vec)
     1900{
     1901  int k = MivAbsMax(vec);
     1902  int i=0;
     1903  while(1)
     1904  {
     1905    if((*vec)[i] == k || (*vec)[i] == -k)
     1906    {
     1907      break;
     1908    }
     1909    i++;
     1910  }
     1911  return i;
     1912}
     1913
     1914
    18631915/**********************************************************************
    18641916 * Compute a next weight vector between curr_weight and target_weight *
     
    18751927
    18761928  int nRing = currRing->N;
    1877   int checkRed, j, kkk, nG = IDELEMS(G);
     1929  int checkRed, j, nG = IDELEMS(G);
    18781930  intvec* ivtemp;
    18791931
     
    19131965  mpz_init(dcw);
    19141966
    1915   //int tn0, tn1, tz1, ncmp, gcd_tmp, ntmp;
    19161967  int gcd_tmp;
    19171968  intvec* diff_weight = MivSub(target_weight, curr_weight);
     
    19191970  intvec* diff_weight1 = MivSub(target_weight, curr_weight);
    19201971  poly g;
    1921   //poly g, gw;
     1972
    19221973  for (j=0; j<nG; j++)
    19231974  {
     
    19812032    }
    19822033  }
    1983 //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t));
     2034  //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t));
    19842035  mpz_t *vec=(mpz_t*)omAlloc(nRing*sizeof(mpz_t));
    19852036
    19862037
    1987   // there is no 0<t<1 and define the next weight vector that is equal to the current weight vector
     2038  // there is no 0<t<1 and define the next weight vector that is equal
     2039  // to the current weight vector
    19882040  if(mpz_cmp(t_nenner, t_null) == 0)
    19892041  {
     
    20562108#endif
    20572109
    2058   //  BOOLEAN isdwpos;
    2059 
    2060   // construct a new weight vector
     2110// construct a new weight vector and check whether vec[j] is overflow,
     2111// i.e. vec[j] > 2^31.
     2112// If vec[j] doesn't overflow, define a weight vector. Otherwise,
     2113// report that overflow appears. In the second case, test whether the
     2114// the correctness of the new vector plays an important role
     2115
    20612116  for (j=0; j<nRing; j++)
    20622117  {
     
    21022157    }
    21032158  }
    2104 
     2159  // reduce the vector with the gcd
     2160  if(mpz_cmp_si(ggt,1) != 0)
     2161  {
     2162    for (j=0; j<nRing; j++)
     2163    {
     2164      mpz_divexact(vec[j], vec[j], ggt);
     2165    }
     2166  }
    21052167#ifdef  NEXT_VECTORS_CC
    21062168  PrintS("\n// gcd of elements of the vector: ");
     
    21082170#endif
    21092171
    2110 /**********************************************************************
    2111 * construct a new weight vector and check whether vec[j] is overflow, *
    2112 * i.e. vec[j] > 2^31.                                                 *
    2113 * If vec[j] doesn't overflow, define a weight vector. Otherwise,      *
    2114 * report that overflow appears. In the second case, test whether the  *
    2115 * the correctness of the new vector plays an important role           *
    2116 **********************************************************************/
    2117   kkk=0;
    21182172  for(j=0; j<nRing; j++)
    21192173    {
     
    21312185
    21322186  REDUCTION:
     2187  checkRed = 1;
    21332188  for (j=0; j<nRing; j++)
    21342189  {
    2135     (*diff_weight)[j] = mpz_get_si(vec[j]);
    2136   }
    2137   while(MivAbsMax(diff_weight) >= 5)
    2138   {
    2139     for (j=0; j<nRing; j++)
    2140     {
    2141       if(mpz_cmp_si(ggt,1)==0)
    2142       {
    2143         (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5);
    2144         // Print("\n//  vector[%d] = %d \n",j+1, (*diff_weight1)[j]);
    2145       }
    2146       else
    2147       {
    2148         mpz_divexact(vec[j], vec[j], ggt);
    2149         (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5);
    2150         // Print("\n//  vector[%d] = %d \n",j+1, (*diff_weight1)[j]);
    2151       }
    2152 /*
    2153       if((*diff_weight1)[j] == 0)
    2154       {
    2155         kkk = kkk + 1;
    2156       }
    2157 */
    2158     }
    2159 
    2160 
    2161 /*
    2162     if(kkk > nRing - 1)
    2163     {
    2164       // diff_weight was reduced to zero
    2165       // Print("\n // MwalkNextWeightCC: geaenderter Vector gleich Null! \n");
    2166       goto TEST_OVERFLOW;
    2167     }
    2168 */
    2169 
    2170     if(test_w_in_ConeCC(G,diff_weight1) != 0)
    2171     {
    2172       Print("\n// MwalkNextWeightCC: geaenderter vector liegt in Groebnerkegel! \n");
    2173       for (j=0; j<nRing; j++)
    2174       {
    2175         (*diff_weight)[j] = (*diff_weight1)[j];
    2176       }
    2177       if(MivAbsMax(diff_weight) < 5)
    2178       {
    2179         checkRed = 1;
    2180         goto SIMPLIFY_GCD;
    2181       }
    2182     }
    2183     else
    2184     {
    2185       // Print("\n// MwalkNextWeightCC: geaenderter vector liegt nicht in Groebnerkegel! \n");
    2186       break;
    2187     }
     2190    (*diff_weight1)[j] = mpz_get_si(vec[j]);
     2191  }
     2192  while(test_w_in_ConeCC(G,diff_weight1))
     2193  {
     2194    for(j=0; j<nRing; j++)
     2195    {
     2196      (*diff_weight)[j] = (*diff_weight1)[j];
     2197      mpz_set_si(vec[j], (*diff_weight)[j]);     
     2198    }
     2199    for(j=0; j<nRing; j++)
     2200    {
     2201      (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5);
     2202    }
     2203  }
     2204  if(MivAbsMax(diff_weight)>10000)
     2205  {
     2206    for(j=0; j<nRing; j++)
     2207    {
     2208      (*diff_weight1)[j] = (*diff_weight)[j];
     2209    }
     2210    j = 0;
     2211    while(test_w_in_ConeCC(G,diff_weight1))
     2212    {
     2213      (*diff_weight)[j] = (*diff_weight1)[j];
     2214      mpz_set_si(vec[j], (*diff_weight)[j]);
     2215      j = MivAbsMaxArg(diff_weight1);
     2216      (*diff_weight1)[j] = floor(0.1*(*diff_weight1)[j] + 0.5);
     2217    }
     2218    goto SIMPLIFY_GCD;
    21882219  }
    21892220
     
    22242255   mpz_clear(t_null);
    22252256
    2226 
    2227 
    22282257  if(Overflow_Error == FALSE)
    22292258  {
    22302259    Overflow_Error = nError;
    22312260  }
    2232  rComplete(currRing);
    2233   for(kkk=0; kkk<IDELEMS(G);kkk++)
    2234   {
    2235     poly p=G->m[kkk];
     2261  rComplete(currRing);
     2262  for(j=0; j<IDELEMS(G); j++)
     2263  {
     2264    poly p=G->m[j];
    22362265    while(p!=NULL)
    22372266    {
     
    22732302}
    22742303
    2275 /**************************************************************
     2304/********************************************************************
    22762305 * define and execute a new ring which order is (a(vb),a(va),lp,C)  *
    2277  * ************************************************************/
     2306 * ******************************************************************/
    22782307static void VMrHomogeneous(intvec* va, intvec* vb)
    22792308{
     
    24272456  //rChangeCurrRing(r);
    24282457}
    2429 
     2458//unused
     2459#if 0
    24302460static ring VMrDefault1(intvec* va)
    24312461{
     
    24982528  return r;
    24992529}
    2500 
     2530#endif
    25012531/****************************************************************
    25022532 * define and execute a new ring with ordering (a(va),Wp(vb),C) *
     
    31283158    else
    31293159    {
    3130       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung
     3160      rChangeCurrRing(VMrDefault(curr_weight));
    31313161    }
    31323162    newRing = currRing;
     
    38843914    else
    38853915    {
    3886       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung
     3916      rChangeCurrRing(VMrDefault(curr_weight));
    38873917    }
    38883918    newRing = currRing;
     
    41454175    else
    41464176    {
    4147       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung
     4177      rChangeCurrRing(VMrDefault(curr_weight));
    41484178    }
    41494179    newRing = currRing;
     
    42874317intvec* Xivlp;
    42884318
    4289 #if 0
    4290 /********************************
    4291  * compute a next weight vector *
    4292  ********************************/
    4293 static intvec* MWalkRandomNextWeight(ideal G, intvec* curr_weight, intvec* target_weight, int weight_rad, int pert_deg)
    4294 {
    4295   int i, weight_norm;
    4296   int nV = currRing->N;
    4297   intvec* next_weight2;
    4298   intvec* next_weight22 = new intvec(nV);
    4299   intvec* next_weight = MwalkNextWeightCC(curr_weight,target_weight, G);
    4300   if(MivComp(next_weight, target_weight) == 1)
    4301   {
    4302     return(next_weight);
    4303   }
    4304   else
    4305   {
    4306     //compute a perturbed next weight vector "next_weight1"
    4307     intvec* next_weight1 = MkInterRedNextWeight(MPertVectors(G, MivMatrixOrder(curr_weight), pert_deg), target_weight, G);
    4308     //Print("\n // size of next_weight1 = %d", sizeof((*next_weight1)));
    4309 
    4310     //compute a random next weight vector "next_weight2"
    4311     while(1)
    4312     {
    4313       weight_norm = 0;
    4314       while(weight_norm == 0)
    4315       {
    4316         for(i=0; i<nV; i++)
    4317         {
    4318           //Print("\n//  next_weight[%d]  = %d", i, (*next_weight)[i]);
    4319           (*next_weight22)[i] = rand() % 60000 - 30000;
    4320           weight_norm = weight_norm + (*next_weight22)[i]*(*next_weight22)[i];
    4321         }
    4322         weight_norm = 1 + floor(sqrt(weight_norm));
    4323       }
    4324 
    4325       for(i=nV-1; i>=0; i--)
    4326       {
    4327         if((*next_weight22)[i] < 0)
    4328         {
    4329           (*next_weight22)[i] = 1 + (*curr_weight)[i] + floor(weight_rad*(*next_weight22)[i]/weight_norm);
    4330         }
    4331         else
    4332         {
    4333           (*next_weight22)[i] = (*curr_weight)[i] + floor(weight_rad*(*next_weight22)[i]/weight_norm);
    4334         }
    4335       //Print("\n//  next_weight22[%d]  = %d", i, (*next_weight22)[i]);
    4336       }
    4337 
    4338       if(test_w_in_ConeCC(G, next_weight22) == 1)
    4339       {
    4340         //Print("\n//MWalkRandomNextWeight: next_weight2 im Kegel\n");
    4341         next_weight2 = MkInterRedNextWeight(next_weight22, target_weight, G);
    4342         delete next_weight22;
    4343         break;
    4344       }
    4345     }
    4346     intvec* result = new intvec(nV);
    4347     ideal G_test = MwalkInitialForm(G, next_weight);
    4348     ideal G_test1 = MwalkInitialForm(G, next_weight1);
    4349     ideal G_test2 = MwalkInitialForm(G, next_weight2);
    4350 
    4351     // compare next_weights
    4352     if(IDELEMS(G_test1) < IDELEMS(G_test))
    4353     {
    4354       if(IDELEMS(G_test2) <= IDELEMS(G_test1)) // |G_test2| <= |G_test1| < |G_test|
    4355       {
    4356         for(i=0; i<nV; i++)
    4357         {
    4358           (*result)[i] = (*next_weight2)[i];
    4359         }
    4360       }
    4361       else // |G_test1| < |G_test|, |G_test1| < |G_test2|
    4362       {
    4363         for(i=0; i<nV; i++)
    4364         {
    4365           (*result)[i] = (*next_weight1)[i];
    4366         }
    4367       }
    4368     }
    4369     else
    4370     {
    4371       if(IDELEMS(G_test2) <= IDELEMS(G_test)) // |G_test2| <= |G_test| <= |G_test1|
    4372       {
    4373         for(i=0; i<nV; i++)
    4374         {
    4375           (*result)[i] = (*next_weight2)[i];
    4376         }
    4377       }
    4378       else // |G_test| <= |G_test1|, |G_test| < |G_test2|
    4379       {
    4380         for(i=0; i<nV; i++)
    4381         {
    4382           (*result)[i] = (*next_weight)[i];
    4383         }
    4384       }
    4385     }
    4386     delete next_weight;
    4387     delete next_weight1;
    4388     idDelete(&G_test);
    4389     idDelete(&G_test1);
    4390     idDelete(&G_test2);
    4391     if(test_w_in_ConeCC(G, result) == 1)
    4392     {
    4393       delete next_weight2;
    4394       return result;
    4395     }
    4396     else
    4397     {
    4398       delete result;
    4399       return next_weight2;
    4400     }
    4401   }
    4402 }
    4403 #endif
    44044319
    44054320/********************************
     
    44164331
    44174332  //compute a perturbed next weight vector "next_weight1"
    4418   //intvec* next_weight1 = MkInterRedNextWeight(MPertVectors(G,MivMatrixOrderRefine(curr_weight,target_weight),pert_deg),target_weight,G);
    44194333  intvec* next_weight1 =MkInterRedNextWeight(curr_weight,target_weight,G);
    44204334  //compute a random next weight vector "next_weight2"
     
    44454359    {
    44464360      next_weight2 = MkInterRedNextWeight(next_weight22,target_weight,G);
     4361      if(MivAbsMax(next_weight2)>1147483647)
     4362      {
     4363        for(i=0; i<nV; i++)
     4364        {
     4365          (*next_weight22)[i] = (*next_weight2)[i];
     4366        }
     4367        i = 0;
     4368        while(test_w_in_ConeCC(G,next_weight22))
     4369        {
     4370          (*next_weight2)[i] = (*next_weight22)[i];
     4371          i = MivAbsMaxArg(next_weight22);
     4372          (*next_weight22)[i] = floor(0.1*(*next_weight22)[i] + 0.5);
     4373        }
     4374      }
    44474375      delete next_weight22;
    44484376      break;
     
    45754503    else
    45764504    {
    4577       rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung
     4505      rChangeCurrRing(VMrDefault(orig_target_weight));
    45784506    }
    45794507    TargetRing = currRing;
     
    46464574    else
    46474575    {
    4648       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung
     4576      rChangeCurrRing(VMrDefault(curr_weight));
    46494577    }
    46504578    newRing = currRing;
     
    47554683    else
    47564684    {
    4757       rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung
     4685      rChangeCurrRing(VMrDefault(orig_target_weight));
    47584686    }
    47594687    F1 = idrMoveR(G, newRing,currRing);
     
    47864714      else
    47874715      {
    4788         rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung
     4716        rChangeCurrRing(VMrDefault(orig_target_weight));
    47894717      }
    47904718    KSTD_Finish:
     
    48844812      tim = clock();
    48854813      /*
    4886         Print("\n// **** Grᅵbnerwalk took %d steps and ", nwalk);
     4814        Print("\n// **** Groebnerwalk took %d steps and ", nwalk);
    48874815        PrintS("\n// **** call the rec. Pert. Walk to compute a red GB of:");
    48884816        idElements(Gomega, "G_omega");
     
    49144842      oldRing = currRing;
    49154843
    4916       /* create a new ring newRing */
     4844      // create a new ring newRing
    49174845       if (rParameter(currRing) != NULL)
    49184846       {
     
    49214849       else
    49224850       {
    4923          rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung
     4851         rChangeCurrRing(VMrDefault(curr_weight));
    49244852       }
    49254853      newRing = currRing;
     
    49474875      else
    49484876      {
    4949         rChangeCurrRing(VMrDefault(curr_weight));  //Aenderung
     4877        rChangeCurrRing(VMrDefault(curr_weight));
    49504878      }
    49514879      newRing = currRing;
     
    49594887      M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight);
    49604888      delete hilb_func;
    4961 #endif // BUCHBERGER_ALG
     4889#endif
    49624890      tstd = tstd + clock() - to;
    49634891
     
    49684896
    49694897      to = clock();
    4970       // compute a representation of the generators of submod (M) with respect to those of mod (Gomega). Gomega is a reduced Groebner basis w.r.t. the current ring.
     4898      // compute a representation of the generators of submod (M) with respect
     4899      // to those of mod (Gomega).
     4900      // Gomega is a reduced Groebner basis w.r.t. the current ring.
    49714901      F = MLifttwoIdeal(Gomega2, M1, G);
    49724902      tlift = tlift + clock() - to;
     
    50184948      else
    50194949      {
    5020         rChangeCurrRing(VMrDefault(target_weight)); // Aenderung
     4950        rChangeCurrRing(VMrDefault(target_weight));
    50214951      }
    50224952      F1 = idrMoveR(G, newRing,currRing);
     
    50654995 * THE GROEBNER WALK ALGORITHM *
    50664996 *******************************/
    5067 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing)
     4997ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M,
     4998            ring baseRing, int reduction, int printout)
    50684999{
    5069   BITSET save1 = si_opt_1; // save current options
    5070   //si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
    5071   //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
    5072   //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5000  // save current options
     5001  BITSET save1 = si_opt_1;
     5002  if(reduction == 0)
     5003  {
     5004    // no reduced Groebner basis
     5005    si_opt_1 &= (~Sy_bit(OPT_REDSB));
     5006    // not tail reductions
     5007    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL));
     5008  }
    50735009  Set_Error(FALSE);
    50745010  Overflow_Error = FALSE;
     
    51115047#endif
    51125048  rComplete(currRing);
    5113 #ifdef CHECK_IDEAL_MWALK
    5114     idString(Go,"Go");
    5115 #endif
     5049//#ifdef CHECK_IDEAL_MWALK
     5050  if(printout > 2)
     5051  {
     5052    idString(Go,"//** Mwalk: Go");
     5053  }
     5054//#endif
    51165055#ifdef TIME_TEST
    51175056  to = clock();
    51185057#endif
    5119      if(orig_M->length() == nV)
    5120       {
    5121         newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
    5122       }
    5123       else
    5124       {
    5125         newRing = VMatrDefault(orig_M);
    5126       }
     5058  if(orig_M->length() == nV)
     5059  {
     5060    // define a new ring with ordering "(a(curr_weight),lp)
     5061    newRing = VMrDefault(curr_weight);
     5062  }
     5063  else
     5064  {
     5065    newRing = VMatrDefault(orig_M);
     5066  }
    51275067  rChangeCurrRing(newRing);
    51285068  ideal G = MstdCC(idrMoveR(Go,baseRing,currRing));
     
    51405080    to = clock();
    51415081#endif
    5142 #ifdef CHECK_IDEAL_MWALK
    5143     idString(G,"G");
    5144 #endif
    5145     Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5082//#ifdef CHECK_IDEAL_MWALK
     5083    if(printout > 2)
     5084    {
     5085      idString(G,"//** Mwalk: G");
     5086    }
     5087//#endif
     5088    // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5089    Gomega = MwalkInitialForm(G, curr_weight);
    51465090#ifdef TIME_TEST
    5147     tif = tif + clock()-to; //time for computing initial form ideal
    5148 #endif
    5149 #ifdef CHECK_IDEAL_MWALK
    5150     idString(Gomega,"Gomega");
    5151 #endif
     5091    //time for computing initial form ideal
     5092    tif = tif + clock()-to;
     5093#endif
     5094//#ifdef CHECK_IDEAL_MWALK
     5095    if(printout > 1)
     5096    {
     5097      idString(Gomega,"//** Mwalk: Gomega");
     5098    }
     5099//#endif
    51525100#ifndef  BUCHBERGER_ALG
    51535101    if(isNolVector(curr_weight) == 0)
     
    51645112      if(orig_M->length() == nV)
    51655113      {
    5166         newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
     5114        // define a new ring with ordering "(a(curr_weight),lp)
     5115        newRing = VMrDefault(curr_weight);
    51675116      }
    51685117      else
     
    51755124     if(target_M->length() == nV)
    51765125     {
    5177        newRing = VMrRefine(curr_weight,target_weight); //define a new ring with ordering "(a(curr_weight),Wp(target_weight))"
     5126       //define a new ring with ordering "(a(curr_weight),Wp(target_weight))"
     5127       newRing = VMrRefine(curr_weight,target_weight);
    51785128     }
    51795129     else
    51805130     {
     5131       //define a new ring with matrix ordering
    51815132       newRing = VMatrRefine(target_M,curr_weight);
    51825133     }
     
    51995150#endif
    52005151    idSkipZeroes(M);
    5201 #ifdef CHECK_IDEAL_MWALK
    5202     PrintS("\n//** Mwalk: computed M.\n");
    5203     idString(M, "M");
    5204 #endif
     5152//#ifdef CHECK_IDEAL_MWALK
     5153    if(printout > 2)
     5154    {
     5155      idString(M, "//** Mwalk: M");
     5156    }
     5157//#endif
    52055158    //change the ring to baseRing
    52065159    rChangeCurrRing(baseRing);
     
    52125165    to = clock();
    52135166#endif
    5214     // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), where Gomega is a reduced Groebner basis w.r.t. the current ring
     5167    // compute a representation of the generators of submod (M) with respect to those of mod (Gomega),
     5168    // where Gomega is a reduced Groebner basis w.r.t. the current ring
    52155169    F = MLifttwoIdeal(Gomega2, M1, G);
    52165170#ifdef TIME_TEST
    52175171    tlift = tlift + clock() - to;
    52185172#endif
    5219 #ifdef CHECK_IDEAL_MWALK
    5220     idString(F, "F");
    5221 #endif
     5173//#ifdef CHECK_IDEAL_MWALK
     5174    if(printout > 2)
     5175    {
     5176      idString(F, "//** Mwalk: F");
     5177    }
     5178//#endif
    52225179    idDelete(&Gomega2);
    52235180    idDelete(&M1);
     
    52295186    to = clock();
    52305187#endif
    5231     //G = kStd(F1,NULL,testHomog,NULL,NULL,0,0,NULL);
     5188
    52325189#ifdef TIME_TEST
    52335190    tstd = tstd + clock() - to;
    52345191#endif
    52355192    idSkipZeroes(G);
    5236 #ifdef CHECK_IDEAL_MWALK
    5237     idString(G, "G");
    5238 #endif
     5193//#ifdef CHECK_IDEAL_MWALK
     5194    if(printout > 2)
     5195    {
     5196      idString(G, "//** Mwalk: G");
     5197    }
     5198//#endif
    52395199#ifdef TIME_TEST
    52405200    to = clock();
     
    52445204    tnw = tnw + clock() - to;
    52455205#endif
    5246 #ifdef PRINT_VECTORS
    5247     MivString(curr_weight, target_weight, next_weight);
    5248 #endif
    5249     if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1)// || test_w_in_ConeCC(G, target_weight) == 1 || MivComp(next_weight,curr_weight) == 1)
    5250     {
    5251 #ifdef CHECK_IDEAL_MWALK
    5252       PrintS("\n//** Mwalk: entering last cone.\n");
    5253 #endif
     5206//#ifdef PRINT_VECTORS
     5207    if(printout > 0)
     5208    {
     5209      MivString(curr_weight, target_weight, next_weight);
     5210    }
     5211//#endif
     5212    if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1 || test_w_in_ConeCC(G, target_weight) == 1)
     5213    {
     5214//#ifdef CHECK_IDEAL_MWALK
     5215      if(printout > 0)
     5216      {
     5217        PrintS("\n//** Mwalk: entering last cone.\n");
     5218      }
     5219//#endif
    52545220      Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
    52555221      if(target_M->length() == nV)
     
    52645230      Gomega1 = idrMoveR(Gomega, baseRing,currRing);
    52655231      idDelete(&Gomega);
    5266 #ifdef CHECK_IDEAL_MWALK
    5267       idString(Gomega1, "Gomega");
    5268 #endif
     5232//#ifdef CHECK_IDEAL_MWALK
     5233      if(printout > 1)
     5234      {
     5235        idString(Gomega1, "//** Mwalk: Gomega");
     5236      }
     5237//#endif
    52695238      M = kStd(Gomega1,NULL,testHomog,NULL,NULL,0,0,NULL);
    5270 #ifdef CHECK_IDEAL_MWALK
    5271       idString(M,"M");
    5272 #endif
     5239//#ifdef CHECK_IDEAL_MWALK
     5240      if(printout > 1)
     5241      {
     5242        idString(M,"//** Mwalk: M");
     5243      }
     5244//#endif
    52735245      rChangeCurrRing(baseRing);
    52745246      M1 =  idrMoveR(M, newRing,currRing);
     
    52775249      idDelete(&Gomega1);
    52785250      F = MLifttwoIdeal(Gomega2, M1, G);
    5279 #ifdef CHECK_IDEAL_MWALK
    5280       idString(F,"F");
    5281 #endif
     5251//#ifdef CHECK_IDEAL_MWALK
     5252    if(printout > 2)
     5253    {
     5254      idString(F,"//** Mwalk: F");
     5255    }
     5256//#endif
    52825257      idDelete(&Gomega2);
    52835258      idDelete(&M1);
     
    52915266      to = clock();
    52925267#endif
    5293  //     if(si_opt_1 == (Sy_bit(OPT_REDSB)))
    5294   //    {
    5295         G = kInterRedCC(G,NULL); //reduce the Groebner basis <G> w.r.t. currRing, if option(redSB) is set
    5296   //    }
     5268      //interreduce the Groebner basis <G> w.r.t. currRing
     5269      G = kInterRedCC(G,NULL);
    52975270#ifdef TIME_TEST
    52985271      tred = tred + clock() - to;
     
    53015274      delete next_weight;
    53025275      break;
    5303 #ifdef CHECK_IDEAL_MWALK
    5304       PrintS("\n//** Mwalk: last cone.\n");
    5305 #endif
    5306     }
    5307 #ifdef CHECK_IDEAL_MWALK
    5308     PrintS("\n//** Mwalk: update weight vectors.\n");
    5309 #endif
     5276    }
    53105277    for(i=nV-1; i>=0; i--)
    53115278    {
     
    53185285  ideal result = idrMoveR(G,baseRing,currRing);
    53195286  idDelete(&G);
    5320 /*#ifdef CHECK_IDEAL_MWALK
    5321   pDelete(&p);
    5322 #endif*/
    53235287  delete tmp_weight;
    53245288  delete ivNull;
     
    53285292#endif
    53295293#ifdef TIME_TEST
    5330   Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);
    53315294  TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep);
    5332   Print("\n//** Mwalk: Ergebnis.\n");
    53335295  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
    53345296  //Print("\n// Overflow_Error? (%d)\n", Overflow_Error);
    53355297#endif
     5298  Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);
    53365299  return(result);
    53375300}
    53385301
    5339 // 07.11.2012
    5340 // THE RANDOM WALK ALGORITHM  ideal Go, intvec* orig_M, intvec* target_M, ring baseRing
    5341 ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg, ring baseRing)
     5302// THE RANDOM WALK ALGORITHM
     5303ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg,
     5304             int reduction, int printout)
    53425305{
    53435306  BITSET save1 = si_opt_1; // save current options
    5344   //si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
    5345   //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
    5346   //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5307  if(reduction == 0)
     5308  {
     5309    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     5310    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     5311    //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5312  }
    53475313  Set_Error(FALSE);
    53485314  Overflow_Error = FALSE;
     
    53545320#endif
    53555321  nstep=0;
    5356   int i,nwalk,endwalks = 0;
    5357   int nV = baseRing->N;
     5322  int i,polylength,nwalk,endwalks = 0;
     5323  int nV = currRing->N;
    53585324
    53595325  ideal Gomega, M, F, Gomega1, Gomega2, M1; //, F1;
    53605326  ring newRing;
    5361   ring XXRing = baseRing;
     5327  ring baseRing = currRing;
     5328  ring XXRing = currRing;
    53625329  intvec* ivNull = new intvec(nV);
    53635330  intvec* curr_weight = new intvec(nV);
     
    53655332  intvec* exivlp = Mivlp(nV);
    53665333  intvec* tmp_weight = new intvec(nV);
     5334  intvec* next_weight= new intvec(nV);
    53675335  for(i=0; i<nV; i++)
    53685336  {
     
    53855353#endif
    53865354  rComplete(currRing);
    5387 #ifdef CHECK_IDEAL_MWALK
    5388     idString(Go,"Go");
    5389 #endif
    53905355#ifdef TIME_TEST
    53915356  to = clock();
    53925357#endif
    5393      if(orig_M->length() == nV)
    5394       {
    5395         newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
    5396       }
    5397       else
    5398       {
    5399         newRing = VMatrDefault(orig_M);
    5400       }
     5358  if(orig_M->length() == nV)
     5359  {
     5360    newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
     5361  }
     5362  else
     5363  {
     5364    newRing = VMatrDefault(orig_M);
     5365  }
    54015366  rChangeCurrRing(newRing);
    54025367  ideal G = MstdCC(idrMoveR(Go,baseRing,currRing));
     
    54145379    to = clock();
    54155380#endif
    5416 #ifdef CHECK_IDEAL_MWALK
    5417     idString(G,"G");
    5418 #endif
     5381//#ifdef CHECK_IDEAL_MWALK
     5382    if(printout > 2)
     5383    {
     5384      idString(G,"//** Mrwalk: G");
     5385    }
     5386//#endif
    54195387    Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5388    //polylength = 1 if there is a polynomial in Gomega with at least 3 monomials and 0 otherwise
     5389    polylength = lengthpoly(Gomega);
    54205390#ifdef TIME_TEST
    54215391    tif = tif + clock()-to; //time for computing initial form ideal
    54225392#endif
    5423 #ifdef CHECK_IDEAL_MWALK
    5424     idString(Gomega,"Gomega");
    5425 #endif
     5393//#ifdef CHECK_IDEAL_MWALK
     5394    if(printout > 1)
     5395    {
     5396      idString(Gomega,"//** Mrwalk: Gomega");
     5397    }
     5398//#endif
    54265399#ifndef  BUCHBERGER_ALG
    54275400    if(isNolVector(curr_weight) == 0)
     
    54735446#endif
    54745447    idSkipZeroes(M);
    5475 #ifdef CHECK_IDEAL_MWALK
    5476     PrintS("\n//** Mwalk: computed M.\n");
    5477     idString(M, "M");
    5478 #endif
     5448//#ifdef CHECK_IDEAL_MWALK
     5449    if(printout > 2)
     5450    {
     5451      idString(M, "//** Mrwalk: M");
     5452    }
     5453//#endif
    54795454    //change the ring to baseRing
    54805455    rChangeCurrRing(baseRing);
     
    54865461    to = clock();
    54875462#endif
    5488     // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), where Gomega is a reduced Groebner basis w.r.t. the current ring
     5463    // compute a representation of the generators of submod (M) with respect to those of mod (Gomega),
     5464    // where Gomega is a reduced Groebner basis w.r.t. the current ring
    54895465    F = MLifttwoIdeal(Gomega2, M1, G);
    54905466#ifdef TIME_TEST
    54915467    tlift = tlift + clock() - to;
    54925468#endif
    5493 #ifdef CHECK_IDEAL_MWALK
    5494     idString(F, "F");
    5495 #endif
     5469//#ifdef CHECK_IDEAL_MWALK
     5470    if(printout > 2)
     5471    {
     5472      idString(F, "//** Mrwalk: F");
     5473    }
     5474//#endif
    54965475    idDelete(&Gomega2);
    54975476    idDelete(&M1);
     
    55025481#ifdef TIME_TEST
    55035482    to = clock();
    5504 #endif
    5505     //G = kStd(F1,NULL,testHomog,NULL,NULL,0,0,NULL);
    5506 #ifdef TIME_TEST
    55075483    tstd = tstd + clock() - to;
    55085484#endif
    55095485    idSkipZeroes(G);
    5510 #ifdef CHECK_IDEAL_MWALK
    5511     idString(G, "G");
    5512 #endif
     5486//#ifdef CHECK_IDEAL_MWALK
     5487    if(printout > 2)
     5488    {
     5489      idString(G, "//** Mrwalk: G");
     5490    }
     5491//#endif
    55135492#ifdef TIME_TEST
    55145493    to = clock();
    55155494#endif
    5516     intvec* next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, pert_deg);//next_weight = MwalkNextWeightCC(curr_weight,target_weight,G);
     5495    next_weight = MwalkNextWeightCC(curr_weight,target_weight,G);
     5496    if(polylength > 0)
     5497    {
     5498      //there is a polynomial in Gomega with at least 3 monomials,
     5499      //low-dimensional facet of the cone
     5500      delete next_weight;
     5501      next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, pert_deg);
     5502    }
    55175503#ifdef TIME_TEST
    55185504    tnw = tnw + clock() - to;
    55195505#endif
    5520 #ifdef PRINT_VECTORS
    5521     MivString(curr_weight, target_weight, next_weight);
    5522 #endif
     5506//#ifdef PRINT_VECTORS
     5507    if(printout > 0)
     5508    {
     5509      MivString(curr_weight, target_weight, next_weight);
     5510    }
     5511//#endif
    55235512    if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1)// || test_w_in_ConeCC(G, target_weight) == 1 || MivComp(next_weight,curr_weight) == 1)
    55245513    {
     
    55275516#endif
    55285517      Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5518//#ifdef CHECK_IDEAL_MWALK
     5519      if(printout > 1)
     5520      {
     5521        idString(Gomega, "//** Mrwalk: Gomega");
     5522      }
     5523//#endif
    55295524      if(target_M->length() == nV)
    55305525      {
     
    55385533      Gomega1 = idrMoveR(Gomega, baseRing,currRing);
    55395534      idDelete(&Gomega);
    5540 #ifdef CHECK_IDEAL_MWALK
    5541       idString(Gomega1, "Gomega");
    5542 #endif
    55435535      M = kStd(Gomega1,NULL,testHomog,NULL,NULL,0,0,NULL);
    5544 #ifdef CHECK_IDEAL_MWALK
    5545       idString(M,"M");
    5546 #endif
     5536//#ifdef CHECK_IDEAL_MWALK
     5537      if(printout > 2)
     5538      {
     5539        idString(M,"//** Mrwalk: M");
     5540      }
     5541//#endif
    55475542      rChangeCurrRing(baseRing);
    55485543      M1 =  idrMoveR(M, newRing,currRing);
     
    55515546      idDelete(&Gomega1);
    55525547      F = MLifttwoIdeal(Gomega2, M1, G);
    5553 #ifdef CHECK_IDEAL_MWALK
    5554       idString(F,"F");
    5555 #endif
    55565548      idDelete(&Gomega2);
    55575549      idDelete(&M1);
     
    55605552      idDelete(&F);
    55615553      baseRing = currRing;
    5562       si_opt_1 = save1; //set original options, e. g. option(RedSB)
    55635554      idSkipZeroes(G);
    55645555#ifdef TIME_TEST
    55655556      to = clock();
    55665557#endif
    5567  //     if(si_opt_1 == (Sy_bit(OPT_REDSB)))
    5568   //    {
    5569         //G = kInterRedCC(G,NULL); //reduce the Groebner basis <G> w.r.t. currRing, if option(redSB) is set
    5570   //    }
     5558//#ifdef CHECK_IDEAL_MWALK
     5559      if(printout > 2)
     5560      {
     5561        idString(G,"//** Mrwalk: G");
     5562      }
     5563/*#endif
     5564      if(si_opt_1 == (Sy_bit(OPT_REDSB)))
     5565      {*/
     5566        G = kInterRedCC(G,NULL); //interreduce the Groebner basis <G> w.r.t. currRing
     5567//      }
    55715568#ifdef TIME_TEST
    55725569      tred = tred + clock() - to;
     
    55755572      delete next_weight;
    55765573      break;
    5577 #ifdef CHECK_IDEAL_MWALK
    5578       PrintS("\n//** Mwalk: last cone.\n");
    5579 #endif
    5580     }
    5581 #ifdef CHECK_IDEAL_MWALK
    5582     PrintS("\n//** Mwalk: update weight vectors.\n");
    5583 #endif
     5574    }
    55845575    for(i=nV-1; i>=0; i--)
    55855576    {
     
    55895580    delete next_weight;
    55905581  }
     5582  baseRing = currRing;
    55915583  rChangeCurrRing(XXRing);
    55925584  ideal result = idrMoveR(G,baseRing,currRing);
    55935585  idDelete(&G);
    5594 /*#ifdef CHECK_IDEAL_MWALK
    5595   pDelete(&p);
    5596 #endif*/
     5586  si_opt_1 = save1; //set original options, e. g. option(RedSB)
    55975587  delete tmp_weight;
    55985588  delete ivNull;
     
    56015591  delete last_omega;
    56025592#endif
     5593  Print("\n//** Mrwalk: Groebner Walk took %d steps.\n", nstep);
    56035594#ifdef TIME_TEST
    5604   Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);
    56055595  TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep);
    5606   Print("\n//** Mwalk: Ergebnis.\n");
    56075596  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
    56085597  //Print("\n// Overflow_Error? (%d)\n", Overflow_Error);
     
    57515740// use kStd, if nP = 0, else call LastGB
    57525741ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,
    5753              intvec* target_weight, int nP)
     5742             intvec* target_weight, int nP, int reduction, int printout)
    57545743{
     5744  BITSET save1 = si_opt_1; // save current options
     5745  if(reduction == 0)
     5746  {
     5747    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     5748    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     5749    //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5750  }
    57555751  Set_Error(FALSE  );
    57565752  Overflow_Error = FALSE;
     
    57905786  ring XXRing = currRing;
    57915787
    5792 
    57935788  to = clock();
    5794   /* perturbs the original vector */
     5789  // perturbs the original vector
    57955790  if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) := "dp"
    57965791  {
     
    58095804      DefRingPar(curr_weight);
    58105805    else
    5811       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 1
     5806      rChangeCurrRing(VMrDefault(curr_weight));
    58125807
    58135808    G = idrMoveR(Go, XXRing,currRing);
     
    58245819  ring HelpRing = currRing;
    58255820
    5826   /* perturbs the target weight vector */
     5821  // perturbs the target weight vector
    58275822  if(tp_deg > 1 && tp_deg <= nV)
    58285823  {
     
    58305825      DefRingPar(target_weight);
    58315826    else
    5832       rChangeCurrRing(VMrDefault(target_weight)); // Aenderung 2
     5827      rChangeCurrRing(VMrDefault(target_weight));
    58335828
    58345829    TargetRing = currRing;
     
    58525847    G = idrMoveR(ssG, TargetRing,currRing);
    58535848  }
    5854   /*
    5855     Print("\n// Perturbationwalkalg. vom Gradpaar (%d,%d):",op_deg,tp_deg);
    5856     ivString(curr_weight, "new sigma");
    5857     ivString(target_weight, "new tau");
    5858   */
     5849    if(printout > 0)
     5850    {
     5851      Print("\n//** Mpwalk: Perturbation Walk of degree (%d,%d):",op_deg,tp_deg);
     5852      ivString(curr_weight, "//** Mpwalk: new current weight");
     5853      ivString(target_weight, "//** Mpwalk: new target weight");
     5854    }
    58595855  while(1)
    58605856  {
     
    58645860       "curr_weight" */
    58655861    Gomega = MwalkInitialForm(G, curr_weight);
    5866 
     5862//#ifdef CHECK_IDEAL_MWALK
     5863      if(printout > 1)
     5864      {
     5865        idString(Gomega,"//** Mpwalk: Gomega");
     5866      }
     5867//#endif
    58675868
    58685869#ifdef ENDWALKS
    5869     if(endwalks == 1){
     5870    if(endwalks == 1)
     5871    {
    58705872      Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
    58715873      idElements(G, "G");
    5872       // idElements(Gomega, "Gw");
    58735874      headidString(G, "G");
    5874       //headidString(Gomega, "Gw");
    58755875    }
    58765876#endif
     
    58915891      DefRingPar(curr_weight);
    58925892    else
    5893       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 3
     5893      rChangeCurrRing(VMrDefault(curr_weight));
    58945894
    58955895    newRing = currRing;
     
    59185918    M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight);
    59195919    delete hilb_func;
    5920 #endif // BUCHBERGER_ALG
     5920#endif
     5921//#ifdef CHECK_IDEAL_MWALK
     5922      if(printout > 2)
     5923      {
     5924        idString(M,"//** Mpwalk: M");
     5925      }
     5926//#endif
    59215927
    59225928    if(endwalks == 1){
     
    59345940    M1 =  idrMoveR(M, newRing,currRing);
    59355941    Gomega2 =  idrMoveR(Gomega1, newRing,currRing);
    5936 
    5937     //if(endwalks==1)  PrintS("\n// Lifting is working:..");
    59385942
    59395943    to=clock();
     
    59475951      xtlift=clock()-to;
    59485952
     5953//#ifdef CHECK_IDEAL_MWALK
     5954    if(printout > 2)
     5955    {
     5956      idString(F,"//** Mpwalk: F");
     5957    }
     5958//#endif
     5959
    59495960    idDelete(&M1);
    59505961    idDelete(&Gomega2);
     
    59545965    rChangeCurrRing(newRing);
    59555966    F1 = idrMoveR(F, oldRing,currRing);
    5956 
    5957     //if(endwalks==1)PrintS("\n// InterRed is working now:");
    59585967
    59595968    to=clock();
     
    59715980
    59725981    to=clock();
    5973     /* compute a next weight vector */
     5982    // compute a next weight vector
    59745983    next_weight = MkInterRedNextWeight(curr_weight,target_weight, G);
    59755984    tnw=tnw+clock()-to;
    5976 #ifdef PRINT_VECTORS
    5977     MivString(curr_weight, target_weight, next_weight);
    5978 #endif
     5985//#ifdef PRINT_VECTORS
     5986    if(printout > 2)
     5987    {
     5988      MivString(curr_weight, target_weight, next_weight);
     5989    }
     5990//#endif
    59795991
    59805992    if(Overflow_Error == TRUE)
     
    60146026        DefRingPar(orig_target);
    60156027      else
    6016         rChangeCurrRing(VMrDefault(orig_target)); //Aenderung
     6028        rChangeCurrRing(VMrDefault(orig_target));
    60176029
    60186030    TargetRing=currRing;
     
    60686080    Eresult = idrMoveR(G, newRing,currRing);
    60696081  }
     6082  si_opt_1 = save1; //set original options, e. g. option(RedSB)
    60706083  delete ivNull;
    60716084  if(tp_deg != 1)
     
    60826095             tnw+xtnw);
    60836096
    6084   Print("\n// pSetm_Error = (%d)", ErrorCheck());
    6085   Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep,  Overflow_Error);
    6086 #endif
     6097  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
     6098  //Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep,  Overflow_Error);
     6099#endif
     6100  Print("\n//** Mpwalk: Perturbation Walk took %d steps.\n", nstep);
     6101  return(Eresult);
     6102}
     6103
     6104/*******************************************************
     6105 * THE PERTURBATION WALK ALGORITHM WITH RANDOM ELEMENT *
     6106 *******************************************************/
     6107ideal Mprwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad,
     6108              int op_deg, int tp_deg, int nP, int reduction, int printout)
     6109{
     6110  BITSET save1 = si_opt_1; // save current options
     6111  if(reduction == 0)
     6112  {
     6113    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     6114    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     6115    //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     6116  }
     6117  Set_Error(FALSE);
     6118  Overflow_Error = FALSE;
     6119  //Print("// pSetm_Error = (%d)", ErrorCheck());
     6120
     6121  clock_t  tinput, tostd, tif=0, tstd=0, tlift=0, tred=0, tnw=0;
     6122  xtextra=0;
     6123  xtif=0; xtstd=0; xtlift=0; xtred=0; xtnw=0;
     6124  tinput = clock();
     6125
     6126  clock_t tim;
     6127
     6128  nstep = 0;
     6129  int i, ntwC=1, ntestw=1, polylength, nV = currRing->N;
     6130  int endwalks=0;
     6131
     6132  ideal Gomega, M, F, G, Gomega1, Gomega2, M1,F1,Eresult,ssG;
     6133  ring newRing, oldRing, TargetRing;
     6134  intvec* iv_M_dp;
     6135  intvec* iv_M_lp;
     6136  intvec* exivlp = Mivlp(nV);
     6137  intvec* curr_weight = new intvec(nV);
     6138  intvec* target_weight = new intvec(nV);
     6139  for(i=0; i<nV; i++)
     6140  {
     6141    (*curr_weight)[i] = (*orig_M)[i];
     6142    (*target_weight)[i] = (*target_M)[i];
     6143  }
     6144  intvec* orig_target = target_weight;
     6145  intvec* pert_target_vector = target_weight;
     6146  intvec* ivNull = new intvec(nV);
     6147  intvec* iv_dp = MivUnit(nV);// define (1,1,...,1)
     6148#ifndef BUCHBERGER_ALG
     6149  intvec* hilb_func;
     6150#endif
     6151  intvec* next_weight;
     6152
     6153  // to avoid (1,0,...,0) as the target vector
     6154  intvec* last_omega = new intvec(nV);
     6155  for(i=nV-1; i>0; i--)
     6156    (*last_omega)[i] = 1;
     6157  (*last_omega)[0] = 10000;
     6158
     6159  ring XXRing = currRing;
     6160
     6161  to = clock();
     6162  // perturbs the original vector
     6163  if(orig_M->length() == nV)
     6164  {
     6165    if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) := "dp"
     6166    {
     6167      G = MstdCC(Go);
     6168      tostd = clock()-to;
     6169      if(op_deg != 1)
     6170      {
     6171        iv_M_dp = MivMatrixOrderdp(nV);
     6172        //ivString(iv_M_dp, "iv_M_dp");
     6173        curr_weight = MPertVectors(G, iv_M_dp, op_deg);
     6174      }
     6175    }
     6176    else
     6177    {
     6178      //define ring order := (a(curr_weight),lp);
     6179      if (rParameter(currRing) != NULL)
     6180        DefRingPar(curr_weight);
     6181      else
     6182        rChangeCurrRing(VMrDefault(curr_weight));
     6183
     6184      G = idrMoveR(Go, XXRing,currRing);
     6185      G = MstdCC(G);
     6186      tostd = clock()-to;
     6187      if(op_deg != 1)
     6188      {
     6189        iv_M_dp = MivMatrixOrder(curr_weight);
     6190        curr_weight = MPertVectors(G, iv_M_dp, op_deg);
     6191      }
     6192    }
     6193  }
     6194  else
     6195  {
     6196    rChangeCurrRing(VMatrDefault(orig_M));
     6197    G = idrMoveR(Go, XXRing,currRing);
     6198    G = MstdCC(G);
     6199    tostd = clock()-to;
     6200    if(op_deg != 1)
     6201    {
     6202      curr_weight = MPertVectors(G, orig_M, op_deg);
     6203    }
     6204  }
     6205
     6206  delete iv_dp;
     6207  if(op_deg != 1) delete iv_M_dp;
     6208
     6209  ring HelpRing = currRing;
     6210
     6211  // perturbs the target weight vector
     6212  if(target_M->length() == nV)
     6213  {
     6214    if(tp_deg > 1 && tp_deg <= nV)
     6215    {
     6216      if (rParameter(currRing) != NULL)
     6217        DefRingPar(target_weight);
     6218      else
     6219        rChangeCurrRing(VMrDefault(target_weight));
     6220
     6221      TargetRing = currRing;
     6222      ssG = idrMoveR(G,HelpRing,currRing);
     6223      if(MivSame(target_weight, exivlp) == 1)
     6224      {
     6225        iv_M_lp = MivMatrixOrderlp(nV);
     6226        //ivString(iv_M_lp, "iv_M_lp");
     6227        //target_weight = MPertVectorslp(ssG, iv_M_lp, tp_deg);
     6228        target_weight = MPertVectors(ssG, iv_M_lp, tp_deg);
     6229      }
     6230      else
     6231      {
     6232        iv_M_lp = MivMatrixOrder(target_weight);
     6233        //target_weight = MPertVectorslp(ssG, iv_M_lp, tp_deg);
     6234        target_weight = MPertVectors(ssG, iv_M_lp, tp_deg);
     6235      }
     6236      delete iv_M_lp;
     6237      pert_target_vector = target_weight;
     6238      rChangeCurrRing(HelpRing);
     6239      G = idrMoveR(ssG, TargetRing,currRing);
     6240    }
     6241  }
     6242  else
     6243  {
     6244    if(tp_deg > 1 && tp_deg <= nV)
     6245    {
     6246      rChangeCurrRing(VMatrDefault(target_M));
     6247      TargetRing = currRing;
     6248      ssG = idrMoveR(G,HelpRing,currRing);
     6249      target_weight = MPertVectors(ssG, target_M, tp_deg);
     6250    }
     6251  }
     6252  if(printout > 0)
     6253  {
     6254    Print("\n//** Mprwalk: Random Perturbation Walk of degree (%d,%d):",op_deg,tp_deg);
     6255    ivString(curr_weight, "//** Mprwalk: new current weight");
     6256    ivString(target_weight, "//** Mprwalk: new target weight");
     6257  }
     6258  while(1)
     6259  {
     6260    nstep ++;
     6261    to = clock();
     6262    /* compute an initial form ideal of <G> w.r.t. the weight vector
     6263       "curr_weight" */
     6264    Gomega = MwalkInitialForm(G, curr_weight);
     6265//#ifdef CHECK_IDEAL_MWALK
     6266    if(printout > 1)
     6267    {
     6268      idString(Gomega,"//** Mprwalk: Gomega");
     6269    }
     6270//#endif
     6271    polylength = lengthpoly(Gomega);
     6272#ifdef ENDWALKS
     6273    if(endwalks == 1)
     6274    {
     6275      Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6276      idElements(G, "G");
     6277      headidString(G, "G");
     6278    }
     6279#endif
     6280
     6281    tif = tif + clock()-to;
     6282
     6283#ifndef  BUCHBERGER_ALG
     6284    if(isNolVector(curr_weight) == 0)
     6285      hilb_func = hFirstSeries(Gomega,NULL,NULL,curr_weight,currRing);
     6286    else
     6287      hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing);
     6288#endif // BUCHBERGER_ALG
     6289
     6290    oldRing = currRing;
     6291
     6292    if(target_M->length() == nV)
     6293    {
     6294      // define a new ring with ordering "(a(curr_weight),lp)
     6295      if (rParameter(currRing) != NULL)
     6296        DefRingPar(curr_weight);
     6297      else
     6298        rChangeCurrRing(VMrDefault(curr_weight));
     6299    }
     6300    else
     6301    {
     6302      rChangeCurrRing(VMatrRefine(target_M,curr_weight));
     6303    }
     6304    newRing = currRing;
     6305    Gomega1 = idrMoveR(Gomega, oldRing,currRing);
     6306
     6307#ifdef ENDWALKS
     6308    if(endwalks==1)
     6309    {
     6310      Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6311      idElements(Gomega1, "Gw");
     6312      headidString(Gomega1, "headGw");
     6313      PrintS("\n// compute a rGB of Gw:\n");
     6314
     6315#ifndef  BUCHBERGER_ALG
     6316      ivString(hilb_func, "w");
     6317#endif
     6318    }
     6319#endif
     6320
     6321    tim = clock();
     6322    to = clock();
     6323    /* compute a reduced Groebner basis of <Gomega> w.r.t. "newRing" */
     6324#ifdef  BUCHBERGER_ALG
     6325    M = MstdhomCC(Gomega1);
     6326#else
     6327    M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight);
     6328    delete hilb_func;
     6329#endif
     6330//#ifdef CHECK_IDEAL_MWALK
     6331    if(printout > 2)
     6332    {
     6333      idString(M,"//** Mprwalk: M");
     6334    }
     6335//#endif
     6336
     6337    if(endwalks == 1)
     6338    {
     6339      xtstd = xtstd+clock()-to;
     6340#ifdef ENDWALKS
     6341      Print("\n// time for the last std(Gw)  = %.2f sec\n",
     6342            ((double) clock())/1000000 -((double)tim) /1000000);
     6343#endif
     6344    }
     6345    else
     6346      tstd=tstd+clock()-to;
     6347
     6348    /* change the ring to oldRing */
     6349    rChangeCurrRing(oldRing);
     6350    M1 =  idrMoveR(M, newRing,currRing);
     6351    Gomega2 =  idrMoveR(Gomega1, newRing,currRing);
     6352
     6353    to=clock();
     6354    /* compute a representation of the generators of submod (M)
     6355       with respect to those of mod (Gomega).
     6356       Gomega is a reduced Groebner basis w.r.t. the current ring */
     6357    F = MLifttwoIdeal(Gomega2, M1, G);
     6358    if(endwalks != 1)
     6359      tlift = tlift+clock()-to;
     6360    else
     6361      xtlift=clock()-to;
     6362
     6363//#ifdef CHECK_IDEAL_MWALK
     6364    if(printout > 2)
     6365    {
     6366      idString(F,"//** Mprwalk: F");
     6367    }
     6368//#endif
     6369
     6370    idDelete(&M1);
     6371    idDelete(&Gomega2);
     6372    idDelete(&G);
     6373
     6374    /* change the ring to newRing */
     6375    rChangeCurrRing(newRing);
     6376    F1 = idrMoveR(F, oldRing,currRing);
     6377
     6378    to=clock();
     6379    /* reduce the Groebner basis <G> w.r.t. new ring */
     6380    G = kInterRedCC(F1, NULL);
     6381    if(endwalks != 1)
     6382      tred = tred+clock()-to;
     6383    else
     6384      xtred=clock()-to;
     6385
     6386    idDelete(&F1);
     6387
     6388    if(endwalks == 1)
     6389      break;
     6390
     6391    to=clock();
     6392    // compute a next weight vector
     6393    next_weight = MkInterRedNextWeight(curr_weight,target_weight, G);
     6394    if(polylength > 0)
     6395    {
     6396      //there is a polynomial in Gomega with at least 3 monomials,
     6397      //low-dimensional facet of the cone
     6398      delete next_weight;
     6399      next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, op_deg);
     6400    }
     6401    tnw=tnw+clock()-to;
     6402//#ifdef PRINT_VECTORS
     6403    if(printout > 2)
     6404    {
     6405      MivString(curr_weight, target_weight, next_weight);
     6406    }
     6407//#endif
     6408
     6409    if(Overflow_Error == TRUE)
     6410    {
     6411      ntwC = 0;
     6412      //ntestomega = 1;
     6413      //Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6414      //idElements(G, "G");
     6415      delete next_weight;
     6416      goto FINISH_160302;
     6417    }
     6418    if(MivComp(next_weight, ivNull) == 1){
     6419      newRing = currRing;
     6420      delete next_weight;
     6421      //Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6422      break;
     6423    }
     6424    if(MivComp(next_weight, target_weight) == 1)
     6425      endwalks = 1;
     6426
     6427    for(i=nV-1; i>=0; i--)
     6428      (*curr_weight)[i] = (*next_weight)[i];
     6429
     6430    delete next_weight;
     6431  }//while
     6432
     6433  if(tp_deg != 1)
     6434  {
     6435    FINISH_160302:
     6436    if(target_M->length() == nV)
     6437    {
     6438      if(MivSame(orig_target, exivlp) == 1)
     6439        if (rParameter(currRing) != NULL)
     6440          DefRingParlp();
     6441        else
     6442          VMrDefaultlp();
     6443      else
     6444        if (rParameter(currRing) != NULL)
     6445          DefRingPar(orig_target);
     6446        else
     6447          rChangeCurrRing(VMrDefault(orig_target));
     6448    }
     6449    else
     6450    {
     6451      rChangeCurrRing(VMatrDefault(target_M));
     6452    }
     6453    TargetRing=currRing;
     6454    F1 = idrMoveR(G, newRing,currRing);
     6455#ifdef CHECK_IDEAL
     6456      headidString(G, "G");
     6457#endif
     6458
     6459    // check whether the pertubed target vector stays in the correct cone
     6460    if(ntwC != 0){
     6461      ntestw = test_w_in_ConeCC(F1, pert_target_vector);
     6462    }
     6463
     6464    if( ntestw != 1 || ntwC == 0)
     6465    {
     6466      /*
     6467      if(ntestw != 1){
     6468        ivString(pert_target_vector, "tau");
     6469        PrintS("\n// ** perturbed target vector doesn't stay in cone!!");
     6470        Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6471        idElements(F1, "G");
     6472      }
     6473      */
     6474      // LastGB is "better" than the kStd subroutine
     6475      to=clock();
     6476      ideal eF1;
     6477      if(nP == 0 || tp_deg == 1 || MivSame(orig_target, exivlp) != 1 || target_M->length() != nV){
     6478        // PrintS("\n// ** calls \"std\" to compute a GB");
     6479        eF1 = MstdCC(F1);
     6480        idDelete(&F1);
     6481      }
     6482      else {
     6483        // PrintS("\n// ** calls \"LastGB\" to compute a GB");
     6484        rChangeCurrRing(newRing);
     6485        ideal F2 = idrMoveR(F1, TargetRing,currRing);
     6486        eF1 = LastGB(F2, curr_weight, tp_deg-1);
     6487        F2=NULL;
     6488      }
     6489      xtextra=clock()-to;
     6490      ring exTargetRing = currRing;
     6491
     6492      rChangeCurrRing(XXRing);
     6493      Eresult = idrMoveR(eF1, exTargetRing,currRing);
     6494    }
     6495    else{
     6496      rChangeCurrRing(XXRing);
     6497      Eresult = idrMoveR(F1, TargetRing,currRing);
     6498    }
     6499  }
     6500  else {
     6501    rChangeCurrRing(XXRing);
     6502    Eresult = idrMoveR(G, newRing,currRing);
     6503  }
     6504  si_opt_1 = save1; //set original options, e. g. option(RedSB)
     6505  delete ivNull;
     6506  if(tp_deg != 1)
     6507    delete target_weight;
     6508
     6509  if(op_deg != 1 )
     6510    delete curr_weight;
     6511
     6512  delete exivlp;
     6513  delete last_omega;
     6514
     6515#ifdef TIME_TEST
     6516  TimeStringFractal(tinput, tostd, tif+xtif, tstd+xtstd,0, tlift+xtlift, tred+xtred,
     6517             tnw+xtnw);
     6518
     6519  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
     6520  //Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep,  Overflow_Error);
     6521#endif
     6522  Print("\n//** Mprwalk: Perturbation Walk took %d steps.\n", nstep);
    60876523  return(Eresult);
    60886524}
     
    61106546 * Perturb the start weight vector at the top level, i.e. nlev = 1     *
    61116547 ***********************************************************************/
    6112 static ideal rec_fractal_call(ideal G, int nlev, intvec* omtmp)
     6548static ideal rec_fractal_call(ideal G, int nlev, intvec* ivtarget, int printout)
    61136549{
    61146550  Overflow_Error =  FALSE;
     
    61276563  intvec* next_vect;
    61286564  intvec* omega2 = new intvec(nV);
     6565  intvec* omtmp = new intvec(nV);
    61296566  intvec* altomega = new intvec(nV);
    61306567
     6568  for(i = nV -1; i>0; i--)
     6569  {
     6570    (*omtmp)[i] = (*ivtarget)[i];
     6571  }
    61316572  //BOOLEAN isnewtarget = FALSE;
    61326573
     
    61696610    NEXT_VECTOR_FRACTAL:
    61706611    to=clock();
    6171     /* determine the next border */
     6612    // determine the next border
    61726613    next_vect = MkInterRedNextWeight(omega,omega2,G);
    61736614    xtnw=xtnw+clock()-to;
    6174 #ifdef PRINT_VECTORS
    6175     MivString(omega, omega2, next_vect);
    6176 #endif
     6615
    61776616    oRing = currRing;
    61786617
    6179     /* We only perturb the current target vector at the recursion  level 1 */
     6618    // We only perturb the current target vector at the recursion  level 1
    61806619    if(Xngleich == 0 && nlev == 1) //(ngleich == 0) important, e.g. ex2, ex3
    61816620      if (MivComp(next_vect, omega2) == 1)
    61826621      {
    6183         /* to dispense with taking initial (and lifting/interreducing
    6184            after the call of recursion */
    6185         //Print("\n\n// ** Perturb the both vectors with degree %d with",nlev);
    6186         //idElements(G, "G");
     6622        // to dispense with taking initial (and lifting/interreducing
     6623        // after the call of recursion
     6624        if(printout > 0)
     6625        {
     6626          Print("\n//** rec_fractal_call: Perturb the both vectors with degree %d.",nlev);
     6627          //idElements(G, "G");
     6628        }
    61876629
    61886630        Xngleich = 1;
    61896631        nlev +=1;
    61906632
    6191         if (rParameter(currRing) != NULL)
    6192           DefRingPar(omtmp);
     6633        if(ivtarget->length() == nV)
     6634        {
     6635          if (rParameter(currRing) != NULL)
     6636            DefRingPar(omtmp);
     6637          else
     6638            rChangeCurrRing(VMrDefault(omtmp));
     6639        }
    61936640        else
    6194           rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung3
    6195 
     6641        {
     6642          rChangeCurrRing(VMatrDefault(ivtarget));
     6643        }
    61966644        testring = currRing;
    61976645        Gt = idrMoveR(G, oRing,currRing);
    61986646
    6199         /* perturb the original target vector w.r.t. the current GB */
    6200         delete Xtau;
    6201         Xtau = NewVectorlp(Gt);
     6647        // perturb the original target vector w.r.t. the current GB
     6648        if(ivtarget->length() == nV)
     6649        {
     6650          delete Xtau;
     6651          Xtau = NewVectorlp(Gt);
     6652        }
     6653        else
     6654        {
     6655          delete Xtau;
     6656          Xtau = Mfpertvector(Gt,ivtarget);
     6657        }
    62026658
    62036659        rChangeCurrRing(oRing);
    62046660        G = idrMoveR(Gt, testring,currRing);
    62056661
    6206         /* perturb the current vector w.r.t. the current GB */
     6662        // perturb the current vector w.r.t. the current GB
    62076663        Mwlp = MivWeightOrderlp(omega);
    62086664        Xsigma = Mfpertvector(G, Mwlp);
     
    62226678        next_vect = MkInterRedNextWeight(omega,omega2,G);
    62236679        xtnw=xtnw+clock()-to;
    6224 
    6225 #ifdef PRINT_VECTORS
     6680      }
     6681//#ifdef PRINT_VECTORS
     6682      if(printout > 0)
     6683      {
    62266684        MivString(omega, omega2, next_vect);
    6227 #endif
    6228       }
    6229 
     6685      }
     6686//#endif
    62306687
    62316688    /* check whether the the computed vector is in the correct cone */
     
    62366693    {
    62376694      delete next_vect;
    6238       if (rParameter(currRing) != NULL)
    6239       {
    6240         DefRingPar(omtmp);
     6695      if(ivtarget->length() == nV)
     6696      {
     6697        if (rParameter(currRing) != NULL)
     6698          DefRingPar(omtmp);
     6699        else
     6700          rChangeCurrRing(VMrDefault(omtmp));
    62416701      }
    62426702      else
    62436703      {
    6244         rChangeCurrRing(VMrDefault1(omtmp)); // Aenderung4
     6704        rChangeCurrRing(VMatrDefault(ivtarget));
    62456705      }
    62466706#ifdef TEST_OVERFLOW
     
    62486708      Gt = NULL; return(Gt);
    62496709#endif
    6250 
    6251       //Print("\n\n// apply BB's alg. in ring r = %s;", rString(currRing));
     6710      if(printout > 0)
     6711      {
     6712        Print("\n//** rec_fractal_call: applying Buchberger's algorithm in ring r = %s;",
     6713              rString(currRing));
     6714      }
    62526715      to=clock();
    62536716      Gt = idrMoveR(G, oRing,currRing);
     
    62586721      delete omega2;
    62596722      delete altomega;
    6260 
    6261       //Print("\n// Leaving the %d-th recursion with %d steps", nlev, nwalks);
    6262       //Print("  ** Overflow_Error? (%d)", Overflow_Error);
     6723      if(printout > 0)
     6724      {
     6725        Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     6726              nlev, nwalks);
     6727        //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     6728      }
     6729
    62636730      nnflow ++;
    62646731
     
    62776744    if (MivComp(next_vect, XivNull) == 1)
    62786745    {
    6279       if (rParameter(currRing) != NULL)
    6280         DefRingPar(omtmp);
     6746      if(ivtarget->length() == nV)
     6747      {
     6748        if (rParameter(currRing) != NULL)
     6749          DefRingPar(omtmp);
     6750        else
     6751          rChangeCurrRing(VMrDefault(omtmp));
     6752      }
    62816753      else
    6282         rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung5
     6754      {
     6755        rChangeCurrRing(VMatrDefault(ivtarget));
     6756      }
    62836757
    62846758      testring = currRing;
     
    62896763        delete next_vect;
    62906764        delete altomega;
    6291         //Print("\n// Leaving the %d-th recursion with %d steps ",nlev, nwalks);
    6292         //Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6293 
     6765        if(printout > 0)
     6766        {
     6767          Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     6768              nlev, nwalks);
     6769          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     6770        }
    62946771        return (Gt);
    62956772      }
     
    63026779        //07.08.03
    63036780        //ivString(Xtau, "old Xtau");
    6304         intvec* Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     6781        intvec* Xtautmp;
     6782        if(ivtarget->length() == nV)
     6783        {
     6784          Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     6785        }
     6786        else
     6787        {
     6788          Xtautmp = Mfpertvector(Gt, ivtarget);
     6789        }
    63056790#ifdef TEST_OVERFLOW
    63066791      if(Overflow_Error == TRUE)
     
    63306815
    63316816      FRACTAL_MSTDCC:
    6332         //Print("\n//  apply BB-Alg in ring = %s;", rString(currRing));
     6817        if(printout > 0)
     6818        {
     6819          Print("\n//** rec_fractal_call: apply Buchberger's algorithm in ring = %s.\n",
     6820                rString(currRing));
     6821        }
    63336822        to=clock();
    63346823        G = MstdCC(Gt);
     
    63386827
    63396828        // update the original target vector w.r.t. the current GB
    6340         if(MivSame(Xivinput, Xivlp) == 1)
    6341           if (rParameter(currRing) != NULL)
    6342             DefRingParlp();
     6829        if(ivtarget->length() == nV)
     6830        {
     6831          if(MivSame(Xivinput, Xivlp) == 1)
     6832            if (rParameter(currRing) != NULL)
     6833              DefRingParlp();
     6834            else
     6835              VMrDefaultlp();
    63436836          else
    6344             VMrDefaultlp();
     6837            if (rParameter(currRing) != NULL)
     6838              DefRingPar(Xivinput);
     6839            else
     6840              rChangeCurrRing(VMrDefault(Xivinput));
     6841        }
    63456842        else
    6346           if (rParameter(currRing) != NULL)
    6347             DefRingPar(Xivinput);
    6348           else
    6349             rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung6
    6350 
     6843        {
     6844          rChangeCurrRing(VMatrRefine(ivtarget,Xivinput));
     6845        }
    63516846        testring = currRing;
    63526847        Gt = idrMoveR(G, oRing,currRing);
     
    63616856        delete next_vect;
    63626857        delete altomega;
    6363         /*
    6364           Print("\n// Leaving the %d-th recursion with %d steps,", nlev,nwalks);
    6365           Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6366         */
     6858        if(printout > 0)
     6859        {
     6860          Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     6861              nlev, nwalks);
     6862          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     6863        }
    63676864        if(Overflow_Error == TRUE)
    63686865          nnflow ++;
     
    63836880    Gomega = MwalkInitialForm(G, omega);
    63846881    xtif=xtif+clock()-to;
    6385 
     6882    if(printout > 1)
     6883    {
     6884      idString(Gomega,"//** rec_fractal_call: Gomega");
     6885    }
    63866886#ifndef  BUCHBERGER_ALG
    63876887    if(isNolVector(omega) == 0)
     
    63906890      hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing);
    63916891#endif // BUCHBERGER_ALG
    6392 
    6393     if (rParameter(currRing) != NULL)
    6394       DefRingPar(omega);
     6892    if(ivtarget->length() == nV)
     6893    {
     6894      if (rParameter(currRing) != NULL)
     6895        DefRingPar(omega);
     6896      else
     6897        rChangeCurrRing(VMrDefault(omega));
     6898    }
    63956899    else
    6396       rChangeCurrRing(VMrDefault1(omega)); //Aenderung7
    6397 
     6900    {
     6901      rChangeCurrRing(VMatrRefine(ivtarget,omega));
     6902    }
    63986903    Gomega1 = idrMoveR(Gomega, oRing,currRing);
    63996904
    6400     /* Maximal recursion depth, to compute a red. GB */
    6401     /* Fractal walk with the alternative recursion */
    6402     /* alternative recursion */
     6905    // Maximal recursion depth, to compute a red. GB
     6906    // Fractal walk with the alternative recursion
     6907    // alternative recursion
    64036908    // if(nlev == nV || lengthpoly(Gomega1) == 0)
    64046909    if(nlev == Xnlev || lengthpoly(Gomega1) == 0)
    64056910      //if(nlev == nV) // blind recursion
    64066911    {
    6407       /*
    6408       if(Xnlev != nV)
    6409       {
    6410         Print("\n// ** Xnlev = %d", Xnlev);
    6411         ivString(Xtau, "Xtau");
    6412       }
    6413       */
    64146912      to=clock();
    64156913#ifdef  BUCHBERGER_ALG
     
    64216919      xtstd=xtstd+clock()-to;
    64226920    }
    6423     else {
     6921    else
     6922    {
    64246923      rChangeCurrRing(oRing);
    64256924      Gomega1 = idrMoveR(Gomega1, oRing,currRing);
    6426       Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega);
    6427     }
    6428 
    6429     //convert a Groebner basis from a ring to another ring,
     6925      Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega,printout);
     6926    }
     6927    if(printout > 2)
     6928    {
     6929      idString(Gresult,"//** rec_fractal_call: M");
     6930    }
     6931    //convert a Groebner basis from a ring to another ring
    64306932    new_ring = currRing;
    64316933
     
    64356937
    64366938    to=clock();
    6437     /* Lifting process */
     6939    // Lifting process
    64386940    F = MLifttwoIdeal(Gomega2, Gresult1, G);
    64396941    xtlift=xtlift+clock()-to;
     6942    if(printout > 2)
     6943    {
     6944      idString(F,"//** rec_fractal_call: F");
     6945    }
    64406946    idDelete(&Gresult1);
    64416947    idDelete(&Gomega2);
     
    64566962 * Perturb the start weight vector at the top level with random element *
    64576963 ************************************************************************/
    6458 static ideal rec_r_fractal_call(ideal G, int nlev, intvec* omtmp, int weight_rad)
     6964static ideal rec_r_fractal_call(ideal G, int nlev, intvec* ivtarget,
     6965                int weight_rad, int printout)
    64596966{
    64606967  Overflow_Error =  FALSE;
    64616968  //Print("\n\n// Entering the %d-th recursion:", nlev);
    64626969
    6463   int i, nV = currRing->N;
     6970  int i, polylength, nV = currRing->N;
    64646971  ring new_ring, testring;
    64656972  //ring extoRing;
     
    64736980  intvec* next_vect;
    64746981  intvec* omega2 = new intvec(nV);
     6982  intvec* omtmp = new intvec(nV);
    64756983  intvec* altomega = new intvec(nV);
    64766984
    64776985  //BOOLEAN isnewtarget = FALSE;
    64786986
     6987  for(i = nV -1; i>0; i--)
     6988  {
     6989    (*omtmp)[i] = (*ivtarget)[i];
     6990  }
    64796991  // to avoid (1,0,...,0) as the target vector (Hans)
    64806992  intvec* last_omega = new intvec(nV);
     
    65167028    to=clock();
    65177029    /* determine the next border */
    6518     next_vect = MWalkRandomNextWeight(G, omega,omega2, weight_rad, 1+nlev);
    6519     //next_vect = MkInterRedNextWeight(omega,omega2,G);
     7030    next_vect = MkInterRedNextWeight(omega,omega2,G);
     7031    if(polylength > 0)
     7032    {
     7033      //there is a polynomial in Gomega with at least 3 monomials,
     7034      //low-dimensional facet of the cone
     7035      delete next_vect;
     7036      next_vect = MWalkRandomNextWeight(G,omega,omega2,weight_rad,1+nlev);
     7037      if(isNolVector(next_vect))
     7038      {
     7039        delete next_vect;
     7040        next_vect = MkInterRedNextWeight(omega,omega2,G);
     7041      }
     7042    }
    65207043    xtnw=xtnw+clock()-to;
    6521 #ifdef PRINT_VECTORS
    6522     MivString(omega, omega2, next_vect);
    6523 #endif
     7044
    65247045    oRing = currRing;
    65257046
    6526     /* We only perturb the current target vector at the recursion  level 1 */
     7047    // We only perturb the current target vector at the recursion  level 1
    65277048    if(Xngleich == 0 && nlev == 1) //(ngleich == 0) important, e.g. ex2, ex3
    65287049      if (MivComp(next_vect, omega2) == 1)
    65297050      {
    6530         /* to dispense with taking initial (and lifting/interreducing
    6531            after the call of recursion */
    6532         //Print("\n\n// ** Perturb the both vectors with degree %d with",nlev);
    6533         //idElements(G, "G");
    6534 
     7051        // to dispense with taking initials and lifting/interreducing
     7052        // after the call of recursion.
     7053        if(printout > 0)
     7054        {
     7055          Print("\n//** rec_r_fractal_call: Perturb the both vectors with degree %d.",nlev);
     7056          //idElements(G, "G");
     7057        }
    65357058        Xngleich = 1;
    65367059        nlev +=1;
    6537 
    6538         if (rParameter(currRing) != NULL)
    6539           DefRingPar(omtmp);
     7060        if(ivtarget->length() == nV)
     7061        {
     7062          if (rParameter(currRing) != NULL)
     7063            DefRingPar(omtmp);
     7064          else
     7065            rChangeCurrRing(VMrDefault(omtmp));
     7066        }
    65407067        else
    6541           rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung3
    6542 
     7068        {
     7069          rChangeCurrRing(VMatrDefault(ivtarget));
     7070        }
    65437071        testring = currRing;
    65447072        Gt = idrMoveR(G, oRing,currRing);
    65457073
    6546         /* perturb the original target vector w.r.t. the current GB */
    6547         delete Xtau;
    6548         Xtau = NewVectorlp(Gt);
     7074        // perturb the original target vector w.r.t. the current GB
     7075        if(ivtarget->length() == nV)
     7076        {
     7077          delete Xtau;
     7078          Xtau = NewVectorlp(Gt);
     7079        }
     7080        else
     7081        {
     7082          delete Xtau;
     7083          Xtau = Mfpertvector(Gt,ivtarget);
     7084        }
    65497085
    65507086        rChangeCurrRing(oRing);
    6551         G = idrMoveR(Gt, testring,currRing);
    6552 
    6553         /* perturb the current vector w.r.t. the current GB */
     7087        G = idrMoveR(Gt,testring,currRing);
     7088
     7089        // perturb the current vector w.r.t. the current GB
    65547090        Mwlp = MivWeightOrderlp(omega);
     7091        if(ivtarget->length() > nV)
     7092        {
     7093          delete Mwlp;
     7094          Mwlp = MivMatrixOrderRefine(omega,ivtarget);
     7095        }
    65557096        Xsigma = Mfpertvector(G, Mwlp);
    65567097        delete Mwlp;
     
    65687109
    65697110        next_vect = MkInterRedNextWeight(omega,omega2,G);
     7111        if(polylength > 0)
     7112        {
     7113          //there is a polynomial in Gomega with at least 3 monomials,
     7114          //low-dimensional facet of the cone
     7115          delete next_vect;
     7116          next_vect = MWalkRandomNextWeight(G,omega,omega2,weight_rad,1+nlev);
     7117          if(isNolVector(next_vect))
     7118          {
     7119            delete next_vect;
     7120            next_vect = MkInterRedNextWeight(omega,omega2,G);
     7121          }
     7122        }
    65707123        xtnw=xtnw+clock()-to;
    6571 
    6572 #ifdef PRINT_VECTORS
     7124      }
     7125//#ifdef PRINT_VECTORS
     7126      if(printout > 0)
     7127      {
    65737128        MivString(omega, omega2, next_vect);
    6574 #endif
    6575       }
    6576 
    6577 
    6578     /* check whether the the computed vector is in the correct cone */
    6579     /* If no, the reduced GB of an omega-homogeneous ideal will be
     7129      }
     7130//#endif
     7131
     7132    /* check whether the the computed vector is in the correct cone
     7133       If no, the reduced GB of an omega-homogeneous ideal will be
    65807134       computed by Buchberger algorithm and stop this recursion step*/
    65817135    //if(test_w_in_ConeCC(G, next_vect) != 1) //e.g. Example s7, cyc6
     
    65837137    {
    65847138      delete next_vect;
    6585       if (rParameter(currRing) != NULL)
    6586       {
    6587         DefRingPar(omtmp);
     7139      if(ivtarget->length() == nV)
     7140      {
     7141        if (rParameter(currRing) != NULL)
     7142        {
     7143          DefRingPar(omtmp);
     7144        }
     7145        else
     7146        {
     7147          rChangeCurrRing(VMrDefault(omtmp));
     7148        }
    65887149      }
    65897150      else
    65907151      {
    6591         rChangeCurrRing(VMrDefault1(omtmp)); // Aenderung4
     7152        rChangeCurrRing(VMatrDefault(ivtarget));
    65927153      }
    65937154#ifdef TEST_OVERFLOW
    65947155      Gt = idrMoveR(G, oRing,currRing);
    6595       Gt = NULL; return(Gt);
    6596 #endif
    6597 
    6598       //Print("\n\n// apply BB's alg. in ring r = %s;", rString(currRing));
     7156      Gt = NULL;
     7157      return(Gt);
     7158#endif
     7159      if(printout > 0)
     7160      {
     7161        Print("\n//** rec_r_fractal_call: applying Buchberger's algorithm in ring r = %s;",
     7162              rString(currRing));
     7163      }
    65997164      to=clock();
    66007165      Gt = idrMoveR(G, oRing,currRing);
     
    66057170      delete omega2;
    66067171      delete altomega;
    6607 
    6608       //Print("\n// Leaving the %d-th recursion with %d steps", nlev, nwalks);
    6609       //Print("  ** Overflow_Error? (%d)", Overflow_Error);
     7172      if(printout > 0)
     7173      {
     7174        Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     7175              nlev, nwalks);
     7176        //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     7177      }
    66107178      nnflow ++;
    6611 
    66127179      Overflow_Error = FALSE;
    66137180      return (G1);
    66147181    }
    6615 
    6616 
    6617     /* If the perturbed target vector stays in the correct cone,
    6618        return the current GB,
    6619        otherwise, return the computed  GB by the Buchberger-algorithm.
    6620        Then we update the perturbed target vectors w.r.t. this GB. */
    6621 
    6622     /* the computed vector is equal to the origin vector, since
    6623        t is not defined */
     7182    /*
     7183       If the perturbed target vector stays in the correct cone,
     7184       return the current Groebner basis.
     7185       Otherwise, return the Groebner basis computed with Buchberger's
     7186       algorithm.
     7187       Then we update the perturbed target vectors w.r.t. this GB.
     7188    */
    66247189    if (MivComp(next_vect, XivNull) == 1)
    66257190    {
    6626       if (rParameter(currRing) != NULL)
    6627         DefRingPar(omtmp);
     7191      // The computed vector is equal to the origin vector,
     7192      // because t is not defined
     7193      if(ivtarget->length() == nV)
     7194      {
     7195        if (rParameter(currRing) != NULL)
     7196          DefRingPar(omtmp);
     7197        else
     7198          rChangeCurrRing(VMrDefault(omtmp));
     7199      }
    66287200      else
    6629         rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung5
    6630 
     7201      {
     7202        rChangeCurrRing(VMatrDefault(ivtarget));
     7203      }
    66317204      testring = currRing;
    66327205      Gt = idrMoveR(G, oRing,currRing);
    66337206
    6634       if(test_w_in_ConeCC(Gt, omega2) == 1) {
     7207      if(test_w_in_ConeCC(Gt, omega2) == 1)
     7208      {
    66357209        delete omega2;
    66367210        delete next_vect;
    66377211        delete altomega;
    6638         //Print("\n// Leaving the %d-th recursion with %d steps ",nlev, nwalks);
    6639         //Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6640 
     7212        if(printout > 0)
     7213        {
     7214          Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     7215                nlev, nwalks);
     7216          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     7217        }
    66417218        return (Gt);
    66427219      }
    66437220      else
    6644       {
    6645         //ivString(omega2, "tau'");
    6646         //Print("\n//  tau' doesn't stay in the correct cone!!");
    6647 
     7221      {
     7222        if(printout > 0)
     7223        {
     7224          Print("\n//** rec_r_fractal_call: target weight doesn't stay in the correct cone.\n");
     7225        }
    66487226#ifndef  MSTDCC_FRACTAL
    6649         //07.08.03
    66507227        //ivString(Xtau, "old Xtau");
    6651         intvec* Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     7228        intvec* Xtautmp;
     7229        if(ivtarget->length() == nV)
     7230        {
     7231          Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     7232        }
     7233        else
     7234        {
     7235          Xtautmp = Mfpertvector(Gt, ivtarget);
     7236        }
    66527237#ifdef TEST_OVERFLOW
    66537238      if(Overflow_Error == TRUE)
     
    66777262
    66787263      FRACTAL_MSTDCC:
    6679         //Print("\n//  apply BB-Alg in ring = %s;", rString(currRing));
     7264        if(printout > 0)
     7265        {
     7266          Print("\n//** rec_r_fractal_call: apply Buchberge's algorithm in ring = %s.\n",
     7267                rString(currRing));
     7268        }
    66807269        to=clock();
    66817270        G = MstdCC(Gt);
     
    66857274
    66867275        // update the original target vector w.r.t. the current GB
    6687         if(MivSame(Xivinput, Xivlp) == 1)
    6688           if (rParameter(currRing) != NULL)
    6689             DefRingParlp();
     7276        if(ivtarget->length() == nV)
     7277        {
     7278          if(MivSame(Xivinput, Xivlp) == 1)
     7279            if (rParameter(currRing) != NULL)
     7280              DefRingParlp();
     7281            else
     7282              VMrDefaultlp();
    66907283          else
    6691             VMrDefaultlp();
     7284            if (rParameter(currRing) != NULL)
     7285              DefRingPar(Xivinput);
     7286            else
     7287              rChangeCurrRing(VMrDefault(Xivinput));
     7288        }
    66927289        else
    6693           if (rParameter(currRing) != NULL)
    6694             DefRingPar(Xivinput);
    6695           else
    6696             rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung6
    6697 
     7290        {
     7291          rChangeCurrRing(VMatrRefine(ivtarget,Xivinput));
     7292        }
    66987293        testring = currRing;
    66997294        Gt = idrMoveR(G, oRing,currRing);
     
    67087303        delete next_vect;
    67097304        delete altomega;
    6710         /*
    6711           Print("\n// Leaving the %d-th recursion with %d steps,", nlev,nwalks);
    6712           Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6713         */
     7305        if(printout > 0)
     7306        {
     7307          Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     7308                nlev,nwalks);
     7309          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     7310        }
    67147311        if(Overflow_Error == TRUE)
    67157312          nnflow ++;
     
    67277324
    67287325    to=clock();
    6729     /* Take the initial form of <G> w.r.t. omega */
     7326    // Take the initial form of <G> w.r.t. omega
    67307327    Gomega = MwalkInitialForm(G, omega);
    67317328    xtif=xtif+clock()-to;
    6732 
     7329    //polylength = 1 if there is a polynomial in Gomega with at least 3 monomials and 0 otherwise
     7330    polylength = lengthpoly(Gomega);
     7331    if(printout > 1)
     7332    {
     7333      idString(Gomega,"//** rec_r_fractal_call: Gomega");
     7334    }
    67337335#ifndef  BUCHBERGER_ALG
    67347336    if(isNolVector(omega) == 0)
     
    67367338    else
    67377339      hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing);
    6738 #endif // BUCHBERGER_ALG
    6739 
    6740     if (rParameter(currRing) != NULL)
    6741       DefRingPar(omega);
     7340#endif
     7341    if(ivtarget->length() == nV)
     7342    {
     7343      if (rParameter(currRing) != NULL)
     7344        DefRingPar(omega);
     7345      else
     7346        rChangeCurrRing(VMrDefault(omega));
     7347    }
    67427348    else
    6743       rChangeCurrRing(VMrDefault1(omega)); //Aenderung7
    6744 
     7349    {
     7350      rChangeCurrRing(VMatrRefine(ivtarget,omega));
     7351    }
    67457352    Gomega1 = idrMoveR(Gomega, oRing,currRing);
    67467353
    6747     /* Maximal recursion depth, to compute a red. GB */
    6748     /* Fractal walk with the alternative recursion */
    6749     /* alternative recursion */
    6750     // if(nlev == nV || lengthpoly(Gomega1) == 0)
     7354    // Maximal recursion depth, to compute a red. GB
     7355    // Fractal walk with the alternative recursion
     7356    // alternative recursion
    67517357    if(nlev == Xnlev || lengthpoly(Gomega1) == 0)
    6752       //if(nlev == nV) // blind recursion
    6753     {
    6754       /*
    6755       if(Xnlev != nV)
    6756       {
    6757         Print("\n// ** Xnlev = %d", Xnlev);
    6758         ivString(Xtau, "Xtau");
    6759       }
    6760       */
     7358    {
    67617359      to=clock();
    67627360#ifdef  BUCHBERGER_ALG
     
    67657363      Gresult =kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,omega);
    67667364      delete hilb_func;
    6767 #endif // BUCHBERGER_ALG
     7365#endif
    67687366      xtstd=xtstd+clock()-to;
    67697367    }
    6770     else {
     7368    else
     7369    {
    67717370      rChangeCurrRing(oRing);
    67727371      Gomega1 = idrMoveR(Gomega1, oRing,currRing);
    6773       Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega);
    6774     }
    6775 
    6776     //convert a Groebner basis from a ring to another ring,
     7372      Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega,printout);
     7373    }
     7374    if(printout > 2)
     7375    {
     7376      idString(Gresult,"//** rec_r_fractal_call: M");
     7377    }
     7378    //convert a Groebner basis from a ring to another ring
    67777379    new_ring = currRing;
    67787380
     
    67827384
    67837385    to=clock();
    6784     /* Lifting process */
     7386    // Lifting process
    67857387    F = MLifttwoIdeal(Gomega2, Gresult1, G);
    67867388    xtlift=xtlift+clock()-to;
     7389
     7390    if(printout > 2)
     7391    {
     7392      idString(F,"//** rec_r_fractal_call: F");
     7393    }
     7394
    67877395    idDelete(&Gresult1);
    67887396    idDelete(&Gomega2);
     
    67937401
    67947402    to=clock();
    6795     /* Interreduce G */
     7403    // Interreduce G
    67967404    G = kInterRedCC(F1, NULL);
    67977405    xtred=xtred+clock()-to;
     
    67997407  }
    68007408}
    6801 
    6802 
    68037409
    68047410
     
    68077413 *                                                                             *
    68087414 * The main procedur Mfwalk calls the recursive Subroutine                     *
    6809  * rec_fractal_call to compute the wanted Grᅵbner basis.                       *
    6810  * At the main procedur we compute the reduced Grᅵbner basis w.r.t. a "fast"   *
     7415 * rec_fractal_call to compute the wanted Groebner basis.                      *
     7416 * At the main procedur we compute the reduced Groebner basis w.r.t. a "fast"  *
    68117417 * order, e.g. "dp" and a sequence of weight vectors which are row vectors     *
    68127418 * of a matrix. This matrix defines the given monomial order, e.g. "lp"        *
    68137419 *******************************************************************************/
    6814 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget)
     7420ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget,
     7421             int reduction, int printout)
    68157422{
     7423  BITSET save1 = si_opt_1; // save current options
     7424  if(reduction == 0)
     7425  {
     7426    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     7427    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     7428  }
    68167429  Set_Error(FALSE);
    68177430  Overflow_Error = FALSE;
     
    68487461      intvec* iv_dp = MivUnit(nV); // define (1,1,...,1)
    68497462      intvec* Mdp;
    6850 
    6851       if(MivSame(ivstart, iv_dp) != 1)
    6852         Mdp = MivWeightOrderdp(ivstart);
     7463      if(ivstart->length() == nV)
     7464      {
     7465        if(MivSame(ivstart, iv_dp) != 1)
     7466          Mdp = MivWeightOrderdp(ivstart);
     7467        else
     7468          Mdp = MivMatrixOrderdp(nV);
     7469      }
    68537470      else
    6854         Mdp = MivMatrixOrderdp(nV);
     7471      {
     7472        Mdp = ivstart;
     7473      }
    68557474
    68567475      Xsigma = Mfpertvector(I, Mdp);
     
    68697488  Xivlp = Mivlp(nV);
    68707489
    6871   if(MivComp(ivtarget, Xivlp)  != 1)
    6872   {
    6873     if (rParameter(currRing) != NULL)
    6874       DefRingPar(ivtarget);
     7490  if(ivtarget->length() == nV)
     7491  {
     7492    if(MivComp(ivtarget, Xivlp)  != 1)
     7493    {
     7494      if (rParameter(currRing) != NULL)
     7495        DefRingPar(ivtarget);
     7496      else
     7497        rChangeCurrRing(VMrDefault(ivtarget));
     7498
     7499      I1 = idrMoveR(I, oldRing,currRing);
     7500      Mlp = MivWeightOrderlp(ivtarget);
     7501      Xtau = Mfpertvector(I1, Mlp);
     7502    }
    68757503    else
    6876       rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung1
    6877 
    6878     I1 = idrMoveR(I, oldRing,currRing);
    6879     Mlp = MivWeightOrderlp(ivtarget);
    6880     Xtau = Mfpertvector(I1, Mlp);
     7504    {
     7505      if (rParameter(currRing) != NULL)
     7506        DefRingParlp();
     7507      else
     7508        VMrDefaultlp();
     7509
     7510      I1 = idrMoveR(I, oldRing,currRing);
     7511      Mlp =  MivMatrixOrderlp(nV);
     7512      Xtau = Mfpertvector(I1, Mlp);
     7513    }
    68817514  }
    68827515  else
    68837516  {
    6884     if (rParameter(currRing) != NULL)
    6885       DefRingParlp();
    6886     else
    6887       VMrDefaultlp();
    6888 
    6889     I1 = idrMoveR(I, oldRing,currRing);
    6890     Mlp =  MivMatrixOrderlp(nV);
     7517    rChangeCurrRing(VMatrDefault(ivtarget));
     7518    I1 = idrMoveR(I,oldRing,currRing);
     7519    Mlp =  ivtarget;
    68917520    Xtau = Mfpertvector(I1, Mlp);
    68927521  }
     
    68997528  id_Delete(&I, oldRing);
    69007529  ring tRing = currRing;
    6901 
    6902   if (rParameter(currRing) != NULL)
    6903     DefRingPar(ivstart);
     7530  if(ivtarget->length() == nV)
     7531  {
     7532    if (rParameter(currRing) != NULL)
     7533      DefRingPar(ivstart);
     7534    else
     7535      rChangeCurrRing(VMrDefault(ivstart));
     7536  }
    69047537  else
    6905     rChangeCurrRing(VMrDefault1(ivstart)); //Aenderung2
     7538  {
     7539    rChangeCurrRing(VMatrDefault(ivstart));
     7540  }
    69067541
    69077542  I = idrMoveR(I1,tRing,currRing);
     
    69147549  ring helpRing = currRing;
    69157550
    6916   J = rec_fractal_call(J, 1, ivtarget);
     7551  J = rec_fractal_call(J,1,ivtarget,printout);
    69177552
    69187553  rChangeCurrRing(oldRing);
     
    69207555  idSkipZeroes(resF);
    69217556
     7557  si_opt_1 = save1; //set original options, e. g. option(RedSB)
    69227558  delete Xivlp;
    69237559  delete Xsigma;
     
    69387574}
    69397575
    6940 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget,int weight_rad)
     7576/*******************************************************************************
     7577 * The implementation of the fractal walk algorithm with random element        *
     7578 *                                                                             *
     7579 * The main procedur Mfwalk calls the recursive Subroutine                     *
     7580 * rec_r_fractal_call to compute the wanted Groebner basis.                    *
     7581 * At the main procedure we compute the reduced Groebner basis w.r.t. a "fast" *
     7582 * order, e.g. "dp" and a sequence of weight vectors which are row vectors     *
     7583 * of a matrix. This matrix defines the given monomial order, e.g. "lp"        *
     7584 *******************************************************************************/
     7585ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget,
     7586              int weight_rad, int reduction, int printout)
    69417587{
     7588  BITSET save1 = si_opt_1; // save current options
     7589  if(reduction == 0)
     7590  {
     7591    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     7592    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     7593  }
    69427594  Set_Error(FALSE);
    69437595  Overflow_Error = FALSE;
     
    69747626      intvec* iv_dp = MivUnit(nV); // define (1,1,...,1)
    69757627      intvec* Mdp;
    6976 
    6977       if(MivSame(ivstart, iv_dp) != 1)
    6978         Mdp = MivWeightOrderdp(ivstart);
     7628      if(ivstart->length() == nV)
     7629      {
     7630        if(MivSame(ivstart, iv_dp) != 1)
     7631          Mdp = MivWeightOrderdp(ivstart);
     7632        else
     7633          Mdp = MivMatrixOrderdp(nV);
     7634      }
    69797635      else
    6980         Mdp = MivMatrixOrderdp(nV);
     7636      {
     7637        Mdp = ivstart;
     7638      }
    69817639
    69827640      Xsigma = Mfpertvector(I, Mdp);
     
    69957653  Xivlp = Mivlp(nV);
    69967654
    6997   if(MivComp(ivtarget, Xivlp)  != 1)
    6998   {
    6999     if (rParameter(currRing) != NULL)
    7000       DefRingPar(ivtarget);
     7655  if(ivtarget->length() == nV)
     7656  {
     7657    if(MivComp(ivtarget, Xivlp)  != 1)
     7658    {
     7659      if (rParameter(currRing) != NULL)
     7660        DefRingPar(ivtarget);
     7661      else
     7662        rChangeCurrRing(VMrDefault(ivtarget));
     7663
     7664      I1 = idrMoveR(I, oldRing,currRing);
     7665      Mlp = MivWeightOrderlp(ivtarget);
     7666      Xtau = Mfpertvector(I1, Mlp);
     7667    }
    70017668    else
    7002       rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung1
    7003 
    7004     I1 = idrMoveR(I, oldRing,currRing);