rem = List([1]) \\ free values w = 1 \\ chunk length unseen = rem[#rem]+1 \\ values >= unseen are all free nth(n) = { if (n > #rem, rem = List(concat(Vec(rem), [unseen..(unseen+=2*w=max(w,n))-1])); ); my (v=rem[n]); listpop(rem, n); return (v); } { a = vector(64); u = 0; h = 1; for (n=1, oo, v = nth(h); h = hammingweight(v); if (h==1, e = valuation(v,2); if (1+e <= #a, a[1+e] = n; while (a[1+u], print (u " " a[1+u]); if (1+u++>#a, break (2); ); ); ); ); ); } quit