Навігація робота#2756

Навігація робота

1 секунда
64 мегабайти
Дуже легка

Робот був відправлений досліджувати віддалену планету. Щоб задати маршрут, яким повинен слідувати робот, щодня надсилається програма. Ця програма складається з наступних команд:

Робот обладнаний сенсорами, які дозволяють йому отримати карту свого оточення. Карта зображується як сітка з рядків і стовпців. Кожна точка сітки позначається координатами , де r = 0 — це північний край, r = M - 1 — південний край, c = 0 — західний край, а c = N - 1 — східний край. Деякі точки сітки містять небезпеки (наприклад, кратери), і програма повинна уникати цих точок, інакше можна втратити робота.

Якщо відомі початкова позиція й напрямок робота, а також його пункт призначення, потрібно надіслати найкоротшу програму (з найменшою кількістю команд), яка проведе робота до місця призначення (нас не цікавить, яким буде напрямок робота у пункті призначення). Вас цікавить кількість різних найкоротших програм, що можуть привести робота до пункту призначення, оскільки міжпланетний зв'язок не завжди надійний і, можливо, доведеться надсилати різні послідовності. Кількість найкоротших програм може бути дуже великою, тому достатньо вирахувати цю кількість по модулю заданого модуля, знаючи, що за допомогою китайської теореми про залишки можна отримати остаточну відповідь.

Вхідні дані

Вхід складається з декількох тестів. Перший рядок кожного тесту містить три цілих числа , та модуль (0 < M, N \leq 1000, 0 < m \leq 1000000000). Наступні рядків містять по символів та описують карту. Символ '.' означає, що робот може переміститися в цю точку, а '*' означає наявність небезпеки. Останній рядок кожного тесту містить чотири цілі числа r_1, c_1, r_2, c_2 та символ . Координати (r_1, c_1) визначають початкове положення, (r_2, c_2) — пункт призначення, а — один із символів 'N', 'S', 'W', 'E', що вказують початковий напрямок. Вважається, що ні початкова позиція, ні пункт призначення не є небезпечними точками. Ввід завершується, коли m = 0.

Вихідні дані

Для кожного тесту виведіть номер тесту, модуль та залишок від ділення кількості різних найкоротших програм на в одному рядку у форматі, наведеному нижче. Якщо не існує жодної програми, що доставить робота у пункт призначення, виведіть -1 для кількості різних програм.

Приклади

Приклад 1

Loading
Loading