#include <iostream>
#include <vector>
#include <functional>
using namespace std;
int main() {
for (int n = 1; n <= 10; ++n) {
long long p = 1;
int s = 0;
for (int i = 1; i <= n; ++i) {
s += i;
p *= i;
}
vector<int> way;
function<void (int, int, int,int)> rec = [&](int step, int prev, int as, long long ap) {
if (p % ap != 0) return;
if (step == n) {
if (as == s && ap == p) {
for (int num : way) {
cout << num << ' ';
}
cout << endl;
}
return;
}
if (as + prev > s) return;
for (int next = prev; next <= n; ++next) {
way.push_back(next);
rec(step+1, next, as + next, ap * next);
way.pop_back();
}
};
cout << "n = " << n << endl;
rec(0, 1, 0, 1);
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJZm9yIChpbnQgbiA9IDE7IG4gPD0gMTA7ICsrbikgewkKCQlsb25nIGxvbmcgcCA9IDE7CgkJaW50IHMgPSAwOwoJCWZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewoJCQlzICs9IGk7CgkJCXAgKj0gaTsKCQl9CgkJdmVjdG9yPGludD4gd2F5OwoJCWZ1bmN0aW9uPHZvaWQgKGludCwgaW50LCBpbnQsaW50KT4gcmVjID0gWyZdKGludCBzdGVwLCBpbnQgcHJldiwgaW50IGFzLCBsb25nIGxvbmcgYXApIHsKCQkJaWYgKHAgJSBhcCAhPSAwKSByZXR1cm47CgkJCWlmIChzdGVwID09IG4pIHsKCQkJCWlmIChhcyA9PSBzICYmIGFwID09IHApIHsKCQkJCQlmb3IgKGludCBudW0gOiB3YXkpIHsKCQkJCQkJY291dCA8PCBudW0gPDwgJyAnOyAJCgkJCQkJfSAKCQkJCQljb3V0IDw8IGVuZGw7CgkJCQl9CgkJCQlyZXR1cm47IAoJCQl9CgkJCWlmIChhcyArIHByZXYgPiBzKSByZXR1cm47CgkJCWZvciAoaW50IG5leHQgPSBwcmV2OyBuZXh0IDw9IG47ICsrbmV4dCkgewoJCQkJd2F5LnB1c2hfYmFjayhuZXh0KTsKCQkJCXJlYyhzdGVwKzEsIG5leHQsIGFzICsgbmV4dCwgYXAgKiBuZXh0KTsKCQkJCXdheS5wb3BfYmFjaygpOwoJCQl9CgkJfTsKCQljb3V0IDw8ICJuID0gIiA8PCBuIDw8IGVuZGw7CgkJcmVjKDAsIDEsIDAsIDEpOwoJCWNvdXQgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9