Олимпиадный тренинг

Задача . F1. Анти-медианный (простая версия)


Это простая версия задачи. Единственное различие между двумя версиями  — ограничение на \(n\). Вы можете делать взломы, только если все версии задачи решены.

Назовем массив \(a\) нечетной длины \(2m+1\) (при \(m \ge 1\)) плохим, если элемент \(a_{m+1}\) равен медиане этого массива. Другими словами, массив является плохим, если после его сортировки элемент на \(m+1\)-й позиции остается неизменным.

Назовем перестановку \(p\) целых чисел от \(1\) до \(n\) анти-медианной, если каждый ее подмассив нечетной длины \(\ge 3\) не является плохим.

Вам уже даны значения некоторых элементов перестановки. Найдите количество способов задать неизвестные значения, чтобы получить анти-медианную перестановку. Поскольку это число может быть очень большим, найдите его по модулю \(10^9+7\).

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

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

Первая строка каждого набора входных данных содержит одно целое число \(n\) \((2 \le n \le 1000)\)  — длину перестановки.

Вторая строка каждого набора входных данных содержит \(n\) целых \(p_1, p_2, \ldots, p_n\) (\(1 \le p_i \le n\), или \(p_i = -1\))  — элементы перестановки. Если \(p_i \neq -1\), то он задан, иначе он неизвестен. Гарантируется, что если для некоторых \(i \neq j\) имеет место \(p_i \neq -1, p_j \neq -1\), то \(p_i \neq p_j\).

Гарантируется, что сумма \(n^2\) по всем наборам входных данных не превышает \(10^6\).

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

Для каждого наборам входных данных выведите одно целое число  — количество способов установить неизвестные значения для получения анти-медианной перестановки, по модулю \(10^9+7\).

Примечание

В первом наборе входных данных анти-медианными являются как \([1, 2]\), так и \([2, 1]\).

Во втором наборе входных данных перестановки \([1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2]\) являются анти-медианными. Оставшиеся две перестановки, \([1, 2, 3]\), \([3, 2, 1]\), сами по себе являются плохими массивами, так как их медиана, \(2\), находится в их середине.

В третьем наборе входных данных \([1, 2, 3, 4]\) не является анти-медианным, поскольку содержит плохой подмассив \([1, 2, 3]\).

В четвертом наборе входных данных единственный анти-медианный массив, который можно получить, это \([5, 6, 3, 4, 1, 2]\).


Примеры
Входные данныеВыходные данные
1 5
2
-1 -1
3
-1 -1 -1
4
1 2 3 4
6
-1 -1 3 4 -1 -1
8
-1 -1 -1 -1 -1 -1 -1 -1
2
4
0
1
316

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя