Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  exam.gi   Sprache: unbekannt

 
#############################################################################
##
#W exam.gi                 POLENTA package                     Bjoern Assmann
##
## examples for polycyclic rational matrix groups
##
#Y 2003
##


#############################################################################
##
#F POL_KroneckerProduct
## 
## Examples built with the Kroneckerproduct.
## 
POL_KroneckerProduct := function( G, e ) 
    local newGens, gens;
    gens := GeneratorsOfGroup( G );
    if e = 0 then 
        e := RandomList( [1,-1] );
    fi;
    newGens := List( gens, x->KroneckerProduct(x,x^e) );
    return Group( newGens );
end;


#############################################################################
##
#F POL_AlmostCrystallographicGroup
## 
## Examples coming from aclib
## 
if not IsPackageMarkedForLoading( "aclib" , "1.0" ) then
    POL_AlmostCrystallographicGroup := false;
else
    POL_AlmostCrystallographicGroup := function( a,b,c )
       local G, mats;
       G := AlmostCrystallographicGroup(a,b,c);
       mats := GeneratorsOfGroup( G );
       G := Group( mats );
       return G;
    end;
fi;

#############################################################################
##
#F PolExamples( n ) .............. .. Examples for polycyc rat. matrix groups
##
# FIXME: This function is documented and should be turned into a GlobalFunction
PolExamples := function( n )
    local i,M,P, nat, G, gens, d, l,r,s;

    # check if aclib is needed
    l := Concatenation( [9..19],[21..24]);
    if POL_AlmostCrystallographicGroup = false then 
        if n in l then
            Print( "package 'aclib' is needed for this example.\n" );
            return fail;
        fi;
    fi;

    # some unipotent groups
    if n=1 then
        return Group(
               [ [ [ 1, -4, 1, 2 ], 
                   [ 0, 1, 5, 1 ], 
                   [ 0, 0, 1, 3 ], 
                   [ 0, 0, 0, 1 ] ]
                 ,
                 [ [ 1, -1, -2, 4 ], 
                   [ 0, 1, -1, 1 ], 
                   [ 0, 0, 1, 1 ], 
                   [ 0, 0, 0, 1 ] ]
                 ,
                 [ [ 1, -4, -2, 1 ], 
                   [ 0, 1, -2, -3 ], 
                   [ 0, 0, 1, 2 ], 
                   [ 0, 0, 0, 1 ] ] 
                ]);
    fi;
    if n=2 then
        return Group(
               [ [ [ 1, 5, -3, 1, -3 ], 
                   [ 0, 1, 2, 0, 1 ], 
                   [ 0, 0, 1, 2, -2 ],
                   [ 0, 0, 0, 1, -2 ], 
                   [ 0, 0, 0, 0, 1 ] ]
                 ,
                 [ [ 1, 3, -3, -1, 1 ], 
                   [ 0, 1, 0, -2, 2 ], 
                   [ 0, 0, 1, 4, 1 ],
                   [ 0, 0, 0, 1, -1 ], 
                   [ 0, 0, 0, 0, 1 ] ] 
               ]);
    fi;
    if n=3 then
        return Group( 
               [ [ [ 73/10, -35/2, 42/5, 63/2 ], 
                   [ 27/20, -11/4, 9/5, 27/4 ],
                   [ -3/5, 1, -4/5, -9 ], 
                   [ -11/20, 7/4, -2/5, 1/4 ] ]
                 ,
                 [ [ -42/5, 423/10, 27/5, 479/10 ], 
                   [ -23/10, 227/20, 13/10, 231/20 ],
                   [ 14/5, -63/5, -4/5, -79/5 ],
                   [ -1/10, 9/20, 1/10, 37/20 ] ] 
               ]);
    fi;
    if n=4 then
        return Group(
               [ [ [ 5, 2, -8, 17, -1 ], 
                   [ -69/4, -15/4, 449/20, -163/5, 53/20 ],
                   [ -2, 4, 9/5, 63/5, 3/5 ], 
                   [ 13/4, 3/4, -121/20, 57/5, -17/20 ],
                   [ 241/4, 7/4, -1477/20, 319/5, -189/20 ] ]
                  ,
                  [ [ 19/2, 0, -3, -19/2, -1/2 ], 
                    [ -74/5, 129/20, 7/4, 159/4, 9/10 ],
                    [ 53/10, 4/5, -4, 9/2, -9/10 ], 
                    [ 37/10, -41/20, -7/4, -29/4, -3/5 ],
                    [ 137/5, -457/20, 37/4, -559/4, 3/10 ] ] 
                ]);
    fi;
    if n in [5..8] then
        return MatExamples( n-4 );
    fi;
    if n=9 then
        return POL_AlmostCrystallographicGroup( 3, 17, [1,0,-3,7] );
    fi;
    if n=10 then
        return POL_AlmostCrystallographicGroup( 3, 16, [3,4,-1,0] );
    fi;
    if n=11 then
        return POL_AlmostCrystallographicGroup( 3, 15, [-1,1,0,0] );
    fi;
    if n=12 then
        return POL_AlmostCrystallographicGroup( 3, 14, [-2,-1,2,-1] );
    fi;
    if n=13 then
        return POL_AlmostCrystallographicGroup( 4, 2, [0,-3,-2,1,-1,-2,4] );
    fi;
    if n=14 then
        return POL_AlmostCrystallographicGroup( 4, 13, [-2,0,-2,-2,-1,-1] );
    fi;
    if n=15 then
        return POL_AlmostCrystallographicGroup( 4, 37, [ 1,2,0,-3,-4] );
    fi;
    if n=16 then
        return POL_AlmostCrystallographicGroup( 4, 86,[0,-2,-1,-2,-1] );
    fi;
    if n=17 then
        return POL_AlmostCrystallographicGroup( 4, 10,[-2,-2,-1]  );
    fi;
    if n=18 then
         return POL_AlmostCrystallographicGroup( 4, 11,[-4,-2,-1] );
    fi;   
    if n=19 then
         return POL_AlmostCrystallographicGroup( 4, 12,[0,1,3,-1] );  
    fi;   
    if n=20 then
        return POL_KroneckerProduct( MatExamples(4), -1  );
    fi;
    if n in [21..24] then
        return POL_KroneckerProduct( PolExamples( n-12 ), 1 );
    fi;
    if n = 25 then 
        #Marco Costantini example
        r := [ [ 1, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ],
               [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0 ],
               [ 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 1, 0 ],
               [ 0, 0, 0, 0, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0, 0, 0, 0 ] ];
        s :=
             [ [ 1, 0, 0, 0, 0, 0, 0, 1 ], [ 0, E(7)^6, 0, 0, 0, 0, 0, 0 ],
               [ 0, 0, E(7), 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ],
               [ 0, 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0 ],
               [ 0, 0, 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 1 ] ];
        return Group( [r,s^7] );
     fi;
     if n = 26 then 
        # subgroup of a group which is conjugate to a direct product
        # of PolExamples(1) and PolExamples(6);
         gens := 
        [ [ [ -403, 2500, 32, -633, -1638, 800, 2073, 406 ],
      [ 3, 37, 20, -9, 5, -11, 29, 7 ], [ -65, -16, 5, 3, -73, 129, -43, 59 ]
        , [ -37, -2936, 80, 735, 1366, 54, -2676, 28 ],
      [ 2, -788, 0, 197, 364, -4, -707, -12 ],
      [ -207, 20, 16, -9, -263, 411, -71, 191 ],
      [ -13, -1276, 0, 319, 567, 26, -1152, -6 ],
      [ 8, 972, 0, -243, -434, -16, 877, 7 ] ],
  [ [ -615, 40, -64, -12, -850, 1248, -241, 515 ],
      [ -9, 37, -4, -9, -31, 19, 29, 7 ],
      [ -39, 347, -7, -87, -205, 80, 293, 41 ],
      [ 437, 3676, -16, -918, -1054, -870, 3495, -290 ],
      [ 106, 748, 0, -187, -189, -212, 719, -72 ],
      [ -149, 1184, -32, -297, -727, 307, 995, 151 ],
      [ 187, 1376, 0, -344, -359, -374, 1319, -126 ],
      [ -106, -816, 0, 204, 217, 212, -779, 70 ] ],
  [ [ -352, -632, -64, 150, -246, 722, -699, 251 ],
      [ 17, -107, -8, 27, 63, -32, -87, -21 ],
      [ -59, -16, -7, 3, -73, 120, -37, 51 ],
      [ -58, 84, -32, -20, -93, 124, 64, 87 ],
      [ -2, 220, 0, -55, -90, 4, 199, 18 ],
      [ -188, -16, -32, 0, -256, 385, -82, 160 ],
      [ -36, 260, 0, -65, -144, 72, 221, 57 ],
      [ 3, -228, 0, 57, 94, -6, -206, -20 ] ],
  [ [ 893, 7836, 0, -1959, -2319, -1784, 7446, -585 ],
      [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 76, 456, 1, -114, -102, -152, 444, -54 ],
      [ -210, -4128, 0, 1033, 1567, 420, -3805, 87 ],
      [ -158, -1776, 0, 444, 587, 316, -1668, 96 ],
      [ 228, 1368, 0, -342, -306, -455, 1332, -162 ],
      [ -142, -2088, 0, 522, 746, 284, -1940, 75 ],
      [ 190, 2100, 0, -525, -690, -380, 1974, -116 ] ],
  [ [ -1656, -60, 0, 15, -1925, 3314, -920, 1473 ],
      [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ -46, 0, 1, 0, -50, 92, -26, 42 ],
      [ 1626, 236, 0, -58, 1847, -3252, 1043, -1434 ],
      [ 468, 20, 0, -5, 551, -936, 259, -414 ],
      [ -138, 0, 0, 0, -150, 277, -78, 126 ],
      [ 700, 76, 0, -19, 805, -1400, 428, -618 ],
      [ -519, 0, 0, 0, -621, 1038, -267, 460 ] ],
  [ [ -427, -4608, 0, 1152, 1464, 856, -4359, 207 ],
      [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ -104, -360, 1, 90, 36, 208, -372, 90 ],
      [ -525, 2300, 0, -574, -1560, 1050, 1845, 660 ],
      [ -48, 876, 0, -219, -421, 96, 771, 96 ],
      [ -312, -1080, 0, 270, 108, 625, -1116, 270 ],
      [ -171, 1104, 0, -276, -657, 342, 923, 234 ],
      [ 58, -936, 0, 234, 457, -116, -821, -110 ] ],
  [ [ -479, 2668, -64, -669, -1882, 976, 2189, 434 ],
      [ -9, 37, -4, -9, -31, 19, 29, 7 ],
      [ -71, -13, -7, 3, -91, 144, -43, 59 ],
      [ -85, -2936, -16, 735, 1222, 174, -2676, 28 ],
      [ 2, -788, 0, 197, 364, -4, -707, -12 ],
      [ -245, 104, -32, -27, -385, 499, -13, 205 ],
      [ -13, -1276, 0, 319, 567, 26, -1152, -6 ],
      [ 8, 972, 0, -243, -434, -16, 877, 7 ] ],
  [ [ -539, -128, 32, 24, -606, 1072, -357, 487 ],
      [ 3, 37, 20, -9, 5, -11, 29, 7 ],
      [ -33, 344, 5, -87, -187, 65, 293, 41 ],
      [ 485, 3676, 80, -918, -910, -990, 3495, -290 ],
      [ 106, 748, 0, -187, -189, -212, 719, -72 ],
      [ -111, 1100, 16, -279, -605, 219, 937, 137 ],
      [ 187, 1376, 0, -344, -359, -374, 1319, -126 ],
      [ -106, -816, 0, 204, 217, 212, -779, 70 ] ],
  [ [ -352, -632, -64, 150, -246, 722, -699, 251 ],
      [ 17, -107, -8, 27, 63, -32, -87, -21 ],
      [ -59, -16, -7, 3, -73, 120, -37, 51 ],
      [ -58, 84, -32, -20, -93, 124, 64, 87 ],
      [ -2, 220, 0, -55, -90, 4, 199, 18 ],
      [ -188, -16, -32, 0, -256, 385, -82, 160 ],
      [ -36, 260, 0, -65, -144, 72, 221, 57 ],
      [ 3, -228, 0, 57, 94, -6, -206, -20 ] ] ];
      return Group( gens );
     fi;


     if n = 27 then
        # subgroup of a group which is conjugate to a direct product
        # of PolExamples(3) and PolExamples(5);
         gens := 
         [ [ [ -396/5, 49, -4/5, 0, 147, -292, -2611/5, 1799/10, 6, -2/5, 2, -373/2,
          882, 0, 0, 16/5, -2, -2, 389/2, -59 ],
      [ 539/10, -97/2, 78/5, 2, -283/2, 283, 3619/10, -2541/20, 15, 44/5, 2,
          623/4, -849, 2, -5, -132/5, 0, 20, -623/4, 91/2 ],
      [ -9, 1, -10, 1, 8, -17, -51, 17, -2, -4, 2, -16, 51, 1, 1, 12, -1,
          -5, 15, -5 ],
      [ -117/10, 5/2, -49/5, 1, 19/2, -18, -737/10, 503/20, 1, -22/5, 2,
          -81/4, 55, 1, 0, 66/5, -1, -1, 85/4, -13/2 ],
      [ 32, -2, 18, -2, -10, 16, 192, -64, -11, 8, -4, 49, -52, -2, 3, -26,
          2, -10, -51, 17 ],
      [ -30, 2, 6, 2, 10, -25, -162, 54, 11, 4, 4, -55, 73, 2, -2, -10, -2,
          6, 48, -16 ],
      [ 169/10, -19/2, 18/5, 0, -57/2, 55, 1159/10, -791/20, -4, 9/5, -1,
          141/4, -169, 0, 0, -32/5, 2, 1, -161/4, 25/2 ],
      [ 547/10, -57/2, 94/5, 0, -171/2, 166, 3657/10, -2493/20, -9, 47/5,
          -2, 463/4, -507, 0, 0, -151/5, 5, 2, -507/4, 79/2 ],
      [ 653/5, -41, 117/5, -1, -125, 248, 3958/5, -1326/5, -2, 56/5, -3,
          257, -746, -2, 0, -173/5, 2, 2, -259, 85 ],
      [ -87/5, 11, -28/5, 1, 23, -35, -652/5, 219/5, 1, -24/5, -1, -32, 111,
          -2, -2, 72/5, 2, 10, 43, -14 ],
      [ 10, 0, 0, 0, 0, 1, 57, -19, 0, 0, 0, 16, -2, -1, 0, 0, 0, 0, -15, 5 ]
        , [ -2, 0, -8, 0, 0, 1, -12, 4, -3, -4, -1, -4, -4, 0, 0, 11, 1, 1,
          3, -1 ],
      [ -15, 1, -1, 1, 5, -11, -84, 28, 5, 0, 2, -26, 33, 1, -1, 1, -1, 3,
          24, -8 ],
      [ -66, 5, -5, 6, 24, -48, -396, 132, 15, 0, 7, -107, 144, 5, -5, 0, 0,
          20, 107, -36 ],
      [ 2139/5, -124, 236/5, -3, -381, 751, 13014/5, -4358/5, -20, 108/5,
          -13, 814, -2267, -11, 1, -359/5, 10, 6, -832, 273 ],
      [ -3, 1, -8, 1, 3, -3, -24, 8, -1, -4, 1, -3, 11, 0, 0, 12, 0, 0, 6,
          -2 ],
      [ 1241/5, -81, 234/5, -1, -248, 491, 7556/5, -2532/5, -3, 112/5, -3,
          492, -1477, -3, 1, -341/5, 2, -2, -497, 163 ],
      [ 6, 0, -8, 0, 0, -1, 39, -13, -3, -4, -1, 6, 1, -1, 0, 11, 1, 1, -9,
          3 ],
      [ -639/10, 97/2, -158/5, -2, 283/2, -281, -4249/10, 2961/20, -8,
          -84/5, -3, -683/4, 843, -2, 2, 247/5, 0, -7, 683/4, -101/2 ],
      [ -243/10, 97/2, -191/5, -5, 271/2, -268, -2003/10, 1487/20, -12,
          -108/5, -5, -433/4, 807, -5, 5, 324/5, -3, -20, 445/4, -59/2 ] ],
  [ [ -1561/10, -2/5, -134/5, 0, -26/5, 72/5, -852, 2699/10, 2, -67/5, 2,
          -2431/10, -196/5, 0, 0, 211/5, -2, -2, 2451/10, -489/5 ],
      [ 3529/20, -21/5, 53/5, 0, -63/5, 151/5, 981, -6261/20, 0, 53/10, 2,
          5589/20, -428/5, -3, 0, -109/10, 0, -2, -5589/20, 1071/10 ],
      [ -22, 0, 0, 0, 0, -2, -129, 43, 0, 0, 1, -32, 5, 2, 0, -1, 0, -2, 33,
          -11 ],
      [ 113/20, -7/5, 1/5, 0, -21/5, 47/5, 33, -217/20, 0, 1/10, 1, 233/20,
          -136/5, 0, 0, 7/10, 0, -1, -213/20, 37/10 ],
      [ -10, 0, 0, 0, 0, -1, -66, 22, 0, 0, -2, -15, 2, 1, 0, -3, 0, 2, 15,
          -5 ],
      [ 0, 0, 0, 0, -3, 6, 6, -2, 0, 0, 2, 0, -18, 0, 0, 2, 0, -2, 0, 0 ],
      [ 519/20, 19/5, 48/5, 1, 77/5, -164/5, 130, -791/20, 2, 53/10, -1,
          719/20, 482/5, 1, -1, -179/10, 1, 6, -739/20, 171/10 ],
      [ 1517/20, 42/5, 104/5, 3, 176/5, -372/5, 378, -2293/20, 7, 119/10,
          -2, 2177/20, 1096/5, 3, -3, -407/10, 2, 17, -2217/20, 503/10 ],
      [ 1004/5, -64/5, 72/5, 0, -192/5, 374/5, 1101, -1751/5, 2, 36/5, -2,
          1639/5, -1132/5, 0, -1, -118/5, 1, 6, -1644/5, 632/5 ],
      [ -31/5, 1/5, -128/5, 0, 3/5, 29/5, -18, 9/5, -3, -64/5, 1, -76/5,
          -77/5, -4, 0, 202/5, 0, 4, 66/5, -48/5 ],
      [ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, 0, 0, 0 ],
      [ 2, 2, 8, 0, 8, -18, 12, -4, -1, 4, -1, 0, 52, 0, 0, -13, 1, 1, -1, 1
         ], [ 0, 0, 0, 0, -1, 2, 3, -1, 0, 0, 1, 0, -6, 0, 0, 1, 0, -1, 0, 0
         ],
      [ -3, 0, 0, 1, -1, 7, -3, 1, 0, 0, 6, -5, -16, 0, 0, 5, 0, -5, 5, -2 ],
      [ 3062/5, -157/5, 376/5, 0, -436/5, 737/5, 3384, -5388/5, 2, 188/5,
          -10, 4877/5, -2346/5, 0, -3, -639/5, 7, 23, -4972/5, 1921/5 ],
      [ 0, -1, -8, 0, -3, 7, 0, 0, -1, -4, 1, 1, -21, 0, 0, 12, 0, 0, -1, 0 ]
        , [ 2008/5, -133/5, 104/5, 0, -409/5, 803/5, 2202, -3502/5, 2, 52/5,
          -2, 3288/5, -2424/5, 0, -1, -171/5, 1, 7, -3293/5, 1264/5 ],
      [ 2, 2, 8, 0, 8, -21, 18, -6, -1, 4, -1, -3, 58, 0, 0, -14, 1, 1, -1,
          1 ],
      [ -2629/20, 26/5, -8/5, -1, 78/5, -176/5, -708, 4441/20, -4, -13/10,
          -3, -4269/20, 508/5, -1, 1, 19/10, 1, -2, 4249/20, -841/10 ],
      [ -1923/20, -8/5, -36/5, -3, -54/5, 83/5, -501, 3067/20, -9, -51/10,
          -5, -3003/20, -274/5, -3, 3, 133/10, 0, -10, 3003/20, -637/10 ] ],
  [ [ -59, 10, -12, 0, 66, -154, -312, 104, 2, 0, 0, -120, 446, 6, -2, -8,
          2, 4, 100, -30 ],
      [ -114, 9, -3, 0, 31, -65, -648, 216, 5, 0, 7, -186, 195, 10, 5, 7,
          -10, -30, 179, -57 ],
      [ 27, -3, -6, 1, -14, 33, 150, -50, 2, -4, 1, 46, -97, -3, -3, 11, 3,
          15, -43, 13 ],
      [ -9, 0, -1, 0, 3, -7, -48, 16, 3, 0, 1, -15, 20, 1, -1, 0, 0, 3, 13,
          -4 ],
      [ 26, 0, 15, 0, 4, -15, 162, -54, -3, 8, -3, 34, 39, -2, -1, -27, 4,
          6, -39, 13 ],
      [ -70, 4, -17, 0, 12, -25, -396, 132, 5, -8, 5, -115, 75, 6, 3, 29,
          -8, -18, 109, -35 ],
      [ 42, -4, 13, 0, -26, 59, 232, -77, -1, 4, -2, 74, -172, -4, 0, -10,
          1, 3, -67, 21 ],
      [ 96, -7, 33, 0, -45, 100, 537, -178, -2, 12, -6, 162, -293, -9, -1,
          -34, 4, 11, -151, 48 ],
      [ 31, 0, 0, 1, 1, -3, 177, -59, -2, 0, -3, 47, 8, -3, -1, -2, 3, 7,
          -46, 15 ],
      [ -45, 3, 14, -5, 22, -57, -246, 82, -10, 9, -5, -74, 164, 6, 6, -28,
          -3, -30, 68, -20 ],
      [ 22, -2, 2, 0, -11, 25, 120, -40, -2, 0, -1, 39, -73, -2, 0, 0, 1, 2,
          -35, 11 ],
      [ 42, -5, 5, 0, -29, 68, 228, -76, -2, 0, -1, 78, -197, -4, 0, 2, 1,
          3, -68, 21 ],
      [ -24, 1, -8, 0, 2, -3, -138, 46, 2, -4, 2, -38, 10, 2, 1, 14, -3, -6,
          37, -12 ],
      [ -110, 5, -1, 0, 13, -28, -612, 204, 6, 0, 10, -182, 82, 10, 4, 9,
          -9, -26, 170, -55 ],
      [ 276, -25, 24, 2, -139, 318, 1506, -502, -16, 0, -19, 489, -926, -26,
          -3, 1, 14, 38, -438, 137 ],
      [ 3, -1, 0, -1, -2, 3, 18, -6, -2, 0, -1, 6, -10, 0, 0, -1, 1, 0, -6,
          2 ],
      [ 43, 1, -9, 1, 8, -20, 249, -83, -4, -4, -5, 62, 56, -4, -1, 8, 4, 8,
          -63, 21 ],
      [ 42, -6, 6, 0, -35, 81, 222, -74, -2, 0, -2, 81, -235, -4, 0, 2, 1,
          4, -69, 21 ],
      [ 78, -8, -2, 0, -40, 94, 423, -141, -4, -4, -3, 141, -272, -7, -1,
          12, 3, 10, -124, 39 ],
      [ 84, -8, -21, 0, -31, 74, 450, -150, -5, -12, -4, 153, -213, -7, -2,
          32, 4, 15, -134, 43 ] ],
  [ [ -15, 0, -36, 0, 8, -14, -90, 30, 2, -16, 2, -28, 42, 2, 2, 48, -6, -6,
          24, -8 ],
      [ 37, 1, 2, 5, 2, 2, 201, -67, 9, 0, -3, 54, -5, -5, -5, -6, 3, 28,
          -53, 16 ],
      [ -4, 0, 8, 0, -2, 5, -27, 9, 4, 4, 2, -2, -12, 0, -1, -9, 0, 2, 6, -2
         ],
      [ 10, -1, -1, 1, 0, 0, 57, -19, 4, 0, 0, 16, 0, -1, -2, -1, 1, 9, -16,
          5 ],
      [ -63, 2, -2, -3, 9, -26, -345, 115, -5, 0, 3, -104, 73, 7, 5, 4, -5,
          -26, 95, -30 ],
      [ 45, -2, -19, 5, -19, 58, 222, -74, 7, -12, 1, 83, -162, -6, -4, 34,
          1, 23, -67, 20 ],
      [ 11, -1, 11, -1, -11, 24, 61, -20, -3, 4, 0, 22, -70, -1, 0, -10, 2,
          -1, -18, 6 ],
      [ 25, -3, 15, -3, -29, 65, 135, -44, -8, 4, 1, 52, -189, -2, 1, -6, 3,
          -6, -42, 14 ],
      [ -14, -1, -7, -2, -7, 13, -78, 26, -7, -4, 0, -20, -40, 2, 3, 14, -1,
          -13, 19, -6 ],
      [ 44, -3, -17, 0, 4, -13, 261, -87, -5, -7, -7, 61, 33, -3, -1, 12, 3,
          11, -69, 22 ],
      [ 0, 1, 7, 0, 6, -14, 0, 0, 0, 4, -1, -1, 41, 0, -1, -13, 2, 4, 1, 0 ],
      [ 1, 0, 17, -1, -2, 1, 12, -4, -2, 8, -1, 2, -4, 0, 0, -23, 2, -2, -2,
          1 ],
      [ 24, -1, -6, 2, -8, 24, 123, -41, 3, -4, 0, 43, -67, -3, -2, 11, 1,
          11, -36, 11 ],
      [ 57, -3, -1, 5, -25, 72, 294, -98, 14, -4, 0, 103, -201, -7, -5, 13,
          0, 27, -86, 26 ],
      [ 31, -8, 44, -7, -60, 121, 177, -59, -36, 16, -3, 74, -359, -1, 7,
          -40, 11, -32, -58, 19 ],
      [ 12, -1, -1, 0, 0, -1, 69, -23, 1, 0, -1, 19, 3, -1, -1, -1, 1, 5,
          -19, 6 ],
      [ -14, -2, -30, -2, -14, 34, -90, 30, -10, -16, 1, -14, -99, 2, 4, 51,
          -2, -16, 18, -6 ],
      [ 20, -1, 18, 0, -8, 16, 114, -38, -3, 8, -1, 35, -47, -2, -1, -24, 4,
          4, -31, 10 ],
      [ -12, 1, 22, -2, 9, -30, -51, 17, -6, 12, -2, -25, 83, 2, 1, -37, 3,
          -8, 19, -5 ],
      [ -34, 3, 16, -2, 31, -86, -165, 55, -9, 12, -3, -69, 242, 5, 2, -42,
          3, -13, 53, -15 ] ],
  [ [ -71, 0, 58, -8, 20, -72, -348, 116, 4, 32, -2, -134, 194, 10, 0, -96,
          2, -8, 104, -32 ],
      [ -2, 9, 27, 2, 45, -103, 9, -3, 2, 16, -2, -23, 298, 0, -2, -50, 4,
          7, 12, -2 ],
      [ -43, -1, 15, 1, -5, 1, -237, 79, 5, 8, 2, -73, -9, 4, -1, -24, 0, 4,
          64, -22 ],
      [ -15, -1, 15, 0, -1, -5, -75, 25, 3, 8, 0, -28, 10, 2, -1, -24, 1, 4,
          21, -7 ],
      [ 52, -8, -9, -4, -42, 97, 285, -95, -10, -8, -2, 101, -282, -4, 4,
          26, -2, -15, -88, 28 ],
      [ -37, 6, 13, 1, 26, -61, -198, 66, -2, 8, 2, -71, 175, 4, 2, -23, -1,
          -11, 62, -19 ],
      [ 51, -2, -28, 3, -18, 53, 259, -86, -4, -16, 0, 94, -147, -6, 0, 47,
          0, 5, -77, 24 ],
      [ 117, -6, -55, 5, -44, 123, 600, -199, -10, -32, -1, 215, -344, -13,
          0, 93, 1, 11, -179, 56 ],
      [ 37, -4, -37, -3, -18, 48, 192, -64, -9, -20, -2, 75, -135, -3, 3,
          59, -2, -12, -61, 20 ],
      [ 77, -1, -4, 1, -2, 19, 429, -143, 5, -3, -1, 128, -45, -8, -4, 12,
          3, 19, -116, 38 ],
      [ -9, 0, -8, -1, 0, 0, -54, 18, -3, -4, -1, -12, 1, 1, 2, 12, -2, -9,
          13, -4 ],
      [ 29, -1, -22, 3, -10, 32, 141, -47, 0, -12, 0, 55, -87, -4, -1, 35,
          0, 8, -43, 13 ],
      [ -21, 3, 6, 1, 14, -33, -114, 38, 1, 4, 1, -40, 95, 2, 0, -12, 0, -1,
          35, -11 ],
      [ -10, 3, 84, 4, 20, -66, -24, 8, 5, 44, -4, -41, 178, 2, -4, -135, 9,
          20, 20, -7 ],
      [ 157, -13, -258, 1, -104, 309, 735, -245, -42, -140, 6, 347, -850,
          -19, 20, 427, -25, -78, -248, 78 ],
      [ -3, -1, 8, 1, -4, 7, -15, 5, 5, 4, 1, -6, -21, 0, -2, -11, 1, 9, 4,
          -2 ],
      [ 39, -7, -58, -7, -34, 87, 192, -64, -18, -32, -3, 91, -246, -2, 8,
          97, -6, -34, -69, 23 ],
      [ 15, 0, -37, 3, -11, 38, 60, -20, -3, -20, 3, 35, -102, -3, 2, 62,
          -4, -7, -21, 6 ],
      [ 16, -1, -53, 2, -14, 49, 57, -19, 0, -28, 3, 41, -131, -3, 1, 86,
          -5, -3, -23, 7 ],
      [ -40, 1, -78, -2, -6, 34, -252, 84, 1, -40, 8, -46, -85, 3, 5, 128,
          -13, -28, 60, -18 ] ],
  [ [ -456/5, 43, -164/5, 0, 125, -246, -2911/5, 1999/10, 2, -82/5, 2,
          -409/2, 742, 0, 0, 256/5, -2, -2, 413/2, -65 ],
      [ 1159/10, -101/2, 88/5, 0, -303/2, 308, 7399/10, -5061/20, 0, 44/5,
          2, 1007/4, -919, -3, 0, -107/5, 0, -2, -1007/4, 155/2 ],
      [ -22, 0, 0, 0, 0, -2, -129, 43, 0, 0, 1, -32, 5, 2, 0, -1, 0, -2, 33,
          -11 ],
      [ 13/10, 3/2, -4/5, 0, 9/2, -8, 43/10, -17/20, 0, -2/5, 1, 3/4, 25, 0,
          0, 11/5, 0, -1, 1/4, 1/2 ],
      [ -10, 0, 0, 0, 0, -1, -66, 22, 0, 0, -2, -15, 2, 1, 0, -3, 0, 2, 15,
          -5 ],
      [ 0, 0, 0, 0, -3, 6, 6, -2, 0, 0, 2, 0, -18, 0, 0, 2, 0, -2, 0, 0 ],
      [ 79/10, -11/2, 53/5, 1, -25/2, 23, 499/10, -351/20, 2, 29/5, -1,
          85/4, -71, 1, -1, -97/5, 1, 6, -89/4, 15/2 ],
      [ 217/10, -39/2, 119/5, 3, -97/2, 93, 1377/10, -973/20, 7, 67/5, -2,
          259/4, -283, 3, -3, -226/5, 2, 17, -267/4, 43/2 ],
      [ 528/5, -40, 72/5, 0, -120, 238, 3193/5, -1071/5, 2, 36/5, -2, 219,
          -716, 0, -1, -118/5, 1, 6, -220, 72 ],
      [ 88/5, 7, -128/5, 0, 21, -35, 488/5, -161/5, -3, -64/5, 1, 12, 107,
          -4, 0, 202/5, 0, 4, -14, 4 ],
      [ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, 0, 0, 0 ],
      [ 2, 2, 8, 0, 8, -18, 12, -4, -1, 4, -1, 0, 52, 0, 0, -13, 1, 1, -1, 1
         ], [ 0, 0, 0, 0, -1, 2, 3, -1, 0, 0, 1, 0, -6, 0, 0, 1, 0, -1, 0, 0
         ],
      [ -3, 0, 0, 1, -1, 7, -3, 1, 0, 0, 6, -5, -16, 0, 0, 5, 0, -5, 5, -2 ],
      [ 1634/5, -113, 376/5, 0, -332, 637, 9984/5, -3348/5, 2, 188/5, -10,
          649, -1938, 0, -3, -639/5, 7, 23, -668, 221 ],
      [ 0, -1, -8, 0, -3, 7, 0, 0, -1, -4, 1, 1, -21, 0, 0, 12, 0, 0, -1, 0 ]
        , [ 1056/5, -81, 104/5, 0, -245, 487, 6386/5, -2142/5, 2, 52/5, -2,
          440, -1464, 0, -1, -171/5, 1, 7, -441, 144 ],
      [ 2, 2, 8, 0, 8, -21, 18, -6, -1, 4, -1, -3, 58, 0, 0, -14, 1, 1, -1,
          1 ],
      [ -709/10, 103/2, -43/5, -1, 309/2, -313, -4669/10, 3241/20, -4,
          -24/5, -3, -743/4, 935, -1, 1, 62/5, 1, -2, 739/4, -109/2 ],
      [ -443/10, 101/2, -81/5, -3, 291/2, -296, -3173/10, 2267/20, -9,
          -48/5, -5, -577/4, 883, -3, 3, 134/5, 0, -10, 577/4, -81/2 ] ],
  [ [ -2121/10, 78/5, -114/5, 0, 414/5, -938/5, -1146, 3679/10, 2, -27/5, 0,
          -3651/10, 2734/5, 6, -2, 41/5, 2, 4, 3451/10, -629/5 ],
      [ 729/20, 19/5, 38/5, 0, 77/5, -169/5, 171, -861/20, 5, 53/10, 7,
          1089/20, 507/5, 10, 5, -89/10, -10, -30, -1229/20, 371/10 ],
      [ 27, -3, -6, 1, -14, 33, 150, -50, 2, -4, 1, 46, -97, -3, -3, 11, 3,
          15, -43, 13 ],
      [ -127/20, -2/5, -4/5, 0, 9/5, -23/5, -33, 223/20, 3, 1/10, 1,
          -207/20, 64/5, 1, -1, -3/10, 0, 3, 167/20, -23/10 ],
      [ 26, 0, 15, 0, 4, -15, 162, -54, -3, 8, -3, 34, 39, -2, -1, -27, 4,
          6, -39, 13 ],
      [ -70, 4, -17, 0, 12, -25, -396, 132, 5, -8, 5, -115, 75, 6, 3, 29,
          -8, -18, 109, -35 ],
      [ 1579/20, -26/5, 78/5, 0, -148/5, 331/5, 433, -2811/20, -1, 53/10,
          -2, 2659/20, -968/5, -4, 0, -139/10, 1, 3, -2519/20, 441/10 ],
      [ 4137/20, -53/5, 204/5, 0, -279/5, 608/5, 1140, -7373/20, -2, 159/10,
          -6, 6777/20, -1789/5, -9, -1, -457/10, 4, 11, -6557/20, 1173/10 ],
      [ 1159/5, -64/5, 72/5, 1, -187/5, 369/5, 1281, -2051/5, -2, 36/5, -3,
          1879/5, -1112/5, -3, -1, -118/5, 3, 7, -1874/5, 707/5 ],
      [ -476/5, 31/5, 52/5, -5, 158/5, -381/5, -522, 849/5, -10, 36/5, -5,
          -781/5, 1108/5, 6, 6, -113/5, -3, -30, 751/5, -258/5 ],
      [ 22, -2, 2, 0, -11, 25, 120, -40, -2, 0, -1, 39, -73, -2, 0, 0, 1, 2,
          -35, 11 ],
      [ 42, -5, 5, 0, -29, 68, 228, -76, -2, 0, -1, 78, -197, -4, 0, 2, 1,
          3, -68, 21 ],
      [ -24, 1, -8, 0, 2, -3, -138, 46, 2, -4, 2, -38, 10, 2, 1, 14, -3, -6,
          37, -12 ],
      [ -110, 5, -1, 0, 13, -28, -612, 204, 6, 0, 10, -182, 82, 10, 4, 9,
          -9, -26, 170, -55 ],
      [ 4392/5, -317/5, 336/5, 2, -1271/5, 2742/5, 4818, -7778/5, -16,
          108/5, -19, 7377/5, -8086/5, -26, -3, -319/5, 14, 38, -7122/5,
          2581/5 ],
      [ 3, -1, 0, -1, -2, 3, 18, -6, -2, 0, -1, 6, -10, 0, 0, -1, 1, 0, -6,
          2 ],
      [ 2223/5, -123/5, 99/5, 1, -344/5, 668/5, 2457, -3927/5, -4, 52/5, -5,
          3598/5, -2024/5, -4, -1, -176/5, 4, 8, -3603/5, 1369/5 ],
      [ 42, -6, 6, 0, -35, 81, 222, -74, -2, 0, -2, 81, -235, -4, 0, 2, 1,
          4, -69, 21 ],
      [ -1449/20, -14/5, -63/5, 0, -122/5, 314/5, -396, 2361/20, -4, -93/10,
          -3, -1989/20, -892/5, -7, -1, 279/10, 3, 10, 2329/20, -551/10 ],
      [ -1223/20, -18/5, -156/5, 0, -89/5, 238/5, -339, 1987/20, -5,
          -171/10, -4, -1563/20, -669/5, -7, -2, 473/10, 4, 15, 1943/20,
          -477/10 ] ],
  [ [ 97, -18, -62, -12, -64, 138, 546, -182, -32, -32, -2, 184, -408, -6,
          4, 104, 6, -12, -168, 54 ],
      [ 66, -3, 66, -8, -32, 64, 387, -129, -16, 28, -7, 123, -186, -6, 3,
          -76, 7, -20, -107, 37 ],
      [ -57, 5, -18, 3, 22, -47, -330, 110, 0, -8, 1, -102, 133, 5, 0, 19,
          -1, 4, 92, -30 ],
      [ 6, -1, 1, -1, -5, 10, 36, -12, -7, 0, -1, 11, -32, 0, 1, 0, 2, -3,
          -11, 4 ],
      [ 0, -2, -12, 2, 1, 2, -15, 5, 10, -4, 3, 5, -2, 0, -3, 12, -1, 14,
          -1, -1 ],
      [ 9, 1, 29, -3, -8, 18, 45, -15, -9, 12, -2, 27, -48, -1, 2, -32, 3,
          -14, -14, 6 ],
      [ -46, 9, 21, 6, 36, -76, -263, 88, 18, 12, 1, -90, 225, 3, -3, -40,
          -3, 12, 81, -26 ],
      [ -90, 18, 32, 12, 76, -159, -519, 174, 38, 20, 2, -178, 471, 6, -7,
          -68, -6, 30, 159, -51 ],
      [ 1, -2, -20, 1, 3, -6, 3, -1, 14, -8, 2, 3, 21, 0, -3, 24, -3, 12,
          -3, 0 ],
      [ 120, -10, 14, -6, -47, 103, 696, -232, -18, 5, -2, 207, -299, -10,
          3, -8, 5, -14, -193, 63 ],
      [ -26, 2, -10, 2, 12, -23, -153, 51, 9, -4, 1, -44, 70, 2, -2, 11, -2,
          8, 42, -14 ],
      [ -43, 7, 14, 5, 28, -60, -240, 80, 14, 8, 1, -84, 176, 3, -2, -28,
          -3, 8, 74, -24 ],
      [ -1, 1, 10, -1, -1, 2, -6, 2, -4, 4, -1, 1, -5, 0, 1, -11, 1, -6, 2,
          0 ],
      [ -13, 5, 81, -5, -3, 8, -81, 27, -13, 36, -9, -11, -24, 1, 0, -103,
          11, -4, 22, -4 ],
      [ -244, 26, -58, 32, 145, -301, -1407, 469, 113, -16, 20, -445, 904,
          17, -18, 29, -30, 68, 408, -138 ],
      [ 2, 0, -8, 0, -1, 3, 12, -4, -6, -4, 0, 1, -11, 0, 1, 11, 1, -2, -3,
          1 ],
      [ 5, -4, -47, 1, 3, 0, 15, -5, 20, -20, 5, 18, 10, 0, -5, 62, -4, 19,
          -11, 2 ],
      [ -59, 8, 5, 7, 33, -70, -336, 112, 17, 4, 3, -110, 207, 4, -2, -17,
          -5, 7, 100, -33 ],
      [ -39, 5, -12, 7, 26, -57, -213, 71, 16, -4, 5, -81, 167, 3, -1, 6,
          -7, 4, 68, -23 ],
      [ 9, -5, -60, 5, -7, 11, 63, -21, 4, -28, 10, 9, -33, 0, 3, 79, -10,
          -13, -16, 3 ] ],
  [ [ -446/5, 47, -254/5, 2, 141, -276, -2941/5, 2019/10, -2, -122/5, 6,
          -401/2, 836, 0, 2, 376/5, -4, -8, 417/2, -65 ],
      [ 1009/10, -95/2, 73/5, 5, -267/2, 267, 6379/10, -4381/20, 3, 44/5, 0,
          883/4, -804, -2, -3, -157/5, 3, 17, -895/4, 135/2 ],
      [ 11, -2, -6, -1, -12, 24, 60, -20, -6, -4, 0, 22, -70, -1, 3, 12, -2,
          -13, -19, 6 ],
      [ 133/10, 1/2, -4/5, 0, 3/2, -6, 793/10, -517/20, -3, -2/5, 0, 67/4,
          16, -1, 1, 1/5, 0, -4, -75/4, 13/2 ],
      [ -17, -1, 1, -3, -6, 14, -96, 32, 3, 0, 0, -22, -39, 2, 1, 5, -3, -7,
          23, -7 ],
      [ 18, -3, -24, 2, -9, 25, 84, -28, 2, -12, 0, 35, -71, -2, -3, 32, 2,
          17, -29, 8 ],
      [ 329/10, -21/2, 108/5, -2, -69/2, 68, 2059/10, -1391/20, 1, 49/5, -3,
          261/4, -206, -1, -1, -147/5, 2, 4, -265/4, 43/2 ],
      [ 977/10, -65/2, 239/5, -5, -213/2, 213, 6027/10, -4073/20, 2, 107/5,
          -6, 795/4, -641, -3, -2, -316/5, 4, 8, -791/4, 127/2 ],
      [ 473/5, -40, 32/5, -1, -120, 246, 2848/5, -956/5, 6, 16/5, 0, 209,
          -733, 1, -2, -33/5, 0, 7, -204, 67 ],
      [ -92/5, 14, 52/5, 2, 54, -117, -457/5, 154/5, 3, 36/5, 0, -60, 341,
          -1, -3, -123/5, 4, 14, 48, -15 ],
      [ -12, 1, -1, 0, 6, -12, -72, 24, 3, 0, 0, -18, 37, 1, -1, 0, 0, 3,
          19, -6 ],
      [ 1, 1, 17, -1, 2, -7, 15, -5, 0, 8, -2, -2, 18, 0, 0, -24, 1, -1, -1,
          1 ],
      [ 9, -1, -8, 1, -3, 8, 45, -15, 0, -4, 0, 16, -23, -1, -1, 10, 1, 6,
          -14, 4 ],
      [ 65, -2, -7, 5, -9, 20, 366, -122, -1, -4, 0, 100, -58, -7, 0, 7, 0,
          6, -97, 30 ],
      [ 1404/5, -118, 241/5, -8, -357, 731, 8499/5, -2853/5, 19, 108/5, -11,
          622, -2183, 3, -10, -289/5, 7, 36, -608, 202 ],
      [ 10, 0, 0, 0, 0, -3, 63, -21, -3, 0, 0, 13, 7, -1, 1, -1, 0, -4, -15,
          5 ],
      [ 1006/5, -82, 24/5, -2, -246, 503, 6041/5, -2027/5, 11, 12/5, 0, 438,
          -1499, 1, -4, -11/5, 0, 15, -428, 140 ],
      [ -1, 1, 9, -1, 3, -7, -3, 1, 0, 4, -3, -3, 19, 0, -1, -13, 2, 4, 2, 0
         ], [ -1159/10, 107/2, -8/5, -2, 325/2, -330, -7129/10, 4881/20, 0,
          -4/5, -2, -1039/4, 985, 3, 0, 17/5, 1, -3, 1015/4, -153/2 ],
      [ -1673/10, 119/2, -111/5, -2, 375/2, -381, -10163/10, 6927/20, 0,
          -48/5, 0, -1389/4, 1137, 8, 0, 154/5, 0, -5, 1353/4, -205/2 ] ],
  [ [ -1481/10, 28/5, 26/5, 0, 84/5, -198/5, -810, 2559/10, 2, 13/5, 0,
          -2371/10, 574/5, 0, 0, -39/5, 0, 0, 2391/10, -469/5 ],
      [ 3189/20, -36/5, 53/5, -3, -108/5, 201/5, 873, -5541/20, 0, 53/10, 2,
          5169/20, -603/5, 0, 0, -159/10, 0, 0, -5169/20, 1001/10 ],
      [ -5, 2, -1, 3, 8, -14, -33, 11, 3, 0, 1, -11, 42, 0, -1, -1, 0, 5,
          11, -4 ],
      [ 153/20, -12/5, 1/5, 0, -36/5, 72/5, 45, -297/20, 0, 1/10, 1, 293/20,
          -216/5, 0, 0, -3/10, 0, 0, -293/20, 47/10 ],
      [ -7, 3, 0, 1, 11, -21, -42, 14, 0, 0, -2, -14, 63, 0, 0, 0, 0, 0, 14,
          -4 ],
      [ 4, -2, 0, 0, -8, 13, 33, -11, 0, 0, 2, 5, -42, 0, 0, 0, 0, 0, -8, 2 ]
        , [ 599/20, 4/5, -27/5, 1, 12/5, -9/5, 160, -991/20, -1, -27/10, 0,
          899/20, 37/5, 0, 0, 81/10, 0, 0, -919/20, 191/10 ],
      [ 1837/20, 12/5, -41/5, 3, 36/5, -42/5, 489, -3033/20, -2, -41/10, 0,
          2777/20, 146/5, 0, 0, 123/10, 0, 0, -2817/20, 583/10 ],
      [ 984/5, -59/5, 32/5, 0, -172/5, 334/5, 1086, -1726/5, 0, 16/5, -2,
          1594/5, -1012/5, 0, 0, -48/5, 0, 0, -1609/5, 622/5 ],
      [ -171/5, -4/5, 122/5, -6, -32/5, 29/5, -174, 269/5, -9, 56/5, -2,
          -256/5, -102/5, 0, 2, -158/5, 3, -10, 256/5, -103/5 ],
      [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
      [ -2, 0, -8, 0, 0, 3, -12, 4, -1, -4, 0, -3, -7, 0, 0, 12, 0, 0, 3, -1
         ],
      [ 2, -1, 0, 0, -4, 7, 15, -5, 0, 0, 1, 3, -22, 0, 0, 0, 0, 0, -4, 1 ],
      [ -3, 1, -1, 1, 5, -10, -18, 6, 3, 0, 6, -6, 30, 1, -1, 0, 0, 4, 6, -2
         ],
      [ 2902/5, -177/5, 96/5, 0, -516/5, 1042/5, 3213, -5103/5, 4, 48/5,
          -10, 4687/5, -3136/5, 0, -4, -139/5, 4, 15, -4752/5, 1841/5 ],
      [ 2, 0, 8, 0, 0, -1, 12, -4, -1, 4, 0, 3, 2, 0, 0, -12, 1, 0, -3, 1 ],
      [ 1978/5, -123/5, 64/5, 0, -364/5, 713/5, 2181, -3467/5, 0, 32/5, -3,
          3218/5, -2154/5, 0, 0, -91/5, 0, 0, -3238/5, 1249/5 ],
      [ -2, 0, 0, 0, 0, 2, -9, 3, 1, 0, -1, -4, -5, 0, -1, 0, 1, 4, 3, -1 ],
      [ -2949/20, 16/5, -93/5, -1, 48/5, -81/5, -801, 5061/20, -1, -93/10,
          -2, -4689/20, 253/5, 0, 0, 279/10, 0, 0, 4689/20, -921/10 ],
      [ -2603/20, -8/5, -51/5, -3, -24/5, 48/5, -699, 4387/20, 0, -51/10,
          -5, -4023/20, -144/5, 0, 0, 153/10, 0, 0, 4023/20, -807/10 ] ],
  [ [ -19, -4, -50, 0, -8, 16, -114, 38, -2, -24, 0, -30, -52, 2, 0, 68, -2,
          4, 26, -10 ],
      [ -69, 11, -5, 5, 48, -102, -405, 135, 12, 0, 0, -122, 303, 5, -2, -5,
          -3, 8, 116, -37 ],
      [ 14, -3, 1, -2, -12, 27, 81, -27, -1, 0, 0, 29, -79, -1, -1, 2, 2, 3,
          -25, 8 ],
      [ -7, 0, -1, 0, 3, -6, -42, 14, 3, 0, 0, -10, 18, 1, -1, 0, 0, 4, 10,
          -3 ],
      [ 37, -4, 3, -1, -21, 44, 219, -73, -8, 0, 0, 60, -133, -3, 2, 1, 1,
          -6, -60, 19 ],
      [ -24, 2, -2, 0, 15, -36, -126, 42, 6, 0, 0, -45, 104, 2, -2, -3, 0,
          6, 38, -12 ],
      [ 22, 2, 25, 0, 4, -8, 130, -43, -1, 12, 0, 32, 25, -2, 0, -34, 2, -1,
          -31, 11 ],
      [ 56, 4, 50, 0, 8, -16, 330, -109, -4, 24, 0, 81, 49, -5, 0, -68, 5,
          -1, -80, 28 ],
      [ 25, -3, -6, -1, -15, 29, 150, -50, -8, -4, 0, 40, -89, -2, 2, 12, 1,
          -7, -41, 13 ],
      [ -58, 6, -3, 4, 30, -66, -342, 114, 11, 1, 0, -103, 194, 5, -1, -7,
          -4, 6, 95, -31 ],
      [ 1, -1, 1, -1, -6, 12, 9, -3, -3, 0, 0, 3, -36, 0, 1, 1, 0, -5, -3, 1
         ],
      [ 10, 1, 17, 0, 0, 2, 54, -18, 0, 8, 0, 18, -3, -1, 0, -22, 1, -1,
          -14, 5 ],
      [ -12, 1, -1, 0, 7, -16, -66, 22, 3, 0, 0, -21, 47, 1, -1, -1, 0, 3,
          19, -6 ],
      [ -65, 10, -6, 5, 48, -97, -390, 130, 16, 0, -1, -111, 290, 5, -6, -6,
          1, 25, 110, -35 ],
      [ 132, -11, 51, -8, -65, 127, 792, -264, -26, 20, -1, 217, -380, -11,
          6, -52, 8, -28, -213, 70 ],
      [ -10, 0, -1, 0, 2, -4, -60, 20, 3, 0, 0, -15, 12, 1, -1, 0, 0, 4, 15,
          -5 ],
      [ 38, -5, -13, -2, -23, 42, 234, -78, -13, -8, -1, 58, -132, -3, 3,
          23, 2, -10, -63, 20 ],
      [ 11, 0, 17, -1, -3, 6, 66, -22, 0, 8, 0, 19, -16, -1, 0, -22, 1, -2,
          -17, 6 ],
      [ 28, -3, 19, -2, -18, 38, 162, -54, -4, 8, 0, 50, -110, -2, 2, -20,
          0, -10, -45, 15 ],
      [ 39, -10, 5, -5, -45, 90, 234, -78, -9, 0, 0, 74, -267, -2, 5, 5, -3,
          -23, -71, 23 ] ] ];
          return Group( gens );
       fi;

     if n = 30 then
        # subgroup of a group which is conjugate to a direct product
        # of PolExamples(1) and PolExamples(6);
        gens := 
           [ [ [ -402, -128, 32, 24, -452, 798, -293, 349 ],
           [ 3, 37, 20, -9, 5, -11, 29, 7 ],
           [ -67, 56, 5, -15, -105, 133, 21, 65 ],
           [ -114, 660, 80, -164, -325, 208, 528, 199 ],
           [ -2, 220, 0, -55, -90, 4, 199, 18 ],
           [ -213, 236, 16, -63, -359, 423, 121, 209 ],
           [ -36, 260, 0, -65, -144, 72, 221, 57 ],
           [ 3, -228, 0, 57, 94, -6, -206, -20 ] ],
         [ [ -446, 1144, -64, -288, -1114, 910, 833, 407 ],
           [ -9, 37, -4, -9, -31, 19, 29, 7 ],
           [ -125, 155, -7, -39, -223, 252, 77, 113 ],
           [ -510, 428, -16, -106, -779, 1024, 104, 457 ],
           [ -108, 28, 0, -7, -134, 216, -35, 96 ],
           [ -407, 608, -32, -153, -781, 823, 347, 367 ],
           [ -190, 92, 0, -23, -254, 380, -23, 171 ],
           [ 159, 12, 0, -3, 176, -318, 98, -140 ] ],
  [ [ -621, 2704, -64, -684, -1991, 1260, 2143, 599 ],
      [ 17, -107, -8, 27, 63, -32, -87, -21 ],
      [ -1, 248, -7, -63, -117, 4, 225, 3 ],
      [ 856, -1252, -32, 314, 1560, -1704, -694, -819 ],
      [ 194, -408, 0, 102, 411, -388, -268, -186 ],
      [ -14, 776, -32, -198, -388, 37, 704, 16 ],
      [ 322, -444, 0, 111, 581, -644, -237, -303 ],
      [ -222, 480, 0, -120, -476, 444, 319, 214 ] ],
  [ [ 751, 1404, 0, -351, 316, -1500, 1588, -669 ],
      [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 36, 48, 1, -12, 28, -72, 58, -30 ],
      [ -609, -1316, 0, 330, -135, 1218, -1457, 564 ],
      [ -184, -380, 0, 95, -53, 368, -423, 168 ],
      [ 108, 144, 0, -36, 84, -215, 174, -90 ],
      [ -267, -568, 0, 142, -66, 534, -629, 246 ],
      [ 200, 420, 0, -105, 55, -400, 466, -182 ] ],
  [ [ -127, 2424, 0, -606, -1351, 256, 2117, 75 ],
      [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 4, 0, 1, 0, 2, -8, 2, -6 ],
      [ 208, -2844, 0, 712, 1634, -416, -2456, -159 ],
      [ 50, -808, 0, 202, 455, -100, -702, -36 ],
      [ 12, 0, 0, 0, 6, -23, 6, -18 ],
      [ 84, -1220, 0, 305, 695, -168, -1055, -63 ],
      [ -54, 936, 0, -234, -520, 108, 815, 40 ] ],
  [ [ -402, -128, 32, 24, -452, 798, -293, 349 ],
      [ 3, 37, 20, -9, 5, -11, 29, 7 ],
      [ -67, 56, 5, -15, -105, 133, 21, 65 ],
      [ -114, 660, 80, -164, -325, 208, 528, 199 ],
      [ -2, 220, 0, -55, -90, 4, 199, 18 ],
      [ -213, 236, 16, -63, -359, 423, 121, 209 ],
      [ -36, 260, 0, -65, -144, 72, 221, 57 ],
      [ 3, -228, 0, 57, 94, -6, -206, -20 ] ],
  [ [ -611, 600, 0, -150, -979, 1224, 257, 615 ], [ 0, 1, 0, 0, 0, 0, 0, 0 ],
      [ -276, -1536, 1, 384, 338, 552, -1510, 210 ],
      [ -1604, -13100, 0, 3276, 3766, 3208, -12532, 1065 ],
      [ -302, -3016, 0, 754, 947, 604, -2854, 180 ],
      [ -828, -4608, 0, 1152, 1014, 1657, -4530, 630 ],
      [ -608, -5252, 0, 1313, 1551, 1216, -5007, 393 ],
      [ 422, 3960, 0, -990, -1212, -844, 3759, -260 ] ],
  [ [ 7, 2628, -992, -657, -2051, 236, 2575, -430 ],
      [ -21, 37, -28, -9, -67, 49, 29, 7 ],
      [ -131, 324, -123, -81, -435, 293, 261, 57 ],
      [ -1520, -540, -112, 136, -1868, 3068, -1127, 1264 ],
      [ -316, -168, 0, 42, -347, 632, -288, 270 ],
      [ -483, 1116, -496, -279, -1591, 1091, 899, 199 ],
      [ -566, -276, 0, 69, -630, 1132, -494, 486 ],
      [ 342, 60, 0, -15, 441, -684, 201, -287 ] ],
  [ [ -562, 440, -64, -120, -996, 1142, 171, 461 ],
      [ 22, -143, -12, 36, 82, -41, -116, -28 ],
      [ -87, 127, -7, -33, -173, 176, 79, 79 ],
      [ -38, -60, -48, 16, -17, 88, -52, 59 ],
      [ -2, 220, 0, -55, -90, 4, 199, 18 ],
      [ -293, 520, -32, -135, -631, 595, 353, 265 ],
      [ -36, 260, 0, -65, -144, 72, 221, 57 ],
      [ 3, -228, 0, 57, 94, -6, -206, -20 ] ] ];
    return Group( gens );
    fi;
    if n= 31 then
       gens := GeneratorsOfGroup( MatExamples(4) );
       return Group( gens{[1,2]} );
    fi;
    return fail;
end;


#############################################################################
##
#F POL_RandomRationalTriangularGroup( dim, numberOfGens )
##
POL_RandomRationalTriangularGroup := function( dim, numberOfGens )
    local gens, i, g, j, k, range, kk,ll;

    range := 7;
    ll := [-range..range];
    kk := [-range..range];
    ll := Filtered( ll, (x->x<>0) );
    kk := Filtered( kk, (x->x<>0) ); 
   
    gens:=[];
    for i in [1..numberOfGens] do
        g:=IdentityMat(dim,Rationals);
        for j in [1..dim] do
            for k in [j..dim] do
                if j<=k then
                   g[j][k] := RandomList( ll )/RandomList( kk );
                else 
                   g[j][k] := 0;
                fi;
            od;
        od;
        Add(gens,g);
    od;
    return gens;
end; 

#############################################################################
##
#F  POL_RandomRationalUnipotentGroup( dim, numberOfGens )
##
POL_RandomRationalUnipotentGroup := function( dim, numberOfGens )
    local G, x;
    G := POL_RandomRationalTriangularGroup( dim, numberOfGens );
    x := RandomInvertibleMat( dim, Rationals );
    return G^x;
end;


#############################################################################
##
#F POL_RandomSubgroup( G, numberOfgens )
##
##
POL_RandomSubgroup := function( G, numberOfNewGens )
    local gens,newGens, i;
    gens := GeneratorsOfGroup( G );
    newGens := [];
    for i in [1..numberOfNewGens] do
        Add( newGens, POL_RandomGroupElement( gens ) );
    od;
    return Group( newGens );
end;

#############################################################################
##
#F POL_DirectProduct( G1, G2 )
##
##
POL_DirectProduct:= function( G1, G2 )
    local n1, n2, gens, k, i, j, matrix, x, G, gens1, gens2;
    gens1 := GeneratorsOfGroup( G1 );
    gens2 := GeneratorsOfGroup( G2 );
    n1 := Length( gens1[1] );
    n2 := Length( gens2[2] );
    gens := [];
    for k in [1..Length( gens1 )] do
        matrix := IdentityMat( n1+n2 );
        for i in [1..n1] do
            for j in [1..n1] do
                 matrix[i][j] := gens1[k][i][j]; 
            od;
        od;
        Add( gens, matrix );
    od;
    for k in [1..Length( gens2 )] do
        matrix := IdentityMat( n1+n2 );
        for i in [1..n2] do
            for j in [1..n2] do
                 matrix[i+n1][j+n1] := gens2[k][i][j]; 
            od;
        od;
        Add( gens, matrix );
    od; 
    return Group( gens ); 
end;


#############################################################################
##
#F POL_SemidirectProductVectorSpace( G )
##
POL_SemidirectProductVectorSpace := function( G )
    local gens, n, newGens, g, h, i, v;
    gens := GeneratorsOfGroup( G );
    n := Length( gens[1] );
    newGens := [];
    for g in gens do 
        h := POL_CopyVectorList( g );
        for i in [1..n] do
            Add( h[i], 0 );
        od;
        v := List( [1..n+1], x->0 );
        v[n+1] := 1;
        Add( h, v );
        Add( newGens, h );
    od;
    for i in [1..n] do
        h := IdentityMat( n+1 );
        h[i][n+1] := 1;
        Add( newGens, h );
    od;
    return Group( newGens );
end;


POL_IrredPol := function( n )
    local x,p;
    x := Indeterminate(Rationals,"x":old);

    if n = 1 then 
       p :=  x^2 + 6*x + 3;
       return p;
    fi;
    if n = 2 then 
       p := x^3 + 14*x^2 - 49*x + 7;
       return p;
    fi;
    if n = 3 then 
       p := x^2+1; 
       return p;
    fi;
    if n = 4 then
       p := x^3+2*x+2; 
       return p;
    fi;
    if n = 5 then 
       p := x^3+2*x+2;
       return p;
    fi;
    if n = 6 then 
       p := -4*x^2-2*x+1;
       return p;
    fi;
end;

POL_AbelianIrreducibleGens := function( n )
    local k,l,ll,range,pol,mat,n_gens,gens,i,exps,l_comb,g;

    pol := POL_IrredPol( n );
    mat := CompanionMat( pol );
    
    range := 3;
    l := [-range..range];
    l := Filtered( l, (x -> x<>0) );
    # k := [-range..range];
    k := [1];
    k := Filtered( k, (x -> x<>0) );

    exps := [0,1,2];
   
    n_gens := 3;
    gens := [];
    for i in [1..n_gens] do
        l_comb := 2;
        ll := List( [1..l_comb], x-> RandomList(l)/RandomList(k) );
        g := List( [1..l_comb] , x-> ll[x]*mat^RandomList(exps) );
        Add( gens, Sum( g ) );
    od;  

    return gens;
end;

POL_RandomUnitGroupGens := function( n )
    local F, U, u_gens, n_gens, gens;

    F := ExampleMatField( n );
    U := UnitGroup( F );
    u_gens := GeneratorsOfGroup( U );

    n_gens := 3;
    gens := List( [1..n_gens], x->POL_RandomGroupElement( u_gens  ));

    return gens;

end;


POL_TriangularizableGens := function( n_blocks, n_gens )
    local n_fields,a_gens,i,ll,dim,j,k,start,rr,gens,g,start1,start2,
          rr1,rr2, u_entries, mat;
  
    n_fields := 6;
    a_gens := [];
    for i in [1..n_blocks] do 
        Add( a_gens, POL_RandomUnitGroupGens(  RandomList( [1..n_fields] )) );
    od;
  
    #get dimension of composed matrix
    ll := List( [1..n_blocks], x-> Length( a_gens[x][1] ));
    dim := Sum( ll );

    #get final generators
    gens := [];
    for i in [1..n_gens] do 
        g := NullMat( dim,dim );
        #write blocks
        for j in [1..n_blocks] do 
            for k in [j..n_blocks] do 
                if j = k then
                   #place block on diagonal
                     # set starting point
                     start := Sum( ll{[1..(j-1)]} );
                     # get range
                     rr := [1..ll[j]]+start;
                     g{rr}{rr} := RandomList( a_gens[j] );
                elif j <= k then
                   # write upper part
                     #set starting points
                     start1 := Sum( ll{[1..(j-1)]} );
                     start2 := Sum( ll{[1..(k-1)]} );
                     #get range
                     rr1 := [1..ll[j]]+start1;
                     rr2 := [1..ll[k]]+start2;
                     u_entries := [0,0,0,1/2,0];
                     mat := RandomMat( ll[j], ll[k], u_entries );
                     g{rr1}{rr2} := mat;
                     
                fi;
             od;
         od;
        Add( gens, g );
     od;
 
    return gens; 
       

end;


#############################################################################
##
#F POL_PolExamples2( n ) .............Examples for polycyc rat. matrix groups
##
POL_PolExamples2 := function( n )
    local i,M,P, nat, G, gens, d, l, l1, l2, l3,h1,h2,H,g,h;

    # check if aclib is needed
    l1 := Concatenation( [9..16],[21..28],[37..40]);
    l2 := l1 + 40;
    l3 := [82..100];
    l := Concatenation( l1, l2 ,l3);
    l1 := l+100;
    l := Concatenation( l, l1 );
    l1 := l+300;
    l := Concatenation( l, l1 ); 
    l1 := l+400;
    l := Concatenation( l, l1 ); 
    if POL_AlmostCrystallographicGroup = false then 
        if n in l then
            Print( "package 'aclib' is needed for this example.\n" );
            return fail;
        fi;
    fi;

    # some unipotent groups
    if n=1 then
        return Group(
               [ [ [ 1, -4, 1, 2 ], 
                   [ 0, 1, 5, 1 ], 
                   [ 0, 0, 1, 3 ], 
                   [ 0, 0, 0, 1 ] ]
                 ,
                 [ [ 1, -1, -2, 4 ], 
                   [ 0, 1, -1, 1 ], 
                   [ 0, 0, 1, 1 ], 
                   [ 0, 0, 0, 1 ] ]
                 ,
                 [ [ 1, -4, -2, 1 ], 
                   [ 0, 1, -2, -3 ], 
                   [ 0, 0, 1, 2 ], 
                   [ 0, 0, 0, 1 ] ] 
                ]);
    fi;
    if n=2 then
        return Group(
               [ [ [ 1, 5, -3, 1, -3 ], 
                   [ 0, 1, 2, 0, 1 ], 
                   [ 0, 0, 1, 2, -2 ],
                   [ 0, 0, 0, 1, -2 ], 
                   [ 0, 0, 0, 0, 1 ] ]
                 ,
                 [ [ 1, 3, -3, -1, 1 ], 
                   [ 0, 1, 0, -2, 2 ], 
                   [ 0, 0, 1, 4, 1 ],
                   [ 0, 0, 0, 1, -1 ], 
                   [ 0, 0, 0, 0, 1 ] ] 
               ]);
    fi;
    if n=3 then
        return Group( 
               [ [ [ 73/10, -35/2, 42/5, 63/2 ], 
                   [ 27/20, -11/4, 9/5, 27/4 ],
                   [ -3/5, 1, -4/5, -9 ], 
                   [ -11/20, 7/4, -2/5, 1/4 ] ]
                 ,
                 [ [ -42/5, 423/10, 27/5, 479/10 ], 
                   [ -23/10, 227/20, 13/10, 231/20 ],
                   [ 14/5, -63/5, -4/5, -79/5 ],
                   [ -1/10, 9/20, 1/10, 37/20 ] ] 
               ]);
    fi;
    if n=4 then
        return Group(
               [ [ [ 5, 2, -8, 17, -1 ], 
                   [ -69/4, -15/4, 449/20, -163/5, 53/20 ],
                   [ -2, 4, 9/5, 63/5, 3/5 ], 
                   [ 13/4, 3/4, -121/20, 57/5, -17/20 ],
                   [ 241/4, 7/4, -1477/20, 319/5, -189/20 ] ]
                  ,
                  [ [ 19/2, 0, -3, -19/2, -1/2 ], 
                    [ -74/5, 129/20, 7/4, 159/4, 9/10 ],
                    [ 53/10, 4/5, -4, 9/2, -9/10 ], 
                    [ 37/10, -41/20, -7/4, -29/4, -3/5 ],
                    [ 137/5, -457/20, 37/4, -559/4, 3/10 ] ] 
                ]);
    fi;
    if n in [5..8] then
        return MatExamples( n-4 );
    fi;
    if n=9 then
        return POL_AlmostCrystallographicGroup( 3, 17, [1,0,-3,7] );
    fi;
    if n=10 then
        return POL_AlmostCrystallographicGroup( 3, 16, [3,4,-1,0] );
    fi;
    if n=11 then
        return POL_AlmostCrystallographicGroup( 3, 15, [-1,1,0,0] );
    fi;
    if n=12 then
        return POL_AlmostCrystallographicGroup( 3, 14, [-2,-1,2,-1] );
    fi;
    if n=13 then
        return POL_AlmostCrystallographicGroup( 4, 2, [0,-3,-2,1,-1,-2,4] );
    fi;
    if n=14 then
        return POL_AlmostCrystallographicGroup( 4, 13, [-2,0,-2,-2,-1,-1] );
    fi;
    if n=15 then
        return POL_AlmostCrystallographicGroup( 4, 37, [ 1,2,0,-3,-4] );
    fi;
    if n=16 then
        return POL_AlmostCrystallographicGroup( 4, 86,[0,-2,-1,-2,-1] );
    fi;
    if n in [17..20] then
        return POL_KroneckerProduct( MatExamples( n-16), -1  );
    fi;
    if n in [21..28] then
        return POL_KroneckerProduct( PolExamples( n-12 ), 1 );
    fi; 
    if n=29 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 2 ) );
    fi;
    if n=30 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 4 ) );
    fi;
    if n=31 then
        return POL_DirectProduct( PolExamples( 2 ), PolExamples( 8 ) );
    fi;
    if n=32 then
        return POL_DirectProduct( PolExamples( 6 ), PolExamples( 7 ) );
    fi;
    if n=33 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 2 ) );
    fi;
    if n=34 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 4 ) );
    fi;
    if n=35 then
        return POL_DirectProduct( PolExamples( 2 ), PolExamples( 8 ) );
    fi;
    if n=36 then
        return POL_DirectProduct( PolExamples( 6 ), PolExamples( 7 ) );
    fi;
    if n=37 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 9 ) );
    fi; 
    if n=38 then
        return POL_DirectProduct( PolExamples( 10 ), PolExamples( 11 ) );
    fi; 
    if n=39 then
        return POL_DirectProduct( PolExamples( 17 ), PolExamples( 21 ) );
    fi; 
    if n=40 then
        return POL_DirectProduct( PolExamples( 2 ), PolExamples( 27 ) );
    fi; 
    if n in [41..81] then
        return POL_SemidirectProductVectorSpace( PolExamples( n-40 ) );
    fi;
    if n in [82..100] then
        return POL_AlmostCrystallographicGroup( 4, n-5, false );
    fi;
    if n in [101..200] then
        P := SymmetricGroup( 3 );
        M := POL_PolExamples2( n-100 );
        return WreathProductOfMatrixGroup( M, P );
    fi;
    if n in [201..300] then
        P := SmallGroup( 8, 3 );
        nat := RegularActionHomomorphism( P );
        P := Image( nat );
        M := POL_PolExamples2( n-200 );
        return WreathProductOfMatrixGroup( M, P );
    fi;
    if n in [301..600] then
        G := POL_PolExamples2( n-300 );
        gens := GeneratorsOfGroup( G );
        d := Length( gens[1] );
        M := RandomInvertibleMat( Integers, d );
        return G^M;
    fi;
    if n in [601..1200]  then
        return POL_RandomSubgroup( POL_PolExamples2( n-600), 2 );
    fi; 
    # examples which can be nonpolycyclic or nonsolvable
    if n = 1201 then
          h1 := [[2,0],[0,1]];
          h2 := [[1,1],[0,1]];
          H := Group( [h1,h2] );
          return H;
     fi;
     if n = 1202 then
         gens := [ [ [ -1/4, 5/4, -4/3 ], [ 1, 0, 1 ], [ 0, -5/3, -1 ] ],
                 [ [ 2, 3/5, 4 ], [ 2/3, 0, 1 ], [ 5/3, 0, 1/2 ] ] ];
         return Group( gens );
     fi;
     if n = 1203 then
         gens := [ [ [ 2, 4/3, 1/2, 1/2 ], [ -2, -1/2, -1/4, 1 ], 
                    [ -1/2, 0, 0, 3/2 ],
                  [ 0, 1/3, 0, 3/2 ] ],
              [ [ 2, 2, 1, 2 ], [ -2/5, 3/2, 0, -1/2 ], [ -3/2, 0, 1/3, 4 ],
                  [ -1/4, 0, -3, 0 ] ] ];
         return Group( gens );
     fi;
     if n = 1204 then
         gens := [ [ [ 3, 1, 3, -1 ], 
                   [ 2, -1, 1, 1 ], 
                  [ -1, 0, 1, 3 ], [ 1, 1, -1, 0 ] ],
              [ [ 0, -3, -1, 2 ], [ -3, -3, 0, -1 ], [ -1, -2, -1, 0 ],
                  [ 1, -1, 2, -5 ] ] ];
         return Group( gens );
     fi;
     if n= 1205 then
           gens := [ [ [ -7/3, 77/3, 0, 0, 1, 0 ], 
                     [ -77/3, 994/3, 0, 0, 0, 0 ],
                      [ 0, 0, 0, 0, 0, -28/3 ], [ 0, 0, 2/3, 0, 0, 22/3 ],
                      [ 0, 0, 0, 2/3, 0, -10/3 ], [ 0, 0, 0, 0, 2/3, -2 ]
                       ],
                      [ [ 1/3, 8/3, 0, 0, 0, 0 ], [ -8/3, 35, 0, 1, 0, 0 ],
                          [ 0, 0, 0, 0, 0, -28/3 ], [ 0, 0, 2/3, 0, 0, 22/3 ],
                          [ 0, 0, 0, 2/3, 0, -10/3 ], 
                         [ 0, 0, 0, 0, 2/3, -2 ]] ];
             return Group( gens );
     fi;
     if n = 1206 then
        gens := [ [ [ -6, -1/2, 3/4, -5/3 ], [ 0, -3, 3, -3/2 ], 
                 [ 0, 0, 1/3, -4/7 ],
                  [ 0, 0, 0, 1 ] ],
                [ [ 7/4, 2, 1/2, -5/3 ], [ 0, 5/6, -6, 1 ], [ 0, 0, 3, 2/7 ],
                  [ 0, 0, 0, 2/3 ] ] ];
        return Group( gens );
     fi;
     if n = 1207 then
        gens := [ [ [ 1, 5/7, 3/4, -5, 2/5 ], 
                  [ 0, -1, 3/2, 2, 4/7 ], [ 0, 0, 2/3, 1, -7/5 ],
                  [ 0, 0, 0, 1/5, 4/7 ], [ 0, 0, 0, 0, 2/5 ] ],
                  [ [ 2, -2/7, -4/7, 1, 3/7 ], [ 0, -1/5, -1/3, 1, 1/2 ],
                  [ 0, 0, -4/3, -3, 2 ], [ 0, 0, 0, 7, -1/6 ], 
                   [ 0, 0, 0, 0, -2 ] ] ];
        return Group( gens );
     fi;
     if n = 1208 then 
        gens := [ [ [ 3/2, -3, -4/5, 1/3, -3, -5/6, 4, 5/3 ],
                 [ 0, -1, 5/7, -1/2, 3/7, -1/3, -4/5, 1/2 ],
                 [ 0, 0, -1/4, 3/5, 5/2, -1/6, -1, 1 ],
                  [ 0, 0, 0, 1/5, 7/4, -2, -7/4, -1 ],
                  [ 0, 0, 0, 0, 5/3, -5/2, -1, -1/6 ], 
                  [ 0, 0, 0, 0, 0, -1, 5/2, -1 ],
                  [ 0, 0, 0, 0, 0, 0, 3, 1 ], 
                 [ 0, 0, 0, 0, 0, 0, 0, -2/7 ] ],
                [ [ 3/2, 1, -3/2, 1, -1, -2/5, 1/5, -1 ],
                [ 0, 1, 4/7, 1, -3/5, -5/7, 5/2, 3 ],
                 [ 0, 0, -1/3, 1, 3/2, -4/3, 3/2, 2/3 ],
                  [ 0, 0, 0, 3, -3, -7/5, 5/2, 1/2 ], 
                  [ 0, 0, 0, 0, 3/5, -2, 4/3, 1 ],
                 [ 0, 0, 0, 0, 0, -2, 3, 3 ], 
                  [ 0, 0, 0, 0, 0, 0, -1/2, -1/2 ],
                 [ 0, 0, 0, 0, 0, 0, 0, 5/3 ] ] ];
          return Group( gens );
       fi;
       if n = 1209 then
          gens := [ [ [ 5/6, -2, 1, 4, -1, 2 ], [ 2/3, -19/6, -1, 4, -3, 0 ],
      [ 0, 0, 5/6, -2, -1, -2 ], [ 0, 0, 2/3, -19/6, 0, -3 ],
      [ 0, 0, 0, 0, 5/6, -2 ], [ 0, 0, 0, 0, 2/3, -19/6 ] ],
  [ [ -1/2, -12/5, 3, -1, 1, -2 ], [ 4/5, -53/10, -2, -4, -2, 1 ],
      [ 0, 0, -1/2, -12/5, -2, -4 ], [ 0, 0, 4/5, -53/10, 2, 3 ],
      [ 0, 0, 0, 0, -1/2, -12/5 ], [ 0, 0, 0, 0, 4/5, -53/10 ] ],
  [ [ 4733/600, -2037/50, -2, -1, 4, -2 ], [ 679/50, -8831/120, 0, 0, -3, -2 ],
      [ 0, 0, 4733/600, -2037/50, 0, 2 ], [ 0, 0, 679/50, -8831/120, 4, 1 ],
      [ 0, 0, 0, 0, 4733/600, -2037/50 ], [ 0, 0, 0, 0, 679/50, -8831/120 ] ],
  [ [ 1, 0, -3, -2, -2, -4 ], [ 0, 1, 3, 2, 1, 3 ], [ 0, 0, 1, 0, -2, 1 ],
      [ 0, 0, 0, 1, 2, 0 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 1 ] ] ];
            return Group( gens );
       fi;
       if n = 1210 then
           # takes 6 minutes to test polycyclicity 
           gens := [ [ [ 63/20, -5/2, 121/2, -1475, -5, 1, 1, 1 ],
      [ 0, -237/20, 721/2, -17579/2, 1, -3, 2, -2 ],
      [ 2/5, -15/2, 3393/20, -8129/2, 1, -1, 1, -1 ],
      [ 1/2, -121/10, 295, -144107/20, -3, -1, 0, 0 ],
      [ 0, 0, 0, 0, 63/20, -5/2, 121/2, -1475 ],
      [ 0, 0, 0, 0, 0, -237/20, 721/2, -17579/2 ],
      [ 0, 0, 0, 0, 2/5, -15/2, 3393/20, -8129/2 ],
      [ 0, 0, 0, 0, 1/2, -121/10, 295, -144107/20 ] ],
  [ [ -281351/400, 34831/2, -8511437/20, 20798633/2, 3, 0, -2, 0 ],
      [ -85011/20, 41515849/400, -12680078/5, 1239406543/20, -1, 0, -1, 1 ],
      [ -196313/100, 959919/20, -469170371/400, 286619339/10, -1, -4, 1, 1 ],
      [ -34831/10, 8511437/100, -20798633/10, 20329462629/400, 1, -2, 4, -2 ],
      [ 0, 0, 0, 0, -281351/400, 34831/2, -8511437/20, 20798633/2 ],
      [ 0, 0, 0, 0, -85011/20, 41515849/400, -12680078/5, 1239406543/20 ],
      [ 0, 0, 0, 0, -196313/100, 959919/20, -469170371/400, 286619339/10 ],
      [ 0, 0, 0, 0, -34831/10, 8511437/100, -20798633/10, 20329462629/400 ] ],
  [ [ -5, -3, 75, -3665/2, 1, 0, -1, -2 ], [ 1/2, -23, 447, -10920, 0, -3, 1, 2 ],
      [ 0, -17/2, 202, -10101/2, -3, -1, 0, 1 ],
      [ 3/5, -15, 733/2, -17921/2, 0, 1, 2, 3 ],
      [ 0, 0, 0, 0, -5, -3, 75, -3665/2 ], [ 0, 0, 0, 0, 1/2, -23, 447, -10920 ],
      [ 0, 0, 0, 0, 0, -17/2, 202, -10101/2 ],
      [ 0, 0, 0, 0, 3/5, -15, 733/2, -17921/2 ] ],
  [ [ -50, -30, 750, -18325, 3, -2, 0, 2 ], [ 5, -230, 4470, -109200, 0, 1, 5, 3 ],
      [ 0, -85, 2020, -50505, 3, 0, 1, 4 ], [ 6, -150, 3665, -89605, 2, -3, 1, -1 ]
        , [ 0, 0, 0, 0, -50, -30, 750, -18325 ],
      [ 0, 0, 0, 0, 5, -230, 4470, -109200 ], [ 0, 0, 0, 0, 0, -85, 2020, -50505 ],
      [ 0, 0, 0, 0, 6, -150, 3665, -89605 ] ] ];
           return Group( gens );
        fi;



     ###############################################################
     # some easy examples
     if n = -1 then
         g := 2*IdentityMat( 2, 1 ); 
         gens := [g];
         return Group( gens );
     fi;
     if n = -2 then 
        g := 2*IdentityMat( 3, 1 ); 
         gens := [g];
         return Group( gens );  
     fi;
     if n = -3 then
        g := 1345*IdentityMat( 5, 1 ); 
         gens := [g];
         return Group( gens );  
     fi;
     if n = -4 then
        g := 23* IdentityMat( 5, 1 ); 
        h := 12* IdentityMat( 5, 1 );
        gens := [g,h];
        return Group( gens );
     fi;
     if n = -5 then 
        g := IdentityMat( 3,1 );
        g[3][3] := 34;
        h := IdentityMat( 3,1 );
        h[1][1] := 23;
        gens := [g,h];
        return Group( gens );
     fi;
     if n = -6 then
        g := IdentityMat(4,1 );
        gens := [g];
        return Group( gens );
     fi;
     if n = -7 then
        g := [[2]];
        h := [[3]];
        gens := [g,h];
        return Group( gens );
     fi;
     if n = -8 then
        g := [[1]];
        gens := [g];
        return Group( gens );
     fi;
 
     ##################################################################
     # some abelian irrdeucible examples
     if n = - 9 then
        gens := [ [ [ -21/5, 0, 56, -168 ], [ 0, -21/5, -44, 188 ], 
                  [ -4, 0, 79/5, -104 ],
                  [ 0, -4, 12, -101/5 ] ],
                  [ [ -1/2, 0, 434/5, -1302/5 ], [ 0, -1/2, -341/5, 1457/5 ],
                  [ -31/5, 0, 61/2, -806/5 ], [ 0, -31/5, 93/5, -253/10 ] ],
                  [ [ -5/6, 0, 14/5, -77/5 ], [ 1/2, -5/6, -11/5, 149/10 ],
                  [ -1/5, 1/2, 1/6, -77/10 ], [ 0, -1/5, 11/10, -47/15 ] ] ];
        return Group( gens );
     fi;
     if n = - 10 then 
        gens := [ [ [ -37/20, 0, 0, -70/3 ], [ 5/3, -37/20, 0, 55/3 ],
                [ 0, 5/3, -37/20, -25/3 ], [ 0, 0, 5/3, -137/20 ] ],
                [ [ 3/4, 0, 0, -56 ], [ 4, 3/4, 0, 44 ], [ 0, 4, 3/4, -20 ],
                 [ 0, 0, 4, -45/4 ] ],
               [ [ 7/2, 0, 28, -84 ], [ 0, 7/2, -22, 94 ],
                 [ -2, 0, 27/2, -52 ],
                     [ 0, -2, 6, -9/2 ] ] ];
        return Group( gens );
     fi;
     if n = -11 then 
        gens := [ [ [ -1, 185/12 ], [ -185/12, 2393/12 ] ], 
                [ [ -1/2, -24 ], [ 24, -625/2 ] ]
                 , [ [ 1/3, -1/2 ], [ 1/2, -37/6 ] ] ];
        return( Group(gens ) );
     fi;
     if n = -12 then
        gens := [ [ [ 0, 0, 0, 0, 0, 119/6 ], 
                 [ -17/12, 0, 0, 0, 0, -187/12 ],
                 [ 0, -17/12, 0, 0, 0, 0 ], [ 0, 0, -17/12, 0, 0, -17 ],
                 [ 0, 0, 0, -17/12, 0, 0 ], [ 0, 0, 0, 0, -17/12, 85/12 ] ],
                 [ [ 0, 0, 0, 0, 196/15, -238/3 ], 
                 [ 1, 0, 0, 0, -154/15, 377/5 ],
                 [ -14/15, 1, 0, 0, 0, -154/15 ], 
                 [ 0, -14/15, 1, 0, -56/5, 68 ],
                 [ 0, 0, -14/15, 1, 0, -56/5 ], 
                 [ 0, 0, 0, -14/15, 17/3, -85/3 ] ],
                 [ [ 2, 0, 0, 0, -84/5, 98 ], [ -1, 2, 0, 0, 66/5, -469/5 ],
                 [ 6/5, -1, 2, 0, 0, 66/5 ], [ 0, 6/5, -1, 2, 72/5, -84 ],
                 [ 0, 0, 6/5, -1, 2, 72/5 ], [ 0, 0, 0, 6/5, -7, 37 ] ] ];
         return Group( gens );
     fi;
     
     ##################################################################
     # some triangularizable examples
     if n = -13 then
           gens := [ [ [ 9/10, 39/10, 0, 0 ], [ -39/10, 258/5, 0, 0 ], 
                   [ 0, 0, 4, -39 ],
                    [ 0, 0, 39, -503 ] ],
                    [ [ 9/10, 39/10, 0, 0 ], [ -39/10, 258/5, 0, 0 ], 
                   [ 0, 0, 4, -39 ],
                    [ 0, 0, 39, -503 ] ] ];
            return Group( gens );
     fi;
     if n = -14 then
          gens := [ [ [ 7, 6, 0, 0 ], [ -6, 85, 0, 0 ], 
                    [ 0, 0, 0, 5 ], [ 0, 0, -5, 65 ] ],
                   [ [ -7, 78, 0, 0 ], [ -78, 1007, 0, 0 ], [ 0, 0, -6, 81 ],
                   [ 0, 0, -81, 1047 ] ] ];
          return Group( gens );
     fi;
     if n = -15 then
           gens := [ [ [ -9, 36, 0, 0, 0 ], [ -12, 63, 0, 0, 0 ], 
                     [ 0, 0, -1, 6, 0 ],
                     [ 0, 0, 0, 5, 6 ], [ 0, 0, -3, 0, 5 ] ],
                     [ [ -6, 24, 0, 0, 0 ], [ -8, 42, 0, 0, 0 ], 
                      [ 0, 0, -1, 6, 0 ],
                     [ 0, 0, 0, 5, 6 ], [ 0, 0, -3, 0, 5 ] ] ];
        return Group( gens );
     fi;
     # takes some more time, example form referee
     if n = -16 then
          gens := [ [ [ 1, -3, 8, -2, 0, 2 ], [ 5, -14, 37, -3, -2, -2 ],
                     [ -3, 8, -22, 0, -5, 2 ], [ 0, 0, 0, 0, 1, -1 ],
                      [ 0, 0, 0, 0, 5, -4 ],
                    [ 0, 0, 0, 1, -1, 6 ] ],
                       [ [ 1, 0, 0, -1, 1, -2 ], 
                   [ 0, 1, 0, -3, 0, 5 ], [ 0, 0, 1, -1, 2, 1 ],
                    [ 0, 0, 0, 2, -1, -1 ], [ 0, 0, 0, -2, -3, -6 ],
                       [ 0, 0, 0, -1, -1, -2 ] ] ];
          return Group( gens );
     fi;
     
     # finite examples
     if n = -17 then
        return ImfMatrixGroup( 4,1,1 );
     fi;
     if n = -18 then
        return ImfMatrixGroup(6,2,1);
     fi;       



     ################################################################
     #difficult examples ???
       if n = -100 then
           gens := [ [ [ -100, 51, 70, -231,  1, 0, 0, 1 ], 
                       [ -169, 82, 112, -385, 0, 0, 0, 0 ],
                       [ -59, 27, 37, -132,   0, 0, 0, 0 ], 
                       [ -80, 38, 52, -181,   0, 1, 0, 0 ],
                       [ 0, 0, 0, 0, -19, 96, 70, -231 ],
                       [ 0, 0, 0, 0, -34, 163, 112, -385 ],
                       [ 0, 0, 0, 0, 31, -153, -107, 363 ], 
                       [ 0, 0, 0, 0, 10, -52, -38, 125 ]
                       ],
                     [ [ -1, 0, -1, 0,  0, 0, 0, 0 ], 
                       [ -2, 3, 5, -11, 0, 0, 1, 0 ], 
                       [ -1, 0, 0, 0,   0, 0, 1, 0 ], 
                       [ -1, 1, 2, -4,  1, 0, 1, 0 ],
                       [ 0, 0, 0, 0, -19, 96, 70, -231 ], 
                       [ 0, 0, 0, 0, -34, 163, 112, -385 ],
                       [ 0, 0, 0, 0, 31, -153, -107, 363 ], 
                       [ 0, 0, 0, 0, 10, -52, -38, 125 ]
                      ] ];
            return Group( gens );
        fi;
       if n = -101 then 
           gens:= [[[1,-3,8,-2,0,2],
                [5,-14,37,-3,-2,-2],
                [-3,8,-22,0,-5,2],
                 [0,0,0,0,1,-1],
                  [0,0,0,0,5,-4],
                   [0,0,0,1,-1,6]],
               [[1,0,0,-1,1,-2],
                [0,1,0,-3,0,5],
                  [0,0,1,-1,2,1],
                 [0,0,0,2,-1,-1],
                     [0,0,0,-2,-3,-6],
                   [0,0,0,-1,-1,-2]]];
            return Group( gens );
       fi;
       if n = -102 then
           gens :=[[[-984,113,11,19,0,-2,-2,5,1,1,-1],
                    [1160,146,223,201,0,1,0,-2,-3,2,3],
                    [124,30,36,33,2,0,2,-2,1,-5,0],
                    [113,11,19,17,3,0,4,-1,1,1,-1],
                    [0,0,0,0, 619,1178,2242,        2,-2,-1,-2],
                    [0,0,0,0, 3420, 6509,12388,     2,-2,-2,-4],
                    [0,0,0,0, 1178, 2242, 4267,     2,0,1,-3],
                    [0,0,0,0, 0,0,0,         5274, 4861, 4561, 4272],
                    [0,0,0,0, 0,0,0,         57443, 53884,50471,47281],
                    [0,0,0,0, 0,0,0,         9422,8833,8274,7751],
                    [0,0,0,0, 0,0,0,         4861,4561,4272,4002]],
                   [[4272,4002,3749,3512,    -1,-2,2,-1,1,1,2],
                    [47281,44292,41492,38869, 4,-1,-1,3,-2,3,1],
                    [7751,7261,6802,6372,      2,-2,5,4,-1,-1,-3],
                    [4002,3749,3512,3290,      -1,1,0,-2,0,1,-3],
                    [0,0,0,0,                   0,0,1,   -1,-1,-2,2],
                    [0,0,0,0,                   1,0,5,   3,-1,2,2],
                    [0,0,0,0,                   0,1,-1,  -1,2,-1,0],
                    [0,0,0,0,                 0,0,0,   4272,4002,3749,3512 ],
                    [0,0,0,0,                 0,0,0,  47281,44292,41492,38869],
                    [0,0,0,0,                 0,0,0,   7751,7261,6802,6372],
                    [0,0,0,0,                 0,0,0,  4002,3749,3512,3290]]
                  ];
             return Group( gens );
        fi;
       if n = -103 then 
          gens := [ [ [ -12, -3, -18, 22, 0, 1/2, 0, 0, 0, 0, 0, 0 ],
                [ -1, 16, 46, -88, 1/2, 0, 1/2, 0, 0, 0, 0, 0 ],
                [ -2, -10, -23, 33, 0, 0, 0, 0, 0, 0, 0, 0 ],
                   [ 0, 4, 14, -29, 0, 0, 0, 1/2, 1/2, 1/2, 0, 0 ],
                   [ 0, 0, 0, 0, -1, -1, -1, 0, 0, 1/2, 0, 0 ],
                   [ 0, 0, 0, 0, -5, 3, 5, -11, 1/2, 0, 0, 0 ],
                   [ 0, 0, 0, 0, -3, 4, 5, -11, 0, 0, 1/2, 0 ],
                   [ 0, 0, 0, 0, -3, 3, 4, -9, 0, 0, 0, 0 ],
                   [ 0, 0, 0, 0, 0, 0, 0, 0, -15, 48, 36 -121 ],
                   [ 0, 0, 0, 0, 0, 0, 0, 0, -26, 83, 62, -209 ],
                   [ 0, 0, 0, 0, 0, 0, 0, 0, 11, -71, -49, 165 ],
                   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, -14, 47 ] ],
               [ [ -12, -3, -18, 22, 0, 0, 0, 0, 0, 0, 0, 0 ],
--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.54 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge