public List<List<Integer>> permute(int[] num) {
        length = num.length;
        if(length == 0) return result;
        flag = new boolean[length];      //init flag
        DFS(num);        // dfs deep first research
        return result;                   // return
    }