a(n, base = 3) = { my (r=[], nz=[]); while (n, if (n%base==0, r = concat(0, r); n\=base, my (s=0, p=1); while (n%base, s += p*(n%base); p *= base; n \= base; ); r = concat(s, r); nz = concat(s, nz); ); ); my (j=0, v=0, p=1); forstep (i=#r, 1, -1, if (r[i], v += p*nz[j++]; p *= base^#digits(nz[j], base), p *= base ); ); v } for (n=0, 3^logint(25 000, 3), print (n " " a(n))) quit