rem = List([1]) \\ remaining values free = 2 \\ next free value nth(n) = { if (n > #rem, rem = Vec(rem); while (n > #rem, rem = concat(rem, [free..2*free-1]); free *= 2; ); rem = List(rem); ); my (v=rem[n]); listpop(rem, n); return (v); } { my (a = vector(10 000), u = 1, k = 0); for (n=1, oo, for (d=1, n, my (v=nth(d)); k++; if (v<=#a, a[v] = k; while (u<=#a && a[u], print (u " " a[u]); if (u++ > #a, break (3); ); ); ); ); ); } quit