python3 << "EOF" import itertools C=[] for q in itertools.product(range(4),repeat=6): c=(0,)+q if any((c[i]+2*c[i+1])%5==1 for i in range(1,6)):continue if (2*c[1]+c[3]+c[5]+c[6])%5!=4:continue if (c[2]+2*c[4]+c[6])%4!=1:continue if sum(c[i]==0 for i in range(1,7))%2!=0:continue if c[1]==c[5]:continue if c[3]+c[6]<2:continue C.append(c) C.sort(key=lambda c:(c[6],c[2],c[4],c[1],c[5],c[3])) S=[33,8,57,14] M=[[[1,2,0,1],[0,1,2,1],[2,0,1,1],[1,1,0,2]],[[2,0,1,1],[1,2,1,0],[0,1,2,1],[1,0,1,2]],[[1,1,2,0],[2,1,0,1],[1,0,1,2],[0,2,1,1]],[[0,2,1,1],[1,0,2,1],[2,1,0,1],[1,1,2,0]]] for t,c in enumerate(C,1): A=sum(i*c[i] for i in range(1,7)) B=sum(c[i]>c[i+1] for i in range(1,6)) Ct=sum((c[i]+1)*(c[7-i]+2) for i in range(1,4)) Dt=c[1]*c[4]+2*c[2]*c[5]+3*c[3]*c[6] m=(A+2*B+Ct+Dt+t)%4 r=(c[1]+2*c[2]+c[3]+3*c[4]+c[5]+2*c[6]+t)%3 u=[A+B+t,Ct+2*t,Dt+A+3*t,B+Ct+Dt] T=[] for i in range(4): val=u[i] for j in range(4):val=val+M[m][i][j]*S[j] T.append(val%97) S=T if r==0:S=[(S[i]+(2,0,3,1)[i])%97 for i in range(4)] elif r==1:S=[(S[i]-(1,4,0,2)[i])%97 for i in range(4)] else:S=[S[2],S[0],S[3],S[1]] print("S",S) raw=[(4,3,3,10,1),(6,3,0,17,3),(4,0,2,10,1),(4,4,1,16,2),(4,1,3,18,0),(5,1,2,18,3),(4,2,0,9,0),(1,3,2,4,1),(2,1,0,15,1),(2,1,3,11,2),(6,2,1,13,2),(3,3,1,15,0),(5,1,3,16,2),(3,3,1,11,2),(3,0,1,22,2),(1,0,3,22,2),(1,2,1,12,3),(6,2,1,21,1),(6,4,3,8,3)] Dct={} for r,l,g,x,f in raw:Dct[(r,l)]=(r,l,g,x,f) E=sorted(Dct.values()) w=[((S[0]+2*S[1])%53)-26,((S[1]+S[2]+S[3])%53)-26,((2*S[0]+S[2])%53)-26] tau=[((S[(l+1)%4]+3*l)%31)-15 for l in range(5)] lam=(5*S[0]+7*S[1]+11*S[2]+13*S[3])%1009 A=R=F=0 cc=None for m,(r,l,g,x,f) in enumerate(E,1): if r!=cc:snap=w.copy()