import
java.io.*;
import
java.util.*;
import
java.util.ArrayList;
class
GFG {
static
ArrayList<ArrayList<Integer> > rec(
int
[] arr,
int
i,
int
k,
int
c,
int
n,
ArrayList<ArrayList<Integer> > ans,
ArrayList<Integer> temp,
int
sum)
{
if
(sum == n && c <= k) {
ans.add(
new
ArrayList<Integer>(temp));
return
ans;
}
if
(i >= arr.length || sum > n || c > k)
return
ans;
temp.add(arr[i]);
ans = rec(arr, i +
1
, k, c +
1
, n, ans, temp,
sum + arr[i]);
int
index = temp.size() -
1
;
temp.remove(index);
ans = rec(arr, i +
1
, k, c, n, ans, temp, sum);
return
ans;
}
static
void
combinationSum(
int
k,
int
n)
{
int
[] arr =
new
int
[
9
];
for
(
int
i =
0
; i <
9
; i++) {
arr[i] =
0
;
}
for
(
int
i =
1
; i <=
9
; i++)
arr[i -
1
] = i;
ArrayList<ArrayList<Integer> > ans
=
new
ArrayList<ArrayList<Integer> >();
ArrayList<Integer> temp
=
new
ArrayList<Integer>();
ans = rec(arr,
0
, k,
0
, n, ans, temp,
0
);
for
(List<Integer> list : ans){
for
(Integer item : list)
System.out.print(item+
" "
);
System.out.print(
"\n"
);
}
}
public
static
void
main(String[] args)
{
int
N =
7
, K =
3
;
combinationSum(K, N);
}
}