N = int(input()) def F(n): x = n * (n + 1) // 2 return x * x ans = [] import math R_max = int((2 * (N**0.25))) * 3 + 5 R_max = max(R_max, 2) R_max = min(R_max, 2_000_000) for R in range(1, R_max + 1): FR = F(R) if FR < N: continue target = FR - N lo, hi = 0, R while lo <= hi: mid = (lo + hi) // 2 val = F(mid) if val == target: L = mid + 1 if L <= R: ans.append((L, R)) break if val < target: lo = mid + 1 else: hi = mid - 1 ans.sort() print(len(ans)) for L, R in ans: print(L, R)