/////////////////////////////////////////////////////////////////////
// Magma Package for working with families of Galois groups over Q //
//           v1.0 by Tim Dokchitser, July 2021                     //
// see https://people.maths.bris.ac.uk/~matyd/InvGal/              //
/////////////////////////////////////////////////////////////////////

declare type GalFamily;

declare verbose Qt,5;

declare attributes GalFamily:    // n-parameter regular family over Q(a,b,...)
  Glabel,  // Label(G), e.g. "C3", 
  Flabel,  // "Family" or "filename" label, provided on construction, e.g. "a" or "sm4t1r"
  ref,     // reference in an expanded text form from where the family comes from
  n,       // number of parameters
  v,       // variables names for R : a,b,c,...
  R,       // base ring R<a,b,c,...> of parameters
  C,       // actual family: as a sequence of irreducible factors (components) of the defining polynomial
  degrees, // max degree of coefficients of F in each of the variables a,b,...
  G,       // generic Galois group as a permutation group on roots
  v0,      // values [a1,...,an] at which G has been computed
  D,       // and the corresponding GaloisData
  A,       // Automorphisms if computed 
  smallid, // small identification [n,i] of G, with i=0 if not identifiable
  trid,    // transitive identification [d,j] of G, with j=0 if not transitive
  K,       // subfields [<subgp(G),definingpoly,reduce_info>,...]
  regularcertificate,   // values [va,vb] such that the corresponding Galois extensions are disjoint, with the right Galois group
  // saved auxiliary data
  fm,      // monic polynomial defnining F, fv0 at v0 is the polynomial whose Galois group is G
  f,       // &*C, defining polynomial
  _prints  // string for printing F   
;


/////////////////////////
//  General functions  //
/////////////////////////


NonIdentifiableOrders:={512,1024,1152,1536,1920};

Z:=Integers();
Q:=Rationals();

Left:=func<s,n|S[[1..Min(#S,n)]] where S is Sprint(s)>;
Right:=func<s,n|S[[Max(1,#S-n+1)..#S]] where S is Sprint(s)>;
function Count(S,x)                           // Count elements equal to x in S
  if Type(S) in [MonStgElt,ModTupRngElt] then S:=Eltseq(S); end if;
  return #[z: z in S | z eq x];
end function;
DelCRs:=func<s|&cat([x: x in Eltseq(Sprint(s)) | x ne "\n"])>; // delete \n's
DelSpaces:=func<s|&cat([x: x in Eltseq(Sprint(s)) | (x ne " ") and (x ne "\n")])>;
RightCosetRepresentatives:=func<G,H|DoubleCosetRepresentatives(G,H,sub<G|>)>;
PR:=PolynomialRing;
RFF:=RationalFunctionField;

Cycle:=func<n,c|
  Sym(n)![p eq 0 select i else (p eq #c select c[1] else c[p+1])
    where p is Position(c,i): i in [1..n]]
>;

function Last(v)
  if Type(v) in [SeqEnum,List,SetIndx,Tup] then return v[#v]; end if;
  if HasSignature("Eltseq",[Type(v)]) then 
    w:=Eltseq(v); return w[#w]; 
  end if;
  error "Last: unrecognised type";
end function;

function ReplaceStringFunc(s,fs,ts)
  if Type(s) ne MonStgElt then s:=Sprint(s); end if;
  if Type(fs) eq SeqEnum then
    for i:=1 to #fs do
      s:=ReplaceStringFunc(s,fs[i],ts[i]);
    end for;
    return s;
  end if;
  return SubstituteString(s,fs,ts);
end function;

procedure ReplaceString(~s,fs,ts)
  s:=ReplaceStringFunc(s,fs,ts);
end procedure;

function DelSymbols(s,delsymb) 
  if Type(s) ne MonStgElt then s:=Sprint(s); end if;
  if Type(delsymb) eq MonStgElt then delsymb:=Eltseq(delsymb); end if;  
  s:=[c: c in Eltseq(s) | not (c in delsymb)];
  return IsEmpty(s) select "" else &cat s;
end function;

function MLoCase(s)
  if (#s eq 0) or (s[1] eq ToLower(s[1])) then return s; end if;
  return ToLower(s[1]) cat s[[2..#s]];
end function;

function MUpCase(s)
  if (#s eq 0) or (s[1] eq ToUpper(s[1])) then return s; end if;
  return ToUpper(s[1]) cat s[[2..#s]];
end function;

function Dotted(s, n)
// Print s as sdfjdfkjsk...sdk for long strings
  s:=Type(s) eq MonStgElt select s else Sprint(s); 
  if #s le n then return s; end if;
  return s[[1..n-6]]*"..."*s[[#s-2..#s]];
end function;

function trim(s) 
  n:=#s;
  while (n ge 2) and (s[n] in [" ","\n"]) do n-:=1; end while;
  f:=1;
  while (f le #s) and (s[f] in [" ","\n"]) do f+:=1; end while;
  if (f eq 1) and (n eq #s) then return s; end if;
  return s[[f..n]];
end function;

procedure SortBy(~L,f: sign:=1)
  if Type(L) eq SetEnum then
    L:=SetToSequence(L);
  end if;
  Sort(~L,func<a,b|fa lt fb select -sign else (fa eq fb select 0 else sign)
                   where fa is f(a) where fb is f(b)>);
end procedure;                

ap:=func<S,f|Type(f) eq SeqEnum select [f[x]: x in S] else [f(x): x in S]>;

function IsPowerOf(n,p)       
  return p^v eq n,v where v is Valuation(n,p); 
end function;

procedure Swap(~A,i,j)
  t:=A[i]; A[i]:=A[j]; A[j]:=t;
end procedure;

CharacterCharPoly:=func<c,g|
  CharacteristicPolynomialFromTraces([c(g^i): i in [1..c[1]]])
>;

function IsPrimePower1(n)     
  if n eq 1 then return false,0,0; 
            else return IsPrimePower(n); 
  end if; 
end function;

function SortSet(X)           return Sort(SetToSequence(Set(X))); end function;

function SetAndMultiplicities(X)
  S:=SortSet(Set(X));
  M:=[Multiplicity(X,x): x in S];
  return S,M;
end function;

function PrintSequence(L: sep:=", ", mult:="^^%o", prfun:=Sprint)    
  if IsEmpty(L) then return ""; end if;
  if Type(L) eq SetMulti then 
    S,M:=SetAndMultiplicities(L);
    L:=[prfun(S[i])*(M[i] eq 1 select "" else Sprintf(mult,M[i])): i in [1..#S]];
    prfun:=Sprint;
  end if;
  return &cat[prfun(L[i]) * (i eq #L select "" else sep): i in [1..#L]];
end function;


exp:=func<sym,n|Sprintf(n ge 9 select "%o{%o}" else "%o%o",sym,n)>;  // sym = "_" or "^"


function PrintFactorRational(n: tex:=false, frac:=false, cdotneg:=false)
  if n lt 0 then
    return "-"*PrintFactorRational(-n: tex:=tex, frac:=frac, cdotneg:=cdotneg);
  end if;
  cdotstr:=tex select "\\cdot" else "*";
  if Type(n) cmpeq FldRatElt then
    if Denominator(n) eq 1 then return PrintFactorRational(Z!n: tex:=tex); end if;
    if frac
      then return "\\frac{"*PrintFactorRational(Numerator(n): cdotneg:=false, tex:=tex)
        *"}{"*PrintFactorRational(Denominator(n): cdotneg:=false, tex:=tex)*"}";
      else return 
        tex select "{"*PrintFactorRational(Numerator(n): tex:=true)
                  *"}\\,/\\,{"*PrintFactorRational(Denominator(n): tex:=true)*"}"
            else  PrintFactorRational(Numerator(n): tex:=false)
                  *"/"*PrintFactorRational(Denominator(n): tex:=false);
    end if;
  end if;
  if Type(n) cmpeq RngIntElt then
    if n in [-1,0,1] then return Sprint(n); end if;
    n,_,c:=Factorisation(n: Proof:=false, ECMLimit:=10, MPQSLimit:=0, PollardRhoLimit:=10000);
    if assigned c and c ne [1] then n cat:=[<d,1>: d in c]; end if;
  end if;
  s:=[s[2] eq 1 select Sprint(s[1]) else
      (Sprintf("%o^%o",s[1], (s[2] ge 10) and tex select "{"*Sprint(s[2])*"}" else s[2])): s in n];
  neg:=cdotneg select "\\!" else "";
  s:=[s[i]*(i eq #s select "" else neg*cdotstr*neg): i in [1..#s]];
  return IsEmpty(s) select "" else &cat s;
end function;


function _texify_hat(s)
  repeat
    ok,spl:=Regexp("['^]([0-9][0-9]+)",s);
    if not ok then return s; end if;
    ReplaceString(~s,spl,spl[1]*"{"*spl[2..#spl]*"}");
  until false;
end function;


function _prnt_fp(f,tex,pr,var)
  if Type(f) eq RngMPolElt then return DelSpaces(f); end if;
  c:=Eltseq(f);
  R:=PR(BaseRing(f));
  c:=Coefficients(f);
  if pr ne 0 then
    K<p>:=RFF(BaseRing(f));
    R:=PolynomialRing(K);
    cc:=[K|a: a in c];
    for i:=1 to #c do
      a:=c[i];
      if a eq 0 then continue; end if;
      v:=Valuation(a,pr);
      u:=a/pr^v;
      m:=Z!(Integers(pr)!u);  
      if m gt pr div 2 then m:=m-pr; end if;
      v2:=Valuation(u-m,pr);
      um:=u eq m select 0 else ((u-m)/pr^v2)*p^v2;
      a:=p^v*(m + um);
      cc[i]:=a;    
    end for;
    c:=cc;
  end if;
  oldnames:=Names(Parent(f)); 
  AssignNames(~R,var eq "" select oldnames else [var]);
  s:=DelSpaces(R!c);
  if tex then ReplaceString(~s,"*",""); end if;
  AssignNames(~R,oldnames);
  if tex then s:=_texify_hat(s); end if;
  return s;
end function;


function PrintFactorPolynomial(f: tex:=false, p:=0, var:="")
  mul:=tex select "" else "*";
  if f eq 0 then return "0"; end if;
  if Type(f) in [FldFunRatUElt,FldFunRatMElt] then
    Fn,Ln:=Factorisation(Numerator(f));
    Fd,Ld:=Factorisation(Denominator(f));
    F:=Fn cat [<d[1],-d[2]>: d in Fd];
    l:=Ln/Ld;
  else
    F,l:=Factorization(f);
  end if;
  prnt:=func<s|tex select _texify_hat(DelSpaces(s)) else DelSpaces(s)>;
  if (#F eq 1) and (F[1][2] eq 1) then 
//! assert Denominator(l) eq 1; 
    return _prnt_fp(Numerator(l)*F[1][1],tex,p,var); 
  end if;
  s:=l eq 1 select "" else (l eq -1 select "-" else 
    (Type(l) in [FldRatElt,RngIntElt] select PrintFactorRational(l) else _prnt_fp(Parent(f)!l,tex,p,var))*mul);
  if IsEmpty(F) then return Prune(s); end if;
  for i:=1 to #F do
    g:=F[i][1];
    e:=F[i][2];
    gs:=Eltseq(_prnt_fp(g,tex,p,var));
    br:=exists{c: c in gs | c in {"*","+","-"}};
    s cat:= (br select "(" else "") * &cat gs * (br select ")" else "") *
      (e eq 1 select "" else (tex select exp("^",e) else "^"*Sprint(e)));
    if i ne #F then    
      s cat:=mul;
    end if;
  end for;
  return s;
end function;


function PrintFactor(n: tex:=false, frac:=false, cdotneg:=false, p:=0, var:="")
  if n eq 0 then return "0"; end if;
  if n eq 1 then return "1"; end if;
  if n eq -1 then return "-1"; end if;
  if Type(n) in [RngUPolElt,RngMPolElt,FldFunRatUElt,FldFunRatMElt]
    then return PrintFactorPolynomial(n: tex:=tex, p:=p, var:=var);
    else return PrintFactorRational(n: tex:=tex, frac:=frac, cdotneg:=cdotneg);
  end if;
end function;


function VectorContent(v)
  den:=LCM([Denominator(x): x in v]);
  v:=[Z!(den*x): x in v];
  gcd:=GCD(v);
  if gcd eq 0 then return 0; end if;
  v:=[x div gcd: x in v];
  return gcd/den,v;
end function;


function SmallID(G) // Identify group in a small group database, 0 otherwise
  if #G in [0,1] then return #G; end if;
  ok,p,n:=IsPrimePower(#G);
  NonIdentifiableOrders:={512,1024,1152,1536,1920};
  if ok and (n le 4) or ((#G le 2000) and (#G notin NonIdentifiableOrders))
    then return IdentifyGroup(G)[2];
    else return 0; 
  end if;
end function;


function PolynomialFit(v,d: extracareful:=false)
// Recognises a polynomial function in n variables of total degree d by a set of values
// v=[<x1,...,xn>,f(x1,...,xn)]
// return false,-1 if degree too low, and false,0 if not enough values, f,1 if ok
  if IsEmpty(v) then return false,0; end if;
  n:=#(v[1][1]);
  R<[z]>:=PR(Q,n);
  mons:=&join[MonomialsOfDegree(R,j): j in [0..d]];
  mat:=Matrix(Q,[[Evaluate(m,d[1]): m in mons]: d in v]);
  vec:=Vector(Q,[d[2]: d in v]);
  vprintf Qt,1: "%o vectors %o monomials (deg %o)\n",#v,#mons,d;
  if #mons-#v ge (extracareful select 3 else 0) then return false,0; end if;
  ok,sol,ker:=IsConsistent(Transpose(mat),vec);
  if not ok then return false,-1; end if;
  if Dimension(ker) ne 0 then return false,0; end if;
  return &+[Eltseq(sol)[i]*mons[i]: i in [1..#mons]],1;
end function;


procedure IncludeAssoc(~A,i,d: init:={})
  if IsDefined(A,i) then Include(~A[i],d); else A[i]:=Include(init,d); end if;
end procedure;


function UpToSquares(F)
  T:=Type(Parent(F));
  if T eq FldRat then F:=Numerator(F)*Denominator(F); T:=RngInt; end if;

  if T eq RngInt then
    fct,u,c:=Factorisation(F: Proof:=false, ECMLimit:=10, MPQSLimit:=0, PollardRhoLimit:=10000);
    if assigned c and c ne [1] then 
      c:=[a: a in Set(c) | IsOdd(Count(c,a))];
      fct cat:=[<d,1>: d in c | not IsSquare(d)]; 
    end if;
  else
    fct,u:=Factorisation(F);
  end if;

  FF:=&*[Parent(F)| d[1]: d in fct | IsOdd(d[2])];
  if T eq RngInt then return u*FF; end if;
  if T in [RngUPol,RngMPol] then return UpToSquares(u)*FF; end if;
  error "UpToSquares: Unknown type "*Sprint(T);
end function;


function RoundPolynomial(f)
  cfs:=Eltseq(f);
  cfr:=[Round(Real(c)): c in cfs];
  assert forall{i: i in [1..#cfs] | Abs(cfs[i]-cfr[i]) lt 1E-8};
  return PR(Q)!cfr;
end function;


function GetQAttribute(attrname, initfnc)
  Q:=Rationals();
  if attrname notin GetAttributes(FldRat) then
    AddAttribute(FldRat,attrname);
  end if;
  if not assigned Q``attrname then
    Q``attrname:=initfnc();
  end if;
  return Q``attrname;
end function;


function PrintFactorCoefficients(f: cffunc:=PrintFactor, br:=0, var:="x")
  if IsCoercible(Z,f) then return PrintFactor(Z!f); end if;
  assert Type(f) eq RngUPolElt;
  T:=Coefficients(f);
  S:=[PrintFactor(c): c in T];
  for i:=1 to #S-1 do
    s:=S[i+1];
    if (s[#s] ne ")") and exists{c: c in ["+","-"] | Position(s,c,2) ne 0} then s:="("*s*")"; end if;
    if s eq "0" then continue; end if;
    if s eq "1" then s:=var; elif s eq "-1" then s:="-"*var; else s*:="*"*var; end if;
    if i ne 1 then s*:="^"*Sprint(i); end if;
    S[i+1]:=s;
  end for;
  s:=S[#S];
  ls:=#s;
  for i:=#S-1 to 1 by -1 do
    m:=S[i];
    if m eq "0" then continue; end if;
    if m[1] eq "-" then m:=" - "*m[[2..#m]]; else m:=" + "*m; end if;
    s*:=m;
    ls+:=#m;
    if (br ne 0) and (ls gt br) and (i ne 1) then
      s*:="\n  "; ls:=0;
    end if;
  end for;
  return s;
end function;


function PRN(A,n)
  R:=PR(A,n);
  AssignNames(~R,[CodeToString(96+j): j in [1..#Names(R)]]);
  return R;
end function;


function RFFN(A,n)
  R:=RFF(A,n);
  AssignNames(~R,[CodeToString(96+j): j in [1..#Names(R)]]);
  return R;
end function;


function TrID(G)
  if Type(G) in [MonStgElt,GalFamily] then G:=Group(G); end if;
  if not IsTransitive(G) then return [#GSet(G),0]; end if;
  j,d:=TransitiveGroupIdentification(G);
  return [d,j];
end function;


/////////////////////////////////
//  Label and Gens for groups  //
/////////////////////////////////


intrinsic Label(G::Grp) -> MonStgElt
{Label of a group given by groupname, ngi (small) or dtj (transitive) - used for printing Galois families}
  name:=GroupName(G);
  if #G le 127 then return name; end if;
  c:=#[c: c in Eltseq(name) | c in ["w"]] + 2*Count(name,".") + 2*Count(name,":");
  if c le 1 and #name le 14 then return name; end if;
  i:=SmallID(G);
  if i ne 0 then return Sprintf("%og%o",#G,i); end if;
  if Type(G) eq GrpPerm and IsTransitive(G) and #GSet(G) le 47 then
    return Sprintf("%ot%o",#GSet(G),TransitiveGroupIdentification(G));
  end if;
  if Type(G) ne GrpPerm then
    error "Cannot compute label for: "*Sprint(G,"Magma");
  end if;
  return PrintSequence([Label(Image(Action(G,o))): o in Orbits(G)]: sep:="@");
end intrinsic;


intrinsic Gens(G::Grp) -> SeqEnum
{Generators/PCGenerators of a group G}
  vprint GroupName,2: "Gens(G::Grp) -> SeqEnum";
  _<[gens]>:=G;
  if Type(G) eq GrpPC then gens:=PCGenerators(G); end if;
  if Type(gens) eq SetIndx then gens:=[g: g in gens]; end if;
  return gens;
end intrinsic;


//////////////////////
//  Polynomial Fit  //
//////////////////////


function IMOD(a,b) 
  b:=Abs(Z!b);
  if b le 1 then return 0; end if;
  a:=(Z!a) mod b;
  if a le b/2 then return a; end if;
  return a-b;
end function;  


function val(a,b)
  if a eq 0 then return Infinity(); end if;
  v:=0;
  while GCD(a,b) eq b do
    a:=a div b;
    v+:=1;
  end while;
  return v;
end function;


intrinsic ParameterRescale(L::SeqEnum, params::SeqEnum: vartransform:="none") -> SeqEnum, SeqEnum
{Rescale elements of L=[<[vars],[cfs]>,...] by powers of parameters by which the coefficients are
divisible; returns rescaling and also rescaled values; used in IntelligentPolynomialFit}
  if vartransform cmpeq "none" then vartransform:=func<x|x>; end if;
  
  n:=#L[1][1];
  D:=#L[1][2]-1;
  R:=RFF(Q,n);
  A:=AssociativeArray();     // Look at guessed parameters by which the coefficients seem to be divisible
  for LE in L do
    da:=LE[1];
    cf:=LE[2];
    p:=[Evaluate(p,da): p in params];
    for ci in [0..D], ui in [1..#p] do
      c:=cf[ci+1];
      u:=p[ui];
      if Abs(u) le 1 or c eq 0 then continue; end if;
      IncludeAssoc(~A,[ci,ui],val(Z!c,Z!u): init:={**});
    end for;
  end for;
  rescale:=[&*[R| params[u]^(IsDefined(A,[c,u]) select Min(A[[c,u]]) else 0): u in [1..#params]]: c in [0..D]];
  LR:=[[vartransform(d[1]),[d[2][i]/Evaluate(rescale[i],d[1]): i in [1..D+1]]]: d in L];

  return rescale,LR;
end intrinsic;  


function BasicIntelligentPolynomialFit(L,deg: frc:=1/4, rational:=false, params:=[], vartransform:="none", modfrc:=frc)   
// Recognises a list of polynomials (default) or rational functions (if rational=true) in x1,...,xn 
// with num, den of total degree <=deg by their values L=[<x1,...,xn>,[f1(x1,...,xn),f2(x1,...,xn),...]...]
// Tries to account for cancellations and possible outlier values by restricting to a chunk of size frc (default 1/4) 
// params specify possible expressions in the variables by which coefficients could be expected to be divisible
// uses SetVerbose("Qt",0123)

  function dist_one(a,b)
    R:=RealField(10);
    if a eq b then return 0; end if;
    if a eq 0 or b eq 0 then return R!0.3; end if;
    if Sign(a) ne Sign(b) then return R!0.8; end if;
    a:=Abs(a);
    b:=Abs(b);
    return R!(1-Min(a,b)/Max(a,b)); 
  end function;
  
  function dist(A,B)
    return &+[dist_one(A[i],B[i]): i in [1..#A]];
  end function;

  if frc lt 1 then
    D:=[[RealField(1)| 0: i in [1..#L]]: j in [1..#L]];          // compute pairwise distances
    for j in [1..#L], i in [1..j-1] do D[i,j]:=dist(L[i][2],L[j][2]); end for;
    for i in [1..#L], j in [1..i-1] do D[i,j]:=D[j,i]; end for;
    m,i:=Min([Sort(d)[Round(frc*#L)]: d in D]);    // centre for the best chunk V of size frc*#L
    V:=[L[j]: j in [1..#L] | D[i,j] le m]; 
    vprint Qt,3: V[[1..Min(#V,5)]]; 
    vprint Qt,3: "...";
    vprint Qt,3: V[[Max(#V-5,1)..#V]];
    vprint Qt,4: V; 
  else 
    V:=L;
  end if;
  n:=#(V[1][1]);

  vprint Qt,1: "Parameters:",params;
  
  D:=#L[1][2]-1;

  rescale,LR:=ParameterRescale(V,params: vartransform:=vartransform);
  vprint Qt,1: "rescale";
  for c:=0 to D do 
    if rescale[c+1] eq 1 then continue; end if;
    vprint Qt,1: c,PrintFactor(rescale[c+1]);
  end for;

  if not rational and modfrc lt 1 and forall{d: d in LR | forall{a: a in d[2] | IsCoercible(Z,a)}} then
    R:=PR(Q,n);
    modparams:=[R.i: i in [1..n]];
    for i:=1 to #modparams do
      m:=modparams[i];
      S:=[{* IMOD(l[2][i],Evaluate(m,l[1])): l in LR *}: i in [1..D+1]];   
      conds:={<Position(S,X),d>: d in Set(X), X in S | Multiplicity(X,d)/#X ge modfrc};
      if IsEmpty(conds) then continue; end if;
      jdone:={};
      for d in conds do
        j,v:=Explode(d);  // jth coeff mod modparams[i] = v a lot of time
        if j in jdone then continue; end if;
        oldLRsize:=#LR;
        LR:=[l: l in LR | IMOD(l[2][j],Evaluate(m,l[1])) eq v];
        vprintf Qt,1: "modular restriction: %oth coeff mod %o = %o (LR: #%o->#%o)\n",j,PrintFactor(m),v,oldLRsize,#LR;
        Include(~jdone,j);
      end for;
    end for;
  end if;
  
  if rational then 
    R<[z]>:=RFF(Q,n);
    RR:=PR(Q,n);
    AssignNames(~RR,[CodeToString(96+j): j in [1..n]]);
    out:=[R|];       
    for d:=D to 0 by -1 do                     // run PolynomialFit on numerators and denominators
      v:=[<u[1],Numerator(u[2][d+1])>: u in LR];
      degree:=Type(deg) eq RngIntElt select deg else deg[d+1];
      num,err:=PolynomialFit(v,degree: extracareful);
      if num cmpeq false then return num,err,d+1; end if;
      v:=[<u[1],Denominator(u[2][d+1])>: u in LR];
      den,err:=PolynomialFit(v,deg: extracareful);
      if den cmpeq false then return num,err,d+1; end if;
      Append(~out,R!num/R!den);
      vprint Qt,1: d,PrintFactor(RR!num),den eq 1 select "" else "/ "*PrintFactor(RR!den);
    end for;
  else
    R<[z]>:=PR(Q,n);
    AssignNames(~R,[CodeToString(96+j): j in [1..n]]);
    out:=[R|];
    for d:=D to 0 by -1 do                     // run PolynomialFit 
      v:=[<u[1],u[2][d+1]>: u in LR];
      degree:=Type(deg) eq RngIntElt select deg else deg[d+1];
      degree-:=Degree(Numerator(rescale[d+1]));
      num,err:=PolynomialFit(v,degree: extracareful);
      if num cmpeq false then return num,err,d+1; end if;
      Append(~out,R!num);
      vprint Qt,1: d,PrintFactor(R!num);
    end for;  
  end if;
  
  out:=Reverse(out);
  
  n:=#L[1][1];
  R:=PR(Q,n); 
  AssignNames(~R,[CodeToString(96+j): j in [1..n]]);
  U<x>:=PR(R);
  vars:=[R.j: j in [1..n]];
  if vartransform cmpeq "none" then vartransform:=func<x|x>; end if;
  ans:=[R|Evaluate(out[i],vartransform(vars))*Evaluate(rescale[i],vars): i in [1..#out]];
  f:=U!Polynomial(ans);
  
  RZ:=PR(Z,n);
  if forall{d: d in ans | IsCoercible(RZ,d)} then
    AssignNames(~RZ,[CodeToString(96+j): j in [1..n]]);
    U<x>:=PR(RZ);
    ans:=[R|d: d in ans];
    f:=U!Polynomial(ans);
  end if;

  return Coefficients(f),0,0;
end function;


function Intervals(X) 
  I:={};
  for a in Set(X) do   
    D:=[d: d in I | (a ge d[1]-1) and (a le d[2]+1)];
    if IsEmpty(D) then
      Include(~I,[a,a]); continue;
    end if;
    if exists{d: d in D | a ge d[1] and a le d[2]} then continue; end if;
    dnewmin:=Min(Append([d[1]: d in D],a));
    dnewmax:=Max(Append([d[2]: d in D],a));
    for d in D do Exclude(~I,d); end for;
    Include(~I,[dnewmin,dnewmax]);
  end for;
  return I;
end function;


intrinsic IntelligentPolynomialFit(L::SeqEnum, deg: frc:=1/4, rational:=false, params:=[], vartransform:="none", modfrc:=frc, powmod:=false) -> Any
{Recognises a list of polynomials (default) or rational functions (if rational=true) in x1,...,xn 
 with num, den of total degree <=deg by their values L=[<x1,...,xn>,[f1(x1,...,xn),f2(x1,...,xn),...]...]
 Tries to account for cancellations and possible outlier values by restricting to a chunk of size frc (default 1/4) 
 params specify possible expressions in the variables by which coefficients could be expected to be divisible
 uses SetVerbose("Qt",0123)}

  ok,err,d:=BasicIntelligentPolynomialFit(L,deg: frc:=frc, modfrc:=modfrc, rational:=rational, params:=params, vartransform:=vartransform, modfrc:=modfrc);
  if ok cmpne false or not powmod or rational then return ok,err,d; end if;
    
  best:=0;            
  vprint Qt,1: "Looking for modular restriction for d =",d;
  n:=Ceiling(Log(L[1][1][1],Abs(L[1][2][d]+1)));
  for i:=1 to n do 
    X:={* IMOD(Z!L[j][2][d] div a^i,a) where a is L[j][1][1]: j in [1..#L] *};
    C:=Intervals(X);
    if #C notin [2..4] then continue; end if;
    C:=SortSet(C);
    M:=[ #[x: x in X | x ge c[1] and x le c[2]]: c in C ];
    vprint Qt,1: i,M;   
    _,Cindex:=Max(M);
    quality:=Min(M) + (C[Cindex][1] le 2 select 1 else 0);   // extra punishment for being close to 0?
    if quality gt best then
      best:=quality;
      besti:=i;
      bestc:=C[Cindex];
    end if;
  end for;

  if best eq 0 then return ok,err,d; end if;
   
  oldsize:=#L;      // modular restriction: dth coefficient div a^i mod d in [bestc[1]..bestc[2]]
  L:=[x: x in L | IMOD(Z!x[2][d] div a^besti,a) in [bestc[1]..bestc[2]] where a is x[1][1]];
  vprintf Qt,1: "Restricting to %o mod a: %o -> %o\n",DelSpaces(bestc),oldsize,#L;
  return BasicIntelligentPolynomialFit(L,deg: frc:=frc, modfrc:=modfrc, rational:=rational, params:=params, vartransform:=vartransform, modfrc:=modfrc);
end intrinsic;



//////////////////////////////////////////////////////////////////
//  EvaluateFamily, CheckFamily, IntegralPolynomial, MakeMonic  //
//  for polynomials                                             //
//////////////////////////////////////////////////////////////////


function EvaluateFamily(F,t)
  if Type(F) eq SeqEnum then return &*[EvaluateFamily(f,t): f in F]; end if;
  if Type(BaseRing(F)) eq RngUPol and Type(t) eq SeqEnum then
    return Polynomial([Evaluate(c,t[1]): c in Coefficients(F)]);
  end if;
  return Polynomial([Evaluate(c,t): c in Coefficients(F)]);
end function;


function CheckFamily(f: n0:=17, group:=false, galoisdata:=false, attempts:=1)
  // Evaluate a multivariate polynomial representing a family at some prime parameters (17,19,...) and return the name
  //    of the Galois group (or the group itself if group:=true); n0 may be a sequence of values or a lower bound 
  //    for the first one
  d:=#Names(BaseRing(f));
  P:=Type(n0) eq RngIntElt select PrimesInInterval(n0,n0+500)[[3..3*d by 3]] else n0;
  G:=0; r:=0; D:=0;
  for step:=0 to attempts-1 do
    vprintf Qt,2: "CheckFamily: P=%o\n",DelSpaces(P);
    fe:=EvaluateFamily(f,Type(BaseRing(f)) eq RngUPol select P[1] else P);
    newG,newr,newD:=GaloisGroup(Degree(fe) eq 0 select PR(Q).1-1 else fe);
    if (step eq 0) or (#newG gt #G) then
      G:=newG; r:=newr; D:=newD; PP:=P;
    end if;
    P:=[a+1: a in P];
  end for;
  if not group then G:=GroupName(G); end if;
  if not galoisdata then return G; end if;
  return G,r,D,PP;
end function;  


function IntegralPolynomial(F)
  R:=BaseRing(F);                  // Coefficients are rational functions -> make polynomial
  if Type(R) eq FldFunRat then
    vprint Qt,3: "Making coeffients polynomial";
    den:=LCM([Denominator(c): c in Coefficients(F)]);
    F:=den*F;
    B:=BaseRing(R);
    n:=#Names(R);
    Rnew:=PR(B,n);
    U<x>:=PR(Rnew);
    AssignNames(~Rnew,[CodeToString(96+j): j in [1..#Names(Rnew)]]);
    F:=U!EvaluateFamily(F,[Rnew.j: j in [1..n]]);   
  end if;
  R:=BaseRing(F);                  // Coefficients are rational functions -> make polynomial
  B:=BaseRing(R);
  if Type(B) eq FldRat then
    vprint Qt,3: "Making coeffients integral";
    den:=Denominator(VectorContent(&cat[[LeadingCoefficient(u): u in Terms(t)]: t in Coefficients(F)]));
    n:=#Names(R);
    Rnew:=PR(Z,n);
    AssignNames(~Rnew,[CodeToString(96+j): j in [1..n]]);
    U<x>:=PR(Rnew);
    F:=U!EvaluateFamily(den*F,[Rnew.j: j in [1..n]]);   
  end if;
  assert Type(BaseRing(F)) eq RngMPol and Type(F) eq RngUPolElt and Type(BaseRing(BaseRing(F))) eq RngInt;
  g:=GCD(Coefficients(F));
  return g eq 1 select F else F div g;
end function;


function MakeMonic(f: factor:=true)

  // Check if already monic
  lead:=LeadingCoefficient(f);
  if lead eq 1 then return f; end if;
  if lead eq -1 then return -f; end if;
  
  U<x>:=Parent(f);
  R<[q]>:=BaseRing(U);
  AssignNames(~R,[CodeToString(96+j): j in [1..#Names(R)]]);

  RQ<[vq]>:=RFF(Q,#Names(R));
  UQ<X>:=PR(RQ);

  // Factor if necessary  
  if factor then
    fct:=Factorisation(f);
    if #fct gt 1 then return U!&*[MakeMonic(d[1]: factor:=false): d in fct]; end if;  
  end if;

  // Loop over the factors of the leading coefficient
  repeat
    c:=LeadingCoefficient(f);
    if c eq 1 then return f; end if;
    if c eq -1 then return -f; end if;
    a:=&*[d[1]: d in Factorisation(c)];
    aq:=Evaluate(a,vq);
    f:=U!IntegralPolynomial(Evaluate(EvaluateFamily(f,vq),X/aq));
  until false;
  
end function;


/////////////////////////////////////////////////
//  Hackobj functions                          //
/////////////////////////////////////////////////


intrinsic Print(F::GalFamily, level::MonStgElt)
{Print a family of Galois polynomials.}
  if level eq "Magma" then                
    printf "Family(\"%o\")",ReplaceStringFunc(SaveFamily(F),"\"","\\\"");
    return;
  end if;
  if not assigned F`_prints then
    s1:=Sprintf("%o (%o): ",Label(F),PrintSequence(F`degrees: sep:=","));
    C:=Components(F);
    s2:=PrintSequence([PrintFactorCoefficients(c): c in C]: sep:=") * (");
    s:=s1*(#C eq 1 select s2 else "("*s2*")");
    F`_prints:=s;
  end if;
  printf F`_prints;
  if level eq "Maximal" and not IsEmpty(F`K) then
    printf "\nTrID     H<G         G/Core(H)      polynomial\n";
    G:=Group(F);
    for d in F`K do  
      H,f:=Explode(d);
      t:=TrID(H);
      trdesc:=t[2] ne 0 select Sprintf("%ot%o",t[1],t[2]) else "";
      printf "%-8o %-15o %-10o %o\n",trdesc,GroupName(H),GroupName(quo<G|Core(G,H)>),Dotted(PrintFactorCoefficients(f),60);
    end for;
  end if;
end intrinsic;


intrinsic 'in'(x::GalFamily, y::.) -> BoolElt
{"in" function for a family of Galois polynomials.}
  return false;
end intrinsic;


intrinsic 'eq'(F::GalFamily, U::GalFamily) -> BoolElt
{Equality for family of Galois polynomials}
  if (F`n ne U`n) or (F`Glabel ne U`Glabel) or (F`degrees ne U`degrees) then return false; end if;
  C1:=Components(F);
  C2:=Components(U);
  if #C1 ne #C2 then return false; end if;
  R:=PR(U`R);
  return forall{j: j in [1..#C1] |
    R!EvaluateFamily(C1[j],Variables(U)) eq R!C2[j]
  };  
end intrinsic;


intrinsic IsCoercible(F::GalFamily, y::.) -> BoolElt, .
{Coerce a family of Galois polynomials.}
  if Type(y) eq RngIntElt then
    return true, EvaluateFamily(Polynomial(F),[y]);
  end if;
  if Type(y) eq SeqEnum and Type(y[1]) in [RngMPolElt,FldFunRatMElt,RngIntElt,FldRatElt] then
    if #y eq #Variables(F)+1 then
      scale:=Last(y);
      y:=Prune(y);
    else
      if #y ne #Variables(F) then return false, "Wrong number of variables (<>n, <>n+1)"; end if;
      scale:=1;
    end if;
    f:=EvaluateFamily(Polynomial(F),y); 
    if scale ne 1 then
      f:=Evaluate(f,scale*Parent(f).1);
    end if;
    return true,f;
  end if;
  return false, "Cannot coerce";
end intrinsic;


/////////////////////////////////////////////////
//  Basic invariants                           //
/////////////////////////////////////////////////


intrinsic Group(F::GalFamily) -> Grp
{Underlying Galois group for a family of Galois polynomials}
  return F`G;
end intrinsic;


intrinsic Ring(F::GalFamily) -> RngMPol
{Underlying ring of coefficients for a family of Galois polynomials}
  return F`R;
end intrinsic;


intrinsic PolynomialRing(F::GalFamily) -> RngUPol
{Univariate polynomial ring R(x) where R = Ring(F)}
  return PR(F`R);
end intrinsic;


intrinsic Components(F::GalFamily) -> SeqEnum
{Component polynomials defining F ([F`C] if irreducible)} 
  return Type(F`C) eq SeqEnum select F`C else [F`C];
end intrinsic;


intrinsic FLabel(F::GalFamily) -> MonStgElt
{Family label (if set)} 
  return F`Flabel;
end intrinsic;


intrinsic GLabel(F::GalFamily) -> MonStgElt
{Label of Group(F) that can be evaluated to the group} 
  return F`Glabel;
end intrinsic;


intrinsic Label(F::GalFamily) -> MonStgElt
{Label of the form GLabel-FLabel where GLabel is the name of the group and FLabel is
    provided during the construction of the family} 
  return F`Glabel*(F`Flabel ne "" select "-"*F`Flabel else "");
end intrinsic;


intrinsic Polynomial(F::GalFamily) -> RngUPolElt
{Defining polynomial for F, possibly reducible} 
  if assigned F`f then return F`f; end if;
  f:=&*Components(F);
  F`f:=f;
  return f;
end intrinsic;


intrinsic Coefficients(F::GalFamily) -> SeqEnum
{Coefficients of the defining polynomial for F}
  return Coefficients(Polynomial(F));
end intrinsic;


intrinsic Degrees(F::GalFamily) -> SeqEnum
{Degrees of the defining polynomial for F in the variables}
  return F`degrees;
end intrinsic;


intrinsic IsIrreducible(F::GalFamily) -> BoolElt
{True if F is irreducible (defined by a transitive group G)} 
  return #F`C eq 1;
end intrinsic;


intrinsic IsRegular(F::GalFamily: attempts:=5) -> BoolElt
{Check whether the family F is regular (is normally checked automatically on creation)}
  if not IsEmpty(F`regularcertificate) then return true; end if;
  n:=#Variables(F);
  G:=Group(F);
  regular:=false;
  for step:=0 to attempts-1 do
    va:=[Round((7+3*step)*1.2159265358979323846264^i): i in [1..n]]; 
    vb:=[Round((11+3*step)*1.75453454354543979323846264^i): i in [1..n]]; 
    f1:=&*[EvaluateFamily(c,va): c in Components(F)];
    f2:=&*[EvaluateFamily(c,vb): c in Components(F)];
    GP:=GaloisGroup(f1*f2);
    if #GP eq #G^2 then 
      F`regularcertificate:=[va,vb];
      return true;
    end if;
  end for;
  return false;
end intrinsic;


intrinsic Variables(F::GalFamily) -> SeqEnum
{Sequence of variables (not names) of F`R}
  return [F`R.i: i in [1..F`n]];
end intrinsic;


intrinsic Discriminant(F::GalFamily: uptosquares:=false) -> RngUPolElt
{Discriminant of the defining polynomial of a Galois family}
  D:=Discriminant(Polynomial(F));
  return uptosquares select UpToSquares(D) else D;
end intrinsic;


////////////////////////////////////////////////////////////////
//  WreathProduct(F1,F2: j:=1) - main construction function   //
////////////////////////////////////////////////////////////////


intrinsic WreathProduct(F2,F1: j:=1, Flabel:="default", ref:="Wreath product", nocheckregular:=false, full:=false) -> GalFamily
{Wreath product Group(F2) wr Group(F1) constructed with the resultant with respect to the j's variable of F2}
  n1:=#Variables(F1);
  n2:=#Variables(F2);
  if Flabel eq "default" then 
    Flabel:=Sprintf("%o%o%o",GLabel(F2),full select "wrf" else "wr",GLabel(F1)); 
  end if;
  error if j notin [1..n2],"j should be in [1..#Variables(F2)]";
  y:=full select 1 else 0;
  R<[v]>:=PR(Q,n1+n2+1+y);
  AssignNames(~R,[CodeToString(96+j): j in [1..n1+n2+y]] cat ["x"]);
  f1:=Evaluate(F1!v[[1..n1]],v[n1+j]-(full select v[n1+n2+1] else 0));
  f2:=Evaluate(F2!v[[n1+1..n1+n2]],v[n1+n2+1+y]);
  ref:=Sprintf("%o%o with resultants F2=%o wr F1=%o with respect to F2.v%o",
    full select "Full " else "",ref,Label(F2),Label(F1),j);
  return Family(Sprint(Resultant(f1,f2,v[n1+j])): ref:=ref, Flabel:=Flabel, nocheckregular:=nocheckregular);
end intrinsic;


////////////////////////////////////////////////////////////////
//  ChangeVariables                                           //
////////////////////////////////////////////////////////////////


intrinsic ChangeVariables(F::GalFamily, avars::SeqEnum, xpoly::RngUPolElt: nocheckregular:=false) -> GalFamily
{Change variables [a,b,...]->avars, x->xpoly with coefficients in avars and return the new family}
  assert #avars eq #Variables(F);
  assert Degree(xpoly) gt 0;
  xvars:=Coefficients(xpoly);
  ok,xvc:=IsCoercible(Parent(avars),xvars);
  if ok then xvars:=xvc; end if;
  f:=EvaluateFamily(Polynomial(F),avars); 
  f:=Evaluate(f,Parent(f)![Evaluate(c,avars): c in xvars]);
  ref:=assigned F`ref 
    select F`ref*Sprintf(" vars->%o,x->%o",DelSpaces(avars),DelSpaces(xvars))
    else "";
  Flabel:=F`Flabel ne "" select F`Flabel*"V" else "";
  return Family(f: ref:=ref, Flabel:=Flabel, nocheckregular:=nocheckregular);
end intrinsic;


intrinsic ChangeVariables(F::GalFamily, avars::SeqEnum: nocheckregular:=false) -> GalFamily
{Change variables [a,b,...]->avars and return the new family}
  return ChangeVariables(F,avars,PR(Universe(avars)).1: nocheckregular:=nocheckregular);
end intrinsic;


////////////////////////////////////////////////////////////////
//  Subfield                                                  //
////////////////////////////////////////////////////////////////


intrinsic Subfield(F::GalFamily, H::Grp: d0:="default", frc:=1, degreelimit:=200, 
  v1:=0, extraprecision:=0, degreebound:="automatic", disc:="default", kmaxlimit:=4000) -> RngUPolElt
{Compute the polynomial that defines the subfield cut out by H<G=Group(F)}

  n:=F`n;
  D:=F`D;
  G:=F`G;
  if d0 cmpeq "default" then d0:=[8,1,0,0,0,0,0,0][n]; end if;

  // Convert H to a subgroup of G if necessary
  if Type(H) ne GrpPerm or #GSet(H) ne #GSet(G) or not (H subset G) then
    HE:=H;
    ok:=exists(H){U`subgroup: U in Subgroups(G: OrderEqual:=#H) | IsIsomorphic(U`subgroup,H)};
    error if not ok,Sprintf("No subgroup %o < %o found",GroupName(HE),GroupName(G));
  end if;
  
  // Check if H=G, H=Stabiliser(pt), or H has already been computed
  if H eq G then return PR(F).1; end if;
  if IsIrreducible(F) and IsConjugate(G,H,Stabiliser(G,1)) then return Polynomial(F); end if;
  if exists(d){d: d in F`K | IsConjugate(G,H,d[1])} then return d[2]; end if;

  if disc cmpeq "default" then disc:=Degree(f) le 8 or #Sprint(f) le 150 where f is Polynomial(F); end if;

  f:=D`f;
  p:=D`Prime;
  
  vprint Qt,1: Sprintf("*** %o H=%o Q=%o",Label(F),GroupName(H),GroupName(quo<G|Core(G,H)>));

  L:=[];
 
  K,I,Reco,Bnd:=GaloisSubfieldTower(D,[H]); 
  r1:=[r[1]: r in Roots(f,D`Ring)];
  
  prec:=Max(40,Round(2*Log(p,Max([Abs(c): c in Coefficients(DefiningPolynomial(K))])))+extraprecision);
  vprintf Qt,1: "p=%o prec=%o\n",p,prec;
  tr:=CartesianProduct(Reverse([x[3]: x in I]));   // transversals
  assert #tr eq Index(G,H);

  // Generate sample fields  
  k:=1;
  kmax:=1E100;
  fails:=0;
  v0:=F`v0;
  repeat
    if fails ge 1000+10*k then
      vprintf Qt,1: "Too many fails: fails=%o k=%o/%o\n",fails,k,kmax; 
      return 0;
    end if;
    v:=[v0[j]+p*(v1+Random(1,(k eq 1 select 100 else 12*kmax))): j in [1..#v0]];
    if exists{d: d in L | d[1] eq v} then fails+:=1; continue; end if;
    f2:=EvaluateFamily(F`fm,v); 
    if not IsSquarefree(f2) then fails+:=1; continue; end if;
    r2:=[r[1]: r in Roots(f2,ChangePrecision(D`Ring,prec))];      // re-sort to make sure valuations match if necessary?

    if not forall{i: i in [1..#r1] | m eq i where _,m is Max([Valuation(r1[i]-r2[j]): j in [1..#r2]])} then 
      fails+:=1; continue; 
    end if;
    a:=[Evaluate(I[1][1],[Evaluate(I[1][2],r): r in PermuteSequence(r2,&*p)]): p in tr];
    R<x>:=PR(Universe(a));
    fg:=&*[x-r: r in a];
    fg:=PR(Z)!fg; //!?
    cfg:=Coefficients(fg);
    if exists{c: c in cfg | Log(p,Abs(c)+1) gt 5/6*Precision(r2[1])} then
      vprintf Qt,1: "Failed to compute integer approximations: Max(%o)>5/6*%o\n",
        DelSpaces([Round(Log(p,Abs(c)+1)): c in cfg]),Precision(r2[1]); return 0;
    end if;
    Append(~L,<v,cfg>);
    if k eq 1 then
      if degreebound cmpeq "automatic" then
        degreebound:=[d0+Floor(Log(v[1],1+Abs(Coefficient(fg,k)))): k in [0..Degree(fg)]]; 
      end if;
      kmax:=10 + Round(1.1/frc*&+[#MonomialsOfDegree(PR(Q,F`n),j): j in [0..Max(degreebound)]]);
      vprint Qt,1: "Degree bound:",DelSpaces(degreebound),"kmax",kmax;
      if kmax gt kmaxlimit then
        Sprintf("kmax>kmaxlimit=%o: failed",kmaxlimit); return 0;
      end if;
      if Max(degreebound) gt degreelimit then
        "Degree too large. Failed."; return 0;
      end if;
    end if;
    k+:=1;
  until k ge kmax;
      
  // Recognize with IntelligentPolynomialFit
  U<x>:=PolynomialRing(F);

  if disc
    then params:=[];
    else params:=[Ring(F)| D[1]: D in Factorisation(Numerator(PR(Z,n)!Discriminant(F))) | #Monomials(D[1]) le 10000];
  end if;

  ans:=IntelligentPolynomialFit(L,degreebound: frc:=frc, params:=params, powmod);
  if ans cmpeq false then
    vprintf Qt,1: "%o H=%o: failed\n",Label(F),GroupName(H);
    return 0;
  end if;

  // Make integral      
  den:=Denominator(VectorContent(&cat[[LeadingCoefficient(u): u in Terms(t)]: t in ans]));
  ans:=U![den*c: c in ans];

  // Special case: quadratic -> replace by discriminant up to squares 
  if Degree(ans) eq 2 then 
    Dsc:=Discriminant(ans);
    if Dsc eq 0 then 
      vprintf Qt,1: "%o H=%o: failed (Disc=0)\n",Label(F),GroupName(H);
      return 0;
    end if;
    ans:=x^2 - UpToSquares(Dsc); 
  end if;
     
  // Print and store
  vprintf Qt,2: "Done H=%o %o\n",GroupName(H),PrintFactorCoefficients(ans);
  Append(~F`K,<H,ans,0>);
  
  return ans;

end intrinsic;  


intrinsic Subfield(F::GalFamily, H::MonStgElt: d0:="default", frc:=1, degreelimit:=200, 
  v1:=0, extraprecision:=0, degreebound:="automatic", disc:="default", kmaxlimit:=4000) -> RngUPolElt
{Compute the polynomial that defines the subfield cut out by H<G=Group(F), with H given by a GroupName string}
  return Subfield(F,Group(H): d0:=d0, frc:=frc, degreelimit:=degreelimit, v1:=v1, extraprecision:=extraprecision,
    degreebound:=degreebound, disc:=disc, kmaxlimit:=kmaxlimit);
end intrinsic;  


////////////////////////////////////////////////////////////////
//  Save and load                                             //
////////////////////////////////////////////////////////////////


function Save(A)
  RZ<x>:=PR(Z);    // names for saving
  RQ<x>:=PR(Q);
  T:=Type(A);
  if   T in [RngIntElt,FldRatElt,BoolElt,MonStgElt,FldFunRat] then
    return Sprint(A,"Magma");
  elif T in [GrpPerm,GrpPermElt,RngPad,FldPad] then
    return DelSpaces(Sprint(A,"Magma"));
  elif T in [Tup,List,SetEnum,SeqEnum,SetIndx] then
    if   T eq Tup      then f:="<"; l:=">"; 
    elif T eq List     then f:="[*"; l:="*]"; 
    elif T eq SeqEnum  then f:="["; l:="]"; 
    elif T eq SetEnum  then f:="{"; l:="}"; A:=[x: x in A];
    end if;
    return f*PrintSequence([Save(A[i]): i in [1..#A]]: sep:=",")*l;
  else
    return Sprint(DelCRs(A),"Magma");
  end if;
end function;


function SaveGaloisData(D)
  assert D`Type eq "p-Adic";
  O:=Integers(D`Ring);
  GG:=func<G|[Eltseq(d): d in Gens(G)]>;
  k,m:=ResidueClassField(O);
  return <
    D`Prime,                   // p 
    AbsoluteDegree(D`Ring),    // f unramified ext of Zp of degree f in which roots live
    D`Prec,
    assigned D`CycleTypes select D`CycleTypes else 0,
    assigned D`KnownSubgroup select GG(D`KnownSubgroup) else 0,
    [<GG(d[1]),d[2]>: d in D`DescentChain],
    D`max_comp,
    [Z!a: a in Eltseq(MinimalPolynomial(k.1))],
    [[Z!a: a in Eltseq(m(r))]: r in D`Roots]
  >;
end function;


function LoadGaloisData(F,S)
  GP:=func<g|sub<Sym(#g[1])|g>>;
  assert Type(S) eq Tup and #S eq 9;
  p,f,prec,cyc,known,desc,maxcomp,mink,rts:=Explode(S);
  D:=GaloisData(QuadraticField(-1));
  D`Prime:=p;
  D`Base:=pAdicRing(p);
  D`Ring:=ext<D`Base|f>;
  O:=Integers(D`Ring);
  k,m:=ResidueClassField(O);
  r:=Evaluate(Polynomial(mink),k.1) eq 0 select k.1 else Roots(Polynomial(mink),k)[1,1];
  D`Prec:=prec;
  D`max_comp:=maxcomp;
  D`f:=EvaluateFamily(F`fm,F`v0);
  if cyc cmpne 0 then D`CycleTypes:=cyc; end if;
  D`DescentChain:=[<GP(d[1]),d[2]>: d in desc];
  if known cmpne 0 then D`KnownSubgroup:=GP(known); end if;
  D`Type:="p-Adic";
  D`Roots:=[HenselLift(ChangeRing(D`f,O),O!Evaluate(Polynomial(root),r)): root in rts];
  return D;
end function;


function Gens2G(g)
  return sub<Sym(#g[1])|g>;
end function;


function LoadPoly(s: Z:=false, R:="auto")
  if Type(s) eq SeqEnum then s:=Sprint(s); end if;
  if R cmpeq "auto" then 
    vnames:=[c: c in ["a","b","c","d","e","f","g","h"] | Position(s,c) ne 0];
    n:=#vnames;
    if n eq 0 then return false; end if;
    R:=PR(Z select Integers() else Rationals(),n);
    AssignNames(~R,vnames);
  else
    vnames:=Names(R);
  end if;
  if "a" in vnames then a:=R.(Position(vnames,"a")); end if;
  if "b" in vnames then b:=R.(Position(vnames,"b")); end if;
  if "c" in vnames then c:=R.(Position(vnames,"c")); end if;
  if "d" in vnames then d:=R.(Position(vnames,"d")); end if;
  if "e" in vnames then e:=R.(Position(vnames,"e")); end if;
  if "f" in vnames then f:=R.(Position(vnames,"f")); end if;
  if "g" in vnames then g:=R.(Position(vnames,"g")); end if;
  if "h" in vnames then h:=R.(Position(vnames,"h")); end if;
  // Set the polynomial ring, evaluate and return
  U<x>:=PR(R);
  return eval s;
end function;


intrinsic SaveFamily(F::GalFamily) -> MonStgElt
{String s which can be used to re-create the family with Family(s)}
  return Save(<F`Flabel,F`ref,
    Type(F`C) eq RngUPolElt select PrintFactorCoefficients(F`C) else [PrintFactorCoefficients(f): f in Components(F)],
    Gens(F`G),F`v0,F`smallid,F`trid,
    F`regularcertificate,SaveGaloisData(F`D),[<Gens(d[1]),PrintFactorCoefficients(d[2]),d[3]>: d in F`K]>);
end intrinsic;


function LoadFamily(S)
  F:=New(GalFamily);
  F`Flabel,F`ref,f,Gg,F`v0,F`smallid,F`trid,F`regularcertificate,D,K:=Explode(eval S);
  F`C:=LoadPoly(f: Z); 
  F`R:=BaseRing(Universe(F`C));
  F`n:=#Names(F`R);
  F`G:=Gens2G(Gg);
  F`Glabel:=Label(F`G);
  f:=Polynomial(F);
  F`degrees:=[Max([Degree(Coefficient(f,i),w): i in [0..Degree(f)]]): w in Variables(F)];
  F`fm:=MakeMonic(f);
  F`D:=LoadGaloisData(F,D);
  R:=PRN(Q,F`n);
  F`K:=[<Gens2G(d[1]),LoadPoly(d[2]: R:=R),d[3]>: d in K];
  return F;
end function;


/////////////////////////////////////////////////////////////////////////
// Naming & Stored families                                            //
/////////////////////////////////////////////////////////////////////////


intrinsic AssignNames(~F::GalFamily, v::SeqEnum[MonStgElt] )
{Assigned the strings in v to be the names of the variables of the underlying ring of the family F}
  require #v le F`n: "Argument 2 should have length at most ",F`n;
  AssignNames(~F`R,v);
end intrinsic;


intrinsic Name(F::GalFamily, i::RngIntElt ) -> RngMPolElt
{The i-th indeterminate of the underlying ring of the family F}
  require i in [1..F`n]: Sprintf("Value for name index should be in the range [1..%o]",F`n);
  return Name(Ring(F),i);
end intrinsic;


intrinsic '.'(F::GalFamily, i::RngIntElt ) -> RngMPolElt
{The i-th indeterminate of the underlying ring of the family F}
  require i in [0..F`n]: Sprintf("Value for name index should be in the range [1..%o] or 0 for the x variable",F`n);
  return i eq 0 select Parent(F`f).1 else Ring(F).i;
end intrinsic;


//////////////////////////////////////////////////////////////////////
// Stored families begin
StoredFamilies:=[
  "<\"2t1\",\"Cyclic Kummer family\",[\"x^2 + a\"],[[2,1]],[100001],[2,1],[2,1],[[9],[19]],<3,1,40,{[1,1],[2]},0,[<[[2,1]],true>],448,[2,1],[[1],[2]]>,[]>",
  "<\"3t1\",\"Ask Tim\",[\"x^3 - a*x^2 - 3^2*x + a\"],[[2,3,1]],[100001],[3,1],[3,1],[[9],[19]],<11,1,40,{[3],[1,1,1]},0,[<[[2,3,1]],true>],200002,[10,1],[[0],[3],[8]]>,[]>",
  "<\"3t2\",\"Obvious 1-variable family Sn: x^n+x+a in degree 3\",[\"x^3 + x + a\"],[[2,3,1],[2,1,3]],[100001],[6,1],[3,2],[[9],[19]],<17,1,40,{[3],[1,2],[1,1,1]},0,[<[[2,3,1],[2,1,3]],true>],74,[16,1],[[2],[7],[8]]>,[]>",
  "<\"4t1\",\"Malle-Matzat's book\",[\"x^4 + a*x^3 - 2*3*x^2 - a*x + 1\"],[[2,1,4,3],[3,4,2,1]],[100001],[4,1],[4,1],[[9],[19]],<31,1,40,{[4],[1,1,1,1],[2,2]},[[1,2,3,4]],[<[[2,1,4,3],[3,4,2,1]],true>],200002,[30,1],[[5],[6],[11],[14]]>,[]>",
  "<\"4t2\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^4 + a*x^2 + 1\"],[[2,1,4,3],[3,4,1,2]],[100001],[4,2],[4,2],[[9],[19]],<71,1,40,{[1,1,1,1],[2,2]},[[1,2,3,4]],[<[[2,1,4,3],[3,4,1,2]],true>],633,[70,1],[[6],[12],[59],[65]]>,[]>",
  "<\"4t3\",\"Obvious 1-variable family C2wrSn: x^(2*n)+x^2+a in degree 4\",[\"x^4 + x^2 + a\"],[[2,1,4,3],[4,2,3,1]],[100001],[8,3],[4,3],[[19],[35]],<29,1,40,{[4],[1,1,1,1],[2,2],[1,1,2]},[[1,2,3,4]],[<[[2,1,4,3],[4,2,3,1]],true>],30,[28,1],[[2],[13],[16],[27]]>,[]>",
  "<\"4t4\",\"See Malle-Matzat p492 or Serre Topics in GT p44\",[\"3*x^4 + 2^2*x^3 + 3*a^2+1\"],[[2,1,4,3],[2,3,1,4]],[100001],[12,3],[4,4],[[9],[19]],<47,1,40,{[1,3],[1,1,1,1],[2,2]},0,[<[[2,1,4,3],[2,3,1,4]],true>],1596,[46,1],[[13],[37],[42],[45]]>,[]>",
  "<\"4t5\",\"Obvious 1-variable family Sn: x^n+x+a in degree 4\",[\"x^4 + x + a\"],[[2,3,4,1],[2,1,3,4]],[100001],[24,12],[4,5],[[9],[19]],<103,1,40,{[4],[1,3],[1,1,2],[2,2]},0,[<[[2,3,4,1],[2,1,3,4]],true>],30,[102,1],[[5],[33],[81],[87]]>,[]>",
  "<\"5t1\",\"Ask Tim\",[\"x^5 - a^2*x^4 - 2*5*(2*a^2+5)*x^3 + 2*a^2*(2*a^2+5)*x^2 + (24*a^4+300*a^2+625)*x + a^2*(36*a^2+95)\"],[[3,1,4,5,2]],[100001],[5,1],[5,1],[[9],[19]],<47,1,40,{[5],[1,1,1,1,1]},[[1,2,3,4,5]],[<[[3,4,1,2,5],[2,1,5,4,3]],true>,<[[3,1,4,5,2]],true>],20000400002,[46,1],[[3],[7],[15],[19],[40]]>,[]>",
  "<\"5t2\",\"Ask Tim\",[\"x^5 - a*x^3 + (a-5)*x^2 + 2*5*x - 2^2\"],[[4,5,3,1,2],[3,2,1,5,4]],[100001],[10,1],[5,2],[[9],[19]],<13,2,40,{[5],[1,1,1,1,1],[1,2,2]},[[2,1,4,3,5]],[<[[4,5,3,1,2],[3,2,1,5,4]],true>],633,[2,12,1],[[11,1],[12,12],[1,7],[8,6],[7,0]]>,[]>",
  "<\"5t3\",\"Ask Tim\",[\"a*x^5 + 5*(a+1)*x^4 + 25*a^2+44*a+20\"],[[4,1,2,3,5],[3,4,1,2,5],[3,5,2,1,4]],[100001],[20,3],[5,3],[[9],[19]],<13,2,40,{[5],[1,4],[1,2,2]},[[5,3,2,4,1]],[<[[2,3,4,5,1],[2,1,3,4,5]],true>,<[[4,1,2,3,5],[3,4,1,2,5],[3,5,2,1,4]],true>],3314506,[2,12,1],[[11,7],[1,6],[7,7],[11,0],[5,6]]>,[]>",
  "<\"5t4\",\"Ask Tim\",[\"x^5 + 3*5^2*x^3 + a*x^2 + 3*a\"],[[1,2,4,5,3],[2,3,1,4,5]],[100001],[60,5],[5,4],[[12],[25]],<541,1,40,{[5],[1,1,3],[1,2,2]},0,[<[[1,2,4,5,3],[2,3,1,4,5]],true>],93,[540,1],[[51],[88],[153],[360],[430]]>,[]>",
  "<\"5t5\",\"Obvious 1-variable family Sn: x^n+x+a in degree 5\",[\"x^5 + x + a\"],[[2,3,4,5,1],[2,1,3,4,5]],[100001],[120,34],[5,5],[[9],[19]],<293,1,40,{[5],[1,4],[1,1,3],[2,3],[1,1,1,2],[1,2,2]},0,[<[[2,3,4,5,1],[2,1,3,4,5]],true>],18,[292,1],[[11],[74],[78],[185],[238]]>,[]>",
  "<\"6t1\",\"M.-N. Gras, Special Units in Real Cyclic sextic Fields. Math. Comp. 48 (1987) no. 177, 179–182; simplified\",[\"x^6 + 2*a*x^5 - 5*(a+3)*x^4 + 2^2*5*x^3 + 5*a*x^2 - 2*(a+3)*x + 1\"],[[2,5,1,3,6,4],[6,4,5,2,3,1]],[100001],[6,2],[6,1],[[9],[19]],<17,2,40,{[6],[2,2,2],[1,1,1,1,1,1],[3,3]},[[6,4,5,2,3,1]],[<[[2,5,1,3,6,4],[6,4,5,2,3,1]],true>],400004,[3,16,1],[[5,11],[2,14],[13,6],[16,3],[2,11],[16,6]]>,[]>",
  "<\"6t2\",\"Ask Tim\",[\"x^6 - a*x^4 + (2*a+45)*x^2 - a+18\"],[[2,1,6,5,4,3],[3,4,5,6,1,2]],[100001],[6,1],[6,2],[[12],[25]],<17,2,40,{[2,2,2],[1,1,1,1,1,1],[3,3]},[[6,5,4,3,2,1]],[<[[2,1,6,5,4,3],[3,4,5,6,1,2]],true>],633,[3,16,1],[[12,9],[9,16],[13,9],[5,8],[8,1],[4,8]]>,[]>",
  "<\"6t3\",\"Ask Tim\",[\"x^6 + 2*x^4 + x^2 + a\"],[[1,6,5,4,3,2],[2,1,3,5,4,6],[3,5,1,6,2,4]],[100001],[12,4],[6,3],[[9],[19]],<23,2,40,{[6],[2,2,2],[1,1,2,2],[1,1,1,1,1,1],[3,3]},[[1,6,5,4,3,2]],[<[[1,6,5,4,3,2],[2,1,3,5,4,6],[3,5,1,6,2,4]],true>],11,[5,21,1],[[20,0],[22,14],[19,14],[3,0],[1,9],[4,9]]>,[]>",
  "<\"6t4\",\"Ask Tim\",[\"x^6 + (a+3)*x^4 + a*x^2 - 1\"],[[1,5,6,4,2,3],[4,2,6,1,5,3],[5,6,1,2,3,4]],[100001],[12,3],[6,4],[[9],[19]],<13,2,40,{[1,1,2,2],[1,1,1,1,1,1],[3,3]},[[1,5,6,4,2,3]],[<[[1,5,6,4,2,3],[4,2,6,1,5,3],[5,6,1,2,3,4]],true>],633,[2,12,1],[[1,0],[12,2],[11,4],[12,0],[1,11],[2,9]]>,[]>",
  "<\"6t5\",\"Ask Tim\",[\"x^6 + a*x^5 - 2*5*a*x^3 + 3^2*5*x^2 + 3^2*a*x + 2*3^2\"],[[1,4,2,3,5,6],[3,5,1,6,2,4],[5,2,3,4,6,1]],[100001],[18,3],[6,5],[[12],[25]],<11,3,40,{[6],[1,1,1,3],[1,1,1,1,1,1],[3,3]},[[5,3,4,2,6,1]],[<[[1,4,2,3,5,6],[3,5,1,6,2,4],[5,2,3,4,6,1]],true>],200002,[9,2,0,1],[[4,9,9],[9,7,9],[8,2,0],[7,2,2],[2,4,2],[3,9,0]]>,[]>",
  "<\"6t6\",\"Ask Tim\",[\"x^6 + a*x^4 - 3^2*x^2 - a\"],[[1,5,3,4,2,6],[4,2,3,1,5,6],[1,2,6,4,5,3],[2,3,1,5,6,4]],[100001],[24,13],[6,6],[[19],[35]],<67,2,40,{[6],[2,2,2],[1,1,2,2],[1,1,1,1,2],[3,3]},[[4,5,3,1,2,6]],[<[[1,5,3,4,2,6],[4,2,3,1,5,6],[1,2,6,4,5,3],[2,3,1,5,6,4]],true>],633,[2,63,1],[[6,64],[57,5],[37,0],[61,3],[10,62],[30,0]]>,[]>",
  "<\"6t7\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^6 + a*x^2 - 1\"],[[2,1,3,5,4,6],[3,1,2,6,4,5],[5,4,3,2,1,6],[3,4,5,6,1,2]],[100001],[24,12],[6,7],[[9],[19]],<11,2,40,{[1,1,2,2],[2,4],[1,1,1,1,1,1],[3,3]},[[1,6,5,4,3,2]],[<[[2,1,3,5,4,6],[3,1,2,6,4,5],[5,4,3,2,1,6],[3,4,5,6,1,2]],true>],30,[2,7,1],[[1,0],[8,10],[7,10],[10,0],[3,1],[4,1]]>,[]>",
  "<\"6t8\",\"Ask Tim\",[\"x^6 + x^4 + 3^2*a*x^2 + a\"],[[5,3,4,2,6,1],[3,1,2,6,4,5],[1,5,6,4,2,3],[5,4,6,2,1,3]],[100001],[24,12],[6,8],[[9],[19]],<31,2,40,{[2,2,2],[1,1,2,2],[1,1,4],[1,1,1,1,1,1],[3,3]},[[1,5,6,4,2,3]],[<[[5,3,4,2,6,1],[3,1,2,6,4,5],[1,5,6,4,2,3],[5,4,6,2,1,3]],true>],52,[3,29,1],[[27,0],[19,12],[29,2],[4,0],[12,19],[2,29]]>,[]>",
  "<\"6t9\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^6 + 2*3*x^4 + a*x^3 + 3^2*x^2 + 3*a*x + 2^2\"],[[6,5,3,4,2,1],[1,5,3,6,2,4],[1,3,2,6,5,4],[1,2,5,6,3,4],[5,1,6,3,4,2]],[100001],[36,10],[6,9],[[9],[19]],<13,2,40,{[6],[2,2,2],[1,1,2,2],[1,1,1,3],[1,1,1,1,1,1],[3,3]},[[6,5,3,4,2,1]],[<[[6,5,3,4,2,1],[1,5,3,6,2,4],[1,3,2,6,5,4],[1,2,5,6,3,4],[5,1,6,3,4,2]],true>],66,[2,12,1],[[9,10],[6,2],[12,0],[11,0],[8,11],[6,3]]>,[]>",
  "<\"6t10\",\"Ask Tim\",[\"x^6 + 2*3*x^4 + a*x^3 + 3^2*x^2 + 3*a*x - 2^2\"],[[4,3,1,2,6,5],[2,5,3,4,1,6],[1,2,4,6,5,3]],[100001],[36,9],[6,10],[[9],[19]],<41,2,40,{[1,1,2,2],[1,1,1,3],[2,4],[1,1,1,1,1,1],[3,3]},[[1,5,6,4,2,3]],[<[[4,3,1,2,6,5],[2,5,3,4,1,6],[1,2,4,6,5,3]],true>],66,[6,38,1],[[39,0],[16,31],[13,7],[35,0],[27,10],[34,34]]>,[]>",
  "<\"6t11\",\"Obvious 1-variable family C2wrSn: x^(2*n)+x^2+a in degree 6\",[\"x^6 + x^2 + a\"],[[2,3,1,5,6,4],[3,2,1,6,5,4],[1,2,6,4,5,3]],[100001],[48,48],[6,11],[[9],[19]],<37,2,40,{[6],[2,2,2],[1,1,2,2],[2,4],[1,1,1,1,2],[1,1,4],[3,3]},[[4,5,3,1,2,6]],[<[[2,3,1,5,6,4],[3,2,1,6,5,4],[1,2,6,4,5,3]],true>],11,[2,33,1],[[2,36],[23,7],[23,0],[35,1],[14,30],[14,0]]>,[]>",
  "<\"6t12\",\"Ask Tim\",[\"x^6 + 2*x^4 + a*x^3 + 5*x^2 + 2*3*x + 1\"],[[1,5,3,6,2,4],[2,3,1,6,4,5]],[100001],[60,5],[6,12],[[9],[19]],<13,2,40,{[1,1,2,2],[1,5],[3,3]},[[4,2,5,1,3,6]],[<[[2,1,4,5,6,3],[2,3,1,4,5,6]],true>,<[[1,5,3,6,2,4],[2,3,1,6,4,5]],true>],66,[2,12,1],[[2,5],[2,0],[7,3],[7,8],[10,10],[11,0]]>,[]>",
  "<\"6t13\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^6 - 2*x^5 + x^4 - a\"],[[3,5,1,6,2,4],[1,2,5,4,6,3],[1,2,5,4,3,6]],[100001],[72,40],[6,13],[[19],[35]],<19,2,40,{[6],[2,2,2],[1,1,1,3],[2,4],[1,1,1,1,2],[3,3],[1,2,3]},[[1,2,6,4,5,3]],[<[[3,5,1,6,2,4],[1,2,5,4,6,3],[1,2,5,4,3,6]],true>],11,[2,18,1],[[16,0],[14,0],[8,5],[9,0],[18,0],[13,14]]>,[]>",
  "<\"6t14\",\"Ask Tim\",[\"x^6 - 5*x^4 + 3*5*x^2 + a*x + 5\"],[[2,1,4,3,6,5],[2,5,1,6,4,3]],[100001],[120,34],[6,14],[[9],[19]],<17,2,40,{[6],[2,2,2],[1,1,2,2],[1,5],[1,1,4],[3,3]},[[4,2,3,1,6,5]],[<[[2,3,4,5,6,1],[2,1,3,4,5,6]],true>,<[[2,1,4,3,6,5],[2,5,1,6,4,3]],true>],15,[3,16,1],[[9,5],[9,0],[10,0],[14,12],[6,14],[3,3]]>,[]>",
  "<\"6t15\",\"Ask Tim\",[\"x^6 + 3*x^5 + 3*5*x^4 + a*x^3 + 2^2*3*x - 2^2\"],[[2,1,4,5,6,3],[2,3,1,4,5,6]],[100001],[360,118],[6,15],[[9],[19]],<23,2,40,{[1,1,2,2],[1,1,1,3],[2,4],[1,5],[3,3]},0,[<[[2,1,4,5,6,3],[2,3,1,4,5,6]],true>],93,[5,21,1],[[13,12],[11,17],[22,0],[14,11],[7,0],[22,6]]>,[]>",
  "<\"6t16\",\"Obvious 1-variable family Sn: x^n+x+a in degree 6\",[\"x^6 + x + a\"],[[2,3,4,5,6,1],[2,1,3,4,5,6]],[100001],[720,763],[6,16],[[9],[19]],<11,1,40,{[6],[1,1,2,2],[1,1,1,3],[2,4],[1,5],[1,1,1,1,1,1],[1,1,4],[1,2,3]},0,[<[[2,3,4,5,6,1],[2,1,3,4,5,6]],true>],13,[10,1],[[0],[2],[6],[7],[8],[10]]>,[]>",
  "<\"7t1\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^7 + (a^3+2*a^2-a+13)*x^6 + 3*(a^2-a+2)*(a^3+a+9)*x^5 + (3*a^7-9*a^6+27*a^5-22*a^4+6*a^3+84*a^2-121*a+75)*x^4 + (a^2-a+2)*(a^7-5*a^6+15*a^5-32*a^4+20*a^3+14*a^2-113*a-1)*x^3 + (-a^10+5*a^9-25*a^8+61*a^7-126*a^6+117*a^5-58*a^4-155*a^3+168*a^2-80*a-44)*x^2 + (-a^10+8*a^9-30*a^8+75*a^7-102*a^6+89*a^5+34*a^4-56*a^3+113*a^2+42*a-17)*x + a^9-7*a^8+23*a^7-42*a^6+28*a^5+19*a^4-60*a^3-2*a^2+16*a-1\"],[[4,3,5,2,6,7,1]],[100001],[7,1],[7,1],[[9],[19]],<11,7,40,{[7],[1,1,1,1,1,1,1]},[[3,6,7,5,1,4,2]],[<[[4,3,5,2,6,7,1]],true>],2000100001200030,[9,4,0,0,0,0,0,1],[[0,10,6,3,0,0,1],[4,0,5,1,8,4,4],[8,6,4,6,10,4,7],[8,6,5,4,9,6,7],[8,1,9,3,4,9,7],[2,6,0,10,7,5,8],[1,4,4,6,6,5,10]]>,[]>",
  "<\"7t2\",\"Subfamily [a,-1] of: Williamson's cover applied to the universal family of elliptic curves with 7-torsion (simplified)\",[\"x^7 - x^6 - a*x^5 + 2*3*x^4 + (2*a+39)*x^3 + 17*x^2 - a*x + 2\"],[[7,3,2,5,4,6,1],[4,7,3,1,6,5,2]],[100001],[14,1],[7,2],[[9],[19]],<13,2,40,{[7],[1,2,2,2],[1,1,1,1,1,1,1]},[[6,4,7,2,5,1,3]],[<[[7,3,2,5,4,6,1],[4,7,3,1,6,5,2]],true>],633,[2,12,1],[[12,2],[7,10],[5,10],[4,3],[9,0],[1,11],[2,3]]>,[]>",
  "<\"7t3\",\"Ask Tim\",[\"3^3*x^7 + 3^3*(3*a^2+137)*x^6 - 3^4*(17*a^4+70*a^2+288*a-1639)*x^5 - 3*(1937*a^6+51129*a^4+37728*a^3+322299*a^2+510624*a-15669)*x^4 - 3*(629*a^8+65212*a^6+15552*a^5+1312398*a^4+1150272*a^3+8389980*a^2+11067840*a+16123653)*x^3 + 3*(3905*a^10+112911*a^8+129600*a^7+910554*a^6+2405376*a^5+1100142*a^4+7451136*a^3-11944395*a^2-27355968*a-59679693)*x^2 + (8933*a^12+412602*a^10+360288*a^9+7773795*a^8+11772864*a^7+82148172*a^6+141787584*a^5+538518267*a^4+792220608*a^3+2068073370*a^2+1846590048*a+3798843165)*x - 289*a^14-22805*a^12+14688*a^11-710733*a^10+315360*a^9-11528625*a^8+51840*a^7-113796915*a^6-39097728*a^5-737041167*a^4-321308640*a^3-2901892959*a^2-869800032*a-5291543403\"],[[1,6,4,7,2,5,3],[2,6,1,3,4,7,5]],[100001],[21,1],[7,3],[[9],[19]],<11,3,40,{[7],[1,3,3]},[[1,6,4,7,2,5,3]],[<[[1,2,4,5,6,7,3],[2,3,1,4,5,6,7]],true>,<[[4,2,7,1,5,6,3],[1,7,4,6,3,5,2]],true>,<[[1,6,4,7,2,5,3],[2,6,1,3,4,7,5]],true>],428494275558,[9,2,0,1],[[1,0,0],[1,8,0],[0,7,2],[5,1,3],[5,6,3],[8,8,8],[9,3,6]]>,[]>",
  "<\"7t4\",\"Ask Tim\",[\"x^7 - 3*7*x^5 - 2*5*7*x^4 - 3*5*7*x^3 + 7*(a^2+96)*x^2 + 7*(6*a^2+643)*x + a^3+61*a^2+108*a+6582\"],[[5,6,2,1,4,3,7],[3,5,1,6,2,4,7],[5,3,7,2,6,4,1]],[100001],[42,1],[7,4],[[9],[19]],<11,3,40,{[7],[1,2,2,2],[1,3,3],[1,6],[1,1,1,1,1,1,1]},[[4,2,7,6,3,1,5]],[<[[2,3,4,5,6,7,1],[2,1,3,4,5,6,7]],true>,<[[5,6,2,1,4,3,7],[3,5,1,6,2,4,7],[5,3,7,2,6,4,1]],false>],214,[9,2,0,1],[[7,6,9],[8,0,0],[3,6,6],[1,1,10],[6,6,0],[10,4,3],[9,10,5]]>,[]>",
  "<\"7t5\",\"Ask Tim\",[\"x^7 - 7*x^5 + (a+14)*x^3 + 2*a*x^2 - 2*7*x - 2^3\"],[[1,6,3,4,7,2,5],[6,4,5,3,2,1,7]],[100001],[168,42],[7,5],[[9],[19]],<31,3,40,{[7],[1,3,3],[1,1,1,2,2],[1,2,4]},[[1,6,5,2,7,4,3]],[<[[1,2,4,5,6,7,3],[2,3,1,4,5,6,7]],true>,<[[1,6,3,4,7,2,5],[6,4,5,3,2,1,7]],true>],30,[28,1,0,1],[[3,0,0],[9,27,28],[26,10,26],[0,7,30],[28,20,29],[24,28,4],[3,1,7]]>,[]>",
  "<\"7t6\",\"Ask Tim\",[\"x^7 - 2*x^6 + (a+9)*x^4 + a*x^3 + 2*x - 1\"],[[1,2,4,5,6,7,3],[2,3,1,4,5,6,7]],[100001],[2520,0],[7,6],[[9],[19]],<233,2,40,{[7],[2,2,3],[1,3,3],[1,1,1,1,3],[1,2,4],[1,1,5]},0,[<[[1,2,4,5,6,7,3],[2,3,1,4,5,6,7]],true>],93,[3,232,1],[[221,0],[66,0],[198,222],[208,203],[178,30],[187,11],[109,0]]>,[]>",
  "<\"7t7\",\"Obvious 1-variable family Sn: x^n+x+a in degree 7\",[\"x^7 + x + a\"],[[2,3,4,5,6,7,1],[2,1,3,4,5,6,7]],[100001],[5040,0],[7,7],[[9],[19]],<11,2,40,{[7],[1,2,2,2],[2,2,3],[3,4],[2,5],[1,1,1,1,3],[1,6],[1,2,4],[1,1,5]},0,[<[[2,3,4,5,6,7,1],[2,1,3,4,5,6,7]],true>],10,[2,7,1],[[0,0],[7,9],[8,7],[1,9],[4,2],[3,4],[10,2]]>,[]>",
  "<\"8t1\",\"Ask Tim\",[\"a^2*x^8 + 2^2*(a^4+1)*x^6 + 2*(a^2+4)*(a^4+1)*x^4 + 2^2*(a^2+1)*(a^4+1)*x^2 + a^2*(a^4+1)\"],[[7,5,8,3,6,1,4,2],[5,3,7,1,8,2,6,4],[8,7,6,5,4,3,2,1]],[100001],[8,1],[8,1],[[9],[19]],<43,1,40,{[2,2,2,2],[8],[4,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[4,3,2,1,8,7,6,5],[8,2,6,4,5,3,7,1],[1,7,6,4,5,3,2,8],[7,4,8,6,3,1,5,2],[1,2,6,5,4,3,7,8]],true>,<[[7,4,1,3,6,8,5,2],[5,6,2,1,8,7,3,4],[8,7,6,5,4,3,2,1],[1,7,6,4,5,3,2,8]],true>,<[[7,5,8,3,6,1,4,2],[5,3,7,1,8,2,6,4],[8,7,6,5,4,3,2,1]],true>],40000800005,[42,1],[[4],[8],[12],[20],[23],[31],[35],[39]]>,[]>",
  "<\"8t2\",\"Ask Tim\",[\"a^2*x^8 + 2*a*(a^2+8)*x^6 + (a^4+14*a^2+64)*x^4 + 2*a*(a^2+24)*x^2 + a^2\"],[[2,1,4,3,6,5,8,7],[8,7,6,5,4,3,2,1],[5,6,1,2,7,8,3,4]],[100001],[8,2],[8,2],[[9],[19]],<31,1,40,{[2,2,2,2],[4,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[2,1,4,3,6,5,8,7],[8,7,6,5,4,3,2,1],[5,6,1,2,7,8,3,4]],true>],89444061,[30,1],[[3],[4],[9],[10],[21],[22],[27],[28]]>,[]>",
  "<\"8t3\",\"Ask Tim\",[\"x^8 + a^2*x^6 + (5*a^2-8)*x^4 + 2^2*a^2*x^2 + 2^4\"],[[2,1,4,3,6,5,8,7],[3,4,1,2,7,8,5,6],[5,6,7,8,1,2,3,4]],[100001],[8,5],[8,3],[[16],[30]],<71,1,40,{[2,2,2,2],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[2,1,4,3,6,5,8,7],[3,4,1,2,7,8,5,6],[5,6,7,8,1,2,3,4]],true>],200002,[70,1],[[3],[23],[25],[34],[37],[46],[48],[68]]>,[]>",
  "<\"8t4\",\"Ask Tim\",[\"x^8 - a*x^6 + 2*(a+7)*x^4 - a*x^2 + 1\"],[[2,6,5,1,8,4,3,7],[3,7,1,5,4,8,2,6]],[100001],[8,3],[8,4],[[9],[19]],<97,1,40,{[2,2,2,2],[4,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[2,6,5,1,8,4,3,7],[3,7,1,5,4,8,2,6]],true>],633,[96,1],[[5],[33],[39],[47],[50],[58],[64],[92]]>,[]>",
  "<\"8t5\",\"Ask Tim\",[\"x^8 + a*(a^2+8)*x^7 + (a^4+4*a^2-28)*x^6 - 7*a*(a^2+8)*x^5 - 2*(a^4+4*a^2-35)*x^4 + 7*a*(a^2+8)*x^3 + (a^4+4*a^2-28)*x^2 - a*(a^2+8)*x + 1\"],[[2,8,1,5,6,7,4,3],[7,6,4,2,1,3,8,5],[8,3,2,6,7,4,5,1]],[100001],[8,4],[8,5],[[9],[19]],<67,1,40,{[2,2,2,2],[4,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[4,5,7,1,2,8,3,6],[1,3,2,4,7,6,5,8],[1,2,3,6,7,4,5,8],[7,4,6,2,8,3,1,5],[8,2,3,4,7,6,5,1],[4,7,5,1,3,8,2,6],[5,4,6,2,1,3,8,7]],true>,<[[1,2,3,6,7,4,5,8],[7,6,4,2,1,3,8,5],[2,8,1,7,4,5,6,3],[8,3,2,6,7,4,5,1]],true>,<[[2,8,1,5,6,7,4,3],[7,6,4,2,1,3,8,5],[8,3,2,6,7,4,5,1]],true>],2000060002200018,[66,1],[[15],[18],[26],[31],[47],[54],[57],[58]]>,[]>",
  "<\"8t6\",\"Ask Tim\",[\"x^8 + 5*x^7 - a*x^6 + 2*7*x^5 + (2*a+35)*x^4 + 7*x^3 - a*x^2 - 2*x + 2^2\"],[[2,1,4,3,5,6,8,7],[6,4,7,2,8,1,3,5],[7,1,6,5,3,4,8,2],[8,7,4,3,6,5,2,1]],[100001],[16,7],[8,6],[[9],[19]],<37,1,40,{[2,2,2,2],[8],[4,4],[1,1,2,2,2],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[6,3,2,7,8,1,4,5],[8,7,4,3,6,5,2,1],[2,1,5,6,3,4,8,7],[2,1,3,4,6,5,8,7],[8,7,3,4,5,6,2,1],[1,7,4,3,5,6,2,8]],true>,<[[6,4,7,2,8,1,3,5],[7,8,4,3,5,6,1,2],[8,7,3,4,5,6,2,1],[7,1,5,6,4,3,8,2],[8,7,4,3,6,5,2,1]],true>,<[[2,1,4,3,5,6,8,7],[6,4,7,2,8,1,3,5],[7,1,6,5,3,4,8,2],[8,7,4,3,6,5,2,1]],true>],633,[36,1],[[6],[8],[10],[16],[19],[25],[28],[31]]>,[]>",
  "<\"8t7\",\"Ask Tim\",[\"a*x^8 + 2^2*(a^2+1)*x^6 + 2*(a+4)*(a^2+1)*x^4 + 2^2*(a+1)*(a^2+1)*x^2 + a*(a^2+1)\"],[[3,1,5,2,7,4,8,6],[4,3,7,8,1,2,6,5],[8,7,6,5,4,3,2,1],[1,7,6,4,5,3,2,8]],[100001],[16,6],[8,7],[[19],[35]],<37,1,40,{[2,2,2,2],[8],[4,4],[1,1,1,1,2,2],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[3,1,4,7,2,5,8,6],[1,7,6,4,5,3,2,8],[1,2,6,5,4,3,7,8]],true>,<[[3,1,5,2,7,4,8,6],[4,3,7,8,1,2,6,5],[8,7,6,5,4,3,2,1],[1,7,6,4,5,3,2,8]],true>],126493004,[36,1],[[2],[11],[12],[16],[21],[25],[26],[35]]>,[]>",
  "<\"8t8\",\"Ask Tim\",[\"x^8 + 2^3*(2*a^2+1)*x^6 + 2^2*(2*a^2+1)*(6*a^2+5)*x^4 + 2^4*(2*a^2+1)*(3*a^2+1)*x^2 + 2*(2*a^2+1)*(3*a^2+2)\"],[[7,5,8,3,6,1,4,2],[5,2,6,8,1,3,7,4],[4,6,2,8,1,7,3,5],[8,7,6,5,4,3,2,1]],[100001],[16,8],[8,8],[[9],[19]],<71,1,40,{[2,2,2,2],[8],[4,4],[1,1,2,2,2],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[1,7,3,5,4,6,2,8],[6,5,8,7,2,1,4,3],[6,8,4,7,2,5,1,3],[8,2,3,5,4,6,7,1],[8,2,6,4,5,3,7,1],[5,3,7,1,8,2,6,4]],true>,<[[2,5,8,6,3,1,4,7],[3,5,1,7,2,8,4,6],[8,2,3,5,4,6,7,1],[5,6,2,1,8,7,3,4],[8,7,6,5,4,3,2,1]],true>,<[[7,5,8,3,6,1,4,2],[5,2,6,8,1,3,7,4],[4,6,2,8,1,7,3,5],[8,7,6,5,4,3,2,1]],true>],800009,[70,1],[[4],[12],[13],[29],[42],[58],[59],[67]]>,[]>",
  "<\"8t9\",\"Ask Tim\",[\"a*x^8 + x^6 + (-a-2)*x^4 + x^2 + a\"],[[1,2,5,6,3,4,7,8],[2,1,6,5,4,3,8,7],[3,4,1,2,7,8,5,6]],[100001],[16,11],[8,9],[[9],[19]],<139,1,40,{[2,2,2,2],[1,1,1,1,2,2],[4,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[1,2,5,6,3,4,7,8],[2,1,6,5,4,3,8,7],[3,4,1,2,7,8,5,6]],true>],200003,[138,1],[[5],[25],[28],[69],[70],[111],[114],[134]]>,[]>",
  "<\"8t10\",\"Ask Tim\",[\"x^8 - a^2*x^6 + (-a^2+2)*x^4 - a^2*x^2 + 1\"],[[8,7,6,5,4,3,2,1],[2,1,3,4,5,6,8,7],[1,2,5,6,3,4,7,8],[5,3,7,1,8,2,6,4]],[100001],[16,3],[8,10],[[9],[19]],<43,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[8,7,6,5,4,3,2,1],[2,1,3,4,5,6,8,7],[1,2,5,6,3,4,7,8],[5,3,7,1,8,2,6,4]],true>],200002,[42,1],[[4],[11],[15],[20],[23],[28],[32],[39]]>,[]>",
  "<\"8t11\",\"Ask Tim\",[\"(a-1)*(a+1)*x^8 + 2*a*x^7 - 2*7*a*x^5 + 2*7*(a-1)*(a+1)*x^4 + 2*7*a*x^3 - 2*a*x + (a-1)*(a+1)\"],[[3,6,1,8,7,2,5,4],[3,6,7,8,1,4,5,2],[4,1,6,7,8,5,2,3],[7,4,5,2,3,8,1,6]],[100001],[16,13],[8,11],[[9],[19]],<89,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[1,4,5,2,3,6,7,8],[3,8,1,6,7,4,5,2],[4,1,6,7,8,5,2,3],[3,6,1,8,7,2,5,4],[7,4,3,2,5,6,1,8],[2,7,6,1,8,5,4,3],[1,4,3,2,5,8,7,6]],true>,<[[3,6,1,8,7,2,5,4],[3,6,7,8,1,4,5,2],[4,1,6,7,8,5,2,3],[7,4,5,2,3,8,1,6]],true>],38687502140,[88,1],[[4],[12],[15],[19],[33],[40],[57],[68]]>,[]>",
  "<\"8t12\",\"Ask Tim\",[\"x^8 + (a^2+a+15)*x^6 + 2*3*(a^2+9)*x^4 + (5*a^2-3*a+27)*x^2 + a^2\"],[[1,4,6,7,5,8,2,3],[8,7,2,1,4,3,6,5],[6,1,8,3,2,5,4,7],[5,6,7,8,1,2,3,4]],[100001],[24,3],[8,12],[[9],[19]],<13,3,40,{[2,2,2,2],[2,6],[1,1,3,3],[4,4],[1,1,1,1,1,1,1,1]},[[8,1,3,6,4,5,7,2]],[<[[2,4,7,5,6,8,3,1],[5,6,3,4,1,2,7,8],[1,6,3,8,5,2,7,4],[2,1,4,3,6,5,8,7],[1,2,7,8,5,6,3,4]],true>,<[[1,4,6,7,5,8,2,3],[8,7,2,1,4,3,6,5],[6,1,8,3,2,5,4,7],[5,6,7,8,1,2,3,4]],true>],200004,[11,2,0,1],[[9,0,10],[6,3,11],[3,0,0],[2,3,8],[4,0,3],[7,10,2],[10,0,0],[11,10,5]]>,[]>",
  "<\"8t13\",\"Ask Tim\",[\"x^8 + 2*a*x^6 + (a^2+18)*x^4 - 2*7*a*x^2 + 3^4\"],[[2,4,3,1,6,8,7,5],[2,1,4,3,6,5,8,7],[5,6,7,8,1,2,3,4]],[100001],[24,13],[8,13],[[9],[19]],<13,3,40,{[2,2,2,2],[2,6],[1,1,3,3],[1,1,1,1,1,1,1,1]},[[1,4,2,3,5,8,6,7]],[<[[2,4,3,1,6,8,7,5],[2,1,4,3,6,5,8,7],[5,6,7,8,1,2,3,4]],true>],895,[11,2,0,1],[[1,0,0],[5,8,4],[6,0,8],[1,5,1],[12,0,0],[8,5,9],[7,0,5],[12,8,12]]>,[]>",
  "<\"8t14\",\"Ask Tim\",[\"x^8 - 2^2*3*x^6 + 2*3^3*x^4 + (3*a^2+148)*x^2 + 3^4\"],[[8,2,1,7,4,6,5,3],[1,8,2,7,5,4,6,3],[6,5,7,8,2,1,3,4]],[100001],[24,12],[8,14],[[9],[19]],<23,3,40,{[2,2,2,2],[1,1,3,3],[4,4]},[[1,3,8,6,5,7,4,2]],[<[[8,2,1,7,4,6,5,3],[1,8,2,7,5,4,6,3],[6,5,7,8,2,1,3,4]],true>],89,[18,2,0,1],[[1,0,0],[19,18,3],[20,8,21],[17,3,1],[22,0,0],[4,5,20],[3,15,2],[6,20,22]]>,[]>",
  "<\"8t15\",\"Ask Tim\",[\"x^8 + 3*a*x^6 + 3*a^2*x^4 + a*x^2 - (a-1)*(a+1)\"],[[7,3,4,1,8,5,6,2],[7,1,5,3,6,4,8,2],[1,7,3,5,4,6,2,8],[6,5,1,2,7,8,4,3],[8,7,6,5,4,3,2,1]],[100001],[32,43],[8,15],[[12],[25]],<223,1,40,{[2,2,2,2],[8],[4,4],[1,1,1,1,2,2],[1,1,2,2,2]},[[1,2,3,4,5,6,7,8]],[<[[6,7,1,5,4,8,2,3],[1,7,3,5,4,6,2,8],[8,2,3,5,4,6,7,1],[7,8,4,3,6,5,1,2],[5,6,2,1,8,7,3,4],[1,7,6,4,5,3,2,8]],true>,<[[7,3,4,1,8,5,6,2],[7,1,5,3,6,4,8,2],[1,7,3,5,4,6,2,8],[6,5,1,2,7,8,4,3],[8,7,6,5,4,3,2,1]],true>],1096,[222,1],[[72],[74],[81],[95],[128],[142],[149],[151]]>,[]>",
  "<\"8t16\",\"Ask Tim\",[\"x^8 + 2*(a^2+4)*x^6 + 3*(a^2+4)*x^4 - 2*(a^2+2)*(a^2+4)*x^2 + a^2+4\"],[[2,8,4,6,3,5,1,7],[4,3,1,7,2,8,6,5],[1,7,3,5,4,6,2,8],[1,2,6,5,4,3,7,8]],[100001],[32,7],[8,16],[[9],[19]],<67,1,40,{[2,2,2,2],[8],[1,1,1,1,2,2],[4,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[2,8,4,6,3,5,1,7],[4,3,1,7,2,8,6,5],[1,7,3,5,4,6,2,8],[1,2,6,5,4,3,7,8]],true>],282846,[66,1],[[9],[16],[29],[30],[37],[38],[51],[58]]>,[]>",
  "<\"8t17\",\"Ask Tim\",[\"a*x^8 + x^7 - 7*x^5 + 2*7*a*x^4 + 7*x^3 - x + a\"],[[5,2,8,4,3,6,7,1],[4,8,6,3,2,1,5,7],[3,2,1,4,8,6,7,5],[5,6,8,2,3,7,4,1],[3,7,1,6,8,4,2,5]],[100001],[32,11],[8,17],[[9],[19]],<839,1,40,{[2,2,2,2],[8],[4,4],[1,1,1,1,2,2],[1,1,1,1,4],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[4,8,6,1,7,3,5,2],[3,7,1,4,5,6,2,8],[3,2,1,4,8,6,7,5],[5,4,8,7,3,2,6,1],[3,4,1,7,8,2,6,5],[1,2,3,6,8,4,7,5]],true>,<[[5,2,8,4,3,6,7,1],[4,8,6,3,2,1,5,7],[3,2,1,4,8,6,7,5],[5,6,8,2,3,7,4,1],[3,7,1,6,8,4,2,5]],true>],386872,[838,1],[[46],[171],[246],[274],[348],[372],[390],[669]]>,[]>",
  "<\"8t18\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^8 + a*x^6 + a*x^2 + 1\"],[[3,2,1,4,5,8,7,6],[1,7,3,5,4,6,2,8],[2,1,5,6,3,4,8,7],[6,2,8,4,5,1,7,3],[1,5,3,7,2,6,4,8]],[100001],[32,27],[8,18],[[12],[25]],<103,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[3,2,1,4,5,8,7,6],[1,7,3,5,4,6,2,8],[2,1,5,6,3,4,8,7],[6,2,8,4,5,1,7,3],[1,5,3,7,2,6,4,8]],true>],633,[102,1],[[19],[21],[38],[49],[54],[65],[82],[84]]>,[]>",
  "<\"8t19\",\"Ask Tim\",[\"x^8 + x^6 + (a^2+1)*x^2 + (a^2+1)^2\"],[[2,3,4,1,8,5,6,7],[5,3,2,8,1,7,6,4],[3,4,1,2,7,8,5,6],[8,2,6,4,5,3,7,1],[8,7,6,5,4,3,2,1]],[100001],[32,6],[8,19],[[9],[19]],<107,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[1,1,2,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[3,2,1,4,5,8,7,6],[4,3,2,1,8,7,6,5],[1,7,3,5,4,6,2,8],[8,2,3,5,4,6,7,1],[8,2,6,4,5,3,7,1]],true>,<[[2,3,4,1,8,5,6,7],[5,3,2,8,1,7,6,4],[3,4,1,2,7,8,5,6],[8,2,6,4,5,3,7,1],[8,7,6,5,4,3,2,1]],true>],488,[106,1],[[9],[31],[34],[35],[72],[73],[76],[98]]>,[]>",
  "<\"8t20\",\"Ask Tim\",[\"3*x^8 + (a^2-5)*x^6 - 3*(a^2+25)*x^4 + (-a^2+125)*x^2 + 3*a^2\"],[[5,3,2,8,1,7,6,4],[4,3,2,1,8,7,6,5],[1,7,3,5,4,6,2,8],[1,2,6,5,4,3,7,8],[3,1,4,2,7,5,8,6]],[100001],[32,6],[8,20],[[9],[19]],<269,1,40,{[2,2,2,2],[1,1,1,1,2,2],[4,4]},[[1,2,3,4,5,6,7,8]],[<[[5,3,2,8,1,7,6,4],[4,3,2,1,8,7,6,5],[1,7,3,5,4,6,2,8],[1,2,6,5,4,3,7,8],[3,1,4,2,7,5,8,6]],true>],346414,[268,1],[[71],[99],[116],[131],[138],[153],[170],[198]]>,[]>",
  "<\"8t21\",\"Ask Tim\",[\"x^8 - 2*(a^2+2)*x^6 - a^2*x^4 + 2*(a^2+4)*x^2 + a^2+4\"],[[8,7,6,5,4,3,2,1],[1,7,6,4,5,3,2,8],[1,2,6,5,4,3,7,8],[2,1,5,6,3,4,8,7],[3,4,1,7,2,8,5,6]],[100001],[32,6],[8,21],[[9],[19]],<373,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[8,7,6,5,4,3,2,1],[1,7,6,4,5,3,2,8],[1,2,6,5,4,3,7,8],[2,1,5,6,3,4,8,7],[3,4,1,7,2,8,5,6]],true>],282846,[372,1],[[86],[93],[152],[171],[202],[221],[280],[287]]>,[]>",
  "<\"8t22\",\"Ask Tim\",[\"x^8 + (a^2-5)*x^6 - (a-3)*(a+3)*x^4 - 2^3*x^2 + 2^2\"],[[4,3,2,1,8,7,6,5],[5,3,2,8,1,7,6,4],[7,1,4,6,3,5,8,2],[8,2,3,5,4,6,7,1],[1,7,3,5,4,6,2,8],[7,1,5,3,6,4,8,2],[1,2,6,5,4,3,7,8]],[100001],[32,49],[8,22],[[16],[30]],<181,1,40,{[2,2,2,2],[1,1,1,1,2,2],[4,4],[1,1,1,1,1,1,1,1]},[[1,2,3,4,5,6,7,8]],[<[[4,3,2,1,8,7,6,5],[5,3,2,8,1,7,6,4],[7,1,4,6,3,5,8,2],[8,2,3,5,4,6,7,1],[1,7,3,5,4,6,2,8],[7,1,5,3,6,4,8,2],[1,2,6,5,4,3,7,8]],true>],200002,[180,1],[[35],[37],[44],[62],[119],[137],[144],[146]]>,[]>",
  "<\"8t23\",\"Ask Tim\",[\"x^8 + 2^2*a*x^6 + 2*3*11*(2*a-11)*x^4 + 3*(43*a+44)*x^2 + 32*a-803\"],[[8,2,7,5,4,6,3,1],[4,2,1,3,8,6,5,7],[6,1,4,7,2,5,8,3],[3,4,5,6,7,8,1,2],[5,6,7,8,1,2,3,4]],[100001],[48,29],[8,23],[[9],[19]],<37,2,40,{[2,2,2,2],[2,6],[8],[4,4],[1,1,3,3],[1,1,2,2,2]},[[1,7,6,8,5,3,2,4]],[<[[5,7,8,6,1,3,4,2],[3,2,8,5,7,6,4,1],[5,2,7,4,1,6,3,8],[1,2,7,8,5,6,3,4],[8,5,2,7,4,1,6,3]],true>,<[[8,2,7,5,4,6,3,1],[4,2,1,3,8,6,5,7],[6,1,4,7,2,5,8,3],[3,4,5,6,7,8,1,2],[5,6,7,8,1,2,3,4]],true>],1265,[2,33,1],[[1,0],[36,26],[8,26],[18,28],[36,0],[1,11],[29,11],[19,9]]>,[]>",
  "<\"8t24\",\"Ask Tim\",[\"x^8 + 2*x^4 + a*x^2 + 1\"],[[1,2,8,7,5,6,4,3],[1,3,2,4,5,7,6,8],[2,3,1,4,6,7,5,8],[4,6,7,1,8,2,3,5]],[100001],[48,48],[8,24],[[9],[19]],<41,3,40,{[2,2,2,2],[2,6],[4,4],[1,1,1,1,2,2],[1,1,3,3],[1,1,1,1,1,1,1,1]},[[2,8,3,5,6,4,7,1]],[<[[1,2,8,7,5,6,4,3],[1,3,2,4,5,7,6,8],[2,3,1,4,6,7,5,8],[4,6,7,1,8,2,3,5]],true>],11,[35,1,0,1],[[0,7,35],[0,8,35],[29,0,0],[29,15,29],[0,34,6],[0,33,6],[12,0,0],[12,26,12]]>,[]>",
  "<\"8t25\",\"Ask Tim\",[\"x^8 + 2^2*(2*a^7-2*a^6+a^5+11*a^4+2*a^3-18*a^2+8*a+6)*x^6 + 2^4*(a^10+a^9+2*a^8+7*a^7+15*a^6+8*a^5+13*a^4+8*a^3-31*a^2-88*a-36)*x^5 + 2*(8*a^14-24*a^13+148*a^12-8*a^11+127*a^10+1566*a^9+439*a^8+2220*a^7+7048*a^6+5656*a^5+4920*a^4+14012*a^3+11340*a^2+2732*a+316)*x^4 + 2^5*(2*a^17-12*a^16+55*a^15-102*a^14+163*a^13+147*a^12-124*a^11+815*a^10+1257*a^9+791*a^8+3525*a^7+4467*a^6+3742*a^5+7544*a^4+6800*a^3-550*a^2-2412*a-608)*x^3 + 2^2*(48*a^20-328*a^19+1616*a^18-4106*a^17+7902*a^16-3253*a^15-3393*a^14+25653*a^13+25821*a^12-19206*a^11+121932*a^10+169124*a^9+83746*a^8+198440*a^7+488128*a^6+417016*a^5+148556*a^4+43848*a^3+136512*a^2+123352*a+29592)*x^2 + 2^4*(16*a^23-124*a^22+636*a^21-1851*a^20+3795*a^19-3323*a^18-640*a^17+9051*a^16+2089*a^15-24396*a^14+51026*a^13+8214*a^12-95978*a^11+13109*a^10+58360*a^9-427988*a^8-584036*a^7-331376*a^6-900048*a^5-1913584*a^4-1684316*a^3-643924*a^2-95688*a-4024)*x + 256*a^26-1600*a^25+7504*a^24-16912*a^23+31496*a^22-12464*a^21+32737*a^20+6180*a^19+244678*a^18+193164*a^17+225065*a^16+794392*a^15+2715920*a^14+862232*a^13+593080*a^12+8972960*a^11+8883632*a^10-7135704*a^9+3026152*a^8+28484512*a^7+5926992*a^6-23207072*a^5+21056176*a^4+77797696*a^3+65774384*a^2+23777632*a+3256912\"],[[4,6,1,5,7,3,2,8],[2,1,8,5,4,7,6,3],[4,5,7,1,2,8,3,6],[8,3,2,6,7,4,5,1]],[100001],[56,11],[8,25],[[9],[19]],<11,7,40,{[2,2,2,2],[1,7]},[[1,5,6,7,8,4,2,3]],[<[[2,1,4,5,6,7,8,3],[2,3,1,4,5,6,7,8]],true>,<[[3,6,1,7,8,2,4,5],[5,6,4,8,2,1,3,7],[7,6,4,3,8,2,1,5],[8,3,2,6,7,4,5,1],[2,1,8,5,4,7,6,3]],true>,<[[4,6,2,1,8,7,5,3],[4,6,1,5,7,3,2,8],[3,8,1,7,6,5,4,2],[6,7,5,8,3,1,2,4],[2,1,8,5,4,7,6,3]],true>,<[[4,6,1,5,7,3,2,8],[2,1,8,5,4,7,6,3],[4,5,7,1,2,8,3,6],[8,3,2,6,7,4,5,1]],true>],1788908048212677029,[9,4,0,0,0,0,0,1],[[3,0,0,0,0,0,0],[8,7,3,3,2,10,2],[8,0,5,4,10,10,2],[7,1,5,6,5,9,4],[1,6,7,9,6,0,5],[1,9,0,9,9,8,5],[6,8,7,2,7,5,6],[10,2,6,0,5,2,9]]>,[]>",
  "<\"8t26\",\"Ask Tim\",[\"x^8 + 2^2*x^6 + (3*a+5)*x^4 + 2*(3*a+1)*x^2 - a\"],[[4,6,2,8,1,7,3,5],[1,7,6,4,5,3,2,8],[2,1,4,3,6,5,8,7],[1,2,6,5,4,3,7,8],[5,3,1,2,7,8,6,4]],[100001],[64,134],[8,26],[[9],[19]],<211,1,40,{[2,2,2,2],[8],[4,4],[1,1,1,1,2,2],[1,1,1,1,4],[1,1,2,2,2],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[4,6,2,8,1,7,3,5],[1,7,6,4,5,3,2,8],[2,1,4,3,6,5,8,7],[1,2,6,5,4,3,7,8],[5,3,1,2,7,8,6,4]],true>],40,[210,1],[[6],[54],[64],[79],[132],[147],[157],[205]]>,[]>",
  "<\"8t27\",\"Ask Tim\",[\"x^8 - a*x^6 + 3*(a-10)*x^4 + (a+40)*x^2 - 3*a+5\"],[[4,3,2,1,8,7,6,5],[5,3,2,1,8,7,6,4],[1,7,6,4,5,3,2,8],[1,2,3,5,4,6,7,8],[1,2,6,4,5,3,7,8],[2,5,1,3,6,8,4,7]],[100001],[64,32],[8,27],[[12],[25]],<197,1,40,{[2,2,2,2],[8],[4,4],[1,1,1,1,2,2],[1,1,2,2,2],[1,1,1,1,1,1,1,1],[1,1,1,1,1,1,2],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[4,3,2,1,8,7,6,5],[5,3,2,1,8,7,6,4],[1,7,6,4,5,3,2,8],[1,2,3,5,4,6,7,8],[1,2,6,4,5,3,7,8],[2,5,1,3,6,8,4,7]],true>],633,[196,1],[[29],[41],[60],[86],[111],[137],[156],[168]]>,[]>",
  "<\"8t28\",\"Ask Tim\",[\"x^8 - a*x^7 - x^6 + a*x^5 + 2^2*x^4 - a*x^3 - x^2 + a*x + 1\"],[[6,8,5,7,3,1,4,2],[1,3,2,4,8,6,7,5],[4,2,3,1,5,7,6,8],[1,5,8,4,2,6,7,3],[2,4,7,5,1,8,3,6],[1,2,8,4,5,7,6,3]],[100001],[64,32],[8,28],[[9],[19]],<509,1,40,{[2,2,2,2],[8],[1,1,1,1,2,2],[4,4],[1,1,2,4],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[6,8,5,7,3,1,4,2],[1,3,2,4,8,6,7,5],[4,2,3,1,5,7,6,8],[1,5,8,4,2,6,7,3],[2,4,7,5,1,8,3,6],[1,2,8,4,5,7,6,3]],true>],200002,[508,1],[[31],[42],[192],[197],[206],[337],[364],[395]]>,[]>",
  "<\"8t29\",\"Ask Tim\",[\"x^8 - x^6 + a*x^2 + a^2\"],[[8,4,3,7,2,6,5,1],[1,2,6,5,4,3,7,8],[1,7,3,5,4,6,2,8],[5,6,2,1,8,7,3,4],[8,7,3,4,5,6,2,1],[2,8,4,6,3,5,1,7]],[100001],[64,138],[8,29],[[9],[19]],<311,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[1,1,2,4]},[[1,2,3,4,5,6,7,8]],[<[[8,4,3,7,2,6,5,1],[1,2,6,5,4,3,7,8],[1,7,3,5,4,6,2,8],[5,6,2,1,8,7,3,4],[8,7,3,4,5,6,2,1],[2,8,4,6,3,5,1,7]],true>],28,[310,1],[[56],[111],[124],[127],[184],[187],[200],[255]]>,[]>",
  "<\"8t30\",\"Ask Tim\",[\"x^8 + (a-2)*(a+2)*x^6 - 2^2*(a^2-2)*x^4 + 2*(3*a^2-4)*x^2 - 3*a^2+4\"],[[7,1,4,6,3,5,8,2],[1,7,3,5,4,6,2,8],[3,4,7,8,1,2,5,6],[1,2,6,5,4,3,7,8],[1,7,5,6,3,4,2,8]],[100001],[64,34],[8,30],[[9],[19]],<571,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[1,1,1,1,4],[1,1,2,2,2],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[7,1,4,6,3,5,8,2],[1,7,3,5,4,6,2,8],[3,4,7,8,1,2,5,6],[1,2,6,5,4,3,7,8],[1,7,5,6,3,4,2,8]],true>],200002,[570,1],[[82],[94],[113],[196],[375],[458],[477],[489]]>,[]>",
  "<\"8t31\",\"Ask Tim\",[\"x^8 + 2^2*x^6 + (a+4)*x^4 + 2*a*x^2 + a+8\"],[[4,3,2,1,8,7,6,5],[3,4,8,7,2,1,5,6],[1,2,3,5,4,6,7,8],[1,7,3,4,5,6,2,8],[1,2,6,4,5,3,7,8],[8,2,3,4,5,6,7,1]],[100001],[64,138],[8,31],[[9],[19]],<541,1,40,{[2,2,2,2],[4,4],[1,1,1,1,2,2],[1,1,2,2,2],[1,1,1,1,1,1,2],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[4,3,2,1,8,7,6,5],[3,4,8,7,2,1,5,6],[1,2,3,5,4,6,7,8],[1,7,3,4,5,6,2,8],[1,2,6,4,5,3,7,8],[8,2,3,4,5,6,7,1]],true>],30,[540,1],[[8],[61],[82],[194],[347],[459],[480],[533]]>,[]>",
  "<\"8t32\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^8 - 2^3*x^6 + 2*3^2*x^4 + a^2\"],[[6,1,8,3,2,5,4,7],[5,6,3,4,1,2,7,8],[1,6,3,8,5,2,7,4],[1,6,7,4,5,2,3,8],[6,4,3,5,2,8,7,1]],[100001],[96,204],[8,32],[[12],[25]],<17,3,40,{[2,2,2,2],[2,6],[1,1,3,3],[4,4],[1,1,1,1,2,2]},[[3,2,4,1,7,6,8,5]],[<[[6,1,8,3,2,5,4,7],[5,6,3,4,1,2,7,8],[1,6,3,8,5,2,7,4],[1,6,7,4,5,2,3,8],[6,4,3,5,2,8,7,1]],true>],28,[14,1,0,1],[[11,15,16],[9,0,0],[13,9,2],[11,10,16],[6,2,1],[8,0,0],[4,8,15],[6,7,1]]>,[]>",
  "<\"8t33\",\"Ask Tim\",[\"x^8 + 2^3*x^7 + 2^4*x^6 + (a^2+108)*x^4 + 2^2*(a^2+108)*x^3 + 3^3*(a^2+108)\"],[[2,1,5,7,3,8,4,6],[4,2,3,6,8,1,5,7],[4,2,6,1,5,3,7,8],[3,8,1,6,7,4,5,2],[3,2,1,6,5,4,7,8],[6,7,4,3,8,1,2,5]],[100001],[96,70],[8,33],[[9],[19]],<13,3,40,{[2,2,2,2],[2,6],[1,1,3,3],[4,4],[1,1,1,1,2,2]},[[3,2,6,4,7,1,8,5]],[<[[4,2,6,1,5,3,7,8],[3,2,1,6,5,4,7,8],[4,2,3,6,5,1,7,8],[1,2,3,4,8,6,5,7],[2,1,5,7,3,8,4,6],[1,5,3,4,2,6,8,7],[1,7,3,4,8,6,2,5]],true>,<[[2,1,5,7,3,8,4,6],[4,2,3,6,8,1,5,7],[4,2,6,1,5,3,7,8],[3,8,1,6,7,4,5,2],[3,2,1,6,5,4,7,8],[6,7,4,3,8,1,2,5]],true>],532,[11,2,0,1],[[7,5,11],[8,0,0],[1,10,0],[6,0,0],[2,11,11],[8,11,2],[8,1,9],[4,1,6]]>,[]>",
  "<\"8t34\",\"Ask Tim\",[\"3^3*x^8 + 2^2*x^5 + x^4 + 2^4*a^2*x^2 + 2^3*a^2*x + a^2\"],[[7,4,5,2,3,8,1,6],[8,2,6,4,1,7,3,5],[8,2,3,5,4,6,7,1],[5,6,7,8,1,2,3,4],[5,2,3,8,1,6,7,4],[8,7,6,5,4,3,2,1]],[100001],[96,227],[8,34],[[9],[19]],<23,3,40,{[2,2,2,2],[4,4],[1,1,3,3],[1,1,1,1,2,2]},[[4,2,7,5,1,3,6,8]],[<[[5,2,3,4,8,6,7,1],[7,4,5,2,3,8,1,6],[4,2,3,5,1,6,7,8],[1,2,6,4,5,7,3,8],[1,6,3,4,5,7,2,8]],true>,<[[7,4,5,2,3,8,1,6],[8,2,6,4,1,7,3,5],[8,2,3,5,4,6,7,1],[5,6,7,8,1,2,3,4],[5,2,3,8,1,6,7,4],[8,7,6,5,4,3,2,1]],true>],203,[18,2,0,1],[[14,1,20],[16,0,0],[10,22,0],[8,13,4],[9,9,22],[17,13,11],[3,11,12],[15,0,0]]>,[]>",
  "<\"8t35\",\"Ask Tim\",[\"x^8 + 2*x^6 - x^2 + a\"],[[4,3,7,8,1,2,6,5],[1,2,3,5,4,6,7,8],[1,2,4,3,6,5,7,8],[1,2,6,4,5,3,7,8],[1,7,3,4,5,6,2,8],[8,2,3,4,5,6,7,1]],[100001],[128,928],[8,35],[[19],[35]],<397,1,40,{[2,2,2,2],[8],[1,1,1,1,2,2],[4,4],[1,1,1,1,4],[1,1,2,2,2],[1,1,2,4],[2,2,4]},[[1,2,3,4,5,6,7,8]],[<[[4,3,7,8,1,2,6,5],[1,2,3,5,4,6,7,8],[1,2,4,3,6,5,7,8],[1,2,6,4,5,3,7,8],[1,7,3,4,5,6,2,8],[8,2,3,4,5,6,7,1]],true>],7,[396,1],[[9],[74],[88],[122],[275],[309],[323],[388]]>,[]>",
  "<\"8t36\",\"Ask Tim\",[\"3^2*x^8 + 3^2*a*x^7 + 3^2*(a^2+12)*x^6 + 3^2*(a^3+12*a+8)*x^5 + 3^2*(a^4+12*a^2+8*a+54)*x^4 + 3^2*(a^5+12*a^3+8*a^2+54*a+56)*x^3 + (9*a^6+108*a^4+72*a^3+486*a^2+504*a+1228)*x^2 + (9*a^7+108*a^5+72*a^4+486*a^3+504*a^2+1228*a+888)*x + 9*a^8+108*a^6+72*a^5+486*a^4+504*a^3+1228*a^2+888*a+1369\"],[[8,4,2,3,1,6,7,5],[4,7,1,6,2,5,3,8],[3,8,1,5,4,7,6,2],[5,7,4,3,1,8,2,6],[6,4,7,2,8,1,3,5]],[100001],[168,43],[8,36],[[9],[19]],<11,3,40,{[2,2,2,2],[2,6],[1,7],[1,1,3,3]},[[7,4,3,8,5,1,6,2]],[<[[2,1,4,5,6,7,8,3],[2,3,1,4,5,6,7,8]],true>,<[[4,6,5,3,1,8,2,7],[4,5,1,8,7,2,6,3],[7,5,6,8,2,3,1,4],[5,7,4,3,1,8,2,6],[4,6,5,1,3,2,8,7]],true>,<[[8,4,2,3,1,6,7,5],[4,7,1,6,2,5,3,8],[3,8,1,5,4,7,6,2],[5,7,4,3,1,8,2,6],[6,4,7,2,8,1,3,5]],true>],600007,[9,2,0,1],[[9,4,10],[5,5,1],[10,0,0],[4,2,3],[3,0,0],[0,0,6],[0,7,6],[2,4,7]]>,[]>",
  "<\"8t37\",\"Ask Tim\",[\"2^2*3^3*x^8 + 2^2*3^3*x^7 + 7*(7*a^2+1)*x^2 + (7*a^2+1)*x + 7*a^2+1\"],[[2,1,6,8,7,3,5,4],[6,4,8,1,3,2,5,7]],[100001],[168,42],[8,37],[[9],[19]],<19,3,40,{[2,2,2,2],[1,7],[4,4],[1,1,3,3]},[[5,8,3,1,4,6,2,7]],[<[[2,1,4,5,6,7,8,3],[2,3,1,4,5,6,7,8]],true>,<[[6,4,8,2,7,1,5,3],[6,3,1,7,4,2,8,5],[6,5,8,7,2,1,4,3],[4,8,5,1,3,7,6,2],[2,1,7,8,6,5,3,4]],true>,<[[2,1,6,8,7,3,5,4],[6,4,8,1,3,2,5,7]],true>],388,[17,4,0,1],[[9,3,6],[12,15,16],[16,0,0],[11,15,2],[16,1,11],[15,0,0],[10,0,1],[0,4,2]]>,[]>",
  "<\"8t38\",\"Ask Tim\",[\"x^8 + 2^2*x^6 + a^2+27\"],[[2,4,3,1,6,8,7,5],[5,2,3,4,1,6,7,8],[2,1,4,3,6,5,8,7],[1,6,3,4,5,2,7,8],[1,2,3,8,5,6,7,4],[1,2,7,4,5,6,3,8]],[100001],[192,201],[8,38],[[9],[19]],<23,3,40,{[2,2,2,2],[2,6],[1,1,3,3],[4,4],[1,1,1,1,2,2],[1,1,6],[2,3,3],[1,1,1,1,1,1,2],[2,2,4]},[[2,8,3,5,6,4,7,1]],[<[[2,4,3,1,6,8,7,5],[5,2,3,4,1,6,7,8],[2,1,4,3,6,5,8,7],[1,6,3,4,5,2,7,8],[1,2,3,8,5,6,7,4],[1,2,7,4,5,6,3,8]],true>],28,[18,2,0,1],[[15,14,6],[1,5,7],[8,0,0],[18,19,13],[8,9,17],[22,18,16],[15,0,0],[5,4,10]]>,[]>",
  "<\"8t39\",\"Ask Tim\",[\"x^8 + a*x^6 + 1\"],[[4,3,1,2,8,7,5,6],[4,2,3,1,8,6,7,5],[8,3,5,2,4,7,1,6],[8,2,3,5,4,6,7,1]],[100001],[192,1493],[8,39],[[9],[19]],<29,3,40,{[2,2,2,2],[2,6],[4,4],[1,1,3,3],[1,1,1,1,2,2],[1,1,2,4]},[[1,7,4,6,5,3,8,2]],[<[[4,3,1,2,8,7,5,6],[4,2,3,1,8,6,7,5],[8,3,5,2,4,7,1,6],[8,2,3,5,4,6,7,1]],true>],633,[27,2,0,1],[[24,0,0],[5,22,1],[19,19,17],[4,3,13],[5,0,0],[24,7,28],[10,10,12],[25,26,16]]>,[]>",
  "<\"8t40\",\"Malle-Matzat's book (simplified)\",[\"x^8 - 2^3*x^6 + 2*3^2*x^4 + a\"],[[5,6,3,4,1,2,7,8],[3,5,2,8,7,1,6,4],[1,4,2,3,5,8,6,7],[1,7,4,6,5,3,8,2],[1,2,7,8,5,6,3,4],[1,6,4,3,5,2,8,7]],[100001],[192,1494],[8,40],[[19],[35]],<31,2,40,{[2,2,2,2],[2,6],[8],[1,1,3,3],[4,4],[1,1,1,1,2,2],[1,1,1,1,4],[1,1,2,2,2],[2,2,4]},[[8,6,3,5,4,2,7,1]],[<[[5,6,3,4,1,2,7,8],[3,5,2,8,7,1,6,4],[1,4,2,3,5,8,6,7],[1,7,4,6,5,3,8,2],[1,2,7,8,5,6,3,4],[1,6,4,3,5,2,8,7]],true>],7,[3,29,1],[[2,1],[21,10],[16,0],[27,1],[29,30],[10,21],[15,0],[4,30]]>,[]>",
  "<\"8t41\",\"Ask Tim\",[\"3^3*x^8 + 2^2*x^5 + x^4 + 2^4*a*x^2 + 2^3*a*x + a\"],[[1,8,3,4,5,7,6,2],[3,4,1,8,6,2,5,7],[1,5,3,6,8,7,4,2],[4,2,3,1,5,7,6,8],[1,3,2,4,8,6,7,5],[7,2,3,6,5,4,1,8],[1,5,8,4,2,6,7,3]],[100001],[192,955],[8,41],[[19],[35]],<19,3,40,{[2,2,2,2],[2,6],[4,4],[1,1,3,3],[1,1,1,1,2,2],[1,1,2,4]},[[7,3,8,1,5,6,4,2]],[<[[1,5,3,4,8,6,7,2],[3,7,1,5,4,8,2,6],[2,1,4,3,6,5,8,7],[1,5,8,4,2,6,7,3]],true>,<[[1,8,3,4,5,7,6,2],[3,4,1,8,6,2,5,7],[1,5,3,6,8,7,4,2],[4,2,3,1,5,7,6,8],[1,3,2,4,8,6,7,5],[7,2,3,6,5,4,1,8],[1,5,8,4,2,6,7,3]],true>],30,[17,4,0,1],[[14,4,2],[9,6,0],[18,12,1],[7,15,16],[11,0,0],[12,0,0],[5,0,1],[0,1,18]]>,[]>",
  "<\"8t42\",\"Ask Tim\",[\"3^2*x^8 + 2^3*3*x^7 + 2^4*x^6 + 2*3*a*x^4 + 2^3*a*x^3 + a^2-12*a+48\"],[[3,2,1,4,6,5,7,8],[5,2,6,4,1,3,7,8],[1,7,3,8,5,6,2,4],[8,3,2,5,4,7,6,1],[5,2,3,4,6,1,7,8],[1,8,3,7,5,6,4,2],[1,2,3,7,5,6,8,4]],[100001],[288,1025],[8,42],[[9],[19]],<23,3,40,{[1,1,1,1,1,3],[2,2,2,2],[2,6],[1,1,3,3],[4,4],[1,2,2,3]},[[6,8,3,4,1,5,2,7]],[<[[3,2,1,4,6,5,7,8],[5,2,6,4,1,3,7,8],[1,7,3,8,5,6,2,4],[8,3,2,5,4,7,6,1],[5,2,3,4,6,1,7,8],[1,8,3,7,5,6,4,2],[1,2,3,7,5,6,8,4]],true>],82,[18,2,0,1],[[22,7,7],[12,3,20],[4,0,0],[17,0,0],[22,11,7],[17,5,9],[16,6,0],[20,14,3]]>,[]>",
  "<\"8t43\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^8 - x^7 + 7*x^6 - a*x + a\"],[[4,7,5,1,3,8,2,6],[6,1,2,4,7,5,3,8]],[100001],[336,208],[8,43],[[9],[19]],<13,3,40,{[2,2,2,2],[1,7],[8],[1,1,3,3],[4,4],[1,1,6],[1,1,2,2,2]},[[4,5,2,6,3,1,7,8]],[<[[2,3,4,5,6,7,8,1],[2,1,3,4,5,6,7,8]],true>,<[[4,7,5,1,3,8,2,6],[6,1,2,4,7,5,3,8]],false>],8,[11,2,0,1],[[12,6,0],[5,2,1],[2,0,2],[11,4,9],[4,11,10],[0,3,4],[9,0,0],[10,0,0]]>,[]>",
  "<\"8t44\",\"Obvious 1-variable family C2wrSn: x^(2*n)+x^2+a in degree 8\",[\"x^8 + x^2 + a\"],[[3,1,4,2,7,5,8,6],[1,2,4,3,5,6,8,7],[1,2,7,4,5,6,3,8]],[100001],[384,5602],[8,44],[[19],[35]],<19,3,40,{[2,2,2,2],[2,6],[8],[1,1,3,3],[1,1,1,1,2,2],[4,4],[1,1,6],[1,1,1,1,4],[1,1,2,4],[2,3,3],[2,2,4]},[[3,2,8,5,7,6,4,1]],[<[[3,1,4,2,7,5,8,6],[1,2,4,3,5,6,8,7],[1,2,7,4,5,6,3,8]],true>],7,[17,4,0,1],[[15,1,9],[16,0,0],[6,4,8],[10,5,17],[4,18,10],[3,0,0],[13,15,11],[9,14,2]]>,[]>",
  "<\"8t45\",\"Ask Tim\",[\"x^8 + a*x^5 - 2^3*3*x^4 - 2^7*x^2 - 2^2*3*a*x + 2^4*3^2\"],[[4,2,3,6,5,1,7,8],[8,3,2,5,4,7,6,1],[3,5,1,7,2,8,4,6],[4,6,3,1,5,2,7,8]],[100001],[576,8654],[8,45],[[9],[19]],<29,3,40,{[1,1,1,1,1,3],[2,2,2,2],[2,6],[4,4],[1,1,3,3],[1,1,1,1,2,2],[1,1,2,4],[1,2,2,3]},[[1,4,5,6,7,2,3,8]],[<[[4,2,3,6,5,1,7,8],[8,3,2,5,4,7,6,1],[3,5,1,7,2,8,4,6],[4,6,3,1,5,2,7,8]],true>],66,[27,2,0,1],[[24,0,0],[14,10,2],[9,9,5],[23,25,16],[8,6,26],[26,23,11],[19,14,27],[22,0,0]]>,[]>",
  "<\"8t46\",\"G.W. Smith: Some polynomials over Q(t) and their Galois groups\",[\"x^8 - 2^2*3*x^6 + a*x^5 + 2*3^3*x^4 - 2*3*a*x^3 - 2^2*7*13*x^2 + 3^2*a*x + 3^4\"],[[6,2,3,1,8,4,5,7],[1,8,4,3,5,6,7,2],[1,7,3,6,2,4,8,5],[1,2,3,4,8,6,5,7],[1,2,6,3,5,4,7,8],[1,2,3,6,5,4,8,7],[5,3,2,8,1,7,4,6]],[100001],[576,8652],[8,46],[[9],[19]],<11,3,40,{[1,1,1,1,1,3],[8],[1,1,3,3],[4,4],[1,1,1,1,2,2],[1,1,2,4],[1,2,2,3],[2,2,4]},[[3,2,4,1,7,6,8,5]],[<[[6,2,3,1,8,4,5,7],[1,8,4,3,5,6,7,2],[1,7,3,6,2,4,8,5],[1,2,3,4,8,6,5,7],[1,2,6,3,5,4,7,8],[1,2,3,6,5,4,8,7],[5,3,2,8,1,7,4,6]],true>],66,[9,2,0,1],[[6,5,4],[2,0,0],[4,4,8],[3,2,10],[5,6,7],[9,0,0],[7,7,3],[8,9,1]]>,[]>",
  "<\"8t47\",\"Ask Tim\",[\"x^8 + 2*x^5 + x^2 + a\"],[[2,1,5,6,3,4,8,7],[5,2,3,4,6,8,7,1],[5,2,3,4,1,6,7,8]],[100001],[1152,0],[8,47],[[9],[19]],<37,2,40,{[1,1,1,2,3],[2,2,2,2],[2,6],[8],[1,1,3,3],[4,4],[1,1,1,1,2,2],[1,1,2,2,2],[1,1,2,4],[1,2,2,3],[1,1,1,1,1,1,2],[1,3,4],[2,2,4]},[[5,3,2,4,1,8,7,6]],[<[[2,1,5,6,3,4,8,7],[5,2,3,4,6,8,7,1],[5,2,3,4,1,6,7,8]],true>],7,[2,33,1],[[3,25],[0,34],[25,3],[30,0],[29,12],[2,28],[19,0],[3,9]]>,[]>",
  "<\"8t48\",\"Ask Tim\",[\"x^8 + 3^2*x^6 + 2*x^5 + a*x^4 + 2*x^3 + 17*x^2 - 2^3*x + 1\"],[[5,6,4,3,1,2,8,7],[6,4,2,8,1,7,5,3],[5,4,6,2,1,3,8,7],[4,5,7,1,2,8,3,6],[3,8,1,7,6,5,4,2]],[100001],[1344,11686],[8,48],[[9],[19]],<41,3,40,{[2,2,2,2],[2,6],[1,7],[4,4],[1,1,3,3],[1,1,1,1,2,2],[1,1,2,4]},[[7,6,3,2,1,4,5,8]],[<[[2,1,4,5,6,7,8,3],[2,3,1,4,5,6,7,8]],true>,<[[5,6,4,3,1,2,8,7],[6,4,2,8,1,7,5,3],[5,4,6,2,1,3,8,7],[4,5,7,1,2,8,3,6],[3,8,1,7,6,5,4,2]],true>],30,[35,1,0,1],[[37,10,0],[6,2,0],[4,0,0],[23,3,5],[40,15,25],[30,36,36],[34,16,16],[31,0,0]]>,[]>",
  "<\"8t49\",\"See Malle-Matzat p492 or Serre Topics in GT p44\",[\"7*x^8 + 2^3*x^7 + 7*a^2+1\"],[[2,1,4,5,6,7,8,3],[2,3,1,4,5,6,7,8]],[100001],[20160,0],[8,49],[[9],[19]],<593,3,40,{[2,6],[1,7],[4,4],[1,1,2,4],[1,2,2,3],[1,1,1,5],[3,5]},0,[<[[2,1,4,5,6,7,8,3],[2,3,1,4,5,6,7,8]],true>],229,[590,6,0,1],[[94,0,0],[305,0,0],[55,181,117],[482,460,150],[259,434,168],[226,571,308],[131,189,507],[219,537,529]]>,[]>",
  "<\"8t50\",\"Obvious 1-variable family Sn: x^n+x+a in degree 8\",[\"x^8 + x + a\"],[[2,3,4,5,6,7,8,1],[2,1,3,4,5,6,7,8]],[100001],[40320,0],[8,50],[[9],[19]],<173,2,40,{[1,2,5],[2,6],[1,7],[8],[1,1,3,3],[1,1,6],[1,1,1,1,4],[1,1,2,2,2],[1,2,2,3],[2,3,3],[3,5],[1,3,4]},0,[<[[2,3,4,5,6,7,8,1],[2,1,3,4,5,6,7,8]],true>],8,[2,169,1],[[170,135],[18,38],[60,100],[14,28],[114,73],[126,145],[47,0],[143,0]]>,[]>",
  "<\"9t1\",\"Ask Tim\",[\"a^2*x^9 - 3^3*(a^6+267*a^4+90*a^2+3)*x^7 + 2*3^3*(a-2)*(a+2)*(a^6+267*a^4+90*a^2+3)*x^6 + 2^3*3^5*(31*a^2+7)*(a^6+267*a^4+90*a^2+3)*x^5 - 2^4*3^5*(31*a^4-80*a^2-46)*(a^6+267*a^4+90*a^2+3)*x^4 - 2^4*3^4*(37257*a^4+16363*a^2+891)*(a^6+267*a^4+90*a^2+3)*x^3 + 2^5*3^7*(a^6+267*a^4+90*a^2+3)*(961*a^6-4897*a^4-2475*a^2-448)*x^2 + 2^6*3^6*(15*a^2+4)*(17830*a^4+8439*a^2-999)*(a^6+267*a^4+90*a^2+3)*x - 2^7*3^5*(15*a^2+4)^2*(18*a^2-143*a-27)*(18*a^2+143*a-27)*(a^6+267*a^4+90*a^2+3)\"],[[4,1,6,3,2,8,5,9,7],[6,3,9,8,4,7,1,5,2]],[100001],[9,1],[9,1],[[9],[19]],<53,3,40,{[9],[3,3,3],[1,1,1,1,1,1,1,1,1]},[[6,3,9,8,4,7,1,5,2]],[<[[1,9,2,4,5,6,7,8,3],[7,2,3,4,5,1,6,8,9],[1,2,3,8,4,6,7,5,9],[4,1,6,2,9,8,5,3,7]],true>,<[[4,1,6,3,2,8,5,9,7],[7,3,9,4,5,1,6,8,2],[1,3,9,5,8,6,7,4,2]],true>,<[[4,1,6,3,2,8,5,9,7],[6,3,9,8,4,7,1,5,2]],true>],10392616756414985,[51,3,0,1],[[25,24,39],[36,46,18],[1,29,27],[11,3,32],[35,33,44],[36,16,18],[45,13,49],[7,17,30],[16,31,8]]>,[]>",
  "<\"9t2\",\"Ask Tim\",[\"x^9 - 3*(6*a^2+5)*x^7 + 2*3*a*x^6 + 3^2*(9*a^4+15*a^2+7)*x^5 - 2^2*3*a*(6*a^2+5)*x^4 + (-90*a^4-192*a^2-85)*x^3 + 2*3^3*a*x^2 + 3*(3*a^4+25*a^2+12)*x + 2^3*a^3\"],[[9,5,1,7,6,2,8,4,3],[6,8,5,3,4,7,1,9,2]],[100001],[9,2],[9,2],[[9],[19]],<13,3,40,{[3,3,3],[1,1,1,1,1,1,1,1,1]},[[4,1,8,2,9,3,5,6,7]],[<[[9,5,1,7,6,2,8,4,3],[6,8,5,3,4,7,1,9,2]],true>],848537,[11,2,0,1],[[1,6,4],[6,12,11],[4,1,3],[6,8,11],[8,12,6],[5,4,7],[3,0,12],[4,8,3],[2,1,8]]>,[]>",
  "<\"9t3\",\"Ask Tim\",[\"x^9 + a*x^7 + (-5*a-6)*x^6 + (7*a+9)*x^5 + (a+18)*x^4 - 2*(4*a+39)*x^3 + 2^2*(a+36)*x^2 - 2^4*3^2*x + 2^6\"],[[2,1,7,9,5,8,3,6,4],[5,3,8,6,2,7,1,9,4],[3,9,4,1,8,5,2,6,7]],[100001],[18,1],[9,3],[[9],[19]],<83,3,40,{[9],[1,2,2,2,2],[3,3,3],[1,1,1,1,1,1,1,1,1]},[[4,7,1,3,6,8,9,5,2]],[<[[2,1,7,9,6,5,3,8,4],[1,2,3,4,6,8,7,5,9],[1,7,3,4,5,6,9,8,2],[3,2,4,1,5,6,7,8,9],[6,3,5,8,2,7,1,9,4]],true>,<[[2,1,7,9,5,8,3,6,4],[7,8,2,9,4,3,5,1,6],[3,2,4,1,6,8,7,5,9],[3,7,4,1,5,6,9,8,2]],true>,<[[2,1,7,9,5,8,3,6,4],[5,3,8,6,2,7,1,9,4],[3,9,4,1,8,5,2,6,7]],true>],633,[81,3,0,1],[[73,11,73],[67,0,58],[78,69,34],[45,3,59],[75,77,18],[28,22,36],[69,78,59],[14,67,29],[49,5,49]]>,[]>",
  "<\"9t4\",\"Ask Tim\",[\"x^9 + (a^2+a+7)*x^7 + (a^2+a+4)*x^6 + 2*(a^2+a+7)*x^5 + 2*(a^2+a+7)*x^4 + (a^2+a+10)*x^3 + (a^2+a+7)*x^2 - 1\"],[[1,3,2,5,4,6,8,7,9],[2,6,8,9,3,4,1,5,7],[5,2,9,4,1,8,7,6,3]],[100001],[18,3],[9,4],[[9],[19]],<19,3,40,{[1,1,1,2,2,2],[3,3,3],[3,6],[1,1,1,1,1,1,1,1,1]},[[4,3,9,5,1,7,8,6,2]],[<[[1,3,2,5,4,6,8,7,9],[2,6,8,9,3,4,1,5,7],[5,2,9,4,1,8,7,6,3]],true>],200004,[17,4,0,1],[[15,18,8],[5,1,9],[15,4,8],[1,4,17],[3,16,13],[16,4,6],[15,3,8],[7,12,5],[18,14,2]]>,[]>",
  "<\"9t5\",\"Ask Tim\",[\"(a^2+4)*x^9 + 3^3*a*x^7 - 3*(a^2-9*a+4)*x^6 + 2*3^3*a*x^5 + 2*3^3*a*x^4 + 3*(a^2+9*a+4)*x^3 + 3^3*a*x^2 - a^2-4\"],[[1,3,2,5,4,9,8,7,6],[2,1,3,8,6,5,9,4,7],[4,7,6,1,5,3,2,9,8]],[100001],[18,4],[9,5],[[9],[19]],<13,3,40,{[1,2,2,2,2],[3,3,3],[1,1,1,1,1,1,1,1,1]},[[4,6,7,5,1,8,9,2,3]],[<[[1,3,2,5,4,9,8,7,6],[2,1,3,8,6,5,9,4,7],[4,7,6,1,5,3,2,9,8]],true>],28844702937,[11,2,0,1],[[0,11,12],[0,5,9],[0,10,5],[1,2,3],[3,0,11],[4,8,12],[8,3,11],[12,0,5],[11,0,10]]>,[]>",
  "<\"9t6\",\"Ask Tim\",[\"(2^10*3^2*(3*a-1)^4*(3*a+1)^4)*x^9 - 2^7*3^4*(3*a-1)^2*(3*a+1)^2*(a^2+3)*(7*a^2-4*a+1)*(7*a^2+4*a+1)*x^7 - 2^7*3^2*5*(3*a-1)^2*(3*a+1)^2*(a^2+3)*(7*a^2-4*a+1)*(7*a^2+4*a+1)*x^6 + 2^2*3^3*(a^2+3)*(7*a^2-4*a+1)*(7*a^2+4*a+1)*(1323*a^6+3267*a^4+9*a^2+73)*x^5 + (2^3*3^4*5*(a^2+3)^2*(7*a^2-4*a+1)^2*(7*a^2+4*a+1)^2)*x^4 + (3^4*17*(a^2+3)^2*(7*a^2-4*a+1)^2*(7*a^2+4*a+1)^2)*x^3 + (3^2*31*(a^2+3)^2*(7*a^2-4*a+1)^2*(7*a^2+4*a+1)^2)*x^2 + (3^3*(a^2+3)^2*(7*a^2-4*a+1)^2*(7*a^2+4*a+1)^2)*x + (a^2+3)^2*(7*a^2-4*a+1)^2*(7*a^2+4*a+1)^2\"],[[2,6,4,7,9,3,5,1,8],[5,2,1,4,3,7,8,6,9],[1,4,3,9,5,8,6,7,2]],[100001],[27,4],[9,6],[[9],[19]],<17,3,40,{[9],[1,1,1,3,3],[3,3,3],[1,1,1,1,1,1,1,1,1]},[[5,4,1,9,3,6,7,8,2]],[<[[3,2,5,4,1,6,7,8,9],[1,2,3,4,5,7,8,6,9],[6,1,7,3,8,2,4,9,5],[1,4,3,9,5,6,7,8,2]],true>,<[[2,6,4,7,9,3,5,1,8],[5,2,1,4,3,7,8,6,9],[1,4,3,9,5,8,6,7,2]],true>],178196254666098443,[14,1,0,1],[[2,12,10],[9,4,1],[12,14,8],[1,9,6],[6,8,16],[7,0,0],[4,0,0],[12,0,0],[15,4,10]]>,[]>",
  "<\"9t7\",\"Malle-Matzat's book\",[\"2^2*x^9 + 2^2*3^3*x^8 - 3^3*(3*a^2+49)*x^7 + 2^5*3^3*x^6 + 3^4*(11*a^2+177)*x^5 + 2^3*3^5*x^4 - 3^4*(19*a^2+321)*x^3 + 3^6*(a^2+15)*x - 2^2*3^6\"],[[2,3,1,8,7,4,9,6,5],[1,7,4,9,5,2,6,8,3],[8,2,9,3,1,6,7,5,4]],[100001],[27,3],[9,7],[[9],[19]],<59,3,40,{[1,1,1,3,3],[3,3,3],[1,1,1,1,1,1,1,1,1]},[[8,7,3,4,1,2,6,5,9]],[<[[1,6,3,4,5,7,2,8,9],[1,2,4,9,5,6,7,8,3],[5,2,3,4,8,6,7,1,9],[2,3,1,8,7,4,9,6,5]],true>,<[[2,3,1,8,7,4,9,6,5],[1,7,4,9,5,2,6,8,3],[8,2,9,3,1,6,7,5,4]],true>],1800019,[57,5,0,1],[[53,54,3],[6,27,35],[41,0,0],[46,0,0],[13,29,50],[37,34,3],[38,57,21],[4,35,6],[3,0,0]]>,[]>",
  "<\"9t8\",\"Ask Tim\",[\"x^9 + a*x^7 + (a-3)*x^6 + 2*a*x^5 + 2*a*x^4 + (a+3)*x^3 + a*x^2 - 1\"],[[1,6,3,8,9,2,7,4,5],[1,2,7,9,8,6,3,5,4],[2,1,4,3,5,6,9,8,7],[3,4,1,2,5,8,7,6,9]],[100001],[36,10],[9,8],[[12],[25]],<17,3,40,{[1,1,1,2,2,2],[1,2,2,2,2],[3,3,3],[3,6]},[[3,4,7,9,6,8,1,5,2]],[<[[1,6,3,8,9,2,7,4,5],[1,2,7,9,8,6,3,5,4],[2,1,4,3,5,6,9,8,7],[3,4,1,2,5,8,7,6,9]],true>],633,[14,1,0,1],[[1,11,14],[9,14,7],[7,10,6],[12,5,3],[7,6,13],[7,9,13],[1,13,14],[15,2,8],[9,15,7]]>,[]>",
  "<\"9t9\",\"Malle-Matzat's book (simplified)\",[\"x^9 - 2*3^2*x^7 - 2^2*3*x^6 + 3^4*x^5 + 2^2*3^2*x^4 + 3*(a^2+88)*x^3 + 2^4*3^2*x - 2^6\"],[[8,2,5,7,1,4,9,3,6],[6,5,4,3,2,1,9,8,7],[3,2,1,9,8,7,6,5,4]],[100001],[36,9],[9,9],[[12],[25]],<17,4,40,{[1,2,2,2,2],[3,3,3],[1,4,4]},[[6,3,9,4,1,7,5,2,8]],[<[[8,2,5,7,1,4,9,3,6],[6,5,4,3,2,1,9,8,7],[3,2,1,9,8,7,6,5,4]],true>],89,[3,10,7,0,1],[[9,12,9,7],[10,5,12,10],[15,0,13,0],[14,0,0,0],[8,3,10,3],[12,14,7,14],[11,5,8,10],[16,9,12,4],[7,3,14,3]]>,[]>",
  "<\"9t10\",\"Ask Tim\",[\"x^9 + 3^2*x^7 - 3^2*a*x^6 + 3^2*(3*a^2+4)*x^4 - 3*7*(3*a^2+4)*x^3 + 2*3^3*(3*a^2+4)*x^2 - 3^3*(a+2)*(3*a^2+4)*x + (3*a^2+4)*(3*a^2+18*a+40)\"],[[3,5,1,8,2,9,7,4,6],[5,3,4,8,6,7,9,1,2],[7,2,1,9,4,6,3,8,5],[1,8,3,9,4,2,7,6,5]],[100001],[54,6],[9,10],[[9],[19]],<41,3,40,{[9],[1,2,6],[1,1,1,3,3],[1,2,2,2,2],[1,1,1,1,1,1,1,1,1]},[[7,2,1,9,4,6,3,8,5]],[<[[1,6,3,4,5,8,7,2,9],[3,4,1,2,6,5,7,9,8],[1,2,3,9,4,6,7,8,5],[2,5,6,3,1,4,8,9,7],[7,2,1,4,5,6,3,8,9]],true>,<[[3,5,1,8,2,9,7,4,6],[5,3,4,8,6,7,9,1,2],[7,2,1,9,4,6,3,8,5],[1,8,3,9,4,2,7,6,5]],true>],306,[35,1,0,1],[[30,1,4],[39,0,0],[36,39,13],[25,1,17],[28,2,1],[5,0,0],[16,1,24],[38,0,0],[29,38,23]]>,[]>",
  "<\"9t11\",\"Ask Tim\",[\"3^4*x^9 - 3^5*x^7 - 2*3^4*x^6 + 3^3*(a^2+12)*x^3 + 2*3^3*(a^2+12)*x^2 + 2^2*3^2*(a^2+12)*x + 2^3*(a^2+12)\"],[[8,7,4,3,9,6,2,1,5],[7,8,1,2,9,5,3,4,6],[2,5,6,3,1,4,7,8,9],[2,5,3,4,1,6,9,7,8]],[100001],[54,5],[9,11],[[9],[19]],<19,3,40,{[1,2,6],[1,1,1,3,3],[1,2,2,2,2],[3,3,3],[1,1,1,1,1,1,1,1,1]},[[2,5,3,4,1,6,9,7,8]],[<[[2,5,3,4,1,6,7,8,9],[1,2,4,6,5,3,7,8,9],[1,2,3,4,5,6,8,9,7],[8,7,4,3,9,6,2,1,5],[3,4,7,8,6,9,1,2,5]],true>,<[[8,7,4,3,9,6,2,1,5],[7,8,1,2,9,5,3,4,6],[2,5,6,3,1,4,7,8,9],[2,5,3,4,1,6,9,7,8]],true>],185,[17,4,0,1],[[15,14,8],[14,15,10],[4,0,0],[8,0,0],[9,9,1],[7,0,0],[1,0,17],[2,11,15],[16,8,6]]>,[]>",
  "<\"9t12\",\"Ask Tim\",[\"x^9 - a*x^6 - 2*3^3*x^5 + 3*a*x^4 - 2^3*3^3*x^3 - 3*a*x^2 - 3^5*x + a\"],[[1,8,4,3,5,6,9,2,7],[1,3,9,8,5,6,4,7,2],[9,8,4,6,2,3,1,5,7],[5,3,9,7,6,1,8,4,2]],[100001],[54,8],[9,12],[[9],[19]],<47,3,40,{[1,1,1,2,2,2],[1,1,1,3,3],[3,3,3],[3,6]},[[1,9,2,7,5,6,8,4,3]],[<[[1,9,2,4,5,6,7,8,3],[8,3,9,1,4,7,5,6,2],[1,2,3,8,5,6,4,7,9],[9,1,5,4,2,3,7,8,6],[5,3,9,7,6,1,8,4,2]],true>,<[[1,8,4,3,5,6,9,2,7],[1,3,9,8,5,6,4,7,2],[9,8,4,6,2,3,1,5,7],[5,3,9,7,6,1,8,4,2]],true>],66,[42,3,0,1],[[14,0,0],[3,30,34],[6,7,12],[29,21,13],[24,0,0],[7,0,0],[30,36,37],[44,37,44],[31,10,1]]>,[]>",
  "<\"9t13\",\"Ask Tim\",[\"x^9 + 3^2*x^8 + 3^3*x^7 + 3^3*x^6 + (-a^2-108)*x^3 - 3*(a^2+108)*x^2 + 2^2*(a^2+108)\"],[[5,2,4,3,1,6,7,9,8],[7,1,5,6,9,8,2,4,3],[5,3,4,2,6,1,9,7,8],[5,2,3,4,6,1,8,9,7]],[100001],[54,5],[9,13],[[9],[19]],<41,3,40,{[1,1,1,2,2,2],[1,1,1,3,3],[3,3,3],[3,6]},[[5,2,3,4,6,1,8,9,7]],[<[[1,2,4,3,6,5,8,7,9],[2,7,9,8,3,4,5,1,6],[5,2,3,4,6,1,7,8,9],[1,3,4,2,5,6,7,8,9],[1,2,3,4,5,6,8,9,7]],true>,<[[5,2,4,3,1,6,7,9,8],[7,1,5,6,9,8,2,4,3],[5,3,4,2,6,1,9,7,8],[5,2,3,4,6,1,8,9,7]],true>],74,[35,1,0,1],[[18,28,8],[11,0,0],[24,0,0],[3,0,0],[15,19,24],[5,35,9],[35,6,13],[2,22,25],[1,13,3]]>,[]>",
  "<\"9t14\",\"Ask Tim\",[\"x^9 + 2^2*3^2*(a^8+2*a^6-a^4-2*a^2-1)*x^7 - 2^3*3*(a^10+a^9-14*a^8+6*a^7-54*a^6+14*a^5-50*a^4+15*a^3-13*a^2+6*a+5)*x^6 + 2*3^3*(8*a^16+56*a^14+12*a^13+141*a^12+76*a^11+125*a^10+180*a^9-40*a^8+196*a^7-107*a^6+92*a^5-16*a^4+4*a^3+37*a^2-8*a+11)*x^5 - 2^3*3^2*(8*a^18+8*a^17+66*a^16+64*a^15+254*a^14+146*a^13+659*a^12-62*a^11+1283*a^10-738*a^9+1712*a^8-1178*a^7+1335*a^6-814*a^5+478*a^4-234*a^3-3*a^2-12*a-31)*x^4 + 2^2*3*(144*a^24+2160*a^22-216*a^21+14299*a^20-2848*a^19+55233*a^18-16204*a^17+138013*a^16-52064*a^15+231930*a^14-103332*a^13+260907*a^12-129548*a^11+185199*a^10-99892*a^9+67763*a^8-42652*a^7-290*a^6-6400*a^5-8671*a^4+1524*a^3-1387*a^2+456*a+355)*x^3 - 2^3*3^3*(4*a^10+4*a^9+25*a^8+24*a^7+54*a^6+56*a^5+43*a^4+60*a^3+2*a^2+24*a-7)*(4*a^16+37*a^14-3*a^13+141*a^12-19*a^11+283*a^10-45*a^9+316*a^8-49*a^7+191*a^6-23*a^5+58*a^4-a^3+8*a^2+2*a+1)*x^2 + (-3^2*(11*a^8+58*a^6+97*a^4+50*a^2+7)*(4*a^10+4*a^9+25*a^8+24*a^7+54*a^6+56*a^5+43*a^4+60*a^3+2*a^2+24*a-7)^2)*x - 2^3*(4*a^10+4*a^9+25*a^8+24*a^7+54*a^6+56*a^5+43*a^4+60*a^3+2*a^2+24*a-7)^3\"],[[8,2,1,7,4,5,6,9,3],[5,2,4,8,9,3,1,6,7],[9,2,8,6,7,4,5,3,1],[9,1,7,3,8,5,4,6,2],[8,5,9,1,7,3,2,4,6]],[100001],[72,41],[9,14],[[9],[19]],<11,4,40,{[1,2,2,2,2],[3,3,3],[1,4,4],[1,1,1,1,1,1,1,1,1]},[[8,3,4,9,1,6,5,7,2]],[<[[1,2,4,5,6,7,8,9,3],[2,3,1,4,5,6,7,8,9]],true>,<[[3,2,5,4,1,6,9,7,8],[6,2,5,1,8,9,3,7,4],[8,2,1,7,4,5,6,9,3],[9,2,8,6,7,4,5,3,1],[9,1,7,3,8,5,4,6,2],[6,8,2,9,4,7,1,3,5]],false>,<[[8,2,1,7,4,5,6,9,3],[5,2,4,8,9,3,1,6,7],[9,2,8,6,7,4,5,3,1],[9,1,7,3,8,5,4,6,2],[8,5,9,1,7,3,2,4,6]],true>],1200048000840007200012,[2,10,8,0,1],[[4,3,0,9],[10,3,8,9],[9,9,1,6],[7,1,4,10],[5,3,6,3],[7,0,0,0],[3,4,10,5],[9,1,6,5],[1,9,9,8]]>,[]>",
  "<\"9t15\",\"Ask Tim\",[\"x^9 - 2^2*3^2*x^7 - 3*(a^6+2*a^5+5*a^4+16*a^2+32*a+24)*x^6 - 3^3*(a^6-2*a^4+16*a^2-18)*x^5 + 3^2*(5*a^6+10*a^5+31*a^4+80*a^2+160*a+552)*x^4 + 3*(a^12+4*a^11+14*a^10+20*a^9+48*a^8+56*a^7+426*a^6+560*a^5+892*a^4-128*a^3+3232*a^2+3840*a+5940)*x^3 + 3^3*(a^12+2*a^11+6*a^10+8*a^9+40*a^8+64*a^7+165*a^6+170*a^5+493*a^4+512*a^3+1104*a^2+672*a+1752)*x^2 + 3^2*(17*a^12+32*a^11-2*a^10+4*a^9+624*a^8+952*a^7+117*a^6+112*a^5+6038*a^4+7040*a^3+2384*a^2+768*a+6489)*x - a^18-6*a^17+40*a^15-48*a^14-384*a^13+205*a^12+1998*a^11-738*a^10-8232*a^9+7032*a^8+34080*a^7-3985*a^6-64194*a^5+63609*a^4+197632*a^3-5904*a^2-99360*a+57240\"],[[4,6,3,2,1,9,5,7,8],[7,1,3,5,8,4,9,6,2],[9,7,3,8,6,5,2,4,1],[9,6,1,5,7,8,4,2,3],[4,3,7,6,8,1,2,9,5]],[100001],[72,39],[9,15],[[9],[19]],<11,4,40,{[1,2,2,2,2],[3,3,3],[1,4,4],[1,1,1,1,1,1,1,1,1],[1,8]},[[5,3,9,4,6,7,1,2,8]],[<[[2,3,4,5,6,7,8,9,1],[2,1,3,4,5,6,7,8,9]],true>,<[[7,4,3,9,5,6,8,1,2],[7,9,5,2,6,3,8,1,4],[7,1,3,5,8,4,9,6,2],[4,3,7,6,8,1,2,9,5],[6,2,3,1,8,4,7,9,5],[5,1,9,7,2,4,3,6,8]],false>,<[[2,1,3,8,5,6,9,4,7],[6,4,3,7,1,9,8,2,5],[4,5,3,9,7,2,6,1,8],[9,7,3,8,6,5,2,4,1],[3,8,9,7,4,2,5,6,1],[8,4,6,9,3,5,1,7,2]],true>,<[[4,6,3,2,1,9,5,7,8],[7,1,3,5,8,4,9,6,2],[9,7,3,8,6,5,2,4,1],[9,6,1,5,7,8,4,2,3],[4,3,7,6,8,1,2,9,5]],true>],28845760615,[2,10,8,0,1],[[5,2,0,8],[0,3,7,3],[1,4,9,5],[4,0,0,0],[7,2,2,5],[4,2,1,0],[6,5,8,9],[5,2,9,7],[1,2,8,7]]>,[]>",
  "<\"9t16\",\"Ask Tim\",[\"x^9 + 2*x^7 - 3*x^6 + x^5 - x^4 + a*x^3 - x - 1\"],[[5,6,2,4,9,8,1,3,7],[9,6,8,4,5,2,7,3,1],[3,4,1,2,6,5,7,8,9],[1,5,3,6,2,4,7,9,8]],[100001],[72,40],[9,16],[[9],[19]],<13,4,40,{[1,1,1,2,2,2],[1,2,2,2,2],[3,3,3],[3,6],[1,4,4],[1,1,1,1,1,1,1,1,1]},[[8,4,9,6,2,5,7,3,1]],[<[[5,6,2,4,9,8,1,3,7],[9,6,8,4,5,2,7,3,1],[3,4,1,2,6,5,7,8,9],[1,5,3,6,2,4,7,9,8]],true>],11,[2,12,3,0,1],[[1,8,6,7],[11,5,1,0],[0,5,7,6],[2,7,9,2],[1,0,6,6],[11,1,10,5],[12,0,0,0],[0,1,3,11],[1,12,10,2]]>,[]>",
  "<\"9t17\",\"Ask Tim\",[\"x^9 + a*x^8 - 2^2*3^2*x^7 - 2^2*5*a*x^6 + 2*3^2*19*x^5 + 2*3*17*a*x^4 - 2^2*3^2*5^2*x^3 - 2^2*3*7*a*x^2 + 3^4*x + a\"],[[1,2,3,4,5,8,7,9,6],[2,6,4,9,8,1,5,7,3],[3,2,7,4,5,6,1,8,9],[1,4,3,5,2,6,7,8,9]],[100001],[81,7],[9,17],[[9],[19]],<11,3,40,{[9],[1,1,1,3,3],[3,3,3],[1,1,1,1,1,1,3]},[[1,5,3,2,4,9,7,6,8]],[<[[1,2,3,4,5,8,7,9,6],[2,6,4,9,8,1,5,7,3],[3,2,7,4,5,6,1,8,9],[1,4,3,5,2,6,7,8,9]],true>],200002,[9,2,0,1],[[0,0,0],[3,9,3],[8,0,0],[2,2,5],[3,0,3],[8,2,8],[3,0,0],[9,9,6],[8,0,8]]>,[]>",
  "<\"9t18\",\"Ask Tim\",[\"2^2*x^9 + a*x^7 + 2^2*3*x^6 + 2*a*x^4 - 3*5*x^3 + a*x + 2^2\"],[[1,2,3,5,4,8,9,6,7],[1,3,2,8,6,5,7,4,9],[6,5,7,2,4,8,9,1,3],[3,1,2,8,6,7,5,9,4],[1,2,3,8,7,5,6,9,4]],[100001],[108,17],[9,18],[[16],[30]],<137,3,40,{[1,1,1,2,2,2],[1,2,6],[1,1,1,3,3],[1,2,2,2,2],[3,3,3],[3,6]},[[1,2,3,9,6,7,5,4,8]],[<[[1,2,3,4,6,7,5,8,9],[6,5,7,2,4,8,9,1,3],[2,3,1,4,5,6,7,8,9],[8,4,9,2,5,6,7,1,3],[1,2,3,8,5,6,7,9,4],[2,1,3,8,6,5,7,4,9]],true>,<[[1,2,3,5,4,8,9,6,7],[1,3,2,8,6,5,7,4,9],[6,5,7,2,4,8,9,1,3],[3,1,2,8,6,7,5,9,4],[1,2,3,8,7,5,6,9,4]],true>],633,[134,6,0,1],[[33,0,0],[108,0,0],[133,0,0],[27,47,41],[95,24,58],[9,114,105],[33,136,111],[45,106,114],[65,121,119]]>,[]>",
  "<\"9t19\",\"Malle-Matzat's book (simplified)\",[\"(a^2+8)*x^9 - (2*a+1)*(a^2+8)*x^8 + a^2*(a^2+8)*x^7 + a^2*(a^2+8)*x^6 + a^2*(a^2+8)*x^5 + a^2*(a^2+8)*x^4 + a^2*(a^2+8)*x^3 + a^2*(a^2+8)*x^2 + a^2*(a-1)*(a+1)*x + a^2*(a+1)^2\"],[[6,2,8,9,5,1,7,3,4],[7,2,6,5,1,8,4,9,3],[3,2,4,8,6,7,9,1,5],[4,2,8,1,7,9,5,3,6],[2,4,9,1,6,8,3,5,7],[6,8,2,5,9,7,1,3,4]],[100001],[144,182],[9,19],[[9],[19]],<13,4,40,{[1,2,2,2,2],[3,3,3],[3,6],[1,4,4],[1,8]},[[2,3,7,8,5,4,1,9,6]],[<[[2,3,4,5,6,7,8,9,1],[2,1,3,4,5,6,7,8,9]],true>,<[[8,2,6,3,5,4,7,9,1],[8,5,4,6,7,3,2,9,1],[8,2,1,3,9,5,6,4,7],[6,8,2,5,9,7,1,3,4],[7,2,3,5,9,1,6,8,4],[1,2,5,4,3,9,8,7,6]],false>,<[[6,2,8,9,5,1,7,3,4],[7,2,6,5,1,8,4,9,3],[3,2,4,8,6,7,9,1,5],[4,2,8,1,7,9,5,3,6],[2,4,9,1,6,8,3,5,7],[6,8,2,5,9,7,1,3,4]],true>],4000140004800054,[2,12,3,0,1],[[0,2,11,11],[6,9,1,9],[1,7,12,3],[11,3,2,10],[9,0,0,0],[4,1,1,0],[12,8,2,3],[10,4,6,2],[11,5,4,1]]>,[]>",
  "<\"9t20\",\"Ask Tim\",[\"x^9 + x^7 + a*x^6 - 5*13*x^5 - 3*a*x^4 - 197*x^3 + 3*a*x^2 - 2^2*3^2*7*x - a\"],[[7,4,8,1,6,9,3,2,5],[2,3,1,4,5,6,7,8,9],[1,2,3,4,6,9,7,8,5],[1,2,3,7,5,6,8,4,9],[6,5,9,8,1,3,4,7,2]],[100001],[162,10],[9,20],[[9],[19]],<139,3,40,{[9],[1,1,1,3,3],[3,3,3],[1,1,1,6],[3,6],[1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,3],[2,2,2,3]},[[1,2,3,8,6,9,4,7,5]],[<[[7,4,8,1,6,9,3,2,5],[2,3,1,4,5,6,7,8,9],[1,2,3,4,6,9,7,8,5],[1,2,3,7,5,6,8,4,9],[6,5,9,8,1,3,4,7,2]],true>],66,[137,6,0,1],[[36,0,0],[61,0,0],[122,0,0],[96,65,68],[117,40,73],[70,49,96],[97,62,103],[113,12,107],[122,50,109]]>,[]>",
  "<\"9t21\",\"Ask Tim\",[\"x^9 - 3^2*x^8 + (a+22)*x^7 - 2*3*a*x^6 + (a-32)*x^5 + 2*(11*a-1)*x^4 + 2*(11*a+5)*x^3 + 2^2*(2*a-1)*x^2 + (a-5)*x - 1\"],[[6,7,4,3,5,1,2,9,8],[1,2,4,5,3,6,7,8,9],[1,6,3,4,5,9,7,8,2],[7,2,3,4,5,6,8,1,9],[3,1,2,6,9,7,4,5,8]],[100001],[162,19],[9,21],[[9],[19]],<41,3,40,{[9],[1,2,6],[1,1,1,3,3],[1,2,2,2,2],[3,3,3],[1,1,1,1,1,1,3]},[[8,9,3,4,5,2,1,7,6]],[<[[6,7,4,3,5,1,2,9,8],[1,2,4,5,3,6,7,8,9],[1,6,3,4,5,9,7,8,2],[7,2,3,4,5,6,8,1,9],[3,1,2,6,9,7,4,5,8]],true>],633,[35,1,0,1],[[40,38,38],[0,22,19],[5,0,0],[2,0,0],[37,0,0],[6,1,28],[1,34,0],[3,10,3],[38,18,35]]>,[]>",
  "<\"9t22\",\"Ask Tim\",[\"x^9 + 3^2*x^8 + 3^3*x^7 + 3^3*x^6 - 3*(3*a^2+4)*x^3 - 3^2*(3*a^2+4)*x^2 - 2^2*(3*a^2+4)\"],[[1,2,3,4,5,8,7,9,6],[1,2,7,5,4,6,3,9,8],[3,2,7,4,5,6,1,8,9],[2,6,4,8,9,1,5,3,7],[1,4,3,5,2,6,7,8,9]],[100001],[162,11],[9,22],[[9],[19]],<59,3,40,{[1,1,1,2,2,2],[9],[1,1,1,3,3],[3,3,3],[3,6],[1,1,1,1,1,1,3]},[[7,5,1,2,4,6,3,8,9]],[<[[1,2,3,4,5,8,7,9,6],[1,2,7,5,4,6,3,9,8],[3,2,7,4,5,6,1,8,9],[2,6,4,8,9,1,5,3,7],[1,4,3,5,2,6,7,8,9]],true>],107,[57,5,0,1],[[21,42,42],[41,8,48],[22,25,1],[23,34,19],[51,17,51],[29,0,0],[13,51,16],[49,0,0],[37,0,0]]>,[]>",
  "<\"9t23\",\"Malle-Matzat's book (simplified)\",[\"(a^2+27)*x^9 - 31*(a^2+27)*x^8 + 2^5*11*(a^2+27)*x^7 - 2^6*5^2*(a^2+27)*x^6 + 2*389*(a^2+27)*x^5 + 2*7*883*(a^2+27)*x^4 - 2^3*7*(377*a^2+9155)*x^3 + 2^3*7^2*(77*a^2+1055)*x^2 - 5*7^2*71*(a^2+27)*x + 3^3*7^3*(a^2+27)\"],[[8,2,3,5,7,6,4,9,1],[8,4,9,3,7,6,1,5,2],[9,8,7,1,4,6,2,3,5],[5,3,2,9,1,6,8,7,4],[3,5,7,9,8,4,1,2,6],[5,9,8,3,6,1,2,4,7]],[100001],[216,153],[9,23],[[9],[19]],<17,4,40,{[1,2,6],[1,1,1,3,3],[1,2,2,2,2],[3,3,3],[1,4,4]},[[3,4,6,8,5,9,2,7,1]],[<[[1,2,4,5,6,7,8,9,3],[2,3,1,4,5,6,7,8,9]],true>,<[[8,2,3,5,7,6,4,9,1],[8,4,9,3,7,6,1,5,2],[9,8,7,1,4,6,2,3,5],[5,3,2,9,1,6,8,7,4],[3,5,7,9,8,4,1,2,6],[5,9,8,3,6,1,2,4,7]],false>],620012401736,[3,10,7,0,1],[[0,14,10,14],[15,15,7,4],[5,7,6,12],[7,2,12,4],[14,0,0,0],[8,9,1,0],[4,2,1,11],[3,15,14,15],[5,4,0,8]]>,[]>",
  "<\"9t24\",\"Ask Tim\",[\"x^9 + 3^2*x^8 + 3^3*x^7 + 3^3*x^6 + 3*a*x^3 + 3^2*a*x^2 + 2^2*a\"],[[1,5,3,4,8,6,7,2,9],[3,5,1,4,2,7,6,8,9],[7,3,6,9,1,2,5,4,8],[3,2,4,1,5,6,7,8,9],[1,2,3,4,5,7,9,8,6],[5,3,2,8,1,6,7,4,9]],[100001],[324,39],[9,24],[[19],[35]],<41,3,40,{[1,1,1,2,2,2],[9],[1,2,6],[1,2,2,2,2],[3,3,3],[3,6],[1,1,1,6],[2,2,2,3]},[[5,7,2,8,9,4,3,6,1]],[<[[1,5,3,4,8,6,7,2,9],[3,5,1,4,2,7,6,8,9],[7,3,6,9,1,2,5,4,8],[3,2,4,1,5,6,7,8,9],[1,2,3,4,5,7,9,8,6],[5,3,2,8,1,6,7,4,9]],true>],13,[35,1,0,1],[[15,26,15],[19,15,11],[32,18,10],[32,38,16],[4,25,19],[17,2,14],[25,8,20],[15,1,11],[37,31,7]]>,[]>",
  "<\"9t25\",\"Ask Tim\",[\"x^9 - 3^2*x^8 - 3*a*x^7 + (19*a+144)*x^6 - 3*(20*a+261)*x^5 + 3^3*(4*a+69)*x^4 - 3*(19*a+585)*x^3 + 3^2*(a+99)*x^2 - 3^5*x + 3^3\"],[[1,8,3,4,5,6,2,7,9],[5,2,3,4,9,6,7,8,1],[1,2,3,4,9,6,8,7,5],[1,2,3,6,5,4,8,7,9],[3,1,2,7,4,8,5,9,6],[1,2,6,3,5,4,7,8,9]],[100001],[324,160],[9,25],[[9],[19]],<59,3,40,{[9],[1,1,1,3,3],[1,1,2,2,3],[3,3,3],[1,1,1,1,1,2,2]},[[9,2,6,3,1,4,7,8,5]],[<[[1,8,3,4,5,6,2,7,9],[5,2,3,4,9,6,7,8,1],[1,2,3,4,9,6,8,7,5],[1,2,3,6,5,4,8,7,9],[3,1,2,7,4,8,5,9,6],[1,2,6,3,5,4,7,8,9]],true>],1096,[57,5,0,1],[[41,28,12],[56,0,0],[34,11,4],[30,10,50],[54,37,10],[57,38,5],[17,0,0],[48,0,0],[26,53,37]]>,[]>",
  "<\"9t26\",\"Subfamily [a,2] of: Malle, Multiparameter families, Thm 7.1 (p.8) (simplified)\",[\"x^9 + 3*x^8 + 3*x^7 - 3*17*x^6 - 2^3*3*11*x^5 + 2^2*3*29*x^4 + (a+1264)*x^3 - 3*a*x^2 - 2^8*3*5*x + 2^12\"],[[8,4,2,3,5,6,7,9,1],[8,3,4,2,7,5,6,9,1],[8,1,2,5,9,6,4,3,7],[4,6,5,7,9,8,1,2,3],[7,2,5,1,9,6,4,8,3],[5,9,8,1,3,4,2,6,7]],[100001],[432,734],[9,26],[[9],[19]],<29,4,40,{[1,1,1,2,2,2],[1,2,6],[1,1,1,3,3],[3,3,3],[3,6],[1,4,4],[1,8]},[[2,9,5,3,7,1,4,8,6]],[<[[2,3,4,5,6,7,8,9,1],[2,1,3,4,5,6,7,8,9]],true>,<[[8,4,2,3,5,6,7,9,1],[8,3,4,2,7,5,6,9,1],[8,1,2,5,9,6,4,3,7],[4,6,5,7,9,8,1,2,3],[7,2,5,1,9,6,4,8,3],[5,9,8,1,3,4,2,6,7]],false>],11,[2,15,2,0,1],[[22,18,9,16],[5,1,23,1],[17,9,26,13],[13,6,17,7],[20,20,27,28],[15,3,15,20],[25,23,17,10],[10,0,0,0],[15,7,11,21]]>,[]>",
  "<\"9t27\",\"Matzat, Korper mit vorgegebener Galoisgruppe p213 (10)\",[\"2*(a^3-3*a+1)*x^9 - 3^2*(a^3-3*a+1)*x^8 + 2^3*3^2*(a^3-3*a+1)*x^7 - 2^2*3*13*(a^3-3*a+1)*x^6 + 2^2*3^2*19*(a^3-3*a+1)*x^5 - 2*3^2*31*(a^3-3*a+1)*x^4 + 2^3*3*5*23*(a^3-3*a+1)*x^3 - 2^2*3^2*19*(a^3-3*a+1)*x^2 + 2*3^2*19^2*(a^3-3*a+1)*x + 2351*a^3-15552*a^2+8499*a+2351\"],[[3,9,4,1,2,7,8,6,5],[6,3,5,7,2,9,8,4,1]],[100001],[504,156],[9,27],[[9],[19]],<53,3,40,{[9],[1,2,2,2,2],[3,3,3],[1,1,7]},[[5,8,9,3,6,1,2,7,4]],[<[[1,2,4,5,6,7,8,9,3],[2,3,1,4,5,6,7,8,9]],true>,<[[3,1,2,8,6,7,5,9,4],[6,1,3,4,9,2,7,5,8]],false>,<[[3,9,4,1,2,7,8,6,5],[6,3,5,7,2,9,8,4,1]],true>],24000719999999976,[51,3,0,1],[[1,52,12],[2,29,41],[22,9,35],[52,26,50],[30,26,0],[6,28,41],[31,28,29],[45,49,36],[47,18,21]]>,[]>",
  "<\"9t28\",\"Ask Tim\",[\"x^9 + 3*x^7 + a*x^6 + 3*x^5 + 2*a*x^4 - 2^3*x^3 + a*x^2 - 3^2*x - a\"],[[1,2,3,4,5,9,7,8,6],[1,2,3,5,4,6,7,8,9],[1,2,7,4,5,6,8,3,9],[1,2,3,4,5,6,8,7,9],[6,2,3,4,5,9,7,8,1],[1,4,3,5,2,6,7,8,9],[2,3,1,7,8,4,6,9,5]],[100001],[648,705],[9,28],[[9],[19]],<23,3,40,{[1,1,1,2,2,2],[1,2,3,3],[1,1,1,1,2,3],[9],[1,1,2,2,3],[3,3,3],[1,1,1,1,1,2,2],[3,6],[1,1,1,1,1,1,1,2]},[[7,6,2,1,9,3,4,5,8]],[<[[1,2,3,4,5,9,7,8,6],[1,2,3,5,4,6,7,8,9],[1,2,7,4,5,6,8,3,9],[1,2,3,4,5,6,8,7,9],[6,2,3,4,5,9,7,8,1],[1,4,3,5,2,6,7,8,9],[2,3,1,7,8,4,6,9,5]],true>],66,[18,2,0,1],[[18,5,16],[18,6,6],[18,16,6],[3,17,22],[2,0,18],[17,1,11],[15,1,8],[13,6,9],[11,17,19]]>,[]>",
  "<\"9t29\",\"Ask Tim\",[\"x^9 - 3^2*x^7 - 3*11*x^6 + 3^3*x^5 + 2*3^2*11*x^4 + (a-27)*x^3 - 3^3*11*x^2 - 3*a*x - a+128\"],[[7,3,6,9,4,2,8,1,5],[5,2,9,7,1,6,4,3,8],[1,7,8,2,5,6,4,9,3],[1,2,9,4,6,5,7,8,3],[1,2,8,7,6,5,4,9,3],[1,2,3,4,6,5,7,9,8],[1,2,3,7,5,6,4,9,8],[6,3,2,8,5,1,9,7,4]],[100001],[648,704],[9,29],[[9],[19]],<53,3,40,{[9],[1,2,2,4],[1,1,2,2,3],[3,3,3],[1,1,1,1,1,2,2],[3,6],[1,1,1,6],[2,2,2,3]},[[6,7,8,2,1,5,4,9,3]],[<[[7,3,6,9,4,2,8,1,5],[5,2,9,7,1,6,4,3,8],[1,7,8,2,5,6,4,9,3],[1,2,9,4,6,5,7,8,3],[1,2,8,7,6,5,4,9,3],[1,2,3,4,6,5,7,9,8],[1,2,3,7,5,6,4,9,8],[6,3,2,8,5,1,9,7,4]],true>],11,[51,3,0,1],[[4,33,2],[33,17,43],[34,7,17],[39,9,46],[47,18,50],[2,2,1],[34,27,17],[33,16,43],[39,30,46]]>,[]>",
  "<\"9t30\",\"Ask Tim\",[\"x^9 - 3^2*x^7 + 3^3*x^5 - 3*13*x^3 + 2^2*3^2*x + a\"],[[1,2,3,4,6,7,5,8,9],[6,2,3,5,1,4,8,7,9],[5,1,4,6,2,3,9,7,8],[4,2,3,8,5,6,7,1,9]],[100001],[648,703],[9,30],[[12],[25]],<11,3,40,{[2,3,4],[1,1,1,2,4],[9],[1,2,6],[1,1,1,3,3],[1,1,2,2,3],[1,2,2,2,2],[3,3,3]},[[1,9,2,4,7,5,6,8,3]],[<[[1,2,3,4,6,7,5,8,9],[6,2,3,5,1,4,8,7,9],[5,1,4,6,2,3,9,7,8],[4,2,3,8,5,6,7,1,9]],true>],6,[9,2,0,1],[[0,0,0],[4,10,3],[9,0,4],[5,0,0],[2,10,7],[7,1,8],[2,0,7],[6,0,0],[9,1,4]]>,[]>",
  "<\"9t31\",\"Ask Tim\",[\"x^9 + 3*x^7 + 3*x^5 - x + a\"],[[3,1,2,5,6,4,9,7,8],[1,6,3,4,5,9,7,8,2],[1,2,5,4,7,6,3,8,9],[4,2,3,8,5,6,7,1,9],[1,6,3,4,5,2,7,8,9],[2,1,3,6,5,4,7,9,8]],[100001],[1296,3490],[9,31],[[9],[19]],<29,4,40,{[1,1,1,2,2,2],[2,3,4],[1,1,1,2,4],[1,2,3,3],[1,1,1,1,2,3],[9],[1,2,6],[1,2,2,4],[1,1,2,2,3],[3,6],[1,1,1,6],[1,1,1,1,1,1,3],[2,2,2,3]},[[2,1,5,6,3,8,7,9,4]],[<[[3,1,2,5,6,4,9,7,8],[1,6,3,4,5,9,7,8,2],[1,2,5,4,7,6,3,8,9],[4,2,3,8,5,6,7,1,9],[1,6,3,4,5,2,7,8,9],[2,1,3,6,5,4,7,9,8]],true>],5,[2,15,2,0,1],[[11,25,20,8],[23,4,9,21],[15,7,23,15],[18,27,6,16],[23,22,6,14],[18,5,14,14],[20,0,0,0],[0,6,3,5],[17,20,6,23]]>,[]>",
  "<\"9t32\",\"Matzat, Korper mit vorgegebener Galoisgruppe p213 (9) (simplified)\",[\"3^2*x^9 + 2^2*3^3*x^7 + 2^3*3^2*x^6 + 2*3^5*x^5 + 2^3*3^2*7*x^4 + 2^2*307*x^3 + 2^3*3*37*x^2 + 37^2*x + a\"],[[7,1,6,9,4,8,2,3,5],[9,1,3,8,5,4,7,6,2]],[100001],[1512,779],[9,32],[[9],[19]],<11,3,40,{[9],[1,2,6],[1,1,1,3,3],[1,2,2,2,2],[1,1,7]},[[1,8,5,4,9,6,2,7,3]],[<[[1,2,4,5,6,7,8,9,3],[2,3,1,4,5,6,7,8,9]],true>,<[[7,1,6,9,4,8,2,3,5],[9,1,3,8,5,4,7,6,2]],false>],21,[9,2,0,1],[[0,0,0],[9,4,10],[5,5,1],[10,0,0],[4,2,3],[3,0,0],[0,0,6],[0,7,6],[2,4,7]]>,[]>",
  "<\"9t33\",\"Ask Tim\",[\"x^9 - 2^2*3^2*x^5 + 2^2*3^2*5^2*x + a\"],[[1,2,4,5,6,7,8,9,3],[2,3,1,4,5,6,7,8,9]],[100001],[181440,0],[9,33],[[9],[19]],<11,2,40,{[1,3,5],[2,3,4],[9],[1,2,6],[1,1,1,3,3],[1,1,1,1,5],[1,2,2,2,2],[3,3,3],[1,1,7],[1,4,4],[2,2,5]},0,[<[[1,2,4,5,6,7,8,9,3],[2,3,1,4,5,6,7,8,9]],true>],7,[2,7,1],[[0,0],[4,7],[1,7],[0,5],[9,6],[7,4],[10,4],[0,6],[2,5]]>,[]>",
  "<\"9t34\",\"Obvious 1-variable family Sn: x^n+x+a in degree 9\",[\"x^9 + x + a\"],[[2,3,4,5,6,7,8,9,1],[2,1,3,4,5,6,7,8,9]],[100001],[362880,0],[9,34],[[9],[19]],<587,2,40,{[1,3,5],[1,1,1,2,4],[1,1,3,4],[1,2,3,3],[1,1,1,1,2,3],[9],[1,2,6],[1,2,2,4],[1,1,2,5],[4,5],[1,1,7],[1,1,1,6],[3,6],[1,4,4],[2,7],[2,2,5],[1,8]},0,[<[[2,3,4,5,6,7,8,9,1],[2,1,3,4,5,6,7,8,9]],true>],7,[2,583,1],[[443,447],[471,301],[254,0],[381,396],[56,0],[204,191],[470,140],[501,286],[155,0]]>,[]>",
  "<\"10t1\",\"Ask Tim\",[\"x^10 + (2*(a-1)^2)*x^9 + (a^4-8*a^3+6*a^2-7*a-7)*x^8 - 2*(2*a^5-5*a^4+a^3+2*a^2-12*a+7)*x^7 + 2*(3*a^6+a^5-3*a^4+22*a^3-11*a^2+25*a+8)*x^6 - 2^2*(a^7+4*a^6-2*a^5+15*a^4+2*a^3+8*a^2+7*a-8)*x^5 + (a^8+16*a^7+5*a^6+34*a^5+54*a^4-12*a^3+30*a^2-80*a-13)*x^4 - 2*(4*a^8+9*a^7+9*a^6+41*a^5+12*a^4+28*a^3-20*a^2-a+13)*x^3 + (2*a^9+14*a^8+16*a^7+63*a^6+74*a^5+94*a^4+60*a^3+35*a^2+44*a+3)*x^2 - 2*(2*a^9+3*a^8+8*a^7+13*a^6+8*a^5-7*a^4-28*a^3-18*a^2-8*a-3)*x + a^10+4*a^9+12*a^8+31*a^7+58*a^6+88*a^5+99*a^4+91*a^3+57*a^2+15*a+1\"],[[6,5,8,7,10,9,2,1,3,4],[2,1,4,3,6,5,8,7,10,9]],[100001],[10,2],[10,1],[[9],[19]],<23,5,40,{[10],[5,5],[2,2,2,2,2],[1,1,1,1,1,1,1,1,1,1]},[[8,7,9,10,2,1,4,3,6,5]],[<[[6,5,8,7,10,9,2,1,3,4],[2,1,4,3,6,5,8,7,10,9]],true>],40000000000,[18,3,0,0,0,1],[[11,0,3,18,3],[20,0,3,18,3],[11,5,11,19,3],[20,5,11,19,3],[2,10,12,14,7],[16,10,12,14,7],[7,3,17,3,11],[21,3,17,3,11],[6,5,3,15,22],[15,5,3,15,22]]>,[]>",
  "<\"10t2\",\"Ask Tim\",[\"2^2*x^10 + 2^5*x^9 + (-a^2-591)*x^8 + (a^2+871)*x^7 + (7*a^2+5021)*x^6 - 5*(a^2+663)*x^5 - 2*(7*a^2+5021)*x^4 + 2^2*(a^2+871)*x^3 + 2^3*(a^2+591)*x^2 + 2^9*x - 2^7\"],[[2,8,6,1,9,5,4,7,10,3],[3,10,1,6,7,4,5,9,8,2]],[100001],[10,1],[10,2],[[9],[19]],<13,5,40,{[5,5],[2,2,2,2,2],[1,1,1,1,1,1,1,1,1,1]},[[7,4,9,8,3,10,2,1,6,5]],[<[[2,8,6,1,9,5,4,7,10,3],[3,10,1,6,7,4,5,9,8,2]],true>],200003,[11,4,0,0,0,1],[[2,6,8,11,6],[8,0,8,12,3],[10,11,1,9,2],[5,12,1,12,11],[2,1,4,10,6],[2,0,5,9,6],[10,0,6,5,2],[6,8,3,12,4],[1,0,11,10,0],[3,1,5,1,12]]>,[]>",
  "<\"10t3\",\"Ask Tim\",[\"x^10 + (a+10)*x^8 + (-20*a+33)*x^6 + 2^2*(33*a+10)*x^4 - 2^4*(20*a-1)*x^2 + 2^8*a\"],[[10,9,8,7,6,5,4,3,2,1],[7,3,2,10,6,5,1,9,8,4],[3,9,1,5,4,7,6,10,2,8]],[100001],[20,4],[10,3],[[9],[19]],<31,5,40,{[1,1,2,2,2,2],[10],[5,5],[2,2,2,2,2],[1,1,1,1,1,1,1,1,1,1]},[[6,1,9,8,7,4,3,2,10,5]],[<[[10,9,8,7,6,5,4,3,2,1],[7,3,2,10,6,5,1,9,8,4],[3,9,1,5,4,7,6,10,2,8]],true>],633,[28,7,0,0,0,1],[[10,30,25,23,2],[20,11,15,23,6],[28,11,10,8,7],[25,21,3,24,8],[2,20,2,0,9],[29,11,29,0,22],[6,10,28,7,23],[3,20,21,23,24],[11,20,16,8,25],[21,1,6,8,29]]>,[]>",
  "<\"10t4\",\"Ask Tim\",[\"x^10 - 5*x^9 + (-a^2+a+17)*x^8 + 2*(2*a^2-2*a-19)*x^7 + (-8*a^2+3*a+66)*x^6 + (10*a^2+5*a-86)*x^5 - 3*(3*a^2+3*a-23)*x^4 + (6*a^2+5*a-29)*x^3 + (-2*a^2-3*a+4)*x^2 + (2*a+1)*x - 1\"],[[4,6,8,9,10,1,3,5,2,7],[5,8,6,3,1,7,4,9,10,2],[1,9,7,6,5,4,3,10,2,8]],[100001],[20,3],[10,4],[[9],[19]],<11,4,40,{[1,1,2,2,2,2],[5,5],[1,1,1,1,1,1,1,1,1,1],[2,4,4]},[[8,5,1,10,6,7,2,9,3,4]],[<[[4,6,8,9,10,1,3,5,2,7],[5,8,6,3,1,7,4,9,10,2],[1,9,7,6,5,4,3,10,2,8]],true>],200001,[2,10,8,0,1],[[5,9,8,2],[9,6,7,2],[3,5,4,9],[2,8,2,5],[7,2,3,9],[7,2,6,3],[6,1,6,8],[5,9,5,8],[6,10,5,3],[10,3,9,6]]>,[]>",
  "<\"10t5\",\"Ask Tim\",[\"x^10 - 2^2*a*x^8 + 2*3*a^2*x^6 + a*(a+5)*(a+25)*x^4 + a*(a^3+10*a^2+60*a+250)*x^2 + 5*a*(a^2+6*a+25)\"],[[1,3,2,5,4,6,8,7,10,9],[6,7,8,9,10,1,2,3,4,5],[5,3,4,1,2,10,8,9,6,7],[1,5,4,2,3,6,10,9,7,8]],[100001],[40,12],[10,5],[[12],[25]],<19,4,40,{[1,1,2,2,2,2],[10],[5,5],[2,2,2,2,2],[1,1,4,4],[2,4,4]},[[4,1,3,5,2,9,6,8,10,7]],[<[[1,3,2,5,4,6,8,7,10,9],[6,7,8,9,10,1,2,3,4,5],[5,3,4,1,2,10,8,9,6,7],[1,5,4,2,3,6,10,9,7,8]],true>],1265,[2,11,2,0,1],[[1,13,2,2],[4,9,12,0],[13,0,0,0],[4,11,16,7],[16,5,8,10],[18,6,17,17],[15,10,7,0],[6,0,0,0],[15,8,3,12],[3,14,11,9]]>,[]>",
  "<\"10t6\",\"Ask Tim\",[\"x^10 + 2*(a+1)*x^9 + (a^2+6*a+1)*x^8 + 2*(a+1)*(3*a-1)*x^7 + 2*(a^3+3*a^2+4)*x^6 + 2*a*(2*a^2+a+2)*x^5 + (a^4+a^3+14*a+7)*x^4 + 2*(a+1)*(4*a-5)*x^3 + (a^3-a^2-a+13)*x^2 + 2*(a-1)*x + 1\"],[[3,4,1,2,8,10,9,5,7,6],[2,7,8,3,1,5,6,10,4,9],[6,5,3,4,7,2,1,8,9,10]],[100001],[50,3],[10,6],[[9],[19]],<41,5,40,{[10],[5,5],[1,1,1,1,1,5],[2,2,2,2,2],[1,1,1,1,1,1,1,1,1,1]},[[2,7,10,8,1,5,6,9,3,4]],[<[[1,6,3,4,2,5,7,8,9,10],[5,1,4,8,2,6,7,3,9,10],[4,9,5,2,8,10,3,1,6,7],[1,2,9,3,7,5,6,8,4,10],[1,7,3,4,2,6,5,8,9,10],[1,7,10,9,2,6,5,8,4,3],[1,2,8,9,5,6,7,3,4,10],[1,5,3,10,2,7,6,8,4,9],[1,2,3,4,7,5,6,8,9,10]],true>,<[[1,2,3,8,5,6,7,4,10,9],[3,4,1,2,8,10,9,5,7,6],[1,5,3,8,2,7,6,4,10,9],[6,5,3,4,7,2,1,8,9,10],[1,2,4,9,5,6,7,3,10,8]],true>,<[[3,4,1,2,8,10,9,5,7,6],[1,5,8,10,2,7,6,3,9,4],[1,2,8,3,5,6,7,10,4,9],[2,7,3,4,1,5,6,8,9,10]],true>,<[[3,4,1,2,8,10,9,5,7,6],[2,7,8,3,1,5,6,10,4,9],[6,5,3,4,7,2,1,8,9,10]],true>],400008,[35,14,40,0,0,1],[[34,39,20,0,3],[4,2,31,29,7],[30,20,9,11,10],[22,39,35,7,12],[29,5,27,30,21],[17,39,23,24,24],[0,38,22,40,27],[36,15,25,29,32],[33,11,8,3,34],[35,38,5,32,35]]>,[]>",
  "<\"10t7\",\"Ask Tim\",[\"x^10 + 2^2*x^9 + 2^2*3*x^8 + (a+20)*x^7 + 3*(a+8)*x^6 + 2*(3*a+7)*x^5 + (7*a-1)*x^4 + 2*(3*a-5)*x^3 + (3*a-7)*x^2 + a*x + 1\"],[[2,3,6,7,4,9,10,5,1,8],[10,5,7,8,2,6,3,4,9,1],[3,2,1,8,5,9,10,4,6,7],[3,4,10,9,8,5,7,6,2,1],[5,7,6,3,8,9,1,2,10,4],[7,5,10,4,2,9,1,8,6,3]],[100001],[60,5],[10,7],[[9],[19]],<17,5,40,{[1,3,3,3],[1,1,2,2,2,2],[5,5]},[[9,1,8,7,2,4,3,6,10,5]],[<[[2,3,6,7,4,9,10,5,1,8],[10,5,7,8,2,6,3,4,9,1],[3,2,1,8,5,9,10,4,6,7],[3,4,10,9,8,5,7,6,2,1],[5,7,6,3,8,9,1,2,10,4],[7,5,10,4,2,9,1,8,6,3]],true>],66,[14,1,0,0,0,1],[[13,0,10,6,0],[1,4,2,4,2],[9,6,13,2,3],[9,12,5,9,3],[11,15,15,15,6],[13,0,9,11,8],[7,7,11,8,9],[12,9,13,4,11],[3,15,13,3,13],[3,0,11,6,13]]>,[]>",
  "<\"10t8\",\"Ask Tim\",[\"2^4*x^10 + 2^2*(a^2-5)*x^8 - 2^3*(3*a^2+5)*x^6 + (-a^4+14*a^2+35)*x^4 + 2*(a^2+3)*(a^2+5)*x^2 - (a^2+3)^2\"],[[3,4,7,5,6,8,9,2,10,1],[1,7,3,9,5,6,2,8,4,10],[1,2,3,9,10,6,7,8,4,5],[1,2,8,9,5,6,7,3,4,10],[6,2,3,9,5,1,7,8,4,10]],[100001],[80,49],[10,8],[[9],[19]],<13,5,40,{[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[5,5]},[[8,9,2,10,6,3,4,7,5,1]],[<[[3,4,7,5,6,8,9,2,10,1],[1,7,3,9,5,6,2,8,4,10],[1,2,3,9,10,6,7,8,4,5],[1,2,8,9,5,6,7,3,4,10],[6,2,3,9,5,1,7,8,4,10]],true>],200002,[11,4,0,0,0,1],[[4,6,5,2,9],[12,3,3,3,9],[3,10,9,2,7],[2,4,12,9,10],[11,10,5,6,3],[9,7,8,11,4],[1,10,10,10,4],[10,3,4,11,6],[11,9,1,4,3],[2,3,8,7,10]]>,[]>",
  "<\"10t9\",\"Malle-Matzat's book !!<[1/125*a],1>, twisted\",[\"2^5*x^10 + 2^5*5*x^9 + 2*3^4*5*x^8 + 5*7*83*x^7 + 2*(a^2-1965)*x^6 + (8*a^2-29723)*x^5 + 2*(4*a^2-6385)*x^4 + 2^2*3^3*5*97*x^3 + 2^3*3^2*5*149*x^2 + 2^8*3^3*5*x + 2^7*3^4\"],[[5,9,4,3,1,10,8,7,2,6],[10,2,6,9,7,3,5,8,4,1],[8,2,3,1,5,6,7,10,4,9],[8,6,2,1,3,7,5,10,4,9]],[100001],[100,13],[10,9],[[9],[19]],<17,5,40,{[1,1,2,2,2,2],[10],[5,5],[1,1,1,1,1,5],[2,2,2,2,2]},[[10,6,2,8,3,7,5,9,1,4]],[<[[8,2,3,4,5,6,7,1,10,9],[1,2,5,9,6,3,7,8,10,4],[1,2,7,4,6,5,3,8,9,10],[4,2,3,10,6,7,5,8,9,1],[6,8,9,2,1,10,4,3,5,7],[1,2,6,4,3,5,7,8,9,10],[10,5,2,4,7,3,6,8,1,9],[1,2,3,4,7,5,6,8,9,10]],true>,<[[8,2,3,10,5,6,7,1,9,4],[5,9,4,3,1,10,8,7,2,6],[8,2,6,10,7,3,5,1,9,4],[1,5,7,4,6,3,2,8,9,10],[4,2,3,9,5,6,7,1,10,8]],true>,<[[5,9,4,3,1,10,8,7,2,6],[10,2,6,9,7,3,5,8,4,1],[8,2,3,1,5,6,7,10,4,9],[8,6,2,1,3,7,5,10,4,9]],true>],1064,[14,1,0,0,0,1],[[3,9,8,7,2],[14,0,3,8,3],[14,0,6,8,3],[13,8,12,13,6],[1,5,4,4,8],[6,1,12,15,10],[6,11,9,16,10],[5,3,1,10,13],[16,1,3,11,14],[4,13,10,10,16]]>,[]>",
  "<\"10t10\",\"Malle-Matzat's book (simplified), twisted\",[\"2^10*(a^2+1)*x^10 + 2^10*5*(a^2+1)*x^9 + 2^6*3^4*5*(a^2+1)*x^8 + 2^5*5*7*83*(a^2+1)*x^7 + 5*(52973*a^2-25152)*x^6 + 2^2*(152841*a^2-237784)*x^5 + 2^2*5*(57693*a^2-20432)*x^4 + 2^7*3^3*5*97*(a^2+1)*x^3 + 2^8*3^2*5*149*(a^2+1)*x^2 + 2^13*3^3*5*(a^2+1)*x + 2^12*3^4*(a^2+1)\"],[[7,4,10,2,1,5,6,3,8,9],[6,2,9,4,7,1,5,10,3,8],[3,2,4,9,5,1,7,8,6,10],[3,8,4,9,7,1,10,5,6,2]],[100001],[100,12],[10,10],[[9],[19]],<31,4,40,{[1,1,2,2,2,2],[5,5],[1,1,1,1,1,5],[2,4,4]},[[2,1,10,7,4,8,9,3,5,6]],[<[[9,2,1,4,5,6,7,8,3,10],[2,1,8,7,4,5,6,9,10,3],[1,2,4,9,5,6,7,8,3,10],[1,2,9,4,5,3,7,8,6,10],[1,2,3,4,8,6,7,10,9,5],[1,2,3,4,5,6,10,7,9,8],[1,8,3,4,5,6,7,10,9,2]],true>,<[[3,2,1,6,5,4,7,8,9,10],[7,4,10,2,6,5,1,9,8,3],[3,5,1,6,2,4,10,8,9,7],[1,5,3,4,10,6,2,7,9,8],[6,2,1,3,5,9,7,8,4,10]],true>,<[[7,4,10,2,1,5,6,3,8,9],[6,2,9,4,7,1,5,10,3,8],[3,2,4,9,5,1,7,8,6,10],[3,8,4,9,7,1,10,5,6,2]],true>],805000571751,[3,16,3,0,1],[[22,3,19,17],[22,28,12,14],[30,5,0,21],[9,26,20,23],[8,19,25,21],[22,27,27,26],[18,16,21,12],[14,26,18,20],[17,1,27,6],[7,4,17,26]]>,[]>",
  "<\"10t11\",\"Ask Tim\",[\"2^2*3^3*x^10 + 5^2*(5*a^2-1)*x^4 - 2*5*(5*a^2-1)*x^2 + 5*a^2-1\"],[[4,9,1,8,6,5,3,10,2,7],[10,9,8,7,6,5,4,3,2,1],[2,5,8,7,10,1,4,3,6,9]],[100001],[120,35],[10,11],[[9],[19]],<29,5,40,{[1,1,2,2,2,2],[10],[5,5],[1,1,1,1,3,3],[2,2,2,2,2],[1,1,1,1,1,1,1,1,1,1],[2,2,6]},[[9,3,6,10,7,4,1,5,8,2]],[<[[4,9,1,8,6,5,3,10,2,7],[10,9,8,7,6,5,4,3,2,1],[2,5,8,7,10,1,4,3,6,9]],true>],453,[27,3,0,0,0,1],[[14,0,12,15,1],[13,25,20,17,3],[27,21,26,12,4],[11,20,0,10,7],[8,8,5,24,13],[21,21,24,5,16],[18,9,0,19,22],[2,8,3,17,25],[16,4,9,12,26],[15,0,17,14,28]]>,[]>",
  "<\"10t12\",\"Ask Tim\",[\"x^10 + 2*3*5^2*x^8 + 3^2*5^4*x^6 + a*x^4 + 2*3*a*x^2 + 3^2*a\"],[[10,3,4,6,2,5,8,9,1,7],[1,2,5,3,4,6,7,10,8,9],[1,5,3,2,4,6,10,8,7,9],[6,7,9,8,10,1,2,4,3,5]],[100001],[120,34],[10,12],[[9],[19]],<17,4,40,{[1,1,2,2,2,2],[5,5],[1,1,1,1,3,3],[2,2,2,2,2],[2,2,6],[2,4,4]},[[2,8,10,9,1,7,3,5,4,6]],[<[[10,3,4,6,2,5,8,9,1,7],[1,2,5,3,4,6,7,10,8,9],[1,5,3,2,4,6,10,8,7,9],[6,7,9,8,10,1,2,4,3,5]],true>],25,[3,10,7,0,1],[[0,9,14,4],[15,12,5,0],[10,13,10,2],[7,9,8,4],[2,9,8,15],[0,8,3,13],[2,5,12,0],[7,4,7,15],[10,8,9,13],[15,8,9,2]]>,[]>",
  "<\"10t13\",\"Ask Tim\",[\"x^10 - 5*x^9 + 5*x^8 + (a-5)*x^7 - a*x^6 - 11*x^5 + 3*5*x^4 + 2*5*x^3 - 5*x^2 - 5*x - 1\"],[[1,5,4,3,2,6,10,9,8,7],[1,10,4,3,7,6,5,8,9,2],[8,7,5,4,9,2,6,10,1,3],[6,5,8,9,2,1,7,3,4,10],[7,5,8,3,2,10,6,9,4,1]],[100001],[120,34],[10,13],[[9],[19]],<11,5,40,{[1,3,6],[1,3,3,3],[1,1,2,2,2,2],[1,1,1,1,2,2,2],[5,5],[2,4,4]},[[7,5,6,2,3,4,8,9,10,1]],[<[[1,5,4,3,2,6,10,9,8,7],[1,10,4,3,7,6,5,8,9,2],[8,7,5,4,9,2,6,10,1,3],[6,5,8,9,2,1,7,3,4,10],[7,5,8,3,2,10,6,9,4,1]],true>],66,[9,0,10,0,0,1],[[6,7,4,1,8],[8,4,0,3,3],[10,4,6,7,7],[2,1,7,2,8],[10,5,3,7,4],[8,8,6,3,0],[0,10,3,0,2],[8,6,4,5,4],[3,2,8,6,3],[5,8,3,10,5]]>,[]>",
  "<\"10t14\",\"Ask Tim\",[\"2*x^10 + (a^2+25)*x^8 + 2^2*5^2*x^6 + (-a^4-40*a^2+125)*x^4 - 2*a^2*(a^2+50)*x^2 - a^2*(a^2+45)\"],[[1,2,3,4,10,6,7,8,9,5],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[10,6,7,8,9,5,1,2,3,4],[6,2,3,4,5,1,7,8,9,10],[1,2,3,9,5,6,7,8,4,10]],[100001],[160,235],[10,14],[[9],[19]],<13,5,40,{[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[1,1,1,1,2,2,2],[10],[5,5],[1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,2]},[[8,9,10,1,7,3,4,5,6,2]],[<[[1,2,3,4,10,6,7,8,9,5],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[10,6,7,8,9,5,1,2,3,4],[6,2,3,4,5,1,7,8,9,10],[1,2,3,9,5,6,7,8,4,10]],true>],282846,[11,4,0,0,0,1],[[8,12,9,9,3],[5,9,3,11,10],[4,2,10,12,4],[7,6,12,2,10],[12,6,5,12,1],[5,1,4,4,10],[8,4,10,2,3],[9,11,3,1,9],[6,7,1,11,3],[1,7,8,1,12]]>,[]>",
  "<\"10t15\",\"Ask Tim\",[\"x^10 + (a-5)*x^6 - a*x^4 + 2*5*x^2 - 2^2\"],[[9,5,7,10,2,4,3,6,1,8],[1,2,7,4,5,10,3,8,9,6],[2,1,3,4,5,10,7,8,9,6],[1,2,3,8,5,10,7,4,9,6],[8,4,10,2,9,3,6,1,5,7],[1,2,3,8,9,6,7,4,5,10]],[100001],[160,234],[10,15],[[9],[19]],<67,4,40,{[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[5,5],[1,1,4,4],[2,2,2,4]},[[1,2,4,7,6,9,8,3,10,5]],[<[[9,5,7,10,2,4,3,6,1,8],[1,2,7,4,5,10,3,8,9,6],[2,1,3,4,5,10,7,8,9,6],[1,2,3,8,5,10,7,4,9,6],[8,4,10,2,9,3,6,1,5,7],[1,2,3,8,9,6,7,4,5,10]],true>],30,[2,54,8,0,1],[[8,0,0,0],[59,0,0,0],[4,46,39,7],[36,19,52,52],[13,58,51,11],[59,34,34,56],[63,21,28,60],[31,48,15,15],[54,9,16,56],[8,33,33,11]]>,[]>",
  "<\"10t16\",\"Ask Tim\",[\"2^4*a*x^10 + (a-75)*(a+125)*x^6 + (-3*a^2+250*a+28125)*x^4 + 2^2*(a^2+1250*a-9375)\"],[[4,2,10,1,3,9,7,5,6,8],[3,6,10,7,9,8,1,5,2,4],[1,7,3,4,10,6,2,8,9,5],[1,2,8,9,5,6,7,3,4,10],[6,2,8,4,5,1,7,3,9,10],[1,2,3,9,10,6,7,8,4,5]],[100001],[160,234],[10,16],[[9],[19]],<17,4,40,{[1,1,1,1,1,1,2,2],[5,5],[1,1,2,2,4],[2,2,2,2,2],[2,4,4]},[[6,8,2,10,4,1,3,7,5,9]],[<[[1,2,3,4,10,6,7,8,9,5],[6,8,2,5,4,1,3,7,10,9],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[4,2,10,1,8,9,7,5,6,3],[6,2,3,4,5,1,7,8,9,10],[1,2,3,9,5,6,7,8,4,10]],true>,<[[4,2,10,1,3,9,7,5,6,8],[3,6,10,7,9,8,1,5,2,4],[1,7,3,4,10,6,2,8,9,5],[1,2,8,9,5,6,7,3,4,10],[6,2,8,4,5,1,7,3,9,10],[1,2,3,9,10,6,7,8,4,5]],true>],3557047,[3,10,7,0,1],[[16,6,11,14],[6,15,1,6],[1,8,14,14],[9,2,3,10],[8,9,2,16],[1,11,6,3],[11,2,16,11],[16,9,3,3],[8,15,14,7],[9,8,15,1]]>,[]>",
  "<\"10t17\",\"Ask Tim\",[\"x^10 + 2^2*5*x^8 - 5*a*(a^2+4)*x^7 + 2*5*7*x^6 + (a^2+4)*(a^4+2*a^2-49*a+8)*x^5 + 5^2*(a^4-12)*x^4 + 5*(a^2+4)*(2*a^4+4*a^2+17*a+16)*x^3 - 5*(a^7+4*a^5+2*a^4+16*a^3+64*a-45)*x^2 - 3*5*(a^2+4)*(a^4+2*a^2+a+8)*x + a^8+a^7+16*a^6+4*a^5+97*a^4+16*a^3+256*a^2+64*a+256\"],[[3,8,10,5,4,2,1,9,6,7],[2,10,7,4,8,6,5,3,1,9],[10,9,5,4,3,6,8,7,2,1],[1,2,5,4,7,8,6,3,9,10],[10,4,3,9,5,6,7,8,1,2]],[100001],[200,42],[10,17],[[9],[19]],<17,4,40,{[1,1,2,2,2,2],[10],[1,1,1,1,1,5],[5,5],[2,2,2,2,2],[1,1,4,4],[2,4,4]},[[6,8,9,7,2,4,1,10,3,5]],[<[[9,10,6,2,5,7,3,8,4,1],[1,2,7,10,3,6,8,5,9,4],[1,2,3,4,7,8,5,6,9,10],[1,4,3,9,8,7,5,6,10,2],[1,4,3,2,5,7,6,8,9,10],[1,2,3,4,5,8,7,6,10,9],[1,2,3,10,5,6,8,7,9,4],[1,2,3,4,5,6,8,7,10,9],[6,5,9,7,1,4,10,2,8,3]],true>,<[[1,2,6,4,7,3,5,8,9,10],[2,4,7,10,3,5,6,8,9,1],[7,6,10,5,4,2,1,9,8,3],[4,10,6,1,7,3,5,8,9,2],[1,2,8,4,3,7,5,6,9,10],[10,4,3,9,5,6,7,8,1,2]],true>,<[[3,8,10,5,4,2,1,9,6,7],[2,10,7,4,8,6,5,3,1,9],[10,9,5,4,3,6,8,7,2,1],[1,2,5,4,7,8,6,3,9,10],[10,4,3,9,5,6,7,8,1,2]],true>],2000025,[3,10,7,0,1],[[14,12,0,11],[3,8,11,3],[0,5,12,6],[11,2,3,16],[3,14,10,8],[8,13,4,14],[16,7,10,10],[7,12,15,13],[13,12,5,11],[10,0,15,10]]>,[]>",
  "<\"10t18\",\"Malle-Matzat's book (simplified)\",[\"x^10 + 2^3*5*a^2*x^8 + 2*5*(4*a^2+1)*x^7 + 5*(8*a^4-3)*x^6 + (32*a^4+196*a^2-47)*x^5 + 2*5^2*7*a^2*x^4 + 5*(40*a^4+34*a^2+11)*x^3 + 5*(67*a^4+9)*x^2 + 3*5*(12*a^4-a^2+1)*x + 2*(4*a^2-3*a+1)*(4*a^2+3*a+1)\"],[[8,9,2,1,10,3,6,7,4,5],[1,4,10,5,8,6,3,2,7,9],[1,5,9,8,2,6,10,4,3,7],[7,2,10,4,5,6,9,8,3,1],[1,4,3,6,2,8,7,5,9,10]],[100001],[200,40],[10,18],[[9],[19]],<13,4,40,{[2,8],[1,1,2,2,2,2],[5,5],[1,1,1,1,1,5],[1,1,4,4]},[[10,8,1,2,4,6,7,5,3,9]],[<[[3,2,7,4,5,6,9,8,10,1],[4,1,2,3,7,9,5,10,6,8],[1,4,3,5,6,8,7,2,9,10]],true>,<[[1,2,9,4,5,6,10,8,3,7],[8,10,2,7,9,3,6,1,4,5],[1,5,10,6,4,2,3,8,7,9],[1,4,9,2,6,5,10,8,3,7],[1,8,3,5,6,2,7,4,9,10],[10,2,9,4,5,6,1,8,7,3]],true>,<[[8,9,2,1,10,3,6,7,4,5],[1,4,10,5,8,6,3,2,7,9],[1,5,9,8,2,6,10,4,3,7],[7,2,10,4,5,6,9,8,3,1],[1,4,3,6,2,8,7,5,9,10]],true>],1264924,[2,12,3,0,1],[[5,1,8,12],[6,8,3,8],[5,5,0,9],[6,11,2,6],[12,11,8,10],[9,0,0,0],[5,0,0,0],[6,9,0,2],[8,4,12,3],[3,3,6,2]]>,[]>",
  "<\"10t19\",\"Malle-Matzat's book\",[\"x^10 + 2^2*5*x^8 - 5*a*x^7 + 2*5*7*x^6 + a*(a-55)*x^5 + 5^2*(3*a+4)*x^4 + 5*a*(2*a+5)*x^3 - 5*(a+13)*(3*a-1)*x^2 - 3*5*a*(a-5)*x + 28*a^2+35*a+16\"],[[1,5,8,3,10,2,4,7,9,6],[9,7,10,6,8,4,2,5,1,3],[1,10,7,8,6,5,3,4,9,2],[1,6,3,4,10,9,7,8,5,2],[7,2,1,3,5,6,8,4,9,10]],[100001],[200,43],[10,19],[[9],[19]],<41,4,40,{[1,1,2,2,2,2],[10],[5,5],[2,2,2,2,2],[1,1,4,4]},[[1,2,4,7,10,5,8,3,6,9]],[<[[1,5,4,3,9,6,7,8,10,2],[1,2,7,3,10,6,4,8,5,9],[1,2,3,8,5,6,4,7,9,10],[1,2,3,4,6,9,7,8,5,10],[1,2,3,4,5,9,8,7,6,10],[1,2,3,4,5,6,8,7,10,9],[8,2,3,4,5,6,7,1,10,9],[5,3,9,6,8,4,10,2,1,7]],true>,<[[1,6,3,4,5,2,7,8,10,9],[7,10,4,1,5,9,3,8,2,6],[9,7,10,6,8,4,2,5,1,3],[3,6,1,7,5,2,4,8,10,9],[1,10,3,4,9,2,7,8,6,5],[7,2,1,3,5,6,8,4,9,10]],true>,<[[1,5,8,3,10,2,4,7,9,6],[9,7,10,6,8,4,2,5,1,3],[1,10,7,8,6,5,3,4,9,2],[1,6,3,4,10,9,7,8,5,2],[7,2,1,3,5,6,8,4,9,10]],true>],142,[6,23,0,0,1],[[22,0,0,0],[15,0,0,0],[27,7,25,31],[20,1,6,30],[37,35,18,19],[39,36,10,31],[25,0,30,19],[29,33,21,2],[9,37,3,15],[23,15,10,17]]>,[]>",
  "<\"10t20\",\"Ask Tim\",[\"((a^2+5)^2)*x^10 + (2^2*5*(a^2+5)^2)*x^8 - 5*a*(a^2+5)*(5*a^2+24)*x^7 + (2*5*7*(a^2+5)^2)*x^6 + (5*a^2+24)*(3*a^4-49*a^3+22*a^2-245*a+40)*x^5 + 5^2*(a^2+5)*(5*a^4+8*a^2-76)*x^4 + 5*(5*a^2+24)*(6*a^4+17*a^3+44*a^2+85*a+80)*x^3 - 5*(25*a^7+10*a^6+300*a^5+45*a^4+1184*a^3-282*a^2+1536*a-1285)*x^2 - 3*5*(5*a^2+24)*(3*a^4+a^3+22*a^2+5*a+40)*x + 25*a^8+25*a^7+445*a^6+300*a^5+2941*a^4+1184*a^3+8532*a^2+1536*a+9136\"],[[4,8,2,9,10,3,1,6,7,5],[3,6,9,2,5,10,7,1,8,4],[9,10,8,6,5,4,7,3,1,2],[1,4,3,7,5,10,6,8,9,2],[8,2,9,4,1,6,7,3,5,10]],[100001],[200,44],[10,20],[[9],[19]],<13,4,40,{[1,1,2,2,2,2],[5,5],[1,1,1,1,1,5],[1,1,4,4],[2,4,4]},[[2,5,6,1,4,3,8,10,7,9]],[<[[3,4,1,7,5,10,2,8,9,6],[5,6,9,2,8,10,4,3,1,7],[5,2,9,10,3,7,4,8,1,6],[1,2,3,7,5,10,4,8,9,6],[8,2,9,4,1,6,10,5,3,7],[1,2,3,4,8,7,6,5,9,10],[1,2,5,4,9,6,10,3,8,7],[1,2,8,4,5,6,10,3,9,7],[1,2,3,4,5,10,6,8,9,7],[1,2,3,4,5,6,10,9,8,7],[2,3,7,9,4,8,5,10,6,1]],true>,<[[1,4,3,2,5,6,10,8,9,7],[8,10,3,7,9,6,2,5,1,4],[7,8,6,9,10,3,1,2,4,5],[5,4,3,2,1,6,10,9,8,7],[1,10,3,2,5,7,4,8,9,6],[8,2,9,4,1,6,7,3,5,10]],true>,<[[4,8,2,9,10,3,1,6,7,5],[3,6,9,2,5,10,7,1,8,4],[9,10,8,6,5,4,7,3,1,2],[1,4,3,7,5,10,6,8,9,2],[8,2,9,4,1,6,7,3,5,10]],true>],3437514056662,[2,12,3,0,1],[[7,8,10,6],[3,8,3,6],[9,6,11,5],[2,3,2,1],[0,7,11,0],[3,7,2,8],[11,2,6,11],[1,12,3,1],[9,6,4,1],[7,6,0,0]]>,[]>",
  "<\"10t21\",\"Ask Tim\",[\"x^10 - 2*5*x^7 + a*x^6 + 2*(2*a-3)*x^5 + (6*a+25)*x^4 + 2^2*a*x^3 + (a+30)*x^2 + 3^2\"],[[1,3,2,8,5,6,7,4,9,10],[7,5,10,9,2,8,1,6,4,3],[1,3,2,8,10,9,7,4,6,5],[5,2,3,4,9,10,7,8,6,1],[1,8,2,3,5,6,4,7,9,10]],[100001],[200,43],[10,21],[[9],[19]],<19,4,40,{[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[10],[1,2,2,5],[5,5],[1,1,1,1,1,5],[2,2,2,2,2],[2,4,4]},[[8,1,6,5,4,7,10,9,2,3]],[<[[1,2,3,4,6,5,7,8,10,9],[6,2,3,4,10,1,7,8,9,5],[1,4,3,2,5,6,8,7,9,10],[1,2,3,4,5,10,7,8,6,9],[1,2,7,4,5,6,8,3,9,10],[3,6,10,1,7,8,9,5,4,2],[1,7,8,4,5,6,2,3,9,10],[1,8,7,4,5,6,3,2,9,10]],true>,<[[1,3,2,8,5,6,7,4,9,10],[7,5,10,9,2,8,1,6,4,3],[1,3,2,8,10,9,7,4,6,5],[5,2,3,4,9,10,7,8,6,1],[1,8,2,3,5,6,4,7,9,10]],true>],30,[2,11,2,0,1],[[3,7,17,16],[17,0,10,3],[15,13,16,0],[18,17,1,5],[0,2,18,14],[4,17,14,11],[18,13,9,11],[8,14,2,0],[15,17,9,0],[16,14,18,16]]>,[]>",
  "<\"10t22\",\"Ask Tim\",[\"x^10 + 2*x^6 + x^2 + a\"],[[1,4,3,2,5,6,9,8,7,10],[1,2,9,8,5,6,7,4,3,10],[1,2,5,4,3,6,7,10,9,8],[2,9,6,3,10,7,4,1,8,5]],[100001],[240,189],[10,22],[[9],[19]],<17,4,40,{[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[10],[5,5],[1,1,1,1,3,3],[2,2,2,2,2],[2,2,3,3],[1,1,4,4],[2,2,6],[2,4,4]},[[6,3,10,7,4,1,8,5,2,9]],[<[[1,4,3,2,5,6,9,8,7,10],[1,2,9,8,5,6,7,4,3,10],[1,2,5,4,3,6,7,10,9,8],[2,9,6,3,10,7,4,1,8,5]],true>],5,[3,10,7,0,1],[[14,1,16,8],[7,11,16,1],[12,13,6,12],[13,5,14,16],[11,2,8,14],[3,16,1,9],[10,6,1,16],[5,4,11,5],[4,12,3,1],[6,15,9,3]]>,[]>",
  "<\"10t23\",\"Ask Tim\",[\"x^10 - a*x^6 + (3*a+25)*x^4 - 2^2*(a-75)\"],[[1,2,3,4,10,6,7,8,9,5],[3,2,6,10,4,8,7,1,5,9],[5,9,3,7,1,10,4,8,2,6],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[6,2,3,4,5,1,7,8,9,10],[1,2,3,9,5,6,7,8,4,10]],[100001],[320,1636],[10,23],[[9],[19]],<11,4,40,{[1,1,2,2,2,2],[1,1,1,1,2,2,2],[10],[5,5],[1,1,2,2,4],[2,2,2,2,2],[1,1,4,4],[1,1,1,1,1,1,1,1,2],[2,4,4],[2,2,2,4]},[[7,1,5,9,8,2,6,10,4,3]],[<[[1,2,3,4,10,6,7,8,9,5],[3,2,6,10,4,8,7,1,5,9],[5,9,3,7,1,10,4,8,2,6],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[6,2,3,4,5,1,7,8,9,10],[1,2,3,9,5,6,7,8,4,10]],true>],30,[2,10,8,0,1],[[1,9,3,0],[4,1,5,3],[9,1,0,10],[7,8,2,5],[6,5,6,2],[10,2,8,0],[7,10,6,8],[2,10,0,1],[4,3,9,6],[5,6,5,9]]>,[]>",
  "<\"10t24\",\"Ask Tim\",[\"x^10 - 3*5*x^8 + 2^2*5^2*x^6 - 5*(a+50)*x^4 + 2*3*5*a*x^2 - a^2\"],[[1,7,8,4,5,6,2,3,9,10],[8,9,7,6,5,3,4,2,1,10],[2,6,4,3,10,7,1,9,8,5],[10,3,4,6,2,5,8,9,1,7],[6,2,8,4,5,1,7,3,9,10],[1,2,3,9,10,6,7,8,4,5],[1,2,8,4,10,6,7,3,9,5]],[100001],[320,1635],[10,24],[[9],[19]],<13,4,40,{[2,8],[1,1,2,2,2,2],[5,5],[1,1,4,4],[2,2,2,4]},[[3,10,6,4,2,8,5,1,9,7]],[<[[1,7,8,4,5,6,2,3,9,10],[8,9,7,6,5,3,4,2,1,10],[2,6,4,3,10,7,1,9,8,5],[10,3,4,6,2,5,8,9,1,7],[6,2,8,4,5,1,7,3,9,10],[1,2,3,9,10,6,7,8,4,5],[1,2,8,4,10,6,7,3,9,5]],true>],16,[2,12,3,0,1],[[5,0,6,1],[4,10,7,0],[1,0,9,8],[3,0,0,0],[11,2,10,1],[8,0,7,12],[9,3,6,0],[12,0,4,5],[10,0,0,0],[2,11,3,12]]>,[]>",
  "<\"10t25\",\"Ask Tim\",[\"(a^2+4)*x^10 + 5*(a^2+4)*x^9 + (16*a^4+122*a^3+766*a^2+2007*a+4248)*x^8 + 2*(32*a^4+244*a^3+1517*a^2+4014*a+8436)*x^7 + (109*a^4+785*a^3+4793*a^2+12254*a+26068)*x^6 + (103*a^4+647*a^3+3781*a^2+8664*a+19236)*x^5 + (51*a^4+260*a^3+1439*a^2+2559*a+6380)*x^4 + (a^2+4)*(5*a^2+11*a+86)*x^3 - (a^2+4)*(4*a^2+20*a+63)*x^2 + (a-6)*(a^2+4)*x + a^2+4\"],[[9,8,2,1,7,3,4,10,5,6],[3,2,1,4,5,6,10,8,9,7],[1,4,3,9,7,2,8,10,6,5],[1,9,3,6,5,4,7,8,2,10],[3,2,1,6,5,4,7,8,9,10],[1,2,3,6,8,4,7,5,9,10],[1,10,3,5,9,8,6,2,7,4]],[100001],[320,1635],[10,25],[[9],[19]],<29,4,40,{[1,1,2,2,2,2],[5,5],[1,1,8],[1,1,4,4],[2,4,4],[2,2,2,4]},[[7,1,10,9,8,2,6,5,3,4]],[<[[9,8,2,1,7,3,4,10,5,6],[3,2,1,4,5,6,10,8,9,7],[1,4,3,9,7,2,8,10,6,5],[1,9,3,6,5,4,7,8,2,10],[3,2,1,6,5,4,7,8,9,10],[1,2,3,6,8,4,7,5,9,10],[1,10,3,5,9,8,6,2,7,4]],true>],8000545023436180,[2,15,2,0,1],[[17,24,17,9],[6,22,15,14],[14,5,12,20],[4,24,17,9],[22,14,17,1],[27,5,12,20],[9,7,14,15],[9,15,12,28],[25,7,14,15],[22,22,15,14]]>,[]>",
  "<\"10t26\",\"Ask Tim\",[\"(a^2+2)*x^10 - 2^2*(a^2+2)*x^9 + 2^2*3*(a^2+2)*x^7 + 2^2*3*(2*a^2-5)*x^6 - 2^2*3*(5*a^2-8)*x^4 - 2^4*3*(a^2+2)*x^3 + 2^6*(a^2+2)*x + 2^5*(a^2+2)\"],[[1,2,9,6,8,4,10,5,3,7],[9,5,6,10,3,2,7,8,4,1]],[100001],[360,118],[10,26],[[9],[19]],<13,5,40,{[1,3,3,3],[1,1,2,2,2,2],[5,5],[1,1,4,4]},[[9,6,7,3,4,10,8,5,2,1]],[<[[2,1,4,5,6,7,8,9,10,3],[2,3,1,4,5,6,7,8,9,10]],true>,<[[1,3,9,8,6,10,4,7,2,5],[1,10,4,2,6,7,8,5,9,3],[1,7,5,8,2,4,3,10,9,6],[9,2,3,10,6,5,8,7,1,4]],false>,<[[1,2,9,6,8,4,10,5,3,7],[9,5,6,10,3,2,7,8,4,1]],true>],80001600024,[11,4,0,0,0,1],[[11,12,5,5,0],[8,12,9,11,8],[5,8,8,11,8],[3,9,1,4,9],[2,0,10,7,3],[4,9,1,6,10],[0,5,2,4,4],[4,4,5,0,2],[2,3,7,0,11],[4,3,4,4,10]]>,[]>",
  "<\"10t27\",\"Ask Tim\",[\"a^2*x^10 + 2^2*5*a^2*x^8 + 5*a^2*x^7 + 2*5*7*a^2*x^6 + 2*a*(a^2+25*a-4)*x^5 - 5^2*a*(a^2-4*a-4)*x^4 + 5*a*(4*a^2-15*a-16)*x^3 + 5*a*(a^2+45*a-4)*x^2 - 2*3*5*a*(a-2)*(a+2)*x + (a-2)^2*(a+2)^2\"],[[1,2,9,4,5,6,7,10,3,8],[7,2,8,1,5,4,6,9,10,3],[9,5,6,8,2,3,10,4,1,7],[6,2,9,7,5,1,4,10,3,8],[1,8,9,4,5,6,7,3,10,2],[5,2,3,1,6,7,4,8,9,10]],[100001],[400,207],[10,27],[[9],[19]],<13,4,40,{[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[10],[1,2,2,5],[5,5],[2,2,2,2,2],[1,1,4,4],[2,4,4]},[[3,1,5,10,2,9,8,7,4,6]],[<[[7,2,3,5,6,1,4,10,8,9],[1,2,9,4,5,7,6,8,3,10],[1,2,8,4,7,6,5,9,10,3],[1,2,3,7,4,6,5,10,8,9],[1,2,3,6,7,4,5,8,9,10],[1,2,3,4,7,5,6,9,10,8],[1,2,3,4,5,6,7,9,10,8],[1,2,3,4,5,7,6,8,10,9],[1,8,2,4,6,7,5,3,9,10],[1,9,3,4,5,6,7,8,10,2],[3,7,5,2,8,9,10,4,1,6]],true>,<[[1,2,9,4,5,6,7,10,3,8],[7,2,8,1,5,4,6,9,10,3],[9,5,6,8,2,3,10,4,1,7],[6,2,9,7,5,1,4,10,3,8],[1,8,9,4,5,6,7,3,10,2],[5,2,3,1,6,7,4,8,9,10]],true>],2329998,[2,12,3,0,1],[[1,3,2,12],[3,4,6,0],[3,6,8,4],[12,6,7,4],[8,0,10,10],[11,9,1,2],[7,8,6,11],[12,5,7,2],[2,0,5,9],[6,11,0,11]]>,[]>",
  "<\"10t28\",\"Malle-Matzat's book (simplified)\",[\"x^10 + 2^3*5*a*x^8 + 2*5*(4*a+1)*x^7 + 5*(8*a^2-3)*x^6 + (32*a^2+196*a-47)*x^5 + 2*5^2*7*a*x^4 + 5*(40*a^2+34*a+11)*x^3 + 5*(67*a^2+9)*x^2 + 3*5*(12*a^2-a+1)*x + 2*(16*a^2-a+1)\"],[[1,2,7,8,5,6,3,4,9,10],[2,1,6,9,7,8,10,5,3,4],[1,2,8,3,10,5,4,7,6,9],[1,2,7,8,9,10,3,4,5,6],[1,10,3,4,9,2,7,8,6,5],[8,2,7,1,5,6,4,3,9,10]],[100001],[400,206],[10,28],[[19],[35]],<53,4,40,{[2,8],[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[1,2,2,5],[1,1,4,4]},[[1,2,8,3,10,5,4,7,6,9]],[<[[1,5,3,4,6,9,7,8,10,2],[5,1,2,6,3,4,9,10,7,8],[3,2,4,7,5,6,8,1,9,10]],true>,<[[1,2,7,8,5,6,3,4,9,10],[2,1,6,9,7,8,10,5,3,4],[1,2,8,3,10,5,4,7,6,9],[1,2,7,8,9,10,3,4,5,6],[1,10,3,4,9,2,7,8,6,5],[8,2,7,1,5,6,4,3,9,10]],true>],4001,[2,38,9,0,1],[[16,0,0,0],[32,0,0,0],[28,29,4,7],[46,30,39,30],[30,51,25,29],[3,6,0,32],[47,48,39,4],[22,52,24,12],[46,12,15,33],[48,37,13,12]]>,[]>",
  "<\"10t29\",\"Ask Tim\",[\"a*x^10 + 5*(a-1)*x^8 - 25*a^2+44*a-20\"],[[1,2,3,4,10,6,7,8,9,5],[5,2,4,8,1,10,7,9,3,6],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[9,2,6,10,3,4,7,1,5,8],[8,1,9,10,2,3,6,4,5,7],[6,2,3,4,5,1,7,8,9,10],[1,2,3,9,5,6,7,8,4,10]],[100001],[640,21536],[10,29],[[9],[19]],<19,4,40,{[2,8],[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[1,1,1,1,2,2,2],[5,5],[1,1,2,2,4],[2,2,2,2,2],[1,1,8],[1,1,4,4],[2,4,4],[2,2,2,4]},[[1,8,2,5,9,6,3,7,10,4]],[<[[1,2,3,4,10,6,7,8,9,5],[5,2,4,8,1,10,7,9,3,6],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[9,2,6,10,3,4,7,1,5,8],[8,1,9,10,2,3,6,4,5,7],[6,2,3,4,5,1,7,8,9,10],[1,2,3,9,5,6,7,8,4,10]],true>],814189,[2,11,2,0,1],[[13,0,0,0],[0,1,2,13],[2,4,16,15],[6,8,2,12],[8,0,13,4],[6,0,0,0],[0,18,17,6],[17,15,3,4],[13,11,17,7],[11,0,6,15]]>,[]>",
  "<\"10t30\",\"Ask Tim\",[\"x^10 + 2*x^9 + 3^2*x^8 + (2*a^2-729)*x^2 + 2*(2*a^2-729)*x + 2*a^2-729\"],[[6,9,4,3,8,1,10,5,2,7],[9,1,6,4,10,8,5,3,2,7]],[100001],[720,764],[10,30],[[16],[30]],<29,5,40,{[1,3,3,3],[10],[5,5],[2,2,2,2,2],[1,1,8],[1,1,4,4]},[[4,8,1,6,7,9,10,5,3,2]],[<[[2,3,4,5,6,7,8,9,10,1],[2,1,3,4,5,6,7,8,9,10]],true>,<[[10,2,9,7,1,3,8,4,6,5],[1,2,4,3,5,8,9,6,7,10],[1,2,10,8,4,7,5,3,6,9],[2,1,9,7,5,8,4,6,3,10]],false>,<[[6,9,4,3,8,1,10,5,2,7],[9,1,6,4,10,8,5,3,2,7]],true>],30,[27,3,0,0,0,1],[[1,5,8,27,2],[27,2,17,1,5],[14,16,18,24,5],[24,20,0,10,14],[7,22,10,5,16],[23,22,21,16,16],[6,24,8,9,18],[19,7,11,2,21],[6,24,11,10,21],[16,3,12,12,27]]>,[]>",
  "<\"10t31\",\"Ask Tim\",[\"3^6*x^10 - 2*3^6*x^9 + 3^6*x^8 - 3^2*(2*a^2+1)*x^2 + 2*(2*a^2+1)*x - 2*a^2-1\"],[[7,2,6,10,4,8,9,3,1,5],[10,2,3,8,7,4,1,9,6,5],[4,2,3,5,9,7,8,10,1,6],[7,3,2,9,10,6,1,8,4,5]],[100001],[720,765],[10,31],[[9],[19]],<13,5,40,{[2,8],[1,3,3,3],[1,1,2,2,2,2],[5,5],[1,1,4,4]},[[10,3,6,2,4,5,1,7,8,9]],[<[[2,1,4,5,6,7,8,9,10,3],[2,3,1,4,5,6,7,8,9,10]],true>,<[[7,2,6,10,4,8,9,3,1,5],[10,2,3,8,7,4,1,9,6,5],[4,2,3,5,9,7,8,10,1,6],[7,3,2,9,10,6,1,8,4,5]],false>],52,[11,4,0,0,0,1],[[6,11,8,6,3],[11,4,8,8,6],[8,10,8,1,1],[8,10,3,12,1],[7,9,4,5,8],[3,6,3,0,10],[6,6,6,0,3],[3,3,7,10,11],[4,3,5,0,4],[2,3,0,10,5]]>,[]>",
  "<\"10t32\",\"Malle-Matzat's book (modified)\",[\"x^10 - 2^2*x^9 + 2^2*3*x^7 + (a-6)*x^6 - 2*a*x^4 - 2^4*3*x^3 + 2^6*x + 2^5\"],[[4,9,1,5,6,3,8,10,7,2],[1,4,6,2,5,3,7,8,10,9]],[100001],[720,763],[10,32],[[9],[19]],<23,5,40,{[1,3,6],[1,3,3,3],[1,1,2,2,2,2],[1,1,1,1,2,2,2],[5,5],[1,1,4,4],[2,4,4]},[[6,4,7,5,9,10,1,2,8,3]],[<[[2,3,4,5,6,7,8,9,10,1],[2,1,3,4,5,6,7,8,9,10]],true>,<[[9,6,10,1,2,5,3,8,4,7],[1,10,5,4,3,7,6,8,9,2],[1,7,10,6,4,2,9,8,3,5],[8,10,7,4,6,5,3,1,9,2]],false>,<[[4,9,1,5,6,3,8,10,7,2],[1,4,6,2,5,3,7,8,10,9]],true>],30,[18,3,0,0,0,1],[[10,22,21,15,2],[3,13,19,7,5],[13,3,1,12,9],[22,0,3,8,11],[6,12,21,4,12],[0,2,12,13,17],[14,3,16,21,19],[16,22,17,2,20],[0,22,9,2,21],[12,16,19,8,22]]>,[]>",
  "<\"10t33\",\"Ask Tim\",[\"x^10 + 2^2*5*x^8 - 5*x^7 + 2*5*7*x^6 + 2*(a-25)*x^5 + 5^2*(a+4)*x^4 + 5*(4*a+15)*x^3 - 5*(a-45)*x^2 - 2*3*5*a*x + a^2\"],[[1,10,7,4,5,6,2,8,9,3],[6,9,5,2,10,1,8,3,7,4],[1,3,2,4,5,6,10,8,9,7],[1,10,7,9,4,6,2,5,8,3],[1,3,2,8,9,6,10,4,5,7],[1,3,10,4,5,7,2,8,9,6],[8,2,3,1,4,6,7,9,5,10]],[100001],[800,1191],[10,33],[[9],[19]],<53,4,40,{[2,8],[10],[1,2,2,5],[5,5],[1,1,2,2,4],[2,2,2,2,2],[1,1,4,4],[1,4,5],[1,1,1,1,1,1,4],[2,4,4]},[[2,1,9,6,3,8,5,10,7,4]],[<[[2,1,4,3,6,5,8,7,10,9],[4,2,3,5,8,6,7,9,1,10],[4,2,3,1,5,6,7,8,9,10]],true>,<[[1,10,7,4,5,6,2,8,9,3],[6,9,5,2,10,1,8,3,7,4],[1,3,2,4,5,6,10,8,9,7],[1,10,7,9,4,6,2,5,8,3],[1,3,2,8,9,6,10,4,5,7],[1,3,10,4,5,7,2,8,9,6],[8,2,3,1,4,6,7,9,5,10]],true>],19,[2,38,9,0,1],[[52,24,43,11],[45,29,10,42],[21,7,8,5],[9,24,5,26],[10,7,49,0],[36,52,22,41],[18,43,33,40],[25,2,46,8],[10,49,16,8],[39,28,33,31]]>,[]>",
  "<\"10t34\",\"Ask Tim\",[\"x^10 + 3*5^2*x^6 - 3*a^2*x^4 - 3^2*a^2\"],[[1,3,10,4,7,6,8,5,9,2],[6,7,3,4,5,1,2,8,9,10],[3,2,4,6,10,8,7,9,1,5],[1,7,3,4,10,6,2,8,9,5],[1,2,3,9,10,6,7,8,4,5],[1,2,8,9,5,6,7,3,4,10]],[100001],[960,11358],[10,34],[[9],[19]],<17,4,40,{[1,1,2,2,2,2],[5,5],[1,1,2,6],[1,1,1,1,3,3],[2,2,3,3],[1,1,4,4],[2,2,2,4]},[[2,6,10,4,3,7,1,5,9,8]],[<[[1,3,10,4,7,6,8,5,9,2],[6,7,3,4,5,1,2,8,9,10],[3,2,4,6,10,8,7,9,1,5],[1,7,3,4,10,6,2,8,9,5],[1,2,3,9,10,6,7,8,4,5],[1,2,8,9,5,6,7,3,4,10]],true>],89,[3,10,7,0,1],[[12,16,8,16],[6,13,14,9],[3,16,9,3],[5,0,0,0],[9,4,7,7],[5,1,9,1],[11,4,3,8],[14,1,8,14],[12,0,0,0],[8,13,10,10]]>,[]>",
  "<\"10t35\",\"Malle-Matzat's book\",[\"x^10 + 2*x^9 + 3^2*x^8 + a*x^2 + 2*a*x + a\"],[[3,8,9,4,2,7,10,5,1,6],[1,6,3,4,10,2,8,7,9,5],[1,8,2,4,3,9,5,6,10,7],[4,5,3,1,2,10,8,7,9,6]],[100001],[1440,5841],[10,35],[[9],[19]],<97,5,40,{[2,8],[1,3,6],[1,3,3,3],[1,1,2,2,2,2],[10],[5,5],[2,2,2,2,2],[1,1,8],[1,1,4,4],[2,4,4]},[[10,5,4,7,1,3,9,2,6,8]],[<[[2,3,4,5,6,7,8,9,10,1],[2,1,3,4,5,6,7,8,9,10]],true>,<[[3,8,9,4,2,7,10,5,1,6],[1,6,3,4,10,2,8,7,9,5],[1,8,2,4,3,9,5,6,10,7],[4,5,3,1,2,10,8,7,9,6]],false>],7,[92,3,0,0,0,1],[[26,87,26,40,1],[38,32,78,74,6],[0,36,58,69,10],[63,90,85,31,12],[86,30,70,55,26],[82,54,69,53,28],[57,87,55,57,58],[85,54,30,12,66],[66,24,24,81,86],[77,88,87,13,95]]>,[]>",
  "<\"10t36\",\"Ask Tim\",[\"x^10 + 3*5^2*x^6 + a*x^4 + 3*a\"],[[1,2,3,4,10,6,7,8,9,5],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[1,5,2,9,3,6,10,7,4,8],[6,2,3,4,5,1,7,8,9,10],[7,4,3,1,5,2,9,8,6,10],[1,2,3,9,5,6,7,8,4,10]],[100001],[1920,0],[10,36],[[12],[25]],<29,4,40,{[10],[5,5],[1,1,2,6],[1,1,2,2,4],[1,1,1,1,3,3],[1,1,1,1,6],[1,1,2,3,3],[2,2,2,2,2],[2,2,3,3],[1,1,4,4],[2,2,6],[2,2,2,4],[2,4,4]},[[10,7,9,3,1,5,2,4,8,6]],[<[[1,2,3,4,10,6,7,8,9,5],[1,7,3,4,5,6,2,8,9,10],[1,2,8,4,5,6,7,3,9,10],[1,5,2,9,3,6,10,7,4,8],[6,2,3,4,5,1,7,8,9,10],[7,4,3,1,5,2,9,8,6,10],[1,2,3,9,5,6,7,8,4,10]],true>],11,[2,15,2,0,1],[[24,2,16,2],[1,20,16,18],[26,10,10,4],[11,27,15,28],[0,4,16,25],[5,27,13,27],[28,9,13,11],[3,19,19,25],[18,2,14,1],[0,25,13,4]]>,[]>",
  "<\"10t37\",\"Obvious 1-variable family C2^(n-1):Sn: x^(2*n)+a*x^2+(-1)^n in degree 10\",[\"x^10 + a*x^2 - 1\"],[[9,2,3,6,5,4,7,8,1,10],[4,2,3,1,5,9,7,8,6,10],[4,5,1,2,3,9,10,6,7,8],[9,5,6,2,3,4,10,1,7,8]],[100001],[1920,0],[10,37],[[9],[19]],<19,4,40,{[2,8],[1,1,2,2,2,2],[1,1,1,1,2,4],[5,5],[1,1,2,6],[4,6],[1,1,1,1,1,1,1,1,1,1],[2,2,3,3],[1,1,4,4],[2,2,2,4]},[[5,1,3,7,9,10,6,8,2,4]],[<[[9,2,3,6,5,4,7,8,1,10],[4,2,3,1,5,9,7,8,6,10],[4,5,1,2,3,9,10,6,7,8],[9,5,6,2,3,4,10,1,7,8]],true>],7,[2,11,2,0,1],[[2,7,9,6],[10,13,18,3],[8,0,0,0],[13,17,4,0],[3,16,15,10],[17,12,10,13],[9,6,1,16],[11,0,0,0],[6,2,15,0],[16,3,4,9]]>,[]>",
  "<\"10t38\",\"Ask Tim\",[\"x^10 + 5^2*a*x^6 - 3*x^4 - 3*a\"],[[1,7,3,9,5,6,2,8,4,10],[1,2,8,9,5,6,7,3,4,10],[1,2,3,9,10,6,7,8,4,5],[8,10,7,6,4,3,5,2,1,9],[5,2,3,1,4,10,7,8,6,9],[10,2,4,3,6,5,7,9,8,1],[6,2,3,4,10,1,7,8,9,5],[1,3,4,5,7,6,8,9,10,2]],[100001],[1920,0],[10,38],[[9],[19]],<29,4,40,{[1,1,2,2,2,2],[5,5],[1,1,2,6],[1,1,1,1,3,3],[1,1,2,2,4],[3,3,4],[1,1,1,1,1,1,1,1,1,1],[1,1,8],[2,2,3,3],[1,1,4,4],[1,1,1,1,1,1,4],[2,2,6],[2,4,4],[2,2,2,4]},[[5,7,9,6,3,10,2,4,1,8]],[<[[1,7,3,9,5,6,2,8,4,10],[1,2,8,9,5,6,7,3,4,10],[1,2,3,9,10,6,7,8,4,5],[8,10,7,6,4,3,5,2,1,9],[5,2,3,1,4,10,7,8,6,9],[10,2,4,3,6,5,7,9,8,1],[6,2,3,4,10,1,7,8,9,5],[1,3,4,5,7,6,8,9,10,2]],true>],67,[2,15,2,0,1],[[12,2,0,19],[15,10,8,9],[14,4,28,27],[5,16,11,26],[13,10,12,9],[17,27,0,10],[14,19,21,20],[15,25,1,2],[24,13,18,3],[16,19,17,20]]>,[]>",
  "<\"10t39\",\"Obvious 1-variable family C2wrSn: x^(2*n)+x^2+a in degree 10\",[\"x^10 + x^2 + a\"],[[3,4,5,1,2,8,9,10,6,7],[1,5,3,4,2,6,10,8,9,7],[1,2,3,4,10,6,7,8,9,5]],[100001],[3840,0],[10,39],[[9],[19]],<19,4,40,{[2,8],[1,1,1,1,2,4],[1,1,1,1,2,2,2],[10],[5,5],[1,1,2,6],[1,1,2,2,4],[1,1,2,3,3],[4,6],[3,3,4],[1,1,8],[2,2,3,3],[1,1,4,4],[2,2,6],[2,4,4],[2,2,2,4]},[[5,7,1,3,4,10,2,6,8,9]],[<[[3,4,5,1,2,8,9,10,6,7],[1,5,3,4,2,6,10,8,9,7],[1,2,3,4,10,6,7,8,9,5]],true>],5,[2,11,2,0,1],[[1,9,8,3],[1,4,17,9],[1,14,15,1],[14,1,6,10],[9,14,9,5],[18,10,11,16],[18,15,2,10],[18,5,4,18],[5,18,13,9],[10,5,10,14]]>,[]>",
  "<\"10t40\",\"Ask Tim\",[\"x^10 + 2*3*5^2*x^8 + a*x^7 + 3^2*5^4*x^6 + 2*3*13*a*x^5 + x^4 + 3^2*5^2*a*x^3 + 2*3*x^2 + 3^2\"],[[8,10,6,2,9,5,4,3,7,1],[1,2,3,4,5,6,7,9,10,8],[1,2,3,10,5,4,7,6,8,9],[1,5,3,6,7,10,2,4,8,9],[3,5,7,10,1,4,2,8,9,6],[2,7,3,10,5,6,1,8,4,9],[1,2,3,8,5,6,7,10,9,4]],[100001],[7200,0],[10,40],[[9],[19]],<13,4,40,{[1,1,1,2,2,3],[1,1,3,5],[10],[1,2,2,5],[1,1,1,1,1,5],[5,5],[1,1,1,1,3,3],[2,2,6],[2,4,4]},[[8,4,9,1,6,3,10,2,5,7]],[<[[8,10,6,2,9,5,4,3,7,1],[1,2,3,4,5,6,7,9,10,8],[1,2,3,10,5,4,7,6,8,9],[1,5,3,6,7,10,2,4,8,9],[3,5,7,10,1,4,2,8,9,6],[2,7,3,10,5,6,1,8,4,9],[1,2,3,8,5,6,7,10,9,4]],true>],66,[2,12,3,0,1],[[2,3,2,6],[1,2,5,9],[8,4,5,3],[3,8,4,0],[11,10,12,0],[12,8,1,7],[4,7,2,8],[8,0,2,11],[6,4,8,3],[10,6,11,5]]>,[]>",
  "<\"10t41\",\"Ask Tim\",[\"2^4*5^5*x^10 - 2^3*5^5*x^9 + 5^5*x^8 + 2^2*x^5 - x^4 + a\"],[[1,5,7,10,3,6,2,8,9,4],[1,2,5,10,3,8,7,4,9,6],[4,2,3,1,5,8,7,6,9,10],[10,2,3,4,7,6,5,8,9,1],[6,2,7,4,3,10,5,8,9,1],[8,2,7,4,3,6,9,1,5,10],[1,2,9,4,5,6,3,8,7,10],[1,2,3,4,9,6,5,8,7,10],[1,2,3,4,5,10,7,6,9,8],[1,2,3,4,5,6,9,10,7,8],[9,1,6,7,4,5,8,2,10,3]],[100001],[14400,0],[10,41],[[9],[19]],<37,4,40,{[1,1,1,2,2,3],[1,1,3,5],[1,1,1,1,1,1,2,2],[1,1,2,2,2,2],[1,2,3,4],[1,1,1,1,2,4],[10],[1,2,2,5],[2,2,3,3],[1,1,4,4],[2,2,6],[2,4,4]},[[2,1,10,9,4,3,6,5,8,7]],[<[[1,5,7,10,3,6,2,8,9,4],[1,2,5,10,3,8,7,4,9,6],[4,2,3,1,5,8,7,6,9,10],[10,2,3,4,7,6,5,8,9,1],[6,2,7,4,3,10,5,8,9,1],[8,2,7,4,3,6,9,1,5,10],[1,2,9,4,5,6,3,8,7,10],[1,2,3,4,9,6,5,8,7,10],[1,2,3,4,5,10,7,6,9,8],[1,2,3,4,5,6,9,10,7,8],[9,1,6,7,4,5,8,2,10,3]],true>],33,[2,24,6,0,1],[[18,25,18,34],[18,12,19,3],[21,36,13,17],[7,24,2,4],[10,35,22,7],[11,1,22,17],[34,36,27,1],[36,23,20,17],[33,29,30,9],[7,1,12,2]]>,[]>",
  "<\"10t42\",\"Ask Tim\",[\"2^4*x^10 + 2^3*5*x^9 + 5^2*x^8 - a^2-1\"],[[4,2,3,5,8,6,7,9,1,10],[1,3,6,4,5,7,10,8,9,2],[2,4,1,3,6,5,8,7,10,9]],[100001],[14400,0],[10,42],[[9],[19]],<127,4,40,{[1,1,1,2,2,3],[2,8],[1,1,3,5],[1,2,3,4],[1,1,1,1,2,4],[1,2,2,5],[5,5],[1,1,1,1,3,3],[4,6],[2,2,3,3],[1,1,4,4],[2,2,2,4]},[[1,2,10,5,8,3,6,9,4,7]],[<[[4,2,3,5,8,6,7,9,1,10],[1,3,6,4,5,7,10,8,9,2],[2,4,1,3,6,5,8,7,10,9]],true>],46,[3,97,2,0,1],[[74,0,0,0],[101,0,0,0],[67,15,9,16],[35,43,16,90],[75,16,95,24],[50,36,28,43],[98,43,63,65],[83,116,50,16],[109,79,93,124],[60,33,27,3]]>,[]>",
  "<\"10t43\",\"Ask Tim\",[\"x^10 + 2*x^5 + a*x^2 + 1\"],[[2,1,4,3,6,5,8,7,10,9],[3,2,6,4,5,7,10,8,9,1],[3,2,1,4,5,6,7,8,9,10]],[100001],[28800,0],[10,43],[[9],[19]],<43,4,40,{[2,3,5],[1,1,1,2,2,3],[2,8],[1,1,3,5],[1,1,1,3,4],[10],[1,2,2,5],[5,5],[1,1,1,1,3,3],[1,1,2,3,3],[4,6],[1,1,1,1,1,2,3],[2,2,3,3],[1,1,4,4],[1,4,5],[2,2,6],[2,4,4],[2,2,2,4]},[[1,2,6,9,4,7,10,5,8,3]],[<[[2,1,4,3,6,5,8,7,10,9],[3,2,6,4,5,7,10,8,9,1],[3,2,1,4,5,6,7,8,9,10]],true>],7,[3,42,5,0,1],[[3,0,0,0],[13,0,0,0],[17,14,10,24],[4,1,15,26],[17,20,18,33],[11,12,31,16],[5,33,14,39],[2,24,6,13],[7,41,4,14],[7,27,31,7]]>,[]>",
  "<\"10t44\",\"Ask Tim\",[\"x^10 + 3*x^5 + a*x - 2^2\"],[[2,1,4,5,6,7,8,9,10,3],[2,3,1,4,5,6,7,8,9,10]],[100001],[1814400,0],[10,44],[[9],[19]],<809,2,40,{[1,1,1,2,2,3],[2,8],[1,1,3,5],[1,2,3,4],[1,2,2,5],[1,1,1,1,1,5],[5,5],[1,1,2,6],[4,6],[3,7],[1,1,1,7],[1,9]},0,[<[[2,1,4,5,6,7,8,9,10,3],[2,3,1,4,5,6,7,8,9,10]],true>],8,[3,799,1],[[302,593],[726,73],[569,216],[252,0],[195,0],[647,736],[316,52],[144,315],[27,757],[58,494]]>,[]>",
  "<\"10t45\",\"Obvious 1-variable family Sn: x^n+x+a in degree 10\",[\"x^10 + x + a\"],[[2,3,4,5,6,7,8,9,10,1],[2,1,3,4,5,6,7,8,9,10]],[100001],[3628800,0],[10,45],[[9],[19]],<821,3,40,{[2,8],[1,3,6],[1,1,1,2,5],[1,1,3,5],[1,2,3,4],[1,1,1,1,2,4],[1,1,1,3,4],[10],[1,2,7],[5,5],[1,1,2,6],[1,1,2,3,3],[1,2,2,2,3],[4,6],[3,3,4],[1,1,8],[1,1,4,4],[3,7],[1,4,5],[1,9]},0,[<[[2,3,4,5,6,7,8,9,10,1],[2,1,3,4,5,6,7,8,9,10]],true>],6,[819,2,0,1],[[516,0,0],[36,52,68],[343,427,93],[548,312,264],[232,201,409],[480,359,595],[458,199,607],[811,261,638],[278,342,660],[403,310,771]]>,[]>"
  ];
// Stored families end
//////////////////////////////////////////////////////////////////////


intrinsic Family(d::RngIntElt, j::RngIntElt) -> GalFamily
{Family with Galois group TransitiveGroup(d,j)}
  ok:=exists(s){s: s in StoredFamilies | Regexp(Sprintf("^<\"%ot%o\"",d,j),s)}; 
  error if not ok, Sprintf("No family %ot%o found",d,j);
  return LoadFamily(s);
end intrinsic;


intrinsic Family(G::GrpPerm) -> GalFamily
{Family with a given transitive group as a Galois group}
  d,j:=Explode(TrID(G));
  error if d notin [2..10], "Only families for 2<=d<=10 have been loaded";
  error if j eq 0, "G must be transitive";
  return Family(d,j);
end intrinsic;


/////////////////////////////////////////////////
//  Automorphisms                              //
/////////////////////////////////////////////////


function baserat(N,b)
  N:=Z!N;
  b:=Z!b;
  R<a>:=PR(Z,1);
  if b le 1 or Abs(N) le 1 then return [1]; end if;
  sgn:=Sign(N);
  N:=Abs(N);
  L:=[];
  repeat
    m:=N mod b;
    if m gt b/2 then m:=m-b; end if;
    Append(~L,Denominator(BestApproximation(m/b,Round(b^(1/10)))));
    N:=(N-m) div b;
  until Abs(N) lt b div 2;
  return L;
end function;

function polyexpandden(f,b)
  R<a>:=PR(Z,1);
  U<x>:=PR(R);
  return &cat[baserat(Z!c,b): c in Coefficients(f)];
end function;

function peden(z,v0)
  e:=Eltseq(z);
  R<a>:=PR(Z,1);
  U<x>:=PR(R);
  return LCM(polyexpandden(U!e,v0));
end function;

function baseexpandB(N,b)
  N:=Z!N;
  b:=Z!b;
  R<a>:=PR(Z,1);
  if b le 1 or Abs(N) le 1 then return R!N; end if;
  sgn:=Sign(N);
  N:=Abs(N);
  L:=[];
  repeat
    m:=N mod b;
    if m gt b/2 then m:=m-b; end if;
    Append(~L,m);
    N:=(N-m) div b;
  until Abs(N) lt b div 2;
  Append(~L,N);
  return sgn * Evaluate(Polynomial(L),a);
end function;

function polyexpand(f,b: B:=baseexpandB)
  R<a>:=PR(Z,1);
  U<x>:=PR(R);
  return U![R!B(Z!c,b): c in Coefficients(f)];
end function;

function pe(z,v0)
  e:=Eltseq(z);
  R<a>:=PR(Z,1);
  U<x>:=PR(R);
  return polyexpand(U!e,v0);
end function;


intrinsic Automorphisms(F::GalFamily) -> SeqEnum
{When F defines a Galois extension, compute the action of G=Group(F) on the field K=Q[a,x]/(Polynomial(F)).
 Returns a sequence [[num,den],[num,den],...] index by the generators of G where x->num(x)/den(x) evaluated on K.1
 defines the corresponding automorphism
}
  if assigned F`A then
    return F`A;
  end if;

  f:=Polynomial(F);
  error if #Group(F) ne Degree(Polynomial(F)), "F needs to be a splitting field";
  error if not IsMonic(f) or not IsIrreducible(f),"Defining polynomial needs to be monic and irreducible";
  error if #Variables(F) ne 1,"F needs to be 1-variable";

  fct:=[d[1]: d in Factorisation(Discriminant(F))];
  for v0 in [10^3+1,10^5+1,10^10+3,10^21+7,10^41+11,10^81+13,10^121+19,10^200+31] do
    vprintf LSeries,3: "v0=10^%o\n",Round(Log(10,v0));
    f:=F![v0];
    if not IsIrreducible(f) then Round(Log(10,v0)),"REDUCIBLE"; continue; end if;
    K:=NumberField(f);
    fctv0:=[Evaluate(d,[v0]): d in fct];
    AP,aut,AP2aut:=AutomorphismGroup(K);
    G:=Group(F);
    gens:=Gens(G);
    ok,GtoAP:=IsIsomorphic(G,AP);
    assert ok;
  
    autF:=[];
    for g in gens do
      u:=AP2aut(GtoAP(g));
      Den:=Universe(fct)!1;
      ua:=u(K.1);
      while exists(i){i: i in [1..#fct] | GCD(fctv0[i],den) gt 10 where den is Denominator(ua)} do 
        ua*:=fctv0[i]; Den*:=fct[i];
      end while;
      rden:=peden(Numerator(ua),v0); 
      Den*:=rden;
      ua*:=rden;
      num:=pe(Numerator(ua),v0);
      den:=Parent(num)!pe(Denominator(ua),v0) * Parent(num)!Den;
      i:=10;
      done:=0;
      repeat
        f:=F![i];
        if not IsIrreducible(f) then i+:=1; continue; end if;
        Ki:=NumberField(f);
        ni:=Evaluate(EvaluateFamily(num,[i]),Ki.1);
        di:=Evaluate(EvaluateFamily(den,[i]),Ki.1);
        z:=Evaluate(f,ni/di);
        if z eq 0 then done+:=1; end if;
        if z ne 0 then done:=0; break; end if;
        i+:=1;
      until done eq 10;
      if done eq 0 then continue v0; end if;
      Append(~autF,[num,den]);
    end for; 
    if #autF eq #gens then F`A:=autF; return autF; end if;
  end for;
  "v0>10^200 could not compute automorphism group";
  F`A:=[];
  return [];
end intrinsic;


intrinsic Automorphisms(F::GalFamily, v0::RngIntElt) -> Map, FldNum
{hom: Group(F)->Aut(K) where K is the field of F![v0]} 
  G:=Group(F);
  f:=F![v0];
  if not IsIrreducible(f) then return false,false; end if;
  K:=NumberField(f);
  aut:=Automorphisms(F);
  if IsEmpty(aut) then return false,false; end if;
  gens:=Gens(G);
  homs:=[hom<K->K|Evaluate(EvaluateFamily(a[1],[v0]),K.1)/Evaluate(EvaluateFamily(a[2],[v0]),K.1)>: a in aut];
  repeat
    changed:=false;
    for i->g1,j->g2 in gens do
      if g1*g2 notin gens then
        Append(~gens,g1*g2);
        Append(~homs,homs[i]*homs[j]);
        changed:=true;
      end if;
    end for;
  until not changed;
  return hom<G->Aut(K)|g:->homs[Position(gens,g)]>,K;
end intrinsic;


/////////////////////////////////////////////////////////////////////////
// CyclicFamily and CyclicSemidirectFamily                             //
/////////////////////////////////////////////////////////////////////////


function CyclicKummer(n,g) 
// Cn extension, starting with an element g from Q(zeta_n) represented as a sequence of integer coefficients}

  K<z>:=CyclotomicField(n);
  g:=K!Evaluate(Polynomial(g),z);  
  U:=[Z|u: u in Integers(n) | GCD(u,n) eq 1];

  // Step 1: determine sizes of roots and necessary precision
  
  C<i>:=ComplexField(18);
  zz1:=Exp(2*Pi(C)*i/n);
  zz:=AssociativeArray();   // primitive nth roots of 1
  gg:=AssociativeArray();   // conjugates of g in Q(zeta_n)
  A:=AssociativeArray();    // choice of an nth root of it in C for each conjugate
  for j in U do 
    zz[j]:=zz1^j;
    gg[j]:=Evaluate(Polynomial(Eltseq(g)),zz[j]);
    A[j]:=gg[j]^(1/n);
  end for;
  rts:=[&+[zz[InverseMod(k,n)]^l*&*[A[InverseMod(j*k,n)]^j: j in U]: k in U]: l in [0..n-1]];  // guess
 
  maxrt:=Max([Abs(r): r in rts]);
  maxcf:=Max([Binomial(n,i)*maxrt^i: i in [n div 2..n]]);
  prec:=Round(Log(10,maxcf))+15;
  if prec le 18 then
    return RoundPolynomial(&*[PR(C).1-g: g in rts]);
  end if;

  // Step 2: do the calculation to necessary precision

  C<i>:=ComplexField(prec);
  zz1:=Exp(2*Pi(C)*i/n);
  zz:=AssociativeArray();   // primitive nth roots of 1
  gg:=AssociativeArray();   // conjugates of g in Q(zeta_n)
  A:=AssociativeArray();    // choice of an nth root of it in C for each conjugate
  for j in U do 
    zz[j]:=zz1^j;
    gg[j]:=Evaluate(Polynomial(Eltseq(g)),zz[j]);
    A[j]:=gg[j]^(1/n);
  end for;
  rts:=[&+[zz[InverseMod(k,n)]^l*&*[A[InverseMod(j*k,n)]^j: j in U]: k in U]: l in [0..n-1]];  // guess

  return RoundPolynomial(&*[PR(C).1-g: g in rts]);
end function;


function CyclicFamily(n) 
// Use CyclicKummer to generate a 1-parameter family of C_D extensions with a regular (irreducible) action

  error if Type(n) ne RngIntElt or n le 1, "n should be an integer >1";
  if n eq 2 then return Family(2,1); end if;

  // Generate 
  C:=[CyclicKummer(n,[j,1]): j in [1..n*EulerPhi(n) div 2 +20]];

  // PolynomialFit
  RZ<a>:=PR(Z,1);
  U<x>:=PR(RZ);
  f:=U![Evaluate(PolynomialFit([<[i],Coefficient(C[i],m)>: i in [1..#C]],n*EulerPhi(n) div 2 +10),[a]): m in [0..n]];
  
  // Normalize
  V:=[c eq 0 select 0 else VectorContent(CoefficientsAndMonomials(c)): c in Coefficients(f)];
  for p in PrimesUpTo(30) do
  while forall{m: m in [0..Degree(f)] | Valuation(V[m+1],p) ge Degree(f)-m} do
    f:=Evaluate(f,p*x) div p^Degree(f);
    V:=[V[m+1]/p^(Degree(f)-m): m in [0..Degree(f)]];
  end while;
  end for;

  // Create family
  Flabel:="cyc";
  ref:=Sprintf("Cyclic Kummer family for C%o",n);
  v0:=n le 20 select 100001 else 1;
  F:=Family(f: nocheckregular, Flabel:=Flabel, ref:=ref, v0:=v0);
  return F;
end function;


function KummerLift(K, q: g:=[K.1,1], AutK:="default")
 // Given q:G->>Q with cyclic kernel N, and a number field K cut out by Q, tries to lift it 
 // to a number field F cut out by G by using Kummer lift.}

  G:=Domain(q);
  N:=Kernel(q);
  error if not IsCyclic(N), "KummerLift: N is not cyclic"; 

  n:=#N;
  ngen:=AbelianBasis(N)[1];
  Nelts:=[ngen^i: i in [1..n]];

  Q:=Codomain(q);
  Qelts:=[q: q in Q];
  autchar:=[Position(Nelts,ngen^(e@@q)): e in Qelts];
  
  if AutK cmpeq "default" then
    AP,aut,AP2aut:=AutomorphismGroup(K);
    error if #AP ne Degree(K), "KummerLift: K is not Galois"; 
    ok,QtoAP:=IsIsomorphic(Q,AP); assert ok;  
    AutK:=func<h|AP2aut(QtoAP(h))>;
  end if;

  // Step 1: determine sizes of roots and necessary precision

  prec:=18;
      
  inf:=InfinitePlaces(K)[1];
  gC:=[[Evaluate( AutK(h)(e),inf: Precision:=prec): e in g]: h in Qelts];

  U:=[Z|u: u in Integers(n) | GCD(u,n) eq 1];
  C<i>:=ComplexField(prec);
  zz1:=Exp(2*Pi(C)*i/n);
  zz:=AssociativeArray();   // primitive nth roots of 1
  gg:=AssociativeArray();   // conjugates of g in Q(zeta_n)
  A:=AssociativeArray();    // choice of an nth root of it in C for each conjugate

  for j in U do 
    zz[j]:=zz1^j;
    for a:=1 to #autchar do gg[[a,j]]:=Evaluate(Polynomial(Eltseq(gC[a])),zz[j]); end for;
    for a:=1 to #autchar do A[[a,j]]:=gg[[a,j]]^(1/n); end for;
  end for;
  
  rts:=[&+[zz[InverseMod(k,n)]^l*&*[A[[a,InverseMod(autchar[a]*j*k,n)]]^(j mod n): j in U, a in [1..#autchar]]: k in U]: l in [0..n-1]];

  // Determine requred precision

  maxrt:=Max([Abs(r): r in rts]);
  maxcf:=Max([Binomial(n,i)*maxrt^i: i in [n div 2..n]]);
  prec:=Round(Log(10,maxcf))+15;
  if prec le 18 then
    return RoundPolynomial(&*[PR(C).1-r: r in rts]);
  end if;

  // Step 2: do the calculation to necessary precision

  inf:=InfinitePlaces(K)[1];
  gC:=[[Evaluate( AutK(h)(e),inf: Precision:=prec): e in g]: h in Qelts];

  U:=[Z|u: u in Integers(n) | GCD(u,n) eq 1];
  C<i>:=ComplexField(prec);
  zz1:=Exp(2*Pi(C)*i/n);
  zz:=AssociativeArray();   // primitive nth roots of 1
  gg:=AssociativeArray();   // conjugates of g in Q(zeta_n)
  A:=AssociativeArray();    // choice of an nth root of it in C for each conjugate

  for j in U do 
    zz[j]:=zz1^j;
    for a:=1 to #autchar do gg[[a,j]]:=Evaluate(Polynomial(Eltseq(gC[a])),zz[j]); end for;
    for a:=1 to #autchar do A[[a,j]]:=gg[[a,j]]^(1/n); end for;
  end for;
  
  rts:=[&+[zz[InverseMod(k,n)]^l*&*[A[[a,InverseMod(autchar[a]*j*k,n)]]^(j mod n): j in U, a in [1..#autchar]]: k in U]: l in [0..n-1]];

  return RoundPolynomial(&*[PR(C).1-r: r in rts]);
end function;


intrinsic Extension(HF::GalFamily, G::Grp, N::Grp: KrList:="default", d0:=3, extrafields:=10) -> GalFamily
{Given cyclic N<G with a complement, generate a family of G-extensions lifting a given family 
  HF with Galois group H=G/N. Currently assumes that HF defines a Galois extension and is 1-parameter.
returns
  family if successful
  -4  failed to construct an irreducible family - change KrList?
  -3  too many fails in the instances loop - change KrList?
  -2  if failed to find an irreducible specialisation - change KrList?
  -1  could not fit
}

  if KrList cmpeq "default" then
    KrList:=["[r,1]","[r,r+1]","[r+1,r^2+r+1]","[r,r+1,r^2+r+1]"];
  end if;

  error if not IsCyclic(N) or not (N subset G), "N should be a cyclic subgroup of G";
  error if IsEmpty(Complements(G,N)), "G should be a split extension G=N:H";  
  error if not IsIrreducible(HF), "HF should be an irreducible family";
  error if #Variables(HF) ne 1, "Currently only implemented when HF is a 1-parameter family";
  error if Degree(Polynomial(HF)) ne #Group(HF), "HF should define a Galois extension";

  GNQ,q0:=quo<G|N>;
  ok,GNQtoQ:=IsIsomorphic(GNQ,Group(HF)); assert ok;
  q:=q0*GNQtoQ;   // G->Group(GF)
    
  n:=#N;       // N = Cn
    
  for Kr in KrList do

    // Generate one moderately large example to estimate degrees
    degrees:="none";
    for step:=1 to 10 do
      v0:=10^20+step;
      f0:=HF![v0];
      if not IsIrreducible(f0) then continue; end if;
      K<r>:=NumberField(f0);
      f:=KummerLift(K, q: g:=eval Kr);
      degrees:=[Round(Log(v0,Abs(c)+1)): c in Coefficients(f)];
      break;
    end for;
    if degrees cmpeq "none" then errcode:=-2; continue Kr; end if;
  
    NC:=Max(degrees)+extrafields;        // +extrafields(:=10) to make PolynomialFit faster
    
    // Generate instances
  
    v0:=100;
    L:=[];
    fails:=0;
    while #L lt NC do
      if fails ge 50 and fails/(#L+1) gt 10 then 
        errcode:=-3; continue Kr;
      end if;
      v0+:=1;
      AutK,K:=Automorphisms(HF,v0);
      if AutK cmpeq false then fails+:=1; continue; end if;
      K<r>:=K;
      f:=KummerLift(K, q: g:=eval Kr, AutK:=AutK);
      if not IsIrreducible(f) then fails+:=1; continue; end if;
      Append(~L,<[v0],Coefficients(f)>);
    end while;
    
    // Fit [use params?] 
    C:=IntelligentPolynomialFit(L,[d+d0: d in degrees]: frc:=1, modfrc:=1, params:=[]);
  
    if C cmpeq false then
      errcode:=-1; continue Kr;
    end if;
  
    R<a>:=PR(Z,1);
    U<x>:=PR(R);
    f:=U!C;    // Done
  
    if not IsIrreducible(f) then
      vprint LSeries,1: "Failed to construct an irreducible family: change Kr?";
      errcode:=-4; continue Kr;
    end if;
    
    // Normalize (primes)
    V:=[c eq 0 select 0 else VectorContent(CoefficientsAndMonomials(c)): c in C];
    for p in PrimesUpTo(30) do
    while forall{m: m in [0..n] | Valuation(V[m+1],p) ge n-m} do
      f:=Evaluate(f,p*x) div p^n;
      V:=[V[m+1]/p^(n-m): m in [0..n]];
    end while;
    end for;
  
    // Normalize (variables)        
    while forall{m: m in [0..n] | IsCoercible(R,Coefficient(f,m)/a^(n-m))} do
      f:=Evaluate(f,a*x) div a^n;
    end while;
      
    // Create Family and return
    
    ref:=Sprintf("CyclicSemidirectFamily G=%o N=%o Q=%o QFamily=%o",
      GroupName(G),GroupName(N),GroupName(GNQ),Label(HF));
  
    // Irreducible if faithful action of G/N, reducible (=> merge) otherwise
    irr:=Centraliser(G,N) eq N;
    f2:=irr select U!1 else U!Polynomial(HF);
    
    return Family(f*f2: ref:=ref, Flabel:="lift");
  end for;
  return errcode; 
end intrinsic;
 
 
//////////////////////////////////////////////
//  Family(F) - main construction function  //
//////////////////////////////////////////////


function RemoveUnusedVariables(F: nocheckregular:=false)
  // Make F integral,
  // remove unused variables and simplify e.g. ab^2 -> a if all coefficients are functions of ab^2
  for step:=1 to 3 do
    F:=IntegralPolynomial(F);
    F:=&*[Parent(F)| d[1]: d in Factorisation(F) | Degree(d[1]) gt 1];
    if Degree(F) eq 0 or not nocheckregular and GCD([d: d in [0..Degree(F)] | Coefficient(F,d) ne 0]) gt 2 then return false; end if;
    n:=#Names(BaseRing(F));
    if step eq 3 then break; end if;
    degs:={[Degree(t,i): i in [1..n]]: t in Terms(c), c in Coefficients(F)};
    B:=Basis(Lattice(Saturation(Matrix([d: d in degs]))));
    error if #B gt n, "Something went wrong: #B>n";
    if #B eq n then break; end if;
    vprint Qt,1: "Simplifying unused variables: ",DelSpaces(B);
    if #B eq 0 then return false; end if;
    M:=Matrix(B);
    R:=RFF(Q,#B);
    F:=Polynomial([&+[R| LeadingCoefficient(t) * Monomial(R,Eltseq(Solution(M,Matrix([[Degree(t,i): i in [1..n]]])))): 
      t in Terms(Coefficient(F,i))]: i in [0..Degree(F)]]);
    F:=&*[Parent(F)| d[1]: d in Factorisation(F) | Degree(d[1]) gt 1];
    if Degree(F) eq 0 then return false; end if;
  end for;
  return F;
end function;


function CreateFamily(n)
// Create an empty GalFamily on n variables (initializes n,v,R)
  F:=New(GalFamily);
  F`n:=n;                     // number of parameters
  F`R:=PR(Z,n);               // base ring with variables a,b,c,...
  F`v:=[CodeToString(96+j): j in [1..n]];
  AssignNames(~F`R,F`v);
  U<x>:=PolynomialRing(F`R);
  return F;
end function;


intrinsic Family(f::RngUPolElt: Flabel:="", v0:=100001, nocheckregular:=false, ref:="", tryhard:=false) -> GalFamily
{Create a GalFamily from a given polynomial, e.g. Family(x^4+a*x^2+b); returns false if unsuccessful, e.g. F is not regular}

  // Remove unused variables, if any
  f:=RemoveUnusedVariables(f: nocheckregular:=nocheckregular); 
  if f cmpeq false then return false; end if;
  n:=#Names(BaseRing(f));

  // Create and initialize the ring
  F:=CreateFamily(n);
    
  // Set polynomial and components
  f:=PolynomialRing(F)!EvaluateFamily(f,Variables(F)); 
  F`C:=[d[1]: d in Factorisation(f) | Degree(d[1]) gt 1];   
  if IsEmpty(F`C) then return false; end if;
  f:=&*F`C;
  F`f:=f;
  red:=#F`C ne 1;
  
  // Set label and reference
  F`Flabel:=Flabel; 
  F`ref:=ref; 

  // fm := f made monic
  vprint Qt,4: "Making F monic";
  F`fm:=MakeMonic(f);

  // set G,v0,D - GaloisData
  vprint Qt,2: "Computing Galois group G0";
  v0:=[Round(v0*1.2159265358979323846264^(i-1)): i in [1..n]]; 
  G,_,D,F`v0:=CheckFamily(F`fm: n0:=v0, group, galoisdata); 
  assert D`f eq EvaluateFamily(F`fm,F`v0);

  vprint Qt,2: "G =",Label(G);
  F`G:=G;
  F`Glabel:=Label(G);
  F`degrees:=[Max([Degree(Coefficient(f,i),w): i in [0..Degree(f)]]): w in Variables(F)];
  F`D:=D;

  // Check whether one irreducible component already determines the whole group
  if red then
    vprint Qt,3: "Checking individual components";
    for c in F`C do
      Gc:=CheckFamily(f div c: group);
      if #Gc eq #G then
        vprintf Qt,1: "Removing irreducible component: %o - %o\n",DelSpaces([Degree(d): d in F`C]),Degree(c);
        return Family(f div c: Flabel:=Flabel, ref:=ref, tryhard:=tryhard, nocheckregular:=nocheckregular);
      end if;
    end for;
  end if;  

  // smallid, trid, subfields
  F`smallid:=[#G,SmallID(G)];
  F`trid:=[#GSet(G),IsTransitive(G) and #GSet(G) le 47 select TransitiveGroupIdentification(G) else 0];
  F`K:=[];  
  U<x>:=PR(BaseRing(f));

  // Check regular unless asked not to
  F`regularcertificate:=[];
  if not nocheckregular then
    vprint Qt,2: "Checking regularity";
    if not IsRegular(F: attempts:=(tryhard select 15 else 5)) then 
      vprintf Qt,1: "The %o family is not regular\n",F`Glabel;
      return false;
    end if;
  end if;
  
  return F;

end intrinsic;


intrinsic Family(s::MonStgElt: nocheckregular:=false, Flabel:="", tryhard:=false, ref:="") -> GalFamily
{Family of Galois polynomials from a string like "x^4+a*x^2+b"}
  errmsg:="s should be a string like x^4+a*x^2+b, or a string returned by SaveFamily, or a known label (e.g. C5)";
  error if #s eq 0, errmsg;

  // Standard label: Cn
  ok,_,B:=Regexp("C([0-9]+)",s);
  if ok then return CyclicFamily(eval B[1]); end if;
  
  // String <...> returned by SaveFamily
  if s[1] eq "<" and s[#s] eq ">" then return LoadFamily(s); end if;
  
  // Polynomial
  f:=LoadPoly(s);
  error if f cmpeq false, errmsg;  
  return Family(f: nocheckregular:=nocheckregular, Flabel:=Flabel, ref:=ref, tryhard:=tryhard);
end intrinsic;


