python3 - <<'EOF' import random def det(A): n=len(A) A=[list(r) for r in A] for c in range(n): p=next((r for r in range(c,n) if A[r][c]),None) if p is None:return 0 A[c],A[p]=A[p],A[c] for r in range(c+1,n): if A[r][c]:A[r]=[x^y for x,y in zip(A[r],A[c])] return 1 def inv(A): n=len(A) M=[list(row)+[1 if i==j else 0 for j in range(n)] for i,row in enumerate(A)] for c in range(n): p=next((r for r in range(c,n) if M[r][c]),None) if p is None:return None M[c],M[p]=M[p],M[c] for r in range(n): if r!=c and M[r][c]:M[r]=[x^y for x,y in zip(M[r],M[c])] return [row[n:] for row in M] def build(R2): m=len(R2) v=[sum(row)%2 for row in R2] u=[sum(R2[i][j] for i in range(m))%2 for j in range(m)] p=sum(sum(row) for row in R2)%2 x=1^p R=[[x]+u] [[v[i]]+R2[i] for i in range(m)] return R,u,v,p,x for trial in range(20): R2=[[random.randrange(2) for _ in range(6)] for _ in range(6)] R,u,v,p,x=build(R2) if not det(R2):continue