비트

N개의 비트를 매 연산마다 정렬한 뒤 K개의 난수 인덱스로 뒤집을 때, 각 시작 상태의 0 개수마다 모두 1이 될 때까지의 기댓값을 구한다.

보통7확률동적 계획법조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

0 또는 1을 저장하는 변수를 비트라고 하자. NN개의 비트를 다음 규칙으로 조작한다. 아래 세 단계를 모두 마치면 조작 한 번이 끝난다.

  1. 0인 비트를 앞에, 1인 비트를 뒤에 두도록 비트를 일렬로 늘어놓는다. 즉 비내림차순으로 정렬한다.
  2. 1 이상 NN 이하의 정수를 KK개 무작위로 뽑는다. 각 정수는 서로 독립으로 뽑고, 1부터 NN까지 각 정수가 뽑힐 확률은 모두 같으며, 같은 정수를 두 번 이상 뽑을 수도 있다.
  3. 뽑은 KK개의 정수를 뽑은 순서대로 처리한다. 정수가 ii이면 ii번째 비트를 토글한다. 즉 0이면 1로, 1이면 0으로 바꾼다.

비트가 0, 1, 0이고 K=3K = 3인 경우를 보자. 먼저 정렬해서 0, 0, 1을 만든다. 뽑은 정수가 순서대로 1, 3, 1이라면 첫 번째 정수 1로 비트가 1, 0, 1이 되고, 두 번째 정수 3으로 1, 0, 0이 되며, 세 번째 정수 1로 0, 0, 0이 된다.

모든 조작이 정렬로 시작하므로 비트가 어떤 순서로 놓였는지는 중요하지 않고 0인 비트의 개수만 중요하다. 조작을 마친 뒤 모든 비트가 1이면 조작을 멈춘다. 0인 비트가 zz개일 때 모든 비트를 1로 만들기까지 필요한 조작 횟수의 기댓값을 구하라.

입력

첫째 줄에 비트의 개수 NN과 한 번의 조작에서 뽑는 정수의 개수 KK가 공백으로 구분되어 주어진다. KK는 홀수이다. (1N1001 \le N \le 100, 1K1091 \le K \le 10^9)

출력

NN개의 줄에 답을 출력한다. zz번째 줄에는 0인 비트가 zz개일 때 모든 비트를 1로 만들기까지 필요한 조작 횟수의 기댓값을 출력한다. 기댓값을 기약분수 a/ba/b로 나타냈을 때, (a×b1)mod(109+7)(a \times b^{-1}) \bmod (10^9 + 7)을 출력한다. b1b^{-1}109+710^9 + 7을 법으로 하는 bb의 곱셈 역원이다. 주어지는 모든 입력에 대해 답이 존재한다.