#include
using namespace std;
// Question Link : https://leetcode.com/problems/subsets-ii/
class Solution
{
public:
void solve(int index, vector &curr, vector &nums,
vector &ans)
{
ans.push_back(curr);
for (int i = index; i < nums.size(); i++)
{
if (i > index && nums[i] == nums[i - 1])
{
continue;
}
curr.push_back(nums[i]);
solve(i + 1, curr, nums, ans);
curr.pop_back();
}
}
vector subsetsWithDup(vector &nums)
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
sort(nums.begin(), nums.end());
vector ans;
vector curr;
solve(0, curr, nums, ans);
return ans;
}
};