클라라메이 이모는 친척의 가계도를 그리고 있다. 그런데 두 사람이 서로 어떤 사이인지 자꾸 헷갈린다. 가계도를 읽어서 두 사람 사이의 호칭을 붙이는 프로그램을 작성하라.
가계도는 항상 다음 규칙을 지킨다.
호칭은 다음 정의를 따른다. 호칭은 영어 단어이며 영어 그대로 출력한다.
father와 mother는 자녀의 부모이다.brother와 sister는 부모가 같은 남자 형제와 여자 형제이다.son과 daughter는 부모의 자녀이다.uncle과 aunt는 자녀의 부모와 형제자매인 남자와 여자이다.nephew와 niece는 형제자매의 남자 자녀와 여자 자녀이다.grandfather와 grandmother는 자녀의 부모의 아버지와 어머니이다.great grandfather와 great grandmother는 자녀의 조부모의 아버지와 어머니이다.great uncle과 great aunt는 자녀의 조부모와 형제자매인 사람이다.removed가 붙지 않은 사촌은 가계도에서 같은 세대에 있다. 1st cousins는 조부모가 같고, 2nd cousins는 증조부모가 같으며, 그다음도 같은 방식이다.removed가 붙은 사촌은 세대가 다르다. 1st cousins 1-time removed는 어떤 사람과 그 사람의 첫째 사촌의 자녀 사이에 성립하고, 1st cousins 2-times removed는 어떤 사람과 그 사람의 첫째 사촌의 손주 사이에 성립하며, 그다음도 같은 방식이다.1st cousins 2-times removed이면 B도 A의 1st cousins 2-times removed이다.-in-law가 붙는다. 배우자의 부모는 father-in-law 또는 mother-in-law, 배우자의 형제자매는 brother-in-law 또는 sister-in-law, 배우자의 사촌은 cousins-in-law이다.그림 1은 첫 번째 예제의 가계도이다. 이 가계도에서 Claire와 Carol은 1st cousins이고, Claire와 Diva는 1st cousins 1-time removed이며, Claire와 Chris는 1st cousins-in-law이다.

그림 1: 첫 번째 예제의 가계도
입력은 가계도 하나와 질의 목록으로 이루어진다.
첫째 줄에 가계도를 만드는 관계의 개수 r (1≤r≤200)이 주어진다. 다음 r개 줄에는 세 문자열 name1, name2, relation이 공백 하나로 구분되어 주어진다. 모든 이름은 영문자로만 이루어지고 서로 다르다. relation은 husband, wife, son, daughter 중 하나이며, 각 줄은 "name1은 name2의 relation이다"로 읽는다.
다음 줄에 질의의 개수 q (1≤q≤200)가 주어진다. 다음 q개 줄에는 서로 다른 두 이름 name1과 name2가 공백 하나로 구분되어 주어진다. 두 이름 모두 가계도에 있다.
주어진 관계만으로 가계도에 있는 모든 사람의 성별을 알아낼 수 있다. 각 결혼에서 부모가 입력에 함께 주어진 사람은 많아야 한 명이다. 질의로 주어진 두 사람은 아래에서 정의하는 관계 중 정확히 하나로 이어져 있다.
질의마다 name1이 name2의 무엇인지 한 줄로 출력한다.
먼저 혈연 거리를 정의한다. 어떤 사람의 조상은 자기 자신, 부모, 부모의 부모, 이런 식으로 거슬러 올라간 사람 전부이고, 자기 자신까지의 거리는 0이다. 두 사람 X와 Y의 공통 조상 중 a+b가 가장 작은 사람을 고른다. 여기서 a는 X에서 그 조상까지 올라가는 세대 수이고, b는 Y에서 같은 조상까지 올라가는 세대 수이다. 이렇게 얻은 순서쌍을 (a,b)라 하자. 공통 조상이 없으면 두 사람은 혈연이 아니다.
각 질의는 다음 순서로 판정한다.
name1이 name2의 배우자이면 name1의 성별에 따라 name1 is the husband of name2 또는 name1 is the wife of name2를 출력한다.name1과 name2가 혈연이면 두 사람의 (a,b)로 아래 호칭을 만들고 -in-law는 붙이지 않는다.name1의 배우자가 name2와 혈연이면 그 두 사람의 (a,b)로 아래 호칭을 만들고 -in-law를 붙인다.name2의 배우자가 name1과 혈연이다. 그 두 사람의 (a,b)로 아래 호칭을 만들고 -in-law를 붙인다.네 경우 모두 남자 단어와 여자 단어 중 무엇을 쓸지는 name1의 성별을 따른다. 아래에서 W는 결혼 때문에 생긴 관계이면 -in-law이고, 아니면 빈 문자열이다.
name1은 name2보다 b세대 위의 조상이다. 남자면 father, 여자면 mother에서 시작한다. b=1이면 그대로 두고, b=2이면 앞에 grand를 붙이며, b≥3이면 grand를 붙인 뒤 그 앞에 great 를 b−2번 붙인다. 이렇게 만든 단어를 X라 하고 name1 is the XW of name2를 출력한다.son, 여자면 daughter에서 시작해 같은 규칙을 적용하면 son, grandson, great grandson, great great grandson처럼 된다. name1 is the XW of name2를 출력한다.name1 is the brotherW of name2, 여자면 name1 is the sisterW of name2를 출력한다.uncle, 여자면 aunt에서 시작해 앞에 great 를 b−2번 붙인 단어를 X라 하고 name1 is the XW of name2를 출력한다.nephew, 여자면 niece에서 시작해 앞에 great 를 a−2번 붙인 단어를 X라 하고 name1 is the XW of name2를 출력한다.name1 and name2 are D cousinsW를 출력한다. D는 d 뒤에 영어 서수 접미사를 붙인 것으로, 끝 두 자리가 11, 12, 13이면 th를 붙이고, 그렇지 않으면 끝자리가 1이면 st, 2이면 nd, 3이면 rd, 나머지는 th를 붙인다. 그러면 1st, 2nd, 3rd, 4th, 11th, 12th, 13th, 21st, 22nd, 23rd처럼 된다. k≥1이면 뒤에 공백 하나와 k를 쓰고, k=1이면 -time removed를, k≥2이면 -times removed를 이어 붙인다.