def root(n, m): for i in range(int(n ** (1 / m)) + 5, -1, -1): if i**m <= n: return i return 0 N = int(input()) ans = [] curr = 0 right = 1 for left in range(1, root(N, 3) + 1): while curr + right**3 <= N: curr += right**3 right += 1 if left == right: break if curr == N: ans.append((left, right)) curr -= left**3 left += 1 print(len(ans)) for l, r in ans: print(l, r - 1)