eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

И снова лабиринт

И снова лабиринт

Одной из самых популярных игр всех времён и народов является игра "Лабиринт". Игра происходит на клетчатом поле \textbf{N}×\textbf{M}. Игрок может произносить команды "влево", "вправо", "вверх", "вниз". Для каждой клетки поля и каждой команды ведущим определено поле, на которое переместится игрок (то есть дана карта лабиринта). Однажды игра была прервана, и ведущий забыл, на каком поле находится игрок. К счастью, сохранилась полная запись игры --- последовательность команд, произнесённых игроком. Напишите программу для определения полей, в которых игрок может находиться сейчас. \InputFile В первой строке находятся числа \textbf{N} и \textbf{M} (\textbf{1} ≤ \textbf{N}, \textbf{M} ≤ \textbf{100}). Далее идут \textbf{4} блока данных. В каждом блоке \textbf{N} строк. В каждой строке \textbf{M} пар: \textbf{i}-я пара в \textbf{j}-й строке в \textbf{k}-м блоке показывает координаты игрока после произнесения \textbf{k}-й команды на клетке с координатами (\textbf{j}, \textbf{i}). Далее идет число команд \textbf{S} (\textbf{1} ≤ \textbf{S} ≤ \textbf{4000}), произнесённых игроком. На следующей строке идут \textbf{S} чисел --- номера этих команд. \OutputFile В первой строке выведите число \textbf{L} клеток, на которых может оказаться игрок после выполнения заданной последовательности команд. На следующих \textbf{L} строках --- координаты этих клеток, упорядоченных сначала по первой координате, а потом по второй.
Лимит времени 0.5 секунд
Лимит использования памяти 64 MiB
Входные данные #1
2 3
1 2  1 3  1 3  
2 2  2 3  2 3  
2 1  2 2  2 3  
2 1  2 2  2 3  
1 1  1 1  1 2  
2 1  2 1  2 2  
1 1  1 2  1 3  
1 1  1 2  1 3  
4
1 2 3 4 
Выходные данные #1
2
1 1
1 2
Автор Андрей Халявин
Источник Petrozavodsk summer training camp, August 2005