upto(n) = { my(p = 1, r = 0, res = List()); while(p < n, c = numdiv(p); if(c > r, r = c; print1(p", "); listput(res, p) ); p = nxtpalindrome(p); ); Set(res) } nxtpalindrome(n) = {my(d=digits(n)); i=(#d+1)\2; while(i&&d[i]==9, d[i]=0; d[#d+1-i]=0; i-- ); if(i, d[i]++; d[#d+1-i]=d[i] , d=vector(#d+1); d[1]=d[#d]=1 ); sum(i=1, #d, 10^(#d-i)*d[i]) }