#include <iostream>
#include <vector>
using namespace std;
bool solve(vector<int> nums) {
if(nums.size() == 0)
return false;
int sum = 0;
for(int i = 0; i < nums.size(); ++i)
sum += nums[i];
if(sum == 0) {
for(int i = 0; i < nums.size(); ++i)
cout << nums[i] << " ";
cout << endl;
return true;
}
int last = nums.back();
nums.pop_back();
for(int i = nums.size() - 1; i >= 0; --i) {
bool b = solve(nums);
if(b)
return true;
int temp = nums[i];
nums[i] = last;
last = temp;
}
return false;
}
int main() {
vector<int> nums = {-2, -3, 15, 14, 7, -10};
if(!solve(nums))
cout << "No solutions." << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBzb2x2ZSh2ZWN0b3I8aW50PiBudW1zKSB7CiAgaWYobnVtcy5zaXplKCkgPT0gMCkKICAgIHJldHVybiBmYWxzZTsKCiAgaW50IHN1bSA9IDA7CiAgZm9yKGludCBpID0gMDsgaSA8IG51bXMuc2l6ZSgpOyArK2kpCiAgICBzdW0gKz0gbnVtc1tpXTsKCiAgaWYoc3VtID09IDApIHsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBudW1zLnNpemUoKTsgKytpKQogICAgICBjb3V0IDw8IG51bXNbaV0gPDwgIiAiOwogICAgY291dCA8PCBlbmRsOwogICAgcmV0dXJuIHRydWU7CiAgfQoKICBpbnQgbGFzdCA9IG51bXMuYmFjaygpOwogIG51bXMucG9wX2JhY2soKTsKCiAgZm9yKGludCBpID0gbnVtcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgYm9vbCBiID0gc29sdmUobnVtcyk7CiAgICBpZihiKQogICAgICByZXR1cm4gdHJ1ZTsKICAgICAgCiAgICBpbnQgdGVtcCA9IG51bXNbaV07CiAgICBudW1zW2ldID0gbGFzdDsKICAgIGxhc3QgPSB0ZW1wOwogIH0KICAKICByZXR1cm4gZmFsc2U7Cn0KCmludCBtYWluKCkgewogIHZlY3RvcjxpbnQ+IG51bXMgPSB7LTIsIC0zLCAxNSwgMTQsIDcsIC0xMH07CiAgaWYoIXNvbHZlKG51bXMpKQogICAgY291dCA8PCAiTm8gc29sdXRpb25zLiIgPDwgZW5kbDsKCiAgcmV0dXJuIDA7Cn0=