class Solution { public: void dfs(set<vector<int>>&res,vector<int>&num,vector<bool>&fl,vector<int>&temp) { bool flag=true; for(int i=0;i<num.size();i++) { if(fl[i])continue; fl[i]=true; flag=false; temp.push_back(num[i]); dfs(res,num,fl,temp); temp.pop_back(); fl[i]=false; } if(flag)res.insert(temp); } vector<vector<int> > permuteUnique(vector<int> &num) { sort(num.begin(),num.end()); vector<bool>fl(num.size(),false); vector<int>temp{}; set<vector<int>>res; vector<vector<int>>ans; dfs(res,num,fl,temp); for(auto x:res)ans.push_back(x); return ans; } };