#include <bits/stdc++.h>
using namespace std;
void f(vector<int>&v,vector<vector<int>>&ans,vector<int>&temp,int idx, int sum, int k){
if(idx>=(int)v.size() || sum==k){
if(sum==k) ans.push_back(temp);
return;
}
sum=sum+v[idx];temp.push_back(v[idx]);
f(v,ans,temp,idx+1,sum,k);
sum=sum-v[idx];
temp.pop_back();
f(v,ans,temp,idx+1,sum,k);
}
int main() {
vector<int> v = {3, 1, 2};
vector<int> temp;
vector<vector<int>> ans;
int sum=0;
f(v,ans,temp,0,sum,3);
for (const auto& seq : ans) {
for (int num : seq)
cout << num << " ";
cout << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGYodmVjdG9yPGludD4mdix2ZWN0b3I8dmVjdG9yPGludD4+JmFucyx2ZWN0b3I8aW50PiZ0ZW1wLGludCBpZHgsIGludCBzdW0sIGludCBrKXsKCWlmKGlkeD49KGludCl2LnNpemUoKSB8fCBzdW09PWspewoJCWlmKHN1bT09aykgYW5zLnB1c2hfYmFjayh0ZW1wKTsKCQlyZXR1cm47Cgl9CglzdW09c3VtK3ZbaWR4XTt0ZW1wLnB1c2hfYmFjayh2W2lkeF0pOwoJZih2LGFucyx0ZW1wLGlkeCsxLHN1bSxrKTsKCXN1bT1zdW0tdltpZHhdOwoJdGVtcC5wb3BfYmFjaygpOwoJZih2LGFucyx0ZW1wLGlkeCsxLHN1bSxrKTsKfQoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8aW50PiB2ID0gezMsIDEsIDJ9OwogICAgdmVjdG9yPGludD4gdGVtcDsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYW5zOwoJaW50IHN1bT0wOwogICAgZih2LGFucyx0ZW1wLDAsc3VtLDMpOwogCiAgICBmb3IgKGNvbnN0IGF1dG8mIHNlcSA6IGFucykgewogICAgICAgIGZvciAoaW50IG51bSA6IHNlcSkKICAgICAgICAgICAgY291dCA8PCBudW0gPDwgIiAiOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KfQ==