N = int(input()) C = 0 ans = [] for X in range(1, 2 * 10 ** 6): Y = 2 * N // X if X * Y == 2 * N: L = (X - Y + 1) // 2 R = (X + Y - 1) // 2 if 0 < L <= R and R > 0: C += 1 ans.append((1, L, R)) for e in range(2, 40): d = {0:0} rev = {0:0} for i in range(1, 10 ** 6 + 1): p = pow(i, e) if p > N: break p = d[i-1] + pow(i, e) d[i] = p rev[p] = i for l in range(1, 10 ** 6 + 1): p = pow(l, e) if p > N: break elif p == N: C += 1 ans.append((e, l, l)) break else: x = N + d[l-1] if x in rev: C += 1 ans.append((e, l, rev[x])) print(C) ans.sort() for a in ans: print(*a)