#include <iostream>
using namespace std;
void find(int *pd, int n, int m, int s, char *pr, char *pr0)
{
if (n == 0) {
if (s == m) {*pr = 0; cout<<" "<<pr0<<" = "<<s<<endl;}
return;
}
*pr = '+'; find(pd+1, n-1, m, s+*pd, pr+1, pr0);
*pr = '-'; find(pd+1, n-1, m, s-*pd, pr+1, pr0);
}
int main()
{
int d[] = {1, 24, 2, 2, 8, 44, 3, 42, 4, 8, 9, 2, 2, 7, 9, 4, 3, 5, 2, 4, 9, 5, 3, 2, 3, 2, 1, 1}
, m = 209;
// int d[] = {1, 8, 4, 3, 2, 4, 8, 9, 2, 2, 7, 9, 4, 3, 5, 2, 4, 9, 5, 3, 2, 3, 2, 1, 1}
// , m = 99;
//int d[] = {1, 4, -2, 2}
// , m = 5;
const int n = sizeof(d)/sizeof(int);
char r[n];
for(int i=0; i<n; i++) cout<<d[i]; cout<<endl;
find(d+1, n-1, m, d[0], r, r);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKIAp2b2lkIGZpbmQoaW50ICpwZCwgaW50IG4sIGludCBtLCBpbnQgcywgY2hhciAqcHIsIGNoYXIgKnByMCkKewogICAgaWYgKG4gPT0gMCkgewogICAgICAgIGlmIChzID09IG0pIHsqcHIgPSAwOyBjb3V0PDwiICI8PHByMDw8IiA9ICI8PHM8PGVuZGw7fQogICAgICAgIHJldHVybjsKICAgIH0KICAgICpwciA9ICcrJzsgZmluZChwZCsxLCBuLTEsIG0sIHMrKnBkLCBwcisxLCBwcjApOwogICAgKnByID0gJy0nOyBmaW5kKHBkKzEsIG4tMSwgbSwgcy0qcGQsIHByKzEsIHByMCk7Cn0KIAppbnQgbWFpbigpIAp7CiAgICBpbnQgZFtdID0gezEsIDI0LCAyLCAyLCA4LCA0NCwgMywgNDIsIDQsIDgsIDksIDIsIDIsIDcsIDksIDQsIDMsIDUsIDIsIDQsIDksIDUsIDMsIDIsIDMsIDIsIDEsIDF9CiAgICAJCSwgbSA9IDIwOTsKLy8gICAgaW50IGRbXSA9IHsxLCA4LCA0LCAzLCAyLCA0LCA4LCA5LCAyLCAyLCA3LCA5LCA0LCAzLCA1LCAyLCA0LCA5LCA1LCAzLCAyLCAzLCAyLCAxLCAxfQovLyAgICAJCSwgbSA9IDk5OwogICAgLy9pbnQgZFtdID0gezEsIDQsIC0yLCAyfQogICAgLy8JCSwgbSA9IDU7CiAgICBjb25zdCBpbnQgbiA9IHNpemVvZihkKS9zaXplb2YoaW50KTsKICAgIGNoYXIgcltuXTsKIAogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSBjb3V0PDxkW2ldOyBjb3V0PDxlbmRsOwogICAgZmluZChkKzEsIG4tMSwgbSwgZFswXSwgciwgcik7CiAKICAgIHJldHVybiAwOwp9