class Solution {
private List> res = new ArrayList>();
public List> combine(int n, int k) {
List path = new ArrayList<>();
dfs(1, n, k, path, 0);
return res;
}
public void dfs(int startIndex, int n, int k, List path, int depth) {
if (depth == k) {
List tempPath = new ArrayList<>(path);
res.add(tempPath);
return;
}
for (int i = startIndex; i <= n; i++) {
path.add(i);
dfs(i + 1, n, k, path, depth + 1);
path.remove(path.size() - 1);
}
}
}



