source: git/Singular/LIB/schreyer.lib @ cee2052

spielwiese
Last change on this file since cee2052 was cee2052, checked in by Oleksandr Motsak <motsak@…>, 9 years ago
Moved procs for operations with graded modules into a separate library: gradedModules.lib
  • Property mode set to 100644
File size: 232.3 KB
Line 
1///////////////////////////////////////////////////////////////////////////
2version="version schreyer.lib 4.0.0.0 Jun_2013 "; // $Id$
3category="General purpose";
4info="
5LIBRARY: schreyer.lib     Schreyer resolution computations and helpers for @code{derham.lib}
6AUTHOR:  Oleksandr Motsak <U@D>, where U={motsak}, D={mathematik.uni-kl.de}
7KEYWORDS: Schreyer ordering; Schreyer resolution; syzygy
8OVERVIEW:
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.
23@* 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.
28@* 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:
30@*        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 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]
40REFERENCES:
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.
49";
50
51static proc prepareSyz( module I, list # )
52{
53  int i;
54  int k = 0;
55  int r = nrows(I);
56  int c = ncols(I);
57
58
59  if( size(#) > 0 )
60  {
61    if( typeof(#[1]) == "int" || typeof(#[1]) == "bigint" )
62    {
63      k = #[1];
64    }
65  }
66
67  if( k < r )
68  {
69    "// *** Wrong k: ", k, " < nrows: ", r, " => setting k = r = ", r;
70    k = r;
71  }
72
73//   "k: ", k;  "c: ", c;   "I: ", I;
74
75  for( i = c; i > 0; i-- )
76  {
77    I[i] = I[i] + gen(k + i);
78  }
79
80//   Syzextra::DetailedPrint(I);
81
82  return(I);
83}
84
85static proc separateSyzGB( module J, int c )
86{
87  module II, G; vector v; int i;
88
89  J = simplify(J, 2);
90
91  for( i = ncols(J); i > 0; i-- )
92  {
93    v = J[i];
94    if(   Syzextra::leadcomp(v) > c )
95    {
96      II[i] = v;
97    } else
98    {
99      G[i] = v; // leave only gen(i): i <= c
100    }
101  }
102
103  II = simplify(II, 2);
104  G = simplify(G, 2);
105
106  return (list(G, II));
107}
108
109static proc splitSyzGB( module J, int c )
110{
111  module JJ; vector v, vv; int i;
112
113  for( i = ncols(J); i > 0; i-- )
114  {
115    v = J[i];
116
117    vv = 0;
118
119    while(   Syzextra::leadcomp(v) <= c )
120    {
121      vv = vv + lead(v);
122      v  = v  - lead(v);
123    }
124
125    J[i] = vv;
126    JJ[i] = v;
127  }
128
129  J = simplify(J, 2);
130  JJ = simplify(JJ, 2);
131
132  return (list(J, JJ));
133}
134
135
136static proc Sinit(module M)
137{
138  def @save = basering;
139
140  int @DEBUG = 0; // !system("with", "ndebug");
141  if( @DEBUG )
142  {
143    "Sinit::Input";
144    type(M);
145//      Syzextra::DetailedPrint(M);
146    attrib(M);
147  }
148
149  int @RANK = nrows(M); int @SIZE = ncols(M);
150
151  int @IS_A_SB = attrib(M, "isSB"); // ??? only if all weights were zero?!
152
153  if( !@IS_A_SB )
154  {
155    M = std(M); // this should be faster than computing std in S (later on)
156  }
157
158  def S =   Syzextra::MakeInducedSchreyerOrdering(1); // 1 puts history terms to the back
159  // TODO: NOTE: +1 causes trouble to Singular interpreter!!!???
160  setring S; // a new ring with a Schreyer ordering
161
162  if( @DEBUG )
163  {
164    "Sinit::StartingISRing";
165    basering;
166//      Syzextra::DetailedPrint(basering);
167  }
168
169  // Setup the leading syzygy^{-1} module to zero:
170  module Z = 0; Z[@RANK] = 0; attrib(Z, "isHomog", intvec(0));
171
172  module MRES = Z;
173
174  list RES; RES[1] = Z;
175
176  module F = freemodule(@RANK);
177  intvec @V = deg(F[1..@RANK]);
178
179  module M = imap(@save, M);
180
181  attrib(M, "isHomog", @V);
182  attrib(M, "isSB", 1);
183
184
185  if( @DEBUG )
186  {
187    "Sinit::SB_Input: ";
188    type(M);
189    attrib(M);
190    attrib(M, "isHomog");
191//      Syzextra::DetailedPrint(M);
192  }
193
194  if( @DEBUG )
195  {
196    // 0^th syz. property
197    if( size(module(transpose( transpose(M) * transpose(MRES) ))) > 0 )
198    {
199      transpose( transpose(M) * transpose(MRES) );
200      "ERROR: transpose( transpose(M) * transpose(MRES) ) != 0!!!";
201        Syzextra::m2_end(666);
202    }
203  }
204
205  RES[size(RES)+1] = M; // list of all syzygy modules
206  MRES = MRES, M;
207
208  attrib(MRES, "isHomog", @V);
209
210  attrib(S, "InducionLeads", lead(M));
211  attrib(S, "InducionStart", @RANK);
212
213  if( @DEBUG )
214  {
215    "Sinit::MRES";
216      Syzextra::DetailedPrint(MRES);
217    attrib(MRES, "isHomog");
218    attrib(S);
219  }
220
221  export RES;
222  export MRES;
223  return (S);
224}
225
226static proc Sstep()
227{
228  int @DEBUG = 0; // !system("with", "ndebug");
229
230  if( @DEBUG )
231  {
232    "Sstep::NextInducedRing";
233      Syzextra::DetailedPrint(basering);
234
235    attrib(basering, "InducionLeads");
236    attrib(basering, "InducionStart");
237
238      Syzextra::GetInducedData();
239  }
240
241  // syzygy step:
242
243/*
244  // is initial weights are all zeroes!
245  def L =  lead(M);
246  intvec @V = deg(M[1..ncols(M)]);  @W;  @V;  @W = @V;  attrib(L, "isHomog", @W);
247    Syzextra::SetInducedReferrence(L, @RANK, 0);
248*/
249
250//  def L =  lead(MRES);
251//  @W = @W, @V;
252//  attrib(L, "isHomog", @W);
253
254
255  // General setting:
256//    Syzextra::SetInducedReferrence(MRES, 0, 0); // limit: 0!
257  int @l = size(RES);
258
259  module M = RES[@l];
260
261  module L = attrib(basering, "InducionLeads");
262  int limit = attrib(basering, "InducionStart");
263
264//  L;  limit;
265
266  int @RANK = ncols(MRES) - ncols(M); // nrows(M); // what if M is zero?!
267
268/*
269  if( @RANK !=  nrows(M) )
270  {
271    type(MRES);
272    @RANK;
273    type(M);
274    pause();
275  }
276*/
277
278  intvec @W = attrib(M, "isHomog");
279  intvec @V = deg(M[1..ncols(M)]);
280  @V = @W, @V;
281
282  if( @DEBUG )
283  {
284    "Sstep::NextInput: ";
285    M;
286    deg(M[1..ncols(M)]); // no use of @W :(?
287    @RANK;
288      Syzextra::DetailedPrint(MRES);
289    attrib(MRES, "isHomog"); @W;
290    deg(MRES[1..ncols(MRES)]);
291  }
292
293
294
295    Syzextra::SetInducedReferrence(L, limit, 0);
296
297  def K = prepareSyz(M, @RANK);
298//  K;
299
300//   attrib(K, "isHomog", @V);     Syzextra::DetailedPrint(K, 1000);
301
302//  pause();
303
304  K =   Syzextra::idPrepare(K, @RANK); // std(K); // ?
305  K = simplify(K, 2);
306
307//  K;
308
309  module N = separateSyzGB(K, @RANK)[2]; // 1^st syz. module: vectors which start in lower part (comp >= @RANK)
310
311// "N_0: "; N;   Syzextra::DetailedPrint(N, 10);
312
313//  basering; print(@V); type(N);
314//  attrib(N, "isHomog", @V);  // TODO: fix "wrong weights"!!!? deg is wrong :(((
315  N = std(N);
316  attrib(N, "isHomog", @V);
317
318//  N;
319
320  if( @DEBUG )
321  {
322    if( size(N) > 0 )
323    {
324      // next syz. property
325      if( size(module(transpose( transpose(N) * transpose(MRES) ))) > 0 )
326      {
327        MRES;
328
329        "N: "; N;   Syzextra::DetailedPrint(N, 10);
330
331        "K:"; K;   Syzextra::DetailedPrint(K, 10);
332
333        "RANKS: ", @RANK;
334
335        "ERROR: transpose( transpose(N) * transpose(MRES) ) != 0!!!";
336        transpose( transpose(N) * transpose(MRES) );
337
338        "transpose(N) * transpose(MRES): ";
339        transpose(N) * transpose(MRES);
340          Syzextra::DetailedPrint(module(_), 2);
341          Syzextra::m2_end(666);
342      }
343    }
344  }
345
346  RES[@l + 1] = N; // list of all syzygy modules
347
348  MRES = MRES, N;
349  attrib(MRES, "isHomog", @V);
350
351
352  L = L, lead(N);
353  attrib(basering, "InducionLeads", L);
354
355  if( @DEBUG )
356  {
357    "Sstep::NextSyzOutput: ";
358      Syzextra::DetailedPrint(N);
359    attrib(N, "isHomog");
360  }
361
362}
363
364proc Scontinue(int l)
365"USAGE:  Scontinue(int len)
366RETURN:  nothing, instead it changes the currently active resolution
367PURPOSE: extends the currently active resolution by at most len syzygies
368ASSUME:  must be used within a ring returned by Sres or Ssyz
369EXAMPLE: example Scontinue; shows an example
370"
371{
372  def data =   Syzextra::GetInducedData();
373
374  if( (!defined(RES)) || (!defined(MRES)) || (typeof(data) != "list") || (size(data) != 2) )
375  {
376    ERROR("Sorry, but basering does not seem to be returned by Sres or Ssyz");
377  }
378  for (;  (l != 0) && (size(RES[size(RES)]) > 0); l-- )
379  {
380    Sstep();
381  }
382}
383example
384{ "EXAMPLE:"; echo = 2;
385  ring r;
386  module M = maxideal(1); M;
387  def S = Ssyz(M); setring S; S;
388  "Only the first syzygy: ";
389  RES; MRES;
390  "More syzygies: ";
391  Scontinue(10);
392  RES; MRES;
393}
394
395proc Ssyz(module M)
396"USAGE:  Ssyz(module M)
397RETURN:  ring, containing a Schreyer resolution
398PURPOSE: computes a Schreyer resolution of M of length 1 (see the library overview)
399SEE ALSO: Sres
400EXAMPLE: example Ssyz; shows an example
401"
402{
403  def S = Sinit(M); setring S;
404
405  Sstep(); // NOTE: what if M is zero?
406
407  return (S);
408}
409example
410{ "EXAMPLE:"; echo = 2;
411  ring r;
412  module M = maxideal(1); M;
413  def S = Ssyz(M); setring S; S;
414  "Only the first syzygy: ";
415  RES;
416  MRES; // Note gen(i)
417  kill S;
418  setring r; kill M;
419
420  module M = 0;
421  def S = Ssyz(M); setring S; S;
422  "Only the first syzygy: ";
423  RES;
424  MRES;
425}
426
427proc Sres(module M, int l)
428"USAGE:  Sres(module M, int len)
429RETURN:  ring, containing a Schreyer resolution
430PURPOSE: computes a Schreyer resolution of M of length at most len (see the library overview)
431NOTE:    If given len is zero then nvars(basering) + 1 is used instead.
432SEE ALSO: Ssyz
433EXAMPLE: example Sres; shows an example
434"
435{
436  def S = Sinit(M); setring S;
437
438  if (l == 0)
439  {
440    l = nvars(basering) + 1; // not really an estimate...?!
441  }
442
443  Sstep(); l = l - 1;
444
445  Scontinue(l);
446
447  return (S);
448}
449example
450{ "EXAMPLE:"; echo = 2;
451  ring r;
452  module M = maxideal(1); M;
453  def S = Sres(M, 0); setring S; S;
454  RES;
455  MRES;
456  kill S;
457  setring r; kill M;
458
459  def A = nc_algebra(-1,0); setring A;
460  ideal Q = var(1)^2, var(2)^2, var(3)^2;
461  qring SCA = twostd(Q);
462  basering;
463
464  module M = maxideal(1);
465  def S = Sres(M, 2); setring S; S;
466  RES;
467  MRES;
468}
469
470
471
472// ================================================================== //
473
474
475LIB "general.lib"; // for sort
476
477static proc MySort(def M)
478" Sorts the given ideal or module wrt >_{(c, ds)}  (.<.<.<.<) "
479{
480  if( typeof( attrib(basering, "DEBUG") ) == "int" )
481  {
482    int @DEBUG = attrib(basering, "DEBUG");
483  } else
484  {
485    int @DEBUG = 0; // !system("with", "ndebug");
486  }
487
488  if( typeof( attrib(basering, "KERCHECK") ) == "int" )
489  {
490    int @KERCHECK = attrib(basering, "KERCHECK");
491  } else
492  {
493    int @KERCHECK = @DEBUG;
494  }
495
496
497  if( @DEBUG )
498  {
499    "MySort:: Input: "; M;
500  }
501
502  def @N = M;
503
504  if( size(M) > 0 )
505  {
506    Syzextra::Sort_c_ds(@N);
507
508    if( @KERCHECK )
509    {
510      def iv = sort(lead(M), "c,ds", 1)[2]; // ,1 => reversed! // TODO: not needed?
511      def @M = M;
512      @M = M[iv];
513
514      // 0^th syz. property
515      if( (size(@N) + size(@M)) > 0 )
516      {
517        if( size(module( matrix(module(matrix(@N))) - matrix(module(matrix(@M))) )) > 0 )
518        {
519          "ERROR: MySort: wrong sorting in 'MySort': @N != @M!!!";
520
521          "@M:"; @M;
522          "@N:"; @N;
523
524          "module( matrix(module(matrix(@N))) - matrix(module(matrix(@M))) ): ";
525          module( matrix(module(matrix(@N))) - matrix(module(matrix(@M))) );
526
527          "ERROR: MySort: wrong sorting in 'MySort': @N != @M!!!";
528            Syzextra::m2_end(666);
529        }
530      }
531    }
532  }
533
534  if( @DEBUG )
535  {
536    "MySort:: Ouput: "; @N;
537  }
538
539  return (@N);
540}
541
542
543static proc SSinit(def M)
544{
545//  rtimer, "***TIMESNAP0 for SSinit: on level: [",-1,"] :: t: ", timer, ", r: ", rtimer;
546  if( (typeof(M) != "module") && (typeof(M) != "ideal") )
547  {
548    ERROR("Sorry: need an ideal or a module for input");
549  }
550  def @save = basering;
551
552  int @DEBUG = 0; // !system("with", "ndebug");
553
554  if( typeof( attrib(SSinit, "DEBUG") ) == "int" )
555  {
556    @DEBUG = attrib(SSinit, "DEBUG");
557  }
558
559  int @SYZCHECK = 0; // @DEBUG;
560
561  if( typeof( attrib(SSinit, "SYZCHECK") ) == "int" )
562  {
563    @SYZCHECK = attrib(SSinit, "SYZCHECK");
564  }
565
566  int @KERCHECK = 0; // @DEBUG;
567
568  if( typeof( attrib(SSinit, "KERCHECK") ) == "int" )
569  {
570    @KERCHECK = attrib(SSinit, "KERCHECK");
571  }
572
573  int @IGNORETAILS = 0;
574
575  if( typeof( attrib(SSinit, "IGNORETAILS") ) == "int" )
576  {
577    @IGNORETAILS = attrib(SSinit, "IGNORETAILS");
578  }
579
580  int @TREEOUTPUT = 0;
581
582  if( typeof( attrib(SSinit, "TREEOUTPUT") ) == "int" )
583  {
584    @TREEOUTPUT = attrib(SSinit, "TREEOUTPUT");
585  }
586
587  int @RINGCHANGE = 0;
588
589  if( typeof( attrib(SSinit, "RINGCHANGE") ) == "int" )
590  {
591    @RINGCHANGE = attrib(SSinit, "RINGCHANGE");
592  }
593
594
595  if( @DEBUG )
596  {
597    "SSinit::Input";
598    type(M);
599    attrib(M);
600  }
601
602  def opts = option(get);
603  option(redSB); option(redTail);
604    M = simplify(interred(groebner(M)), 1 + 2 + 4 + 32); // NOTE: we require interreduced GB for input
605  option(set, opts); kill opts;
606 
607//  int @IS_A_SB = attrib(M, "isSB");  if( !@IS_A_SB )  {  } else  {  }
608// attrib(M, "isSB", 1);
609
610  if( @IGNORETAILS )
611  {
612    M = lead(M);
613
614    if( @DEBUG )
615    {
616      "SSinit::Ignorring tails: M: ";
617      type(M);
618    }
619  }
620
621  def @N = MySort(M); // TODO: replace with inplace sorting!!!
622  def LEAD = lead(@N);
623
624  if( @KERCHECK )
625  {
626    def @LEAD = lead(M);
627
628    // sort wrt neg.deg.rev.lex!
629    intvec iv_ds = sort(@LEAD, "c,ds", 1)[2]; // ,1 => reversed!
630
631    M = M[iv_ds]; // sort M wrt ds on current leading terms
632    @LEAD = @LEAD[iv_ds];
633
634    if( size(module( matrix(@N) - matrix(M) )) > 0 )
635    {
636      "M:"; M;
637      "@N:"; @N;
638
639      "module( matrix(@N) - matrix(M) ): ";
640      module( matrix(@N) - matrix(M) );
641
642      "ERROR: wrong sorting (in SSnit): @N != M!!!";
643        Syzextra::m2_end(666);
644    }
645
646    if( size(module( matrix(@LEAD) - matrix(LEAD) )) > 0 )
647    {
648      "LEAD:"; LEAD;
649      "@LEAD:"; @LEAD;
650
651      "module( matrix(@LEAD) - matrix(LEAD) ): ";
652      module( matrix(@LEAD) - matrix(LEAD) );
653
654      "ERROR: wrong sorting (in SSnit): @LEAD != LEAD!!!";
655        Syzextra::m2_end(666);
656    }
657
658  }
659
660  M = @N;
661
662  def TAIL =   Syzextra::Tail(M);
663
664  int @RANK = nrows(M); int @SIZE = ncols(M);
665
666  intvec @DEGS = deg(M[1..@SIZE]); // store actuall degrees of input elements
667
668  // TODO: what about real modules? weighted ones?
669
670  if( @RINGCHANGE )
671  {
672    list @l = ringlist(@save);
673    int @z = 0; ideal @m = maxideal(1); intvec @wdeg = deg(@m[1..ncols(@m)]);
674    // NOTE: @wdeg will be ignored anyway :(
675    @l[3] = list(list("C", @z), list("lp", @wdeg));
676    kill @z, @m, @wdeg; // since these vars are ring independent!
677    def S = ring(@l); // --  Syzextra::MakeInducedSchreyerOrdering(1);
678    kill @l;
679    setring S; // ring with an easy divisibility test ("C, lex") // or not!???
680    if( @DEBUG )
681    {
682      "SSinit::NewRing(C,lex)?";
683      basering;
684        Syzextra::DetailedPrint(basering);
685    }
686  } else
687  { def S = basering; }
688
689  // Setup the leading syzygy^{-1} module to zero:
690  module Z = 0; Z[@RANK] = 0; attrib(Z, "isHomog", intvec(0));
691
692  if( !@RINGCHANGE )
693  {
694    if( defined(RES) )  { if( @DEBUG ){ "WARN: killing existing object: RES!"; }; kill RES; }
695    if( defined(MRES) ) { if( @DEBUG ){ "WARN: killing existing object: MRES!"; }; kill MRES; }
696    if( defined(LRES) ) { if( @DEBUG ){ "WARN: killing existing object: LRES!"; }; kill LRES; }
697    if( defined(TRES) ) { if( @DEBUG ){ "WARN: killing existing object: TRES!"; }; kill TRES; }
698  }
699
700  module MRES = Z;
701
702  list RES;  RES[1] = Z;
703  list LRES; LRES[1] = Z;
704  list TRES; TRES[1] = Z;
705
706  if( !defined(M) )
707  {
708    def M = imap(@save, M);
709  }
710
711  module F = freemodule(@RANK); intvec @V = deg(F[1..@RANK]); kill F;
712
713  attrib(M, "isHomog", @V);
714  attrib(M, "isSB", 1);
715  attrib(M, "degrees", @DEGS);
716
717  if( !defined(LEAD) )
718  {
719    def LEAD = imap(@save, LEAD);
720  }
721
722  attrib(LEAD, "isHomog", @V);
723  attrib(LEAD, "isSB", 1);
724
725  if( !defined(TAIL) )
726  {
727    def TAIL = imap(@save, TAIL);
728  }
729
730  if( @DEBUG )
731  {
732    "SSinit::(sorted) SB_Input: ";
733    type(M);
734    attrib(M);
735    attrib(M, "isHomog");
736  }
737
738  if( @SYZCHECK )
739  {
740    // 0^th syz. property
741    if( size(module(transpose( transpose(M) * transpose(MRES) ))) > 0 )
742    {
743      transpose( transpose(M) * transpose(MRES) );
744      "ERROR: transpose( transpose(M) * transpose(MRES) ) != 0!!!";
745        Syzextra::m2_end(666);
746    }
747  }
748
749  RES [size(RES)+1] = M; // list of all syzygy modules
750  LRES[size(LRES)+1] = LEAD; // list of all syzygy modules
751  TRES[size(TRES)+1] = TAIL; // list of all syzygy modules
752
753  MRES = MRES, M; //?
754
755  attrib(MRES, "isHomog", @V);
756
757//  attrib(S, "InducionStart", @RANK);
758
759
760  if( typeof( attrib(SSinit, "LEAD2SYZ") ) == "int" )
761  {
762    attrib(S, "LEAD2SYZ", attrib(SSinit, "LEAD2SYZ") );
763  } else
764  {
765    attrib(S, "LEAD2SYZ", 0);
766  }
767
768  if( typeof( attrib(SSinit, "TAILREDSYZ") ) == "int" )
769  {
770    attrib(S, "TAILREDSYZ", attrib(SSinit, "TAILREDSYZ") );
771  } else
772  {
773    attrib(S, "TAILREDSYZ", 1);
774  }
775
776  if( typeof( attrib(SSinit, "HYBRIDNF") ) == "int" )
777  {
778    attrib(S, "HYBRIDNF", attrib(SSinit, "HYBRIDNF") );
779  } else
780  {
781    attrib(S, "HYBRIDNF", 0);
782  }
783
784  if( typeof( attrib(SSinit, "NOCACHING") ) == "int" )
785  {
786    attrib(S, "NOCACHING", attrib(SSinit, "NOCACHING") );
787  } else
788  {
789    attrib(S, "NOCACHING", 0);
790  }
791 
792
793  // maybe resetting existing ring attributes!
794  attrib(S, "DEBUG", @DEBUG);
795  attrib(S, "SYZCHECK", @SYZCHECK);
796  attrib(S, "KERCHECK", @KERCHECK);
797  attrib(S, "IGNORETAILS", @IGNORETAILS);
798  attrib(S, "TREEOUTPUT", @TREEOUTPUT);
799  attrib(S, "SYZNUMBER", 0);
800
801  if( @DEBUG )
802  {
803    "SSinit::MRES";
804    MRES;
805//      Syzextra::DetailedPrint(MRES);
806    attrib(MRES, "isHomog");
807    attrib(S);
808  }
809
810  export RES;
811  export MRES;
812  export LRES;
813  export TRES;
814
815//  rtimer, "***TIMESNAP1 for SSinit: on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
816
817  return (S);
818}
819example
820{ "EXAMPLE:"; echo = 2;
821  ring R = 0, (w, x, y, z), dp;
822
823  def M = maxideal(1);
824  def S = SSinit(M); setring S; S;
825
826  "Only the first initialization: ";
827  RES; LRES; TRES;
828  MRES;
829
830  kill S; setring R; kill M;
831
832  ideal M = w^2 - x*z,  w*x - y*z,  x^2 - w*y, x*y - z^2, y^2 - w*z;
833  def S = SSinit(M); setring S; S;
834
835  "Only the first initialization: ";
836  RES; LRES; TRES;
837  MRES;
838
839  kill S; setring R; kill M;
840}
841
842
843LIB "poly.lib"; // for lcm
844
845
846
847/// Compute L(Syz(L))
848static proc SSComputeLeadingSyzygyTerms(def L)
849{
850  if( typeof( attrib(basering, "DEBUG") ) == "int" )
851  {
852    int @DEBUG = attrib(basering, "DEBUG");
853  } else
854  {
855    int @DEBUG = 0; // !system("with", "ndebug");
856  }
857
858  if( typeof( attrib(basering, "SYZCHECK") ) == "int" )
859  {
860    int @SYZCHECK = attrib(basering, "SYZCHECK");
861  } else
862  {
863    int @SYZCHECK = @DEBUG;
864  }
865
866  if( typeof( attrib(basering, "KERCHECK") ) == "int" )
867  {
868    int @KERCHECK = attrib(basering, "KERCHECK");
869  } else
870  {
871    int @KERCHECK = @DEBUG;
872  }
873
874  if( @DEBUG )
875  {
876    "SSComputeLeadingSyzygyTerms::Input: ";
877    L;
878  }
879
880  module SS =   Syzextra::ComputeLeadingSyzygyTerms(L);
881
882  if( @KERCHECK )
883  {
884    int i, j, r;
885    int N = ncols(L);
886    def a, b;
887    poly aa, bb;
888
889    bigint c;
890
891    ideal M;
892
893    module S = 0;
894
895    for(i = 1; i <= N; i++)
896    {
897      a = L[i];
898      c =   Syzextra::leadcomp(a);
899      r = int(c);
900
901      aa =   Syzextra::leadmonomial(a);
902
903      M = 0;
904
905      for(j = i-1; j > 0; j--)
906      {
907        b = L[j];
908
909        if(   Syzextra::leadcomp(b) == c )
910        {
911          bb =   Syzextra::leadmonomial(b);
912
913          M[j] = (lcm(aa, bb) / aa);
914        }
915      }
916
917      // TODO: add quotient relations here...
918
919      M = simplify(M, 1 + 2 + 32);
920
921      M = MySort(M);
922
923      S = S, M * gen(i);
924    }
925
926    S = MySort(simplify(S, 2));
927
928    if( (size(S) + size(SS)) > 0 )
929    {
930      if( size(module(matrix(S) - matrix(SS))) > 0 )
931      {
932        "ERROR: SSComputeLeadingSyzygyTerms: S != SS ";
933
934        "basering: "; basering;
935//          Syzextra::DetailedPrint(basering);
936
937        "S: ";  S;
938//          Syzextra::DetailedPrint(_, 1);
939        "SS: "; SS;
940//          Syzextra::DetailedPrint(_, 1);
941
942        "DIFF: ";
943        module(matrix(S) - matrix(SS));
944//          Syzextra::DetailedPrint(_, 2);
945        print(matrix(S) - matrix(SS));
946          Syzextra::m2_end(666);
947      }
948    }
949  }
950
951
952  if( @DEBUG )
953  {
954    "SSComputeLeadingSyzygyTerms::Output: ";
955    "SS: "; SS;
956  }
957
958  if( size(SS) > 0 )
959  {
960    attrib(SS, "isSB", 1);
961  }
962
963  return (SS);
964}
965
966/// Compute Syz(L), where L is a monomial (leading) module
967static proc SSCompute2LeadingSyzygyTerms(def L)
968{
969  if( typeof( attrib(basering, "DEBUG") ) == "int" )
970  {
971    int @DEBUG = attrib(basering, "DEBUG");
972  } else
973  {
974    int @DEBUG = 0; // !system("with", "ndebug");
975  }
976
977  if( typeof( attrib(basering, "SYZCHECK") ) == "int" )
978  {
979    int @SYZCHECK = attrib(basering, "SYZCHECK");
980  } else
981  {
982    int @SYZCHECK = @DEBUG;
983  }
984
985  if( typeof( attrib(basering, "KERCHECK") ) == "int" )
986  {
987    int @KERCHECK = attrib(basering, "KERCHECK");
988  } else
989  {
990    int @KERCHECK = @DEBUG;
991  }
992
993  if( @DEBUG )
994  {
995    "SSCompute2LeadingSyzygyTerms::Input: ";
996    L;
997  }
998
999  module SS =   Syzextra::Compute2LeadingSyzygyTerms(L);
1000
1001  if( @DEBUG )
1002  {
1003    "SSCompute2LeadingSyzygyTerms::Syz(SS): "; SS;
1004  }
1005
1006  if( @SYZCHECK )
1007  {
1008    if( size(SS) > 0 and size(L) > 0 )
1009    {
1010      if( size(module(transpose( transpose(SS) * transpose(L) ))) > 0 )
1011      {
1012        transpose( transpose(SS) * transpose(L) );
1013        "ERROR: transpose( transpose(SS) * transpose(L) ) != 0!!!";
1014          Syzextra::m2_end(666);
1015      }
1016    }
1017  }
1018
1019  if( @KERCHECK )
1020  {
1021    int @TAILREDSYZ = 1;
1022    if( typeof( attrib(basering, "TAILREDSYZ") ) == "int" )
1023    {
1024      @TAILREDSYZ = attrib(basering, "TAILREDSYZ");
1025    }
1026
1027    int i, j, r;
1028    int N = ncols(L);
1029    def a, b;
1030
1031    poly aa, bb, @lcm;
1032
1033    bigint c;
1034
1035    module M;
1036
1037    module S = 0;
1038
1039    for(i = 1; i <= N; i++)
1040    {
1041      a = L[i];
1042  //    "a: ", a;
1043      c =   Syzextra::leadcomp(a);
1044      r = int(c);
1045
1046      aa =   Syzextra::leadmonomial(a);
1047
1048      M = 0;
1049
1050      for(j = i-1; j > 0; j--)
1051      {
1052        b = L[j];
1053  //      "b: ", b;
1054
1055        if(   Syzextra::leadcomp(b) == c )
1056        {
1057          bb =   Syzextra::leadmonomial(b);
1058          @lcm = lcm(aa, bb);
1059
1060          M[j] = (@lcm / aa)* gen(i) - (@lcm / bb)* gen(j);
1061        }
1062      }
1063
1064      M = simplify(M, 2);
1065
1066      // TODO: add quotient relations here...
1067      S = S, M;
1068    }
1069
1070    if( @TAILREDSYZ )
1071    {
1072      // Make sure that 2nd syzygy terms are not reducible by 1st
1073      def opts = option(get);
1074      option(redSB); option(redTail);
1075      S = std(S); // binomial module
1076      option(set, opts);
1077      //  kill opts;
1078    } else
1079    {
1080      S = simplify(S, 2 + 32);
1081    }
1082
1083    S = MySort(S);
1084
1085    if( @DEBUG )
1086    {
1087      "SSCompute2LeadingSyzygyTerms::Syz(S): "; S;
1088    }
1089
1090    if( @SYZCHECK )
1091    {
1092      if( size(S) > 0 and size(L) > 0 )
1093      {
1094        if( size(module(transpose( transpose(S) * transpose(L) ))) > 0 )
1095        {
1096          transpose( transpose(S) * transpose(L) );
1097          "ERROR: transpose( transpose(S) * transpose(L) ) != 0!!!";
1098            Syzextra::m2_end(666);
1099        }
1100      }
1101    }
1102
1103    if(size(S) != size(SS))
1104    {
1105      "ERROR: SSCompute2LeadingSyzygyTerms: size(S) != size(SS)";
1106
1107      "basering: "; basering; //        Syzextra::DetailedPrint(basering);
1108
1109      "S: ";  S;
1110//        Syzextra::DetailedPrint(S, 2);
1111      "SS: "; SS;
1112//        Syzextra::DetailedPrint(SS, 2);
1113        Syzextra::m2_end(666);
1114    }
1115
1116    if(size(S) > 0 && size(SS) > 0)
1117    {
1118      if( size(module(matrix(lead(S)) - matrix(lead(SS)))) > 0 )
1119      {
1120        "ERROR: SSCompute2LeadingSyzygyTerms: lead(S) != lead(SS) ";
1121
1122        "basering: ";  basering;
1123//          Syzextra::DetailedPrint(basering);
1124
1125        "lead(S ): "; lead(S );
1126//          Syzextra::DetailedPrint(_, 2);
1127        "lead(SS): "; lead(SS);
1128//          Syzextra::DetailedPrint(_, 2);
1129
1130        "DIFF: ";
1131        print( matrix(lead(S)) - matrix(lead(SS))  );
1132        module(matrix(lead(S)) - matrix(lead(SS)));
1133//          Syzextra::DetailedPrint(_ , 4);
1134          Syzextra::m2_end(666);
1135      }
1136
1137
1138      if( @TAILREDSYZ )
1139      {
1140      if( size(module(matrix(  Syzextra::Tail(S)) - matrix(  Syzextra::Tail(SS)))) > 0 )
1141      {
1142        "ERROR: SSCompute2LeadingSyzygyTerms: Tail(S) != Tail(SS) ";
1143
1144        "basering: ";  basering;
1145//          Syzextra::DetailedPrint(basering);
1146
1147        "Tail(S ): ";   Syzextra::Tail(S );
1148//          Syzextra::DetailedPrint(_, 2);
1149        "Tail(SS): ";   Syzextra::Tail(SS);
1150//          Syzextra::DetailedPrint(_, 2);
1151
1152        "DIFF: ";
1153        module( matrix(  Syzextra::Tail(S)) - matrix(  Syzextra::Tail(SS)) );
1154//          Syzextra::DetailedPrint(_, 4);
1155        print( matrix(  Syzextra::Tail(S)) - matrix(  Syzextra::Tail(SS)) );
1156          Syzextra::m2_end(666);
1157      }
1158      }
1159    }
1160  }
1161
1162  module S2 =   Syzextra::Tail(SS);
1163  SS = lead(SS); // (C,lp) on base ring!
1164
1165  if( @SYZCHECK )
1166  {
1167    if( ncols(SS) != ncols(S2) ) // || size(SS) != ncols(SS) || size(S2) != ncols(S2)
1168    {
1169      "ERROR: SSCompute2LeadingSyzygyTerms: inappropriate S2 / SS: ";
1170      type(SS);
1171      type(S2);
1172      L;
1173        Syzextra::m2_end(666);
1174    }
1175  }
1176
1177  if( @DEBUG )
1178  {
1179    "SSCompute2LeadingSyzygyTerms::Output: "; SS; S2;
1180  }
1181
1182  attrib(SS, "isSB", 1);
1183
1184  return (SS, S2);
1185}
1186
1187// -------------------------------------------------------- //
1188
1189/// TODO: save shortcut (syz: |-.->) LM(LM(m) * "t") -> syz?
1190static proc SSFindReducer(def product, def syzterm, def L, list #)
1191{
1192  if( typeof( attrib(basering, "DEBUG") ) == "int" )
1193  {
1194    int @DEBUG = attrib(basering, "DEBUG");
1195  } else
1196  {
1197    int @DEBUG = 0; // !system("with", "ndebug");
1198  }
1199
1200  if( typeof( attrib(basering, "SYZCHECK") ) == "int" )
1201  {
1202    int @SYZCHECK = attrib(basering, "SYZCHECK");
1203  } else
1204  {
1205    int @SYZCHECK = @DEBUG;
1206  }
1207
1208  if( typeof( attrib(basering, "KERCHECK") ) == "int" )
1209  {
1210    int @KERCHECK = attrib(basering, "KERCHECK");
1211  } else
1212  {
1213    int @KERCHECK = @DEBUG;
1214  }
1215
1216
1217  if( @DEBUG )
1218  {
1219    "SSFindReducer::Input: ";
1220
1221    "syzterm: ", syzterm;
1222    "product: ", product;
1223//    "L: ", L;
1224//    "T: ", T;
1225    if( size(#) > 0 )
1226    {
1227//      "LSyz: ", #;
1228    }
1229  }
1230
1231
1232  if( @DEBUG && (syzterm != 0) )
1233  {
1234    def @@c =   Syzextra::leadcomp(syzterm); int @@r = int(@@c);
1235    def @@product =   Syzextra::leadmonomial(syzterm) * L[@@r];
1236
1237    if( @@product != product)
1238    {
1239      "product: ", product, ", @@product: ", @@product;
1240      "ERROR: 'syzterm' results in wrong product !!!???";
1241        Syzextra::m2_end(666);
1242    }
1243  }
1244
1245  if( typeof(#[1]) == "module" )
1246  {
1247    vector my =   Syzextra::FindReducer(product, syzterm, L/*, T*/, #[1]);
1248  } else
1249  {
1250    vector my =   Syzextra::FindReducer(product, syzterm, L/*, T*/);
1251  }
1252
1253
1254  if( @KERCHECK )
1255  {
1256    bigint c =   Syzextra::leadcomp(product); int r = int(c);
1257
1258    def a, b, bb;
1259
1260    vector nf = [0];
1261
1262    // looking for an appropriate diviser
1263    for( int k = ncols(L); k > 0; k-- )
1264    {
1265      a = L[k];
1266      // with the same mod. component
1267      if(   Syzextra::leadcomp(a) == c )
1268      {
1269        b = - (  Syzextra::leadmonomial(product) /   Syzextra::leadmonomial(L[k]));
1270
1271        // which divides the product: looking for the 1st appropriate one!
1272        if( b != 0 )
1273        {
1274          bb = b * gen(k);
1275
1276          if (size(bb + syzterm) == 0) // cannot allow something like: a*gen(i) - a*gen(i)
1277          {
1278            nf = [0];
1279          } else
1280          {
1281            nf = bb;
1282          }
1283
1284          // new syz. term should not be in <LS = #>
1285          if( size(#) > 0 )
1286          {
1287            if( typeof(#[1]) == "module" )
1288            {
1289              nf = NF(bb, #[1]);
1290            }
1291          }
1292
1293          // while the complement (the fraction) is not reducible by leading syzygies
1294          if( nf != 0 ) // nf must be == bb!!!
1295          {
1296            /// TODO: save shortcut LM(m) * T[i] -> ?
1297
1298            // choose ANY such reduction... (with the biggest index?)
1299            break;
1300          }
1301        }
1302      }
1303    }
1304
1305    if( my != nf )
1306    {
1307      "ERROR in   Syzextra::FindReducer => ", my, " != nf: ", nf;
1308        Syzextra::m2_end(666);
1309    }
1310  }
1311
1312  if( @DEBUG )
1313  {
1314    "SSFindReducer::Output: ", my;
1315  }
1316
1317  return (my);
1318}
1319
1320/// TODO: save shortcut (syz: |-.->) LM(m) * "t" -> ?
1321static proc SSReduceTerm(poly m, def t, def syzterm, def L, def T, list #)
1322{
1323  if( typeof( attrib(basering, "DEBUG") ) == "int" )
1324  {
1325    int @DEBUG = attrib(basering, "DEBUG");
1326  } else
1327  {
1328    int @DEBUG = 0; // !system("with", "ndebug");
1329  }
1330
1331
1332  if( @DEBUG )
1333  {
1334    "SSReduce::Input: ";
1335
1336    "syzterm: ", syzterm;
1337    "mult: ", m;
1338    "term: ", t;
1339//    "L: ", L;
1340//    "T: ", T;
1341    if( size(#) > 0 )
1342    {
1343//      "LSyz: ", #;
1344    }
1345//    "attrib(LS, 'isSB')", attrib(LS, "isSB");
1346  }
1347
1348  if( typeof( attrib(basering, "KERCHECK") ) == "int" )
1349  {
1350    int @KERCHECK = attrib(basering, "KERCHECK");
1351  } else
1352  {
1353    int @KERCHECK = @DEBUG;
1354  }
1355
1356  if( typeof( attrib(basering, "SYZCHECK") ) == "int" )
1357  {
1358    int @SYZCHECK = attrib(basering, "SYZCHECK");
1359  } else
1360  {
1361    int @SYZCHECK = @DEBUG;
1362  }
1363
1364  if( @SYZCHECK && (syzterm != 0) )
1365  {
1366    def @@c =   Syzextra::leadcomp(syzterm); int @@r = int(@@c);
1367    poly @@m =   Syzextra::leadmonomial(syzterm); def @@t = L[@@r];
1368
1369    if( (@@m != m) || (@@t != t))
1370    {
1371      "m: ", m, ", t: ", t;
1372      "@@m: ", @@m, ", @@t: ", @@t;
1373      "ERROR: 'syzterm' results in wrong m * t !!!";
1374        Syzextra::m2_end(666);
1375    }
1376  }
1377
1378  if( typeof(#[1]) == "module" )
1379  {
1380    vector ss =   Syzextra::ReduceTerm(m, t, syzterm, L, T, #[1]);
1381  } else
1382  {
1383    vector ss =   Syzextra::ReduceTerm(m, t, syzterm, L, T);
1384  }
1385
1386  if( @KERCHECK )
1387  {
1388    int @TREEOUTPUT  = attrib(basering, "TREEOUTPUT");
1389
1390    vector s = 0;
1391
1392    if( size(t) > 0 )
1393    {
1394      def product = m * t;
1395
1396      s = SSFindReducer(product, syzterm, L, #);
1397
1398      if( size(s) != 0 )
1399      {
1400        poly @b =   Syzextra::leadmonomial(s);
1401
1402        def @c =   Syzextra::leadcomp(s); int k = int(@c);
1403
1404        if( @TREEOUTPUT ){ "\CHILD{", (s), "}{", ( @b*L[k]), "}"; }
1405
1406        s = s + SSTraverseTail(@b, T[k], L, T, #); // !!!
1407      }
1408    }
1409
1410    if( s != ss )
1411    {
1412      "ERROR in   Syzextra::ReduceTerm => old: ", s, " != ker: ", ss;
1413      "m: ", m;
1414      "t: ", t;
1415      "syzterm: ", syzterm;
1416       L; T; #;
1417        Syzextra::m2_end(666);
1418    }
1419  }
1420
1421  if( @DEBUG )
1422  {
1423    "SSReduceTerm::Output: ", ss;
1424  }
1425
1426  return (ss);
1427}
1428
1429
1430// TODO: store m * @tail -.-^-.-^-.--> ?
1431static proc SSTraverseTail(poly m, def @tail, def L, def T, list #)
1432{
1433  if( typeof( attrib(basering, "DEBUG") ) == "int" )
1434  {
1435    int @DEBUG = attrib(basering, "DEBUG");
1436  } else
1437  {
1438    int @DEBUG = 0; // !system("with", "ndebug");
1439  }
1440
1441  if( typeof( attrib(basering, "KERCHECK") ) == "int" )
1442  {
1443    int @KERCHECK = attrib(basering, "KERCHECK");
1444  } else
1445  {
1446    int @KERCHECK = @DEBUG;
1447  }
1448
1449
1450  if( @DEBUG )
1451  {
1452    "SSTraverse::Input: ";
1453
1454    "mult: ", m;
1455    "tail: ", @tail; // T[i];
1456
1457    if( size(#) > 0 )
1458    {
1459//      "LSyz: "; #[1];
1460    }
1461  }
1462
1463  if( typeof(#[1]) == "module" )
1464  {
1465    vector ss =   Syzextra::TraverseTail(m, @tail, L, T, #[1]);
1466  } else
1467  {
1468    vector ss =   Syzextra::TraverseTail(m, @tail, L, T);
1469  }
1470
1471  if( @KERCHECK )
1472  {
1473    vector s = 0;
1474
1475    def @l, @p;
1476    @p = @tail;
1477
1478  // iterate tail-terms in ANY order!
1479    while( size(@p) > 0 )
1480    {
1481      @l = lead(@p);
1482      s = s + SSReduceTerm(m, @l, [0], L, T, #); // :(
1483      @p = @p - @l;
1484    }
1485
1486    if( s != ss )
1487    {
1488      "ERROR in   Syzextra::TraverseTail => old: ", s, " != ker: ", ss;
1489      "m: ", m;
1490      "@tail: ", @tail;
1491      L; T; #;
1492        Syzextra::m2_end(666);
1493    }
1494  }
1495
1496  if( @DEBUG )
1497  {
1498    "SSTraverseTail::Output: ", ss;
1499  }
1500
1501  return (ss);
1502}
1503
1504// -------------------------------------------------------- //
1505
1506static proc SSSchreyerSyzygyNF(vector syz_lead, vector syz_2, def L, def T, list #)
1507"  Hybrid Syzygy computation: 'reduce' spoly by eliminating _any_ terms while discurding terms of lower order!
1508   Return the tail syzygy (without: syz_lead, starting with: syz_2)"
1509{
1510  if( typeof( attrib(basering, "DEBUG") ) == "int" )
1511  {
1512    int @DEBUG = attrib(basering, "DEBUG");
1513  } else
1514  {
1515    int @DEBUG = 0; // !system("with", "ndebug");
1516  }
1517
1518  if( @DEBUG )
1519  {
1520    "SSSchreyerSyzygyNF::Input: ";
1521
1522    "syzygy_lead: ", syz_lead;
1523    "syzygy 2nd : ", syz_2;
1524//    L; T;
1525    if( size(#) > 0 )
1526    {
1527//      "LSyz: "; #[1];
1528    }
1529  }
1530
1531  if( typeof( attrib(basering, "KERCHECK") ) == "int" )
1532  {
1533    int @KERCHECK = attrib(basering, "KERCHECK");
1534  } else
1535  {
1536    int @KERCHECK = @DEBUG;
1537  }
1538
1539  if( typeof(#[1]) == "module" )
1540  {
1541    def my =   Syzextra::SchreyerSyzygyNF(syz_lead, syz_2, L, T, #[1]);
1542  } else
1543  {
1544    def my =   Syzextra::SchreyerSyzygyNF(syz_lead, syz_2, L, T);
1545  }
1546
1547  if( @KERCHECK )
1548  {
1549    int @TREEOUTPUT  = attrib(basering, "TREEOUTPUT");
1550
1551    def spoly =   Syzextra::leadmonomial(syz_lead) * T[int(  Syzextra::leadcomp(syz_lead))]
1552              +   Syzextra::leadmonomial(syz_2)    * T[int(  Syzextra::leadcomp(syz_2))];
1553
1554    vector @tail = syz_2;
1555
1556    poly @b; int k;
1557
1558    while (size(spoly) > 0)
1559    {
1560      syz_2 = SSFindReducer(lead(spoly), 0, L, #); spoly =   Syzextra::Tail(spoly);
1561
1562      if( size(syz_2) != 0)
1563      {
1564        @b =   Syzextra::leadmonomial(syz_2);
1565        k =  int(  Syzextra::leadcomp(syz_2));
1566
1567        if( @TREEOUTPUT ){ "\CHILD{", (syz_2), "}{", ( lead(spoly)), "}"; }
1568
1569        spoly = spoly + @b * T[k];
1570        @tail = @tail + syz_2;
1571
1572      }
1573    }
1574
1575    if( my != @tail )
1576    {
1577      "ERROR in   Syzextra::SchreyerSyzygyNF => old: ", @tail, " != ker: ", my;
1578
1579      "syzygy_lead: ", syz_lead;
1580      "syzygy 2nd : ", syz_2;
1581
1582      L; T; #;
1583        Syzextra::m2_end(666);
1584    }
1585  }
1586
1587  if( @DEBUG )
1588  {
1589    "SSSchreyerSyzygyNF::Output: ", my;
1590  }
1591
1592  return (my);
1593}
1594
1595
1596
1597// -------------------------------------------------------- //
1598
1599// module (N, LL, TT) = SSComputeSyzygy(L, T);
1600// Compute Syz(L ++ T) = N = LL ++ TT
1601static proc SSComputeSyzygy(def L, def T)
1602{
1603//  rtimer, "***TIMESNAP0 for   Syzextra::ComputeSyzygy(L,T): on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1604  int @DEBUG    = attrib(basering, "DEBUG");
1605  int @KERCHECK = attrib(basering, "KERCHECK");
1606  int @SYZCHECK = attrib(basering, "SYZCHECK");
1607
1608  if( @DEBUG )
1609  {
1610    "SSComputeSyzygy::Input";
1611    "basering: ", basering; attrib(basering);
1612//      Syzextra::DetailedPrint(basering);
1613
1614//    "iCompShift: ", iCompShift;
1615
1616    "L: "; L;
1617    "T: "; T;
1618  }
1619
1620//  option(prot);
1621//  rtimer, "***TIME for   Syzextra::ComputeSyzygy(L,T): on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1622  list @res=  Syzextra::ComputeSyzygy(L,T);
1623//  rtimer, "***TIME for   Syzextra::ComputeSyzygy(L,T): on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1624//  option(noprot); // TODO: restore!
1625
1626
1627  module @LL = @res[1]; module @TT = @res[2];
1628
1629  if( @KERCHECK )
1630  {
1631    int @SYZCHECK    = attrib(basering, "SYZCHECK");
1632    int @LEAD2SYZ    = attrib(basering, "LEAD2SYZ");
1633    int @TAILREDSYZ  = attrib(basering, "TAILREDSYZ");
1634    int @HYBRIDNF    = attrib(basering, "HYBRIDNF");
1635    int @IGNORETAILS = attrib(basering, "IGNORETAILS");
1636    int @TREEOUTPUT  = attrib(basering, "TREEOUTPUT");
1637
1638    int @SYZNUMBER   = attrib(basering,"SYZNUMBER");
1639
1640    if( @HYBRIDNF == 2 )
1641    {
1642      if( @SYZNUMBER < 3 ){ @HYBRIDNF = 1; } else { @HYBRIDNF = 0; }
1643    }
1644
1645    module LL;
1646
1647    /// Get the critical leading syzygy terms
1648    if( @LEAD2SYZ ) // & 2nd syz. term
1649    {
1650      module LL2;
1651      (LL, LL2) = SSCompute2LeadingSyzygyTerms(L);
1652    } else
1653    {
1654      LL = SSComputeLeadingSyzygyTerms(L);
1655    }
1656
1657    if( ncols(LL) != ncols(@LL) )
1658    {
1659      "ERROR in SSComputeSyzygy: wrong leading syzygies!?";
1660      "";
1661      L; T;
1662      "";
1663      type(LL);
1664      type(@LL);
1665        Syzextra::m2_end(666);
1666    }
1667
1668    if( size( module( matrix(LL) - matrix(@LL) ) ) != 0 )
1669    {
1670      "ERROR in SSComputeSyzygy: wrong leading syzygies!?";
1671      "";
1672      L; T;
1673      "";
1674      type(LL);
1675      type(@LL);
1676        Syzextra::m2_end(666);
1677    }
1678
1679    module TT, SYZ;
1680
1681    vector a, a2; bigint c; int r; poly aa;
1682
1683    if( size(LL) > 0 )
1684    {
1685      list LS;
1686
1687      if( @TAILREDSYZ)
1688      {
1689        LS = list(LL);
1690      }
1691
1692      vector @tail = 0;
1693
1694//      for(int k = 1; k <= ncols(LL); k++ )
1695      for(int k = ncols(LL); k > 0; k-- )
1696      {
1697        // leading syz. term:
1698        a = LL[k];
1699
1700        if( !@IGNORETAILS )
1701        {
1702          c =   Syzextra::leadcomp(a); r = int(c); aa =   Syzextra::leadmonomial(a);
1703
1704          if( @TREEOUTPUT ){ "\ROOT{", (lead(a)), "}"; }
1705
1706          // NF reduction:
1707          if( @HYBRIDNF == 0 ) // Traverse approach:
1708          {
1709            @tail = SSTraverseTail(aa, T[r], L, T, LS);
1710
1711            // get the 2nd syzygy term...
1712            if( @LEAD2SYZ ) // with the 2nd syz. term:
1713            {
1714              a2 = LL2[k]; c =   Syzextra::leadcomp(a2); r = int(c); aa =   Syzextra::leadmonomial(a2);
1715
1716              if( @TREEOUTPUT ){ "\CHILD{", (lead(a2)), "}{", ( aa*L[r]), "}"; }
1717
1718              @tail = a2 + @tail + SSTraverseTail(aa, T[r], L, T, LS);
1719            } else
1720            {
1721              @tail = @tail + SSReduceTerm(aa, L[r], a, L, T, LS);
1722            }
1723
1724          } else // Hybrid approach:
1725          {
1726
1727            // get the 2nd syzygy term...
1728            if( @LEAD2SYZ )
1729            {
1730              a2 = LL2[k];
1731            } else
1732            {
1733              a2 = SSFindReducer( aa * L[r], a, L, LS);
1734            }
1735
1736            if ( (@SYZCHECK || @DEBUG) )
1737            {
1738              if( size(a2) == 0 ) // if syzterm == 0!!!!
1739              {
1740                "ERROR in SSComputeSyzygy: could not find the 2nd syzygy term during the hybrid NF!!!";
1741                  Syzextra::m2_end(666);
1742              }
1743            }
1744
1745            if( @TREEOUTPUT ){ "\CHILD{", (a2), "}{", ( aa*L[r]), "}"; }
1746
1747            @tail = SSSchreyerSyzygyNF(a, a2, L, T, LS);
1748          }
1749        } // else @tail remains zero!
1750
1751        TT[k] = @tail;
1752        SYZ[k] = a + @tail;
1753
1754        if ( TT[k] != @TT[k] )
1755        {
1756          "ERROR in SSComputeSyzygy: wrong tail syzygy!?";
1757          "INPUT";
1758          L; T;
1759          "LEADING SYZYGY TERMS";
1760          type(LL);
1761
1762          "CURRENT TAILS";
1763          type(TT);
1764          type(@TT);
1765
1766          "WRONG TAIL [", k, "]:";
1767          type(TT[k]);
1768          type(@TT[k]);
1769
1770//          "IMAGES:";
1771//              transpose( transpose(N) * transpose(MRES) );
1772
1773            Syzextra::m2_end(666);
1774        }
1775
1776      } // FOR
1777    }
1778
1779    if( ncols(TT) != ncols(@TT) )
1780    {
1781      "ERROR in SSComputeSyzygy: wrong tail syzygies!?";
1782      "";
1783      L; T;
1784      "";
1785      type(LL);
1786      type(@LL);
1787      "";
1788      type(TT);
1789      type(@TT);
1790        Syzextra::m2_end(666);
1791    }
1792
1793    if( size( module( matrix(TT) - matrix(@TT) ) ) != 0 )
1794    {
1795      "ERROR in SSComputeSyzygy: wrong tail syzygies!?";
1796      "";
1797      TT; @TT;
1798      "";
1799      L; T;
1800      "";
1801      type(LL);
1802      type(@LL);
1803        Syzextra::m2_end(666);
1804    }
1805
1806  }
1807
1808  module @SYZ;
1809
1810  for(int @k = ncols(@LL); @k > 0; @k-- )
1811  {
1812    @SYZ[@k] = @LL[@k] + @TT[@k];
1813  }
1814
1815  if( @DEBUG )
1816  {
1817    "SSComputeSyzygy::Output";
1818
1819//    "SYZ: "; @SYZ;
1820    "LL: "; @LL;
1821    "TT: "; @TT;
1822  }
1823
1824//  rtimer, "***TIMESNAP1 for   Syzextra::ComputeSyzygy(L,T): on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1825  return (@SYZ, @LL, @TT);
1826}
1827
1828// resolution/syzygy step:
1829static proc SSstep()
1830{
1831//  rtimer, "***TIMESNAP0 for SSstep(): on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1832
1833  int @DEBUG = attrib(basering, "DEBUG");
1834  int @SYZCHECK = attrib(basering, "SYZCHECK");
1835
1836  if( @DEBUG )
1837  {
1838    "SSstep::NextInducedRing";
1839    "basering: ", basering; attrib(basering);
1840  }
1841
1842/*
1843  // is initial weights are all zeroes!
1844  def L =  lead(M);
1845  intvec @V = deg(M[1..ncols(M)]);  @W;  @V;  @W = @V;  attrib(L, "isHomog", @W);
1846    Syzextra::SetInducedReferrence(L, @RANK, 0);
1847*/
1848
1849//  def L =  lead(MRES);
1850//  @W = @W, @V;
1851//  attrib(L, "isHomog", @W);
1852
1853
1854  // General setting:
1855//    Syzextra::SetInducedReferrence(MRES, 0, 0); // limit: 0!
1856  int @l = size(RES);
1857
1858  def M =  RES[@l];
1859
1860  def L = LRES[@l];
1861  def T = TRES[@l];
1862
1863
1864  //// TODO: wrong !!!!!
1865  int @RANK = ncols(MRES) - ncols(M); // nrows(M); // what if M is zero?!
1866
1867
1868
1869/*
1870  if( @RANK !=  nrows(M) )
1871  {
1872    type(MRES);
1873    @RANK;
1874    type(M);
1875    pause();
1876  }
1877*/
1878
1879  intvec @W = attrib(M, "isHomog"); intvec @V = attrib(M, "degrees"); @V = @W, @V;
1880
1881  if( @DEBUG )
1882  {
1883    "Sstep::NextInput: ";
1884    M;
1885    L;
1886    @V;
1887    @RANK;
1888//      Syzextra::DetailedPrint(MRES);
1889    attrib(MRES, "isHomog");
1890  }
1891
1892
1893  // TODO: N  = SYZ( M )!!!
1894  module N, LL, TT; (N, LL, TT) = SSComputeSyzygy(/*M, */L, T/*, @RANK*/);
1895
1896  // shift syz.comp by @RANK:
1897  module Z;
1898  Z = 0; Z[@RANK] = 0; Z = Z, transpose(LL);   LL = transpose(Z);
1899  Z = 0; Z[@RANK] = 0; Z = Z, transpose(TT);   TT = transpose(Z);
1900  Z = 0; Z[@RANK] = 0; Z = Z, transpose(N);     N = transpose(Z);
1901
1902
1903  if( @SYZCHECK )
1904  {
1905    if( size(N) > 0 )
1906    {
1907      // next syz. property
1908      if( size(module(transpose( transpose(N) * transpose(MRES) ))) > 0 )
1909      {
1910        "MRES", MRES;
1911
1912        "N: "; N; //   Syzextra::DetailedPrint(N, 2);
1913
1914        "LL:"; LL; //   Syzextra::DetailedPrint(LL, 1);
1915        "TT:"; TT; //   Syzextra::DetailedPrint(TT, 10);
1916
1917        "RANKS: ", @RANK;
1918
1919        "transpose( transpose(N) * transpose(MRES) ) != 0!!!";
1920        transpose( transpose(N) * transpose(MRES) );
1921
1922        "transpose(N) * transpose(MRES): ";
1923        transpose(N) * transpose(MRES);
1924        //   Syzextra::DetailedPrint(module(_), 2);
1925          Syzextra::m2_end(666);
1926      }
1927    }
1928  }
1929
1930  attrib(N, "isHomog", @V);
1931
1932  // TODO: correct the following:
1933  intvec @DEGS = deg(N[1..ncols(N)]); // no mod. comp. weights :(
1934
1935
1936  attrib(N, "degrees", @DEGS);
1937
1938   RES[@l + 1] = N; // list of all syzygy modules
1939  LRES[@l + 1] = LL; // list of all syzygy modules
1940  TRES[@l + 1] = TT; // list of all syzygy modules
1941
1942  MRES = MRES, N;
1943
1944  attrib(MRES, "isHomog", @V);
1945
1946//  L = L, lead(N);  attrib(basering, "InducionLeads", L);
1947
1948  if( @DEBUG )
1949  {
1950    "SSstep::NextSyzOutput: ";
1951    N;
1952//      Syzextra::DetailedPrint(N);
1953    attrib(N);
1954  }
1955
1956  int ss = attrib(basering, "SYZNUMBER");
1957  attrib(basering, "SYZNUMBER", ss + 1 );
1958
1959//  rtimer, "***TIMESNAP1 for SSstep(): on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1960}
1961
1962static proc SScontinue(int l)
1963"USAGE:  SScontinue(l)
1964RETURN:  nothing, instead it changes RES and MRES variables in the current ring
1965PURPOSE: computes further (at most l) syzygies
1966NOTE:    must be used within a ring returned by Sres or Ssyz. RES and MRES are
1967         explained in Sres
1968EXAMPLE: example Scontinue; shows an example
1969"
1970{
1971//  rtimer, "***TIMESNAP0 for SScontinue: on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1972
1973  /// TODO!
1974//  def data =   Syzextra::GetInducedData();
1975
1976  if( (!defined(RES)) || (!defined(MRES)) ) /* || (typeof(data) != "list") || (size(data) != 2) */
1977  {
1978    ERROR("Sorry, but basering does not seem to be returned by Sres or Ssyz");
1979  }
1980  for (;  (l != 0) && (size(RES[size(RES)]) > 0); l-- )
1981  {
1982    SSstep();
1983  }
1984
1985//  rtimer, "***TIMESNAP1 for SScontinue: on level: [",attrib(basering,"SYZNUMBER"),"] :: t: ", timer, ", r: ", rtimer;
1986
1987}
1988example
1989{ "EXAMPLE:"; echo = 2;
1990  ring r;
1991  module M = maxideal(1); M;
1992  def S = SSsyz(M); setring S; S;
1993  "Only the first syzygy: ";
1994  RES; MRES;
1995  "More syzygies: ";
1996  SScontinue(10);
1997  RES; MRES;
1998}
1999
2000static proc SSsyz(def M)
2001"USAGE:  SSsyz(M)
2002RETURN:  ring, containing a list of modules RES and a module MRES
2003PURPOSE: computes the first syzygy module of M (wrt some Schreyer ordering)?
2004NOTE:    The output is explained in Sres
2005EXAMPLE: example Ssyz; shows an example
2006"
2007{
2008  if( (typeof(M) != "module") && (typeof(M) != "ideal") )
2009  {
2010    ERROR("Sorry: need an ideal or a module for input");
2011  }
2012
2013  def SS = SSinit(M); setring SS;
2014
2015  SSstep(); // NOTE: what if M is zero?
2016
2017  return (SS);
2018}
2019example
2020{ "EXAMPLE:"; echo = 2;
2021  ring r;
2022
2023/*  ideal M = 0;
2024  def S = SSsyz(M); setring S; S;
2025  "Only the first syzygy: ";
2026  RES; LRES; TRES;
2027  MRES;
2028
2029  kill S; setring r; kill M;
2030*/
2031
2032  ideal M = maxideal(1); M;
2033
2034  def S = SSres(M, 0); setring S; S;
2035  MRES;
2036  print(_);
2037  RES;
2038
2039  kill S; setring r; kill M;
2040
2041  kill r;
2042
2043  ring R = 0, (w, x, y, z), dp;
2044  ideal M = w^2 - x*z,  w*x - y*z,  x^2 - w*y, x*y - z^2, y^2 - w*z;
2045
2046  def S = SSres(M, 0); setring S; S;
2047  "";
2048  LRES;
2049  "";
2050  TRES;
2051  "";
2052  MRES;
2053  print(_);
2054  RES;
2055}
2056
2057static proc SSres(def M, int l)
2058"USAGE:  SSres(I, l)
2059RETURN:  ring, containing a list of modules RES and a module MRES
2060PURPOSE: computes (at most l) syzygy modules of M wrt the classical Schreyer
2061         induced ordering with gen(i) > gen(j) if i > j, provided both gens
2062         are from the same syzygy level.???
2063NOTE:    RES contains the images of maps subsituting the beginning of the
2064         Schreyer free resolution of baseRing^r/M, while MRES is a sum of
2065         these images in a big free sum, containing all the syzygy modules.
2066         The syzygy modules are shifted so that gen(i) correspons to MRES[i].
2067         The leading zero module RES[0] indicates the fact that coker of the
2068         first map is zero. The number of zeroes inducates the rank of input.
2069NOTE:    If l == 0 then l is set to be nvars(basering) + 1
2070EXAMPLE: example SSres; shows an example
2071"
2072{
2073  if( (typeof(M) != "module") && (typeof(M) != "ideal") )
2074  {
2075    ERROR("Sorry: need an ideal or a module for input");
2076  }
2077/*
2078  "KERCHECK: ", attrib(SSinit, "KERCHECK");
2079  "SYZCHECK: ", attrib(SSinit, "SYZCHECK");
2080  "DEBUG: ", attrib(SSinit, "DEBUG");
2081  "HYBRIDNF: ", attrib(SSinit, "HYBRIDNF");
2082  "TAILREDSYZ: ", attrib(SSinit, "TAILREDSYZ");
2083  "LEAD2SYZ: ", attrib(SSinit, "LEAD2SYZ");
2084*/
2085
2086  def SS = SSinit(M); setring SS;
2087/*
2088  "KERCHECK: ", attrib(SS, "KERCHECK");
2089  "SYZCHECK: ", attrib(SS, "SYZCHECK");
2090  "DEBUG: ", attrib(SS, "DEBUG");
2091  "HYBRIDNF: ", attrib(SS, "HYBRIDNF");
2092  "TAILREDSYZ: ", attrib(SS, "TAILREDSYZ");
2093  "LEAD2SYZ: ", attrib(SS, "LEAD2SYZ");
2094  "";
2095  "IGNORETAILS: ", attrib(SS, "IGNORETAILS");
2096  "SYZNUMBER: ", attrib(SS, "SYZNUMBER");
2097*/
2098  if (l == 0)
2099  {
2100    l = nvars(basering) + 2; // not really an estimate...?!
2101  }
2102
2103  SSstep(); l = l - 1;
2104
2105  SScontinue(l);
2106/*
2107  "KERCHECK: ", attrib(SS, "KERCHECK");
2108  "SYZCHECK: ", attrib(SS, "SYZCHECK");
2109  "DEBUG: ", attrib(SS, "DEBUG");
2110  "HYBRIDNF: ", attrib(SS, "HYBRIDNF");
2111  "TAILREDSYZ: ", attrib(SS, "TAILREDSYZ");
2112  "LEAD2SYZ: ", attrib(SS, "LEAD2SYZ");
2113  "";
2114  "IGNORETAILS: ", attrib(SS, "IGNORETAILS");
2115  "SYZNUMBER: ", attrib(SS, "SYZNUMBER");
2116*/
2117  return (SS);
2118}
2119example
2120{ "EXAMPLE:"; echo = 2;
2121  ring r;
2122  module M = maxideal(1); M;
2123  def S = SSres(M, 0); setring S; S;
2124  RES;
2125  MRES;
2126}
2127
2128static proc SRES_betti2(SRES SR, def a)
2129{
2130  def R = SR.r; setring R;
2131  return ( betti(SR.rsltn, a) );
2132}
2133
2134static proc SRES_betti1(SRES SR)
2135{
2136  def R = SR.r; setring R;
2137  return ( betti(SR.rsltn) );
2138}
2139
2140static proc SRES_print(SRES SR)
2141{
2142  def R = SR.r; setring R;
2143  "Schreyer resolution: ";
2144  SR.rsltn; //  print ();
2145  "over the ring: "; R;
2146}
2147
2148static proc SRES_minres(SRES SR)
2149{
2150  def save = basering;
2151  SRES S;
2152  def R = SR.r; S.r = R;
2153  setring R;
2154  S.rsltn = minres(SR.rsltn); // in target ring :(
2155  return (S);
2156}
2157
2158
2159// cannot be automatically used via overloading :(
2160proc SRES_list(def SR)
2161"USAGE:  SRES_list(resolution)
2162RETURN:  list
2163PURPOSE: convert given resolution to a list
2164NOTE:    result is over basering
2165SEE ALSO: s_res, resolution
2166EXAMPLE: example s_res; shows an example
2167"
2168{
2169  if( typeof(SR) != "SRES" )
2170  {
2171    list @@@L = SR;
2172    return (@@@L);
2173  }
2174
2175  def save = basering;
2176  def R = SR.r;
2177
2178//    if( 0 )  // ( save == R ) // TODO: not implemented :(((
2179//    {      list L = SR.rsltn;      return (L);    }
2180
2181  setring R;
2182
2183  list @@@L = SR.rsltn;
2184  setring save;
2185  return (imap( R, @@@L ));
2186}
2187
2188static proc mod_init()
2189{
2190  int @DEBUG = 0; // !system("with", "ndebug"); //    "om_ndebug?: ", system("with", "om_ndebug");
2191
2192  if( @DEBUG )  {    listvar(Top);  }
2193
2194  if( !defined(SRES) )
2195  {
2196      load("syzextra.so");
2197
2198      if( @DEBUG ){        listvar(Syzextra);      }
2199
2200//      exportto(Top,   Syzextra::ClearContent); //      exportto(Top,   Syzextra::ClearDenominators);     exportto(Schreyer,   Syzextra::noop);
2201//      exportto(Schreyer,   Syzextra::leadrawexp); //      exportto(Schreyer,   Syzextra::ISUpdateComponents);
2202//      exportto(Schreyer,   Syzextra::GetAMData);//      exportto(Schreyer,   Syzextra::SetSyzComp);
2203//      exportto(Schreyer,   Syzextra::MakeSyzCompOrdering); //      exportto(Schreyer,   Syzextra::reduce_syz);//      exportto(Schreyer,   Syzextra::p_Content);
2204
2205//    exportto(Schreyer,   Syzextra::DetailedPrint);
2206//    exportto(Schreyer,   Syzextra::m2_end);
2207//    exportto(Schreyer,   Syzextra::leadmonomial);
2208//    exportto(Schreyer,   Syzextra::leadcomp);
2209//    exportto(Schreyer,   Syzextra::SetInducedReferrence);
2210//    exportto(Schreyer,   Syzextra::GetInducedData);
2211//    exportto(Schreyer,   Syzextra::MakeInducedSchreyerOrdering);
2212//    exportto(Schreyer,   Syzextra::idPrepare);
2213//    exportto(Schreyer,   Syzextra::ProfilerStart);   exportto(Schreyer,   Syzextra::ProfilerStop);
2214//    exportto(Schreyer,   Syzextra::NumberStatsInit); exportto(Schreyer,   Syzextra::NumberStatsPrint);
2215//    exportto(Schreyer,   Syzextra::Tail);
2216//    exportto(Schreyer,   Syzextra::ComputeLeadingSyzygyTerms);
2217//    exportto(Schreyer,   Syzextra::Compute2LeadingSyzygyTerms);
2218//    exportto(Schreyer,   Syzextra::Sort_c_ds);
2219//    exportto(Schreyer,   Syzextra::FindReducer);
2220//    exportto(Schreyer,   Syzextra::ReduceTerm);
2221//    exportto(Schreyer,   Syzextra::TraverseTail);
2222//    exportto(Schreyer,   Syzextra::SchreyerSyzygyNF);
2223//    exportto(Schreyer,   Syzextra::ComputeSyzygy);
2224//    exportto(Schreyer,   Syzextra::ComputeResolution);
2225
2226    // TODO: SSres - return SRESOLUTION?
2227    newstruct("SRES","ring r,resolution rsltn"); // http://www.singular.uni-kl.de/Manual/latest/sing_179.htm#SEC218
2228//      system("install","SRES","string",SRES_string, 1);
2229    system("install","SRES","print",SRES_print, 1);
2230    system("install","SRES","betti",SRES_betti1, 1); // http://www.singular.uni-kl.de/Manual/latest/sing_260.htm#SEC299
2231    system("install","SRES","betti",SRES_betti2, 2); // http://www.singular.uni-kl.de/Manual/latest/sing_260.htm#SEC299
2232    system("install","SRES","minres",SRES_minres, 1); // http://www.singular.uni-kl.de/Manual/latest/sing_344.htm#SEC383
2233    system("install","SRES","list", SRES_list, 1); // will never work :(((
2234
2235//    exportto(Top, s_res); //   Syzextra::GetInducedData);
2236
2237    if( @DEBUG )    {      listvar(Top);      listvar(Schreyer);    }
2238  }
2239}
2240
2241
2242static proc testallSexamples()
2243{
2244  example Ssyz;
2245  example Scontinue;
2246  example Sres;
2247}
2248
2249static proc testallSSexamples()
2250{
2251  example SSsyz;
2252  example SScontinue;
2253  example SSres;
2254}
2255example
2256{ "EXAMPLE:"; echo = 2;
2257  testallSexamples();
2258  testallSSexamples();
2259}
2260
2261static proc  StartResTesting(list #)
2262{
2263  int @treeout = attrib(SSinit, "TREEOUTPUT");
2264
2265  if( defined(@save_res_list) )
2266  { ERROR("Sorry: existing global variable @save_res_list - run StopAddResTesting before another Start!!!"); }
2267
2268  string @save_res_desc = string(#);
2269
2270  if( !@treeout )
2271  {
2272    ">>>>>>>>> {{{{{{{{{ STARTING TESTING ('" + @save_res_desc + "') :::::::::::: ";
2273  } else
2274  {
2275    "{ \"Example\": \"" + @save_res_desc + "\", \"computations\": [";
2276  }
2277
2278  list @save_res_list = list();
2279  export @save_res_list;
2280  export @save_res_desc;
2281}
2282
2283static proc  StopResTesting()
2284{
2285  int @treeout = attrib(SSinit, "TREEOUTPUT");
2286
2287  if( defined(@save_opts) || defined(@save_method) || defined(@save_desc) )
2288  { ERROR("Sorry: existing global variables - run StopAddResTest before another Start!!!"); }
2289
2290  if( !defined(@save_res_list) || !defined(@save_res_desc) )
2291  { ERROR("Sorry: no global variable - run StartResTesting beforehand!!!"); }
2292
2293  int i, j;
2294  int f = 0;
2295  def m, mm;
2296
2297  if( !@treeout )
2298  {
2299  for (i = size(@save_res_list); i > 0; i--)
2300  {
2301    "Total Time: ", @save_res_list[i][5], ", Res: ", @save_res_list[i][6], ", Minimal Betti: ", @save_res_list[i][5] - @save_res_list[i][6], ",        ", @save_res_list[i][1], "   :with:    ", @save_res_list[i][2];
2302  }
2303
2304  }
2305
2306  for (i = size(@save_res_list); i > 1; i--)
2307  {
2308    m = @save_res_list[i][4];
2309
2310    for (j = i-1; j > 0; j--)
2311    {
2312      mm = @save_res_list[j][4];
2313      if( (nrows(m) != nrows(mm)) || (ncols(m) != ncols(mm)) )
2314      {
2315        "ERROR: SIZE(Betti[j: ", j, "]) != SIZE(Betti[i: ", i, "]):";
2316        "j: ", j;
2317        print( @save_res_list[j][4], "betti");
2318        print(@save_res_list[j]);
2319
2320        "i: ", i;
2321        print( @save_res_list[i][4], "betti");
2322        print(@save_res_list[i]);
2323
2324        f = 1;
2325
2326      } else
2327      {
2328        if( m != mm )
2329        {
2330          "ERROR: Betti[j: ", j, "] != Betti[i: ", i, "]:";
2331          "j: ", j;
2332          print( @save_res_list[j][4], "betti");
2333          print(@save_res_list[j]);
2334
2335          "i: ", i;
2336          print( @save_res_list[i][4], "betti");
2337          print(@save_res_list[i]);
2338
2339          f = 1;
2340        };
2341      };
2342
2343    };
2344
2345  };
2346
2347  if( f )
2348  {
2349    print(@save_res_list);
2350    "<<<<<<<<< }}}}}}}}}  STOP TESTING (", @save_res_desc,  ") !!!!!!!!!!!! ";
2351
2352    "ERROR: There were some wrong betti numbers... ";
2353//      Syzextra::m2_end(666);
2354  } else
2355  {
2356    if( !@treeout )
2357    {
2358      "BETTI: "; print( @save_res_list[1][4], "betti");
2359    }
2360  }
2361
2362  kill @save_res_list;
2363
2364  if( !@treeout )
2365  {
2366    "<<<<<<<<< }}}}}}}}}  STOP TESTING (", @save_res_desc,  ") !!!!!!!!!!!! ";
2367  } else
2368  {
2369//    "{ \"Example\": \"" + @save_res_desc + "\", \"computations\": [";
2370    "] },";
2371  }
2372  kill @save_res_desc;
2373}
2374
2375static proc StartAddResTest(string method, string desc)
2376{
2377  int @treeout = attrib(SSinit, "TREEOUTPUT");
2378
2379  if( !defined(@save_res_list) )
2380  { ERROR("Sorry: no global variable - run StartResTesting beforehand!!!"); }
2381
2382  if( defined(@save_opts) || defined(@save_method) || defined(@save_desc) )
2383  { ERROR("Sorry: existing global variables - run StopAddResTest before another Start!!!"); }
2384
2385
2386  def @save_opts = option(get); export @save_opts;
2387  def @save_method = method; export @save_method;
2388  def @save_desc = desc; export @save_desc;
2389
2390  if( !@treeout )
2391  {
2392    "< START RES TEST{{{ ", @save_method, ", with:", @save_desc, " ... ";
2393  } else
2394  {
2395//    Print("{ \"RESOLUTION: HYBRIDNF:%d, TAILREDSYZ: %d, LEAD2SYZ: %d, IGNORETAILS: %d\": [\n",
2396//       attributes.__HYBRIDNF__, attributes.__TAILREDSYZ__, attributes.__LEAD2SYZ__, attributes.__IGNORETAILS__);
2397    " { \"RESOLUTION: " + @save_method + ", with: " + @save_desc + "\": [";
2398  }
2399}
2400
2401
2402static proc StopAddResTest(def RR, intmat S, int @t, int @m)
2403{
2404  int @treeout = attrib(SSinit, "TREEOUTPUT");
2405
2406  if( !(defined(@save_opts) && defined(@save_method) && defined(@save_desc)) )
2407  { ERROR("Sorry: no global variables - run StartAddResTest beforehand!!!"); }
2408
2409  list @l = list(@save_method, @save_desc, option(get), S, @t, @m);
2410
2411//  RR,
2412//  print(S, "betti");
2413
2414  if( !@treeout )
2415  {
2416    "> -STOP RES TEST}}} ", @save_method, ", with:", @save_desc, ", Timer:", @t; option();
2417  } else
2418  {
2419    " ] },";
2420  }
2421
2422
2423  option(set, @save_opts); kill @save_opts;
2424
2425  kill @save_method; kill @save_desc;
2426
2427  @save_res_list[1 + size(@save_res_list)] = @l;
2428}
2429
2430
2431static proc SCheck(def S)
2432{
2433  setring S; // for checking...
2434
2435  module M = MRES;
2436  if( ncols(M) < nrows(M) )
2437  {
2438    M[nrows(M)] = 0;
2439  } else
2440  {
2441    M = transpose(M);
2442    if( ncols(M) < nrows(M) )
2443    {
2444      M[nrows(M)] = 0;
2445    }
2446    M = transpose(M);
2447  }
2448
2449  if( nrows(M) != ncols(M) )
2450  {
2451    "ERROR: non-square M!!!";
2452      Syzextra::m2_end(666);
2453  }
2454
2455  if( size(module( M*M )) > 0 )
2456  {
2457    "ERROR: module( M*M ) != 0!!!";
2458    module( M*M );
2459
2460    "MRES': "; M; print(M);
2461
2462      Syzextra::m2_end(666);
2463  }
2464//  "MRES': "; M; print(M);
2465
2466  if( size(RES[1]) != 0 )
2467  {
2468    "ERROR: wrong starting zero module!!!";
2469      Syzextra::m2_end(666);
2470  }
2471
2472//  RES;
2473/*
2474  MRES;
2475  RES;
2476  "";
2477  LRES;
2478  "";
2479  TRES;
2480*/
2481}
2482
2483//// TODO: SSres(0) fails..!!!??
2484static proc TestSSres(def I)
2485{
2486  def save = basering;
2487  int @t,@m,r,rr,i;
2488  string name =
2489    "LEAD2SYZ:"  +string(attrib(SSinit,"LEAD2SYZ")) +
2490    ",TAILREDSYZ:"+string(attrib(SSinit,"TAILREDSYZ")) +
2491    ",HYBRIDNF:"  +string(attrib(SSinit,"HYBRIDNF"));
2492
2493  int @PROFILE = attrib(SSinit, "PROFILE");
2494  if(@PROFILE){ string @prof = "SSres_" + @save_res_desc + "_" + name + ".prof"; }
2495
2496  StartAddResTest(
2497   "SSres",
2498   "minres + betti(,1) + mods: {" + name + "}"
2499  );
2500
2501  option(redSB); option(redTail);
2502  if(@PROFILE){  Syzextra::ProfilerStart(@prof);}
2503  timer=0;rtimer=0;def R=SSres(I,0);@m=rtimer;
2504  if(@PROFILE){  Syzextra::ProfilerStop();}
2505  setring R;module M;list @l=list();@l[size(RES)-1]=list();r=nrows(RES[1]);for(i=2;i<=size(RES);i++){M=RES[i];rr=nrows(M);if((r>0)&&(size(M)>0)&&(r<rr)){M=transpose(M);M=M[(r+1)..ncols(M)];M=transpose(M);RES[i]=M;};r=rr;@l[i-1] = M;};resolution RR=@l;RR=minres(RR);def S=betti(RR,1);@t=rtimer;
2506//    Syzextra::DetailedPrint(RR,0);
2507  SCheck(R);
2508  StopAddResTest(RR, S, @t,@m);
2509  kill S, RR; setring save; kill R;
2510}
2511
2512proc s_res(def I, int l)
2513"USAGE:  s_res(ideal/module M, int len)
2514RETURN:  resolution object or SRES
2515PURPOSE: compute a Schreyer resolution of M of length at most len (see [BMSS])
2516NOTE:    If given len is zero then nvars(basering) + 1 is used instead.
2517@* This functions is not related to other helpers from this library.
2518@* One can switch on computation protocol and statistic (depending on the build) by setting the @code{prot} option.
2519@* Further recognized switches are the following attributes of @code{Schreyer::SSinit} procedure:
2520LEAD2SYZ, TAILREDSYZ, HYBRIDNF
2521DEBUG, ...
2522SEE ALSO: sres
2523EXAMPLE: example s_res; shows an example
2524"
2525{
2526  int @prot = (find(option(),"prot") != 0) && (defined(  Syzextra::NumberStatsInit)) && (defined(  Syzextra::NumberStatsPrint));
2527  def @save = basering;
2528
2529  int @RINGCHANGE = 0;
2530
2531  if( typeof( attrib(SSinit, "RINGCHANGE") ) == "int" )
2532  {
2533    @RINGCHANGE = attrib(SSinit, "RINGCHANGE");
2534  }
2535
2536  def R=SSinit(I);
2537  if( @RINGCHANGE ){ setring R; }
2538
2539  int @l = size(RES);
2540  if(@prot){   Syzextra::NumberStatsInit(); }
2541  def rsltn =   Syzextra::ComputeResolution(RES[@l], LRES[@l], TRES[@l], l);
2542  if(@prot){   Syzextra::NumberStatsPrint("Number statistic for s_res with   Syzextra::ComputeResolution"); }
2543
2544  if( !@RINGCHANGE )
2545  {
2546    return (rsltn); // ret
2547  }
2548
2549  SRES ret; ret.r = R; ret.rsltn = rsltn;
2550  return (ret);
2551}
2552example
2553{ "EXAMPLE:"; echo = 2;
2554  ring R;
2555  module M = maxideal(1); M;
2556  def  rs = s_res(M, 0);
2557  print(rs);
2558  print(betti(rs, 0)); // non-minimal betties
2559  print(SRES_list(rs));
2560  print(betti(rs, 1)); //minimal betties
2561  print(minres(rs));
2562}
2563
2564static proc s_res_bm(def I)
2565{
2566  int @prot = (find(option(),"prot") != 0) && (defined(  Syzextra::NumberStatsInit)) && (defined(  Syzextra::NumberStatsPrint));
2567  def @save = basering;
2568
2569  int @RINGCHANGE = 0;
2570
2571  if( typeof( attrib(SSinit, "RINGCHANGE") ) == "int" )
2572  {
2573    @RINGCHANGE = attrib(SSinit, "RINGCHANGE");
2574  }
2575  int t,tt,sum;
2576
2577t=rtimer;def R=SSinit(I);tt=rtimer;
2578
2579  "%% Setup(SSinit) TIME:", tt - t; // if(@prot){ } ?
2580  int sum = (tt-t);
2581
2582  if( @RINGCHANGE ){ setring R; }
2583
2584  int @l = size(RES);
2585  module N, L, T, LL, TT;
2586  L = LRES[@l];
2587  T = TRES[@l];
2588
2589
2590  int ss = attrib(basering, "SYZNUMBER");
2591
2592  while ( 1 )
2593  {
2594    if(@prot){   Syzextra::NumberStatsInit(); }
2595
2596//  SSstep():
2597t=rtimer;(N,LL,TT)=SSComputeSyzygy(L,T);tt=rtimer;
2598
2599    @l = @l + 1;
2600    if(@prot){   Syzextra::NumberStatsPrint("Number statistic for SSComputeSyzygy["+string(@l-2)+"]"); }
2601    "%% SSstep[",@l-2, "] TIME:", tt - t;  // if(@prot){ } ?
2602    sum = sum + (tt-t);
2603
2604    if( (size(LL) == 0) || (size(N) == 0) ) { break; }
2605    L = LL; T = TT; RES[@l] = N; // LRES[@l] = LL; TRES[@l] = TT;
2606
2607    ss = ss + 1; attrib(basering, "SYZNUMBER", ss );
2608  }
2609
2610  "%% Whole Resolution (with "+string(@l)+"syzygies) TIME:", sum;  // if(@prot){ } ?
2611  resolution rsltn = list(RES[2..size(RES)]);
2612
2613  if( !@RINGCHANGE )
2614  {
2615    return (rsltn); // ret
2616  }
2617
2618  SRES ret; ret.r = R; ret.rsltn = rsltn;
2619  return (ret);
2620}
2621
2622
2623static proc s_syz(def I)
2624{
2625  def R=SSinit(I); setring R;
2626  int @l = size(RES); //   def M =  RES[@l];
2627  module N, LL, TT; (N, LL, TT) = SSComputeSyzygy(LRES[@l], TRES[@l]);
2628  SSYZ ret; ret.r = R; ret.szg = N; // Schreyer::  Syzextra::ComputeResolution(RES[2], LRES[2], TRES[2], 0);
2629  return (ret);
2630}
2631
2632static proc TestSSSres(def I)
2633{
2634  def save = basering;
2635  int @t,@m,r,rr,i;
2636  string name =
2637    "LEAD2SYZ:"  +string(attrib(SSinit,"LEAD2SYZ")) +
2638    ",TAILREDSYZ:"+string(attrib(SSinit,"TAILREDSYZ")) +
2639    ",HYBRIDNF:"  +string(attrib(SSinit,"HYBRIDNF"));
2640
2641  int @PROFILE = attrib(SSinit, "PROFILE");
2642  if(@PROFILE){ string @prof = "SSSres_" + @save_res_desc + "_" + name + ".prof"; }
2643
2644  StartAddResTest(
2645   "SSSres",
2646   "minres + betti(,1) + mods: {" + name + "}"
2647  );
2648
2649  option(redSB); option(redTail);
2650  if(@PROFILE){  Syzextra::ProfilerStart(@prof);}
2651  timer=0;rtimer=0;def R=SSinit(I);setring R;def RR=  Syzextra::ComputeResolution(RES[2], LRES[2], TRES[2], 0);
2652@m=rtimer;
2653  if(@PROFILE){  Syzextra::ProfilerStop();}
2654RR=minres(RR); def S=betti(RR,1);@t=rtimer;
2655//    Syzextra::DetailedPrint(RR,0);  print(RR);  print(S, "betti");
2656  SCheck(R);
2657  StopAddResTest(RR, S, @t,@m);
2658  kill S, RR; setring save; kill R;
2659}
2660
2661
2662static proc TestSres(def I)
2663{
2664  def save = basering;
2665  int @t,r,rr,i,@m;
2666  StartAddResTest(
2667  "Sres",
2668  "minres + betti(,1)"
2669  );
2670  option(redSB); option(redTail);
2671  timer=0;rtimer=0;def R=Sres(I,0);@m=rtimer;setring R;module M;list @l=list();@l[size(RES)-1]=list();r=nrows(RES[1]);for(i=2;i<=size(RES);i++){M=RES[i];rr=nrows(M);if((r>0)&&(size(M)>0)&&(r<rr)){M=transpose(M);M=M[(r+1)..ncols(M)];M=transpose(M);RES[i]=M;};r=rr;@l[i-1] = M;};resolution RR=@l;RR=minres(RR);def S=betti(RR,1);@t=rtimer;
2672  SCheck(R);
2673  StopAddResTest(RR, S, @t,@m);
2674  kill S, RR; setring save; kill R;
2675}
2676
2677
2678static proc Testsres(def M)
2679{
2680  int @t,@m;
2681  StartAddResTest("sres", "no minres + betti(,1)");
2682  option(redSB);option(redTail);
2683  timer=0;rtimer=0;def RR=sres(groebner(M),0);@m=rtimer;def S=betti(RR,1);@t=rtimer;
2684  StopAddResTest(RR, S, @t,@m); kill S, RR;
2685}
2686
2687static proc Testlres(def M)
2688{
2689  int @t,@m;
2690  StartAddResTest("lres", "no minres + betti(,1)");
2691  option(redSB);option(redTail);
2692  timer=0;rtimer=0;def RR=lres(M,0);@m=rtimer;def S=betti(RR,1);@t=rtimer;
2693  StopAddResTest(RR, S, @t,@m); kill S, RR;
2694
2695  StartAddResTest("lres", "minres + betti()");
2696  option(redSB);option(redTail);
2697  timer=0;rtimer=0;def RR=lres(M,0);@m=rtimer;def S=betti(minres(RR));@t=rtimer;
2698  StopAddResTest(RR, S, @t,@m);
2699  kill S, RR;
2700}
2701
2702
2703static proc Testnres(def M)
2704{
2705  int @t,@m;
2706  StartAddResTest("nres", "no minres + betti(,1)");
2707
2708  option(redSB); option(redTail);
2709  timer=0;rtimer=0;def RR=nres(M,0);@m=rtimer;def S=betti(RR,1);@t=rtimer;
2710
2711  StopAddResTest(RR, S, @t,@m); kill S, RR;
2712}
2713
2714static proc TestSSresAttribs(def M, list #)
2715{
2716  M = groebner(M);
2717
2718  StartResTesting(#);
2719
2720  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSSres(M);
2721  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 1); TestSSSres(M);
2722
2723 // WRONG???! LEAD2SYZ?
2724//  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSSres(M);
2725//  attrib(SSinit, "LEAD2SYZ", 1); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 1); TestSSSres(M);
2726
2727  int @treeout = attrib(SSinit, "TREEOUTPUT");
2728  if( !@treeout )
2729  {
2730   Testlres(M); Testnres(M);
2731//   Testsres(M); //   TestSres(M); // too long for the last medium test :(
2732  }
2733
2734  StopResTesting();
2735}
2736
2737static proc TestSSresAttribs2tr(def M, list #)
2738{
2739  M = groebner(M);
2740
2741  StartResTesting(#);
2742
2743  attrib(SSinit, "LEAD2SYZ", 0); attrib(SSinit, "TAILREDSYZ", 1); attrib(SSinit, "HYBRIDNF", 0); TestSSSres(M);
2744  Testlres(M);
2745
2746  StopResTesting();
2747}
2748
2749static proc testSimple(list #)
2750{
2751  def DEBUG = 0;
2752  if(size(#) > 0) { DEBUG = #[1]; }
2753
2754  def TREE = 0;
2755  if(size(#) > 1) { TREE = #[2]; }
2756
2757  system("--min-time", "0.01");
2758  system("--ticks-per-sec", 100);
2759
2760//  option(prot);
2761
2762  // TODO: only for now!!
2763  attrib(SSinit, "DEBUG", (DEBUG > 0) );
2764  attrib(SSinit, "SYZCHECK", (DEBUG > 0) );
2765  attrib(SSinit, "KERCHECK", (DEBUG > 0) );
2766
2767  attrib(SSinit, "TREEOUTPUT", TREE);
2768  attrib(SSinit, "PROFILE", 0);
2769  attrib(SSinit, "IGNORETAILS", 0); // not only frame
2770 
2771  attrib(SSinit, "NOCACHING", 0);
2772
2773  int @treeout = attrib(SSinit, "TREEOUTPUT");
2774
2775  if( @treeout)
2776  {
2777    monitor("SimpleTests.json", "o");
2778    "{ \"SimpleTests\": [";
2779  } else { option(prot); }
2780
2781
2782  ring r; ideal M = maxideal(1);
2783  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
2784  kill r;
2785
2786  ring r = 0, (a, b, c, d), lp; ideal M = maxideal(1);
2787  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
2788  kill r;
2789
2790  ring R = 0, (w, x, y, z), dp;
2791  ideal M = w^2 - x*z,  w*x - y*z,  x^2 - w*y, x*y - z^2, y^2 - w*z;
2792  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
2793  kill R;
2794
2795
2796  ring r = 0, (a, b, c, d, e, f), dp; ideal M = maxideal(1);
2797  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
2798  kill r;
2799
2800
2801  ring r = 0, (x, y), lp; ideal M = x2, xy, y2;  // Schreyer conterexample???
2802  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
2803  kill r;
2804
2805  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?
2806  TestSSresAttribs(M, "\\\\GENERATED{" + string(M) + "} in " + string(basering));
2807  kill r;
2808
2809
2810  ring AGR = (101), (a, b, c, d), dp;
2811  // simple: AGR@101n3d002s004%1:
2812  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;
2813  TestSSresAttribs(M, "simple: AGR@101n3d002s004%1");
2814
2815  // medium: AGR@101n3d004s009%1;
2816  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;
2817  TestSSresAttribs(M, "medium: AGR@101n3d004s009%1");
2818
2819  kill AGR;
2820
2821
2822  string Name = "bordiga"; int @p=31991; ring R = (@p),(x,y,z,u,v), dp;
2823  ideal I = -x2y+26/17xy2+70/17y3+96/121x2z+63/82xyz+115/11y2z-8114xz2-40/79yz2+16/125z3+3023x2u-123/70xyu+3395y2u-81/119xzu-23/66yzu+3626z2u+18/53xu2+111/58yu2-34/39zu2+53/40u3-94/17x2v-10/19xyv+81/88y2v-91/33xzv-9967yzv-103/4z2v-26/109xuv+69/97yuv+92/17zuv-19/96u2v+10/21xv2+6147yv2+32/113zv2-79/82uv2-77/51v3,4347x2y-9017xy2+11327y3+18/79x2z-93/43xyz-35/47y2z+14704xz2+10727yz2-1764z3-612x2u+20/107xyu-103/89y2u-39/2xzu+2345yzu+10251z2u-9984xu2-10299yu2+113/118zu2+37/91u3+2/31x2v+9552xyv-47/100y2v-3242xzv+113/27yzv-11271z2v-13/79xuv+15917yuv+5/114zuv+103/119u2v-21/55xv2-59/19yv2+101/68zv2-7817uv2-112/29v3,7228x2y-111/113xy2+5913y3+6/43x2z-11251xyz+27/121y2z+97/96xz2-7398yz2-97/114z3+38/15x2u+5005xyu-41/126y2u-61/116xzu+89/9yzu-4087z2u+26/15xu2-92/103yu2+21/68zu2-4027u3+97/91x2v+5150xyv-4/47y2v-2310xzv+7307yzv-77/86z2v+30/83xuv+413yuv-50zuv-103/106u2v+105/73xv2-109/98yv2+59/63zv2+715uv2+963v3,x3+3487x2y-9744xy2-13276y3-15213x2z-118/51xyz+101/104y2z+2754xz2+9111yz2-17/94z3+11136x2u-43/82xyu-9/41y2u-7306xzu-6839yzu+5692z2u-14682xu2+37/80yu2-85/97zu2-6186u3+34/15x2v+84/109xyv+5086y2v+27/112xzv-3/40yzv+19/120z2v+11222xuv+38/55yuv-24/83zuv+15814u2v-111/61xv2+49/44yv2+125/81zv2+1933uv2-19/71v3;
2824  TestSSresAttribs(I, Name);
2825  kill @p, Name, R; 
2826
2827  string Name = "rat.d8.g6"; int @p=31991; ring R = (@p),(x,y,z,u,v), dp;
2828  ideal I = -19/125x2y2-87/119xy3-97/21y4+36/53x2yz+2069xy2z-59/50y3z-65/33x2z2-14322xyz2+79/60y2z2-9035xz3-14890yz3+87/47z4-23/48x2yu+45/44xy2u+1972y3u+79/118x2zu-5173xyzu+115/121y2zu+1239xz2u-115/17yz2u-15900z3u-78/95x2u2+67/101xyu2-12757y2u2+12752xzu2+68/21yzu2+103/90z2u2-12917xu3+97/92yu3-24/49zu3-13/79u4-51/61x2yv-3103xy2v+77/117y3v+73/115x2zv-79/33xyzv+123/110y2zv+11969xz2v-31/95yz2v-123/95z3v-105/124x2uv+12624xyuv+2/63y2uv+6579xzuv+13/62yzuv+4388z2uv-12747xu2v-26/105yu2v-78/61zu2v-125/53u3v-5/71xyv2+62/77y2v2+21/44xzv2-9806yzv2+3/91z2v2+361xuv2+568yuv2+2926zuv2+53/38u2v2-14523yv3+2082zv3+113/115uv3,108/73x2y2+4028xy3+38/43y4-1944x2yz+39/80xy2z+8/109y3z+52/27x2z2+103/45xyz2+5834y2z2+63/101xz3+107/80yz3+1178z4-1/6x2yu+78/25xy2u-21/43y3u+50/71x2zu-14693xyzu+15074y2zu+9/103xz2u-7396yz2u-14493z3u+93/25x2u2+61/4xyu2-11306y2u2-79/81xzu2+59/82yzu2-5/106z2u2+89/71xu3-34/11yu3+15/103zu3-115/52u4-54/65x2yv+67/16xy2v-7/68y3v-10/13x2zv+32/85xyzv+1/91y2zv+107/118xz2v+7594yz2v-98/103z3v+9919x2uv-965xyuv+53/34y2uv+119/11xzuv-3400yzuv-8329z2uv+75/98xu2v-24yu2v+55/87zu2v-82/71u3v-73/115x2v2+85/19xyv2-213y2v2-7704xzv2-15347yzv2+14960z2v2+15065xuv2-125/17yuv2+32/83zuv2-14/73u2v2-21/44xv3+79/2yv3-61/32zv3+46/119uv3-2082v4,9/20x2y2+113/71xy3-88/65y4+9983x2yz-6722xy2z+87/68y3z+1893x2z2+65/32xyz2+51/55y2z2-102/53xz3+58/5yz3-7187z4-96/7x2yu-14/87xy2u-3532y3u+95/54x2zu+19/65xyzu-6728y2zu+31/121xz2u+73/106yz2u-91/5z3u-12928x2u2+707xyu2-55/48y2u2-96/25xzu2+15869yzu2-20/107z2u2-10030xu3-13786yu3-122/9zu3+19/59u4-7/52x2yv+101/74xy2v+83/6y3v-91/55x2zv-5266xyzv+85/61y2zv+126/95xz2v+56/51yz2v+13073z3v-50/21x2uv-13553xyuv-116/53y2uv+68/71xzuv-111/98yzuv-11037z2uv+68/121xu2v-124/53yu2v+54/55zu2v+5862u3v+12318x2v2-119/29xyv2+101/17y2v2-51/40xzv2-82/33yzv2-30/41z2v2-29/52xuv2+7817yuv2+8121zuv2-28/99u2v2+1125xv3-73/55yv3-14141zv3+8742uv3-1203v4,x2y2+11357xy3+295y4+144x2yz-31/54xy2z+89/119y3z+1/46x2z2+29/26xyz2+1384y2z2+1461xz3+113/91yz3+9494z4-7/32x2yu+12850xy2u-3626y3u-33/106x2zu-7/60xyzu-5935y2zu-8597xz2u+5527yz2u+1708z3u+6182x2u2-15780xyu2+4669y2u2-38/69xzu2+8412yzu2+9265z2u2-5679xu3-67/18yu3-34/67zu3-7178u4+113/56x2yv-3669xy2v+17/113y3v-87/35x2zv-4871xyzv-111/11y2zv-1131xz2v-72/13yz2v+838z3v-115/4x2uv+3395xyuv-43/68y2uv-82/13xzuv+7042yzuv-88/119z2uv+100/19xu2v+24/11yu2v+89/3zu2v+7395u3v-119/109x2v2+1/104xyv2+18/25y2v2+700xzv2-59/9yzv2-92/87z2v2+2486xuv2-67/103yuv2+1469zuv2-101/91u2v2-79/33xv3+10838yv3+81/4zv3-11843uv3+7204v4,19/125x3-15698x2y-22/117xy2-95/107y3+2027x2z-7750xyz+85/104y2z-15326xz2+31/101yz2+67/81z3-7879x2u-112/115xyu+124/81y2u+99/61xzu-7458yzu+40/33z2u-1502xu2+6591yu2-7/73zu2-42/95u3+93/83x2v-15/112xyv-84/95y2v+35/36xzv+5/24yzv-12768z2v+13232xuv-76/103yuv-79/52zuv-7217u2v+75/92xv2-49/64yv2+17/14zv2-6109uv2+1695v3;
2829  TestSSresAttribs(I, Name);
2830  kill R, Name, @p;
2831
2832
2833  if( @treeout)
2834  {
2835    "] }";
2836    monitor("");
2837  }
2838
2839}
2840
2841static proc testAGR(list #)
2842{
2843  def DEBUG = 0;
2844  if(size(#) > 0) { DEBUG = #[1]; }
2845
2846  system("--min-time", "0.01");
2847  system("--ticks-per-sec", 100);
2848
2849  attrib(SSinit, "DEBUG", 0);
2850  attrib(SSinit, "SYZCHECK", (DEBUG > 0));
2851  attrib(SSinit, "KERCHECK", 0);
2852  attrib(SSinit, "TREEOUTPUT", 0);
2853  attrib(SSinit, "PROFILE", 0);
2854  attrib(SSinit, "IGNORETAILS", 0); // not only frame
2855
2856  option(prot);
2857
2858  ring AGR = (101), (a, b, c, d), dp; AGR;
2859  // lengthy: AGR@101n3d008s058%3, kernel only!
2860  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;
2861  TestSSresAttribs2tr(M, "AGR@101n3d008s058%3");
2862
2863  // AGR@101n3d010s010%3, a bit slower...
2864  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;
2865  TestSSresAttribs2tr(M, "AGR@101n3d010s010%3");
2866  kill AGR;
2867
2868  ring AGR = (101), (a,b,c,d,e,f,g,h), dp; AGR;
2869  // AGR@101n7d005s010%2, medium: <= 2
2870  ideal M =
2871f*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,
2872b^5+17*h^5,a^5+17*h^5,h^6;
2873  TestSSresAttribs2tr(M, "AGR@101n7d005s010%2");
2874  kill AGR;
2875
2876// from Andreas...tooo long!?
2877
2878  ring AGR = (101), (a,b,c,d,e), dp; AGR;
2879
2880  // AGR101n4d007s021%4
2881  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,
2882a*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,
2883a^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,
2884a^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,
2885b^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,
2886a*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,
2887a^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,
2888a^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,
2889a^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,
2890c^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,
2891b*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,
2892a*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,
2893b^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,
2894a*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,
2895a^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,
2896b^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,
2897a*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,
2898a^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,
2899a^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,
2900b^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,
2901a*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,
2902a^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,
2903a^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,
2904a^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,
2905b^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,
2906a*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,
2907a^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,
2908a^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,
2909a^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,
2910a^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,
2911e^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,
2912b*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,
2913a*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,
2914c^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,
2915a*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,
2916c^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,
2917c^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,
2918b^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,
2919b^2*c^2*e^2, a*b*c^2*e^2;
2920  TestSSresAttribs2tr(M, "AGR101n4d007s021%4");
2921/*
2922options:  1 1 0 :  Time:  5/9/10 (35 without LCM)
2923options:  1 1 1 :  Time:  6/8/25
2924lres  Time:  5
2925nres  Time:  5
2926sres  Time:  693
2927*/
2928
2929  kill M;
2930
2931
2932
2933  // AGR101n4d008s020%1, too big?
2934  ideal M =
2935c^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,
2936b*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,
2937a*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,
2938b^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,
2939a*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,
2940a^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,
2941b^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,
2942a*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,
2943a^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,
2944a^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,
2945b^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,
2946a*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,
2947a^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,
2948a^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,
2949a^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,
2950b^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,
2951a*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,
2952a^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,
2953a^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,
2954a^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,
2955a^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,
2956c^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,
2957b*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,
2958a*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,
2959b^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,
2960a*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,
2961a^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,
2962b^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,
2963a*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,
2964a^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,
2965a^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,
2966b^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,
2967a*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,
2968a^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,
2969a^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,
2970a^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,
2971b^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,
2972a*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,
2973a^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,
2974a^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,
2975a^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,
2976a^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,
2977b^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,
2978a*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,
2979a^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,
2980a^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,
2981a^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,
2982a^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,
2983a^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,
2984e^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,
2985b*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,
2986a*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,
2987c^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,
2988a*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,
2989c^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,
2990c^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,
2991b^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,
2992b^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,
2993a^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,
2994c*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,
2995b^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,
2996a*c^2*d^2*e^2, b^2*c*d^2*e^2, a*b*c*d^2*e^2;
2997//  M;
2998  TestSSresAttribs2tr(M, "AGR101n4d008s020%1_big");
2999/*
3000options:  1 1 0 :  Time:  29/32/73/92 (316 without LCM)
3001options:  1 1 1 :  Time:  32/34/43/202
3002lres  Time:  24
3003nres  Time:  19
3004sres  Time:  71
3005*/
3006  kill M;
3007
3008  kill AGR;
3009
3010  ring AGR = (101), (a,b,c,d,e,f), dp; AGR;
3011
3012  // AGR@101n5d005s016%1, new, medium difficulty?
3013  ideal M =
3014b*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;
3015  TestSSresAttribs(M, "AGR@101n5d005s016%1");
3016  kill M;
3017}
3018
3019static proc testAGRhard(list #)
3020{
3021  def DEBUG = 0;
3022  if(size(#) > 0) { DEBUG = #[1]; }
3023
3024  system("--min-time", "0.01");
3025  system("--ticks-per-sec", 100);
3026
3027  attrib(SSinit, "DEBUG", 0);
3028  attrib(SSinit, "SYZCHECK", (DEBUG > 0));
3029  attrib(SSinit, "KERCHECK", 0);
3030  attrib(SSinit, "TREEOUTPUT", 0);
3031  attrib(SSinit, "PROFILE", 0);
3032
3033  option(prot);
3034  // AGR@101n5d006s016%1, new, hard
3035  ring AGR = (101), (a,b,c,d,e,f), dp; AGR;
3036  ideal M =
3037b*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  TestSSresAttribs2tr(M, "AGR@101n5d006s016%1_hard");
3039 kill M;
3040}
Note: See TracBrowser for help on using the repository browser.