a = vector(10 000) unseen = 1 { for (k=1, oo, my (f=1/max(k,2)); while (1, my (v=floor(f)); if (v > #a, break; ); if (v && a[v]==0, a[v] = k; while (unseen <= #a && a[unseen], print (unseen " " a[unseen]); unseen++; ); ); f *= 2; ); if (unseen > #a, break; ); ); } quit