#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> v;
int arr[33];
int l = 0, r = -1;
void dfs(int n, int k){
// cout << n << ' ' << k << '\n';
if(n == 0){
vector<int> tmp;
for(int i = l; i <= r; i ++) tmp.emplace_back(arr[i]);
v.emplace_back(tmp);
return;
}
else{
for(int i = min(n,k); i >= 1; i --){
arr[++r] = i;
dfs(n-i, min(k, i));
r--;
}
}
}
int main(){
int n;
cin >> n;
dfs(n, n);
cout << v.size() << '\n';
for(auto i : v){
cout << i[0];
for(int j = 1; j < i.size(); j ++){
cout << ',' << i[j];
}
cout << '\n';
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgp2ZWN0b3I8dmVjdG9yPGludD4+IHY7CmludCBhcnJbMzNdOwppbnQgbCA9IDAsIHIgPSAtMTsKCnZvaWQgZGZzKGludCBuLCBpbnQgayl7Ci8vCWNvdXQgPDwgbiA8PCAnICcgPDwgayA8PCAnXG4nOwoJaWYobiA9PSAwKXsKCQl2ZWN0b3I8aW50PiB0bXA7CgkJZm9yKGludCBpID0gbDsgaSA8PSByOyBpICsrKSB0bXAuZW1wbGFjZV9iYWNrKGFycltpXSk7CgkJdi5lbXBsYWNlX2JhY2sodG1wKTsKCQlyZXR1cm47Cgl9CgllbHNlewoJCWZvcihpbnQgaSA9IG1pbihuLGspOyBpID49IDE7IGkgLS0pewoJCQlhcnJbKytyXSA9IGk7CgkJCWRmcyhuLWksIG1pbihrLCBpKSk7CgkJCXItLTsKCQl9Cgl9CgkKfQoKaW50IG1haW4oKXsKCWludCBuOwoJY2luID4+IG47CglkZnMobiwgbik7Cgljb3V0IDw8IHYuc2l6ZSgpIDw8ICdcbic7Cglmb3IoYXV0byBpIDogdil7CgkJY291dCA8PCBpWzBdOwoJCWZvcihpbnQgaiA9IDE7IGogPCBpLnNpemUoKTsgaiArKyl7CgkJCWNvdXQgPDwgJywnIDw8IGlbal07CgkJfQoJCWNvdXQgPDwgJ1xuJzsKCX0KfQ==
7
5
4,1
3,2
3,1,1
2,2,1
2,1,1,1
1,1,1,1,1