class Solution {
public:
set<vector<int>>s1;
void solve(vector<int>nums, vector<int>vec)
{
if(nums.size()==0)
{
sort(vec.begin(),vec.end());
s1.insert(vec);
return;
}
vector<int>op1=vec;
vector<int>op2=vec;
op2.push_back(nums[0]);
nums.erase(nums.begin()+0);
solve(nums,op1);
solve(nums,op2);
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>>ans;
vector<int>vec;
solve(nums,vec);
for(auto x : s1)
{
ans.push_back(x);
}
return ans;
}
};