#include <iostream>
#include <vector>
using namespace std;
int m;
vector<int> path;
void dfs(int remain, int start) {
if (remain == 0) {
cout << m << "=";
for (size_t i = 0; i < path.size(); ++i) {
if (i > 0) cout << "+";
cout << path[i] << "*" << path[i];
}
cout << endl;
return;
}
for (int i = start; i * i <= remain; ++i) {
path.push_back(i);
dfs(remain - i * i, i);
path.pop_back();
}
}
int main() {
cin >> m;
dfs(m, 1);
return 0;
}
( ) |