C. Онлайн-курсы в БГУ
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В Берляндском государственном университете теперь можно учиться онлайн! Для получения диплома среди всего многообразия онлайн-курсов Поликарпу необходимо пройти k главных онлайн-курса его специальности. Всего для прохождения доступны n курсов.

Ситуация осложняется тем, что онлайн-курсы зависят друг от друга и для каждого курса есть список тех, которые необходимо обязательно пройти до начала прохождения этого онлайн-курса (список может быть пустым, что означает отсутствие таких ограничений).

Помогите Поликарпу пройти наименьшее количество курсов суммарно, чтобы получить cпециальность (то есть пройти все главные курсы и необходимые для их прохождения курсы). Напишите программу, которая выводит порядок прохождения курсов.

Поликарп проходит курсы последовательно, то есть он может приступать к прохождению следующего только после окончания предыдущего. Каждый из курсов можно проходить не более одного раза.

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

В первой строке записаны n и k (1 ≤ k ≤ n ≤ 105) — количество онлайн-курсов и количество главных курсов специальности Поликарпа.

Вторая строка содержит k различных целых чисел от 1 до n — номера главных онлайн-курсов специальности Поликарпа.

Далее следует n строк, каждая из которых описывает очередной курс: i-я из них соответствует курсу i. Каждая строка начинается с целого числа ti (0 ≤ ti ≤ n - 1) — количества курсов, от которых зависит i-й. Далее следует последовательность из ti различных целых чисел от 1 до n — номера курсов в произвольном порядке, от которых зависит i-й. Гарантируется, что никакой курс не может зависеть сам от себя.

Гарантируется, что сумма по всем значениям ti не превосходит 105.

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

Выведите -1, если не существует способа получения специальности.

В противном случае в первую строку выведите целое число m — минимальное количество онлайн-курсов, которое необходимо пройти для получения специальности. Во вторую строку выведите m различных целых чисел — номера курсов, которые надо пройти, в хронологическом порядке их прохождения. Если ответов несколько разрешается вывести любой из них.

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

В первом примере можно сначала пройти курсы номер 1 и 2, после чего можно будет пройти курс номер 4, а затем курс номер 5, который является главным. После этого останется пройти только курс номер 3, который является последним непройденным главным курсом.