a = vector(10 000) \\ inverse to A109852 small = vector(#a) \\ small values as (k, A109852(k)) s = 0 unseen = 1 set(n,v) = a[v]=n; small[s++]=[n,v]; while (a[unseen], print (unseen " " a[unseen]); if (unseen++>#a, quit)) { for (x=0, oo, set(2^x, unseen); my (z=s-1); forstep (i=z, 1, -1, forstep (m=ceil(unseen/small[i][2])*small[i][2], #a, small[i][2], if (!a[m], my (k=2^x-small[i][1]); set(2^x+k, m); break; ); ); ); ); } quit