CPP using recursion
\nclass Solution {\npublic:\n    vector<vector<int>>m;\n    set<vector<int>>s;\n    void solve(vector<int>nums,vector<int>v)\n    {\n        if(nums.size()==0)\
```\nclass Solution {\npublic:\n    vector<vector<int>>m;\n    set<vector<int>>s;\n    void solve(vector<int>nums,vector<int>v)\n    {\n        if(nums.size()==0)\n        {\n            \n            if(s.find(v)==s.end())\n            {\n            \n                s.insert(v);\n                m.push_back(v);\n                \n            }\n            return ;\n        }\n        vector<int>v1=v,v2=v;\n        v1.push_back(nums[0]);\n        nums.erase(nums.begin()+0);\n        solve(nums,v1);\n        solve(nums,v2);\n        \n    }\n    vector<vector<int>> subsetsWithDup(vector<int>& nums) {\n        vector<int>op;\n        sort(nums.begin(),nums.end());\n        solve(nums,op);\n        return m;\n        \n    }\n};\n```
['Recursion', 'C', 'C++']