AT_wtf22_day2_d Cat Jumps
Description
[problemUrl]: https://atcoder.jp/contests/wtf22-day2-open/tasks/wtf22_day2_d
正整数列 $ A_1,A_2,\cdots,A_N $ が与えられます. $ S=N+\sum_{1\ \leq\ i\ \leq\ N}A_i $ と定義します.
猫のすぬけくんは $ S $ 枚のカードを持っています. 各カードには整数が書かれており,それらは $ A_1,A_2,\cdots,A_N,-1,\cdots,-1 $ です. 特に,$ -1 $ のカードは $ \sum_{1\ \leq\ i\ \leq\ N}A_i $ 枚あります.
すぬけくんは今,数直線上の座標 $ 0 $ の位置に立っています. すぬけくんはこれから $ S $ 回,以下の操作を行います.
- 現在すぬけくんがいる座標を $ x $ とする. 持っているカードを $ 1 $ 枚選んで捨てる. 捨てたカードに書いてあった数を $ v $ とするとき,座標 $ x+v $ へとジャンプする. ジャンプ後の座標が $ 0 $ なら,コインを $ 1 $ 枚獲得する.
各 $ k=1,2,\cdots,N $ に対して,すぬけくんがちょうど $ k $ 枚のコインを獲得するようなジャンプの列が何通りあるかを $ 998244353 $ で割ったあまりを求めてください.
数えるのがジャンプの列であることに注意してください. つまり,$ 2 $ つのカードに書いてある数が同じ場合,それらを捨てる操作は同一視します.
Input Format
入力は以下の形式で標準入力から与えられる.
> $ N $ $ A_1 $ $ A_2 $ $ \cdots $ $ A_N $
Output Format
$ N $ 行出力せよ. $ i $ 行目には $ k=i $ に対する答えを出力せよ.
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 5000 $
- $ 1\ \leq\ A_i\ \leq\ 5000 $
- 入力される値はすべて整数.
### Sample Explanation 1
例えば,$ (-1,+1,+1,-1) $ というジャンプの列が考えられます. この場合,すぬけくんの座標は $ 0\ \to\ -1\ \to\ 0\ \to\ 1\ \to\ 0 $ と変化し,$ 2 $ 枚のコインを獲得します. 以下に,すべてのジャンプの列とその結果獲得するコインの枚数を示します. - $ (-1,-1,+1,+1) $: $ 1 $ 枚 - $ (-1,+1,-1,+1) $: $ 2 $ 枚 - $ (-1,+1,+1,-1) $: $ 2 $ 枚 - $ (+1,-1,-1,+1) $: $ 2 $ 枚 - $ (+1,-1,+1,-1) $: $ 2 $ 枚 - $ (+1,+1,-1,-1) $: $ 1 $ 枚