p = vector(5 000, n, []) \\ parents u = 2 { m = 0; rr = []; \\ previous row for (n=1, #p, r = binomial(n); for (k=2, #r-1, c = r[k]; if (c > #p, break, p[c] = setunion(p[c], Set([rr[k-1], rr[k]])); ); ); rr = r; apply (v -> print (m++ " " v), p[n]); ); } quit