Для установки пакетов в ОС Vinux Vasya использует Vum, современный менеджер пакетов.
У каждого пакета есть несколько версий, которые можно установить. Одновременно можно установить только одну версию приложения. Назовём конкретную версию конкретного приложения пакетом. Поскольку конкретные версии разных приложений могут быть несовместимы друг с другом, в Vum существуют конфликты. Каждый конфликт — это множество пакетов, из которого можно установить не более одного пакета. Попытка установить несколько пакетов из списка конфликта приводит к сбою системы, а Vasya этого не хочет.
Разные версии любого приложения могут конфликтовать или не конфликтовать. В один конфликт могут входить несколько версий приложения, в том числе все его версии.
Поскольку система описания конфликтов в Vum довольно примитивна, каждый пакет может быть указан только в одном конфликте.
Vasya хочет установить $N$ различных приложений, не вызвав сбой своего Vinux. Он должен выбрать версии приложений, не нарушая указанных выше правил, но переборные алгоритмы разрешения зависимостей в Vum не справляются с этой задачей. Vasya просит помочь с его менеджером пакетов.
Входные данные
Первая строка входного файла содержит целое число $N$ — количество приложений, которые Vasya хочет установить ($1 \le N \le 200$).
Следующие $N$ строк содержат описания приложений со списками их версий. Описание приложения состоит из следующих полей, разделённых пробелами:
- имя приложения — строка из строчных латинских букв длиной от 1 до 10 символов;
- число версий — положительное целое число, не превосходящее $1\,000$;
- номера версий — положительные целые числа, перечисленные в порядке возрастания.
Номера приложений не превосходят $100\,000$. Все имена приложений различны.
Следующая строка содержит число $K$ — количество конфликтов ($0 \le K \le 500$).
Следующие $K$ строк описывают конфликты. Описание конфликта начинается с положительного целого числа $T$ — количества пакетов в конфликте. Затем перечислены $T$ пакетов, разделённых пробелами. Для каждого пакета указано имя приложения, а затем номер версии.
Гарантируется, что пакеты, перечисленные в конфликтах, никогда не повторяются и все версии упомянуты в описаниях приложений.
Выходные данные
Если невозможно установить все $N$ приложений без конфликтов, единственная строка выходного файла должна содержать слово No. Если возможно, первая строка должна содержать слово Yes, а вторая — разделённые пробелами номера версий, которые необходимо для этого установить.
Версии для $N$ приложений нужно вывести в том же порядке, в котором приложения описаны во входном файле. Если существует несколько способов выбора приложений, выведите любой из них.
Примеры
Входные данные 1
3 vim 3 1 2 3 nano 2 5 8 python 2 2 3 2 2 vim 3 nano 8 3 vim 1 nano 5 vim 2
Выходные данные 1
Yes 2 8 2
Входные данные 2
2 firefox 1 38 chrome 1 46 1 2 firefox 38 chrome 46
Выходные данные 2
No
Примечание
В первом примере два конфликта. Первый запрещает одновременно установить третью версию vim и восьмую версию nano. Второй означает, что можно установить только один из следующих пакетов — первую версию vim, пятую версию nano и вторую версию vim — либо не устанавливать ни одного. Правильные решения следующие:
1 8 21 8 32 8 22 8 33 5 23 5 3
Во втором примере есть два приложения, у каждого только одна версия. Однако единственный конфликт запрещает установить оба приложения вместе.