public List<List<Integer>> permute_iterate(int[] nums) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        List<Integer> temp = new ArrayList<Integer>(nums[0]);
        res.add(temp);
        for (int i = 1; i < nums.length; ++i) {
            List<List<Integer>> arr = new ArrayList<List<Integer>>();
            for (int j = 0; j <= i; ++j) {
                for (List<Integer> l : res) {
                    List<Integer> list = new ArrayList<>(l);
                    list.add(j, nums[i]);
                    arr.add(list);
                }
            }
            res = arr;
        }
        return res;
    }