Наступил 3019 год, и за прошедшие 1000 лет произошла удивительная эволюция коров.
Запись эволюции коровы может быть представлена как дерево, начинающееся
с основной коровы без особенных черт.
На каждом уровне наследования или все коровы получают новое качество
или происходит разделение, когда часть коров получает это качество, а часть - нет.
Листья на дне дерева указывают все образовавшиеся под-популяции коров в 3019 году.
Никакие листья (под-популяции) не содержат идентичные множества качеств. На рисунке
под-популяция #1 не имеет никаких привнесённых качеств, а под-популяция #3 содержит
качества "telepathic flying". Под-популяция #2 содержит качество "flying".
Эволюционное дерево такое, как изображено на рисунке, называется "правильным",
если каждое новое качество появляется ровно на одном ребре дерева (то есть такая
эволюция состоялась только в одной точке истории). Например, дерево будет неправильным,
если качество "spots" возникнет в двух отдельных ветках.
По заданному описанию под-популяций, определите, может ли оно быть описано "правильным"
деревом.
ФОРМАТ ВВОДА (файл evolution.in):
Первая строка ввода содержит количество под-популяций, \(N\) (\(2 \leq N \leq 25\)).
Каждая из последующих \(N\) строк описывает одну под-популяцию.
Эта строка начинается с целого числа \(K\) (\(0 \leq K \leq 25\)), за которым следуют
\(K\) характеристик всех коров этой популяции. Характеристики - это строки, содержащие
до 20 маленьких латинских символов (a..z). Никакие из под-популяций не содержат
в точности одни и те же характеристики.
ФОРМАТ ВЫВОДА (файл evolution.out):
Выведите "yes" если возможно сформировать правильное эволюционное дерево и "No"
в противном случае.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
4 2 spots firebreathing 0 1 flying 2 telepathic flying
|
yes
|