#include using namespace std; using T = array; int main(){ int n; cin >> n; int n1 = n / 3; set s; for(int i = 1;i * i <= n;i++){ if(n % i == 0) s.insert(T{0,i,n / i}); } for(int i = 1;i * i <= n1;i++){ for(int j = i;i * j <= n1;j++){ int an = n - i * j; if(an % (i + j) == 0 and j <= an / (i + j)) s.insert(T{i,j,an / (i + j)}); } } vector ans; for(T z : s){ T z1 = z; set s1; s1.insert(T{z1[0],z1[1],z1[2]}); s1.insert(T{z1[0],z1[2],z1[1]}); s1.insert(T{z1[1],z1[0],z1[2]}); s1.insert(T{z1[1],z1[2],z1[0]}); s1.insert(T{z1[2],z1[0],z1[1]}); s1.insert(T{z1[2],z1[1],z1[0]}); for(auto z2 : s1) ans.push_back(z2); } cout << ans.size() << endl; for(T z3 : ans){ cout << z3[0] << ' ' << z3[1] << ' ' << z3[2] << endl; } }