def flip(n): return "".join(reversed(str(n))) def isPalindrome(n): n = str(n) mid = len(n)/2 return n[:mid] == flip(n[mid:]) def main(): max = 0 for i in range(999, 0, -1): for j in range(999, 0, -1): print i, j r = i * j if isPalindrome(r) and r > max: max = r return max print main()