big = 1 000 000 s = 0 S = [] unseen = 2 seen(v) = if (v < big, bittest(s, v), setsearch(S, v)) see(v) = if (v < big, s = bitor(s, 2^v), S = setunion(S, [v])); while (seen(unseen), unseen++) { for (n=1, #a = vector(10 000), for (v=unseen, oo, a[n] = v; ok = 1; \\ so far for (e=0, valuation(n,2), if (seen(prod(k=n-2^e+1, n, a[k])), ok = 0; break; ); ); if (ok, for (e=0, valuation(n, 2), see(prod(k=n-2^e+1, n, a[k])); ); print (n " " a[n]); break; ); ); ); } quit