#include <bits/stdc++.h>
using namespace std;
void func(int idx, vector<int>& v, vector<vector<int>>& ans, vector<int>& temp) {
if (idx == (int)v.size()) {
ans.push_back(temp);
return;
}
// Include current element
temp.push_back(v[idx]);
func(idx + 1, v, ans, temp);
// Backtrack: remove the last element
temp.pop_back();
// Exclude current element
func(idx + 1, v, ans, temp);
}
int main() {
vector<int> v = {3, 1, 2};
vector<int> temp;
vector<vector<int>> ans;
func(0, v, ans, temp);
for (const auto& seq : ans) {
for (int num : seq)
cout << num << " ";
cout << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGZ1bmMoaW50IGlkeCwgdmVjdG9yPGludD4mIHYsIHZlY3Rvcjx2ZWN0b3I8aW50Pj4mIGFucywgdmVjdG9yPGludD4mIHRlbXApIHsKICAgIGlmIChpZHggPT0gKGludCl2LnNpemUoKSkgewogICAgICAgIGFucy5wdXNoX2JhY2sodGVtcCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICAvLyBJbmNsdWRlIGN1cnJlbnQgZWxlbWVudAogICAgdGVtcC5wdXNoX2JhY2sodltpZHhdKTsKICAgIGZ1bmMoaWR4ICsgMSwgdiwgYW5zLCB0ZW1wKTsKCiAgICAvLyBCYWNrdHJhY2s6IHJlbW92ZSB0aGUgbGFzdCBlbGVtZW50CiAgICB0ZW1wLnBvcF9iYWNrKCk7CgogICAgLy8gRXhjbHVkZSBjdXJyZW50IGVsZW1lbnQKICAgIGZ1bmMoaWR4ICsgMSwgdiwgYW5zLCB0ZW1wKTsKfQoKaW50IG1haW4oKSB7CiAgICB2ZWN0b3I8aW50PiB2ID0gezMsIDEsIDJ9OwogICAgdmVjdG9yPGludD4gdGVtcDsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYW5zOwoKICAgIGZ1bmMoMCwgdiwgYW5zLCB0ZW1wKTsKCiAgICBmb3IgKGNvbnN0IGF1dG8mIHNlcSA6IGFucykgewogICAgICAgIGZvciAoaW50IG51bSA6IHNlcSkKICAgICAgICAgICAgY291dCA8PCBudW0gPDwgIiAiOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KfQo=