D. Распределение по командам
ограничение по времени на тест
3 seconds
ограничение по памяти на тест
256 megabytes
ввод
стандартный ввод
вывод
стандартный вывод

Недавно в Центре Олимпиадной Подготовки Программистов Берляндского Государственного Университета завершились личные тренировки. По результатам этих тренировок определяются составы команд на предстоящий сезон командных соревнований. Каждая команда состоит из трех человек. Все обучающиеся в Центре имеют номера от 1 до 3n, а все команды — от 1 до n. Распределение по командам происходит следующим образом: пока остались нераспределенные люди, из них выбирается один с самым лучшим итоговым результатом (капитан новой команды), этот человек выбирает себе двоих сокомандников из оставшихся людей в соответствие со своим списком приоритетов. Список приоритетов каждого человека представляет собой перестановку из всех остальных 3n - 1 студентов, занимающихся в центре, исключая его самого.

Вам даны результаты личных тренировок — перестановка чисел от 1 до 3n, где i-ое число — номер студента, занявшего i-ое место. Никакие два студента не делят одно и то же место. Так же Вам заданы составы получившихся команд в том порядке, в каком эти команды были созданы. Ваша задача — определить список приоритетов для студента с номером k. Если возможных списков приоритетов несколько, найдите лексикографически наименьший.

Входные данные

В первой строке задано целое число n (1 ≤ n ≤ 105) — количество получившихся команд. Во второй строке через пробел записано 3n целых чисел от 1 до 3n — результаты личных тренировок. Гарантируется, что каждый студент встречается в результатах ровно один раз.

Далее следует n строк по три целых числа от 1 до 3n — каждая строка описывает состав очередной команды. Члены одной команды могут быть перечислены в любом порядке, но сами команды перечислены в порядке их создания. Гарантируется, что распределение корректно, то есть каждый студент является членом ровно одной команды, и такие команды действительно могли быть получены по данным результатам описанным выше способом.

В последней строке записано число k (1 ≤ k ≤ 3n) — номер студента, для которого требуется найти список приоритетов.

Выходные данные

Выведите 3n - 1 чисел — лексикографически наименьший список приоритетов для студента с номером k.

Лексикографическое сравнение реализует оператор < в современных языках программирования. Список a лексикографически меньше списка b, если существует такое i (1 ≤ i ≤ 3n), что ai < bi, а для любого j (1 ≤ j < i) aj = bj. Учтите, что список 1 9 10 лексикографически меньше чем список 1 10 9. То есть сравнение списков отличается от сравнения строк.

Примеры
Входные данные
3
5 4 1 2 6 3 7 8 9
5 6 2
9 3 4
1 7 8
4
Выходные данные
2 3 5 6 9 1 7 8 
Входные данные
3
5 4 1 2 6 3 7 8 9
5 6 2
9 3 4
1 7 8
8
Выходные данные
1 2 3 4 5 6 7 9 
Входные данные
2
4 1 3 2 5 6
4 6 5
1 2 3
4
Выходные данные
5 6 1 2 3