condensate(p) = { my (x=Set(p)); if (#p==#x, return (p), my (mx=vector(#x)); for (i=1, #p, my (v=p[i]); mx[setsearch(x,v)]+=v; ); return (mx); ); } b(p) = for (k=0, oo, my (pp=condensate(p)); if (p==pp, return (k), p=pp)) a(n) = { my (v=0); forpart(p=n, v=max(v,b(p))); return (v); } for (n=1, 87, print (n " " a(n))) quit