public void dfs(List<List<Integer>> res, List<Integer> nums, List<Integer> temp, int begin, int k) {
        if (temp.size() == k) {
            res.add(new ArrayList<>(temp));
            return;
        }
        for (int i = begin; i < nums.size(); ++i) {
            int val = nums.get(i);
            temp.add(val);
            dfs(res, nums, temp, i + 1, k);
            temp.remove(temp.size() - 1);
        }
    }