p = 2 q = 3 nxt = [] other(o) = { my (vp = valuation(o, p)); if (#nxt < 1+vp, nxt = concat(nxt, 1); ); my (a=q^vp * nxt[1+vp]); nxt[1+vp]++; if (nxt[1+vp]%q==0, nxt[1+vp]++; ); return (a); } v = 1; for (n=1, 100 000, v = other(v); print (n " " v)) quit