: over swap dup rot rot ; : rem over over / * - ; : false 0 ; : true 1 ; : palindrome? mem 0 ! dup begin dup 0 > while dup 10 rem mem @ 10 * + mem swap ! 10 / repeat drop mem @ = ; : ans mem 8 + ; 1 begin dup 999 < while 1 begin dup 999 < while over over * dup palindrome? if dup ans @ > if ans swap ! else drop fi else drop fi 1+ repeat drop 1+ repeat ans @ .