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

Задача . F. Особые матрицы


Квадратная матрица n × n называется особой, если:

  • она бинарная, то есть в каждой ячейке стоит либо 0, либо 1;
  • количество единиц в каждой строке и каждом столбце равно 2.

Вам заданы n и первые m строк матрицы. Выведите количество особых матриц n × n таких, первые m строк которых совпадают с заданными.

Так как искомое значение может быть очень большим, то выведите остаток от деления значения на заданное число mod.

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

Первая строка входных данных содержит три целых чисел n, m, mod (2 ≤ n ≤ 500, 0 ≤ m ≤ n, 2 ≤ mod ≤ 109). Далее идут m строк по n символов в каждой из них — первые строки искомых особых матриц. В каждой из этих строк ровно два символа '1' и все остальные символы — '0'. В каждом столбце заданной m × n таблицы не более двух единиц.

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

Выведите остаток при делении искомого количества на число mod.

Примечание

Для первого теста искомые матрицы:


011
101
110

011
110
101

Во втором тесте особая матрица уже задана полностью, поэтому ответ 1.


Примеры
Входные данныеВыходные данные
1 3 1 1000
011
2
2 4 4 100500
0110
1010
0101
1001
1

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

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