#include <vector>
class Solution {
// private:
//     vector<vector<int>> Alldata(vector<int>& num){
//         for(int)
//     }

public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型vector 
     * @return int整型vector<vector<>>
     */
    
    vector<vector<int>> res;
    vector<int> path;
    void backtrace(const vector<int>& num,vector<bool> & used){
        if(path.size()==num.size()){
            res.push_back(path);
            return;
        }
        for(int i=0;i<num.size();i++){
            if(!used[i]){
                used[i]=true;
                path.push_back(num[i]);
                backtrace(num, used);
                path.pop_back();
                used[i] = false;
            }
        }
    }
    vector<vector<int> > permute(vector<int>& num) {
        // write code here

        vector<bool> used(num.size(),false);
        backtrace(num, used);
        return res;

    }
};