#include <bits/stdc++.h>
using namespace std;
void getAns(string nums, vector <vector <char>> &ans, vector <char> &row, int ptr){
if (ptr == nums.length()){
ans.push_back(row);
return;
}
row.push_back(nums[ptr]);
getAns(nums, ans, row, ptr+1);
row.pop_back();
getAns(nums, ans, row, ptr+1);
}
vector<vector<char>> subsets(string nums) {
vector <vector <char>> ans;
vector <char> row;
getAns(nums, ans, row, 0);
return ans;
}
int main() {
string nums="abcd";
vector<vector<char>> vv;
vv=subsets(nums);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGdldEFucyhzdHJpbmcgbnVtcywgdmVjdG9yIDx2ZWN0b3IgPGNoYXI+PiAmYW5zLCB2ZWN0b3IgPGNoYXI+ICZyb3csIGludCBwdHIpewogICAgICAgIGlmIChwdHIgPT0gbnVtcy5sZW5ndGgoKSl7CiAgICAgICAgICAgIGFucy5wdXNoX2JhY2socm93KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICByb3cucHVzaF9iYWNrKG51bXNbcHRyXSk7CiAgICAgICAgZ2V0QW5zKG51bXMsIGFucywgcm93LCBwdHIrMSk7CiAgICAgICAgcm93LnBvcF9iYWNrKCk7CiAgICAgICAgZ2V0QW5zKG51bXMsIGFucywgcm93LCBwdHIrMSk7CiAgICB9CnZlY3Rvcjx2ZWN0b3I8Y2hhcj4+IHN1YnNldHMoc3RyaW5nIG51bXMpIHsKICAgICAgICB2ZWN0b3IgPHZlY3RvciA8Y2hhcj4+IGFuczsKICAgICAgICB2ZWN0b3IgPGNoYXI+IHJvdzsKICAgICAgICBnZXRBbnMobnVtcywgYW5zLCByb3csIDApOwogICAgICAgIHJldHVybiBhbnM7CiAgICB9CgppbnQgbWFpbigpIHsKCXN0cmluZyBudW1zPSJhYmNkIjsKCXZlY3Rvcjx2ZWN0b3I8Y2hhcj4+IHZ2OwoJdnY9c3Vic2V0cyhudW1zKTsKCXJldHVybiAwOwp9