번역 복원

시간 제한1초메모리 제한128 MB

문제

Bob Roberts는 여러 언어 사이의 문서 번역을 담당한다. 그를 돕기 위해 상사들은 항상 짝으로 이루어진 번역 파일을 준다. 한 파일에는 어떤 언어의 예시 구절들이 들어 있고, 다른 파일에는 그 구절들을 다른 언어로 옮긴 번역이 들어 있다. 그런데 지나치게 열성적인 직원이 모든 파일의 내용을 알파벳순으로 정렬해 버려, 각 구절과 그 번역 사이의 대응 관계가 사라졌다. 다행히 목록이 충분히 완전하여 정렬된 두 목록만으로 원래의 대응을 복원할 수 있다. 특히 모든 구절이 정확히 두 단어로 이루어져 있을 때 이 복원이 잘 된다.

예를 들어 다음 두 목록을 살펴보자.

언어 1 구절언어 2 구절
arlo zymbus seat
flub plevebus stop
pleve dourmhot seat
pleve zymschool bus

이로부터 arlohot, zymseat, flubschool, plevebus, dourmstop을 뜻함을 알 수 있다.

번역은 단어 대 단어로 이루어지며 위치가 보존된다. 즉, 언어 1의 각 단어에는 언어 2의 번역이 정확히 하나씩 대응되고, 언어 1의 구절이 x y이면 언어 2의 대응 구절은 f(x) f(y)이다. 여기서 f는 알려지지 않은 단어 대 단어 대응이다. 정렬된 두 목록이 주어질 때 f를 복원하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 두 언어 각각의 두 단어 구절 개수를 나타내는 양의 정수 $n$ ($1 \le n \le 250$)이 적힌 줄로 시작한다. 이어지는 $n$개의 줄에는 첫 번째 언어의 구절이 알파벳순으로 한 줄에 하나씩 주어지고, 그다음 $n$개의 줄에는 두 번째 언어의 구절이 알파벳순으로 한 줄에 하나씩 주어진다. 각 구절은 공백 하나로 구분된 두 단어로 이루어지며, 모든 단어는 대문자와 소문자 알파벳만을 사용한다.

하나의 테스트 케이스에는 서로 다른 단어가 최대 25개까지 나온다. 한 언어에서 어떤 단어도 10개를 초과하는 구절의 첫 단어가 되지 않으며, 마찬가지로 어떤 단어도 10개를 초과하는 구절의 마지막 단어가 되지 않는다. 마지막 테스트 케이스 다음에는 0 하나만 적힌 줄이 오며, 이는 입력의 끝을 나타낸다.

출력

각 테스트 케이스마다, 첫 번째 언어의 서로 다른 모든 단어에 대해 다음 형식의 줄을 출력한다.

word1/word2

여기서 word2word1의 두 번째 언어 번역이며, 두 단어는 슬래시 하나로 구분된다. 줄들은 첫 번째 언어 단어를 기준으로 정렬하고, 각 첫 번째 언어 단어는 정확히 한 번씩만 출력한다. 출력에는 공백이 전혀 없어야 한다. 연속한 두 테스트 케이스의 출력 사이는 빈 줄 하나로 구분한다. 각 테스트 케이스에는 유일한 올바른 복원이 존재함이 보장된다.