import itertools import sys target = int(sys.stdin.read()) def presents(n: int, elf: int, max: int = target) -> int: count = 0 k = 1 while k * k < n: if n % k == 0: if n // k <= max: count += elf * k if k <= max: count += elf * (n // k) k += 1 if k * k == n and k <= max: count += elf * k return count answer_1 = next(n for n in itertools.count(1) if presents(n, 10) >= target) print(f"answer 1 is {answer_1}") answer_2 = next(n for n in itertools.count(1) if presents(n, 11, 50) >= target) print(f"answer 2 is {answer_2}")