#include <iostream>
#include <vector>
using namespace std;
int recurs=0;
int result=0;
std::string str="";
std::string sign="";
void count2(int k, std::vector<int> d, int total, int temp, bool flag, unsigned short int pos){
std::string mas="+";
std::string menos="-";
if(pos==(d.size())){
total+=temp;
if(total==k){
result++;
std::cout << sign << "=" << k<<std::endl;
str="";
}
recurs++;
return;
}
//Sum sign.
sign=sign.substr(0,sign.size()-recurs*2);
sign.append(mas+=std::to_string(d[pos]));
count2(k,d,total+temp,+d[pos],true,pos+1);
//Rest sign
sign=sign.substr(0,sign.size()-recurs*2);
sign.append(menos+=std::to_string(d[pos]));
count2(k,d,total+temp,-d[pos],false,pos+1);
//Append digit
if(flag==true)
count2(k,d,total,10*temp-d[pos],true,pos+1);
else
count2(k,d,total,+10*temp+d[pos],false,pos+1);
}
int main() {
count2(6,{1,2,3,3,3},0,0,true,0);
// cout << s;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgcmVjdXJzPTA7CmludCByZXN1bHQ9MDsKc3RkOjpzdHJpbmcgc3RyPSIiOwpzdGQ6OnN0cmluZyBzaWduPSIiOwp2b2lkIGNvdW50MihpbnQgaywgc3RkOjp2ZWN0b3I8aW50PiBkLCBpbnQgdG90YWwsIGludCB0ZW1wLCBib29sIGZsYWcsIHVuc2lnbmVkIHNob3J0IGludCBwb3MpewogICAJc3RkOjpzdHJpbmcgbWFzPSIrIjsKICAgCXN0ZDo6c3RyaW5nIG1lbm9zPSItIjsKICAgCWlmKHBvcz09KGQuc2l6ZSgpKSl7CiAgIAkJdG90YWwrPXRlbXA7CiAgIAkJaWYodG90YWw9PWspewogICAJCQlyZXN1bHQrKzsKICAJCQlzdGQ6OmNvdXQgPDwgc2lnbiA8PCAiPSIgPDwgazw8c3RkOjplbmRsOwogICAJCQlzdHI9IiI7CiAgIAkJfQogICAJCXJlY3VycysrOwogICAJCXJldHVybjsKICAgCX0gICAgCiAgICAgICAvL1N1bSBzaWduLgogICAJc2lnbj1zaWduLnN1YnN0cigwLHNpZ24uc2l6ZSgpLXJlY3VycyoyKTsKICAgCXNpZ24uYXBwZW5kKG1hcys9c3RkOjp0b19zdHJpbmcoZFtwb3NdKSk7CiAgIAljb3VudDIoayxkLHRvdGFsK3RlbXAsK2RbcG9zXSx0cnVlLHBvcysxKTsgIAogICAgICAgIC8vUmVzdCBzaWduCiAgIAlzaWduPXNpZ24uc3Vic3RyKDAsc2lnbi5zaXplKCktcmVjdXJzKjIpOwogIAlzaWduLmFwcGVuZChtZW5vcys9c3RkOjp0b19zdHJpbmcoZFtwb3NdKSk7CiAgIAljb3VudDIoayxkLHRvdGFsK3RlbXAsLWRbcG9zXSxmYWxzZSxwb3MrMSk7ICAKICAgIAkvL0FwcGVuZCBkaWdpdAogICAJaWYoZmxhZz09dHJ1ZSkKICAgCQljb3VudDIoayxkLHRvdGFsLDEwKnRlbXAtZFtwb3NdLHRydWUscG9zKzEpOwogICAJZWxzZQogICAJCWNvdW50MihrLGQsdG90YWwsKzEwKnRlbXArZFtwb3NdLGZhbHNlLHBvcysxKTsKICAgfQogCmludCBtYWluKCkgewpjb3VudDIoNix7MSwyLDMsMywzfSwwLDAsdHJ1ZSwwKTsKLy8JY291dCA8PCBzOwoJcmV0dXJuIDA7Cn0=