#include <iostream>
using namespace std;
int a[100] = {1}, cnt;
void dfs(int N, int M) {
if (N == 0) {
cnt ++;
for (int i = 1; i < M; i ++) {
cout << a[i] << " ";
}
cout << "\n";
return;
}
for (int i = a[M - 1]; i <= N; i ++) {
a[M] = i;
dfs(N - i, M + 1);
}
}
int main() {
freopen("p1070.in", "r", stdin);
freopen("p1070.out", "w", stdout);
int N;
cin >> N;
dfs(N, 1);
cout << "sum=" << cnt;
fclose(stdin), fclose(stdout);
return 0;
}
( ) |