Ресторани#10733

Ресторани

5 секунд
2 048 мегабайтів
Складна

Усі раді повернутися на вулиці та в ресторани Парижа. Проте наразі кількість місць у ресторанах дуже обмежена. Ми хочемо, щоб обидва ресторани могли прийняти якомога більше людей, і щоб клієнти займали бажані ними місця.

Є клієнтів з номерами від до і ресторанів з номерами від до . Кожен клієнт бронює столик у певному підмножині ресторанів і надає свій список бронювань, упорядкований за вподобаннями. Кожен ресторан ранжує отримані бронювання в певному порядку вподобань — наприклад, ресторан може бажати, щоб клієнти, які зареєструвалися першими, мали вищий рейтинг. Кожен ресторан також має місткість c_i, тобто максимальну кількість клієнтів, яку він може обслуговувати.

Ваше завдання — знайти такий розподіл частини відвідувачів у ресторанах, щоб виконувалися наступні умови:

1. Жоден ресторан не вміщує більше відвідувачів, ніж його місткість.

2. Кожному клієнту надається столик не більше ніж в одному ресторані.

3. Не існує ресторану і клієнта , який забронював столик у , такого, що:

Інші зауваження, на які слід звернути увагу:

Вхідні дані

Перший рядок містить числа n~(1 \le n \le 50000) і m~(1 \le m \le 10000).

Наступні рядків описують місткості, причому -й рядок містить ціле число c_i~(1 \le c_i \le n) — місткість ресторану .

Далі слідують рядків. -й рядок описує список резервувань для клієнта , відсортований за вподобаннями: рядок містить список різних цілих чисел (від до ), від найбільш вподобаних до найменш вподобаних.

Далі слідують рядків. -й рядок описує відсортовані вподобання ресторану . Цей рядок містить або число , коли жоден клієнт не забронював столик у ресторані , або список різних цілих чисел — список клієнтів, які зробили замовлення в ресторані , упорядкований від найбільш до найменш вподобаного рестораном.

Загальна кількість варіантів бронювання становить не більше 10^6.

Вихідні дані

Виведіть набір клієнтів, для яких є можливий розподіл (відповідно до наведених вище правил). Набір задається по одному клієнту в окремому рядку, відсортований за зростанням їх .

Приклади

Приклад 1

Loading
Loading