F. Сортировка Таноса
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Сортировка Таноса является одной из сортировок, которая работает за линейное от длины массива время.

Алгоритм сортировки следующий:

1) Если массив $$$a = (a_1, \cdots , a_n)$$$ уже отсортирован, то процесс завершается. Массив считается отсортированным, если для каждого $$$i$$$ от $$$2$$$ до $$$n$$$ верно, что $$$a_{i-1} \le a_i$$$.

2) Иначе случайным образом выбираются либо первые $$$\lceil \frac{n}{2} \rceil$$$ элементов массива, либо последние $$$\lfloor \frac{n}{2} \rfloor$$$ элементов. Все они удаляются, и алгоритм переходит к шагу 1.

Например, сортировка массива $$$[10, 4, 5, 6, 8]$$$ может выглядеть следующим образом:

$$$[10, 4, 5, 6, 8]$$$ -> $$$[6, 8]$$$

Или:

$$$[10, 4, 5, 6, 8]$$$ -> $$$[10, 4, 5]$$$ -> $$$[10, 4]$$$ -> $$$[10]$$$

Поскольку при сортировке Таноса много элементов может исчезнуть, для массива $$$a$$$ определим $$$f(a)$$$ как математическое ожидание числа элементов, оставшихся в итоговом массиве.

Вам дан некоторый массив $$$a$$$.

Необходимо обработать следующие запросы:

$$$i, x$$$ – присвоить $$$a_i := x$$$.

После каждого запроса необходимо вывести $$$f(a)$$$ для текущего массива.

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

В первой строке вводятся числа $$$n, q$$$ ($$$1 \le n, q \le 10^6$$$) – длина массива и число запросов соответственно.

Во второй строке содержатся $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n\, (0 \le a_i \le 10^9)$$$ – начальные значения массива $$$a$$$.

Далее в $$$q$$$ строках содержатся пары чисел $$$i, x$$$ ($$$1 \le i \le n, 0 \le x \le 10^9$$$) – параметры очередного запроса.

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

После каждого запроса в отдельной строке выведите $$$f(a)$$$ по модулю $$$998244353$$$.

Пример
Входные данные
5 8
10 4 5 6 8
1 5
5 0
3 3
2 11
4 7
3 12
5 17
4 13
Выходные данные
499122178
1
1
748683266
748683266
2
499122179
5