여러 언어 사이의 단어 대 단어 직접 번역이 아주 긴 목록으로 주어집니다. 각 항목은 "언어 A의 단어 S1은 언어 B의 단어 S2에 대응한다"라는 형태입니다.
다음과 같은 질의에 답하는 프로그램을 작성하세요: 단어 S를 언어 A에서 언어 B로 옮긴 모든 번역을 찾아라.
번역 관계는 추이적(transitive) 입니다. 즉, 언어 B의 단어 S2가 언어 A의 단어 S1의 번역이 되려면, 이웃한 두 쌍이 항상 서로의 직접 번역인 (단어, 언어) 쌍의 사슬이 존재하여 (S1,A)에서 시작해 (S2,B)까지 이어지면 됩니다.
형식적으로, (단어, 언어) 쌍의 수열 (Xi,Ji)가 존재하여 (S1,A)가 (X1,J1)의 직접 번역이고, (X1,J1)이 (X2,J2)의 직접 번역이며, …, (Xk,Jk)가 (S2,B)의 직접 번역이면 됩니다.
직접 번역 관계는 대칭적(symmetric) 입니다. 즉, 목록의 각 항목은 두 단어가 서로의 번역임을 뜻합니다.
첫 줄에는 테스트 세트의 개수 Z가 주어집니다 (1≤Z≤10).
각 테스트 세트는 다음과 같이 주어집니다.
입력에 등장하는 단어의 길이는 최대 20자이며, 모든 단어는 영어 소문자(a-z)로만 이루어집니다. 한 줄의 단어들은 공백 하나로 구분됩니다.
각 질의 (S,A,B)에 대해 한 줄을 출력합니다.
?를 출력합니다.모든 단어는 자기 자신과도 연결되어 있으므로, A=B인 질의에서는 단어 S 자신도 결과에 포함됩니다.
출력해야 하는 전체 데이터의 양은 20MB를 넘지 않는다고 가정해도 좋습니다.