#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #define rep(i,n) for(int i=0;i<(n);i++) #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define sz(x) ((int)(x).size()) #define pb push_back using ll = long long; using namespace std; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> N; set> st; // x<=y<=z for(ll z=1;z<=N;z++){ for(ll y=0;y*z<=N && y<=N;y++){ ll r = N-(y*z); if(r%(y+z)==0 && r/(y+z)<=y){ ll x = r/(y+z); st.insert({x,y,z}); } } } set> ans; for(auto s:st){ ans.insert(vector({s[0],s[1],s[2]})); ans.insert(vector({s[0],s[2],s[1]})); ans.insert(vector({s[1],s[0],s[2]})); ans.insert(vector({s[1],s[2],s[0]})); ans.insert(vector({s[2],s[0],s[1]})); ans.insert(vector({s[2],s[1],s[0]})); } int T = sz(ans); cout << T << '\n'; for(auto a:ans){ cout << a[0] << ' ' << a[1] << ' ' << a[2] << '\n'; } return 0; };