aclib-1.3.2/PackageInfo.g0000664000371700037170000001016013627151544016326 0ustar gap-jenkinsgap-jenkins############################################################################# ## ## PackageInfo.g for the package `Aclib' Bettina Eick ## SetPackageInfo( rec( PackageName := "AClib", Subtitle := "Almost Crystallographic Groups - A Library and Algorithms", Version := "1.3.2", Date := "28/01/2020", # dd/mm/yyyy format License := "Artistic-2.0", Persons := [ rec( LastName := "Dekimpe", FirstNames := "Karel", IsAuthor := true, IsMaintainer := false, Email := "Karel.Dekimpe@kuleuven.be", WWWHome := "https://www.kuleuven-kulak.be/~dekimpe/", PostalAddress := Concatenation( [ "Katholieke Universiteit Leuven\n", "Campus Kortrijk, Universitaire Campus\n", "Kortrijk, B 8500\n", "Belgium"]), Place := "Kortrijk", Institution := "KU Leuven Kulak"), rec( LastName := "Eick", FirstNames := "Bettina", IsAuthor := true, IsMaintainer := true, Email := "beick@tu-bs.de", WWWHome := "http://www.iaa.tu-bs.de/beick", PostalAddress := Concatenation( "Institut Analysis und Algebra\n", "TU Braunschweig\n", "Universitätsplatz 2\n", "D-38106 Braunschweig\n", "Germany" ), Place := "Braunschweig", Institution := "TU Braunschweig") ], Status := "accepted", CommunicatedBy := "Gerhard Hiss (Aachen)", AcceptDate := "02/2001", PackageWWWHome := "https://gap-packages.github.io/aclib/", README_URL := Concatenation( ~.PackageWWWHome, "README" ), PackageInfoURL := Concatenation( ~.PackageWWWHome, "PackageInfo.g" ), SourceRepository := rec( Type := "git", URL := "https://github.com/gap-packages/aclib", ), IssueTrackerURL := Concatenation( ~.SourceRepository.URL, "/issues" ), ArchiveURL := Concatenation( ~.SourceRepository.URL, "/releases/download/v", ~.Version, "/aclib-", ~.Version ), ArchiveFormats := ".tar.gz", AbstractHTML := "The AClib package contains a library of almost crystallographic groups and a some algorithms to compute with these groups. A group is called almost crystallographic if it is finitely generated nilpotent-by-finite and has no non-trivial finite normal subgroups. Further, an almost crystallographic group is called almost Bieberbach if it is torsion-free. The almost crystallographic groups of Hirsch length 3 and a part of the almost cyrstallographic groups of Hirsch length 4 have been classified by Dekimpe. This classification includes all almost Bieberbach groups of Hirsch lengths 3 or 4. The AClib package gives access to this classification; that is, the package contains this library of groups in a computationally useful form. The groups in this library are available in two different representations. First, each of the groups of Hirsch length 3 or 4 has a rational matrix representation of dimension 4 or 5, respectively, and such representations are available in this package. Secondly, all the groups in this libraray are (infinite) polycyclic groups and the package also incorporates polycyclic presentations for them. The polycyclic presentations can be used to compute with the given groups using the methods of the Polycyclic package.", PackageDoc := rec( BookName := "AClib", ArchiveURLSubset := ["doc", "htm"], HTMLStart := "htm/chapters.htm", PDFFile := "doc/manual.pdf", SixFile := "doc/manual.six", LongTitle := "Almost Crystallographic Groups - A Library and Algorithms", Autoload := true), Dependencies := rec( GAP := ">=4.7", NeededOtherPackages := [["polycyclic",">=1.0"]], SuggestedOtherPackages := [["crystcat",">=1.1"]], ExternalConditions := [] ), AvailabilityTest := ReturnTrue, TestFile := "tst/testall.g", Keywords := ["almost crystallographic groups", "almost Bieberbach group", "virtually nilpotent group", "nilpotent-by-finite group", "datalibrary of almost Bieberbach groups"] )); aclib-1.3.2/LICENSE0000664000371700037170000002070313627151544015020 0ustar gap-jenkinsgap-jenkinsArtistic License 2.0 Copyright (c) 2000-2006, The Perl Foundation. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. Definitions "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. "You" and "your" means any person who would like to copy, distribute, or modify the Package. "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. "Source" form means the source code, documentation source, and configuration files for the Package. "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. Permission for Use and Modification Without Distribution (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. Permissions for Redistribution of the Standard Version (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. Distribution of Modified Versions of the Package as Source (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under (i) the Original License or (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source (5) You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. (6) You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. Aggregating or Linking the Package (7) You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. Items That are Not Considered Part of a Modified Version (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. General Provisions (10) Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. (11) If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. (12) This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. (13) This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. aclib-1.3.2/README0000664000371700037170000000171013627151544014670 0ustar gap-jenkinsgap-jenkinsAclib -- A Library of 3- and 4-Dimensional Almost Crystallographic Groups ========================================================================= by Karel Dekimpe and Bettina Eick Introduction ------------ The package `aclib' contains the almost crystallographic groups as classified by K. Dekimpe in the Springer Lecture Notes, Vol. 1639: "Almost Bieberbach Groups: Affine and Polynomial Structures". The groups are available as rational matrix groups. Further, all the groups in the library are polycyclic. If the `Polycyclic' package for computations with infinite polycyclic groups is installed, then also polycyclic presentations for the almost crystallographic groups are available and can be used for computations with these groups. Support ------- Please report any problems you may encounter using `aclib' at License ------- The `aclib' package is licensed under the Artistic License 2.0. aclib-1.3.2/init.g0000664000371700037170000000045413627151544015127 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W init.g share package Karel Dekimpe #W Bettina Eick ## # read .gd files ReadPackage( "aclib", "gap/groups.gd" ); aclib-1.3.2/read.g0000664000371700037170000000171413627151544015077 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W read.g share package Karel Dekimpe #W Bettina Eick ## # read matrix groups ReadPackage( "aclib", "gap/matgrp3.gi" ); ReadPackage( "aclib", "gap/matgrp4.gi" ); ReadPackage( "aclib", "gap/matgrp.gi" ); # read corresponding pcp groups ReadPackage( "aclib", "gap/pcpgrp3.gi" ); ReadPackage( "aclib", "gap/pcpgrp4.gi" ); ReadPackage( "aclib", "gap/pcpgrp.gi" ); ReadPackage( "aclib", "gap/betti.gi" ); ReadPackage( "aclib", "gap/union.gi" ); ReadPackage( "aclib", "gap/extend.gi" ); # read some help functions to work with crystallographic groups if IsPackageMarkedForLoading( "crystcat", "1.1" ) then ReadPackage( "aclib", "gap/crystgrp.gi" ); else Print("#I The crystcat package is not installed \n"); Print("#I Cannot load crystallographic groups functionality \n"); fi; aclib-1.3.2/htm/chapters.htm0000664000371700037170000000140513627151544017124 0ustar gap-jenkinsgap-jenkinsaclib : a GAP 4 package - Chapters

aclib : a GAP 4 package - Chapters

  1. The Almost Crystallographic Groups Package
  2. Algorithms for almost crystallographic groups
  3. The catalog of almost crystallographic groups
  4. Example computations with almost crystallographic groups

aclib manual
January 2020
aclib-1.3.2/htm/biblio.htm0000664000371700037170000000324513627151544016557 0ustar gap-jenkinsgap-jenkinsaclib : a GAP 4 package - References

aclib : a GAP 4 package - References

[AUS]
Louis Auslander.
Bieberbach's theorem on space groups and discrete uniform subgroups of lie groups.
Ann. of Math, 71(3):579--590, 1960.
[BRO]
Kenneth S. Brown.
Cohomology of Groups, volume 87 of Grad. Texts in Math.
Springer-Verlag, New York, 1982.
[DE2]
Karel Dekimpe and Bettina Eick.
Computational aspects of group extensions and their application in topology.
Submitted, 2001.
[DE1]
Karel Dekimpe and Bettina Eick.
Computations with almost crystallographic groups.
Submitted, 2001.
[KD]
Karel Dekimpe.
Almost-Bieberbach Groups: Affine and Polynomial Structures, volume 1639 of Lecture Notes in Mathematics.
Springer-Verlag, Heidelberg, 1996.
[DM]
An Descheemaeker and Wim Malfait.
P-localization of relative groups.
Journal of Pure and Applied Algebra, 159(1), 2001.
[LEE]
Kyung Bai Lee.
There are only finitely many infra-nilmanifolds under each nilmanifold.
Quart. J. Math. Oxford, 39(2):61--66, 1988.

[Up]

aclib manual
January 2020
aclib-1.3.2/htm/CHAP004.htm0000664000371700037170000003063413627151544016260 0ustar gap-jenkinsgap-jenkins[aclib] 4 Example computations with almost crystallographic groups [Up] [Previous] [Index]

4 Example computations with almost crystallographic groups

Sections

  1. Example computations I
  2. Example computations II
  3. Example computations III

4.1 Example computations I

Using the functions available for pcp groups in the share package polycyclic it is now easy to redo some of the calculations of KD. As a first example we check whether the groups indicated as torsion free in KD are also determined as torsion free ones by GAP. In KD these almost Bieberbach groups are listed as ``AB-groups''. So for type ``013'' these are the groups with parameters (k,0,1,0,1,0) where k is an even integer. Let's look at some examples in GAP:

gap> G:=AlmostCrystallographicPcpDim4("013",[8,0,1,0,1,0]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
true
gap> G:=AlmostCrystallographicPcpDim4("013",[9,0,1,0,1,0]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
false

Further, there is also some cohomology information in the tables of KD. In fact, the groups in this library were obtained as extensions E of the form


1 → ZEQ → 1

where, in the 4-dimensional case Q = E/〈d 〉. The cohomology information for the particular example above shows that the groups determined by a parameter set (k1,k2,k3,k4,k4,k6) are equivalent as extensions to the groups determined by the parameters (k1, k2 mod 2, k3 mod 2, k4 mod 2, k5 mod 2, 0). This is also visible in finding torsion:

gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,2,0,1,0]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
false
gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,3,0,1,9]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
true

4.2 Example computations II

The computation of cohomology groups played an important role in the classification of the almost Bieberbach groups in KD. Using GAP, it is now possible to check these computations. As an example we consider the 4-dimensional almost crystallographic groups of type 85 on page 202 of KD. This group E has 6 generators. In the table, one also finds the information


H2(Q,Z) = Z⊕(Z2)2Z4

for Q=E/〈d 〉 as above. Moreover, the Q--module Z is in fact the group 〈d 〉, where the Q-action comes from conjugation inside E. In the case of groups of type 85, Z is a trivial Q-module. The following example demonstrates how to (re)compute this two-cohomology group H2(Q,Z).

gap> G:=AlmostCrystallographicPcpGroup(4, "085", false);
Pcp group with orders [ 2, 4, 0, 0, 0, 0 ]
gap> GroupGeneratedByd:=Subgroup(G, [G.6] );
Pcp group with orders [ 0 ]
gap> Q:=G/GroupGeneratedByd;
Pcp group with orders [ 2, 4, 0, 0, 0 ]
gap> action:=List( Pcp(Q), x -> [[1]] );
[ [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ] ]
gap> C:=CRRecordByMats( Q, action);;
gap> TwoCohomologyCR( C ).factor.rels;
[ 2, 2, 4, 0 ]

This last line gives us the abelian invariants of the second cohomology group H2(Q,Z). So we should read this line as


H2(Q,Z) = Z2Z2Z4Z

which indeed coincides with the information in KD.

4.3 Example computations III

As another application of the capabilities of the combination of aclib and polycyclic we check some computations of DM.

Section 5 of the paper DM is completely devoted to an example of the computation of the P-localization of a virtually nilpotent group, where P is a set of primes. Although it is not our intention to develop the theory of P-localization of groups at this place, let us summarize some of the main results concerning this topic here.

For a set of primes P, we say that nP if and only if n is a product of primes in P. A group G is said to be P-local if and only if the map μn:GG: ggn is bijective for all nP′, where P′ is the set of all primes not in P. The P-localization of a group G, is a P-local group GP together with a morphism α:GGP which satisfy the following universal property: For each P-local group L and any morphism φ: GL, there exists a unique morphism ψ:GPL, such that ψ°α = φ.

This concept of localization is well developed for finite groups and for nilpotent groups. For a finite group G, the P-localization is the largest quotient of G, having no elements with an order belonging to P′ (the morphism α, mentioned above is the natural projection).

In DM a contribution is made towards the localization of virtually nilpotent groups. The theory developed in the paper is then illustrated in the last section of the paper by means of the computation of the P-localization of an almost crystallographic group. For their example the authors have chosen an almost crystallographic group G of dimension 3 and type 17. For the set of parameters (k1,k2,k3,k4) they have considered all cases of the form (k1,k2,k3,k4)=(2,0,0,k4).

Here we will check their computations in two cases k4=0 and k4=1 using the set of primes P={2}. The holonomy group of these almost crystallographic groups G is the dihedral group D6 of order 12. Thus there is a short exact sequence of the form
1 → Fitt(G) → GD6 → 1·

As a first step in their computation, Descheemaeker and Malfait determine the group IPD6, which is the unique subgroup of order 3 in D6. One of the main objects in DM is the group K=p−1 (IPD6), where p is the natural projection of G onto its holonomy group. It is known that the P-localization of G coincides with the P-localization of G3(K), where γ3(K) is the third term in the lower central series of K. As G3(K) is finite in this example, we exactly know what this P-localization is. Let us now show, how GAP can be used to compute this P-localization in two cases:

First case: The parameters are (k1,k2,k3,k4)=(2,0,0,0)

gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,0] );
Pcp group with orders [ 2, 6, 0, 0, 0 ]
gap> projection := NaturalHomomorphismOnHolonomyGroup( G );
[ g1, g2, g3, g4, g5 ] -> [ g1, g2, identity, identity, identity ]
gap> F := HolonomyGroup( G );
Pcp group with orders [ 2, 6 ]
gap> IPprimeD6 := Subgroup( F , [F.2^2] );
Pcp group with orders [ 3 ]
gap> K := PreImage( projection, IPprimeD6 );
Pcp group with orders [ 3, 0, 0, 0 ]
gap> PrintPcpPresentation( K );
pcp presentation on generators [ g2^2, g3, g4, g5 ]
g2^2 ^ 3 = identity
g3 ^ g2^2 = g3^-1*g4^-1
g3 ^ g2^2^-1 = g4*g5^-2
g4 ^ g2^2 = g3*g5^2
g4 ^ g2^2^-1 = g3^-1*g4^-1*g5^2
g4 ^ g3 = g4*g5^2
g4 ^ g3^-1 = g4*g5^-2
gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));
Pcp group with orders [ 0, 0, 0 ]
gap> quotient := G/Gamma3K;
Pcp group with orders [ 2, 6, 3, 3, 2 ]
gap> S := SylowSubgroup( quotient, 3);
Pcp group with orders [ 3, 3, 3 ]
gap> N := NormalClosure( quotient, S);
Pcp group with orders [ 3, 3, 3 ]
gap> localization := quotient/N;
Pcp group with orders [ 2, 2, 2 ]
gap> PrintPcpPresentation( localization );
pcp presentation on generators [ g1, g2, g3 ]
g1 ^ 2 = identity
g2 ^ 2 = identity
g3 ^ 2 = identity
This shows that GPZ23.

Second case: The parameters are (k1,k2,k3,k4)=(2,0,0,1)

gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,1]);;
gap> projection := NaturalHomomorphismOnHolonomyGroup( G );;
gap> F := HolonomyGroup( G );;
gap> IPprimeD6 := Subgroup( F , [F.2^2] );;
gap> K := PreImage( projection, IPprimeD6 );;
gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));;
gap> quotient := G/Gamma3K;;
gap> S := SylowSubgroup( quotient, 3);;
gap> N := NormalClosure( quotient, S);;
gap> localization := quotient/N;
Pcp group with orders [ 2, 2, 2 ]
gap> PrintPcpPresentation( localization );
pcp presentation on generators [ g1, g2, g3 ]
g1 ^ 2 = identity
g2 ^ 2 = g3
g3 ^ 2 = identity
g2 ^ g1 = g2*g3
g2 ^ g1^-1 = g2*g3

In this case, we see that GP=D4.

The reader can check that these results coincide with those obtained in DM. Note also that we used a somewhat different scheme to compute this localization than the one used in DM. We invite the reader to check the same computations, tracing exactly the steps made in DM.

[Up] [Previous] [Index]

aclib manual
January 2020
aclib-1.3.2/htm/theindex.htm0000664000371700037170000000654513627151544017135 0ustar gap-jenkinsgap-jenkinsaclib : a GAP 4 package - Index

aclib : a GAP 4 package - Index

A B D E H I M N O P R T

A

Algorithms for almost crystallographic groups 2.0
AlmostCrystallographicDim3 3.1.1
AlmostCrystallographicDim4 3.1.1
AlmostCrystallographicGroup 3.1.1
AlmostCrystallographicInfo 3.3.1
AlmostCrystallographicPcpDim3 3.2.1
AlmostCrystallographicPcpDim4 3.2.1
AlmostCrystallographicPcpGroup 3.2.1

B

Betti numbers 2.2
BettiNumber 2.2.2
BettiNumbers 2.2.3

D

Determination of certain extensions 2.3

E

Example computations I 4.1
Example computations II 4.2
Example computations III 4.3
Example computations with almost crystallographic groups 4.0

H

HasExtensionOfType 2.3.1
HolonomyGroup 3.2.3

I

IsAlmostBieberbachGroup 2.1.2
IsAlmostCrystallographic 2.1.1
IsomorphismPcpGroup 3.2.2

M

More about almost crystallographic groups 1.1
More about the type and the defining parameters 3.3

N

NaturalHomomorphismOnHolonomyGroup 3.2.3

O

OrientationModule 2.2.1

P

Polycyclically presented groups 3.2
Properties of almost crystallographic groups 2.1

R

Rational matrix groups 3.1

T

The Almost Crystallographic Groups Package 1.0
The catalog of almost crystallographic groups 3.0
The electronic versus the printed library 3.4

[Up]

aclib manual
January 2020
aclib-1.3.2/htm/CHAP001.htm0000664000371700037170000001535113627151544016254 0ustar gap-jenkinsgap-jenkins[aclib] 1 The Almost Crystallographic Groups Package [Up] [Next] [Index]

1 The Almost Crystallographic Groups Package

Sections

  1. More about almost crystallographic groups

A group is called almost crystallographic if it is a finitely generated nilpotent-by-finite group without non-trivial finite normal subgroups. An important special case of almost crystallographic groups are the almost Bieberbach groups: these are almost crystallographic and torsion free.

By its definition, an almost crystallographic group G has a finitely generated nilpotent normal subgroup N of finite index. Clearly, N is polycyclic and thus has a polycyclic series. The number of infinite cyclic factors in such a series for N is an invariant of G: the Hirsch length of G.

For each almost crystallographic group of Hirsch length 3 and 4 there exists a representation as a rational matrix group in dimension 4 or 5, respectively. These representations can be considered as affine representations of dimension 3 or 4. Via these representations, the almost crystallographic groups act (properly discontinuously) on R3 or R4. That is one reason to define the dimension of an almost crystallographic group as its Hirsch length.

The 3-dimensional and a part of the 4-dimensional almost crystallographic groups have been classified by K. Dekimpe in KD. This classification includes all almost Bieberbach groups in dimension 3 and 4. It is the first central aim of this package to give access to the resulting library of groups. The groups in this electronic catalog are available in two different representations: as rational matrix groups and as polycyclically presented groups. While the first representation is the more natural one, the latter description facilitates effective computations with the considered groups using the methods of the Polycyclic package.

The second aim of this package is to introduce a variety of algorithms for computations with polycyclically presented almost crystallographic groups. These algorithms supplement the methods available in the Polycyclic package and give access to some methods which are interesting specifically for almost crystallographic groups. In particular, we present methods to compute Betti numbers and to construct or check the existence of certain extensions of almost crystallographic groups. We note that these methods have been applied in DE1 and DE2 for computations with almost crystallographic groups.

Finally, we remark that almost crystallographic groups can be seen as natural generalizations of crystallographic groups. A library of crystallographic groups and algorithms to compute with crystallographic groups are available in the GAP packages cryst, carat and crystcat.

1.1 More about almost crystallographic groups

Almost crystallographic groups were first discussed in the theory of actions on Lie groups. We recall the original definition here briefly and we refer to AUS, KD and LEE for more details.

Let L be a connected and simply connected nilpotent Lie group. For example, the 3-dimensional Heisenberg group, consisting of all upper unitriangular 3×3--matrices with real entries is of this type. Then L\rtimes Aut(L) acts affinely (on the left) on L via
l,l′ ∈ L,∀α ∈ Aut(L):  (l,α)l′=l  α(l′)·

Let C be a maximal compact subgroup of Aut(L). Then a subgroup G of L \rtimes C is said to be an almost crystallographic group if and only if the action of G on L, induced by the action of L\rtimes Aut(L), is properly discontinuous and the quotient space G \L is compact. One recovers the situation of the ordinary crystallographic groups by taking L=\Bbb Rn, for some n, and C=O(n), the orthogonal group.

More generally, we say that an abstract group is an almost crystallographic group if it can be realized as a genuine almost crystallographic subgroup of some L \rtimes C. In the following theorem we outline some algebraic characterizations of almost crystallographic groups; see Theorem 3.1.3 of KD. Recall that the Fitting subgroup Fitt(G) of a polycyclic-by-finite group G is its unique maximal normal nilpotent subgroup.

Theorem. The following are equivalent for a polycyclic-by-finite group G:

(1)
G is an almost crystallographic group.
(2)
Fitt(G) is torsion free and of finite index in G.
(3)
G contains a torsion free nilpotent normal subgroup N of finite index in G with CG(N) torsion free.
(4)
G has a nilpotent subgroup of finite index and there are no non-trivial finite normal subgroups in G.

In particular, if G is almost crystallographic, then G / Fitt(G) is finite. This factor is called the holonomy group of G.

The dimension of an almost crystallographic group equals the dimension of the Lie group L above which coincides also with the Hirsch length of the polycyclic-by-finite group. This library therefore contains families of virtually nilpotent groups of Hirsch length 3 and 4.

[Up] [Next] [Index]

aclib manual
January 2020
aclib-1.3.2/htm/CHAP003.htm0000664000371700037170000007277513627151544016273 0ustar gap-jenkinsgap-jenkins[aclib] 3 The catalog of almost crystallographic groups [Up] [Previous] [Next] [Index]

3 The catalog of almost crystallographic groups

Sections

  1. Rational matrix groups
  2. Polycyclically presented groups
  3. More about the type and the defining parameters
  4. The electronic versus the printed library

This chapter introduces the access functions to the catalog of 3- and 4-dimensional crystallographic groups. This catalog is an electronic version of the classification obtained in KD.

3.1 Rational matrix groups

The following three main functions are available to access the library of almost crystallographic groups as rational matrix groups.

  • AlmostCrystallographicGroup( dim, type, parameters )
  • AlmostCrystallographicDim3( type, parameters )
  • AlmostCrystallographicDim4( type, parameters )

    dim is the dimension of the required group. Thus dim must be either 3 or 4. The inputs type and parameters are used to define the desired group as described in KD. We outline the possible choices for type and parameters here briefly. A more extended description is given later in Section More about almost crystallographic groups or can be obtained from KD.

    type specifies the type of the required group. There are 17 types in dimension 3 and 95 types in dimension 4. The input type can either be an integer defining the position of the desired type among all types; that is, in this case type is a number in [1..17] in dimension 3 or a number in [1..95] in dimension 4. Alternatively, type can be a string defining the desired type. In dimension 3 the possible strings are "01", "02", …, "17". In dimension 4 the possible strings are listed in the list ACDim4Types and thus can be accessed from GAP.

    parameters is a list of integers. Its length depends on the type of the chosen group. The lists ACDim3Param and ACDim4Param contain at position i the length of the parameter list for the type number i. Every list of integers of this length is a valid parameter input. Alternatively, one can input false instead of a parameter list. Then GAP will chose a random parameter list of suitable length.

    gap> G := AlmostCrystallographicGroup( 4, 50, [ 1, -4, 1, 2 ] );
    <matrix group of size infinity with 5 generators>
    gap> DimensionOfMatrixGroup( G );
    5
    gap> FieldOfMatrixGroup( G );
    Rationals
    gap> GeneratorsOfGroup( G );
    [ [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ], 
          [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], 
      [ [ 1, 1/2, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 1 ], 
          [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], 
      [ [ 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], 
          [ 0, 0, 0, 1, 1 ], [ 0, 0, 0, 0, 1 ] ], 
      [ [ 1, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], 
          [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], 
      [ [ 1, -4, 1, 0, 1/2 ], [ 0, 0, -1, 0, 0 ], [ 0, 1, 0, 0, 0 ], 
          [ 0, 0, 0, 1, 1/4 ], [ 0, 0, 0, 0, 1 ] ] ]
    gap> G.1;
    [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ], 
      [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ]
    gap> ACDim4Types[50];
    "076"
    gap> ACDim4Param[50];
    4
    

    3.2 Polycyclically presented groups

    All the almost crystallographic groups considered in this package are polycyclic. Hence they have a polycyclic presentation and this can be used to facilitate efficient computations with the groups. To obtain the polycyclic presentation of an almost crystallographic group we supply the following functions. Note that the share package Polycyclic must be installed to use these functions.

  • AlmostCrystallographicPcpGroup( dim, type, parameters )
  • AlmostCrystallographicPcpDim3( type, parameters )
  • AlmostCrystallographicPcpDim4( type, parameters )

    The input is the same as for the corresponding matrix group functions. The output is a pcp group isomorphic to the corresponding matrix group. An explicit isomorphism from an almost crystallographic matrix group to the corresponding pcp group can be obtained by the following function.

  • IsomorphismPcpGroup( G )

    We can use the polycyclic presentations of almost crystallographic groups to exhibit structure information on these groups. For example, we can determine their Fitting subgroup and ask group-theoretic questions about this nilpotent group. The factor G / Fit(G) of an almost crystallographic group G is called holonomy group. We provide access to this factor of a pcp group via the following functions. Let G be an almost crystallographic pcp group.

  • HolonomyGroup( G )
  • NaturalHomomorphismOnHolonomyGroup( G )

    The following example shows applications of these functions.

    gap> G := AlmostCrystallographicPcpGroup( 4, 50, [ 1, -4, 1, 2 ] );
    Pcp-group with orders [ 4, 0, 0, 0, 0 ]
    gap> Cgs(G);
    [ g1, g2, g3, g4, g5 ]
    
    gap> F := FittingSubgroup( G );
    Pcp-group with orders [ 0, 0, 0, 0 ]
    gap> Centre(F);
    Pcp-group with orders [ 0, 0 ]
    gap> LowerCentralSeries(F);
    [ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0 ], 
      Pcp-group with orders [  ] ]
    gap> UpperCentralSeries(F);
    [ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0, 0 ], 
      Pcp-group with orders [  ] ]
    gap> MinimalGeneratingSet(F);
    [ g2, g3, g4 ]
    
    gap> H := HolonomyGroup( G );
    Pcp-group with orders [ 4 ]
    gap> hom := NaturalHomomorphismOnHolonomyGroup( G );
    [ g1, g2, g3, g4, g5 ] -> [ g1, identity, identity, identity, identity ]
    gap> U := Subgroup( H, [Pcp(H)[1]^2] );
    Pcp-group with orders [ 2 ]
    gap> PreImage( hom, U );
    Pcp-group with orders [ 2, 0, 0, 0, 0 ]
    

    3.3 More about the type and the defining parameters

    Each group from this library knows that it is almost crystallographic and, additionally, it knows its type and defining parameters.

  • AlmostCrystallographicInfo( G )

    This attribute is set for groups from the library only. It is not possible at current to determine the type and the defining parameters for an arbitrary almost crystallographic groups which is not defined by the library access functions.

    gap> G := AlmostCrystallographicGroup( 4, 70, false );   
    <matrix group of size infinity with 5 generators>
    gap> IsAlmostCrystallographic(G);
    true
    gap> AlmostCrystallographicInfo(G);
    rec( dim := 4, type := 70, param := [ 1, -4, 1, 2, -3 ] )
    

    gap> G := AlmostCrystallographicPcpGroup( 4, 70, false );
    Pcp-group with orders [ 6, 0, 0, 0, 0 ]
    gap> IsAlmostCrystallographic(G);
    true
    gap> AlmostCrystallographicInfo(G);
    rec( dim := 4, type := 70, param := [ -3, 2, 5, 1, 0 ] )
    

    We consider the types of almost crystallographic groups in more detail. The almost crystallographic groups in dimensions 3 and 4 fall into three families

    (1)
    3-dimensional almost crystallographic groups.
    (2)
    4-dimensional almost crystallographic groups with a Fitting subgroup of class 2.
    (3)
    4-dimensional almost crystallographic groups with a Fitting subgroup of class 3.

    These families are split up further into subfamilies in KD and to each subfamily is assigned a type; that is, a string which is used to identify the subfamily. As mentioned above, for the 3-dimensional almost crystallographic groups the type is a string representing the numbers from 1 to 17, i.e. the available types are "01", "02", …, "17".

    For the 4-dimensional almost crystallographic groups with a Fitting subgroup of class 2 the type is a string of 3 or 4 characters. In general, a string of 3 characters representing the number of the table entry in KD is used. So possible types are "001", "002", …. The reader is warned however that not all possible numbers are used, e.g. there are no groups of type "016". Also, the types do not appear in their natural order in KD. Moreover, for certain numbers there is more than one family of groups listed in KD. For example, the 3 families of groups corresponding to number 19 on pages 179-180 of KD have types "019", "019b" and "019c" (the order is the one given in KD).

    For the last category of groups, the 4-dimensional almost crystallographic groups with a Fitting subgroup of class 3, the type is a string of 2 or 3 characters, where the first character is always the letter "B". This "B" is followed by the number of the table entry as found in KD, eventually followed by a "b" or "c" as in the previous case.

    For each type of almost crystallographic group contained in the library there exists a function taking a parameter list as input and returning the desired matrix or pcp group. These functions can be accessed from GAP using the lists ACDim3Funcs, ACDim4Funcs, ACPcpDim3Funcs and ACPcpDim4Funcs which consist of the corresponding functions.

    Although we include these direct access functions here for completeness, we note that the user should in general use the higher-level functions introduced above to obtain almost crystallographic groups from the library. In particular, these low-level access functions return matrix or pcp groups, but the almost crystallographic info flags will not be attached to them.

    gap> ACDim3Funcs[15];
    function( k1, k2, k3, k4 ) ... end
    gap> ACDim3Funcs[15](1,1,1,1);
    <matrix group with 5 generators>
    gap> ACPcpDim3Funcs[1](1);
    Pcp-group with orders [ 0, 0, 0 ]
    

    3.4 The electronic versus the printed library

    The package aclib can be considered as the electronic version of Chapter 7 of KD. In this section we outline the relationship between the library presented in this manual and the printed version in KD. First we consider an example. At page 175 of KD, we find the following groups in the table starting with entry ``13''.

    13. Q=P2/c
    E:  〈a,b,c,d,α,β  ||  
     [b,a]=1·61cm [d,a]=1
    [c,a]=d2 k1
    [d,b]=1
    [c,b]=1
    [d,c]=1
    αa=a−1αdk2
    α2=dk3
    αb=bα
    αd = d α
    αc=c−1αd−2 k6
    βa=a−1βdk1+k2
    β2=dk5
    βb=b−1βdk4
    βd = d β
    βc=c−1βd−2 k6
    αβ = cβαdk6


    λ(α)=









    1
    k1

    2
    +k2
    0
    −2 k6
    k3

    2
    +k6

    2
    0
    −1
    0
    0
    0
    0
    0
    1
    0
    0
    0
    0
    0
    −1
    1

    2
    0
    0
    0
    0
    1










        λ(β)=







    1
    k1+k2
    k4
    −2 k6
    k5

    2
    0
    −1
    0
    0
    0
    0
    0
    −1
    0
    0
    0
    0
    0
    −1
    0
    0
    0
    0
    0
    1









    H2(Q,Z)=Z⊕(Z2)4=Z6/A,

    A={(k1,…,k6)|| k1=0,  k2,…, k5 ∈ 2Z,  k6Z}
    AB-groups:

    k > 0,  k ≡ 0 mod 2,  (k,0,1,0,1,0)

    The number ``13'' at the beginning of this entry is the type of the almost crystallographic group in this library. This family of groups with type 13 depends on 6 parameters k1, k2, …, k6 and these are the parameters list in this library. The rational matrix representation in GAP corresponds exactly to the printed version in KD where it is named λ. In the example below, we consider the group with parameters (k1,k2,k3,k4,k5,k6)=(8,0,1,0,1,0).

    gap> G:=AlmostCrystallographicDim4("013",[8,0,1,0,1,0]);
    <matrix group with 6 generators>
    gap> G.5;
    [ [ 1, 4, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], 
      [ 0, 0, 0, -1, 1/2 ], [ 0, 0, 0, 0, 1 ] ]
    gap> G.6;
    [ [ 1, 8, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, -1, 0, 0 ], 
      [ 0, 0, 0, -1, 0 ], [ 0, 0, 0, 0, 1 ] ]
    

    For a 4-dimensional almost crystallographic group the matrix group is built up such that { a, b, c, d, α, β, γ} as described in KD forms the defining generating set of G. For certain types the elements α, β or γ may not be present. Similarly, for a 3-dimensional group we have the generating set { a, b, c, α, β} and α and β may be absent.

    To obtain a polycyclic generating sequence from the defining generators of the matrix group we have to order the elements in the generating set suitably. For this purpose we take the subsequence of (γ, β, α, a, b, c, d) of those generators which are present in the defining generating set of the matrix group. This new ordering of the generators is then used to define a polycyclic presentation of the given almost crystallographic group.

    [Up] [Previous] [Next] [Index]

    aclib manual
    January 2020
    aclib-1.3.2/htm/CHAP002.htm0000664000371700037170000001376213627151544016261 0ustar gap-jenkinsgap-jenkins[aclib] 2 Algorithms for almost crystallographic groups [Up] [Previous] [Next] [Index]

    2 Algorithms for almost crystallographic groups

    Sections

    1. Properties of almost crystallographic groups
    2. Betti numbers
    3. Determination of certain extensions

    This chapter presents a variety of algorithms for almost crystallographic groups. In most cases, they assume a polycyclically presented group as input; in particular, the input groups must be polycyclic in this case. The methods described here supplement the methods of the Polycyclic package for polycyclically presented groups. Many of the functions in this chapter are based on methods of the Polycyclic package and thus this package must be installed to use the functions introduced here. We refer to the Polycyclic package for further information on polycyclic presentations.

    2.1 Properties of almost crystallographic groups

  • IsAlmostCrystallographic( G ) P

    This function checks if a polycyclically presented group G is almost crystallographic; that is, it checks if G is nilpotent-by-finite and has no non-trivial finite normal subgroup.

  • IsAlmostBieberbachGroup( G ) P

    This function checks if a polycyclically presented group G is almost Bieberbach; that is, it checks if G is nilpotent-by-finite and torsion free.

    2.2 Betti numbers

    Let G be a polycyclically presented and torsion free group of Hirsch length n. Then we can compute the Betti numbers βi(G) for i ∈ {0, 1, 2, n−2, n−1, n}. If n ≤ 6, then we can compute all Betti numbers βi(G) for 0 ≤ i ≤ 6 of G. We introduce the following functions for this purpose and we refer to BRO for the details on the orientation module and the Betti numbers.

  • OrientationModule( G ) F

    This function determines the orientation module of the polycyclically presented group G; that is, it returns a list of matrices m1, …, mnGL( 1, Z) which are the images of the 'Igs(G)' in their action on the orientation module.

  • BettiNumber( G, m ) F

    This function returns the mth Betti number of the polycyclically presented torsion free group G if m ∈ {0, 1, 2, n−2, n−1, n}, where n is the Hirsch length of G.

  • BettiNumbers( G ) A

    This function returns the Betti number of the polycyclically presented torsion free group G if the Hirsch length of G is smaller than 7.

    2.3 Determination of certain extensions

    Let G be a polycyclically presented almost crystallographic group. We want to check the existence of certain extensions of G.

    First, it is well-known that the equivalence classes of extensions of G correspond to the second cohomology group of G. This cohomology group can be computed using the methods of the Polycyclic package for any explicitly given module of G. Further, we can construct a polycyclic presentation for each cocycle of the second cohomology group. We give an example for such a computation below.

    However, we may be interested in certain extensions only; for example, the torsion free extensions are often of particular interest. If the second cohomology group is finite, then we can compute a polycyclic presentation for each element of this group and check the resulting group for torsion freeness. But if the second cohomology group is infinite, then this approach is not available. Hence we introduce the following special method to cover this and related applications.

  • HasExtensionOfType( G, torsionfree, minimalcentre ) F

    Suppose that G is a polycyclically presented almost crystallographic group with Fitting subgroup N. This function checks if there is a G-module MZ which is centralized by N such that there exists a torsion free extension of M by G (if the flag torsionfree is true) or an extension E with Z(Fitt(E)) = M (if the flag minimalcentre is true) or an extension which satisfies both conditions (if both flags are true).

    We note that the existence of such extensions is of interest in the determination of extensions which are almost Bieberbach groups. We refer to DE1 for a more detailed account of this application and for further results of a similar nature.

    [Up] [Previous] [Next] [Index]

    aclib manual
    January 2020
    aclib-1.3.2/gap/pcpgrp3.gi0000664000371700037170000002472613627151544016472 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W pcpgrp3.gi Karel Dekimpe #W Bettina Eick ## ## This file contains the 3-dimensional almost crystallographic groups ## as pcp groups. There are 17 types groups. ## ACPcpGroupDim3Nr01 := function (k1) local FTL; FTL := FromTheLeftCollector( 3 ); SetConjugate( FTL, 2, 1, [2,1, 3,k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr02 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 4 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,k4] ); SetConjugate( FTL, 2, 1, [2,-1, 3,0, 4,k2] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,k3] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1] ); SetConjugate( FTL, 3, 2, [3,1, 4,k1] ); SetConjugate( FTL, 4, 2, [3,0, 4,1] ); SetConjugate( FTL, 4, 3, [4,1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr03 := function (k1, k2) local FTL; FTL := FromTheLeftCollector( 4 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,-k2] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1] ); SetConjugate( FTL, 3, 2, [3,1, 4,k1] ); SetConjugate( FTL, 4, 2, [3,0, 4,1] ); SetConjugate( FTL, 4, 3, [4,1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr04 := function (k1, k2) local FTL; FTL := FromTheLeftCollector( 4 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,1, 3,0, 4,k2] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,2*k2] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,-k1] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1] ); SetConjugate( FTL, 3, 2, [3,1, 4,2*k1] ); SetConjugate( FTL, 4, 2, [3,0, 4,1] ); SetConjugate( FTL, 4, 3, [4,1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr05 := function (k1, k2) local FTL; FTL := FromTheLeftCollector( 4 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0] ); SetConjugate( FTL, 2, 1, [2,0, 3,1, 4,-k2] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,-k2] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1] ); SetConjugate( FTL, 3, 2, [3,1, 4,k1] ); SetConjugate( FTL, 4, 2, [3,0, 4,1] ); SetConjugate( FTL, 4, 3, [4,1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr06 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,-k4] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,-k2] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,k2] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,k3] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr07 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,-1, 5,-2*k3 - k4] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,k1 - k2] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,k3] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,k2] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,-2*(k3 + k4)] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr08 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,-k3] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,-1, 5,-2*k1 + k2 - 2*k3 - k4] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,-2*k3] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,-k1] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,k1 + 2*k3] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,-k1 + 2*k2 - 2*k3] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr09 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,-k4] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,-k3] ); SetConjugate( FTL, 4, 1, [3,1, 4,0, 5,-k3] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,k2] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,-k2 + 2*k3] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr10 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 4 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,0, 3,0, 4,k4] ); SetConjugate( FTL, 2, 1, [2,0, 3,-1, 4,k3] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,-k2] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1] ); SetConjugate( FTL, 3, 2, [3,1, 4,k1] ); SetConjugate( FTL, 4, 2, [3,0, 4,1] ); SetConjugate( FTL, 4, 3, [4,1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr11 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0] ); SetConjugate( FTL, 2, 1, [2, 3 , 3,0, 4,0, 5,-k4] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,-k2 - k3] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,k3] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,-k2] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr12 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,k3] ); SetConjugate( FTL, 2, 1, [2, 3 , 3,0, 4,-1, 5,-k2 - k3 - k4] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,2*k3] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,-k1] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,k1 - k2 - 2*k3] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,-k2] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr13 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 4 ); SetRelativeOrder( FTL, 1, 3 ); SetPower( FTL, 1, [2,0, 3,0, 4,k4] ); SetConjugate( FTL, 2, 1, [2,-1, 3,-1, 4,k2 + k3] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,-k2] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1] ); SetConjugate( FTL, 3, 2, [3,1, 4,k1] ); SetConjugate( FTL, 4, 2, [3,0, 4,1] ); SetConjugate( FTL, 4, 3, [4,1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr14 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0] ); SetConjugate( FTL, 2, 1, [2, 2 , 3,0, 4,0, 5,-k4] ); SetConjugate( FTL, 3, 1, [3,0, 4,-1, 5,-k2] ); SetConjugate( FTL, 4, 1, [3,-1, 4,0, 5,k2] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 3 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,-1, 4,-1, 5,k2 + k3] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,-k2] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr15 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0] ); SetConjugate( FTL, 2, 1, [2, 2 , 3,0, 4,0, 5,-k4] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,-k2] ); SetConjugate( FTL, 4, 1, [3,1, 4,0, 5,-k2] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 3 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,-1, 4,-1, 5,k1 + 3*k2 - k3] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,-k1 - 3*k2 + 2*k3] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr16 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 4 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,k4] ); SetConjugate( FTL, 2, 1, [2,0, 3,-1, 4,k3] ); SetConjugate( FTL, 3, 1, [2,1, 3,1, 4,k1 - k2 - k3] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1] ); SetConjugate( FTL, 3, 2, [3,1, 4,k1] ); SetConjugate( FTL, 4, 2, [3,0, 4,1] ); SetConjugate( FTL, 4, 3, [4,1] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim3Nr17 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0] ); SetConjugate( FTL, 2, 1, [2, 5 , 3,0, 4,0, 5,-k4] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,-k3] ); SetConjugate( FTL, 4, 1, [3,1, 4,0, 5,-k3] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1] ); SetRelativeOrder( FTL, 2, 6 ); SetPower( FTL, 2, [3,0, 4,0, 5,k4] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,k3] ); SetConjugate( FTL, 4, 2, [3,1, 4,1, 5,k1 - k2 - k3] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1] ); return PcpGroupByCollector(FTL); end; ############################################################################# ## ## some small helpers ## ACPcpDim3Funcs := [ ACPcpGroupDim3Nr01, ACPcpGroupDim3Nr02, ACPcpGroupDim3Nr03, ACPcpGroupDim3Nr04, ACPcpGroupDim3Nr05, ACPcpGroupDim3Nr06, ACPcpGroupDim3Nr07, ACPcpGroupDim3Nr08, ACPcpGroupDim3Nr09, ACPcpGroupDim3Nr10, ACPcpGroupDim3Nr11, ACPcpGroupDim3Nr12, ACPcpGroupDim3Nr13, ACPcpGroupDim3Nr14, ACPcpGroupDim3Nr15, ACPcpGroupDim3Nr16, ACPcpGroupDim3Nr17 ]; MakeReadOnlyGlobal( "ACPcpDim3Funcs" ); aclib-1.3.2/gap/matgrp.gi0000664000371700037170000001065713627151544016404 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W matgrp.gi Bettina Eick ## ## This file contains the header functions to handle the 3- and ## 4-dimensional almost crystallographic integral matrix groups. ## ############################################################################# ## #F AlmostCrystallographicDim3( type, param ) ## InstallGlobalFunction( AlmostCrystallographicDim3, function( type, param ) local g, G, info; # type is integer or string if IsString( type ) then g := Int( type ); elif IsInt( type ) then g := type; else g := false; fi; if not g in [1..17] then Error("type does not define a valid ac-group type"); fi; # check parameters if IsBool( param ) then param := List( [1..ACDim3Param[g]], x -> Random(Integers) ); if param[1] = 0 then param[1] := Random(Integers)^2 + 1; fi; elif IsInt( param ) then param := List( [1..ACDim3Param[g]], x -> param ); elif Length( param ) <> ACDim3Param[g] then Error("parameter should be a list of length ", ACDim3Param[g] ); fi; # get group if Length( param ) = 4 then G := ACDim3Funcs[g](param[1], param[2], param[3], param[4]); elif Length(param) = 2 then G := ACDim3Funcs[g](param[1], param[2] ); elif Length(param) = 1 then G := ACDim3Funcs[g](param[1]); fi; # set some information info := rec( dim := 3, type := g, param := param ); SetAlmostCrystallographicInfo( G, info ); SetIsAlmostCrystallographic( G, true ); SetDimensionOfMatrixGroup( G, 4 ); SetFieldOfMatrixGroup( G, Rationals ); SetSize( G, infinity ); return G; end ); ############################################################################# ## #F AlmostCrystallographicDim4( type, param ) ## InstallGlobalFunction( AlmostCrystallographicDim4, function( type, param ) local g, G, info; # type is integer or string if IsString( type ) then g := Position( ACDim4Types, type ); elif IsInt( type ) then g := type; else g := false; fi; if not g in [1..95] then Error("type does not define a valid ac-group type"); fi; # check parameters if IsBool( param ) then param := List( [1..ACDim4Param[g]], x -> Random(Integers) ); if param[1] = 0 then param[1] := Random(Integers)^2 + 1; fi; elif IsInt( param ) then param := List( [1..ACDim4Param[g]], x -> param ); elif Length( param ) <> ACDim4Param[g] then Error("parameter should be a list of length ", ACDim4Param[g] ); fi; # get group if Length(param) = 7 then G := ACDim4Funcs[g]( param[1], param[2], param[3], param[4], param[5], param[6], param[7]); elif Length(param) = 6 then G := ACDim4Funcs[g]( param[1], param[2], param[3], param[4], param[5], param[6]); elif Length(param) = 5 then G := ACDim4Funcs[g]( param[1], param[2], param[3], param[4], param[5]); elif Length(param) = 4 then G := ACDim4Funcs[g]( param[1], param[2], param[3], param[4]); elif Length(param) = 3 then G := ACDim4Funcs[g]( param[1], param[2], param[3]); fi; # set some information info := rec( dim := 4, type := g, param := param ); SetAlmostCrystallographicInfo( G, info ); SetIsAlmostCrystallographic( G, true ); SetDimensionOfMatrixGroup( G, 5 ); SetFieldOfMatrixGroup( G, Rationals ); SetSize( G, infinity ); return G; end ); ############################################################################# ## #F AlmostCrystallographicGroup( dim, type, param ) ## InstallGlobalFunction( AlmostCrystallographicGroup, function( dim, type, param ) if dim = 3 then return AlmostCrystallographicDim3( type, param ); elif dim = 4 then return AlmostCrystallographicDim4( type, param ); else Error("dimension must be 3 or 4"); fi; end ); ############################################################################# ## #F IsAlmostCrystallographic( ) ## InstallMethod( IsAlmostCrystallographic, "for groups", true, [IsGroup ], 0, function( G ) if HasAlmostCrystallographicInfo( G ) then return true; else Print("sorry - cannot check this property \n"); return fail; fi; end ); aclib-1.3.2/gap/pcpgrp.gi0000664000371700037170000001562013627151544016400 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W pcpgrp.gi Bettina Eick ## ## This file contains the header functions to handle the 3- and ## 4-dimensional almost crystallographic pcp groups. ## ############################################################################# ## #F IsAlmostCrystallographic( ) ## InstallMethod( IsAlmostCrystallographic, "for pcp groups", true, [IsPcpGroup ], 0, function( G ) if HasAlmostCrystallographicInfo( G ) then return true; fi; return (IsInt(Index(G,FittingSubgroup(G))) and Size(NormalTorsionSubgroup(G)) = 1); end ); ############################################################################# ## #F IsAlmostBieberbachGroup( ) ## InstallMethod( IsAlmostBieberbachGroup, "for pcp groups", true, [IsPcpGroup ], 0, function( G ) return IsInt(Index(G,FittingSubgroup(G))) and IsTorsionFree(G); end ); ############################################################################# ## #F IsolatorSubgroup( G, N ) ## InstallGlobalFunction( IsolatorSubgroup, function( G, N ) local nat, F, T; if not IsNormal( G, N ) then return fail; fi; nat := NaturalHomomorphismByNormalSubgroup( G, N ); F := Image( nat ); T := TorsionSubgroup( F ); if IsBool( T ) then return fail; fi; return PreImage( nat, T ); end); ############################################################################# ## #F AlmostCrystallographicPcpDim3( type, param ) ## InstallGlobalFunction( AlmostCrystallographicPcpDim3, function( type, param ) local g, G, info; # type is integer or string if IsString( type ) then g := Int( type ); elif IsInt( type ) then g := type; else g := false; fi; if not g in [1..17] then Error("type does not define a valid ac-group type"); fi; # check parameters if IsBool( param ) then param := List( [1..ACDim3Param[g]], x -> Random(Integers) ); if param[1] = 0 then param[1] := Random(Integers)^2+1; fi; elif IsInt( param ) then param := List( [1..ACDim3Param[g]], x -> param ); elif Length( param ) <> ACDim3Param[g] then Error("parameter should be a list of length ", ACDim3Param[g] ); fi; # get group if Length( param ) = 4 then G := ACPcpDim3Funcs[g](param[1], param[2], param[3], param[4]); elif Length(param) = 2 then G := ACPcpDim3Funcs[g](param[1], param[2] ); elif Length(param) = 1 then G := ACPcpDim3Funcs[g](param[1]); fi; # set some information info := rec( dim := 3, type := g, param := param ); SetAlmostCrystallographicInfo( G, info ); SetIsAlmostCrystallographic( G, true ); SetSize( G, infinity ); return G; end ); ############################################################################# ## #F AlmostCrystallographicPcpDim4( type, param ) ## InstallGlobalFunction( AlmostCrystallographicPcpDim4, function( type, param ) local g, G, info; # type is integer or string if IsString( type ) then g := Position( ACDim4Types, type ); elif IsInt( type ) then g := type; else g := false; fi; if not g in [1..95] then Error("type does not define a valid ac-group type"); fi; # check parameters if IsBool( param ) then param := List( [1..ACDim4Param[g]], x -> Random(Integers) ); if param[1] = 0 then param[1] := Random(Integers)^2+1; fi; elif IsInt( param ) then param := List( [1..ACDim4Param[g]], x -> param ); elif Length( param ) <> ACDim4Param[g] then Error("parameter should be a list of length ", ACDim4Param[g] ); fi; # get group if Length(param) = 7 then G := ACPcpDim4Funcs[g]( param[1], param[2], param[3], param[4], param[5], param[6], param[7]); elif Length(param) = 6 then G := ACPcpDim4Funcs[g]( param[1], param[2], param[3], param[4], param[5], param[6]); elif Length(param) = 5 then G := ACPcpDim4Funcs[g]( param[1], param[2], param[3], param[4], param[5]); elif Length(param) = 4 then G := ACPcpDim4Funcs[g]( param[1], param[2], param[3], param[4]); elif Length(param) = 3 then G := ACPcpDim4Funcs[g]( param[1], param[2], param[3]); fi; # set some information info := rec( dim := 4, type := g, param := param ); SetAlmostCrystallographicInfo( G, info ); SetIsAlmostCrystallographic( G, true ); SetSize( G, infinity ); return G; end ); ############################################################################# ## #F AlmostCrystallographicPcpGroup( dim, type, param ) ## InstallGlobalFunction( AlmostCrystallographicPcpGroup, function( dim, type, param ) if dim = 3 then return AlmostCrystallographicPcpDim3( type, param ); elif dim = 4 then return AlmostCrystallographicPcpDim4( type, param ); else Error("dimension must be 3 or 4"); fi; end ); ############################################################################# ## #A FittingSubgroup( < G > ) ## InstallMethod( FittingSubgroup, "for ac pcp groups", true, [IsPcpGroup and HasAlmostCrystallographicInfo], 0, function( G ) local pcp, rel, sub, F; pcp := Pcp( G ); rel := RelativeOrdersOfPcp( pcp ); sub := Filtered( [1..Length(pcp)], x -> rel[x] = 0 ); F := Subgroup( G, pcp{sub} ); SetIsNilpotentGroup( F, true ); return F; end ); ############################################################################# ## #F NaturalHomomorphismOnHolonomyGroup( < G > ) #F HolonomyGroup( < G > ) ## InstallMethod( NaturalHomomorphismOnHolonomyGroup, "for ac pcp groups", true, [IsPcpGroup and IsAlmostCrystallographic], 0, function( G ) return NaturalHomomorphismByNormalSubgroup(G,FittingSubgroup(G)); end ); InstallMethod( HolonomyGroup, "for ac pcp groups", true, [IsPcpGroup and IsAlmostCrystallographic], 0, function( G ) return Image( NaturalHomomorphismOnHolonomyGroup(G) ); end ); ############################################################################# ## #F IsomorphismPcpGroup( ) ## InstallMethod( IsomorphismPcpGroup, "for ac groups", true, [IsMatrixGroup and HasAlmostCrystallographicInfo], 0, function( G ) local info, H, gensH, gensG, l, d, newsG, hom; # get the corresponding pcp group info := AlmostCrystallographicInfo( G ); H := AlmostCrystallographicPcpGroup( info.dim, info.type, info.param ); gensH := GeneratorsOfGroup(H); gensG := GeneratorsOfGroup(G); # sort the generators of G according to the generators of H l := Length( gensG ); d := info.dim; newsG := Concatenation( Reversed( gensG{[d+1..l]} ), gensG{[1..d]} ); hom := GroupHomomorphismByImagesNC( G, H, newsG, gensH ); SetIsInjective( hom, true ); SetIsSurjective( hom, true ); return hom; end ); aclib-1.3.2/gap/extend.gi0000664000371700037170000002331013627151544016367 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W extend.gi Karel Dekimpe #W Bettina Eick ## ############################################################################# ## #F FiniteSubgroupsAreCyclic( G ) ## FiniteSubgroupsAreCyclic := function( G ) local fin, rep, flg; fin := FiniteSubgroupClasses( G ); rep := List( fin, Representative ); flg := ForAll( rep, IsCyclic ); return flg; end; ############################################################################# ## #F AllActionsHolonomy( G ) ## ## Computes all actions of G on Z which can lead to a torsion-free ## extension centralizing Fit(G). Thus all finite subgroups of G and Fit(G) ## centralizes Z and the kernel of the action has index at most 2. ## AllActionsHolonomy := function( G ) local mats, acts, fins, reps, gens, U, hom, F, low, H, i; # first we add the trivial action mats := List( Igs(G), x -> IdentityMat(1)); acts := [mats]; # determine the subgroup known to centralize Z U := FittingSubgroup(G); # determine all subgroups of index 2 in G/U hom := NaturalHomomorphismByNormalSubgroup( G, U ); F := Image( hom ); low := LowIndexSubgroupClasses( F, 2 ); low := List( low, Representative ); low := List( low, x -> PreImage( hom, x ) ); # for each subgroup we get one action for H in low do mats := List( Igs(G), x -> IdentityMat(1)); for i in [1..Length(Igs(G))] do if not Igs(G)[i] in H then mats[i] := - mats[i]; fi; od; Add( acts, mats ); od; return acts; end; ############################################################################# ## #F AllActionsForTorsionFreeExtension( G ) ## ## Computes all actions of G on Z which can lead to a torsion-free ## extension centralizing Fit(G). Thus all finite subgroups of G and Fit(G) ## centralizes Z and the kernel of the action has index at most 2. ## AllActionsForTorsionFreeExtension := function( G ) local mats, acts, fins, reps, gens, U, hom, F, low, H, i; # first we add the trivial action mats := List( Igs(G), x -> IdentityMat(1)); acts := [mats]; # determine the subgroup known to centralize Z fins := FiniteSubgroupClasses( G ); reps := List( fins, Representative ); gens := Flat( List( reps, Igs ) ); Append( gens, GeneratorsOfGroup( FittingSubgroup(G) ) ); U := NormalClosure( G, Subgroup( G, gens ) ); if Index( G, U ) = 1 then return acts; fi; # determine all subgroups of index 2 in G/U hom := NaturalHomomorphismByNormalSubgroup( G, U ); F := Image( hom ); low := LowIndexSubgroupClasses( F, 2 ); low := List( low, Representative ); low := List( low, x -> PreImage( hom, x ) ); # for each subgroup we get one action for H in low do mats := List( Igs(G), x -> IdentityMat(1)); for i in [1..Length(Igs(G))] do if not Igs(G)[i] in H then mats[i] := - mats[i]; fi; od; Add( acts, mats ); od; return acts; end; ############################################################################# ## #F ExpandedTail( tail, d ) ## ExpandedTail := function( t, d ) local r, i; r := List( [1..d], x -> 0 ); for i in [1..Length(t)] do if IsBound( t[i] ) then r[i] := t[i][1][1]; fi; od; return r; end; ############################################################################# ## #F HasTorsionFreeExtension( G, CR ) ## ## Check if G has a torsion-free extension. We assume that all finite ## subgroups of G are cyclic (otherwise, no torsion-free extension exists). ## CR ist a record describing the second cohomology group of G by Z. ## HasTorsionFreeExtension := function( G, CR ) local fins, reps, repp, cc, d, subs, U, g, e, p, w, v, i, t, r, pr, f, V, spcs, sub; # compute the finite subgroups of prime order up to conjugacy fins := FiniteSubgroupClasses( G ); reps := List( fins, Representative ); repp := Filtered( reps, x -> IsPrime( Size(x) ) ); if Length( repp ) = 0 then return true; fi; # extract second cohomology cc := CR.twocohom; # for each finite subgroup of prime order compute the corresponding # relation on cc.gcc subs := []; for U in repp do g := GeneratorsOfGroup( U )[1]; e := Exponents( g ); p := Order( g ); w := rec( word := e, tail := [] ); v := ShallowCopy( w ); for i in [2..p] do v := CollectedTwoCR( CR, v, w ); od; r := ExpandedTail( v.tail, Length( CR. enumrels ) ); sub := NullspaceIntMod( cc.factor.prei, r, p ); Add( subs, sub ); od; e := Lcm( List( repp, Size ) ); d := Length( cc.factor.prei ); return SizeOfUnionMod( subs, e ) < e^d; end; ############################################################################# ## #F HasMinimalCentreExtension( G, CR ) ## ## Check if there is an extension of G that has minimal centre; that is, ## Z(Fit(E)) = Z. This is only implemented for groups G with abelian ## Fitting subgroup. ## HasMinimalCentreExtension := function( G, CR ) local cc, d, t, F, f, g, l, c, i, j, v, w, a, b; # get cohomology and generic elements cc := CR.twocohom; d := Length( CR.enumrels ); t := List( [1..Length(cc.gcc)], x -> Indeterminate( Integers, x ) ); t := t * cc.gcc; # get Fitting subgroup generators F := FittingSubgroup( G ); # the abelian case is more effective - consider this first if IsAbelian( F ) then f := GeneratorsOfGroup( F ); l := Length( f ); # find tails of commutators c := NullMat( l, l ); for i in [1..l] do for j in [i+1..l] do v := rec( word := Exponents( f[i]^-1 ), tail := [] ); w := rec( word := Exponents( f[j]^-1 ), tail := [] ); v := CollectedTwoCR( CR, v, w ); w := rec( word := Exponents( f[i] ), tail := [] ); v := CollectedTwoCR( CR, v, w ); w := rec( word := Exponents( f[j] ), tail := [] ); v := CollectedTwoCR( CR, v, w ); b := ExpandedTail( v.tail, d ); a := b * t; c[i][j] := a; c[j][i] := -a; od; od; # get determinant c := GenericDeterminantMat( c ); return Length( ExtRepPolynomialRatFun(c) ) <> 0; fi; # the non-abelian case f := MinimalGeneratingSet( F ); g := GeneratorsOfGroup( Centre( F ) ); if Length(f) < Length( g ) then return false; fi; # find tails of commutators c := NullMat( Length(f), Length(g) ); for i in [1..Length(f)] do for j in [1..Length(g)] do v := rec( word := Exponents( f[i]^-1 ), tail := [] ); w := rec( word := Exponents( g[j]^-1 ), tail := [] ); v := CollectedTwoCR( CR, v, w ); w := rec( word := Exponents( f[i] ), tail := [] ); v := CollectedTwoCR( CR, v, w ); w := rec( word := Exponents( g[j] ), tail := [] ); v := CollectedTwoCR( CR, v, w ); b := ExpandedTail( v.tail, d ); c[i][j] := b * t; od; od; # get determinant of rxr submats Error("not yet implemented"); c := Determinant( c ); c := ExtRepPolynomialRatFun( c ); c := Filtered( c, x -> IsInt(x) ); return ForAny( c, x -> x <> 0 ); end; ############################################################################# ## #F HasExtensionOfType( G, torfree, mincent ) ## ## Let G be a pcp group. This function checks if G has a torsion-free ## extension or an extension with Z(Fit(H)) = Z$ with the free abelian ## module Z. ## InstallGlobalFunction( HasExtensionOfType, function( G, torfree, mincent ) local mats, CR, found, i; # if both flags are false, then there is nothing to do if not torfree and not mincent then return true; fi; # first check if G is torsion-free or has non-cyclic finite subgrps Print(" check that all finite subgroups are cyclic\n"); if not FiniteSubgroupsAreCyclic( G ) then return false; fi; # if G is torsion-free, then all extensions of G are torsion-free if Length( FiniteSubgroupClasses(G) ) = 1 then torfree := false; fi; if not torfree and not mincent then return true; fi; # now loop over actions - the trivial action first Print(" consider trivial action \n"); mats := List( Igs(G), x -> IdentityMat( 1 ) ); CR := CRRecordByMats( G, mats ); CR.twocohom := TwoCohomologyCR( CR ); if mincent then found := HasMinimalCentreExtension( G, CR ); #if found <> HasMinimalCentreExtensionByCRRec2( G, CR ) then # Error("something wrong with min cent"); #fi; fi; if (not mincent) or (found and torfree) then found := HasTorsionFreeExtension( G, CR ); fi; if found then return true; fi; # now consider the remaining actions mats := AllActionsForTorsionFreeExtension( G ); for i in [2..Length(mats)] do Print(" consider non-trivial action number ",i-1,"\n"); CR := CRRecordByMats( G, mats[i] ); CR.twocohom := TwoCohomologyCR( CR ); if mincent then found := HasMinimalCentreExtension( G, CR ); #if found <> HasMinimalCentreExtensionByCRRec2( G, CR ) then # Error("something wrong with min cent"); #fi; fi; if (not mincent) or (found and torfree) then found := HasTorsionFreeExtension( G, CR ); fi; if found then return true; fi; od; # we have not found a suitable extension return false; end ); aclib-1.3.2/gap/matgrp4.gi0000664000371700037170000022531013627151544016462 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W matgrp4.gi Karel Dekimpe #W Bettina Eick ## ## This file contains the 4-dimensional almost crystallographic groups ## as integral matrix groups. There are 95 types of groups. ## ACDim4Nr001 := function ( k1, k2, k3) local a, b, c, d; a :=[[1, 0, -k1/2, -k2/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, -k3/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k2/2, k3/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d] , IdentityMat(5) ); end; ACDim4Nr002 := function ( k1, k2, k3, k4, k5, k6, k7) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, -k2/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, -k3/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k2/2, k3/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k4, k5, k6, k7/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr003 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, 0, k3, k4/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr004 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, 0, - k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, 0, k3, k4/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr004b := function ( k1, k2, k3) local a, b, c, d, alfa; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, -k2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, k2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, 2*k3, k2/2, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr005 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k2, k3, k4/2], [0, 0, -1, 0, 0], [0, -1, 0, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr006 := function ( k1, k2, k3) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, 0, k2, 0, k3/2], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr007 := function ( k1, k2, k3) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/2, k2, 0, k3/2], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr007b := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, -k2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, k2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k3, -k2/2, 2*k4, 0], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr008 := function ( k1, k2, k3) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k2, 0, k3/2], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr009 := function ( k1, k2, k3) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1/4 + k2, (3*k1)/4 - k2, 0, k3/2], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr009b := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, -k2/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, k2/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k2/2, -k2/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, k2/4 - k3, (3*k2)/4 - k3, 2*k4, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr010 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, 0, k3, k4/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta :=[[1, k2, k5, k3, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr011 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, 0, k3, k4/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta :=[[1, k2, -2*k6, k3, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr012 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k2, k3, k4/2], [0, 0, -1, 0, 0], [0, -1, 0, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta :=[[1, k5, 2*k2 - k5, k3, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr013 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/2 + k2, 0, -2*k6, k3/2 + k6/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k1 + k2, k4, -2*k6, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr014 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a:=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c:=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d:=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:=[[1, k1/2+ k2, 0, k3, -k3/4 + k4/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; beta:=[[1, k1 + k2, -k3 - 2*k6, k3, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr014b := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, -k2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, k2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, -k2/2 + 2*k3, k2/2, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k4, k2 - 2*k3, k2 + 2*k3 - 2*k5 + 2*k6, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr015 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/4 + k2, k1/4 + k2, -2*k6, k3/2 + k6/2], [0, 0, -1, 0, 0], [0, -1, 0, 0, 0], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k4, k1 + 2*k2 - k4, -2*k6, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr018 := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1 + 2*k2 - 2*k3 + 2*k4, k1/2 - 2*k3, 0, k2/2 - (-k1 + 2*k2 - 2*k3 + 2*k4)/4], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/2, 2*k3, 0, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr019 := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, 0, k1/2 + 2*k2, 0], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, 3*k1 + 2*k2 - 2*k3 + 2*k4, 0, -k1 - 2*k2, k3/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr019b := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1 + 2*k2 - 2*k3 + 2*k4, k1/2 - 2*k3, 0, k2/2 - (-k1 + 2*k2 - 2*k3 + 2*k4)/4], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/2, 2*k3, 0, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr019c := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, k1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, 0, -k1/2, 2*k2, -(- (3*k1)/2 - k4)/2], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, 0, 2*k3, k1/2, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr026 := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, 0, 2*k2, 0], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, 0, k3, 0, k4/2], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr027 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, 0, k4/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k2, 0, 2*k5, 0], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr029 := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, 0, 2*k2, 0], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k1/2, 2*k2 - 2*k3 + 2*k4, 0, k3/2], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr029b := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/2 + k2, 2*k3 - 2*k4 + 2*k5, 0, k3/2 - (2*k3 - 2*k4 + 2*k5)/4], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1 - k2, 0, 2*k4, 0], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr029c := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -2*k1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 2*k1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, 0, -k1, -k1 + 2*(k1 + k2), -k1], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, -k3, -k1, 2*(k1 + k2), -k4/2], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr030 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/2 + k2, 2*k3 + 2*k5, 0, k3/2 - (2*k3 + 2*k5)/4], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1 - k2, 0, 2*k4, 0], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr031 := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, 0, 2*k2, 0], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, 0, -2*k3 + 2*k4, 0, k3/2], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr032 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1/2 - 2*k4, -3*k1 + 2*k2 - 2*k4 + 2*k5, 0, k2/2 - (-3*k1 + 2*k2 - 2*k4 + 2*k5)/4], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, 2*k4, k1/2, -k3, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr033 := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, 0, 2*k2, 0], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, 0, -k1 - 2*k3 + 2*k4, -k1/2, k3/2], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr033b := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1/2 - 2*k4, -3*k1 + 2*k2 + k3 - 2*k4 + 2*k5, 0, k2/2 - (-3*k1 + 2*k2 + k3 - 2*k4 + 2*k5)/4], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, 2*k4, k1/2, -k3, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr033c := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, k1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, 0, -k1/2, k1/2 + 2*k2, k2/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, 2*k3, 0, k1 + 2*k2, -k4/2], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr034 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/2 + k2, -2*k1 + k2 + 2*k3 + 2*k5, 0, k3/2 - (-2*k1 + k2 + 2*k3 + 2*k5)/4], [0, -1, 0, 0, 0], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1 - k2, k1/2, k1 + k2 + 2*k4, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr036 := function ( k1, k2, k3, k4) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, k1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, -k1/2, 2*k2, 0], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k3, -k3, 0, k4/2], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr037 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k2 + 2*k4, 0, k3/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k4, -k4, 2*k5, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr041 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, k1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k2, k1 - 2*k5, -k2/2 + k3/2], [0, 0, -1, 0, 1/2], [0, -1, 0, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, k1/2 - k4, (-3*k1)/2 + k4, 2*k5, 0], [0, 0, -1, 0, 0], [0, -1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr043 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, -k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1/4 + k2 + 2*k3 + 2*k5, k1/4 + k2, 2*k2 + 2*k3 + 2*k5, k3/2 - (2*k2 + 2*k3 + 2*k5)/4], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, -1, -1, -1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/4 + k2 + 2*k4, 2*k4, -k1/4 - k2, 0], [0, 0, 0, -1, 0], [0, 1, 1, 1, 1/2], [0, -1, 0, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr045 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a:=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:=[[1, 0, 0, k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c:=[[1, k1/2, -k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d:=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:=[[1,k2, -k2, k2 - 2*k4 - 2*k5, k3/2], [0, 0, 1, -1, 0], [0, 1, 0, -1, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta:=[[-1, -k4, k4 + 2*k5, k4, 0], [0, 0, 1, -1, 1/2], [0, 0, 1, 0, 1/2], [0, -1, 1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr055 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1 - 2*k2 + 2*k3 - 2*k4, -k1 - 2*k3, 0, k2/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/2, k1/2 + 2*k3, 0, 0], [0, -1, 0, 0, 1/2], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; gamma :=[[1, -k1 - 2*k2 + 2*k3 - 2*k4, -k1 - 2*k3, k5, (2*k1 + k2 + k4 + k6)/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr056 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1/2 + 2*k2 - 2*k3 + 2*(k1 - k2 + 2*k3 - k4), k1/2 - 2*k3, 0, k2/2 - (k1 - 2*k3)/4 - (-k1 + 2*k2 - 2*k3 + 2*(k1 - k2 + 2*k3 - k4))/4], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 1/2], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/2, 2*k3, 0, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; gamma :=[[1, 2*k2 - 2*k3 + 2*(k1 - k2 + 2*k3 - k4), -2*k3, 2*k3 + 2*k5 - 2*k6, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr058 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1 - 2*k2 + 2*k3 - 2*k4, -k1 - 2*k3, 0, k2/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/2, k1/2 + 2*k3, 0, 0], [0, -1, 0, 0, 1/2], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; gamma :=[[1, -k1 - 2*k2 + 2*k3 - 2*k4, -k1 - 2*k3, 4*k1 + 2*k2 + 2*k4 + 2*k5 - 2*k6, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr060 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, -2*k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 2*k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -2*(k1 - k2 + k3 - k4), k1 - 2*k3, 0, k2/2 + (k1 - k2 + k3 - k4)/2], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1, 2*k3, 0, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; gamma :=[[1, -2*(k1 - k2 + k3 - k4), -2*k3, 2*k3 + 2*k5 - 2*k6, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr061 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, 0, -2*k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 2*k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1, 0, k1 + 2*k2, 0], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, 7*k1 + 2*k2 - 2*k3 + 2*k4, 0, -2*k1 - 2*k2, -(-2*k1 - 2*k2)/4 + k3/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; gamma :=[[1, 8*k1 + 2*k2 - 2*k3 + 2*k4, 2*k1 + 2*k2 - 2*k6, -2*k1 - 2*k2, (-k1 + k3 - k4 + k5)/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr061b := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, -2*k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 2*k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -2*k3 - 2*k5 - 2*k6 + 2*(-k1 + k2 + k4 + k5 + k6), k1 - 2*k3, 0, k2/2 - (-2*k3 - 2*k5 - 2*k6 + 2*(-k1 + k2 + k4 + k5 + k6))/4], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1, 2*k3, 0, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; gamma :=[[1, -2*k3 - 2*k5 - 2*k6 + 2*(-k1 + k2 + k4 + k5 + k6), -2*k3, 2*k3 + 2*k6 - 2*(-k1 + k2 + k4 + k5 + k6), (-k1 + k2 + k4 + k5 + k6)/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr061c := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, -2*k1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 2*k1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, 0, -k1, 2*k2, 2*k1 - k2/2], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, 0, -3*k1 - 2*k2 - 2*k6 + 2*(k1 + k2 + k3 + k6), k1, -k4/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; gamma :=[[1, 2*k2 + 2*k5 - 2*(k1 + k2 + k3 + k6), 4*k1 + 2*k2 + 2*k6 - 2*(k1 + k2 + k3 + k6), -2*k2, (k1 + k2 + k3 + k6)/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr062 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta, gamma; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[-1, -k1/2, 0, k1/2 + 2*k2, 0], [0, -1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, 3*k1 + 2*k2 - 2*k3 + 2*k4, 0, -k1 - 2*k2, k3/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; gamma :=[[1, 3*k1 + 2*k2 - 2*k3 + 2*k4, -2*k6, -k1 - 2*k2, (k3 - k4 + k5)/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta, gamma] , IdentityMat(5) ); end; ACDim4Nr075 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, 0, k4/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr076 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, 0, k4/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/4], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr077 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, 0, k4/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr079 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, -k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k2, k3, k4/4], [0, 0, 1, 0, 0], [0, 0, 1, -1, 0], [0, -1, 1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr080 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, -k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1/4 + k2, k1/4 - k2, k3, k1/16 - k2/4 + k3/4 + k4/4], [0, 0, 1, 0, 1/2], [0, 0, 1, -1, 0], [0, -1, 1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr081 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, k4, k5/4], [0, 0, 1, 0, 0], [0, -1, 0, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr082 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, -k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, k4, k5/4], [0, 0, -1, 0, 0], [0, 0, -1, 1, 0], [0, 1, -1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr083 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, 0, k4/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[1, k2 + k3, -k2 + k3, k5, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr084 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, 0, k4/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k2 + k3, -k2 + k3, -2*k6, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr085 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k2 - 2*k6, 0, -k1/8 + k2/4 + k3/4 - (-k1 + k2 - 2*k6)/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 1/2], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[1, 2*k2 - 2*k6, -2*k6, k4, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr086 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k1/2 + k3, 0, -k1/8 + k2/4 - k3/4 + k4/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 1/2], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k1 + k2 + k3, k1 - k2 + k3, -k1 + k2 - k3 - 2*k6, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr087 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, -k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k2, k3, k4/4], [0, 0, 1, 0, 0], [0, 0, 1, -1, 0], [0, -1, 1, 0, 0], [0, 0, 0, 0, 1]]; beta :=[[1, k5, -2*k2 + 2*k3 + k5, 2*k2 - k5, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr088 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1/2, -k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k2, -k1/4 + k3, -(-k1/4 + k2 + k3 - k4)/4], [0, 0, 1, 0, 0], [0, 0, 1, -1, 0], [0, -1, 1, 0, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, 2*k2 + 2*k6, -k1 + 2*k3 + 2*k6, -2*k6, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr103 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, 0, k4/4], [0, 0, -1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k2 - k3, 0, 2*k5, 0], [0, 1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr104 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/2 + k2, -k1 + k2 + 2*k3 + 2*k5, 0, -k1/8 - k2/4 + k3/4 - (-k1 + k2 + 2*k3 + 2*k5)/4], [0, 0, -1, 0, 1/2], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -2*k2 - 2*k3 - 2*k5, k1/2, 2*k2 + 2*k3 + 2*k4 + 2*k5, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr106 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/2 + k2, -k1 - k2 - 2*k5, 0, -k1/8 - k2/4 + k3/4 - (-k1 - k2 - 2*k5)/4], [0, 0, -1, 0, 1/2], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, 2*k5, k1/2, -2*k4, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr110 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, 0, -k1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, 0, 0, k1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, k1, -k1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, 4*k1 - 4*k2 + 2*k3 - 3*k4 + 2*k5, -4*k1 + 4*k2 - 2*k3 + 3*k4 - 2*k5, -k1/2 + k2, -(-k1/2 + k2 - k3 - (3*(-4*k1 + 4*k2 - 2*k3 + 3*k4 - 2*k5))/2 - (4*k1 - 4*k2 + 2*k3 - 3*k4 + 2*k5)/2)/4], [0, 0, 1, 0, 0], [0, 0, 1, -1, 0], [0, -1, 1, 0, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, -k4, 2*(k1 - k2 - k4) + k4, k4, 0], [0, 0, 1, -1, 1/2], [0, 0, 1, 0, 1/2], [0, -1, 1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr114 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, -k1/2 + k2, k1 - k2 - 2*k4, 2*k1 - 2*k2 + 2*k3 - 2*k4 + 2*k5, -(k1/2 + k3 + 2*k5)/4], [0, 0, 1, 0, 1/2], [0, -1, 0, 0, 0], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/2, 2*k4, 0, 0], [0, -1, 0, 0, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr143 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a:= [[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[1, k2, -k1/2 + k3, 0, k4/3], [0, 0, -1, 0, 0], [0, 1, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr144 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/3], [0, 0, -1, 0, 0], [0, 1, -1, 0, 0], [0, 0, 0, 1, 1/3], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr146 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, -k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, -k2 - k3, k4/3], [0, 0, 0, 1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr147 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, k4, k5/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr148 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, -k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, k3, k4, k5/6], [0, 0, 0, -1, 0], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr158 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/3], [0, 0, -1, 0, 0], [0, 1, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k2, k2, 2*k5, 0], [0, 0, -1, 0, 0], [0, -1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr159 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1 - 2*k2 + 3*k4, -k1/2 + k2, 0, k3/3], [0, 0, -1, 0, 0], [0, 1, -1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k4, -k4, 2*k5, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr161 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, k1/2, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, -k1/2, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, -k1/2, k1/2, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k1/4 + k2, k3, -k1/4 - k2 - k3, -((5*k1)/8 + k2 + (-k2 - k3)/2 + (3*k3)/2 - k4)/3], [0, 0, 0, 1, 1/2], [0, 1, 0, 0, 1/2], [0, 0, 1, 0, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1/4 - k2 - 2*k3 + 2*k5, (-3*k1)/4 - k2 - 2*k3 + 2*k5, 2*k5, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr168 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr169 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, 1, 5/6], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr172 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, 1, 1/3], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr173 := function ( k1, k2, k3, k4) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr174 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, k4, k5/6], [0, 0, -1, 0, 0], [0, 1, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa] , IdentityMat(5) ); end; ACDim4Nr175 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[1, k1 - 2*k3, -k1 + 2*k2 + 2*k3, k5, k6/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr176 := function ( k1, k2, k3, k4, k5, k6) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; beta :=[[1, k1 - 2*k3, -k1 + 2*k2 + 2*k3, 2*k6, k5/2], [0, -1, 0, 0, 0], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4Nr184 := function ( k1, k2, k3, k4, k5) local a, b, c, d, alfa, beta; a :=[[1, 0, -k1/2, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b :=[[1, k1/2, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; c :=[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; d :=[[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa :=[[1, k2, -k1/2 + k3, 0, k4/6], [0, 0, 1, 0, 0], [0, -1, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; beta :=[[-1, -k1 + k2 + 2*k3, k1 - k2 - 2*k3, 2*k5, 0], [0, 0, -1, 0, 0], [0, -1, 0, 0, 0], [0, 0, 0, 1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a, b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4NrB1 := function ( k, k1, k2, k3) local a, b, c, d; a:= [[1, (-2*k2)/3, 0, -k1/2 - (2*k*k3)/3 + (2*k*(k2 + k3))/3, 0], [0, 1, 0, -k/2, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-2*k3)/3, k1/2 - (2*k*k3)/3, 0, 0], [0, 1, k/2, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, k2/3, k3/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d] , IdentityMat(5) ); end; ACDim4NrB2 := function ( k, k1, k2, k3) local a, b, c, d, alfa; a:= [[1, (-4*k1)/3, 0, (2*k*k1)/3 + (2*k*k2)/3 - 2*k*k3 + (-4*k*k1 - (16*k*k2)/3 - 2*k*k3 + 2*(2*k*k1 + 2*k*k2 + 2*k*k3))/2, 0], [0, 1, 0, -k, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-4*k2)/3, (-4*k*k1 - (16*k*k2)/3 - 2*k*k3 + 2*(2*k*k1 + 2*k*k2 + 2*k*k3))/2, 0, 0], [0, 1, k, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, (2*k1)/3, (2*k2)/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[-1, 2*k3, -k1/3, -k2/3, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB3c := function (l, k1, k2, k3, k4) local a, b, c, d, alfa; a:= [[1, 0, 0, (k1*l)/3 + k3*l + ((-8*k1*l)/3 + k3*l + 2*(k1*l - k3*l))/2, 0], [0, 1, 0, -l, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-2*k1)/3, ((-8*k1*l)/3 + k3*l + 2*(k1*l - k3*l))/2, -k2, 0], [0, 1, l, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, k1/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[1, k3, 0, 0, k4/2], [0, -1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB3b := function (l, k1, k2, k3, k4) local a, b, c, d, alfa; a:= [[1, 0, 0, k1 + (2*k1*l)/3 - 2*k2*l + ((2*k1)/3 - (16*k1*l)/3 - 2*k2*l + 2*(-k1 + 2*k1*l + 2*k2*l))/2, 0], [0, 1, 0, -l, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-4*k1)/3, ((2*k1)/3 - (16*k1*l)/3 - 2*k2*l + 2*(-k1 + 2*k1*l + 2*k2*l))/2, -k3, 0], [0, 1, l, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, (2*k1)/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[1, -2*k2, -k2, 0, k4/2], [0, -1, -1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB3 := function (l, k1, k2, k3, k4) local a, b, c, d, alfa; a:= [[1, 0, 0, (2*k1)/3 + (k1*l)/3 + (-k1 - (2*k1*l)/3)/2, 0], [0, 1, 0, (-1 - 2*l)/2, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-2*k1)/3, (-k1 - (2*k1*l)/3)/2, -k3, 0], [0, 1, (1 + 2*l)/2, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, k1/3, -k2], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[1, 0, 0, 0, k4/2], [0, -1, -1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB4 := function (k, k1, k2, k3, k4) local a, b, c, d, alfa, beta; a:= [[1, 0, 0, (k*k1)/3 + k*k3 + ((-2*k*k1)/3 - k*k3)/2, -k4], [0, 1, 0, -k, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-2*k1)/3, ((-2*k*k1)/3 - k*k3)/2, -(k*k1)/2 - k2 + (3*k*k3)/4, 0], [0, 1, k, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, k1/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[1, k3, 0, 0, 0], [0, -1, 0, k/2, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB4b := function (k, k1, k2, k3) local a, b, c, d, alfa; a:= [[1, (4*k1)/3, 0, (-5*k*k1)/3 + 2*k2 - 2*((-2*k*k1)/3 + k2), -k3], [0, 1, 0, -k, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, 0, -2*((-2*k*k1)/3 + k2), 0, 0], [0, 1, k, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, (-2*k1)/3, 0, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[-1, (-2*k1)/3, 0, 0, 0], [0, -1, 0, k/2, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB5 := function (l, k1, k2, k3, k4) local a, b, c, d, alfa; a:= [[1, (-2*k1)/3, 0, k3*l, k2], [0, 1, 0, -l, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (2*k1)/3, 0, 0, 0], [0, 1, l, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, k1/3, -k1/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[1, k3, 0, 0, k4/2], [0, -1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB5b := function (l, k1, k2, k3, k4) local a, b, c, d, alfa; a:= [[1, (-2*k1)/3, 0, k3*(1 + 2*l), k2], [0, 1, 0, (-1 - 2*l)/2, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (2*k1)/3, 0, 0, 0], [0, 1, (1 + 2*l)/2, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, k1/3, -k1/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[1, 2*k3, 0, 0, k4/2], [0, -1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa] , IdentityMat(5) ); end; ACDim4NrB7 := function (l, k1, k2, k3, k4) local a, b, c, d, alfa, beta; a:= [[1, 0, 0, (4*k1*l)/3 - 4*k2*l + ((-8*k1*l)/3 + 4*k2*l)/2, 0], [0, 1, 0, -2*l, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-4*k1)/3, ((-8*k1*l)/3 + 4*k2*l)/2, 0, (5*k1)/6 - 2*k2 + ((-2*k1)/3 + 2*k2)/2 - k4], [0, 1, 2*l, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, (2*k1)/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[-1, 2*k2, 0, -k1/3, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta:= [[1, (2*k1)/3 - 2*k2, -(((2*k1)/3 - 2*k2)*l)/2, 2*k3, 0], [0, -1, l, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4NrB7b := function (l, k1, k2, k3, k4) local a, b, c, d, alfa, beta; a:= [[1, 0, 0, (4*k1*(1 + 2*l))/3 - 2*k2*(1 + 2*l) + ((-8*k1*(1 + 2*l))/3 + 2*k2*(1 + 2*l))/2, 0], [0, 1, 0, -1 - 2*l, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-8*k1)/3, ((-8*k1*(1 + 2*l))/3 + 2*k2*(1 + 2*l))/2, 0, (5*k1)/3 - 2*k2 + ((-4*k1)/3 + 2*k2)/2 - k4], [0, 1, 1 + 2*l, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, (4*k1)/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[-1, 2*k2, 0, (-2*k1)/3, 0], [0, 1, 0, 0, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta:= [[1, (4*k1)/3 - 2*k2, -(((4*k1)/3 - 2*k2)*(1 + 2*l))/4, 2*k3, 0], [0, -1, (1 + 2*l)/2, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4NrB8 := function (k, k1, k2, k3, k4) local a, b, c, d, alfa, beta; a:= [[1, 0, 0, -2*k*(k1 - 2*k2) - 8*k*k2 + (8*k*(2*(k1 - 2*k2) + 4*k2))/3 + (-4*k*k2 - (14*k*(2*(k1 - 2*k2) + 4*k2))/3 + 2*(2*k*(k1 - 2*k2) + 8*k*k2))/2, (k*(k1 + (-2*(k1 - 2*k2) - 4*k2)/6 - 2*k2))/4 - k3 + (k1 + (17*k*(k1 - 2*k2))/3 - 3*k2 + (34*k*k2)/3 + (-k1 + 2*k2)/2 + (-2*k*(k1 - 2*k2) - 8*k*k2)/2 + (k1 - 2*k*(k1 - 2*k2) - 6*k*k2)/2 + 2*k3 - 2*k4)/2], [0, 1, 0, -2*k, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, (-2*(2*(k1 - 2*k2) + 4*k2))/3, (-4*k*k2 - (14*k*(2*(k1 - 2*k2) + 4*k2))/3 + 2*(2*k*(k1 - 2*k2) + 8*k*k2))/2, k1 + (-2*(k1 - 2*k2) - 4*k2)/3 - 2*k*(k1 - 2*k2) - 2*k*k2 + (4*k*(2*(k1 - 2*k2) + 4*k2))/3 + ((-2*(k1 - 2*k2) - 4*k2)/3 - 4*k*k2)/2, 0], [0, 1, 2*k, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, 0, (2*(k1 - 2*k2) + 4*k2)/3, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[-1, 2*k2, 2*k*k2, ((-2*(k1 - 2*k2) - 4*k2)/3 - 4*k*k2)/2, 0], [0, 1, 2*k, -2*k, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta:= [[1, k1 + (-2*(k1 - 2*k2) - 4*k2)/6 - 2*k2, (k*(k1 + (-2*(k1 - 2*k2) - 4*k2)/6 - 2*k2))/2, k1 + (17*k*(k1 - 2*k2))/3 - 3*k2 + (34*k*k2)/3 + (-k1 + 2*k2)/2 + (-2*k*(k1 - 2*k2) - 8*k*k2)/2 + (k1 - 2*k*(k1 - 2*k2) - 6*k*k2)/2 + 2*k3 - 2*k4, 0], [0, -1, -k, k, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa, beta] , IdentityMat(5) ); end; ACDim4NrB8b := function (k, k1, k2, k3, k4) local a, b, c, d, alfa, beta; a:= [[1, (4*k1)/3, (-2*k1)/3 + (4*k*k1)/3 + ((-16*k*k1)/3 + 8*k*k2 - 2*(-2*k*k1 + 4*k*k2))/2 + 2*(k1/3 - (2*k*k1)/3 + ((16*k*k1)/3 - 8*k*k2 + 2*(-2*k*k1 + 4*k*k2))/ 2), (-10*k*k1)/3 + ((16*k*k1)/3 - 8*k*k2 + 2*(-2*k*k1 + 4*k*k2))/2, ((8*k*k1)/3 - 2*k*k2 + (-2*k*k1 + 4*k*k2)/2 + ((-16*k*k1)/3 + 8*k*k2 - 2*(-2*k*k1 + 4*k*k2))/2)/2 - k3], [0, 1, 0, -2*k, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; b:= [[1, 0, ((16*k*k1)/3 - 8*k*k2 + 2*(-2*k*k1 + 4*k*k2))/2, 0, (-2*k1)/3 - (2*k*k1)/3 + k2 + 4*k*k2 + (2*k*k1 - 4*k*k2)/2 + ((-16*k*k1)/3 + 8*k*k2 - 2*(-2*k*k1 + 4*k*k2))/4 + (k1/3 - (2*k*k1)/3 + ((16*k*k1)/3 - 8*k*k2 + 2*(-2*k*k1 + 4*k*k2))/2)/ 2 + ((-8*k*k1)/3 + 2*k*k2 + (2*k*k1 - 4*k*k2)/2 + ((16*k*k1)/3 - 8*k*k2 + 2*(-2*k*k1 + 4*k*k2))/2)/2 + k3 + k4], [0, 1, 2*k, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 1]]; c:= [[1, 0, (-2*k1)/3, 0, -k2], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; d:= [[1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]; alfa:= [[-1, 0, k1/3 - (2*k*k1)/3 + ((16*k*k1)/3 - 8*k*k2 + 2*(-2*k*k1 + 4*k*k2))/2, 0, 0], [0, 1, 2*k, -2*k, 1/2], [0, 0, -1, 0, 0], [0, 0, 0, -1, 0], [0, 0, 0, 0, 1]]; beta:= [[-1, (-2*k1)/3, 0, (8*k*k1)/3 - 2*k*k2 + (-2*k*k1 + 4*k*k2)/2 + ((-16*k*k1)/3 + 8*k*k2 - 2*(-2*k*k1 + 4*k*k2))/2, 0], [0, -1, -k, k, 0], [0, 0, 1, 0, 1/2], [0, 0, 0, -1, 1/2], [0, 0, 0, 0, 1]]; return Group( [a , b, c, d, alfa, beta] , IdentityMat(5) ); end; ############################################################################# ## #V ACDim4Funcs #V ACDim4Param #V ACDim4Types ## ############################################################################# ## ## some small helpers ## ACDim4Funcs := [ ACDim4Nr001, ACDim4Nr002, ACDim4Nr003, ACDim4Nr004, ACDim4Nr004b, ACDim4Nr005, ACDim4Nr006, ACDim4Nr007, ACDim4Nr007b, ACDim4Nr008, ACDim4Nr009, ACDim4Nr009b, ACDim4Nr010, ACDim4Nr011, ACDim4Nr012, ACDim4Nr013, ACDim4Nr014, ACDim4Nr014b, ACDim4Nr015, ACDim4Nr018, ACDim4Nr019, ACDim4Nr019b, ACDim4Nr019c, ACDim4Nr026, ACDim4Nr027, ACDim4Nr029, ACDim4Nr029b, ACDim4Nr029c, ACDim4Nr030, ACDim4Nr031, ACDim4Nr032, ACDim4Nr033, ACDim4Nr033b, ACDim4Nr033c, ACDim4Nr034, ACDim4Nr036, ACDim4Nr037, ACDim4Nr041, ACDim4Nr043, ACDim4Nr045, ACDim4Nr055, ACDim4Nr056, ACDim4Nr058, ACDim4Nr060, ACDim4Nr061, ACDim4Nr061b, ACDim4Nr061c, ACDim4Nr062, ACDim4Nr075, ACDim4Nr076, ACDim4Nr077, ACDim4Nr079, ACDim4Nr080, ACDim4Nr081, ACDim4Nr082, ACDim4Nr083, ACDim4Nr084, ACDim4Nr085, ACDim4Nr086, ACDim4Nr087, ACDim4Nr088, ACDim4Nr103, ACDim4Nr104, ACDim4Nr106, ACDim4Nr110, ACDim4Nr114, ACDim4Nr143, ACDim4Nr144, ACDim4Nr146, ACDim4Nr147, ACDim4Nr148, ACDim4Nr158, ACDim4Nr159, ACDim4Nr161, ACDim4Nr168, ACDim4Nr169, ACDim4Nr172, ACDim4Nr173, ACDim4Nr174, ACDim4Nr175, ACDim4Nr176, ACDim4Nr184, ACDim4NrB1, ACDim4NrB2, ACDim4NrB3c, ACDim4NrB3b, ACDim4NrB3, ACDim4NrB4, ACDim4NrB4b, ACDim4NrB5, ACDim4NrB5b, ACDim4NrB7, ACDim4NrB7b, ACDim4NrB8, ACDim4NrB8b ]; MakeReadOnlyGlobal( "ACDim4Funcs" ); ############################################################################# ACDim4Types := [ "001", "002", "003", "004", "004b", "005", "006", "007", "007b", "008", "009", "009b", "010", "011", "012", "013", "014", "014b", "015", "018", "019", "019b", "019c", "026", "027", "029", "029b", "029c", "030", "031", "032", "033", "033b", "033c", "034", "036", "037", "041", "043", "045", "055", "056", "058", "060", "061", "061b", "061c", "062", "075", "076", "077", "079", "080", "081", "082", "083", "084", "085", "086", "087", "088", "103", "104", "106", "110", "114", "143", "144", "146", "147", "148", "158", "159", "161", "168", "169", "172", "173", "174", "175", "176", "184", "B1", "B2", "B3c", "B3b", "B3", "B4", "B4b", "B5", "B5b", "B7", "B7b", "B8", "B8b" ]; MakeReadOnlyGlobal( "ACDim4Types" ); ############################################################################# ACDim4Param := [ 3, 7, 4, 4, 3, 4, 3, 3, 4, 3, 3, 4, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 5, 5, 5, 5, 5, 4, 4, 4, 4, 5, 6, 6, 5, 4, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5 ]; MakeReadOnlyGlobal( "ACDim4Param" ); aclib-1.3.2/gap/betti.gi0000664000371700037170000001105613627151544016213 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W betti.gi Karel Dekimpe #W Bettina Eick ## ############################################################################# ## ## The following functions can be used to determine Betti-numbers of a ## torsion-free polycyclic group given by a pcp presentation. All ## Betti-numbers can be obtained if G has Hirsch length at most 5. ## ## The Betti-numbers B(G,m) are defined as the ranks of H_m(G,Z) for the ## trivial G-module Z. If M is the orientation G-module, then we can also ## characterise B(G,m) for n >= m >= n-2 as the ranks of H^n-m(G,M). ## Further, the alternating sum of all Betti-numbers is 0 using the ## Euler characteristic. ## ############################################################################# ## #F OrientationModule( G ) ## InstallMethod( OrientationModule, "for pcp groups", true, [IsPcpGroup], 0, function( G ) local pcps, gens, mats, acts, dets, i, pcp; pcps := PcpsOfEfaSeries( G ); pcps := Filtered( pcps, x -> RelativeOrdersOfPcp(x)[1] = 0 ); gens := Igs(G); mats := List( gens, x -> IdentityMat( 1 ) ); for pcp in pcps do acts := LinearActionOnPcp( gens, pcp ); dets := List( acts, x -> Determinant( x ) ); for i in [1..Length(mats)] do mats[i] := dets[i] * mats[i]; od; od; return mats; end ); ############################################################################# ## #F IsOrientedMatGroup( G ) ## IsOrientedMatGroup := function( G ) return ForAll( GeneratorsOfGroup(G), x -> Determinant(x) = 1 ); end; ############################################################################# ## #F BettiNumber( G, m ) ## BettiNumberPcpGroup := function(G,m) local n, pcp, mats, CR, one, two; if not IsTorsionFree( G ) then Print("the input group must be torsion-free \n"); return fail; fi; # catch the trivial case if IsFinite(G) then if m = 0 then return 1; else return 0; fi; fi; # the hirsch length n := HirschLength( G ); if m < 0 or m > n then return 0; fi; if m = 0 then return 1; fi; if m = 1 then pcp := Pcp( G, DerivedSubgroup(G) ); return Length( Filtered( RelativeOrdersOfPcp( pcp ),x -> x=0 )); fi; if m = n then mats := OrientationModule( G ); if ForAny( mats, x -> x[1][1] = -1 ) then return 0; else return 1; fi; fi; if m = 2 then mats := List( Pcp(G), x -> IdentityMat(1) ); CR := CRRecordByMats( G, mats ); two := TwoCohomologyCR( CR ).factor.rels; return Length( Filtered( two, x -> x = 0 ) ); fi; if m = n-1 then mats := OrientationModule( G ); CR := CRRecordByMats( G, mats ); one := OneCohomologyCR( CR ).factor.rels; return Length( Filtered( one, x -> x = 0 ) ); fi; if m = n-2 then mats := OrientationModule( G ); CR := CRRecordByMats( G, mats ); two := TwoCohomologyCR( CR ).factor.rels; return Length( Filtered( two, x -> x = 0 ) ); fi; Print("Betti-number is out of range for our methods \n"); return fail; end; InstallMethod( BettiNumber, "for torsion-free pcp groups", true, [IsPcpGroup, IsInt], 0, function(G, m) if not IsTorsionFree(G) then TryNextMethod(); fi; if m in [3..HirschLength(G)-3] then TryNextMethod(); fi; return BettiNumberPcpGroup(G,m); end); ############################################################################# ## #F BettiNumbers( G ) ## InstallMethod( BettiNumbers, "for torsion-free pcp groups", true, [IsPcpGroup], 0, function( G ) local n, betti; n := HirschLength( G ); if not IsTorsionFree( G ) or n > 6 then TryNextMethod(); fi; # set up the Betti-numbers betti := [1]; if n = 0 then return betti; fi; betti[2] := BettiNumber( G, 1 ); if n = 1 then return betti; fi; betti[3] := BettiNumber( G, 2 ); if n = 2 then return betti; fi; betti[4] := betti[1] - betti[2] + betti[3]; if n = 3 then return betti; fi; if n > 3 then betti[5] := BettiNumber( G, 4 ); betti[4] := betti[4] + betti[5]; fi; if n > 4 then betti[6] := BettiNumber( G, 5 ); betti[4] := betti[4] - betti[6]; fi; if n > 5 then betti[7] := BettiNumber( G, 6 ); betti[4] := betti[4] + betti[7]; fi; return betti; end ); aclib-1.3.2/gap/matgrp3.gi0000664000371700037170000001762113627151544016465 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W matgrp3.gi Karel Dekimpe #W Bettina Eick ## ## This file contains the 3-dimensional almost crystallographic groups ## as integral matrix groups. There are 17 types of groups. ## ACDim3Nr01 := function ( k1 ) local a, b, c; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; return Group( [a , b, c] , IdentityMat(4) ); end; ACDim3Nr02 := function ( k1, k2, k3, k4) local a, b, c, alfa; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, k3, k4/2], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa] , IdentityMat(4) ); end; ACDim3Nr03 := function ( k1, k2 ) local a, b, c, alfa; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[-1, -k2, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa] , IdentityMat(4) ); end; ACDim3Nr04 := function ( k1, k2 ) local a, b, c, alfa; a:=[[1, 0, -k1, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[-1, 2*k2, k1/2, 0], [0, 1, 0, 1/2], [0, 0, -1, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa] , IdentityMat(4) ); end; ACDim3Nr05 := function ( k1, k2 ) local a, b, c, alfa; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[-1, -k2, -k2, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa ] , IdentityMat(4) ); end; ACDim3Nr06 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, k3, k4/2], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; beta:=[[-1, -k2, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr07 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, -2*(k3 + k4), k3/2], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; beta:=[[-1, k1/2 - k2, 0, 0], [0, 1, 0, 0], [0, 0, -1, 1/2], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr08 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k1 + 2*k3, -k1 + 2*k2 - 2*k3, k4/2], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; beta:=[[-1, -k1/2 - 2*k3, k1/2, 0], [0, 1, 0, 1/2], [0, 0, -1, 1/2], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr09 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, -k2 + 2*k3, k4/2], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; beta:=[[-1, -k3, -k3, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr10 := function ( k1, k2, k3, k4) local a, b, c, alfa; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, k3, k4/4], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa] , IdentityMat(4) ); end; ACDim3Nr11 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, k3, k4/4], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; beta:=[[-1, -k2 - k3, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr12 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, k1 - k2 - 2*k3, k4/4], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; beta:=[[-1, -k1/2 + 2*k3, k1/2, 0], [0, 1, 0, 1/2], [0, 0, -1, 1/2], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr13 := function ( k1, k2, k3, k4) local a, b, c, alfa; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, -k1/2 + k3, k4/3], [0, 0, -1, 0], [0, 1, -1, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa] , IdentityMat(4) ); end; ACDim3Nr14 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k2, -k1/2 + k3, k4/3], [0, 0, -1, 0], [0, 1, -1, 0], [0, 0, 0, 1]]; beta:=[[-1, -k2 , k2 , 0], [0, 0, -1, 0], [0, -1, 0, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr15 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, k1 - 2*k3 + 3*k2, -k1/2 + k3, k4/3], [0, 0, -1, 0], [0, 1, -1, 0], [0, 0, 0, 1]]; beta:=[[-1, -k2, -k2, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ACDim3Nr16 := function ( k1, k2, k3, k4) local a, b, c, alfa; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, -k1/2 + k2, k3, k4/6], [0, 1, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa] , IdentityMat(4) ); end; ACDim3Nr17 := function ( k1, k2, k3, k4) local a, b, c, alfa, beta; a:=[[1, 0, -k1/2, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]; b:=[[1, k1/2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]; c:=[[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]; alfa:=[[1, -k1/2 + k2, k3, k4/6], [0, 1, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; beta:=[[-1, -k3, -k3, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]; return Group( [a , b, c, alfa, beta] , IdentityMat(4) ); end; ############################################################################# ## #V ACDim3Funcs #V ACDim3Param ## ACDim3Funcs := [ ACDim3Nr01, ACDim3Nr02, ACDim3Nr03, ACDim3Nr04, ACDim3Nr05, ACDim3Nr06, ACDim3Nr07, ACDim3Nr08, ACDim3Nr09, ACDim3Nr10, ACDim3Nr11, ACDim3Nr12, ACDim3Nr13, ACDim3Nr14, ACDim3Nr15, ACDim3Nr16, ACDim3Nr17 ]; MakeReadOnlyGlobal( "ACDim3Funcs" ); ACDim3Param := [ 1,4,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4 ]; MakeReadOnlyGlobal( "ACDim3Param" ); aclib-1.3.2/gap/crystgrp.gi0000664000371700037170000026452713627151544016776 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W In this file we prepare functions to loop over the 2,3 or 4 dimensional #W crystallographic groups as matrix groups or pcp groups. ## cryst4params:= [ [ 1, 1, 1, 1 ], [ 1, 2, 1, 1 ], [ 2, 1, 1, 1 ], [ 2, 1, 1, 2 ], [ 2, 1, 2, 1 ], [ 2, 1, 2, 2 ], [ 2, 2, 1, 1 ], [ 2, 2, 1, 2 ], [ 2, 2, 2, 1 ], [ 2, 3, 1, 1 ], [ 2, 3, 1, 2 ], [ 2, 3, 1, 3 ], [ 2, 3, 1, 4 ], [ 2, 3, 2, 1 ], [ 2, 3, 2, 2 ], [ 3, 1, 1, 1 ], [ 3, 1, 1, 2 ], [ 3, 1, 2, 1 ], [ 3, 1, 2, 2 ], [ 3, 1, 3, 1 ], [ 3, 2, 1, 1 ], [ 3, 2, 1, 2 ], [ 3, 2, 1, 3 ], [ 3, 2, 2, 1 ], [ 3, 2, 2, 2 ], [ 3, 2, 2, 3 ], [ 3, 2, 3, 1 ], [ 4, 1, 1, 1 ], [ 4, 1, 1, 2 ], [ 4, 1, 1, 3 ], [ 4, 1, 1, 4 ], [ 4, 1, 1, 5 ], [ 4, 1, 1, 6 ], [ 4, 1, 1, 7 ], [ 4, 1, 1, 8 ], [ 4, 1, 1, 9 ], [ 4, 1, 1, 10 ], [ 4, 1, 1, 11 ], [ 4, 1, 1, 12 ], [ 4, 1, 1, 13 ], [ 4, 1, 2, 1 ], [ 4, 1, 2, 2 ], [ 4, 1, 2, 3 ], [ 4, 1, 2, 4 ], [ 4, 1, 3, 1 ], [ 4, 1, 3, 2 ], [ 4, 1, 3, 3 ], [ 4, 1, 3, 4 ], [ 4, 1, 3, 5 ], [ 4, 1, 3, 6 ], [ 4, 1, 3, 7 ], [ 4, 1, 3, 8 ], [ 4, 1, 3, 9 ], [ 4, 1, 3, 10 ], [ 4, 1, 3, 11 ], [ 4, 1, 3, 12 ], [ 4, 1, 4, 1 ], [ 4, 1, 4, 2 ], [ 4, 1, 4, 3 ], [ 4, 1, 4, 4 ], [ 4, 1, 4, 5 ], [ 4, 1, 4, 6 ], [ 4, 1, 4, 7 ], [ 4, 1, 5, 1 ], [ 4, 1, 5, 2 ], [ 4, 1, 5, 3 ], [ 4, 1, 6, 1 ], [ 4, 1, 6, 2 ], [ 4, 1, 6, 3 ], [ 4, 1, 6, 4 ], [ 4, 1, 6, 5 ], [ 4, 2, 1, 1 ], [ 4, 2, 1, 2 ], [ 4, 2, 1, 3 ], [ 4, 2, 1, 4 ], [ 4, 2, 1, 5 ], [ 4, 2, 1, 6 ], [ 4, 2, 1, 7 ], [ 4, 2, 1, 8 ], [ 4, 2, 1, 9 ], [ 4, 2, 1, 10 ], [ 4, 2, 1, 11 ], [ 4, 2, 1, 12 ], [ 4, 2, 1, 13 ], [ 4, 2, 1, 14 ], [ 4, 2, 1, 15 ], [ 4, 2, 1, 16 ], [ 4, 2, 2, 1 ], [ 4, 2, 2, 2 ], [ 4, 2, 2, 3 ], [ 4, 2, 2, 4 ], [ 4, 2, 3, 1 ], [ 4, 2, 3, 2 ], [ 4, 2, 3, 3 ], [ 4, 2, 3, 4 ], [ 4, 2, 3, 5 ], [ 4, 2, 3, 6 ], [ 4, 2, 3, 7 ], [ 4, 2, 3, 8 ], [ 4, 2, 4, 1 ], [ 4, 2, 4, 2 ], [ 4, 2, 4, 3 ], [ 4, 2, 4, 4 ], [ 4, 2, 4, 5 ], [ 4, 2, 4, 6 ], [ 4, 2, 5, 1 ], [ 4, 2, 5, 2 ], [ 4, 2, 5, 3 ], [ 4, 2, 5, 4 ], [ 4, 2, 5, 5 ], [ 4, 2, 5, 6 ], [ 4, 2, 6, 1 ], [ 4, 2, 6, 2 ], [ 4, 2, 7, 1 ], [ 4, 2, 7, 2 ], [ 4, 2, 7, 3 ], [ 4, 3, 1, 1 ], [ 4, 3, 1, 2 ], [ 4, 3, 1, 3 ], [ 4, 3, 1, 4 ], [ 4, 3, 1, 5 ], [ 4, 3, 1, 6 ], [ 4, 3, 2, 1 ], [ 4, 3, 2, 2 ], [ 4, 3, 3, 1 ], [ 4, 3, 3, 2 ], [ 4, 3, 3, 3 ], [ 4, 3, 3, 4 ], [ 4, 3, 4, 1 ], [ 4, 3, 4, 2 ], [ 4, 3, 4, 3 ], [ 4, 3, 5, 1 ], [ 4, 3, 6, 1 ], [ 4, 3, 6, 2 ], [ 4, 4, 1, 1 ], [ 4, 4, 1, 2 ], [ 4, 4, 1, 3 ], [ 4, 4, 1, 4 ], [ 4, 4, 1, 5 ], [ 4, 4, 1, 6 ], [ 4, 4, 1, 7 ], [ 4, 4, 1, 8 ], [ 4, 4, 1, 9 ], [ 4, 4, 1, 10 ], [ 4, 4, 1, 11 ], [ 4, 4, 1, 12 ], [ 4, 4, 1, 13 ], [ 4, 4, 1, 14 ], [ 4, 4, 1, 15 ], [ 4, 4, 1, 16 ], [ 4, 4, 1, 17 ], [ 4, 4, 1, 18 ], [ 4, 4, 1, 19 ], [ 4, 4, 1, 20 ], [ 4, 4, 1, 21 ], [ 4, 4, 1, 22 ], [ 4, 4, 1, 23 ], [ 4, 4, 1, 24 ], [ 4, 4, 1, 25 ], [ 4, 4, 1, 26 ], [ 4, 4, 1, 27 ], [ 4, 4, 1, 28 ], [ 4, 4, 1, 29 ], [ 4, 4, 1, 30 ], [ 4, 4, 1, 31 ], [ 4, 4, 1, 32 ], [ 4, 4, 1, 33 ], [ 4, 4, 1, 34 ], [ 4, 4, 1, 35 ], [ 4, 4, 1, 36 ], [ 4, 4, 1, 37 ], [ 4, 4, 1, 38 ], [ 4, 4, 1, 39 ], [ 4, 4, 1, 40 ], [ 4, 4, 1, 41 ], [ 4, 4, 1, 42 ], [ 4, 4, 1, 43 ], [ 4, 4, 1, 44 ], [ 4, 4, 1, 45 ], [ 4, 4, 1, 46 ], [ 4, 4, 2, 1 ], [ 4, 4, 2, 2 ], [ 4, 4, 2, 3 ], [ 4, 4, 2, 4 ], [ 4, 4, 2, 5 ], [ 4, 4, 2, 6 ], [ 4, 4, 2, 7 ], [ 4, 4, 2, 8 ], [ 4, 4, 3, 1 ], [ 4, 4, 3, 2 ], [ 4, 4, 3, 3 ], [ 4, 4, 3, 4 ], [ 4, 4, 3, 5 ], [ 4, 4, 3, 6 ], [ 4, 4, 3, 7 ], [ 4, 4, 3, 8 ], [ 4, 4, 3, 9 ], [ 4, 4, 3, 10 ], [ 4, 4, 3, 11 ], [ 4, 4, 3, 12 ], [ 4, 4, 3, 13 ], [ 4, 4, 3, 14 ], [ 4, 4, 3, 15 ], [ 4, 4, 3, 16 ], [ 4, 4, 3, 17 ], [ 4, 4, 3, 18 ], [ 4, 4, 3, 19 ], [ 4, 4, 3, 20 ], [ 4, 4, 3, 21 ], [ 4, 4, 3, 22 ], [ 4, 4, 3, 23 ], [ 4, 4, 3, 24 ], [ 4, 4, 4, 1 ], [ 4, 4, 4, 2 ], [ 4, 4, 4, 3 ], [ 4, 4, 4, 4 ], [ 4, 4, 4, 5 ], [ 4, 4, 4, 6 ], [ 4, 4, 4, 7 ], [ 4, 4, 4, 8 ], [ 4, 4, 4, 9 ], [ 4, 4, 4, 10 ], [ 4, 4, 4, 11 ], [ 4, 4, 4, 12 ], [ 4, 4, 4, 13 ], [ 4, 4, 4, 14 ], [ 4, 4, 5, 1 ], [ 4, 4, 5, 2 ], [ 4, 4, 5, 3 ], [ 4, 4, 6, 1 ], [ 4, 4, 6, 2 ], [ 4, 4, 6, 3 ], [ 4, 4, 6, 4 ], [ 4, 4, 6, 5 ], [ 5, 1, 1, 1 ], [ 5, 1, 2, 1 ], [ 5, 1, 2, 2 ], [ 5, 1, 2, 3 ], [ 5, 1, 2, 4 ], [ 5, 1, 2, 5 ], [ 5, 1, 2, 6 ], [ 5, 1, 2, 7 ], [ 5, 1, 2, 8 ], [ 5, 1, 2, 9 ], [ 5, 1, 2, 10 ], [ 5, 1, 3, 1 ], [ 5, 1, 3, 2 ], [ 5, 1, 3, 3 ], [ 5, 1, 3, 4 ], [ 5, 1, 3, 5 ], [ 5, 1, 3, 6 ], [ 5, 1, 4, 1 ], [ 5, 1, 4, 2 ], [ 5, 1, 4, 3 ], [ 5, 1, 4, 4 ], [ 5, 1, 4, 5 ], [ 5, 1, 4, 6 ], [ 5, 1, 5, 1 ], [ 5, 1, 5, 2 ], [ 5, 1, 5, 3 ], [ 5, 1, 5, 4 ], [ 5, 1, 6, 1 ], [ 5, 1, 6, 2 ], [ 5, 1, 6, 3 ], [ 5, 1, 6, 4 ], [ 5, 1, 6, 5 ], [ 5, 1, 6, 6 ], [ 5, 1, 7, 1 ], [ 5, 1, 7, 2 ], [ 5, 1, 7, 3 ], [ 5, 1, 7, 4 ], [ 5, 1, 8, 1 ], [ 5, 1, 8, 2 ], [ 5, 1, 9, 1 ], [ 5, 1, 9, 2 ], [ 5, 1, 10, 1 ], [ 5, 1, 10, 2 ], [ 5, 1, 10, 3 ], [ 5, 1, 10, 4 ], [ 5, 1, 11, 1 ], [ 5, 1, 11, 2 ], [ 5, 1, 12, 1 ], [ 5, 1, 12, 2 ], [ 5, 1, 13, 1 ], [ 5, 1, 13, 2 ], [ 5, 2, 1, 1 ], [ 5, 2, 2, 1 ], [ 5, 2, 2, 2 ], [ 5, 2, 2, 3 ], [ 5, 2, 2, 4 ], [ 5, 2, 2, 5 ], [ 5, 2, 2, 6 ], [ 5, 2, 2, 7 ], [ 5, 2, 2, 8 ], [ 5, 2, 2, 9 ], [ 5, 2, 2, 10 ], [ 5, 2, 2, 11 ], [ 5, 2, 2, 12 ], [ 5, 2, 2, 13 ], [ 5, 2, 2, 14 ], [ 5, 2, 2, 15 ], [ 5, 2, 2, 16 ], [ 5, 2, 2, 17 ], [ 5, 2, 2, 18 ], [ 5, 2, 2, 19 ], [ 5, 2, 3, 1 ], [ 5, 2, 3, 2 ], [ 5, 2, 3, 3 ], [ 5, 2, 3, 4 ], [ 5, 2, 3, 5 ], [ 5, 2, 3, 6 ], [ 5, 2, 3, 7 ], [ 5, 2, 3, 8 ], [ 5, 2, 3, 9 ], [ 5, 2, 3, 10 ], [ 5, 2, 3, 11 ], [ 5, 2, 3, 12 ], [ 5, 2, 3, 13 ], [ 5, 2, 3, 14 ], [ 5, 2, 4, 1 ], [ 5, 2, 4, 2 ], [ 5, 2, 4, 3 ], [ 5, 2, 4, 4 ], [ 5, 2, 4, 5 ], [ 5, 2, 4, 6 ], [ 5, 2, 4, 7 ], [ 5, 2, 4, 8 ], [ 5, 2, 4, 9 ], [ 5, 2, 4, 10 ], [ 5, 2, 5, 1 ], [ 5, 2, 5, 2 ], [ 5, 2, 5, 3 ], [ 5, 2, 5, 4 ], [ 5, 2, 5, 5 ], [ 5, 2, 5, 6 ], [ 5, 2, 6, 1 ], [ 5, 2, 6, 2 ], [ 5, 2, 6, 3 ], [ 5, 2, 7, 1 ], [ 5, 2, 7, 2 ], [ 5, 2, 7, 3 ], [ 5, 2, 7, 4 ], [ 5, 2, 8, 1 ], [ 5, 2, 8, 2 ], [ 5, 2, 8, 3 ], [ 5, 2, 9, 1 ], [ 5, 2, 9, 2 ], [ 5, 2, 9, 3 ], [ 6, 1, 1, 1 ], [ 6, 1, 1, 2 ], [ 6, 1, 1, 3 ], [ 6, 1, 1, 4 ], [ 6, 1, 1, 5 ], [ 6, 1, 1, 6 ], [ 6, 1, 1, 7 ], [ 6, 1, 1, 8 ], [ 6, 1, 1, 9 ], [ 6, 1, 1, 10 ], [ 6, 1, 1, 11 ], [ 6, 1, 1, 12 ], [ 6, 1, 1, 13 ], [ 6, 1, 1, 14 ], [ 6, 1, 1, 15 ], [ 6, 1, 1, 16 ], [ 6, 1, 1, 17 ], [ 6, 1, 1, 18 ], [ 6, 1, 1, 19 ], [ 6, 1, 1, 20 ], [ 6, 1, 1, 21 ], [ 6, 1, 1, 22 ], [ 6, 1, 1, 23 ], [ 6, 1, 1, 24 ], [ 6, 1, 1, 25 ], [ 6, 1, 1, 26 ], [ 6, 1, 1, 27 ], [ 6, 1, 1, 28 ], [ 6, 1, 1, 29 ], [ 6, 1, 1, 30 ], [ 6, 1, 1, 31 ], [ 6, 1, 1, 32 ], [ 6, 1, 1, 33 ], [ 6, 1, 1, 34 ], [ 6, 1, 1, 35 ], [ 6, 1, 1, 36 ], [ 6, 1, 1, 37 ], [ 6, 1, 1, 38 ], [ 6, 1, 1, 39 ], [ 6, 1, 1, 40 ], [ 6, 1, 1, 41 ], [ 6, 1, 1, 42 ], [ 6, 1, 1, 43 ], [ 6, 1, 1, 44 ], [ 6, 1, 1, 45 ], [ 6, 1, 1, 46 ], [ 6, 1, 1, 47 ], [ 6, 1, 1, 48 ], [ 6, 1, 1, 49 ], [ 6, 1, 1, 50 ], [ 6, 1, 1, 51 ], [ 6, 1, 1, 52 ], [ 6, 1, 1, 53 ], [ 6, 1, 1, 54 ], [ 6, 1, 1, 55 ], [ 6, 1, 1, 56 ], [ 6, 1, 1, 57 ], [ 6, 1, 1, 58 ], [ 6, 1, 1, 59 ], [ 6, 1, 1, 60 ], [ 6, 1, 1, 61 ], [ 6, 1, 1, 62 ], [ 6, 1, 1, 63 ], [ 6, 1, 1, 64 ], [ 6, 1, 1, 65 ], [ 6, 1, 1, 66 ], [ 6, 1, 1, 67 ], [ 6, 1, 1, 68 ], [ 6, 1, 1, 69 ], [ 6, 1, 1, 70 ], [ 6, 1, 1, 71 ], [ 6, 1, 1, 72 ], [ 6, 1, 1, 73 ], [ 6, 1, 1, 74 ], [ 6, 1, 1, 75 ], [ 6, 1, 1, 76 ], [ 6, 1, 1, 77 ], [ 6, 1, 1, 78 ], [ 6, 1, 1, 79 ], [ 6, 1, 1, 80 ], [ 6, 1, 1, 81 ], [ 6, 1, 1, 82 ], [ 6, 1, 1, 83 ], [ 6, 1, 1, 84 ], [ 6, 1, 1, 85 ], [ 6, 1, 1, 86 ], [ 6, 1, 1, 87 ], [ 6, 1, 1, 88 ], [ 6, 1, 1, 89 ], [ 6, 1, 1, 90 ], [ 6, 1, 1, 91 ], [ 6, 1, 1, 92 ], [ 6, 1, 1, 93 ], [ 6, 1, 1, 94 ], [ 6, 1, 1, 95 ], [ 6, 1, 1, 96 ], [ 6, 1, 1, 97 ], [ 6, 1, 1, 98 ], [ 6, 1, 1, 99 ], [ 6, 1, 1, 100 ], [ 6, 1, 1, 101 ], [ 6, 1, 1, 102 ], [ 6, 1, 1, 103 ], [ 6, 1, 1, 104 ], [ 6, 1, 2, 1 ], [ 6, 1, 2, 2 ], [ 6, 1, 2, 3 ], [ 6, 1, 2, 4 ], [ 6, 1, 2, 5 ], [ 6, 1, 2, 6 ], [ 6, 1, 2, 7 ], [ 6, 1, 2, 8 ], [ 6, 1, 2, 9 ], [ 6, 1, 2, 10 ], [ 6, 1, 2, 11 ], [ 6, 1, 2, 12 ], [ 6, 1, 2, 13 ], [ 6, 1, 2, 14 ], [ 6, 1, 2, 15 ], [ 6, 1, 2, 16 ], [ 6, 1, 2, 17 ], [ 6, 1, 2, 18 ], [ 6, 1, 2, 19 ], [ 6, 1, 2, 20 ], [ 6, 1, 2, 21 ], [ 6, 1, 2, 22 ], [ 6, 1, 2, 23 ], [ 6, 1, 2, 24 ], [ 6, 1, 2, 25 ], [ 6, 1, 2, 26 ], [ 6, 1, 2, 27 ], [ 6, 1, 2, 28 ], [ 6, 1, 2, 29 ], [ 6, 1, 2, 30 ], [ 6, 1, 2, 31 ], [ 6, 1, 2, 32 ], [ 6, 1, 2, 33 ], [ 6, 1, 2, 34 ], [ 6, 1, 2, 35 ], [ 6, 1, 2, 36 ], [ 6, 1, 3, 1 ], [ 6, 1, 3, 2 ], [ 6, 1, 3, 3 ], [ 6, 1, 3, 4 ], [ 6, 1, 3, 5 ], [ 6, 1, 3, 6 ], [ 6, 1, 3, 7 ], [ 6, 1, 3, 8 ], [ 6, 1, 3, 9 ], [ 6, 1, 3, 10 ], [ 6, 1, 3, 11 ], [ 6, 1, 3, 12 ], [ 6, 1, 3, 13 ], [ 6, 1, 3, 14 ], [ 6, 1, 3, 15 ], [ 6, 1, 3, 16 ], [ 6, 1, 3, 17 ], [ 6, 1, 3, 18 ], [ 6, 1, 3, 19 ], [ 6, 1, 3, 20 ], [ 6, 1, 3, 21 ], [ 6, 1, 3, 22 ], [ 6, 1, 3, 23 ], [ 6, 1, 3, 24 ], [ 6, 1, 3, 25 ], [ 6, 1, 3, 26 ], [ 6, 1, 3, 27 ], [ 6, 1, 3, 28 ], [ 6, 1, 3, 29 ], [ 6, 1, 3, 30 ], [ 6, 1, 3, 31 ], [ 6, 1, 3, 32 ], [ 6, 1, 3, 33 ], [ 6, 1, 3, 34 ], [ 6, 1, 3, 35 ], [ 6, 1, 3, 36 ], [ 6, 1, 3, 37 ], [ 6, 1, 3, 38 ], [ 6, 1, 3, 39 ], [ 6, 1, 3, 40 ], [ 6, 1, 4, 1 ], [ 6, 1, 4, 2 ], [ 6, 1, 4, 3 ], [ 6, 1, 4, 4 ], [ 6, 1, 4, 5 ], [ 6, 1, 4, 6 ], [ 6, 1, 4, 7 ], [ 6, 1, 4, 8 ], [ 6, 1, 4, 9 ], [ 6, 1, 4, 10 ], [ 6, 1, 4, 11 ], [ 6, 1, 4, 12 ], [ 6, 1, 4, 13 ], [ 6, 1, 4, 14 ], [ 6, 1, 4, 15 ], [ 6, 1, 4, 16 ], [ 6, 1, 4, 17 ], [ 6, 1, 4, 18 ], [ 6, 1, 4, 19 ], [ 6, 1, 4, 20 ], [ 6, 1, 5, 1 ], [ 6, 1, 5, 2 ], [ 6, 1, 5, 3 ], [ 6, 1, 5, 4 ], [ 6, 1, 5, 5 ], [ 6, 1, 5, 6 ], [ 6, 1, 5, 7 ], [ 6, 1, 5, 8 ], [ 6, 1, 5, 9 ], [ 6, 1, 5, 10 ], [ 6, 1, 5, 11 ], [ 6, 1, 5, 12 ], [ 6, 1, 5, 13 ], [ 6, 1, 5, 14 ], [ 6, 1, 5, 15 ], [ 6, 1, 5, 16 ], [ 6, 1, 5, 17 ], [ 6, 1, 5, 18 ], [ 6, 1, 5, 19 ], [ 6, 1, 5, 20 ], [ 6, 1, 5, 21 ], [ 6, 1, 5, 22 ], [ 6, 1, 5, 23 ], [ 6, 1, 5, 24 ], [ 6, 1, 5, 25 ], [ 6, 1, 5, 26 ], [ 6, 1, 5, 27 ], [ 6, 1, 5, 28 ], [ 6, 1, 5, 29 ], [ 6, 1, 5, 30 ], [ 6, 1, 5, 31 ], [ 6, 1, 5, 32 ], [ 6, 1, 5, 33 ], [ 6, 1, 5, 34 ], [ 6, 1, 5, 35 ], [ 6, 1, 5, 36 ], [ 6, 1, 6, 1 ], [ 6, 1, 6, 2 ], [ 6, 1, 6, 3 ], [ 6, 1, 6, 4 ], [ 6, 1, 6, 5 ], [ 6, 1, 6, 6 ], [ 6, 1, 6, 7 ], [ 6, 1, 6, 8 ], [ 6, 1, 6, 9 ], [ 6, 1, 6, 10 ], [ 6, 1, 6, 11 ], [ 6, 1, 6, 12 ], [ 6, 1, 6, 13 ], [ 6, 1, 6, 14 ], [ 6, 1, 6, 15 ], [ 6, 1, 6, 16 ], [ 6, 1, 7, 1 ], [ 6, 1, 7, 2 ], [ 6, 1, 7, 3 ], [ 6, 1, 7, 4 ], [ 6, 1, 7, 5 ], [ 6, 1, 7, 6 ], [ 6, 1, 8, 1 ], [ 6, 1, 8, 2 ], [ 6, 1, 8, 3 ], [ 6, 1, 8, 4 ], [ 6, 1, 8, 5 ], [ 6, 1, 8, 6 ], [ 6, 1, 8, 7 ], [ 6, 1, 8, 8 ], [ 6, 1, 9, 1 ], [ 6, 1, 9, 2 ], [ 6, 1, 9, 3 ], [ 6, 1, 9, 4 ], [ 6, 1, 9, 5 ], [ 6, 1, 9, 6 ], [ 6, 1, 9, 7 ], [ 6, 1, 9, 8 ], [ 6, 1, 9, 9 ], [ 6, 1, 9, 10 ], [ 6, 1, 9, 11 ], [ 6, 1, 9, 12 ], [ 6, 1, 10, 1 ], [ 6, 1, 10, 2 ], [ 6, 1, 10, 3 ], [ 6, 1, 10, 4 ], [ 6, 1, 10, 5 ], [ 6, 1, 10, 6 ], [ 6, 1, 11, 1 ], [ 6, 1, 11, 2 ], [ 6, 1, 11, 3 ], [ 6, 1, 11, 4 ], [ 6, 1, 11, 5 ], [ 6, 1, 11, 6 ], [ 6, 1, 12, 1 ], [ 6, 1, 12, 2 ], [ 6, 1, 12, 3 ], [ 6, 1, 12, 4 ], [ 6, 2, 1, 1 ], [ 6, 2, 1, 2 ], [ 6, 2, 1, 3 ], [ 6, 2, 1, 4 ], [ 6, 2, 1, 5 ], [ 6, 2, 1, 6 ], [ 6, 2, 1, 7 ], [ 6, 2, 1, 8 ], [ 6, 2, 1, 9 ], [ 6, 2, 1, 10 ], [ 6, 2, 1, 11 ], [ 6, 2, 1, 12 ], [ 6, 2, 1, 13 ], [ 6, 2, 1, 14 ], [ 6, 2, 1, 15 ], [ 6, 2, 1, 16 ], [ 6, 2, 1, 17 ], [ 6, 2, 1, 18 ], [ 6, 2, 1, 19 ], [ 6, 2, 1, 20 ], [ 6, 2, 1, 21 ], [ 6, 2, 1, 22 ], [ 6, 2, 1, 23 ], [ 6, 2, 1, 24 ], [ 6, 2, 1, 25 ], [ 6, 2, 1, 26 ], [ 6, 2, 1, 27 ], [ 6, 2, 1, 28 ], [ 6, 2, 1, 29 ], [ 6, 2, 1, 30 ], [ 6, 2, 1, 31 ], [ 6, 2, 1, 32 ], [ 6, 2, 1, 33 ], [ 6, 2, 1, 34 ], [ 6, 2, 1, 35 ], [ 6, 2, 1, 36 ], [ 6, 2, 1, 37 ], [ 6, 2, 1, 38 ], [ 6, 2, 1, 39 ], [ 6, 2, 1, 40 ], [ 6, 2, 1, 41 ], [ 6, 2, 1, 42 ], [ 6, 2, 1, 43 ], [ 6, 2, 1, 44 ], [ 6, 2, 1, 45 ], [ 6, 2, 1, 46 ], [ 6, 2, 1, 47 ], [ 6, 2, 1, 48 ], [ 6, 2, 1, 49 ], [ 6, 2, 1, 50 ], [ 6, 2, 1, 51 ], [ 6, 2, 1, 52 ], [ 6, 2, 1, 53 ], [ 6, 2, 1, 54 ], [ 6, 2, 1, 55 ], [ 6, 2, 1, 56 ], [ 6, 2, 1, 57 ], [ 6, 2, 1, 58 ], [ 6, 2, 1, 59 ], [ 6, 2, 1, 60 ], [ 6, 2, 2, 1 ], [ 6, 2, 2, 2 ], [ 6, 2, 2, 3 ], [ 6, 2, 2, 4 ], [ 6, 2, 2, 5 ], [ 6, 2, 2, 6 ], [ 6, 2, 2, 7 ], [ 6, 2, 2, 8 ], [ 6, 2, 2, 9 ], [ 6, 2, 2, 10 ], [ 6, 2, 2, 11 ], [ 6, 2, 2, 12 ], [ 6, 2, 2, 13 ], [ 6, 2, 2, 14 ], [ 6, 2, 2, 15 ], [ 6, 2, 2, 16 ], [ 6, 2, 2, 17 ], [ 6, 2, 2, 18 ], [ 6, 2, 2, 19 ], [ 6, 2, 2, 20 ], [ 6, 2, 3, 1 ], [ 6, 2, 3, 2 ], [ 6, 2, 3, 3 ], [ 6, 2, 3, 4 ], [ 6, 2, 3, 5 ], [ 6, 2, 3, 6 ], [ 6, 2, 3, 7 ], [ 6, 2, 3, 8 ], [ 6, 2, 3, 9 ], [ 6, 2, 3, 10 ], [ 6, 2, 3, 11 ], [ 6, 2, 3, 12 ], [ 6, 2, 3, 13 ], [ 6, 2, 3, 14 ], [ 6, 2, 3, 15 ], [ 6, 2, 3, 16 ], [ 6, 2, 3, 17 ], [ 6, 2, 3, 18 ], [ 6, 2, 3, 19 ], [ 6, 2, 3, 20 ], [ 6, 2, 3, 21 ], [ 6, 2, 3, 22 ], [ 6, 2, 3, 23 ], [ 6, 2, 3, 24 ], [ 6, 2, 4, 1 ], [ 6, 2, 4, 2 ], [ 6, 2, 4, 3 ], [ 6, 2, 4, 4 ], [ 6, 2, 4, 5 ], [ 6, 2, 4, 6 ], [ 6, 2, 4, 7 ], [ 6, 2, 4, 8 ], [ 6, 2, 4, 9 ], [ 6, 2, 4, 10 ], [ 6, 2, 4, 11 ], [ 6, 2, 4, 12 ], [ 6, 2, 4, 13 ], [ 6, 2, 4, 14 ], [ 6, 2, 4, 15 ], [ 6, 2, 4, 16 ], [ 6, 2, 4, 17 ], [ 6, 2, 4, 18 ], [ 6, 2, 4, 19 ], [ 6, 2, 4, 20 ], [ 6, 2, 4, 21 ], [ 6, 2, 4, 22 ], [ 6, 2, 4, 23 ], [ 6, 2, 4, 24 ], [ 6, 2, 5, 1 ], [ 6, 2, 5, 2 ], [ 6, 2, 5, 3 ], [ 6, 2, 5, 4 ], [ 6, 2, 5, 5 ], [ 6, 2, 5, 6 ], [ 6, 2, 5, 7 ], [ 6, 2, 5, 8 ], [ 6, 2, 5, 9 ], [ 6, 2, 5, 10 ], [ 6, 2, 6, 1 ], [ 6, 2, 6, 2 ], [ 6, 2, 6, 3 ], [ 6, 2, 6, 4 ], [ 6, 2, 6, 5 ], [ 6, 2, 6, 6 ], [ 6, 2, 6, 7 ], [ 6, 2, 6, 8 ], [ 6, 2, 6, 9 ], [ 6, 2, 6, 10 ], [ 6, 2, 7, 1 ], [ 6, 2, 7, 2 ], [ 6, 2, 7, 3 ], [ 6, 2, 7, 4 ], [ 6, 2, 8, 1 ], [ 6, 2, 8, 2 ], [ 6, 2, 8, 3 ], [ 6, 2, 8, 4 ], [ 6, 2, 8, 5 ], [ 6, 2, 8, 6 ], [ 6, 2, 8, 7 ], [ 6, 2, 8, 8 ], [ 6, 2, 9, 1 ], [ 6, 2, 9, 2 ], [ 6, 2, 9, 3 ], [ 6, 2, 9, 4 ], [ 6, 2, 10, 1 ], [ 6, 2, 10, 2 ], [ 6, 2, 10, 3 ], [ 6, 2, 10, 4 ], [ 6, 2, 11, 1 ], [ 6, 2, 11, 2 ], [ 6, 2, 11, 3 ], [ 6, 2, 11, 4 ], [ 6, 2, 12, 1 ], [ 6, 2, 12, 2 ], [ 6, 3, 1, 1 ], [ 6, 3, 1, 2 ], [ 6, 3, 1, 3 ], [ 6, 3, 1, 4 ], [ 6, 3, 1, 5 ], [ 6, 3, 1, 6 ], [ 6, 3, 1, 7 ], [ 6, 3, 1, 8 ], [ 6, 3, 1, 9 ], [ 6, 3, 1, 10 ], [ 6, 3, 1, 11 ], [ 6, 3, 1, 12 ], [ 6, 3, 1, 13 ], [ 6, 3, 1, 14 ], [ 6, 3, 1, 15 ], [ 6, 3, 1, 16 ], [ 6, 3, 1, 17 ], [ 6, 3, 1, 18 ], [ 6, 3, 1, 19 ], [ 6, 3, 1, 20 ], [ 6, 3, 1, 21 ], [ 6, 3, 1, 22 ], [ 6, 3, 1, 23 ], [ 6, 3, 1, 24 ], [ 6, 3, 1, 25 ], [ 6, 3, 1, 26 ], [ 6, 3, 1, 27 ], [ 6, 3, 1, 28 ], [ 6, 3, 1, 29 ], [ 6, 3, 1, 30 ], [ 6, 3, 1, 31 ], [ 6, 3, 1, 32 ], [ 6, 3, 1, 33 ], [ 6, 3, 1, 34 ], [ 6, 3, 1, 35 ], [ 6, 3, 1, 36 ], [ 6, 3, 1, 37 ], [ 6, 3, 1, 38 ], [ 6, 3, 1, 39 ], [ 6, 3, 1, 40 ], [ 6, 3, 1, 41 ], [ 6, 3, 1, 42 ], [ 6, 3, 1, 43 ], [ 6, 3, 1, 44 ], [ 6, 3, 1, 45 ], [ 6, 3, 1, 46 ], [ 6, 3, 1, 47 ], [ 6, 3, 1, 48 ], [ 6, 3, 1, 49 ], [ 6, 3, 1, 50 ], [ 6, 3, 1, 51 ], [ 6, 3, 1, 52 ], [ 6, 3, 1, 53 ], [ 6, 3, 1, 54 ], [ 6, 3, 1, 55 ], [ 6, 3, 1, 56 ], [ 6, 3, 1, 57 ], [ 6, 3, 1, 58 ], [ 6, 3, 1, 59 ], [ 6, 3, 1, 60 ], [ 6, 3, 1, 61 ], [ 6, 3, 1, 62 ], [ 6, 3, 1, 63 ], [ 6, 3, 1, 64 ], [ 6, 3, 1, 65 ], [ 6, 3, 1, 66 ], [ 6, 3, 1, 67 ], [ 6, 3, 1, 68 ], [ 6, 3, 1, 69 ], [ 6, 3, 1, 70 ], [ 6, 3, 1, 71 ], [ 6, 3, 1, 72 ], [ 6, 3, 1, 73 ], [ 6, 3, 1, 74 ], [ 6, 3, 1, 75 ], [ 6, 3, 1, 76 ], [ 6, 3, 1, 77 ], [ 6, 3, 1, 78 ], [ 6, 3, 1, 79 ], [ 6, 3, 1, 80 ], [ 6, 3, 1, 81 ], [ 6, 3, 1, 82 ], [ 6, 3, 1, 83 ], [ 6, 3, 1, 84 ], [ 6, 3, 1, 85 ], [ 6, 3, 1, 86 ], [ 6, 3, 1, 87 ], [ 6, 3, 1, 88 ], [ 6, 3, 1, 89 ], [ 6, 3, 1, 90 ], [ 6, 3, 1, 91 ], [ 6, 3, 1, 92 ], [ 6, 3, 1, 93 ], [ 6, 3, 1, 94 ], [ 6, 3, 1, 95 ], [ 6, 3, 1, 96 ], [ 6, 3, 1, 97 ], [ 6, 3, 1, 98 ], [ 6, 3, 1, 99 ], [ 6, 3, 1, 100 ], [ 6, 3, 1, 101 ], [ 6, 3, 1, 102 ], [ 6, 3, 1, 103 ], [ 6, 3, 1, 104 ], [ 6, 3, 1, 105 ], [ 6, 3, 1, 106 ], [ 6, 3, 1, 107 ], [ 6, 3, 1, 108 ], [ 6, 3, 1, 109 ], [ 6, 3, 1, 110 ], [ 6, 3, 1, 111 ], [ 6, 3, 1, 112 ], [ 6, 3, 1, 113 ], [ 6, 3, 1, 114 ], [ 6, 3, 1, 115 ], [ 6, 3, 1, 116 ], [ 6, 3, 1, 117 ], [ 6, 3, 1, 118 ], [ 6, 3, 1, 119 ], [ 6, 3, 1, 120 ], [ 6, 3, 1, 121 ], [ 6, 3, 1, 122 ], [ 6, 3, 1, 123 ], [ 6, 3, 1, 124 ], [ 6, 3, 1, 125 ], [ 6, 3, 1, 126 ], [ 6, 3, 1, 127 ], [ 6, 3, 1, 128 ], [ 6, 3, 1, 129 ], [ 6, 3, 1, 130 ], [ 6, 3, 1, 131 ], [ 6, 3, 1, 132 ], [ 6, 3, 1, 133 ], [ 6, 3, 1, 134 ], [ 6, 3, 1, 135 ], [ 6, 3, 1, 136 ], [ 6, 3, 1, 137 ], [ 6, 3, 1, 138 ], [ 6, 3, 1, 139 ], [ 6, 3, 1, 140 ], [ 6, 3, 1, 141 ], [ 6, 3, 1, 142 ], [ 6, 3, 1, 143 ], [ 6, 3, 1, 144 ], [ 6, 3, 1, 145 ], [ 6, 3, 1, 146 ], [ 6, 3, 1, 147 ], [ 6, 3, 1, 148 ], [ 6, 3, 1, 149 ], [ 6, 3, 1, 150 ], [ 6, 3, 1, 151 ], [ 6, 3, 1, 152 ], [ 6, 3, 1, 153 ], [ 6, 3, 1, 154 ], [ 6, 3, 1, 155 ], [ 6, 3, 1, 156 ], [ 6, 3, 1, 157 ], [ 6, 3, 1, 158 ], [ 6, 3, 1, 159 ], [ 6, 3, 1, 160 ], [ 6, 3, 1, 161 ], [ 6, 3, 1, 162 ], [ 6, 3, 1, 163 ], [ 6, 3, 1, 164 ], [ 6, 3, 1, 165 ], [ 6, 3, 1, 166 ], [ 6, 3, 1, 167 ], [ 6, 3, 1, 168 ], [ 6, 3, 1, 169 ], [ 6, 3, 1, 170 ], [ 6, 3, 1, 171 ], [ 6, 3, 1, 172 ], [ 6, 3, 1, 173 ], [ 6, 3, 1, 174 ], [ 6, 3, 1, 175 ], [ 6, 3, 1, 176 ], [ 6, 3, 1, 177 ], [ 6, 3, 1, 178 ], [ 6, 3, 1, 179 ], [ 6, 3, 1, 180 ], [ 6, 3, 1, 181 ], [ 6, 3, 1, 182 ], [ 6, 3, 1, 183 ], [ 6, 3, 1, 184 ], [ 6, 3, 1, 185 ], [ 6, 3, 1, 186 ], [ 6, 3, 1, 187 ], [ 6, 3, 1, 188 ], [ 6, 3, 1, 189 ], [ 6, 3, 1, 190 ], [ 6, 3, 1, 191 ], [ 6, 3, 1, 192 ], [ 6, 3, 1, 193 ], [ 6, 3, 1, 194 ], [ 6, 3, 1, 195 ], [ 6, 3, 1, 196 ], [ 6, 3, 1, 197 ], [ 6, 3, 1, 198 ], [ 6, 3, 1, 199 ], [ 6, 3, 1, 200 ], [ 6, 3, 1, 201 ], [ 6, 3, 1, 202 ], [ 6, 3, 1, 203 ], [ 6, 3, 1, 204 ], [ 6, 3, 1, 205 ], [ 6, 3, 1, 206 ], [ 6, 3, 1, 207 ], [ 6, 3, 1, 208 ], [ 6, 3, 1, 209 ], [ 6, 3, 1, 210 ], [ 6, 3, 1, 211 ], [ 6, 3, 1, 212 ], [ 6, 3, 1, 213 ], [ 6, 3, 1, 214 ], [ 6, 3, 1, 215 ], [ 6, 3, 1, 216 ], [ 6, 3, 1, 217 ], [ 6, 3, 1, 218 ], [ 6, 3, 2, 1 ], [ 6, 3, 2, 2 ], [ 6, 3, 2, 3 ], [ 6, 3, 2, 4 ], [ 6, 3, 2, 5 ], [ 6, 3, 2, 6 ], [ 6, 3, 2, 7 ], [ 6, 3, 2, 8 ], [ 6, 3, 2, 9 ], [ 6, 3, 2, 10 ], [ 6, 3, 2, 11 ], [ 6, 3, 2, 12 ], [ 6, 3, 2, 13 ], [ 6, 3, 2, 14 ], [ 6, 3, 2, 15 ], [ 6, 3, 2, 16 ], [ 6, 3, 2, 17 ], [ 6, 3, 2, 18 ], [ 6, 3, 2, 19 ], [ 6, 3, 2, 20 ], [ 6, 3, 2, 21 ], [ 6, 3, 2, 22 ], [ 6, 3, 2, 23 ], [ 6, 3, 2, 24 ], [ 6, 3, 2, 25 ], [ 6, 3, 2, 26 ], [ 6, 3, 2, 27 ], [ 6, 3, 2, 28 ], [ 6, 3, 2, 29 ], [ 6, 3, 2, 30 ], [ 6, 3, 2, 31 ], [ 6, 3, 2, 32 ], [ 6, 3, 2, 33 ], [ 6, 3, 2, 34 ], [ 6, 3, 2, 35 ], [ 6, 3, 2, 36 ], [ 6, 3, 2, 37 ], [ 6, 3, 2, 38 ], [ 6, 3, 2, 39 ], [ 6, 3, 2, 40 ], [ 6, 3, 2, 41 ], [ 6, 3, 2, 42 ], [ 6, 3, 2, 43 ], [ 6, 3, 2, 44 ], [ 6, 3, 2, 45 ], [ 6, 3, 2, 46 ], [ 6, 3, 2, 47 ], [ 6, 3, 2, 48 ], [ 6, 3, 2, 49 ], [ 6, 3, 2, 50 ], [ 6, 3, 2, 51 ], [ 6, 3, 2, 52 ], [ 6, 3, 2, 53 ], [ 6, 3, 2, 54 ], [ 6, 3, 2, 55 ], [ 6, 3, 2, 56 ], [ 6, 3, 2, 57 ], [ 6, 3, 2, 58 ], [ 6, 3, 2, 59 ], [ 6, 3, 2, 60 ], [ 6, 3, 2, 61 ], [ 6, 3, 2, 62 ], [ 6, 3, 2, 63 ], [ 6, 3, 2, 64 ], [ 6, 3, 2, 65 ], [ 6, 3, 2, 66 ], [ 6, 3, 2, 67 ], [ 6, 3, 2, 68 ], [ 6, 3, 2, 69 ], [ 6, 3, 2, 70 ], [ 6, 3, 2, 71 ], [ 6, 3, 2, 72 ], [ 6, 3, 2, 73 ], [ 6, 3, 2, 74 ], [ 6, 3, 2, 75 ], [ 6, 3, 2, 76 ], [ 6, 3, 2, 77 ], [ 6, 3, 2, 78 ], [ 6, 3, 2, 79 ], [ 6, 3, 2, 80 ], [ 6, 3, 2, 81 ], [ 6, 3, 2, 82 ], [ 6, 3, 2, 83 ], [ 6, 3, 2, 84 ], [ 6, 3, 2, 85 ], [ 6, 3, 2, 86 ], [ 6, 3, 2, 87 ], [ 6, 3, 2, 88 ], [ 6, 3, 3, 1 ], [ 6, 3, 3, 2 ], [ 6, 3, 3, 3 ], [ 6, 3, 3, 4 ], [ 6, 3, 3, 5 ], [ 6, 3, 3, 6 ], [ 6, 3, 3, 7 ], [ 6, 3, 3, 8 ], [ 6, 3, 3, 9 ], [ 6, 3, 3, 10 ], [ 6, 3, 3, 11 ], [ 6, 3, 3, 12 ], [ 6, 3, 3, 13 ], [ 6, 3, 3, 14 ], [ 6, 3, 3, 15 ], [ 6, 3, 3, 16 ], [ 6, 3, 3, 17 ], [ 6, 3, 3, 18 ], [ 6, 3, 3, 19 ], [ 6, 3, 3, 20 ], [ 6, 3, 3, 21 ], [ 6, 3, 3, 22 ], [ 6, 3, 3, 23 ], [ 6, 3, 3, 24 ], [ 6, 3, 3, 25 ], [ 6, 3, 3, 26 ], [ 6, 3, 3, 27 ], [ 6, 3, 3, 28 ], [ 6, 3, 3, 29 ], [ 6, 3, 3, 30 ], [ 6, 3, 3, 31 ], [ 6, 3, 3, 32 ], [ 6, 3, 3, 33 ], [ 6, 3, 3, 34 ], [ 6, 3, 3, 35 ], [ 6, 3, 3, 36 ], [ 6, 3, 3, 37 ], [ 6, 3, 3, 38 ], [ 6, 3, 3, 39 ], [ 6, 3, 3, 40 ], [ 6, 3, 3, 41 ], [ 6, 3, 3, 42 ], [ 6, 3, 3, 43 ], [ 6, 3, 3, 44 ], [ 6, 3, 3, 45 ], [ 6, 3, 3, 46 ], [ 6, 3, 3, 47 ], [ 6, 3, 3, 48 ], [ 6, 3, 3, 49 ], [ 6, 3, 3, 50 ], [ 6, 3, 3, 51 ], [ 6, 3, 3, 52 ], [ 6, 3, 3, 53 ], [ 6, 3, 3, 54 ], [ 6, 3, 3, 55 ], [ 6, 3, 3, 56 ], [ 6, 3, 3, 57 ], [ 6, 3, 3, 58 ], [ 6, 3, 3, 59 ], [ 6, 3, 3, 60 ], [ 6, 3, 4, 1 ], [ 6, 3, 4, 2 ], [ 6, 3, 4, 3 ], [ 6, 3, 4, 4 ], [ 6, 3, 4, 5 ], [ 6, 3, 4, 6 ], [ 6, 3, 4, 7 ], [ 6, 3, 4, 8 ], [ 6, 3, 4, 9 ], [ 6, 3, 4, 10 ], [ 6, 3, 4, 11 ], [ 6, 3, 4, 12 ], [ 6, 3, 4, 13 ], [ 6, 3, 4, 14 ], [ 6, 3, 4, 15 ], [ 6, 3, 4, 16 ], [ 6, 3, 4, 17 ], [ 6, 3, 4, 18 ], [ 6, 3, 4, 19 ], [ 6, 3, 5, 1 ], [ 6, 3, 5, 2 ], [ 6, 3, 5, 3 ], [ 6, 3, 5, 4 ], [ 6, 3, 5, 5 ], [ 6, 3, 5, 6 ], [ 6, 3, 6, 1 ], [ 6, 3, 6, 2 ], [ 6, 3, 6, 3 ], [ 6, 3, 6, 4 ], [ 6, 3, 6, 5 ], [ 6, 3, 6, 6 ], [ 6, 3, 6, 7 ], [ 6, 3, 6, 8 ], [ 6, 3, 6, 9 ], [ 6, 3, 6, 10 ], [ 6, 3, 6, 11 ], [ 6, 3, 6, 12 ], [ 6, 3, 6, 13 ], [ 6, 3, 6, 14 ], [ 6, 3, 6, 15 ], [ 6, 3, 6, 16 ], [ 6, 3, 7, 1 ], [ 6, 3, 7, 2 ], [ 6, 3, 7, 3 ], [ 6, 3, 7, 4 ], [ 6, 3, 7, 5 ], [ 6, 3, 7, 6 ], [ 6, 3, 7, 7 ], [ 6, 3, 7, 8 ], [ 6, 3, 7, 9 ], [ 6, 3, 8, 1 ], [ 6, 3, 8, 2 ], [ 6, 3, 8, 3 ], [ 7, 1, 1, 1 ], [ 7, 1, 2, 1 ], [ 7, 2, 1, 1 ], [ 7, 2, 1, 2 ], [ 7, 2, 1, 3 ], [ 7, 2, 2, 1 ], [ 7, 2, 2, 2 ], [ 7, 2, 2, 3 ], [ 7, 2, 2, 4 ], [ 7, 3, 1, 1 ], [ 7, 3, 1, 2 ], [ 7, 3, 1, 3 ], [ 7, 3, 1, 4 ], [ 7, 3, 2, 1 ], [ 7, 3, 2, 2 ], [ 7, 3, 2, 3 ], [ 7, 4, 1, 1 ], [ 7, 4, 1, 2 ], [ 7, 4, 1, 3 ], [ 7, 4, 1, 4 ], [ 7, 4, 2, 1 ], [ 7, 4, 2, 2 ], [ 7, 4, 2, 3 ], [ 7, 4, 2, 4 ], [ 7, 4, 3, 1 ], [ 7, 4, 3, 2 ], [ 7, 4, 3, 3 ], [ 7, 4, 4, 1 ], [ 7, 4, 4, 2 ], [ 7, 4, 4, 3 ], [ 7, 5, 1, 1 ], [ 7, 5, 1, 2 ], [ 7, 5, 1, 3 ], [ 7, 5, 1, 4 ], [ 7, 5, 1, 5 ], [ 7, 5, 1, 6 ], [ 7, 5, 2, 1 ], [ 7, 5, 2, 2 ], [ 7, 5, 2, 3 ], [ 7, 5, 2, 4 ], [ 7, 6, 1, 1 ], [ 7, 6, 1, 2 ], [ 7, 6, 1, 3 ], [ 7, 6, 1, 4 ], [ 7, 6, 1, 5 ], [ 7, 6, 1, 6 ], [ 7, 6, 1, 7 ], [ 7, 6, 1, 8 ], [ 7, 6, 1, 9 ], [ 7, 6, 1, 10 ], [ 7, 6, 2, 1 ], [ 7, 6, 2, 2 ], [ 7, 6, 2, 3 ], [ 7, 6, 2, 4 ], [ 7, 6, 2, 5 ], [ 7, 6, 2, 6 ], [ 7, 6, 2, 7 ], [ 7, 6, 2, 8 ], [ 7, 6, 2, 9 ], [ 7, 7, 1, 1 ], [ 7, 7, 1, 2 ], [ 7, 7, 1, 3 ], [ 7, 7, 1, 4 ], [ 7, 7, 1, 5 ], [ 7, 7, 1, 6 ], [ 7, 7, 1, 7 ], [ 7, 7, 1, 8 ], [ 7, 7, 1, 9 ], [ 7, 7, 1, 10 ], [ 7, 7, 1, 11 ], [ 7, 7, 1, 12 ], [ 7, 7, 1, 13 ], [ 7, 7, 1, 14 ], [ 7, 7, 1, 15 ], [ 7, 7, 1, 16 ], [ 7, 7, 1, 17 ], [ 7, 7, 1, 18 ], [ 7, 7, 1, 19 ], [ 7, 7, 1, 20 ], [ 7, 7, 2, 1 ], [ 7, 7, 2, 2 ], [ 7, 7, 2, 3 ], [ 7, 7, 2, 4 ], [ 7, 7, 2, 5 ], [ 7, 7, 2, 6 ], [ 7, 7, 2, 7 ], [ 7, 7, 2, 8 ], [ 7, 7, 2, 9 ], [ 8, 1, 1, 1 ], [ 8, 1, 1, 2 ], [ 8, 1, 2, 1 ], [ 8, 1, 2, 2 ], [ 8, 2, 1, 1 ], [ 8, 2, 2, 1 ], [ 8, 3, 1, 1 ], [ 8, 3, 1, 2 ], [ 8, 3, 2, 1 ], [ 8, 3, 2, 2 ], [ 8, 3, 3, 1 ], [ 8, 3, 3, 2 ], [ 8, 4, 1, 1 ], [ 8, 4, 1, 2 ], [ 8, 4, 2, 1 ], [ 8, 4, 2, 2 ], [ 8, 4, 3, 1 ], [ 8, 4, 3, 2 ], [ 8, 5, 1, 1 ], [ 8, 5, 1, 2 ], [ 8, 5, 2, 1 ], [ 8, 5, 2, 2 ], [ 8, 5, 3, 1 ], [ 8, 5, 3, 2 ], [ 9, 1, 1, 1 ], [ 9, 1, 1, 2 ], [ 9, 1, 1, 3 ], [ 9, 1, 1, 4 ], [ 9, 2, 1, 1 ], [ 9, 3, 1, 1 ], [ 9, 3, 1, 2 ], [ 9, 4, 1, 1 ], [ 9, 4, 1, 2 ], [ 9, 4, 1, 3 ], [ 9, 4, 1, 4 ], [ 9, 4, 1, 5 ], [ 9, 5, 1, 1 ], [ 9, 5, 1, 2 ], [ 9, 5, 1, 3 ], [ 9, 5, 1, 4 ], [ 9, 6, 1, 1 ], [ 9, 6, 1, 2 ], [ 9, 6, 2, 1 ], [ 9, 6, 2, 2 ], [ 9, 7, 1, 1 ], [ 9, 7, 1, 2 ], [ 9, 7, 1, 3 ], [ 9, 7, 1, 4 ], [ 9, 7, 1, 5 ], [ 10, 1, 1, 1 ], [ 11, 1, 1, 1 ], [ 11, 2, 1, 1 ], [ 12, 1, 1, 1 ], [ 12, 1, 2, 1 ], [ 12, 1, 2, 2 ], [ 12, 1, 2, 3 ], [ 12, 1, 3, 1 ], [ 12, 1, 3, 2 ], [ 12, 1, 4, 1 ], [ 12, 1, 4, 2 ], [ 12, 1, 4, 3 ], [ 12, 1, 5, 1 ], [ 12, 1, 5, 2 ], [ 12, 1, 6, 1 ], [ 12, 1, 6, 2 ], [ 12, 1, 7, 1 ], [ 12, 1, 7, 2 ], [ 12, 2, 1, 1 ], [ 12, 2, 2, 1 ], [ 12, 2, 2, 2 ], [ 12, 2, 2, 3 ], [ 12, 2, 2, 4 ], [ 12, 2, 2, 5 ], [ 12, 2, 2, 6 ], [ 12, 2, 3, 1 ], [ 12, 2, 3, 2 ], [ 12, 2, 3, 3 ], [ 12, 2, 3, 4 ], [ 12, 2, 4, 1 ], [ 12, 2, 4, 2 ], [ 12, 2, 4, 3 ], [ 12, 2, 4, 4 ], [ 12, 2, 5, 1 ], [ 12, 2, 5, 2 ], [ 12, 2, 5, 3 ], [ 12, 2, 6, 1 ], [ 12, 2, 6, 2 ], [ 12, 2, 6, 3 ], [ 12, 3, 1, 1 ], [ 12, 3, 1, 2 ], [ 12, 3, 2, 1 ], [ 12, 3, 2, 2 ], [ 12, 3, 2, 3 ], [ 12, 3, 2, 4 ], [ 12, 3, 2, 5 ], [ 12, 3, 2, 6 ], [ 12, 3, 2, 7 ], [ 12, 3, 2, 8 ], [ 12, 3, 2, 9 ], [ 12, 3, 2, 10 ], [ 12, 3, 2, 11 ], [ 12, 3, 2, 12 ], [ 12, 3, 2, 13 ], [ 12, 3, 2, 14 ], [ 12, 3, 2, 15 ], [ 12, 3, 2, 16 ], [ 12, 3, 3, 1 ], [ 12, 3, 3, 2 ], [ 12, 3, 3, 3 ], [ 12, 3, 3, 4 ], [ 12, 3, 3, 5 ], [ 12, 3, 3, 6 ], [ 12, 3, 3, 7 ], [ 12, 3, 3, 8 ], [ 12, 3, 3, 9 ], [ 12, 3, 3, 10 ], [ 12, 3, 3, 11 ], [ 12, 3, 3, 12 ], [ 12, 3, 3, 13 ], [ 12, 3, 3, 14 ], [ 12, 3, 3, 15 ], [ 12, 3, 3, 16 ], [ 12, 3, 4, 1 ], [ 12, 3, 4, 2 ], [ 12, 3, 4, 3 ], [ 12, 3, 4, 4 ], [ 12, 3, 4, 5 ], [ 12, 3, 4, 6 ], [ 12, 3, 5, 1 ], [ 12, 3, 5, 2 ], [ 12, 3, 5, 3 ], [ 12, 3, 5, 4 ], [ 12, 3, 5, 5 ], [ 12, 3, 5, 6 ], [ 12, 3, 6, 1 ], [ 12, 3, 6, 2 ], [ 12, 3, 6, 3 ], [ 12, 3, 6, 4 ], [ 12, 3, 6, 5 ], [ 12, 3, 6, 6 ], [ 12, 3, 6, 7 ], [ 12, 3, 6, 8 ], [ 12, 3, 7, 1 ], [ 12, 3, 7, 2 ], [ 12, 3, 7, 3 ], [ 12, 3, 7, 4 ], [ 12, 3, 7, 5 ], [ 12, 3, 7, 6 ], [ 12, 3, 7, 7 ], [ 12, 3, 7, 8 ], [ 12, 3, 8, 1 ], [ 12, 3, 8, 2 ], [ 12, 3, 8, 3 ], [ 12, 3, 8, 4 ], [ 12, 3, 8, 5 ], [ 12, 3, 8, 6 ], [ 12, 3, 8, 7 ], [ 12, 3, 8, 8 ], [ 12, 3, 9, 1 ], [ 12, 3, 9, 2 ], [ 12, 3, 9, 3 ], [ 12, 3, 9, 4 ], [ 12, 3, 9, 5 ], [ 12, 3, 9, 6 ], [ 12, 3, 9, 7 ], [ 12, 3, 9, 8 ], [ 12, 3, 10, 1 ], [ 12, 3, 10, 2 ], [ 12, 3, 10, 3 ], [ 12, 3, 10, 4 ], [ 12, 3, 10, 5 ], [ 12, 3, 10, 6 ], [ 12, 3, 11, 1 ], [ 12, 3, 11, 2 ], [ 12, 3, 11, 3 ], [ 12, 3, 11, 4 ], [ 12, 3, 12, 1 ], [ 12, 3, 12, 2 ], [ 12, 3, 12, 3 ], [ 12, 3, 12, 4 ], [ 12, 3, 13, 1 ], [ 12, 3, 13, 2 ], [ 12, 3, 13, 3 ], [ 12, 3, 13, 4 ], [ 12, 3, 13, 5 ], [ 12, 3, 13, 6 ], [ 12, 4, 1, 1 ], [ 12, 4, 2, 1 ], [ 12, 4, 2, 2 ], [ 12, 4, 2, 3 ], [ 12, 4, 2, 4 ], [ 12, 4, 2, 5 ], [ 12, 4, 2, 6 ], [ 12, 4, 2, 7 ], [ 12, 4, 2, 8 ], [ 12, 4, 2, 9 ], [ 12, 4, 2, 10 ], [ 12, 4, 2, 11 ], [ 12, 4, 2, 12 ], [ 12, 4, 3, 1 ], [ 12, 4, 3, 2 ], [ 12, 4, 3, 3 ], [ 12, 4, 3, 4 ], [ 12, 4, 3, 5 ], [ 12, 4, 3, 6 ], [ 12, 4, 3, 7 ], [ 12, 4, 3, 8 ], [ 12, 4, 3, 9 ], [ 12, 4, 3, 10 ], [ 12, 4, 3, 11 ], [ 12, 4, 3, 12 ], [ 12, 4, 4, 1 ], [ 12, 4, 4, 2 ], [ 12, 4, 4, 3 ], [ 12, 4, 4, 4 ], [ 12, 4, 5, 1 ], [ 12, 4, 5, 2 ], [ 12, 4, 5, 3 ], [ 12, 4, 5, 4 ], [ 12, 4, 6, 1 ], [ 12, 4, 6, 2 ], [ 12, 4, 6, 3 ], [ 12, 4, 6, 4 ], [ 12, 4, 6, 5 ], [ 12, 4, 6, 6 ], [ 12, 4, 7, 1 ], [ 12, 4, 7, 2 ], [ 12, 4, 7, 3 ], [ 12, 4, 7, 4 ], [ 12, 4, 7, 5 ], [ 12, 4, 7, 6 ], [ 12, 4, 8, 1 ], [ 12, 4, 8, 2 ], [ 12, 4, 8, 3 ], [ 12, 4, 8, 4 ], [ 12, 4, 9, 1 ], [ 12, 4, 9, 2 ], [ 12, 4, 9, 3 ], [ 12, 4, 9, 4 ], [ 12, 4, 10, 1 ], [ 12, 4, 10, 2 ], [ 12, 4, 10, 3 ], [ 12, 4, 10, 4 ], [ 12, 4, 11, 1 ], [ 12, 4, 11, 2 ], [ 12, 4, 11, 3 ], [ 12, 4, 12, 1 ], [ 12, 4, 12, 2 ], [ 12, 4, 13, 1 ], [ 12, 4, 13, 2 ], [ 12, 4, 13, 3 ], [ 12, 4, 13, 4 ], [ 12, 5, 1, 1 ], [ 12, 5, 1, 2 ], [ 12, 5, 2, 1 ], [ 12, 5, 2, 2 ], [ 12, 5, 2, 3 ], [ 12, 5, 2, 4 ], [ 12, 5, 2, 5 ], [ 12, 5, 2, 6 ], [ 12, 5, 2, 7 ], [ 12, 5, 2, 8 ], [ 12, 5, 2, 9 ], [ 12, 5, 2, 10 ], [ 12, 5, 2, 11 ], [ 12, 5, 2, 12 ], [ 12, 5, 2, 13 ], [ 12, 5, 2, 14 ], [ 12, 5, 2, 15 ], [ 12, 5, 2, 16 ], [ 12, 5, 2, 17 ], [ 12, 5, 2, 18 ], [ 12, 5, 2, 19 ], [ 12, 5, 2, 20 ], [ 12, 5, 2, 21 ], [ 12, 5, 2, 22 ], [ 12, 5, 2, 23 ], [ 12, 5, 2, 24 ], [ 12, 5, 2, 25 ], [ 12, 5, 2, 26 ], [ 12, 5, 2, 27 ], [ 12, 5, 2, 28 ], [ 12, 5, 2, 29 ], [ 12, 5, 2, 30 ], [ 12, 5, 2, 31 ], [ 12, 5, 2, 32 ], [ 12, 5, 2, 33 ], [ 12, 5, 2, 34 ], [ 12, 5, 2, 35 ], [ 12, 5, 2, 36 ], [ 12, 5, 3, 1 ], [ 12, 5, 3, 2 ], [ 12, 5, 3, 3 ], [ 12, 5, 3, 4 ], [ 12, 5, 3, 5 ], [ 12, 5, 3, 6 ], [ 12, 5, 3, 7 ], [ 12, 5, 3, 8 ], [ 12, 5, 3, 9 ], [ 12, 5, 3, 10 ], [ 12, 5, 3, 11 ], [ 12, 5, 3, 12 ], [ 12, 5, 3, 13 ], [ 12, 5, 3, 14 ], [ 12, 5, 3, 15 ], [ 12, 5, 3, 16 ], [ 12, 5, 3, 17 ], [ 12, 5, 3, 18 ], [ 12, 5, 3, 19 ], [ 12, 5, 3, 20 ], [ 12, 5, 3, 21 ], [ 12, 5, 3, 22 ], [ 12, 5, 3, 23 ], [ 12, 5, 3, 24 ], [ 12, 5, 3, 25 ], [ 12, 5, 3, 26 ], [ 12, 5, 3, 27 ], [ 12, 5, 3, 28 ], [ 12, 5, 3, 29 ], [ 12, 5, 3, 30 ], [ 12, 5, 3, 31 ], [ 12, 5, 3, 32 ], [ 12, 5, 3, 33 ], [ 12, 5, 3, 34 ], [ 12, 5, 3, 35 ], [ 12, 5, 3, 36 ], [ 12, 5, 3, 37 ], [ 12, 5, 3, 38 ], [ 12, 5, 3, 39 ], [ 12, 5, 3, 40 ], [ 12, 5, 4, 1 ], [ 12, 5, 4, 2 ], [ 12, 5, 4, 3 ], [ 12, 5, 4, 4 ], [ 12, 5, 4, 5 ], [ 12, 5, 4, 6 ], [ 12, 5, 4, 7 ], [ 12, 5, 4, 8 ], [ 12, 5, 4, 9 ], [ 12, 5, 4, 10 ], [ 12, 5, 4, 11 ], [ 12, 5, 4, 12 ], [ 12, 5, 5, 1 ], [ 12, 5, 5, 2 ], [ 12, 5, 5, 3 ], [ 12, 5, 5, 4 ], [ 12, 5, 5, 5 ], [ 12, 5, 5, 6 ], [ 12, 5, 5, 7 ], [ 12, 5, 5, 8 ], [ 12, 5, 5, 9 ], [ 12, 5, 6, 1 ], [ 12, 5, 6, 2 ], [ 12, 5, 6, 3 ], [ 12, 5, 6, 4 ], [ 12, 5, 6, 5 ], [ 12, 5, 6, 6 ], [ 12, 5, 6, 7 ], [ 12, 5, 6, 8 ], [ 12, 5, 6, 9 ], [ 12, 5, 6, 10 ], [ 12, 5, 6, 11 ], [ 12, 5, 6, 12 ], [ 12, 5, 6, 13 ], [ 12, 5, 6, 14 ], [ 12, 5, 6, 15 ], [ 12, 5, 6, 16 ], [ 12, 5, 7, 1 ], [ 12, 5, 7, 2 ], [ 12, 5, 7, 3 ], [ 12, 5, 7, 4 ], [ 12, 5, 7, 5 ], [ 12, 5, 7, 6 ], [ 12, 5, 7, 7 ], [ 12, 5, 7, 8 ], [ 12, 5, 7, 9 ], [ 12, 5, 7, 10 ], [ 12, 5, 7, 11 ], [ 12, 5, 7, 12 ], [ 12, 5, 7, 13 ], [ 12, 5, 7, 14 ], [ 12, 5, 7, 15 ], [ 12, 5, 7, 16 ], [ 12, 5, 8, 1 ], [ 12, 5, 8, 2 ], [ 12, 5, 8, 3 ], [ 12, 5, 8, 4 ], [ 12, 5, 8, 5 ], [ 12, 5, 8, 6 ], [ 12, 5, 8, 7 ], [ 12, 5, 8, 8 ], [ 12, 5, 8, 9 ], [ 12, 5, 9, 1 ], [ 12, 5, 9, 2 ], [ 12, 5, 9, 3 ], [ 12, 5, 9, 4 ], [ 12, 5, 9, 5 ], [ 12, 5, 9, 6 ], [ 12, 5, 10, 1 ], [ 12, 5, 10, 2 ], [ 12, 5, 10, 3 ], [ 12, 5, 11, 1 ], [ 12, 5, 11, 2 ], [ 12, 5, 11, 3 ], [ 12, 5, 11, 4 ], [ 12, 5, 11, 5 ], [ 12, 5, 11, 6 ], [ 12, 5, 11, 7 ], [ 12, 5, 11, 8 ], [ 12, 5, 11, 9 ], [ 13, 1, 1, 1 ], [ 13, 1, 1, 2 ], [ 13, 1, 1, 3 ], [ 13, 1, 1, 4 ], [ 13, 1, 1, 5 ], [ 13, 1, 1, 6 ], [ 13, 1, 1, 7 ], [ 13, 1, 1, 8 ], [ 13, 1, 1, 9 ], [ 13, 1, 1, 10 ], [ 13, 1, 1, 11 ], [ 13, 1, 1, 12 ], [ 13, 1, 1, 13 ], [ 13, 1, 1, 14 ], [ 13, 1, 1, 15 ], [ 13, 1, 1, 16 ], [ 13, 1, 1, 17 ], [ 13, 1, 1, 18 ], [ 13, 1, 1, 19 ], [ 13, 1, 1, 20 ], [ 13, 1, 1, 21 ], [ 13, 1, 1, 22 ], [ 13, 1, 1, 23 ], [ 13, 1, 1, 24 ], [ 13, 1, 2, 1 ], [ 13, 1, 2, 2 ], [ 13, 1, 2, 3 ], [ 13, 1, 2, 4 ], [ 13, 1, 2, 5 ], [ 13, 1, 2, 6 ], [ 13, 1, 3, 1 ], [ 13, 1, 3, 2 ], [ 13, 1, 3, 3 ], [ 13, 1, 3, 4 ], [ 13, 1, 3, 5 ], [ 13, 1, 3, 6 ], [ 13, 1, 3, 7 ], [ 13, 1, 3, 8 ], [ 13, 1, 3, 9 ], [ 13, 1, 3, 10 ], [ 13, 1, 3, 11 ], [ 13, 1, 3, 12 ], [ 13, 1, 4, 1 ], [ 13, 1, 4, 2 ], [ 13, 1, 4, 3 ], [ 13, 1, 4, 4 ], [ 13, 1, 4, 5 ], [ 13, 1, 4, 6 ], [ 13, 1, 4, 7 ], [ 13, 1, 4, 8 ], [ 13, 1, 5, 1 ], [ 13, 1, 5, 2 ], [ 13, 1, 5, 3 ], [ 13, 1, 5, 4 ], [ 13, 1, 5, 5 ], [ 13, 1, 5, 6 ], [ 13, 1, 6, 1 ], [ 13, 1, 6, 2 ], [ 13, 1, 6, 3 ], [ 13, 1, 6, 4 ], [ 13, 2, 1, 1 ], [ 13, 2, 1, 2 ], [ 13, 2, 1, 3 ], [ 13, 2, 1, 4 ], [ 13, 2, 1, 5 ], [ 13, 2, 1, 6 ], [ 13, 2, 1, 7 ], [ 13, 2, 1, 8 ], [ 13, 2, 2, 1 ], [ 13, 2, 2, 2 ], [ 13, 2, 3, 1 ], [ 13, 2, 3, 2 ], [ 13, 2, 3, 3 ], [ 13, 2, 3, 4 ], [ 13, 2, 4, 1 ], [ 13, 2, 4, 2 ], [ 13, 2, 4, 3 ], [ 13, 2, 4, 4 ], [ 13, 2, 5, 1 ], [ 13, 2, 5, 2 ], [ 13, 2, 6, 1 ], [ 13, 2, 6, 2 ], [ 13, 3, 1, 1 ], [ 13, 3, 1, 2 ], [ 13, 3, 1, 3 ], [ 13, 3, 1, 4 ], [ 13, 3, 1, 5 ], [ 13, 3, 1, 6 ], [ 13, 3, 1, 7 ], [ 13, 3, 1, 8 ], [ 13, 3, 2, 1 ], [ 13, 3, 2, 2 ], [ 13, 3, 3, 1 ], [ 13, 3, 3, 2 ], [ 13, 3, 3, 3 ], [ 13, 3, 3, 4 ], [ 13, 3, 4, 1 ], [ 13, 3, 4, 2 ], [ 13, 3, 4, 3 ], [ 13, 3, 4, 4 ], [ 13, 3, 5, 1 ], [ 13, 3, 5, 2 ], [ 13, 3, 6, 1 ], [ 13, 3, 6, 2 ], [ 13, 4, 1, 1 ], [ 13, 4, 1, 2 ], [ 13, 4, 1, 3 ], [ 13, 4, 1, 4 ], [ 13, 4, 1, 5 ], [ 13, 4, 1, 6 ], [ 13, 4, 1, 7 ], [ 13, 4, 1, 8 ], [ 13, 4, 1, 9 ], [ 13, 4, 1, 10 ], [ 13, 4, 1, 11 ], [ 13, 4, 1, 12 ], [ 13, 4, 1, 13 ], [ 13, 4, 1, 14 ], [ 13, 4, 1, 15 ], [ 13, 4, 1, 16 ], [ 13, 4, 1, 17 ], [ 13, 4, 1, 18 ], [ 13, 4, 1, 19 ], [ 13, 4, 1, 20 ], [ 13, 4, 1, 21 ], [ 13, 4, 1, 22 ], [ 13, 4, 1, 23 ], [ 13, 4, 1, 24 ], [ 13, 4, 2, 1 ], [ 13, 4, 2, 2 ], [ 13, 4, 2, 3 ], [ 13, 4, 2, 4 ], [ 13, 4, 2, 5 ], [ 13, 4, 2, 6 ], [ 13, 4, 3, 1 ], [ 13, 4, 3, 2 ], [ 13, 4, 3, 3 ], [ 13, 4, 3, 4 ], [ 13, 4, 3, 5 ], [ 13, 4, 3, 6 ], [ 13, 4, 3, 7 ], [ 13, 4, 3, 8 ], [ 13, 4, 4, 1 ], [ 13, 4, 4, 2 ], [ 13, 4, 4, 3 ], [ 13, 4, 4, 4 ], [ 13, 4, 4, 5 ], [ 13, 4, 4, 6 ], [ 13, 4, 4, 7 ], [ 13, 4, 4, 8 ], [ 13, 4, 4, 9 ], [ 13, 4, 4, 10 ], [ 13, 4, 4, 11 ], [ 13, 4, 4, 12 ], [ 13, 4, 5, 1 ], [ 13, 4, 5, 2 ], [ 13, 4, 5, 3 ], [ 13, 4, 5, 4 ], [ 13, 4, 5, 5 ], [ 13, 4, 5, 6 ], [ 13, 4, 6, 1 ], [ 13, 4, 6, 2 ], [ 13, 4, 6, 3 ], [ 13, 4, 6, 4 ], [ 13, 5, 1, 1 ], [ 13, 5, 1, 2 ], [ 13, 5, 1, 3 ], [ 13, 5, 1, 4 ], [ 13, 5, 1, 5 ], [ 13, 5, 1, 6 ], [ 13, 5, 1, 7 ], [ 13, 5, 1, 8 ], [ 13, 5, 1, 9 ], [ 13, 5, 1, 10 ], [ 13, 5, 1, 11 ], [ 13, 5, 1, 12 ], [ 13, 5, 1, 13 ], [ 13, 5, 1, 14 ], [ 13, 5, 1, 15 ], [ 13, 5, 1, 16 ], [ 13, 5, 1, 17 ], [ 13, 5, 1, 18 ], [ 13, 5, 1, 19 ], [ 13, 5, 1, 20 ], [ 13, 5, 1, 21 ], [ 13, 5, 1, 22 ], [ 13, 5, 1, 23 ], [ 13, 5, 1, 24 ], [ 13, 5, 1, 25 ], [ 13, 5, 1, 26 ], [ 13, 5, 1, 27 ], [ 13, 5, 1, 28 ], [ 13, 5, 1, 29 ], [ 13, 5, 1, 30 ], [ 13, 5, 1, 31 ], [ 13, 5, 1, 32 ], [ 13, 5, 1, 33 ], [ 13, 5, 1, 34 ], [ 13, 5, 1, 35 ], [ 13, 5, 1, 36 ], [ 13, 5, 2, 1 ], [ 13, 5, 2, 2 ], [ 13, 5, 2, 3 ], [ 13, 5, 2, 4 ], [ 13, 5, 2, 5 ], [ 13, 5, 2, 6 ], [ 13, 5, 3, 1 ], [ 13, 5, 3, 2 ], [ 13, 5, 3, 3 ], [ 13, 5, 3, 4 ], [ 13, 5, 3, 5 ], [ 13, 5, 3, 6 ], [ 13, 5, 3, 7 ], [ 13, 5, 3, 8 ], [ 13, 5, 3, 9 ], [ 13, 5, 3, 10 ], [ 13, 5, 3, 11 ], [ 13, 5, 3, 12 ], [ 13, 5, 3, 13 ], [ 13, 5, 3, 14 ], [ 13, 5, 3, 15 ], [ 13, 5, 3, 16 ], [ 13, 5, 4, 1 ], [ 13, 5, 4, 2 ], [ 13, 5, 4, 3 ], [ 13, 5, 4, 4 ], [ 13, 5, 4, 5 ], [ 13, 5, 4, 6 ], [ 13, 5, 5, 1 ], [ 13, 5, 5, 2 ], [ 13, 5, 5, 3 ], [ 13, 6, 1, 1 ], [ 13, 6, 1, 2 ], [ 13, 6, 1, 3 ], [ 13, 6, 1, 4 ], [ 13, 6, 1, 5 ], [ 13, 6, 1, 6 ], [ 13, 6, 1, 7 ], [ 13, 6, 1, 8 ], [ 13, 6, 1, 9 ], [ 13, 6, 1, 10 ], [ 13, 6, 1, 11 ], [ 13, 6, 1, 12 ], [ 13, 6, 1, 13 ], [ 13, 6, 1, 14 ], [ 13, 6, 1, 15 ], [ 13, 6, 1, 16 ], [ 13, 6, 1, 17 ], [ 13, 6, 1, 18 ], [ 13, 6, 1, 19 ], [ 13, 6, 1, 20 ], [ 13, 6, 1, 21 ], [ 13, 6, 1, 22 ], [ 13, 6, 1, 23 ], [ 13, 6, 1, 24 ], [ 13, 6, 1, 25 ], [ 13, 6, 1, 26 ], [ 13, 6, 1, 27 ], [ 13, 6, 1, 28 ], [ 13, 6, 1, 29 ], [ 13, 6, 1, 30 ], [ 13, 6, 1, 31 ], [ 13, 6, 1, 32 ], [ 13, 6, 1, 33 ], [ 13, 6, 1, 34 ], [ 13, 6, 1, 35 ], [ 13, 6, 1, 36 ], [ 13, 6, 1, 37 ], [ 13, 6, 1, 38 ], [ 13, 6, 1, 39 ], [ 13, 6, 1, 40 ], [ 13, 6, 1, 41 ], [ 13, 6, 1, 42 ], [ 13, 6, 1, 43 ], [ 13, 6, 1, 44 ], [ 13, 6, 1, 45 ], [ 13, 6, 1, 46 ], [ 13, 6, 1, 47 ], [ 13, 6, 1, 48 ], [ 13, 6, 1, 49 ], [ 13, 6, 1, 50 ], [ 13, 6, 1, 51 ], [ 13, 6, 1, 52 ], [ 13, 6, 1, 53 ], [ 13, 6, 1, 54 ], [ 13, 6, 1, 55 ], [ 13, 6, 1, 56 ], [ 13, 6, 1, 57 ], [ 13, 6, 1, 58 ], [ 13, 6, 1, 59 ], [ 13, 6, 1, 60 ], [ 13, 6, 1, 61 ], [ 13, 6, 1, 62 ], [ 13, 6, 1, 63 ], [ 13, 6, 1, 64 ], [ 13, 6, 1, 65 ], [ 13, 6, 1, 66 ], [ 13, 6, 1, 67 ], [ 13, 6, 1, 68 ], [ 13, 6, 1, 69 ], [ 13, 6, 1, 70 ], [ 13, 6, 1, 71 ], [ 13, 6, 1, 72 ], [ 13, 6, 1, 73 ], [ 13, 6, 1, 74 ], [ 13, 6, 1, 75 ], [ 13, 6, 1, 76 ], [ 13, 6, 1, 77 ], [ 13, 6, 1, 78 ], [ 13, 6, 1, 79 ], [ 13, 6, 1, 80 ], [ 13, 6, 1, 81 ], [ 13, 6, 1, 82 ], [ 13, 6, 1, 83 ], [ 13, 6, 1, 84 ], [ 13, 6, 1, 85 ], [ 13, 6, 1, 86 ], [ 13, 6, 1, 87 ], [ 13, 6, 1, 88 ], [ 13, 6, 1, 89 ], [ 13, 6, 1, 90 ], [ 13, 6, 1, 91 ], [ 13, 6, 1, 92 ], [ 13, 6, 1, 93 ], [ 13, 6, 1, 94 ], [ 13, 6, 1, 95 ], [ 13, 6, 1, 96 ], [ 13, 6, 1, 97 ], [ 13, 6, 1, 98 ], [ 13, 6, 1, 99 ], [ 13, 6, 1, 100 ], [ 13, 6, 1, 101 ], [ 13, 6, 1, 102 ], [ 13, 6, 1, 103 ], [ 13, 6, 1, 104 ], [ 13, 6, 1, 105 ], [ 13, 6, 1, 106 ], [ 13, 6, 1, 107 ], [ 13, 6, 1, 108 ], [ 13, 6, 1, 109 ], [ 13, 6, 1, 110 ], [ 13, 6, 1, 111 ], [ 13, 6, 1, 112 ], [ 13, 6, 1, 113 ], [ 13, 6, 1, 114 ], [ 13, 6, 1, 115 ], [ 13, 6, 1, 116 ], [ 13, 6, 1, 117 ], [ 13, 6, 1, 118 ], [ 13, 6, 1, 119 ], [ 13, 6, 1, 120 ], [ 13, 6, 1, 121 ], [ 13, 6, 1, 122 ], [ 13, 6, 1, 123 ], [ 13, 6, 1, 124 ], [ 13, 6, 1, 125 ], [ 13, 6, 1, 126 ], [ 13, 6, 1, 127 ], [ 13, 6, 1, 128 ], [ 13, 6, 2, 1 ], [ 13, 6, 2, 2 ], [ 13, 6, 2, 3 ], [ 13, 6, 2, 4 ], [ 13, 6, 2, 5 ], [ 13, 6, 2, 6 ], [ 13, 6, 2, 7 ], [ 13, 6, 2, 8 ], [ 13, 6, 2, 9 ], [ 13, 6, 2, 10 ], [ 13, 6, 2, 11 ], [ 13, 6, 2, 12 ], [ 13, 6, 2, 13 ], [ 13, 6, 2, 14 ], [ 13, 6, 2, 15 ], [ 13, 6, 2, 16 ], [ 13, 6, 3, 1 ], [ 13, 6, 3, 2 ], [ 13, 6, 3, 3 ], [ 13, 6, 3, 4 ], [ 13, 6, 3, 5 ], [ 13, 6, 3, 6 ], [ 13, 6, 3, 7 ], [ 13, 6, 3, 8 ], [ 13, 6, 3, 9 ], [ 13, 6, 3, 10 ], [ 13, 6, 3, 11 ], [ 13, 6, 3, 12 ], [ 13, 6, 3, 13 ], [ 13, 6, 3, 14 ], [ 13, 6, 3, 15 ], [ 13, 6, 3, 16 ], [ 13, 6, 3, 17 ], [ 13, 6, 3, 18 ], [ 13, 6, 3, 19 ], [ 13, 6, 3, 20 ], [ 13, 6, 3, 21 ], [ 13, 6, 3, 22 ], [ 13, 6, 3, 23 ], [ 13, 6, 3, 24 ], [ 13, 6, 3, 25 ], [ 13, 6, 3, 26 ], [ 13, 6, 3, 27 ], [ 13, 6, 3, 28 ], [ 13, 6, 3, 29 ], [ 13, 6, 3, 30 ], [ 13, 6, 3, 31 ], [ 13, 6, 3, 32 ], [ 13, 6, 4, 1 ], [ 13, 6, 4, 2 ], [ 13, 6, 4, 3 ], [ 13, 6, 4, 4 ], [ 13, 6, 4, 5 ], [ 13, 6, 4, 6 ], [ 13, 6, 4, 7 ], [ 13, 6, 4, 8 ], [ 13, 6, 4, 9 ], [ 13, 6, 4, 10 ], [ 13, 6, 4, 11 ], [ 13, 6, 4, 12 ], [ 13, 6, 4, 13 ], [ 13, 6, 4, 14 ], [ 13, 6, 4, 15 ], [ 13, 6, 4, 16 ], [ 13, 6, 4, 17 ], [ 13, 6, 4, 18 ], [ 13, 6, 4, 19 ], [ 13, 6, 4, 20 ], [ 13, 6, 4, 21 ], [ 13, 6, 4, 22 ], [ 13, 6, 4, 23 ], [ 13, 6, 4, 24 ], [ 13, 6, 4, 25 ], [ 13, 6, 4, 26 ], [ 13, 6, 4, 27 ], [ 13, 6, 4, 28 ], [ 13, 6, 4, 29 ], [ 13, 6, 4, 30 ], [ 13, 6, 4, 31 ], [ 13, 6, 4, 32 ], [ 13, 6, 5, 1 ], [ 13, 6, 5, 2 ], [ 13, 6, 5, 3 ], [ 13, 6, 5, 4 ], [ 13, 6, 5, 5 ], [ 13, 6, 5, 6 ], [ 13, 6, 5, 7 ], [ 13, 6, 5, 8 ], [ 13, 6, 5, 9 ], [ 13, 6, 5, 10 ], [ 13, 6, 5, 11 ], [ 13, 6, 5, 12 ], [ 13, 6, 5, 13 ], [ 13, 6, 5, 14 ], [ 13, 6, 5, 15 ], [ 13, 6, 5, 16 ], [ 13, 6, 6, 1 ], [ 13, 6, 6, 2 ], [ 13, 6, 6, 3 ], [ 13, 6, 6, 4 ], [ 13, 6, 6, 5 ], [ 13, 6, 6, 6 ], [ 13, 6, 6, 7 ], [ 13, 6, 6, 8 ], [ 13, 7, 1, 1 ], [ 13, 7, 1, 2 ], [ 13, 7, 1, 3 ], [ 13, 7, 1, 4 ], [ 13, 7, 1, 5 ], [ 13, 7, 1, 6 ], [ 13, 7, 1, 7 ], [ 13, 7, 1, 8 ], [ 13, 7, 1, 9 ], [ 13, 7, 1, 10 ], [ 13, 7, 1, 11 ], [ 13, 7, 1, 12 ], [ 13, 7, 1, 13 ], [ 13, 7, 1, 14 ], [ 13, 7, 1, 15 ], [ 13, 7, 1, 16 ], [ 13, 7, 1, 17 ], [ 13, 7, 1, 18 ], [ 13, 7, 1, 19 ], [ 13, 7, 1, 20 ], [ 13, 7, 1, 21 ], [ 13, 7, 1, 22 ], [ 13, 7, 1, 23 ], [ 13, 7, 1, 24 ], [ 13, 7, 1, 25 ], [ 13, 7, 1, 26 ], [ 13, 7, 1, 27 ], [ 13, 7, 1, 28 ], [ 13, 7, 1, 29 ], [ 13, 7, 1, 30 ], [ 13, 7, 1, 31 ], [ 13, 7, 1, 32 ], [ 13, 7, 1, 33 ], [ 13, 7, 1, 34 ], [ 13, 7, 1, 35 ], [ 13, 7, 1, 36 ], [ 13, 7, 1, 37 ], [ 13, 7, 1, 38 ], [ 13, 7, 1, 39 ], [ 13, 7, 1, 40 ], [ 13, 7, 1, 41 ], [ 13, 7, 1, 42 ], [ 13, 7, 1, 43 ], [ 13, 7, 1, 44 ], [ 13, 7, 1, 45 ], [ 13, 7, 1, 46 ], [ 13, 7, 1, 47 ], [ 13, 7, 1, 48 ], [ 13, 7, 1, 49 ], [ 13, 7, 1, 50 ], [ 13, 7, 1, 51 ], [ 13, 7, 1, 52 ], [ 13, 7, 1, 53 ], [ 13, 7, 1, 54 ], [ 13, 7, 1, 55 ], [ 13, 7, 1, 56 ], [ 13, 7, 1, 57 ], [ 13, 7, 1, 58 ], [ 13, 7, 1, 59 ], [ 13, 7, 1, 60 ], [ 13, 7, 1, 61 ], [ 13, 7, 1, 62 ], [ 13, 7, 1, 63 ], [ 13, 7, 1, 64 ], [ 13, 7, 2, 1 ], [ 13, 7, 2, 2 ], [ 13, 7, 2, 3 ], [ 13, 7, 2, 4 ], [ 13, 7, 2, 5 ], [ 13, 7, 2, 6 ], [ 13, 7, 2, 7 ], [ 13, 7, 2, 8 ], [ 13, 7, 2, 9 ], [ 13, 7, 2, 10 ], [ 13, 7, 2, 11 ], [ 13, 7, 2, 12 ], [ 13, 7, 2, 13 ], [ 13, 7, 2, 14 ], [ 13, 7, 2, 15 ], [ 13, 7, 2, 16 ], [ 13, 7, 2, 17 ], [ 13, 7, 2, 18 ], [ 13, 7, 2, 19 ], [ 13, 7, 2, 20 ], [ 13, 7, 2, 21 ], [ 13, 7, 2, 22 ], [ 13, 7, 2, 23 ], [ 13, 7, 2, 24 ], [ 13, 7, 2, 25 ], [ 13, 7, 2, 26 ], [ 13, 7, 2, 27 ], [ 13, 7, 2, 28 ], [ 13, 7, 2, 29 ], [ 13, 7, 2, 30 ], [ 13, 7, 2, 31 ], [ 13, 7, 2, 32 ], [ 13, 7, 2, 33 ], [ 13, 7, 2, 34 ], [ 13, 7, 2, 35 ], [ 13, 7, 2, 36 ], [ 13, 7, 2, 37 ], [ 13, 7, 2, 38 ], [ 13, 7, 2, 39 ], [ 13, 7, 2, 40 ], [ 13, 7, 2, 41 ], [ 13, 7, 2, 42 ], [ 13, 7, 2, 43 ], [ 13, 7, 2, 44 ], [ 13, 7, 2, 45 ], [ 13, 7, 2, 46 ], [ 13, 7, 2, 47 ], [ 13, 7, 2, 48 ], [ 13, 7, 2, 49 ], [ 13, 7, 2, 50 ], [ 13, 7, 2, 51 ], [ 13, 7, 2, 52 ], [ 13, 7, 2, 53 ], [ 13, 7, 2, 54 ], [ 13, 7, 2, 55 ], [ 13, 7, 2, 56 ], [ 13, 7, 2, 57 ], [ 13, 7, 2, 58 ], [ 13, 7, 2, 59 ], [ 13, 7, 2, 60 ], [ 13, 7, 2, 61 ], [ 13, 7, 2, 62 ], [ 13, 7, 2, 63 ], [ 13, 7, 2, 64 ], [ 13, 7, 3, 1 ], [ 13, 7, 3, 2 ], [ 13, 7, 3, 3 ], [ 13, 7, 3, 4 ], [ 13, 7, 3, 5 ], [ 13, 7, 3, 6 ], [ 13, 7, 3, 7 ], [ 13, 7, 3, 8 ], [ 13, 7, 4, 1 ], [ 13, 7, 4, 2 ], [ 13, 7, 4, 3 ], [ 13, 7, 4, 4 ], [ 13, 7, 4, 5 ], [ 13, 7, 4, 6 ], [ 13, 7, 4, 7 ], [ 13, 7, 4, 8 ], [ 13, 7, 5, 1 ], [ 13, 7, 5, 2 ], [ 13, 7, 5, 3 ], [ 13, 7, 5, 4 ], [ 13, 7, 5, 5 ], [ 13, 7, 5, 6 ], [ 13, 7, 5, 7 ], [ 13, 7, 5, 8 ], [ 13, 7, 5, 9 ], [ 13, 7, 5, 10 ], [ 13, 7, 5, 11 ], [ 13, 7, 5, 12 ], [ 13, 7, 5, 13 ], [ 13, 7, 5, 14 ], [ 13, 7, 5, 15 ], [ 13, 7, 5, 16 ], [ 13, 7, 6, 1 ], [ 13, 7, 6, 2 ], [ 13, 7, 6, 3 ], [ 13, 7, 6, 4 ], [ 13, 7, 6, 5 ], [ 13, 7, 6, 6 ], [ 13, 7, 6, 7 ], [ 13, 7, 6, 8 ], [ 13, 7, 6, 9 ], [ 13, 7, 6, 10 ], [ 13, 7, 6, 11 ], [ 13, 7, 6, 12 ], [ 13, 7, 6, 13 ], [ 13, 7, 6, 14 ], [ 13, 7, 6, 15 ], [ 13, 7, 6, 16 ], [ 13, 7, 7, 1 ], [ 13, 7, 7, 2 ], [ 13, 7, 7, 3 ], [ 13, 7, 7, 4 ], [ 13, 7, 7, 5 ], [ 13, 7, 7, 6 ], [ 13, 7, 7, 7 ], [ 13, 7, 7, 8 ], [ 13, 7, 7, 9 ], [ 13, 7, 7, 10 ], [ 13, 7, 7, 11 ], [ 13, 7, 7, 12 ], [ 13, 7, 7, 13 ], [ 13, 7, 7, 14 ], [ 13, 7, 7, 15 ], [ 13, 7, 7, 16 ], [ 13, 7, 8, 1 ], [ 13, 7, 8, 2 ], [ 13, 7, 8, 3 ], [ 13, 7, 8, 4 ], [ 13, 7, 8, 5 ], [ 13, 7, 8, 6 ], [ 13, 7, 8, 7 ], [ 13, 7, 8, 8 ], [ 13, 7, 8, 9 ], [ 13, 7, 8, 10 ], [ 13, 7, 8, 11 ], [ 13, 7, 8, 12 ], [ 13, 7, 8, 13 ], [ 13, 7, 8, 14 ], [ 13, 7, 8, 15 ], [ 13, 7, 8, 16 ], [ 13, 7, 9, 1 ], [ 13, 7, 9, 2 ], [ 13, 7, 9, 3 ], [ 13, 7, 9, 4 ], [ 13, 7, 9, 5 ], [ 13, 7, 9, 6 ], [ 13, 7, 9, 7 ], [ 13, 7, 9, 8 ], [ 13, 7, 10, 1 ], [ 13, 7, 10, 2 ], [ 13, 7, 10, 3 ], [ 13, 7, 10, 4 ], [ 13, 7, 10, 5 ], [ 13, 7, 10, 6 ], [ 13, 7, 10, 7 ], [ 13, 7, 10, 8 ], [ 13, 7, 11, 1 ], [ 13, 7, 11, 2 ], [ 13, 7, 11, 3 ], [ 13, 7, 11, 4 ], [ 13, 7, 12, 1 ], [ 13, 7, 12, 2 ], [ 13, 7, 12, 3 ], [ 13, 7, 12, 4 ], [ 13, 8, 1, 1 ], [ 13, 8, 1, 2 ], [ 13, 8, 1, 3 ], [ 13, 8, 1, 4 ], [ 13, 8, 1, 5 ], [ 13, 8, 1, 6 ], [ 13, 8, 1, 7 ], [ 13, 8, 1, 8 ], [ 13, 8, 1, 9 ], [ 13, 8, 1, 10 ], [ 13, 8, 1, 11 ], [ 13, 8, 1, 12 ], [ 13, 8, 1, 13 ], [ 13, 8, 1, 14 ], [ 13, 8, 1, 15 ], [ 13, 8, 1, 16 ], [ 13, 8, 1, 17 ], [ 13, 8, 1, 18 ], [ 13, 8, 1, 19 ], [ 13, 8, 1, 20 ], [ 13, 8, 1, 21 ], [ 13, 8, 1, 22 ], [ 13, 8, 1, 23 ], [ 13, 8, 1, 24 ], [ 13, 8, 1, 25 ], [ 13, 8, 1, 26 ], [ 13, 8, 1, 27 ], [ 13, 8, 1, 28 ], [ 13, 8, 1, 29 ], [ 13, 8, 1, 30 ], [ 13, 8, 1, 31 ], [ 13, 8, 1, 32 ], [ 13, 8, 1, 33 ], [ 13, 8, 1, 34 ], [ 13, 8, 1, 35 ], [ 13, 8, 1, 36 ], [ 13, 8, 1, 37 ], [ 13, 8, 1, 38 ], [ 13, 8, 1, 39 ], [ 13, 8, 1, 40 ], [ 13, 8, 1, 41 ], [ 13, 8, 1, 42 ], [ 13, 8, 1, 43 ], [ 13, 8, 1, 44 ], [ 13, 8, 1, 45 ], [ 13, 8, 1, 46 ], [ 13, 8, 1, 47 ], [ 13, 8, 1, 48 ], [ 13, 8, 1, 49 ], [ 13, 8, 1, 50 ], [ 13, 8, 1, 51 ], [ 13, 8, 1, 52 ], [ 13, 8, 1, 53 ], [ 13, 8, 1, 54 ], [ 13, 8, 1, 55 ], [ 13, 8, 1, 56 ], [ 13, 8, 1, 57 ], [ 13, 8, 1, 58 ], [ 13, 8, 1, 59 ], [ 13, 8, 1, 60 ], [ 13, 8, 1, 61 ], [ 13, 8, 1, 62 ], [ 13, 8, 1, 63 ], [ 13, 8, 1, 64 ], [ 13, 8, 1, 65 ], [ 13, 8, 1, 66 ], [ 13, 8, 1, 67 ], [ 13, 8, 1, 68 ], [ 13, 8, 1, 69 ], [ 13, 8, 1, 70 ], [ 13, 8, 1, 71 ], [ 13, 8, 1, 72 ], [ 13, 8, 1, 73 ], [ 13, 8, 1, 74 ], [ 13, 8, 1, 75 ], [ 13, 8, 1, 76 ], [ 13, 8, 1, 77 ], [ 13, 8, 1, 78 ], [ 13, 8, 1, 79 ], [ 13, 8, 1, 80 ], [ 13, 8, 1, 81 ], [ 13, 8, 1, 82 ], [ 13, 8, 1, 83 ], [ 13, 8, 1, 84 ], [ 13, 8, 1, 85 ], [ 13, 8, 1, 86 ], [ 13, 8, 1, 87 ], [ 13, 8, 1, 88 ], [ 13, 8, 1, 89 ], [ 13, 8, 1, 90 ], [ 13, 8, 1, 91 ], [ 13, 8, 1, 92 ], [ 13, 8, 1, 93 ], [ 13, 8, 1, 94 ], [ 13, 8, 1, 95 ], [ 13, 8, 1, 96 ], [ 13, 8, 2, 1 ], [ 13, 8, 2, 2 ], [ 13, 8, 2, 3 ], [ 13, 8, 2, 4 ], [ 13, 8, 2, 5 ], [ 13, 8, 2, 6 ], [ 13, 8, 2, 7 ], [ 13, 8, 2, 8 ], [ 13, 8, 2, 9 ], [ 13, 8, 2, 10 ], [ 13, 8, 2, 11 ], [ 13, 8, 2, 12 ], [ 13, 8, 3, 1 ], [ 13, 8, 3, 2 ], [ 13, 8, 3, 3 ], [ 13, 8, 3, 4 ], [ 13, 8, 3, 5 ], [ 13, 8, 3, 6 ], [ 13, 8, 3, 7 ], [ 13, 8, 3, 8 ], [ 13, 8, 3, 9 ], [ 13, 8, 3, 10 ], [ 13, 8, 3, 11 ], [ 13, 8, 3, 12 ], [ 13, 8, 3, 13 ], [ 13, 8, 3, 14 ], [ 13, 8, 3, 15 ], [ 13, 8, 3, 16 ], [ 13, 8, 3, 17 ], [ 13, 8, 3, 18 ], [ 13, 8, 3, 19 ], [ 13, 8, 3, 20 ], [ 13, 8, 3, 21 ], [ 13, 8, 3, 22 ], [ 13, 8, 3, 23 ], [ 13, 8, 3, 24 ], [ 13, 8, 4, 1 ], [ 13, 8, 4, 2 ], [ 13, 8, 4, 3 ], [ 13, 8, 4, 4 ], [ 13, 8, 4, 5 ], [ 13, 8, 4, 6 ], [ 13, 8, 4, 7 ], [ 13, 8, 4, 8 ], [ 13, 8, 4, 9 ], [ 13, 8, 4, 10 ], [ 13, 8, 4, 11 ], [ 13, 8, 4, 12 ], [ 13, 8, 4, 13 ], [ 13, 8, 4, 14 ], [ 13, 8, 4, 15 ], [ 13, 8, 4, 16 ], [ 13, 8, 5, 1 ], [ 13, 8, 5, 2 ], [ 13, 8, 5, 3 ], [ 13, 8, 5, 4 ], [ 13, 8, 5, 5 ], [ 13, 8, 5, 6 ], [ 13, 8, 5, 7 ], [ 13, 8, 5, 8 ], [ 13, 8, 5, 9 ], [ 13, 8, 5, 10 ], [ 13, 8, 5, 11 ], [ 13, 8, 5, 12 ], [ 13, 8, 6, 1 ], [ 13, 8, 6, 2 ], [ 13, 8, 6, 3 ], [ 13, 8, 6, 4 ], [ 13, 9, 1, 1 ], [ 13, 9, 1, 2 ], [ 13, 9, 1, 3 ], [ 13, 9, 1, 4 ], [ 13, 9, 1, 5 ], [ 13, 9, 1, 6 ], [ 13, 9, 1, 7 ], [ 13, 9, 1, 8 ], [ 13, 9, 1, 9 ], [ 13, 9, 1, 10 ], [ 13, 9, 1, 11 ], [ 13, 9, 1, 12 ], [ 13, 9, 1, 13 ], [ 13, 9, 1, 14 ], [ 13, 9, 1, 15 ], [ 13, 9, 1, 16 ], [ 13, 9, 1, 17 ], [ 13, 9, 1, 18 ], [ 13, 9, 1, 19 ], [ 13, 9, 1, 20 ], [ 13, 9, 1, 21 ], [ 13, 9, 1, 22 ], [ 13, 9, 1, 23 ], [ 13, 9, 1, 24 ], [ 13, 9, 1, 25 ], [ 13, 9, 1, 26 ], [ 13, 9, 1, 27 ], [ 13, 9, 1, 28 ], [ 13, 9, 1, 29 ], [ 13, 9, 1, 30 ], [ 13, 9, 1, 31 ], [ 13, 9, 1, 32 ], [ 13, 9, 1, 33 ], [ 13, 9, 1, 34 ], [ 13, 9, 1, 35 ], [ 13, 9, 1, 36 ], [ 13, 9, 2, 1 ], [ 13, 9, 2, 2 ], [ 13, 9, 2, 3 ], [ 13, 9, 2, 4 ], [ 13, 9, 2, 5 ], [ 13, 9, 2, 6 ], [ 13, 9, 3, 1 ], [ 13, 9, 3, 2 ], [ 13, 9, 3, 3 ], [ 13, 9, 3, 4 ], [ 13, 9, 3, 5 ], [ 13, 9, 3, 6 ], [ 13, 9, 3, 7 ], [ 13, 9, 3, 8 ], [ 13, 9, 3, 9 ], [ 13, 9, 3, 10 ], [ 13, 9, 3, 11 ], [ 13, 9, 3, 12 ], [ 13, 9, 3, 13 ], [ 13, 9, 3, 14 ], [ 13, 9, 3, 15 ], [ 13, 9, 3, 16 ], [ 13, 9, 4, 1 ], [ 13, 9, 4, 2 ], [ 13, 9, 4, 3 ], [ 13, 9, 4, 4 ], [ 13, 9, 4, 5 ], [ 13, 9, 4, 6 ], [ 13, 9, 5, 1 ], [ 13, 9, 5, 2 ], [ 13, 9, 5, 3 ], [ 13, 10, 1, 1 ], [ 13, 10, 1, 2 ], [ 13, 10, 1, 3 ], [ 13, 10, 1, 4 ], [ 13, 10, 1, 5 ], [ 13, 10, 1, 6 ], [ 13, 10, 1, 7 ], [ 13, 10, 1, 8 ], [ 13, 10, 1, 9 ], [ 13, 10, 1, 10 ], [ 13, 10, 1, 11 ], [ 13, 10, 1, 12 ], [ 13, 10, 1, 13 ], [ 13, 10, 1, 14 ], [ 13, 10, 1, 15 ], [ 13, 10, 1, 16 ], [ 13, 10, 1, 17 ], [ 13, 10, 1, 18 ], [ 13, 10, 1, 19 ], [ 13, 10, 1, 20 ], [ 13, 10, 1, 21 ], [ 13, 10, 1, 22 ], [ 13, 10, 1, 23 ], [ 13, 10, 1, 24 ], [ 13, 10, 1, 25 ], [ 13, 10, 1, 26 ], [ 13, 10, 1, 27 ], [ 13, 10, 1, 28 ], [ 13, 10, 1, 29 ], [ 13, 10, 1, 30 ], [ 13, 10, 1, 31 ], [ 13, 10, 1, 32 ], [ 13, 10, 1, 33 ], [ 13, 10, 1, 34 ], [ 13, 10, 1, 35 ], [ 13, 10, 1, 36 ], [ 13, 10, 1, 37 ], [ 13, 10, 1, 38 ], [ 13, 10, 1, 39 ], [ 13, 10, 1, 40 ], [ 13, 10, 1, 41 ], [ 13, 10, 1, 42 ], [ 13, 10, 1, 43 ], [ 13, 10, 1, 44 ], [ 13, 10, 1, 45 ], [ 13, 10, 1, 46 ], [ 13, 10, 1, 47 ], [ 13, 10, 1, 48 ], [ 13, 10, 1, 49 ], [ 13, 10, 1, 50 ], [ 13, 10, 1, 51 ], [ 13, 10, 1, 52 ], [ 13, 10, 1, 53 ], [ 13, 10, 1, 54 ], [ 13, 10, 1, 55 ], [ 13, 10, 1, 56 ], [ 13, 10, 1, 57 ], [ 13, 10, 1, 58 ], [ 13, 10, 1, 59 ], [ 13, 10, 1, 60 ], [ 13, 10, 1, 61 ], [ 13, 10, 1, 62 ], [ 13, 10, 1, 63 ], [ 13, 10, 1, 64 ], [ 13, 10, 1, 65 ], [ 13, 10, 1, 66 ], [ 13, 10, 1, 67 ], [ 13, 10, 1, 68 ], [ 13, 10, 1, 69 ], [ 13, 10, 1, 70 ], [ 13, 10, 1, 71 ], [ 13, 10, 1, 72 ], [ 13, 10, 1, 73 ], [ 13, 10, 1, 74 ], [ 13, 10, 1, 75 ], [ 13, 10, 1, 76 ], [ 13, 10, 1, 77 ], [ 13, 10, 1, 78 ], [ 13, 10, 1, 79 ], [ 13, 10, 1, 80 ], [ 13, 10, 1, 81 ], [ 13, 10, 1, 82 ], [ 13, 10, 1, 83 ], [ 13, 10, 1, 84 ], [ 13, 10, 1, 85 ], [ 13, 10, 1, 86 ], [ 13, 10, 1, 87 ], [ 13, 10, 1, 88 ], [ 13, 10, 1, 89 ], [ 13, 10, 1, 90 ], [ 13, 10, 1, 91 ], [ 13, 10, 1, 92 ], [ 13, 10, 1, 93 ], [ 13, 10, 1, 94 ], [ 13, 10, 1, 95 ], [ 13, 10, 1, 96 ], [ 13, 10, 1, 97 ], [ 13, 10, 1, 98 ], [ 13, 10, 1, 99 ], [ 13, 10, 1, 100 ], [ 13, 10, 1, 101 ], [ 13, 10, 1, 102 ], [ 13, 10, 1, 103 ], [ 13, 10, 1, 104 ], [ 13, 10, 1, 105 ], [ 13, 10, 1, 106 ], [ 13, 10, 1, 107 ], [ 13, 10, 1, 108 ], [ 13, 10, 1, 109 ], [ 13, 10, 1, 110 ], [ 13, 10, 1, 111 ], [ 13, 10, 1, 112 ], [ 13, 10, 1, 113 ], [ 13, 10, 1, 114 ], [ 13, 10, 1, 115 ], [ 13, 10, 1, 116 ], [ 13, 10, 1, 117 ], [ 13, 10, 1, 118 ], [ 13, 10, 1, 119 ], [ 13, 10, 1, 120 ], [ 13, 10, 1, 121 ], [ 13, 10, 1, 122 ], [ 13, 10, 1, 123 ], [ 13, 10, 1, 124 ], [ 13, 10, 1, 125 ], [ 13, 10, 1, 126 ], [ 13, 10, 1, 127 ], [ 13, 10, 1, 128 ], [ 13, 10, 1, 129 ], [ 13, 10, 1, 130 ], [ 13, 10, 1, 131 ], [ 13, 10, 1, 132 ], [ 13, 10, 1, 133 ], [ 13, 10, 1, 134 ], [ 13, 10, 1, 135 ], [ 13, 10, 1, 136 ], [ 13, 10, 1, 137 ], [ 13, 10, 1, 138 ], [ 13, 10, 1, 139 ], [ 13, 10, 1, 140 ], [ 13, 10, 1, 141 ], [ 13, 10, 1, 142 ], [ 13, 10, 1, 143 ], [ 13, 10, 1, 144 ], [ 13, 10, 1, 145 ], [ 13, 10, 1, 146 ], [ 13, 10, 1, 147 ], [ 13, 10, 1, 148 ], [ 13, 10, 1, 149 ], [ 13, 10, 1, 150 ], [ 13, 10, 1, 151 ], [ 13, 10, 1, 152 ], [ 13, 10, 1, 153 ], [ 13, 10, 1, 154 ], [ 13, 10, 1, 155 ], [ 13, 10, 1, 156 ], [ 13, 10, 1, 157 ], [ 13, 10, 1, 158 ], [ 13, 10, 1, 159 ], [ 13, 10, 1, 160 ], [ 13, 10, 1, 161 ], [ 13, 10, 1, 162 ], [ 13, 10, 1, 163 ], [ 13, 10, 1, 164 ], [ 13, 10, 1, 165 ], [ 13, 10, 1, 166 ], [ 13, 10, 1, 167 ], [ 13, 10, 1, 168 ], [ 13, 10, 1, 169 ], [ 13, 10, 1, 170 ], [ 13, 10, 1, 171 ], [ 13, 10, 1, 172 ], [ 13, 10, 1, 173 ], [ 13, 10, 1, 174 ], [ 13, 10, 1, 175 ], [ 13, 10, 1, 176 ], [ 13, 10, 1, 177 ], [ 13, 10, 1, 178 ], [ 13, 10, 1, 179 ], [ 13, 10, 1, 180 ], [ 13, 10, 1, 181 ], [ 13, 10, 1, 182 ], [ 13, 10, 1, 183 ], [ 13, 10, 1, 184 ], [ 13, 10, 1, 185 ], [ 13, 10, 1, 186 ], [ 13, 10, 1, 187 ], [ 13, 10, 1, 188 ], [ 13, 10, 1, 189 ], [ 13, 10, 1, 190 ], [ 13, 10, 1, 191 ], [ 13, 10, 1, 192 ], [ 13, 10, 1, 193 ], [ 13, 10, 1, 194 ], [ 13, 10, 1, 195 ], [ 13, 10, 1, 196 ], [ 13, 10, 1, 197 ], [ 13, 10, 1, 198 ], [ 13, 10, 1, 199 ], [ 13, 10, 1, 200 ], [ 13, 10, 1, 201 ], [ 13, 10, 1, 202 ], [ 13, 10, 1, 203 ], [ 13, 10, 1, 204 ], [ 13, 10, 1, 205 ], [ 13, 10, 1, 206 ], [ 13, 10, 1, 207 ], [ 13, 10, 1, 208 ], [ 13, 10, 1, 209 ], [ 13, 10, 1, 210 ], [ 13, 10, 1, 211 ], [ 13, 10, 1, 212 ], [ 13, 10, 1, 213 ], [ 13, 10, 1, 214 ], [ 13, 10, 1, 215 ], [ 13, 10, 1, 216 ], [ 13, 10, 1, 217 ], [ 13, 10, 1, 218 ], [ 13, 10, 1, 219 ], [ 13, 10, 1, 220 ], [ 13, 10, 1, 221 ], [ 13, 10, 1, 222 ], [ 13, 10, 1, 223 ], [ 13, 10, 1, 224 ], [ 13, 10, 1, 225 ], [ 13, 10, 1, 226 ], [ 13, 10, 1, 227 ], [ 13, 10, 1, 228 ], [ 13, 10, 1, 229 ], [ 13, 10, 1, 230 ], [ 13, 10, 1, 231 ], [ 13, 10, 1, 232 ], [ 13, 10, 1, 233 ], [ 13, 10, 1, 234 ], [ 13, 10, 1, 235 ], [ 13, 10, 1, 236 ], [ 13, 10, 1, 237 ], [ 13, 10, 1, 238 ], [ 13, 10, 1, 239 ], [ 13, 10, 1, 240 ], [ 13, 10, 1, 241 ], [ 13, 10, 1, 242 ], [ 13, 10, 1, 243 ], [ 13, 10, 1, 244 ], [ 13, 10, 1, 245 ], [ 13, 10, 1, 246 ], [ 13, 10, 1, 247 ], [ 13, 10, 1, 248 ], [ 13, 10, 1, 249 ], [ 13, 10, 1, 250 ], [ 13, 10, 1, 251 ], [ 13, 10, 1, 252 ], [ 13, 10, 1, 253 ], [ 13, 10, 1, 254 ], [ 13, 10, 1, 255 ], [ 13, 10, 1, 256 ], [ 13, 10, 1, 257 ], [ 13, 10, 1, 258 ], [ 13, 10, 1, 259 ], [ 13, 10, 1, 260 ], [ 13, 10, 1, 261 ], [ 13, 10, 1, 262 ], [ 13, 10, 1, 263 ], [ 13, 10, 1, 264 ], [ 13, 10, 1, 265 ], [ 13, 10, 1, 266 ], [ 13, 10, 1, 267 ], [ 13, 10, 1, 268 ], [ 13, 10, 1, 269 ], [ 13, 10, 1, 270 ], [ 13, 10, 1, 271 ], [ 13, 10, 1, 272 ], [ 13, 10, 2, 1 ], [ 13, 10, 2, 2 ], [ 13, 10, 2, 3 ], [ 13, 10, 2, 4 ], [ 13, 10, 2, 5 ], [ 13, 10, 2, 6 ], [ 13, 10, 2, 7 ], [ 13, 10, 2, 8 ], [ 13, 10, 2, 9 ], [ 13, 10, 2, 10 ], [ 13, 10, 2, 11 ], [ 13, 10, 2, 12 ], [ 13, 10, 2, 13 ], [ 13, 10, 2, 14 ], [ 13, 10, 2, 15 ], [ 13, 10, 2, 16 ], [ 13, 10, 2, 17 ], [ 13, 10, 2, 18 ], [ 13, 10, 2, 19 ], [ 13, 10, 2, 20 ], [ 13, 10, 2, 21 ], [ 13, 10, 2, 22 ], [ 13, 10, 2, 23 ], [ 13, 10, 2, 24 ], [ 13, 10, 3, 1 ], [ 13, 10, 3, 2 ], [ 13, 10, 3, 3 ], [ 13, 10, 3, 4 ], [ 13, 10, 3, 5 ], [ 13, 10, 3, 6 ], [ 13, 10, 3, 7 ], [ 13, 10, 3, 8 ], [ 13, 10, 3, 9 ], [ 13, 10, 3, 10 ], [ 13, 10, 3, 11 ], [ 13, 10, 3, 12 ], [ 13, 10, 3, 13 ], [ 13, 10, 3, 14 ], [ 13, 10, 3, 15 ], [ 13, 10, 3, 16 ], [ 13, 10, 3, 17 ], [ 13, 10, 3, 18 ], [ 13, 10, 3, 19 ], [ 13, 10, 3, 20 ], [ 13, 10, 3, 21 ], [ 13, 10, 3, 22 ], [ 13, 10, 3, 23 ], [ 13, 10, 3, 24 ], [ 13, 10, 3, 25 ], [ 13, 10, 3, 26 ], [ 13, 10, 3, 27 ], [ 13, 10, 3, 28 ], [ 13, 10, 3, 29 ], [ 13, 10, 3, 30 ], [ 13, 10, 3, 31 ], [ 13, 10, 3, 32 ], [ 13, 10, 3, 33 ], [ 13, 10, 3, 34 ], [ 13, 10, 3, 35 ], [ 13, 10, 3, 36 ], [ 13, 10, 3, 37 ], [ 13, 10, 3, 38 ], [ 13, 10, 3, 39 ], [ 13, 10, 3, 40 ], [ 13, 10, 3, 41 ], [ 13, 10, 3, 42 ], [ 13, 10, 3, 43 ], [ 13, 10, 3, 44 ], [ 13, 10, 3, 45 ], [ 13, 10, 3, 46 ], [ 13, 10, 3, 47 ], [ 13, 10, 3, 48 ], [ 13, 10, 3, 49 ], [ 13, 10, 3, 50 ], [ 13, 10, 3, 51 ], [ 13, 10, 3, 52 ], [ 13, 10, 3, 53 ], [ 13, 10, 3, 54 ], [ 13, 10, 3, 55 ], [ 13, 10, 3, 56 ], [ 13, 10, 3, 57 ], [ 13, 10, 3, 58 ], [ 13, 10, 3, 59 ], [ 13, 10, 3, 60 ], [ 13, 10, 3, 61 ], [ 13, 10, 3, 62 ], [ 13, 10, 3, 63 ], [ 13, 10, 3, 64 ], [ 13, 10, 4, 1 ], [ 13, 10, 4, 2 ], [ 13, 10, 4, 3 ], [ 13, 10, 4, 4 ], [ 13, 10, 4, 5 ], [ 13, 10, 4, 6 ], [ 13, 10, 4, 7 ], [ 13, 10, 4, 8 ], [ 13, 10, 4, 9 ], [ 13, 10, 4, 10 ], [ 13, 10, 4, 11 ], [ 13, 10, 4, 12 ], [ 13, 10, 4, 13 ], [ 13, 10, 4, 14 ], [ 13, 10, 4, 15 ], [ 13, 10, 4, 16 ], [ 13, 10, 4, 17 ], [ 13, 10, 4, 18 ], [ 13, 10, 4, 19 ], [ 13, 10, 4, 20 ], [ 13, 10, 5, 1 ], [ 13, 10, 5, 2 ], [ 13, 10, 5, 3 ], [ 13, 10, 5, 4 ], [ 13, 10, 5, 5 ], [ 13, 10, 5, 6 ], [ 14, 1, 1, 1 ], [ 14, 1, 1, 2 ], [ 14, 1, 1, 3 ], [ 14, 1, 1, 4 ], [ 14, 1, 2, 1 ], [ 14, 1, 2, 2 ], [ 14, 1, 3, 1 ], [ 14, 1, 3, 2 ], [ 14, 1, 3, 3 ], [ 14, 1, 3, 4 ], [ 14, 1, 4, 1 ], [ 14, 1, 4, 2 ], [ 14, 2, 1, 1 ], [ 14, 2, 1, 2 ], [ 14, 2, 2, 1 ], [ 14, 2, 3, 1 ], [ 14, 2, 3, 2 ], [ 14, 2, 3, 3 ], [ 14, 2, 3, 4 ], [ 14, 2, 4, 1 ], [ 14, 2, 4, 2 ], [ 14, 3, 1, 1 ], [ 14, 3, 1, 2 ], [ 14, 3, 1, 3 ], [ 14, 3, 1, 4 ], [ 14, 3, 2, 1 ], [ 14, 3, 2, 2 ], [ 14, 3, 3, 1 ], [ 14, 3, 3, 2 ], [ 14, 3, 4, 1 ], [ 14, 3, 5, 1 ], [ 14, 3, 5, 2 ], [ 14, 3, 5, 3 ], [ 14, 3, 5, 4 ], [ 14, 3, 6, 1 ], [ 14, 3, 6, 2 ], [ 14, 3, 6, 3 ], [ 14, 3, 6, 4 ], [ 14, 3, 7, 1 ], [ 14, 3, 7, 2 ], [ 14, 3, 8, 1 ], [ 14, 3, 8, 2 ], [ 14, 4, 1, 1 ], [ 14, 4, 1, 2 ], [ 14, 4, 1, 3 ], [ 14, 4, 1, 4 ], [ 14, 4, 2, 1 ], [ 14, 4, 3, 1 ], [ 14, 4, 3, 2 ], [ 14, 4, 3, 3 ], [ 14, 4, 3, 4 ], [ 14, 4, 4, 1 ], [ 14, 5, 1, 1 ], [ 14, 5, 1, 2 ], [ 14, 5, 1, 3 ], [ 14, 5, 1, 4 ], [ 14, 5, 2, 1 ], [ 14, 5, 3, 1 ], [ 14, 5, 3, 2 ], [ 14, 5, 3, 3 ], [ 14, 5, 3, 4 ], [ 14, 5, 4, 1 ], [ 14, 6, 1, 1 ], [ 14, 6, 1, 2 ], [ 14, 6, 1, 3 ], [ 14, 6, 1, 4 ], [ 14, 6, 1, 5 ], [ 14, 6, 1, 6 ], [ 14, 6, 1, 7 ], [ 14, 6, 1, 8 ], [ 14, 6, 2, 1 ], [ 14, 6, 2, 2 ], [ 14, 6, 3, 1 ], [ 14, 6, 3, 2 ], [ 14, 6, 3, 3 ], [ 14, 6, 3, 4 ], [ 14, 6, 3, 5 ], [ 14, 6, 3, 6 ], [ 14, 6, 3, 7 ], [ 14, 6, 3, 8 ], [ 14, 6, 4, 1 ], [ 14, 6, 4, 2 ], [ 14, 6, 4, 3 ], [ 14, 6, 4, 4 ], [ 14, 6, 4, 5 ], [ 14, 6, 4, 6 ], [ 14, 6, 4, 7 ], [ 14, 6, 4, 8 ], [ 14, 6, 5, 1 ], [ 14, 6, 5, 2 ], [ 14, 6, 6, 1 ], [ 14, 6, 6, 2 ], [ 14, 7, 1, 1 ], [ 14, 7, 1, 2 ], [ 14, 7, 1, 3 ], [ 14, 7, 1, 4 ], [ 14, 7, 1, 5 ], [ 14, 7, 1, 6 ], [ 14, 7, 1, 7 ], [ 14, 7, 1, 8 ], [ 14, 7, 2, 1 ], [ 14, 7, 2, 2 ], [ 14, 7, 3, 1 ], [ 14, 7, 3, 2 ], [ 14, 7, 3, 3 ], [ 14, 7, 3, 4 ], [ 14, 7, 3, 5 ], [ 14, 7, 3, 6 ], [ 14, 7, 3, 7 ], [ 14, 7, 3, 8 ], [ 14, 7, 4, 1 ], [ 14, 7, 4, 2 ], [ 14, 7, 4, 3 ], [ 14, 7, 4, 4 ], [ 14, 7, 4, 5 ], [ 14, 7, 4, 6 ], [ 14, 7, 4, 7 ], [ 14, 7, 4, 8 ], [ 14, 7, 5, 1 ], [ 14, 7, 5, 2 ], [ 14, 7, 6, 1 ], [ 14, 7, 6, 2 ], [ 14, 8, 1, 1 ], [ 14, 8, 1, 2 ], [ 14, 8, 1, 3 ], [ 14, 8, 1, 4 ], [ 14, 8, 1, 5 ], [ 14, 8, 1, 6 ], [ 14, 8, 1, 7 ], [ 14, 8, 1, 8 ], [ 14, 8, 2, 1 ], [ 14, 8, 2, 2 ], [ 14, 8, 3, 1 ], [ 14, 8, 3, 2 ], [ 14, 8, 3, 3 ], [ 14, 8, 3, 4 ], [ 14, 8, 3, 5 ], [ 14, 8, 3, 6 ], [ 14, 8, 3, 7 ], [ 14, 8, 3, 8 ], [ 14, 8, 4, 1 ], [ 14, 8, 4, 2 ], [ 14, 8, 4, 3 ], [ 14, 8, 4, 4 ], [ 14, 8, 4, 5 ], [ 14, 8, 4, 6 ], [ 14, 8, 4, 7 ], [ 14, 8, 4, 8 ], [ 14, 8, 5, 1 ], [ 14, 8, 5, 2 ], [ 14, 8, 6, 1 ], [ 14, 8, 6, 2 ], [ 14, 9, 1, 1 ], [ 14, 9, 1, 2 ], [ 14, 9, 1, 3 ], [ 14, 9, 1, 4 ], [ 14, 9, 2, 1 ], [ 14, 9, 3, 1 ], [ 14, 9, 3, 2 ], [ 14, 9, 3, 3 ], [ 14, 9, 3, 4 ], [ 14, 9, 3, 5 ], [ 14, 9, 3, 6 ], [ 14, 9, 3, 7 ], [ 14, 9, 3, 8 ], [ 14, 9, 4, 1 ], [ 14, 9, 4, 2 ], [ 14, 9, 4, 3 ], [ 14, 9, 4, 4 ], [ 14, 9, 4, 5 ], [ 14, 9, 4, 6 ], [ 14, 9, 4, 7 ], [ 14, 9, 4, 8 ], [ 14, 9, 5, 1 ], [ 14, 9, 5, 2 ], [ 14, 9, 6, 1 ], [ 14, 9, 6, 2 ], [ 14, 10, 1, 1 ], [ 14, 10, 1, 2 ], [ 14, 10, 1, 3 ], [ 14, 10, 1, 4 ], [ 14, 10, 1, 5 ], [ 14, 10, 1, 6 ], [ 14, 10, 1, 7 ], [ 14, 10, 1, 8 ], [ 14, 10, 1, 9 ], [ 14, 10, 1, 10 ], [ 14, 10, 1, 11 ], [ 14, 10, 1, 12 ], [ 14, 10, 1, 13 ], [ 14, 10, 1, 14 ], [ 14, 10, 1, 15 ], [ 14, 10, 1, 16 ], [ 14, 10, 2, 1 ], [ 14, 10, 2, 2 ], [ 14, 10, 3, 1 ], [ 14, 10, 3, 2 ], [ 14, 10, 3, 3 ], [ 14, 10, 3, 4 ], [ 14, 10, 3, 5 ], [ 14, 10, 3, 6 ], [ 14, 10, 3, 7 ], [ 14, 10, 3, 8 ], [ 14, 10, 3, 9 ], [ 14, 10, 3, 10 ], [ 14, 10, 3, 11 ], [ 14, 10, 3, 12 ], [ 14, 10, 3, 13 ], [ 14, 10, 3, 14 ], [ 14, 10, 3, 15 ], [ 14, 10, 3, 16 ], [ 14, 10, 4, 1 ], [ 14, 10, 4, 2 ], [ 14, 10, 4, 3 ], [ 14, 10, 4, 4 ], [ 14, 10, 4, 5 ], [ 14, 10, 4, 6 ], [ 14, 10, 4, 7 ], [ 14, 10, 4, 8 ], [ 14, 10, 4, 9 ], [ 14, 10, 4, 10 ], [ 14, 10, 4, 11 ], [ 14, 10, 4, 12 ], [ 14, 10, 4, 13 ], [ 14, 10, 4, 14 ], [ 14, 10, 4, 15 ], [ 14, 10, 4, 16 ], [ 14, 10, 5, 1 ], [ 14, 10, 5, 2 ], [ 14, 10, 6, 1 ], [ 14, 10, 6, 2 ], [ 15, 1, 1, 1 ], [ 15, 1, 1, 2 ], [ 15, 1, 1, 3 ], [ 15, 1, 1, 4 ], [ 15, 1, 1, 5 ], [ 15, 1, 1, 6 ], [ 15, 1, 1, 7 ], [ 15, 1, 1, 8 ], [ 15, 1, 1, 9 ], [ 15, 1, 1, 10 ], [ 15, 1, 1, 11 ], [ 15, 1, 1, 12 ], [ 15, 1, 1, 13 ], [ 15, 1, 1, 14 ], [ 15, 1, 1, 15 ], [ 15, 1, 1, 16 ], [ 15, 1, 2, 1 ], [ 15, 1, 2, 2 ], [ 15, 1, 2, 3 ], [ 15, 1, 2, 4 ], [ 15, 2, 1, 1 ], [ 15, 2, 1, 2 ], [ 15, 2, 1, 3 ], [ 15, 2, 2, 1 ], [ 15, 3, 1, 1 ], [ 15, 3, 1, 2 ], [ 15, 3, 1, 3 ], [ 15, 3, 2, 1 ], [ 15, 4, 1, 1 ], [ 15, 4, 1, 2 ], [ 15, 4, 1, 3 ], [ 15, 4, 1, 4 ], [ 15, 4, 1, 5 ], [ 15, 4, 1, 6 ], [ 15, 4, 1, 7 ], [ 15, 4, 1, 8 ], [ 15, 4, 1, 9 ], [ 15, 4, 1, 10 ], [ 15, 4, 1, 11 ], [ 15, 4, 1, 12 ], [ 15, 4, 1, 13 ], [ 15, 4, 1, 14 ], [ 15, 4, 1, 15 ], [ 15, 4, 1, 16 ], [ 15, 4, 2, 1 ], [ 15, 4, 2, 2 ], [ 15, 4, 2, 3 ], [ 15, 4, 2, 4 ], [ 15, 5, 1, 1 ], [ 15, 5, 1, 2 ], [ 15, 5, 1, 3 ], [ 15, 5, 2, 1 ], [ 15, 5, 2, 2 ], [ 15, 5, 2, 3 ], [ 15, 5, 3, 1 ], [ 15, 5, 4, 1 ], [ 15, 6, 1, 1 ], [ 15, 6, 1, 2 ], [ 15, 6, 1, 3 ], [ 15, 6, 1, 4 ], [ 15, 6, 1, 5 ], [ 15, 6, 1, 6 ], [ 15, 6, 1, 7 ], [ 15, 6, 1, 8 ], [ 15, 6, 1, 9 ], [ 15, 6, 1, 10 ], [ 15, 6, 1, 11 ], [ 15, 6, 1, 12 ], [ 15, 6, 1, 13 ], [ 15, 6, 1, 14 ], [ 15, 6, 1, 15 ], [ 15, 6, 1, 16 ], [ 15, 6, 1, 17 ], [ 15, 6, 1, 18 ], [ 15, 6, 1, 19 ], [ 15, 6, 1, 20 ], [ 15, 6, 1, 21 ], [ 15, 6, 1, 22 ], [ 15, 6, 1, 23 ], [ 15, 6, 1, 24 ], [ 15, 6, 1, 25 ], [ 15, 6, 1, 26 ], [ 15, 6, 1, 27 ], [ 15, 6, 1, 28 ], [ 15, 6, 1, 29 ], [ 15, 6, 1, 30 ], [ 15, 6, 1, 31 ], [ 15, 6, 1, 32 ], [ 15, 6, 2, 1 ], [ 15, 6, 2, 2 ], [ 15, 6, 2, 3 ], [ 15, 6, 2, 4 ], [ 15, 7, 1, 1 ], [ 15, 7, 1, 2 ], [ 15, 7, 1, 3 ], [ 15, 7, 1, 4 ], [ 15, 7, 1, 5 ], [ 15, 7, 1, 6 ], [ 15, 7, 1, 7 ], [ 15, 7, 1, 8 ], [ 15, 7, 1, 9 ], [ 15, 7, 1, 10 ], [ 15, 7, 2, 1 ], [ 15, 7, 2, 2 ], [ 15, 7, 2, 3 ], [ 15, 7, 2, 4 ], [ 15, 7, 2, 5 ], [ 15, 7, 2, 6 ], [ 15, 7, 2, 7 ], [ 15, 7, 2, 8 ], [ 15, 7, 2, 9 ], [ 15, 7, 2, 10 ], [ 15, 7, 3, 1 ], [ 15, 7, 3, 2 ], [ 15, 7, 4, 1 ], [ 15, 7, 4, 2 ], [ 15, 8, 1, 1 ], [ 15, 8, 1, 2 ], [ 15, 8, 1, 3 ], [ 15, 8, 1, 4 ], [ 15, 8, 1, 5 ], [ 15, 8, 1, 6 ], [ 15, 8, 1, 7 ], [ 15, 8, 1, 8 ], [ 15, 8, 1, 9 ], [ 15, 8, 1, 10 ], [ 15, 8, 2, 1 ], [ 15, 8, 2, 2 ], [ 15, 9, 1, 1 ], [ 15, 9, 1, 2 ], [ 15, 9, 1, 3 ], [ 15, 9, 1, 4 ], [ 15, 9, 1, 5 ], [ 15, 9, 1, 6 ], [ 15, 9, 1, 7 ], [ 15, 9, 1, 8 ], [ 15, 9, 1, 9 ], [ 15, 9, 1, 10 ], [ 15, 9, 1, 11 ], [ 15, 9, 1, 12 ], [ 15, 9, 1, 13 ], [ 15, 9, 1, 14 ], [ 15, 9, 1, 15 ], [ 15, 9, 1, 16 ], [ 15, 9, 1, 17 ], [ 15, 9, 1, 18 ], [ 15, 9, 1, 19 ], [ 15, 9, 1, 20 ], [ 15, 9, 1, 21 ], [ 15, 9, 1, 22 ], [ 15, 9, 1, 23 ], [ 15, 9, 1, 24 ], [ 15, 9, 1, 25 ], [ 15, 9, 1, 26 ], [ 15, 9, 1, 27 ], [ 15, 9, 1, 28 ], [ 15, 9, 1, 29 ], [ 15, 9, 1, 30 ], [ 15, 9, 1, 31 ], [ 15, 9, 1, 32 ], [ 15, 9, 2, 1 ], [ 15, 9, 2, 2 ], [ 15, 9, 2, 3 ], [ 15, 9, 2, 4 ], [ 15, 10, 1, 1 ], [ 15, 10, 1, 2 ], [ 15, 10, 1, 3 ], [ 15, 10, 1, 4 ], [ 15, 10, 1, 5 ], [ 15, 10, 1, 6 ], [ 15, 10, 1, 7 ], [ 15, 10, 1, 8 ], [ 15, 10, 1, 9 ], [ 15, 10, 1, 10 ], [ 15, 10, 2, 1 ], [ 15, 10, 2, 2 ], [ 15, 10, 2, 3 ], [ 15, 10, 2, 4 ], [ 15, 10, 2, 5 ], [ 15, 10, 2, 6 ], [ 15, 10, 2, 7 ], [ 15, 10, 2, 8 ], [ 15, 10, 2, 9 ], [ 15, 10, 2, 10 ], [ 15, 10, 3, 1 ], [ 15, 10, 3, 2 ], [ 15, 10, 4, 1 ], [ 15, 10, 4, 2 ], [ 15, 11, 1, 1 ], [ 15, 11, 1, 2 ], [ 15, 11, 1, 3 ], [ 15, 11, 1, 4 ], [ 15, 11, 1, 5 ], [ 15, 11, 1, 6 ], [ 15, 11, 1, 7 ], [ 15, 11, 1, 8 ], [ 15, 11, 1, 9 ], [ 15, 11, 1, 10 ], [ 15, 11, 2, 1 ], [ 15, 11, 2, 2 ], [ 15, 12, 1, 1 ], [ 15, 12, 1, 2 ], [ 15, 12, 1, 3 ], [ 15, 12, 1, 4 ], [ 15, 12, 1, 5 ], [ 15, 12, 1, 6 ], [ 15, 12, 1, 7 ], [ 15, 12, 1, 8 ], [ 15, 12, 1, 9 ], [ 15, 12, 1, 10 ], [ 15, 12, 1, 11 ], [ 15, 12, 1, 12 ], [ 15, 12, 1, 13 ], [ 15, 12, 1, 14 ], [ 15, 12, 1, 15 ], [ 15, 12, 1, 16 ], [ 15, 12, 1, 17 ], [ 15, 12, 1, 18 ], [ 15, 12, 1, 19 ], [ 15, 12, 1, 20 ], [ 15, 12, 1, 21 ], [ 15, 12, 1, 22 ], [ 15, 12, 1, 23 ], [ 15, 12, 1, 24 ], [ 15, 12, 1, 25 ], [ 15, 12, 1, 26 ], [ 15, 12, 1, 27 ], [ 15, 12, 1, 28 ], [ 15, 12, 1, 29 ], [ 15, 12, 1, 30 ], [ 15, 12, 1, 31 ], [ 15, 12, 1, 32 ], [ 15, 12, 1, 33 ], [ 15, 12, 1, 34 ], [ 15, 12, 1, 35 ], [ 15, 12, 1, 36 ], [ 15, 12, 2, 1 ], [ 15, 12, 2, 2 ], [ 15, 12, 2, 3 ], [ 15, 12, 2, 4 ], [ 16, 1, 1, 1 ], [ 16, 1, 1, 2 ], [ 16, 1, 2, 1 ], [ 16, 1, 2, 2 ], [ 16, 1, 2, 3 ], [ 16, 1, 3, 1 ], [ 17, 1, 1, 1 ], [ 17, 1, 2, 1 ], [ 17, 1, 3, 1 ], [ 17, 2, 1, 1 ], [ 17, 2, 2, 1 ], [ 18, 1, 1, 1 ], [ 18, 1, 2, 1 ], [ 18, 1, 2, 2 ], [ 18, 1, 2, 3 ], [ 18, 1, 3, 1 ], [ 18, 1, 3, 2 ], [ 18, 1, 3, 3 ], [ 18, 2, 1, 1 ], [ 18, 2, 1, 2 ], [ 18, 2, 2, 1 ], [ 18, 2, 2, 2 ], [ 18, 2, 2, 3 ], [ 18, 2, 2, 4 ], [ 18, 2, 2, 5 ], [ 18, 2, 2, 6 ], [ 18, 2, 3, 1 ], [ 18, 2, 3, 2 ], [ 18, 2, 3, 3 ], [ 18, 2, 3, 4 ], [ 18, 2, 3, 5 ], [ 18, 2, 3, 6 ], [ 18, 2, 3, 7 ], [ 18, 2, 3, 8 ], [ 18, 2, 3, 9 ], [ 18, 2, 3, 10 ], [ 18, 2, 3, 11 ], [ 18, 2, 3, 12 ], [ 18, 2, 4, 1 ], [ 18, 2, 4, 2 ], [ 18, 2, 4, 3 ], [ 18, 2, 5, 1 ], [ 18, 2, 5, 2 ], [ 18, 2, 5, 3 ], [ 18, 2, 5, 4 ], [ 18, 2, 5, 5 ], [ 18, 2, 5, 6 ], [ 18, 3, 1, 1 ], [ 18, 3, 1, 2 ], [ 18, 3, 2, 1 ], [ 18, 3, 2, 2 ], [ 18, 3, 2, 3 ], [ 18, 3, 3, 1 ], [ 18, 3, 3, 2 ], [ 18, 3, 3, 3 ], [ 18, 3, 3, 4 ], [ 18, 3, 3, 5 ], [ 18, 3, 3, 6 ], [ 18, 3, 4, 1 ], [ 18, 3, 4, 2 ], [ 18, 3, 4, 3 ], [ 18, 3, 4, 4 ], [ 18, 3, 4, 5 ], [ 18, 3, 4, 6 ], [ 18, 3, 4, 7 ], [ 18, 3, 5, 1 ], [ 18, 3, 5, 2 ], [ 18, 3, 5, 3 ], [ 18, 3, 6, 1 ], [ 18, 3, 6, 2 ], [ 18, 3, 7, 1 ], [ 18, 3, 7, 2 ], [ 18, 3, 7, 3 ], [ 18, 3, 7, 4 ], [ 18, 3, 7, 5 ], [ 18, 4, 1, 1 ], [ 18, 4, 1, 2 ], [ 18, 4, 2, 1 ], [ 18, 4, 2, 2 ], [ 18, 4, 2, 3 ], [ 18, 4, 2, 4 ], [ 18, 4, 2, 5 ], [ 18, 4, 2, 6 ], [ 18, 4, 2, 7 ], [ 18, 4, 3, 1 ], [ 18, 4, 3, 2 ], [ 18, 4, 3, 3 ], [ 18, 4, 3, 4 ], [ 18, 4, 3, 5 ], [ 18, 4, 3, 6 ], [ 18, 4, 4, 1 ], [ 18, 4, 4, 2 ], [ 18, 4, 5, 1 ], [ 18, 4, 5, 2 ], [ 18, 4, 5, 3 ], [ 18, 4, 5, 4 ], [ 18, 4, 5, 5 ], [ 18, 4, 5, 6 ], [ 18, 4, 5, 7 ], [ 18, 4, 5, 8 ], [ 18, 4, 5, 9 ], [ 18, 5, 1, 1 ], [ 18, 5, 1, 2 ], [ 18, 5, 1, 3 ], [ 18, 5, 2, 1 ], [ 18, 5, 2, 2 ], [ 18, 5, 2, 3 ], [ 18, 5, 2, 4 ], [ 18, 5, 2, 5 ], [ 18, 5, 2, 6 ], [ 18, 5, 2, 7 ], [ 18, 5, 2, 8 ], [ 18, 5, 2, 9 ], [ 18, 5, 2, 10 ], [ 18, 5, 3, 1 ], [ 18, 5, 3, 2 ], [ 18, 5, 3, 3 ], [ 18, 5, 3, 4 ], [ 18, 5, 3, 5 ], [ 18, 5, 3, 6 ], [ 18, 5, 3, 7 ], [ 18, 5, 3, 8 ], [ 18, 5, 3, 9 ], [ 18, 5, 3, 10 ], [ 18, 5, 3, 11 ], [ 18, 5, 3, 12 ], [ 18, 5, 3, 13 ], [ 18, 5, 3, 14 ], [ 18, 5, 3, 15 ], [ 18, 5, 3, 16 ], [ 18, 5, 3, 17 ], [ 18, 5, 3, 18 ], [ 18, 5, 3, 19 ], [ 18, 5, 3, 20 ], [ 18, 5, 3, 21 ], [ 18, 5, 3, 22 ], [ 18, 5, 3, 23 ], [ 18, 5, 3, 24 ], [ 18, 5, 4, 1 ], [ 18, 5, 4, 2 ], [ 18, 5, 4, 3 ], [ 18, 5, 4, 4 ], [ 18, 5, 4, 5 ], [ 18, 5, 4, 6 ], [ 18, 5, 4, 7 ], [ 18, 5, 4, 8 ], [ 18, 5, 4, 9 ], [ 18, 5, 4, 10 ], [ 18, 5, 4, 11 ], [ 18, 5, 4, 12 ], [ 18, 5, 4, 13 ], [ 18, 5, 4, 14 ], [ 18, 5, 4, 15 ], [ 18, 5, 4, 16 ], [ 18, 5, 4, 17 ], [ 18, 5, 4, 18 ], [ 18, 5, 4, 19 ], [ 18, 5, 4, 20 ], [ 18, 5, 4, 21 ], [ 18, 5, 4, 22 ], [ 18, 5, 4, 23 ], [ 18, 5, 4, 24 ], [ 18, 5, 5, 1 ], [ 18, 5, 5, 2 ], [ 18, 5, 5, 3 ], [ 18, 5, 5, 4 ], [ 18, 5, 5, 5 ], [ 18, 5, 5, 6 ], [ 18, 5, 6, 1 ], [ 18, 5, 6, 2 ], [ 18, 5, 6, 3 ], [ 18, 5, 6, 4 ], [ 18, 5, 7, 1 ], [ 18, 5, 7, 2 ], [ 18, 5, 7, 3 ], [ 18, 5, 7, 4 ], [ 18, 5, 7, 5 ], [ 18, 5, 7, 6 ], [ 18, 5, 7, 7 ], [ 18, 5, 7, 8 ], [ 18, 5, 7, 9 ], [ 18, 5, 7, 10 ], [ 18, 5, 7, 11 ], [ 18, 5, 7, 12 ], [ 18, 5, 7, 13 ], [ 18, 5, 7, 14 ], [ 19, 1, 1, 1 ], [ 19, 1, 1, 2 ], [ 19, 1, 1, 3 ], [ 19, 1, 1, 4 ], [ 19, 1, 2, 1 ], [ 19, 1, 2, 2 ], [ 19, 2, 1, 1 ], [ 19, 2, 1, 2 ], [ 19, 2, 1, 3 ], [ 19, 2, 2, 1 ], [ 19, 2, 2, 2 ], [ 19, 3, 1, 1 ], [ 19, 3, 1, 2 ], [ 19, 3, 1, 3 ], [ 19, 3, 1, 4 ], [ 19, 3, 1, 5 ], [ 19, 3, 1, 6 ], [ 19, 3, 1, 7 ], [ 19, 3, 1, 8 ], [ 19, 3, 1, 9 ], [ 19, 3, 1, 10 ], [ 19, 3, 1, 11 ], [ 19, 3, 1, 12 ], [ 19, 3, 1, 13 ], [ 19, 3, 1, 14 ], [ 19, 3, 1, 15 ], [ 19, 3, 1, 16 ], [ 19, 3, 2, 1 ], [ 19, 3, 2, 2 ], [ 19, 3, 2, 3 ], [ 19, 3, 2, 4 ], [ 19, 4, 1, 1 ], [ 19, 4, 1, 2 ], [ 19, 4, 1, 3 ], [ 19, 4, 1, 4 ], [ 19, 4, 1, 5 ], [ 19, 4, 1, 6 ], [ 19, 4, 1, 7 ], [ 19, 4, 1, 8 ], [ 19, 4, 1, 9 ], [ 19, 4, 1, 10 ], [ 19, 4, 1, 11 ], [ 19, 4, 1, 12 ], [ 19, 4, 1, 13 ], [ 19, 4, 1, 14 ], [ 19, 4, 1, 15 ], [ 19, 4, 1, 16 ], [ 19, 4, 2, 1 ], [ 19, 4, 2, 2 ], [ 19, 4, 2, 3 ], [ 19, 4, 2, 4 ], [ 19, 4, 2, 5 ], [ 19, 4, 2, 6 ], [ 19, 4, 2, 7 ], [ 19, 4, 2, 8 ], [ 19, 4, 2, 9 ], [ 19, 4, 2, 10 ], [ 19, 4, 2, 11 ], [ 19, 4, 2, 12 ], [ 19, 4, 2, 13 ], [ 19, 4, 2, 14 ], [ 19, 4, 2, 15 ], [ 19, 4, 2, 16 ], [ 19, 4, 3, 1 ], [ 19, 4, 3, 2 ], [ 19, 4, 3, 3 ], [ 19, 4, 3, 4 ], [ 19, 4, 4, 1 ], [ 19, 4, 4, 2 ], [ 19, 4, 4, 3 ], [ 19, 4, 4, 4 ], [ 19, 5, 1, 1 ], [ 19, 5, 1, 2 ], [ 19, 5, 1, 3 ], [ 19, 5, 1, 4 ], [ 19, 5, 1, 5 ], [ 19, 5, 1, 6 ], [ 19, 5, 1, 7 ], [ 19, 5, 1, 8 ], [ 19, 5, 1, 9 ], [ 19, 5, 1, 10 ], [ 19, 5, 2, 1 ], [ 19, 5, 2, 2 ], [ 19, 5, 2, 3 ], [ 19, 5, 2, 4 ], [ 19, 6, 1, 1 ], [ 19, 6, 1, 2 ], [ 19, 6, 1, 3 ], [ 19, 6, 1, 4 ], [ 19, 6, 1, 5 ], [ 19, 6, 1, 6 ], [ 19, 6, 1, 7 ], [ 19, 6, 1, 8 ], [ 19, 6, 1, 9 ], [ 19, 6, 1, 10 ], [ 19, 6, 1, 11 ], [ 19, 6, 1, 12 ], [ 19, 6, 1, 13 ], [ 19, 6, 1, 14 ], [ 19, 6, 1, 15 ], [ 19, 6, 1, 16 ], [ 19, 6, 1, 17 ], [ 19, 6, 1, 18 ], [ 19, 6, 1, 19 ], [ 19, 6, 1, 20 ], [ 19, 6, 1, 21 ], [ 19, 6, 1, 22 ], [ 19, 6, 1, 23 ], [ 19, 6, 1, 24 ], [ 19, 6, 1, 25 ], [ 19, 6, 1, 26 ], [ 19, 6, 1, 27 ], [ 19, 6, 1, 28 ], [ 19, 6, 1, 29 ], [ 19, 6, 1, 30 ], [ 19, 6, 1, 31 ], [ 19, 6, 1, 32 ], [ 19, 6, 1, 33 ], [ 19, 6, 1, 34 ], [ 19, 6, 1, 35 ], [ 19, 6, 1, 36 ], [ 19, 6, 2, 1 ], [ 19, 6, 2, 2 ], [ 19, 6, 2, 3 ], [ 19, 6, 2, 4 ], [ 19, 6, 2, 5 ], [ 19, 6, 2, 6 ], [ 20, 1, 1, 1 ], [ 20, 2, 1, 1 ], [ 20, 3, 1, 1 ], [ 20, 3, 2, 1 ], [ 20, 4, 1, 1 ], [ 20, 4, 1, 2 ], [ 20, 4, 2, 1 ], [ 20, 4, 2, 2 ], [ 20, 5, 1, 1 ], [ 20, 5, 1, 2 ], [ 20, 6, 1, 1 ], [ 20, 6, 1, 2 ], [ 20, 7, 1, 1 ], [ 20, 7, 1, 2 ], [ 20, 7, 2, 1 ], [ 20, 7, 2, 2 ], [ 20, 8, 1, 1 ], [ 20, 8, 1, 2 ], [ 20, 9, 1, 1 ], [ 20, 9, 1, 2 ], [ 20, 9, 2, 1 ], [ 20, 9, 2, 2 ], [ 20, 10, 1, 1 ], [ 20, 10, 1, 2 ], [ 20, 10, 2, 1 ], [ 20, 10, 2, 2 ], [ 20, 11, 1, 1 ], [ 20, 11, 1, 2 ], [ 20, 11, 2, 1 ], [ 20, 11, 2, 2 ], [ 20, 12, 1, 1 ], [ 20, 12, 1, 2 ], [ 20, 12, 2, 1 ], [ 20, 12, 2, 2 ], [ 20, 12, 3, 1 ], [ 20, 12, 3, 2 ], [ 20, 12, 4, 1 ], [ 20, 12, 4, 2 ], [ 20, 13, 1, 1 ], [ 20, 13, 1, 2 ], [ 20, 13, 2, 1 ], [ 20, 13, 2, 2 ], [ 20, 13, 3, 1 ], [ 20, 13, 3, 2 ], [ 20, 13, 4, 1 ], [ 20, 13, 4, 2 ], [ 20, 14, 1, 1 ], [ 20, 14, 1, 2 ], [ 20, 15, 1, 1 ], [ 20, 15, 1, 2 ], [ 20, 15, 1, 3 ], [ 20, 15, 1, 4 ], [ 20, 16, 1, 1 ], [ 20, 16, 1, 2 ], [ 20, 16, 1, 3 ], [ 20, 16, 1, 4 ], [ 20, 16, 2, 1 ], [ 20, 16, 2, 2 ], [ 20, 16, 2, 3 ], [ 20, 16, 2, 4 ], [ 20, 17, 1, 1 ], [ 20, 17, 1, 2 ], [ 20, 17, 1, 3 ], [ 20, 17, 1, 4 ], [ 20, 17, 2, 1 ], [ 20, 17, 2, 2 ], [ 20, 17, 2, 3 ], [ 20, 17, 2, 4 ], [ 20, 18, 1, 1 ], [ 20, 18, 1, 2 ], [ 20, 18, 1, 3 ], [ 20, 18, 1, 4 ], [ 20, 19, 1, 1 ], [ 20, 19, 1, 2 ], [ 20, 19, 1, 3 ], [ 20, 19, 1, 4 ], [ 20, 20, 1, 1 ], [ 20, 20, 1, 2 ], [ 20, 20, 1, 3 ], [ 20, 20, 1, 4 ], [ 20, 20, 2, 1 ], [ 20, 20, 2, 2 ], [ 20, 20, 2, 3 ], [ 20, 20, 2, 4 ], [ 20, 20, 3, 1 ], [ 20, 20, 3, 2 ], [ 20, 20, 3, 3 ], [ 20, 20, 3, 4 ], [ 20, 20, 4, 1 ], [ 20, 20, 4, 2 ], [ 20, 20, 4, 3 ], [ 20, 20, 4, 4 ], [ 20, 21, 1, 1 ], [ 20, 21, 1, 2 ], [ 20, 21, 1, 3 ], [ 20, 21, 1, 4 ], [ 20, 21, 2, 1 ], [ 20, 21, 2, 2 ], [ 20, 21, 2, 3 ], [ 20, 21, 2, 4 ], [ 20, 22, 1, 1 ], [ 20, 22, 1, 2 ], [ 20, 22, 1, 3 ], [ 20, 22, 1, 4 ], [ 20, 22, 1, 5 ], [ 20, 22, 1, 6 ], [ 20, 22, 1, 7 ], [ 20, 22, 1, 8 ], [ 21, 1, 1, 1 ], [ 21, 1, 2, 1 ], [ 21, 2, 1, 1 ], [ 21, 2, 2, 1 ], [ 21, 3, 1, 1 ], [ 21, 3, 2, 1 ], [ 21, 3, 3, 1 ], [ 21, 3, 4, 1 ], [ 21, 4, 1, 1 ], [ 21, 4, 2, 1 ], [ 22, 1, 1, 1 ], [ 22, 1, 1, 2 ], [ 22, 1, 2, 1 ], [ 22, 1, 2, 2 ], [ 22, 1, 2, 3 ], [ 22, 2, 1, 1 ], [ 22, 2, 2, 1 ], [ 22, 3, 1, 1 ], [ 22, 3, 2, 1 ], [ 22, 3, 3, 1 ], [ 22, 3, 3, 2 ], [ 22, 4, 1, 1 ], [ 22, 4, 1, 2 ], [ 22, 4, 2, 1 ], [ 22, 4, 2, 2 ], [ 22, 4, 2, 3 ], [ 22, 4, 2, 4 ], [ 22, 4, 3, 1 ], [ 22, 4, 3, 2 ], [ 22, 5, 1, 1 ], [ 22, 5, 1, 2 ], [ 22, 5, 2, 1 ], [ 22, 5, 3, 1 ], [ 22, 5, 4, 1 ], [ 22, 5, 4, 2 ], [ 22, 5, 4, 3 ], [ 22, 5, 5, 1 ], [ 22, 5, 5, 2 ], [ 22, 6, 1, 1 ], [ 22, 6, 2, 1 ], [ 22, 6, 3, 1 ], [ 22, 7, 1, 1 ], [ 22, 7, 2, 1 ], [ 22, 7, 3, 1 ], [ 22, 8, 1, 1 ], [ 22, 8, 2, 1 ], [ 22, 8, 3, 1 ], [ 22, 8, 4, 1 ], [ 22, 9, 1, 1 ], [ 22, 9, 2, 1 ], [ 22, 9, 3, 1 ], [ 22, 9, 4, 1 ], [ 22, 9, 4, 2 ], [ 22, 9, 5, 1 ], [ 22, 9, 5, 2 ], [ 22, 10, 1, 1 ], [ 22, 10, 1, 2 ], [ 22, 10, 2, 1 ], [ 22, 10, 2, 2 ], [ 22, 10, 2, 3 ], [ 22, 10, 3, 1 ], [ 22, 10, 3, 2 ], [ 22, 10, 4, 1 ], [ 22, 11, 1, 1 ], [ 22, 11, 2, 1 ], [ 22, 11, 3, 1 ], [ 22, 11, 4, 1 ], [ 23, 1, 1, 1 ], [ 23, 1, 1, 2 ], [ 23, 2, 1, 1 ], [ 23, 3, 1, 1 ], [ 23, 3, 1, 2 ], [ 23, 4, 1, 1 ], [ 23, 5, 1, 1 ], [ 23, 5, 2, 1 ], [ 23, 5, 2, 2 ], [ 23, 6, 1, 1 ], [ 23, 6, 2, 1 ], [ 23, 6, 2, 2 ], [ 23, 7, 1, 1 ], [ 23, 8, 1, 1 ], [ 23, 9, 1, 1 ], [ 23, 9, 2, 1 ], [ 23, 9, 2, 2 ], [ 23, 10, 1, 1 ], [ 23, 10, 2, 1 ], [ 23, 11, 1, 1 ], [ 24, 1, 1, 1 ], [ 24, 1, 1, 2 ], [ 24, 1, 2, 1 ], [ 24, 1, 2, 2 ], [ 24, 1, 2, 3 ], [ 24, 1, 2, 4 ], [ 24, 1, 3, 1 ], [ 24, 1, 3, 2 ], [ 24, 1, 3, 3 ], [ 24, 1, 3, 4 ], [ 24, 1, 4, 1 ], [ 24, 1, 4, 2 ], [ 24, 1, 4, 3 ], [ 24, 1, 4, 4 ], [ 24, 1, 5, 1 ], [ 24, 1, 5, 2 ], [ 24, 1, 6, 1 ], [ 24, 1, 6, 2 ], [ 24, 2, 1, 1 ], [ 24, 2, 2, 1 ], [ 24, 2, 2, 2 ], [ 24, 2, 2, 3 ], [ 24, 2, 3, 1 ], [ 24, 2, 3, 2 ], [ 24, 2, 4, 1 ], [ 24, 2, 4, 2 ], [ 24, 2, 5, 1 ], [ 24, 2, 5, 2 ], [ 24, 2, 6, 1 ], [ 24, 2, 6, 2 ], [ 24, 3, 1, 1 ], [ 24, 3, 1, 2 ], [ 24, 3, 2, 1 ], [ 24, 3, 2, 2 ], [ 24, 3, 2, 3 ], [ 24, 3, 2, 4 ], [ 24, 3, 3, 1 ], [ 24, 3, 3, 2 ], [ 24, 3, 3, 3 ], [ 24, 3, 3, 4 ], [ 24, 3, 4, 1 ], [ 24, 3, 4, 2 ], [ 24, 3, 4, 3 ], [ 24, 3, 5, 1 ], [ 24, 3, 5, 2 ], [ 24, 3, 5, 3 ], [ 24, 3, 5, 4 ], [ 24, 3, 6, 1 ], [ 24, 3, 6, 2 ], [ 24, 3, 6, 3 ], [ 24, 4, 1, 1 ], [ 24, 4, 1, 2 ], [ 24, 4, 2, 1 ], [ 24, 4, 2, 2 ], [ 24, 4, 2, 3 ], [ 24, 4, 2, 4 ], [ 24, 4, 2, 5 ], [ 24, 4, 2, 6 ], [ 24, 4, 3, 1 ], [ 24, 4, 3, 2 ], [ 24, 4, 3, 3 ], [ 24, 4, 3, 4 ], [ 24, 4, 4, 1 ], [ 24, 4, 4, 2 ], [ 24, 4, 4, 3 ], [ 24, 4, 4, 4 ], [ 24, 4, 5, 1 ], [ 24, 4, 5, 2 ], [ 24, 4, 5, 3 ], [ 24, 4, 5, 4 ], [ 24, 4, 6, 1 ], [ 24, 4, 6, 2 ], [ 24, 4, 6, 3 ], [ 24, 4, 6, 4 ], [ 24, 5, 1, 1 ], [ 24, 5, 1, 2 ], [ 24, 5, 2, 1 ], [ 24, 5, 2, 2 ], [ 24, 5, 2, 3 ], [ 24, 5, 2, 4 ], [ 24, 5, 2, 5 ], [ 24, 5, 2, 6 ], [ 24, 5, 2, 7 ], [ 24, 5, 2, 8 ], [ 24, 5, 3, 1 ], [ 24, 5, 3, 2 ], [ 24, 5, 3, 3 ], [ 24, 5, 3, 4 ], [ 24, 5, 4, 1 ], [ 24, 5, 4, 2 ], [ 24, 5, 4, 3 ], [ 24, 5, 5, 1 ], [ 24, 5, 5, 2 ], [ 24, 5, 5, 3 ], [ 24, 5, 5, 4 ], [ 24, 5, 5, 5 ], [ 24, 5, 5, 6 ], [ 24, 5, 5, 7 ], [ 24, 5, 5, 8 ], [ 24, 5, 6, 1 ], [ 24, 5, 6, 2 ], [ 24, 5, 6, 3 ], [ 24, 5, 6, 4 ], [ 24, 5, 6, 5 ], [ 24, 5, 6, 6 ], [ 25, 1, 1, 1 ], [ 25, 1, 1, 2 ], [ 25, 1, 1, 3 ], [ 25, 1, 1, 4 ], [ 25, 1, 1, 5 ], [ 25, 1, 1, 6 ], [ 25, 1, 1, 7 ], [ 25, 1, 1, 8 ], [ 25, 1, 1, 9 ], [ 25, 1, 1, 10 ], [ 25, 1, 1, 11 ], [ 25, 1, 1, 12 ], [ 25, 1, 2, 1 ], [ 25, 1, 2, 2 ], [ 25, 1, 2, 3 ], [ 25, 1, 2, 4 ], [ 25, 1, 2, 5 ], [ 25, 1, 2, 6 ], [ 25, 1, 2, 7 ], [ 25, 1, 2, 8 ], [ 25, 1, 3, 1 ], [ 25, 1, 3, 2 ], [ 25, 1, 3, 3 ], [ 25, 1, 3, 4 ], [ 25, 1, 3, 5 ], [ 25, 1, 3, 6 ], [ 25, 1, 4, 1 ], [ 25, 1, 4, 2 ], [ 25, 1, 4, 3 ], [ 25, 1, 4, 4 ], [ 25, 1, 4, 5 ], [ 25, 1, 4, 6 ], [ 25, 1, 4, 7 ], [ 25, 1, 4, 8 ], [ 25, 1, 5, 1 ], [ 25, 1, 5, 2 ], [ 25, 1, 5, 3 ], [ 25, 1, 5, 4 ], [ 25, 2, 1, 1 ], [ 25, 2, 1, 2 ], [ 25, 2, 1, 3 ], [ 25, 2, 1, 4 ], [ 25, 2, 2, 1 ], [ 25, 2, 2, 2 ], [ 25, 2, 3, 1 ], [ 25, 2, 3, 2 ], [ 25, 2, 4, 1 ], [ 25, 2, 4, 2 ], [ 25, 2, 5, 1 ], [ 25, 3, 1, 1 ], [ 25, 3, 1, 2 ], [ 25, 3, 1, 3 ], [ 25, 3, 1, 4 ], [ 25, 3, 1, 5 ], [ 25, 3, 1, 6 ], [ 25, 3, 2, 1 ], [ 25, 3, 2, 2 ], [ 25, 3, 2, 3 ], [ 25, 3, 2, 4 ], [ 25, 3, 3, 1 ], [ 25, 3, 3, 2 ], [ 25, 3, 3, 3 ], [ 25, 3, 4, 1 ], [ 25, 3, 4, 2 ], [ 25, 3, 4, 3 ], [ 25, 3, 4, 4 ], [ 25, 3, 5, 1 ], [ 25, 3, 5, 2 ], [ 25, 4, 1, 1 ], [ 25, 4, 1, 2 ], [ 25, 4, 1, 3 ], [ 25, 4, 1, 4 ], [ 25, 4, 2, 1 ], [ 25, 4, 2, 2 ], [ 25, 4, 2, 3 ], [ 25, 4, 2, 4 ], [ 25, 4, 3, 1 ], [ 25, 4, 3, 2 ], [ 25, 4, 4, 1 ], [ 25, 4, 4, 2 ], [ 25, 4, 4, 3 ], [ 25, 4, 4, 4 ], [ 25, 4, 5, 1 ], [ 25, 4, 5, 2 ], [ 25, 5, 1, 1 ], [ 25, 5, 1, 2 ], [ 25, 5, 1, 3 ], [ 25, 5, 1, 4 ], [ 25, 5, 1, 5 ], [ 25, 5, 1, 6 ], [ 25, 5, 1, 7 ], [ 25, 5, 1, 8 ], [ 25, 5, 1, 9 ], [ 25, 5, 1, 10 ], [ 25, 5, 1, 11 ], [ 25, 5, 1, 12 ], [ 25, 5, 2, 1 ], [ 25, 5, 2, 2 ], [ 25, 5, 2, 3 ], [ 25, 5, 2, 4 ], [ 25, 5, 3, 1 ], [ 25, 5, 3, 2 ], [ 25, 5, 3, 3 ], [ 25, 5, 4, 1 ], [ 25, 5, 4, 2 ], [ 25, 5, 4, 3 ], [ 25, 5, 4, 4 ], [ 25, 5, 4, 5 ], [ 25, 5, 4, 6 ], [ 25, 5, 4, 7 ], [ 25, 5, 4, 8 ], [ 25, 5, 5, 1 ], [ 25, 5, 5, 2 ], [ 25, 6, 1, 1 ], [ 25, 6, 1, 2 ], [ 25, 6, 1, 3 ], [ 25, 6, 1, 4 ], [ 25, 6, 1, 5 ], [ 25, 6, 1, 6 ], [ 25, 6, 1, 7 ], [ 25, 6, 1, 8 ], [ 25, 6, 2, 1 ], [ 25, 6, 2, 2 ], [ 25, 6, 2, 3 ], [ 25, 6, 2, 4 ], [ 25, 6, 3, 1 ], [ 25, 6, 3, 2 ], [ 25, 6, 4, 1 ], [ 25, 6, 4, 2 ], [ 25, 6, 4, 3 ], [ 25, 6, 4, 4 ], [ 25, 6, 4, 5 ], [ 25, 6, 4, 6 ], [ 25, 6, 4, 7 ], [ 25, 6, 4, 8 ], [ 25, 6, 5, 1 ], [ 25, 6, 5, 2 ], [ 25, 7, 1, 1 ], [ 25, 7, 1, 2 ], [ 25, 7, 1, 3 ], [ 25, 7, 1, 4 ], [ 25, 7, 1, 5 ], [ 25, 7, 1, 6 ], [ 25, 7, 1, 7 ], [ 25, 7, 1, 8 ], [ 25, 7, 1, 9 ], [ 25, 7, 1, 10 ], [ 25, 7, 1, 11 ], [ 25, 7, 1, 12 ], [ 25, 7, 1, 13 ], [ 25, 7, 1, 14 ], [ 25, 7, 1, 15 ], [ 25, 7, 1, 16 ], [ 25, 7, 2, 1 ], [ 25, 7, 2, 2 ], [ 25, 7, 2, 3 ], [ 25, 7, 2, 4 ], [ 25, 7, 2, 5 ], [ 25, 7, 2, 6 ], [ 25, 7, 2, 7 ], [ 25, 7, 2, 8 ], [ 25, 7, 3, 1 ], [ 25, 7, 3, 2 ], [ 25, 7, 3, 3 ], [ 25, 7, 3, 4 ], [ 25, 7, 4, 1 ], [ 25, 7, 4, 2 ], [ 25, 7, 4, 3 ], [ 25, 7, 4, 4 ], [ 25, 7, 4, 5 ], [ 25, 7, 4, 6 ], [ 25, 7, 4, 7 ], [ 25, 7, 4, 8 ], [ 25, 7, 4, 9 ], [ 25, 7, 4, 10 ], [ 25, 7, 4, 11 ], [ 25, 7, 4, 12 ], [ 25, 7, 4, 13 ], [ 25, 7, 4, 14 ], [ 25, 7, 4, 15 ], [ 25, 7, 4, 16 ], [ 25, 7, 5, 1 ], [ 25, 7, 5, 2 ], [ 25, 7, 5, 3 ], [ 25, 7, 5, 4 ], [ 25, 8, 1, 1 ], [ 25, 8, 1, 2 ], [ 25, 8, 1, 3 ], [ 25, 8, 1, 4 ], [ 25, 8, 1, 5 ], [ 25, 8, 1, 6 ], [ 25, 8, 1, 7 ], [ 25, 8, 1, 8 ], [ 25, 8, 1, 9 ], [ 25, 8, 1, 10 ], [ 25, 8, 1, 11 ], [ 25, 8, 1, 12 ], [ 25, 8, 1, 13 ], [ 25, 8, 1, 14 ], [ 25, 8, 1, 15 ], [ 25, 8, 1, 16 ], [ 25, 8, 2, 1 ], [ 25, 8, 2, 2 ], [ 25, 8, 2, 3 ], [ 25, 8, 2, 4 ], [ 25, 8, 2, 5 ], [ 25, 8, 2, 6 ], [ 25, 8, 2, 7 ], [ 25, 8, 2, 8 ], [ 25, 8, 3, 1 ], [ 25, 8, 3, 2 ], [ 25, 8, 3, 3 ], [ 25, 8, 3, 4 ], [ 25, 8, 4, 1 ], [ 25, 8, 4, 2 ], [ 25, 8, 4, 3 ], [ 25, 8, 4, 4 ], [ 25, 8, 4, 5 ], [ 25, 8, 4, 6 ], [ 25, 8, 4, 7 ], [ 25, 8, 4, 8 ], [ 25, 8, 4, 9 ], [ 25, 8, 4, 10 ], [ 25, 8, 4, 11 ], [ 25, 8, 4, 12 ], [ 25, 8, 4, 13 ], [ 25, 8, 4, 14 ], [ 25, 8, 4, 15 ], [ 25, 8, 4, 16 ], [ 25, 8, 5, 1 ], [ 25, 8, 5, 2 ], [ 25, 8, 5, 3 ], [ 25, 8, 5, 4 ], [ 25, 9, 1, 1 ], [ 25, 9, 1, 2 ], [ 25, 9, 1, 3 ], [ 25, 9, 1, 4 ], [ 25, 9, 1, 5 ], [ 25, 9, 1, 6 ], [ 25, 9, 1, 7 ], [ 25, 9, 1, 8 ], [ 25, 9, 2, 1 ], [ 25, 9, 2, 2 ], [ 25, 9, 2, 3 ], [ 25, 9, 2, 4 ], [ 25, 9, 3, 1 ], [ 25, 9, 3, 2 ], [ 25, 9, 4, 1 ], [ 25, 9, 4, 2 ], [ 25, 9, 4, 3 ], [ 25, 9, 4, 4 ], [ 25, 9, 4, 5 ], [ 25, 9, 4, 6 ], [ 25, 9, 4, 7 ], [ 25, 9, 4, 8 ], [ 25, 9, 5, 1 ], [ 25, 9, 5, 2 ], [ 25, 10, 1, 1 ], [ 25, 10, 1, 2 ], [ 25, 10, 1, 3 ], [ 25, 10, 1, 4 ], [ 25, 10, 1, 5 ], [ 25, 10, 1, 6 ], [ 25, 10, 1, 7 ], [ 25, 10, 1, 8 ], [ 25, 10, 1, 9 ], [ 25, 10, 1, 10 ], [ 25, 10, 1, 11 ], [ 25, 10, 1, 12 ], [ 25, 10, 2, 1 ], [ 25, 10, 2, 2 ], [ 25, 10, 2, 3 ], [ 25, 10, 2, 4 ], [ 25, 10, 3, 1 ], [ 25, 10, 3, 2 ], [ 25, 10, 3, 3 ], [ 25, 10, 4, 1 ], [ 25, 10, 4, 2 ], [ 25, 10, 4, 3 ], [ 25, 10, 4, 4 ], [ 25, 10, 4, 5 ], [ 25, 10, 4, 6 ], [ 25, 10, 4, 7 ], [ 25, 10, 4, 8 ], [ 25, 10, 5, 1 ], [ 25, 10, 5, 2 ], [ 25, 11, 1, 1 ], [ 25, 11, 1, 2 ], [ 25, 11, 1, 3 ], [ 25, 11, 1, 4 ], [ 25, 11, 1, 5 ], [ 25, 11, 1, 6 ], [ 25, 11, 1, 7 ], [ 25, 11, 1, 8 ], [ 25, 11, 1, 9 ], [ 25, 11, 1, 10 ], [ 25, 11, 1, 11 ], [ 25, 11, 1, 12 ], [ 25, 11, 1, 13 ], [ 25, 11, 1, 14 ], [ 25, 11, 1, 15 ], [ 25, 11, 1, 16 ], [ 25, 11, 1, 17 ], [ 25, 11, 1, 18 ], [ 25, 11, 1, 19 ], [ 25, 11, 1, 20 ], [ 25, 11, 1, 21 ], [ 25, 11, 1, 22 ], [ 25, 11, 1, 23 ], [ 25, 11, 1, 24 ], [ 25, 11, 1, 25 ], [ 25, 11, 1, 26 ], [ 25, 11, 1, 27 ], [ 25, 11, 1, 28 ], [ 25, 11, 1, 29 ], [ 25, 11, 1, 30 ], [ 25, 11, 1, 31 ], [ 25, 11, 1, 32 ], [ 25, 11, 2, 1 ], [ 25, 11, 2, 2 ], [ 25, 11, 2, 3 ], [ 25, 11, 2, 4 ], [ 25, 11, 2, 5 ], [ 25, 11, 2, 6 ], [ 25, 11, 2, 7 ], [ 25, 11, 2, 8 ], [ 25, 11, 3, 1 ], [ 25, 11, 3, 2 ], [ 25, 11, 3, 3 ], [ 25, 11, 3, 4 ], [ 25, 11, 4, 1 ], [ 25, 11, 4, 2 ], [ 25, 11, 4, 3 ], [ 25, 11, 4, 4 ], [ 25, 11, 4, 5 ], [ 25, 11, 4, 6 ], [ 25, 11, 4, 7 ], [ 25, 11, 4, 8 ], [ 25, 11, 4, 9 ], [ 25, 11, 4, 10 ], [ 25, 11, 4, 11 ], [ 25, 11, 4, 12 ], [ 25, 11, 4, 13 ], [ 25, 11, 4, 14 ], [ 25, 11, 4, 15 ], [ 25, 11, 4, 16 ], [ 25, 11, 4, 17 ], [ 25, 11, 4, 18 ], [ 25, 11, 4, 19 ], [ 25, 11, 4, 20 ], [ 25, 11, 4, 21 ], [ 25, 11, 4, 22 ], [ 25, 11, 4, 23 ], [ 25, 11, 4, 24 ], [ 25, 11, 4, 25 ], [ 25, 11, 4, 26 ], [ 25, 11, 4, 27 ], [ 25, 11, 4, 28 ], [ 25, 11, 4, 29 ], [ 25, 11, 4, 30 ], [ 25, 11, 4, 31 ], [ 25, 11, 4, 32 ], [ 25, 11, 5, 1 ], [ 25, 11, 5, 2 ], [ 25, 11, 5, 3 ], [ 25, 11, 5, 4 ], [ 26, 1, 1, 1 ], [ 26, 2, 1, 1 ], [ 26, 2, 1, 2 ], [ 27, 1, 1, 1 ], [ 27, 2, 1, 1 ], [ 27, 3, 1, 1 ], [ 27, 3, 2, 1 ], [ 27, 4, 1, 1 ], [ 28, 1, 1, 1 ], [ 28, 2, 1, 1 ], [ 29, 1, 1, 1 ], [ 29, 1, 2, 1 ], [ 29, 1, 2, 2 ], [ 29, 1, 3, 1 ], [ 29, 1, 3, 2 ], [ 29, 2, 1, 1 ], [ 29, 2, 2, 1 ], [ 29, 3, 1, 1 ], [ 29, 3, 2, 1 ], [ 29, 3, 2, 2 ], [ 29, 3, 3, 1 ], [ 29, 3, 4, 1 ], [ 29, 3, 5, 1 ], [ 29, 3, 5, 2 ], [ 29, 4, 1, 1 ], [ 29, 4, 1, 2 ], [ 29, 4, 2, 1 ], [ 29, 4, 3, 1 ], [ 29, 4, 4, 1 ], [ 29, 4, 4, 2 ], [ 29, 5, 1, 1 ], [ 29, 5, 2, 1 ], [ 29, 6, 1, 1 ], [ 29, 6, 2, 1 ], [ 29, 6, 3, 1 ], [ 29, 7, 1, 1 ], [ 29, 7, 2, 1 ], [ 29, 7, 3, 1 ], [ 29, 7, 4, 1 ], [ 29, 8, 1, 1 ], [ 29, 8, 2, 1 ], [ 29, 8, 2, 2 ], [ 29, 8, 3, 1 ], [ 29, 8, 3, 2 ], [ 29, 8, 4, 1 ], [ 29, 9, 1, 1 ], [ 29, 9, 2, 1 ], [ 29, 9, 3, 1 ], [ 30, 1, 1, 1 ], [ 30, 2, 1, 1 ], [ 30, 3, 1, 1 ], [ 30, 4, 1, 1 ], [ 30, 4, 2, 1 ], [ 30, 5, 1, 1 ], [ 30, 6, 1, 1 ], [ 30, 7, 1, 1 ], [ 30, 8, 1, 1 ], [ 30, 9, 1, 1 ], [ 30, 10, 1, 1 ], [ 30, 11, 1, 1 ], [ 30, 12, 1, 1 ], [ 30, 12, 2, 1 ], [ 30, 13, 1, 1 ], [ 31, 1, 1, 1 ], [ 31, 1, 2, 1 ], [ 31, 1, 3, 1 ], [ 31, 1, 4, 1 ], [ 31, 2, 1, 1 ], [ 31, 2, 2, 1 ], [ 31, 3, 1, 1 ], [ 31, 3, 1, 2 ], [ 31, 3, 2, 1 ], [ 31, 3, 2, 2 ], [ 31, 4, 1, 1 ], [ 31, 4, 2, 1 ], [ 31, 5, 1, 1 ], [ 31, 5, 1, 2 ], [ 31, 5, 2, 1 ], [ 31, 5, 2, 2 ], [ 31, 6, 1, 1 ], [ 31, 6, 2, 1 ], [ 31, 7, 1, 1 ], [ 31, 7, 2, 1 ], [ 32, 1, 1, 1 ], [ 32, 1, 2, 1 ], [ 32, 1, 2, 2 ], [ 32, 2, 1, 1 ], [ 32, 2, 1, 2 ], [ 32, 2, 2, 1 ], [ 32, 2, 2, 2 ], [ 32, 3, 1, 1 ], [ 32, 3, 1, 2 ], [ 32, 3, 2, 1 ], [ 32, 3, 2, 2 ], [ 32, 4, 1, 1 ], [ 32, 4, 1, 2 ], [ 32, 4, 2, 1 ], [ 32, 4, 2, 2 ], [ 32, 4, 2, 3 ], [ 32, 4, 2, 4 ], [ 32, 4, 2, 5 ], [ 32, 4, 2, 6 ], [ 32, 5, 1, 1 ], [ 32, 5, 2, 1 ], [ 32, 5, 3, 1 ], [ 32, 6, 1, 1 ], [ 32, 6, 1, 2 ], [ 32, 6, 1, 3 ], [ 32, 6, 2, 1 ], [ 32, 6, 2, 2 ], [ 32, 6, 2, 3 ], [ 32, 6, 2, 4 ], [ 32, 7, 1, 1 ], [ 32, 7, 1, 2 ], [ 32, 7, 1, 3 ], [ 32, 7, 2, 1 ], [ 32, 7, 2, 2 ], [ 32, 7, 2, 3 ], [ 32, 7, 2, 4 ], [ 32, 8, 1, 1 ], [ 32, 8, 1, 2 ], [ 32, 8, 2, 1 ], [ 32, 8, 2, 2 ], [ 32, 8, 2, 3 ], [ 32, 8, 2, 4 ], [ 32, 9, 1, 1 ], [ 32, 9, 1, 2 ], [ 32, 9, 2, 1 ], [ 32, 9, 2, 2 ], [ 32, 9, 2, 3 ], [ 32, 9, 3, 1 ], [ 32, 9, 3, 2 ], [ 32, 9, 3, 3 ], [ 32, 9, 4, 1 ], [ 32, 9, 4, 2 ], [ 32, 9, 4, 3 ], [ 32, 9, 4, 4 ], [ 32, 9, 4, 5 ], [ 32, 9, 4, 6 ], [ 32, 9, 5, 1 ], [ 32, 9, 5, 2 ], [ 32, 9, 5, 3 ], [ 32, 9, 5, 4 ], [ 32, 9, 5, 5 ], [ 32, 9, 5, 6 ], [ 32, 10, 1, 1 ], [ 32, 10, 1, 2 ], [ 32, 10, 2, 1 ], [ 32, 10, 2, 2 ], [ 32, 10, 2, 3 ], [ 32, 10, 2, 4 ], [ 32, 10, 2, 5 ], [ 32, 10, 2, 6 ], [ 32, 10, 2, 7 ], [ 32, 11, 1, 1 ], [ 32, 11, 1, 2 ], [ 32, 11, 2, 1 ], [ 32, 11, 3, 1 ], [ 32, 12, 1, 1 ], [ 32, 12, 1, 2 ], [ 32, 12, 1, 3 ], [ 32, 12, 1, 4 ], [ 32, 12, 2, 1 ], [ 32, 12, 2, 2 ], [ 32, 12, 2, 3 ], [ 32, 12, 2, 4 ], [ 32, 12, 2, 5 ], [ 32, 12, 2, 6 ], [ 32, 13, 1, 1 ], [ 32, 13, 1, 2 ], [ 32, 13, 1, 3 ], [ 32, 13, 1, 4 ], [ 32, 13, 2, 1 ], [ 32, 13, 2, 2 ], [ 32, 13, 2, 3 ], [ 32, 13, 2, 4 ], [ 32, 13, 2, 5 ], [ 32, 13, 2, 6 ], [ 32, 13, 3, 1 ], [ 32, 13, 3, 2 ], [ 32, 13, 3, 3 ], [ 32, 13, 3, 4 ], [ 32, 13, 3, 5 ], [ 32, 13, 3, 6 ], [ 32, 13, 4, 1 ], [ 32, 13, 4, 2 ], [ 32, 13, 4, 3 ], [ 32, 13, 4, 4 ], [ 32, 14, 1, 1 ], [ 32, 14, 1, 2 ], [ 32, 14, 1, 3 ], [ 32, 14, 1, 4 ], [ 32, 14, 2, 1 ], [ 32, 14, 2, 2 ], [ 32, 14, 2, 3 ], [ 32, 14, 2, 4 ], [ 32, 14, 3, 1 ], [ 32, 14, 3, 2 ], [ 32, 14, 3, 3 ], [ 32, 14, 3, 4 ], [ 32, 14, 3, 5 ], [ 32, 14, 4, 1 ], [ 32, 14, 4, 2 ], [ 32, 14, 4, 3 ], [ 32, 14, 4, 4 ], [ 32, 14, 4, 5 ], [ 32, 14, 4, 6 ], [ 32, 14, 4, 7 ], [ 32, 14, 4, 8 ], [ 32, 14, 4, 9 ], [ 32, 14, 4, 10 ], [ 32, 15, 1, 1 ], [ 32, 15, 1, 2 ], [ 32, 15, 1, 3 ], [ 32, 15, 1, 4 ], [ 32, 15, 2, 1 ], [ 32, 15, 2, 2 ], [ 32, 15, 2, 3 ], [ 32, 15, 2, 4 ], [ 32, 16, 1, 1 ], [ 32, 16, 2, 1 ], [ 32, 16, 2, 2 ], [ 32, 16, 3, 1 ], [ 32, 17, 1, 1 ], [ 32, 17, 1, 2 ], [ 32, 17, 1, 3 ], [ 32, 17, 1, 4 ], [ 32, 17, 1, 5 ], [ 32, 17, 1, 6 ], [ 32, 17, 1, 7 ], [ 32, 17, 1, 8 ], [ 32, 17, 2, 1 ], [ 32, 17, 2, 2 ], [ 32, 17, 2, 3 ], [ 32, 17, 2, 4 ], [ 32, 17, 2, 5 ], [ 32, 17, 2, 6 ], [ 32, 17, 2, 7 ], [ 32, 17, 2, 8 ], [ 32, 18, 1, 1 ], [ 32, 18, 1, 2 ], [ 32, 18, 2, 1 ], [ 32, 18, 3, 1 ], [ 32, 18, 3, 2 ], [ 32, 19, 1, 1 ], [ 32, 19, 1, 2 ], [ 32, 19, 2, 1 ], [ 32, 19, 2, 2 ], [ 32, 19, 3, 1 ], [ 32, 19, 3, 2 ], [ 32, 20, 1, 1 ], [ 32, 20, 1, 2 ], [ 32, 20, 2, 1 ], [ 32, 20, 2, 2 ], [ 32, 20, 3, 1 ], [ 32, 21, 1, 1 ], [ 32, 21, 1, 2 ], [ 32, 21, 1, 3 ], [ 32, 21, 1, 4 ], [ 32, 21, 2, 1 ], [ 32, 21, 2, 2 ], [ 32, 21, 3, 1 ], [ 32, 21, 3, 2 ], [ 33, 1, 1, 1 ], [ 33, 2, 1, 1 ], [ 33, 3, 1, 1 ], [ 33, 3, 1, 2 ], [ 33, 4, 1, 1 ], [ 33, 5, 1, 1 ], [ 33, 5, 1, 2 ], [ 33, 5, 1, 3 ], [ 33, 6, 1, 1 ], [ 33, 6, 1, 2 ], [ 33, 7, 1, 1 ], [ 33, 8, 1, 1 ], [ 33, 8, 1, 2 ], [ 33, 9, 1, 1 ], [ 33, 9, 1, 2 ], [ 33, 10, 1, 1 ], [ 33, 10, 1, 2 ], [ 33, 11, 1, 1 ], [ 33, 12, 1, 1 ], [ 33, 12, 1, 2 ], [ 33, 13, 1, 1 ], [ 33, 14, 1, 1 ], [ 33, 14, 2, 1 ], [ 33, 15, 1, 1 ], [ 33, 16, 1, 1 ] ]; cryst3params := [ [ 1, 1, 1, 1 ], [ 1, 2, 1, 1 ], [ 2, 1, 1, 1 ], [ 2, 1, 1, 2 ], [ 2, 1, 2, 1 ], [ 2, 2, 1, 1 ], [ 2, 2, 1, 2 ], [ 2, 2, 2, 1 ], [ 2, 2, 2, 2 ], [ 2, 3, 1, 1 ], [ 2, 3, 1, 2 ], [ 2, 3, 1, 3 ], [ 2, 3, 1, 4 ], [ 2, 3, 2, 1 ], [ 2, 3, 2, 2 ], [ 3, 1, 1, 1 ], [ 3, 1, 1, 2 ], [ 3, 1, 1, 3 ], [ 3, 1, 1, 4 ], [ 3, 1, 2, 1 ], [ 3, 1, 2, 2 ], [ 3, 1, 3, 1 ], [ 3, 1, 4, 1 ], [ 3, 1, 4, 2 ], [ 3, 2, 1, 1 ], [ 3, 2, 1, 2 ], [ 3, 2, 1, 3 ], [ 3, 2, 1, 4 ], [ 3, 2, 1, 5 ], [ 3, 2, 1, 6 ], [ 3, 2, 1, 7 ], [ 3, 2, 1, 8 ], [ 3, 2, 1, 9 ], [ 3, 2, 1, 10 ], [ 3, 2, 2, 1 ], [ 3, 2, 2, 2 ], [ 3, 2, 2, 3 ], [ 3, 2, 3, 1 ], [ 3, 2, 3, 2 ], [ 3, 2, 3, 3 ], [ 3, 2, 3, 4 ], [ 3, 2, 4, 1 ], [ 3, 2, 4, 2 ], [ 3, 2, 5, 1 ], [ 3, 2, 5, 2 ], [ 3, 2, 5, 3 ], [ 3, 3, 1, 1 ], [ 3, 3, 1, 2 ], [ 3, 3, 1, 3 ], [ 3, 3, 1, 4 ], [ 3, 3, 1, 5 ], [ 3, 3, 1, 6 ], [ 3, 3, 1, 7 ], [ 3, 3, 1, 8 ], [ 3, 3, 1, 9 ], [ 3, 3, 1, 10 ], [ 3, 3, 1, 11 ], [ 3, 3, 1, 12 ], [ 3, 3, 1, 13 ], [ 3, 3, 1, 14 ], [ 3, 3, 1, 15 ], [ 3, 3, 1, 16 ], [ 3, 3, 2, 1 ], [ 3, 3, 2, 2 ], [ 3, 3, 2, 3 ], [ 3, 3, 2, 4 ], [ 3, 3, 2, 5 ], [ 3, 3, 2, 6 ], [ 3, 3, 3, 1 ], [ 3, 3, 3, 2 ], [ 3, 3, 4, 1 ], [ 3, 3, 4, 2 ], [ 3, 3, 4, 3 ], [ 3, 3, 4, 4 ], [ 4, 1, 1, 1 ], [ 4, 1, 1, 2 ], [ 4, 1, 1, 3 ], [ 4, 1, 2, 1 ], [ 4, 1, 2, 2 ], [ 4, 2, 1, 1 ], [ 4, 2, 2, 1 ], [ 4, 3, 1, 1 ], [ 4, 3, 1, 2 ], [ 4, 3, 1, 3 ], [ 4, 3, 1, 4 ], [ 4, 3, 2, 1 ], [ 4, 3, 2, 2 ], [ 4, 4, 1, 1 ], [ 4, 4, 1, 2 ], [ 4, 4, 1, 3 ], [ 4, 4, 1, 4 ], [ 4, 4, 1, 5 ], [ 4, 4, 1, 6 ], [ 4, 4, 2, 1 ], [ 4, 4, 2, 2 ], [ 4, 5, 1, 1 ], [ 4, 5, 1, 2 ], [ 4, 5, 1, 3 ], [ 4, 5, 1, 4 ], [ 4, 5, 1, 5 ], [ 4, 5, 1, 6 ], [ 4, 5, 1, 7 ], [ 4, 5, 1, 8 ], [ 4, 5, 2, 1 ], [ 4, 5, 2, 2 ], [ 4, 5, 2, 3 ], [ 4, 5, 2, 4 ], [ 4, 6, 1, 1 ], [ 4, 6, 1, 2 ], [ 4, 6, 1, 3 ], [ 4, 6, 1, 4 ], [ 4, 6, 2, 1 ], [ 4, 6, 2, 2 ], [ 4, 6, 2, 3 ], [ 4, 6, 2, 4 ], [ 4, 6, 3, 1 ], [ 4, 6, 3, 2 ], [ 4, 6, 4, 1 ], [ 4, 6, 4, 2 ], [ 4, 7, 1, 1 ], [ 4, 7, 1, 2 ], [ 4, 7, 1, 3 ], [ 4, 7, 1, 4 ], [ 4, 7, 1, 5 ], [ 4, 7, 1, 6 ], [ 4, 7, 1, 7 ], [ 4, 7, 1, 8 ], [ 4, 7, 1, 9 ], [ 4, 7, 1, 10 ], [ 4, 7, 1, 11 ], [ 4, 7, 1, 12 ], [ 4, 7, 1, 13 ], [ 4, 7, 1, 14 ], [ 4, 7, 1, 15 ], [ 4, 7, 1, 16 ], [ 4, 7, 2, 1 ], [ 4, 7, 2, 2 ], [ 4, 7, 2, 3 ], [ 4, 7, 2, 4 ], [ 5, 1, 1, 1 ], [ 5, 1, 2, 1 ], [ 5, 1, 2, 2 ], [ 5, 2, 1, 1 ], [ 5, 2, 2, 1 ], [ 5, 3, 1, 1 ], [ 5, 3, 2, 1 ], [ 5, 3, 2, 2 ], [ 5, 3, 3, 1 ], [ 5, 3, 3, 2 ], [ 5, 4, 1, 1 ], [ 5, 4, 1, 2 ], [ 5, 4, 2, 1 ], [ 5, 4, 2, 2 ], [ 5, 4, 3, 1 ], [ 5, 4, 3, 2 ], [ 5, 5, 1, 1 ], [ 5, 5, 1, 2 ], [ 5, 5, 2, 1 ], [ 5, 5, 2, 2 ], [ 5, 5, 3, 1 ], [ 5, 5, 3, 2 ], [ 6, 1, 1, 1 ], [ 6, 1, 1, 2 ], [ 6, 1, 1, 3 ], [ 6, 1, 1, 4 ], [ 6, 2, 1, 1 ], [ 6, 3, 1, 1 ], [ 6, 3, 1, 2 ], [ 6, 4, 1, 1 ], [ 6, 4, 1, 2 ], [ 6, 4, 1, 3 ], [ 6, 4, 1, 4 ], [ 6, 5, 1, 1 ], [ 6, 5, 1, 2 ], [ 6, 5, 1, 3 ], [ 6, 5, 1, 4 ], [ 6, 6, 1, 1 ], [ 6, 6, 1, 2 ], [ 6, 6, 2, 1 ], [ 6, 6, 2, 2 ], [ 6, 7, 1, 1 ], [ 6, 7, 1, 2 ], [ 6, 7, 1, 3 ], [ 6, 7, 1, 4 ], [ 7, 1, 1, 1 ], [ 7, 1, 1, 2 ], [ 7, 1, 2, 1 ], [ 7, 1, 3, 1 ], [ 7, 1, 3, 2 ], [ 7, 2, 1, 1 ], [ 7, 2, 1, 2 ], [ 7, 2, 1, 3 ], [ 7, 2, 2, 1 ], [ 7, 2, 2, 2 ], [ 7, 2, 3, 1 ], [ 7, 2, 3, 2 ], [ 7, 3, 1, 1 ], [ 7, 3, 1, 2 ], [ 7, 3, 1, 3 ], [ 7, 3, 2, 1 ], [ 7, 3, 2, 2 ], [ 7, 3, 3, 1 ], [ 7, 3, 3, 2 ], [ 7, 4, 1, 1 ], [ 7, 4, 1, 2 ], [ 7, 4, 2, 1 ], [ 7, 4, 2, 2 ], [ 7, 4, 3, 1 ], [ 7, 4, 3, 2 ], [ 7, 5, 1, 1 ], [ 7, 5, 1, 2 ], [ 7, 5, 1, 3 ], [ 7, 5, 1, 4 ], [ 7, 5, 2, 1 ], [ 7, 5, 2, 2 ], [ 7, 5, 2, 3 ], [ 7, 5, 2, 4 ], [ 7, 5, 3, 1 ], [ 7, 5, 3, 2 ] ]; cryst2params := [ [ 1, 1, 1, 1 ], [ 1, 2, 1, 1 ], [ 2, 1, 1, 1 ], [ 2, 1, 1, 2 ], [ 2, 1, 2, 1 ], [ 2, 2, 1, 1 ], [ 2, 2, 1, 2 ], [ 2, 2, 1, 3 ], [ 2, 2, 2, 1 ], [ 3, 1, 1, 1 ], [ 3, 2, 1, 1 ], [ 3, 2, 1, 2 ], [ 4, 1, 1, 1 ], [ 4, 2, 1, 1 ], [ 4, 2, 2, 1 ], [ 4, 3, 1, 1 ], [ 4, 4, 1, 1 ] ]; NumberSpaceGroups := function( dim ) if dim = 4 then return 4783; fi; if dim = 3 then return 219; fi; if dim = 2 then return 17; fi; end; SpaceGroup := function( dim, nr ) local type; if dim = 4 then type := cryst4params[nr]; return SpaceGroupBBNWZ( 4, type[1], type[2], type[3], type[4] ); elif dim = 3 then type := cryst3params[nr]; return SpaceGroupBBNWZ( 3, type[1], type[2], type[3], type[4] ); elif dim = 2 then type := cryst2params[nr]; return SpaceGroupBBNWZ( 2, type[1], type[2], type[3], type[4] ); else return fail; fi; end; PointGroupByNumber := function( dim, nr ) local type; if dim = 4 then type := cryst4params[nr]; return MatGroupZClass( 4, type[1], type[2], type[3] ); elif dim = 3 then type := cryst3params[nr]; return MatGroupZClass( 3, type[1], type[2], type[3] ); elif dim = 2 then type := cryst2params[nr]; return MatGroupZClass( 2, type[1], type[2], type[3] ); fi; end; SpaceGroupPcpGroup := function( dim, nr ) local G, iso, H, F, n; G := SpaceGroup( dim, nr ); iso := IsomorphismPcpGroup( G ); if IsBool( iso ) then return fail; fi; H := Image( iso ); n := Length( Igs(H) ); F := Subgroup( H, Igs(H){[n-dim+1..n]} ); SetFittingSubgroup( H, F ); return H; end; aclib-1.3.2/gap/groups.gd0000664000371700037170000000212513627151544016413 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W groups.gd Karel Dekimpe #W Bettina Eick ## DeclareProperty( "IsAlmostCrystallographic", IsGroup ); DeclareProperty( "IsAlmostBieberbachGroup", IsGroup ); DeclareAttribute( "AlmostCrystallographicInfo", IsGroup ); DeclareAttribute( "NaturalHomomorphismOnHolonomyGroup", IsGroup ); DeclareAttribute( "HolonomyGroup", IsGroup ); DeclareGlobalFunction( "AlmostCrystallographicDim3" ); DeclareGlobalFunction( "AlmostCrystallographicDim4" ); DeclareGlobalFunction( "AlmostCrystallographicGroup" ); DeclareGlobalFunction( "AlmostCrystallographicPcpDim3" ); DeclareGlobalFunction( "AlmostCrystallographicPcpDim4" ); DeclareGlobalFunction( "AlmostCrystallographicPcpGroup" ); DeclareGlobalFunction( "IsolatorSubgroup" ); DeclareAttribute( "OrientationModule", IsGroup ); DeclareOperation( "BettiNumber", [IsGroup, IsInt] ); DeclareAttribute( "BettiNumbers", IsGroup ); DeclareGlobalFunction( "HasExtensionOfType" ); aclib-1.3.2/gap/union.gi0000664000371700037170000001135713627151544016240 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W union.gi Karel Dekimpe #W Bettina Eick ## ############################################################################# ## #F GenericDeterminantMat( mat ) ## GenericDeterminantMat := function( mat ) local d, det, sig, i, sub; # set up d := Length( mat ); if ForAny( mat, x -> Length(x) <> d ) then return fail; fi; # the trivial cases if d = 1 then return mat[1][1]; fi; if d = 2 then return mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]; fi; # otherwise use first row and recursion det := 0; sig := 1; for i in [1..d] do sub := Concatenation( [1..i-1], [i+1..d] ); sub := mat{[2..d]}{sub}; det := det + sig * mat[1][i] * GenericDeterminantMat( sub ); sig := - sig; od; return det; end; ############################################################################# ## #F NullspaceIntMod( base, vec, p ) . . . . . . . . . . . . b * vec = 0 mod p ## ## computes those elements b in with b * vec = 0 mod p. Returns a ## triangulized basis with respect to . ## NullspaceIntMod := function( base, vec, p ) local imgs, d, null; # get images imgs := List( base, x -> x * vec ); imgs := List( imgs, x -> x mod p ); d := Length( imgs ); if ForAll( imgs, x -> x = 0 ) then return IdentityMat( d ); fi; # compute kernel of imgs vector - must have rank d-1 Add( imgs, p ); null := NullspaceIntMat( TransposedMat( [imgs] ) ); null := List( null, x -> x{[1..d]} ); null := NormalFormIntMat( null, 0 ).normal; # return this images nullspace return Filtered( null, x -> PositionNonZero(x) <= d ); end; ############################################################################# ## #F FindMaximals( sub ) . . . . . . . .subgroups which are maximal within sub ## FindMaximals := function( sub ) local new, i, tmp; new := []; for i in [1..Length(sub)] do if Size( sub[i] ) > 1 then if Length(new) = 0 then Add( new, sub[i] ); elif not ForAny( new, x -> IsSubset( x, sub[i] ) ) then tmp := Filtered( new, x -> not IsSubset( sub[i], x ) ); Add( new, sub[i] ); fi; fi; od; return new; end; if not IsBound( SizeOfUnion ) then SizeOfUnion := false; fi; ############################################################################# ## #F SizeOfUnionRec( sub ) -- recursive version ## SizeOfUnionRec := function( list ) local s, i, int, t, n; if Length( list ) = 0 then return 1; fi; s := Size( list[1] ); n := Length( list ); for i in [2..n] do int := List( list{[1..i-1]}, x -> Intersection( x, list[i])); t := SizeOfUnion( int ); s := s + Size( list[i] ) - t; od; return s; end; ############################################################################# ## #F SizeOfUnionTriv -- trivial version ## SizeOfUnionTriv := function( list ) return Length( Union( List( list, Elements ) ) ); end; ############################################################################# ## #F SizeOfUnion -- main function ## SizeOfUnion := function( sub ) local list; list := FindMaximals( sub ); if Length(list) = 0 then return 1; fi; if Length(list) = 1 then return Size(list[1]); fi; if Sum(List(list, Size)) < 2000 then return SizeOfUnionTriv(list); fi; return SizeOfUnionRec(list); end; ############################################################################# ## #F SizeOfUnionMod( subs, e ) . . . . . . . . .size of the union of subs mod e ## ## is a list of bases containing (eZ)^d. Compute the size of the union ## of in (Z/eZ)^d. ## ## This function needs to be profiled. ## SizeOfUnionMod := function( subs, e ) local d, F, V, b, news; # the trivial case if Length( subs ) = 0 then return 1; fi; d := Length( subs[1] ); if IsPrimeInt( e ) then F := GF(e); V := F^d; b := BasisVectors( Basis( V ) ); news := List( subs, x -> x * b ); news := List( news, x -> Subspace( V, x ) ); if ForAny( news, x -> Size(x) = e^d ) then return e^d; fi; # return SizeOfUnion( news ); return Length( Union( List( news, Elements ) ) ); fi; V := AbelianGroup( List( [1..d], x -> e ) ); b := GeneratorsOfGroup(V); news := List( subs, x -> List( x, y -> MappedVector( y, b ) ) ); news := List( news, x -> Subgroup( V, x ) ); if ForAny( news, x -> Size(x) = e^d ) then return e^d; fi; # return SizeOfUnion( news ); return Length( Union( List( news, Elements ) ) ); end; aclib-1.3.2/gap/pcpgrp4.gi0000664000371700037170000024650413627151544016473 0ustar gap-jenkinsgap-jenkins############################################################################# ## #W pcpgrp4.gi Karel Dekimpe #W Bettina Eick ## ## This file contains the 4-dimensional almost crystallographic groups ## as pcp groups. There are 95 types of groups. ## ACPcpGroupDim4Nr001 := function (k1, k2, k3) local FTL; FTL := FromTheLeftCollector( 4 ); SetConjugate( FTL, 2, 1, [2,1, 4,k1 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,k2 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,k3 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr002 := function (k1, k2, k3 , k4, k5, k6, k7) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k7 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k5 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k6 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k2 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k3 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr003 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr004 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,1, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr004b:= function (k1, k2, k3 ) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,1, 4,0, 5,k3 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,0, 4,0, 5,k1 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,1, 4,0, 5,2*k3 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,-k2 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,-1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,2*k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*k2 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr005 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,-1, 4,0, 5,k2 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr006 := function (k1, k2, k3 ) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k3 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,0, 5,0 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr007 := function (k1, k2, k3 ) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,1, 5,k3 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,0, 5,-k1 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,2*k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr007b:= function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,1, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,0, 5,-k3 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,2*k4 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,-1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*k2 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr008 := function (k1, k2, k3) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k3 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,1, 4,0, 5,k2 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr009 := function (k1, k2, k3) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,1, 5,k3 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,1, 4,0, 5,-k1 + k2 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr009b:= function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,1, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,1, 4,0, 5,k2 - k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k3 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,2*k4 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,-1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k2 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,-k2 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr010 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,k5 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr011 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,-1, 5,0, 6,-k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-2*k6 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,1, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr012 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,2*k2 - k5 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr013 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,1, 6,k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 + k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,-2*k6 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,-2*k6 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr014 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,-1, 5,1, 6,-k3 - k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 + k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k3 - 2*k6 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,1, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr014b:= function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,-1, 5,1, 6,-k2 - 2*k3 + 2*k5 - k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,k2 - 2*k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k2 + 2*k3 - 2*k5 + 2*k6 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,1, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,1, 5,0, 6,2*k3 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,-k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,2*k2 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr015 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,1, 6,k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,k1 + 2*k2 - k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,-2*k6 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,-2*k6 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr018 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,1, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,0, 6,k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,1, 5,0, 6,2*k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,0 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,-k1 + 2*k2 - 2*k3 + 2*k4 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,k1 - 2*k3 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr019 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,1, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,-1, 6,-3*k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,3*k1 + 2*k2 - 2*k3 + 2*k4 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,-k1 - 2*k2 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr019b:= function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,1, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,-1, 6,k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,1, 5,0, 6,2*k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,0 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,-k1 + 2*k2 - 2*k3 + 2*k4 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,k1 - 2*k3 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr019c:= function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,1, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,-1, 6,-2*k2 + 2*k3 + k4 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,1, 5,0, 6,2*k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,-k1 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr026 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr027 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,-k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,k3 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr029 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,1, 5,0, 6,-2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-k1 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,2*(k2 - k3 + k4) ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr029b:= function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,1, 5,0, 6,-2*k3 + 2*k4 - k5 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-k1 - k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k4 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,2*(k3 - k4 + k5) ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr029c:= function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k1 + k2 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,1, 5,0, 6,-4*k1 + k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*(k1 + k2) ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,4*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr030 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,1, 5,0, 6,-2*k3 - k5 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-k1 - k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k4 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,2*(k3 + k5) ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr031 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,1, 5,0, 6,2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-2*(k3 - k4) ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr032 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,0, 6,3*k1 - 2*k2 + 2*k4 - k5 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,2*k4 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,-k3 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,-k1 - 2*k4 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,-3*k1 + 2*k2 - 2*k4 + 2*k5 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr033 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,0, 6,2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 - 2*k3 + 2*k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,k1 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr033b:= function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,0, 6,3*k1 - 2*k2 - k3 + 2*k4 - k5 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,2*k4 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,-k3 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,-k1 - 2*k4 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,-3*k1 + 2*k2 + k3 - 2*k4 + 2*k5 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr033c:= function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,0, 6,-k1 + 2*k3 + k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,2*k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,k1 + 2*k2 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr034 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,1, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,0, 6,2*k1 - k2 - 2*k3 - k5 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-k1 - k2 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,k1 + k2 + 2*k4 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,-2*k1 + k2 + 2*k3 + 2*k5 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr036 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,0, 6,k3 ] ); SetConjugate( FTL, 4, 1, [3,1, 4,0, 5,0, 6,-k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr037 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,-k3 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,0, 6,-k4 ] ); SetConjugate( FTL, 4, 1, [3,1, 4,0, 5,0, 6,-k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,-k2 + 2*k4 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr041 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,1, 5,1, 6,k1 - k2 - k3 + k5 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,-1, 5,0, 6,2*k1 - k4 ] ); SetConjugate( FTL, 4, 1, [3,-1, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,2*(k1 - k5) ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr043 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,1, 5,0, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,1, 6,-k2 - 2*k3 - k5 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,-1, 6,k1 + k2 + 2*k4 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,1, 5,0, 6,2*k4 ] ); SetConjugate( FTL, 5, 1, [3,-1, 4,1, 5,0, 6,-k2 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,1, 5,-1, 6,k2 + 2*k3 + 2*k5 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,-1, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,2*(k2 + k3 + k5) ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr045 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,1, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,-k3 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,0, 5,-1, 6,-k4 ] ); SetConjugate( FTL, 4, 1, [3,1, 4,1, 5,1, 6,k4 + 2*k5 ] ); SetConjugate( FTL, 5, 1, [3,-1, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,1, 5,0, 6,k2 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,-1, 4,-1, 5,-1, 6,k2 - 2*k4 - 2*k5 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr055 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,2*k1 + k2 + k4 + k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,1, 5,-1, 6,0, 7,k1 + 2*k2 - 2*k3 + 2*k4 + k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,0, 5,0, 6,0, 7,0 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,-k1 - 2*k2 + 2*k3 - 2*k4 ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,-k1 - 2*k3 ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,k5 ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,-1, 5,1, 6,0, 7,-k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,k1 ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,2*k3 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,0 ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,-1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,0, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,-k1 - 2*k2 + 2*k3 - 2*k4 ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,-k1 - 2*k3 ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,0 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,2*k1 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,0 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr056 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,0, 5,-1, 6,1, 7,-2*k3 - k5 + 2*k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,1, 5,1, 6,0, 7,k4 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,2*(k1 + k3 - k4) ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,-2*k3 ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,2*(k3 + k5 - k6) ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,1, 5,1, 6,0, 7,-k2 + k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,k1 ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,2*k3 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,0 ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,-1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,0, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,k1 + 2*k3 - 2*k4 ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,k1 - 2*k3 ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,0 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,2*k1 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,0 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr058 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,1, 5,-1, 6,1, 7,-3*k1 - 2*k3 - k5 + 2*k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,0, 5,0, 6,0, 7,0 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,-k1 - 2*k2 + 2*k3 - 2*k4 ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,-k1 - 2*k3 ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,2*(2*k1 + k2 + k4 + k5 - k6) ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,-1, 5,1, 6,0, 7,-k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,k1 ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,2*k3 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,0 ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,-1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,0, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,-k1 - 2*k2 + 2*k3 - 2*k4 ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,-k1 - 2*k3 ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,0 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,2*k1 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,0 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr060 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,0, 5,-1, 6,1, 7,-2*k3 - k5 + 2*k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,1, 5,0, 6,0, 7,k1 - k2 + k3 - k4 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,-2*(k1 - k2 + k3 - k4) ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,-2*k3 ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,2*(k3 + k5 - k6) ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,1, 5,1, 6,0, 7,2*k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,2*k1 ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,2*k3 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,0 ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,-1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,0, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,-2*(k1 - k2 + k3 - k4) ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,2*(k1 - k3) ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,0 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,4*k1 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,0 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr061 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,-k1 + k3 - k4 + k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,0, 5,-1, 6,1, 7,2*k1 + 2*k2 - k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,1, 5,0, 6,-1, 7,-8*k1 - 2*k2 + 2*k3 - 2*k4 + k5 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,2*(4*k1 + k2 - k3 + k4) ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,2*(k1 + k2 - k6) ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,-2*(k1 + k2) ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,1, 5,1, 6,-1, 7,-6*k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,2*(3*k1 + k2 - k3 + k4) ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,0 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,-2*(k1 + k2) ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,1, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,2*k1 ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,0 ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,2*k2 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,-1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,0 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,4*k1 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr061b := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,-k1 + k2 + k4 + k5 + k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,0, 5,-1, 6,1, 7,-2*k1 + 2*k2 - 2*k3 + 2*k4 + 2*k5 + k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,1, 5,0, 6,-1, 7,2*k1 - 2*k2 + 2*k3 - 2*k4 - k5 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,-2*(k1 - k2 + k3 - k4) ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,-2*k3 ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,2*(k1 - k2 + k3 - k4 - k5) ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,1, 5,1, 6,-1, 7,2*k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,2*k1 ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,2*k3 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,0 ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,-1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,1, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,-2*(k1 - k2 + k3 - k4) ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,2*(k1 - k3) ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,0 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,4*k1 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,0 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr061c:= function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,k1 + k2 + k3 + k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,0, 5,-1, 6,1, 7,2*k2 + k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,1, 5,0, 6,-1, 7,2*k1 + 2*k3 - k5 + 2*k6 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,-2*(k1 + k3 - k5 + k6) ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,2*(k1 - k3) ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,-2*k2 ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,1, 5,1, 6,-1, 7,-2*k2 + 2*k3 + k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,0 ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,2*k3 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,-2*k1 ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,-1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,1, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,0 ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,2*k1 ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,2*k2 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,-1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,0 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,0 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,4*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr062 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 7 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [4,0, 5,0, 6,0, 7,k3 - k4 + k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 4,0, 5,-1, 6,0, 7,-k6 ] ); SetConjugate( FTL, 3, 1, [3, 1 , 4,1, 5,0, 6,-1, 7,-3*k1 - 2*k2 + 2*k3 - 2*k4 + k5 ] ); SetConjugate( FTL, 4, 1, [4,-1, 5,0, 6,0, 7,3*k1 + 2*k2 - 2*k3 + 2*k4 ] ); SetConjugate( FTL, 5, 1, [4,0, 5,-1, 6,0, 7,-2*k6 ] ); SetConjugate( FTL, 6, 1, [4,0, 5,0, 6,-1, 7,-k1 - 2*k2 ] ); SetConjugate( FTL, 7, 1, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [4,0, 5,1, 6,0, 7,k3 ] ); SetConjugate( FTL, 3, 2, [ 3, 1, 4,1, 5,1, 6,-1, 7,-3*k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 4, 2, [4,-1, 5,0, 6,0, 7,3*k1 + 2*k2 - 2*k3 + 2*k4 ] ); SetConjugate( FTL, 5, 2, [4,0, 5,1, 6,0, 7,0 ] ); SetConjugate( FTL, 6, 2, [4,0, 5,0, 6,-1, 7,-k1 - 2*k2 ] ); SetConjugate( FTL, 7, 2, [4,0, 5,0, 6,0, 7,1 ] ); SetRelativeOrder( FTL, 3, 2 ); SetPower( FTL, 3, [4,0, 5,0, 6,1, 7,k2 ] ); SetConjugate( FTL, 4, 3, [4,-1, 5,0, 6,0, 7,k1 ] ); SetConjugate( FTL, 5, 3, [4,0, 5,-1, 6,0, 7,0 ] ); SetConjugate( FTL, 6, 3, [4,0, 5,0, 6,1, 7,2*k2 ] ); SetConjugate( FTL, 7, 3, [4,0, 5,0, 6,0, 7,-1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0, 7,0 ] ); SetConjugate( FTL, 6, 4, [6,1, 7,2*k1 ] ); SetConjugate( FTL, 6, 5, [6,1, 7,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr075 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,-1, 4,0, 5,k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr076 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,0, 3,0, 4,1, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,-1, 4,0, 5,k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr077 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,0, 3,0, 4,2, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,-1, 4,0, 5,k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr079 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,1, 4,1, 5,-k3 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 4, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr080 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,1, 3,1, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,1, 4,1, 5,-k3 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 4, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr081 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k5 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,1, 4,0, 5,-k3 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k4 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr082 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 4 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k5 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,-1, 4,-1, 5,k2 + k3 + k4 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,0, 4,1, 5,-k4 ] ); SetConjugate( FTL, 4, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,0 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr083 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k2 + k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k2 + k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,k3 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr084 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,-1, 6,-k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k2 + k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k2 + k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,-2*k6 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,2, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,k3 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr085 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,-1, 4,0, 5,0, 6,k2 - k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,2*(k2 - k6) ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-2*k6 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k4 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,-k1 + k2 - 2*k6 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr086 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,-1, 4,0, 5,-1, 6,k2 - k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 + k2 + k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,k1 - k2 + k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,-k1 + k2 - k3 - 2*k6 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,2, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,k3 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr087 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-2*k2 + 2*k3 + k5 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,2*k2 - k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1, 5,1, 6,-k3 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 5, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr088 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,0, 5,0, 6,-k2 - k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,2*(k2 + k6) ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 + 2*k3 + 2*k6 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,-2*k6 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,-1, 4,-1, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1, 5,1, 6,-k3 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,0, 5,-1, 6,k3 ] ); SetConjugate( FTL, 5, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr103 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 3 , 3,0, 4,0, 5,0, 6,-k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-k2 - k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,k3 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr104 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,1, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 3 , 3,1, 4,0, 5,0, 6,-k2 - 2*k3 - k5 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,-2*(k2 + k3 + k5) ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*(k2 + k3 + k4 + k5) ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,-k1 + k2 + 2*k3 + 2*k5 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr106 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 3 , 3,1, 4,0, 5,-1, 6,-k3 - k4 + k5 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,2*k5 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,-2*k4 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,2, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,-1, 5,0, 6,-k1 - k2 - 2*k5 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr110 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,1, 5,0, 6,k1 - k2 - k4 ] ); SetConjugate( FTL, 2, 1, [2, 3 , 3,1, 4,1, 5,1, 6,-2*k1 + 2*k2 - 2*k3 + 2*k4 - k5 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,0, 5,-1, 6,-k4 ] ); SetConjugate( FTL, 4, 1, [3,1, 4,1, 5,1, 6,2*k1 - 2*k2 - k4 ] ); SetConjugate( FTL, 5, 1, [3,-1, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,-1, 4,-1, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1, 5,1, 6,-k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,0, 5,-1, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,-1, 4,0, 5,0, 6,4*k1 - 4*k2 + 2*k3 - 3*k4 + 2*k5 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,0 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,-2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr114 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,1, 5,0, 6,k4 ] ); SetConjugate( FTL, 2, 1, [2, 3 , 3,0, 4,1, 5,1, 6,-k1 + k2 - 2*k3 + 2*k4 - k5 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,1, 5,0, 6,2*k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,0 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 4 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,1, 5,0, 6,-k1 + k2 + 2*k4 ] ); SetConjugate( FTL, 4, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,-1, 6,2*(k1 - k2 + k3 - k4 + k5) ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr143 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 3 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,-1, 4,0, 5,k2 + k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr144 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 3 ); SetPower( FTL, 1, [2,0, 3,0, 4,1, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,-1, 4,0, 5,k2 + k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr146 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 3 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,0, 4,1, 5,k2 + k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,1, 4,0, 5,-k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,-k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr147 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k5 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,1, 4,0, 5,k1 - k2 - k3 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k4 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr148 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k5 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,0, 4,-1, 5,k4 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,-1, 4,0, 5,k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,-k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr158 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 2 , 3,0, 4,0, 5,0, 6,-k4 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,-1, 5,0, 6,-k2 ] ); SetConjugate( FTL, 4, 1, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 3 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,-1, 5,0, 6,k2 + k3 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr159 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 2 , 3,0, 4,0, 5,0, 6,-k3 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,0, 6,-k4 ] ); SetConjugate( FTL, 4, 1, [3,1, 4,0, 5,0, 6,-k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 3 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,-1, 5,0, 6,k1 - k2 + 3*k4 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k1 + 2*k2 - 3*k4 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr161 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 2 , 3,-1, 4,0, 5,0, 6,-k3 - k4 + 2*k5 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,1, 5,0, 6,-k1 - k2 - 2*k3 + 2*k5 ] ); SetConjugate( FTL, 4, 1, [3,1, 4,0, 5,0, 6,-k2 - 2*k3 + 2*k5 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 3 ); SetPower( FTL, 2, [3,1, 4,1, 5,1, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,0, 4,0, 5,1, 6,k2 + k3 ] ); SetConjugate( FTL, 4, 2, [3,1, 4,0, 5,0, 6,-k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,1, 5,0, 6,-k3 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,-k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr168 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,1, 4,0, 5,k1 - k2 - k3 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr169 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,5, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,1, 4,0, 5,k1 - k2 - k3 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr172 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,2, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,1, 4,0, 5,k1 - k2 - k3 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr173 := function (k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,3, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,1, 4,0, 5,k1 - k2 - k3 ] ); SetConjugate( FTL, 3, 1, [2,-1, 3,0, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,0 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr174 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 6 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k5 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,-1, 4,0, 5,k2 + k3 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k4 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,0, 5,k1 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr175 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k6 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 - 2*k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 + 2*k2 + 2*k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 6 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1, 5,0, 6,k1 - k2 - k3 ] ); SetConjugate( FTL, 4, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr176 := function (k1, k2, k3 , k4, k5, k6) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,0, 5,-1, 6,k6 ] ); SetConjugate( FTL, 3, 1, [3,-1, 4,0, 5,0, 6,k1 - 2*k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,-k1 + 2*k2 + 2*k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,2*k6 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 6 ); SetPower( FTL, 2, [3,0, 4,0, 5,3, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1, 5,0, 6,k1 - k2 - k3 ] ); SetConjugate( FTL, 4, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4Nr184 := function (k1, k2, k3 , k4, k5) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,1, 6,k5 ] ); SetConjugate( FTL, 2, 1, [2, 5 , 3,0, 4,0, 5,0, 6,-k4 ] ); SetConjugate( FTL, 3, 1, [3,0, 4,-1, 5,0, 6,-k1 + k2 + 2*k3 ] ); SetConjugate( FTL, 4, 1, [3,-1, 4,0, 5,0, 6,k1 - k2 - 2*k3 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,1, 6,2*k5 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 6 ); SetPower( FTL, 2, [3,0, 4,0, 5,0, 6,k4 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1, 5,0, 6,k1 - k2 - k3 ] ); SetConjugate( FTL, 4, 2, [3,-1, 4,0, 5,0, 6,k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,0 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB1 := function (k , k1, k2 , k3) local FTL; FTL := FromTheLeftCollector( 4 ); SetConjugate( FTL, 2, 1, [2,1, 3, k, 4, k1 ] ); SetConjugate( FTL, 3, 1, [3,1, 4, k2 ] ); SetConjugate( FTL, 3, 2, [3,1, 4, k3 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB2 := function (k, k1, k2, k3) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,1, 5,k3 ] ); SetConjugate( FTL, 2, 1, [2,-1, 3,0, 4,0, 5,k1 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,1, 5,2*k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,-1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,2*k, 5,2*(k*k1 + k*k2 + k*k3) ] ); SetConjugate( FTL, 4, 2, [4,1, 5,2*k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*k2 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB3c := function (l, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,0, 5,0 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,2*l, 5,(k1 - k3)*l ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB3b := function (l, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,-1, 5,-k2 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k3 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,-2*k2 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,2*l, 5,-k1 + 2*k1*l + 2*k2*l ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB3 := function (l, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,-1, 5,-k2 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,0, 5,k3 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,-2*k2 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1 + 2*l, 5,k2 + k1*l + 2*k2*l ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB4 := function (k, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,1, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,0, 5,0 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,-k, 5,k*k1 + k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,2*k, 5,k*(k1 - k3) ] ); SetConjugate( FTL, 4, 2, [4,1, 5,0 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB4b := function (k, k1, k2, k3) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,1, 3,0, 4,0, 5,k3 ] ); SetConjugate( FTL, 2, 1, [2,1, 3,0, 4,0, 5,2*k3 ] ); SetConjugate( FTL, 3, 1, [2,0, 3,-1, 4,-k, 5,k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k1 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,-1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,2*k, 5,-(k*k1) - 2*k2 ] ); SetConjugate( FTL, 4, 2, [4,1, 5,-2*k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,0 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB5 := function (l, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,1, 4,0, 5,k2 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,2*l, 5,-(k3*l) ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB5b := function (l, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 5 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [2,0, 3,0, 4,0, 5,k4 ] ); SetConjugate( FTL, 2, 1, [2,0, 3,1, 4,0, 5,k2 ] ); SetConjugate( FTL, 3, 1, [2,1, 3,0, 4,0, 5,-k2 ] ); SetConjugate( FTL, 4, 1, [2,0, 3,0, 4,-1, 5,2*k3 ] ); SetConjugate( FTL, 5, 1, [2,0, 3,0, 4,0, 5,1 ] ); SetConjugate( FTL, 3, 2, [3,1, 4,1 + 2*l, 5,-(k3*(1 + 2*l)) ] ); SetConjugate( FTL, 4, 2, [4,1, 5,k1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,-k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB7 := function (l, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,-1, 5,-1, 6,2*k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,2*l, 6,-((k1 - 2*k2)*l) ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,k1 - 2*k2 + 2*k3 - 2*k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k1 - 2*k2 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,k1 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,4*l, 6,4*(k1*l + k2*l) ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB7b := function (l, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,0, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,0, 4,-1, 5,-1, 6,4*k1 - 2*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,1 + 2*l, 6,-k1 + k2 - 2*k1*l + 2*k2*l ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,0, 6,2*(k1 - k2 + k3 - k4) ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,2*(k1 - k2) ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,0, 6,2*k1 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,2*(1 + 2*l), 6,2*(2*k1 + k2 + 4*k1*l + 2*k2*l) ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,4*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB8 := function (k, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,-1, 5,-1 - 4*k, 6,2*k1 + 8*k*k1 - 2*k2 - 6*k*k2 + 2*k3 - k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,0 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,-2*k, 6,k1 + 6*k*k1 - 2*k2 - 6*k*k2 + 2*k3 - 2*k4 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k1 - 2*k2 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,2*k, 6,2*k*k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,-2*k, 6,k1 + 2*k*k1 - 2*k*k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,4*k, 6,2*(k*k1 + 2*k*k2) ] ); SetConjugate( FTL, 5, 3, [5,1, 6,0 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,2*k1 ] ); return PcpGroupByCollector(FTL); end; ACPcpGroupDim4NrB8b := function (k, k1, k2, k3 , k4) local FTL; FTL := FromTheLeftCollector( 6 ); SetRelativeOrder( FTL, 1, 2 ); SetPower( FTL, 1, [3,1, 4,0, 5,0, 6,k3 ] ); SetConjugate( FTL, 2, 1, [2, 1 , 3,1, 4,-1, 5,-1 - 4*k, 6,k1 + 2*k*k1 - 2*k*k2 + 2*k3 + k4 ] ); SetConjugate( FTL, 3, 1, [3,1, 4,0, 5,0, 6,2*k3 ] ); SetConjugate( FTL, 4, 1, [3,0, 4,-1, 5,-2*k, 6,-2*k*k2 ] ); SetConjugate( FTL, 5, 1, [3,0, 4,0, 5,-1, 6,k1 ] ); SetConjugate( FTL, 6, 1, [3,0, 4,0, 5,0, 6,-1 ] ); SetRelativeOrder( FTL, 2, 2 ); SetPower( FTL, 2, [3,0, 4,0, 5,1, 6,k2 ] ); SetConjugate( FTL, 3, 2, [3,-1, 4,0, 5,2*k, 6,-k1 + 2*k*k1 + 2*k*k2 ] ); SetConjugate( FTL, 4, 2, [3,0, 4,-1, 5,-2*k, 6,-2*k*k2 ] ); SetConjugate( FTL, 5, 2, [3,0, 4,0, 5,1, 6,2*k2 ] ); SetConjugate( FTL, 6, 2, [3,0, 4,0, 5,0, 6,-1 ] ); SetConjugate( FTL, 4, 3, [4,1, 5,4*k, 6,-2*(k*k1 - 2*k*k2) ] ); SetConjugate( FTL, 5, 3, [5,1, 6,-2*k1 ] ); SetConjugate( FTL, 5, 4, [5,1, 6,0 ] ); return PcpGroupByCollector(FTL); end; ############################################################################# ## ## some small helpers ## ACPcpDim4Funcs := [ ACPcpGroupDim4Nr001, ACPcpGroupDim4Nr002, ACPcpGroupDim4Nr003, ACPcpGroupDim4Nr004, ACPcpGroupDim4Nr004b, ACPcpGroupDim4Nr005, ACPcpGroupDim4Nr006, ACPcpGroupDim4Nr007, ACPcpGroupDim4Nr007b, ACPcpGroupDim4Nr008, ACPcpGroupDim4Nr009, ACPcpGroupDim4Nr009b, ACPcpGroupDim4Nr010, ACPcpGroupDim4Nr011, ACPcpGroupDim4Nr012, ACPcpGroupDim4Nr013, ACPcpGroupDim4Nr014, ACPcpGroupDim4Nr014b, ACPcpGroupDim4Nr015, ACPcpGroupDim4Nr018, ACPcpGroupDim4Nr019, ACPcpGroupDim4Nr019b, ACPcpGroupDim4Nr019c, ACPcpGroupDim4Nr026, ACPcpGroupDim4Nr027, ACPcpGroupDim4Nr029, ACPcpGroupDim4Nr029b, ACPcpGroupDim4Nr029c, ACPcpGroupDim4Nr030, ACPcpGroupDim4Nr031, ACPcpGroupDim4Nr032, ACPcpGroupDim4Nr033, ACPcpGroupDim4Nr033b, ACPcpGroupDim4Nr033c, ACPcpGroupDim4Nr034, ACPcpGroupDim4Nr036, ACPcpGroupDim4Nr037, ACPcpGroupDim4Nr041, ACPcpGroupDim4Nr043, ACPcpGroupDim4Nr045, ACPcpGroupDim4Nr055, ACPcpGroupDim4Nr056, ACPcpGroupDim4Nr058, ACPcpGroupDim4Nr060, ACPcpGroupDim4Nr061, ACPcpGroupDim4Nr061b, ACPcpGroupDim4Nr061c, ACPcpGroupDim4Nr062, ACPcpGroupDim4Nr075, ACPcpGroupDim4Nr076, ACPcpGroupDim4Nr077, ACPcpGroupDim4Nr079, ACPcpGroupDim4Nr080, ACPcpGroupDim4Nr081, ACPcpGroupDim4Nr082, ACPcpGroupDim4Nr083, ACPcpGroupDim4Nr084, ACPcpGroupDim4Nr085, ACPcpGroupDim4Nr086, ACPcpGroupDim4Nr087, ACPcpGroupDim4Nr088, ACPcpGroupDim4Nr103, ACPcpGroupDim4Nr104, ACPcpGroupDim4Nr106, ACPcpGroupDim4Nr110, ACPcpGroupDim4Nr114, ACPcpGroupDim4Nr143, ACPcpGroupDim4Nr144, ACPcpGroupDim4Nr146, ACPcpGroupDim4Nr147, ACPcpGroupDim4Nr148, ACPcpGroupDim4Nr158, ACPcpGroupDim4Nr159, ACPcpGroupDim4Nr161, ACPcpGroupDim4Nr168, ACPcpGroupDim4Nr169, ACPcpGroupDim4Nr172, ACPcpGroupDim4Nr173, ACPcpGroupDim4Nr174, ACPcpGroupDim4Nr175, ACPcpGroupDim4Nr176, ACPcpGroupDim4Nr184, ACPcpGroupDim4NrB1, ACPcpGroupDim4NrB2, ACPcpGroupDim4NrB3c, ACPcpGroupDim4NrB3b, ACPcpGroupDim4NrB3, ACPcpGroupDim4NrB4, ACPcpGroupDim4NrB4b, ACPcpGroupDim4NrB5, ACPcpGroupDim4NrB5b, ACPcpGroupDim4NrB7, ACPcpGroupDim4NrB7b, ACPcpGroupDim4NrB8, ACPcpGroupDim4NrB8b ]; MakeReadOnlyGlobal( "ACPcpDim4Funcs" ); aclib-1.3.2/doc/intro.tex0000664000371700037170000001256013627151544016437 0ustar gap-jenkinsgap-jenkins%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %W aclib.tex Karel Dekimpe %W Bettina Eick %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Chapter{The Almost Crystallographic Groups Package} A group is called *almost crystallographic* if it is a finitely generated nilpotent-by-finite group without non-trivial finite normal subgroups. An important special case of almost crystallographic groups are the *almost Bieberbach groups*: these are almost crystallographic and torsion free. By its definition, an almost crystallographic group $G$ has a finitely generated nilpotent normal subgroup $N$ of finite index. Clearly, $N$ is polycyclic and thus has a polycyclic series. The number of infinite cyclic factors in such a series for $N$ is an invariant of $G$: the *Hirsch length* of $G$. For each almost crystallographic group of Hirsch length 3 and 4 there exists a representation as a rational matrix group in dimension 4 or 5, respectively. These representations can be considered as affine representations of dimension 3 or 4. Via these representations, the almost crystallographic groups act (properly discontinuously) on $\R^3$ or $\R^4$. That is one reason to define the *dimension* of an almost crystallographic group as its Hirsch length. The 3-dimensional and a part of the 4-dimensional almost crystallographic groups have been classified by K. Dekimpe in \cite{KD}. This classification includes all almost Bieberbach groups in dimension 3 and 4. It is the first central aim of this package to give access to the resulting library of groups. The groups in this electronic catalog are available in two different representations: as rational matrix groups and as polycyclically presented groups. While the first representation is the more natural one, the latter description facilitates effective computations with the considered groups using the methods of the {\sf Polycyclic} package. The second aim of this package is to introduce a variety of algorithms for computations with polycyclically presented almost crystallographic groups. These algorithms supplement the methods available in the {\sf Polycyclic} package and give access to some methods which are interesting specifically for almost crystallographic groups. In particular, we present methods to compute Betti numbers and to construct or check the existence of certain extensions of almost crystallographic groups. We note that these methods have been applied in \cite{DE1} and \cite{DE2} for computations with almost crystallographic groups. Finally, we remark that almost crystallographic groups can be seen as natural generalizations of crystallographic groups. A library of crystallographic groups and algorithms to compute with crystallographic groups are available in the \GAP\ packages `cryst', `carat' and `crystcat'. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{More about almost crystallographic groups} Almost crystallographic groups were first discussed in the theory of actions on Lie groups. We recall the original definition here briefly and we refer to \cite{AUS}, \cite{KD} and \cite{LEE} for more details. Let $L$ be a connected and simply connected nilpotent Lie group. For example, the 3-dimensional Heisenberg group, consisting of all upper unitriangular $3\times3$--matrices with real entries is of this type. Then $L\rtimes {\rm Aut}(L)$ acts affinely (on the left) on $L$ via $$ \forall l,l'\in L,\forall \alpha \in {\rm Aut}(L):\; ^{(l,\alpha)}l'=l \, \alpha(l'). $$ Let $C$ be a maximal compact subgroup of ${\rm Aut}(L)$. Then a subgroup $G$ of $L \rtimes C$ is said to be an almost crystallographic group if and only if the action of $G$ on $L$, induced by the action of $L\rtimes {\rm Aut}(L)$, is properly discontinuous and the quotient space $G \backslash L$ is compact. One recovers the situation of the ordinary crystallographic groups by taking $L={\Bbb R}^n$, for some $n$, and $C=O(n)$, the orthogonal group. More generally, we say that an abstract group is an almost crystallographic group if it can be realized as a genuine almost crystallographic subgroup of some $L \rtimes C$. In the following theorem we outline some algebraic characterizations of almost crystallographic groups; see Theorem 3.1.3 of \cite{KD}. Recall that the *Fitting subgroup Fitt$(G)$* of a polycyclic-by-finite group $G$ is its unique maximal normal nilpotent subgroup. *Theorem.* The following are equivalent for a polycyclic-by-finite group $G$: \beginlist \item{(1)} $G$ is an almost crystallographic group. \item{(2)} Fitt$(G)$ is torsion free and of finite index in $G$. \item{(3)} $G$ contains a torsion free nilpotent normal subgroup $N$ of finite index in $G$ with $C_G(N)$ torsion free. \item{(4)} $G$ has a nilpotent subgroup of finite index and there are no non-trivial finite normal subgroups in $G$. \endlist In particular, if $G$ is almost crystallographic, then $G / Fitt(G)$ is finite. This factor is called the *holonomy group* of $G$. The dimension of an almost crystallographic group equals the dimension of the Lie group $L$ above which coincides also with the Hirsch length of the polycyclic-by-finite group. This library therefore contains families of virtually nilpotent groups of Hirsch length 3 and 4. aclib-1.3.2/doc/aclib.bib0000664000371700037170000000357613627151544016321 0ustar gap-jenkinsgap-jenkins%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %W aclib.bib ac lib documentation Bettina Eick %W Karel Dekimpe %% @book{KD, author = "Karel Dekimpe", title = "Almost-Bieberbach Groups: Affine and Polynomial Structures", series = "Lecture Notes in Mathematics", volume = "1639", publisher = "Springer-Verlag, Heidelberg", year = "1996", } @article{AUS, author = "Louis Auslander", title = "Bieberbach's theorem on space groups and discrete uniform subgroups of Lie groups", journal = "Ann. of Math", number = "3", volume = "71", year = "1960", pages ="579-590" } @book{BRO, author = "Kenneth S.\ Brown", title = "Cohomology of Groups", volume = "87", series = "Grad. Texts in Math.", year = "1982", publisher = "Springer-Verlag, New York" } @article{LEE, author = "Kyung Bai Lee", title = "There are only finitely many infra-nilmanifolds under each nilmanifold", journal = "Quart. J. Math. Oxford", number = "2", volume = "39", year = "1988", pages ="61--66" } @article{DM, author = "An Descheemaeker and Wim Malfait", title = "{$P$}-localization of Relative Groups", journal = "Journal of Pure and Applied Algebra", volume = "159", number = "1", year = "2001" } @article{DE1, author = "Karel Dekimpe and Bettina Eick", title = "Computations with almost crystallographic groups", journal = "Submitted", year = "2001" } @article{DE2, author = "Karel Dekimpe and Bettina Eick", title = "Computational aspects of group extensions and their application in topology", journal = "Submitted", year = "2001" } aclib-1.3.2/doc/algos.tex0000664000371700037170000001042513627151544016407 0ustar gap-jenkinsgap-jenkins\Chapter{Algorithms for almost crystallographic groups} This chapter presents a variety of algorithms for almost crystallographic groups. In most cases, they assume a polycyclically presented group as input; in particular, the input groups must be polycyclic in this case. The methods described here supplement the methods of the {\sf Polycyclic} package for polycyclically presented groups. Many of the functions in this chapter are based on methods of the {\sf Polycyclic} package and thus this package must be installed to use the functions introduced here. We refer to the {\sf Polycyclic} package for further information on polycyclic presentations. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Properties of almost crystallographic groups} \> IsAlmostCrystallographic( ) P This function checks if a polycyclically presented group is almost crystallographic; that is, it checks if is nilpotent-by-finite and has no non-trivial finite normal subgroup. \> IsAlmostBieberbachGroup( ) P This function checks if a polycyclically presented group is almost Bieberbach; that is, it checks if is nilpotent-by-finite and torsion free. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Betti numbers} Let $G$ be a polycyclically presented and torsion free group of Hirsch length $n$. Then we can compute the Betti numbers $\beta_i(G)$ for $i \in \{0, 1, 2, n-2, n-1, n\}$. If $n \leq 6$, then we can compute all Betti numbers $\beta_i(G)$ for $0 \leq i \leq 6$ of $G$. We introduce the following functions for this purpose and we refer to \cite{BRO} for the details on the orientation module and the Betti numbers. \> OrientationModule( ) F This function determines the orientation module of the polycyclically presented group ; that is, it returns a list of matrices $m_1, \ldots, m_n \leq GL( 1, \Z )$ which are the images of the 'Igs(G)' in their action on the orientation module. \> BettiNumber( , ) F This function returns the th Betti number of the polycyclically presented torsion free group if $m \in \{0, 1, 2, n-2, n-1, n\}$, where $n$ is the Hirsch length of . \> BettiNumbers( ) A This function returns the Betti number of the polycyclically presented torsion free group if the Hirsch length of is smaller than 7. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Determination of certain extensions} Let $G$ be a polycyclically presented almost crystallographic group. We want to check the existence of certain extensions of $G$. First, it is well-known that the equivalence classes of extensions of $G$ correspond to the second cohomology group of $G$. This cohomology group can be computed using the methods of the {\sf Polycyclic} package for any explicitly given module of $G$. Further, we can construct a polycyclic presentation for each cocycle of the second cohomology group. We give an example for such a computation below. However, we may be interested in certain extensions only; for example, the torsion free extensions are often of particular interest. If the second cohomology group is finite, then we can compute a polycyclic presentation for each element of this group and check the resulting group for torsion freeness. But if the second cohomology group is infinite, then this approach is not available. Hence we introduce the following special method to cover this and related applications. \> HasExtensionOfType( , , ) F Suppose that is a polycyclically presented almost crystallographic group with Fitting subgroup $N$. This function checks if there is a $G$-module $M \cong \Z$ which is centralized by $N$ such that there exists a torsion free extension of $M$ by (if the flag is true) or an extension $E$ with $Z(Fitt(E)) = M$ (if the flag is true) or an extension which satisfies both conditions (if both flags are true). We note that the existence of such extensions is of interest in the determination of extensions which are almost Bieberbach groups. We refer to \cite{DE1} for a more detailed account of this application and for further results of a similar nature. aclib-1.3.2/doc/examp.tex0000664000371700037170000002171513627151544016420 0ustar gap-jenkinsgap-jenkins\Chapter{Example computations with almost crystallographic groups} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Example computations I} Using the functions available for pcp groups in the share package {\sf polycyclic} it is now easy to redo some of the calculations of \cite{KD}. As a first example we check whether the groups indicated as torsion free in \cite{KD} are also determined as torsion free ones by \GAP. In \cite{KD} these almost Bieberbach groups are listed as ``AB-groups''. So for type ``013'' these are the groups with parameters $(k,0,1,0,1,0)$ where $k$ is an even integer. Let's look at some examples in \GAP: \beginexample gap> G:=AlmostCrystallographicPcpDim4("013",[8,0,1,0,1,0]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); true gap> G:=AlmostCrystallographicPcpDim4("013",[9,0,1,0,1,0]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); false \endexample Further, there is also some cohomology information in the tables of \cite{KD}. In fact, the groups in this library were obtained as extensions $E$ of the form $$ 1 \rightarrow \Z \rightarrow E \rightarrow Q \rightarrow 1 $$ where, in the 4-dimensional case $Q = E/\langle d \rangle$. The cohomology information for the particular example above shows that the groups determined by a parameter set $(k_1,k_2,k_3,k_4,k_4,k_6)$ are equivalent as extensions to the groups determined by the parameters $(k_1, k_2 \bmod 2, k_3 \bmod 2, k_4 \bmod 2, k_5 \bmod 2, 0)$. This is also visible in finding torsion: \beginexample gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,2,0,1,0]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); false gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,3,0,1,9]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); true \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Example computations II} The computation of cohomology groups played an important role in the classification of the almost Bieberbach groups in \cite{KD}. Using \GAP, it is now possible to check these computations. As an example we consider the 4-dimensional almost crystallographic groups of type 85 on page 202 of \cite{KD}. This group $E$ has 6 generators. In the table, one also finds the information $$ H^2(Q,\Z) = \Z \oplus (\Z_2)^2 \oplus \Z_4 $$ for $Q=E/\langle d \rangle$ as above. Moreover, the $Q$--module $\Z$ is in fact the group $\langle d \rangle$, where the $Q$-action comes from conjugation inside $E$. In the case of groups of type 85, $\Z$ is a trivial $Q$-module. The following example demonstrates how to (re)compute this two-cohomology group $H^2(Q,\Z)$. \beginexample gap> G:=AlmostCrystallographicPcpGroup(4, "085", false); Pcp group with orders [ 2, 4, 0, 0, 0, 0 ] gap> GroupGeneratedByd:=Subgroup(G, [G.6] ); Pcp group with orders [ 0 ] gap> Q:=G/GroupGeneratedByd; Pcp group with orders [ 2, 4, 0, 0, 0 ] gap> action:=List( Pcp(Q), x -> [[1]] ); [ [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ] ] gap> C:=CRRecordByMats( Q, action);; gap> TwoCohomologyCR( C ).factor.rels; [ 2, 2, 4, 0 ] \endexample This last line gives us the abelian invariants of the second cohomology group $H^2(Q,\Z)$. So we should read this line as $$ H^2(Q,\Z) = \Z_2 \oplus \Z_2 \oplus \Z_4 \oplus \Z $$ which indeed coincides with the information in \cite{KD}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Example computations III} As another application of the capabilities of the combination of `aclib' and {\sf polycyclic} we check some computations of \cite{DM}. Section 5 of the paper \cite{DM} is completely devoted to an example of the computation of the $P$-localization of a virtually nilpotent group, where $P$ is a set of primes. Although it is not our intention to develop the theory of $P$-localization of groups at this place, let us summarize some of the main results concerning this topic here. For a set of primes $P$, we say that $n \in P$ if and only if $n$ is a product of primes in $P$. A group $G$ is said to be $P$-local if and only if the map $\mu_n:G\rightarrow G: g \mapsto g^n$ is bijective for all $n \in P'$, where $P'$ is the set of all primes not in $P$. The $P$-localization of a group $G$, is a $P$-local group $G_P$ together with a morphism $\alpha :G \rightarrow G_P$ which satisfy the following universal property: For each $P$-local group $L$ and any morphism $\varphi: G \rightarrow L$, there exists a unique morphism $\psi:G_P \rightarrow L$, such that $\psi \circ \alpha = \varphi$. This concept of localization is well developed for finite groups and for nilpotent groups. For a finite group $G$, the $P$-localization is the largest quotient of $G$, having no elements with an order belonging to $P'$ (the morphism $\alpha$, mentioned above is the natural projection). In \cite{DM} a contribution is made towards the localization of virtually nilpotent groups. The theory developed in the paper is then illustrated in the last section of the paper by means of the computation of the $P$-localization of an almost crystallographic group. For their example the authors have chosen an almost crystallographic group $G$ of dimension 3 and type 17. For the set of parameters $(k_1,k_2,k_3,k_4)$ they have considered all cases of the form $(k_1,k_2,k_3,k_4)=(2,0,0,k_4)$. Here we will check their computations in two cases $k_4=0$ and $k_4=1$ using the set of primes $P=\{2\}$. The holonomy group of these almost crystallographic groups $G$ is the dihedral group ${\cal D}_6$ of order 12. Thus there is a short exact sequence of the form $$ 1 \rightarrow {\rm Fitt}(G) \rightarrow G \rightarrow {\cal D}_6 \rightarrow 1. $$ As a first step in their computation, Descheemaeker and Malfait determine the group $I_{P'}{\cal D}_6$, which is the unique subgroup of order 3 in ${\cal D}_6$. One of the main objects in \cite{DM} is the group $K=p^{-1} (I_{P'}{\cal D}_6)$, where $p$ is the natural projection of $G$ onto its holonomy group. It is known that the $P$-localization of $G$ coincides with the $P$-localization of $G/\gamma_3(K)$, where $\gamma_3(K)$ is the third term in the lower central series of $K$. As $G/\gamma_3(K)$ is finite in this example, we exactly know what this $P$-localization is. Let us now show, how GAP can be used to compute this $P$-localization in two cases: \medskip First case: The parameters are $(k_1,k_2,k_3,k_4)=(2,0,0,0)$ \beginexample gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,0] ); Pcp group with orders [ 2, 6, 0, 0, 0 ] gap> projection := NaturalHomomorphismOnHolonomyGroup( G ); [ g1, g2, g3, g4, g5 ] -> [ g1, g2, identity, identity, identity ] gap> F := HolonomyGroup( G ); Pcp group with orders [ 2, 6 ] gap> IPprimeD6 := Subgroup( F , [F.2^2] ); Pcp group with orders [ 3 ] gap> K := PreImage( projection, IPprimeD6 ); Pcp group with orders [ 3, 0, 0, 0 ] gap> PrintPcpPresentation( K ); pcp presentation on generators [ g2^2, g3, g4, g5 ] g2^2 ^ 3 = identity g3 ^ g2^2 = g3^-1*g4^-1 g3 ^ g2^2^-1 = g4*g5^-2 g4 ^ g2^2 = g3*g5^2 g4 ^ g2^2^-1 = g3^-1*g4^-1*g5^2 g4 ^ g3 = g4*g5^2 g4 ^ g3^-1 = g4*g5^-2 gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K )); Pcp group with orders [ 0, 0, 0 ] gap> quotient := G/Gamma3K; Pcp group with orders [ 2, 6, 3, 3, 2 ] gap> S := SylowSubgroup( quotient, 3); Pcp group with orders [ 3, 3, 3 ] gap> N := NormalClosure( quotient, S); Pcp group with orders [ 3, 3, 3 ] gap> localization := quotient/N; Pcp group with orders [ 2, 2, 2 ] gap> PrintPcpPresentation( localization ); pcp presentation on generators [ g1, g2, g3 ] g1 ^ 2 = identity g2 ^ 2 = identity g3 ^ 2 = identity \endexample This shows that $G_P\cong \Z_2^3$. \medskip Second case: The parameters are $(k_1,k_2,k_3,k_4)=(2,0,0,1)$ \beginexample gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,1]);; gap> projection := NaturalHomomorphismOnHolonomyGroup( G );; gap> F := HolonomyGroup( G );; gap> IPprimeD6 := Subgroup( F , [F.2^2] );; gap> K := PreImage( projection, IPprimeD6 );; gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));; gap> quotient := G/Gamma3K;; gap> S := SylowSubgroup( quotient, 3);; gap> N := NormalClosure( quotient, S);; gap> localization := quotient/N; Pcp group with orders [ 2, 2, 2 ] gap> PrintPcpPresentation( localization ); pcp presentation on generators [ g1, g2, g3 ] g1 ^ 2 = identity g2 ^ 2 = g3 g3 ^ 2 = identity g2 ^ g1 = g2*g3 g2 ^ g1^-1 = g2*g3 \endexample In this case, we see that $G_P={\cal D}_4$. \medskip The reader can check that these results coincide with those obtained in \cite{DM}. Note also that we used a somewhat different scheme to compute this localization than the one used in \cite{DM}. We invite the reader to check the same computations, tracing exactly the steps made in \cite{DM}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %E Emacs . . . . . . . . . . . . . . . . . . . . . local emacs variables %% %% Local Variables: %% fill-column: 73 %% End: %% aclib-1.3.2/doc/manual.tex0000664000371700037170000000432013627151544016554 0ustar gap-jenkinsgap-jenkins%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F gapomacro . . . . . . . . . . . . . . . . read the GAP macro package %% \input ../../../doc/gapmacro % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F BeginningOfBook . . . . . . . . . . . . . . . . . . . start the book %% \BeginningOfBook{aclib} % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F UseReferences . . . . . . . . . . . . . . . . . . specify references %% \UseReferences{../../../doc/ref} % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F TitlePage . . . . . . . . . . . . . . . . . . . . . . nice title page %% \TitlePage{ \centerline{\titlefont Aclib} \vfill \centerline{\titlefont ---}\vfill \centerline{\titlefont A GAP4 Package} \vfill \centerline{\secfont Computations with} \bigskip \centerline{\secfont Almost Crystallographic Groups} \vfill \centerline{\secfont by}\vfill \centerline{\secfont Karel Dekimpe (KU Leuven Kulak)}\medskip \centerline{\secfont and }\medskip \centerline{\secfont Bettina Eick (Braunschweig)} } % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F TableOfContents . . . . . . . . . . . . generate a table of contents %% \OneColumnTableOfContents %\TableOfContents % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F FrontMatter . . . . . . . . . . . . . . . . . . . . . %% \FrontMatter \immediate\write\citeout{\bs bibdata{aclib}} % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F Chapters %% \Chapters \Input{intro} \Input{algos} \Input{aclib} \Input{examp} % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F Appendices %% \Appendices \Bibliography \Index % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %F EndOfBook . . . . . . . . . . . . . . . . . . . . . . . . . that's it %% \EndOfBook % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %E manual.tex . . . . . . . . . . . . . . . . . . . . . . . . ends here aclib-1.3.2/doc/aclib.tex0000664000371700037170000003114213627151544016353 0ustar gap-jenkinsgap-jenkins\Chapter{The catalog of almost crystallographic groups} This chapter introduces the access functions to the catalog of 3- and 4-dimensional crystallographic groups. This catalog is an electronic version of the classification obtained in \cite{KD}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Rational matrix groups} The following three main functions are available to access the library of almost crystallographic groups as rational matrix groups. \> AlmostCrystallographicGroup( , , ) \> AlmostCrystallographicDim3( , ) \> AlmostCrystallographicDim4( , ) is the dimension of the required group. Thus must be either 3 or 4. The inputs and are used to define the desired group as described in \cite{KD}. We outline the possible choices for and here briefly. A more extended description is given later in Section "More about almost crystallographic groups" or can be obtained from \cite{KD}. specifies the type of the required group. There are 17 types in dimension 3 and 95 types in dimension 4. The input can either be an integer defining the position of the desired type among all types; that is, in this case is a number in [1..17] in dimension 3 or a number in [1..95] in dimension 4. Alternatively, can be a string defining the desired type. In dimension 3 the possible strings are `"01"', `"02"', $\ldots$, `"17"'. In dimension 4 the possible strings are listed in the list `ACDim4Types' and thus can be accessed from \GAP. is a list of integers. Its length depends on the type of the chosen group. The lists `ACDim3Param' and `ACDim4Param' contain at position $i$ the length of the parameter list for the type number $i$. Every list of integers of this length is a valid input. Alternatively, one can input `false' instead of a parameter list. Then \GAP\ will chose a random parameter list of suitable length. \beginexample gap> G := AlmostCrystallographicGroup( 4, 50, [ 1, -4, 1, 2 ] ); gap> DimensionOfMatrixGroup( G ); 5 gap> FieldOfMatrixGroup( G ); Rationals gap> GeneratorsOfGroup( G ); [ [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, 1/2, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 1 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 1 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, -4, 1, 0, 1/2 ], [ 0, 0, -1, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 0, 1, 1/4 ], [ 0, 0, 0, 0, 1 ] ] ] gap> G.1; [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ] gap> ACDim4Types[50]; "076" gap> ACDim4Param[50]; 4 \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Polycyclically presented groups} All the almost crystallographic groups considered in this package are polycyclic. Hence they have a polycyclic presentation and this can be used to facilitate efficient computations with the groups. To obtain the polycyclic presentation of an almost crystallographic group we supply the following functions. Note that the share package {\sf Polycyclic} must be installed to use these functions. \> AlmostCrystallographicPcpGroup( , , ) \> AlmostCrystallographicPcpDim3( , ) \> AlmostCrystallographicPcpDim4( , ) The input is the same as for the corresponding matrix group functions. The output is a pcp group isomorphic to the corresponding matrix group. An explicit isomorphism from an almost crystallographic matrix group to the corresponding pcp group can be obtained by the following function. \> IsomorphismPcpGroup( ) We can use the polycyclic presentations of almost crystallographic groups to exhibit structure information on these groups. For example, we can determine their Fitting subgroup and ask group-theoretic questions about this nilpotent group. The factor $G / Fit(G)$ of an almost crystallographic group $G$ is called *holonomy group*. We provide access to this factor of a pcp group via the following functions. Let $G$ be an almost crystallographic pcp group. \> HolonomyGroup( ) \> NaturalHomomorphismOnHolonomyGroup( ) The following example shows applications of these functions. \beginexample gap> G := AlmostCrystallographicPcpGroup( 4, 50, [ 1, -4, 1, 2 ] ); Pcp-group with orders [ 4, 0, 0, 0, 0 ] gap> Cgs(G); [ g1, g2, g3, g4, g5 ] gap> F := FittingSubgroup( G ); Pcp-group with orders [ 0, 0, 0, 0 ] gap> Centre(F); Pcp-group with orders [ 0, 0 ] gap> LowerCentralSeries(F); [ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0 ], Pcp-group with orders [ ] ] gap> UpperCentralSeries(F); [ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0, 0 ], Pcp-group with orders [ ] ] gap> MinimalGeneratingSet(F); [ g2, g3, g4 ] gap> H := HolonomyGroup( G ); Pcp-group with orders [ 4 ] gap> hom := NaturalHomomorphismOnHolonomyGroup( G ); [ g1, g2, g3, g4, g5 ] -> [ g1, identity, identity, identity, identity ] gap> U := Subgroup( H, [Pcp(H)[1]^2] ); Pcp-group with orders [ 2 ] gap> PreImage( hom, U ); Pcp-group with orders [ 2, 0, 0, 0, 0 ] \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{More about the type and the defining parameters} Each group from this library knows that it is almost crystallographic and, additionally, it knows its type and defining parameters. \> AlmostCrystallographicInfo( ) This attribute is set for groups from the library only. It is not possible at current to determine the type and the defining parameters for an arbitrary almost crystallographic groups which is not defined by the library access functions. \beginexample gap> G := AlmostCrystallographicGroup( 4, 70, false ); gap> IsAlmostCrystallographic(G); true gap> AlmostCrystallographicInfo(G); rec( dim := 4, type := 70, param := [ 1, -4, 1, 2, -3 ] ) \endexample \beginexample gap> G := AlmostCrystallographicPcpGroup( 4, 70, false ); Pcp-group with orders [ 6, 0, 0, 0, 0 ] gap> IsAlmostCrystallographic(G); true gap> AlmostCrystallographicInfo(G); rec( dim := 4, type := 70, param := [ -3, 2, 5, 1, 0 ] ) \endexample We consider the types of almost crystallographic groups in more detail. The almost crystallographic groups in dimensions 3 and 4 fall into three families \beginlist \item{(1)} 3-dimensional almost crystallographic groups. \item{(2)} 4-dimensional almost crystallographic groups with a Fitting subgroup of class 2. \item{(3)} 4-dimensional almost crystallographic groups with a Fitting subgroup of class 3. \endlist These families are split up further into subfamilies in \cite{KD} and to each subfamily is assigned a type; that is, a string which is used to identify the subfamily. As mentioned above, for the 3-dimensional almost crystallographic groups the type is a string representing the numbers from 1 to 17, i.e. the available types are `"01"', `"02"', $\ldots$, `"17"'. For the 4-dimensional almost crystallographic groups with a Fitting subgroup of class 2 the type is a string of 3 or 4 characters. In general, a string of 3 characters representing the number of the table entry in \cite{KD} is used. So possible types are `"001"', `"002"', $\ldots$. The reader is warned however that not all possible numbers are used, e.g.\ there are no groups of type `"016"'. Also, the types do not appear in their natural order in \cite{KD}. Moreover, for certain numbers there is more than one family of groups listed in \cite{KD}. For example, the 3 families of groups corresponding to number 19 on pages 179-180 of \cite{KD} have types `"019"', `"019b"' and `"019c"' (the order is the one given in \cite{KD}). For the last category of groups, the 4-dimensional almost crystallographic groups with a Fitting subgroup of class 3, the type is a string of 2 or 3 characters, where the first character is always the letter `"B"'. This `"B"' is followed by the number of the table entry as found in \cite{KD}, eventually followed by a `"b"' or `"c"' as in the previous case. For each type of almost crystallographic group contained in the library there exists a function taking a parameter list as input and returning the desired matrix or pcp group. These functions can be accessed from \GAP\ using the lists `ACDim3Funcs', `ACDim4Funcs', `ACPcpDim3Funcs' and `ACPcpDim4Funcs' which consist of the corresponding functions. Although we include these direct access functions here for completeness, we note that the user should in general use the higher-level functions introduced above to obtain almost crystallographic groups from the library. In particular, these low-level access functions return matrix or pcp groups, but the almost crystallographic info flags will not be attached to them. \beginexample gap> ACDim3Funcs[15]; function( k1, k2, k3, k4 ) ... end gap> ACDim3Funcs[15](1,1,1,1); gap> ACPcpDim3Funcs[1](1); Pcp-group with orders [ 0, 0, 0 ] \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{The electronic versus the printed library} The package `aclib' can be considered as the electronic version of Chapter 7 of \cite{KD}. In this section we outline the relationship between the library presented in this manual and the printed version in \cite{KD}. First we consider an example. At page 175 of \cite{KD}, we find the following groups in the table starting with entry ``13''. \medskip 13. $Q=P2/c$ $$ \matrix{ E:\;\langle a,b,c,d,\alpha,\beta\;\|\; & {\,[b,a]=1}\hskip 1.61cm {[d,a]=1} \hfill & \rangle \cr & \matrix{ {[c,a]=d^{2 k_1}}\hfill & {[d,b]=1}\hfill \cr {[c,b]=1}\hfill & {[d,c]=1}\hfill \cr \alpha a=a^{-1}\alpha d^{k_{2}}\hfill & \alpha^2=d^{k_3}\hfill \cr \alpha b=b\alpha \hfill & \alpha d= d \alpha\hfill \cr \alpha c=c^{-1}\alpha d^{-2 k_6}\hfill & \cr \beta a=a^{-1}\beta d^{k_1+k_2} \hfill & \beta^2=d^{k_5}\hfill \cr \beta b=b^{-1}\beta d^{k_4}\hfill & \beta d= d \beta\hfill \cr \beta c=c^{-1}\beta d^{-2 k_6}\hfill & \alpha \beta=c\beta\alpha d^{k_6} \hfill } & } $$ $$\lambda(\alpha)=\left(\matrix{ 1& \frac{k_1}{2}+k_2 & 0 & -2 k_6 & \frac{k_3}{2}+\frac{k_6}{2} \cr 0& -1 & 0 & 0 & 0 \cr 0 & 0& 1 & 0 & 0 \cr 0 & 0 & 0 & -1 & \frac12\cr 0 & 0 & 0 & 0 & 1 }\right) \;\;\lambda(\beta)=\left(\matrix{ 1& k_1+k_2 & k_4 & -2 k_6 & \frac{k_5}{2} \cr 0& -1 & 0 & 0 & 0 \cr 0 & 0& -1 & 0 & 0 \cr 0 & 0 & 0 & -1 & 0\cr 0 & 0 & 0 & 0 & 1 }\right) $$ $$H^2(Q,\Z{})=\Z{}\oplus(\Z{}_2)^4=\Z^{6}/A,$$ $$A=\{(k_1,\ldots,k_6)\| k_1=0,\;k_2,\ldots, k_5\in 2\Z{},\;k_6\in\Z\}$$ AB-groups: $\forall k>0,\;k\equiv 0\bmod 2,\;<(k,0,1,0,1,0)>$ \medskip The number ``13'' at the beginning of this entry is the type of the almost crystallographic group in this library. This family of groups with type 13 depends on 6 parameters $k_1, k_2, \ldots, k_6$ and these are the list in this library. The rational matrix representation in \GAP\ corresponds exactly to the printed version in \cite{KD} where it is named $\lambda$. In the example below, we consider the group with parameters $(k_1,k_2,k_3,k_4,k_5,k_6)=(8,0,1,0,1,0)$. \beginexample gap> G:=AlmostCrystallographicDim4("013",[8,0,1,0,1,0]); gap> G.5; [ [ 1, 4, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, -1, 1/2 ], [ 0, 0, 0, 0, 1 ] ] gap> G.6; [ [ 1, 8, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, -1, 0, 0 ], [ 0, 0, 0, -1, 0 ], [ 0, 0, 0, 0, 1 ] ] \endexample For a 4-dimensional almost crystallographic group the matrix group is built up such that $\{ a, b, c, d, \alpha, \beta, \gamma \}$ as described in \cite{KD} forms the defining generating set of $G$. For certain types the elements $\alpha$, $\beta$ or $\gamma$ may not be present. Similarly, for a 3-dimensional group we have the generating set $\{ a, b, c, \alpha, \beta \}$ and $\alpha$ and $\beta$ may be absent. \bigskip To obtain a polycyclic generating sequence from the defining generators of the matrix group we have to order the elements in the generating set suitably. For this purpose we take the subsequence of $(\gamma, \beta, \alpha, a, b, c, d)$ of those generators which are present in the defining generating set of the matrix group. This new ordering of the generators is then used to define a polycyclic presentation of the given almost crystallographic group. aclib-1.3.2/tst/manual.example-3.tst0000664000371700037170000000543213627151544020432 0ustar gap-jenkinsgap-jenkinsgap> START_TEST(""); gap> G := AlmostCrystallographicGroup( 4, 50, [ 1, -4, 1, 2 ] ); gap> DimensionOfMatrixGroup( G ); 5 gap> FieldOfMatrixGroup( G ); Rationals gap> GeneratorsOfGroup( G ); [ [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, 1/2, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 1 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 1 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ], [ [ 1, -4, 1, 0, 1/2 ], [ 0, 0, -1, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 0, 1, 1/4 ], [ 0, 0, 0, 0, 1 ] ] ] gap> G.1; [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ] gap> ACDim4Types[50]; "076" gap> ACDim4Param[50]; 4 gap> G := AlmostCrystallographicPcpGroup( 4, 50, [ 1, -4, 1, 2 ] ); Pcp-group with orders [ 4, 0, 0, 0, 0 ] gap> Cgs(G); [ g1, g2, g3, g4, g5 ] gap> F := FittingSubgroup( G ); Pcp-group with orders [ 0, 0, 0, 0 ] gap> Centre(F); Pcp-group with orders [ 0, 0 ] gap> LowerCentralSeries(F); [ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0 ], Pcp-group with orders [ ] ] gap> UpperCentralSeries(F); [ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0, 0 ], Pcp-group with orders [ ] ] gap> MinimalGeneratingSet(F); [ g2, g3, g4 ] gap> H := HolonomyGroup( G ); Pcp-group with orders [ 4 ] gap> hom := NaturalHomomorphismOnHolonomyGroup( G ); [ g1, g2, g3, g4, g5 ] -> [ g1, id, id, id, id ] gap> U := Subgroup( H, [Pcp(H)[1]^2] ); Pcp-group with orders [ 2 ] gap> PreImage( hom, U ); Pcp-group with orders [ 2, 0, 0, 0, 0 ] gap> G := AlmostCrystallographicGroup( 4, 70, false ); gap> IsAlmostCrystallographic(G); true gap> AlmostCrystallographicInfo(G); rec( dim := 4, param := [ -3, 2, -1, -2, -1 ], type := 70 ) gap> G := AlmostCrystallographicPcpGroup( 4, 70, false ); Pcp-group with orders [ 6, 0, 0, 0, 0 ] gap> IsAlmostCrystallographic(G); true gap> AlmostCrystallographicInfo(G); rec( dim := 4, param := [ -1, 1, -4, 1, 0 ], type := 70 ) gap> ACDim3Funcs[15]; function( k1, k2, k3, k4 ) ... end gap> ACDim3Funcs[15](1,1,1,1); gap> ACPcpDim3Funcs[1](1); Pcp-group with orders [ 0, 0, 0 ] gap> G:=AlmostCrystallographicDim4("013",[8,0,1,0,1,0]); gap> G.5; [ [ 1, 4, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, -1, 1/2 ], [ 0, 0, 0, 0, 1 ] ] gap> G.6; [ [ 1, 8, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, -1, 0, 0 ], [ 0, 0, 0, -1, 0 ], [ 0, 0, 0, 0, 1 ] ] # gap> STOP_TEST( "" ,1); aclib-1.3.2/tst/manual.example-4.tst0000664000371700037170000000505313627151544020432 0ustar gap-jenkinsgap-jenkinsgap> START_TEST(""); gap> G:=AlmostCrystallographicPcpDim4("013",[8,0,1,0,1,0]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); true gap> G:=AlmostCrystallographicPcpDim4("013",[9,0,1,0,1,0]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); false gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,2,0,1,0]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); false gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,3,0,1,9]); Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ] gap> IsTorsionFree(G); true gap> G:=AlmostCrystallographicPcpGroup(4, "085", false); Pcp-group with orders [ 2, 4, 0, 0, 0, 0 ] gap> GroupGeneratedByd:=Subgroup(G, [G.6] ); Pcp-group with orders [ 0 ] gap> Q:=G/GroupGeneratedByd; Pcp-group with orders [ 2, 4, 0, 0, 0 ] gap> action:=List( Pcp(Q), x -> [[1]] ); [ [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ] ] gap> C:=CRRecordByMats( Q, action);; gap> TwoCohomologyCR( C ).factor.rels; [ 2, 2, 4, 0 ] gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,0] ); Pcp-group with orders [ 2, 6, 0, 0, 0 ] gap> projection := NaturalHomomorphismOnHolonomyGroup( G ); [ g1, g2, g3, g4, g5 ] -> [ g1, g2, id, id, id ] gap> F := HolonomyGroup( G ); Pcp-group with orders [ 2, 6 ] gap> IPprimeD6 := Subgroup( F , [F.2^2] ); Pcp-group with orders [ 3 ] gap> K := PreImage( projection, IPprimeD6 ); Pcp-group with orders [ 3, 0, 0, 0 ] gap> PrintPcpPresentation( K ); g1^3 = id g2 ^ g1 = g2^-1 * g3^-1 g3 ^ g1 = g2 * g4^2 g3 ^ g2 = g3 * g4^2 g3 ^ g2^-1 = g3 * g4^-2 gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K )); Pcp-group with orders [ 0, 0, 0 ] gap> quotient := G/Gamma3K; Pcp-group with orders [ 2, 6, 3, 3, 2 ] gap> S := SylowSubgroup( quotient, 3); Pcp-group with orders [ 3, 3, 3 ] gap> N := NormalClosure( quotient, S); Pcp-group with orders [ 3, 3, 3 ] gap> localization := quotient/N; Pcp-group with orders [ 2, 2, 2 ] gap> PrintPcpPresentation( localization ); g1^2 = id g2^2 = id g3^2 = id gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,1]);; gap> projection := NaturalHomomorphismOnHolonomyGroup( G );; gap> F := HolonomyGroup( G );; gap> IPprimeD6 := Subgroup( F , [F.2^2] );; gap> K := PreImage( projection, IPprimeD6 );; gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));; gap> quotient := G/Gamma3K;; gap> S := SylowSubgroup( quotient, 3);; gap> N := NormalClosure( quotient, S);; gap> localization := quotient/N; Pcp-group with orders [ 2, 2, 2 ] gap> PrintPcpPresentation( localization ); g1^2 = id g2^2 = g3 g3^2 = id g2 ^ g1 = g2 * g3 # gap> STOP_TEST( "" ,1); aclib-1.3.2/tst/testall.g0000664000371700037170000000017113627151544016442 0ustar gap-jenkinsgap-jenkinsLoadPackage("aclib"); TestDirectory(DirectoriesPackageLibrary("aclib", "tst"), rec(exitGAP := true)); FORCE_QUIT_GAP(1); aclib-1.3.2/doc/manual.six0000664000371700037170000000222713627151544016563 0ustar gap-jenkinsgap-jenkinsC intro.tex 1. The Almost Crystallographic Groups Package S 1.1. More about almost crystallographic groups C algos.tex 2. Algorithms for almost crystallographic groups S 2.1. Properties of almost crystallographic groups F 2.1. IsAlmostCrystallographic F 2.1. IsAlmostBieberbachGroup S 2.2. Betti numbers F 2.2. OrientationModule F 2.2. BettiNumber F 2.2. BettiNumbers S 2.3. Determination of certain extensions F 2.3. HasExtensionOfType C aclib.tex 3. The catalog of almost crystallographic groups S 3.1. Rational matrix groups F 3.1. AlmostCrystallographicGroup F 3.1. AlmostCrystallographicDim3 F 3.1. AlmostCrystallographicDim4 S 3.2. Polycyclically presented groups F 3.2. AlmostCrystallographicPcpGroup F 3.2. AlmostCrystallographicPcpDim3 F 3.2. AlmostCrystallographicPcpDim4 F 3.2. IsomorphismPcpGroup F 3.2. HolonomyGroup F 3.2. NaturalHomomorphismOnHolonomyGroup S 3.3. More about the type and the defining parameters F 3.3. AlmostCrystallographicInfo S 3.4. The electronic versus the printed library C examp.tex 4. Example computations with almost crystallographic groups S 4.1. Example computations I S 4.2. Example computations II S 4.3. Example computations III aclib-1.3.2/doc/make_doc0000775000371700037170000000135013627151544016245 0ustar gap-jenkinsgap-jenkins#!/bin/sh set -e DEFAULT_GAPPATH=../../.. if test -z "$1"; then GAPPATH=${DEFAULT_GAPPATH}; echo "Using ${DEFAULT_GAPPATH} as default GAP path"; else GAPPATH=$1; fi echo "TeXing documentation" # TeX the manual and build its bibliography tex manual; bibtex manual # TeX the manual again to incorporate the ToC ... and build the index tex manual; $GAPPATH/doc/manualindex manual # Finally TeX the manual again to get cross-references right tex manual # Create the .pdf version pdftex manual; pdftex manual # The HTML version of the manual rm -rf ../htm mkdir ../htm echo "Creating HTML documentation" $GAPPATH/etc/convert.pl -i -u -c -n aclib . ../htm ############################################################################# ## #E aclib-1.3.2/doc/manual.dvi0000664000371700037170000013342413627151544016546 0ustar gap-jenkinsgap-jenkins; TeX output 2020.01.28:1612p)&YNe9V$ phvb7tNAcGlibJvZ|XYA GAP4PacGkag\%eOW'Pe9V phvb7tPComputations&with^Almost&Cr!FystallographicGruoupsJfbuyJ_rKarel&Dekimpe(KULeuvenK.ulak) [ܢandm0Bettina&Eicuk(Braunsc޹hweig)*pԼ\8PNContentsNHߌ ptmb7tH1$TheAlmostCrystallographicGroupsPgackage3 ;3{ ptmr7t1.1$MoreaboutalmostcrystallographicgroupsH. ..................3H2$Algorithmsforalmostcrystallographicgroups5 2.1$PropertiesofalmostcrystallographicgroupsY. ..................5 2.2$Bettinumbers\. ............................5 2.3$Determinationofcertaine٠xtensions ). ....................6H3$Thecatalogofalmostcrystallographicgroupsm7 3.1$Rationalmatrixgroups. .........................7 3.2$Polyc٠yclicallypresentedgroupsd.. ......................8 3.3$Moreaboutthetypeandthede ningparameters /. ................9 3.4$Theelectronicv٠ersustheprintedlibraryh. ...................10H4$Examplecomputationswithalmostcrystallographicgroups712 4.1$ExamplecomputationsI ;&. ........................12 4.2$ExamplecomputationsII殍. ........................13 4.3$ExamplecomputationsIII6. ........................13$HBibliograph٠ynC16$Index17pƢMe9V` phvb7tM1 ENThe Almost,>Cr\%ystallographic GrGoups Packag\%e<ٍA]group]is]calledHalmostcrystallographicifitisa nitelygeneratednilpotent-by- nitegroupwithoutnon-trivial nitenormalsubgroups.AnimportantspecialcaseofalmostcrystallographicgroupsaretheHalmostBieberbachgroups:thesearealmostcrystallographicandtorsionfree.N8Byitsde nition,analmostcrystallographicgroupLKj ptmri7tLGhasa nitelygeneratednilpotentnormalsubgroupLNDof niteinde٠x.ClearlyY,LNN#ispolycyclicandthushasapolyc٠yclicseries.Thenumberofin nitec٠yclicfgactorsinsuchaseriesforLNisaninvariantofLG:theHHirschlengthofLG.F٠or#޾V zptmcm7t3ӆDƛ zptmcm7yD3{matriceswithdrealentriesisofthistype.ThenLL-oӆAut}(LL)actsanely(ontheleft)onLLviaYGD8LlA? zptmcm7mA;LlEƛ zptmcm7yE06lD2LLA;D8A D2Aut(LL):0(TKj ptmri7tTlB? zptmcm7mB; )`}LlE06l=Ll0A x(LlE0oT)D4lLChapter1.TheAlmostCrystalloggr٠aphicGroupsP37ackagepLetBLCzVbeamaximalcompactsubgroupofBAutA(LL).ThenasubgroupLGofLLZoSULCissaidtobeanalmostcrystallographic group\]ifandonlyiftheactionofLG\^onLL,inducedbytheactionofLLoAut(LL),isproperlydiscontinuousandthequotientspaceLGDnLLiscompact.Onereco٠versthesituationoftheordinarycrystallographicgroupsbytakingLL=R^Tn,forsomeLn,andLCh=LO(Ln),theorthogonalgroup.N8More;generallyY,wesaythatanabstractgroupisanalmostcrystallographicgroupifitcanberealizedasagenuinealmostcrystallographicsubgroupofsomeLLo(LC8P.InthefollowingtheoremweoutlinesomealgebraiccharacterizationsofFalmostcrystallographicGgroups;seeTheorem3.1.3of[Dek96].RecallthattheHFittingsubgroupFitt(LG)ofapolyc٠yclic-by- nitegroupLGisitsuniquemaximalnormalnilpotentsubgroup.HTheorem.Thefollowingareequivalentforapolyc٠yclic-by- nitegroupLG:N8W(1)LGisanalmostcrystallographicgroup.W(2)Fitt(LG)istorsionfreeandof niteinde٠xinLG.W(3)LGcontainsatorsionfreenilpotentnormalsubgroupLNof niteinde٠xinLGwithLCTG(LN)torsionfree.W(4)LGhasanilpotentsubgroupof niteinde٠xandtherearenonon-trivial nitenormalsubgroupsinLG.pInparticular,ifLGisalmostcrystallographic,thenLGA=LFitt.(LG)is nite.ThisfgactoriscalledtheHholonomygroupofLG.TheJdimensionIofanalmostcrystallographicgroupequalsthedimensionoftheLiegroupLLabo٠vewhichJcoincidesalsoˆwith˅theHirschlengthofthepolyc٠yclic-by- nitegroup.ThislibrarythereforecontainsfgamiliesofvirtuallynilpotentgroupsofHirschlength3and4.)pCM2^NNAlgorithms 2fGoralmost,!cr\%ystallographicZqgrGoups;Thisjchapteripresentsavarietyofalgorithmsforalmostcrystallographicgroups.Inmostcases,the٠yassumeapoly- c٠yclicallypresentedgroupasinput;inparticular,theinputgroupsmustbepolycyclicinthiscase.ThemethodsdescribedYhereXsupplementthemethodsoftheQPolycyclicpackageforpolyc٠yclicallypresentedgroups.Man٠yofthefunctions7in6thischapterarebasedonmethodsoftheQPolycyclicpackageandthusthispackagemustbeinstalledtousetheWIfunctionsintroducedWHhere.W37erefertotheQPolycyclicpackageforfurtherinformationonpolyc٠yclicpresentations.N8P2.1PruoperBties&ofalmostcr!Fystallographicgroups3S3{ ptmr7tS1̟^3u7msam7IIsAlmostCrystallographic(?LG)48PN8Thisfunctionchecksifapolyc٠yclicallypresentedgroupLGxisalmostcrystallographic;thatis,itchecksifLGxisnilpotent-by- niteandhasnonon-trivial nitenormalsubgroup.3S2̟^IIsAlmostBieberbachGroup(?LG)9xPN8Thisfunctionchecksifapolyc٠yclicallypresentedgroupLGisalmostBieberbach;thatis,itchecksifLGisnilpotent-by- niteandtorsionfree.N8P2.2Betti&n޹umbersN8Let-LG-beapolyc٠yclicallypresentedandtorsionfreegroupofHirschlengthLn.ThenwecancomputetheBettinumbersA Tir((LG)pforpLiD2f0A;1A;2A;LnD2A;LnD1A;LnDg.pIfpLnD6,thenwepcancomputeallBettinumbersA Tir((LG)for0DLiD6ofpLG.W37eintroduce.thefollowingfunctionsfor/thispurposeandwereferto[Bro82]forthedetailsontheorientationmoduleandtheBettinumbers.3S1̟^IOrientationModule(?LG)XFN8This function determinestheorientationmoduleofthepolyc٠yclicallypresentedgroupLG;thatis,itreturnsalistofmatricesLm1A;:::;LmTnDLGL(1A;Z)whicharetheimagesofthe'Igs(G)'intheiractionontheorientationmodule.3S2̟^IBettiNumber(?LG,Lm)f;FN8ThisIfunctionreturnstheJLmthBettinumberofthepolyc٠yclicallypresentedtorsionfreegroupLG-ifLmSD2f0A;1A;2A;LnD2A;Ln8D1A;LnDg,whereLnistheHirschlengthofLG.3S3̟^IBettiNumbers(?LG)qAN8This.function/returnstheBettinumberofthepolyc٠yclicallypresentedtorsionfreegroupLGiftheHirschlengthofLGissmallerthan7.'6LChapter2.Algorithmsforalmostcrystalloggr٠aphicgroupspP2.3Determination&ofcerBtainextensionsN8LetaLGbbeapolyc٠yclicallypresentedalmostcrystallographicgroup.W37ewganttocheckthee٠xistenceofcertaine٠xten- sionsofLG.N8First,(mitiswell-knownthat(ltheequivalenceclassesofe٠xtensionsofLGcorrespond(ltothesecondcohomologygroupofLG.ThiscohomologygroupcanbecomputedusingthemethodsoftheQPolycyclicpackageforan٠yexplicitlygivenmoduleofLG.Further,wecanconstructapolyc٠yclicpresentationforeachcocycleofthesecondcohomologygroup.W37egiv٠eanexampleforsuchacomputationbelowY.Howev٠er,wemaybeinterestedincertaine٠xtensionsonly;fore٠xample,thetorsionfreee٠xtensionsareoftenofparticu-larW@interest.IfthesecondW?cohomologygroupis nite,thenwecancomputeapolyc٠yclicpresentationforeachelementofathisgroupandchecktheresultinggroupfortorsion`freeness.Butifthesecondcohomologygroupisin nite,thenthisLapproachisnotavailable.HenceweintroducetheLfollowingspecialmethodtoco٠verLthisandrelatedapplications.3S1̟^IHasExtensionOfType(?LG,LtorgsionfrGee,Lminimalcentre) FN8SupposeCthatLGC|isapolyc٠yclicallypresentedalmostcrystallographicgroupCwithFittingsubgroupLN.ThisfunctionchecksifthereisaLG-moduleLMW"D("=PZwhichiscentralizedbyLNsuchthattheree٠xistsatorsionfreee٠xtensionofLMbyLGg(ifthe agLtorgsionfrGeeistrue)orane٠xtensionLE-dwithLZ(LFitt.(LE:))(=LMX(ifthe agLminimalcentreistrue)orane٠xtensionwhichsatis esbothconditions(ifboth agsaretrue).W37enotethatthee٠xistenceofsuche٠xtensionsisofinterestinthedeterminationofe٠xtensionswhicharealmostBieberbachgroups.W37ereferto[DE01b]foramoredetailedaccountofthisapplicationandforfurtherresultsofasimilarnature.3OpCM3a9NThe =catalog =ofalmost,!cr\%ystallographicZqgrGoups;*Thischapterintroducestheaccessfunctionstothecatalogof3-and4-dimensionalcrystallographicgroups.This catalogisanelectronicv٠ersionoftheclassi cationobtainedin[Dek96].ZP3.1Rational&matrixgruoups-The0?followingthreemainfunctionsareavailableto0@accessthelibraryofalmostcrystallographicgroupsasrationalmatrixgroups.q3S1̟^IAlmostCrystallographicGroup(?Ldim,Ltype,Lpar٠ametergs)36IAlmostCrystallographicDim3(?Ltype,Lpar٠ametergs)36IAlmostCrystallographicDim4(?Ltype,Lpar٠ametergs)5Ldimisthedimensionoftherequiredgroup.ThusLdimmustbeeither3or4.TheinputsLtypeandLpar٠ametergsareusedtoUde nethedesiredgroupasdescribedin[Dek96].W37eoutlinethepossiblechoicesforLtypeandLpar٠ametergsherebrie yY.Amoree٠xtendeddescriptionisgivenlaterinSection1.1orcanbeobtainedfrom[Dek96].=yLtypeDspeci esthetypeDoftherequiredgroup.Thereare17typesindimension3and95typesindimension4.TheinputlLtypelcaneitherbeaninte٠gerde ningthepositionofthedesiredtypeamongalltypes;thatis,inthiscaseLtypeisanumberin[1..17]indimension3oranumberin[1..95]indimension4.Alternativ٠elyY,Ltypecanbeastringde ningthedesiredtype.Indimension3thepossiblestringsare"01","02",A:::|,"17".Indimension4thepossiblestringsarelistedinthelistACDim4TypesandthuscanbeaccessedfromQGAP.=xLpar٠ametergsxisalistofyintegers.Itslengthdependsonthetypeofthechosenygroup.ThelistsACDim3ParamandACDim4ParamAcontainBatpositionLithelengthoftheparameterlistforthetypenumberLi.Ev٠erylistofinte٠gersofthislength8cis8davalidLpar٠ametersBinput.Alternativ٠elyY,8conecaninputfalseinsteadofaparameterlist.ThenQGAPwillchosearandomparameterlistofsuitablelength.9gap>?G:=AlmostCrystallographicGroup(4,50,[1,-4,1,2]);99gap>?DimensionOfMatrixGroup(G);959gap>?FieldOfMatrixGroup(G);9Rationals9gap>?GeneratorsOfGroup(G);9[?[[1,0,-1/2,0,0],[0,1,0,0,1],[0,0,1,0,0],-[?0,0,0,1,0],[0,0,0,0,1]],[?[1,1/2,0,0,0],[0,1,0,0,0],[0,0,1,0,1],-[?0,0,0,1,0],[0,0,0,0,1]],[?[1,0,0,0,0],[0,1,0,0,0],[0,0,1,0,0],-[?0,0,0,1,1],[0,0,0,0,1]],[?[1,0,0,0,1],[0,1,0,0,0],[0,0,1,0,0],<8讥LChapter3.Thecataloggofalmostcrystallogr٠aphicgroupsp-[?0,0,0,1,0],[0,0,0,0,1]], [?[1,-4,1,0,1/2],[0,0,-1,0,0],[0,1,0,0,0],-[?0,0,0,1,1/4],[0,0,0,0,1]]]9gap>?G.1;9[?[1,0,-1/2,0,0],[0,1,0,0,1],[0,0,1,0,0],[?0,0,0,1,0],[0,0,0,0,1]]9gap>?ACDim4Types[50];9"076"9gap>?ACDim4Param[50];94P3.2Pzolyc޹yculically&presentedgroupsEAll'the(almostcrystallographicgroupsconsideredinthispackagearepolyc٠yclic.Hencethe٠yhavea(polycyclicpresen-tationMandLthiscanbeusedtofgacilitateecientcomputationswiththegroups.T37oobtainthepolyc٠yclicpresentationofanalmostcrystallographicgroupwesupplythefollowingfunctions.NotethatthesharepackageQPolycyclicmustbeinstalledtousethesefunctions.⍍3S1̟^IAlmostCrystallographicPcpGroup(?Ldim,Ltype,Lpar٠ametergs)36IAlmostCrystallographicPcpDim3(?Ltype,Lpar٠ametergs)36IAlmostCrystallographicPcpDim4(?Ltype,Lpar٠ametergs)GThe inputis thesameasforthecorrespondingmatrixgroupfunctions.Theoutputisapcpgroupisomorphictothecor-responding1Fmatrix1Ggroup.Ane٠xplicitisomorphismfromanalmostcrystallographicmatrixgrouptothecorrespondingpcpgroupcanbeobtainedbythefollowingfunction.ፍ3S2̟^IIsomorphismPcpGroup(?LG)GW37ecanusethepolyc٠yclicpresentationsofalmostcrystallographicgroupstoexhibitstructureinformationonthesegroups.F٠orexample,wecandeterminetheirFittingsubgroupandaskgroup-theoreticquestionsaboutthisnilpotentgroup.ѯThefgactorLGA=LFit.(LG)ofanalmostcrystallographicgroupѮLGiscalledHholonomygroup.W37epro٠videaccesstothisfgactorofapcpgroupviathefollowingfunctions.LetLGbeanalmostcrystallographicpcpgroup.3S3̟^IHolonomyGroup(?LG)36INaturalHomomorphismOnHolonomyGroup(?LG)GThefollowinge٠xampleshowsapplicationsofthesefunctions.9gap>?G:=AlmostCrystallographicPcpGroup(4,50,[1,-4,1,2]);9Pcp-group?withorders[4,0,0,0,0]9gap>?Cgs(G);9[?g1,g2,g3,g4,g5]9gap>?F:=FittingSubgroup(G);9Pcp-group?withorders[0,0,0,0]9gap>?Centre(F);9Pcp-group?withorders[0,0]9gap>?LowerCentralSeries(F);9[?Pcp-groupwithorders[0,0,0,0],Pcp-groupwithorders[0],Pcp-group?withorders[ ]]9gap>?UpperCentralSeries(F);9[?Pcp-groupwithorders[0,0,0,0],Pcp-groupwithorders[0,0],Pcp-group?withorders[ ]]9gap>?MinimalGeneratingSet(F);9[?g2,g3,g4] H|LSection3.MorGeaboutthetypeandthede ningpar٠ametergs29p9gap>?H:=HolonomyGroup(G); 9Pcp-group?withorders[4]9gap>?hom:=NaturalHomomorphismOnHolonomyGroup(G);9[?g1,g2,g3,g4,g5]->[g1,identity,identity,identity,identity]9gap>?U:=Subgroup(H,[Pcp(H)[1]^2]);9Pcp-group?withorders[2]9gap>?PreImage(hom,U);9Pcp-group?withorders[2,0,0,0,0]P3.3More&aboutthetypeandthede ningparametersٍEachgroupfromthislibraryknowsthatitisalmostcrystallographicand,additionallyY,itknowsitstypeandde ningparameters.3S1̟^IAlmostCrystallographicInfo(?LG)WThis\attribute\issetforgroupsfromthelibraryonlyY.Itisnotpossibleatcurrenttodeterminethetypeandthede ningparametersforanarbitraryalmostcrystallographicgroupswhichisnotde nedbythelibraryaccessfunctions.9gap>?G:=AlmostCrystallographicGroup(4,70,false);99gap>?IsAlmostCrystallographic(G);9true9gap>?AlmostCrystallographicInfo(G);9rec(?dim:=4,type:=70,param:=[1,-4,1,2,-3])> 9gap>?G:=AlmostCrystallographicPcpGroup(4,70,false);9Pcp-group?withorders[6,0,0,0,0]9gap>?IsAlmostCrystallographic(G);9true9gap>?AlmostCrystallographicInfo(G);9rec(?dim:=4,type:=70,param:=[-3,2,5,1,0])ٍW37e`considerthetypesof`almostcrystallographicgroupsinmoredetail.Thealmostcrystallographicgroupsindimen-sions3and4fgallintothreefamiliesWW(1)3-dimensionalalmostcrystallographicgroups.ԍW(2)4-dimensionalalmostcrystallographicgroupswithaFittingsubgroupofclass2.ՍW(3)4-dimensionalalmostcrystallographicgroupswithaFittingsubgroupofclass3.+These(Mfgamiliesaresplitupfurther(Lintosubfamiliesin[Dek96]andtoeachsubfamilyisassigned(Latype;thatis,astringwhichisusedtoidentifythesubfgamilyY.Asmentionedabo٠ve,forthe3-dimensionalalmostcrystallographicgroupsthetypeisastringrepresentingthenumbersfrom1to17,i.e.theavailabletypesare"01","02",A:::$,"17".F٠or!the4-dimensional!almostcrystallographicgroupswithaFittingsubgroupofclass2thetypeisastringof3or4V4characters.V3Ingeneral,astringof3charactersrepresentingthenumberofthetableentryin[Dek96]isused.Sopossibletypesare"001","002",A:::d/.Thereaderiswgarnedhowev٠erthatnotallpossiblenumbersareused,e.g.therenarenongroupsoftype"016".Also,thetypesdonotappearintheirnaturalorderin[Dek96].Moreo٠ver,nforcertainv~numbersvthereismorethanonefgamilyofgroupslistedin[Dek96].F٠orexample,v~the3fgamiliesofgroupscorrespondingtonumber19onpages179-180of[Dek96]hav٠etypes"019","019b"and"019c"(theorderistheonegiv٠enin[Dek96]).ԍF٠orthelastcategoryofgroups,the4-dimensionalalmostcrystallographicgroupswithaFittingsubgroupofclass3,thetypeisastringof2or3characters,wherethe rstcharacterisalgwaystheletter"B".This"B"isfollowedbythenumberofthetableentryasfoundin[Dek96],ev٠entuallyfollowedbya"b"or"c"asinthepreviouscase. Tʍ10㮥LChapter3.Thecataloggofalmostcrystallogr٠aphicgroupspF٠oreachtypeofalmostcrystallographicgroupcontainedinthelibrarytheree٠xistsafunctiontakingaparameter listzasinputandreturningthedesiredmatrixorpcpzgroup.ThesefunctionscanbeaccessedfromQGAPusingthelistsACDim3Funcs,ACDim4Funcs,ACPcpDim3FuncsandACPcpDim4Funcswhichconsistofthecorrespondingfunctions.N8Although.we-includethesedirectaccessfunctionshereforcompleteness,wenotethattheusershouldingeneralusethe-?higher-lev٠elfunctionsintroducedabovetoobtainalmostcrystallographicgroupsfromthelibraryY.Inparticular,theseQlow-lev٠elQaccessfunctionsreturnmatrixorpcpgroups,butthealmostcrystallographicinfo agswillnotbeattachedtothem.9gap>?ACDim3Funcs[15];9function(?k1,k2,k3,k4)...end9gap>?ACDim3Funcs[15](1,1,1,1);99gap>?ACPcpDim3Funcs[1](1);9Pcp-group?withorders[0,0,0]P3.4The&electruonicversustheprintedlibrar!FyN8The `packageaclibcan _beconsideredastheelectronicv٠ersionofChapter7of[Dek96].Inthissectionweoutlinethe}relationshipbetweenthe|librarypresentedinthismanualandtheprintedv٠ersionin[Dek96].Firstweconsiderane٠xample.Atpage175of[Dek96],we ndthefollowinggroupsinthetablestartingwithentry\13".13.LQ=LP2A=Lc:m1?E:0DhLaA;LbA;LcA;LdEA; x; DjD[LbA;La]=1"aJ[LdEA;La]=1bDi5D[LcA;La]=LdE^2Tk @޾V zptmcm7t@1[LdEA;Lb]=1D[LcA;Lb]=1[LdEA;Lc]=1DA xLa=La^E1 p]A LdE^Tk @2A x^2=LdE^Tk @3DA xLb=LbA  xLd 0=LdEA D xLc=Lc^E1 p]A LdE^E2Tk @6DA :La=La^E1 p]A LdE^Tk @1+Tk @2A :^2=LdE^Tk @5DA :Lb=Lb^E1 p]A LdE^Tk @4A :Ld 0=LdEA D :Lc=Lc^E1 p]A LdE^E2Tk @6A x =LcA : LdE^Tk @6=8 3A:(A x)=hGCq zptmcm7vG0BBBcЍ@ 11٤dTk @1dٌf`M2&+8Lk2C[A0R[AD2Lk6Ѝr,Tk @3r,`f`M2|K+ЍlTk @6l`f`M2 10$cD1C[A0Zv0}n0 10(F0C[A1Zv0}n0 10(F0C[A0VD1`~nn1~nnЉf`2 10(F0C[A0Zv0}n1hvG1vCvCvCcЍvAocA(A )=hG0BBBcЍ@ 111Lk18+8Lk2EtLk4ZD2Lk6ЍzwTk @5zw۟`f`M2 10$[@D1G,d0b)0{0 10(=0CID1b)0{0 10(=0G,d0^G@D1{0 10(=0G,d0b)0{1hqYG1qYCqYCqYCcЍqYA&8LHs02s0(LQA;Z)=Z8D(Z2)4=Z6A=LAA;LA=Df(Lk1A;:::;Lk6)DjLk1=0A;qLk2A;:::;Lk5D22ZA;qLk6D2ZDgAB-groups:N8D8LkA>0A;qLkD0modU2A;q(Lk+A;L0A;L1A;L0A;L1A;L0)The ,number +\13"atthebe٠ginningofthisentryisthetypeofthealmostcrystallographicgroupinthislibraryY.This fgamily of groupswithtype13dependson6parametersLk1A;Lk2A;:::;Lk6 and these aretheLpar٠ametergslistinthislibraryY.TheThrationalmatrixrepresentationinQGAPcorrespondse٠xactlytotheprintedversionin[Dek96]whereitisnamedA:.Inthee٠xamplebelowY,weconsiderthegroupwithparameters(Lk1A;Lk2A;Lk3A;Lk4A;Lk5A;Lk6)=(8A;0A;1A;0A;1A;0). cLSection4.Theelectronicvergsustheprintedlibr٠ary11p9gap>?G:=AlmostCrystallographicDim4("013",[8,0,1,0,1,0]); 99gap>?G.5;9[?[1,4,0,0,1/2],[0,-1,0,0,0],[0,0,1,0,0],[?0,0,0,-1,1/2],[0,0,0,0,1]]9gap>?G.6;9[?[1,8,0,0,1/2],[0,-1,0,0,0],[0,0,-1,0,0],[?0,0,0,-1,0],[0,0,0,0,1]]N8F٠orBSa4-dimensionalalmostcrystallographicBRgroupthematrixgroupisbuiltupsuchthatDfLaA;LbA;LcA;LdEA; x; :; DgBSasde-scribed8in[Dek96]formsthede ning9generatingsetofLG.F٠orcertaintypestheelementsA x,A orA maynotbepresent.SimilarlyY,fora3-dimensionalgroupwehav٠ethegeneratingsetDfLaA;LbA;LcA; x; :DgandA TxandA maybeabsent.N8T37o\obtain\apolyc٠yclicgeneratingsequencefromthede ninggeneratorsofthematrixgroupwehav٠etoordertheelementsHintheHgeneratingsetsuitablyY.F٠orthispurposewetakgethesubsequenceof(A x; :; ;LaA;LbA;LcA;LdE)HofHthosegener-atorswhicharepresentinthede ninggeneratingsetofthematrixgroup.Thisneworderingofthegeneratorsisthenusedtode neapolyc٠yclicpresentationofthegivenalmostcrystallographicgroup. vpYƢM4P?NExample,acomputations 8with .almost!cr\%ystallographicZqgrGoups>ʍP4.1Example&computationsIN8UsingthefunctionsavailableforpcpgroupsinthesharepackageQpolycyclicitisnoweasytoredosomeofthe calculationswofw[Dek96].Asa rste٠xamplewecheckwhetherthegroupsindicatedastorsionfreein[Dek96]arealsodeterminedastorsionfreeonesbyQGAP.In[Dek96]thesealmostBieberbachgroupsarelistedas\37AB-groups".SoforJtypeJ\013"thesearethegroupswithparameters(Lk+A;0A;1A;0A;1A;0)JwhereLkvisanev٠enintegers8.JLet'slookJatsomee٠xamplesinQGAP:9gap>?G:=AlmostCrystallographicPcpDim4("013",[8,0,1,0,1,0]);9Pcp-group?withorders[2,2,0,0,0,0]9gap>?IsTorsionFree(G);9true9gap>?G:=AlmostCrystallographicPcpDim4("013",[9,0,1,0,1,0]);9Pcp-group?withorders[2,2,0,0,0,0]9gap>?IsTorsionFree(G);9falseFurther,thereisalsosomecohomologyinformationinthetablesof[Dek96].Infgact,thegroupsinthislibrarywereobtainedase٠xtensionsLEoftheformN8Ɵ1D!ZD!LED!LQD!1N8where,inthe4-dimensionalcaseLQ=LE:A=DhLdEDi.Thecohomologyinformationfortheparticulare٠xampleaboveshowsthatthegroupsdeterminedbyaparameterset(Lk1A;Lk2A;Lk3A;Lk4A;Lk4A;Lk6)areequivalentase٠xtensionstothegroupsdeter-minedbytheparameters(Lk1A;Lk2modU2A;Lk3mod2A;Lk4mod2A;Lk5mod2A;0).Thisisalsovisiblein ndingtorsion: |LSection3.ExamplecomputationsIII8013p9gap>?G:=AlmostCrystallographicPcpDim4("013",[10,0,2,0,1,0]); 9Pcp-group?withorders[2,2,0,0,0,0]9gap>?IsTorsionFree(G);9false9gap>?G:=AlmostCrystallographicPcpDim4("013",[10,0,3,0,1,9]);9Pcp-group?withorders[2,2,0,0,0,0]9gap>?IsTorsionFree(G);9trueP4.2Example&computationsIIN8The"computation"ofcohomologygroupsplayedanimportantroleintheclassi cationofthealmostBieberbachgroupsin[Dek96].UsingQGAP,itisnowpossibletocheckthesecomputations.Asane٠xampleweconsiderthe4-dimensionalalmostRcrystallographicQgroupsoftype85onpage202of[Dek96].ThisgroupLE10has6generators.Inthetable,onealso ndstheinformationN8]LHs02s0(LQA;Z)=Z8D(Z2)28DZ4N8forLQ=LE:A=DhLdEDiasabo٠ve.Moreover,theLQ{moduleZisinfgactthegroupDhLdEDi,wheretheLQ-actioncomesfromconjug7ationinsideLE:.Inthecaseofgroupsoftype85,ZisatrivialLQ-module.Thefollowinge٠xampledemonstrateshowto(re)computethistwgo-cohomologygroupLHs0^2s0(LQA;Z).9gap>?G:=AlmostCrystallographicPcpGroup(4,"085",false);9Pcp?groupwithorders[2,4,0,0,0,0]9gap>?GroupGeneratedByd:=Subgroup(G,[G.6]);9Pcp?groupwithorders[0]9gap>?Q:=G/GroupGeneratedByd;9Pcp?groupwithorders[2,4,0,0,0]9gap>?action:=List(Pcp(Q),x->[[1]]);9[?[[1]],[[1]],[[1]],[[1]],[[1]]]9gap>?C:=CRRecordByMats(Q,action);;9gap>?TwoCohomologyCR(C).factor.rels;9[?2,2,4,0]ThisMlastlinegiv٠esMustheabelianinvariantsofthesecondMcohomologygroupLHs0^2s0(LQA;Z).SoweshouldreadthislineasN8cLHs02s0(LQA;Z)=Z28D8Z2DZ4DZN8whichindeedcoincideswiththeinformationin[Dek96].N8P4.3Example&computationsIIIAsanotherapplicationofthecapabilitiesofthecombinationofaclibandQpolycyclicwechecksomecomputationsof[DM01].N8Sectionay5ofazthepaper[DM01]iscompletelydevotedtoane٠xampleofthecomputationoftheLP-localizationofavirtuallyCnilpotentgroup,whereDLPisasetofprimes.Althoughitisnotourintentiontodev٠elopthetheoryofLP-localizationofgroupsatthisplace,letussummarizesomeofthemainresultsconcerningthistopichere.F٠orasetofprimesLP,wesaythatLnJDD2JELPifandonlyifLnisaproductofprimesinLP.AgroupLGissaidtobeLP-localifXandYonlyifthemapATn:LGD!LG:LgD7!Lg^TnYisXbijectiv٠eforallLnD2LP^E0l,whereXLP^E0$isthesetofallprimesnotinLP.TheZ#LP-localizationZ"ofagroupLG,isaLP-localgroupLGTP! togetherwithamorphismA /:[ LG[ D!LGTP! whichsatisfyZ#the14@LChapter4.Examplecomputationswithalmostcrystalloggr٠aphicgroupspfollowingFKuniv٠ersalFLproperty:ForFLeachLP-localgroupLLMandan٠ymorphismA':LGD!LL,thereFLe٠xistsauniquemorphism A :LGTPD!LL,suchthatA  XD8A =A'x.ThisÂconceptofÃlocalizationiswelldev٠elopedfor nitegroupsandfornilpotentgroups.F٠ora nitegroupLG,theLP-localizationisthelargestquotientofLG,havingnoelementswithanorderbelongingtoLP^E0V(themorphismA x,mentionedabo٠veisthenaturalprojection).In[DM01]acontributionismadetowgardsthelocalizationofvirtuallynilpotentgroups.Thetheorydev٠elopedinthegpaperisthenillustratedinthelastsectionofthefpaperbymeansofthecomputationoftheLP-localizationofanalmostcrystallographicgroup.F٠ortheirexampletheauthorshavechosenanalmostcrystallographicgroupLGofdimension3andtype17.F٠orthesetofparameters(Lk1A;Lk2A;Lk3A;Lk4)the٠yhaveconsideredallcasesoftheform(Lk1A;Lk2A;Lk3A;Lk4)=(2A;0A;0A;Lk4).HerewewillchecktheircomputationsintwgocasesLk4 =0andLk4=1usingthesetofprimesLP=Df2Dg.Theholonomy(groupofthesealmostcrystallographicgroupsLGisthedihedral)groupDD6(oforder12.Thusthereisashorte٠xactsequenceoftheform1D!Fitte(LG)D!LGD!D6D!1Dz Asa rststepintheircomputation,DescheemaekgerandMalfgaitdeterminethegroupLITP"Fƛ zptmcm7yF0DD6,whichistheuniquesubgroupyoforder3inDD6.Oneofxthemainobjectsin[DM01]isthegroupLK=Lp^E1 p](LITP"F0DD6),whereLpisthenaturalprojectionofLGontoitsholonomygroup.ItisknownthattheLP-localizationofLGcoincideswiththeLP-localizationofLGA= 3(LK),whereA 3(LK)isthethirdterminthelowercentralseriesofLK.AsLGA= 3(LK)is niteinthise٠xample,wee٠xactlyknowwhatthisLP-localizationis.LetusnowshowY,howGAPcanbeusedtocomputethisLP-localizationintwgocases:Firstcase:Theparametersare(Lk1A;Lk2A;Lk3A;Lk4)=(2A;0A;0A;0)9gap>?G:=AlmostCrystallographicPcpGroup(3,17,[2,0,0,0]);9Pcp?groupwithorders[2,6,0,0,0]9gap>?projection:=NaturalHomomorphismOnHolonomyGroup(G);9[?g1,g2,g3,g4,g5]->[g1,g2,identity,identity,identity]9gap>?F:=HolonomyGroup(G);9Pcp?groupwithorders[2,6]9gap>?IPprimeD6:=Subgroup(F,[F.2^2]);9Pcp?groupwithorders[3]9gap>?K:=PreImage(projection,IPprimeD6);9Pcp?groupwithorders[3,0,0,0]9gap>?PrintPcpPresentation(K);9pcp?presentationongenerators[g2^2,g3,g4,g5]9g2^2?^3=identity9g3?^g2^2=g3^-1*g4^-19g3?^g2^2^-1=g4*g5^-29g4?^g2^2=g3*g5^29g4?^g2^2^-1=g3^-1*g4^-1*g5^29g4?^g3=g4*g5^29g4?^g3^-1=g4*g5^-29gap>?Gamma3K:=CommutatorSubgroup(K,CommutatorSubgroup(K,K));9Pcp?groupwithorders[0,0,0]9gap>?quotient:=G/Gamma3K;9Pcp?groupwithorders[2,6,3,3,2]9gap>?S:=SylowSubgroup(quotient,3);9Pcp?groupwithorders[3,3,3]9gap>?N:=NormalClosure(quotient,S);9Pcp?groupwithorders[3,3,3]9gap>?localization:=quotient/N;ꍟLSection3.ExamplecomputationsIII8015p9Pcp?groupwithorders[2,2,2] 9gap>?PrintPcpPresentation(localization);9pcp?presentationongenerators[g1,g2,g3]9g1?^2=identity9g2?^2=identity9g3?^2=identityThisshowsthatLGTPWD(=1Z^3d2.N8Secondcase:Theparametersare(Lk1A;Lk2A;Lk3A;Lk4)=(2A;0A;0A;1)9gap>?G:=AlmostCrystallographicPcpGroup(3,17,[2,0,0,1]);; 9gap>?projection:=NaturalHomomorphismOnHolonomyGroup(G);;9gap>?F:=HolonomyGroup(G);;9gap>?IPprimeD6:=Subgroup(F,[F.2^2]);;9gap>?K:=PreImage(projection,IPprimeD6);;9gap>?Gamma3K:=CommutatorSubgroup(K,CommutatorSubgroup(K,K));;9gap>?quotient:=G/Gamma3K;;9gap>?S:=SylowSubgroup(quotient,3);;9gap>?N:=NormalClosure(quotient,S);;9gap>?localization:=quotient/N;9Pcp?groupwithorders[2,2,2]9gap>?PrintPcpPresentation(localization);9pcp?presentationongenerators[g1,g2,g3]9g1?^2=identity9g2?^2=g39g3?^2=identity9g2?^g1=g2*g39g2?^g1^-1=g2*g3Inthiscase,weseethatLGTP=DD4.Thereadercancheckthattheseresultscoincidewiththoseobtainedin[DM01].Notealsothatweusedasomewhatdi erentschemetocomputethislocalizationthantheoneusedin[DM01].W37einvitethereadertocheckthesamecomputations,tracinge٠xactlythestepsmadein[DM01].WpC NBibliographGy޾V zptmcm7t;3{ ptmr7t5 msbm103u7msam7> stream xEr0E{B]XӒJ $3!S(?d;\Z> stream xݘKo@,a8}(*EwmƸ}b+/s733^}# HΘ@R E[moMWq^WVWȃ<= {QvespOoY ͐S@q À(X zfпNbW Ӵ|H' r~ gA >9 0;a>ChPQ \uJ(P&lVy~[J^Bmzj&ub<j,uL5va=`W"0tzj,v\Q O{Xs(=C5ܗ:Mxlmu& fc^Gxs;'!tnnM|x `?I> stream xڥ˒_T5BAҩf{drhXK*ӍHhI@nݟϳM\l6Z<6ZiDy8l~oB\+iX bnhqW Rʼnv~]벡3Yd¡Yܱ,ipyFcَlhQ;m6BDDZ\^ Lx_G?3-֣=;Z]YZ0=ovT%(.V4p\}"ꮥSo #՞k|'{<{Pzq0h}yL^25mާt T-TW'h{uJOR3.cXZHC*d"_w̎iƷ6߾Eќ%Zb hH=V¾U %|Z;F} gik30BN@ l_SzBYVPLB%O,aEV;]eBH dVֹ V9%9ㅸ6GLGߘ8>GkTEPf$zy^L(;C F@hT h/M؄z*2 :'l6O:|C6ϖ{>xc{Zа泠3/NaIQ1D9ӡG4o!ʇDwvԖj vyj۔y5e7DVz\nqoW[@L*:nqڃpIQ 3P336t'7:/ =YCs_${D\ ]q3e/%uuiJ8~~f^ \p !{37p*29H,a/lׄgS}rV#Ģ2mM?VHx#}r#;';wyun4^r$U)EñԿ6nSS.A(2aWs._`^?kr..WYPي*HJ"dl*`)@ j=lWՖ׫}^Cz--Yd&--T@__ lIZ5\yooNeNsRn(:eXGZ>ː rWzFtMdhӔ.[Ӭ kO&G2*JB+֫`"5PPW,`uq&ZhA).8:zlh (-o#VfPO-YXvrfϜP(, ˒f}4c0ЏG35n{G_([X->ԧ K%ZO )o/ru M(`jg a^g*omzѸɎP8Ob35!t]ї95]-_Oe s;Q |_ΆQ 6vX|p۟11{E YD! *hdID- _!$mX>Y}!NRRF隧1O#{.@o<.#M GېNB,v1Y٬$t%i_F,RV15FXL&b+D~/"lVݸ-$TWśј%gbYUmҏyK!W^ "nHWU i4-JժUUW 0_kN]O$(/NV endstream endobj 81 0 obj << /Length 1834 /Filter /FlateDecode >> stream xXI6Wh1KآnI[ %=MI}ܴL{{ )Bf SS__՟w?M6hT IǮjV%A~U~`ϿkmWfEr۬_ǝ.fҜ}eQ2X_U`h:rg]%x'l`=qBHRdbYP~eiǢN{l?~s < e2sL Dywy!$! 9#%"66+ƲHB'gLF=LxtQ{?7e?e[kJ2$A5!Hq/VT,OL?O:촩YRQ5m;]^WuD {rNׁTVAfq׌#F粩"7 )^7QMTQccU|ԝO`a1$ENUbl!T a8L32cEDH,TN j岩Jc__·zCwc~ 8˥iu]4pܪspuMSkap׃.v C %i5hys@۞ dٚCT"1}Y%r5A9gLd{n~۾ %ʙX 6l#h=:G^T@￯>*Ռ j\vvTXzU}2 ԊȃuN+b ~+v;2|LE/Cc&d ch&szs^8uW"\2^ iz.i .LNt |Ԧz4]`p5PJ @@2E:ɹۼׄIۭb֧X`:޴,ִ e 0##LC*f빮Ǝv;UaM3cq29'܆b-I3\4m(3MU /8+t953}A=^lXa(p\L+ X6 3N{' z8&9#XؚXGRΈؼlkbOBAiD(rn@uAҮ8~^9:>&&k|xcS@m'ꪌ@ϘKT3~ 8MӾhV CTu*> stream xYK6ϯ-6Mi4LfAm!lHrSŢi;b(Uŏ6uIfB%jJXc7&y|N~Ϗʰb*\0!$u:A}]]3_TVsg*voZ*`% X,]צͷrbRăN}<4\ƓeVZmaZda20)^lmfh ]95:feѾR~Et"5ׅOBtnr xdaLUplrmE2MQ{2>kö؁B7i%z@:k8740 8GpL'~ȗ*V{["P!: tNRi:V˶Wh(wђhlܻ OgW; *~q?OaLdoa_P-t K$ h(Tt3Gv=u_F1_GjYAƨygaT]/S"`Q#c]N֪;}}Oo#yi[GB_@G$P)8KC!e2LُDBѬ- t T8s\x e6\ t:aΥ`>@ Ě^ͿM 7<#3՗'-"Q#"@J0Ԗ-%AI5DNĚ\, =s;#@]=`s+c+GdL@b^CImo9,CĤ]ʬV*} v/E2¹OK"!(lzBE[Z[jފo',)_n>. 4_ގw[ z|\_{t+Xj5 ΄/{wSk7p5%u똳5:6{x ^vr8TVuQD/_dYhے(>;#-P'2ED:~,(E1{롂S_d] Z7 UEn71d9?RN|VKh~uh  A^<'5;= CiIm@).\`ͬlpH; t"PJH@N\"N ,TzSIne'GTT2>^N>"9, - -Pp#JX_8bx>}rƁ{~Ri,l p"`h !@2!-{_`"E"pC"&!`ux[NvҸgY,鴏b$^ڱlX҅!19r|x 6/eA:Ku7ƿ@p&Fl} !C҇?~(ڡ4B&`lROrNp1|7q8COgKM x, ѲAƲ0W)8hr|A6^h.6!H-CMʺ#aH[ sfo o XԷ7%T5doNQʪ/b/:WXwSW()=o>4%O u*S߶lB/Qd@nrHPEXgI<x= ] j!j+$ 6f}!BϹY-oފ|ٔ>/.&Ru/|23A+?2߄Iì]RsT9F ũK %ԡ]AS?=y^`-L_c H)n*  +sXY~vCu22}{Pu%F_b F#( q7q&CK$\H!>py(g*FB&ߙDin&y/ ;QoN^ȍ+XBuoȲߕ ʽ#PrBLU7)&ϩ%ѽ?,haS\s;s$ǯ\#q$9'tJ 7d8r1'L9}Sן&?+8֥u&? endstream endobj 108 0 obj << /Length 1943 /Filter /FlateDecode >> stream xڥXY~_Gsy:!lddwh5Fu~}X, 2I}xzc7%+3m\nBB囧I #2RiVbIGsmIxyӜau_4Mԗcӓ'ioqgO:zz@*Orء=lHNpSΝ=hJ<"j9,HSAC2&SvDԣɫmJXf +K F?Uc$X88jo%]rd. }u:l53؝: ;{eBY{'Oڹ669d[V%HNަn_Hh';^\y.EЦ,B %1RB>(H֥!Qgحp:$-AT1ԧyjpw#U,ozzj#O#Û85. ~F%ӨeR{eMu ۅYR\Ȍ! ICA`]$Gӹ7 e(뻊p$ mCʹ/!<.og|yAzi5fڽ3_TJ~`khIG^5!@/MArc@:~i7pDc gbd ,fo:6m_8m=#6-^~n3W.jG-PBXUcO vRH, D(jV3hWO!zmSFi8۪6 Pa?Yuېs~?g&W\4sV\2,p<3 A-7U b#X }OB*j͂AfWOfx9rpWj2TxzoN c*>[oW"˜\LSAО+[fbnp\ҭ`@fJ kg_2 i:G{#5M⭱)Mgܴ'Dd:Q#{1QXu?Q#է Heô箻WA̘ctq{pV7c0l*LRQa'֓<ˬGiV ÿNpZ8K,!OߵiA2i XZzX]2͡ ƏsZ_q e23Uj-mXeׂBgD g߲Ú=pAJNej8BCLe endstream endobj 122 0 obj << /Length 2249 /Filter /FlateDecode >> stream xY[~?Bȓ DJI$'YE@6]JrN3R7@ Gջ/Hm%h62F&1'IDZ<URHp͸J2c^R:^m;< [wC"(,*ZjReh^,_X kRexrs<> i(c[*0-EL20- b/-jU[6u>E+C9b{my=6Ђ 8FUKϫPG/7徨zbSF832.b 6ogfD'eZODo$;aIJ. ʔq<70X&s͕6y[RjJxfgI, 22?3M/u"{D( گQ/ /wO!ȁYdʧ:_iB)L,,ʽuLv apexeTa"#$E„YF#>K3컉I<^%9dfR0ǭ='H4ws\8&b ,Ec^)7ȧ ӄ3 眹)a[n[HRP ژ148IYʓI|NWi{]T֮%F˩39ߢ) y>yE W^3?ԝxO[VS;rM1@ae\[8b-$n]!@eOM d R_44L78.ϻeͺ.BϠ38C:& Jyd*4D%b'XOAvA]A3TQjig2  2#9Nɒ)D7D*g$_Tm}OU 5L}#zSv6j]J !vjEJe :=iX Lx3JPt΍CG؞aCdԠ$P%DޭV^>Zo(5>txWd($']xjopv9R58ȓ Y- u:[IsT \)f\2U`ަ]*NswS3VS5<;XB^p$ |!Lz>TmN+]ha3&{ߪs<d%Mg p (2yͩlA}w;_R[4|}Ώ, =5_[HQpyF2 I#54܃‹6RG6 նFJq_[TEfNNoPpɞXzC:b\>$ u?n?SM0lR|)'Sx uyD1R8\/P\(~+m endstream endobj 132 0 obj << /Length 1810 /Filter /FlateDecode >> stream xXo6_aIb(QY.@=!"+Pc4#~ħ欓Gd"G Gx(CD.;oF.ϒfC/^bPgM@?LCn2a_u$œbH*xa҇H O!Ի ŠTrmDS=dMfe/ p `2A?0s¢u]ѝF36-Z74zizVeFyi-ʨc3rI9$41M<(VKh,\[%]^) #% 'T{vmf*6$iA)i`dUEC}F}m `$ Rv m儛?vVp/\R$f sUۄ vW[kw*f}^ iWaVa6IggV6E0[Q 퇶_Uu(`g=\ DH"La[ VoNGZĒ2ҏc@fߜ_U,4aۅ޼W{vWjӀ:ZJKfc 2Abѷ;g.1 F-Cx Jm샊L5Wp\O@ɐ+p Lkg!?%;Utɠ vJ<7pP~Y<xL`AZifj*<] o-hOtW5X UB(oE5g[D B§ބj=!N^XVEVTfC4"*U5pb.sa(`E4]?yނ@]S(1N"vv(@{$ӓ{v1 h/E_JXǢjaGw{m%ANC{6DX_g!rDp1apzJRm ȧ1g6*7'6jNZ\憖(7QT8bn,mfv;HY&O}#pW w`RxJ>u%EΐP` +K%Y|wiO}S%L bOTMa'&wYkG5X{9].t8$'2{$ }tHF"Rji+}-)[H鐄G7ÑiQ396Î'nJ}$+n4& zo6ն*Z1g7X2yR>f37Je'4kZoÍtrw0Yppș.'kkd1. vL¨{ga9D{H 6mgl_-?2""!P]=|&PlyWV>yRs>D9zPYeM;%<[WVuIFzkN%`OQ|x9 L%b|1"dʲƥ>k ]Y{9s"7*_pg]?o2/UVfMe֝k.L}? endstream endobj 151 0 obj << /Length 2626 /Filter /FlateDecode >> stream xkO nրhWDH@Rq3;|ҝ hÙjm_@ESV/eȎy,\@.Ib/ RC ߘXiJT>;Z iX:> h 0!@ЗRaH~ٜ=BxuCG r=TDZd?e#C.R\d/W (hN\;FQ(y=)"*_c5|8}T?&{ԧokYK}K}ȷiƁ߽MbO*`$ui5C"bo-4XF$EWF wY߅WR?f` ,C~+%jqXYKPF^ǪMشP 眙׏ n6yD<pf<6 7C+#qx7Izs)vncV>V;L(wE٥>s&e^gmU7n'fkC]mv2+7ŤpJ%tj9^|Qq.QzTF`s#e2i|I捾 ^/j4MS'&ZEpE 比2 lԕ( Sc/l!}JI "uNA{s.dr1/Mi0r5i ]l&%<C̃JO%̋[/m }+Sc /1zŴ'zs iߣmѶ]p@Ovӑ!sJ@y$ϻruRMh0rK`U->5! y=?޿JT cRos| Ew=P:KOS7JuHjB(%\ԁrrjE&ydհ`=KxoFH "\ʄVsܴԋspw<SߪJG <~ǿ|E("._b;% W,\Lݧ{<}L?@8xLD.&2l3~vzF5? $Vku:/r&m@J: -ꩨgS'D8FpI"zJK?-G+$zYߢiEޢԢkߣ ` JA5, ;ct4?s Yk<@I&⮤+zhS zB4=vTr1n%9x8/ c)DCwJV7i t$''!=6"J&l V!Sޕ3]iG{cB {g"w-RC2dkT4~-o[-6ԔJb<괧b9S>("dhET @]Hwz؊\9P cϴƹžd4m .~eX?w\ =zz~}hS`YT-y:YM0!/jƣ} ԩ-=&Ẍ0g|hBhoɄu RC`&Xw}24M^Cf lĽPi#5{閄V<5 )Q7u 3WJ"0&]rx~8Sюݬ!@0ьsPA  ?`KK9lr3yNꂂhUCSB*-D LM&F{NC s-Γ̹lr^n&㶱('ͱ:3&kr?B endstream endobj 5 0 obj << /Type /ObjStm /N 100 /First 824 /Length 2214 /Filter /FlateDecode >> stream xZKo9WP|Tqvk$Y`wd4FV -yUd)- &]d}*փSFYRVbR?&eƫ(Hhe;2?L2 ΑA0$E#+p(JؠO̟A1.>d ["xXRX<xh2Úgɋ0Ǫ05@5II0&DuXm/@@(ڀ6с,TH "L DQPwH^`b)Ƞ!sbt<wi`HP),HE6-: (c\ !IDLa!2H+0MbyT KYЭÒQ-$5BBb?)%@dl-EwYb0.b<6ԧS1q1jQܔՃj3k'BV|5,5s3G̩޽SÏbUFƟ KPW 5U_*5Pg%d Om0ϧ }"aZMۦ] iBĶImƙigq,ŵvYVl ?_/ᅲӿU}Sz̕y kpF;iͮ6\m xP]5_q8_&;cu[WAȍ z2N˦yBeIc7uWu]/덊i砽ᝠF۪.[U94Ťv"լ%̽(iD5`4N`bQuQgo4 grnþ)E}WNGTШ*b:Wc68iF#ʤC kd&hDFD- Ġ#; >&CjVs8հpim7F=yDeMVN-\b={hdYOD~ )l?o겑פGcTkHtm>n6qWwEcKs7qڸ ڠsA!Iksֆ!d:e!YT vn|8ĄzRPI bLh.7& յy)=tk2:Ģ.R3$'^g_@M[KKL?'6mVܦ/yv}$*i6=[:&&7lw/gӀ-r4p68/>~[-uwrnБ9=*[ieaѡtI~=#qٓ ܍yo[c\< ԍ>l9:T.RS0{k_QyP!.CZ&*e74cd]s&"D@邅$,J|M-lHuS!TOag' u.O18^ž॥E}gc߹we c1G[k߷dpQ٧sLҙSLҺ m:ay9;ґb8NJ|쫘_-u@6*C,~˻g#GQC!:lT1,o-2FSΑ!J #Aطԍ2*o'F.jxrry.gGxܓy ! g3e])rGb ]GZg1ET.w$6etGbT:5\nZXйaxr]tf/<4耍rZ~/ZVˋuZެjѐzxb'GDA # Jz@D[GAGy{A~ `MGe8#Y::=BS ,#7H֭ pmX3*,یd,t^ endstream endobj 163 0 obj << /Length 3563 /Filter /FlateDecode >> stream xے۶_GBq$MSS2S?PwWVR%n6@vvƄs$݋ut\] +fn>z?fûO894j w5fUS-Wopb}jy5hi`n{Ը.fx&7L1dǰ2㺚765y&L˄똸Ff #zTU=;N75N,mn#s*\߯fbU@7նvArP1B)jjsN8v'r y[ltW5ş8zfAP1uGڳji_fnRޮtb>I%QLW?l~ 3١~ˈ %Tݫ7?.[^%:^i"ȐgCls9c?,Qʣ(;Iws!|$:Lm۬Wso`j mfgHКpZ6ȵ? 8ly?qA9A5O8@޳l}YBT9պ(UMGoa|.8y_o߶ZvE1;]cW'>IKd|X7~b ~WӵGfS"XX1ّHP2&4O+,f R3EO.2c Áp5,naq`\1?x?^! FēiU*`v^7JEuxX, <#R-c5 o!_9#8Mj@CIJzԇJmU^oH0!5f8xze؊5>P?|X48R^fP“2 d'Ep/eh5kFb&C ʍ K۞XpnHL!׫uhkv;ݴ-wFڠO brN8 *!gh v+3 P*0Aa%Ṡv曖> 6-v2=߽5H8\0 0O.ѣM6pAKC$|c}RP"@9aK@ǩQI4oÙ]ݶ0omj,R=&\1H*dguP+u]G׃sGw>3v2:a_A0c NȂ{莚Vqb s}Fd{Zz.aQ Vў"4BI\F 0bFu먞p4)|To 8I ;^N1H'G{ CThw%el4W1wTeB?L ?h &_I32`d^!XGKh*-4`R%βc$2Y+b. ae;龍҉Rn z9wE%oO+ <_*>?-X;P=uwB\ U d!ӹiE);D 1wB}V_MfP^P-IA7j "ГoB;h⌰d aI`B uBԃ"$Ƨo "2n}pjL ~v_"I B<+ $Kɲs0ljR fN>z>>bl@3E(y$D I0h^.% AkK蜡T.d(! D&i]?lbȅa Bs]hd$īVyQo}uI9<KmVRs|fhIF[O#a5XgnKnܫ4NH}8$<<9C[=&n|S$'$ +` %Iӂќ[I8W*'aFtxU'gsW,j.ѳ,rM'4ꈥrr /._Y4;Ŝ,.~SCn͊&^}q?؄I: X!E)T<D,K6nxXWɪ#و[گvh*'!qu;@;0gzsjxղ#"ZF.h;o[ j3#a(Ѡ݋h7a"=л/xؒtBKb,Ra|SpC)yeyzNJsovҌ(ZʷĐWEvvX˺d\' ='0,7.rlH~uA@y${ @E o sBo(fʃK9^YN[~fY y={ S]zO7y{ʝTQ `%K(wІ-*Hܶe2NÙٰ\T(B#MR)T7J>3٧VM}d1Us(˟YI!̹ /u)^~%JK:LN^PoC$:s (2;Ψt߽J} {Au!92wS*W_\uP$<ʉ"kÜˀr%lAݖ"+! YjL9lM.#g&+.$/7K_Aڐa+êX;PV˜d'y)8˕XB yf0 }hC89ͫC,:X(<͝0!~_J'؞-ِ﮼o/♞Ohv6w}JlH$k.}ee0OlL8"5YԛR&wH沠H1ǒ{MSߕ>ϱW7(ᱞ}vo3߭W@~!$U}Dw(wGu='~ !"wq'+VwS< O11if-o7~Nu8N0]qY8aU{';3" [,sjǏu˴1yWM?bu]Ge\:"ܿNĆ#Dۺ+s.R 6?('=<ٺelV8@'*mr񰭗רQ eٳ[u2#9O:^;SIpĔ '1}_/n4K M+ endstream endobj 168 0 obj << /Length 1234 /Filter /FlateDecode >> stream xXK6rKԴ k|Ai[,}JƋ6) f|~{!^BŕzK-cAbV6 %v,ׁ3Q958n{c i}V :BF8(:ʈL(%')/$ %wmFs%Uw3ǧNƐp0"H &󵹮2H3z̃(BTI/;ez7ȅ`8|ݻcD=ĥF}#fz닱q%jq;RUӵ18 RYhNyD y<Ǫmۦ_CM;ہ=3:LKšL@]9;%g?nvm?^Z+ey`Y&ȀseH.9MSG o콅]äbT#^9:. CmhPKPfЀR!V&C P=1OMs!hX$ތxcew?}W ;+S endstream endobj 181 0 obj << /Length 1743 /Filter /FlateDecode >> stream xYo6_e6Pq&բ5-:ŲyPd%b[4#%YNv-(D?Wg'?&Jђ*ҒXn"-Fg|&g?{P HXČ"BrDYR+rmҦ(7G IH#hX(;KWn1d̪ylW7jU^WvYdΔ&!j鬼ݍ'b(RYkN6cEiw;y$%$\;49'Vkf]n@NOsfiJ/W-|mqq]kb3"Z/*/MztO8n4Ԃ^mel]DTȢAE`)ww|VuW{qI+Ō=Z릫v)YONNHC#p?:lEO1Qu.:&8$‵քR>b l#R-;wGUG>gj%lΖyv9Eܢ.lYY IISV5h\Uy7҅4`731&wUqvZl5DdևWʪ.[%ACo e7y.6^DsCtrn":Zۗ'’3Be!H݁qbАq<Ҙ}##㴠B=BCWE~Wiߝ;\^Xu36GW1+V~ LyA ͓Yr(B8Ba!gNa icw媵GhpA L?҈J:ϧRz?M@#/|Za ?M0Ib WkT#2t++Ÿ\=Ni|}䯔Kn =1mpWi,L{%Ō򗢄!B2DkH"BBN?BK}K?U}}]'Oۧ)JҮA ^ðGnUV ~}tǞⷿɻ (NGl|@-F-WP 'tF ;7$0.)EapdAjwPqT tLapI GS0I!cz&QԅW K$ /5Z.]VSA7.wpX%f_^L`+;[MV}H'Ћ D^A01y}lua- e35,̔K/KwnKN,#ZQZ¢qKr]?뼙0ЛA$FضeDB*8& y>*>iUc%774>tNG m{8Gز}|% 1]HрPaܦ\#z_$] }&i}Vrs'øF/JGVa#?<<:ÆM& X}*O[P _E* endstream endobj 195 0 obj << /Length 2865 /Filter /FlateDecode >> stream xks6{~. ŃIg|3rN>,DIU-S4M; ].}O1$V\Mn&! '^isIdSdՉp͛7ois Q< }yp˜̹ 1CURb.\^6yU_N,_INŏ&D%}Nx>ctFg،~usH,%218˥.+gÑqmMuRkQ&҃[#`⿹`rшp8`" 0DQ@7 +^œ9]Y}~Zм[47bjY"Kz.yY'tmrl.#&ۇܠ9 % )GLjv?ġlApg @/PG  (=xiˠ7{ȈҖfbE8`b@mp $T2FVt!g93a|B=CdHͣ.1QP_`x"RIp!w4<})rd#}I@hE\PH`萆 F @-Cn\z0HG$!W %Hyĉ/?MK[-/j7Gݳ{*HOوx}\m.>5 <>9D{R .lkQw IϹĸX?As|\R#~J lWI7ΣG~!xt~٭.C4遇4D+7&oB,,`zk.cH|T$ SvLM%\gxyј m6Cjd:DmD( 2$4l,Yd齯 {D>7G Lg-7D<6r=qVPo@Fp~\؋ pD;~pc[ʼwGt=w41L!,DxVh*q0faFkfR$.VPSX;˪wN*@XT$IN9\H|lPky1M9Z8&Nz+Ǟ]xqP}w. ڤl$KO:6w b;1/iYZ5{UtM6inͣMgf\4 ]tјpЀ1D[iGr cQm.)ˬkFXWn가thkr+ii,/pML)qBV,؇2Ӻ'BnR;9E, 3^j@%p{l]VWM.t.հZ H[ OFy,j?L g(? 4ͷI&KƵT0*a.75`t endstream endobj 202 0 obj << /Length 2948 /Filter /FlateDecode >> stream xko8{Y>DJj6u[8-nߐCJL;nbqE"GÙ_<|IJRjIxr~9y?e1*Py6m^̸ӈ׿f˼ZomU̷]([pufUutQ096b0i4!3GԌ 2Ҹ t[zƝMtSWn! \ոgeH 2"N oD)BV`#SR}[e g#@V^"_#5ku:Zw O< Hx:CCBr$XTG)2.:ǡYhp_9NLP@aI]d08^VDFEX$xX,O`1< Gj`1vn]fm@ L%i&qo(S!6{H|O߃%= 7DT"Q$a ñDZSv,q_kذ7`=4W f0( Ô8tl@ R`!"qpO=*i'.MQB{xXgb{XDM0CR!iۊGlſ)wyvOjg'I1-NP+@ZF&WsdN`5y0N ŭwq㑩Ec4Bt˺e(#PE"]9]O? w;;u5Ѡl3qE}6]|?㰋~ѨI2Se=Pw59'}BN2tAeAC)oQYcṩ!fhLdS !ab\{ Px؃i:ǜj/H8e_vG xI-|„d>c):lwY,ˮlɰ,S-C*Zp9a(Ĺ嶧:2۠SB.\Xsn/ۼ[N.`OX 8F Q2U}]E^Nd|p6hƳ>M1.DTxgQ3S{`δB kT;ObR")f=ni@KpI޶9 IhmY44ġUR  Nw2@݆Ɲ=zg]>M\W6^=;҇4@V/T۷QpH3tƷi%3CqdېQ/7a4|_ #KU+A F_B~.{k 2lvo t߂ߺ帏g'|5 zL` endstream endobj 209 0 obj << /Length 1268 /Filter /FlateDecode >> stream xXmo6_1"&M ʌU=I^E[loE @|x;*"V" 4 ar:&3H￰|q|DUjd6M?d%|Dr`) mcl%c߲ EVȻx5=MRu%'/+P 9y@oc"S^MߕiQ]+^ }t:}L u3$ZEzn{U9.2QKc$,CbݎԈFU.!#߽_dr)t4e,NUEQ{kGWO3B\ 0+&FPB۩3UAD3)N<}z ',Y]iHNB`U+O5K Pz Xآ^BPF.&L#*-6@|׼};kvp+ïC08ߊZez/zn]5JyM Q;YydBp,mPzܛ&2d{ө9i(tG({#.  B &y݅h#C]5kO/Spnu&;ꎉU0up lcn1s|o-[ħ f7ogCq<oUt'jwI¿ǟ endstream endobj 215 0 obj << /Length 1102 /Filter /FlateDecode >> stream xڭVKs6WVr&Bx079vqk9@$ȧ$ʯ.є X.^~P2H8Q` Ʋ@ VKxmaa](1{!AF2`Q*T:/˾k޶",qi"Cd֬M7znoƔa]9a{йq]S bcۼ1W+қIu {8%iH"T@eU j"e4X0F2$n?7NW'i?S Q2A}HO4|Z>D1MUy88 A W&zwt>"~tS L16L]q{%]$m&ȳ1g$ Mxk[#0 Gq⓫CcD;b)G iqcy~ҝ0N2j$j(_[1EHo̳-7ҵ+JMJͭ͟Sx_ӝ+`rn"7#8Ká f3guj`$̏]g635I),Eǔ2K ąhmḺID) K&̝WN>Ӽ;ug|Y/85%< SIcy%hS@ #˙Sd廧Wo{g|[!O= D)(^[Ҷ;\<-RDp VA{aQԹ.O?xpH !wJ#`2}30nH>fΗά=6KS(A3"G >~_*KdRW;hIں\p7VΜ0Ggkm-@ _"ŦuZ4,IXM?BhJҗj#""$|VCs+"e|AOɐx( I[z\ݮ( endstream endobj 270 0 obj << /Length 1104 /Filter /FlateDecode >> stream xڽWIs8WpUZ tғT{2mQO?9xb<=o]\} auE ȃ8Fb˕!\a$&sԎXlz6'Y?pG$UۦVr'r`on_%6^b)uGTU`9 5"#'@\;UFŠ|۪ܱ2m2Uڛmn7,k0T\N B٪ !9 N}GZ -2r@2LzU7BM7-k*ttM\]; 6]ĘXɩBrJ]u+H#QfȩSEd)Fu)$W4tUT( ÍVXZ# \(jy1<0v3x$7y&rѢ2 [)$nYVRawȢ}F[럏-2y.cs XKkZE%#KgEș|lCautb nkV6Ml{G~J?u}͢l=޴MĺI<8'Է0 bU)8urԝ4ʓ?{h#GQ `x:@wQTvwʵ>y J:пb;CGA IOGt4{tg8xL7ۂB>A]_֋}%=@%'Lɍ8y@U&bN/j:ȩ&XuIS~Kn6, ͑(A:i#TP/*6's@"st`t>)Z,ծq\8%f3.Vlݳmp<}?!eVn}eE/yrnh`t>fE`ۅ*! !a^L]=.5$1{8hsЁl{U>=|zdELȓ2g;m.2keNM&K @Q<:K@O[+[ht>%3>OX@bZ΢+6OIΞ|W1yBg^' Ê`_\+ endstream endobj 153 0 obj << /Type /ObjStm /N 100 /First 874 /Length 1829 /Filter /FlateDecode >> stream xڽOoGsL/ (mZ#mЃPE2$M}ʍle-ɪ%g!&qc(VptX@-1XHjȒ3HJZN⬉V㄁8exc(XEx1"[@ 7YjG%:% 7&"$ $؆4p N$<@@9) NgQM/"c!"2`eKRR#+D*GV$V:`} Nǔ17V&%U`fD@JPv,IP=f{Ix%zl)넨ի`NǏËWc3|2W뷫|n0o,xƗ+}X -16 CӺ6/fxf]NVd>gߘouWf˯`kzv=}iCC f~>Zng=xTcC7:db~z^?Zm>x9^,F^-&N.Fϭ];`=VKWE9rls\dt P,5т%Ȃco`655v=Sl}xFkS%xxZ eW¥4P(M\is4DIQ}(jNs J{N4B ڦCbc.0pyL#ҙlzHU k[)${!WeWH\7~8p&R5Zk$C\yXܴ3n9]%ǫ\?^]w._3~/WryMjg{/->>sVss9:4-lVƉ0ӊ5WNr)(Hjt oMzPShTB[݄9i{JL6Z᪵=X>Lrʉ Q ;lAk콑o%佑7F#'}z/T_܋0_A[/k̗5խr, :hA Z=C }Sj1Qi{ T :%$M)TA^)u"tZxҸ5Eo:/Zjh}Z-ZR}Ƕlj ׌RÝJNj+BhԽd,%Ր,]Uq_z}r,=h8tdLzKCt?VK[pލ?uqnq8X=[> stream xڍTZ6L7H9tIww0 0 CKw#RJ"%(H Ң |}k֚=@ZQ17^~PYŪ`Lr+4觤&35VJ=nUe-ό޹"z1KZ}@;8ΑTXw߂ՊtlVF,>Մ#.,eOEBeQ(%ټu6p5 $7>W9H?ǢicZp*=w {PKa⋅ 'لjCrnSOM 3zy~R%ֈ<UT"UЃ`‘{>*'!ۘs`><<sClٻSGA!p0suH&R('ŮPY5{p| _6kD[Nj ҷhxnM :8]b G/i[X 犝z |$|zMͩWW+H>ūg9]D4ZtIvx٘n|0Ba6t1+RW/!-פɞ-QFy"+ٓjQ 0 /7 c~<\'q3ûݧdȨDS]+ՓsG{93zoZn3 O'mm1Oj_XdyF;loS`L7$t"!Q&Lc2RNΜ=30 WrT[GydҋI9qGs !dhp`t_bYW'rnlT9_6a/D26{XfuIzg#m9}ܨa-;ĒU^-G fn7fcC& jcYDǖC.GoB>|ErT)s,i[~gXnٳ{mN`>XqVYqtlq'ե[XѡӂcG.yi5~qӗ&KԹ yC)]oB_XɯuǶ8?,+!ȩczmjl~&I0R6B~!>е6zbrgU+XŚPK ёrjٕ€*h٨Wu4~L\!pavKP,vC f'n\Z,q #{.%grψXM~ p1 ]F/pXa@=TmN(|r囥eّ {`ɻ"5UҌ 9D؏:QG43 K<$a-?¹G;Ym;88񣯢(4E_{yD,IU|`+VCl&SH=.NŞS152J} NӦ8⧧vyS8"ڎʏ]- j3hE}y'YsTҤ[j[͙ֈZ5-&p9MYvht5%!l+ fͫɗ=;dT|n4=TU^x뙒j!րP3آҷ_.ꃱvzf䫔i ~nڰ5%p4Z\5gSQ=q=}TUf$}KDE/X~'rJ;5 r\ t-dtz7bj)VvBg≯/Y?jWƐO zڑaDth'%մU2ʔ[hݞφ;N ;QŻQ{K… 3鍏玬@}ROVrY炯hQF~zj*+3 9kdB&([ucEd=ޣcHC:ѥ| Yd&>p(~ɜve.y,Ho20Iݐ"Z.Oih.<)"]Ji|e~uë+MXCe ouACS&f#yA \icY֣]F˒S& }lΏ#9&f7xu}DIC*%,so.QQ2- @9'!;h[WG_׳NU>"PjrUN/;"6h R h\ċ*0&l?ALRvu ` oUKҡj \>Bw_0mj-t3&'j /5|!ʉxu~Eo 3t0(7*١ ʑCX{fV'wIc/rGNCp4U]̀ ЍW6GSi<37ʯrjo>Yo$7Z3)1O}*c ԗlPgCbWb% w3Nv{{ 4T9rX|rY3EnA]] +:"o/n*_z9rrnCCVݚgHrg7&S3'Um W`\zdxOBU; ~ gr@g]̋(JK1/QveШ ڜli3nqN0;p{)]C՟Ԯgw:6>*v\ZY)P0TE8!Z(FR8ؐ VG[O ewl(+,z V;'ٹat$T9!4fIAщZ#m倗D=@F H#{ F6}4=k\LA-7 4 \ snZY[!&qy._T$K%p 9Y- dN {Y<ηcL FU?Oc><.a b qf-ؖ']oTiOp :=x1Ni|/F`o{;x4liJ*߾s2D$gh-9acvrg">[Ξ=7'o[Z;slhw3.Q=i( d18~_|zb5n +SZHnL'WH RA*1^N(t7F *&߃<4~8^ՠS[Ƙgθ'@K]ɚ}7P׷ېH &뢟u\FmM:U&5?ŢLR3K\1[~ĵqsœκmic[i!7{@f~6/P=!|^u)t5-]A^|!@HJec2 *eyM6ZT߫e?yū_l50)g$6\nzک1M9 ]5͵V.~/ o,M֭-$eq.)"bه2ֳj@E%[k|@.@ ?VL~07PC;َg0`|'$f /m X fo^{/\=}4딏tΏ;=FSIvh%q+_7>kHӉeAZ󬬀Y?#T>=myfƚmY,xS;Ь`I"d͟&*75sI! ,wI{k(}sn0Wʟv{jx"r'bqޠVY|6LG L(qZ#UL-uI}$BL 2'Z/>΁T^HՆ l{3ӗǖHa ziļ S Y]S*ZIvD~Ji>!wTѼҥ Jx5"X#v-/Z (_VN$K" (T-.{,r$p+MJ4}j1uӘ愂X6->PLJJ'+D܎0D5ˢ AY>CoG1d([*gNѻ3kL)Skv/~-YJAݬ&hbYҺJ SRm U#6bz ׷o7nxq$),Hx~~jI3>o'#"o ^ ^uʥCBw\Oovs|ҹ\qDPDdV?M)@Mn_޺ }(kWg D$DonHb=S#/+Ze7꡽u/_^w S'VUT̈́«C#្d &r :lk`ũ`Z3^ݬ {,vft#iIO;[JwHI۹SEL{`QcYVC5ƸQ`0BP y{.o-wm[dV0Y⌏ (Oc_ M9L0XgN.Tk  ^1ҌuߊMxyUe+k 7 t"R5)4eާ]-,t5Dr \$¤QӐ]eaU4{:Cn 3G ޺u7Q>z=BgJJՍLL貒9GJMm/phvׅÀ:[rk'>ib-;mT['f D K5mLĭ<_ofREgYwi^ !Lrzh+]#ZϞjVKWQjFC d;^C fS9c81B 'K-+ǧK X3! W3 XmIOj sʹS'ثVZlSVf6rX\Stn,gɤS(6p!Ԃ{gOfhjZ3j9D<7/:b d!]8k 9% eZݛ/CؓHJ/WD_KrI+=ht;Ty f0@H^2|y&^EgH"{㮒w%XcVmIF x|L͵bw2͛:]SË{Z{mV1SSeg.\l-) HM!+t&ۣވ 6;AA#TkLUB[|Ud+e}Ÿ ^KRV4uϤV۫f#^}^P1' 75槖&|o/DY駨vq>q=EhG܎ endstream endobj 290 0 obj << /Length1 1454 /Length2 6187 /Length3 0 /Length 7178 /Filter /FlateDecode >> stream xڍwT6ҤTN@@{UjBIB ޔ*"K* JW:R(|k}Zɻyf̞gz~H@i SC"`A@YWW @‚ 1'21p$B?hT XQh=r`1)$&"R;+B"`2.e$ wp%%v(p(Ѕ`a aGEIW  {: af,q)M `e0Bc= h0aCp4u(/_? e 83 E /8`wtػq qwb#NPS4@pEQX rY#2 UvHWW!OAq\g, h=i c0,@$!.,! `PG^(o#B2`~p{qG0?4sEP,G;: p@=YfDx@JJQI `@8 ?y& v/xL/8x 59%'u@F`5\`t~ 9&ar6]G.X*j}S CO3Œ,`?}w*6!` |0TZxyzw?2M5vY] r2Sn~JĜX)ð?JB HsX?`7= gyo\HIT;mSIi~7ޏ U`0#q[j4 kSr>LFl7pdӹ`zϕӒ2]rY;8o3Dg1q{`4'9j>ƭC-a -fz8c?GؒY8k&i CټIOu_H^8vmf7lȢ_Hoed[2YZ!d}fJkOMC}cye/] a2g[v_|D䢨ZyP&؄X-*ɓzY`}{F8^iC7֬~e-ci|;xU63dRP-j PX>_jPI c8Ćϕm YBᐥ mw^3V|ڟ|->>cW.'XZ(Yt2C RKu`#/@셐v0軵i%똫3CbHЎRBDw925VzS pfrdҲy;bknl84vg;1#9N[pR˴q 7(&)"=Xip݄-DeNAKOfMWqq0},/[ZK^yUQ{}%%Asr koGK&>V ,<0}XjU~ѐsu@5g}&pc ~Wf7̤&Tp6+ *6kL_Ycn +NfLR0+ԅ %F4lWN,j 0'pt[c!" q&;'VzPPT=3ڨ5«qK9t=HgN=;dV@:e7gn KM'QC֜-.2 ^fA\Accz[?ܰ3WCYt"n3I%O}nbMsO>or|{\ V M96VٔXaoPZjZ@*$Ck wvlig[-f|jCڸ',5n俾/ȲPI\bɌ6L:j21 t^$ý D2|rxikφȦ{.=,_ (%Jzc4y|^ 3{SHx;ܷj+|FA'cmf O~|hgVB)7B~G/s5iBwlX 3ϊ*m7[kOW\ʸ\@̗D{z"s;k"F96o%(j^iX2Mu7W Lٶ,<+GB }TDx Ɯ뚺K^xt"@]ʆ۹6bDD42YMWȖs#Yeg<~-A)nFqUsF:ﯼSX&+JDIE{{{g[5V'\b :~lMw*Z24E??_ֳ(z"ًD3ԊQ}0E!gK^Vwe=c:_~ڱLL$IizYB>T>˪ Xxf'{^*IگYN\zRi,RC ^LV1C_Q{K 1q(~G x;HI?D'^@fh 6R3@cn.$`YVuPԙ)vNt:4lW־Ș6{G=UcI(隩9z /}YcWF@8t6#qoqc&AyP򴑍5 q7qF]m!9 nۄ1LBFA muZIwYATY avMKIcB//0nemAbDn)Q-e҂:;p|N',II<˧@Q@b"?ϻ2nh5r:iH[ϛF@E}w@%_'~^e:yb"k~g3Hwy5bսzE0GotkhcvN{A6?_oz((J\cU<DP`!U糑g[r}+|ba&~zAp& ++hݽEmCFZQ٥p!b@llkl8Df}fӶSMNaOhMkPKzgj]sRMo( 68oGHESr_/gz&qX뤞3; m Y{|mAߓhc$te ?1mkKoP L#KǞ+33P< pg0ޅLQ)Lv[ 9 <[E\@m{;:2.X&X=p>0VpVKqv.[oFb[#ZT܄Q+?iMeFȫLwpz>>[\19iMԂH9z+9W|OuZګڰ|lM|=|FX#W05?=EK^FѬ(Y*ꭥC;6VKؚ 锚n,'y'?Y;鸱<2R)b'#ݝzQs 㧕g2KM}fM\? zxfb(=MTW\Zi-ɤN^L[~CjG@ƏN"]>$"ѸN7N5B$qӽSY>c>Ф׋׏80ooބ_ endstream endobj 292 0 obj << /Length1 1478 /Length2 6403 /Length3 0 /Length 7390 /Filter /FlateDecode >> stream xڍtT>H( R3tww30 /!ҭ04ҡtҠt|ck}ߚ~sγgVc~E'D GRe]# B&P &0 =8(#!`S0~8@  @bR q)  J@JTP'@ xs(#PW昿nGHRRW8@ :]09 #?Rp˸PR>>>`7OEE 7 0@L` #Q>`$`PGw ƚ:}wo>@J'g"(W0A.g( W@`OG0{0W`!!#~Rs˪p'e$Y  q\>#|6PON^pDS "7AD@0: Loe1 g H#{C($(? @'# q‰C1GB}V@@߿V6y9!0ꯠ!o))!|"@()2q"i ?eG&]- B5PRS, 5/엙1ݠ0?z0]!Vro& E _TB (Gj21@xB>+~Lkˆ-LJ#_&fry*sĄD`$Gi2f' af KA8 `H`LJi bQ#e c? uyy F_/ q$G8J? o WnW)Iv! 4 l?"͸5#cm]SocXˬ`֯E:jҢq8DN։吴Y+ySŪiƊ.VO]&a +c^z<9KBlu<YKlhoDkbϳ}s %wbWϲX'uh+n_. asxLq;kYf2!e߈@X55_6ūAśZxSZXZ(4g{8S ⻡f-ccwc?TpaS}oX~0XxAB2dL&3XHz-mt2cuo>'|kau۷)4$v}9xVϛ%| dD@cL'XdbuAHm/W4Se, }Z֦%W4SJ0Wb Z7y;k3 kDASKSԠߍn2h =}Egg5`a}aN9ﰜSbG$i0dkYm8{^X1x30Ƃ{ȟ޴mv?U=Jwx=+J_I'[*+i^qw_z %ub9Qղٍdj lٺ/{_CIa5C; Y /C/ޝ)C9=`ު!bDCB/N= 5;/.Wnվf~?oeD⵻A+Y&SdbdgRI/vjxr2vR{\$5P/j4V-vΈt~˷dX7>da+l/NWoηJo],kz|2JRZ=LY>kbSoaZ! civX0;iېp㱁xO(l.Rf-޳­ϑjXH3l"8D|(a$kB滔>s][l)?S|e3 }fm=,Ԅf?~VpdkViaN^[<(u| Y~crX1HZ{SĄ'jD ~6#oJ_$dzO7jbԞ=&[8)V][E?v>1 шȡF`~Q%=T4U&ܘa}RL4~T`ǘȯ09v.A>Ae{@ o2z.MXebjE[U_7lIB']7g/JxͲ#R{;9z=bqf:ATf4>|Dz\4(.UpuTQkJR꫐󇒚ߓ3p?_RNPzrG֖v{Z37[- 7v̐1qO)nhEk .]i`by3te:/E^˧c}::n? Vu2S]~~Uh+X[QՎ{I>pb1"-={CwRAncD^/m3AC1=]&==$t7^'=3Ƌai>;hSsSzv4D:%@ź1רصaKLCi߻OXYnopԢ >_d0!C}m7,fVۄ2OqDͷsդoqqQBc+ [54FțHm+LҮ][+d4.68שԸ&L3ck7 #WJ=Ē$R6z'8lM~}ueE>V]ok|iV`,ERuwT-1Mk# ^3rc$ihF& wM{V2q "~,}Q}-A´0̇lυ2ǨԢӃuѮ$2:$bmue@kUA:cUƔ1R!1m» {$BVj&/2g028nMӅ\B5? u+#bZʮY">?74Eax켌i#yG# mY%cQȓw,w.&_Vl; g+|ߜlP%/GR"K- e #9i/4 F?`[]dh0槟3/4^5/SDsut̞ѾS0o-g޶\1T+mRjYt;&Ui9]W '+wb;#{|UqPv_h6.~/V IRwu:4P4lתjs^&\?u?F,RnѕPKJ Hħ>ÑGj؀ϣ}_O*F!|=]/b:t9M9hN64c'˅i^qKGcJnhT [Q5fB<b]iIM3A9]쁱Â5c{,m_^s[D.7[*\xcܒPrDC3_U/q_j;v4?Ī7|<l佷X=p7m0e_}2)wb\;ǦZ+-iChg@fi/snNN0cl'2*_ wtGrc M.FRF83T7.Ney,Ay RpJR9l0Grԥ +Vv4I@opw:-e.ҝgρʥX{օX6&ǝCZUFe> stream xڍT64R ) Hw0 00 )tJH H !{oZ3>~;̠Xn VyEr|^^n^^~ff= a6B0hȹ$&D 0'w!6un va;{@8|""\2N``'dD Ѕ `׿\#΢<<@'Wn$;].`@'Ҹqz׿p[ @P sEl.dt@ KY/./Goc wr¼ 0;- h*q#<\ " G݁(;u @QFDV>W  d`6rp''0 +?y ϟ:0O2lܜyan`e?:H翘 {_ad ~>pg- |q7?>l l;uF 0EҏwHaP1.矒#{|‚B[e- W>Yv}iKt3^A^MX[Gt@h @n: U5`J@6쐌~_8U т @/\׾A!0AZ d G-⊤oCm~-Ay!n4 k]p~ 'fg9-?e oR7̇d 5R t+_?~$t } A\@P3?()l'4* }!6PBԨN;-&urѵZ;Ȟ1Omk7 " qQJ[9W!4F"I"i{ڻqD5k?1,]x-Ts:L쭊5XUO! ;[SK9$%/rlc^nF@#;,iM^ҤigMTk"33R8P_o}\ WJ$flsm_]jd*$e4M\$CՈQu*ގqC.El!4`NчY;{~P)R㏷:˜։@CT4_2(ƼxwT1a(9|& 1\L2&wT(XEK8~^AU0HT2)~*V0g4v/2HlMwoMMKΪZ [+.0c,ِIYg]G.e=K[`Bڒ+|(y-tSFB6c6Fy@ۑ t.yO5;\ktĕ*LjqU[Ϯ{Wܨin ]fNRpX%-֗*C \}LuR';R+IS!Z|~k 4-R"6jڶƒ5C+x'3yWpOr|l'|̂X~D|='#cU6eh{}l+-ܱjeD9iR J9k0{O5%(n˥% PE-B7G/L0w/?lM[,Yb6̉BS]YBBxWW-36>QW*~̎ծ2m\YFeJ3ְfՌ1~>/%1yo@:g"3&Bp _:SQoA6yzE\+ @cv>O}"t%VXkٷ>C'E^)YJ~`z @Ǘ5&zb^#s/xЃa&uD(vPGk[c] f mX+z6:77}G0 Ys 2Ftl,h~N:ZJMKqC6{)lyWJHkaΫ{8$17Vkx`Pd֌"tK mkI؂C?;jSߒMX;߃679j?Lċ*s}Ҋ;)>q F ې\$Iqs9_}HVn-Qog-b&Z 6%W]&3!?]X9|2c9}7֛ &T@Tm I\r,$1= 3Ru>I ۧYmW1 mG1^=(*˦c ڏ+3M2]hG'\S@OOyZuoҸ"ۢǹtJ|%qر &^ڙ)HǛOz}; %m2c{ P>/L8N؟yߒyOuC/BnɟEKBozF1c/M$etR9:PzF} sӚz!^+ھ @ycU|̸}x &G80CAQMae\$-}o;|x CԗW{##oGOzU=c8,H"^ީS3|q  oLXdZjYZw~n 5UЋ(8f|M^Jљ jNcypây65כY% Ƹ`wf*g ^:'E&=* %(ٹJf)}EsL[@6'hSʱhڍ:o=kr<,C;~lvR-'#~^2w yHɍiс&nC%KW(0 ~֏~w~=+q>-Ճ)rXLo}#Y&Kס_Xn H$^~jU} ?wj!޼TNJK*7#Ϟ@+ x}J8Nf55`[f_xU{, x hs)@k*KBABvO^flڕ))!O걢 ~Uj>rkJ7Gd KAibWXNgLw9!ۣ~͟pK(F;G2A5 Av2Pܣj/Mzv6:.ݣ씖/i)|8( JN`x8n uG q, 7|`2vaI{/wQ>*BCQy8;n޷;YX=UP,&fF$K Kk4 k_Oitmϖq&4buu(`فZ6wZY F$jo{c#I\oY {0|XlO9;FK.Q( Hn8y vx7> d=+Ld+T3oG&GG&';Ud ۦ*V9tT飡+giP7I2"ѭWJxKzޡ) qb'lD ]Ko1l@5S(yNV!+s{#8dT)%{ШIs^jޅ#*+92jb6m,^eMrΊI}}S9;MUX|KwT_m@DeTۓ4(~J4=T lW1\)Hnr:#@grf-o0o,3k&ٚ/_㪫׆?sgi<[@iP3qrI wmkʎ|mi~tZc꧰0q0o9[6Ć:SNKU1Io2cJuoVhW[}*%@!%QƱh-K-R em-J>gvr>3@"@=S{2w9Nэ{nJj{܋ZNVDEF!}j^MLU^J;ߗ=*+e B~!A<աZ Ɗij]2+J67?$a ^?s[@$8[W"eYm*Lue6 Dq2p4vy6P͙'ovP5}þe dམ=Ak 8F,4l$ j]8ziVAw&!tL^E2`xܧk5ڑ|XVR$1K͇"7SŭT NNN)ȉQ侲⦨T7"y&SW__ɴkdca^i;QkEYd5柪m] %2QS~Fؐp*hcbg<5?qj~NwH:Іʝ25 8Lr=!CkaE)Z"Go_u%F;剘vfiNY\`7X+Sr]&& }:e "d< 7kR3]ṿ:|o.|1ljN.6ͪTɽ-Ք.`VOPZ(q 4j^snH6+xQyPD6կ@4vDP~גPVX\GNN)لZ}Kd3pAaGۤGXJf(\|O\\= Ug0FqM8q-}}lh CA׵@hh$ӅzGXo@voExklĜ%nmAܯM Eyc`91ݧiDYB.UFǣ)V J+rj'y Mvц*6-`$9 fN؋~|A?Wg4F1>Kӧr]. :@{Nh'xYӳaL*˷ 3Vy~e8Z2z'G)JEnNܶ ctN t2W5_W4skZ]$~t+oI&t0_ż`̮[oOdAĺeBզ޻fK)(|RĽdK ,q-ҥ_SϷot~cL?gu1K 9/p[KӖo1Y}2Of\s%?NIwǭl^YնݛWeWgb5^f ]Cۑ.%xҘ`oRҡ=oiطxu/fߗ1>wIW' ^p~v-69b&i.>MiZ ǡ OINBDL47*dz\ak l?N,N'a'}7Z :N?Ir/bc#aa˛`͛ O84ZAMrc兙Qm3.>lsRx2V́u9}U0$ϴӡُ'fL~,[mN<\!yg+o3e1]<ɣ=ɩ=27q4Jhr^OQ׳(s(QpY@G}pۃL4'y E㝂#r_+p+{hpv6Λ4oɒc ht -bH+(+U<<.6ˠ!LXv1[ٯifgcr?h|l5{Ý~24@xJHQ*V1 zCrZSv8k繆u>ˤl$51 hitA>p5I +urAܦJ_Pt'}~Iq }?*hlBAe(ܠfaJU)CQҰfBn(pL[ ՙQ.);jaCu IpεQ0*ɮ[H f뉑-޼~Dԅ%{޷ %-ۢo9k,[[9q?I/./46e{,⍭F&-Y:n4 붒Pbi$jg޿8}Q\޼oep{yK8teH҈!_M+K4tnrS3IX#!V+{N|Mo;6˲sĺnYJlܹ&U'UR {+R)P–uwMУNZ-S{]^#?VW_:N>`PPz(*8+ ,f*zǗi/A (]o6g(H}q{5љB]X=ft'ꪕ= ʺZJDBL}86cf%6u13,cM#>Ls^&DkT7l_h}8PH>FMY2saPA>;bL g\Yp59\G .ҁa6MѭcD>A:F%'PuN<g+^uFk|SmŔqfyc y'>҉e{ ͗Yٳ!jwʔ9n՗T_.7t׮|aY=0|S۝@v n5W7y/k*u;7BV et ȕYU%iV*YV^J};:sS))+)ݍ Ժ}S,D Gߵė%T 7KFC ;{E&hij]5fVVG.\?P[0?"D?оQBԛDS]MQyj^eUu|g53KfKc<0!UNJtwK $E֕wD,d',ǭWǽ+$Y:a]lu%D,-V"BSo501r%H2Qg¸j9tO=h}0nyg \껈uVRo}ܭt}ßҨۜ7u ""IsVNo$If;h$Iy1?YK5ȏG:r>!êRb,/>{d%eeGsQƆ16mxt L/BWI`\*:Kn`C =kv6y3R _'En;.Vzd~[g""/5Uiv&6P”77l.s<9=sO4R~<rsNh!0t8IERzOaWўTXo@IWuK=У' >{Ĝq:k$ f袿ImgjL6䂨ŁGXe 4"d zVz aLpkxbc>,@(rd4O*?BX\8K endstream endobj 296 0 obj << /Length1 2505 /Length2 17762 /Length3 0 /Length 19217 /Filter /FlateDecode >> stream xڌP N4w!Cpww-%s+Y{w=bf&@i{;fv6;ZbZ ,4v*]mvv^66 n 3 @D-atW)=_1[db g45ۛ.+;30=b P:܀fJ(S 5@o؀Lv`W;3.PqXL4wxd/gcSS{[c;OdH+x024qlMn 0WM@., jd+ Rvf@;gI{pAvfairtI,B#89@GԒ)kvẃHn@+EH3 hC, e;'UCA[,J[).nf0spr9y<<j xٙMܥvg=K<@ݟ1cf3e$jc/=ݿ ƶ XJM/ jr.] giLbjX=UA,fv6/5pT@oF);S{`d$nn7;x̀b+ `nבpXX ^`R#^6`8'UgW pv?]gW񁳫A pv?]7g7Φ )o9_r𰀜A`:&NƦ@cG;\߈<Kbk_sjN UdK ^?.B/?&"=|Z n%`|Na.ɰo@? = ؁G RrG.<8Vǿ!'3.@3;X4|Kyc4KL (\I.<nr|b8?mq|^CHEkb[(Eٻ8zSh+= x7O]E9,|62TQՍNі ݥeUZ FÝ͔b=*5AD]k_| sQ#9),>s8P劆_]K=[ͥXnK;J*għ4>'/wwFOb9nf2+p+#ys Fj(E}m>T ;5,{2ä`{<j>>YfҜM|)˭úSPQa^`"$dMnrj\ :ysnU5UtZBY~d{yՠ7" 5~i{?xyTGׅjHCd`5- R5]b1|]%k\;18yrWjgmY;3!|ⴏ]`&#Zqs-Ze3=P&1ZmesgF>Mڜb+=n$!hu1}3NZO/WOWlMIE-Ez\#(cWAߺ8V:o]+: ~ĉuoEry>tpBʦ/,r]ꞡtd|uKY-nIl1~eNEd6TdIP A ɌĠʽ,R9{>Tvm[c,$W23{ßo/)H-o{r6|\b1ڌq}\+{t\z(l~>;aAH svrU_#^0AS4!GOkqnN ghŎ^ cYvcf() ڶpiS!;.E%S8wv燉#9^ϖ:/{Kyek'Q'OgyOAd*teuhLZ>ɷYz驞_{R0{S}*΁C>FW=+o=0-ȽUj+0˜<>ViGF`iDf2^^M-\HƠF6Ȱ)0hB@ 6tīL9 !S„F^h"(=X:B"cѹ0欁)D]r<-m# -<*pfԖ2ґw: (^ΖŢڀGx,i:D9WO6Aߕi:LUUd([̙濫Lt8i%ATI@ h;ގ `i, P44b*d#6{M W_svhtB0:wݳg*HF4gt ,gInAfl.CnmϑL7_KvliMMRdX*5G|ۈvd`]'Iknz-XX1 t`muuqڣ(@ѥ{qV%1`|m%‚*5[-{ZevQ"fGsٚ[d&S' D:t ;M:J+ Ssl$yG^k(o@@,ň1uI·*Ԁ^8F>U &5`Y\-_IؠsT +k"rn4r\p;A_: >o&k;J*vv|^iT8bD*#ڜu$K*8;DT!_L֗ءO_ nzW+:l`kSccmYq~>Kװ/|n4R߫_^ >6 #[%j\H'2;M| 9qQl!`=_EDZKAyva2z7w'2T/`z1+pK1T>*YT!JcǤ[0|Q~i )%y5:H]f \Y1:FJ/tU?ǔ+T(4(̉)`DKhԺOK9NB x`P.E,h&pYō1?ߥ$㷱7^`4+ɾIC~jsBU i)3Mi~8oX%ij/UdcI¾AlzLnR=@UsO 5(M)bD$3;1nDQ ڊ1!xL%˵0N3b "ȣthS!1* V,aj0&B * կ#¾eH_ɘjX3r4=.2,L&! WdD@R:8vW {y0z$L;ekml٨tMXx^$8liWtB 2iH? 2~Xb朏)eԞQ-78"Y0 Ƃ7q؟6k(O"`Dz*v'ոzJ Dž+nƳk~eDxxD6|2_"Q̷<2Fc_{uM77<9Oo.(TY5j*%WʺKŪ;ݷxm2E(򇴔-rKL83JyEv<llLh]39N -lbSu/O͐D  enpNXvڢ&],^~ar$$6Tl%̜f3d6s$@5' {ߜ]|^oP.ۥyGMzjX4ojj7ĖWP}Y ]>+ueu)k Tc\aqQ/dhk#Zk{y 1#SJ#6i:rL(Ţa s/Ӑ3R+a.\1E, ^aL6j}|^nVOtOfdGE¦xT ƂBת 8Sû2P(#M<^ޱWӃM⎱\\GgKHjTmbGˇ;&?x%4 IWqAHlz! "ZV)mBW8 L4a v:%w[O| ( -4^kBs$ۧ$WJ_ΓP 73* o50"umiu`.i e?.WkBQwh^\phIb$*FpSU($RZe>wtpjxF)h1`2DbFy 3EUUoM>k7~a,~Ӈd_g͞y)1;;O*Y̊HZCYw6h֍;D)ǷY|@_ww MIPhCpõcfv)ՂӖ`MN ҋ0̣uyVMmcv"eJvl*!_E⏚(kq5|N,qRKo9zp,ߧ^K:ty6${|p}<JJ;k7~|TY ]fXq.q(.dZ/"+?|TddyܶN{=9D Rh|Nuxh"}* XI6N45Ɣ9zU"zkTŶxXțD zp&"No:̓i;ӆ q\)A*p1R/}|'; M%/L7jgHzyKƨ:lLPm-qb>#qL+InoϥENqpXax]¥OYZdTUuC:f)'qL¦o8rB~P, Fz.PWWkyҿIln7H^06xt a C3օW*MGn~=|P&N`ޏ9do5Wk55F?U=!/r}ۧʺHTpWTY|!+z`ew֏gB;ieU:YW+ )0p:13#k^0"On̮דA>ОRvGVtu};!^^vCbTlgBGSW/G&GEkE>ZeZ<$G0Q/*RD! ~*NcTGձqZu"SWu,9I{ #pI"XαJlkccf:sL(z>ӢY;L.ϓM=ա+h85m1!~:͡uEG3=s!o;h})s2u[$P4[mG(_k95;J?z?(EQۓN:sʵ 4CTiq6q#b9eYGbN,7"媅*|z&;5{5gnA&W=x7\.E[9DU yw,Ag|[.ݞ& ?["+Q~c`72R*X{agF!vrc_l ,|(R6oa p2{B\8ƴč̀Z>A^M¹ưA|۞!saQ_,>a\M47Y&W2QN;w'tݩ&bzT_".7p/wP!dU ^s7}+M"qźRwtZu4\6o<@/= <[z{a&-L8n3;Ik'GőZ+6g z mG \4@z a1l3H/Z&^ӐBd N Ѥ!$6c+8=",& r#Z16r.+PI6HXcv-;xSY8X;(`OUoEzݸ*C8r˘ڐ[[IN nj@}G=L/`Bs)ǁ82]eW%a_{. R1a+]_%/JZH6er~&/󀈘S?/M[F2! C/ Fа3w(7thG|\:1^GȅmI ,,ڜ3+N Gg᭠\ _W$zjsC-楣<21-GsWd.A!Vx|<Ž&n)\wNpHoݝcXsi]_18{X]{89LӽxQof4|>Wm}i}l޶p*Z>L% ) U4) 3_ᗾaV[>qNlJ۬ ;Gߤ]8|'Buz/] W"BR͞Hv8F,ES _ƣ9Fjd8[IÏ;D\TUҒTý$U0椌U#^rfֱu| װL׻Be|e*0dn7k3UDZ&*LƐ(",^[[1o0iQr l/y_WPJN & |pMK i2uPZ?lѓt*e!%{yYy%.+#3( =(-T]%WW2Ċv ]e;xXwR!銯ĵ|?TtHn!ԛ!hAh1Qm"e0aVzκIv|^?zt@aޭ{cnW 8ɉ#*fvB*#?C&,t}8Dt84I1u|ؗ8+.ٚ4wy_f(S-"BǔR_?q,:W] iX&aU=dofB P5ĖYH]b$3kɄPljg"+b ƖS%H W (zΚ%dy_kˑD bUbq3S߄b;eׁU<灕y$ʒ8IcB So1v\[% v3kc"`@ u6z̟Gor|[+hƅdBE&Gqn5%1 ˚pMTPoY k '*VOe j"{HzJ<ԭ1_: X/AJϬ0ȷ&< ? l&Z2|px1)6X,{&\'FJs^К5K}*,}_s% τnFn]]˵}5DDpboyd)s dս/0Zb {4(Y#&p zAwBly-sx8l XpU7eڥC3 (LWd*_C]cB.<[؏9eLҧ^7魈: gn-Ӓ%YðA?QʨTu }%Mvҭ񳇊!hDMWX$V@^G%ȥ'R W+@Jr%N$5+ﯯҢCx)5ׂYUaSt/\1i4ڒZ7VYJ! ֌g  sD~M2# u{/Q^R!{d&;\a|gG*9o} _\9^VX-(>Ķz=hu\y}ưuL<ҜJ~+U d1&|QE}z+;}r >8a#x@nc1mW LRKtiot_]w^݄8/΂զ⎲"5ë:S` !& ʿۘTk֙a{8@'h>4*7__A! gVmŞaYH 񣚬L,dIiexFf/},[7#&&-?&QiYȮm π߆+'F[Ho[l޾W-sl8 m>wm^s[?޽ގ@e Sqt3Jj[Qm@Glx5n/@Q$ K|vMEzȇXτq'fpqwkF]rv0bp,,*7ȽF\bCcVj D޼@չ-}K<JNH?OŀOnpAKJ.S>"1k:W? \ &$Fy>p8Y'Hf3*pvrzCٿMH/Vqr*>K㗡sb.*hoCQ295=h#?1`'_ 1A҉{#V#* 9#~AxKo/&Wց6OAX9FpPǥ{"^zzBYdg{ިXɁW5u?4KĬK!hc-/ajGܲm۪JZ>\gֆތbtn]j^׽p|_ِ%(4WH<#3hFClna+Xk:-<_*XՒa9`֨rIIr9i>۟mķ=gf"7 _) ^YٴUcst`h)"]冃m{ +JbQBAwsv3u|Rf7lPW5YH22B }x3~F(o.ď ;@oc[VFsoy=ZT~k[Y?KoXvǒ J? a1Cs,]Td)܍C7/㪞R>㸞\5X=.'Z熑ilKÿ́pS3 ͍-%E#|7C^ @KQʨ)),e mj-X-=-ٰ4Kno,#,^/']]}S(E 4cL7l?)1+Ѳ= %IOI);CD|-ެޛ<4{pA_◧+sn;!W̟sr ?F%zw w<-0HKYQFvg#_bcu O*"Ei̒ސ:NܯP9ȌL2f<\5B$6i\Z(svs7Ʀ6^Wg!7Pjk)'v2Rj 7g:Ⱥs?@ʾܵA{X4ٽO>xzr0~xL oueF(^}epGIxi{-O+@FL4h.9`f'щ䯚OhĔHf_5)~afOH?7j8Q z(DV-6 #B)H-6O ,Ħi0uX6H7@ c2=KIKJO2YDaH,\o+Oͧ P&vk( $Ui3v[?޲b>׃uh3Vϡ?+VA17{:9&tUڌp#G#«Я1P"ↀ>L1Y1!$,o#EaڊfV^:3̥+AXE|/ίhq8B8ނHaV}~Tpf~މK}e~zu~W} D$zٞ#z[$!$uLy}7HƟQE#"#6a 2~:sNg1s!GS3C5Lc{M |[ 0yQ~]JBzP C yխijloyVfwBԨqDm+3/r- jI.d#9sxtqn855l*NF,^Ԧ][(j;XLRVb{_PY_ۅ{ E-SÎޟAm+,+F4dp%UyVk;3ݑmvA9axsӤ#\ox%ty>̯=\U-KH X57Z]2[W`O^ՇR\Ⱦ񹧩AԳS:kLh&7Z]y!,FHOk5=/(Q}fZBEVn;*4zfq\e#`h.魐0fVfs2bXcگȆʠi~;:'^NmZ5\lPCSlOҩC4bwHT!sPY)g"2#(]tJ{XAx S aDZwBoyi7$mRWx2M5ʕb,="Wʪeǭ5--bզ=wňTwИW|9Pwy[&ޔ0ngh>$?W/G!;F%6욆S]?R]nubwz{[ \HE HۺG(Nfdȉp;]; j`lU {>\ģ2:a+їT[:q(m*7 [sFJzwPvOd78=T֐kp Jy`0o}TPu+[с(t feŸ]C{:8Ts)䔴5m5mwu8ha&lSX*kQ݇c+ڔTH|/;q@C 5'IvTXnRZ"4`pƳ$qid nwy .᪤\Ψ꒲ӄ㇧N#`La ]Xqό;[80%}rVrA:R8yH?fkQ\+C}idupPe= *p|$ VDҩԵK([Y^"u șw&<;dlK7rw-x΀UU M*NUUؒT?.r!+ЃkUUXjz.*zQJ4X0Տ~wk_䆙QDDVC1js'Crk'ږu,=n\.i/Z mj> FxıE6XKm1/n.r)=&J<5;F{OGsOxyL5'ˈX^DO|ܲiNkLkpQcSܼj@OFs(7wU ${6vVIUv Ipjπ ϖ.l5)]o>̿_ڙ y k!YdgMƟN|).V>QwY5>@cjSWqYI voH kvT4 3f( m-t֧ `amVL6vpdf= ܏5m5-% -r*F<9bt[$qU*@easS݄^!HXZ+, ZBPatt;BJĸ|d#M R[;kL>xgw"|yȅd/UI *ra Ɏ)/6Ҕ4p>c\1TKtZT+GJ(D-u͖+Ҷ^C": Ot)Z`t q&[É΀bOz7 ꏛjNTf/Ѝr2l!, `R`bE]WqnHTT=ϝ{>c߈:~nQXkf"ٺ0F-W2~/=t^ȳ=ٵzGfaBF?g3P[.=ϵ['$8}kOA8p_7ҏh"i⚎o-~7iQ6I=U)]ePqժ**y*QL *XցKyJ`wM2H@)R)h"zǴ*'&^ HU#{5{%YHy{.\6r 쮹܂ڊq>WbKGدOÚ 4L81 47?g~UFh`>GNAퟴl>_|;W"_ b!GULK"L.4hN|E@ \|3.s)qœS؁-}>QdНz7]ry6rgbӲN@zȕ GtH&d]E¡Hֲǫ0'aW}@'NƟ)i*ŇזK*/ǬOxso|W.MNb3gic8>KÚe"g܌QT ﳌuv<2<-,2 N QN*{jl8E]%`ұ') NiH 5Hk :ھ hgB Y̳E{~kKNGʤUF.ζy^pBUAg^GE˚w3o}%W.&;S!?Q}$sO7vȣSU۬;NNq8,bBrD)\r% 昈1aoQ_wo&婚/eO;BhJ$Q 2rо) VgStɴwwk-WL4?;` 7 !9]p>ǀtYMٗLr2EMlt> J !~iyWEX"D?j0qot/TQ͆Q=qI|j'3مJG~E˨EDju[Y5l'VfuC2H ">wީ*V$޳T9/HU,N?nU|&n0&[wgQP~:n<%$`6E˸ݵ8O&4}Ӹ3&e nXDt~Cc{욋6-;3" ߷GHae.=y75Qak<وEKI3K#+=E M6HO({NIѢ+ A}! }Sx( /[&Y5A endstream endobj 298 0 obj << /Length1 1313 /Length2 6528 /Length3 0 /Length 7434 /Filter /FlateDecode >> stream xڍwTT{6%- 000t7"ҡ t7 *H#Hw}k}:ks޿>k]y!yx%ZZb~~!^~~A\C Kb FA0PD; 4ܡ!$??@_?@8BZ 8 ˢwF@_ 1yg0b H݉@(n #]t:2Ov#< @gxqY?zP-v0XWoW 3yC`; QEz!@u=(;s @E^+lD_a )0 ]۽L %A` _E]`Ww_;?:{0 /$/ ^|z~*uCw\_7D}El?`?/9,àϗOQW^WŐO^_A @@X /w] 4Ubk2-߱w!M]o ENH mfm?@g@ F7gU [Ց;7t!H[?߾0[8׆n>wWn@`;;`G)_g Sl==ƻ#^J0 l;5 sk:/Y~e$w ~y+UT>eik߭*ȆDƟ~WV/Vq'GɻGr+hqhx V]Q[5X޸}Kz٩UU831Z*3 ,96)1<؜$^_ONdk~!`Ÿ\[3%- z7߂ݓ^unMSwSCR=lGbb֪GCQ dCnE;, Ws͋c]R-NA gľ 6fx=5߶ׅGnp^ 57qR^>b_dY<2)U 8yk콺'|>oy@SĠ=LB* @dz; uyo2$(r]II_\yg'[9 KQqf% cߣ5izkrQeaam:Z|k=JޙLUԬ!DfhPjFS2ag0yQ^G>4-H}ښֱ# |9"#7^펳O+ F =ꁨoV":.^dd;|s;*Cr|Y Ϋj`ޤw O.ԪJZOxu0|ﻗd1-U4&1txG \=[G_uxi ߳WETs>x/K;7p8 P_%aY_oj| H%{"~%]t.V*Lecw22f '{Jcsk !E3 ߇YTf*M>ɉQcoZ5}hզNCΫ|Ŝ roƽV[bOifӽ:hauݻ\\imy[C' &rpwk0~eAon*OfK}2+0LxI#8+rPڟ mc`^F޻9j8>y-Z3aDa(:C)Sb34=h c߂pFg^%홨e,$ ̙qL1 ~Srw?&e< aJ$멏L܄;DاG+[ҾIǘͽ79syS!9BVV}HE.r_EE|7F|! })1<&(nA0](2MMj:Ll#ij.IO?V,H5n3lg<{y!om. aa +CFi~&t8pQ)h۵|,1M]]PíI޿IjVq?Fxǖ',ɔt^ݢU,|ʼvt攍yICբe+^;K(۩KΦDNדSnh-Nj: hd["fkFϾ涱jC~I8l }y9\f7?q37W?zVim{d!flPZkL/ͷPes_,Əy,*(oozKL^nd?ph!B84WMsqd#Y*'A?i|?AͲ ڨQ|Ka%{Jã}<-gMzK2m?iqQĿ}rN/LjQķXSGj/]j^x%}AGJfE%a*#.1GLhd7k!&_y~uk9)ZۙWװԇKx؇γyB]=f+3 5q#Ih_nt ^Lpw̾:hW\0%N1 2Qf0,v\ O'8'/FZ6+Uŕ3 :$̮ra1Ir EEuȚrR'qg5z9.JeC^O?5V!ÖS+灷PGͧ9urdsb}]4wZ0o{INlՉ.]VcO^"|#Y 6^|Ѐ39݀:O8(k(}LJGlµFH5:hen~m lD]ucjP ;Ȃ]=X Ba刨U# XY9a?O:lq1+lʪF~O|i@]eq+N;݇xc"Eb DrfT1qr)wDClAHĭz9ƙ77quAcgV_~!ikyܡ|BS\?vO^ ~$ӹi  ^ΕMuWH%΃ CeG|[zBODd6߬WpaIG:gхE+(S5&kf$ Ikbyn-(.LD79IM-i/ 9;  )E(imMcXеøTꒉ&w9zC} ub/n2_>+Z©Ȟ֫T"U=AM ZKla!TSO&!C.e/qi1]]e^PgdjF~16v 8]&ڥv;1SeU+򀫝X\_9L VFayصx,֦W-ͻ0'5d!/FTȭp2d+\o0h`%db>RW<%~Fg)h:Ì>)z{(86^JsLQq,%Svz[}~=\Ū"Z|9uگbPkϗ X11NcjRD\⓺uFS +-ݬ8޳E/WI>Qʈ0T<xr;O,'zFfwQ|Dv-'qvUp.QU(9]e LUDAfElνeS/%wIyvɈԄbʽAw {tG.^'9<ɩ/V&URRk)lRh>./b8B۲ {y!Oao~Zmn\bR`.l\⦆n'r+zGB H/4Æ v>wёs.x|=3Ytuf0i/[-4ģL Au/<Ԟa0Q@gfAua|]3ζN8SΫ Aåay(D$ |&T"ʤ;y1+{)gǨ2rdWU pF޸+{k;@,M2NЊR'kyBʄnK4 *yn-SqSx=z{e7ȣ54 SR;<w$kx]4s=N}oqVʛ^LHF>_`fxI\A~"s=fez2\ ӛKP,,V9;_(-mg1z< pvQ~hk[;hu؂aĸdW,N#+n򄾤.E*; 57ӏ_!u>fZYd#ؚl{q;#m$T]3`&SbGiʔȕMLm34iٞaAfit3B2*[@7|NQIdž5lc CcQwOh4iUkO0qSM0g[MoVi,D*3_BbKa?gj_ZXnbՎaM$$={4iQ{H9Lk<B@/eJUozE PůVF-㗋FPlj?XG}F-e{ -@m7`E!{%Vq-_ +圗SRm[M-jk JBWG80ccUK Cmn GkDXdmQd==)7ȁ᳠@כEDIRS3Dtg V*b))ags`Fm7nLCo!=qYSAX Pr2AN`| S+t5vnD-8Mٿ]F|q,1s4U!q]wdO"Z :ܦ:*8Uȶd d>` QQƃ85RdH֧2?"16ךD19P;^ʣr&2Y Xt@B\aM b _>Uf@h ~UThѳK2"OX_RUs:ӡ3e۷\{Q)KlVPYc:,?>~BADOS\3-[蛮/#sھ!~;e%dg$" B?2H=殙0)@yrJFG{| YKTT8@AsBSf8 7VGNƍK{mo\!ǭI3n o/9*ۻoGUj-c yԫi U! M'¿9,^~1ieMF8cvSkbK[.ɩl'| ,n*D1A x=uF:ڷ5 TGyEؓҙo/+QH~.T3wƖ'qMo-vԲUr&tJ߬(e3'st.|H,=iJ`ywA dwmc`bd3KxDLR:8-W+/ )˲PĆ5=e٭;qG`ȂW͠W3c?OC}2u˨I!QdqJ}-' OmXKQ endstream endobj 300 0 obj << /Length1 1349 /Length2 1713 /Length3 0 /Length 2588 /Filter /FlateDecode >> stream xڍS XLyGRF-+J(jMwte>f9\nԦֶXkStK )QHH%;Sa==N Jxp`|:Pw&@<"(8؍ H*m$pMH9|< ܦ `A@/b2ʀ3ȁqZ[̟ ,A` c)B vɅY,@@“>˖d@9\H 0e@G|0`ihc8Ǐ\χ2Yl6 p Dy0*B?Y,ad4B.Cs!@%RHFd  1# M…f$E E,ÅPPd_[8 ` Ku fmy%b#DSEؒ/'&88ZXҷQD@ 1R)1v \;bsrD3)}7Jd`-rY)vD3qYA̖"llO'4NrX 4X 1]`#hV&3~S׹6eքL5@؃}bB< +D,= S]暱E¤F`(6 W0<H3ɞZC \Ca4}He#Y_v$aTw=b>J|dQ};Cr`/Ub#2MT[Wʳt#˷N n+W|)3Pu^'5oY2f  *l 19QAȈ xUeEvi7nk·;31X/^بMhnjVFk\xRvZDstHW@kG1o{skn4ok޴ w+=rhn"] 8vXPnjmzQ-DK ffӰbߺ7SZaTZoS>cj98,q$wTWlۺ$mU^7[ק-Dk+{gwrsO5Nƣ9BHQYchjQ$鏺'3.S'+^G{9qڶ졵ԮKH?ezݸ{>o4K&=)>RqP? ѡ帜.6؝׿vA½6fZ.\[u[E%B\A~U-/w{(?M#d'PK3{ݿTb{m5^dMM?04ŧo3vp6qʒgYn.vIaĥfl.ӈ7.Zky-8Ez/fu ,%% #/Xkw{wg.m'zaZ9x|u(S?![C0!zsǿ>v%{\<}| <شMH- v+T7!j]rHCxKLeg3ul}z?,;TTXy7(tf|޼Բ߶'4uQN/iDZ4f*y\&uo뵼iXf3V]ܖ~ *4EwGmvbCnbA~[*v>ҳq=9!Iu?({aH!pѻ>>Nf$6GLzMU~__Wq|瘕R% U m[l-?fWTq |Tu9XŠ]"Vk#ʴw|:]oxIGG{2v4i˺<RDÒ5:]1<g02@;:uu9KٍM n#olh*oGlo$4YLe𔌶<\w5T;o>e+ģ[<MMT,y|,& endstream endobj 302 0 obj << /Length1 825 /Length2 1575 /Length3 0 /Length 2171 /Filter /FlateDecode >> stream x}RyH&Ӆ0~ũN\*Y!LGc8!=n 0L A6A7Z^LۘW(D A0; ~iՃN5#[[QlNwLVv0EclPl*_>bGh QmhH ɍ,MCe5ݨG+6D!|/llX<>߽|#`1+׉̀u I?¢-Rjk޳{"3T3uRh8~Mf21hȯ^h <ԟ pY{uE!i,k|i;(~MFR!!,ОW=JRT=E/z.wRY8IPx7,DW#DH#n(pyIgRhgs =F>/Nk;U԰+J;:zu3ʩ;R|_m38MXTjU/_v PtjYx$cAG}T\ZQܧZzJՍ%d~SЧYi0zS^ ߚWeJh4 YNlM tn T.3&vG)wm#I⚥jyU#kbiLQ/X} :-}>*"gr9Ow IQ&ߥ Z@> stream xڭveTђ-\{h݂kp 4mw;'Xp݂;<;w赾SUg׮uj5-&9H!Pۙ8k+J:Z^R`/m tAi@H98z@VP.#33˿,Bt[^>\Av { &Z`[@JM]_AU ك fus[0 AK4g, g\A\,G ; fЗ@`{/vK!/v/0ug3v^K' '3 p|p) 5; w\ % #3_ X;_7st{orCAl\/9ЗV`{T?`o>Wo 3 {[]?SNO?'k_=;c^63@gfv`[&uA`߁(@^ ao"?`gY;B Z,l_z׮mo؂A/Zm#|Z`?M[;yfWRR`m7JEu C?0$%^Vn oY  _[u27{ş9ф[.ȋ_K<rD]u ۤeC F ;9_8iW:t >TՏ >5{;>n*2m tws|3o/H?Ѝ:V^7Zy|7џ5Z:.qw{)B&)sV, o>erQ|tcL A @dA뤁ߒ '>6N^6,NK)r6 64%G xK[)?]'[مӒ" 5;#y6+צ+zJ[R(I%7+tŽּ":湤uGbdG4HKO/zk f4"S(4OcFfE&c: elrM&g ߝVkLi꞉78G: V=5F7 m]dExќI^ NBx6NPdgntN2$bZU!>Z/kHˎ5X"k h 6;ke5eKrRbB,@:9D7.Dm>,\_Vy곱4uSIR0=̕3R[|4Z:=k[ Mv;αq :o닄wQ:'6I{Qٟ(SHD_Mi@Ä՞E,**"O&`j!D$ж |\ :j\<" 2klsh^+ v)K%ݏ#վ9_>Jy0j"1rW$s o$JZ ",Թ59cgMG5x3JK(ٶjUc-^>xHP'|$i}=J+N%wg2õA}@5-r4<4eCb(A%QXe*=]#]ViE(7Cndh_ ^ %N$9/_юt(P⼻`yO|YZaj@.^e< +E3=LI]l2G&5uF͞ T4?ߦU ALx8y\uJ6\<_t(&B_ڛOIuri a|֓< т|A b[r++XZ>N^ OL.=HE{?MNw:Z #xzax p˼6Q F_!qwebکX'z%1F͋NYAK#o>PC-atq:iz -C bayiBF/?q7pNцpNmbE˪Qy?,knpn:z>a]Xg-$`b;wC\= 񸽥RY=L␑$=rl*ZD ٮVn7" Պ#+oHpKߣ(t!0"Ҭ=Qq7עM2z;ksT3IᇴwEK!ڰ> oӾ*JT ̹5dl=:wl☬E(28֯QDMF ƅDЊ xS3 on.N݋p/gJ|lHu.g.>S䳨ĝrX# 7d)F*!0O*邘'R v&+xo~5" DJ̊Lߓ. ,ks}F49eYy Jܠn9+_0Eap"F4]Aݸ臽ah~h&t (h%n: f k.Qpƈ{S='{h=8zQ0R2Sg8슩{p뫉A+"HpXd?|0]:.椤GװoǴr>[$eZq|Tͯ@oS|k礼&)U3Zlf$ZhœB Mᚇ} ǭ3}Pk ܨV >X5Af:mA&h^+1{MSL4 v2+;VBM d Ն1kA]Z{>:6{4orGp١<¡wT98|5Ga.W0FY!p>׉jO,ŌCOӥ_F&C9‹sLWس}i+(|v dK8?ۤvz`2?J}Cj'dϟ͜sNW2ڻje!z*ՅzUnKҾ_uE$J3]wz$NK.o0S tjL"%?ANĂ:!^79e).4vwrŚΛF+:SoA/i+Y[pݛ0E9k%bxZt6"RޞmHеk<:ڌAC%C ㇠X7 *? ҭB 2[@v\tcsr[a4βۡm?y?gaQWX}>(ycEsw0 %Ɣm>D1/,[ώFGw>4+y;>ݯnSǪ|›dIƊPGV'١.EBOiI>SV$HK!Z3n>D-!/(o- xCpFc)̪Qd\Ϸ7]0f^BpdkRP$>6"ċXk"{5+- Q?oPN+3$#iţ!9).06B $.h̬Yҷu:[?6Ǐί`sl *d2H3FzkmThw}OŽd&5gKRg<  Nw{NxksfhzK*bGj򲮇);Xۼ>pv{^-P8A#J$Q)R%>~Ru70nqwb[.21`+ d7~sصHd)h vv]mE1kJ!VWUx$ ]Z-۸nv&=_Bnt8mOwZhu =4,ʹx_J,6NiG\gTh[N6ނ8C_ojv%쏏7 aӳp2]-ؑg^ &PѲܯԇc©NS'!lsԽ_=9uaL,y8{-n\[xfGBh7Y\7?SxxԏF4{ +c1 Rg{xB*qzDTPոjW$ ? w(4LiJ=ɵLo0^P}i-Nɻ. Ru>=bS Bd*z&J~EѼ`g3"wB?ckk_mu2{Qx4_Y2X]O4q?[GzTIHunI" [Aȷ+nڳ)/;wQ<ޮT3#~LgL j'r5|WM :zoj4=B[DgG[,v/NJK3;u(=.2=SDF=5u RʈR\o|)HUe}&~ŏ?09LMTZJg2fx+m0'$-DG#CEyh) :6ԗW_ D]n?VJS+" mBǩkny1kHS/=#ter.s7OU L%uneL9ҝ xc76RK2;Nܮ y4ӻzNZqFCJKy}] o;?O?/?ŊP) ~ܯUtv5_a8sB}-^qL89ej֞ mn-X? lTd=;`G؋]$p~={% W&$5#d˜Ǝ)WĚ93WFD4)n_w,%b(a,T?5-RdZ_+-9=⟱2tD߹E 4e}(0q1`В/O~j/38notkpM=3`m&: #-%R8"S]3"mu v(|;tXLJ4`EiٴRO۳|U3c+ Z!ρޯ I-l';3%7eC#tC+ :˖ѱ3^bsGq%Y4*$g/i &Z=0gנIϬD_G:Ԭ7ӓ@7}X=_{W)j&ğMoV<ז"UZZ9r9DH"NiYQEU{%R xխr3LRt W+hZ!upΡ`7ڰHGzJo3N P@fa^Z06eJphoBؔU/m7?91kA^-p`c߉~ǰ+{q[o^ L0bI5OC_2u*1μy;$h?SrlIyN ՊERJ: +ET 7 r81}ncĞY&3zlg[{DB.Vi dU9d%+o4@c 7 ل\ e~ w'ޫ~Oaiу~.8>W.2_hV%Q ₮&RgSZuE!9\k^SBdJ=[hc\] .YP7$ĝۘ ̶ͅ¾ h$0[=aE Y;2q2m' {4zӷnKMK`x ĶI s2UW{ڴu^IUזQdT3 flj%HmRAcxWo#ka>ј܈X7esJ)2i\&u?Js|J RE.#k@!Vr(_g[^Q3RW{uK4NZҸlu0?;Yf/ ?1|&-9"WL R5ZǕc0ޟA4 2ψ?S1/=Ȉf^!ͅTVh's-W,A?:=ϗCJ<rы5npuwcOeB`i[`ҷl-幊=Iٚ1m9|:LLCؤ ]'}><!b);kq"#bAN mFsڹGj8ʯylݤh?l!x a*0sÜe|,̠(d~elWkǷCK|8LT5(OVG`KEC׆6!w{-.BH7vttJ@ F_uo}\c3z6^eHN7%&,Xz<5/GNJ)9n@<񶙤ɭX!Gvwظ0OFنQ$³F§f̖tV溕[˓QEgKor/H+Ea&SWm@}MU-fۦn ?[7"vdG d&ס]d: 8AT'.^"d\\z7M " c٫5&2(倎l sw!ηC*{S}8M9?i}-9Orʰ9u$hZZL{9)VܩDO5<%Paȡ%p.*ܐD>k'b(!QoA[(\uC='W(yHӵ`Py })W3<OXͥYv*/n2?j_%^kdZk`{-Goaz]!e0'?:8p:t/r7vָ*"$WV>5o y*rxdak,]-{3NJ\x:D#Qjޅ.i/='1,g0PJ;%1PMF(Eɇ!,YgrYkV*"nzCdKܕ$§޿bRK/iZkv/(~o E %bwRӢ2 $!K񱹷\Pƒ[4S)$Ady/ļ-^/o{PuE=ZcTšIּlhw#wm ,8ӪPjt҇d\qz͈?.cXOlO RYorZʳ&1Ց7D{6SUW 1w/T-,Hn c~1GRR2HܬaY ߄WDhsܬMA1u 9u@=?8,3ׂQ st m 5,Bn t3+R1c@ZϪB*W4)LAxtҸͶԂ0DJgÅ툑4ҷs?S|)d*3mOgFO &o*5\Ui%,{I^Sh h+%~؜KMRD.H[Ǜ*۰j΢fv%N>S7wۚ7'25s`qtS_K?hcy+LPZ t[~}6ɚԤz@hEx;1FWF6u.4ۿ̸rd)9 K,@ȐK #"YUup&~#  Tm,@<_8> stream xuSy<[']JRQOebaL,ɘyf LISBRDʾDZ֐٢Z#dIxG}?9|(c,4'h*0U(@T4F旕u$Ј?hhL2E8ESu(¡:p-g 3L( P  $eJ@́O$X{JS0 83+ 3( Ppw9ތ?$@dL R8Ec7bQ8@hPjj84T8UHS;)ԌE633%P@ )گs;I"NH-ajN$B2o0AUB0Oa|6R:2$lFM񟦢AF k΁A܏-F!ܡP( n|s.K&?Ñh?P4s7SLLI!M@E]GƯ(4A"Ȁ9@BPn؃ߕd ?MՂr<B0W8 єDƿ5cEC cטTs)"0>?w"a8E6,ӂ90'I qw $aIiFpq`6h Bq8)MW.7 RyQNHVBBNif|ѹjj1,rL3x(褮I*p&IH: cF%{!E!'DbmSd~fVOu~=?mgI<{Xm =HͣGܶ=\.7ٮiO+s=nQSe}V^lZ󶵁FN^D>A5TOE,N}kFcׄwqtl?37-ng10nIzӛ2nBݕOSDڏ7} DJ<$/4 ??cpY mKwe^„ꢄԤ-RilYOߔQ ߈+%ܭWXx$ub֚HI2ʉitب2JG>t!OZpMOyPsJ]-[L $+;R.ؘwyޥ[Zu -8G? q/DܑGr- ]+2dh]^vN`J1&QI/B53s <%IT,F+ ;g+>&-@lNhkqcwb9` Պn;E}crV5n3c8?bL5qw +WHO̊t=HG-)HJ󠼤, bN'eƩE=L |_9ג|)%|݅%˛e>|X?Yo=7#E"KOٯ.պ8cd X @ZLes{vkXk6ϲNĿm=Ȝ(;|R磹IaF;j5NΫc+zEW9;4}BoݮcKՕnm [;9qT,ݽbj͡ %KË]uԚ{Od842JcK~zC-}I<؛zEf%u$p7S4)+{%i:l*$XKCroIJH,g'w Im]g8`@W䦹Ʃ1ȡJny.u'o.me%e0)JOYg [8Džd$Yf$u`32ebV Υ"7c]7\lŽ#7Z2ϯ' In BQw"Q,*A]wXԞNmݝd*HpHDVKmN,Z^ :7u}__jй|j]X 0*枏uC|xH$߈]0pD!~Vd8ߺ"ڿ9sk5 3~Pa2AnGUP..z=s s}0^kF'!/c5i5zR7`7?45! R9WW3F.6|fib$[n9?Uj1 1FI 1[j;`Λv̱EJFzdzgSY5A@sy@k<Ֆ;ze;}602#&3ʲ]8랃 ~W$l\(j/lxe%fӣ m6crvGI+H.~Z:W8Wq?'n.pmȷG[?Fn/)KIgU]h\7?ӪhʵcJ+>\[{{QEM,I^=J W%B6uevӍqSҌh5+/K|߹Çx$̏?D~D7a2/kq~3J{ N?|JdkfZm}~"q#@Wص%\Ws$RPWۊ,XK ?t?,en,%}U,cfYt/D*`?bR2c\᥼Zl]U`@qA ;eۨ;5fĞ;&˾7iQS+)Hb,O-ӭ>9]e>oBf_=SV,lDJz\Gt^0l:3c~9n)=Yr*ƮOn$m R[wpoLEqmQovqL(}Ed|XޫŭDQq0ؾ-1_,rΑTl*=`#X.'>%ąW36_ΈΤ3[ʇc5Fz|+51 endstream endobj 308 0 obj << /Length1 1722 /Length2 3073 /Length3 0 /Length 3968 /Filter /FlateDecode >> stream xڭUy<۷gVdBʾ̐uBcd߲6fl͂G %Z%HIDP%,r9f^uݳMM 62C 4X2KûH cH}m,i QVXh6BeѠp(p,  ֪g^n 0  Ay-j؂d% " Hj@0Vk\:TH]5iTFt7с@d_Mƃ$T 6̙Bgq4V6?dt6`O1I fi`+ ` Fn &SdĬnÃ%R Ub `I_!؉%ŌC%@CCkǤ^{`:-#F87]9MV u($jMBvuJm\v}_˒+LV:?RWk"f1Jjl~Cb cQ^9  =dž[]\.}kѣZTW co>w"}=J?N(_qsSc,oұN3Xhnjjsyy_p]zX%|vVt[Aq+VVp5&/πbut. ;H~pbq'GyNG|ua7-ZH[g/?<%6<٩-9G'YC itp[J"n]L*E/< \^RM]}9#{N4lj @N)1#4}q8y*MWv4sV27,|(2J}or~YteO"lOȘx)4G639 [ /ckۥsN~oR{yܪ+WMc$Oz$mϱ2Sǫu >"uϕ#2_!Khg׫ u6Q>v~'TEfDcM28sr.E8Qv쥢LaFŃzKSY=VlweF.dOd]Zq<1xD^ٽ[LyJh 6, d:x֗rE88q){KiA_|"Z`2lɍʧtOoUKx_Oo^Dꖮ)8C(3QD:k7BY#Y䠩u[[ѕeƦ1JO}ȋJTqbxj+h;q\}(Ǟd$4 BrJND!tgծ !Wd7MN0 {V15'ث MU *\M!@i$Q2-V c=;>Zg4wm|8V;f{A+9C4uY K[5k@+c@y]b3>)+AǗDҩU T<{#lSgޅ~_LlH|VzRwǯ0]hKp-vOQxuoOyТdMNW#ER44PiO JKe @oC}ÑOj 蹊Fw?d,-ɲ h3[6e+pf!PW3eAuC"U=bw?ɌorǮ.<+i9+0a>0_*rfX?}~_.g_4!/8t<)8&gZIi'\q<&+D}r|\?77?x2:hj'^2, \r;zγx%ʼ;6JRcI5|if[&RwKė#t"E/~V'8[J|dh``gC%9@t淠Jɽ?i#){:7= ՌELlX8GQ W o<|<*AC jmz#ޛPUD_fT>ӂD{,ح}0>=9,/Ԗ Hq>7@Ɂ-tJm*m3 %r[P~O᠒v=gDN4iiu=Ham˿75yUk'/Y">*frAQ.s0 {U@H]M+ UʻZ^{>s~u횉ߎSz1g2U]=PW=J[N řOm-@&goyzB~N,QG{*;Q5²eQ[evωB),;Y),YbDa16o< e}2 _=Prw#hKN( GCE2UNV~WJBm:LkILaE05c\W堣uHG.UtwϓG5ҭn endstream endobj 310 0 obj << /Length1 1626 /Length2 11534 /Length3 0 /Length 12354 /Filter /FlateDecode >> stream xڭveTܒ-] 4X=8-w}wY3o~Z}Jv]tS+1`['&6fV~"QlgRv.$**1l+nhM@;; sw[8h5T5e+`O{#@h :CՀ@`ĔeR)-ll 2ȃL@:`lk 5Gw,GhzOr16 G#}N`/v3߄6w0e ^UY\<,zwf`Zu2:nN2LAvF@pvٚ#hn`j tt|yk:_7v;wr99͘k86"+2f`?v_;CNlk0!(Khg*3 +K{ZZ}#[;8_)F6 kWҿGkVlm>'ؚ#Q4U9X̌]` HLlSX%?\@[.YT5%Ե@%pRw{(M( `d{{Y`rwI`$lM/û_y{@7 /ɧ Ԍ41q.6`:|*poj&_su0skˮ,P5Mg2,؛;ca/ECډfWn/{[c*p$mwt~.~ؔv>&)?ᴣC`P' w^v1dCdtLnp]g c1lUvI9δ5]r7RykBҗ(QbqÙZ){ytﰏ]w N0HS<\,55ʹ]XGLd0rn\I>\ς{#H~St !4c"dm 4|Cƃйpן醵b*7n?<3UM.["#Ma'k]W0 -0>@M3J nX$HTFW: rMpS| xkِ[ Ӕ#9nNO J_I+JND%S3J$? 7{q S]WX9cu#tf2kMOH1Ϩ {9ObSަݛj?ZJ~f."c`;ctx̛xfc9&4g{q 5:+3zÌG otE_Ge}Y]JňMzuݍJ;H+5Ӥҋh6|θݕO3o -.{7(ΐ$5ޒH@nRSTm1ۮ'-&b $v-3@[,XEN}܍BS8&?BX8N쁑 v/]<¼ -5^"VޭmhvhR07oda춨k8f;m}VP;5e6_򛾈xŰrS׎p~]\!3ikmTBrN^ 9dt;2.mȨe'_V}]=߬(/J˲ ݟ2tjN!+wV\@ ckPqSo(%AQ~R 9=3"_ ۚZΔsE~\@/rܰxR߀ cuJ{9ϕ8ǛRx6|g.pVb $qD~ue3Q+SH(p .cХ4]?ʇ*>|p$b,vS r* 2ľx 1lM"֘ !U.x޳hLb8P̲O~|(ֽot[NO^0Ql?h@%b !{R*h[엊DWrt_IY*ոv#Rt[7?qҬ1:䖎(Z=,p&%'5\gr(>**ΦIQC}Nay7 i;cP_ҨOK>]ӌshbdqg,4Ni(QvE߻%Z=nG*GƇ=˜WYT/m~Hj}83a^{I6^Ixڡr=C?&KXf_XD¦i=:^ ֪-dy7^!ټ.ڭ^.` D dF_"]\~b։f̜<I&g`D^^ʦMc 02&Gw3d(`6y Xv3vePD֪֣cyNAVe-rt/+Cu"vBz1>uG( r6O!Û(| 0 ^ P( tыڮa|)6́ E!dnN 1XDyA+[7#[%y] ;i%~^ǫy[v!C C4y(AKF'1K{E1 LcWxd%jEp2$ВC*u#ƒbjaXJ\g3dm=_6Z;azB I vL;C'x:gG,d:J5inUNBYrEښ<9bZ^vپ[Z){'XN QT1ֻfF ,18(J'7x?-|vK2U\AXZt%G"MsbqKl'+y:b. "8Il|&(&c~ /[x_\sO{BA^[{'U` &6{) ʟ- Lsz`U|!Uo8!yg"!CI&xY%ò Q} _MNK j=\UW/UmP4fM${bXp~6/`Q#qZ?焌 4{:YlZH/W6cQ ꑖzsxe&7@EIۗ[k_Z7S5zkʣխwt{9EN'Aa.*n8;rSV3{USFtR7lr"['8mxbigǂX^kimgvgݳY}LZ:;U #* f6B}8J.`MN&ϫ$73bgkU~$iQ}S[r-e9֒V]7Ld>_ 7E=UCT`|)zT֋vDn_,2 }_6-Y^5o(b+ne~<]4b!шiShcB8Hfow n",&5~8q4ZM Ha5B҂m(*=zM.ɥT] |ƻuI\:+7YL#|%\JLY2z`bup7VpM^ju$A%⣎ `cVN%R%l?21² ~* _I3x X<!3JFZ4̜o^Z ˽eHkGxЈGzs ؜lV>Qfc9A_^|a8wZP"Fۢ%;/Dcs\w6l(|5ck|BeOMU>hSiq}i"E4^J0]+fDznKU#x:f1i21ۗ.Qc3Q4UR*x;e.յwPz:X(O& 062/9Kp«sl$y3J>B<44od:eAWa \8aō px"!p.$#i\" Fm{]Mk Lnٵ_ݎTe]牯OȚ:t1n<r7t~?1Dxrk}XLGzV&W/V}peǵlC[W*x,)CֲNHV.sǏwe"RX̱&fnS_mՅV őمOX bd &:=3vU~@a@x \a C7u7{dt9na mk-䶄{P ҹg)Iz4|$]jLP # 78+z!kX)dnEJI 9tl]ӸH5Lq-qI4O:Kō>f3xD<\}2G[ɯ+2!׹X0((Xr@d6&ўXQy]'?}iit( s" .{(:Q%IЙPuG'fa A7$Hv}:qw]a檲9mZD珔 $k'fj;ȨsL|;S*Eꢓ>Biqw:VgmiidRov)"-x,? r%fq9ܡ=zZLՀrFP .os"Ӎ!r+a +,0i` < tpchCv \FJ/E#iDhQʁ ^K2KygnhhߒM(ڋcC/hd.#_]I|#n^+![~F)By4 샀,8.oX__ '( 6&mAԷQ, `j43d S$qdjyA ?Pcgt:rpf^iE kOH$غ@=wH"άwrO k{]6FI:lH7BM=̀)fh. @J1^uVxm*>k֌g7bSKZfe:f7-hIw}&!/k\أ,gťM"rs,-o՚RA<WF7_,¡(3ZMަZ%aDzs.NOqc yoСˠiNqbiu3ԏ$tB4CA*BOI71xgfd,^"1w*=VC}`,JDRiɰVh_" X H/ir ` J_Ú2M<2|ln>P|-@+T~he#`JuO–":BBꍱKNYX&=_d2L4WyəU|K:i؂V%Pɕ.>EQTe )4܄q@eOEk:F-dԡ1t& 8g9c]gA1fYr6;6gCSt[P*]̏f{lƉjv:nV]S@>ܙl@ r\O? ^R1t^Vx/;-4k!K?*<T)iYol߿vݽ0y3CQ-I RP7=/-?}~8xj .o$Ƅ:|t)>S'Fa~뚞!Hڻ譶XvC8?DRFm{IxO +U L4wL ~[Z=\ow}5bm?E[C|kMm&)`a _^HU` f6ZE*uefKѯ,reHdfMeڏy|/l :TUDݭُ\.H:heAGQm_ఒ'\ '/ p1ߔMtU'zd nRF~:3؊s50Mulׇxu)"UÞF$c'Q}i#|_E+`j}#*'&2mI6t?ݵFXtl=`NsEzfŪ'K 2̠ 9-3M 'dU{{a;_2#3eW| #Cy Ti Ãg:ԕIh 2PpEGmf_G 7S-Ugy'-,;}6vÈND+ ]7M5ݣ"OAƧY$pp`x9J^B^sܣkѠ'.~Ë" 8Zq)M ;fFE׏+L 9>ĿYkr \S ~63Ӳs1Z&p&w!b# ` &Pi4kk hG;01/£2TM\ZBK v ~~{fJ@OXCM"NBP;|ZYu2.todTMؿp uMݑwu`\Y6Cՙ~6XS%=}3Pn6HɭR9gl| Å52@tS["us'f~lqg#pGn!-ik뻕}-0pI-W$H.e`T:uɃ|:D\~9IMٗdUuz OVݻoxZe[w'#Z&4?RJ|U;snʣ; 0~}?P.=#RcBI=%pzve8I3Ѣ.p 1:ȝ>,ul䰜Mˊ; wt!*ɣ;4g fHmpTNӃR0XaK!܍`@|y]&ӌT]"Yt}{fOaW4zf&fo&;>bDXi?*UP9Y:x@48„>r,"@WE3 #pCi2TGR$99j<y6[]FI177*<}|+|르(ɬYME`4} |* 1 a?R"L0$HcR qS[moM%'.vdB֛z u"(E`uɝ}h0N-v j.F9yfFVD Me4!9خx$>}iӀa@ 3GfE[H}iլסh/Yq: r}krk`bI덴|uĂI G.;gtY3Jjي :OQŒs)y=XAG/tB{Xmœ{Q4>?; eӵmJg箾մڶCy*o$(?HA$e9F 5Ǐk32zuTD$ :jɌBV`Yq-q wƃrQ`F EKˈP6"Rd:슜/>_\[{$ܟ-q4QK Q#χӊƶ(uCgtjb\xd4K_V+Zn o6S+u59hDzA`d*)+"[3>NoQt>§gaW3g /r~ҙzgrpo7/֊Gmie@ڛ+uKC"iPI{"gx'P1CTkV3f dH-t|Z}A/SX0Vi$/g{Z9c4z9 >M:: ?= ?)#p5$|+}8[TOYKE}}ش,Wy;4.vI[|zxl@p9d$p}eB*xrx3= ¾yidB۱0FOmu čdͬ*qbT >*Y}gTg$mdi }@B?784m"{ם2;O[BYt/߬McDem!)Ϗ#)mUu?c9iA.+yV?uk 2.Qcu2[ç G[ԼVp'7ڙ!NI,-Sېm{ m$>}.OX1d!>D-i:d Kgu4_C~w)!&fss h~~ 8U[?|^Ʌ4B&Kk/9d1= KxgNˑ"tj͖Q!;倱LlOI쉠~0|0Sϰmd2;[{666_{J!:tլC94m16Eڒ?ȫ'KDLrw5/]3pڤ;0_23)/[Tp1~xA$aԧ ˮD +1#eA0Z']/mAdbM? 4zd/3 !/\WTd:k)h+AQD?9{n7j5~W#z$AfY9-'ma 8!Sf(r'5f;z,{_apptU-O|'s)C ounVrAEv%-Uѡځ(9~;UAdIћUM/ G-UY7|󐧄n d2av#v+bm pIdUv?(͞%Dfaxۍ N\qubd#n _R|-ɟM͐1N#J<,(Jhy߉v*0᥶bk=0J?ah;`/PeM%r=t2iO{Y@a殍%h]D,;r=ߣ*?u#WDg>eR}t,\ Dfz^aZ>R5SNy1G||k!S[ A1Iq0yP$|ۊ|[bf<# Krjʗ&T(x_/Z:ޜ'Ԛv5'H]!`Gwri5-S߄ᢼCO[.]\ŰUYcڗWa^LOȞeR1@P 1 ?yDf&M6%HD9Ӵ QXH&i,O#lǓg endstream endobj 312 0 obj << /Length1 1630 /Length2 17190 /Length3 0 /Length 18035 /Filter /FlateDecode >> stream xڬctf]&vT̊mv*m۶m۶mV}8_c5q5&%W0e,jkD@G 5hk-k!Mhl +g!%r06p26p2 RBEQ?%~毧 _kG%cc1 $'!!+U;XY m)&6FHK`p364ffhl`g`m`0u0q'[? +!;ۿum  ;O'3b;UlMZ:Sҿtaj mNnNe 02w2p/pv41 hƦFVƎabӝTo`gg/oY̝L`4t?"acb `?t.j?3C7 #[+w OY[!w,@ -_9_.}ТVV;w4Ece16r?yWk5p2ӿ[h(jfl$odh01۳UlmrhNX21_ԐPPQ,'ewjdlAA[7'-+;#&俀,c`[7=ÿt ?d`cw_Vͽ!ڲ!WEjFS-fV/p]Ira_moj.GGM0]4Wҹ$h/yOu71e_>YQO (ϛE0MVzգIE&J?b|?4g;ÔXNF ڂ ӗgᡞ;C\XhR.LsD'w}/76ʥjWegB]T+&oz_Rס!14B3ʒu1Ǎbą,_Ȫ⃋!Uّ4T#yfؘpHEx"ku; xS.iyAi]#5,B.!˘cq@1˧,*!Rbk\HްCŷ 9$rHt[zSEXgN5ĻJycds}4/> 56hEjVf &gD'rgo1\TC",bjQ$ǀ~[IVC:4#LEXZڄzQIpm$#;rqXͩB'>"X rmLԘ+ҶkHۜqH3+e9jX <ۥ$[l,0ak,M%ES%fD\>+^_$%\bdRV稊h/$$hxTGF|*TS<HK/({_(Wv9^6UنQy/J>vÔςR{o/OĆ xLV'L:XH8~,g5DsQRa!7UWRf̈dSwzaf[?pKV|ʿd7KU#ƿ; K^-d@;A;z5PGB1u.bSro*,iJLo[*F6VO7W&)`J^G&tsztPp b2 'O/A 1h}4"ù8.k}pwύ^EA$!N$C9 6n,390L?qzy Ti2}꽀\x)Oi4bv4=!p;Jѻ|z&±ΪxK7˟a^V24ʦOݰ`!LR|'E=s'RsՇ^V\ iS{l6bѰ uSO*T&.B, m~=}}oëHdlb'hz? ` +}c>v/n'|o5y5 ca++M6>]gĂ{x2%IE}t.t.Zz{  ifE7'3m5zр;W k_E5vk&)UHy{wPǭ"/Qk2ܙ7j+O N{RHX܊SD2T'nt=AI '),ҭu+ۺא/ǯ+2i8?A>UHyW+ŋoP Li^)=@^vjˇ@1[%H O+H0ޡ滣J8Ux$/\f5eC H]Ue҂d), &j}%_q %4$d5 dԲmA&rm(mWi"pSY1okJ DDbJ-{BK'8[[3gdf2_# 1tx| L~ {G1%8BFlgӣB QuzV1Rs 2[Xa6qZN=d7zI|)K\Z^1 am0什~g[3/1eO @Q~G5ң4TZOa $.h7ϙK1ڗtw >.Yd&w[c|Ye֙ )|n\o^ |(#@/澸?'EKDX]{Z ܠ@ G틢'Bd ;W[pA{dZdQ i<[?9ՁQm(/l똮}zjB4odEH8*aB. |%Fu Iwp52DI6z:0Z䄍]^3s?>Hf^%R5˄P:_|gIڣ9pEa O6ֲ32A` yz~ :Pyc5eƊ$ŁLs?O@&BTTVP,֓јsA=OMbiU(Qԭl87:4"045vM"Պ˸vqj @&l5|mI@Aw5ܧ໼MBNڗLA26FO2X-w %z&IL{'kVo]C5 8O?%pIN,nqzB-sh-n\ʎ#OYk{ȉX0*ύns렲Û_U0*]q:ם{#M}DHг47VVI(Pd"C0iv}QN/s~m^CaI6Efb6\ @&LH5W[7l@l#Q r%Kۢ͝J=7 pz;4b嶘[5rSL邇cI1q`O{5Bso%\#`61}tf /6}Ajs\]#zi=E=<>˶VR*\KWpr,Du~yޤlQY> 'ZwMPK!~t7A (2%}:<_1bNy܂Jmuu!HYV bl8!>X8- k0'Z~o$HEKi3i`&.jMs?!%*zeή`C'ihK@!\)vdj=uQKgR4ːL/Ǻnfܣ4#!NZx]yw)L}_BLÏK/jEy!OψM 8.kmgZb=Ēȑ#Sq-vxCh)}` 7f*g ɲ*SE}$sPW@-XXGDF'w6^=dp{14B PS}aI Hi?#2i~f:[wy/=/#~ Kb /]qH$Bd'KBYK#"ѱrh0ׯ35z3 YYve8 R g1~!4FSv z!Ge*[7]DI(@ng}U+ɘ/~YnI)[2_W#I h6S='Q[|Z薦 IRъ͕]4@md )X)n4v1wU]L|$UQR5~ Ju97)a0Iq;(IxjbmRPv SZ?=A^'EXu]K,3CjcdsphNï+>R,R >0׽pY!9&1Vq.VBP[`q6{0_͂heJ| 7 KQPOoZ|&ol 4|Ӛbbct[p&p)Gɿ\6|Jwg\beIn~lbG&tWj"q9E:71D]hoK(PiW:ئ^fw@qG@5~*慐JG:3GMᗘ3Yu"K])󝅿a*TS>5s,Ǻ]I/%uf/PJq /cz)ް9a $YjVy dq ni_d[3UC97"x Av/: ];mQ :?v%9τa5ڢXADX2^dcc3R32 jFv.)J&$A?5Lbúi`"1X;XM:%L6;/ lBnTs:*х/jW9E}d ()38Zh T yL 'xˑ&TN%2:|:kceu62&.Ǽt}^i:{|`)s^k`9$ۡo|'luV#$];U$e/xx,Sք{U_ hl߁l,#GDk9s6J /Dw o4.p5@PËJ{;WDO@pY&qKBYI8P!.5|I$oG|<,vJIV)$~?n!Z^Lې!7FZT_wK&HinWp/7Mz.^Wfy!R@RSISzmbxLZf MVѭ. Fy{sC*˃g ݪA8˅HTC.jV r oYdQ. dvɥB9oi71{aGZw`vtl%qls|\?+i FǨd;}lRo6?-Cb#Yw6djHKkC@V)܃j;$ ۮ ow2 IN2dYt #j4F\uA IH8< ט+?d` s(Ϯɍ)d6-Ik&_ҸQ1bV܆P̊ 6jj`iKc`J]{svZvv:ݏ2fpsV;$EUT4*r7H{L|r)wk4KP:Xػ>^3 0,f4ɋvD?ʽ+ .z8"KWZ2vw_4DGW7nxc730<(|)OxԘ-TJW`cV|φRNGa~.5J@IAu^7x6FM9'qݤΨ]3EIT]R9=H I2h< \}g<; Or?Ĕ:?W{xx8Y{,ϫ;-7KPVjY T%s<.k_=b')6[c1 ;YVB(R6~e "JpJ-^l* 4>˔wZݚ٭C&>A#Ni[;&ᮊ6ذcsXF"\_ O,bkq[+'|[TɲZCs'a櫷. }oΊ4rJXFQYkQRDRru]4?ޤjkȒFCtjNE''  m\n <zX/OWϒ+ RclH~=Em11!z, XOG @QP'`]']q{}{şT-nq@ryo LB$߾gl2CJWz1Νy_~P  ˩ gVմ藎~bgSY-/ԃy݄RR^d_ ߶#CS[nj=stM/FkX`D5V@^ytZµS3Hk )(A>DA7&]W!K,l [Sui5n[e!_aꊣ!f]alJjre5|b>[ie(V:B2G]AV)ǵjip|@Zr?Wxσ8O~Ms-K0uzƇv4 _!S- XsnSV2ڰfG&Zd E8>CW꿱qwtJr7y>u?A] G!rr熶W;s!\ugdyvQ}F<<[EREa|~C<a1޲ىFMQ/NYMCI3w1DG pg绹bLW ogө#u~ &^-WYkEM\2oS{A^p&ݕh&xs鱈Eiz5uc]("jmw`6}'qtNbTxŃ[eui!@ Î?]k᝚]H0^5Vn 16(GS"|ULK .'1;5 5JiܶU8۲%Z99wL OЏe6^VBKČrD.jGk#[oޥ\/o]#Qco<}[\xdMkS*Akr4 g5xY9ܦMWQZnNlET1Bn pU7s0lQ1R`Hj7g8oB>nVq NjM ncO HdM{(.q,`t6u`s L/2|-ٳi@ަ({̾83r7llТ|H-9 r] "`T؆cg D՘Z'ӓ08.1n[kVwXE h寔;UBButŸ-EtUܸ\OCF阯Եm>U5PGe῍ɣlQWW>!9"±_*{iWpDBPbMJ# Dy؆6hV@Di^dqW bVh Ш Gz6}OgGIcȤ_0 h +JMO]!/q4 ׎5krn˳rC5]t Kq2>0YuLPGi#& v;EBCu6d߼^}f®rLC{(WXPK)O> ^w֩O2Kx YJMp3o3̣GL\ Ğns_7ɷ1G tU>7`߄) R":Γd¯݀7Y-fc5x m;ڱ(ښ- ,|=-Ggs+riNDczyh[q}H&>Iz?+jP WE5,!tko4 yX*؁g(%;=`]0Hr[yK&3̄'/ >\uSevĩm]- +ZdkC2W1jE{ !6s`+BɐHWEf{ZS05p 1 . e5OJv#*l2#)z>\ۑt{5a:V(΂ 'i=L[9I21w Rz+ŒU%q;/o!_J~d~."e> ,x7j6v ȳx}1]nÇ5㊛_ʶ]ū.JP<΄ɓ{@tdL_ÊAVt~8ف1)AEg Q~7X@w*~;Ro>zu϶xQJ !sO,4i600ӥ 'qoN:q, ?.z)냡hyZ׀{Ѵ#7U%1}ʹ64$]Lˆ$8h;\ELA#)GQzໆ~٣覼K%qr~&r]Le'sW3ꐤT;cmm&""̗+3!f#z2VJ##c,5R;\qoBi_% /b>&u10^4Llny`67v۷|y_et;-0Z@AgɷSNWi-J} 8ќ6osnkUS8?&2+dKG`Ӆ'phiA;L'5~7?oFQ7C8 AqBEл|55<_JGk)Lq2mX<"O"{ƈȧ7sbRRI z7d֧m|){aCBz3ۛ ,w j.s8|+ȭe!{e&:%[wm+*hK/bpU=蝿. ' ,9}Vd?g=k?{fKhv픣m{!sOH- ,yL`#=;ޑ݂ T!e9ITQOq3C3K;Qb7RY<& ʵ\7; YtAq^?g$Zݪ ?TMI)&c3+o,]gТ{f?Ą9 5 775,a?yȌGN\;`[ `}Xcŏ]#*m4MV !Wu͔w&a&IT~2pf^HN4LH{ji%D/ӡ ?m&E+FU cI)|ͱ7PhH1FdgzZ˂LK"P> l/ԡQz =B}d:|xCLyqMV@Y٦mVA 6ng %2K5Us2ii74Ky7=Wᚥ  J0Nx;R]zZ%ل:LC4 *]n R2 OW=~[;H˶aeh2l)~ \zf0Wc#>7^A;0q4\3M/`yXLuߴL$v|t4(lo-l;؞)kk֯n[p'.aĞ\%)SDKв1N` /Ŀ#E=>q`v/#ŊmDu{\kH r#WX73"*gR P6؏9Qlɵ^("nY3:z 8ހ·6 ?oƈj@z9BÎjwRfWJvW)2~4D`Ee֒PDqgER >hYd[#AӖ[YijC^T+$Q2Td@cgErtǢ_HtLkRjE bCW/zӰCW/.1pl7q:'M x:nVsZ;8XY!¶4م%6{:F݈û)龍i }PIdP._#Nnf^YIeNx9@ Fxw,luB)]Hh%_@=bn,4xڲ01KIiuwl5jVHW,-wnSsz"ùnLs\E3Ge"j乑@C/h8\ Zz@x iђUt'et0ű[Ź_šɌR+KG3ZJ6^^Yq^;/>ѕK;pCB 1nacb= l&nY9_YDe~X[MزgL[f &2ey4O 0O_7 f `%h|K>YINȓUDs*)"vmLBf4*?ITW{"epU˹(Z]+@DQ^ֲ؇\IFV!?lbps;& Y=#Pk]Ig`gD>Z) -ϝ dPu疳T8ydQ`xǃj]؊,/o8 Sd*bХoL_= ãZMZpJ@ד0zI +h~zTJ:՛ѦI/w2Ç:p98f/ ;1=ZE2P7Y 5ZwT]^]Yܵ\{r~R29IKEU.vˣY4VkLAؐE86xvP(mi_7K[l krV jU()r ϜqH| ;<8|؇+n9Os@Ǹ#3U6p(VD'wTب&Eedh?7. H5R d9!:Chy e)^ к5ps"qR {Ԓ;RYU͠9l_Y]U]4`l0leC1rgziqho~U` _a<ƾ%}X}\ˀxٵ@hBXľmTVs_"R}cU}pSj l$az;4[K8BoWjm7" `%]i344}B°kêZQ\Ce@ϱc8m5XY &ylnfV_b)]E{rF᧤Z049@ YDQ6KVxB"7xt3LT:<,=ZjyP5܈Qy1`G<7U}La@Nwn=yh3. "gD DHAK¦fPdq2/u8tRҰO9+eƇ|LG.l{]ZtXolEܩWPqa~r \ψCߪ\W `A5검 p1Z3u3)xQ +ݜSއ&^Zc)z6N(VV{* ,mό]|O$ȕASZy,@qRB?,kMp5nXZ֘ g7%0ԔIdRJC;iLa,tݣ ᦔ梃*Ĵ6L4Ãklmos<[jp*rryw;29iYQe,xwԵO`TPX{rjePӽBܳ}IOefV[ Ix"tFt@mLotiXN<)ٱȇN (ՖVL6oJEOYdgVs G -NY&_?!4?ʲ~Lp<5ӈ8څ*StͷJ<ՈjOs,70"dl,J\Է br OZeIjgSy3yx^$; .ͅ[%YElxfkEq`Qoj6 '"\QC v7S\AtRXVkm{l*<1|!puL^8& 8G"M5)ؼP0◵y%d[5E(=wv`I)Y~EB-qM\;ISGN[X9}֖\R~e"̸ۣ5oEA"iCPӟRk:9Q1wbtBn~ Ow$_L8V Tpdx8ހ.-sd*.f~2%kH*`Q[ .92 H);boLJ'c? Αx&b4*&BC(qؓH$5,x]퇭nIwkي-HmYdJЭD<ӎHP" K$:k]t LQDLJ 綗thV7@ }Uԅ&m2]s5t!^p MR'J -5E¦evQp!ZY| \KתKl1Zzc!BzRʑ2gݿak͓Vfb8U0PqЁe2|$?шW4yo*!{r"xK[>te]֝>P\dJGeaa]=tea;auڬ#Fא#)~J VZ!^dnZX)[oDAQf,t/d1}}&6| /"?ta4)=EY]pD endstream endobj 314 0 obj << /Length1 1644 /Length2 11616 /Length3 0 /Length 12471 /Filter /FlateDecode >> stream xڭweX\%""šwww-Ipw/Z)Ŋw+)R{f^[>;OTԙ̡ i(ę3uqR)A@.W; # B$ ~6 2PP{G3VSM,L=yt[Bԯ_\AP{;Q8[`[@BYEWNI@+ A@@[- 6A@t #_b[+p_@f #hvrz;,8C`^wް{^TNNf`{gkTIlt 7͡f.K{yE`7)`vz~%wb_0A@Gs[++Wz?ng`g'3 kL3ؖ` YX@l rAg5 9b0Y(A_ChTfA[5_{wji[[%k^ x3Ec t|v`[׿+ 3-bWi9yY shڷs-zXY Ӱ@ /1*^%OJr eR}6c6n=?i+BP\bb0󲽾9}!b"gefee{%7F#1$ug u6sqt|uZy ; eyj&l\34!?b_ҠQ_ K 0y anpl+O7҃kKӝ :#\na d1*AK;юWͪ5fTdΟ5=YJ},NF# Vm u-`O]"Xd* o1Y?Z.~r; Ea/f$֐7X;Y^9OX7F.ʤRrmԢ 3bHSՊ#F-O-6jw$S_u4$gfw **kJuA3Fd[.yW|ҺrvhHjSL'fۧ*0LuFR(k$]R\hs"&}<te`J?! (r&<ϛ 662GlVe'gtGpo' dn/8q]E4B#lbkGaoY,YmuzyRvpK[~ Oko%+r[#w]]3TPt~\xviJVd`ߐf6&s5U͈Y5v2,ƤpjR1&jٓ.Y ՛Wj@KI57e-g A(t6,.6%9j?O4dicU>thgMxK|nxuqa$6JdЋlR/)tԨQ嚬Hbdȿ\k{}}p9h"#qa[];WHlM8C@1Se L3ԙp"V@6?d#a 6U 3bpQ3Hxa)_=lRm#`)qɍO2%{ qRoE{o |A@vA{(P^l(RK`Uz&ÈBH]qj IPCΉ#kOJΕf̏A4ꆉ>Pժ^YG FQF]JNא$:ga(^`@QkyKE0>%t n]V+=V,Zl0w&p(y}ɕ|YmtP*gd +BٮGAD6}Bkʯ vabDnb[㨡q/IUq 6}j!lޕz(%x5efόt0;FJ?Z{jEkR"#[j~N%g,VSU[41sC[]۰(0"Z% &V(4Bwþ(ƒ  k}e{P3Qz Zkޱ Yxz.,EGz>8{2 9N~iuɟt!z KEBvٔ~(KØA'  MWXPN z;/E*@5i_xNJ*0Vnch?); ~;$}fp&*bI\jsA4;h,piް1s0P1}+zO`##;,VyQɇLo+!ZGSBWEch_PI]O[]zXT4*H*ZH~dLa/_8_'m &< KoOeSC@7>5n{j)CҬ84i-t3j"dVK/}؀t~%VsY7nOWɩQų[cpP_cqy[zI@Riq >vaUQ7Sվu}dӅ3YxQNT#Ɍ0,^\Ȫ'vE,X7ݿ9 AzFvxœŲ$?j|{RW }WtH%w1ø<!3: Mˎq^aI-xXI%CLê o9@1 (~[aaă -vRe\̠6 ?zsG1,;If|Eqq?Fpٌۈ(?%$JD )*C!C&)M XJ7z:Ì5N5>6z OeSxdd(b)=qt.OvǣU˒?c՗Vn c\M?x4N0ۡ֍ [XDsVU- A@l1Y5W 岁CDs X O Von%qu,+:hb4鎝#ZSvH3'J$_(2_+Ӯw1~֮Ύwi*[Szpj(!3NKZKT?;:4Xu=ێo0!*dpT?EB6ḆCTBA3L^Z=KdhWR|60n kx?Dy1{f8c}pT)-x]C~P*:tS@0{)_q8xp[ǿgu71 uvbx]@G؉ 52z]"N@d#c400 ¥_][(tSAp Џ{I̲9$-ϲim+"g=qJs:-~Lt/ ]TL$ghU)OmVQg~ $la#O]l1vتy"2@V_.ΐE;I_ԛ5)8\#t8ÏwlW6gFKүEͬq=X3_\Ȍm %in2weIbEӶ1点Lh_fB@"+N>ݢ-r0Cp7l-uLr!}^gmo?6Jˑ@Vϋ.%*TLELZ3gSUsSn]sE^`Nk{L1$&=`熠(T<rޚrٷ>i]ݞނlA^y }%5mDzGۓmr5'``_[pW-E _.E%#;1GBz;DRՄvl ]PM|Yē}&K kgZJzzmN6xH)rS@1oA ӯs˪2P qNq ݄@-HcԈ|GqCz!{xT!Yd([1&2pGUr_h8Wi wխ^%MU/Y禾~_j8 o7i0ƶhF ̘vX֭ۚ|=2&-$b{8c^vۿv2k"Rty˵h:gvV C>cʔ3[:.^ <[XԺU6p5%kDF{ل'\{OI \8eWT3"VVRx!\:Kih1Do@?4VBޤeԢ[C 6ZW2["}@+zUyo{h{mr} |=T%Y!`ݐݢhiCF$=9ÑI}7{ v=hK8ҐJdOP ].X?UgE?T\H:݂J[B -^ѰΈfdhߨ]J?,[0zbDŦ]h!u6~Hԁeks0S[pn:t]-36"y7"קRss1' ɾp11:) y!o)E1n9ºA,!~d槜2%ߡHӠ,)옶Fe;tb,ȖQwW!?4OSH58#DkێJ %^QbryqmtSmLwK1mlz8Tٴ:3_b~%ӽ9y.ҿbu$9@07"PpW1ҙ&t'4IFVmL@/񰻁!pCI1)uպfZeELsv4_l•Vȓ>kRƑXB wp@D3Z GP^`yQRrK=ɝ4B;kB}Vr_0I˞lW%i74F@' 6+i\XjIfRd[rw lig9Q 1mfbqID ]Sz滸F3q]F*)#1pē FXsVd+QwK3NjiŜOv1m"#խuQ"9IMFWO*0T]D,; xca9$^g<ޮ F-Z]Vjв\/|~=2TXԹ=e ٿ}bNL gOxk٩$A{M%& g8 | Zf3FN% ,ZpGEsY;%PVQԤVJMHs2vzR/O]N K3mdy~#RVʼ*GQlh? ,(_q,iϲtHA) #VHUw\^]̣/^ܺ@Vil}Pio՚YfGIdtyi5~;.Dfeᵈ${Z{"S8jâlK5p NU ⌐IJ´ -bm*׮y)Q=&AЫRubO"=RK7ʾIBcv0ZT>}C9W~/fZ,+אːkjJQ"DP<`Fw13KDnN׬A)LԄ&Н7L/CgIdΥ7J`B蛰rYڎ ))#_Ī3M柷jY?8صT8B)Am?uQ\cD(&]3Nn"0+-i#I* mU\Z}ItsdKe*Tb"_&Fb!߈ ߏ%FyI p`xQcss F wx 2qJ7u , 2KҷnWRk)*HQnXTV0*BL%K5'8ƩLLN :%dTg/ ~H+.NW Pco?X69OJbZN'⎿mΜ/;,gPdͥG9QRmaHU(F" f;&3Wjq>Y_Z }&d%=.>n>Bn@Ǘ9Mg#Q&zsm:q`D4[{s~+E~jYb^{bg͔cS ~ǜ^F\oS'Z5*$AR X2/&# ;`hgT/N^%}Α~+KΔ: qA_a( kf*̓&a"NWHs9_/V!ׅ!gaMes?MDbƐP e0dH~"}4#M>>ղI& Ю*@ƂΉa/6guRenQB7x3NbKӢ׊.hn$8-?bC\{~`έdwn "K^! o-xS%OK̀WX0H 1kpEv^--j($yl<ߴCT=YxٷlͤUy+,78ɲG{ 2͠ĴbJ w;: sR ϚzF -Y]W\# G]BݞO,Rq)4[$3x3 */8] iz>y-z*qi 3Ws j:?AL e,}߬$;5c{UIC-T FCOO;>[?0}nl_͝Kr+geT׀+i߻9m[([CfK8SAś> stream xڭweT\.\K tpw'[p4MMpwwwwww.|ߙ3gֹw̝{Uի)?)2[%YX_ F*֖_yU2@ R tX[|M1@ Xyyy)b6vS3&-==ÿ$\y󴇘Z>6`+7* p0L `)u lVV`ZWiLoX"  ]@`T %Y8l,,to`J ;-?t0:XY[*ơ8]eCm,ol h2W ;)loNhccVla„bWXXXY!7v l3oI,\`d/o!43H_zwCK:ZX|Z5? mo kX-rZB,\;#w?BX11^6V8&@[ne XH~ߜXXMf} V^oW,-//.Klۿ޺A H y JT `dfyƷqe_g x{I`$@Shg0 B5o 7OJMvb)UN -\T7:wh-K3ԅgAݙ>&$\je6(DK> w?)Ţ9bP O2nxvGCCqkJm{_U{xDwK7<8y{}F%?+SWZG'nGg4wGVdIbn3l>4W~zXA)%#A{o0XeSڝ|nj<$iSe\.Y@-F~%eT[QG}o"|+ u<}AqDvL J,c;Q UfR_n5f^*83}2ew 9FW{bkK\S\0鄟╯w4##+ 6%K ŚJkk'fK (y}jAn C6kM7H˱>N5/"ȇ󡊠e.-f:,JhFEQ0ib˟vfF+ꄏx ZEttgv%ۯC &,+=m$}\/\x`~<(MMbի.>kkPKs]k'&)xše.,г#Iw,:]Hq(;s~"2e3 U~\@Vu HGkJyNHhvhcX>ܻY6%Z*;~kGM~ª@8CTu TuI%j _^VR||˧~#}8 &AҗLǔi9֫G6J[q¦` 1&rrC2ayǏŤOu Qf{v/SrLpbs=3ʕkTܺ=,;οͫG+Oqv8*>*Е;$UN[_c?uw9SaO<)+&~ͰIӌ,5[8zz)g3Jcۖ,e|Pnũ+xBU "W\ s\3Һ=t\qj "1Ymʀb/Ɉbe2D!D=o\!gB`dk(wwbBV7)!g#QNW>ͣ1y[ISw`ȵ*:fd 6rt/48氬.knAɰ= ^Y.7_n< qCVm*mf7( g(x+QCf<7⤠54µn{NUm@(Laj?xƇ Hg\~xnk #*$uWۗh HO[ڢ 2[{ĴDn9~z]]hZm5"|ym;7}qK4}Jq9y6 G29bq@kú-oL~mx&ocP\^R׎M7 A$U +>i=~ ,Pn_.1ɮSd(v䠨ʟ'I`nt%4E_:i`V`xFE-ĩٍ,U_x4Ka}kc$;;A*a=T*wOrS\]y ?PfSZ{#;_x>|m3)v0 :@f{`iJV/&n(/b5ETU }Z2kgk|°TWĕ~Ky4!?zұ)TeK67(U"0GÅ_,-k#K ac;b[0@}jUFQqBC U~o)P&Ik_m+A i>|c F̀_^ϟWr L1Cя;:Xk8"X.9AمMfLXeySoCȾ+*gp'FSU`&_A9'QD"UZ*K__}X}EڐƟ"'Ő2%6}HB~=?mϻe|yX'+z`-XÝ|IF$k_%!@79E(v"sݖh2p~8?A<#<>twG b.{^ʭپ%TΛ, Л<+GHT-UI)!Ę}パWsMO!x)`w+ Y;ȹFIxVm; q$ݘLJxD]n`dVWWi?I` x Gp?+v0ۼjT8]ޫvg9ǔAS4BT+&9V!VS9/OcfZڮ\g)ZgO9ٮk`Lv'z-IĄ6 NISmt‰g" ~Qx^ɟs[=ᶆ8=an3XyL@ryr$%0h VO ]"Q>p;{*G[=rnDD%`S[haARQrGQo{Uâ ŜP`RSưcڳ<ʼnYp uǐa ;S_.@'jr uk|J" !jvؕ2EШÍY.រ =HԒ~u^Uŭ8. 3%}BWV$Z~Xv Jf֟Ew:)/ ;f /=YߏTcul;i^ Bd/C=f{Zyu:qpۓL(.HVt hnP9ӧܻ&RwAIA SGyQAiۗۗd]O3'wcQ{b\On_5٤Kkm̐}^Q0'%7弡Oq'ݸvC'B!mg E.^*Ӌ,ȥmȽr/wtȎ o-ׁǟhz AǢ7C̠Бf*~7'Oy/jb2ˌsŷҬ p"S\хבxul>8F鷘ीg, g\A ?͗tL-AQ@Q !^'̛&8QWt/)9S64ia0oMeF"ʢ133|JH>w>{?H%꣟=Y%пhٜOr7.7ȓ}k=Mz1U(aO̻g8UD9 `~6)%+=|]<5raz&|^~~my&b3/;Jy 2;Z>>6b(e"Ita)ژ-&ce4~NYӗ6BzzZYxGxᙚk'ӽ2&uGf+B NI& e#d O!Pq?QO/?H$uVQxyW<&C/>dr>=`N-7HtOB7K?K}WM+wW6ZI:2|!F k:ki[C9ftz2o. =KǙҞ>z폋W<,jc؍Kzpgvc8xPz9/!^$P&Ie@4Dsrn.QGh$Y G$8R<) f?_ RbIyS45?Y^>1Uc Wآ$[ &KY4 $cQf:i.QO'q2$Շ0B ]>.EFN^d!cKbZ#l~giKo&cHF231mbf~bd5.*]۠{QTk68 XZZֆ!nu7\'< 7{*B;+S6.ʡ8pgenߵ7nS_>W^Rplli]ׯw}jlݖO-y _ b̫DAMZJ C-+T`kv4 u\vѤO|D(G='|ھjW_z2h}13QaV@zUtĽ{\庐AJj.WlvݖyX}ad=7-w0&Ri΀#,8ʲ8'X XC{5ȧzڈҫ|wИy="mpre(|0 Jć]ͺ>J#O.H ?kȹ B$qҺ#K~TYch`Oso9GَIU\͎YEJrm([[\WyGgNwũVT8IEXN^qYA䷈CF繭ZZ؃x/i/P?"1ވBOVI?@|VG\Rz:N@zJq6yPjq8:Y|ʑܾ8G@&?%o _7í0Z8ECidoBk,o|eqdž5.}31mZFFJBC"+/};<aT_<QSTeԊ,v )Q {/|^=H*hkEyw;lơ.Oi,:)ČN!~m^\w7wYaK\ ;X_8oGja,ї&Ҳ;jy@,xB<$U T"`3Dhz5: v!*G:RZл^9/~aNsYf) c)Bn{olЅmBF0zJ-m?v=uzh<춓Yo&M3c{= {$R N'J=%jSxCOK$LR'9@M_~:28#VLasјԻ5Z7:/ǪAri l,S( S8hV>- $ɳ/ y͍d!R_SmC1CӲH4S *0R"?\͑9Yjp!˶^i?4b@4EY|XuTIQ\,ꗌRnQ"1FI;I[[ՅzPTF0sT7!v0ih Mg:R5G4dp.r&(fs4N#|л0*hmlR׳9c7;:-!҆lZ>)?J [厤%́RBKR9^ D ECVNE+̴ Sˇ?Pk3 & 86Kq T\XNJ> l4.6K =# [C.W!M\^g#Ff uDC Cvskr~KOTf;Ό48FWI8τAFp6Z~Q5B Y R<TИ&?^CGk ^Q/mF j@!g_3ջ 9V-qg^uɜ'S:t˒pr~M"1OjZ3G֌Pal,]]H:.%`!@FFkv=Urb<;RS9،ר˓VyTݑx覊U3H>BGc|2݆],YPnI"Mۋ<Vf[e@)#W Ąp%_S= p?[l\W[vHy-v6 MHV0:/ RNt_jWxJ5#+:q fd L#Pb3BM潾$14s>E\'t)v'?nesթ-#:ӚIsWqk>mÅI*"-> @,HOIlшSn ְ^' [bq(#"29"W>#)@xw!$ cЄ1ou-z_~OP;Z P&tQ< *B4Y;%Oq, TT~''x`xoVIRSz>C>+^QL,.0幦%a/FnΦ{!csG@ܫYT\gODbWɤesZsDtS.w,0U$(9ϮWq9NB>l=,({H0vʣ2e}TX0M{NR=^n@RrWXSlNC}3yYXcC66-PWů*.+=-u&m[$/d]uPV4>bf8rNꇞegQlb#GvtB gG=- =l6MXZ۱'42R!"c̥LL 쎡bBuqsl8 (ao)7%ID\r#%ߟ]Vʵ`يRwe1R,` ~AA tCs%J&;er< Yw'dTg=-.d$Qq}푺]jkwM'6m.[2)rgKʃ}a¥"e.]+)p}߰d7N[~4RT4 ^TeXao93 .6RGSp4g_`\ޤnUU`i^!im_ZP<^`s >O]iige\6 {&R^ Eg ҹ#=FʜO Ʃ/똄Rb!9iH_0uX SXDJKDؓ[(>XDη]_3fZȜ'X)dVd~A(A>zNW̺`>1ip^EbI_mCRYdk>c0%M4dv',Tuov <$^]AUsg2`O^6u3/`ɭ6Dw= Ⱦ]@iXt=]>Xi,/("KHLm %I!xFQeG5@z)%s+ie6F Xڎ{ɄmKg:$1b2l!Z6=2\Y.J2QO\H&;B1r=b/EHd ;Uĺa EU3P]V϶?cWدҵ{K <m?RPh}Qz_;څ~Aa(D)07D3Esy ;1moVo+7H@1-crԫ!wj]bsuW_r0%&aH$PBW?=IoFb-W5BYA$!p*fKʊ$=+wH*۴O6g7Xd.\[O/I9_X=nJ}yr`!xA+gg)HfNY\)x06I&pWl?ɮcE趒M˝ ָfGz]8=e<}Bq AAkͰ9f3?Ƅ7GЮ4& 3P0t;,J[乯NڬQP78=c˷xٴ;NHq^'-a{W>3,$3E1 2u9Ж 0`z4$P)~a´$қ+˂LˡtUBݷRs}?yV*D~g]#cgA^*Nc6y %6Ong3FࡋG=E߻ɫ]\~DPyMI(j"ց-Ӈ}mkbZA:kaJRiUI[9S6a#+O/[o9WÊgxg~~%6 /ʾ`{]=A@kblF H_I HqޙN_j[$ڶb ~GMjRQHOOw,*:.*)֌ [>x? 7ǧH+fT$3x@K}#+Tڗ,wZxBW9ЈBdA?YH)j =g(GPx#'\rZ- R[xZKȌ$zu +,1\6(SijȔ6JyO"dIw-P٭S |Gi2*NjZM%|j| *tSetϊF _3?|M0,#O`I^1LY,JBXYtn,A!ߕs, k~oem * 6̕d[FɄlUzd݊ϼnI+Yc?Y1^xIBB( 7 7!P:; szPޛEmUUx2Ճ?9fNOYH?(LؖMeM,My_g%u%ipܤK{ڒ*a(8M3 NvXUQOLk%kT F[_~a}c:?I\BY~" Ip"7HPޕiO͇}qo8- *tj~Sfw4=^B65F,MPJpq(]m*cC`/FpKPf*=HbVA6共 MHFC1t#T$j/KXQW^nr%b6?!8}}IQ/3QwW^EdGF?-Ğ1f!"^$-IgI`YzE,Z =wN=͋c?6tI; ;.M7;%ZCNk+Qi!׾7Ҹe)!K:inQٴ !t;}1$v`)[ SQt\W$(.7J Itf)ƪ&¥O#^6  xmvh endstream endobj 334 0 obj << /Producer (pdfTeX-1.40.19) /Subject (GAP Manual) /Author (The GAP Group) /Creator (TeX) /CreationDate (D:20200128161210Z) /ModDate (D:20200128161210Z) /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) kpathsea version 6.3.0) >> endobj 271 0 obj << /Type /ObjStm /N 98 /First 903 /Length 4637 /Filter /FlateDecode >> stream x\YsȖ~ׯ) ȉ#R{HvB(ۺ $T EcB@*1r]_4_c|fGI2il> MC>=%X%t2B ݥ17^ô?*W"Y^͊ !"poz!ȖY]hnJȗ@XM*IʖohYVesEF| {̿eU}G?_#&C"K5"/)/[7xDs򂜐SyI^7䌜yO> rI$%i=sy1HAfd$"\W;rw˖$'$B,Ȓ,eFJRj"=L.l~]Ԥѣξ:aJ iHsWeidM+ʾojW/QbI2(̳[DΕQ9wro,!EbN]VC9;:ϧ"V6-3Oq߬ ٤(kcow~8;=oɢ SvIgX"a8ie0za/fTߝ?|q/qY+QUByUlˮx[T*x}٬.\Ca1 TXfRNtz \,݉~[ -.'M-}lgQଆFT޾8e.i5_\x5 Kz>H:PZ/^P P"]\SduS;շ'ϯ>Y_:;8Q$w0bOR# d !keFl~=NUӫ|%I?#~qO="I |Ұ,}Qt3Od404 ڜ:8p^ۏ_8zޕykg/1h;%Ъ7dً#ȡqSAbS^EvQ_zd|؃;@Z|I:,AP1#{rV-X<`k+?G lo4 Dj^FCm6T?Bh J|6 !G*뉇+>A}Ox*~?Bƴo\ 3 xY_7'!f:ӿ+x c>t9ͫH|Yj/X|]dͦm҇/J=̓.}Ri(oz1E[jw:Cr(NqO>x1sg }CAsOz#.|<ܗ?\HOXzw?7c#zjH_ .WT_wVlIiFpDfghPQq:8Ѝ`$Vj[7?To0ȟC-Px~=OQPKh-c3FWަx4۬\c;uM>>MƘ0GZb`rW{ShgiXӈslF6rRy0Sl~7ͨ7?_fdfw릀^ lB_+8nW l"59W7Cjޭ-Lܩ%UKF[y1xBLxіHQ%:V xu؋b {aϷb{؋1y=ߊ=aǰl+=Þuسس| {a&7ڴCCm!Q&-Sl,񫄁I H?4#~uEՆנk5ٶnӚD;^/zL'm8-&=?jj?85@eGwA}[#R\m[RbmQokT/YE'2X8uIfҋ_ /QQA$q#E +F"/ikwl1N*CN;{0n> {֍roAu W1abj}-*tPeWIu4dvg?g?s_3/q&g^Iԯ`KțԖb縼[fdO8SfW/xG;6K۲ʛE@<4kx**]*׫z?V{C7$ _?@$h+'-6|yScn#ZVV/,hF&G tYr*FM}ȍ4}L*_a,o&/}~`ެ;TE _P ޜe0+TŃ7fmkӣJA1T<2ϚZKM7,4_Pe KH+irZuGh+RējnX>Jewiݚ_+kwmHoB/aH3tvtCu`<ݦi1u(+W/d[Y^*64wYݤ˹g7 7:uuwӨ\noJdQׅvNVeq? VUV 7Qd*WJ9\@V=fEH*ѩic Y TQݲfMU.6Ht]k׭\^UZaݨTYg󒉛X3gnžtpiq",'1iEVGzniϼ^#y^wӁ*ЦYEoA dò79Hޖ ExI endstream endobj 335 0 obj << /Type /XRef /Index [0 336] /Size 336 /W [1 3 1] /Root 333 0 R /Info 334 0 R /ID [<401D1FB8428174C88CDDBEBA6112C39E> <401D1FB8428174C88CDDBEBA6112C39E>] /Length 786 /Filter /FlateDecode >> stream x;OVAg| \D xᮀ@,2!he21!joc6Cy'Ξݝ}瘙KRfK3nR=L$UTHA A A (e AȂmT ͟=.@?8Yp_p u `k ˨ 4Ի7^:Ah-`#08!"e KNpt3 z>bP q}$uO97%\Rer_JcyqpSOS48[7J"˔%OuW~k$`=5`,`U~!. ^0q{(V$:sρ+GD*SRmU,<Y*0z=jJmPϊqv :;hDۭʏ& ^?pNz&6N> sbАfnʥPoDۃ6вa\8'才4tĴLUӡ"Qp;K,qtilF,cLBL=@SK2P+4C?Ƙu{