public List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        List<Integer> nums = new ArrayList<Integer>();
        for (int i = 1; i <= n; ++i) {
            nums.add(i);
        }
        List<Integer> temp = new ArrayList<Integer>();
        dfs(res, nums, temp, 0, k);
        return res;
    }