python3 << "EOF" import itertools 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]]] 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])) print("N",len(C)) S=[33,8,57,14] 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]%97,S[0]%97,S[3]%97,S[1]%97] print(t,c[1:],A,B,Ct,Dt,m,r,u,S) print("FINAL",S) EOF