EduBrick

Совершенные паросочетания

2500 мс · 256 МБ · всё или ничего

Дан двудольный граф: nn работников и nn работ, известно, кто какую работу умеет делать. Посчитайте, сколькими способами можно раздать работы так, чтобы каждый получил ровно одну и умел её делать. Ответ по модулю 109+710^9 + 7.

Это перманент матрицы из нулей и единиц — величина, для которой полиномиального алгоритма не известно. При n≤18n \le 18 считается динамикой по маскам.

Формат ввода

В первой строке nn (1≤n≤181 \le n \le 18). В каждой из следующих nn строк — nn символов: 1, если ii-й работник умеет делать jj-ю работу, и 0 иначе.

Формат вывода

Выведите количество способов по модулю 109+710^9 + 7.

Примеры

ввод
1
1
вывод
1
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.