#include <vector>
class Solution {
public:
vector<vector<int>> ans;
set<vector<int>> temp;
vector<int>nums;
vector<int> t;
vector<int> used;
void arrange(int index){
if(index==nums.size()){
if(temp.count(t)==0){
ans.push_back(t);
temp.insert(t);
}
return ;
}
for(int i=0;i<nums.size();i++){
if(used[i]==0){
used[i]=1;
t.push_back(nums[i]);
arrange(index+1);
t.pop_back();
used[i]=0;
}
}
}
vector<vector<int> > permuteUnique(vector<int> &num) {
this->nums=num;
sort(nums.begin(),nums.end());
used.resize(8);
arrange(0);
return ans;
}
};