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

"Penguin"

"Penguin"

Лимит времени 1 секунда
Лимит использования памяти 256 MiB

После общения с питоном Ван-Россума, Ковальски решил изобрести свой собственный язык программирования и назвать его "Penguin". Особенностью этого языка будет то, что он возьмет все самое лучшее от остальных языков программирования, что, несомненно, сделает его самым используемым во всём мире.

Помимо прочего, в этом языке будет препроцессор, очень похожий на препроцессор языка Си. Препроцессор обрабатывает исходный код программы построчно сверху вниз. Если текущая строка имеет вид "import ", то он подставляет вместо этой строчки исходный код файла some_file_name.pen и продолжает обработку файла (обрабатывая в том числе и только что вставленные строки).

Рассмотрим работу препроцессора на примере. Пусть есть два файла — a.pen и b.pen.

Исходный код a.pen:

import < b.pen > sayHello("world");

Исходный код b.pen:

void sayHello(string name): print("Hello, " + name);

После работы препроцессора файлы будут выглядеть следующий образом.

a.pen:

void sayHello(string name): print("Hello, " + name); sayHello("world");

b.pen:

void sayHello(string name): print("Hello, " + name);

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

Однако после работы препроцессора исходный код программы может сильно увеличиться. У Ковальски есть nфайлов на языке "Penguin", некоторые из них подключают другие файлы. Его интересует размер файлов после выполнения препроцессора. Так как Ковальски вызывают на новое задание, он просит Вас помочь ему.

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

В первой строке входного файла находится число n (1n10000) — количество файлов. Следующие n блоков содержат по три строки. В первой строке i–ого блока находится число k_i (0k_i30000) — количество файлов, подключаемых в программе i. Во второй строке i–ого блока находятся k_i чисел — номера файлов, подключаемых в файле с номером i. Все индексы — целые числа от одного до n. В третьей строке i–ого блока находится число s_i (1s_i10^9) — количество строк в i–ом файле, без учёта строк подключения других файлов.

Гарантируется, что суммарное количество подключаемых файлов не превосходит 30000.

В последней строке входного файла содержится число p — количество файлов, размеры которых после работы препроцессора, хочет знать Ковальски. Далее в этой же строке содержится p чисел — номера этих файлов.

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

В выходной файл выведите p строк — для каждого из интересующих Ковальски файлов количество строк в нём после работы препроцессора. Если это количество будет бесконечно большим, то выведите -1. Гарантируется, что размер выходного файла не превосходит одного мегабайта.

Пример

Входные данные #1
2
1
2
1
0

2
2 1 2
Выходные данные #1
3
2
Источник Яндекс, отбор ЗКШ 2011-2012, 1 тур