endsWithSquare(n) = { my (t = Vecrev(digits(n, 3))); for (w=1, #t\2, if (t[1..w]==t[w+1..2*w], return (1); ); ); return (0); } { w = [0]; n = 0; for (r=0, 30, for (k=1, #w, print (n++ " " w[k]); if (n==10 000, break (2); ); ); w = concat(apply(v -> select(t -> !endsWithSquare(t), apply(d -> 3*v+d, if (v, [0..2], [1..2]))), w)) ); } quit