from collections import defaultdict m=10**6 n=int(input()) r=[0]*(m+1) for i in range(m): r[i+1]+=(i+1)**3 r[i+1]+=r[i] s=defaultdict(int) for i in range(m+1): s[r[i]]=i ans=[] for i in range(m+1): if r[i]+n in s: ans.append((i+1,s[r[i]+n])) print(len(ans)) for l,r in ans: print(l,r)