class Solution {
public:
vector> subsetsWithDup(vector& nums) {
int n = (int) nums.size();
vector> subsets;
set> st;
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]);
}
}
sort(subset.begin(), subset.end());
st.insert(subset);
}
for(vector v : st) {
subsets.push_back(v);
}
return subsets;
}
};