#include <iostream>
#include <vector>
using namespace std;
int result = 0;
void count2(int k, std::vector<int> d, int total, int temp, bool flag, unsigned short int pos, std::vector<std::string> s){
//std::cout << temp << " ";
if(pos==(d.size())){
total+=temp;
if(total==k){
result++;
for(unsigned short int i=0;i<d.size();i++){
std::cout << s[i] << d[i];
}
std::cout << "=" << k <<"\n";
}
return;
}
s[pos]="+";
count2(k,d,total+temp,+d[pos],true,pos+1,s);
//put a - sign in pos
s[pos]="-";
count2(k,d,total+temp,-d[pos],false,pos+1,s);
if(pos==0) return;
//Append digit
if(flag==true){
s[pos]="";
//std::cout << "<0 " << 10*temp-d[pos] << " ";
count2(k,d,total,(10*temp-d[pos]),true,pos+1,s);
}
else{
s[pos]="";
//std::cout << ">0" << 10*temp+d[pos] << " ";
count2(k,d,total,10*temp+d[pos],false,pos+1,s);
}
}
int main() {
vector<int> a={1,2,3,3,3};
vector<string> s;
s.resize(a.size());
// your code goes here
count2(6,a,0,0,true,0,s);
cout << result;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgcmVzdWx0ID0gMDsKdm9pZCBjb3VudDIoaW50IGssIHN0ZDo6dmVjdG9yPGludD4gZCwgaW50IHRvdGFsLCBpbnQgdGVtcCwgYm9vbCBmbGFnLCB1bnNpZ25lZCBzaG9ydCBpbnQgcG9zLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcyl7CgkvL3N0ZDo6Y291dCA8PCB0ZW1wIDw8ICIgIjsKCWlmKHBvcz09KGQuc2l6ZSgpKSl7CgkJdG90YWwrPXRlbXA7CgkJaWYodG90YWw9PWspewoJCQlyZXN1bHQrKzsKCQkJZm9yKHVuc2lnbmVkIHNob3J0IGludCBpPTA7aTxkLnNpemUoKTtpKyspewoJCQkJc3RkOjpjb3V0IDw8IHNbaV0gPDwgZFtpXTsKCQkJfQoJCQlzdGQ6OmNvdXQgPDwgIj0iIDw8IGsgPDwiXG4iOwoJCX0KCQlyZXR1cm47Cgl9CglzW3Bvc109IisiOwoJY291bnQyKGssZCx0b3RhbCt0ZW1wLCtkW3Bvc10sdHJ1ZSxwb3MrMSxzKTsKCS8vcHV0IGEgLSBzaWduIGluIHBvcwoJc1twb3NdPSItIjsKCWNvdW50MihrLGQsdG90YWwrdGVtcCwtZFtwb3NdLGZhbHNlLHBvcysxLHMpOwoJaWYocG9zPT0wKSByZXR1cm47CgkvL0FwcGVuZCBkaWdpdAoJaWYoZmxhZz09dHJ1ZSl7CgkJc1twb3NdPSIiOwoJCS8vc3RkOjpjb3V0IDw8ICI8MCAiIDw8IDEwKnRlbXAtZFtwb3NdIDw8ICIgIjsKCQljb3VudDIoayxkLHRvdGFsLCgxMCp0ZW1wLWRbcG9zXSksdHJ1ZSxwb3MrMSxzKTsKCX0KCWVsc2V7CgkJc1twb3NdPSIiOwoJCS8vc3RkOjpjb3V0IDw8ICI+MCIgPDwgMTAqdGVtcCtkW3Bvc10gPDwgIiAiOwoJCWNvdW50MihrLGQsdG90YWwsMTAqdGVtcCtkW3Bvc10sZmFsc2UscG9zKzEscyk7Cgl9Cgp9CmludCBtYWluKCkgewoJdmVjdG9yPGludD4gYT17MSwyLDMsMywzfTsKCXZlY3RvcjxzdHJpbmc+IHM7CglzLnJlc2l6ZShhLnNpemUoKSk7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgljb3VudDIoNixhLDAsMCx0cnVlLDAscyk7Cgljb3V0IDw8IHJlc3VsdDsKCXJldHVybiAwOwp9