$1, 2, 3, \ldots, n$ 을 한 줄로 나열한 것을 순열이라 하고, 순열 $a_1, a_2, a_3, \ldots, a_n$ 에서 $i < j$ 이면서 $a_i > a_j$ 인 쌍 $(a_i, a_j)$ 을 뒤바뀜(inversion) 이라고 한다. 즉, 큰 수가 작은 수보다 앞에 오는 경우를 말한다. 순열의 뒤바뀜 개수는 그 순열이 얼마나 "정렬되지 않았는지"를 나타내며, 정렬 알고리즘의 평균 수행 시간을 분석할 때 유용하게 쓰인다.
${1, 2, \ldots, n}$ 의 순열 중에서 뒤바뀜이 정확히 $k$ 개인 것이 몇 개인지 구하여라.
예를 들어 $n = 3$ 일 때 순열은 모두 $6$ 개이며, 각 순열의 뒤바뀜 개수는 다음과 같다.
| 순열 | 뒤바뀜 개수 |
|---|---|
| 123 | 0 |
| 132 | 1 ($3 > 2$) |
| 213 | 1 ($2 > 1$) |
| 231 | 2 ($2 > 1$, $3 > 1$) |
| 312 | 2 ($3 > 1$, $3 > 2$) |
| 321 | 3 ($3 > 2$, $3 > 1$, $2 > 1$) |
따라서 원소가 $3$ 개인 순열 중 뒤바뀜이 $0$ 개인 것은 $1$ 개, $1$ 개인 것은 $2$ 개, $2$ 개인 것은 $2$ 개, $3$ 개인 것은 $1$ 개이며, $4$ 개 이상인 것은 없다.
입력은 하나 이상의 질의로 이루어지며, 각 질의는 한 줄에 주어진다. 각 줄에는 정수 $n$ ($1 \le n \le 18$) 과 음이 아닌 정수 $k$ ($0 \le k \le 200$) 가 주어진다. 입력의 끝은 $n = k = 0$ 인 줄로 표시되며, 이 줄은 처리하지 않는다.
각 질의마다 ${1, 2, \ldots, n}$ 의 순열 중 뒤바뀜이 정확히 $k$ 개인 것의 개수를 한 줄에 하나씩 출력한다.