public void DFS(int[] num){   //index is  how many numbers do not add the list
        if(list.size() ==  length){
            result.add(new ArrayList<Integer>(list));
            return;
        }
        for(int i=0; i< length ;i++){
            if(flag[i])
                continue;
            list.add(num[i]);
            flag[i] = true;
            DFS(num);
            list.remove(list.size() -1);     // rall back
            flag[i] = false;
        }
    }