C. Binary Subsequence Value Sum
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

For a binary string$$$^{\text{∗}}$$$ $$$v$$$, the score of $$$v$$$ is defined as the maximum value of

$$$$$$F\big(v, 1, i\big) \cdot F\big(v, i+1, |v|\big)$$$$$$

over all $$$i$$$ ($$$0 \leq i \leq |v|$$$).

Here, $$$F\big(v, l, r\big) = r - l + 1 - 2 \cdot \operatorname{zero}(v, l, r)$$$, where $$$\operatorname{zero}(v, l, r)$$$ denotes the number of $$$\mathtt{0}$$$s in $$$v_lv_{l+1} \ldots v_r$$$. If $$$l > r$$$, then $$$F\big(v, l, r\big) = 0$$$.

You are given a binary string $$$s$$$ of length $$$n$$$ and a positive integer $$$q$$$.

You will be asked $$$q$$$ queries.

In each query, you are given an integer $$$i$$$ ($$$1 \leq i \leq n$$$). You must flip $$$s_i$$$ from $$$\mathtt{0}$$$ to $$$\mathtt{1}$$$ (or from $$$\mathtt{1}$$$ to $$$\mathtt{0}$$$). Find the sum of the scores over all non-empty subsequences$$$^{\text{†}}$$$ of $$$s$$$ after each modification query.

Since the result may be large, output the answer modulo $$$998\,244\,353$$$.

Note that the modifications are persistent.

$$$^{\text{∗}}$$$A binary string is a string that consists only of the characters $$$\mathtt{0}$$$ and $$$\mathtt{1}$$$.

$$$^{\text{†}}$$$A binary string $$$x$$$ is a subsequence of a binary string $$$y$$$ if $$$x$$$ can be obtained from $$$y$$$ by deleting several (possibly zero or all) characters.

Input

Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 10^4$$$). The description of the test cases follows.

The first line of each test case contains two integers $$$n$$$ and $$$q$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$, $$$1 \leq q \leq 2 \cdot 10^5$$$) — the length of the string $$$s$$$ and the number of modification queries, respectively.

The second line contains the binary string $$$s$$$ of length $$$n$$$, consisting of characters $$$\mathtt{0}$$$ and $$$\mathtt{1}$$$.

The following $$$q$$$ lines each contain an integer $$$i$$$ ($$$1 \leq i \leq n$$$), indicating that $$$s_i$$$ is flipped from $$$\mathtt{0}$$$ to $$$\mathtt{1}$$$ or from $$$\mathtt{1}$$$ to $$$\mathtt{0}$$$.

It is guaranteed that neither the total sum of all values of $$$n$$$ nor the total sum of all values of $$$q$$$ across all test cases exceeds $$$2 \cdot 10^5$$$.

Output

For each test case, output $$$q$$$ lines, each line containing a single integer — the required sum modulo $$$998\,244\,353$$$.

Example
Input
3
3 2
010
1
3
10 3
0101000110
3
5
10
24 1
011001100110000101111000
24
Output
1
5
512
768
1536
23068672
Note

For the first test case, after the first modification, we have $$$s = \texttt{110}$$$. We can compute the sum of scores over all subsequences as follows:

IndicesSubsequenceScore
$$$1$$$1$$$0$$$
$$$2$$$1$$$0$$$
$$$1, 2$$$11$$$1$$$
$$$3$$$0$$$0$$$
$$$1, 3$$$10$$$0$$$
$$$2, 3$$$10$$$0$$$
$$$1, 2, 3$$$110$$$0$$$

Summing up: $$$0+0+1+0+0+0+0 = 1$$$.

After the second modification, we have $$$s = \texttt{111}$$$. We can compute the sum of scores over all subsequences as follows:

IndicesSubsequenceScore
$$$1$$$1$$$0$$$
$$$2$$$1$$$0$$$
$$$1, 2$$$11$$$1$$$
$$$3$$$1$$$0$$$
$$$1, 3$$$11$$$1$$$
$$$2, 3$$$11$$$1$$$
$$$1, 2, 3$$$111$$$2$$$

Summing up: $$$0+0+1+0+1+1+2 = 5$$$.