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