def solve(n: int) -> int: balloons = [i for i in range(1, n + 1)] while True: deleted_amount = 0 for x in range(1, n): if len(balloons) <= x * x - deleted_amount - 1 or len(balloons) == 1: break del balloons[x * x - deleted_amount - 1] deleted_amount += 1 if len(balloons) == 1: break return balloons[0] if __name__ == '__main__': for n in range(1, 1150): print(n, "->", solve(n))