#include<iostream> #include<vector> #include<algorithm> #include<cassert> #include<tuple> using namespace std; vector<tuple<int,int,int> >xyz; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N;cin>>N; {//y=0 or z=0 for(int a=1;a<=N;a++)if(N%a==0) { xyz.push_back(make_tuple(a,N/a,0)); xyz.push_back(make_tuple(a,0,N/a)); } } for(int y=1;y<=N;y++)for(int z=1;y*z<=N;z++) { int rest=N-y*z; if(rest%(y+z)==0) { xyz.push_back(make_tuple(rest/(y+z),y,z)); } } cout<<xyz.size()<<"\n"; for(auto[x,y,z]:xyz)cout<<x<<" "<<y<<" "<<z<<"\n"; }