Назви перехресть
Город Кіото відомий своїм китайським планом: його вулиці пролягають або з півночі на південь, або зі сходу на захід. Деякі з них пронумеровані, але більшість мають власні назви.
Перехрестя називаються за іменами вулиць, які перетинаються в ньому. Наприклад, Каварамачі-Сандзе — це перетин вулиць Каварамачі та Сандзе. Проте виникає питання: яке ім'я має бути першим? На перший погляд, це може здаватися неважливим: хтось каже Каварамачі-Сандзе (спочатку північ-південь), а хтось — Сандзе-Каварамачі (спочатку схід-захід). Але з досвідом розумієш, що порядок важливий. Наприклад, Сідзе "сильніша" за Каварамачі, яка, в свою чергу, "сильніша" за Сандзе. Цей порядок можна використовувати для назв перехресть.
На вхід подається список відомих назв перехресть X-Y. Вулиці мають напрямок північ-південь або схід-захід, і перетинатися можуть лише ортогональні вулиці.
Оскільки ваш список не повний, ви хочете його доповнити, використовуючи такі правила:
Дві вулиці A і B мають однакову "силу", якщо виконуються умови (1) - (3):
Вони обидві перетинають третю вулицю C з вхідних даних.
Не існує такої вулиці D, що D-A і B-D присутні у вхідних даних.
Не існує такої вулиці E, що A-E і E-B присутні у вхідних даних.
Використовуємо це визначення для розширення відношення "сильніший":
A сильніша за B, якщо існує послідовність A =
A[1]
,A[2]
, ...,A[n]
= B, де n як мінімум 2, і для будь-якого i в проміжку 1 .. n - 1 абоA[i]-A[i+1]
є вхідним перехрестям, абоA[i]
іA[i+1]
мають однакову силу.
Вам потрібно визначити, чи є задані імена перехресть X-Y допустимими. Відповідь має бути ствердною, якщо ви можете довести допустимість імені, і негативною, якщо не можете. А саме:
YES, якщо можна зробити висновок, що дві вулиці ортогональні, причому X сильніша за Y.
NO інакше.
Вхідні дані
Складаються з кількох тестів у форматі:
n
Crossing[1]
...
Crossing[n]
m
Question[1]
...
Question[m]
Перехрестя та запити мають вигляд:
X-Y
де X і Y — рядки з літер і цифр довжиною не більше 16. Рядки не містять пробілів, регістр літер важливий.
n і m знаходяться в межах від 1 до 1000 включно, у кожному тесті не більше 200 вулиць.
Останній рядок містить нуль.
Вихідні дані
Для кожного тесту вивести m + 1 рядок. У першому рядку вказати кількість вулиць у місті, а потім відповіді на запитання — або YES, або NO.