AT_abc321_f [ABC321F] #(subset sum = K) with Add and Erase

Description

[problemUrl]: https://atcoder.jp/contests/abc321/tasks/abc321_f 箱を用意します。最初、箱は空です。 この箱に対して、以下の $ 2 $ 種類の操作を合計 $ Q $ 個、入力で与えられた順に施します。 > \+ $ x $ タイプ $ 1 $ : 箱の中に整数 $ x $ の書かれたボールを $ 1 $ つ追加する。 > \- $ x $ タイプ $ 2 $ : 箱の中にある、整数 $ x $ の書かれたボールを $ 1 $ つ取り除く。 **但し、取り除く前の時点で箱の中に整数 $ x $ が書かれたボールが含まれることが保証されます。** 各操作後の箱に関して、以下の問題を解いてください。 > 箱からボールをいくつか取り出して、ボールに書かれた整数の総和を $ K $ とする方法の総数を $ 998244353 $ で割った余りを求めてください。 > 但し、箱の中に入っている全てのボールは区別可能です。

Input Format

入力は以下の形式で標準入力から与えられる。 但し、 $ \rm{Query} $$ _{i} $ は $ i $ 個目の操作を表す。 > $ Q $ $ K $ $ \rm{Query} $$ _{1} $ $ \rm{Query} $$ _{2} $ $ \vdots $ $ \rm{Query} $$ _{Q} $

Output Format

全体で $ Q $ 行出力せよ。 そのうち $ i $ 行目には、 $ i $ 個目までの操作を終えた時点での答えを出力せよ。

Explanation/Hint

### 制約 - 入力は全て整数 - $ 1\ \le\ Q\ \le\ 5000 $ - $ 1\ \le\ K\ \le\ 5000 $ - タイプ $ 1 $ の操作に関して、 $ 1\ \le\ x\ \le\ 5000 $ - 全ての操作は問題文中の条件を満たす。 ### Sample Explanation 1 この入力には、操作が $ 15 $ 個含まれます。 最後の操作の後、箱の中に入ったボールは $ (5,10,1,3,1,7,4) $ となります。 総和を $ 10 $ にする方法は以下の $ 5 $ 通りです。 - $ 5+1+3+1 $ ( $ 1,3,4,5 $ 番目のボールを取り出す ) - $ 5+1+4 $ ( $ 1,3,7 $ 番目のボールを取り出す ) - $ 5+1+4 $ ( $ 1,5,7 $ 番目のボールを取り出す ) - $ 10 $ ( $ 2 $ 番目のボールを取り出す ) - $ 3+7 $ ( $ 4,6 $ 番目のボールを取り出す )