#abc246h. [abc246_h]01? Queries

[abc246_h]01? Queries

问题描述

给定一个长度为 NN 的字符串 SS,由 01? 组成。

还给出了 QQ 个查询 (x1,c1),(x2,c2),,(xQ,cQ)(x_1, c_1), (x_2, c_2), \ldots, (x_Q, c_Q)
对于每个 i=1,2,,Qi = 1, 2, \ldots, Qxix_i 是一个整数,满足 1xiN1 \leq x_i \leq Ncic_i 是字符 01? 中的一个。

按照顺序对于 i=1,2,,Qi = 1, 2, \ldots, Q,对查询 (xi,ci)(x_i, c_i) 进行以下步骤。

  1. 首先,将 SS 起始处的第 xix_i 个字符改为 cic_i
  2. 然后,计算在将 SS 中的每个 ? 替换为 01 后,可以作为 SS 的(不一定连续)子序列获得的非空字符串数量,对 998244353998244353 取模。

约束条件

  • 1N,Q1051 \leq N, Q \leq 10^5
  • NNQQ 是整数。
  • SS 是一个长度为 NN 的字符串,由 01? 组成。
  • 1xiN1 \leq x_i \leq N
  • cic_i 是字符 01? 中的一个。

输入

输入以以下格式从标准输入获得:

NN QQ SS x1x_1 c1c_1 x2x_2 c2c_2 \vdots xQx_Q cQc_Q

输出

打印 QQ 行。对于每个 i=1,2,,Qi = 1, 2, \ldots, Q,第 ii 行应该包含第 ii 个查询 (xi,ci)(x_i, c_i) 的答案(即在陈述中第 2 步的字符串数量对 998244353998244353 取模)。


示例输入 1

3 3
100
2 1
2 ?
3 ?

示例输出 1

5
7
10
  • 第 1 个查询将 SS 改为 110。可以从 S=S = 110 获得五个字符串作为其子序列:011011110。因此,第 1 个查询的答案是 55

  • 第 2 个查询将 SS 改为 1?0。可以从 S=S = 1?0 中的 ? 获得两个字符串:100110。可以从这两个字符串的子序列中获得七个字符串:01001011100110。因此,第 2 个查询的答案是 77

  • 第 3 个查询将 SS 改为 1??。可以从 S=S = 1?? 中的 ? 获得四个字符串:100101110111。可以从这四个字符串的子序列中获得十个字符串:0100011011100101110111。因此,第 3 个查询的答案是 1010


示例输入 2

40 10
011?0??001??10?0??0?0?1?11?1?00?11??0?01
5 0
2 ?
30 ?
7 1
11 1
3 1
25 1
40 0
12 1
18 1

示例输出 2

746884092
532460539
299568633
541985786
217532539
217532539
217532539
573323772
483176957
236273405

请务必对 998244353998244353 进行取模操作。