base = 10 repeat(d, p) = { my (f=p+1); while (1, my (q=(p+d[1+p])%#d); if (d[1+q]<0, d[1+q] = d[1+p]; p=q, d[1+q]==d[1+p], complete(d, f); break, break ); ); } fill(d, p) = { for (t=p==0, base-1, d[1+p]=t; repeat(d, p); ); } complete(d, f) = { for (p=f, #d-1, if (d[1+p]<0, fill(d, p); return; ); ); print (n++ " " fromdigits(d, base)); if (n==10 000, quit; ); } for (w=0, oo, complete(vector(w, k, -1), 0)) quit