#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+YW5zLHZlY3RvcjxpbnQ+dGVtcCxpbnQgaWR4LCBpbnQmIHN1bSwgaW50IGspewoJaWYoaWR4Pj0oaW50KXYuc2l6ZSgpIHx8IHN1bT09ayl7CgkJaWYoc3VtPT1rKSBhbnMucHVzaF9iYWNrKHRlbXApOwoJCXJldHVybjsKCX0KCXN1bT1zdW0rdltpZHhdO3RlbXAucHVzaF9iYWNrKHZbaWR4XSk7CglmKHYsYW5zLHRlbXAsaWR4KzEsc3VtLGspOwoJc3VtPXN1bS12W2lkeF07Cgl0ZW1wLnBvcF9iYWNrKCk7CglmKHYsYW5zLHRlbXAsaWR4KzEsc3VtLGspOwp9CgppbnQgbWFpbigpIHsKCXZlY3RvcjxpbnQ+IHYgPSB7MywgMSwgMn07CiAgICB2ZWN0b3I8aW50PiB0ZW1wOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBhbnM7CglpbnQgc3VtPTA7CiAgICBmKHYsYW5zLHRlbXAsMCxzdW0sMyk7CiAKICAgIGZvciAoY29uc3QgYXV0byYgc2VxIDogYW5zKSB7CiAgICAgICAgZm9yIChpbnQgbnVtIDogc2VxKQogICAgICAgICAgICBjb3V0IDw8IG51bSA8PCAiICI7CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQp9