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; }