#include <iostream>
#include <vector>
using namespace std;
vector<int> path;
void OutputRec(int max, int value)
{
if (value == 1) {
for (int i = 0; i < path.size(); i++) cout << path[i] << " ";
if (path.size() == 1) cout << "1";
cout << endl;
return;
}
for (int i = max; i > 1; i--)
{
if (value % i == 0) {
path.push_back(i);
OutputRec(i, value / i);
path.pop_back();
}
}
}
void Output(int value)
{
cout << "Result for " << value << ": " << endl;
path = vector<int>();
OutputRec(value, value);
}
int main() {
Output(4);
Output(16);
Output(36);
Output(256);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvcjxpbnQ+IHBhdGg7Cgp2b2lkIE91dHB1dFJlYyhpbnQgbWF4LCBpbnQgdmFsdWUpCnsKCWlmICh2YWx1ZSA9PSAxKSB7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBwYXRoLnNpemUoKTsgaSsrKSBjb3V0IDw8IHBhdGhbaV0gPDwgIiAiOwoJCWlmIChwYXRoLnNpemUoKSA9PSAxKSBjb3V0IDw8ICIxIjsKCQljb3V0IDw8IGVuZGw7CgkJcmV0dXJuOwoJfQoJCglmb3IgKGludCBpID0gbWF4OyBpID4gMTsgaS0tKQoJewoJCWlmICh2YWx1ZSAlIGkgPT0gMCkgewoJCQlwYXRoLnB1c2hfYmFjayhpKTsKCQkJT3V0cHV0UmVjKGksIHZhbHVlIC8gaSk7CgkJCXBhdGgucG9wX2JhY2soKTsKCQl9Cgl9Cn0KCnZvaWQgT3V0cHV0KGludCB2YWx1ZSkKewoJY291dCA8PCAiUmVzdWx0IGZvciAiIDw8IHZhbHVlIDw8ICI6ICIgPDwgZW5kbDsKCXBhdGggPSB2ZWN0b3I8aW50PigpOwoJT3V0cHV0UmVjKHZhbHVlLCB2YWx1ZSk7Cn0KCmludCBtYWluKCkgewoJT3V0cHV0KDQpOwoJT3V0cHV0KDE2KTsKCU91dHB1dCgzNik7CglPdXRwdXQoMjU2KTsKCQoJcmV0dXJuIDA7Cn0=