У цій задачі "словник" — це список слів в алфавітному порядку з поясненнями тією ж мовою. Словник має містити визначення кожного слова, що використовується у поясненні будь-якого іншого слова зі словника. Якщо у словнику подано визначення слів, то в ньому рівно різних слів. Також жодне слово не зустрічається у своєму власному визначенні.
Підсловником називається підмножина слів та їх визначень з даного словника, яка також може бути опублікована як окремий словник і відповідає наведеним умовам. Як завдання з курсу обчислювальної лінгвістики, необхідно створити лексичну базу знань — тобто знання, виражені словами — на основі словника.
Комп'ютеру важко автоматично вивчати нові слова, тому вирішено вручну навчати його кільком найуживанішим словам, розпочавши з відповідного підсловника. Опанувавши ці слова, комп'ютер зможе надалі поступово освоювати увесь словник, вивчаючи слова одне за одним. Наприклад, комп'ютер зможе зрозуміти слово "xyz" тільки якщо вже знає значення усіх слів, що використані у визначенні xyz. Напишіть програму, яка знайде найменший розширюваний підсловник для заданого словника.
Вхідні дані складаються з кількох тестів. На першому рядку кожного тесту зазначено кількість слів (1 \le n \le 100). Кожен з наступних рядків містить слово та його визначення (до слів). Слова відокремлені пропусками, складаються з великих англійських літер і мають довжину не більше символів.
Для кожного тесту у першому рядку виведіть кількість слів у підсловнику, у другому — ці слова в алфавітному порядку, розділені пробілами.
Приклад 1