# import pypyjit;pypyjit.set_param("max_unroll_recursion=-1") # from bisect import * # from collections import * # from heapq import * from itertools import * # from math import * # from datetime import * # from decimal import* # from string import ascii_lowercase,ascii_uppercase # import numpy as np import sys import os # sys.setrecursionlimit(10**6) INF = 10**18 MOD = 998244353 # MOD = 10**9 + 7 File = open("input.txt", "r") if os.path.exists("input.txt") else sys.stdin def input(): return File.readline()[:-1] # /////////////////////////////////////////////////////////////////////////// N = int(input()) ans = set() for x in range(N + 1): for y in range(x + 1, N + 1): if x * y > N: continue try: z = (N - x * y) / (x + y) except: continue if z.is_integer() and z >= 0: ans.add((x, y, int(z))) for i in list(ans): for j in permutations(i): ans.add(j) print(len(ans)) for i in ans: print(*i)