#!/usr/bin/env python3 from itertools import product tab={(1,1):(0,-1),(2,2):(0,-1),(3,3):(0,-1),(1,2):(3,1),(2,1):(3,-1),(2,3):(1,1),(3,2):(1,-1),(3,1):(2,1),(1,3):(2,-1)} def mul(a,b): if a[0]==0: return (b[0],a[1]*b[1]) if b[0]==0: return (a[0],a[1]*b[1]) k,s=tab[(a[0],b[0])] return (k,a[1]*b[1]*s) letters=[((1,1),2,1),((1,-1),-2,-1),((2,1),-1,2),((2,-1),1,-2)] inv=[1,0,3,2] def brute(n): N=S=0 for w in product(range(4),repeat=n): if any(w[(i+1)%n]==inv[w[i]] for i in range(n)): continue q=(0,1) x=y=0 for e in w: qq,a,b=letters[e] q=mul(q,qq);x+=a;y+=b if q==(0,-1) and (x+2*y)%5==0: N+=1 S+=(abs(2*x-y)+abs(x+2*y)+abs(-3*x-y))//2 return N,S for n in (4,6): print(n,brute(n))