Для перестановки $$$p_1, p_2, \ldots, p_n$$$ длины $$$n$$$ соответствующая покрасочная последовательность $$$s$$$ может быть получена следующим процессом раскраски:
После того как все ячейки покрашены в черный цвет, обозначим $$$s_i$$$ как счет ячейки $$$i$$$ ($$$1 \le i \le n$$$). Это и будет покрасочной последовательностью $$$s$$$.
Для лучшего понимания условия обратитесь к примечаниям к примеру.
Вам дана неполная покрасочная последовательность $$$s$$$, где некоторые $$$s_i$$$ уже зафиксированы, в то время как другие еще не определены. Подсчитайте, сколько различных перестановок $$$p$$$ могут привести к этой покрасочной последовательности. Поскольку ответ может быть очень большим, выведите его по модулю $$$998\,244\,353$$$.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^3$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Для каждого набора входных данных первая строка содержит целое число $$$n$$$ ($$$2 \leq n \leq 100$$$).
Вторая строка содержит $$$n$$$ целых чисел $$$s_1, s_2, \ldots, s_n$$$ ($$$-1 \leq s_i \leq n-1$$$). Здесь $$$s_i=-1$$$ означает, что $$$s_i$$$ не было определено. А $$$s_i \neq -1$$$ означает, что $$$s_i$$$ уже зафиксировано.
Гарантируется, что сумма $$$n^2$$$ по всем наборам входных данных не превосходит $$$10^4$$$.
Для каждого набора входных данных выведите общее количество различных перестановок $$$p_1, p_2, \ldots, p_n$$$, которые могут привести к данной покрасочной последовательности, по модулю $$$998\,244\,353$$$.
93-1 -1 13-1 -1 -14-1 2 -1 04-1 0 1 -15-1 3 -1 0 -154 4 4 4 451 0 1 2 06-1 1 -1 -1 3 013-1 -1 -1 -1 -1 -1 2 -1 -1 -1 -1 -1 -1
2 6 4 3 8 0 4 10 867303072
В первом наборе входных данных $$$p=[3,1,2]$$$ и $$$p=[3,2,1]$$$ могут привести к покрасочной последовательности $$$s=[-1,-1,1]$$$.
Для $$$p=[3,1,2]$$$ процесс раскраски показан на следующем рисунке.
![]() | ![]() | ![]() | ![]() |
Для $$$p=[3,2,1]$$$ процесс раскраски показан на следующем рисунке.
![]() | ![]() | ![]() | ![]() |