NEGACYCLIC WEIGHING MATRICES © Nickolay A. Balonin, Dragomir Z. Djokovic, 22.04.2015 Hadamard-type matrix catalogue and on-line algorithms

2-NEGACYCLIC WEIGHING MATRICES 2N-W(n ,n –2) and 2N-W(n ,n –4) GOLAY-PALEY/GOLAY CODES MULTIPLIER

// LIBRARY OF NON/SKEW 2-TOEPLITZ MATRICES
n=12; v=n/2; SKEW=false; examples(n);
// MATRIX ANALYSIS
N=rows(M); puts(n+' Matrices: '+N);
for (k=0;k<N;k++) {
a=M[k][0]; a2=M[k][1]; b=M[k][2]; b2=M[k][3];
shift=0; a=circshiftback(a,shift,-1); a2=circshift(a2,shift,-1);
shift=0; b=circshiftback(b,shift,-1); b2=circshift(b2,shift,-1);
// MULTIPLICATION
// X=mul2seq(a,b); a=X[0]; b=X[1];
// a2=circshift(flip(minp(a))); a2[0]=-a2[0];
// b2=circshift(flip(minp(b))); b2[0]=-b2[0];
// b2[1]=0; b[n-1]=0; a2[0]=0; // W(n,n-1)
// FOR W(22,20), W(34,32), ...
// X=mul2seq(a,b); a=X[0]; b=X[1];
// a[1]=0; a2=circshift(flip(minp(a))); a2[0]=0;
// b[n-1]=0; b2=circshiftback(flip(minp(b))); b2[0]=0;
// b=circshift(circshift(b));
// EQUIVALENCE
// t=3; a=seteq(a,t); b=seteq(b,t);
// a2=circshift(flip(minp(a))); a2[0]=-a2[0];
// b2=circshift(flip(minp(b))); b2[0]=-b2[0];
puts("n="+rows(a)*2);
putm("a=["+a+"];"); putm("a2=["+a2+"];");
putm("b=["+b+"];"); putm("b2=["+b2+"];");
if (k==0) {
// a=compress(a); a2=circshift(flip(minp(a))); a2[0]=-a2[0];
// b=compress(b); b2=circshift(flip(minp(b))); b2[0]=-b2[0];
A=toeplitz(a2,a); B=toeplitz(b2,b);
// D=eyez(A); {{A=D*A*D; B=D*B*D}}
if (SKEW) {
H=square(A,B,minp(tr(B)),tr(A));
}else{
if (n==64) { // case 64
B2=zipperdiag(B,0,-1); B2=zipperdiag(B2,v/2,1); B=tr(B);
B=zipperdiag(B,0,1); B=zipperdiag(B,v/2,-1);
H=square(A,flip(B2),fliplr(B),minp(tr(A)));
}else{
H=twocircul(A,B);
// H=equal(H,1); H2=equal(H,-1);
// H=twocircul(H,H2);
}}
// Z=eyez(A); {{A=Z*A*Z; B=Z*A*Z}}
// H=square(A,B,tr(B),A);
// H=ab2a(H); // H=equal(H,1);
plots(H);
{{I=H'*H}} putm(I);
putm(H);
// CONVERSION TO P
// P1=a2ds(a); P2=a2ds(a2);
// puts("P=[["+P1+"],["+P2+"]];");
}}
function zipperdiag(A,p,F) {
var i,j,n,B; n=rows(A); B=equal(A);
for (i=0;i<n;i++) { j=i+p; if (j>=n) j=j-n;
B[i][j]=F; F=-F; }
return B;
}
function compress(a) {
var i,j,v,p,b; v=rows(a); p=v/2;
b=zero(p); for (i=1;i<p;i++) b[i]=(a[i]+a[p+i])/2;
return b;
}
function decompress(a) {
var i,j,v,p,b,q; p=rows(a); v=2*p; b=one(v);
for (i=0;i<p;i++) { q=a[i];
if (q==0) { q=signm(rand(1)); b[i]=q; b[p+i]=q;
}else{ b[i]=q; b[p+i]=q; }}
return b;
}
function seteq(a,t) {
var i,j,v,b,F; v=rows(a); b=equal(a); F=true;
for (i=0;i<v;i++)
if (t>0) { j=i*t; while (j>v) j=j-v; b[j]=a[i];
}else{ if (F) b[i]=-a[i]; F=!F; }
return b;
}
function examples(n) {
// brs is the upper bound for the number of good cases to be processed,
// if a solution is found then the limit will not be reached.
// gr is the Limit. (In all cases I think I used Limit=4.)
// prec is parameter p. bri is the number of iterations (parameter q).
// seme is the seed for the random number generator.
// slucaj is the number of cases which were actually examined
// to reach the solution.
if (n==4) {
// [ + + + + ] [ - + - + ] [ + - - + ] [ + + - - ]
a=[1,1]; a2=[1,-1]; b=[1,1]; b2=[1,-1];
M=[[a,a2,b,b2]];
}
if (n==6) {
// 6 tick=1 h=1.1 max=0/0
a=[0,1,-1]; a2=[0,1,-1];
b=[1,1,-1]; b2=[1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}
if (n==8) {
if (SKEW) {
// v=4, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 4, slucaj = 1, prve vrste:
a=[1,1,-1,1]; b=[1,-1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
}else{
a=[1,-1,-1,-1]; a2=[1,1,1,1];
b=[1,-1,1,1]; b2=[1,-1,-1,1];
}
M=[[a,a2,b,b2]];
}
if (n==10) {
// 10 tick=2 h=1.07 max=2/0
a=[0,1,1,-1,-1]; a2=[0,1,1,-1,-1];
b=[1,1,-1,1,-1]; b2=[1,1,-1,1,-1];
M=[[a,a2,b,b2]];
a=[0,1,1,-1,-1]; a2=[0,1,1,-1,-1];
b=[1,-1,1,1,1]; b2=[1,-1,-1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==12) {
if (SKEW) {
// v=6, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 6, slucaj = 12, prve vrste:
a=[1,-1,1,1,1,-1];
b=[1,1,1,-1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
}else{
a=[1,-1,1,-1,-1,-1];
a2=[1,1,1,1,-1,1];
b=[1,-1,-1,-1,1,1];
b2=[1,-1,-1,1,1,1];
}
M=[[a,a2,b,b2]];
// M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==14) {
// 14 tick=5 h=1.07 max=2/0
a=[0,1,1,1,-1,-1,-1]; a2=[0,1,1,1,-1,-1,-1];
b=[1,-1,1,1,-1,-1,1]; b2=[1,-1,1,1,-1,-1,1];
M=[[a,a2,b,b2]];
a=[0,-1,1,1,-1,-1,1]; a2=[0,-1,1,1,-1,-1,1];
b=[1,1,1,1,-1,1,-1]; b2=[1,1,-1,1,-1,-1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==16) {
if (SKEW) {
// v=8, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 8, slucaj = 37, prve vrste:
a=[1,-1,-1,1,-1,1,-1,-1];
b=[1,1,1,1,-1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}else{
// 16 tick=1 h=1 max=4/0
a=[1,-1,-1,-1,1,-1,-1,1];
a2=[1,-1,1,1,-1,1,1,1];
b=[1,1,-1,-1,-1,1,-1,-1];
b2=[1,1,1,-1,1,1,1,-1];
M=[[a,a2,b,b2]];
// 16 tick=2 h=1.11 max=4/0
a=[0,-1,1,-1,-1,-1,1,-1];
a2=[0,1,-1,1,1,1,-1,1];
b=[-1,-1,-1,-1,1,1,1,-1];
b2=[-1,1,-1,-1,-1,1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
a=[0,-1,1,1,1,-1,1,1];
a2=[0,-1,-1,1,-1,-1,-1,1];
b=[0,-1,1,1,1,-1,1,1];
b2=[0,-1,-1,1,-1,-1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==18) {
// 18 tick=6 h=1.07 max=2/0
a=[0,1,-1,1,1,-1,-1,1,-1];
a2=[0,1,-1,1,1,-1,-1,1,-1];
b=[1,-1,-1,-1,-1,1,1,1,1];
b2=[1,-1,-1,-1,-1,1,1,1,1];
M=[[a,a2,b,b2]];
a=[0,1,-1,1,1,-1,-1,1,-1];
b=[1,1,1,1,-1,1,1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 18 tick=8 h=1.06 max=4/0
a=[0,-1,-1,1,-1,1,-1,1,1];
a2=[0,-1,-1,1,-1,1,-1,1,1];
b=[1,1,-1,-1,-1,-1,-1,1,1];
b2=[1,-1,-1,1,1,1,1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
a=[0,1,-1,1,1,-1,-1,1,-1];
a2=[0,1,-1,1,1,-1,-1,1,-1];
b=[1,-1,-1,-1,-1,1,-1,-1,-1];
b2=[1,1,1,1,-1,1,1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==20) {
if (SKEW) {
// v=10, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 10, slucaj = 50, prve vrste:
a=[1,-1,-1,-1,-1,1,-1,-1,-1,-1];
b=[1,-1,-1,1,1,-1,1,-1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
}else{
a=[1,-1,-1,1,1,1,1,-1,1,-1];
a2=[1,1,-1,1,-1,-1,-1,-1,1,1];
b=[1,1,1,-1,1,1,1,1,-1,1];
b2=[1,-1,1,-1,-1,-1,-1,1,-1,-1];
}
M=[[a,a2,b,b2]];
}
if (n==22) {
a=[0,1,-1,-1,-1,-1,-1,-1,1,1,-1];
a2=[0,1,-1,-1,1,1,1,1,1,1,-1];
b=[0,-1,1,1,-1,1,-1,1,1,1,-1];
b2=[0,1,-1,-1,-1,1,-1,1,-1,-1,1];
M=[[a,a2,b,b2]];
}
if (n==24) {
if (SKEW) {
// v=12, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 12, slucaj = 213, prve vrste:
a=[1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1];
b=[1,1,1,-1,1,-1,-1,-1,-1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
}else{
a=[-1,-1,1,-1,-1,-1,-1,1,1,-1,1,1];
a2=[-1,-1,-1,1,-1,-1,1,1,1,1,-1,1];
b=[1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1];
b2=[1,1,1,-1,1,-1,-1,1,1,1,-1,1];
}
M=[[a,a2,b,b2]];
}
if (n==26) {
// 26 tick=57 h=1.06 max=2/0
a=[0,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1];
a2=[0,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1];
b=[1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1];
b2=[1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1];
M=[[a,a2,b,b2]];
a=[0,1,1,1,-1,-1,1,-1,1,1,-1,-1,-1];
a2=[0,1,1,1,-1,-1,1,-1,1,1,-1,-1,-1];
b=[1,-1,1,-1,1,1,1,1,1,-1,-1,1,1];
b2=[1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==28) {
if (SKEW) {
// v=14, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 14, slucaj = 913, prve vrste:
a=[1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1];
b=[1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
}else{
a=[1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1];
b=[1,1,1,1,-1,-1,1,-1,1,1,-1,1,1,1];
a2=[1,1,1,-1,1,1,1,-1,1,1,1,-1,1,-1];
b2=[1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,-1,-1];
}
M=[[a,a2,b,b2]];
}
if (n==30) {
// 30 tick=12 h=1.07 max=2/0
a=[0,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,-1];
a2=[0,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,-1];
b=[-1,1,1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,-1];
b2=[-1,1,1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,-1];
M=[[a,a2,b,b2]];
a=[0,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,1,-1];
a2=[0,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,1,-1];
b=[1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1];
b2=[1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==32) {
if (SKEW) {
// v=16, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 16, slucaj = 1227, prve vrste:
a=[1,1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,1];
b=[1,-1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}else{
a=[1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1];
a2=[1,1,1,1,-1,-1,1,1,1,-1,1,1,1,1,1,1];
b=[1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1];
b2=[1,-1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1,1];
M=[[a,a2,b,b2]];
// CYCLIC
a=[1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1];
b=[-1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,-1,1,1];
a2=[1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1];
b2=[-1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,-1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==34) {
// 34 tick=162 h=1.07 max=2
a=[0,-1,1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1];
a2=[0,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1];
b=[0,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1,-1,-1];
b2=[0,1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1];
M=[[a,a2,b,b2]];
}
if (n==36) {
if (SKEW) {
// NOTHING
}else{
a=[1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1];
b=[1,-1,-1,1,1,-1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1];
a2=[1,-1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,1,-1];
b2=[1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,1];
}
M=[[a,a2,b,b2]];
}
if (n==38) {
// 38 tick=40 h=1.07 max=2/0
a=[0,1,1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1];
a2=[0,1,1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1];
b=[-1,1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,-1];
b2=[-1,1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,-1];
M=[[a,a2,b,b2]];
a=[0,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1];
a2=[0,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1];
b=[1,1,-1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1];
b2=[1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==40) {
if (SKEW) {
// v=20, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 20, slucaj = 1727, prve vrste:
a=[1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1];
b=[1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
a=[0,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1];
b=[1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}else{
// v=20, brs=10000, gr=4,prec=0.5, bri=300, seme=60050709
// Nasao v = 20, slucaj = 291, prve vrste:
a=[1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,1,1,-1];
b=[1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// 40 tick=22 h=1.02 max=8/0
a=[1,-1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,1,1];
a2=[1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,-1,-1,1,1,1];
b=[1,-1,-1,-1,1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,1];
b2=[1,-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 40 tick=63 h=1.21 max=8/0
a=[0,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,1];
a2=[0,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1];
b=[0,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,-1];
b2=[0,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// CYCLIC
a=[1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,-1];
a2=[1,1,-1,1,1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1];
b=[1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1];
b2=[1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==42) {
// 42 tick=67 h=1.06 max=2/0
a=[0,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,-1,1,-1];
a2=[0,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,-1,1,-1];
b=[1,-1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1];
b2=[1,-1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1];
M=[[a,a2,b,b2]];
}
if (n==44) {
if (SKEW) {
// v=22, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 22, slucaj = 4916, prve vrste:
a=[1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,1,-1,-1,1];
b=[1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}else{
// BY 1-NEGA
a=[0,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1];
b=[1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// v=22, brs=50000, gr=4,prec=0.5, bri=300, seme=60050719
// Nasao v = 22, slucaj = 18101, prve vrste:
a=[1,-1,1,-1,1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1];
b=[1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 44 tick=4453 h=1.05 max=8/0 symmetic type !!
a=[1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1];
a2=[1,1,-1,1,1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,1,-1,1];
b=[-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1];
b2=[-1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 44 tick=1064 h=1.04 max=8/0 asymmetric b-type
a=[0,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1];
a2=[0,-1,1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1];
b=[-1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1,1];
b2=[-1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
a=[1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,-1,1];
b=[1,1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,1];
a2=[1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,1,1];
b2=[1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
a=[1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,-1];
a2=[1,1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,-1,1,1,1,1,-1,1,1];
b=[1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1];
b2=[1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,-1,1,-1,1,1,1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 44 tick=17 h=1.04 max=8
a=[1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,1,1,-1,1];
a2=[1,-1,1,-1,-1,1,-1,-1,1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,1];
b=[-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1];
b2=[-1,-1,-1,1,1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 44 tick=14 h=1.05 max=8
a=[-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1];
a2=[-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,1,-1,1,-1,1,1,-1,1];
b=[1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,1];
b2=[1,-1,-1,1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,-1,1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// Dragomirs, tick=10
a=[1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1];
b=[1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// Dragomirs, Maple iterations
a=[1,1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,1,1];
b=[1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 44 tick=136 h=1.17 max=8
a=[0,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,1];
a2=[0,-1,1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,-1];
b=[0,-1,1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1];
b2=[0,1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 44 tick=34 h=1.05 max=4
a=[0,0,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1];
a2=[0,1,1,-1,1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,-1,-1,0];
b=[0,0,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1];
b2=[0,1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,1,1,1,-1,1,1,0];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==48) {
if (SKEW) {
// v=24, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 24, slucaj = 1156, prve vrste:
a=[1,-1,1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,1,1,1,1,-1,-1,-1,1,-1];
b=[1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}else{
a=[1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,-1];
a2=[1,1,-1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,1];
b=[1,1,1,1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,1,1,-1,-1,1,-1,1,1,1];
b2=[1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,-1];
M=[[a,a2,b,b2]];
// v=24, brs=50000, gr=4,prec=0.5, bri=300, seme=60050729
// Nasao v = 24, slucaj = 95, prve vrste:
a=[1,-1,1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1];
b=[-1,1,1,1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// Dragomir, Maple
a=[1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,1,1];
b=[1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==50) {
// 50 tick=794 h=1.06 max=4/0
a=[0,1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,1,1,-1,-1];
a2=[0,1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,1,1,-1,-1];
b=[1,1,-1,1,-1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1];
b2=[1,1,-1,1,-1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1];
M=[[a,a2,b,b2]];
a=[0,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1];
b=[1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
if (n==52) {
if (SKEW) {
// v=26, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 26, slucaj = 71302, prve vrste:
a=[1,1,1,-1,1,-1,1,1,1,1,-1,1,1,-1,1,1,-1,1,1,1,1,-1,1,-1,1,1];
b=[1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}else{
// by 1T C26
a=[1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1];
b=[-1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// v=26, brs=50000, gr=4,prec=0.5, bri=300, seme=60050729
// Nasao v = 26, slucaj = 35874, prve vrste:
a=[-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,1];
b=[-1,1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// Dragomir, Maple
a=[1,1,1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1];
b=[1,1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 52 tick=9 h=1 max=8/0 N4-N2
a=[1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,1,1,1,-1];
a2=[1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,1,1,1,1,1,-1,1,1];
b=[1,1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1];
b2=[1,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,-1,-1,1,-1,1,-1,1,1,-1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 52 tick=52 h=1.06 max=4
a=[0,1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,0,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1];
a2=[0,-1,-1,1,1,1,1,-1,1,1,1,1,-1,0,1,-1,-1,1,-1,1,1,1,-1,1,-1,-1];
b=[1,-1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1,1];
b2=[1,-1,1,-1,-1,-1,1,1,-1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,1,1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==54) {
// 54 tick=1138 h=1.06 max=8/0
a=[0,-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,1,1];
a2=[0,-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,1,1];
b=[-1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,1,-1,1,1,1];
b2=[-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1];
M=[[a,a2,b,b2]];
}
if (n==56) {
if (SKEW) {
// v=28, brs=1000000, gr=4, prec=0.5, bri=300, seme=199857799
// Nasao v = 28, slucaj = 235868, prve vrste:
a=[1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,-1];
b=[1,1,-1,1,-1,1,1,-1,-1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}else{
// Dragomir, Maple
a=[1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1];
b=[1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// v=28, brs=4000000, gr=4,prec=0.5, bri=300, seme=85050703
// Nasao v = 28, slucaj = 855893, prve vrste:
a=[-1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1];
b=[-1,1,-1,1,1,1,1,-1,-1,-1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// v=28, brs=1000000, gr=4,prec=0.5, bri=300, seme=199857799
// Nasao v = 28, slucaj = 148785, prve vrste:
a=[1,1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,1,-1,-1,-1,1,1,1,-1];
b=[-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
a=[1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1];
a2=[1,1,-1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1];
b=[1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1];
b2=[1,1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==58) {
a=[0,0,-1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,0,-1,1,1,-1,1,1,-1,-1,1,-1,1,-1,1];
b=[0,0,-1,1,1,1,1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,1,1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}
if (n==60) {
if (SKEW) {
// v=30, brs=4000000, gr=4, prec=0.5, bri=400, seme=11791847
// Nasao v = 30, slucaj = 7839, prve vrste:
a=[1,1,-1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,1,1,-1,-1,1];
b=[1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// 60 tick=43 h=1.02 max=8/0 N4-N2
a=[1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1];
a2=[1,-1,-1,1,1,1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1];
b=[1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,1,1,1,-1];
b2=[1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,1,-1,1,-1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}else{
a=[1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1];
a2=[1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1];
b=[1,1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,-1,1];
b2=[1,-1,1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,1,1,-1,1,1,1,1,1,1,1,-1,-1];
M=[[a,a2,b,b2]];
// v=30, brs=1000000, gr=4,prec=0.5, bri=300, seme=11782393
// Nasao v = 30, slucaj = 64284, prve vrste:
a=[1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,-1];
b=[-1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// v=30, brs=1000000, gr=4,prec=0.5, bri=300, seme=11783008
// Nasao v = 30, slucaj = 30036, prve vrste:
a=[1,1,1,1,1,1,-1,1,-1,1,-1,1,1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,-1,-1];
b=[1,1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// v=30, brs=1000000, gr=4,prec=0.5, bri=300, seme=11783263
// Nasao v = 30, slucaj = 41221, prve vrste:
a=[-1,-1,1,-1,1,1,-1,1,-1,1,1,1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1,1,1];
b=[1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 60 tick=18 h=1 max=8/0
a=[1,1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,1,1,-1,-1,-1,1,1];
a2=[1,-1,-1,1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1];
b=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,1,-1,-1,1];
b2=[-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 60 tick=7585 h=1.02 max=0/0
a=[0,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,1,1,1,-1,-1,1,1,0,1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1];
a2=[0,1,-1,1,1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,0,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==62) {
// 62 tick=3847 h=1.06 max=8/0
a=[0,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,1];
a2=[0,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,1];
b=[1,-1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1];
b2=[1,-1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1];
M=[[a,a2,b,b2]];
}
if (n==64) {
if (SKEW) {
// v=32, brs=8000000, gr=4, prec=0.5, bri=400, seme=11791923
// Nasao v = 32, slucaj = 8540, prve vrste:
a=[1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1];
b=[1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// v=32, brs=8000000, gr=4, prec=0.5, bri=400, seme=11792085
// Nasao v = 32, slucaj = 18948, prve vrste:
a=[1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1];
b=[1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// v=32, brs=8000000, gr=4, prec=0.5, bri=400, seme=11792157
// Nasao v = 32, slucaj = 5292, prve vrste:
a=[1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1];
b=[1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}else{
a=[1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1];
a2=[1,1,-1,1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,1,1,1,1,1,1,-1];
b=[-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,1,1,-1];
b2=[-1,1,-1,-1,1,-1,1,-1,1,1,1,-1,1,-1,1,1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,1,1];
M=[[a,a2,b,b2]];
// v=32, brs=1000000, gr=4,prec=0.5, bri=300, seme=11783912
// Nasao v = 32, slucaj = 78611, prve vrste:
a=[-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,1,1,1,1];
b=[-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// v=32, brs=1000000, gr=4,prec=0.5, bri=300, seme=11784992
// Nasao v = 32, slucaj = 59279, prve vrste:
a=[-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,1,-1,-1,1,1,-1];
b=[-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// CYCLIC
a=[1,1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1];
a2=[1,1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1];
b=[0,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,0,1,-1,1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1];
b2=[0,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,1,-1,1,0,1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 64 tick=7 h=1.08 max=8
a=[1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1];
a2=[1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1];
b=[-1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1];
b2=[-1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,1,1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
}
if (n==68) {
if (SKEW) {
// v=34, brs=8000000, gr=4, prec=0.5, bri=400, seme=11791835
// Nasao v = 34, slucaj = 469, prve vrste:
a=[1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,-1];
b=[1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}else{
// 68 tick=1 h=1.01 max=0/0 // from Paley Nega-1
a=[0,-1,1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1];
a2=[0,1,-1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,1];
b=[-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1,1];
b2=[-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1];
M=[[a,a2,b,b2]];
// 68 tick=17575 h=1.02 max=24/0
// a=[1,1,1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1];
// b=[1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,1];
// c=[1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,-1,1,1];
// d=[1,-1,-1,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,1,1];
a=[ 1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1];
b=[1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 68 tick=54 h=1 max=0/0 N4-N2
a=[1,1,-1,1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1];
a2=[1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1];
b=[1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1];
b2=[1,1,1,1,-1,1,-1,1,1,1,1,-1,1,1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1,1,1,1,1,1,-1,1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 68 tick=23018 h=1 max=12/0 // by Williamson
a=[1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,1,-1,1,1,-1,-1,-1];
a2=[1,1,1,1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1];
b=[-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,1];
b2=[-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
a=[0,1,1,-1,1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,1,-1,1,1];
b=[ -1,1,1,1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,1,1,1,-1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 13 68 tick=3576 h=1.11 max=8
a=[0,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,1,-1,1,-1];
a2=[0,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1];
b=[0,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1];
b2=[0,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 68 tick=526 h=1.1 max=8
a=[0,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,-1,1,1];
a2=[0,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,1,1,1,-1];
b=[0,1,-1,-1,-1,1,1,1,1,-1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1];
b2=[0,-1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
// 68 tick=66 h=1.12 max=12
a=[0,1,1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1];
a2=[0,-1,1,1,1,1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1];
b=[0,1,-1,1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,1,1,1];
b2=[0,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
a=[1,1,1,0,-1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,0,1,1,1];
a2=[1,-1,-1,-1,0,1,-1,1,1,1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,1,-1,1,1,1,-1,1,1,1,0,-1,-1];
b=[-1,1,-1,0,1,1,1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,0,1,-1,1];
b2=[-1,-1,1,-1,0,1,-1,1,1,1,-1,1,1,1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,0,1,-1];
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}}
if (n==72) {
a=[1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,1,-1,-1,1,1,1,-1,1,-1,1,1,1,1,-1];
a2=[1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1,1,1,1,-1,-1,1];
b=[1,-1,1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,1,1];
b2=[1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1];
M=[[a,a2,b,b2]];
}
if (n==76) {
// 76 tick=1 h=1 max=0/0 N4-N2
// a=[1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1];
// b=[-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1];
// c=[1,1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1];
// d=[-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1];
a=[1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1];
a2=[1,1,-1,-1,1,1,1,-1,1,-1,1,1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,1];
b=[1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,1,1,1,-1,-1,-1,-1,-1,-1];
b2=[1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1];
M=[[a,a2,b,b2]];
}
if (n==80) {
if (SKEW) {
// v=40, brs=500000000, seme=2078390, slucaj=492895905, slovo=p
// Nasao v = 40, prve vrste:
a=[1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,1];
b=[1,1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// v=40, brs=500000000, seme=2198730, slucaj=127232891, slovo=p
// Nasao v = 40, prve vrste:
a=[1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1];
b=[1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}
}
if (n==84) {
if (SKEW) {
// v=42, brs=800000000, seme=45833868, slucaj=508084121, slovo=p
// Nasao v = 42, prve vrste:
a=[1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,-1];
b=[1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
// v=42, brs=800000000, seme=45967378, slucaj=288662298, slovo=p
// Nasao v = 42, prve vrste:
a=[1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,1,1,-1,-1,1];
b=[1,1,1,-1,1,1,1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,-1,1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,1,1,-1,1,1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M2=[[a,a2,b,b2]]; M=M.concat(M2);
}else{
// 84 tick=88828 h=1.04 max=12/0
a=[1,1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,1,1,-1,1,1];
a2=[1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,1,1,1,-1];
b=[1,1,1,1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,1,-1,1];
b2=[1,-1,1,-1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1];
M=[[a,a2,b,b2]];
}}
if (n==92) { // error 4!
a=[1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,0,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,0,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1];
a2=[1,-1,-1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,-1,0,-1,-1,-1,1,-1,-1,1,1,-1,-1,1,1,1,-1,1,0,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,1,-1];
b=[-1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,1];
b2=[-1,-1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,1,-1,1,1,-1,1,-1];
M=[[a,a2,b,b2]];
}
if (n==100) {
a=[1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,1,1,1,1,1];
b=equal(a); b[0]=-1;
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}
if (n==120) { // Dragomir 12x10=120
a=[-1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1];
b=[-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1];
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}
if (n==124) {
a=[1,1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1];
b=equal(a); b[0]=-1;
a2=circshift(flip(minp(a)),1,-1);
b2=circshift(flip(minp(b)),1,-1);
M=[[a,a2,b,b2]];
}
return M;
}

NUMERICAL ALGORITHM 2N W(n ,n –k )

// 2-NEGACYCLIC WEIGHING MATRICES
if (tick==0) { n=36;
F0000=false; FPaley=false; // C-matrices
hf=1.15; hf2=2.5; sn=sqrt(n); n1=n-1; v=n/2; v2=floor(v/2);
v1=v-1; v112=v1/2; v12=(v-2)/2; v21=(v2-1)/2; v22=(v2-2)/2;
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
F16=(n%16==0)||((n-8)%16==0); if (!F16) {
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }}}
// STADIUM 1: CHOOSE PRETENDENT 1-T
H=initmatrix(n,1000,4); //
// STADIUM 2: DETERMINANT OPTIMIZATION
H=orth(H); m=maxabs(H); h=m*sn;
if (h<3.5) { u=line(n);
p=0.99; q=5; q2=2; // iterations
while(q>1) { q=q-1; p=0.995*p+0.005;
// SORT COLUMNS
ix=maxabsix(H); u=sort(u,ix); H=sort(H,ix);
H=sat(H,m*p); H=orth(H); m=maxabs(H); h=m*sn;
if (h<hf) { q=0; tick=-tick; }else{
if (q<q2) if (h>hf2) q=0; }
}
// PROVE FINAL LIMIT OF H'H !!
H=roundm(divp(H,maxabs(H))); maxx=maxabslsm(H);
if (maxx<1) { q=0;
if (!F0000) {tick=-abs(tick);}else{
h=H[0]; {{h=h'*h}} h=n-h-4;
if (h==0) { tick=-abs(tick);}else{ tick=abs(tick); }
}
} maxx=' max='+minx+'/'+maxx;
puts(n+' tick='+abs(tick)+' h='+format(h,100)+maxx);
}
if (tick>=0) { restart(0);
}else{
// RESULT
H=resort(H,u); n=rows(H); // H=a2ab(H);
a=tr(rowcol(H,0,0,0,v1)); b=rowcol(H,0,0,v,n1);
putm("a=["+a+"];"); putm("b=["+b+"];");
// H=a2ab(H); H=a2ab(H);
plots(H);
{{I=H'*H}} putm(I); putm(H);
// CONVERSION TO P
// P1=a2ds(a); puts("P=[["+P1+"];");
sound("5th.wav");
}
function getA() {
if (FPaley) { // For C=matrices
if (1) {
a=randseq(v12); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v12); b=b.concat(randseq(1)).concat(flip(b));
a=a.concat(b); a=ab2a(a); A=negacirc(a);
}else{
if (1) {
a=randseq(v112); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v112); b=b.concat(randseq(1)).concat(flip(b));
}else{
a=[0].concat(randseq(v1)); // a[v2]=0;
b=[0].concat(randseq(v1)); // b[v2]=0;
}
A=negacirc(a); B=negacirc(b);
A=twocircul(A,B);
}
}else{
if (F0000) {
if (0) { if (F16) { //0000
a=randseq(v22); b=randseq(v22);
c=randseq(v22); d=randseq(v22);
a=[0].concat(a).concat(0).concat(flip(minp(a)));
b=b.concat([1,1]).concat(flip(b));
c=[0].concat(c).concat(0).concat(flip(minp(c)));
d=d.concat([1,1]).concat(flip(d));
}else{
a2=randseq(v21); b2=randseq(v21);
a=[0].concat(a2).concat(b2);
a2=randseq(v21); b2=randseq(v21);
// b=flip(b2).concat(0).concat(flip(minp(a2)));
b=a2.concat(0).concat(b2);
c=randseq(v21); d=randseq(v21);
c=[0].concat(c).concat(flip(minp(c)));
d=d.concat(0).concat(flip(d));
// a=[0,1,-1,1,-1,1,1,-1,-1];
// b=[-1,-1,1,1,0,1,-1,1,-1];
// c=[0,1,1,1,1,-1,-1,-1,-1];
// d=[-1,-1,1,1,0,1,1,-1,-1];
}
a=a.concat(b); a=ab2a(a);
b=c.concat(d); b=ab2a(b);
}else{
a=[0].concat(randseq(v1)); a[v2]=0;
b=[0].concat(randseq(v1)); b[v2]=0;
}
}else{
if (!(F36||F28)) {
if (F16) {
a=randseq(v22); b=randseq(v22);
c=randseq(v22); d=randseq(v22);
a=[0].concat(a).concat(1).concat(flip(a));
b=b.concat(1).concat(-1).concat(flip(minp(b)));
c=[0].concat(c).concat(1).concat(flip(c));
d=d.concat(1).concat(-1).concat(flip(minp(d)));
a=a.concat(b); a=ab2a(a);
b=c.concat(d); b=ab2a(b);
}else{
a=[0].concat(randseq(v1));
b=[0].concat(randseq(v1));
}
}else{
a=randseq(v21); b=randseq(v21);
c=randseq(v21); d=randseq(v21);
a=[0].concat(a).concat(flip(minp(a)));
b=b.concat(1).concat(flip(b));
c=[0].concat(c).concat(flip(minp(c)));
d=d.concat(1).concat(flip(d));
a=a.concat(b); a=ab2a(a);
b=c.concat(d); b=ab2a(b);
}}
A=negacirc(a); B=negacirc(b);
A=twocircul(A,B);
}
maxx=maxabslsm(A);
}
function initmatrix(n,q,min) {
minx=1000; getA(); H=equal(A);
while (q>0) { q=q-1;
getA(); if (maxx<minx) { minx=maxx;
H=equal(A); if (minx<=min) q=0;
}
}
return H;
}

GALOIS FIELD ALGORITHM 2N W(n ,n –k )

// GALOIS FIELDS PROCEDURE:
if (tick==0) { n=36;
Flgalp=true; Flg1N=n%4!=0; Flg1N=false;
Fphase=true; Maxphase=2; FlgP2=true; n2=n/2;
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (0) if (n%16!=4) { F28=true; }else{ F36=true; }
FlgTyp=false; M=10000; R=true; tuning();
}
for (k=0;k<1000;k++)
if (R) { setphases();
// ROOTS
x1=gfrand(); x2=equal(x1); getab(x1,p);
if (Flg1N) {
a2=equal(a); b2=equal(b);
}else{
A1=equal(a); B1=equal(b);
if (F28) {
A1=circshift(A1,v28,-1); B1=circshift(B1,v28,-1); }
if (F36) {
A1=circshiftback(A1,v36,-1); B1=circshiftback(B1,v36,-1); }
// A1=[0,-1,-1,1,1]; B1=[1,-1,0,-1,1]; // 20
// A1=[0,1,1,1,1,1,1]; B1=[1,-1,-1,0,1,1,-1]; // 28
// B1[3]=0;
a2=A1.concat(B1); a2=ab2a(a2);
// puts(A1+" | "+B1);
x2=gfrand(); getab(x2,p);
A2=equal(a); B2=equal(b);
// A2=[-1,1,1,-1,-1]; B2=[1,1,1,1,1]; // 20
// A2=[1,-1,-1,1,-1,1,1]; B2=[-1,1,-1,-1,-1,1,-1]; // 28
a=equal(A2); b=equal(B2);
if (F28){
a=circshiftback(a,v28,-1); b=circshiftback(b,v28,-1);}
if (F36){
a=circshift(a,v36,-1); b=circshift(b,v36,-1); }
b2=a.concat(b); b2=ab2a(b2);
}
if (F28) {
// 0,1,1,-1,1,-1,1,0,1,1,1,1,1,-1
// -1,-1,1,1,-1,-1,1,1,1,-1,0,1,1,-1
// puts(a2); puts(b2);
a=a2.concat(b2); a=ab2a(a); a[0]=0; a[n2]=0; // puts(a);
H=negacirc(a); }else{
if (F36) { // 20
// 0,1,-1,-1,-1,0,1,-1,1,1
// 1,-1,0,1,1,1,1,1,-1,1
// 0,1,1,-1,-1,0,-1,1,-1,1,0,1,1,1,-1,1,1,-1,1,1
a=a2.concat(b2); a=ab2a(a); // puts(a);
a[0]=0; a[n2]=0; H=negacirc(a); }else{
a2[0]=0; // a2[v]=0;
b2[0]=0; // b2[v]=0;
A=negacirc(a2); B=negacirc(b2);
H=twocircul(A,B); // H=ab2a(H); // N1
}}
m=maxabslsm(H);
if (M>=m) { M=m; if (M==0) R=false;
X1=x1; X2=x2; }
}
mesh(H);
// INFORMATION
puts("n="+n+" p="+p+" r="+GFr+" Lim="+M+"; tick="+tick);
// puts("x1=["+X1+"]; x2=["+X2+"];");
// RESTART
if (M>0) {
FlgP2=!FlgP2; tuning();
restart(0) }else{ // FINISH
puts("x1=["+x1+"];"+" x2=["+x2+"];");
puts("a=["+a2+"];"); puts("b=["+b2+"];");
// TRANSFORMATION 4N
if (0) {
A2=a2ab(A); B2=a2ab(B); Z=eyez(n/4);
S=square(A2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; }} // C=Z*C*Z; D=Z*D*Z;
a=A[0]; b=B[0]; b=circshiftback(b,(rows(b)-1)/2);
putm("a=["+a+"];"); putm("b=["+b+"];");
S=square(B2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; }} // C=Z*C*Z; D=Z*D*Z;
c=A[0]; d=B[0]; d=circshiftback(d,(rows(d)-1)/2);
putm("c=["+c+"];"); putm("d=["+d+"];");
A=circ(a); B=circ(b); C=circ(c); D=circ(d);
MB=minp(B); MC=minp(C); MD=minp(D);
H11=square(A,B,MB,A); // H11=ab2a(H11);
H12=square(C,D,MD,C); // H12=ab2a(H12);
if (FlgTyp) {H21=tr(H12); H22=tr(minp(H11));}else{
H21=square(MC,D,MD,MC); // H21=AB2A2(H21);
H22=square(A,MB,B,A); // H22=AB2A2(H22);
}
H=square(H11,H12,H21,H22);
}
{{I=H'*H}} putm(I); putm(H); // H=ab2a(H);
// plots(H); sound("5th.wav");
}
function tuning() { p=n; law=p/2;
if (Flg1N) { if (FlgP2) { p=2*p; law=2*law;}
}else{ if (FlgP2) { p=p/2; law=round(law/2); }}
lau=4*law; p=p-1; gfinit(p,2); if (p==27) gfinit(3,6);
v=n/4; v4=v; if (Flg1N) v=n/2; v1=v-1; v2=2*v; v41=v4-1;
setphases(); Z=eyez(v); vs=v1/2; // !!!!!
}
function setphases() {
pha=0; phu=0; phw=1;
if (F28||F36) phw=1;
if ((p+1)%4!=0) phw=2;
if (!Fphase) phw=randint(Maxphase);
pwu=lau+phu; pww=law-phw; pwa=law+pha;
}
function getab(x,p) {
var i,i2,u,w,U,W;
u=gfpow(x,pwu); U=gfexp(u,v1);
w=gfpow(x,pww); W=gfexp(w,v2);
if (Flgalp) { alp=gfpow(x,pwa); W=gfmul(alp,W); }
W=gfadd(W,gfpow(W,p)); a=one(v); b=one(v); i2=0;
for (i=0;i<v;i++) {
if (gfeq(W[i2],U)) a[i]=-1; i2++;
if (gfeq(W[i2],U)) b[i]=-1; i2++;
}}

2C MATRICES: n =4+k *16, n =12+k *16

2-TOEPLITZ WEIGHING MATRICES LIBRARY 2N-W(n ,n –3) and 2N-W(n ,n –4)

n=14; examples(n);
// LIBRARY OF 2-TOEPLITZ WEIGHING MATRICES
N=rows(M); puts(n+' Matrices: '+N);
for (k=0;k<N;k++) { a=M[k][0]; b=M[k][1];
v=rows(a);
a=circshift(a,0,-1); b=circshift(b,0,-1);
if (k==0) {
// MULTIPLICATION
// X=mul2seq(a,b); a=X[0]; b=X[1];
// EQUIVALENCE
// t=3; a=seteq(a,t); b=seteq(b,t);
if (sum(a)<0) a=minp(a);
if (sum(b)<0) b=minp(b);
// a=setmaxisa(a); b=setmaxisa(b);
// ISA1=getisa(a); ISA2=getisa(b);
// a=setmaxish(a); b=setmaxish(b);
// IS3=getish(a); IS4=getish(b);
// a=setmaxis(a); b=setmaxis(b);
// IS1=getis(a); IS2=getis(b);
// v=rows(a); p=v/2; n=2*v;
// DIS1=p-IS3; DIS2=p-IS4; p=p-1;
// DISA1=p-ISA1; DISA2=p-ISA2;
// {{r=1-a}} r=sum(r)/2;
// {{s=1-b}} s=sum(s)/2;
// STR=' IS='+IS1+','+IS2;
// STR+=' D='+DIS1+','+DIS2;
// STR+=' DELTA='+DISA1+','+DISA2+' '+r+' '+s;
putm("a=["+a+"];"); putm("b=["+b+"];");
// a=compress(a); b=compress(b);
// ac=circcore(a); puts('coreA=['+ac+'];');
// bc=circcore(b); puts('coreB=['+bc+'];');
// a=corecirc(0,ac); b=corecirc(0,bc);
A=negacirc(a); B=negacirc(b);
// {{A=(A2+B2)/2; B=(A2-B2)/2; }}
// P=triu(A); {{r1=P*a}} puts('autocorrelation a '+r1);
// R=triu(B); {{r2=R*b}} puts('autocorrelation b '+r2);
if (1) {
if (1) { H=twocircul(A,B);
}else{ // WAY TO HADAMARD MATRIX
// Z=eyez(rows(A)); {{ A=Z*A*Z; B=Z*B*Z; }}
D=equal(A,-1); A=equal(A,1);
A=circshift(A,v/2,-1); D=circshift(D,v/2,-1);
A=equal(A,1); D=equal(D,-1);
H=CommonPropus(A,B,D)
}
}else{
A2=a2ab(A); B2=a2ab(B); Z=eyez(n/4);
S=square(A2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; C=Z*C*Z; D=Z*D*Z; }}
// A=equal(A,1); D=equal(D,1);
// C=pluginto(C,[0],[-1]); B=pluginto(B,[0],[-1]);
// B=pluginto(B,[0],[1]) C=pluginto(C,[0],[-1])
A2=square(A,B,C,D); // I=eye(A2); {{A2=A2+I}}
a=A[0]; b=B[0]; b=circshift(b,rows(b)/2);
putm("a=["+a+"];"); putm("b=["+b+"];");
// A2=twocircul(a,b);
S=square(B2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; C=Z*C*Z; D=Z*D*Z; }}
B2=square(A,B,C,D);
c=A[0]; d=B[0]; d=circshift(d,rows(d)/2);
putm("c=["+c+"];"); putm("d=["+d+"];");
// B2=twocircul(c,d);
// a[0]=1; A=circ(a); b[0]=-1; D=circ(b);
// c=circshift(d,3); B=circ(c);
// H=CommonPropus(A,B,D)
H=twocircul(A2,B2);
}
// H=cyc2nega(A,B);
plots(H);
// CONVERSION TO P
// P1=a2ds(a); P2=a2ds(b);
// puts("P=[["+P1+"],["+P2+"]];");
{{I=H'*H}} putm(I);
// putm(H);
}}
function CommonPropus(A,B,D) {
var H11,H12,H21,H22,TB,TD,BR,DR,TBR,TDR,MA,MTBR,MTDR;
TB=tr(B); TD=tr(D); BR=flip(B);
DR=flip(D); TBR=flip(TB); TDR=flip(TD);
MA=minp(A); MTBR=minp(TBR); MTDR=minp(TDR);
H11=square(A,BR,BR,TDR); H12=square(BR,DR,MA,MTBR);
H21=square(BR,MA,DR,MTBR); H22=square(MTDR,TBR,TBR,MA);
return square(H11,H12,H21,H22);
}
function cyc2nega(A,B) { var n=2*rows(A);
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }
A=a2ab(A); B=a2ab(B);
X=square(A); a=equal(X[0][0]); b=equal(X[1][0]);
X=square(B); c=equal(X[0][0]); d=equal(X[1][0]);
Z=eyez(rows(a)); {{a=Z*a; b=Z*b; c=Z*c; d=Z*d;}}
if (1) {
// a=randseq(v212); a=a.concat(0).concat(flip(a));
// a=[0].concat(a).concat(flip(a));
// b=b.concat(0).concat(flip(minp(b)));
// c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
// a=randseq(v212); a=a.concat(flip(a));
// a=[0].concat(a).concat(flip(minp(a)));
// b=b.concat(0).concat(flip(b));
// c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a=a.concat(b); a=ab2a(a);
b=c.concat(d); b=ab2a(b);
// a=a.concat(b); a=ab2a(a);
// b=circshift(b,n/8,-1);
A=negacirc(a); B=negacirc(b);
// H=square(A,B,minp(B),A);
H=twocircul(A,B);
// H=ab2a(H);
return H;
}
function examples(n) {
if (n==4) {
a=[0,1]; b=[0,1];
M=[[a,b]];
// n=4 p=1 r=2 Lim=0; tick=0 x1=[0,0]; x2=[0,0];
a=[0,0]; b=[0,-1];
M2=[[a,b]]; M=M.concat(M2);
// n=4 p=1 r=2 Lim=0; tick=0 x1=[0,0]; x2=[0,0];
a=[0,0]; b=[0,0];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==6) {
// n=6 p=11 r=1
a=[0,1,-1]; b=[0,1,1];
M=[[a,b]];
// n=6 p=11 r=1 Lim=0;
a=[0,0,1]; b=[0,0,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==8) {
// 8 tick=7 h=1.15 max=0/0
a=[0,1,1,1]; b=[0,-1,1,-1];
M=[[a,b]];
// n=8 p=3 GF(9) 0 X=1,2 M=0
// pha=2 phu=2 phw=0 phw1=2 phw2=0
a=[0,-1,-1,1]; b=[0,-1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
// n=8 p=3 r=1 Lim=0; tick=0 x1=[2,2]; x2=[2,1];
a=[0,-1,0,1]; b=[0,-1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
// 1 n=8 p=7 r=1 M=0 x1=[3,6]; x2=[5,1];
// pha=0; phu=0; phw=1; phw1=0; phw2=1;
a=[0,1,0,1]; b=[0,1,0,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==10) {
// n=10 p=19 r=1 Lim=0; tick=4
a=[0,-1,-1,1,1]; b=[1,-1,1,1,1];
M=[[a,b]];
// n=10 p=19 r=1
a=[0,1,-1,1,1]; b=[0,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==12) {
// n=12 p=5 GF(25)0 X=4,2 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,-1,1,-1,-1,-1]; b=[0,-1,1,-1,-1,-1];
M=[[a,b]];
// 2 n=12 p=11 r=1 M=0 x1=[3,3]; x2=[5,2];
// pha=2; phu=0; phw=2; phw1=2; phw2=1;
a=[0,1,1,0,1,-1]; b=[1,1,1,-1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// n=12 p=11 r=1 Lim=0; tick=3 x1=[6,4]; x2=[6,3];
a=[0,-1,1,0,1,1]; b=[0,-1,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
// 0 n=12 p=11 r=1 M=0 x1=[5,1]; x2=[3,6];
// pha=0; phu=0; phw=1; phw1=0; phw2=1;
a=[0,1,1,0,1,-1]; b=[0,1,1,0,-1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==14) {
// n=14 p=13 r=2 Lim=0; tick=1 x1=[8,7];
a=[0,1,1,-1,1,-1,-1];
b=[1,1,1,-1,1,1,1];
M=[[a,b]];
// n=14 p=13 r=2 Lim=0; tick=1 x1=[3,9];
a=[0,0,-1,-1,1,1,1];
b=[0,0,1,-1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==16) { // NON !
// 16 tick=1 h=1.07 max=0/0
a=[0,-1,1,1,1,-1,1,1];
b=[0,1,-1,1,1,-1,-1,-1];
M=[[a,b]];
// n=16 p=7 GF(49) 2 X=6,4 M=0
// pha=1 phu=2 phw=2 phw1=1 phw2=2
a=[0,-1,1,-1,-1,1,1,1];
b=[0,-1,1,-1,-1,1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// 3 n=16 p=7 r=1 M=0 x1=[1,2]; x2=[1,3];
// pha=0; phu=0; phw=1; phw1=0; phw2=1;
a=[0,-1,1,-1,0,1,1,1];
b=[0,-1,-1,1,0,-1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==18) {
// n=18 p=17 r=3 Lim=0; tick=1
a=[0,1,-1,1,1,-1,-1,1,-1];
b=[1,1,1,1,-1,1,1,1,1];
M=[[a,b]];
a=[0,1,1,1,-1,1,1,-1,1];
b=[0,1,1,1,-1,-1,-1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==20) {
// 20 tick=600 h=1.05 max=0/0
a=[0,1,1,1,1,-1,-1,1,-1,1];
b=[0,1,-1,1,1,1,-1,1,1,1];
M=[[a,b]];
// 20 tick=811 h=1.05 max=0/0
a=[0,1,-1,-1,1,1,-1,-1,-1,-1];
b=[0,-1,1,-1,-1,-1,1,-1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// 381 n=20 2t-1=19 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,1,-1,1,-1,1,1,-1,1,1];
b=[0,1,-1,-1,-1,1,1,1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// 360 n=20 p=19 r=1 M=0 x1=[10,6]; x2=[2,5];
// pha=2; phu=0; phw=2; phw1=2; phw2=1;
a=[0,1,1,-1,1,0,-1,1,1,1];
b=[1,-1,-1,-1,-1,1,-1,1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// n=20 p=19 r=1 Lim=0; tick=15 x1=[4,3]; x2=[3,8];
a=[0,1,-1,-1,1,0,1,1,1,-1];
b=[0,1,1,-1,1,1,1,1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
// 20 tick=3 h=1.12 max=0/0
a=[0,1,-1,1,1,0,-1,1,1,1];
b=[0,1,-1,-1,-1,0,-1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
// 58 n=20 p=19 r=1 M=0
// pha=0; phu=0; phw=1; phw1=2; phw2=1;
x1=[3,11]; x2=[7,10];
a=[0,1,1,-1,1,0,-1,1,1,1];
b=[0,1,-1,1,1,0,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==22) {
// n=22 mul
a=[0,1,1,1,1,1,-1,1,-1,-1,1];
b=[0,1,1,-1,-1,1,1,1,-1,1,-1];
M=[[a,b]];
}
if (n==24) {
// 24 tick=6 h=1.04 max=0/0
a=[0,1,-1,-1,1,1,1,-1,1,1,-1,-1];
b=[0,1,-1,1,1,1,1,-1,1,-1,-1,-1];
M=[[a,b]];
// 24 tick=5377 h=1.04 max=0/0
a=[0,-1,-1,-1,1,-1,1,1,1,1,-1,1];
b=[0,1,1,-1,1,1,-1,-1,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
// n=24 p=11 GF(121) 18 X=7,10 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,1,1,1,-1,-1,-1,1,-1,-1,1,-1];
b=[0,-1,1,-1,1,1,-1,-1,1,1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// 27 n=24 p=23 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,1,1,1,-1,-1,-1,1,-1,-1,1,-1];
b=[0,1,1,1,-1,-1,-1,1,-1,-1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
// n=24 p=23 r=1 Lim=0; tick=17 x1=[11,20]; x2=[14,16];
a=[0,1,1,1,1,1,0,-1,1,-1,-1,1];
b=[0,1,1,-1,-1,1,-1,1,-1,1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// 96 n=24 p=23 r=1 M=0 x1=[1,15]; x2=[10,7];
// pha=0; phu=0; phw=1; phw1=0; phw2=1;
a=[0,-1,1,1,-1,1,0,1,1,1,1,-1];
b=[0,1,1,1,-1,-1,0,1,1,-1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==26) {
// 26 tick=57 h=1.06 max=2/0
a=[0,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1];
b=[1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1];
M=[[a,b]];
}
if (n==28) {
// n=28 p=13 GF(169) 0 X=8,6 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1];
b=[0,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1];
M=[[a,b]];
// 502 n=28 p=13 r=2 M=0 x1=[3,8]; x2=[10,12];
// pha=2; phu=0; phw=1; phw1=0; phw2=1; *** !!
a=[0,-1,1,-1,-1,-1,1,0,1,1,1,1,1,-1];
b=[0,-1,1,-1,1,1,-1,0,1,1,1,-1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
// 28 tick=620 h=0 max=0/0
a=[0,-1,1,-1,1,1,1,0,1,1,1,-1,-1,1];
b=[0,-1,1,-1,-1,1,-1,-1,-1,1,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==30) {
// n=30 p=29 r=3 Lim=0; tick=1
a=[0,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,1];
b=[1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1];
M=[[a,b]];
}
if (n==32) {
// 32 tick=24 h=1.03 max=0/0
a=[0,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,1,1,-1];
b=[0,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1];
M=[[a,b]];
// 32 tick=15873 h=1.03 max=0/0
a=[0,1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,1,-1];
b=[0,-1,1,-1,1,1,1,-1,-1,1,1,1,1,-1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// 32 tick=774 h=2 max=0/0
a=[0,-1,-1,-1,1,-1,-1,-1,0,-1,1,-1,-1,-1,1,-1];
b=[0,1,1,-1,-1,-1,-1,1,0,1,1,-1,1,-1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
// 32 tick=1386 h=0 max=0/0
a=[0,1,-1,-1,-1,-1,-1,1,0,1,-1,1,-1,-1,1,1];
b=[0,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==34) {
// 34 tick=162 h=1.07 max=2
a=[0,-1,1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1];
b=[0,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1,-1,-1];
M=[[a,b]];
}
if (n==36) {
// n=36 p=17 GF(289) 0 X=1,3 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,1,-1,1,1,1,-1,1,-1,-1,1,1,1,1,-1,1,1,1];
b=[0,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,1];
M=[[a,b]];
// 36 tick=2 h=1.03 max=0/0
a=[0,-1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,-1];
b=[0,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,1,1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
// 36 tick=748 h=0 max=0/0
a=[0,-1,-1,-1,1,-1,1,-1,-1,0,-1,1,1,-1,-1,1,1,-1];
b=[0,1,-1,1,1,1,1,1,-1,-1,1,-1,1,1,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
// 36 tick=5230 h=2 max=0/0
a=[0,-1,1,-1,-1,1,1,1,-1,0,1,1,1,-1,-1,1,-1,-1];
b=[0,-1,1,-1,1,1,1,1,1,0,-1,1,-1,1,-1,-1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==38) {
// n=38 p=37 r=2 Lim=0; tick=1
a=[0,1,1,1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1];
b=[-1,1,1,1,1,-1,-1,1,1,-1,1,1,-1,-1,1,1,1,1,-1];
M=[[a,b]];
}
if (n==40) {
// 40 tick=15 h=1.03 max=0/0
a=[0,-1,1,1,-1,1,1,-1,1,1,1,-1,1,1,1,-1,-1,-1,1,1];
b=[0,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,-1];
M=[[a,b]];
// n=40 p=19 GF(361) 25 X=3,9 M=0
// pha=2 phu=0 phw=1 phw1=2 phw2=1
a=[0,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,1,1];
b=[0,1,1,1,1,1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
// n=40 1N W(20,18) and Paley 20
a=[0,1,1,-1,1,1,-1,1,1,1,0,1,-1,1,-1,-1,-1,-1,1,1];
b=[0,1,-1,-1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
// 40 tick=43 h=1.37 max=4/0
a=[0,-1,1,-1,-1,-1,1,1,1,1,0,-1,1,-1,1,1,-1,1,1,1];
b=[0,-1,-1,-1,-1,1,1,-1,1,1,0,-1,1,1,1,-1,-1,1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==44) {
// n=42 p=41 r=3 Lim=0; tick=1
a=[0,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1];
b=[-1,1,-1,1,1,1,1,-1,1,1,-1,1,1,-1,1,1,1,1,-1,1,-1];
M=[[a,b]];
// n=42
a=[0,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,1];
b=[0,1,1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,-1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==44) {
// 44 tick=73 h=1.02 max=0/0
a=[0,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,1,-1,1,1,1,-1];
b=[0,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1];
M=[[a,b]];
// 44 tick=914 h=2 max=0/0
a=[0,-1,1,1,1,1,-1,1,1,-1,-1,0,1,-1,1,1,1,1,-1,-1,-1,-1];
b=[0,-1,1,-1,1,1,1,-1,1,1,1,0,1,-1,-1,1,1,-1,1,-1,1,1];
M2=[[a,b]]; M=M.concat(M2);
// 44 tick=106 h=0 max=0/0
a=[0,-1,-1,-1,-1,-1,1,1,-1,-1,1,0,1,1,-1,-1,1,1,-1,1,-1,1];
b=[0,-1,-1,1,-1,1,-1,1,1,-1,1,0,-1,-1,-1,1,1,1,1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==48) {
// 48 tick=43 h=1.02 max=0/0
a=[0,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1];
b=[0,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1];
M=[[a,b]];
// n=48 p=23 GF(529) 36 X=7,9 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1];
b=[0,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==52) {
// 52 tick=467 h=1.02 max=0/0
a=[0,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,-1];
b=[0,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1];
M=[[a,b]];
// 52 tick=112 h=1.02 max=0/0
a=[0,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1];
b=[0,-1,1,-1,-1,-1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==54) {
// n=54 p=53 r=3 Lim=0; tick=1
a=[0,-1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,1,1,1];
b=[-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,1,-1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,-1];
M=[[a,b]];
// n=54
a=[0,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1];
b=[0,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==56) {
// 56 tick=199 h=1.02 max=0/0
a=[0,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,1,1,1,-1,1,1,-1];
b=[0,1,1,-1,-1,1,-1,1,1,1,1,1,1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1];
M=[[a,b]];
// n=56 1N W(28,26) and Paley 28
a=[0,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,0,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1];
b=[0,1,1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
// n=56 by 1N W(28,26)
a=[0,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,1,0,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1];
b=[0,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,1,0,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==60) {
// n=60 p=29 GF(841) 0 X=26,22 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,-1,1];
b=[0,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1];
M=[[a,b]];
}
if (n==62) {
// n=62 p=61 r=2 Lim=0; tick=1
a=[0,1,-1,1,-1,1,1,-1,1,1,1,1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1];
b=[1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1];
M=[[a,b]];
}
if (n==64) {
// 64 tick=25 h=1.02 max=0/0
a=[0,1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,1,-1];
b=[0,-1,-1,1,1,1,1,1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,1];
M=[[a,b]];
// n=64 p=31 GF(961) 9 X=21,17 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,1,1,1,-1,1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1];
b=[0,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==66) {
// n=66
a=[0,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,1];
b=[0,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1];
M=[[a,b]];
}
if (n==68) {
a=[0,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,1,-1,1,0,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,1];
b=[-1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1];
M=[[a,b]];
// 68 tick=135 h=1.14 max=4/4
a=[0,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1];
b=[0,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
// 68 tick=14426 h=1.02 max=0/0
a=[0,-1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,-1,1,1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1];
b=[0,-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
// n=68 W(68,64)=0GP*NGP
a=[0,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,-1,-1,1,1,-1,0,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1];
b=[0,1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,0,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==72) {
// 72 tick=2101 h=1.01 max=0/0
a=[0,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1];
b=[0,1,1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1];
M=[[a,b]];
// n=72 by 1N W(36,34)
a=[0,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,0,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,1,-1];
b=[0,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,0,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==76) {
// n=76 p=37 GF(1369) 0 X=9,8 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1];
b=[0,-1,1,1,-1,1,1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1];
M=[[a,b]];
}
if (n==80) {
// 80 tick=764 h=0 max=8/0
a=[0,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,1,-1,-1,1];
b=[0,1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,1,1,1,-1,1,1,-1,1,-1,1,-1];
M=[[a,b]];
// n=80
a=[0,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,1,-1,1,1];
b=[0,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,1,1,1,1,-1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
// 80 tick=13044 h=1.26 max=4/0
a=[0,1,1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,1,0,-1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1];
b=[0,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,0,-1,-1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==84) {
// n=84 p=41 GF(1681) 0 X=15,13 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,1,1,1,-1,1,-1,1,1,-1,1,1,-1,-1];
b=[0,1,1,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1];
M=[[a,b]];
// W(84,80)=0GL20*NGP4
a=[0,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,1,0,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,1];
b=[0,1,1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,-1,1,1,-1,0,1,1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,-1,1,1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==88) {
// n=88 p=43 GF(1849) 24 X=41,38 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1];
b=[0,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,1,-1,-1,1,1,1,1,-1,-1];
M=[[a,b]];
}
if (n==92) {
M=[[a,b]];
}
if (n==96) {
// n=96 p=47 GF(2209) 3 X=7,18 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1];
b=[0,-1,1,1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1];
M=[[a,b]];
}
if (n==100) {
// n=100 W(100,98)
a=[0,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1];
b=[0,1,1,-1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,-1,1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,1,1,1,1,-1,-1,-1,1];
M=[[a,b]];
// M2=[[a,b]]; M=M.concat(M2);
}
if (n==104) {
// n=104
a=[0,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1];
b=[0,1,1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,-1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1];
M=[[a,b]];
// n=104 by 1N W(52,50)
a=[0,-1,-1,1,1,1,-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,0,-1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1];
b=[0,-1,-1,1,1,1,-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,0,-1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==106) {
// n=106
a=[0,-1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,-1,-1];
b=[0,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,1];
M=[[a,b]];
}
if (n==108) {
// n=108 p=53 GF(2809) 3 X=51,32 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1];
b=[0,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1];
M=[[a,b]];
// n=108 mul
a=[0,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,0,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,1,-1,1,-1];
b=[0,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,0,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,1,1,1,1,-1,-1,1,1,1,-1,1,-1];
// n=108 W(108,104)=0GP*NGP
a=[0,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,1,-1,1,-1,0,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,1,-1,1,-1];
b=[0,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,0,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==120) {
// n=120 p=59 GF(3481) 67 X=41,47 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1
a=[0,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,1,1,1,1];
b=[0,1,1,1,1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,1,1,-1,1,-1];
M=[[a,b]];
// n=120 1N W(60,58) and Paley 60
a=[0,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,0,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1];
b=[0,1,-1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,-1,-1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==124) {
// n=124 p=61 GF(3721) 1 X=60,39 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,1,1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,1];
b=[0,-1,1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1];
M=[[a,b]];
}
if (n==136) {
// 0 n=136 p=67 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[53,60]; x2=[31,5];
a=[0,-1,1,1,-1,1,-1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1];
b=[0,-1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,1,1,1,-1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1];
M=[[a,b]];
}
if (n==144) {
// 7 n=144 p=71 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[3,14]; x2=[34,58];
a=[0,-1,1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,1];
b=[0,1,-1,-1,1,-1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,-1,-1,1,1,1,1,1,1,1,1,1,-1,-1];
M=[[a,b]];
}
if (n==160) {
// 1 n=160 p=79 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[23,39]; x2=[18,69];
a=[0,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,-1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1];
b=[0,-1,1,-1,1,-1,1,1,1,-1,-1,1,1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,1];
M=[[a,b]];
}
if (n==168) {
// 3 n=168 p=83 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[18,75]; x2=[58,82];
a=[0,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,1,1];
b=[0,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,-1,-1,1];
M=[[a,b]];
}
if (n==180) {
// n=180 p=89 GF(7921) 1 X=22,50 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,1,1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1];
b=[0,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,1,1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,-1];
M=[[a,b]];
// 0 n=180 p=89 r=3 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1 x1=[46,37]; x2=[78,77];
a=[0,-1,1,-1,1,1,1,1,1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1];
b=[0,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,1,1,1,-1,1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==204) {
// 0 n=204 p=101 r=3 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1 x1=[79,28]; x2=[39,52];
a=[0,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,1,1,1,1,1,1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1];
b=[0,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,1];
M=[[a,b]];
// n=204 p=101 GF(10201) 1 X=5,45 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,1,-1,1,1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,1,1];
b=[0,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,1,1,1,1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,-1,1,1,1,1];
M2=[[a,b]]; M=M.concat(M2);
}
if (n==208) {
// 1 n=208 p=103 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[15,58]; x2=[81,99];
a=[0,-1,1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1];
b=[0,-1,-1,-1,1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,1,1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,1,1,1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1];
M=[[a,b]];
}
if (n==216) {
// 1 n=216 p=107 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[53,49]; x2=[28,95];
a=[0,1,1,-1,1,1,1,1,1,1,1,1,-1,-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,1,1,1,-1];
b=[0,-1,1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,1];
M=[[a,b]];
}
if (n==220) {
// n=220 p=109 GF(11881)0 X=100,103 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,1,-1];
b=[0,-1,1,1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1];
M=[[a,b]];
}
if (n==228) {
// 0 n=228 p=113 r=3 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1 x1=[1,90]; x2=[45,8];
a=[0,1,1,-1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,1,1,1,1,1,1,1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1];
b=[0,1,-1,-1,-1,1,1,-1,1,1,1,1,-1,1,1,1,1,-1,1,1,-1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1];
M=[[a,b]];
}
if (n==256) {
// 0 n=256 p=127 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[57,63]; x2=[87,100];
a=[0,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1];
b=[0,-1,1,-1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,1,1,1,-1,1,-1,1,1,1,1];
M=[[a,b]];
}
if (n==264) {
// 5 n=264 p=131 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[55,118]; x2=[63,110];
a=[0,1,1,1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,-1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,1,-1,1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1];
b=[0,1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1];
M=[[a,b]];
}
if (n==276) {
// n=276 p=137 GF(18769) 0 X=96,51 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,-1,1,-1,1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1];
b=[0,-1,1,1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1];
M=[[a,b]];
}
if (n==280) {
// 2 n=280 p=139 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[57,136]; x2=[56,39];
a=[0,1,1,-1,-1,-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,1,1,1,-1,1,-1,1,1,-1];
b=[0,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,1,1,1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1];
M=[[a,b]];
}
if (n==300) {
// 1 n=300 p=149 r=3 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1 x1=[7,50]; x2=[146,17];
a=[0,-1,1,1,1,1,1,1,-1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,-1,1,1,1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1];
b=[0,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,-1,1,1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1,1,-1];
M=[[a,b]];
}
if (n==304) {
// 0 n=304 p=151 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[81,73]; x2=[77,39];
a=[0,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,-1,1,1,1,1,-1,1,1,1,-1,1,1,1,1,1];
b=[0,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,-1,1,-1,1,1,-1,1,1,-1,1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,-1];
M=[[a,b]];
}
if (n==316) {
// 2 n=316 p=157 r=2 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1 x1=[92,50]; x2=[118,72];
a=[0,-1,1,-1,1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1];
b=[0,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1];
M=[[a,b]];
}
if (n==328) {
// 0 n=328 p=163 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[16,44]; x2=[99,109];
a=[0,1,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,-1,1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,1,-1];
b=[0,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,1,-1,1,-1,1];
M=[[a,b]];
}
if (n==336) {
// 3 n=336 p=167 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[161,58]; x2=[48,98];
a=[0,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,1,-1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1];
b=[0,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,-1,1,-1,1,-1,1,-1,1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,1,1,1,-1,1,-1,1,1,1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,1,1,1];
M=[[a,b]];
}
if (n==348) {
// n=348 p=173 GF(29929) 0 X=161,29 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1 t=87
a=[0,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,1,-1,1,1,1,-1,-1,1,-1,1,1,1,1,-1,1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,-1];
b=[0,-1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,1,-1,1,1,-1,1,1,-1,-1,1,1,-1];
M=[[a,b]];
}
if (n==360) {
// 0 n=360 p=179 r=1 M=0
// pha=0 phu=0 phw=1 phw1=0 phw2=1 x1=[136,142]; x2=[94,155];
a=[0,-1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,1,1,1,1,1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,1,-1,1,1,1,1,-1,1];
b=[0,-1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,1,-1,-1,-1,1,1,1];
M=[[a,b]];
}
if (n==364) {
// n=364 p=181 GF(32761) 0 X=131,88 M=0
// pha=0 phu=0 phw=2 phw1=0 phw2=1
a=[0,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1];
b=[0,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,1,1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1];
M=[[a,b]];
}
}
function circcore(a){
var i,n,b; n=rows(a); b=circshift(a);
for (i=2;i<n;i++) if (a[i]<0) b[i]=-b[i];
return rowcol(b,2,n-1);
}
function corecirc(a,b) {
var i,n,c; n=2+rows(b); c=one(n); c[0]=a;
for (var i=2;i<n;i++) if (c[i-1]!=b[i-2]) c[i]=-c[i];
return c;
}
function compress(a) {
var i,j,v,p,b; v=rows(a); p=v/2; b=one(p);
for (i=0;i<p;i++) b[i]=(a[i]+a[p+i])/2;
return b;
}
function decompress(a) {
var i,j,v,p,b,q; p=rows(a); v=2*p; b=one(v);
for (i=0;i<p;i++) { q=a[i];
if (q==0) { q=signm(rand(1)); b[i]=q; b[p+i]=-q;
}else{ b[i]=q; b[p+i]=q; }}
return b;
}
function seteq(a,t) {
var i,j,v,b,F; v=rows(a); b=equal(a); F=true;
for (i=0;i<v;i++)
if (t>0) { j=i*t; while (j>v) j=j-v; b[j]=a[i];
}else{ if (F) b[i]=-a[i]; F=!F; }
return b;
}
function getis(a) {
// get index of symmetry
var i,v,F,IS; v=rows(a); F=true; IS=1;
for (i=1;i<=v/2;i++) if (F) { IS=i; F=a[i]==a[v-i]; }
return IS;
}
function setmaxis(x) {
// set maximal index of symmetry
var i,v,a,b,F,IS,ISM;
a=equal(x); b=equal(x); ISM=getis(a); v=rows(a);
for (i=1;i<v;i++) { a=circshift(a); IS=getis(a);
if (IS>ISM) { b=equal(a); ISM=IS;}}
return b;
}
function getish(a) {
// get index of hamming symmetry
var i,v,IS; v=rows(a); IS=1;
for (i=1;i<v/2;i++) if (a[i]==a[v-i]) IS++;
return IS;
}
function setmaxish(x) {
// set maximal index of hamming symmetry
var i,v,a,b,IS,ISM;
a=equal(x); b=equal(x); ISM=getish(a); v=rows(a);
for (i=1;i<v;i++) { a=circshift(a); IS=getish(a);
if (IS>ISM) { b=equal(a); ISM=IS;}}
return b;
}
function getisa(a) {
// get index of Hamming asymmetry
var i,v,IS; v=rows(a); IS=0;
for (i=1;i<v/2;i++) if (a[i]==-a[v-i]) IS++;
return IS;
}
function setmaxisa(x) {
// set maximal index of symmetry
var i,v,a,b,IS,ISM;
a=equal(x); b=equal(x); ISM=getisa(a); v=rows(a);
for (i=1;i<v;i++) { a=circshift(a); IS=getisa(a);
if (IS>ISM) { b=equal(a); ISM=IS;}}
return b;
}

1-NEGACYCLIC WEIGHING MATRICES

Specifical N1-construction W(n ,n –2)=[A B;–B A], based on two non orthogonal (!) Toeplitz blocks A, B, where 1-column of B is reversed and shifted 1-row of A, 1-row of B is reversed and shifted the inversed 1-column of A.

// 1-TOEPLITZ WEIGHING MATRICES: n=12, 20, ...
if (tick==0) { FPaley=false; // for C-matrices
n=36; hf=1.3; hf2=2.5; sn=sqrt(n); n1=n-1; v=n/2;
v2=v/2; v12=(v-1)/2; v21=(v2-1)/2; v22=(v-2)/2;
// TO SEARCH W(n,n-2) PUT (1)
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }}
v212=floor(v21/2);
// STADIUM 1: CHOOSE PRETENDENT 1-T
H=initmatrix(n,10000,4); // plots(H);
// STADIUM 2: DETERMINANT OPTIMIZATION
H=orth(H); m=maxabs(H); h=m*sn;
if (h<3.5) { u=line(n);
p=0.5; q=4*n; q2=2*n; // iterations
while(q>1) { q=q-1; p=0.995*p+0.005;
// SORT COLUMNS
ix=maxabsix(H); u=sort(u,ix); H=sort(H,ix);
H=sat(H,m*p); H=orth(H); m=maxabs(H); h=m*sn;
if (h<hf) { q=0;
H=resort(H,u); H=divp(H,m); if (h<hf) H=roundm(H);
if (maxabslsm(H)>0) {
puts("WRONG MATRIX"); }else{ tick=-100; }}else{
if (q<q2) if (h>hf2) q=0; }
}
// PROVE FINAL LIMIT OF H'H !!
// H=roundm(divp(H,maxabs(H))); maxx=maxabslsm(H);
// if (maxx<2) { q=0; tick=-abs(tick); }
}
maxx=' max='+minx+'/'+maxx;
puts(n+' tick='+abs(tick)+' h='+format(h,100)+maxx);
if (tick>=0) { restart(0);
}else{
// RESULT
// H=resort(H,u);
n=rows(H); // H=a2ab(H);
a=tr(rowcol(H,0,0,0,n-1)); // a2=rowcol(H,0,n-1,0,0);
putm("a=["+a+"];"); // putm("a2=["+a2+"];");
// H=a2ab(H); H=a2ab(H);
plots(H);
{{I=H'*H}} putm(I); putm(H);
// CONVERSION TO P
// P1=a2ds(a); puts("P=[["+P1+"];");
sound("5th.wav");
}
function getA() {
if (!(F36||F28)) {
if (FPaley) { // FOR C-matrices
a=randseq(v12); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v12); b=b.concat(randseq(1)).concat(flip(b));
a=a.concat(b); a=ab2a(a);
}else{ a=[0].concat(randseq(n1));
// a=randseq(v22); b=randseq(v22);
// a=[0].concat(a).concat(randseq(1)).concat(minp(flip(a)));
// b=b.concat(randseq(1)).concat(flip(b)).concat(randseq(1));
// a=a.concat(b); a=ab2a(a);
}
}else{
b=randseq(v21); a=randseq(v21);
c=randseq(v21); d=randseq(v21);
c=[0].concat(c).concat(flip(minp(c)));
d=d.concat(1).concat(flip(d));
if (F28) {
// a=randseq(v212); a=a.concat(0).concat(flip(a));
a=[0].concat(a).concat(flip(a));
b=b.concat(0).concat(flip(minp(b)));
c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
// a=randseq(v212); a=a.concat(flip(a));
a=[0].concat(a).concat(flip(minp(a)));
b=b.concat(0).concat(flip(b));
c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a=a.concat(b); a=ab2a(a); // geta();
b=c.concat(d); b=ab2a(b);
a=a.concat(b); a=ab2a(a);
}
// A=negacirc(a);
maxx=maxabs(mulnegacirc(a,1,v));
}
function initmatrix(n,q,min) {
minx=1000; getA(); H=negacirc(a);
while (q>0) { q=q-1;
getA(); if (maxx<minx) { minx=maxx;
H=negacirc(a); if (minx<=min) q=0;
}
}
return H;
}

// LIBRARY OF 1-TOEPLITZ WEIGHING MATRICES
n=36; M=examples(n);
N=rows(M); puts(n+' Matrices: '+N);
for (k=0;k<N;k++) { a=M[k];
// MATRIX ANALYSIS
// a=circshift(a,0);
putm("a=["+a+"];");
// CONVERSION TO P
// P1=a2ds(a); puts("P1=[["+P1+"];");
if (k==0) {
H=negacirc(a); // H=a2ab(H);
if (0) { // WAY TO HADAMARD MATRIX
A=equal(H,1); B=equal(H,-1);
A=circshift(A,n/2,-1); B=circshift(B,n/2,-1);
A=equal(A,1); B=equal(B,-1);
H=twocircul(A,B);
}
plots(H);
{{I=H'*H}} putm(I); putm(H);
}}
function examples(n) {
if (n==4) {
a=[0,1,0,1];
M=[a];
}
if (n==12) {
// 12 tick=2 h=1.1 max=0/0
a=[0,1,-1,1,-1,-1,0,-1,-1,-1,1,1];
M=[a];
}
if (n==20) {
a=[0,1,1,-1,1,1,-1,1,1,1,0,1,-1,1,-1,-1,-1,-1,1,1];
M=[a];
}
if (n==28) {
a=[0,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,1,0,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1];
M=[a];
// 28 tick=17 h=1.04 max=0/0
a=[0,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,0,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1];
M2=[a]; M=M.concat(M2);
}
if (n==36) {
// 36 tick=471 h=1.05 max=6
a=[0,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,0,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,1,-1];
M=[a];
// 36 tick=21 h=1.15 max=6
a=[0,1,-1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1,1,-1,1,0,-1,1,1,-1,1,1,-1,1,1,1,1,1,1,-1,-1,-1,-1];
M2=[a]; M=M.concat(M2);
}
if (n==40) {
}
if (n==52) {
// 52 tick=82982 h=1.13 max=8/1
a=[0,-1,-1,1,1,1,-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,0,-1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1];
M=[a];
// 52 tick=873 h=1.14 max=8/0
a=[0,-1,-1,1,1,1,1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,0,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,1,-1,1];
M2=[a]; M=M.concat(M2);
// 52 tick=91 h=1.13 max=4/1
a=[0,-1,1,-1,1,1,-1,-1,1,1,-1,-1,1,-1,1,1,1,1,1,1,-1,1,1,1,-1,-1,0,1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1];
M2=[a]; M=M.concat(M2);
// 52 tick=7 h=1.14 max=8/1
a=[0,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,-1,1,-1,-1,0,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1];
M2=[a]; M=M.concat(M2);
// 52 tick=12 h=1.07 max=2/0
a=[0,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,0,-1,-1,1,-1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,1,1,1,1,1,-1,-1,-1,-1];
M2=[a]; M=M.concat(M2);
// 52 tick=55 h=1.14 max=8/0
a=[0,-1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,0,1,-1,1,1,-1,1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1];
M2=[a]; M=M.concat(M2);
// 52 tick=359 h=1.02 max=0/0
a=[0,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,0,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1];
M2=[a]; M=M.concat(M2);
// 52 tick=100 h=1.17 max=2/2
a=[0,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,1,1,-1,0,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,1];
M2=[a]; M=M.concat(M2);
// 52 tick=810 h=1.26 max=8/1 (skew=skew)
a=[0,1,1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,0,-1,-1,1,-1,1,1,1,1,1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1];
M2=[a]; M=M.concat(M2);
}
if (n==56) {
}
if (n==60) {
// 60 tick=547 h=1.14 max=8/0
a=[0,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,0,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1];
M=[a];
// 60 tick=462 h=1.09 max=8/1
a=[0,1,-1,1,1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,0,-1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,1,-1,1,1];
M2=[a]; M=M.concat(M2);
// 60 tick=7585 h=1.02 max=0/0
a=[0,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,1,1,1,-1,-1,1,1,0,1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1];
M2=[a]; M=M.concat(M2);
// 60 tick=100 h=1.16 max=6/6
a=[0,1,-1,1,1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,0,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,1];
M2=[a]; M=M.concat(M2);
// 60 tick=7 K1[0]=31
a=[0,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,0,1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,-1];
M2=[a]; M=M.concat(M2);
// 60 tick=138 K[*]=0/0
a=[0,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,0,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,1,1,1,-1,-1,1,1];
M2=[a]; M=M.concat(M2);
}
if (n==76) {
// 76 tick=1969 h=1.14 max=8/0
a=[0,1,1,1,1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,0,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1];
M=[a];
// 76 tick=115 K[*]=0/0
a=[0,-1,1,1,1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,0,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1];
M2=[a]; M=M.concat(M2);
}
if (n==84) {
// 84 tick=871 h=1.13 max=8/1
a=[0,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,0,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,1,1,1,-1,1,-1];
M=[a];
// 84 tick=821
a=[0,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,0,1,1,-1,-1,1,1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,1,-1,1];
M2=[a]; M=M.concat(M2);
}
if (n==100) {
a=[0,-1,-1,-1,1,1,1,1,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,0,1,1,-1,1,1,1,1,-1,1,-1,-1,1,-1,1,1,1,-1,1,-1,1,-1,-1,1,-1];
b=[1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,-1,1];
a=[0,1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,0,1,1,1,1,1,-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,-1,-1,1];
M=[a];
}
return M;
}

N1-MATRICES WITH SYMMETRIES WEIGHING MATRICES n =4+16*k

Weighing matrices W(n ,n –2), n =4+16*k , 4, 20, 36!, 52, [68?], 84, 100?, .. with two zeros, giving two negacyclic Hadamard H_{2n} =[A B;B' –A'] or zipper H*_{2n} =[A B;B –A] matrices. Lenght v =n /2=34 can be crytical for these matrices, so order 68 is under doubts.

TWO NEGACYCLIC VERSIONS H_{2n} =[A B;B' –A'] Weighing matrices W(4,2) and H_{8} Weighing matrices W(20,18) and H_{40} Weighing matrices W(36,34) and H_{72} Weighing matrices W(52,50) and H_{104} Weighing matrices W(52,50) Weighing matrices W(84,82) and H_{168} Weighing matrices W(100,98) and H_{200} ZIPPER VERSION H*_{72} =[A B;B –A] Weighing matrices W(36,34) and H*_{72} WEIGHING MATRICES n =12+16*k

Weighing matrices W(n ,n –2), n =12+16*k , 12, 28, [44?], 60, 76, [92?], 108?, .. with two zeros, giving two negacyclic Hadamard H_{2n} =[A B;B' –A'] or zipper H*_{2n} =[A B;B –A] matrices. Lenghts v =n /2=22 and 46 can be crytical for these matrices, so orders 44 and 92 are under doubts.

Weighing matrices W(12,10) and H_{24} Weighing matrices W(28,26) and H_{56} Weighing matrices W(60,58) and H_{120} Weighing matrices W(76,74) and H_{152} ZIPPER VERSIONS Weighing matrices W(12,10) and H*_{12} Weighing matrices W(28,26) and H*_{28}

GALOIS FIELD CALCULATIONS

Calculate N1 as [A B;–B A], A,B – Toeplitz blocks; we tie A-block with NPG-pair, then find B (GF(p^{2} ), p=4*t–1).

// N1 [A B;-B A]-MATRIX
if (tick==0) { t=3;
n=4*t; n1=n-1; n2=2*t; n21=n2-1;
// v28=(3*n-4)/16; v36=(n-4)/16;
p=4*t-1; v=2*t; v1=v-1; gfinit(p,2);
M=10000; R=true; U=zero(v1);
maxlambda=8; maxphase=2;
text=""; text2="";
}
for (k=0;k<100;k++) if (R) {
x=zero(GFm); for (i=0;i<GFm;i++) x[i]=randint(p);
// LAMBDAS
if (1) { lambda=2; lambdau=8; lambdaw=2;
}else{ lambda=randint(maxlambda);
lambdau=randint(maxlambda); lambdaw=randint(maxlambda); }
// PHASES
if (1) { pha=0; phu=0; phw=1; phw1=0; phw2=1;
}else{ pha=randint(maxphase);
phu=randint(maxphase); phw=randint(maxphase);
phw1=randint(maxphase); phw2=randint(maxphase);
}
getab(); a=a.concat(b); a1=ab2a(a);
// getab(); a=a.concat(b); b1=ab2a(a);
// a=circshiftback(a,v28,-1); b=circshiftback(b,v28,-1);
a=rowcol(a1,0,n21); b=rowcol(a1,n2,n1);
a2=circshift(flip(minp(b)));
b2=circshift(flip(a),1,-1);
a2[0]=0; // b2[0]=0;
A=toeplitz(a2,a); B=toeplitz(b2,b);
H=square(A,B,minp(B),A); // H=ab2a(H); // N1
m=maxabslsm(H);
if (M>=m) { X=x; M=m;
text="pha="+pha+"; phu="+phu+"; phw="+phw;
text+="; phw1="+phw1+"; phw2="+phw2+";";
text2="lambda="+lambda+"; lambdau="+lambdau+"; lambdaw="+lambdaw;
if (M==0) R=false; }
}
puts("n="+n+" p="+p+" GF("+GFp2+")");
puts(tick+" X="+X+" M="+M);
puts(text2); puts(text);
if (M>0) { restart(0) }else{
puts("a=["+a2+"]"); puts("b=["+b2+"]");
{{I=H'*H}} putm(I); putm(H);
plots(H);
}
// plots(H);
function getab() {
// PARAMETERS
alp=gfpow(x,lambda*t+pha);
u=gfpow(x,lambdau*t+phu);
w=gfpow(x,lambdaw*t-phw);
for (i=0;i<v1;i++) U[i]=gfpow(u,i);
a=one(v); b=one(v);
for (i=0;i<v;i++) {
W1=gfpow(w,2*i+phw1); aw1=gfmul(alp,W1);
W2=gfpow(w,2*i+phw2); aw2=gfmul(alp,W2);
trace1=gfadd(aw1,gfpow(aw1,p));
trace2=gfadd(aw2,gfpow(aw2,p));
ai=true; bi=true;
for (j=0;j<v1;j++) {
if (ai) if (gfeq(trace1,U[j])) ai=false;
if (bi) if (gfeq(trace2,U[j])) bi=false;
} if (!ai) a[i]=-1; if (!bi) b[i]=-1;
}}
Calculate N1 as [A B;–B A], A,B – Toeplitz blocks; we tie A-block with NPG-pair, then find B (GF(p^{2} ), p=2*t–1).

// N1 [A B;-B A]-MATRIX
if (tick==0) { t=3;
n=4*t; n1=n-1; n2=2*t; n21=n2-1;
v28=(3*n-4)/16; v36=(n-4)/16;
p=2*t-1; v=t; v1=v-1; gfinit(p,2);
// p=4*t-1; v=2*t; v1=v-1; gfinit(p,2);
M=10000; R=true; U=zero(v1);
text=""; ppp=2;
}
for (k=0;k<100;k++) if (R) {
if (0) { // SET PHASES
// pha=0; phu=0; phw=2; phw1=0; phw2=1;
// pha=0; phu=1; phw=2; phw1=0; phw2=1;
pha=0; phu=0; phw=2; phw1=1; phw2=0;
}else{ pha=0; //randint(ppp);
phu=0; //randint(ppp);
phw=randint(ppp);
phw1=randint(ppp); phw2=randint(ppp);
// pha=0; phu=0; phw=1; phw1=0; phw2=1;
}
getab(); a=a.concat(b); a1=ab2a(a);
getab(); a=a.concat(b); b1=ab2a(a);
// a=circshiftback(a,v28,-1); b=circshiftback(b,v28,-1);
// a=a.concat(b); b1=ab2a(a); a=a1.concat(b1); a=ab2a(a);
// a1=rowcol(a,0,n21); b1=rowcol(a,n2,n1);
// a1=[0,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1];
// b1=[0,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1];
a2=circshift(flip(minp(b1)));
b2=circshift(flip(a1));
a2[0]=0; b2[0]=0;
A=toeplitz(a2,a1);
B=toeplitz(b2,b1);
H=square(A,B,minp(B),A); // H=ab2a(H); // N1
m=maxabslsm(H);
if (M>=m) { X=x; M=m;
text="pha="+pha+"; phu="+phu+"; phw="+phw;
text+="; phw1="+phw1+"; phw2="+phw2+";";
if (M==0) R=false; }
}
puts("n="+n+" p="+p+" GF("+GFp2+")");
puts(tick+" X="+X+" M="+M);
puts(text);
if (M>0) { restart(0) }else{
puts("a=["+a2+"]"); puts("b=["+b2+"]");
{{I=H'*H}} putm(I); putm(H);
plots(H);
}
// plots(H);
function getab() {
a=one(v); b=one(v);
// ROOTS
x1=randint(GFp);
x2=randint(GFp); x=[x1,x2];
alp=gfpow(x,t+pha);
u=gfpow(x,4*t+phu); w=gfpow(x,t-phw);
for (i=0;i<v1;i++) U[i]=gfpow(u,i);
for (i=0;i<v;i++) {
W1=gfpow(w,2*i+phw1); aw1=gfmul(alp,W1);
W2=gfpow(w,2*i+phw2); aw2=gfmul(alp,W2);
trace1=gfadd(aw1,gfpow(aw1,p));
trace2=gfadd(aw2,gfpow(aw2,p));
ai=true; bi=true;
for (j=0;j<v1;j++) {
if (ai) if (gfeq(trace1,U[j])) ai=false;
if (bi) if (gfeq(trace2,U[j])) bi=false;
} if (!ai) a[i]=-1; if (!bi) b[i]=-1;
}}

Similar by sense W(n ,n –2) matrix, based on two nega-circulant blocks.

// GALUA FIELDS PROCEDURE FOR N2 HM-MATRICES
if (tick==0) { t=7; n=4*t;
p=2*t-1; p2=p*p; v=t; v1=v-1;
GFp=p; GFm=2; GFr=2; GFp2=p2;
if (((GFp+1)/2)%3==0) GFr=3;
if ((GFp+1)%4==0) GFr=1; text="";
M=10000; R=true; U=zero(v1); ppp=2;
}
for (k=0;k<100;k++) if (R) {
if (GFr!=1) { // SET PHASES
pha=0; phu=0; phw=2; phw1=0; phw2=1;
}else{ pha=randint(ppp);
phu=randint(ppp); phw=randint(ppp);
phw1=randint(ppp); phw2=randint(ppp);
// pha=0; phu=0; phw=1; phw1=0; phw2=1;
}
getab(); a=a.concat(b); a2=ab2a(a);
getab(); a=a.concat(b); b2=ab2a(a);
if (1) {
a2[0]=0; // a2=circshift(a2,t,-1);
a2[t]=0; // b2=circshift(b2,t,-1);
// b2[0]=0; // b2=circshift(b2,t,-1);
// a=a2.concat(b2); a=ab2a(a);
}
A=negacirc(a2); B=negacirc(b2);
H=twocircul(A,B); // H=ab2a(H); // N1
m=maxabslsm(H);
if (M>=m) { X=x; M=m;
text="pha="+pha+"; phu="+phu+"; phw="+phw;
text+="; phw1="+phw1+"; phw2="+phw2+";";
if (M==0) R=false; }
}
puts("n="+n+" p="+p+" GF("+p2+")");
puts(tick+" X="+X+" M="+M);
puts(text);
if (M>0) { restart(0) }else{
puts("a=["+a2+"]"); puts("b=["+b2+"]");
{{I=H'*H}} putm(I); putm(H);
plots(H);
}
function getab() {
a=one(v); b=one(v);
// ROOTS
x1=randint(GFp);
x2=randint(GFp); x=[x1,x2];
alp=gfpow(x,t+pha);
u=gfpow(x,4*t+phu); w=gfpow(x,t-phw);
for (i=0;i<v1;i++) U[i]=gfpow(u,i);
for (i=0;i<v;i++) {
W1=gfpow(w,2*i+phw1); aw1=gfmul(alp,W1);
W2=gfpow(w,2*i+phw2); aw2=gfmul(alp,W2);
trace1=gfadd(aw1,gfpow(aw1,p));
trace2=gfadd(aw2,gfpow(aw2,p));
ai=true; bi=true;
for (j=0;j<v1;j++) {
if (ai) if (gfeq(trace1,U[j])) ai=false;
if (bi) if (gfeq(trace2,U[j])) bi=false;
} if (!ai) a[i]=-1; if (!bi) b[i]=-1;
}}
// GALUA FIELDS LIBRARY
function gfeq(A,B) { var i,F; F=true;
for (i=0;i<GFm;i++) F=(A[i]==B[i])&&F; return F;
}
function gfadd(A,B) { var i,C;
C=one(GFm); for (i=0;i<GFm;i++) C[i]=(GFp2+A[i]+B[i])%GFp; return C;
}
function gfsub(A,B) { var i,C;
C=one(GFm); for (i=0;i<GFm;i++) C[i]=(GFp2+A[i]-B[i])%GFp; return C;
}
function gfpow(A,k) { var i,C;
if (k) { C=equal(A);
for (i=1;i<k;i++) C=gfmul(A,C);
}else{ C=zero(GFm); C[0]=1; }
return C;
}
function gfmul(A,B) {
var i,j,k,i1,b,r,C,S,F5;
if (GFm==2) { // GF(p^2)
return [(GFp2+A[0]*B[0]-GFr*A[1]*B[1])%GFp,(GFp2+A[0]*B[1]+A[1]*B[0])%GFp]; }else{
if (GFm==3) { // GFp==3: GF(27)
return [(GFp2+A[0]*B[0]+A[1]*B[2]+A[2]*B[1])%GFp,
(GFp2+A[0]*B[1]+A[1]*(B[0]+B[2])+A[2]*(B[1]+B[2]))%GFp,
(GFp2+A[0]*B[2]+A[1]*B[1]+A[2]*(B[0]+B[2]))%GFp];
}else{ C=one(GFm); // GFp==3: GF(3^6)
for (i=0;i<GFm;i++) { S=0;
for (k=0;k<=i;k++) S+=A[k]*B[i-k];
i1=1; F5=i==5; if (!F5) i1+=i;
for (j=i1;j<GFm;j++) { b=B[5+i1-j];
for (k=j;k<GFm;k++) { r=k-j;
if (F5) r++; S+=A[k]*b*pow(2,r); }}
C[i]=(GFp2+S)%GFp;} return C;
}}
}
function gfroots(t) { var x;
if (t==1) x=[2,2]; // X^2+2X+2
if (t==2) x=[-1%F[0],-2%F[0]]; // X^2+2X+5
if (t==3) x=[1%F[0],7%F[0]]; // X^2-2X+50
if (t==5) x=[-1%F[0],-3%F[0]]; // X^2+2X+10
return x;
}

// GALOIS FIELD PROCEDURE: CHOOSE LAMBDA/PHASES
if (tick==0) {
t=5; p=4*t-1; v=2*t; v1=v-1; gfinit(p,2);
x=[2,3]; // t=3,5,15
Ft7=t==7; if (Ft7) { GFp=3; GFm=6; x=[0,1,0,0,0,0]; }
// p=2*t-1; GFp=p; GFm=2; GFr=2; GFp2=p*p;
// if (((GFp+1)/2)%3==0) GFr=3;
// n=4*t; v28=(3*n-4)/16; v36=(n-4)/16;
M=10000; R=true; U=zero(v);
maxphase=3; maxlambda=8; F4=false;
}
for (k=0;k<10;k++) if (R) { x=gfrand();
// LAMBDAS
if (1) {
// lambda=2; lambdau=2; lambdaw=7;
lambda=1; lambdau=2; lambdaw=2;
if (F4) { lambdau2=2; lambdaw2=8; }
}else{
lambda=randint(maxlambda);
lambdau=randint(maxlambda); lambdaw=randint(maxlambda);
if (F4) {
lambdau2=randint(maxlambda);
lambdaw2=randint(maxlambda);
}}
// PHASES
if (1) {
pha=0; phu=2; phw=0; phw1=3; phw2=2;
// pha=3; phu=0; phw=0; phw1=3; phw2=2;//lambda=2,2,7,2,8 28
// pha=0; phu=0; phw=2; phw1=1; phw2=3;//lambda=2,4,1 12
// pha=0; phu=0; phw=3; phw1=0; phw2=3;//lambda=2,4,1 20
// pha=0; phu=2; phw=1; phw1=1; phw2=0;//lambda=2,4,1
// pha=0; phu=0; phw=1; phw1=1; phw2=2;//lambda=1,4,1
// pha=0; phu=1; phw=2; phw1=3; phw2=2; //lambda=2,8,2
// pha=0; phu=2; phw=2; phw1=0; phw2=3;//lambda=1,8,2
}else{ pha=0; //randint(maxphase);
phu=randint(maxphase); phw=randint(maxphase);
phw1=randint(maxphase); phw2=randint(maxphase);
}
// PARAMETERS
alp=gfpow(x,lambda*t+pha);
u=gfpow(x,lambdau*t+phu);
w=gfpow(x,lambdaw*t-phw);
for (i=0;i<v;i++) U[i]=gfpow(u,i);
if (F4) {
u2=gfpow(x,lambdau2*t+phu);
w2=gfpow(x,lambdaw2*t-phw);
for (i=0;i<v;i++) U[i]=gfadd(U[i],gfpow(u2,i));
}
a=one(v); b=one(v);
for (i=0;i<v;i++) {
W1=gfpow(w,2*i+phw1); aw1=gfmul(alp,W1);
W2=gfpow(w,2*i+phw2); aw2=gfmul(alp,W2);
if (F4) {
W3=gfpow(w2,2*i+phw1); aw3=gfmul(alp,W3);
W4=gfpow(w2,2*i+phw2); aw4=gfmul(alp,W4);
aw1=gfadd(aw1,aw3); aw2=gfadd(aw2,aw4);
}
trace1=gfadd(aw1,gfpow(aw1,p));
trace2=gfadd(aw2,gfpow(aw2,p));
ai=true; bi=true;
for (j=0;j<v;j++) {
if (ai) if (gfeq(trace1,U[j])) ai=false;
if (bi) if (gfeq(trace2,U[j])) bi=false;
} if (!ai) a[i]=-1; if (!bi) b[i]=-1;
}
a[0]=0; a[t]=0;
A=negacirc(a); B=negacirc(b); H=twocircul(A,B);
// a[0]=0; b[0]=0; A=toeplitz(a,b);
// a=circshift(flip(minp(a))); b=circshift(flip(b));
// B=toeplitz(b,a); H=square(A,B,minp(B),A);
// h=a.concat(b); H=negacirc(h); H=ab2a(H);
m=maxabslsm(H);
if (M>m) { X=x; M=m; if (M==0) R=false; }
}
puts("p="+p+" GF("+GFp+"^"+GFm+")");
puts("lambda="+lambda+" X="+X+" Limit="+M+" Tick="+tick);
puts("lambdau="+lambdau+" lambdaw="+lambdaw);
if (F4) {puts("lambdau2="+lambdau2+" lambdaw2="+lambdaw2);}
text="pha="+pha+"; phu="+phu+"; phw="+phw+"; phw1="+phw1+"; phw2="+phw2+";"
puts(text); // H=ab2a(H); plots(H);
if (M>0) { restart(0); }else{
puts("a=["+a+"]"); puts("b=["+b+"]");
// H=ab2a(H); // N1
plots(H);
// {{I=H'*H}} putm(I); putm(H);
sound("5th.wav");
}
Prove a root

if (tick==0) { R=true;
// CHOOSE: GF(3^3); GF(3^6);
GFp=19; GFm=2; GFr=1; GFp2=GFp*GFp;
// primitive element
if (GFm==2) x=[1,17];
if (GFm==3) x=[2,2,1];
if (GFm==6) x=[0,1,0,0,0,0];
// x=gfrand();
X0=zero(GFm); X1=zero(GFm); X1[0]=1;
N=pow(GFp,GFm); XN=zero(1); XN[0]=equal(x);
restart(0); }else{
puts("GF("+N+");");
puts("SIZE="+tick+" x="+x);
if (R) {
X=gfpow(x,tick); XN[tick]=equal(X);
R=!gfeq(X,X0); if (R) R=!gfeq(X,X1);
puts("X^"+tick+"="+X);
restart(10);
}else{ putm(XN);}}
By two C-matrices:

// GF PROCEDURE FOR N2 HM-MATRICES
if (tick==0) { t=3;
p=2*t-1; p2=p*p; v=t; v1=v-1; p1=p+1;
n=4*t; v28=(3*n-4)/16; v36=(n-4)/16;
gfinit(p,2); M=10000; R=true; U=zero(v1);
}
for (k=0;k<10;k++) if (R) {
getab(); a[0]=0;
a=a.concat(b); a2=ab2a(a);
getab(); a[0]=0;
a=a.concat(b); b2=ab2a(a);
a=a2.concat(b2); a=ab2a(a);
A=negacirc(a2); B=negacirc(b2);
H=twocircul(A,B); // H=ab2a(H);
// A=toeplitz(a2,b2);
// a2=circshift(flip(minp(a2)))
// b2=circshift(flip(b2));
// B=toeplitz(b2,a2); H=square(A,B,minp(B),A);
m=maxabslsm(H);
if (M>m) { X=x; M=m;
if (M==0) R=false; }
}
puts("p="+p+" GF("+p2+")");
puts(tick+" X="+X+" M="+M);
if (M>0) { restart(0) }else{
puts("a=["+a2+"]"); puts("b=["+b2+"]");
{{I=H'*H}} putm(I); putm(H);
plots(H);
}
function getab() {
a=one(v); b=one(v);
// ROOTS
x1=randint(GFp);
x2=randint(GFp); x=[x1,x2];
pha=0; phu=0; phw=2;
alp=gfpow(x,t+pha);
u=gfpow(x,4*t+phu); w=gfpow(x,t-phw);
for (i=0;i<v1;i++) U[i]=gfpow(u,i);
for (i=0;i<v;i++) {
phw1=0; phw2=1;
W1=gfpow(w,2*i+phw1); aw1=gfmul(alp,W1);
W2=gfpow(w,2*i+phw2); aw2=gfmul(alp,W2);
trace1=gfadd(aw1,gfpow(aw1,p));
trace2=gfadd(aw2,gfpow(aw2,p));
ai=true; bi=true;
for (j=0;j<v1;j++) {
if (ai) if (gfeq(trace1,U[j])) ai=false;
if (bi) if (gfeq(trace2,U[j])) bi=false;
} if (!ai) a[i]=-1; if (!bi) b[i]=-1;
}}
function gfroots(t) { var x;
if (t==1) x=[2,2]; // X^2+2X+2
if (t==2) x=[-1%F[0],-2%F[0]]; // X^2+2X+5
if (t==3) x=[1%F[0],7%F[0]]; // X^2-2X+50
if (t==5) x=[-1%F[0],-3%F[0]]; // X^2+2X+10
return x;
}
By shift

// GALOIS FIELDS PROCEDURE: 2N
if (tick==0) { n=36;
Flgalp=true; Flg1N=n%4!=0; Flg1N=true;
Fphase=true; Maxphase=2; FlgP2=true;
FlgTyp=true; M=10000; R=true; tuning();
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }
}
for (k=0;k<1;k++) if (R) {
if (Fphase) setphases(); // ROOTS
x1=gfrand(); x2=equal(x1); getab(x1,p);
// a, b
// a=[0,-1,-1]; b=[-1,0,1]; // 12
// a=[0,-1,-1,1,1]; b=[1,-1,0,-1,1]; // 20
// a=[0,1,-1,1,1,-1,1]; // 28
// b=[-1,1,1,0,-1,-1,1];
// a=[0,-1,-1,1,1,-1,-1,1,1]; // 36
// b=[-1,-1,-1,1,0,1,-1,-1,-1];
// c, d
// c=[1,1,-1]; d=[-1,1,-1]; // 12
c=[-1,1,1,-1,-1]; d=[1,1,1,1,1]; // 20
// c=[1,1,1,1,-1,-1,-1]; // 28
// d=[1,-1,1,1,1,-1,1];
// c=[-1,1,1,-1,1,-1,1,-1,-1]; // 36
// d=[-1,1,1,1,1,1,1,1,-1];
if (Flg1N) { a[0]=0; // b[0]=0;
b=a2ab(b); d=rowcol(b,v4,v1); c=rowcol(b,0,v41);
a=a2ab(a); b=rowcol(a,v4,v1); a=rowcol(a,0,v41);
puts("a="+a); puts("b="+b);
puts("c="+c); puts("d="+d);
if (F28){
// a=circshiftback(a,3,-1); b=circshiftback(b,3,-1);
c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a2=flip(rowcol(a,1,v41/2));
b2=minp(rowcol(b,v41/2+1,v41));
a=[0].concat(b2).concat(flip(minp(b2)));
b=a2.concat(0).concat(flip(a2));
c2=flip(rowcol(c,1,v41/2));
d2=minp(rowcol(d,v41/2+1,v41));
c=[1].concat(c2).concat(flip(minp(c2)));
d=d2.concat(1).concat(flip(d2));
puts("a2="+a2); puts("b2="+b2);
puts("a="+a); puts("b="+b);
a=a.concat(b); a=ab2a(a);
b=c.concat(d); b=ab2a(b);
// a[0]=0; // a[v4]=0;
}else{
if (F28){
a=circshiftback(a,v28,-1); b=circshiftback(b,v28,-1);
}else{
a=circshift(a,v36,-1); b=circshift(b,v36,-1);
} // a, b
a=a.concat(b); b2=ab2a(a);
x1=gfrand(); getab(x1,p);
a=a.concat(b); a=ab2a(a);
// a[0]=0; // a[v]=0;
b=equal(b2); // b[0]=0; // b[v]=0;
}
// H=nega2cyc(a,b);
A=negacirc(a); B=negacirc(b); H=twocircul(A,B);
// if (Flg1N) {H=twocircul(A,B,-1);}else{H=twocircul(A,B);}
// H=ab2a(H);
m=maxabslsm(H);
if (M>=m) { M=m; if (M==0) R=false; X1=x1; X2=x2; }
}
// INFORMATION
puts("n="+n+" p="+p+" r="+GFr+" Lim="+M+"; tick="+tick);
// puts("x1=["+X1+"]; x2=["+X2+"];");
// RESTART
if (M>0) {
///////////////////////
FlgP2=!FlgP2; tuning();
restart(0)
}else{ // FINISH
text="pha="+pha+"; phu="+phu+"; phw="+phw+";"; puts(text);
puts("x1=["+x1+"];"+" x2=["+x2+"];");
puts("a=["+a+"];"); puts("b=["+b+"];");
// H=williamson(a,b);
// H=nega2cyc(a,b);
{{I=H'*H}} putm(I); putm(H); // H=ab2a(H);
plots(H,"XR"); sound("5th.wav");
}
function tuning() { p=n; law=n/2;
if (Flg1N) { if (FlgP2) { p=2*p; law=2*law;}
}else{ if (FlgP2) { p=p/2; law=round(law/2); }}
lau=4*law; p=p-1; gfinit(p,2); if (p==27) gfinit(3,6);
v=n/4; if (Flg1N) v=n/2; v1=v-1; v2=2*v; v12=v1/2;
setphases(); v4=n/4; v41=v4-1;
}
function setphases() {
pha=0; phu=0; phw=1; if ((p+1)%4!=0) phw=2;
if (!Fphase) phw=randint(Maxphase);
pwu=lau+phu; pww=law-phw; pwa=law+pha;
}
function getab(x,p) {
var i,i2,u,w,U,W,W1,W2;
a=one(v); b=one(v); i2=0;
u=gfpow(x,pwu); U=gfexp(u,v1);
w=gfpow(x,pww); W=gfexp(w,v2);
if (Flgalp) { alp=gfpow(x,pwa); W=gfmul(alp,W); }
for (i=0;i<v;i++) {
W1=W[i2]; i2++; W2=W[i2]; i2++;
if (gfeq(gfadd(W1,gfpow(W1,p)),U)) a[i]=-1;
if (gfeq(gfadd(W2,gfpow(W2,p)),U)) b[i]=-1;
}}

VITOLD (NEGA-CYCLIC C-MATRICES) | JANKO (BLOCKS OF BUSH-TYPE HM)

НОВЫЙ АЛГОРИТМ ПОИСКА

// 1-TOEPLITZ WEIGHING MATRICES: n=12, 20, ...
if (tick==0) { n=52; w=1000; W=40;
FPaley=false; // for C-matrices
n1=n-1; v=n/2; v2=v/2; v12=(v-1)/2;
v21=(v2-1)/2; v22=(v-2)/2;
// TO SEARCH W(n,n-2) PUT (1)
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }
v212=floor(v21/2);
// ДЛИНА АДРЕСА ВЕТВИ И ЧИСЛО БЛОКОВ
m=12; if (m>v2) m=v2;
M=pow(2,m); M2=2*M; pw2=one(1); MF=M2-1;
for (i=0;i<m;i++) pw2[i+1]=pow(2,i);
A=matrix(M2,2); Aa=matrix(M2,2);
B=matrix(M2,2); Bb=matrix(M2,2);
K1=zero(M2); K2=zero(M2); F=true;
}
// if (tick%2==0) { K1=zero(M); }else{ K2=zero(M); }
// Генерируем таблицы последовательностей
for (k=0;k<w;k++) if (F) {
getAB(); ma=mulnegacirc(a,1,v2); mb=mulnegacirc(b,1,v2);
N=M; for (i=1;i<=m;i++) if (ma[i]>0) { N+=pw2[i]; }else{
if (ma[i]<0) N-=pw2[i]; } ZIPA(N);
N=M; for (i=1;i<=m;i++) if (mb[i]<0) { N+=pw2[i]; }else{
if (mb[i]>0) N-=pw2[i]; } ZIPB(N);
}
// plot(K1,K2);
puts(n+' tick='+tick);
if (F) { restart(0);
}else{
// RESULT
putm("a=["+d+"];"); H=negacirc(d); plots(H);
// H=a2ab(H); H=a2ab(H);
{{I=H'*H}} putm(I); // putm(H);
// CONVERSION TO P
// P1=a2ds(a); puts("P=[["+P1+"];");
sound("5th.wav");
}
function getAB() {
if (!(F36||F28)) {
if (FPaley) { // FOR C-matrices
a=randseq(v12); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v12); b=b.concat(randseq(1)).concat(flip(b));
a=a.concat(b); a=ab2a(a);
}else{ a=[0].concat(randseq(n1));
// a=randseq(v22); b=randseq(v22);
// a=[0].concat(a).concat(randseq(1)).concat(minp(flip(a)));
// b=b.concat(randseq(1)).concat(flip(b)).concat(randseq(1));
// a=a.concat(b); a=ab2a(a);
}
}else{
b=randseq(v21); a=randseq(v21);
c=randseq(v21); d=randseq(v21);
c=randseq(1).concat(c).concat(flip(minp(c)));
d=d.concat(randseq(1)).concat(flip(d));
if (F28) {
// a=randseq(v212); a=a.concat(0).concat(flip(a));
a=[0].concat(a).concat(flip(a));
b=b.concat(0).concat(flip(minp(b)));
c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
// a=randseq(v212); a=a.concat(flip(a));
a=[0].concat(a).concat(flip(minp(a)));
b=b.concat(0).concat(flip(b));
c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a=a.concat(b); a=ab2a(a); // geta();
b=c.concat(d); b=ab2a(b);
// a=a.concat(b); a=ab2a(a);
}
}
function ZIPA(k) { var kk1=K1[k];
A[k][kk1]=equal(a); Aa[k][kk1]=equal(ma);
if (kk1<W) { kk1++; K1[k]=kk1; }else{
MF=k; prove(kk1,K2[k],k); if (F) K1[k]=0; }
}
function ZIPB(k) { var kk2=K2[k];
B[k][kk2]=equal(b); Bb[k][kk2]=equal(mb);
if (kk2<W) { kk2++; K2[k]=kk2; }else{
MF=k; prove(K1[k],kk2,k); if (F) K2[k]=0; }
}
function prove(kk1,kk2,k) {
var i,j,ii;
for (i=0;i<kk1;i++) if (F) { a=Aa[k][i];
for (j=0;j<kk2;j++) if (F) { S=add(a,Bb[k][j]);
for (ii=1;ii<v2;ii++) if (F) F=S[ii]==0;
if (F) { MF=k; af=equal(A[k][i]); bf=equal(B[k][j]);
d=af.concat(bf); d=ab2a(d); md=mulnegacirc(d,1,v);
F=maxabs(md)==0;
}
F=!F;
}}
}

// 1-TOEPLITZ WEIGHING MATRICES: n=12, 20, ...
if (tick==0) { n=52; w=1000; KM=40;
FPaley=false; // for C-matrices
n1=n-1; v=n/2; v2=v/2; v12=(v-1)/2;
v21=(v2-1)/2; v22=(v-2)/2;
// TO SEARCH W(n,n-2) PUT (1)
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }
v212=floor(v21/2);
// ДЛИНА АДРЕСА ВЕТВИ И ЧИСЛО БЛОКОВ
m=12; if (m>v2) m=v2;
M=pow(2,m); M2=2*M; pw2=one(1); MF=M2-1;
for (i=0;i<m;i++) pw2[i+1]=pow(2,i);
A=matrix(M2,2); Aa=matrix(M2,2);
B=matrix(M2,2); Bb=matrix(M2,2);
K1=zero(M2); K2=zero(M2);
}
if (tick%2==0) { K1=zero(M); }else{ K2=zero(M); }
// Генерируем таблицы последовательностей
for (k=0;k<w;k++) {
getAB(); ma=mulnegacirc(a,1,v2); mb=mulnegacirc(b,1,v2);
N=M; for (i=1;i<=m;i++) if (ma[i]>0) { N+=pw2[i]; }else{
if (ma[i]<0) N-=pw2[i]; } ZIPA(N);
N=M; for (i=1;i<=m;i++) if (mb[i]<0) { N+=pw2[i]; }else{
if (mb[i]>0) N-=pw2[i]; } ZIPB(N);
}
F=true;
// Перебираем пары (a, b) ветвей
for (k=0;k<MF;k++) if (F)
for (i=0;i<K1[k];i++) if (F) { ma=Aa[k][i];
for (j=0;j<K2[k];j++) if (F) { mb=Bb[k][j];
F=maxabs(add(ma,mb))!=0;
if (!F) { // puts(ma); puts(mb);
a=equal(A[k][i]); b=equal(B[k][j]);
d=a.concat(b); d=ab2a(d); md=mulnegacirc(d,1,v);
F=maxabs(md)!=0; if (!F) { H=negacirc(d); // puts(md);
}}
}}
// plot(K1,K2);
puts(n+' tick='+tick);
if (F) { restart(0);
}else{
// RESULT
putm("a=["+d+"];"); // H=a2ab(H); H=a2ab(H);
plots(H);
{{I=H'*H}} putm(I); putm(H);
// CONVERSION TO P
// P1=a2ds(a); puts("P=[["+P1+"];");
sound("5th.wav");
}
function getAB() {
if (!(F36||F28)) {
if (FPaley) { // FOR C-matrices
a=randseq(v12); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v12); b=b.concat(randseq(1)).concat(flip(b));
a=a.concat(b); a=ab2a(a);
}else{ a=[0].concat(randseq(n1));
// a=randseq(v22); b=randseq(v22);
// a=[0].concat(a).concat(randseq(1)).concat(minp(flip(a)));
// b=b.concat(randseq(1)).concat(flip(b)).concat(randseq(1));
// a=a.concat(b); a=ab2a(a);
}
}else{
b=randseq(v21); a=randseq(v21);
c=randseq(v21); d=randseq(v21);
c=randseq(1).concat(c).concat(flip(minp(c)));
d=d.concat(randseq(1)).concat(flip(d));
if (F28) {
// a=randseq(v212); a=a.concat(0).concat(flip(a));
a=[0].concat(a).concat(flip(a));
b=b.concat(0).concat(flip(minp(b)));
c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
// a=randseq(v212); a=a.concat(flip(a));
a=[0].concat(a).concat(flip(minp(a)));
b=b.concat(0).concat(flip(b));
c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a=a.concat(b); a=ab2a(a); // geta();
b=c.concat(d); b=ab2a(b);
// a=a.concat(b); a=ab2a(a);
}
}
function ZIPA(k) { var kk=K1[k];
if (kk<KM) { A[k][kk]=equal(a); Aa[k][kk]=equal(ma);
kk++; K1[k]=kk; }
}
function ZIPB(k) { var kk=K2[k];
if (kk<KM) { B[k][kk]=equal(b); Bb[k][kk]=equal(mb);
kk++; K2[k]=kk; }
}

// 1-TOEPLITZ WEIGHING MATRICES: n=12, 20, ...
if (tick==0) { n=52; w=1000; KM=10;
FPaley=false; // for C-matrices
n1=n-1; v=n/2; v2=v/2; v12=(v-1)/2;
v21=(v2-1)/2; v22=(v-2)/2;
// TO SEARCH W(n,n-2) PUT (1)
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }
v212=floor(v21/2);
// ДЛИНА АДРЕСА ВЕТВИ И ЧИСЛО БЛОКОВ
m=12; if (m>v2) m=v2; M=pow(2,m); pw2=one(1);
for (i=0;i<m;i++) pw2[i+1]=pow(2,i);
A=matrix(M,2); Aa=matrix(M,2);
B=matrix(M,2); Bb=matrix(M,2);
K1=zero(M); K2=zero(M);
}
if (tick%2==0) { K1=zero(M); }else{ K2=zero(M); }
// Генерируем таблицы последовательностей
for (k=0;k<w;k++) {
getAB(); ma=mulnegacirc(a,1,v2); mb=mulnegacirc(b,1,v2);
N=0; for (i=1;i<=m;i++) if (ma[i]>0) N+=pw2[i]; ZIPA(N);
N=0; for (i=1;i<=m;i++) if (mb[i]<0) N+=pw2[i]; ZIPB(N);
}
F=true; MF=M;
// Перебираем пары (a, b) ветвей
for (k=0;k<M;k++) if (F)
for (i=0;i<K1[k];i++) if (F) { ma=Aa[k][i];
for (j=0;j<K2[k];j++) if (F) { mb=Bb[k][j];
F=maxabs(add(ma,mb))!=0;
if (!F) { // puts(ma); puts(mb);
a=equal(A[k][i]); b=equal(B[k][j]);
d=a.concat(b); d=ab2a(d); md=mulnegacirc(d,1,v);
F=maxabs(md)!=0; if (!F) { H=negacirc(d); // puts(md);
}}
}}
// plot(K1,K2);
puts(n+' tick='+tick+' K[*]='+K1[M/2]+'/'+K2[M/2]);
if (F) { restart(0);
}else{
// RESULT
putm("a=["+d+"];"); // H=a2ab(H); H=a2ab(H);
plots(H);
{{I=H'*H}} putm(I); putm(H);
// CONVERSION TO P
// P1=a2ds(a); puts("P=[["+P1+"];");
sound("5th.wav");
}
function getAB() {
if (!(F36||F28)) {
if (FPaley) { // FOR C-matrices
a=randseq(v12); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v12); b=b.concat(randseq(1)).concat(flip(b));
a=a.concat(b); a=ab2a(a);
}else{ a=[0].concat(randseq(n1));
// a=randseq(v22); b=randseq(v22);
// a=[0].concat(a).concat(randseq(1)).concat(minp(flip(a)));
// b=b.concat(randseq(1)).concat(flip(b)).concat(randseq(1));
// a=a.concat(b); a=ab2a(a);
}
}else{
b=randseq(v21); a=randseq(v21);
c=randseq(v21); d=randseq(v21);
c=randseq(1).concat(c).concat(flip(minp(c)));
d=d.concat(randseq(1)).concat(flip(d));
if (F28) {
// a=randseq(v212); a=a.concat(0).concat(flip(a));
a=[0].concat(a).concat(flip(a));
b=b.concat(0).concat(flip(minp(b)));
c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
// a=randseq(v212); a=a.concat(flip(a));
a=[0].concat(a).concat(flip(minp(a)));
b=b.concat(0).concat(flip(b));
c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a=a.concat(b); a=ab2a(a); // geta();
b=c.concat(d); b=ab2a(b);
// a=a.concat(b); a=ab2a(a);
}
}
function ZIPA(k) { var kk=K1[k];
if (kk<KM) { A[k][kk]=equal(a); Aa[k][kk]=equal(ma);
kk++; K1[k]=kk; }
}
function ZIPB(k) { var kk=K2[k];
if (kk<KM) { B[k][kk]=equal(b); Bb[k][kk]=equal(mb);
kk++; K2[k]=kk; }
}

// 1-TOEPLITZ WEIGHING MATRICES: n=12, 20, ...
if (tick==0) { n=36; w=200; KM=10;
FPaley=false; // for C-matrices
n1=n-1; v=n/2; v2=v/2; v12=(v-1)/2;
v21=(v2-1)/2; v22=(v-2)/2;
// TO SEARCH W(n,n-2) PUT (1)
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }
v212=floor(v21/2);
// ДЛИНА АДРЕСА ВЕТВИ И ЧИСЛО БЛОКОВ
m=KM; if (m>v) m=v; M=pow(2,m); pw2=one(1);
for (i=0;i<m;i++) pw2[i+1]=pow(2,i);
A=matrix(M,KM); // Aa=matrix(M,KM);
B=matrix(M,KM); // Bb=matrix(M,KM);
K1=zero(M); K2=zero(M);
}
if (tick%2==0) { K1=zero(M); }else{ K2=zero(M); }
// Генерируем таблицы последовательностей
for (k=0;k<w;k++) {
getAB(); // ma=mulcirc(a,1,z); mb=mulcirc(b,1,z);
N=0; for (i=1;i<=m;i++) if (a[i]>0) N+=pw2[i]; ZIPA(N);
N=0; for (i=1;i<=m;i++) if (b[i]<0) N+=pw2[i]; ZIPB(N);
}
F=true; MF=M;
// Перебираем пары (a, b) ветвей
// K1=sat(K1,20); K2=sat(K2,20);
for (k1=0;k1<M;k1++) if (F)
for (i=0;i<K1[k1];i++) if (F) { a=A[k1][i];
for (k2=0;k2<M;k2++) if (F)
for (j=0;j<K2[k2];j++) if (F) { b=B[k2][j];
// puts(a); puts(b);
d=a.concat(b); d=ab2a(d);
F=maxabs(mulnegacirc(d,1,v))!=0;
}}
// plot(K1,K2);
puts(n+' tick='+tick+' K[*]='+K1[M/2]+'/'+K2[M/2]);
if (F) { restart(0);
}else{
// RESULT
H=negacirc(d); n=rows(H);
// a=tr(rowcol(H,0,0,0,n-1)); // a2=rowcol(H,0,n-1,0,0);
putm("a=["+d+"];"); // putm("a2=["+a2+"];");
// H=a2ab(H); H=a2ab(H);
plots(H);
{{I=H'*H}} putm(I); putm(H);
// CONVERSION TO P
// P1=a2ds(a); puts("P=[["+P1+"];");
sound("5th.wav");
}
function getAB() {
if (!(F36||F28)) {
if (FPaley) { // FOR C-matrices
a=randseq(v12); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v12); b=b.concat(randseq(1)).concat(flip(b));
a=a.concat(b); a=ab2a(a);
}else{ a=[0].concat(randseq(n1));
// a=randseq(v22); b=randseq(v22);
// a=[0].concat(a).concat(randseq(1)).concat(minp(flip(a)));
// b=b.concat(randseq(1)).concat(flip(b)).concat(randseq(1));
// a=a.concat(b); a=ab2a(a);
}
}else{
b=randseq(v21); a=randseq(v21);
c=randseq(v21); d=randseq(v21);
c=randseq(1).concat(c).concat(flip(minp(c)));
d=d.concat(randseq(1)).concat(flip(d));
if (F28) {
// a=randseq(v212); a=a.concat(0).concat(flip(a));
a=[0].concat(a).concat(flip(a));
b=b.concat(0).concat(flip(minp(b)));
c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
// a=randseq(v212); a=a.concat(flip(a));
a=[0].concat(a).concat(flip(minp(a)));
b=b.concat(0).concat(flip(b));
c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a=a.concat(b); a=ab2a(a); // geta();
b=c.concat(d); b=ab2a(b);
// a=a.concat(b); a=ab2a(a);
}
// A=negacirc(a);
// maxx=maxabs(mulnegacirc(a,1,v));
}
function ZIPA(k) { var kk=K1[k];
if (kk<KM) { A[k][kk]=equal(a); // Aa[k][kk]=equal(ma);
kk++; K1[k]=kk; }
}
function ZIPB(k) { var kk=K2[k];
if (kk<KM) { B[k][kk]=equal(b); // Bb[k][kk]=equal(ma);
kk++; K2[k]=kk; }
} С произвольной выборкой

// 1-TOEPLITZ WEIGHING MATRICES: n=12, 20, ...
if (tick==0) { n=36; w=5000; KM=40;
FPaley=false; // for C-matrices
n1=n-1; v=n/2; v2=v/2; v12=(v-1)/2;
v21=(v2-1)/2; v22=(v-2)/2;
// TO SEARCH W(n,n-2) PUT (1)
F28=false; F36=false; v28=(n+4)/16; v36=(n-4)/16;
if (1) if (n%16!=4) { F28=true; }else{ F36=true; }
v212=floor(v21/2);
// ДЛИНА АДРЕСА ВЕТВИ И ЧИСЛО БЛОКОВ
m=12; if (m>v2) m=v2;
M=pow(2,m); M2=2*M; pw2=one(1); MF=M2-1;
for (i=0;i<m;i++) pw2[i+1]=pow(2,i);
A=matrix(M2,2); Aa=matrix(M2,2);
B=matrix(M2,2); Bb=matrix(M2,2);
K1=zero(M2); K2=zero(M2);
}
if (tick%2==0) { K1=zero(M); }else{ K2=zero(M); }
// Генерируем таблицы последовательностей
for (k=0;k<w;k++) {
getAB(); ma=mulnegacirc(a,1,v2); mb=mulnegacirc(b,1,v2);
N=M; for (i=1;i<=m;i++) if (ma[i]>0) { N+=pw2[i]; }else{
if (ma[i]<0) N-=pw2[i]; } ZIPA(N);
N=M; for (i=1;i<=m;i++) if (mb[i]<0) { N+=pw2[i]; }else{
if (mb[i]>0) N-=pw2[i]; } ZIPB(N);
}
F=true;
// Перебираем пары (a, b) ветвей
for (k=0;k<MF;k++) if (F)
for (i=0;i<K1[k];i++) if (F) { ma=Aa[k][i];
for (j=0;j<K2[k];j++) if (F) { mb=Bb[k][j];
F=maxabs(add(ma,mb))!=0;
if (!F) { // puts(ma); puts(mb);
a=equal(A[k][i]); b=equal(B[k][j]);
d=a.concat(b); d=ab2a(d); md=mulnegacirc(d,1,v);
F=maxabs(md)!=0; if (!F) { H=negacirc(d); // puts(md);
}}
}}
// plot(K1,K2);
puts(n+' tick='+tick);
if (F) { restart(0);
}else{
// RESULT
putm("a=["+d+"];"); // H=a2ab(H); H=a2ab(H);
plots(H);
{{I=H'*H}} putm(I); putm(H);
// CONVERSION TO P
// P1=a2ds(a); puts("P=[["+P1+"];");
sound("5th.wav");
}
function getAB() {
if (!(F36||F28)) {
if (FPaley) { // FOR C-matrices
a=randseq(v12); a=[0].concat(a).concat(flip(minp(a)));
b=randseq(v12); b=b.concat(randseq(1)).concat(flip(b));
a=a.concat(b); a=ab2a(a);
}else{ a=[0].concat(randseq(n1));
// a=randseq(v22); b=randseq(v22);
// a=[0].concat(a).concat(randseq(1)).concat(minp(flip(a)));
// b=b.concat(randseq(1)).concat(flip(b)).concat(randseq(1));
// a=a.concat(b); a=ab2a(a);
}
}else{
b=randseq(v21); a=randseq(v21);
c=randseq(v21); d=randseq(v21);
c=randseq(1).concat(c).concat(flip(minp(c)));
d=d.concat(randseq(1)).concat(flip(d));
if (F28) {
// a=randseq(v212); a=a.concat(0).concat(flip(a));
a=[0].concat(a).concat(randseq(v21));
b=b.concat(0).concat(randseq(v21));
c=circshiftback(c,v28,-1); d=circshiftback(d,v28,-1);
}else{
// a=randseq(v212); a=a.concat(flip(a));
a=[0].concat(a).concat(randseq(v21));
b=b.concat(0).concat(randseq(v21));
c=circshift(c,v36,-1); d=circshift(d,v36,-1);
}
a=a.concat(b); a=ab2a(a); // geta();
b=c.concat(d); b=ab2a(b);
// a=a.concat(b); a=ab2a(a);
}
}
function ZIPA(k) { var kk=K1[k];
if (kk<KM) { A[k][kk]=equal(a); Aa[k][kk]=equal(ma);
kk++; K1[k]=kk; }
}
function ZIPB(k) { var kk=K2[k];
if (kk<KM) { B[k][kk]=equal(b); Bb[k][kk]=equal(mb);
kk++; K2[k]=kk; }
}