AT_agc050_d [AGC050D] Shopping
Description
[problemUrl]: https://atcoder.jp/contests/agc050/tasks/agc050_d
$ 1 $ から $ N $ までの番号が振られた $ N $ 人の人と、$ 1 $ から $ K $ までの番号が振られた $ K $ 個の商品があります。 これから、ターン制のゲームが行われます。 ターンは、番号 $ 1 $ の人、番号 $ 2 $ の人、番号 $ 3 $ の人、$ \ldots $、番号 $ N $ の人、番号 $ 1 $ の人 、$ \ldots $、番号 $ N $ の人、番号 $ 1 $ の人、$ \ldots $、の順に回り、全ての商品が誰かに獲得されるまで続きます。
各ターンには、以下が行われます。
- 自分のターンが来た人がすでに商品を獲得済みの場合、何も行われない。
- そうでない場合、その人は、まだ自分が選んでいない商品から $ 1 $ つを等確率でランダムに選び、審判であるすぬけ君に秘密裏に伝える。 その商品がすでに他の誰かに獲得されていたなら、何も起こらない。そうでないなら、その商品はその人が獲得する。
各 $ i $ について、番号 $ i $ の人がいずれかの商品を獲得する確率を $ \bmod\ 998,244,353 $ で計算してください (注記参照)。
Input Format
入力は標準入力から以下の形式で与えられる。
> $ N $ $ K $
Output Format
$ N $ 行出力せよ。 $ i $ 行目には、番号 $ i $ の人がいずれかの商品を獲得する確率を $ \bmod\ 998,244,353 $ で出力すること。
Explanation/Hint
### 注記
- 商品をランダムに選ぶ行為は全て独立に行われます。
- ゲームが有限のターン数で終了することは証明可能です。
- 参加者が商品を選ぶ場面で、まだその人が選んでいない商品が必ず $ 1 $ つ以上存在することも証明可能です。
- 求めるべき確率が有理数であることも証明可能です。確率を出力する際は、まずその確率を分数 $ \frac{y}{x} $ として表してください。ここで、$ x,\ y $ は整数であり、$ x $ は $ P\ =\ 998,244,353 $ で割り切れてはなりません (この問題の制約の下で、そのような表現は必ず可能です)。そして、$ xz\ \equiv\ y\ \pmod{P} $ なる $ 0 $ 以上 $ P\ -\ 1 $ 以下の唯一の整数 $ z $ を出力してください。
### 制約
- $ 1\ \leq\ K\ \leq\ N\ \leq\ 40 $
- 入力中の全ての値は整数である。
### Sample Explanation 1
\- まず、番号 $ 1 $ の人が商品を $ 1 $ 個選んで獲得します。ここで商品 $ p $ が選ばれたとします。 - そして、$ 1/2 $ の確率で、番号 $ 2 $ の人がもう一方の商品を選んで獲得し、ゲームが終了します。 - $ 1/2 $ の確率で、番号 $ 2 $ の人も商品 $ p $ を選んでしまって獲得できず、番号 $ 3 $ の人のターンとなります。 - $ 1/4 $ の確率で、番号 $ 3 $ の人がもう一方の商品を選んで獲得し、ゲームが終了します。 - $ 1/4 $ の確率で、番号 $ 3 $ の人も商品 $ p $ を選んでしまいます。その次は番号 $ 1 $ の人のターンですが、商品を獲得済みのため何もしません。その次は番号 $ 2 $ の人のターンであり、商品 $ p $ は前回選んだため今回は必ずもう一方の商品を選んで獲得し、ゲームが終了します。 以上より、番号 $ 1,\ 2,\ 3 $ の人がいずれかの商品を獲得する確率はそれぞれ $ 1,\ \frac{3}{4},\ \frac{1}{4} $ です。
### Sample Explanation 2
商品獲得確率はそれぞれ $ 1,\ \frac{47}{54},\ \frac{77}{108},\ \frac{5}{12} $ です。