s = 0 unseen = 1 seen(v) = bit test(s, v) see(v) = s = bit or(s, 2^v); while (seen(unseen), unseen++) signature(n) = vecsort(factor(n)[,2]~) a = vector(10 000); u = 1; fetch(n) = { my (vv=vector(n), k=0, s=signature(unseen)); for (v=unseen, #a, if (!seen(v) && signature(v)==s, see(vv[k++] = v); if (k==n, break; ); ); ); vv[1..k]; } { n0 = 0; for (r=1, oo, row = fetch(r); for (k=1, #row, a[row[k]] = n0+k; ); while (a[u], print (u " " a[u]); if (u++>#a, break (2); ); ); n0 += r; ); } quit