C. Суммы и бинарные подпоследовательности
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Для бинарной строки$$$^{\text{∗}}$$$ $$$v$$$ определим счёт $$$v$$$ как максимальное значение

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

по всем $$$i$$$ ($$$0 \leq i \leq |v|$$$).

Здесь $$$F\big(v, l, r\big) = r - l + 1 - 2 \cdot \operatorname{zero}(v, l, r)$$$, где $$$\operatorname{zero}(v, l, r)$$$ обозначает количество $$$\mathtt{0}$$$ в $$$v_lv_{l+1} \ldots v_r$$$. Если $$$l \gt r$$$, то $$$F\big(v, l, r\big) = 0$$$.

Вам дана бинарная строка $$$s$$$ длины $$$n$$$ и целое положительное число $$$q$$$.

Вам будет задано $$$q$$$ запросов.

В каждом запросе вам дано целое число $$$i$$$ ($$$1 \leq i \leq n$$$). Вы должны изменить $$$s_i$$$ с $$$\mathtt{0}$$$ на $$$\mathtt{1}$$$ (или с $$$\mathtt{1}$$$ на $$$\mathtt{0}$$$). Найдите сумму счётов по всем непустым подпоследовательностям$$$^{\text{†}}$$$ $$$s$$$ после каждого запроса на изменение.

Поскольку ответ может быть большим, выведите его по модулю $$$998\,244\,353$$$.

Обратите внимание, что изменения являются постоянными.

$$$^{\text{∗}}$$$Бинарная строка — это строка, состоящая только из символов $$$\mathtt{0}$$$ и $$$\mathtt{1}$$$.

$$$^{\text{†}}$$$Бинарная строка $$$x$$$ является подпоследовательностью бинарной строки $$$y$$$, если $$$x$$$ может быть получена из $$$y$$$ путем удаления нескольких (возможно, нуля или всех) символов.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора содержит два целых числа $$$n$$$ и $$$q$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$, $$$1 \leq q \leq 2 \cdot 10^5$$$) — длина строки $$$s$$$ и количество запросов на изменение соответственно.

Вторая строка содержит бинарную строку $$$s$$$ длины $$$n$$$, состоящую из символов $$$\mathtt{0}$$$ и $$$\mathtt{1}$$$.

Каждая из следующих $$$q$$$ строк содержит целое число $$$i$$$ ($$$1 \leq i \leq n$$$), указывающее, что $$$s_i$$$ изменяется с $$$\mathtt{0}$$$ на $$$\mathtt{1}$$$ или с $$$\mathtt{1}$$$ на $$$\mathtt{0}$$$.

Гарантируется, что сумма $$$n$$$ и сумма $$$q$$$ по всем наборам входных данных не превосходят $$$2 \cdot 10^5$$$.

Выходные данные

Для каждого набора входных данных выведите $$$q$$$ строк, каждая из которых содержит одно целое число — требуемую сумму по модулю $$$998\,244\,353$$$.

Пример
Входные данные
3
3 2
010
1
3
10 3
0101000110
3
5
10
24 1
011001100110000101111000
24
Выходные данные
1
5
512
768
1536
23068672
Примечание

Для первого набора входных данных, после первого изменения имеем $$$s = \texttt{110}$$$. Мы можем вычислить сумму счётов по всем подпоследовательностям следующим образом:

ИндексыПодпоследовательностьСчёт
$$$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$$$

Суммируя: $$$0+0+1+0+0+0+0 = 1$$$.

После второго изменения, имеем $$$s = \texttt{111}$$$. Мы можем вычислить сумму счётов по всем подпоследовательностям следующим образом:

ИндексыПодпоследовательностьСчёт
$$$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$$$

Суммируя: $$$0+0+1+0+1+1+2 = 5$$$.