s = 0 unseen = 1 seen(v) = bit test(s, v) see(v) = s = bit or(s, 2^v); while (seen(unseen), unseen++) W = 6 m = vector(W,k,k) inv = vector(10 000) u = 1 { v=1; for (n=1, oo, if (v<=#inv, inv[v]=n; while (inv[u], print (u " " inv[u]); if (u++>#inv, break (2); ); ); ); see(v); w = W/gcd(v,W); while (seen(m[w]), m[w]+=w; ); v=m[w]; ); } quit