Macaulay2 / M2

The primary source code repository for Macaulay2, a system for computing in commutative algebra, algebraic geometry and related fields.
https://macaulay2.com
340 stars 228 forks source link

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

Open d-torrance opened 3 years ago

d-torrance commented 3 years ago

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 commented 3 years ago

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

mikestillman commented 3 years ago

@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 commented 3 years ago

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

d-torrance commented 3 years ago

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 commented 3 years ago

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

d-torrance commented 3 years ago

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 (https://github.com/Macaulay2/mathicgb/commit/d8ae074c7f7655c3b85c2089cd7a05a98a70a46a) 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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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: https://github.com/Macaulay2/M2/blob/a9199f466dafb7c4f830713ae3ff6a9bb350bc26/M2/Macaulay2/tests/ComputationsBook/constructions/test.m2#L267-L269

checkMorphismsForDeg17CY returns a list of length only 1 if it fails: https://github.com/Macaulay2/M2/blob/a9199f466dafb7c4f830713ae3ff6a9bb350bc26/M2/Macaulay2/tests/ComputationsBook/constructions/test.m2#L219-L225 https://github.com/Macaulay2/M2/blob/a9199f466dafb7c4f830713ae3ff6a9bb350bc26/M2/Macaulay2/tests/ComputationsBook/constructions/test.m2#L239

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 commented 3 years ago

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 https://github.com/Macaulay2/mathicgb/pull/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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 https://github.com/Macaulay2/M2/issues/2162#issuecomment-873620056, but it was killed a little earlier at i12 instead of failing an assertion as i15.

d-torrance commented 2 years ago

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.

d-torrance commented 2 years ago

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 commented 2 years ago

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