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 = [] for i in range(1, 3 * root(N, 2)): if (N - i * (i - 1) // 2) % i != 0: continue x = (N - i * (i - 1) // 2) // i ans.append((1, x, x + i)) for e in range(2, 41): curr = 0 right = 1 for left in range(1, root(N, e) + 1): while curr + right**e <= N: curr += right**e right += 1 if left == right: break if curr == N: ans.append((e, left, right)) curr -= left**e left += 1 print(len(ans)) for e, l, r in ans: print(e, l, r - 1)