N=int(input()) ans=[] def make_divisors(n): lower_divisors , upper_divisors = [], [] i = 1 while i*i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n//i) i += 1 return lower_divisors + upper_divisors[::-1] for x in range(N+1): if x>(N/3)**0.5: break A=make_divisors(N+x**2) for a in A: b=(N+x**2)//a y,z=a-x,b-x if x<=y and y<=z: ans.append((x,y,z)) ans.append((x,z,y)) ans.append((y,x,z)) ans.append((y,z,x)) ans.append((z,x,y)) ans.append((z,y,x)) ans=set(ans) print(len(ans)) for i in ans: print(*i)