#arc127e. [arc127_e]Priority Queue

[arc127_e]Priority Queue

问题描述

给定一个包含 A+BA+B 个整数的序列:(X1,X2,,XA+B)(X_1,X_2,\cdots,X_{A+B}),其中恰好包含 AA 个 1 和 BB 个 2。

Snuke 有一个初始为空的集合 ss。他将进行 A+BA+B 次操作。第 ii 次操作如下:

  • 如果 Xi=1X_i=1:选择一个整数 vv,满足 1vA1 \leq v \leq A,并将其添加到 ss 中。这里,vv 不得是以前操作中选择的整数。

  • 如果 Xi=2X_i=2:从 ss 中删除最大值的元素。输入保证在此操作之前,ss 不为空。

有多少种可能是 ss 的最终状态?将计数结果对 998244353998244353 取模。

约束条件

  • 1A50001 \leq A \leq 5000
  • 0BA10 \leq B \leq A-1
  • 1Xi21 \leq X_i \leq 2
  • AA 个指标 iiXi=1X_i=1
  • BB 个指标 iiXi=2X_i=2
  • 在带有 Xi=2X_i=2 的操作之前,ss 不为空。
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

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

输出

输出答案对 998244353998244353 取模。


示例输入 1

3 1
1 1 2 1

示例输出 1

2

有两种可能的 ss 的最终状态:s={1,2},{1,3}s=\{1,2\},\{1,3\}

例如,以下操作序列得到 s={1,3}s=\{1,3\}

  • i=1i=1:向 ss 中添加 22
  • i=2i=2:向 ss 中添加 11
  • i=3i=3:从 ss 中删除 22
  • i=4i=4:向 ss 中添加 33

示例输入 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