I. Лестницы
ограничение по времени на тест
10 секунд
ограничение по памяти на тест
1024 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Для перестановки $$$p$$$ чисел от $$$1$$$ до $$$n$$$ мы можем задать лестничный массив $$$a$$$ следующим образом: $$$a_i$$$ равняется длине наибольшего подотрезка перестановки, который содержит позицию $$$i$$$ и состоит из последовательных чисел в отсортированном порядке: $$$[x, x+1, \ldots, y-1, y]$$$ или $$$[y, y-1, \ldots, x+1, x]$$$ для некоторых $$$x \leq y$$$. Например, для перестановки $$$p = [4, 1, 2, 3, 7, 6, 5]$$$ получается лестничный массив $$$a = [1, 3, 3, 3, 3, 3, 3]$$$.

Вам дан массив $$$a$$$. Ваша задача — посчитать количество перестановок, лестничный массив которых равен $$$a$$$. Так как это количество может быть достаточно большим, посчитайте его по модулю $$$998\,244\,353$$$. Обратите внимание, что количество может быть равно нулю.

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

Первая строка содержит одно целое число $$$n$$$ ($$$1 \le n \le 10^5$$$) — длину лестничного массива $$$a$$$.

Вторая строка содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le n$$$).

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

Выведите количество перестановок, лестничный массив которых равен $$$a$$$. Так как это число может быть довольно большим, выведите его по модулю $$$998\,244\,353$$$.

Примеры
Входные данные
6
3 3 3 1 1 1
Выходные данные
6
Входные данные
7
4 4 4 4 3 3 3
Выходные данные
6
Входные данные
1
1
Выходные данные
1
Входные данные
8
2 2 2 2 2 2 1 1
Выходные данные
370
Входные данные
4
3 2 3 1
Выходные данные
0