#arc127e. [arc127_e]Priority Queue

[arc127_e]Priority Queue

問題文

長さ A+BA+B の整数列 (X1,X2,cdots,XA+B)(X_1,X_2,\\cdots,X_{A+B}) が与えられます. XX はちょうど AA 個の 11 とちょうど BB 個の 22 を含みます.

すぬけくんは集合 ss を持っており,最初 ss は空です. 彼は今から,A+BA+B 回の操作を行います. ii 回目の操作は以下のような行動です.

  • Xi=1X_i=1 の時: 1leqvleqA1 \\leq v \\leq A を満たす整数 vv を選び,ss に追加する. ただし,今までの操作で選んだことのある整数は vv として選べない.

  • Xi=2X_i=2 の時: ss の中で最大値となる要素を削除する. なお,この操作の直前に ss が空でないことは入力から保証される.

最終的な ss としてありうる集合は何通りあるでしょうか? 答えを 998244353998244353 で割った余りを求めてください.

制約

  • 1leqAleq50001 \\leq A \\leq 5000
  • 0leqBleqA10 \\leq B \\leq A-1
  • 1leqXileq21 \\leq X_i \\leq 2
  • Xi=1X_i=1 を満たす ii がちょうど AA 個存在する.
  • Xi=2X_i=2 を満たす ii がちょうど BB 個存在する.
  • Xi=2X_i=2 の操作を行う直前で ss は空ではない.
  • 入力される値はすべて整数である.

入力

入力は以下の形式で標準入力から与えられる.

AA BB X1X_1 X2X_2 cdots\\cdots XA+BX_{A+B}

出力

答えを 998244353998244353 で割った余りを出力せよ.


入力例 1

3 1
1 1 2 1

出力例 1

2

最終的な ss としてありうる状態は,s=1,2,1,3s=\\{1,2\\},\\{1,3\\}22 通りです.

例えば,以下のように操作すると,最終的に s=1,3s=\\{1,3\\} となります.

  • i=1i=1: ss22 を追加する.
  • i=2i=2: ss11 を追加する.
  • i=3i=3: ss から 22 を削除する.
  • i=4i=4: ss33 を追加する.

入力例 2

20 6
1 1 1 1 1 2 1 1 1 2 1 2 1 2 1 2 1 1 1 1 2 1 1 1 1 1

出力例 2

5507