F1. Небольшая задачка про перестановки (простая версия)
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В простой версии задачи $$$a_i$$$ находятся в диапазоне $$$[0, n]$$$; в сложной версии $$$a_i$$$ находятся в диапазоне $$$[-1, n]$$$ и определение хорошей перестановки немного отличается. Вы можете делать взломы, только если обе версии задачи решены.

Вам дано целое число $$$n$$$ и массив $$$a_1, a_2 \dots, a_n$$$ целых чисел в диапазоне $$$[0, n]$$$.

Перестановка $$$p_1, p_2, \dots, p_n$$$ элементов $$$[1, 2, \dots, n]$$$ называется хорошей, если для каждого $$$i$$$ верно следующее утверждение:

  • количество значений $$$\leq i$$$ в $$$[p_1, p_2, \dots, p_i]$$$ в точности равно $$$a_i$$$.

Посчитайте количество хороших перестановок $$$[1, 2, \dots, n]$$$ по модулю $$$998\,244\,353$$$.

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

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

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

Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i \le n$$$), которые описывают критерии хорошей перестановки.

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

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

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

Пример
Входные данные
5
5
1 2 3 4 5
6
0 2 2 2 4 6
6
0 1 3 4 5 5
6
1 2 3 2 4 6
15
0 0 1 1 1 2 3 4 5 6 7 9 11 13 15
Выходные данные
1
4
0
0
532305727
Примечание

В первом наборе входных данных единственной хорошей перестановкой является $$$[1, 2, 3, 4, 5]$$$.

Во втором наборе входных данных существует $$$4$$$ хороших перестановки: $$$[2, 1, 5, 6, 3, 4]$$$, $$$[2, 1, 5, 6, 4, 3]$$$, $$$[2, 1, 6, 5, 3, 4]$$$, $$$[2, 1, 6, 5, 4, 3]$$$. Например, $$$[2, 1, 5, 6, 3, 4]$$$ — хорошая, потому что:

  • $$$a_1 = 0$$$, и в $$$[p_1] = [2]$$$ есть $$$0$$$ значений $$$\leq 1$$$;
  • $$$a_2 = 2$$$, и есть $$$2$$$ значения $$$\leq 2$$$ в $$$[p_1, p_2] = [2, 1]$$$;
  • $$$a_3 = 2$$$, и есть $$$2$$$ значения $$$\leq 3$$$ в $$$[p_1, p_2, p_3] = [2, 1, 5]$$$;
  • $$$a_4 = 2$$$, и есть $$$2$$$ значения $$$\leq 4$$$ в $$$[p_1, p_2, p_3, p_4] = [2, 1, 5, 6]$$$;
  • $$$a_5 = 4$$$, и есть $$$4$$$ значения $$$\leq 5$$$ в $$$[p_1, p_2, p_3, p_4, p_5] = [2, 1, 5, 6, 3]$$$;
  • $$$a_6 = 6$$$, и есть $$$6$$$ значений $$$\leq 6$$$ в $$$[p_1, p_2, p_3, p_4, p_5, p_6] = [2, 1, 5, 6, 3, 4]$$$.

В третьем наборе входных данных нет хороших перестановок, потому что не существует перестановок с $$$a_6 = 5$$$ значениями $$$\leq 6$$$ в $$$[p_1, p_2, p_3, p_4, p_5, p_6]$$$.