N = int(input()) ans = [] for L in range(1,10**6+1): if L**3>N:break low = L high = 10**6+1 while high>low+1: mid = (low+high)//2 if mid*mid*(mid+1)*(mid+1)>4*N+L*L*(L-1)*(L-1): high = mid else: low = mid if low*low*(low+1)*(low+1)==4*N+L*L*(L-1)*(L-1): ans.append((L,low)) print(len(ans)) for L,R in ans: print(L,R)