#!/usr/local/bin/python3 def rk(m,n): m=list(m);r=0 for c in range(n): b=1<>n for i in range(n)] t=6;# U basis v0=0, sum v1..v5=0: e1..e5 plus allones tail U=[[0,1,0,0,0,0],[0,0,1,0,0,0],[0,0,0,1,0,0],[0,1,1,1,1,1]] c=0 for mask in range(1<<15): W=[0]*t;k=0 for i in range(t): for j in range(i+1,t): if (mask>>k)&1:W[i]|=1<>j)&1)*u[j] for i in range(t) for j in range(t))% 2 for u2 in U]) # oops inner u2 not used, build properly below M=[[]*4 for _ in range(4)] for a in range(4): for b in range(4): M[a].append(sum(U[a][i]*((F[i]>>j)&1)*U[b][j] for i in range(t) for j in range(t))% 2) A=[[M[a][b]^(a==b) for b in range(4)] for a in range(4)] if rk(A,4)==4:c+=1 print(c)