Файбер-Нет
Несколько начинающих компаний решили создать лучший Интернет, который они назвали "Файбер-Нет". Они уже установили множество узлов, работающие как маршрутизаторы по всему миру. К сожалению, они не пришли к единому согласию по поводу соединительных проводов, поэтому пришлось каждой компании прокладывать свой набор проводов между определенным набором узлов.
Теперь поставщики услуг, которые хотят передать данные от узла A к узлу B, хотят выяснить, какая из компаний обеспечит необходимые подключения. Помогите провайдерам ответить на их вопросы.
Входные данные
Входные данные состоят из нескольких тестов. Каждый тест начинается с количества вершин n (1 ≤ n ≤ 200) сети. Завершаются входные данные строкой n = 0. Вершины пронумерованы числами 1, ..., n. Далее следует набор соединений. Каждое соединение начинается парой чисел A, B (1 ≤ A, B ≤ n) - начальная и конечная вершина однонаправленного соединения. Список соединений завершается строкой A = B = 0. Для каждого соединения после двух вершин следуют компании, имеющие соединение от A до B. Компания задается буквой нижнего регистра. Множество компаний, которые обладают заданным соединением, представляют собой слово из букв нижнего регистра.
За списком соединений в каждом тесте следует набор запросов. Каждый запрос задается двумя числами A, B (1 ≤ A, B ≤ n) - начальная и конечная вершина запроса. Список (а с ним и сам тест) завершается строкой A = B = 0. Никакое соединение и никакой запрос не содержит одинаковых двух вершин.
Выходные данные
Для каждого запроса каждого теста вывести строку, содержащую список всех компаний, которые могут передать пакет данных по собственным соединениям от начальной вершины к конечной. Если таковых компаний не существует, то вывести "-". После каждого теста следует выводить пустую строку.