모두 가족이다
시간 제한1초메모리 제한1024 MB
부모와 자녀 설명으로 가계도를 만든 뒤, 두 사람 사이의 관계를 정해진 친척 호칭 규칙과 올바른 서수 표기로 답하는 문제입니다.
문제
가족 유전 연구소의 과학자들은 가계도를 따라 유전병이 퍼지는 과정을 추적하고 있다. 먼저 병에 걸린 가족 구성원과 각 자녀에게 병을 전달한 부모를 정리했다(각 자녀는 한쪽 부모에게서만 병을 물려받는다고 가정한다). 그런데 과학자들은 여러 친족 관계의 이름을 헷갈려 한다. 부모, 조부모, 형제자매는 익숙하다. 하지만 "삼종손, 이중 분리" 같은 관계는 좀처럼 머릿속에 그려지지 않는다. 여러 차례 논의 끝에 이들을 정리해 줄 정의를 떠올렸다.
와 라는 두 사람이 있고 두 사람의 가장 가까운 공통 조상이 라고 하자(그럴 확률이 얼마나 될까!). 에서 로 이어지는 직계 자손이 명이면 는 로부터 대 분리되었다고 한다. 따라서 가 의 딸이면 대 분리, 의 손녀면 대 분리, 이런 식이다. 자기 자신은 대 분리이다.
이제 가 로부터 대 분리되고 가 로부터 대 분리되었다고 하자. 여기서 이다. 와 의 관계는 다음 규칙으로 정할 수 있다.
- 이면 는 일 때 의 자녀, 일 때 의 손주이다.
- 이면 와 는 일 때 형제자매, 일 때 촌이다.
- 이면 와 는 촌이고 대 분리되었다.
이고 이면 흥미로운 이름인 "촌, 대 분리"가 나오는데, 우리가 보통 "이모/삼촌" 또는 "조카"라고 부르는 관계이다.
아래 그림 1은 와 라는 두 사람에 대한 예를 보여 준다.
그림 1: 관계의 예
과학자들은 가계도와 가계도에 있는 두 사람의 쌍을 제시하고, 각 쌍의 관계를 판별해 달라고 요청한다.
입력
입력의 첫 줄에는 가계도 설명의 개수와 질의 쌍의 개수를 나타내는 두 양의 정수 ()가 주어진다. 이어서 개의 줄에 각각 하나의 가계도 설명이 주어진다. 각 가계도 설명은 형태로, 이라는 사람에게 부터 까지 명의 자녀가 있음을 나타낸다. 모든 이름은 서로 다르며 알파벳 문자만 포함한다. 가계도 설명은 임의의 순서로 주어질 수 있다(즉, 전체 트리의 루트가 반드시 첫 번째 가계도 설명에 있지는 않다). 어떤 이름도 가계도 설명에서 으로 두 번 이상 나타나지 않는다. 모든 가계도 설명을 합치면 정확히 하나의 트리가 되며, 트리의 노드 수는 이상 이하이다.
이어서 개의 줄에 형태로 주어지며, 이고 두 이름은 모두 트리에 있음이 보장된다.
출력
각 사람 쌍의 관계를 그림 1에 나온 형식으로 한 줄에 하나씩 출력한다. 가 의 직계 자손인 경우(그림 1의 첫 번째 예)를 제외하면 항상 각 쌍에서 의 이름을 먼저 출력한다. 번째 서수는 $n$th로 출력하되 인 경우에는 1st, 2nd, 3rd, 21st, 22nd, 23rd, 31st, 32nd, 33rd 등을 출력한다. 또한 분리된 대수에는 하나일 때 time을 쓰고 그 외에는 모두 times를 쓴다.