Схеми маршрутизації
Розгляньмо мережу з вершин, позначених числами від до . Кожна вершина може бути відправником, отримувачем або ні тим, ні іншим. Кількість відправників дорівнює кількості отримувачів .
Зв'язки між вершинами в мережі описуються списком спрямованих ребер у вигляді , що означає, що вершина може передавати інформацію вершині . Всі ці ребра задовольняють умову , за винятком ребер, які задовольняють умову . Циклів (ребер виду ) немає.
Схема маршрутизації складається з множини спрямованих шляхів від відправників до отримувачів, таких, що жодні два з цих шляхів не мають спільної кінцевої точки. Тобто шляхи з'єднують різних відправників з різними отримувачами. Шлях від відправника до отримувача може бути описаний як послідовність вершин
така, що спрямовані ребра існують для всіх . Одна вершина може з'явитися більше ніж один раз в одному і тому ж шляху.
Порахуйте кількість різних схем маршрутизації, таких, що кожне спрямоване ребро проходиться рівно один раз. Оскільки відповідь може бути дуже великою, виводьте її за модулем . Гарантується, що існує хоча б одна схема маршрутизації, що задовольняє обмеженням.
Кожен набір вхідних даних містить тестів. Гарантується, що сума всіх тестів не перевищить .
Вхідні дані
Перша рядок містить кількість тестів .
Перша рядок кожного тесту містить цілі числа і . Зазначимо, що не визначається явно у вводі.
Друга рядок кожного тесту містить рядок довжини . -ий символ рядка дорівнює , якщо -а вершина відправник, — якщо -а вершина отримувач, — якщо -а вершина ні те, ні інше. Кількості символів і рівні. Є хоча б один символ .
Кожна з наступних рядків тесту містить бітовий рядок з нулів і одиниць. -ий біт в -ій рядку дорівнює , якщо існує спрямоване ребро від вершини до вершини , і в іншому випадку. Оскільки петель немає, на головній діагоналі всі нулі. Більше того, є рівно одиниць нижче головної діагоналі.
Послідовні тести розділені порожніми рядками для читабельності.
Вихідні дані
Для кожного тесту виведіть кількість схем маршрутизації таких, що кожне ребро проходиться рівно один раз, за модулем . Гарантується, що існує хоча б одна валідна схема маршрутизації.
Приклади
Приклад 1. Для першого тесту ребра мають вигляд:
Існують чотири схеми маршрутизації:
Для другого тесту ребра мають вигляд:
Одна з можливих схем маршрутизації:
У загальному випадку відправники можуть маршрутизуватися деякою перестановкою отримувачів , і відправники можуть маршрутизуватися деякою перестановкою отримувачів даючи відповідь .
Приклад 2. Для першого тесту ребра мають вигляд:
Існують три схеми маршрутизації:
Для другого тесту ребра мають вигляд:
Існує тільки одна схема маршрутизації: