Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mathicgb F4 algorithm sometimes killed or gives wrong results on s390x and armhf #2162

Open
d-torrance opened this issue Jun 27, 2021 · 27 comments
Assignees
Labels
build issue platform specific issues involving compiling M2, generating examples, or running tests

Comments

@d-torrance
Copy link
Member

I got the following on PPA builds of the development branch in every Ubuntu release (18.04, 20.04, 20.10, 21.04, and 21.10) in s390x:

 -- capturing example results for "randomKRationalPoint"                    Killed
make[3]: *** [Makefile:94: /<<BUILDDIR>>/macaulay2-1.18.0.1+git202106261928/M2/usr-dist/s390x-Linux-Ubuntu-21.04/lib/s390x-linux-gnu/Macaulay2/Macaulay2Doc/.installed] Error 137

This example has never been a problem before. Does it use any memtailor/mathic/mathicgb code? The only major thing I think that has changed since the last set of builds is #2160.

@mikestillman mikestillman self-assigned this Jun 27, 2021
@mikestillman
Copy link
Member

@d-torrance Actually, that code calls decompose and saturate, so it might use mathicgb code. I'll take a look.

@mikestillman
Copy link
Member

@d-torrance We thought that that crash was not related, so probably we merged #2160 prematurely... Still, I'm a bit surprised that it is a problem.

@d-torrance
Copy link
Member Author

It definitely seems specific to s390x -- all the builds on the other architectures are doing fine so far.

@d-torrance
Copy link
Member Author

Possibly the same issue -- the example result for integralClosure(Ideal,RingElement,ZZ) is also getting killed on s390x (Ubuntu 20.04, 20.10, and 21.04).

 -- making example results for "integralClosure(Ideal,RingElement,ZZ)"      
 ulimit -c unlimited; ulimit -t 700; ulimit -m 850000; ulimit -s 8192; ulimit -n 512;  cd /tmp/M2-20983-0/19-rundir/; GC_MAXIMUM_HEAP_SIZE=400M "/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106261928/M2/usr-dist/s390x-Linux-Ubuntu-21.04/bin/M2-binary" -q --int --no-randomize --no-readline --silent --stop --print-width 77 -e 'needsPackage("IntegralClosure",Reload=>true,FileName=>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106261928/M2/Macaulay2/packages/IntegralClosure.m2")' <"/tmp/M2-20983-0/0_integral__Closure_lp__Ideal_cm__Ring__Element_cm__Z__Z_rp.m2" >>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106261928/M2/usr-dist/common/share/doc/Macaulay2/IntegralClosure/example-output/_integral__Closure_lp__Ideal_cm__Ring__Element_cm__Z__Z_rp.errors" 2>&1
/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106261928/M2/usr-dist/common/share/doc/Macaulay2/IntegralClosure/example-output/_integral__Closure_lp__Ideal_cm__Ring__Element_cm__Z__Z_rp.errors:0:1: (output file) error: Macaulay2 killed by signal 9
/tmp/M2-20983-0/0_integral__Closure_lp__Ideal_cm__Ring__Element_cm__Z__Z_rp.m2:0:1: (input file)
M2: *** Error 9
 -- 37.289 seconds elapsed
 -- storing example results in ../../../usr-dist/common/share/doc/Macaulay2/IntegralClosure/example-output/_integral__Closure_lp__Ideal_cm__Ring__Element_cm__Z__Z_rp.out
 -- warning: missing file /<<BUILDDIR>>/macaulay2-1.18.0.1+git202106261928/M2/usr-dist/common/share/doc/Macaulay2/IntegralClosure/example-output/_integral__Closure_lp__Ideal_cm__Ring__Element_cm__Z__Z_rp.out
 -- making example results for "icPIdeal"                                    -- 0.765702 seconds elapsed
 -- storing example results in ../../../usr-dist/common/share/doc/Macaulay2/IntegralClosure/example-output/_ic__P__Ideal.out
../../m2/debugging.m2:23:6:(1):[9]: error: installPackage: 1 error(s) occurred running examples for package IntegralClosure:

_integral__Closure_lp__Ideal_cm__Ring__Element_cm__Z__Z_rp.errors
*****************************************************************

i3 : J = ideal jacobian ideal F

                2      2    2        2   2 2     2
o3 = ideal (2a*b c + 3a , 2a b*c + 3b , a b  + 3c )

o3 : Ideal of S

i4 : time integralClosure J
Killed

@d-torrance
Copy link
Member Author

One possible explanation: s390x is big-endian, so Macaulay2/mathicgb#3 may be an issue. The Debian mathicgb package got around this using the proposed fix from Macaulay2/mathicgb#9. I'll try applying that to the e directory and see if it works.

@d-torrance
Copy link
Member Author

d-torrance commented Jun 29, 2021

Using the proposed patch, in its current state, from Macaulay2/mathicgb#9 did not fix this issue. However, there was an earlier version of the patch (Macaulay2/mathicgb@d8ae074) that's actually what I've been using for the Debian mathicgb package. I've applied that, and we'll see how it goes for tomorrow's builds.

@d-torrance
Copy link
Member Author

The earlier patch was partially effective. It worked for the previous problem examples (randomKRationalPoint and integralClosure(Ideal,RingElement,ZZ)), but now we're failing on the example for char(SparseResultant):

 -- making example results for "char(SparseResultant)"                      
 ulimit -c unlimited; ulimit -t 700; ulimit -m 850000; ulimit -s 8192; ulimit -n 512;  cd /tmp/M2-5731-0/26-rundir/; GC_MAXIMUM_HEAP_SIZE=400M "/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106291640/M2/usr-dist/s390x-Linux-Ubuntu-20.10/bin/M2-binary" -q --int --no-randomize --no-readline --silent --stop --print-width 77 -e 'needsPackage("SparseResultants",Reload=>true,FileName=>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106291640/M2/Macaulay2/packages/SparseResultants.m2")' <"/tmp/M2-5731-0/0_char_lp__Sparse__Resultant_rp.m2" >>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106291640/M2/usr-dist/common/share/doc/Macaulay2/SparseResultants/example-output/_char_lp__Sparse__Resultant_rp.errors" 2>&1
/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106291640/M2/usr-dist/common/share/doc/Macaulay2/SparseResultants/example-output/_char_lp__Sparse__Resultant_rp.errors:0:1: (output file) error: Macaulay2 killed by signal 6
/tmp/M2-5731-0/0_char_lp__Sparse__Resultant_rp.m2:0:1: (input file)
M2: *** Error 6
 -- 187.206 seconds elapsed
 -- storing example results in ../../../usr-dist/common/share/doc/Macaulay2/SparseResultants/example-output/_char_lp__Sparse__Resultant_rp.out
 -- warning: missing file /<<BUILDDIR>>/macaulay2-1.18.0.1+git202106291640/M2/usr-dist/common/share/doc/Macaulay2/SparseResultants/example-output/_char_lp__Sparse__Resultant_rp.out

...

../../m2/debugging.m2:23:6:(1):[9]: error: installPackage: 1 error(s) occurred running examples for package SparseResultants:

_char_lp__Sparse__Resultant_rp.errors
*************************************
-- -*- M2-comint -*- hash: 829653806

i1 : R = denseResultant(2,2,1,CoefficientRing=>ZZ/331);
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

../../m2/installPackage.m2:724:14:(1):[8]: --back trace--

The above was on s390x in Ubuntu 20.10 and 21.10. In 21.04, it was just killed:

_char_lp__Sparse__Resultant_rp.errors
*************************************
-- -*- M2-comint -*- hash: 829653806

i1 : R = denseResultant(2,2,1,CoefficientRing=>ZZ/331);
Killed

@d-torrance
Copy link
Member Author

Interestingly, the older Ubuntu releases (18.04 and 20.04) didn't have a problem with the char(SparseResultant) example and the s390x builds finished just fine.

@d-torrance
Copy link
Member Author

The newer Ubuntu s390x builds (20.10, 21.04, and 21.10) also failed making example results for image(MultirationalMap) from MultiprojectiveVarieties:

 -- making example results for "image(MultirationalMap)"                    
 ulimit -c unlimited; ulimit -t 700; ulimit -m 850000; ulimit -s 8192; ulimit -n 512;  cd /tmp/M2-11772-0/32-rundir/; GC_MAXIMUM_HEAP_SIZE=400M "/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106301052/M2/usr-dist/s390x-Linux-Ubuntu-20.10/bin/M2-binary" -q --int --no-randomize --no-readline --silent --stop --print-width 77 -e 'needsPackage("MultiprojectiveVarieties",Reload=>true,FileName=>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106301052/M2/Macaulay2/packages/MultiprojectiveVarieties.m2")' <"/tmp/M2-11772-0/0_image_lp__Multirational__Map_rp.m2" >>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106301052/M2/usr-dist/common/share/doc/Macaulay2/MultiprojectiveVarieties/example-output/_image_lp__Multirational__Map_rp.errors" 2>&1
/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106301052/M2/usr-dist/common/share/doc/Macaulay2/MultiprojectiveVarieties/example-output/_image_lp__Multirational__Map_rp.errors:0:1: (output file) error: Macaulay2 killed by signal 9
/tmp/M2-11772-0/0_image_lp__Multirational__Map_rp.m2:0:1: (input file)
M2: *** Error 9
 -- 698.955 seconds elapsed

...

../../m2/debugging.m2:23:6:(1):[9]: error: installPackage: 1 error(s) occurred running examples for package MultiprojectiveVarieties:

_image_lp__Multirational__Map_rp.errors
***************************************
o5 : ProjectiveVariety, 4-dimensional subvariety of PP^7 x PP^4

i6 : dim Z, degree Z, degrees Z

o6 = (4, 151, {({1, 1}, 4), ({2, 0}, 5), ({1, 2}, 3), ({2, 1}, 13)})

o6 : Sequence

i7 : time Z' = projectiveVariety (map segre target Phi) image(segre Phi,"F4");
Killed

../../m2/installPackage.m2:724:14:(1):[8]: --back trace--

@d-torrance
Copy link
Member Author

Now the s390x builds are failing at a CharacteristicClasses test (e.g., Ubuntu 20.10):

 -- running   check(3, "CharacteristicClasses")                             
 ulimit -c unlimited; ulimit -t 700; ulimit -m 850000; ulimit -s 8192; ulimit -n 512;  cd /tmp/M2-17073-0/5-rundir/; GC_MAXIMUM_HEAP_SIZE=400M "/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106301052/M2/usr-dist/s390x-Linux-Ubuntu-20.10/bin/M2-binary" -q --int --no-randomize --no-readline --silent --stop --print-width 77 -e 'needsPackage("CharacteristicClasses",Reload=>true,FileName=>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202106301052/M2/Macaulay2/packages/CharacteristicClasses.m2")' <"/tmp/M2-17073-0/4.m2" >>"/tmp/M2-17073-0/4.tmp" 2>&1
/tmp/M2-17073-0/4.tmp:0:1: (output file) error: Macaulay2 exited with status code 1
/tmp/M2-17073-0/4.m2:0:1: (input file)
M2: *** Error 1
 -- 1.04846 seconds elapsed
CharacteristicClasses.m2:2522:1-2544:1: error:
 -- i7 :     m#{1}=csmH#{1};
 -- 
 -- i8 :     m#{0,1}=csmH#{0,1};
 -- 
 -- i9 :     V=ClassInChowRing(A,I_0);
 -- 
 -- i10 :     seg=Segre(A,ideal(I_0));
 -- 
 -- i11 :     assert(csmD==csmH#"CSM");
 -- stdio:18:5:(3): error: assertion failed
 -- 
../m2/debugging.m2:23:6:(1):[9]: error: test(s) #3 of package CharacteristicClasses failed.

I'll try patching that test to use assert Equation(...) for tomorrow's build to see if that helps with figuring out what's going on.

@d-torrance
Copy link
Member Author

d-torrance commented Jul 2, 2021

The Ubuntu 21.10 s390x build got hung up a bit earlier:

 -- capturing example results for "MinimalGenerators"                       
E: Build killed with signal TERM after 150 minutes of inactivity

@d-torrance
Copy link
Member Author

d-torrance commented Jul 3, 2021

Here's that failing CharacteristicClasses test using assert Equation(...):

M2: *** Error 1
 -- 1.0264 seconds elapsed
CharacteristicClasses.m2:2522:1-2544:1: error:
 -- i7 :     m#{1}=csmH#{1};
 -- 
 -- i8 :     m#{0,1}=csmH#{0,1};
 -- 
 -- i9 :     V=ClassInChowRing(A,I_0);
 -- 
 -- i10 :     seg=Segre(A,ideal(I_0));
 -- 
 -- i11 :     assert Equation(csmD, csmH#"CSM");
 -- stdio:18:5:(3): error: assertion failed:
 --        2 2     2         2    2             2        2 2     2         2    2             2
 -- (- 183h h  + 4h h  + 4h h  + h  + 3h h  + 2h ) == (7h h  + 4h h  + 4h h  + h  + 3h h  + 2h ) is false
 --        1 2     1 2     1 2    1     1 2     2        1 2     1 2     1 2    1     1 2     2
 -- 
../m2/debugging.m2:23:6:(1):[9]: error: test(s) #3 of package CharacteristicClasses failed.

(from an s390x PPA build on Ubuntu 20.10)

The ring we're working over is constructed using MultiProjCoordRing, which defaults to characteristic 32749, so something funky is going on with that leading coefficient.

7 appears to be the correct coefficient -- here it is on my amd64 installation:

i1 : loadPackage "CharacteristicClasses";

i2 : setRandomSeed 0;

i3 : R=MultiProjCoordRing({2,2});

i4 : A=ChowRing(R);

i5 : I=ideal(random({1,1},R),R_0*R_3^2-R_1*R_4*R_3);

o5 : Ideal of R

i6 : CSM(A,I,Method=>DirectCompleteInt,IndsOfSmooth=>{0})

       2 2     2         2    2             2
o6 = 7h h  + 4h h  + 4h h  + h  + 3h h  + 2h
       1 2     1 2     1 2    1     1 2     2

o6 : A

@d-torrance
Copy link
Member Author

d-torrance commented Jul 4, 2021

Latest s390x build failures (Ubuntu 20.10, 21.04, and 21.10):

EngineTests/GB.Test.Mathic.m2:161:1-197:1: error:
 --         time g1 = gens gb (ideal J1_*);
 --      -- used 0.00747472 seconds
 -- 
 --                1        4
 -- o13 : Matrix R1  <--- R1
 -- 
 -- i14 :   assert(g1 == g2)
 -- 
 -- i15 :   assert(g1 == g3)
 -- stdio:28:3:(3): error: assertion failed
 -- 
../m2/debugging.m2:23:6:(1):[9]: error: test(s) #68 of package EngineTests failed.

I'll patch this to use assert Equation(...) again for tomorrow's Tuesday's builds.

Edit: I patched the wrong assert lol. There's a nearly identical statment a few lines earlier.

@d-torrance
Copy link
Member Author

Here's the EngineTests test failure with assert Equation(...).

EngineTests/GB.Test.Mathic.m2:161:1-197:1: error:
 --         time g1 = gens gb (ideal J1_*);
 --      -- used 0.00753925 seconds
 -- 
 --                1        4
 -- o13 : Matrix R1  <--- R1
 -- 
 -- i14 :   assert(g1 == g2)
 -- 
 -- i15 :   assert Equation(g1, g3)
 -- stdio:28:3:(3): error: assertion failed:
 -- (| z16-14823z15-11549z14+3740z13-12710z12-527z11-220z10+6550z9-2387z8+7046z7+9055z6-15148z5+1132z4-5339z3+12444z2-7751z+11824 y-14647z15+12024z14+13177z13+2183z12-13996z11-14445z10+13511z9+10029z8+9790z7+3932z6-13505z5-6913z4+9235z3-15125z2-25z-9328 x+11608z15-11174z14-8797z13-2709z12+5165z11-13537z10-5972z9+15673z8-14804z7-5975z6-14058z5+13397z4-12888z3-8714z2+7636z+7956 w+13828z15+12425z14-12448z13+15620z12+8497z11+5799z10-6763z9-6240z8+10000z7-5991z6+7681z5-3685z4-11052z3-10641z2+8969z-7218 |) == (| 1 |) is false
 -- 
../m2/debugging.m2:23:6:(1):[9]: error: test(s) #68 of package EngineTests failed.

Full logs: Ubuntu 20.10, Ubuntu 21.04, and Ubuntu 21.10

So somehow the F4 strategy is saying that this ideal is the whole ring!

FYI, I've requested access to a Debian s390x porterbox so I can investigate this a bit more than just waiting for PPA build logs every day.

@d-torrance
Copy link
Member Author

d-torrance commented Jul 7, 2021

New failure (s390x PPA builds in Ubuntu 20.10, 21.04, and 21.10):

 -- running   check(3, "SegreClasses")                                      
 ulimit -c unlimited; ulimit -t 700; ulimit -m 850000; ulimit -s 8192; ulimit -n 512;  cd /tmp/M2-1804-0/7-rundir/; GC_MAXIMUM_HEAP_SIZE=400M "/<<BUILDDIR>>/macaulay2-1.18.0.1+git202107062129/M2/usr-dist/s390x-Linux-Ubuntu-21.10/bin/M2-binary" -q --int --no-randomize --no-readline --silent --stop --print-width 77 -e 'needsPackage("SegreClasses",Reload=>true,FileName=>"/<<BUILDDIR>>/macaulay2-1.18.0.1+git202107062129/M2/Macaulay2/packages/SegreClasses.m2")' <"/tmp/M2-1804-0/6.m2" >>"/tmp/M2-1804-0/6.tmp" 2>&1
/tmp/M2-1804-0/6.tmp:0:1: (output file) error: Macaulay2 exited with status code 1
/tmp/M2-1804-0/6.m2:0:1: (input file)
M2: *** Error 1
 -- 0.592723 seconds elapsed

..


SegreClasses.m2:994:1-1008:1: error:
 -- 
 -- o7 : QuotientRing
 -- 
 -- i8 : assert(segre(I,J,A,Verbose=>true)==16*h^3-96*h^4+448*h^5-1920*h^6)
 -- [Y]= 2h, alpha= 4h
 --                            5     4     3
 -- Projective degrees= {0, 64h , 32h , 16h }
 --                6       5      4      3
 -- s(X,Y)= - 1792h  + 448h  - 96h  + 16h
 -- stdio:14:1:(3): error: assertion failed
 -- 
../m2/debugging.m2:23:6:(1):[9]: error: test(s) #3 of package SegreClasses failed.

I don't need to worry about patching this one to use assert Equation(...) because of the Verbose option! Looks like another issue with the leading coefficient.

Edit: The projective degrees are also off from what I get on my amd64 system:

i10 : segre(I,J,A,Verbose=>true)
[Y]= 2h, alpha= 4h
                         6     5     4     3
Projective degrees= {128h , 64h , 32h , 16h }
               6       5      4      3
s(X,Y)= - 1920h  + 448h  - 96h  + 16h

             6       5      4      3
o10 = - 1920h  + 448h  - 96h  + 16h

o10 : A

Also, -1792 - (-1920) = 128, so that's probably related.

@d-torrance
Copy link
Member Author

d-torrance commented Jul 8, 2021

I got access to the s390x porterbox and dug a little deeper into the above SegreClasses example. segre eventually calls groebnerBasis, and we get stuck constructing a matrix. I interrupted it for a backtrace:

i1 : version#"machine"

o1 = s390x-Linux-Debian-11

i2 : S = (ZZ/32749)(monoid[a..g, t, Degrees => {8:1}, Heft => {1}, MonomialOrder =>
     VerticalList{MonomialSize => 32, GRevLex => {8:1}, Position => Up}, DegreeRank
     => 1]);

i3 : I = ideal(a*c-e*f,0,-10871*a+7256*b-6067*c+6230*d+9033*e+5107*f-4742*g,9398*a+
           13177*b+13990*c-12267*d-2055*e-2525*f+10866*g,5398*a-132*b+5549*c-7807*d+
           2627*e-6072*f+2998*g,5679*a-7898*b+15317*c+1031*d-2782*e-7071*f-12486*g,-
           7668*a-5826*b+1236*c+8922*d-5752*e+8880*f-4335*g,3634*a-15545*b+909*c-4565
           *d+6955*e-10686*f+5132*g+1,7042*a^4*t-7042*b*d^3*t-7042*e*f^3*t-10720*a^2*
           t+1092*a*b*t+9755*b^2*t-9154*a*c*t-7053*b*c*t-9007*c^2*t+16152*a*d*t-8968*
           b*d*t-12834*c*d*t-6623*d^2*t+5105*a*e*t+11356*b*e*t-4997*c*e*t-953*d*e*t-
           11996*e^2*t+1034*a*f*t+15134*b*f*t+1978*c*f*t+1126*d*f*t-11883*e*f*t+14556
           *f^2*t-7740*a*g*t+4610*b*g*t-4934*c*g*t+16371*d*g*t-5253*e*g*t+13515*f*g*t
           +1306*g^2*t+1);

o3 : Ideal of S

i4 : gbTrace = 1

o4 = 1

i5 : groebnerBasis(I, Strategy => "F4", "MGBOptions" => {"Log" => "all"})
     -- computing mgb F4 OptionTable{Log => all   }
                                     Reducer => F4
Inserting basis element 0: ac<0>-ef<0>
Inserting basis element 1: -10871a<0>+7256b<0>-6067c<0>+6230d<0>+9033e<0>+5107f<0>-4742g<0>

***** Constructing matrix *****
^C^C
Exit (y=yes/n=no/a=abort/b=backtrace)? b
-* stack trace, pid: 61550
 0# stack_trace(std::ostream&, bool) at ../../../../Macaulay2/d/main.cpp:127
 1# interrupt_handler at ../../../../Macaulay2/d/main.cpp:282
 2# 0x000003FF792320DE
 3# __pthread_mutex_unlock_usercnt in /lib/s390x-linux-gnu/libpthread.so.0
 4# mgb::F4MatrixBuilder2::Builder::createColumn(mgb::MonoMonoid<int, true, true, true>::ConstMonoRef, mgb::MonoMonoid<int, true, true, true>::ConstMonoRef, tbb::interface9::parallel_do_feeder<mgb::F4MatrixBuilder2::RowTask>&) at ../../../../Macaulay2/e/mathicgb/F4MatrixBuilder2.cpp:342
 5# mgb::F4MatrixBuilder2::Builder::appendRow(mgb::MonoMonoid<int, true, true, true>::ConstMonoRef, mgb::Poly const&, mgb::F4ProtoMatrix&, tbb::interface9::parallel_do_feeder<mgb::F4MatrixBuilder2::RowTask>&) at ../../../../Macaulay2/e/mathicgb/F4MatrixBuilder2.cpp:370
 6# mgb::F4MatrixBuilder2::Builder::buildMatrixAndClear(std::vector<mgb::F4MatrixBuilder2::RowTask, std::allocator<mgb::F4MatrixBuilder2::RowTask> >&, mgb::QuadMatrix&)::{lambda(mgb::F4MatrixBuilder2::RowTask const&, tbb::interface9::parallel_do_feeder<mgb::F4MatrixBuilder2::RowTask>&)#2}::operator()(mgb::F4MatrixBuilder2::RowTask const&, tbb::interface9::parallel_do_feeder<mgb::F4MatrixBuilder2::RowTask>&) const at ../../../../Macaulay2/e/mathicgb/F4MatrixBuilder2.cpp:202
 7# tbb::interface9::internal::do_iteration_task<mgb::F4MatrixBuilder2::Builder::buildMatrixAndClear(std::vector<mgb::F4MatrixBuilder2::RowTask, std::allocator<mgb::F4MatrixBuilder2::RowTask> >&, mgb::QuadMatrix&)::{lambda(mgb::F4MatrixBuilder2::RowTask const&, tbb::interface9::parallel_do_feeder<mgb::F4MatrixBuilder2::RowTask>&)#2}, mgb::F4MatrixBuilder2::RowTask>::execute() at /usr/include/tbb/parallel_do.h:117
 8# 0x000003FF812A2C96 in /usr/lib/s390x-linux-gnu/libtbb.so.2
 9# 0x000003FF812A2FA2 in /usr/lib/s390x-linux-gnu/libtbb.so.2
10# tbb::interface9::internal::do_task_iter<__gnu_cxx::__normal_iterator<mgb::F4MatrixBuilder2::RowTask*, std::vector<mgb::F4MatrixBuilder2::RowTask, std::allocator<mgb::F4MatrixBuilder2::RowTask> > >, mgb::F4MatrixBuilder2::Builder::buildMatrixAndClear(std::vector<mgb::F4MatrixBuilder2::RowTask, std::allocator<mgb::F4MatrixBuilder2::RowTask> >&, mgb::QuadMatrix&)::{lambda(mgb::F4MatrixBuilder2::RowTask const&, tbb::interface9::parallel_do_feeder<mgb::F4MatrixBuilder2::RowTask>&)#2}, mgb::F4MatrixBuilder2::RowTask>::run_for_random_access_iterator() at /usr/include/tbb/parallel_do.h:407
11# 0x000003FF812A2C96 in /usr/lib/s390x-linux-gnu/libtbb.so.2
12# 0x000003FF812A2FA2 in /usr/lib/s390x-linux-gnu/libtbb.so.2
13# mgb::F4MatrixBuilder2::Builder::buildMatrixAndClear(std::vector<mgb::F4MatrixBuilder2::RowTask, std::allocator<mgb::F4MatrixBuilder2::RowTask> >&, mgb::QuadMatrix&) at ../../../../Macaulay2/e/mathicgb/F4MatrixBuilder2.cpp:170
14# mgb::F4MatrixBuilder2::buildMatrixAndClear(mgb::QuadMatrix&) at ../../../../Macaulay2/e/mathicgb/F4MatrixBuilder2.cpp:586
15# mgb::F4Reducer::classicReducePolySet(std::vector<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> >, std::allocator<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> > > > const&, mgb::PolyBasis const&, std::vector<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> >, std::allocator<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> > > >&) at ../../../../Macaulay2/e/mathicgb/F4Reducer.cpp:259
16# mgb::ClassicGBAlg::insertPolys(std::vector<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> >, std::allocator<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> > > >&) at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.cpp:218
17# mgb::ClassicGBAlg::ClassicGBAlg(mgb::Basis const&, mgb::Reducer&, int, bool, unsigned long) at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.cpp:143
18# mgb::computeGBClassicAlg(mgb::Basis&&, mgb::ClassicGBAlgParams) at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.cpp:671
19# mgb::mgbi::internalComputeGroebnerBasis(mgb::GroebnerInputIdealStream&, mgb::mgbi::IdealAdapter&) at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.hpp:13
20# void mgb::computeGroebnerBasis<MatrixStream>(mgb::GroebnerInputIdealStream&, MatrixStream&) at ../../../../Macaulay2/e/mathicgb/mathicgb.h:915
21# rawMGB at ../../../../Macaulay2/e/interface/groebner.cpp:812
22# interface_rawMGB at ../../../../Macaulay2/d/interface.dd:3521

If I don't interrupt it:

***** Constructing matrix *****
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted

Edit: I had forgotten to apply the patch from #2172. That fixes this particular issue, so the bug is somewhere else.

@d-torrance
Copy link
Member Author

A couple new s390x test failures (Ubuntu 20.10, 21.04, and 21.10):

SpecialFanoFourfolds.m2:2667:1-2678:1: error:
 -- i2 : K = ZZ/65521;
 -- 
 -- i3 : (B,V,C,psi,idS) = exampleD44data K;
 -- 
 -- i4 : X = specialGushelMukaiFourfold(idS,InputCheck=>0);
 -- 
 -- o4 : ProjectiveVariety, GM fourfold containing a surface of degree 9 and sectional genus 1
 -- 
 -- i5 : assert(discriminant X == 36);
 -- stdio:7:1:(3): error: assertion failed
 -- 
SpecialFanoFourfolds.m2:2679:1-2685:1: error:
 -- -- -*- M2-comint -*- hash: 233554451
 -- 
 -- i1 : --/<<BUILDDIR>>/macaulay2-1.18.0.1+git202107062129/M2/Macaulay2/packages/SpecialFanoFourfolds.m2:2685: location of test code
 --       -- Test 13 (2/2) -- GM fourfolds containing nodal surfaces
 --      X = specialGushelMukaiFourfold("nodal D26''",ZZ/33331,InputCheck=>0);
 -- 
 -- o1 : ProjectiveVariety, GM fourfold containing a surface of degree 11 and sectional genus 3
 -- 
 -- i2 : assert(discriminant X == 26 and last cycleClass X == (7,4) and degree surface X == 11 and sectionalGenus surface X == 3);
 -- stdio:4:1:(3): error: assertion failed
 -- 
../m2/debugging.m2:23:6:(1):[9]: error: test(s) #12, 13 of package SpecialFanoFourfolds failed.

Checking these on the porterbox:

i1 : debug needsPackage "SpecialFanoFourfolds";
--warning: symbol "resultant" in Elimination.Dictionary is shadowed by a symbol in Resultants.Dictionary                                               
--  use the synonym Elimination$resultant                                                                                                              
--warning: symbol "discriminant" in Elimination.Dictionary is shadowed by a symbol in Resultants.Dictionary                                            
--  use the synonym Elimination$discriminant                                                                                                           
--warning: symbol "sylvesterMatrix" in Elimination.Dictionary is shadowed by a symbol in SparseResultants.Dictionary                                   
--  use the synonym Elimination$sylvesterMatrix                                                                                                        

i2 : discriminant specialGushelMukaiFourfold(last exampleD44data(ZZ/65521), InputCheck => 0)

o2 = 14804

i3 : X = specialGushelMukaiFourfold("nodal D26''",ZZ/33331,InputCheck=>0);

o3 : ProjectiveVariety, GM fourfold containing a surface of degree 11 and sectional genus 3

i4 : discriminant X, last cycleClass X, degree surface X, sectionalGenus surface X

o4 = (13578, (7, 4), 11, 3)

o4 : Sequence

So something funky is going on with discriminant.

@d-torrance
Copy link
Member Author

I ran the Groebner basis computation from the failing EngineTests on both platforms with logging on to try to get more to the bottom of what's going on. For the most part, they started out the same. But the order was switched on the 2nd and 3rd basis elements (- s390x, + amd64):

-Inserting basis element 2: ad<0>+2429a<0>+12687b2<0>+8095bc<0>-203bd<0>+12558b<0>-936c2<0>+15664cd<0>+9463c<0>-5509d2<0>+1920d<0>-7958<0>
-Inserting basis element 3: ac<0>-15935a<0>-13208b2<0>+3882bc<0>-7550bd<0>-554b<0>-7028c2<0>+15840cd<0>-6421c<0>-890d2<0>+13194d<0>-6009<0>
+Inserting basis element 2: ac<0>-15935a<0>-13208b2<0>+3882bc<0>-7550bd<0>-554b<0>-7028c2<0>+15840cd<0>-6421c<0>-890d2<0>+13194d<0>-6009<0>
+Inserting basis element 3: ad<0>+2429a<0>+12687b2<0>+8095bc<0>-203bd<0>+12558b<0>-936c2<0>+15664cd<0>+9463c<0>-5509d2<0>+1920d<0>-7958<0>

Then s390x missed a basis element:

-F4MatrixReduce time recorded:        0.000s (real)
-F4RedBottomRight time recorded:        0.000s (real)
-Inserting basis element 9: bc2d2<0>-5151bc2<0>+7770bcd3<0>-11386bcd2<0>-1322bcd<0>+4674bc<0>+6534bd4<0>+11769bd3<0>-5601bd2<0>-10739bd<0>+7971b<0>-1138c5<0>-8742c4d<0>+15215c4<0>+5931c3d2<0>+11203c3d<0>+2128c3<0>-15616c2d3<0>-11181c2d2<0>-6075c2d<0>-11284c2<0>+761cd4<0>+6550cd3<0>+7148cd2<0>-7986cd<0>-1002c<0>+2612d5<0>+10820d4<0>+1385d3<0>+10800d2<0>+14040d<0>+11412<0>
-Inserting basis element 10: bc2d<0>-3409bc2<0>+6435bcd3<0>+4338bcd2<0>-2133bcd<0>+11079bc<0>+15833bd4<0>+4301bd3<0>+15449bd2<0>+7318bd<0>+5327b<0>-6946c5<0>-13190c4d<0>-369c4<0>+9980c3d2<0>+12566c3d<0>-10699c3<0>+15753c2d3<0>+4630c2d2<0>-7673c2d<0>+10775c2<0>+2817cd4<0>-11561cd3<0>-7979cd2<0>+11195cd<0>+7316c<0>-1843d5<0>-8448d4<0>-7348d3<0>-14126d2<0>+5769d<0>-13537<0>
+F4MatrixReduce time recorded:        0.001s (real)
+F4RedBottomRight time recorded:        0.001s (real)
+Inserting basis element 9: bc2d4<0>-724bc2d3<0>+11321bc2<0>+4672bcd5<0>+13726bcd4<0>+14726bcd3<0>+12775bcd2<0>-11160bcd<0>-2544bc<0>+4375bd6<0>+10762bd5<0>+1371bd4<0>+15744bd3<0>+2256bd2<0>-12685bd<0>-11581b<0>-8032c6d<0>-8982c6<0>+11663c5d2<0>-15528c5d<0>+6075c5<0>-6463c4d3<0>-15377c4d2<0>+6413c4d<0>+15068c4<0>+8870c3d4<0>+7665c3d3<0>-1220c3d2<0>-14464c3d<0>-6042c3<0>-891c2d5<0>-2736c2d4<0>+555c2d3<0>+13732c2d2<0>+9421c2d<0>+9247c2<0>+8107cd6<0>+10832cd5<0>+12434cd4<0>+13300cd3<0>+10387cd2<0>-11085cd<0>-5539c<0>-2161d7<0>-15160d6<0>-12610d5<0>-15414d4<0>+2575d3<0>+6835d2<0>+13171d<0>+504<0>
+Inserting basis element 10: bc2d2<0>-5151bc2<0>+7770bcd3<0>-11386bcd2<0>-1322bcd<0>+4674bc<0>+6534bd4<0>+11769bd3<0>-5601bd2<0>-10739bd<0>+7971b<0>-1138c5<0>-8742c4d<0>+15215c4<0>+5931c3d2<0>+11203c3d<0>+2128c3<0>-15616c2d3<0>-11181c2d2<0>-6075c2d<0>-11284c2<0>+761cd4<0>+6550cd3<0>+7148cd2<0>-7986cd<0>-1002c<0>+2612d5<0>+10820d4<0>+1385d3<0>+10800d2<0>+14040d<0>+11412<0>
+Inserting basis element 11: bc2d<0>-3409bc2<0>+6435bcd3<0>+4338bcd2<0>-2133bcd<0>+11079bc<0>+15833bd4<0>+4301bd3<0>+15449bd2<0>+7318bd<0>+5327b<0>-6946c5<0>-13190c4d<0>-369c4<0>+9980c3d2<0>+12566c3d<0>-10699c3<0>+15753c2d3<0>+4630c2d2<0>-7673c2d<0>+10775c2<0>+2817cd4<0>-11561cd3<0>-7979cd2<0>+11195cd<0>+7316c<0>-1843d5<0>-8448d4<0>-7348d3<0>-14126d2<0>+5769d<0>-13537<0>

Aside from the basis element numbers being off by 1, everything stays the same until they start diverging a bit later -- even the matrix size:

 ***** Constructing matrix *****
-F4[1,262 by 2,154]
-F4MatrixBuild2 time recorded:        0.002s (real)
+F4[1,060 by 1,868]
+F4MatrixBuild2 time recorded:        0.004s (real)
 
 ***** Reducing QuadMatrix to bottom right matrix *****
 
-                    1,254                900   columns           
+                    1,052                816   columns           
        /------------------|------------------\                   
- 1,254 |    34.7k -  2.2% |    66.5k -  5.9% | non-zero (density)
-  rows |  600.1kB - 33.9% |  600.1kB - 64.9% | memory (used)     
+ 1,052 |    25.7k -  2.3% |    57.3k -  6.7% | non-zero (density)
+  rows |  600.1kB - 25.2% |  600.1kB - 56.0% | memory (used)     
        |            43.1% |            43.1% | of total memory   
        |------------------|------------------|                   
-     8 |      595 -  5.9% |      129 -  1.8% | non-zero (density)
+     8 |      595 -  7.1% |      129 -  2.0% | non-zero (density)
   rows |   96.1kB -  3.7% |   96.1kB -  0.9% | memory (used)     
        |             6.9% |             6.9% | of total memory   
        \------------------|------------------/                   
-       Total memory: 1.4MB (42.9% used)
+       Total memory: 1.4MB (35.3% used)
 
-F4MatrixReduce time recorded:        0.001s (real)
-F4MatReduceTop time recorded:        0.001s (real)
+F4MatrixReduce time recorded:        0.002s (real)
+F4MatReduceTop time recorded:        0.002s (real)
 
 ***** Reducing SparseMatrix to reduced row echelon form *****
 
-                     900   columns           
+                     816   columns           
       /------------------\                   
-    7 |      905 - 14.4% | non-zero (density)
- rows |  600.1kB -  0.9% | memory (used)     
+    6 |      671 - 13.7% | non-zero (density)
+ rows |  600.1kB -  0.7% | memory (used)     
       \------------------/                   
 
-F4MatrixReduce time recorded:        0.000s (real)
-F4RedBottomRight time recorded:        0.000s (real)
-Inserting basis element 26: c7d5<0>+2133c7d4<0>+11743c7d3<0>-3052c7d2<0>+15394c7d<0>+7140c7<0>+4589c6d6<0>+1558c6d5<0>+835c6d4<0>-796c6d3<0>-2028c6d2<0>-6705c6d<0>-11650c6<0>+1997c5d7<0>+3089c5d6<0>+11878c5d5<0>+13395c5d4<0>+7108c5d3<0>+1946c5d2<0>+14570c5d<0>-6346c5<0>-13716c4d8<0>+8928c4d7<0>+7913c4d6<0>+8956c4d5<0>-14105c4d4<0>+2149c4d3<0>-12830c4d2<0>-9034c4d<0>+13046c4<0>+12025c3d9<0>-8150c3d8<0>-685c3d7<0>+10888c3d6<0>-5885c3d5<0>-15444c3d4<0>+2264c3d3<0>-9442c3d2<0>-2594c3d<0>-8759c3<0>-640c2d10<0>-15621c2d9<0>-14489c2d8<0>+3568c2d7<0>-5339c2d6<0>+11293c2d5<0>+11206c2d4<0>+15318c2d3<0>-6989c2d2<0>-7008c2d<0>+13884c2<0>-2299cd11<0>+435cd10<0>+6884cd9<0>-15144cd8<0>-12452cd7<0>+15306cd6<0>+2445cd5<0>-4329cd4<0>-13649cd3<0>+10646cd2<0>-3933cd<0>-8613c<0>+2343d12<0>+12131d11<0>+13881d10<0>-6681d9<0>+5359d8<0>+13492d7<0>+5203d6<0>+12599d5<0>-4279d4<0>+7300d3<0>-298d2<0>+3766d<0>+11727<0>
-Inserting basis element 27: c10d2<0>+13177c10d<0>+6668c10<0>+2212c9d4<0>+11167c9d3<0>+13555c9d2<0>+1532c9d<0>+359c9<0>-12469c8d6<0>+9791c8d5<0>+9330c8d4<0>+14365c8d3<0>-11035c8d2<0>+5418c8d<0>+11341c8<0>-2396c7d6<0>-9896c7d4<0>+15701c7d3<0>-6464c7d2<0>+13359c7d<0>+14004c7<0>-3223c6d8<0>+14981c6d7<0>-4125c6d6<0>-6049c6d5<0>-627c6d4<0>-777c6d3<0>+14414c6d2<0>-8466c6d<0>-1119c6<0>-1649c5d9<0>+12320c5d8<0>+8073c5d7<0>-3556c5d6<0>-10184c5d5<0>+1758c5d4<0>+9442c5d3<0>+13131c5d2<0>+5763c5d<0>+8162c5<0>+3955c4d10<0>+2810c4d9<0>+7374c4d8<0>+1375c4d7<0>+15889c4d6<0>-11892c4d5<0>+10887c4d4<0>+12047c4d3<0>+120c4d2<0>-4304c4d<0>-11567c4<0>+12604c3d11<0>-6133c3d10<0>+7884c3d9<0>-5107c3d8<0>-8995c3d7<0>+6841c3d6<0>-58c3d5<0>-8362c3d4<0>+6142c3d3<0>-4892c3d2<0>+2962c3d<0>+2855c3<0>+6197c2d12<0>+8883c2d11<0>-15294c2d10<0>-575c2d9<0>-14316c2d8<0>-1580c2d7<0>+11170c2d6<0>-4133c2d5<0>-12358c2d4<0>+15866c2d3<0>-9712c2d2<0>-10449c2d<0>+15852c2<0>-6594cd13<0>+2990cd12<0>-4437cd11<0>+5766cd10<0>+10602cd9<0>-3269cd8<0>-12386cd7<0>+16cd6<0>-10746cd5<0>-5280cd4<0>-6911cd3<0>-12196cd2<0>+10251cd<0>-12418c<0>-6943d14<0>+3310d13<0>-13678d12<0>+629d11<0>+14614d10<0>+11239d9<0>+13584d8<0>-3017d7<0>-8646d6<0>-6361d5<0>-15856d4<0>-4950d3<0>+3611d2<0>-12195d<0>-4300<0>
+F4MatrixReduce time recorded:        0.001s (real)
+F4RedBottomRight time recorded:        0.001s (real)
+Inserting basis element 27: c7d5<0>+2133c7d4<0>+11743c7d3<0>-3052c7d2<0>+15394c7d<0>+7140c7<0>+4589c6d6<0>+1558c6d5<0>+835c6d4<0>-796c6d3<0>-2028c6d2<0>-6705c6d<0>-11650c6<0>+1997c5d7<0>+3089c5d6<0>+11878c5d5<0>+13395c5d4<0>+7108c5d3<0>+1946c5d2<0>+14570c5d<0>-6346c5<0>-13716c4d8<0>+8928c4d7<0>+7913c4d6<0>+8956c4d5<0>-14105c4d4<0>+2149c4d3<0>-12830c4d2<0>-9034c4d<0>+13046c4<0>+12025c3d9<0>-8150c3d8<0>-685c3d7<0>+10888c3d6<0>-5885c3d5<0>-15444c3d4<0>+2264c3d3<0>-9442c3d2<0>-2594c3d<0>-8759c3<0>-640c2d10<0>-15621c2d9<0>-14489c2d8<0>+3568c2d7<0>-5339c2d6<0>+11293c2d5<0>+11206c2d4<0>+15318c2d3<0>-6989c2d2<0>-7008c2d<0>+13884c2<0>-2299cd11<0>+435cd10<0>+6884cd9<0>-15144cd8<0>-12452cd7<0>+15306cd6<0>+2445cd5<0>-4329cd4<0>-13649cd3<0>+10646cd2<0>-3933cd<0>-8613c<0>+2343d12<0>+12131d11<0>+13881d10<0>-6681d9<0>+5359d8<0>+13492d7<0>+5203d6<0>+12599d5<0>-4279d4<0>+7300d3<0>-298d2<0>+3766d<0>+11727<0>
+Inserting basis element 28: c10d2<0>+13177c10d<0>+6668c10<0>+2212c9d4<0>+11167c9d3<0>+13555c9d2<0>+1532c9d<0>+359c9<0>-11512c8d6<0>+8667c8d5<0>+4661c8d4<0>+2415c8d3<0>+4368c8d2<0>-4878c8d<0>+6919c8<0>-5960c7d6<0>+9686c7d4<0>-6966c7d3<0>+2336c7d2<0>+12985c7d<0>-9970c7<0>+9534c6d8<0>+2619c6d7<0>-15133c6d6<0>+8313c6d5<0>-12359c6d4<0>-10013c6d3<0>-8657c6d2<0>-6815c6d<0>-1987c6<0>-11486c5d9<0>+3633c5d8<0>+13785c5d7<0>-10481c5d6<0>+13465c5d5<0>+9982c5d4<0>-720c5d3<0>-1978c5d2<0>+12097c5d<0>-2567c5<0>+3056c4d10<0>+8552c4d9<0>-199c4d8<0>+8626c4d7<0>+9635c4d6<0>+2241c4d5<0>+8023c4d4<0>-9072c4d3<0>+1421c4d2<0>+6923c4d<0>-13006c4<0>-13185c3d11<0>+6255c3d10<0>-9215c3d9<0>-9121c3d8<0>-1873c3d7<0>-10827c3d6<0>-13382c3d5<0>+6876c3d4<0>+13700c3d3<0>-1502c3d2<0>-2475c3d<0>-1276c3<0>-10497c2d12<0>+415c2d11<0>+11463c2d10<0>+3002c2d9<0>+2776c2d8<0>+9564c2d7<0>+3787c2d6<0>-2454c2d5<0>+5042c2d4<0>-4642c2d3<0>-14044c2d2<0>-7395c2d<0>+12748c2<0>-14781cd13<0>-7995cd12<0>-1657cd11<0>+11196cd10<0>+8108cd9<0>+6909cd8<0>-5460cd7<0>-13112cd6<0>-11353cd5<0>+6765cd4<0>+4915cd3<0>+4578cd2<0>+11791cd<0>-9343c<0>+3787d14<0>+10568d13<0>+6272d12<0>+4829d11<0>-12433d10<0>+9350d9<0>+8180d8<0>+14756d7<0>-15056d6<0>-3910d5<0>+4358d4<0>+15351d3<0>+441d2<0>+14636d<0>+9453<0>

One of the elements is the same, but the other one starts differing after the first 8 terms.

After this, the two computations are completely different.

@d-torrance
Copy link
Member Author

Another s390x PPA test failure, this time only on Ubuntu 21.04 and 21.10:

testing: ComputationsBook::constructions
test.m2:269:12:(3):[7]: error: array index 1 out of bounds 0 .. 0

This is coming from this code:

finalTest=checkMorphismsForDeg17CY(b,skewSymMorphisms);
finalTest#0
n=finalTest#1;

checkMorphismsForDeg17CY returns a list of length only 1 if it fails:

equations=saturate ideal flatten substitute(equations,W);
CorrectDimensionAndDegree:=(
dim equations==1 and degree equations==k);
isNonDegenerate:=#select(
(flatten degrees source gens equations),i->i==1)==0;
collectGarbage();
isOK:=CorrectDimensionAndDegree and isNonDegenerate;

{isOK,randomMorphism}) else {isOK});

I printed the value of equations on the porterbox and my local machine and got very different results:

s390x

ideal (w , w , w , w w , w w , w w , w w , w w , w w , w w , w w , w w , w w )                                                                                
        7   6   5   3 4   2 4   1 4   0 4   2 3   1 3   0 3   1 2   0 2   0 1                                                                                 

amd64

                               2                           2                           2                          2                  2   2                   2                           2                          2                           2                                                2                          2   2             2                                              2                           2                 2                          2                           2                           2                           2                           2                           2                           2                           2                         2                           2                          2
ideal (w w  + 3w w  + 5w w  + w , w w  + 5w w  + 3w w  + 4w , w w  + 4w w  - 6w w  + 3w , w w  + w w  - 5w w  - 3w , w w  - w w  + 3w , w  + w w  + w w  + 4w , w w  - 4w w  + 5w w  + 6w , w w  - 6w w  - 6w w  + w , w w  + 4w w  + 2w w  - 3w , w w  - 4w w  + 2w w , w w  - 4w w  - 3w w  + w , w w  + w w  + 4w w  + 4w , w  + 3w w  + 3w , w w  - w w  + w w , w w  + w w  - 2w w  + 6w , w w  + 6w w  + 4w w  - 2w , w w  - w w  + w , w w  - w w  + 5w w  + 6w , w w  - 2w w  + 6w w  + 6w , w w  - 2w w  - 3w w  + 3w , w w  + 6w w  - 3w w  - 5w , w w  - 2w w  + 5w w  - 2w , w w  + 5w w  - 2w w  - 2w , w w  - 5w w  - 5w w  + 4w , w w  + 2w w  + 6w w  - 2w , w w  - w w  + w w  - 2w , w w  - 3w w  - 6w w  + 4w , w w  + 6w w  - w w  - 3w )
        4 7     5 7     6 7    7   3 7     5 7     6 7     7   2 7     5 7     6 7     7   1 7    5 7     6 7     7   0 7    6 7     7   6    5 7    6 7     7   5 6     5 7     6 7     7   4 6     5 7     6 7    7   3 6     5 7     6 7     7   2 6     5 7     6 7   1 6     5 7     6 7    7   0 6    5 7     6 7     7   5     5 7     7   4 5    5 7    6 7   3 5    5 7     6 7     7   2 5     5 7     6 7     7   1 5    6 7    7   0 5    5 7     6 7     7   3 4     5 7     6 7     7   2 4     5 7     6 7     7   1 4     5 7     6 7     7   0 4     5 7     6 7     7   2 3     5 7     6 7     7   1 3     5 7     6 7     7   0 3     5 7     6 7     7   1 2    5 7    6 7     7   0 2     5 7     6 7     7   0 1     5 7    6 7     7

@d-torrance
Copy link
Member Author

No more problem tests or examples -- I've patched out the above and all the s390x PPA builds are working now. I'd still like to figure out what's going on!

I'm wondering if the problem is with the patch in #2172. See Dan's comments in Macaulay2/mathicgb#9 -- it's not perfect. But everything worked just fine with it until mathicgb was moved into the M2 source tree, and there were more problems on recent Ubuntu releases than older ones, too...

@d-torrance
Copy link
Member Author

Pretty sure this is actually at least two separate bugs -- the endianness issue with isProductOfHintTrue and isTwoProductsOfHintTrue, which is fixed by #2172, and a segfault (possibly TBB-related) in reduce, which isn't:

i1 : -- segfault #1
     needsPackage "SparseResultants";
--warning: symbol "resultant" in Elimination.Dictionary is shadowed by a symbol in Resultants.Dictionary
--  use the synonym Elimination$resultant
--warning: symbol "discriminant" in Elimination.Dictionary is shadowed by a symbol in Resultants.Dictionary
--  use the synonym Elimination$discriminant
--warning: symbol "sylvesterMatrix" in Elimination.Dictionary is shadowed by a symbol in SparseResultants.Dictionary
--  use the synonym Elimination$sylvesterMatrix

i2 : denseResultant(2,2,1,CoefficientRing=>ZZ/331);
-- SIGSEGV
-* stack trace, pid: 24458
 0# stack_trace(std::ostream&, bool) at ../../../../Macaulay2/d/main.cpp:127
 1# segv_handler at ../../../../Macaulay2/d/main.cpp:243
 2# 0x000003FF84B79076
 3# mgb::(anonymous namespace)::reduce(mgb::QuadMatrix const&, unsigned short)::{lambda(tbb::blocked_range<unsigned int> const&)#2}::operator()(tbb::blocked_range<unsigned int> const&) const at ../../../../Macaulay2/e/mathicgb/F4MatrixReducer.cpp:266
 4# tbb::interface9::internal::start_for<tbb::blocked_range<unsigned int>, mgb::(anonymous namespace)::reduce(mgb::QuadMatrix const&, unsigned short)::{lambda(tbb::blocked_range<unsigned int> const&)#2}, tbb::auto_partitioner const>::execute() at /usr/include/tbb/parallel_for.h:142
 5# 0x000003FF8EA22C96 in /usr/lib/s390x-linux-gnu/libtbb.so.2
 6# 0x000003FF8EA22FA2 in /usr/lib/s390x-linux-gnu/libtbb.so.2
 7# 0x000003FF8EA1C5CC in /usr/lib/s390x-linux-gnu/libtbb.so.2
 8# 0x000003FF8EA1A88A in /usr/lib/s390x-linux-gnu/libtbb.so.2
 9# 0x000003FF8EA15F80 in /usr/lib/s390x-linux-gnu/libtbb.so.2
10# 0x000003FF8EA162D2 in /usr/lib/s390x-linux-gnu/libtbb.so.2
11# start_thread in /lib/s390x-linux-gnu/libpthread.so.0
12# 0x000003FF8E303506 in /lib/s390x-linux-gnu/libc.so.6
-- end stack trace *-
i1 : -- segfault #2
     needsPackage "MultiprojectiveVarieties";
--warning: symbol "resultant" in Elimination.Dictionary is shadowed by a symbol in Resultants.Dictionary
--  use the synonym Elimination$resultant
--warning: symbol "discriminant" in Elimination.Dictionary is shadowed by a symbol in Resultants.Dictionary
--  use the synonym Elimination$discriminant
--warning: symbol "sylvesterMatrix" in Elimination.Dictionary is shadowed by a symbol in SparseResultants.Dictionary
--  use the synonym Elimination$sylvesterMatrix

i2 : ZZ/65521[x_0..x_4];

i3 : f = rationalMap {x_2^2-x_1*x_3, x_1*x_2-x_0*x_3, x_1^2-x_0*x_2, x_0*x_4, x_1*x_4, x_2*x_4, x_3*x_4, x_4^2};

o3 : RationalMap (quadratic rational map from PP^4 to PP^7)

i4 : g = rationalMap {-x_3^2+x_2*x_4, 2*x_2*x_3-2*x_1*x_4, -3*x_2^2+2*x_1*x_3+x_0*x_4, 2*x_1*x_2-2*x_0*x_3, -x_1^2+x_0*x_2};

o4 : RationalMap (quadratic rational map from PP^4 to PP^4)

i5 : Phi = rationalMap {f,g};

o5 : MultirationalMap (rational map from PP^4 to PP^7 x PP^4)

i6 : projectiveVariety (map segre target Phi) image(segre Phi,"F4");
-- SIGSEGV
-* stack trace, pid: 24523
 0# stack_trace(std::ostream&, bool) at ../../../../Macaulay2/d/main.cpp:127
 1# segv_handler at ../../../../Macaulay2/d/main.cpp:243
 2# 0x000003FF7A734BDE
 3# mgb::(anonymous namespace)::reduce(mgb::QuadMatrix const&, unsigned short)::{lambda(tbb::blocked_range<unsigned int> const&)#2}::operator()(tbb::blocked_range<unsigned int> const&) const at ../../../../Macaulay2/e/mathicgb/F4MatrixReducer.cpp:266
 4# tbb::interface9::internal::start_for<tbb::blocked_range<unsigned int>, mgb::(anonymous namespace)::reduce(mgb::QuadMatrix const&, unsigned short)::{lambda(tbb::blocked_range<unsigned int> const&)#2}, tbb::auto_partitioner const>::execute() at /usr/include/tbb/parallel_for.h:142
 5# 0x000003FF81FA2C96 in /usr/lib/s390x-linux-gnu/libtbb.so.2
 6# 0x000003FF81FA2FA2 in /usr/lib/s390x-linux-gnu/libtbb.so.2
 7# 0x000003FF81FA092E in /usr/lib/s390x-linux-gnu/libtbb.so.2
 8# mgb::(anonymous namespace)::reduce(mgb::QuadMatrix const&, unsigned short) at ../../../../Macaulay2/e/mathicgb/F4MatrixReducer.cpp:243
 9# mgb::F4MatrixReducer::reduceToBottomRight(mgb::QuadMatrix const&) at ../../../../Macaulay2/e/mathicgb/F4MatrixReducer.cpp:732
10# mgb::F4MatrixReducer::reducedRowEchelonFormBottomRight(mgb::QuadMatrix const&) at ../../../../Macaulay2/e/mathicgb/F4MatrixReducer.cpp:770
11# mgb::F4Reducer::classicReduceSPolySet(std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >&, mgb::PolyBasis const&, std::vector<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> >, std::allocator<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> > > >&) at ../../../../Macaulay2/e/mathicgb/F4Reducer.cpp:214
12# mgb::ClassicGBAlg::step() at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.cpp:411
13# mgb::ClassicGBAlg::computeGrobnerBasis() at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.cpp:325
14# mgb::computeGBClassicAlg(mgb::Basis&&, mgb::ClassicGBAlgParams) at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.cpp:680
15# mgb::mgbi::internalComputeGroebnerBasis(mgb::GroebnerInputIdealStream&, mgb::mgbi::IdealAdapter&) at ../../../../Macaulay2/e/mathicgb/ClassicGBAlg.hpp:13
16# void mgb::computeGroebnerBasis<MatrixStream>(mgb::GroebnerInputIdealStream&, MatrixStream&) at ../../../../Macaulay2/e/mathicgb/mathicgb.h:915
17# rawMGB at ../../../../Macaulay2/e/interface/groebner.cpp:812
18# interface_rawMGB at ../../../../Macaulay2/d/interface.dd:3521
19# evaluate_evalraw at ../../../../Macaulay2/d/evaluate.d:1297
...

@d-torrance
Copy link
Member Author

I dug a little deeper into the above segfaults, passing "Log" => "all" to mathicgb, and it looks again we're ending up with small differences in the basis elements in the F4 algorithm:

diff -u /home/profzoom/tmp/s390x.out /home/profzoom/tmp/amd64.out
--- /home/profzoom/tmp/s390x.out	2021-07-13 12:03:57.859558760 -0400
+++ /home/profzoom/tmp/amd64.out	2021-07-13 12:02:59.523141976 -0400
@@ -1,8 +1,7 @@
-Inserting basis element 59: abgjo<0>-abdmo<0>-aij2<0>+agjm<0>-adm2<0>+adjo<0>+bcilm<0>+b2imn<0>-bcfmo<0>-b2hmo<0>-cijl<0>+bikm<0>+cglm<0>-cfm2<0>-bhm2<0>-bijn<0>+bgmn<0>+cfjo<0>+bhjo<0>-bemo<0>-ijk<0>+gkm<0>-em2<0>+ejo<0>
-Inserting basis element 60: agjop<0>-admop<0>+aij2r<0>-agjmr<0>+adm2r<0>-adjor<0>+cilmp<0>+bimnp<0>-cfmop<0>-bhmop<0>-bim2q<0>+bgmoq<0>+cijlr<0>-cglmr<0>+cfm2r<0>+bhm2r<0>+bijnr<0>-bgmnr<0>-cfjor<0>-bhjor<0>+ikmp<0>-emop<0>-ijmq<0>+gjoq<0>+ijkr<0>-gkmr<0>+em2r<0>-ejor<0>
-Inserting basis element 61: ai2j2q<0>-agijmq<0>+adim2q<0>+ag2joq<0>-2adijoq<0>-adgmoq<0>+ad2o2q<0>+chilmp<0>+bi2lmp<0>-cfimnp<0>-cghlop<0>-bgilop<0>-bfimop<0>+cfgnop<0>+bfgo2p<0>-bi2kmq<0>+bi2jnq<0>-bhijoq<0>+bgikoq<0>+beimoq<0>-bdinoq<0>-bego2q<0>+bdho2q<0>-bi2jlr<0>+cfikmr<0>+bhikmr<0>-ceilmr<0>-beimnr<0>+bfijor<0>-cfgkor<0>-bghkor<0>+ceglor<0>+bdilor<0>+begnor<0>-bdfo2r<0>-i2jlp<0>+hikmp<0>+gilmp<0>-fim2p<0>-eimnp<0>+fijop<0>-ghkop<0>-g2lop<0>+dilop<0>+fgmop<0>+egnop<0>-dfo2p<0>+i2jkq<0>-hijmq<0>-gikmq<0>+eim2q<0>+dimnq<0>+ghjoq<0>-eijoq<0>+g2koq<0>-dikoq<0>-egmoq<0>-dgnoq<0>+deo2q<0>+fijmr<0>-dilmr<0>-fgjor<0>+dglor<0>
-Inserting basis element 62: bhilmopq2<0>-bghlo2pq2<0>-bfhmo2pq2<0>+bfgno2pq2<0>+bi2lm2q3<0>-bi2kmnq3<0>+bi2jn2q3<0>-2bgilmoq3<0>-bfim2oq3<0>-bhijnoq3<0>+bgiknoq3<0>+beimnoq3<0>-bdin2oq3<0>+bg2lo2q3<0>+bfgmo2q3<0>-begno2q3<0>+bdhno2q3<0>+2bi2l2mpqr<0>-bhiklopqr<0>-2bgil2opqr<0>-2bh2lmopqr<0>-4bfilmopqr<0>+2bghlnopqr<0>+2bfhmnopqr<0>-2bfgn2opqr<0>+bfhko2pqr<0>+2bfglo2pqr<0>+behlo2pqr<0>+2bf2mo2pqr<0>-befno2pqr<0>-2bi2klmq2r<0>-3bhilm2q2r<0>+bi2k2nq2r<0>-2bi2jlnq2r<0>+2bhikmnq2r<0>+2bgilmnq2r<0>+bfim2nq2r<0>-bhijn2q2r<0>-bgikn2q2r<0>-beimn2q2r<0>+bdin3q2r<0>+2bgikloq2r<0>+2bfikmoq2r<0>+3bghlmoq2r<0>+2beilmoq2r<0>+bfhm2oq2r<0>+bh2jnoq2r<0>+2bfijnoq2r<0>-bghknoq2r<0>-2beiknoq2r<0>-2bg2lnoq2r<0>+2bdilnoq2r<0>-2bfgmnoq2r<0>-behmnoq2r<0>+2begn2oq2r<0>-bdhn2oq2r<0>-bfgko2q2r<0>-2beglo2q2r<0>-befmo2q2r<0>+be2no2q2r<0>-2bdfno2q2r<0>-chikl2pr2<0>-2bi2kl2pr2<0>-2ch2l2mpr2<0>-5bhil2mpr2<0>+ch2klnpr2<0>+2bhiklnpr2<0>+ceil2npr2<0>+bgil2npr2<0>+4cfhlmnpr2<0>+bh2lmnpr2<0>+4bfilmnpr2<0>-cfhkn2pr2<0>-2bfikn2pr2<0>-cehln2pr2<0>-bghln2pr2<0>-2cf2mn2pr2<0>-bfhmn2pr2<0>+cefn3pr2<0>+bfgn3pr2<0>+cfhklopr2<0>+4bfiklopr2<0>+cehl2opr2<0>+bghl2opr2<0>+2beil2opr2<0>+5bfhlmopr2<0>-2ceflnopr2<0>-2bfglnopr2<0>-2behlnopr2<0>-4bf2mnopr2<0>+2befn2opr2<0>-2bf2ko2pr2<0>-2beflo2pr2<0>+bi2k2lqr2<0>+4bhiklmqr2<0>-bgil2mqr2<0>+2bh2lm2qr2<0>+bfilm2qr2<0>-2bhik2nqr2<0>+3bhijlnqr2<0>-bgiklnqr2<0>-bh2kmnqr2<0>-2bfikmnqr2<0>-3bghlmnqr2<0>-beilmnqr2<0>-bfhm2nqr2<0>+bghkn2qr2<0>+2beikn2qr2<0>+bg2ln2qr2<0>-3bdiln2qr2<0>+bfgmn2qr2<0>+behmn2qr2<0>-begn3qr2<0>-bfik2oqr2<0>-bghkloqr2<0>-2beikloqr2<0>+bg2l2oqr2<0>-2bfhkmoqr2<0>-3behlmoqr2<0>-bf2m2oqr2<0>-3bfhjnoqr2<0>+bfgknoqr2<0>+2behknoqr2<0>+2beglnoqr2<0>+3befmnoqr2<0>-2be2n2oqr2<0>+3bdfn2oqr2<0>+befko2qr2<0>+be2lo2qr2<0>-cfik2lr3<0>-bhik2lr3<0>+ceikl2r3<0>+bgikl2r3<0>-2cfhklmr3<0>-2bh2klmr3<0>-2bfiklmr3<0>+2cehl2mr3<0>+2bghl2mr3<0>+beil2mr3<0>-2bfhlm2r3<0>+cfhk2nr3<0>+bh2k2nr3<0>+bfik2nr3<0>-cfhjlnr3<0>-bh2jlnr3<0>-2bfijlnr3<0>+cfgklnr3<0>-cehklnr3<0>-cegl2nr3<0>-bg2l2nr3<0>+cdhl2nr3<0>+2bdil2nr3<0>+cf2kmnr3<0>+2bfhkmnr3<0>-ceflmnr3<0>+2behlmnr3<0>+bf2m2nr3<0>+cf2jn2r3<0>+bfhjn2r3<0>-cefkn2r3<0>-2behkn2r3<0>+ce2ln2r3<0>-cdfln2r3<0>+bdhln2r3<0>-2befmn2r3<0>+be2n3r3<0>-bdfn3r3<0>+cf2k2or3<0>+bfhk2or3<0>+behklor3<0>-ce2l2or3<0>-2begl2or3<0>+2bf2kmor3<0>+2bf2jnor3<0>-2befknor3<0>-2bdflnor3<0>+i2l2np3<0>-hiln2p3<0>+fin3p3<0>+h2lnop3<0>-2filnop3<0>-fhn2op3<0>+f2no2p3<0>+i2l2mp2q<0>-2i2klnp2q<0>+hikn2p2q<0>+giln2p2q<0>-fimn2p2q<0>-ein3p2q<0>-gil2op2q<0>-2filmop2q<0>-h2knop2q<0>+2fiknop2q<0>-ghlnop2q<0>+2eilnop2q<0>+fhmnop2q<0>+ehn2op2q<0>+fglo2p2q<0>+f2mo2p2q<0>-2efno2p2q<0>-i2klmpq2<0>+i2k2npq2<0>+i2jlnpq2<0>-hijn2pq2<0>-gikn2pq2<0>+eimn2pq2<0>+din3pq2<0>+giklopq2<0>+fikmopq2<0>+eilmopq2<0>+h2jnopq2<0>-fijnopq2<0>+ghknopq2<0>-2eiknopq2<0>-dilnopq2<0>-ehmnopq2<0>-dhn2opq2<0>-eglo2pq2<0>-efmo2pq2<0>+e2no2pq2<0>+dfno2pq2<0>+i2jlmq3<0>-i2jknq3<0>+gijn2q3<0>-dimn2q3<0>-gijloq3<0>-fijmoq3<0>-dilmoq3<0>-ghjnoq3<0>+eijnoq3<0>+diknoq3<0>+dhmnoq3<0>+dglo2q3<0>+dfmo2q3<0>-deno2q3<0>-i2kl2p2r<0>-3hil2mp2r<0>+2hiklnp2r<0>-gil2np2r<0>+4filmnp2r<0>-3fikn2p2r<0>+eiln2p2r<0>+2fiklop2r<0>+ghl2op2r<0>+eil2op2r<0>+3fhlmop2r<0>+fhknop2r<0>-3ehlnop2r<0>-4f2mnop2r<0>+2efn2op2r<0>-f2ko2p2r<0>-eflo2p2r<0>+i2k2lpqr<0>+3hiklmpqr<0>-2hik2npqr<0>+giklnpqr<0>-fikmnpqr<0>-3eilmnpqr<0>+3fijn2pqr<0>+2eikn2pqr<0>-3diln2pqr<0>-fik2opqr<0>-ghklopqr<0>-2eiklopqr<0>-fhkmopqr<0>-2ehlmopqr<0>-3fhjnopqr<0>-2fgknopqr<0>+2ehknopqr<0>+2eglnopqr<0>+3dhlnopqr<0>+4efmnopqr<0>-2e2n2opqr<0>+efko2pqr<0>+e2lo2pqr<0>-i2jklq2r<0>-3hijlmq2r<0>+2hijknq2r<0>-gijlnq2r<0>+fijmnq2r<0>+3dilmnq2r<0>-2eijn2q2r<0>+fijkoq2r<0>+ghjloq2r<0>+eijloq2r<0>+dikloq2r<0>+fhjmoq2r<0>+2dhlmoq2r<0>+2fgjnoq2r<0>-2dhknoq2r<0>-2dglnoq2r<0>-4dfmnoq2r<0>+2den2oq2r<0>-dfko2q2r<0>-delo2q2r<0>-hik2lpr2<0>-2h2klmpr2<0>-fiklmpr2<0>+eil2mpr2<0>+h2k2npr2<0>+fik2npr2<0>-3fijlnpr2<0>+3dil2npr2<0>+fhkmnpr2<0>+3ehlmnpr2<0>+fgkn2pr2<0>-2ehkn2pr2<0>-egln2pr2<0>-2efmn2pr2<0>+e2n3pr2<0>+fhk2opr2<0>+fgklopr2<0>+ehklopr2<0>-egl2opr2<0>+f2kmopr2<0>-eflmopr2<0>+3f2jnopr2<0>-2efknopr2<0>-3dflnopr2<0>+hijklqr2<0>+2h2jlmqr2<0>+fijlmqr2<0>-dil2mqr2<0>-h2jknqr2<0>-fijknqr2<0>+2eijlnqr2<0>-2diklnqr2<0>-fhjmnqr2<0>-3dhlmnqr2<0>-fgjn2qr2<0>+ehjn2qr2<0>+dhkn2qr2<0>+dgln2qr2<0>+2dfmn2qr2<0>-den3qr2<0>-fhjkoqr2<0>-fgjloqr2<0>-ehjloqr2<0>+dgl2oqr2<0>-f2jmoqr2<0>+dflmoqr2<0>-efjnoqr2<0>+3dfknoqr2<0>-fijklr3<0>+dikl2r3<0>-2fhjlmr3<0>+2dhl2mr3<0>+fhjknr3<0>+fgjlnr3<0>-ehjlnr3<0>-dgl2nr3<0>+f2jmnr3<0>-dflmnr3<0>-dfkn2r3<0>+deln2r3<0>+f2jkor3<0>+efjlor3<0>-dfklor3<0>-del2or3<0>
-Inserting basis element 63: bdhijkn2q3r2<0>-2bdgijln2q3r2<0>+2be2ijmn2q3r2<0>+164bdfijmn2q3r2<0>+165bdeikmn2q3r2<0>+3bd2ilmn2q3r2<0>-3bdeijn3q3r2<0>+166bfhij2koq3r2<0>+165bfgij2loq3r2<0>+166behij2loq3r2<0>-begijkloq3r2<0>-bdhijkloq3r2<0>+2bdgik2loq3r2<0>+165bdgijl2oq3r2<0>+166bfh2j2moq3r2<0>+165bf2ij2moq3r2<0>+166bfghjkmoq3r2<0>-befijkmoq3r2<0>+beghjlmoq3r2<0>-2bdh2jlmoq3r2<0>+2be2ijlmoq3r2<0>+161bdfijlmoq3r2<0>+4bdghklmoq3r2<0>+165bdeiklmoq3r2<0>+befhjm2oq3r2<0>+165bdehlm2oq3r2<0>-bfghj2noq3r2<0>+3befij2noq3r2<0>-2bfg2jknoq3r2<0>-163bdh2jknoq3r2<0>+165be2ijknoq3r2<0>+2bdfijknoq3r2<0>-2bdghk2noq3r2<0>+bdghjlnoq3r2<0>-3bdeijlnoq3r2<0>+2bdg2klnoq3r2<0>-2befgjmnoq3r2<0>+5bdfhjmnoq3r2<0>-2bdfgkmnoq3r2<0>-bdeglmnoq3r2<0>-164bd2hlmnoq3r2<0>+165bdefm2noq3r2<0>+165bdfgjn2oq3r2<0>-3bdehjn2oq3r2<0>+166bdegkn2oq3r2<0>+165bd2hkn2oq3r2<0>+166bde2mn2oq3r2<0>-2bd2fmn2oq3r2<0>-161bd2en3oq3r2<0>+165bdfhjko2q3r2<0>+165bdfgk2o2q3r2<0>+bdfgjlo2q3r2<0>+165bdehjlo2q3r2<0>+166bdegklo2q3r2<0>-bd2gl2o2q3r2<0>+bdf2jmo2q3r2<0>-bde2lmo2q3r2<0>-163bd2flmo2q3r2<0>+162bdefjno2q3r2<0>+165bde2kno2q3r2<0>-2bd2fkno2q3r2<0>-164bh2ijkl2p2r3<0>+bghijl3p2r3<0>+165bh3jl2mp2r3<0>-4bfhijl2mp2r3<0>+4bgh2kl2mp2r3<0>-bfgikl2mp2r3<0>+163behikl2mp2r3<0>+4begil3mp2r3<0>+164bdhil3mp2r3<0>+beh2l2m2p2r3<0>-befil2m2p2r3<0>-163bh3jklnp2r3<0>-163bfhijklnp2r3<0>+163bgh2k2lnp2r3<0>+166bfgik2lnp2r3<0>+behik2lnp2r3<0>-3bfgijl2np2r3<0>-164behijl2np2r3<0>-begikl2np2r3<0>+bdhikl2np2r3<0>+166bdgil3np2r3<0>+bfh2jlmnp2r3<0>+2bf2ijlmnp2r3<0>-2bfghklmnp2r3<0>+164beh2klmnp2r3<0>-161befiklmnp2r3<0>-4bdh2l2mnp2r3<0>+165be2il2mnp2r3<0>+166bdfil2mnp2r3<0>+befhlm2np2r3<0>+163bfh2jkn2p2r3<0>+163bf2ijkn2p2r3<0>-163bfghk2n2p2r3<0>+163befik2n2p2r3<0>-163beh2jln2p2r3<0>-164befijln2p2r3<0>+164beghkln2p2r3<0>-164be2ikln2p2r3<0>+165bdfikln2p2r3<0>+164bdeil2n2p2r3<0>+166befhkmn2p2r3<0>+164bdfhlmn2p2r3<0>+bef2m2n2p2r3<0>-164befhjn3p2r3<0>+166bdf2mn3p2r3<0>+164bdefn4p2r3<0>+2bfh2jklop2r3<0>+166bf2ijklop2r3<0>+165bfghk2lop2r3<0>+166befik2lop2r3<0>+165bfghjl2op2r3<0>-beh2jl2op2r3<0>+166befijl2op2r3<0>+165bfg2kl2op2r3<0>+beghkl2op2r3<0>+165be2ikl2op2r3<0>+3bdfikl2op2r3<0>-3bdghl3op2r3<0>+4bf2hjlmop2r3<0>-3bf2gklmop2r3<0>-163befhklmop2r3<0>-4befgl2mop2r3<0>-161bdfhl2mop2r3<0>-3bef2lm2op2r3<0>-3bf2gk2nop2r3<0>+2befhk2nop2r3<0>-5befhjlnop2r3<0>+3befgklnop2r3<0>-2be2hklnop2r3<0>+164bdfhklnop2r3<0>-163bdfgl2nop2r3<0>+3bdehl2nop2r3<0>-5bf3jmnop2r3<0>-bef2kmnop2r3<0>+4be2flmnop2r3<0>-3bdf2lmnop2r3<0>+6bef2jn2op2r3<0>-3bf3jko2p2r3<0>+163bdf2klo2p2r3<0>-163bdefl2o2p2r3<0>-163bh2ijk2lpqr3<0>+165bfi2jk2lpqr3<0>+166bghik3lpqr3<0>+165bei2k3lpqr3<0>+165bghijkl2pqr3<0>+166bh3jklmpqr3<0>-161bfhijklmpqr3<0>+161bgh2k2lmpqr3<0>-164bfgik2lmpqr3<0>+2behik2lmpqr3<0>-5behijl2mpqr3<0>-163bdhikl2mpqr3<0>-beh2klm2pqr3<0>-164befiklm2pqr3<0>-3be2il2m2pqr3<0>-beh2jlmnpqr3<0>+166bdh2klmnpqr3<0>+166befhkm2npqr3<0>-be2hlm2npqr3<0>+bfghjkn2pqr3<0>-164beh2jkn2pqr3<0>+164bfg2k2n2pqr3<0>-164beghk2n2pqr3<0>+165bdh2k2n2pqr3<0>+166befhjmn2pqr3<0>+165befgkmn2pqr3<0>+166be2hkmn2pqr3<0>+165bdfhkmn2pqr3<0>+bdehlmn2pqr3<0>+165be2fm2n2pqr3<0>+164be2hjn3pqr3<0>+bdfgkn3pqr3<0>+164bdehkn3pqr3<0>+166bdegln3pqr3<0>+165bdefmn3pqr3<0>-164bde2n4pqr3<0>-bfh2jk2opqr3<0>+165bf2ijk2opqr3<0>+166bfghk3opqr3<0>+165befik3opqr3<0>+165bfghjklopqr3<0>+165befijklopqr3<0>-164bfg2k2lopqr3<0>-2beghk2lopqr3<0>+bdh2k2lopqr3<0>+165be2ik2lopqr3<0>-2bdfik2lopqr3<0>+3bdghkl2opqr3<0>+165bf2hjkmopqr3<0>+bf2gk2mopqr3<0>-befhk2mopqr3<0>-2befhjlmopqr3<0>-164befgklmopqr3<0>+164be2hklmopqr3<0>+164bdfhklmopqr3<0>-161bef2km2opqr3<0>-be2flm2opqr3<0>-3bf2hj2nopqr3<0>+bf2gjknopqr3<0>-161befhjknopqr3<0>+be2hk2nopqr3<0>-162bdfhjlnopqr3<0>+162be2gklnopqr3<0>-164bdfgklnopqr3<0>+bdehklnopqr3<0>+160bd2hl2nopqr3<0>-162bef2jmnopqr3<0>-162be2fkmnopqr3<0>-5bdf2kmnopqr3<0>-162bdeflmnopqr3<0>+159be2fjn2opqr3<0>+4bdf2jn2opqr3<0>-4be3kn2opqr3<0>+164bdefkn2opqr3<0>+5bde2ln2opqr3<0>+162bd2fln2opqr3<0>+3bef2jko2pqr3<0>+165bdf2k2o2pqr3<0>+166be2fjlo2pqr3<0>-163bdefklo2pqr3<0>-3bde2l2o2pqr3<0>-2bh2ij2klq2r3<0>+166bfi2j2klq2r3<0>+165bghijk2lq2r3<0>+166bei2jk2lq2r3<0>+166bghij2l2q2r3<0>+165bh3j2lmq2r3<0>+161bfhij2lmq2r3<0>-161bgh2jklmq2r3<0>+164bfgijklmq2r3<0>-2behijklmq2r3<0>+4begijl2mq2r3<0>-bdhijl2mq2r3<0>+2bdgikl2mq2r3<0>+164beh2jlm2q2r3<0>+164befijlm2q2r3<0>+3bdeil2m2q2r3<0>+3bfhij2knq2r3<0>-3bgh2jk2nq2r3<0>+bfgijk2nq2r3<0>+166behijk2nq2r3<0>-3bfgij2lnq2r3<0>-begijklnq2r3<0>-162bdhijklnq2r3<0>+165bdgik2lnq2r3<0>+165bfh2j2mnq2r3<0>+166bf2ij2mnq2r3<0>+165bfghjkmnq2r3<0>+2befijkmnq2r3<0>+162be2ijlmnq2r3<0>+6bdfijlmnq2r3<0>+162bdghklmnq2r3<0>-163bdeiklmnq2r3<0>-5bd2il2mnq2r3<0>-164befhjm2nq2r3<0>+bdehlm2nq2r3<0>-bfghj2n2q2r3<0>-beh2j2n2q2r3<0>+164befij2n2q2r3<0>-163bfg2jkn2q2r3<0>-beghjkn2q2r3<0>+165bdh2jkn2q2r3<0>-be2ijkn2q2r3<0>+166bdfijkn2q2r3<0>+bdghk2n2q2r3<0>-163bdeijln2q2r3<0>+163bdg2kln2q2r3<0>+165bd2ikln2q2r3<0>-164befgjmn2q2r3<0>-be2hjmn2q2r3<0>-bdfhjmn2q2r3<0>+166bdfgkmn2q2r3<0>+166bdehkmn2q2r3<0>-bd2hlmn2q2r3<0>+166bdefm2n2q2r3<0>+166bdfgjn3q2r3<0>-164bdehjn3q2r3<0>+165bdegkn3q2r3<0>+166bd2fmn3q2r3<0>+164bd2en4q2r3<0>+bfh2j2koq2r3<0>+166bf2ij2koq2r3<0>+165bfghjk2oq2r3<0>+166befijk2oq2r3<0>+166bfghj2loq2r3<0>-beh2j2loq2r3<0>+166befij2loq2r3<0>+165bfg2jkloq2r3<0>+beghjkloq2r3<0>+bdh2jkloq2r3<0>+164be2ijkloq2r3<0>+4bdfijkloq2r3<0>-4bdghk2loq2r3<0>+166bf2hj2moq2r3<0>-bf2gjkmoq2r3<0>+befhjkmoq2r3<0>-befgjlmoq2r3<0>+8bdfhjlmoq2r3<0>-7bdfgklmoq2r3<0>-164bdehklmoq2r3<0>+163bef2jm2oq2r3<0>+bdeflm2oq2r3<0>+166bf2gj2noq2r3<0>+164befhj2noq2r3<0>+2befgjknoq2r3<0>-9bdfhjknoq2r3<0>+4bdfgk2noq2r3<0>+166bdehk2noq2r3<0>-2bdfgjlnoq2r3<0>+2bdegklnoq2r3<0>+166bd2hklnoq2r3<0>+2be2fjmnoq2r3<0>+160bdf2jmnoq2r3<0>+164bdefkmnoq2r3<0>-162bd2flmnoq2r3<0>-161bdefjn2oq2r3<0>+166bde2kn2oq2r3<0>+2bd2fkn2oq2r3<0>+160bd2eln2oq2r3<0>+166bdefk2o2q2r3<0>+165bdefjlo2q2r3<0>+166bde2klo2q2r3<0>-2bd2fklo2q2r3<0>-163bd2el2o2q2r3<0>+165bh3jk2lpr4<0>+165bfhijk2lpr4<0>+166bgh2k3lpr4<0>+166bfgik3lpr4<0>+165behik3lpr4<0>+166bgh2jkl2pr4<0>+behijkl2pr4<0>-bg2hk2l2pr4<0>+begik2l2pr4<0>-bdhik2l2pr4<0>+161bfh2jklmpr4<0>+4bf2ijklmpr4<0>-2bfghk2lmpr4<0>-164befik2lmpr4<0>-163beh2jl2mpr4<0>+165beghkl2mpr4<0>-2bdh2kl2mpr4<0>+3be2ikl2mpr4<0>-2bdfikl2mpr4<0>+bdeil3mpr4<0>+162befhklm2pr4<0>+4be2hl2m2pr4<0>-164bfh2jk2npr4<0>+164bf2ijk2npr4<0>+166bfghk3npr4<0>+165beh2k3npr4<0>+164bfh2j2lnpr4<0>+163bf2ij2lnpr4<0>-162beh2jklnpr4<0>+162befijklnpr4<0>-162bfg2k2lnpr4<0>+4bdfijl2npr4<0>+162bdghkl2npr4<0>-163bdeikl2npr4<0>-5bd2il3npr4<0>+3bf2hjkmnpr4<0>-bf2gk2mnpr4<0>+2befhk2mnpr4<0>-164befhjlmnpr4<0>-2befgklmnpr4<0>-164be2hklmnpr4<0>-bdfhklmnpr4<0>-2bdehl2mnpr4<0>+be2flm2npr4<0>-bf2hj2n2pr4<0>+bf2gjkn2pr4<0>-5befhjkn2pr4<0>+3befgk2n2pr4<0>+164be2hk2n2pr4<0>+166bdfhk2n2pr4<0>+166befgjln2pr4<0>-164be2hjln2pr4<0>-be2gkln2pr4<0>-bdfgkln2pr4<0>+2bdehkln2pr4<0>-bd2hl2n2pr4<0>-bef2jmn2pr4<0>-2be2fkmn2pr4<0>+3bdf2kmn2pr4<0>+be3lmn2pr4<0>+164bdeflmn2pr4<0>+2be2fjn3pr4<0>+164bdf2jn3pr4<0>-164be3kn3pr4<0>+166bdefkn3pr4<0>+163bde2ln3pr4<0>-164bd2fln3pr4<0>+bf2hjk2opr4<0>-bf2gk3opr4<0>+166befhk3opr4<0>+4bdfhk2lopr4<0>-6befgjl2opr4<0>+166be2hjl2opr4<0>-be2gkl2opr4<0>-163bdfgkl2opr4<0>+164bdehkl2opr4<0>+165bdegl3opr4<0>+2bf3jkmopr4<0>+166bef2k2mopr4<0>+163bef2jlmopr4<0>-161bdf2klmopr4<0>-4be3l2mopr4<0>-3bdefl2mopr4<0>-159bf3j2nopr4<0>-2bef2jknopr4<0>-3be2fk2nopr4<0>+166bdf2k2nopr4<0>-3bdf2jlnopr4<0>+165bdefklnopr4<0>+4bde2l2nopr4<0>-163bd2fl2nopr4<0>+165bh3j2klqr4<0>+166bfhij2klqr4<0>+165bgh2jk2lqr4<0>+165bfgijk2lqr4<0>+166behijk2lqr4<0>+165bgh2j2l2qr4<0>-bdgik2l2qr4<0>-160bfh2j2lmqr4<0>-4bf2ij2lmqr4<0>+2bfghjklmqr4<0>+164befijklmqr4<0>-beghjl2mqr4<0>-bdfijl2mqr4<0>+165bdghkl2mqr4<0>+165bdeikl2mqr4<0>+bd2il3mqr4<0>-162befhjlm2qr4<0>-4bdehl2m2qr4<0>+164bfh2j2knqr4<0>-164bf2ij2knqr4<0>+165bfghjk2nqr4<0>+166beh2jk2nqr4<0>+166bfghj2lnqr4<0>+beh2j2lnqr4<0>-164befij2lnqr4<0>+163bfg2jklnqr4<0>+beghjklnqr4<0>-2bdh2jklnqr4<0>-162be2ijklnqr4<0>-4bdfijklnqr4<0>+bdghk2lnqr4<0>-bdeik2lnqr4<0>-164bdghjl2nqr4<0>+165bdeijl2nqr4<0>-164bd2ikl2nqr4<0>-2bf2hj2mnqr4<0>+bf2gjkmnqr4<0>-2befhjkmnqr4<0>+2befgjlmnqr4<0>+be2hjlmnqr4<0>+158bdfhjlmnqr4<0>-160bdfgklmnqr4<0>+163bdehklmnqr4<0>-162bef2jm2nqr4<0>-bdeflm2nqr4<0>+166bf2gj2n2qr4<0>+2befhj2n2qr4<0>-2befgjkn2qr4<0>+2be2hjkn2qr4<0>+3bdfhjkn2qr4<0>+163bdfgk2n2qr4<0>+165bdehk2n2qr4<0>+bdfgjln2qr4<0>+162bdehjln2qr4<0>+2bdegkln2qr4<0>-bd2gl2n2qr4<0>+3bdf2jmn2qr4<0>+bdefkmn2qr4<0>-4bde2lmn2qr4<0>+bd2flmn2qr4<0>+164bdefjn3qr4<0>+165bd2fkn3qr4<0>-163bd2eln3qr4<0>+163bf2hj2koqr4<0>+bf2gjk2oqr4<0>+165befhjk2oqr4<0>+165befhj2loqr4<0>+166be2hjkloqr4<0>+162bdfhjkloqr4<0>+5bdfgk2loqr4<0>-bdehjl2oqr4<0>+2bdegkl2oqr4<0>+165bd2gl3oqr4<0>-2bf3j2moqr4<0>+165bef2jkmoqr4<0>+be2fjlmoqr4<0>-2bdf2jlmoqr4<0>+4bdefklmoqr4<0>-bde2l2moqr4<0>+3bd2fl2moqr4<0>+161bef2j2noqr4<0>-160bdf2jknoqr4<0>+164bdefk2noqr4<0>-2bdefjlnoqr4<0>-2bfh2j2klr5<0>+166bfghj2l2r5<0>-164bdh2jkl2r5<0>+165bdfijkl2r5<0>+166bdghk2l2r5<0>+165bdghjl3r5<0>+161bf2hj2lmr5<0>+2bf2gjklmr5<0>-befhjklmr5<0>-163befgjl2mr5<0>+3bdfhjl2mr5<0>+165bdfgkl2mr5<0>+bdehkl2mr5<0>+163bdegl3mr5<0>+bd2hl3mr5<0>+162bef2jlm2r5<0>+4bdefl2m2r5<0>-bf2gjk2nr5<0>-2befhj2lnr5<0>+2befgjklnr5<0>-2be2hjklnr5<0>+166bdfhjklnr5<0>+165bdfgk2lnr5<0>-164bdehjl2nr5<0>+164bdegkl2nr5<0>+2bf3j2mnr5<0>+bef2jkmnr5<0>+164bdf2jlmnr5<0>+163bdefklmnr5<0>+166bd2fl2mnr5<0>+165bdf2jkn2r5<0>+bdefk2n2r5<0>+2bdefjln2r5<0>+166bd2fkln2r5<0>-2bd2el2n2r5<0>-164bf3j2kor5<0>-164bdf2jklor5<0>+162bdefk2lor5<0>+163bd2fkl2or5<0>-163bd2el3or5<0>
+Inserting basis element 60: abgjo<0>-abdmo<0>-aij2<0>+agjm<0>-adm2<0>+adjo<0>+bcilm<0>+b2imn<0>-bcfmo<0>-b2hmo<0>-cijl<0>+bikm<0>+cglm<0>-cfm2<0>-bhm2<0>-bijn<0>+bgmn<0>+cfjo<0>+bhjo<0>-bemo<0>-ijk<0>+gkm<0>-em2<0>+ejo<0>
+Inserting basis element 61: agjop<0>-admop<0>+aij2r<0>-agjmr<0>+adm2r<0>-adjor<0>+cilmp<0>+bimnp<0>-cfmop<0>-bhmop<0>-bim2q<0>+bgmoq<0>+cijlr<0>-cglmr<0>+cfm2r<0>+bhm2r<0>+bijnr<0>-bgmnr<0>-cfjor<0>-bhjor<0>+ikmp<0>-emop<0>-ijmq<0>+gjoq<0>+ijkr<0>-gkmr<0>+em2r<0>-ejor<0>
+Inserting basis element 62: ai2j2q<0>-agijmq<0>+adim2q<0>+ag2joq<0>-2adijoq<0>-adgmoq<0>+ad2o2q<0>+chilmp<0>+bi2lmp<0>-cfimnp<0>-cghlop<0>-bgilop<0>-bfimop<0>+cfgnop<0>+bfgo2p<0>-bi2kmq<0>+bi2jnq<0>-bhijoq<0>+bgikoq<0>+beimoq<0>-bdinoq<0>-bego2q<0>+bdho2q<0>-bi2jlr<0>+cfikmr<0>+bhikmr<0>-ceilmr<0>-beimnr<0>+bfijor<0>-cfgkor<0>-bghkor<0>+ceglor<0>+bdilor<0>+begnor<0>-bdfo2r<0>-i2jlp<0>+hikmp<0>+gilmp<0>-fim2p<0>-eimnp<0>+fijop<0>-ghkop<0>-g2lop<0>+dilop<0>+fgmop<0>+egnop<0>-dfo2p<0>+i2jkq<0>-hijmq<0>-gikmq<0>+eim2q<0>+dimnq<0>+ghjoq<0>-eijoq<0>+g2koq<0>-dikoq<0>-egmoq<0>-dgnoq<0>+deo2q<0>+fijmr<0>-dilmr<0>-fgjor<0>+dglor<0>
+Inserting basis element 63: bhilmopq2<0>-bghlo2pq2<0>-bfhmo2pq2<0>+bfgno2pq2<0>+bi2lm2q3<0>-bi2kmnq3<0>+bi2jn2q3<0>-2bgilmoq3<0>-bfim2oq3<0>-bhijnoq3<0>+bgiknoq3<0>+beimnoq3<0>-bdin2oq3<0>+bg2lo2q3<0>+bfgmo2q3<0>-begno2q3<0>+bdhno2q3<0>+2bi2l2mpqr<0>-bhiklopqr<0>-2bgil2opqr<0>-2bh2lmopqr<0>-4bfilmopqr<0>+2bghlnopqr<0>+2bfhmnopqr<0>-2bfgn2opqr<0>+bfhko2pqr<0>+2bfglo2pqr<0>+behlo2pqr<0>+2bf2mo2pqr<0>-befno2pqr<0>-2bi2klmq2r<0>-3bhilm2q2r<0>+bi2k2nq2r<0>-2bi2jlnq2r<0>+2bhikmnq2r<0>+2bgilmnq2r<0>+bfim2nq2r<0>-bhijn2q2r<0>-bgikn2q2r<0>-beimn2q2r<0>+bdin3q2r<0>+2bgikloq2r<0>+2bfikmoq2r<0>+3bghlmoq2r<0>+2beilmoq2r<0>+bfhm2oq2r<0>+bh2jnoq2r<0>+2bfijnoq2r<0>-bghknoq2r<0>-2beiknoq2r<0>-2bg2lnoq2r<0>+2bdilnoq2r<0>-2bfgmnoq2r<0>-behmnoq2r<0>+2begn2oq2r<0>-bdhn2oq2r<0>-bfgko2q2r<0>-2beglo2q2r<0>-befmo2q2r<0>+be2no2q2r<0>-2bdfno2q2r<0>-chikl2pr2<0>-2bi2kl2pr2<0>-2ch2l2mpr2<0>-5bhil2mpr2<0>+ch2klnpr2<0>+2bhiklnpr2<0>+ceil2npr2<0>+bgil2npr2<0>+4cfhlmnpr2<0>+bh2lmnpr2<0>+4bfilmnpr2<0>-cfhkn2pr2<0>-2bfikn2pr2<0>-cehln2pr2<0>-bghln2pr2<0>-2cf2mn2pr2<0>-bfhmn2pr2<0>+cefn3pr2<0>+bfgn3pr2<0>+cfhklopr2<0>+4bfiklopr2<0>+cehl2opr2<0>+bghl2opr2<0>+2beil2opr2<0>+5bfhlmopr2<0>-2ceflnopr2<0>-2bfglnopr2<0>-2behlnopr2<0>-4bf2mnopr2<0>+2befn2opr2<0>-2bf2ko2pr2<0>-2beflo2pr2<0>+bi2k2lqr2<0>+4bhiklmqr2<0>-bgil2mqr2<0>+2bh2lm2qr2<0>+bfilm2qr2<0>-2bhik2nqr2<0>+3bhijlnqr2<0>-bgiklnqr2<0>-bh2kmnqr2<0>-2bfikmnqr2<0>-3bghlmnqr2<0>-beilmnqr2<0>-bfhm2nqr2<0>+bghkn2qr2<0>+2beikn2qr2<0>+bg2ln2qr2<0>-3bdiln2qr2<0>+bfgmn2qr2<0>+behmn2qr2<0>-begn3qr2<0>-bfik2oqr2<0>-bghkloqr2<0>-2beikloqr2<0>+bg2l2oqr2<0>-2bfhkmoqr2<0>-3behlmoqr2<0>-bf2m2oqr2<0>-3bfhjnoqr2<0>+bfgknoqr2<0>+2behknoqr2<0>+2beglnoqr2<0>+3befmnoqr2<0>-2be2n2oqr2<0>+3bdfn2oqr2<0>+befko2qr2<0>+be2lo2qr2<0>-cfik2lr3<0>-bhik2lr3<0>+ceikl2r3<0>+bgikl2r3<0>-2cfhklmr3<0>-2bh2klmr3<0>-2bfiklmr3<0>+2cehl2mr3<0>+2bghl2mr3<0>+beil2mr3<0>-2bfhlm2r3<0>+cfhk2nr3<0>+bh2k2nr3<0>+bfik2nr3<0>-cfhjlnr3<0>-bh2jlnr3<0>-2bfijlnr3<0>+cfgklnr3<0>-cehklnr3<0>-cegl2nr3<0>-bg2l2nr3<0>+cdhl2nr3<0>+2bdil2nr3<0>+cf2kmnr3<0>+2bfhkmnr3<0>-ceflmnr3<0>+2behlmnr3<0>+bf2m2nr3<0>+cf2jn2r3<0>+bfhjn2r3<0>-cefkn2r3<0>-2behkn2r3<0>+ce2ln2r3<0>-cdfln2r3<0>+bdhln2r3<0>-2befmn2r3<0>+be2n3r3<0>-bdfn3r3<0>+cf2k2or3<0>+bfhk2or3<0>+behklor3<0>-ce2l2or3<0>-2begl2or3<0>+2bf2kmor3<0>+2bf2jnor3<0>-2befknor3<0>-2bdflnor3<0>+i2l2np3<0>-hiln2p3<0>+fin3p3<0>+h2lnop3<0>-2filnop3<0>-fhn2op3<0>+f2no2p3<0>+i2l2mp2q<0>-2i2klnp2q<0>+hikn2p2q<0>+giln2p2q<0>-fimn2p2q<0>-ein3p2q<0>-gil2op2q<0>-2filmop2q<0>-h2knop2q<0>+2fiknop2q<0>-ghlnop2q<0>+2eilnop2q<0>+fhmnop2q<0>+ehn2op2q<0>+fglo2p2q<0>+f2mo2p2q<0>-2efno2p2q<0>-i2klmpq2<0>+i2k2npq2<0>+i2jlnpq2<0>-hijn2pq2<0>-gikn2pq2<0>+eimn2pq2<0>+din3pq2<0>+giklopq2<0>+fikmopq2<0>+eilmopq2<0>+h2jnopq2<0>-fijnopq2<0>+ghknopq2<0>-2eiknopq2<0>-dilnopq2<0>-ehmnopq2<0>-dhn2opq2<0>-eglo2pq2<0>-efmo2pq2<0>+e2no2pq2<0>+dfno2pq2<0>+i2jlmq3<0>-i2jknq3<0>+gijn2q3<0>-dimn2q3<0>-gijloq3<0>-fijmoq3<0>-dilmoq3<0>-ghjnoq3<0>+eijnoq3<0>+diknoq3<0>+dhmnoq3<0>+dglo2q3<0>+dfmo2q3<0>-deno2q3<0>-i2kl2p2r<0>-3hil2mp2r<0>+2hiklnp2r<0>-gil2np2r<0>+4filmnp2r<0>-3fikn2p2r<0>+eiln2p2r<0>+2fiklop2r<0>+ghl2op2r<0>+eil2op2r<0>+3fhlmop2r<0>+fhknop2r<0>-3ehlnop2r<0>-4f2mnop2r<0>+2efn2op2r<0>-f2ko2p2r<0>-eflo2p2r<0>+i2k2lpqr<0>+3hiklmpqr<0>-2hik2npqr<0>+giklnpqr<0>-fikmnpqr<0>-3eilmnpqr<0>+3fijn2pqr<0>+2eikn2pqr<0>-3diln2pqr<0>-fik2opqr<0>-ghklopqr<0>-2eiklopqr<0>-fhkmopqr<0>-2ehlmopqr<0>-3fhjnopqr<0>-2fgknopqr<0>+2ehknopqr<0>+2eglnopqr<0>+3dhlnopqr<0>+4efmnopqr<0>-2e2n2opqr<0>+efko2pqr<0>+e2lo2pqr<0>-i2jklq2r<0>-3hijlmq2r<0>+2hijknq2r<0>-gijlnq2r<0>+fijmnq2r<0>+3dilmnq2r<0>-2eijn2q2r<0>+fijkoq2r<0>+ghjloq2r<0>+eijloq2r<0>+dikloq2r<0>+fhjmoq2r<0>+2dhlmoq2r<0>+2fgjnoq2r<0>-2dhknoq2r<0>-2dglnoq2r<0>-4dfmnoq2r<0>+2den2oq2r<0>-dfko2q2r<0>-delo2q2r<0>-hik2lpr2<0>-2h2klmpr2<0>-fiklmpr2<0>+eil2mpr2<0>+h2k2npr2<0>+fik2npr2<0>-3fijlnpr2<0>+3dil2npr2<0>+fhkmnpr2<0>+3ehlmnpr2<0>+fgkn2pr2<0>-2ehkn2pr2<0>-egln2pr2<0>-2efmn2pr2<0>+e2n3pr2<0>+fhk2opr2<0>+fgklopr2<0>+ehklopr2<0>-egl2opr2<0>+f2kmopr2<0>-eflmopr2<0>+3f2jnopr2<0>-2efknopr2<0>-3dflnopr2<0>+hijklqr2<0>+2h2jlmqr2<0>+fijlmqr2<0>-dil2mqr2<0>-h2jknqr2<0>-fijknqr2<0>+2eijlnqr2<0>-2diklnqr2<0>-fhjmnqr2<0>-3dhlmnqr2<0>-fgjn2qr2<0>+ehjn2qr2<0>+dhkn2qr2<0>+dgln2qr2<0>+2dfmn2qr2<0>-den3qr2<0>-fhjkoqr2<0>-fgjloqr2<0>-ehjloqr2<0>+dgl2oqr2<0>-f2jmoqr2<0>+dflmoqr2<0>-efjnoqr2<0>+3dfknoqr2<0>-fijklr3<0>+dikl2r3<0>-2fhjlmr3<0>+2dhl2mr3<0>+fhjknr3<0>+fgjlnr3<0>-ehjlnr3<0>-dgl2nr3<0>+f2jmnr3<0>-dflmnr3<0>-dfkn2r3<0>+deln2r3<0>+f2jkor3<0>+efjlor3<0>-dfklor3<0>-del2or3<0>
 Inserting basis element 64: bdh2lmo2pq3r<0>-bdghlno2pq3r<0>-bdfhmno2pq3r<0>+bdfgn2o2pq3r<0>+bdi2lm2nq4r<0>-bdi2kmn2q4r<0>+bdi2jn3q4r<0>+bdhilm2oq4r<0>-2bdgilmnoq4r<0>-bdfim2noq4r<0>-bdhijn2oq4r<0>+bdgikn2oq4r<0>+bdeimn2oq4r<0>-bd2in3oq4r<0>-bdghlmo2q4r<0>+bdg2lno2q4r<0>+bdfgmno2q4r<0>-bdegn2o2q4r<0>+bd2hn2o2q4r<0>+2bdhil2mopq2r2<0>-2bdh2lmnopq2r2<0>+2bdghln2opq2r2<0>+2bdfhmn2opq2r2<0>-2bdfgn3opq2r2<0>-bdh2klo2pq2r2<0>-4bdfhlmo2pq2r2<0>+bdfhkno2pq2r2<0>+bdehlno2pq2r2<0>+2bdf2mno2pq2r2<0>-bdefn2o2pq2r2<0>-3bdhilm2nq3r2<0>+bdi2k2n2q3r2<0>-4bdi2jln2q3r2<0>+2bdhikmn2q3r2<0>+2bdgilmn2q3r2<0>+bdfim2n2q3r2<0>-bdhijn3q3r2<0>-bdgikn3q3r2<0>-bdeimn3q3r2<0>+bd2in4q3r2<0>-2bdhiklmoq3r2<0>-bdh2lm2oq3r2<0>-2bdfilm2oq3r2<0>+2bdhijlnoq3r2<0>+2bdfikmnoq3r2<0>+4bdghlmnoq3r2<0>+bdfhm2noq3r2<0>+bdh2jn2oq3r2<0>+2bdfijn2oq3r2<0>-bdghkn2oq3r2<0>-2bdeikn2oq3r2<0>-2bdg2ln2oq3r2<0>+4bd2iln2oq3r2<0>-2bdfgmn2oq3r2<0>-bdehmn2oq3r2<0>+2bdegn3oq3r2<0>-bd2hn3oq3r2<0>+bdghklo2q3r2<0>+2bdfglmo2q3r2<0>+bdehlmo2q3r2<0>-bdfgkno2q3r2<0>-2bd2hlno2q3r2<0>-bdefmno2q3r2<0>+bde2n2o2q3r2<0>-2bd2fn2o2q3r2<0>+bdh2lmn2pqr3<0>-bdghln3pqr3<0>-bdfhmn3pqr3<0>+bdfgn4pqr3<0>-2bdhikl2opqr3<0>-2bdh2l2mopqr3<0>-4bdfil2mopqr3<0>+2bdh2klnopqr3<0>-2bdghl2nopqr3<0>+6bdfhlmnopqr3<0>-2bdfhkn2opqr3<0>+2bdfgln2opqr3<0>-2bdehln2opqr3<0>-4bdf2mn2opqr3<0>+2bdefn3opqr3<0>+4bdfhklo2pqr3<0>+4bdf2lmo2pqr3<0>-2bdf2kno2pqr3<0>-bdhil2m2q2r3<0>-bdi2k2lnq2r3<0>+4bdi2jl2nq2r3<0>+2bdhiklmnq2r3<0>-2bdgil2mnq2r3<0>+2bdh2lm2nq2r3<0>+3bdfilm2nq2r3<0>-2bdhik2n2q2r3<0>+5bdhijln2q2r3<0>+bdgikln2q2r3<0>-bdh2kmn2q2r3<0>-4bdfikmn2q2r3<0>-3bdghlmn2q2r3<0>+bdeilmn2q2r3<0>-bdfhm2n2q2r3<0>+bdghkn3q2r3<0>+2bdeikn3q2r3<0>+bdg2ln3q2r3<0>-5bd2iln3q2r3<0>+bdfgmn3q2r3<0>+bdehmn3q2r3<0>-bdegn4q2r3<0>+bdhik2loq2r3<0>+2bdh2klmoq2r3<0>+4bdfiklmoq2r3<0>+3bdfhlm2oq2r3<0>-bdfik2noq2r3<0>-2bdh2jlnoq2r3<0>-4bdfijlnoq2r3<0>-2bdghklnoq2r3<0>+2bdeiklnoq2r3<0>+2bdg2l2noq2r3<0>-4bd2il2noq2r3<0>-2bdfhkmnoq2r3<0>-4bdfglmnoq2r3<0>-2bdehlmnoq2r3<0>-bdf2m2noq2r3<0>-3bdfhjn2oq2r3<0>+3bdfgkn2oq2r3<0>+2bdehkn2oq2r3<0>-2bdegln2oq2r3<0>+2bd2hln2oq2r3<0>+3bdefmn2oq2r3<0>-2bde2n3oq2r3<0>+3bd2fn3oq2r3<0>-2bdfgklo2q2r3<0>-bdehklo2q2r3<0>-2bdeflmo2q2r3<0>+bdefkno2q2r3<0>-bde2lno2q2r3<0>+4bd2flno2q2r3<0>-cdh2l3mpr4<0>-2bdhil3mpr4<0>+2cdfikl2npr4<0>+bdhikl2npr4<0>+cdghl3npr4<0>-2cdeil3npr4<0>+cdfhl2mnpr4<0>+2bdfil2mnpr4<0>-2cdfhkln2pr4<0>-bdh2kln2pr4<0>-cdfgl2n2pr4<0>+2cdehl2n2pr4<0>+2bdghl2n2pr4<0>-bdeil2n2pr4<0>-2bdfhlmn2pr4<0>+2cdf2kn3pr4<0>+bdfhkn3pr4<0>-2cdefln3pr4<0>-2bdfgln3pr4<0>+bdehln3pr4<0>+2bdf2mn3pr4<0>-bdefn4pr4<0>+2cdfhkl2opr4<0>+bdh2kl2opr4<0>+4bdfikl2opr4<0>+4bdfhl2mopr4<0>-4cdf2klnopr4<0>-6bdfhklnopr4<0>+2cdefl2nopr4<0>+3bdehl2nopr4<0>-4bdf2lmnopr4<0>+4bdf2kn2opr4<0>-2bdefln2opr4<0>-4bdf2klo2pr4<0>+bdhikl2mqr4<0>+bdh2l2m2qr4<0>+bdhik2lnqr4<0>-6bdhijl2nqr4<0>-2bdh2klmnqr4<0>-2bdfiklmnqr4<0>+2bdghl2mnqr4<0>+bdeil2mnqr4<0>-4bdfhlm2nqr4<0>+bdh2k2n2qr4<0>+3bdfik2n2qr4<0>-bdh2jln2qr4<0>-2bdfijln2qr4<0>-4bdeikln2qr4<0>-2bdg2l2n2qr4<0>+8bd2il2n2qr4<0>+4bdfhkmn2qr4<0>+2bdfglmn2qr4<0>+bdf2m2n2qr4<0>+bdfhjn3qr4<0>-2bdfgkn3qr4<0>-2bdehkn3qr4<0>+2bdegln3qr4<0>+bd2hln3qr4<0>-2bdefmn3qr4<0>+bde2n4qr4<0>-bd2fn4qr4<0>-bdh2k2loqr4<0>-2bdfik2loqr4<0>+bdghkl2oqr4<0>-6bdfhklmoqr4<0>+2bdfgl2moqr4<0>-2bdf2lm2oqr4<0>+bdfhk2noqr4<0>+6bdfhjlnoqr4<0>+2bdfgklnoqr4<0>-bdegl2noqr4<0>+2bdf2kmnoqr4<0>+2bdeflmnoqr4<0>+2bdf2jn2oqr4<0>-4bdefkn2oqr4<0>+4bde2ln2oqr4<0>-8bd2fln2oqr4<0>+2bdefklo2qr4<0>-cdfhkl2mr5<0>-bdh2kl2mr5<0>+cdehl3mr5<0>+bdghl3mr5<0>-bdfhl2m2r5<0>-bdfik2lnr5<0>+2cdfhjl2nr5<0>+2bdh2jl2nr5<0>+4bdfijl2nr5<0>-cdfgkl2nr5<0>-bdghkl2nr5<0>+bdeikl2nr5<0>+cdegl3nr5<0>+bdg2l3nr5<0>-2cd2hl3nr5<0>-4bd2il3nr5<0>+2cdf2klmnr5<0>+4bdfhklmnr5<0>-2cdefl2mnr5<0>-3bdfgl2mnr5<0>-bdehl2mnr5<0>+2bdf2lm2nr5<0>-2cdf2k2n2r5<0>-3bdfhk2n2r5<0>-2cdf2jln2r5<0>-bdfhjln2r5<0>+4cdefkln2r5<0>+bdfgkln2r5<0>+3bdehkln2r5<0>-2cde2l2n2r5<0>+2cd2fl2n2r5<0>-3bd2hl2n2r5<0>-3bdf2kmn2r5<0>+bdeflmn2r5<0>-bdf2jn3r5<0>+3bdefkn3r5<0>-3bde2ln3r5<0>+3bd2fln3r5<0>+2cdf2k2lor5<0>+3bdfhk2lor5<0>-2cdefkl2or5<0>-2bdfgkl2or5<0>-bdehkl2or5<0>+4bdf2klmor5<0>-2bdefl2mor5<0>-bdf2k2nor5<0>-4bdf2jlnor5<0>-bde2l2nor5<0>+4bd2fl2nor5<0>+di2l2n2p3qr<0>-dhiln3p3qr<0>+dfin4p3qr<0>+dh2ln2op3qr<0>-2dfiln2op3qr<0>-dfhn3op3qr<0>+df2n2o2p3qr<0>+di2l2mnp2q2r<0>-2di2kln2p2q2r<0>+dhikn3p2q2r<0>+dgiln3p2q2r<0>-dfimn3p2q2r<0>-dein4p2q2r<0>+dhil2mop2q2r<0>-dgil2nop2q2r<0>-2dfilmnop2q2r<0>-dh2kn2op2q2r<0>+2dfikn2op2q2r<0>-dghln2op2q2r<0>+2deiln2op2q2r<0>+dfhmn2op2q2r<0>+dehn3op2q2r<0>-dfhlmo2p2q2r<0>+dfglno2p2q2r<0>+df2mno2p2q2r<0>-2defn2o2p2q2r<0>-di2klmnpq3r<0>+di2k2n2pq3r<0>+di2jln2pq3r<0>-dhijn3pq3r<0>-dgikn3pq3r<0>+deimn3pq3r<0>+d2in4pq3r<0>-dhiklmopq3r<0>+dgiklnopq3r<0>+dfikmnopq3r<0>+deilmnopq3r<0>+dh2jn2opq3r<0>-dfijn2opq3r<0>+dghkn2opq3r<0>-2deikn2opq3r<0>-d2iln2opq3r<0>-dehmn2opq3r<0>-d2hn3opq3r<0>+dehlmo2pq3r<0>-deglno2pq3r<0>-defmno2pq3r<0>+de2n2o2pq3r<0>+d2fn2o2pq3r<0>+di2jlmnq4r<0>-di2jkn2q4r<0>+dgijn3q4r<0>-d2imn3q4r<0>+dhijlmoq4r<0>-dgijlnoq4r<0>-dfijmnoq4r<0>-d2ilmnoq4r<0>-dghjn2oq4r<0>+deijn2oq4r<0>+d2ikn2oq4r<0>+d2hmn2oq4r<0>-d2hlmo2q4r<0>+d2glno2q4r<0>+d2fmno2q4r<0>-d2en2o2q4r<0>-2di2l3np3r2<0>+2dhil2n2p3r2<0>-2dfiln3p3r2<0>-2dh2l2nop3r2<0>+4dfil2nop3r2<0>+2dfhln2op3r2<0>-2df2lno2p3r2<0>+3di2kl2np2qr2<0>-3dhil2mnp2qr2<0>-3dgil2n2p2qr2<0>+6dfilmn2p2qr2<0>-3dfikn3p2qr2<0>+3deiln3p2qr2<0>-dhikl2op2qr2<0>-dh2l2mop2qr2<0>-2dfil2mop2qr2<0>+2dh2klnop2qr2<0>-2dfiklnop2qr2<0>+3dghl2nop2qr2<0>-3deil2nop2qr2<0>+2dfhlmnop2qr2<0>+dfhkn2op2qr2<0>-5dehln2op2qr2<0>-4df2mn2op2qr2<0>+2defn3op2qr2<0>+dfhklo2p2qr2<0>+2df2lmo2p2qr2<0>-df2kno2p2qr2<0>+3deflno2p2qr2<0>-di2k2lnpq2r2<0>-2di2jl2npq2r2<0>+3dhiklmnpq2r2<0>-2dhik2n2pq2r2<0>+2dhijln2pq2r2<0>+3dgikln2pq2r2<0>-dfikmn2pq2r2<0>-5deilmn2pq2r2<0>+3dfijn3pq2r2<0>+2deikn3pq2r2<0>-5d2iln3pq2r2<0>+dhik2lopq2r2<0>+dh2klmopq2r2<0>+2dfiklmopq2r2<0>-dfik2nopq2r2<0>-2dh2jlnopq2r2<0>+2dfijlnopq2r2<0>-3dghklnopq2r2<0>+2deiklnopq2r2<0>+2d2il2nopq2r2<0>-dfhkmnopq2r2<0>-dehlmnopq2r2<0>-3dfhjn2opq2r2<0>-2dfgkn2opq2r2<0>+2dehkn2opq2r2<0>+2degln2opq2r2<0>+5d2hln2opq2r2<0>+4defmn2opq2r2<0>-2de2n3opq2r2<0>-dehklo2pq2r2<0>-2deflmo2pq2r2<0>+defkno2pq2r2<0>-de2lno2pq2r2<0>-2d2flno2pq2r2<0>+di2jklnq3r2<0>-3dhijlmnq3r2<0>+2dhijkn2q3r2<0>-3dgijln2q3r2<0>+dfijmn2q3r2<0>+5d2ilmn2q3r2<0>-2deijn3q3r2<0>-dhijkloq3r2<0>-dh2jlmoq3r2<0>-2dfijlmoq3r2<0>+dfijknoq3r2<0>+3dghjlnoq3r2<0>-deijlnoq3r2<0>-d2iklnoq3r2<0>+dfhjmnoq3r2<0>+d2hlmnoq3r2<0>+2dfgjn2oq3r2<0>-2d2hkn2oq3r2<0>-2d2gln2oq3r2<0>-4d2fmn2oq3r2<0>+2d2en3oq3r2<0>+d2hklo2q3r2<0>+2d2flmo2q3r2<0>-d2fkno2q3r2<0>+d2elno2q3r2<0>-dhil3mp2r3<0>-dhikl2np2r3<0>+3dgil3np2r3<0>+2dh2l2mnp2r3<0>-2dfil2mnp2r3<0>-dh2kln2p2r3<0>+4dfikln2p2r3<0>-3deil2n2p2r3<0>-4dfhlmn2p2r3<0>+dfhkn3p2r3<0>+dehln3p2r3<0>+2df2mn3p2r3<0>-defn4p2r3<0>+dh2kl2op2r3<0>+2dfikl2op2r3<0>+3dfhl2mop2r3<0>-6dfhklnop2r3<0>-3dfgl2nop2r3<0>+5dehl2nop2r3<0>+2df2kn2op2r3<0>-2defln2op2r3<0>-2df2klo2p2r3<0>+dhikl2mpqr3<0>+dhik2lnpqr3<0>-3dgikl2npqr3<0>-2dh2klmnpqr3<0>-3dfiklmnpqr3<0>+5deil2mnpqr3<0>+dh2k2n2pqr3<0>+3dfik2n2pqr3<0>-9dfijln2pqr3<0>-4deikln2pqr3<0>+9d2il2n2pqr3<0>+dfhkmn2pqr3<0>+3dehlmn2pqr3<0>+dfgkn3pqr3<0>-2dehkn3pqr3<0>-degln3pqr3<0>-2defmn3pqr3<0>+de2n4pqr3<0>-dh2k2lopqr3<0>-2dfik2lopqr3<0>-3dfhklmopqr3<0>+dfhk2nopqr3<0>+6dfhjlnopqr3<0>+5dfgklnopqr3<0>-2degl2nopqr3<0>-6d2hl2nopqr3<0>+df2kmnopqr3<0>-deflmnopqr3<0>+3df2jn2opqr3<0>-4defkn2opqr3<0>+4de2ln2opqr3<0>-3d2fln2opqr3<0>+2defklo2pqr3<0>-dhijl2mq2r3<0>-dhijklnq2r3<0>+3dgijl2nq2r3<0>+2dh2jlmnq2r3<0>+3dfijlmnq2r3<0>-5d2il2mnq2r3<0>-dh2jkn2q2r3<0>-3dfijkn2q2r3<0>+6deijln2q2r3<0>-2d2ikln2q2r3<0>-dfhjmn2q2r3<0>-3d2hlmn2q2r3<0>-dfgjn3q2r3<0>+dehjn3q2r3<0>+d2hkn3q2r3<0>+d2gln3q2r3<0>+2d2fmn3q2r3<0>-d2en4q2r3<0>+dh2jkloq2r3<0>+2dfijkloq2r3<0>+3dfhjlmoq2r3<0>-dfhjknoq2r3<0>-5dfgjlnoq2r3<0>-dehjlnoq2r3<0>+d2hklnoq2r3<0>+2d2gl2noq2r3<0>-df2jmnoq2r3<0>+d2flmnoq2r3<0>-defjn2oq2r3<0>+5d2fkn2oq2r3<0>-4d2eln2oq2r3<0>-2d2fklo2q2r3<0>-dh2kl2mpr4<0>-dfik2lnpr4<0>+6dfijl2npr4<0>+dghkl2npr4<0>+deikl2npr4<0>-6d2il3npr4<0>+4dfhklmnpr4<0>-3dehl2mnpr4<0>-3dfhk2n2pr4<0>+dfhjln2pr4<0>-3dfgkln2pr4<0>+3dehkln2pr4<0>+2degl2n2pr4<0>-d2hl2n2pr4<0>-df2kmn2pr4<0>+deflmn2pr4<0>-df2jn3pr4<0>+3defkn3pr4<0>-3de2ln3pr4<0>+d2fln3pr4<0>+3dfhk2lopr4<0>-dehkl2opr4<0>+2df2klmopr4<0>-2defl2mopr4<0>-df2k2nopr4<0>-6df2jlnopr4<0>-de2l2nopr4<0>+6d2fl2nopr4<0>+dh2jl2mqr4<0>+dfijklnqr4<0>-dghjl2nqr4<0>-4deijl2nqr4<0>+3d2ikl2nqr4<0>-4dfhjlmnqr4<0>+3d2hl2mnqr4<0>+3dfhjkn2qr4<0>+3dfgjln2qr4<0>-3dehjln2qr4<0>-2d2gl2n2qr4<0>+df2jmn2qr4<0>-d2flmn2qr4<0>-3d2fkn3qr4<0>+3d2eln3qr4<0>-3dfhjkloqr4<0>+d2hkl2oqr4<0>-2df2jlmoqr4<0>+2d2fl2moqr4<0>+df2jknoqr4<0>+3defjlnoqr4<0>-3d2fklnoqr4<0>+d2el2noqr4<0>-dfhjl2mr5<0>+d2hl3mr5<0>-dfgjl2nr5<0>+2dehjl2nr5<0>-2d2hkl2nr5<0>+d2gl3nr5<0>+2df2jlmnr5<0>-2d2fl2mnr5<0>-2df2jkn2r5<0>+4d2fkln2r5<0>-2d2el2n2r5<0>+2df2jklor5<0>-2d2fkl2or5<0>
 Inserting basis element 65: bh2jlmo2pq4<0>-bghjlno2pq4<0>-bfhjmno2pq4<0>+bfgjn2o2pq4<0>+bi2jlm2nq5<0>-bi2jkmn2q5<0>+bi2j2n3q5<0>+bhijlm2oq5<0>-2bgijlmnoq5<0>-bfijm2noq5<0>-bhij2n2oq5<0>+bgijkn2oq5<0>+beijmn2oq5<0>-bdijn3oq5<0>-bghjlmo2q5<0>+bg2jlno2q5<0>+bfgjmno2q5<0>-begjn2o2q5<0>+bdhjn2o2q5<0>+4bhijl2mopq3r<0>-2bh2jlmnopq3r<0>+2bghjln2opq3r<0>+2bfhjmn2opq3r<0>-2bfgjn3opq3r<0>-bh2jklo2pq3r<0>-2bghjl2o2pq3r<0>-6bfhjlmo2pq3r<0>+bfhjkno2pq3r<0>+2bfgjlno2pq3r<0>+behjlno2pq3r<0>+2bf2jmno2pq3r<0>-befjn2o2pq3r<0>+2bi2jl2m2q4r<0>-2bi2jklmnq4r<0>-3bhijlm2nq4r<0>+bi2jk2n2q4r<0>-2bi2j2ln2q4r<0>+2bhijkmn2q4r<0>+2bgijlmn2q4r<0>+bfijm2n2q4r<0>-bhij2n3q4r<0>-bgijkn3q4r<0>-beijmn3q4r<0>+bdijn4q4r<0>-2bhijklmoq4r<0>-4bgijl2moq4r<0>-bh2jlm2oq4r<0>-4bfijlm2oq4r<0>+2bgijklnoq4r<0>+2bfijkmnoq4r<0>+4bghjlmnoq4r<0>+2beijlmnoq4r<0>+bfhjm2noq4r<0>+bh2j2n2oq4r<0>+2bfij2n2oq4r<0>-bghjkn2oq4r<0>-2beijkn2oq4r<0>-2bg2jln2oq4r<0>+2bdijln2oq4r<0>-2bfgjmn2oq4r<0>-behjmn2oq4r<0>+2begjn3oq4r<0>-bdhjn3oq4r<0>+bghjklo2q4r<0>+2bg2jl2o2q4r<0>+4bfgjlmo2q4r<0>+behjlmo2q4r<0>-bfgjkno2q4r<0>-2begjlno2q4r<0>-befjmno2q4r<0>+be2jn2o2q4r<0>-2bdfjn2o2q4r<0>+bh2jlmn2pq2r2<0>-bghjln3pq2r2<0>-bfhjmn3pq2r2<0>+bfgjn4pq2r2<0>-4bhijkl2opq2r2<0>-6bh2jl2mopq2r2<0>-8bfijl2mopq2r2<0>+2bh2jklnopq2r2<0>+2bghjl2nopq2r2<0>+10bfhjlmnopq2r2<0>-2bfhjkn2opq2r2<0>-2bfgjln2opq2r2<0>-2behjln2opq2r2<0>-4bf2jmn2opq2r2<0>+2befjn3opq2r2<0>+6bfhjklo2pq2r2<0>+2behjl2o2pq2r2<0>+8bf2jlmo2pq2r2<0>-2bf2jkno2pq2r2<0>-2befjlno2pq2r2<0>-7bhijl2m2q3r2<0>+bi2jk2lnq3r2<0>-4bi2j2l2nq3r2<0>+6bhijklmnq3r2<0>+2bgijl2mnq3r2<0>+2bh2jlm2nq3r2<0>+5bfijlm2nq3r2<0>-2bhijk2n2q3r2<0>+3bhij2ln2q3r2<0>-bgijkln2q3r2<0>-bh2jkmn2q3r2<0>-4bfijkmn2q3r2<0>-3bghjlmn2q3r2<0>-beijlmn2q3r2<0>-bfhjm2n2q3r2<0>+bghjkn3q3r2<0>+2beijkn3q3r2<0>+bg2jln3q3r2<0>-3bdijln3q3r2<0>+bfgjmn3q3r2<0>+behjmn3q3r2<0>-begjn4q3r2<0>+bhijk2loq3r2<0>+4bhij2l2oq3r2<0>+2bh2jklmoq3r2<0>+8bfijklmoq3r2<0>+6bghjl2moq3r2<0>+5bfhjlm2oq3r2<0>-bfijk2noq3r2<0>-4bghjklnoq3r2<0>-2beijklnoq3r2<0>-2bg2jl2noq3r2<0>+4bdijl2noq3r2<0>-2bfhjkmnoq3r2<0>-8bfgjlmnoq3r2<0>-4behjlmnoq3r2<0>-bf2jm2noq3r2<0>-3bfhj2n2oq3r2<0>+3bfgjkn2oq3r2<0>+2behjkn2oq3r2<0>+2begjln2oq3r2<0>+3befjmn2oq3r2<0>-2be2jn3oq3r2<0>+3bdfjn3oq3r2<0>-4bfgjklo2q3r2<0>-behjklo2q3r2<0>-4bdhjl2o2q3r2<0>-4befjlmo2q3r2<0>+befjkno2q3r2<0>+be2jlno2q3r2<0>-4bhijl3mpqr3<0>+2bh2jl2mnpqr3<0>-bh2jkln2pqr3<0>-4bfhjlmn2pqr3<0>+bfhjkn3pqr3<0>+behjln3pqr3<0>+2bf2jmn3pqr3<0>-befjn4pqr3<0>+6bh2jkl2opqr3<0>+8bfijkl2opqr3<0>-4bghjl3opqr3<0>+16bfhjl2mopqr3<0>-10bfhjklnopqr3<0>+4bfgjl2nopqr3<0>-2behjl2nopqr3<0>-12bf2jlmnopqr3<0>+4bf2jkn2opqr3<0>+2befjln2opqr3<0>-8bf2jklo2pqr3<0>-2bi2jk2l2q2r3<0>+8bi2j2l3q2r3<0>+6bhijkl2mq2r3<0>-4bgijl3mq2r3<0>+5bh2jl2m2q2r3<0>+8bfijl2m2q2r3<0>-3bhijk2lnq2r3<0>+4bhij2l2nq2r3<0>+2bgijkl2nq2r3<0>-4bh2jklmnq2r3<0>-10bfijklmnq2r3<0>-4bghjl2mnq2r3<0>+2beijl2mnq2r3<0>-6bfhjlm2nq2r3<0>+bh2jk2n2q2r3<0>+3bfijk2n2q2r3<0>-bh2j2ln2q2r3<0>-2bfij2ln2q2r3<0>+2bghjkln2q2r3<0>-2bdijl2n2q2r3<0>+4bfhjkmn2q2r3<0>+4bfgjlmn2q2r3<0>+2behjlmn2q2r3<0>+bf2jm2n2q2r3<0>+bfhj2n3q2r3<0>-2bfgjkn3q2r3<0>-2behjkn3q2r3<0>+bdhjln3q2r3<0>-2befjmn3q2r3<0>+be2jn4q2r3<0>-bdfjn4q2r3<0>-bh2jk2loq2r3<0>-4bfijk2loq2r3<0>-4bh2j2l2oq2r3<0>-8bfij2l2oq2r3<0>-2bghjkl2oq2r3<0>+4beijkl2oq2r3<0>+4bg2jl3oq2r3<0>-8bdijl3oq2r3<0>-10bfhjklmoq2r3<0>-4bfgjl2moq2r3<0>-2behjl2moq2r3<0>-4bf2jlm2oq2r3<0>+bfhjk2noq2r3<0>+8bfgjklnoq2r3<0>+4behjklnoq2r3<0>-4begjl2noq2r3<0>+4bdhjl2noq2r3<0>+2bf2jkmnoq2r3<0>+8befjlmnoq2r3<0>+2bf2j2n2oq2r3<0>-4befjkn2oq2r3<0>-2bdfjln2oq2r3<0>+4befjklo2q2r3<0>-2be2jl2o2q2r3<0>+8bdfjl2o2q2r3<0>+ch2jkl3pr4<0>+4cfijkl3pr4<0>+4bhijkl3pr4<0>+2cghjl4pr4<0>-4ceijl4pr4<0>+2cfhjl3mpr4<0>+bh2jl3mpr4<0>+8bfijl3mpr4<0>-5cfhjkl2npr4<0>-2bh2jkl2npr4<0>-2bfijkl2npr4<0>-2cfgjl3npr4<0>+3cehjl3npr4<0>+3bghjl3npr4<0>-2beijl3npr4<0>-2cf2jl2mnpr4<0>-5bfhjl2mnpr4<0>+4cf2jkln2pr4<0>+4bfhjkln2pr4<0>-3cefjl2n2pr4<0>-3bfgjl2n2pr4<0>+4bf2jlmn2pr4<0>-2bf2jkn3pr4<0>-4cf2jkl2opr4<0>-14bfhjkl2opr4<0>+4cefjl3opr4<0>+6behjl3opr4<0>-8bf2jl2mopr4<0>+12bf2jklnopr4<0>-4befjl2nopr4<0>+bhijk2l2qr4<0>-12bhij2l3qr4<0>-6bh2jkl2mqr4<0>-6bfijkl2mqr4<0>+7bghjl3mqr4<0>+2beijl3mqr4<0>-11bfhjl2m2qr4<0>+2bh2jk2lnqr4<0>+5bfijk2lnqr4<0>-6beijkl2nqr4<0>-3bg2jl3nqr4<0>+12bdijl3nqr4<0>+12bfhjklmnqr4<0>+3bfgjl2mnqr4<0>+4bf2jlm2nqr4<0>-3bfhjk2n2qr4<0>+bfhj2ln2qr4<0>-3bfgjkln2qr4<0>-behjkln2qr4<0>+3begjl2n2qr4<0>-bdhjl2n2qr4<0>-3bf2jkmn2qr4<0>-3befjlmn2qr4<0>-bf2j2n3qr4<0>+3befjkn3qr4<0>-be2jln3qr4<0>+bdfjln3qr4<0>+5bfhjk2loqr4<0>+12bfhj2l2oqr4<0>-2bfgjkl2oqr4<0>-2behjkl2oqr4<0>-2begjl3oqr4<0>+8bf2jklmoqr4<0>-bf2jk2noqr4<0>-8befjklnoqr4<0>+6be2jl2noqr4<0>-12bdfjl2noqr4<0>+cfhjk2l2r5<0>+bh2jk2l2r5<0>-2bfijk2l2r5<0>+4cfhj2l3r5<0>+4bh2j2l3r5<0>+8bfij2l3r5<0>-2cfgjkl3r5<0>-cehjkl3r5<0>-3bghjkl3r5<0>+2beijkl3r5<0>+2cegjl4r5<0>+2bg2jl4r5<0>-4cdhjl4r5<0>-8bdijl4r5<0>+6cf2jkl2mr5<0>+12bfhjkl2mr5<0>-6cefjl3mr5<0>-8bfgjl3mr5<0>-5behjl3mr5<0>+6bf2jl2m2r5<0>-4cf2jk2lnr5<0>-6bfhjk2lnr5<0>-4cf2j2l2nr5<0>-4bfhj2l2nr5<0>+7cefjkl2nr5<0>+3bfgjkl2nr5<0>+4behjkl2nr5<0>-3ce2jl3nr5<0>+4cdfjl3nr5<0>-4bdhjl3nr5<0>-8bf2jklmnr5<0>+befjl2mnr5<0>+2bf2jk2n2r5<0>+2befjkln2r5<0>-3be2jl2n2r5<0>+4bdfjl2n2r5<0>-4bf2jk2lor5<0>-8bf2j2l2or5<0>+6befjkl2or5<0>-2be2jl3or5<0>+8bdfjl3or5<0>+i2jl2n2p3q2<0>-hijln3p3q2<0>+fijn4p3q2<0>+h2jln2op3q2<0>-2fijln2op3q2<0>-fhjn3op3q2<0>+f2jn2o2p3q2<0>+i2jl2mnp2q3<0>-2i2jkln2p2q3<0>+hijkn3p2q3<0>+gijln3p2q3<0>-fijmn3p2q3<0>-eijn4p2q3<0>+hijl2mop2q3<0>-gijl2nop2q3<0>-2fijlmnop2q3<0>-h2jkn2op2q3<0>+2fijkn2op2q3<0>-ghjln2op2q3<0>+2eijln2op2q3<0>+fhjmn2op2q3<0>+ehjn3op2q3<0>-fhjlmo2p2q3<0>+fgjlno2p2q3<0>+f2jmno2p2q3<0>-2efjn2o2p2q3<0>-i2jklmnpq4<0>+i2jk2n2pq4<0>+i2j2ln2pq4<0>-hij2n3pq4<0>-gijkn3pq4<0>+eijmn3pq4<0>+dijn4pq4<0>-hijklmopq4<0>+gijklnopq4<0>+fijkmnopq4<0>+eijlmnopq4<0>+h2j2n2opq4<0>-fij2n2opq4<0>+ghjkn2opq4<0>-2eijkn2opq4<0>-dijln2opq4<0>-ehjmn2opq4<0>-dhjn3opq4<0>+ehjlmo2pq4<0>-egjlno2pq4<0>-efjmno2pq4<0>+e2jn2o2pq4<0>+dfjn2o2pq4<0>+i2j2lmnq5<0>-i2j2kn2q5<0>+gij2n3q5<0>-dijmn3q5<0>+hij2lmoq5<0>-gij2lnoq5<0>-fij2mnoq5<0>-dijlmnoq5<0>-ghj2n2oq5<0>+eij2n2oq5<0>+dijkn2oq5<0>+dhjmn2oq5<0>-dhjlmo2q5<0>+dgjlno2q5<0>+dfjmno2q5<0>-dejn2o2q5<0>+2i2jl3mp2q2r<0>-i2jkl2np2q2r<0>-3hijl2mnp2q2r<0>+2hijkln2p2q2r<0>-gijl2n2p2q2r<0>+4fijlmn2p2q2r<0>-3fijkn3p2q2r<0>+eijln3p2q2r<0>-hijkl2op2q2r<0>-2gijl3op2q2r<0>-h2jl2mop2q2r<0>-6fijl2mop2q2r<0>+2fijklnop2q2r<0>+ghjl2nop2q2r<0>+eijl2nop2q2r<0>+4fhjlmnop2q2r<0>+fhjkn2op2q2r<0>-3ehjln2op2q2r<0>-4f2jmn2op2q2r<0>+2efjn3op2q2r<0>+fhjklo2p2q2r<0>+2fgjl2o2p2q2r<0>+4f2jlmo2p2q2r<0>-f2jkno2p2q2r<0>-efjlno2p2q2r<0>-2i2jkl2mpq3r<0>+i2jk2lnpq3r<0>+3hijklmnpq3r<0>-2hijk2n2pq3r<0>+gijkln2pq3r<0>-fijkmn2pq3r<0>-3eijlmn2pq3r<0>+3fij2n3pq3r<0>+2eijkn3pq3r<0>-3dijln3pq3r<0>+hijk2lopq3r<0>+2gijkl2opq3r<0>+h2jklmopq3r<0>+4fijklmopq3r<0>+2eijl2mopq3r<0>-fijk2nopq3r<0>-ghjklnopq3r<0>-2eijklnopq3r<0>-fhjkmnopq3r<0>-3ehjlmnopq3r<0>-3fhj2n2opq3r<0>-2fgjkn2opq3r<0>+2ehjkn2opq3r<0>+2egjln2opq3r<0>+3dhjln2opq3r<0>+4efjmn2opq3r<0>-2e2jn3opq3r<0>-ehjklo2pq3r<0>-2egjl2o2pq3r<0>-4efjlmo2pq3r<0>+efjkno2pq3r<0>+e2jlno2pq3r<0>+2i2j2l2mq4r<0>-i2j2klnq4r<0>-3hij2lmnq4r<0>+2hij2kn2q4r<0>-gij2ln2q4r<0>+fij2mn2q4r<0>+3dijlmn2q4r<0>-2eij2n3q4r<0>-hij2kloq4r<0>-2gij2l2oq4r<0>-h2j2lmoq4r<0>-4fij2lmoq4r<0>-2dijl2moq4r<0>+fij2knoq4r<0>+ghj2lnoq4r<0>+eij2lnoq4r<0>+dijklnoq4r<0>+fhj2mnoq4r<0>+3dhjlmnoq4r<0>+2fgj2n2oq4r<0>-2dhjkn2oq4r<0>-2dgjln2oq4r<0>-4dfjmn2oq4r<0>+2dejn3oq4r<0>+dhjklo2q4r<0>+2dgjl2o2q4r<0>+4dfjlmo2q4r<0>-dfjkno2q4r<0>-dejlno2q4r<0>-4i2jl4p3r2<0>+4hijl3np3r2<0>-4fijl2n2p3r2<0>-4h2jl3op3r2<0>+8fijl3op3r2<0>+4fhjl2nop3r2<0>-4f2jl2o2p3r2<0>+6i2jkl3p2qr2<0>-7hijl3mp2qr2<0>-hijkl2np2qr2<0>-3gijl3np2qr2<0>+2h2jl2mnp2qr2<0>+10fijl2mnp2qr2<0>-h2jkln2p2qr2<0>-2fijkln2p2qr2<0>+3eijl2n2p2qr2<0>-4fhjlmn2p2qr2<0>+fhjkn3p2qr2<0>+ehjln3p2qr2<0>+2f2jmn3p2qr2<0>-efjn4p2qr2<0>+5h2jkl2op2qr2<0>-2fijkl2op2qr2<0>+6ghjl3op2qr2<0>-6eijl3op2qr2<0>+5fhjl2mop2qr2<0>-4fhjklnop2qr2<0>-3fgjl2nop2qr2<0>-5ehjl2nop2qr2<0>-8f2jlmnop2qr2<0>+2f2jkn2op2qr2<0>+2efjln2op2qr2<0>-4f2jklo2p2qr2<0>+6efjl2o2p2qr2<0>-2i2jk2l2pq2r2<0>-4i2j2l3pq2r2<0>+7hijkl2mpq2r2<0>-3hijk2lnpq2r2<0>+4hij2l2npq2r2<0>+3gijkl2npq2r2<0>-2h2jklmnpq2r2<0>-5fijklmnpq2r2<0>-5eijl2mnpq2r2<0>+h2jk2n2pq2r2<0>+3fijk2n2pq2r2<0>-3fij2ln2pq2r2<0>-dijl2n2pq2r2<0>+fhjkmn2pq2r2<0>+3ehjlmn2pq2r2<0>+fgjkn3pq2r2<0>-2ehjkn3pq2r2<0>-egjln3pq2r2<0>-2efjmn3pq2r2<0>+e2jn4pq2r2<0>-h2jk2lopq2r2<0>-4fijk2lopq2r2<0>-4h2j2l2opq2r2<0>+4fij2l2opq2r2<0>-6ghjkl2opq2r2<0>+4eijkl2opq2r2<0>+4dijl3opq2r2<0>-5fhjklmopq2r2<0>+fhjk2nopq2r2<0>+fgjklnopq2r2<0>+4ehjklnopq2r2<0>+2egjl2nopq2r2<0>+4dhjl2nopq2r2<0>+f2jkmnopq2r2<0>+7efjlmnopq2r2<0>+3f2j2n2opq2r2<0>-4efjkn2opq2r2<0>-3dfjln2opq2r2<0>+4efjklo2pq2r2<0>-2e2jl2o2pq2r2<0>-4dfjl2o2pq2r2<0>+2i2j2kl2q3r2<0>-7hij2l2mq3r2<0>+3hij2klnq3r2<0>-3gij2l2nq3r2<0>+2h2j2lmnq3r2<0>+5fij2lmnq3r2<0>+5dijl2mnq3r2<0>-h2j2kn2q3r2<0>-3fij2kn2q3r2<0>+2eij2ln2q3r2<0>-2dijkln2q3r2<0>-fhj2mn2q3r2<0>-3dhjlmn2q3r2<0>-fgj2n3q3r2<0>+ehj2n3q3r2<0>+dhjkn3q3r2<0>+dgjln3q3r2<0>+2dfjmn3q3r2<0>-dejn4q3r2<0>+h2j2kloq3r2<0>+4fij2kloq3r2<0>+6ghj2l2oq3r2<0>-2eij2l2oq3r2<0>-2dijkl2oq3r2<0>+5fhj2lmoq3r2<0>-fhj2knoq3r2<0>-fgj2lnoq3r2<0>-ehj2lnoq3r2<0>-3dhjklnoq3r2<0>-2dgjl2noq3r2<0>-f2j2mnoq3r2<0>-7dfjlmnoq3r2<0>-efj2n2oq3r2<0>+5dfjkn2oq3r2<0>-4dfjklo2q3r2<0>+2dejl2o2q3r2<0>-hijkl3p2r3<0>+6gijl4p2r3<0>+5h2jl3mp2r3<0>-2fijl3mp2r3<0>-2h2jkl2np2r3<0>+6fijkl2np2r3<0>-ghjl3np2r3<0>-5eijl3np2r3<0>-9fhjl2mnp2r3<0>+4fhjkln2p2r3<0>+fgjl2n2p2r3<0>+4f2jlmn2p2r3<0>-2f2jkn3p2r3<0>-13fhjkl2op2r3<0>-6fgjl3op2r3<0>+10ehjl3op2r3<0>+2f2jl2mop2r3<0>+8f2jklnop2r3<0>-5efjl2nop2r3<0>+hijk2l2pqr3<0>-6gijkl3pqr3<0>-5h2jkl2mpqr3<0>-8fijkl2mpqr3<0>+10eijl3mpqr3<0>+2h2jk2lnpqr3<0>+5fijk2lnpqr3<0>-12fij2l2npqr3<0>+ghjkl2npqr3<0>-6eijkl2npqr3<0>+12dijl3npqr3<0>+6fhjklmnpqr3<0>+3ehjl2mnpqr3<0>-3fhjk2n2pqr3<0>+fhj2ln2pqr3<0>-fgjkln2pqr3<0>-ehjkln2pqr3<0>-dhjl2n2pqr3<0>-f2jkmn2pqr3<0>-3efjlmn2pqr3<0>-f2j2n3pqr3<0>+3efjkn3pqr3<0>-e2jln3pqr3<0>+dfjln3pqr3<0>+5fhjk2lopqr3<0>+12fhj2l2opqr3<0>+10fgjkl2opqr3<0>-2ehjkl2opqr3<0>-4egjl3opqr3<0>-12dhjl3opqr3<0>+4f2jklmopqr3<0>-6efjl2mopqr3<0>-f2jk2nopqr3<0>-8efjklnopqr3<0>+6e2jl2nopqr3<0>-hij2kl2q2r3<0>+6gij2l3q2r3<0>+5h2j2l2mq2r3<0>+8fij2l2mq2r3<0>-10dijl3mq2r3<0>-2h2j2klnq2r3<0>-5fij2klnq2r3<0>-ghj2l2nq2r3<0>+7eij2l2nq2r3<0>-dijkl2nq2r3<0>-6fhj2lmnq2r3<0>-3dhjl2mnq2r3<0>+3fhj2kn2q2r3<0>+fgj2ln2q2r3<0>-ehj2ln2q2r3<0>+2dhjkln2q2r3<0>+f2j2mn2q2r3<0>+3dfjlmn2q2r3<0>-3dfjkn3q2r3<0>+dejln3q2r3<0>-5fhj2kloq2r3<0>-10fgj2l2oq2r3<0>-2ehj2l2oq2r3<0>+4dhjkl2oq2r3<0>+4dgjl3oq2r3<0>-4f2j2lmoq2r3<0>+6dfjl2moq2r3<0>+f2j2knoq2r3<0>+efj2lnoq2r3<0>+7dfjklnoq2r3<0>-6dejl2noq2r3<0>+h2jk2l2pr4<0>-2fijk2l2pr4<0>+12fij2l3pr4<0>+2ghjkl3pr4<0>+2eijkl3pr4<0>-12dijl4pr4<0>+11fhjkl2mpr4<0>-9ehjl3mpr4<0>-6fhjk2lnpr4<0>-5fgjkl2npr4<0>+4ehjkl2npr4<0>+3egjl3npr4<0>-4f2jklmnpr4<0>+2efjl2mnpr4<0>+2f2jk2n2pr4<0>+2efjkln2pr4<0>-3e2jl2n2pr4<0>-4f2jk2lopr4<0>-12f2j2l2opr4<0>+6efjkl2opr4<0>-2e2jl3opr4<0>+12dfjl3opr4<0>-h2j2kl2qr4<0>+2fij2kl2qr4<0>-2ghj2l3qr4<0>-8eij2l3qr4<0>+6dijkl3qr4<0>-11fhj2l2mqr4<0>+9dhjl3mqr4<0>+6fhj2klnqr4<0>+5fgj2l2nqr4<0>-3ehj2l2nqr4<0>-dhjkl2nqr4<0>-3dgjl3nqr4<0>+4f2j2lmnqr4<0>-2dfjl2mnqr4<0>-2f2j2kn2qr4<0>-2dfjkln2qr4<0>+3dejl2n2qr4<0>+4f2j2kloqr4<0>+6efj2l2oqr4<0>-12dfjkl2oqr4<0>+2dejl3oqr4<0>+fhj2kl2r5<0>-2fgj2l3r5<0>+4ehj2l3r5<0>-5dhjkl3r5<0>+2dgjl4r5<0>+6f2j2l2mr5<0>-6dfjl3mr5<0>-4f2j2klnr5<0>-efj2l2nr5<0>+8dfjkl2nr5<0>-3dejl3nr5<0>
 Inserting basis element 66: bdi3lm2q4r<0>-bdi3kmnq4r<0>+bdi3jn2q4r<0>+bdhi2kmoq4r<0>-2bdgi2lmoq4r<0>-bdfi2m2oq4r<0>-2bdhi2jnoq4r<0>+bdgi2knoq4r<0>+bdei2mnoq4r<0>-bd2i2n2oq4r<0>+bdh2ijo2q4r<0>-bdghiko2q4r<0>+bdg2ilo2q4r<0>+2bdfgimo2q4r<0>-bdehimo2q4r<0>-bdegino2q4r<0>+2bd2hino2q4r<0>-bdfg2o3q4r<0>+bdegho3q4r<0>-bd2h2o3q4r<0>-3bdhi2lm2q3r2<0>+bdi3k2nq3r2<0>-4bdi3jlnq3r2<0>+2bdhi2kmnq3r2<0>+2bdgi2lmnq3r2<0>+bdfi2m2nq3r2<0>-bdhi2jn2q3r2<0>-bdgi2kn2q3r2<0>-bdei2mn2q3r2<0>+bd2i2n3q3r2<0>-bdhi2k2oq3r2<0>+4bdhi2jloq3r2<0>-2bdh2ikmoq3r2<0>+4bdghilmoq3r2<0>+2bdfhim2oq3r2<0>+2bdh2ijnoq3r2<0>+4bdfi2jnoq3r2<0>-2bdei2knoq3r2<0>-2bdg2ilnoq3r2<0>+4bd2i2lnoq3r2<0>-4bdfgimnoq3r2<0>+2bdegin2oq3r2<0>-2bd2hin2oq3r2<0>-bdh3jo2q3r2<0>-4bdfhijo2q3r2<0>+bdgh2ko2q3r2<0>+2bdehiko2q3r2<0>-bdg2hlo2q3r2<0>-4bd2hilo2q3r2<0>-2bdfghmo2q3r2<0>+bdeh2mo2q3r2<0>+3bdfg2no2q3r2<0>-2bdeghno2q3r2<0>+bd2h2no2q3r2<0>+bde2ino2q3r2<0>-4bd2fino2q3r2<0>-bde2ho3q3r2<0>+4bd2fho3q3r2<0>-bdhi2l2mpqr3<0>+bdghil2opqr3<0>+2bdfhilmopqr3<0>-2bdfghlo2pqr3<0>-bdf2hmo2pqr3<0>+bdf2gno2pqr3<0>-bdi3k2lq2r3<0>+4bdi3jl2q2r3<0>+2bdhi2klmq2r3<0>-2bdgi2l2mq2r3<0>+3bdh2ilm2q2r3<0>+3bdfi2lm2q2r3<0>-2bdhi2k2nq2r3<0>+5bdhi2jlnq2r3<0>+bdgi2klnq2r3<0>-bdh2ikmnq2r3<0>-4bdfi2kmnq2r3<0>-4bdghilmnq2r3<0>+bdei2lmnq2r3<0>-2bdfhim2nq2r3<0>+bdghikn2q2r3<0>+2bdei2kn2q2r3<0>+bdg2iln2q2r3<0>-5bd2i2ln2q2r3<0>+2bdfgimn2q2r3<0>+bdehimn2q2r3<0>-bdegin3q2r3<0>+2bdh2ik2oq2r3<0>+bdfi2k2oq2r3<0>-5bdh2ijloq2r3<0>-8bdfi2jloq2r3<0>-3bdghikloq2r3<0>+2bdei2kloq2r3<0>+2bdg2il2oq2r3<0>-4bd2i2l2oq2r3<0>+bdh3kmoq2r3<0>+2bdfhikmoq2r3<0>-2bdgh2lmoq2r3<0>-2bdfgilmoq2r3<0>-3bdehilmoq2r3<0>-bdfh2m2oq2r3<0>-3bdf2im2oq2r3<0>-5bdfhijnoq2r3<0>-bdgh2knoq2r3<0>+3bdfgiknoq2r3<0>+2bdg2hlnoq2r3<0>-2bdegilnoq2r3<0>+5bd2hilnoq2r3<0>+4bdfghmnoq2r3<0>-bdeh2mnoq2r3<0>+3bdefimnoq2r3<0>-3bdfg2n2oq2r3<0>+bdeghn2oq2r3<0>-2bde2in2oq2r3<0>+5bd2fin2oq2r3<0>+5bdfh2jo2q2r3<0>+4bdf2ijo2q2r3<0>-bdfghko2q2r3<0>-2bdeh2ko2q2r3<0>-2bdefiko2q2r3<0>-bdfg2lo2q2r3<0>+4bdeghlo2q2r3<0>-bde2ilo2q2r3<0>+8bd2filo2q2r3<0>+3bdf2gmo2q2r3<0>-bdefhmo2q2r3<0>-2bdefgno2q2r3<0>+2bde2hno2q2r3<0>-5bd2fhno2q2r3<0>+bde2fo3q2r3<0>-4bd2f2o3q2r3<0>+2cdfi2kl2pr4<0>+bdhi2kl2pr4<0>+cdghil3pr4<0>-2cdei2l3pr4<0>+cdh3l2mpr4<0>+2bdh2il2mpr4<0>+2bdfi2l2mpr4<0>-2cdfhiklnpr4<0>-bdh2iklnpr4<0>-cdgh2l2npr4<0>-cdfgil2npr4<0>+2cdehil2npr4<0>-bdei2l2npr4<0>-2cdfh2lmnpr4<0>-4bdfhilmnpr4<0>+2cdf2ikn2pr4<0>+bdfhikn2pr4<0>+2cdfghln2pr4<0>-2cdefiln2pr4<0>+bdehiln2pr4<0>+cdf2hmn2pr4<0>+2bdf2imn2pr4<0>-cdf2gn3pr4<0>-bdefin3pr4<0>+2cdfh2klopr4<0>+bdh3klopr4<0>-4cdf2iklopr4<0>-2bdfhiklopr4<0>-2cdfghl2opr4<0>-2cdeh2l2opr4<0>-2bdgh2l2opr4<0>+4cdefil2opr4<0>-2bdfgil2opr4<0>-4bdf2ilmopr4<0>-2cdf2hknopr4<0>-bdfh2knopr4<0>+2cdf2glnopr4<0>+2cdefhlnopr4<0>+4bdfghlnopr4<0>-bdeh2lnopr4<0>+2bdefilnopr4<0>-2bdf2gn2opr4<0>+bdefhn2opr4<0>+2cdf3ko2pr4<0>+bdf2hko2pr4<0>-2cdef2lo2pr4<0>+2bdf2glo2pr4<0>+2bdf3mo2pr4<0>-bdef2no2pr4<0>+bdhi2k2lqr4<0>-6bdhi2jl2qr4<0>-3bdh2iklmqr4<0>-2bdfi2klmqr4<0>+3bdghil2mqr4<0>+bdei2l2mqr4<0>-bdh3lm2qr4<0>-4bdfhilm2qr4<0>+bdh2ik2nqr4<0>+3bdfi2k2nqr4<0>-bdh2ijlnqr4<0>-2bdfi2jlnqr4<0>+bdghiklnqr4<0>-4bdei2klnqr4<0>-2bdg2il2nqr4<0>+8bd2i2l2nqr4<0>+5bdfhikmnqr4<0>+2bdgh2lmnqr4<0>+2bdfgilmnqr4<0>+bdfh2m2nqr4<0>+bdf2im2nqr4<0>+bdfhijn2qr4<0>-3bdfgikn2qr4<0>-2bdehikn2qr4<0>-bdg2hln2qr4<0>+2bdegiln2qr4<0>+bd2hiln2qr4<0>-2bdfghmn2qr4<0>-2bdefimn2qr4<0>+bdfg2n3qr4<0>+bde2in3qr4<0>-bd2fin3qr4<0>-bdh3k2oqr4<0>-4bdfhik2oqr4<0>+bdh3jloqr4<0>+14bdfhijloqr4<0>+2bdgh2kloqr4<0>+2bdfgikloqr4<0>+2bdehikloqr4<0>-bdg2hl2oqr4<0>-bdegil2oqr4<0>-2bd2hil2oqr4<0>-2bdfh2kmoqr4<0>+2bdf2ikmoqr4<0>+3bdeh2lmoqr4<0>+3bdf2hm2oqr4<0>-bdfh2jnoqr4<0>+2bdf2ijnoqr4<0>+2bdeh2knoqr4<0>-2bdefiknoqr4<0>+2bdfg2lnoqr4<0>-5bdeghlnoqr4<0>-bd2h2lnoqr4<0>+4bde2ilnoqr4<0>-14bd2filnoqr4<0>-4bdf2gmnoqr4<0>-bdefhmnoqr4<0>+3bdefgn2oqr4<0>-bde2hn2oqr4<0>+bd2fhn2oqr4<0>-8bdf2hjo2qr4<0>-bdf2gko2qr4<0>+4bdefhko2qr4<0>-3bde2hlo2qr4<0>+2bd2fhlo2qr4<0>-bdef2mo2qr4<0>-bde2fno2qr4<0>+6bd2f2no2qr4<0>-bdfi2k2lr5<0>+2cdfhijl2r5<0>+2bdh2ijl2r5<0>+4bdfi2jl2r5<0>-cdfgikl2r5<0>-bdghikl2r5<0>+bdei2kl2r5<0>+cdegil3r5<0>+bdg2il3r5<0>-2cd2hil3r5<0>-4bd2i2l3r5<0>+cdfh2klmr5<0>+bdh3klmr5<0>+2cdf2iklmr5<0>+4bdfhiklmr5<0>-cdeh2l2mr5<0>-bdgh2l2mr5<0>-2cdefil2mr5<0>-3bdfgil2mr5<0>-2bdehil2mr5<0>+bdfh2lm2r5<0>+2bdf2ilm2r5<0>-2cdf2ik2nr5<0>-3bdfhik2nr5<0>-2cdf2ijlnr5<0>-bdfhijlnr5<0>-cdfghklnr5<0>-bdgh2klnr5<0>+4cdefiklnr5<0>+bdfgiklnr5<0>+3bdehiklnr5<0>+cdeghl2nr5<0>+bdg2hl2nr5<0>-2cde2il2nr5<0>+2cd2fil2nr5<0>-3bd2hil2nr5<0>-cdf2hkmnr5<0>-bdfh2kmnr5<0>-3bdf2ikmnr5<0>+cdefhlmnr5<0>-bdeh2lmnr5<0>+bdefilmnr5<0>-bdf2hm2nr5<0>-bdf2ijn2r5<0>+cdf2gkn2r5<0>+bdfghkn2r5<0>+3bdefikn2r5<0>-cdefgln2r5<0>-bdfg2ln2r5<0>+bdeghln2r5<0>-3bde2iln2r5<0>+3bd2filn2r5<0>+bdf2gmn2r5<0>+bdefhmn2r5<0>-bdefgn3r5<0>+2cdf2hk2or5<0>+3bdfh2k2or5<0>+bdf2ik2or5<0>-2cdf2hjlor5<0>-3bdfh2jlor5<0>-8bdf2ijlor5<0>-4cdefhklor5<0>-3bdfghklor5<0>-3bdeh2klor5<0>+2cde2hl2or5<0>+2cd2fhl2or5<0>+3bdeghl2or5<0>+bd2h2l2or5<0>-bde2il2or5<0>+8bd2fil2or5<0>-2cdf3kmor5<0>-bdf2hkmor5<0>+2cdef2lmor5<0>+2bdf2glmor5<0>-bdefhlmor5<0>-2bdf3m2or5<0>+2cdf3jnor5<0>+3bdf2hjnor5<0>+2bdf2gknor5<0>-3bdefhknor5<0>-2cd2f2lnor5<0>-2bdefglnor5<0>+3bde2hlnor5<0>+bd2fhlnor5<0>+2bdef2mnor5<0>-2bd2f2n2or5<0>+4bdf3jo2r5<0>-bdef2ko2r5<0>+bde2flo2r5<0>-4bd2f2lo2r5<0>+di3l2np3qr<0>-dhi2ln2p3qr<0>+dfi2n3p3qr<0>-dhi2l2op3qr<0>+2dh2ilnop3qr<0>-2dfi2lnop3qr<0>-2dfhin2op3qr<0>-dh3lo2p3qr<0>+2dfhilo2p3qr<0>+dfh2no2p3qr<0>+df2ino2p3qr<0>-df2ho3p3qr<0>+di3l2mp2q2r<0>-2di3klnp2q2r<0>+dhi2kn2p2q2r<0>+dgi2ln2p2q2r<0>-dfi2mn2p2q2r<0>-dei2n3p2q2r<0>+2dhi2klop2q2r<0>-dgi2l2op2q2r<0>-2dfi2lmop2q2r<0>-2dh2iknop2q2r<0>+2dfi2knop2q2r<0>-2dghilnop2q2r<0>+2dei2lnop2q2r<0>+2dfhimnop2q2r<0>+2dehin2op2q2r<0>+dh3ko2p2q2r<0>-2dfhiko2p2q2r<0>+dgh2lo2p2q2r<0>+2dfgilo2p2q2r<0>-2dehilo2p2q2r<0>-dfh2mo2p2q2r<0>+df2imo2p2q2r<0>-deh2no2p2q2r<0>-2defino2p2q2r<0>-df2go3p2q2r<0>+2defho3p2q2r<0>-di3klmpq3r<0>+di3k2npq3r<0>+di3jlnpq3r<0>-dhi2jn2pq3r<0>-dgi2kn2pq3r<0>+dei2mn2pq3r<0>+d2i2n3pq3r<0>-dhi2k2opq3r<0>-dhi2jlopq3r<0>+dgi2klopq3r<0>+dfi2kmopq3r<0>+dei2lmopq3r<0>+2dh2ijnopq3r<0>-dfi2jnopq3r<0>+2dghiknopq3r<0>-2dei2knopq3r<0>-d2i2lnopq3r<0>-2dehimnopq3r<0>-2d2hin2opq3r<0>-dh3jo2pq3r<0>+dfhijo2pq3r<0>-dgh2ko2pq3r<0>-dfgiko2pq3r<0>+2dehiko2pq3r<0>-degilo2pq3r<0>+d2hilo2pq3r<0>+deh2mo2pq3r<0>-defimo2pq3r<0>+d2h2no2pq3r<0>+de2ino2pq3r<0>+d2fino2pq3r<0>+defgo3pq3r<0>-de2ho3pq3r<0>-d2fho3pq3r<0>+di3jlmq4r<0>-di3jknq4r<0>+dgi2jn2q4r<0>-d2i2mn2q4r<0>+dhi2jkoq4r<0>-dgi2jloq4r<0>-dfi2jmoq4r<0>-d2i2lmoq4r<0>-2dghijnoq4r<0>+dei2jnoq4r<0>+d2i2knoq4r<0>+2d2himnoq4r<0>+dgh2jo2q4r<0>+dfgijo2q4r<0>-dehijo2q4r<0>-d2hiko2q4r<0>+d2gilo2q4r<0>-d2h2mo2q4r<0>+d2fimo2q4r<0>-d2eino2q4r<0>-d2fgo3q4r<0>+d2eho3q4r<0>-2di3l3p3r2<0>+2dhi2l2np3r2<0>-2dfi2ln2p3r2<0>-2dh2il2op3r2<0>+6dfi2l2op3r2<0>+2df2in2op3r2<0>+2dfh2lo2p3r2<0>-6df2ilo2p3r2<0>-2df2hno2p3r2<0>+2df3o3p3r2<0>+3di3kl2p2qr2<0>-3dhi2l2mp2qr2<0>-3dgi2l2np2qr2<0>+6dfi2lmnp2qr2<0>-3dfi2kn2p2qr2<0>+3dei2ln2p2qr2<0>-6dfi2klop2qr2<0>+6dghil2op2qr2<0>-3dei2l2op2qr2<0>+6dfhiknop2qr2<0>-6dehilnop2qr2<0>-6df2imnop2qr2<0>-3dfh2ko2p2qr2<0>+3df2iko2p2qr2<0>-6dfghlo2p2qr2<0>+3deh2lo2p2qr2<0>+6defilo2p2qr2<0>+3df2hmo2p2qr2<0>+3df2gno2p2qr2<0>-3def2o3p2qr2<0>-di3k2lpq2r2<0>-2di3jl2pq2r2<0>+3dhi2klmpq2r2<0>-2dhi2k2npq2r2<0>+2dhi2jlnpq2r2<0>+3dgi2klnpq2r2<0>-dfi2kmnpq2r2<0>-5dei2lmnpq2r2<0>+3dfi2jn2pq2r2<0>+2dei2kn2pq2r2<0>-5d2i2ln2pq2r2<0>+2dh2ik2opq2r2<0>+dfi2k2opq2r2<0>-2dh2ijlopq2r2<0>+4dfi2jlopq2r2<0>-6dghiklopq2r2<0>+2dei2klopq2r2<0>+2d2i2l2opq2r2<0>-2dfhikmopq2r2<0>+2dehilmopq2r2<0>-8dfhijnopq2r2<0>-2dfgiknopq2r2<0>+2degilnopq2r2<0>+8d2hilnopq2r2<0>+6defimnopq2r2<0>-2de2in2opq2r2<0>+2d2fin2opq2r2<0>+5dfh2jo2pq2r2<0>-2df2ijo2pq2r2<0>+5dfghko2pq2r2<0>-2deh2ko2pq2r2<0>-2defiko2pq2r2<0>+deghlo2pq2r2<0>-3d2h2lo2pq2r2<0>-de2ilo2pq2r2<0>-4d2filo2pq2r2<0>-3defhmo2pq2r2<0>-3defgno2pq2r2<0>+2de2hno2pq2r2<0>-2d2fhno2pq2r2<0>+de2fo3pq2r2<0>+2d2f2o3pq2r2<0>+di3jklq3r2<0>-3dhi2jlmq3r2<0>+2dhi2jknq3r2<0>-3dgi2jlnq3r2<0>+dfi2jmnq3r2<0>+5d2i2lmnq3r2<0>-2dei2jn2q3r2<0>-2dh2ijkoq3r2<0>-dfi2jkoq3r2<0>+6dghijloq3r2<0>-dei2jloq3r2<0>-d2i2kloq3r2<0>+2dfhijmoq3r2<0>-2d2hilmoq3r2<0>+2dfgijnoq3r2<0>+2dehijnoq3r2<0>-2d2hiknoq3r2<0>-2d2gilnoq3r2<0>-6d2fimnoq3r2<0>+2d2ein2oq3r2<0>-5dfghjo2q3r2<0>+defijo2q3r2<0>+2d2h2ko2q3r2<0>+d2fiko2q3r2<0>-d2ghlo2q3r2<0>+d2eilo2q3r2<0>+3d2fhmo2q3r2<0>+3d2fgno2q3r2<0>-2d2ehno2q3r2<0>-d2efo3q3r2<0>-dhi2kl2p2r3<0>+3dgi2l3p2r3<0>+3dh2il2mp2r3<0>-2dfi2l2mp2r3<0>-dh2iklnp2r3<0>+4dfi2klnp2r3<0>-dghil2np2r3<0>-3dei2l2np2r3<0>-5dfhilmnp2r3<0>+dfhikn2p2r3<0>+dfgiln2p2r3<0>+dehiln2p2r3<0>+2df2imn2p2r3<0>-defin3p2r3<0>+dh3klop2r3<0>-2dfhiklop2r3<0>-2dgh2l2op2r3<0>-7dfgil2op2r3<0>+4dehil2op2r3<0>-dfh2lmop2r3<0>+4df2ilmop2r3<0>-dfh2knop2r3<0>-4df2iknop2r3<0>+5dfghlnop2r3<0>-deh2lnop2r3<0>+2defilnop2r3<0>+df2hmnop2r3<0>-3df2gn2op2r3<0>+defhn2op2r3<0>+3df2hko2p2r3<0>+4df2glo2p2r3<0>-4defhlo2p2r3<0>-2df3mo2p2r3<0>+def2no2p2r3<0>+dhi2k2lpqr3<0>-3dgi2kl2pqr3<0>-3dh2iklmpqr3<0>-3dfi2klmpqr3<0>+5dei2l2mpqr3<0>+dh2ik2npqr3<0>+3dfi2k2npqr3<0>-9dfi2jlnpqr3<0>+dghiklnpqr3<0>-4dei2klnpqr3<0>+9d2i2l2npqr3<0>+2dfhikmnpqr3<0>+3dehilmnpqr3<0>-2dehikn2pqr3<0>-degiln2pqr3<0>-2defimn2pqr3<0>+de2in3pqr3<0>-dh3k2opqr3<0>-4dfhik2opqr3<0>+9dfhijlopqr3<0>+2dgh2klopqr3<0>+9dfgiklopqr3<0>+2dehiklopqr3<0>-2degil2opqr3<0>-9d2hil2opqr3<0>+dfh2kmopqr3<0>+3df2ikmopqr3<0>-7defilmopqr3<0>+9df2ijnopqr3<0>-3dfghknopqr3<0>+2deh2knopqr3<0>-2defiknopqr3<0>-2deghlnopqr3<0>+4de2ilnopqr3<0>-9d2filnopqr3<0>-defhmnopqr3<0>+3defgn2opqr3<0>-de2hn2opqr3<0>-9df2hjo2pqr3<0>-5df2gko2pqr3<0>+4defhko2pqr3<0>+defglo2pqr3<0>-3de2hlo2pqr3<0>+9d2fhlo2pqr3<0>+2def2mo2pqr3<0>-de2fno2pqr3<0>-dhi2jklq2r3<0>+3dgi2jl2q2r3<0>+3dh2ijlmq2r3<0>+3dfi2jlmq2r3<0>-5d2i2l2mq2r3<0>-dh2ijknq2r3<0>-3dfi2jknq2r3<0>-dghijlnq2r3<0>+6dei2jlnq2r3<0>-2d2i2klnq2r3<0>-2dfhijmnq2r3<0>-3d2hilmnq2r3<0>+dehijn2q2r3<0>+d2hikn2q2r3<0>+d2giln2q2r3<0>+2d2fimn2q2r3<0>-d2ein3q2r3<0>+dh3jkoq2r3<0>+4dfhijkoq2r3<0>-2dgh2jloq2r3<0>-9dfgijloq2r3<0>-5dehijloq2r3<0>+3d2hikloq2r3<0>+2d2gil2oq2r3<0>-dfh2jmoq2r3<0>-3df2ijmoq2r3<0>+7d2filmoq2r3<0>+3dfghjnoq2r3<0>-deh2jnoq2r3<0>-3defijnoq2r3<0>-d2h2knoq2r3<0>+5d2fiknoq2r3<0>+2d2ghlnoq2r3<0>-4d2eilnoq2r3<0>+d2fhmnoq2r3<0>-3d2fgn2oq2r3<0>+d2ehn2oq2r3<0>+5df2gjo2q2r3<0>+2defhjo2q2r3<0>-6d2fhko2q2r3<0>-d2fglo2q2r3<0>+3d2ehlo2q2r3<0>-2d2f2mo2q2r3<0>+d2efno2q2r3<0>-dfi2k2lpr4<0>+6dfi2jl2pr4<0>+dghikl2pr4<0>+dei2kl2pr4<0>-6d2i2l3pr4<0>+dh3klmpr4<0>+4dfhiklmpr4<0>-4dehil2mpr4<0>-3dfhik2npr4<0>+dfhijlnpr4<0>-dgh2klnpr4<0>-3dfgiklnpr4<0>+3dehiklnpr4<0>+2degil2npr4<0>-d2hil2npr4<0>-dfh2kmnpr4<0>-df2ikmnpr4<0>-deh2lmnpr4<0>+defilmnpr4<0>-df2ijn2pr4<0>+dfghkn2pr4<0>+3defikn2pr4<0>+deghln2pr4<0>-3de2iln2pr4<0>+d2filn2pr4<0>+defhmn2pr4<0>-defgn3pr4<0>+3dfh2k2opr4<0>+df2ik2opr4<0>-dfh2jlopr4<0>-12df2ijlopr4<0>-3dfghklopr4<0>-3deh2klopr4<0>+deghl2opr4<0>+d2h2l2opr4<0>-de2il2opr4<0>+12d2fil2opr4<0>-3df2hkmopr4<0>+3defhlmopr4<0>+df2hjnopr4<0>+4df2gknopr4<0>-3defhknopr4<0>-2defglnopr4<0>+3de2hlnopr4<0>-d2fhlnopr4<0>+6df3jo2pr4<0>-def2ko2pr4<0>+de2flo2pr4<0>-6d2f2lo2pr4<0>+dfi2jklqr4<0>-dghijl2qr4<0>-4dei2jl2qr4<0>+3d2i2kl2qr4<0>-dh3jlmqr4<0>-4dfhijlmqr4<0>+4d2hil2mqr4<0>+3dfhijknqr4<0>+dgh2jlnqr4<0>+3dfgijlnqr4<0>-3dehijlnqr4<0>-2d2gil2nqr4<0>+dfh2jmnqr4<0>+df2ijmnqr4<0>+d2h2lmnqr4<0>-d2filmnqr4<0>-dfghjn2qr4<0>-3d2fikn2qr4<0>-d2ghln2qr4<0>+3d2eiln2qr4<0>-d2fhmn2qr4<0>+d2fgn3qr4<0>-3dfh2jkoqr4<0>-df2ijkoqr4<0>+3dfghjloqr4<0>+3deh2jloqr4<0>+7defijloqr4<0>-7d2fikloqr4<0>-d2ghl2oqr4<0>+d2eil2oqr4<0>+3df2hjmoqr4<0>-3d2fhlmoqr4<0>-4df2gjnoqr4<0>+3d2fhknoqr4<0>+2d2fglnoqr4<0>-3d2ehlnoqr4<0>-3def2jo2qr4<0>+4d2f2ko2qr4<0>-d2eflo2qr4<0>-dfgijl2r5<0>+2dehijl2r5<0>-2d2hikl2r5<0>+d2gil3r5<0>+dfh2jlmr5<0>+2df2ijlmr5<0>-d2h2l2mr5<0>-2d2fil2mr5<0>-2df2ijknr5<0>-dfghjlnr5<0>+4d2fiklnr5<0>+d2ghl2nr5<0>-2d2eil2nr5<0>-df2hjmnr5<0>+d2fhlmnr5<0>+df2gjn2r5<0>-d2fgln2r5<0>+2df2hjkor5<0>-4defhjlor5<0>+2d2ehl2or5<0>-2df3jmor5<0>+2d2f2lmor5<0>+2def2jnor5<0>-2d2f2knor5<0>

Diff finished.  Tue Jul 13 12:04:14 2021

But this time, we eventually end up constructing an incredibly large matrix and run out of memory:

***** Constructing matrix *****
F4[464,743 by 2,766,033]
F4MatrixBuild2 time recorded:        3.088s (real)

***** Reducing QuadMatrix to bottom right matrix *****

                    464,594          2,301,439   columns
         /------------------|------------------\                                                                                        
 464,594 |     2.6M -  0.0% |    17.8M -  0.0% | non-zero (density)
    rows |   15.2MB - 97.9% |  102.9MB - 99.2% | memory (used)
         |            12.3% |            83.3% | of total memory
         |------------------|------------------|                                                                                        
     149 |   148.6k -  0.2% |   391.7k -  0.1% | non-zero (density)
    rows |    1.9MB - 44.2% |    3.5MB - 63.8% | memory (used)
         |             1.6% |             2.8% | of total memory
         \------------------|------------------/                                                                                        
       Total memory: 123.6MB (97.2% used)

-- SIGSEGV                                                                                                                              
-* stack trace, pid: 57432                                                                                                              
-- SIGSEGV                                                                                                                              
-- SIGSEGV handler called a second time, aborting                                                                                       
                                                                                                                                        
Process M2 exited abnormally with code 2

@d-torrance
Copy link
Member Author

Just saw this issue crop up again on the s390x build of the 1.18 Macaulay2 package for Debian unstable:

 -- making example results for "char(SparseResultant)"                      
E: Build killed with signal TERM after 150 minutes of inactivity

I just uploaded a new version of the mathicgb package a couple days ago, so this is the first time that it was built against that. There weren't many differences in mathicgb itself since the last upload (mostly CMake changes, but I use the autotools build), but it was built against tbb 2020.3, whereas the previous package (uploaded July 2020) was built against tbb 2020.2. So maybe that's related somehow?

@d-torrance
Copy link
Member Author

Also, for the last few weeks, continuous integration tests of the armhf Debian package have been failing a bunch, and a lot of the failing tests are the same as above. So it may not be a big-endian issue after all.

For example, from https://ci.debian.net/data/autopkgtest/testing/armhf/m/macaulay2/14742455/log.gz:

/usr/share/Macaulay2/EngineTests/GB.Test.Mathic.m2:196:1: error:
 -- o10 : Ideal of R1
 -- 
 -- i11 :   time g2 = groebnerBasis(J1, Strategy=>"MGB");
 --      -- used 0.136601 seconds
 -- 
 --                1        4
 -- o11 : Matrix R1  <--- R1
 -- 
 -- i12 :   time g3 = groebnerBasis(J1, Strategy=>"F4");
 -- Killed
 -- 
stdio:1:1:(3): error: test(s) #68 of package EngineTests failed.

Same failing test as in #2162 (comment), but it was killed a little earlier at i12 instead of failing an assertion as i15.

@d-torrance
Copy link
Member Author

d-torrance commented Sep 9, 2021

I went through and catalogued all of the various errors on Debian armhf continuous integration tests (here and here). I'm pretty sure that most of these are using the mathicgb F4 algorithm. Many of them only fail occasionally, although some fail almost all the time.

  • check({1, 2, 3}, "CharacteristicClasses")
  • check(68, "EngineTests")
  • check({0, 1, 2, 3, 5, 7, 8, 9, 10}, "SegreClasses")
  • check({0, 8}, "SpecialFanoFourfolds")
  • check(3, "SparseResultants")
  • check({3, 5}, "MultiprojectiveVarieties")
  • check(21, "IntegralClosure")

@d-torrance d-torrance changed the title "randomKRationalPoint" example result killed on s390x mathicgb F4 algorithm sometimes killed or gives wrong results on s390x and armhf Sep 9, 2021
@mahrud mahrud added this to To do in Engine Projects Oct 16, 2021
@mahrud mahrud moved this from To do to In progress in Engine Projects Oct 16, 2021
@mahrud mahrud moved this from In progress to To do in Engine Projects Oct 16, 2021
@mahrud mahrud added the build issue platform specific issues involving compiling M2, generating examples, or running tests label Nov 19, 2021
@d-torrance
Copy link
Member Author

Some example errors during a build on a Debian s390x porterbox look like they may be related:

(sid_s390x-dchroot)dtorrance@zelenka:~/M2/M2/BUILD/doug$ find . -name *.errors 
./usr-dist/common/share/doc/Macaulay2/K3Surfaces/example-output/_project.errors
./usr-dist/common/share/doc/Macaulay2/K3Surfaces/example-output/___Lattice__Polarized__K3surface_sp__Sequence.errors
./usr-dist/common/share/doc/Macaulay2/K3Surfaces/example-output/___K3_lp__String_rp.errors
(sid_s390x-dchroot)dtorrance@zelenka:~/M2/M2/BUILD/doug$ find . -name *.errors -exec cat {} +
-- -*- M2-comint -*- hash: -1152683301

i1 : S = K3(8,2,-2)

o1 = K3 surface with rank 2 lattice defined by the intersection matrix: | 14 2  |
                                                                        | 2  -2 |
     -- (1,0): K3 surface of genus 8 and degree 14 containing rational curve of degree 2 (cubic fourfold) 
     -- (2,0): K3 surface of genus 29 and degree 56 containing rational curve of degree 4 
     -- (2,1): K3 surface of genus 32 and degree 62 containing rational curve of degree 2 (cubic fourfold) 


o1 : Lattice-polarized K3 surface

i2 : project({5,3,1},S,2,1); -- (5th + 3rd + simple)-projection of S(2,1)
malloc(): invalid size (unsorted)
Aborted (core dumped)
-- -*- M2-comint -*- hash: 1663398387

i1 : S = K3(5,2,-2)

o1 = K3 surface with rank 2 lattice defined by the intersection matrix: | 8 2  |
                                                                        | 2 -2 |
     -- (1,0): K3 surface of genus 5 and degree 8 containing rational curve of degree 2 
     -- (2,0): K3 surface of genus 17 and degree 32 containing rational curve of degree 4 
     -- (2,1): K3 surface of genus 20 and degree 38 containing rational curve of degree 2 (cubic fourfold) 
     -- (3,0): K3 surface of genus 37 and degree 72 containing rational curve of degree 6 
     -- (3,1): K3 surface of genus 42 and degree 82 containing rational curve of degree 4 (GM fourfold) 


o1 : Lattice-polarized K3 surface

i2 : S(1,0)

o2 = K3 surface of genus 5 and degree 8 in PP^5

o2 : Embedded K3 surface

i3 : S(2,1)
free(): corrupted unsorted chunks
Aborted (core dumped)
-- -*- M2-comint -*- hash: -738885788

i1 : K3 "11"
(K3(5,5,-2))(1,2) -- K3 surface of genus 11 and degree 20 containing rational curve of degree 1
(K3(11,2,-2))(1,0) -- K3 surface of genus 11 and degree 20 containing rational curve of degree 2
(K3(3,6,-2))(1,2) -- K3 surface of genus 11 and degree 20 containing rational curve of degree 2
(K3(11,3,0))(1,0) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 3
(K3(8,3,0))(1,1) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 3
(K3(5,3,0))(1,2) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 3
(K3(11,4,0))(1,0) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 4
(K3(7,4,0))(1,1) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 4
(K3(3,4,0))(1,2) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 4
(K3(11,5,0))(1,0) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 5
(K3(5,7,-2))(1,1) -- K3 surface of genus 11 and degree 20 containing rational curve of degree 5
(K3(6,5,0))(1,1) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 5
(K3(5,6,0))(1,1) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 6
(K3(4,7,0))(1,1) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 7
(K3(3,8,0))(1,1) -- K3 surface of genus 11 and degree 20 containing elliptic curve of degree 8

o1 = {(5, 5, -2), (11, 2, -2), (3, 6, -2), (11, 3, 0), (8, 3, 0), (5, 3, 0),
     ------------------------------------------------------------------------
     (11, 4, 0), (7, 4, 0), (3, 4, 0), (11, 5, 0), (5, 7, -2), (6, 5, 0), (5,
     ------------------------------------------------------------------------
     6, 0), (4, 7, 0), (3, 8, 0)}

o1 : List

i2 : S = K3(5,5,-2)

o2 = K3 surface with rank 2 lattice defined by the intersection matrix: | 8 5  |
                                                                        | 5 -2 |
     -- (1,0): K3 surface of genus 5 and degree 8 containing rational curve of degree 5 
     -- (1,1): K3 surface of genus 9 and degree 16 containing rational curve of degree 3 
     -- (1,2): K3 surface of genus 11 and degree 20 containing rational curve of degree 1 (GM fourfold) 
     -- (2,0): K3 surface of genus 17 and degree 32 containing rational curve of degree 10 
     -- (2,1): K3 surface of genus 26 and degree 50 containing rational curve of degree 8 (GM fourfold) 
     -- (2,2): K3 surface of genus 33 and degree 64 containing rational curve of degree 6 
     -- (3,0): K3 surface of genus 37 and degree 72 containing rational curve of degree 15 
     -- (2,3): K3 surface of genus 38 and degree 74 containing rational curve of degree 4 (cubic fourfold) (GM fourfold) 
     -- (2,4): K3 surface of genus 41 and degree 80 containing rational curve of degree 2 


o2 : Lattice-polarized K3 surface

i3 : S(1,2)
-- SIGSEGV
-* stack trace, pid: 44189
 0# stack_trace(std::ostream&, bool) at ../../../../Macaulay2/d/main.cpp:127
 1# segv_handler at ../../../../Macaulay2/d/main.cpp:243
 2# 0x000003FF9A23438E
 3# mgb::F4MatrixProjection::LeftRight::appendRow(mgb::F4ProtoMatrix::Row const&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 4# mgb::F4MatrixProjection::makeAndClearOneStep(unsigned long) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 5# mgb::F4MatrixProjection::makeAndClear(unsigned long) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 6# mgb::F4MatrixBuilder2::Builder::buildMatrixAndClear(std::vector<mgb::F4MatrixBuilder2::RowTask, std::allocator<mgb::F4MatrixBuilder2::RowTask> >&, mgb::QuadMatrix&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 7# mgb::F4MatrixBuilder2::buildMatrixAndClear(mgb::QuadMatrix&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 8# mgb::F4Reducer::classicReduceSPolySet(std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >&, mgb::PolyBasis const&, std::vector<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> >, std::allocator<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> > > >&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 9# mgb::ClassicGBAlg::step() in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
10# mgb::ClassicGBAlg::computeGrobnerBasis() in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
11# mgb::computeGBClassicAlg(mgb::Basis&&, mgb::ClassicGBAlgParams) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
12# mgb::mgbi::internalComputeGroebnerBasis(mgb::GroebnerInputIdealStream&, mgb::mgbi::IdealAdapter&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
13# void mgb::computeGroebnerBasis<MatrixStream>(mgb::GroebnerInputIdealStream&, MatrixStream&) at /usr/include/mathicgb.h:914
14# rawMGB at ../../../../Macaulay2/e/interface/groebner.cpp:811

@d-torrance
Copy link
Member Author

Another one from the s390x porterbox:

(sid_s390x-dchroot)dtorrance@zelenka:~/M2/M2/BUILD/doug$ find . -name *.errors 
./usr-dist/common/share/doc/Macaulay2/QuaternaryQuartics/example-output/___Half_spcanonical_spdegree_sp20.errors
(sid_s390x-dchroot)dtorrance@zelenka:~/M2/M2/BUILD/doug$ find . -name *.errors -exec cat {} +
-- -*- M2-comint -*- hash: -1057978498

i1 : kk=ZZ/101

o1 = kk

o1 : QuotientRing

i2 : S=kk[x0,x1,x2]

o2 = S

o2 : PolynomialRing

i3 : M=random(S^5,S^{6:-1});--a random (5x6) matrix linear forms in P2

             5       6
o3 : Matrix S  <--- S

i4 : m5=minors(5,M);--the ideal of 15 points

o4 : Ideal of S

i5 : m52=saturate m5^2;--the square of the ideal of 15 points, saturated, with no forms of degree 8.

o5 : Ideal of S

i6 : betti res m52

            0  1 2
o6 = total: 1 10 9
         0: 1  . .
         1: .  . .
         2: .  . .
         3: .  . .
         4: .  . .
         5: .  . .
         6: .  . .
         7: .  . .
         8: . 10 9

o6 : BettiTally

i7 : kk=ZZ/101

o7 = kk

o7 : QuotientRing

i8 : S=kk[x0,x1,x2,x3,x4,x5,x6,x7];

i9 : M=random(S^3,S^{5:-1});--a random (3x5) matrix linear forms in P7

             3       5
o9 : Matrix S  <--- S

i10 : m3=minors(3,M);--the ideal of a 4-fold Y,

o10 : Ideal of S

i11 : M12=submatrix (M, {0,1},{0,1,2,3,4});

              2       5
o11 : Matrix S  <--- S

i12 : M23=submatrix (M, {1,2},{0,1,2,3,4});

              2       5
o12 : Matrix S  <--- S

i13 : S1=minors (2,M12);-- a divisor in Y of degree 5

o13 : Ideal of S

i14 : S2=minors (2,M23);-- another divisor equivalent to S1

o14 : Ideal of S

i15 : S12=saturate intersect(S1,S2);--the divisor S1+S2 on Y
-- SIGSEGV
-* stack trace, pid: 48139
 0# stack_trace(std::ostream&, bool) at ../../../../Macaulay2/d/main.cpp:127
 1# segv_handler at ../../../../Macaulay2/d/main.cpp:243
 2# 0x000003FF87B3197E
 3# mgb::F4MatrixProjection::LeftRight::appendRow(mgb::F4ProtoMatrix::Row const&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 4# mgb::F4MatrixProjection::makeAndClearOneStep(unsigned long) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 5# mgb::F4MatrixProjection::makeAndClear(unsigned long) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 6# mgb::F4MatrixBuilder2::Builder::buildMatrixAndClear(std::vector<mgb::F4MatrixBuilder2::RowTask, std::allocator<mgb::F4MatrixBuilder2::RowTask> >&, mgb::QuadMatrix&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 7# mgb::F4MatrixBuilder2::buildMatrixAndClear(mgb::QuadMatrix&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 8# mgb::F4Reducer::classicReduceSPolySet(std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > >&, mgb::PolyBasis const&, std::vector<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> >, std::allocator<std::unique_ptr<mgb::Poly, std::default_delete<mgb::Poly> > > >&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
 9# mgb::ClassicGBAlg::step() in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
10# mgb::ClassicGBAlg::computeGrobnerBasis() in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
11# mgb::computeGBClassicAlg(mgb::Basis&&, mgb::ClassicGBAlgParams) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
12# mgb::mgbi::internalComputeGroebnerBasis(mgb::GroebnerInputIdealStream&, mgb::mgbi::IdealAdapter&) in /usr/lib/s390x-linux-gnu/libmathicgb.so.0
13# void mgb::computeGroebnerBasis<MatrixStream>(mgb::GroebnerInputIdealStream&, MatrixStream&) at /usr/include/mathicgb.h:914
14# rawMGB at ../../../../Macaulay2/e/interface/groebner.cpp:811

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build issue platform specific issues involving compiling M2, generating examples, or running tests
Projects
No open projects
Development

No branches or pull requests

3 participants