ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

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

Ограничение времени: 0.5 секунды
Ограничение памяти: 64 МБ
Одной из самых популярных игр всех времён и народов является игра «Лабиринт». Игра происходит на клетчатом поле N × M. Игрок может произносить команды «влево», «вправо», «вверх», «вниз». Для каждой клетки поля и каждой команды ведущим определено поле, на которое переместится игрок (то есть дана карта лабиринта). Однажды игра была прервана, и ведущий забыл, на каком поле находится игрок. К счастью, сохранилась полная запись игры — последовательность команд, произнесённых игроком. Напишите программу для определения полей, в которых игрок может находиться сейчас.

Исходные данные

В первой строке находятся числа N и M (1 ≤ N,M ≤ 100). Далее идут 4 блока данных. В каждом блоке N строк. В каждой строке M пар: i-я пара в j-й строке в k-м блоке показывает координаты игрока после произнесения k-й команды на клетке с координатами (j, i). Далее идет число команд S (1 ≤ S ≤ 4000), произнесённых игроком. На следующей строке идут S чисел — номера этих команд.

Результат

В первой строке выведите число L клеток, на которых может оказаться игрок после выполнения заданной последовательности команд. На следующих L строках — координаты этих клеток, упорядоченных сначала по первой координате, а потом по второй.

Пример

исходные данныерезультат
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
2
1 1
1 2
Автор задачи: Андрей Халявин
Источник задачи: Petrozavodsk summer training camp, August 2005.