#CF1984F. 重构

重构

F. 重构

  • 时间限制:每个测试点 22
  • 内存限制:每个测试点 256256 兆字节

存在一个隐藏的数组 a1,a2,,ana_1, a_2, \dots, a_n,长度为 nn,其元素是介于 m-mmm 之间的整数(包含端点)。

给定一个长度为 nn 的数组 b1,b2,,bnb_1, b_2, \dots, b_n 以及一个长度为 nn 的字符串 ss,字符串由字符 PS? 组成。

对于每个 ii1in1 \le i \le n),必须满足:

  • si=Ps_i = \text{P},则 bib_i 等于 a1a_1aia_i 的和(前缀和)。
  • si=Ss_i = \text{S},则 bib_i 等于 aia_iana_n 的和(后缀和)。

输出将 ss 中所有 ? 替换为 PS 的方案数,使得存在一个数组 a1,a2,,ana_1, a_2, \dots, a_n,其每个元素的绝对值不超过 mm,且满足由数组 bb 和字符串 ss 所给出的约束。

由于答案可能很大,请对 998244353998244353 取模后输出。

输入

第一行包含一个整数 tt1t1031 \le t \le 10^3)——测试用例的数量。

每个测试用例的第一行包含两个整数 nnmm2n21032 \le n \le 2 \cdot 10^32m1092 \le m \le 10^9)——隐藏数组 a1,a2,,ana_1, a_2, \dots, a_n 的长度以及元素绝对值上限。

每个测试用例的第二行包含一个字符串 ss,长度为 nn,由字符 PS? 组成。

每个测试用例的第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_nbimn|b_i| \le m \cdot n)。

所有测试用例的 nn 之和不超过 51035 \cdot 10^3

输出

对于每个测试用例,输出一个整数 —— 使得存在有效数组 aa 的替换方案数,对 998244353998244353 取模。

示例

输入

6
4 10
PSPP
1 9 8 10
4 1000000000
????
1 1 1 4000000000
8 1000000000
?P?SSP?P
-857095623 -1424391899 -851974476 673437144 471253851 -543483033 364945701 -178537332
4 7
PPSS
4 2 1 3
9 20
?????????
1 2 3 4 5 6 7 8 9
3 1000000000
P??
-145463248 -974068460 -1287458396

输出

1
0
2
1
14
1

在第一个测试用例中,可以验证如下数组满足所有约束,因此答案为 11

  • s1=Ps_1 = \text{P}a=[1,3,4,2]a = [1,3,4,2]b1=1b_1 = 1(前缀和)
  • s2=Ss_2 = \text{S}a=[1,3,4,2]a = [1,3,4,2]b2=3+4+2=9b_2 = 3+4+2 = 9(后缀和)
  • s3=Ps_3 = \text{P}a=[1,3,4,2]a = [1,3,4,2]b3=1+3+4=8b_3 = 1+3+4 = 8
  • s4=Ps_4 = \text{P}a=[1,3,4,2]a = [1,3,4,2]b4=1+3+4+2=10b_4 = 1+3+4+2 = 10

在第二个测试用例中,可以证明不存在数组 aa 满足所有 aim=109|a_i| \le m = 10^9 且满足约束。