import math N = int(input()) def sqrt(n: int, k = 2): l = k - 1 if not n: return 0 y = 1 << (n.bit_length() + l) // k x = y + 1 while y < x: x = y y = (l * x + n // (x ** l)) // k return x ansl = [] for x in range(0, int(math.sqrt(N/3)) + 3): if 3*x*x > N: break # y も固定 for y in range(x, sqrt(N + x*x) - x + 1): if y == 0: continue # z = (N - xy)/(x + y) sho, amari = divmod(N - x*y, x + y) if amari == 0 and sho >= 0: z = sho if x == y == z: ansl.append((x, y, z)) elif x == y: ansl.append((x, y, z)) ansl.append((x, z, y)) ansl.append((z, x, y)) elif y == z: ansl.append((x, y, z)) ansl.append((y, x, z)) ansl.append((y, z, x)) else: ansl.append((x, y, z)) ansl.append((x, z, y)) ansl.append((y, x, z)) ansl.append((y, z, x)) ansl.append((z, x, y)) ansl.append((z, y, x)) print(len(ansl)) for a in ansl: print(*a)