자연수 분할 K 출력 (reverse)
자연수 \(N\)을 여러 자연수의 합으로 나타내는 것을 자연수 분할이라고 한다.
이 문제에서는 분할에 사용하는 모든 자연수가 \(K\) 이하여야 한다. 같은 자연수를 여러 번 사용할 수 있으며, 사용하는 자연수의 개수에는 제한이 없다.
덧셈의 순서만 다른 표현은 같은 분할로 취급한다. 따라서 하나의 분할을 이루는 수들은 큰 수부터 작은 수 순서로 나타낸다. 예를 들어 \(5\)를 \(3\) 이하의 자연수로 분할한 \(3+1+1\)은 3 1 1로 나타낸다.
두 자연수 \(N\)과 \(K\)가 주어졌을 때, \(N\)을 \(K\) 이하의 자연수들의 합으로 나타내는 모든 분할을 역사전순으로 출력하여라.
두 분할에서 처음으로 값이 달라지는 수를 비교했을 때, 그 수가 큰 분할을 먼저 출력한다.
입력
첫째 줄에 두 자연수 \(N\)과 \(K\)가 공백으로 구분되어 주어진다.
출력
조건을 만족하는 자연수 분할을 한 줄에 하나씩 역사전순으로 출력한다.
각 줄에는 분할을 이루는 수들을 큰 수부터 작은 수 순서로 공백으로 구분하여 출력한다.
제한
- \(1 \le N \le 30\)
- \(1 \le K \le N\)
예제 입력
5 3
예제 출력
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1
예제 설명
\(5\)를 \(3\) 이하의 자연수로 분할하는 방법은 모두 다섯 가지이다. 각 분할을 큰 수부터 작은 수 순서로 나타낸 뒤 역사전순으로 출력한다.
코멘트