def is_beautiful(num, memo={}):
# Function to check if a number is beautiful using memoization
if num in memo:
return memo[num]
seen = set()
while num != 1 and num not in seen:
seen.add(num)
num = sum(int(digit)**2 for digit in str(num))
memo[num] = num == 1
return memo[num]
def beautiful_numbers(l, r):
# Function to find beautiful numbers within range [l, r]
beautiful_nums = []
for num in range(l, r+1):
if is_beautiful(num):
beautiful_nums.append(num)
return beautiful_nums
def solve(l, r):
# Function to solve the problem
beautiful_nums = beautiful_numbers(l, r)
if beautiful_nums:
return sum(beautiful_nums)
else:
return 0
print (solve(31,32))
ZGVmIGlzX2JlYXV0aWZ1bChudW0sIG1lbW89e30pOgogICAgIyBGdW5jdGlvbiB0byBjaGVjayBpZiBhIG51bWJlciBpcyBiZWF1dGlmdWwgdXNpbmcgbWVtb2l6YXRpb24KICAgIGlmIG51bSBpbiBtZW1vOgogICAgICAgIHJldHVybiBtZW1vW251bV0KICAgIAogICAgc2VlbiA9IHNldCgpCiAgICB3aGlsZSBudW0gIT0gMSBhbmQgbnVtIG5vdCBpbiBzZWVuOgogICAgICAgIHNlZW4uYWRkKG51bSkKICAgICAgICBudW0gPSBzdW0oaW50KGRpZ2l0KSoqMiBmb3IgZGlnaXQgaW4gc3RyKG51bSkpCiAgICAgICAgCiAgICBtZW1vW251bV0gPSBudW0gPT0gMQogICAgcmV0dXJuIG1lbW9bbnVtXQogCmRlZiBiZWF1dGlmdWxfbnVtYmVycyhsLCByKToKICAgICMgRnVuY3Rpb24gdG8gZmluZCBiZWF1dGlmdWwgbnVtYmVycyB3aXRoaW4gcmFuZ2UgW2wsIHJdCiAgICBiZWF1dGlmdWxfbnVtcyA9IFtdCiAgICBmb3IgbnVtIGluIHJhbmdlKGwsIHIrMSk6CiAgICAgICAgaWYgaXNfYmVhdXRpZnVsKG51bSk6CiAgICAgICAgICAgIGJlYXV0aWZ1bF9udW1zLmFwcGVuZChudW0pCiAgICByZXR1cm4gYmVhdXRpZnVsX251bXMKIApkZWYgc29sdmUobCwgcik6CiAgICAjIEZ1bmN0aW9uIHRvIHNvbHZlIHRoZSBwcm9ibGVtCiAgICBiZWF1dGlmdWxfbnVtcyA9IGJlYXV0aWZ1bF9udW1iZXJzKGwsIHIpCiAgICBpZiBiZWF1dGlmdWxfbnVtczoKICAgICAgICByZXR1cm4gc3VtKGJlYXV0aWZ1bF9udW1zKQogICAgZWxzZToKICAgICAgICByZXR1cm4gMApwcmludCAoc29sdmUoMzEsMzIpKQ==