10851. Втеча з космічної станції
Уявіть, що ви перебуваєте на службі у зовнішній розвідці Міжгалактичного Альянсу Республіканських Сил (МАРС). Одному з агентів розвідки не пощастило, і він був захоплений на засекреченій космічній базі. На щастя, зовнішню розвідку МАРС вдалося роздобути план цієї бази. І тепер вам доручено розробити план втечі.
База є прямокутником розміром \(N \times M\), з усіх боків оточений стінами, і складається з квадратних відсіків одиничної площі. База має \(K\) виходи, до одного з яких агенту необхідно дістатися. У деяких відсіках бази є стіни. Ваш агент може переміщатися з відсіку в будь-який із чотирьох сусідніх з ним, якщо в тому відсіку, куди він хоче переміститися, немає стіни.
Крім того, база забезпечена системою гіпертунелів, здатних переміщати агента з одного відсіку бази (вхід до гіпертунелю) до іншого (вихід з гіпертунелю). Коли агент знаходиться у відсіку, де є вхід до гіпертунелю, він може (але не зобов'язаний) ним скористатися.
Початкове становище вашого агента відоме. Вам необхідно знайти найкоротший шлях втечі (тобто шлях через мінімальну кількість відсіків).
Формат вхідних даних
У першому рядку записані числа \(N\) і \(M\) (\(2≤N≤100\), \(2≤M≤100\)), що задають розміри бази: \(N\) — кількість рядків у плані бази, \(M\) — кількість стовпців.
У другому рядку записані початкові координати агента \(X_A,Y_A\) (\(1≤X_A≤N\), \(1≤Y_A≤M\)). Перша координата задає номер рядка, друга - номер стовпця. Рядки нумеруються зверху вниз, стовпці зліва направо.
Далі йдуть \(N\) рядків по \(M\) чисел, що задають опис стінок усередині бази: 1 відповідає стінці, 0 - її відсутності.
Далі в окремому рядку записано число \(H\) (\(0≤H≤1000\)) – кількість гіпертунелів.
У наступних \(H\) рядках йдуть описи гіпертунелів. Кожен гіпертунель задається 4 числами: \(X_1, Y_1, X_2, Y_2\) (\(1≤X_1,X_2≤N\); \(1≤Y_1,Y_2≤M\)) - координатами входу та виходу гіпертунелю. Жодні два гіпертунелі не мають загального входу.
Після цього в окремому рядку слідує число \(K\) (\(1≤K≤10\)) — кількість виходів з бази.
У наступних \(K\) рядках йдуть описи виходів із бази. Кожен вихід визначається двома координатами \(X\) і \(Y\) (\(1≤X≤N\); \(1≤Y≤M\)).
Гарантується, що початкові координати агента не збігаються з жодним виходом і він не стоїть у відсіку, зайнятому стіною. Жодні входи та виходи гіпертунелів, а також виходи з бази не знаходяться у відсіках, зайнятих стінами. Ніякий вхід у гіпертунель не збігається з виходом з бази
Формат вихідних даних
Якщо втеча неможлива, виведіть єдиний рядок з написом "Impossible".
В іншому випадку в першому рядку видайте число \(L\) - кількість відсіків у найкоротшому шляху втечі.
У наступних рядках \(L\) послідовно виведіть координати відсіків найкоротшого шляху втечі. Якщо рішень кілька, виведіть будь-яке з них.
Приклад вхідних даних
4 5
2 1
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 0 0
2
1 2 1 4
3 1 1 4
1
2 4
Приклад вихідних даних
4
2 1
3 1
1 4
2 4
Коментарі