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