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