s = 0 unseen = 1 seen(v) = bittest(s, v) see(v) = s = bitor(s, 2^v); while (seen(unseen), unseen++) base = 10; other(p) = { see(p); my (v = oo); while (p, forstep (w = p, oo, base^#digits(p, base), if (!seen(w), v = min(v, w); break; ); ); p \= base; ); return (v); } { a = vector(10 000); u = 1; for (n=1, oo, v = if (n==1, 1, other(v)); if (v <= #a, a[v] = n; while (a[u], print (u " " a[u]); if (u++ > #a, break (2); ); ); ); ); } quit