vector> subsets(vector& nums) {
int n = (int) nums.size();
vector> subsets;
for(int bitmask = 0; bitmask < (1 << n); bitmask++) {
vector subset;
for(int bit = 0; bit < n; bit++) {
if(bitmask & (1 << bit)) {
subset.push_back(nums[bit]);
}
}
subsets.push_back(subset);
}
return subsets;
}