#!/usr/bin/python
'''
Гравицаппу можно изготовить из нескольких деталей по прилагающейся инструкции.
Если соответствующей детали нет, её, в свою очередь, можно изготовить из других
деталей по другому разделу той же инструкции. Если деталей Написать программу,
которая проверяет, можно ли из имеющегося набора деталей изготовить гравицаппу.

Ввод: Первая строка "--- набор имеющихся деталей (разделённые
пробелом натуральные числа, необязательно различные, в диапазоне от 1 до
999 числом не более 10000). Вторая и последующие строки содержат правила из
инструкции вида <<ЦелеваяДеталь Деталь1 Деталь2 ...>>, задающие
способ сборки ЦелевойДетали. Последняя строка определяет правило
сборки самой гравицаппы в виде <<0 Деталь1 Деталь2 ...>> (ноль
вместо номера детали). Каждая составная деталь собирается единственным
способом.
'''

List=raw_input().split()        # Набор имеющихся деталей
Rules={}                        # Словарь вида R[ЦелеваяДеталь]=[Деталь1 Деталь2 ...]
while True:                     # Строим словарь
    Rule=raw_input().split()    # Список слов
    Rules[Rule[0]]=Rule[1:]     # Первое слово - ЦелеваяДеталь
    if Rule[0] == "0": break    # Последняя строка: сборка гравицаппы
print Rules

Work=Rules["0"]                 # Каких деталей не хватает для гравицаппы?
while Work:                     # Гравицаппа всё ещё не собрана
    Detail=Work.pop()           # Забираем нужную деталь из списка
    if Detail in List:          # ...есть в наборе?
        List.remove(Detail)     #    используем её
        continue                #    перейдём к другой детали
    if Detail not in Rules:     # ...нет в наборе и нельзя сделать из других?
        print "No"              #    cобрать гравицаппу нельзя
        break                   #    дальше можно не пробовать
    Work.extend(Rules[Detail])  # Добавим составляющие снятой детали в список
else:                           # (выход из whilе не с помощью break)
    print "Yes"                 # Все детали или их составляющие оказались в наборе
