교차로 이름 짓기

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

교토는 바둑판처럼 계획된 도시로 유명하다. 모든 거리는 남북 방향이거나 동서 방향이다. 일부 거리에는 번호가 붙어 있지만, 대부분은 고유한 이름을 가진다.

교차로는 그곳에서 만나는 두 거리의 이름을 따서 부른다. 예를 들어 Kawaramachi-Sanjo는 Kawaramachi 거리와 Sanjo 거리가 만나는 교차로이다. 그런데 문제가 하나 있다. 어느 이름을 먼저 써야 할까? 처음에는 순서가 제멋대로인 것처럼 보인다. 어떤 교차로는 Kawaramachi-Sanjo(남북 거리를 먼저)라고 부르지만, 다른 교차로는 Shijo-Kawaramachi(동서 거리를 먼저)라고 부른다. 경험이 쌓이면 사실 거리들 사이에 어떤 "순서(우선순위, 세기)"가 있음을 깨닫게 된다. 위 예에서 Shijo는 Kawaramachi보다 "강하고", Kawaramachi는 다시 Sanjo보다 "강하다". 이 순서를 이용하면 다른 교차로의 이름도 유추할 수 있다.

입력으로 알려진 교차로 이름 X-Y의 목록이 주어진다. 각 거리는 남북 방향이거나 동서 방향이며, 서로 직교하는(방향이 다른) 거리만 교차할 수 있다.

주어진 목록은 매우 불완전하므로, 먼저 다음 규칙으로 목록을 보완한다.

두 거리 A와 B는 아래 (1)~(3)이 모두 성립할 때 같은 세기(equal strength) 를 가진다.

  1. 입력에서 두 거리가 모두 같은 제3의 거리 C와 교차한다.
  2. 입력에 D-A와 B-D가 모두 나타나는 거리 D가 존재하지 않는다.
  3. 입력에 A-E와 E-B가 모두 나타나는 거리 E가 존재하지 않는다.

이 정의를 이용해 세기 관계를 확장한다.

A가 B보다 강하다(stronger) 는 것은, 길이가 2 이상인 수열 $A = A_1, A_2, \ldots, A_n = B$ 가 존재하여, 모든 $i,(1 \le i \le n-1)$ 에 대해 $A_i\text{-}A_{i+1}$ 이 입력의 교차로이거나 $A_i$ 와 $A_{i+1}$ 이 같은 세기를 가지는 경우를 말한다.

이제 다른 교차로 이름 X-Y가 올바른지 물어본다. 어떤 이름이 올바르다고 유추할 수 있으면 긍정으로, 그렇지 않으면 부정으로 답한다. 구체적으로,

  • 두 거리가 서로 직교함을 유추할 수 있고 X가 Y보다 강하면 YES
  • 그 밖의 모든 경우에는 NO

입력

입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합의 형식은 다음과 같다.

N
Crossing1
...
CrossingN
M
Question1
...
QuestionM

Crossing과 Question은 모두 다음 형식이다.

X-Y

여기서 X와 Y는 길이가 16 이하인 영숫자 문자열이다. 공백은 없으며, 알파벳은 대소문자를 구별한다.

$N$ 과 $M$ 은 각각 1 이상 1000 이하이고, 한 데이터 집합에 등장하는 거리는 200개를 넘지 않는다.

마지막 데이터 집합 뒤에는 0 하나만 있는 줄이 온다.

출력

각 데이터 집합에 대해 $M+1$ 개의 줄을 출력한다. 첫 줄에는 입력의 Crossing 부분에 등장하는 서로 다른 거리의 개수를 출력하고, 이어서 각 질문에 대한 답을 공백 없이 YES 또는 NO로 한 줄씩 출력한다.