만능 질의응답 시스템

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

문제

학생들은 질문을 던지며 끊임없이 새로운 지식을 얻는다. 조사에 따르면 서로 비슷한 질문이 반복해서 자주 나온다고 한다. 그래서 이런 질문에 자동으로 답해 주는 시스템을 만들면 유용하다. 이 프로그램은 사전 지식이 전혀 없는 상태에서 시작하지만, 문장을 읽어 그 안에 서술된 사실을 기억하고, 그 사실에 대한 질문이 들어오면 올바르게 답해야 한다.

입력

입력은 여러 개의 대화(dialogue)로 이루어진다.

첫 줄에는 양의 정수 $T$ 하나가 주어진다($T \le 500$이며, 그중 약 95%는 비교적 작다). 이는 뒤따르는 대화의 개수이다. 각 대화는 한 줄 이상으로 이루어지고, 각 줄에는 문장이 정확히 하나씩 들어 있으며 이 문장은 서술문(statement) 또는 질문(question)이다. 서술문은 마침표(.)로 끝나고, 질문은 물음표(?)로 끝난다. 각 대화 뒤에는 느낌표(!)로 끝나는 줄이 하나 더 있으며, 이 줄은 대화의 끝을 표시할 뿐이다.

문장은 단어, 공백, 문장부호로 이루어질 수 있다. 모든 단어는 라틴 문자만으로 이루어지며 대소문자를 구분한다. 일반적인 영어 표기 규칙과 달리, 첫 단어 자체가 대문자로 시작해야 하는 경우가 아니라면 문장의 첫 글자는 소문자로 둔다. 단어 사이에 불필요한 공백은 없다. 어떤 단어도 10글자를 넘지 않는다. 한 대화의 줄 수는 최대 1000개이다.

서술문

각 서술문은 다음 형식 중 하나이다.

noun_phrase are noun_phrase.
noun_phrase can verb_phrase.
everything which can verb_phrase can verb_phrase.
everything which can verb_phrase are noun_phrase.

noun_phraseverb_phrase는 각각 한 단어이다. 네 형식의 의미는 다음과 같다.

A are B: X가 A이면, X는 B이다.
A can B: X가 A이면, X는 B할 수 있다.
everything which can A can B: X가 A할 수 있으면, X는 B할 수 있다.
everything which can A are B: X가 A할 수 있으면, X는 B이다.

질문

각 질문은 다음 형식 중 하나이다.

are noun_phrase noun_phrase?
can noun_phrase verb_phrase?
can everything which can verb_phrase verb_phrase?
are everything which can verb_phrase noun_phrase?

이들은 위 네 서술문에 대응하는 질문 형태이며, 각 질문은 해당 사실이 같은 대화에서 지금까지 주어진 서술문들로부터 논리적으로 유도될 수 있는지를 묻는다.

각 대화에서 서로 다른 noun_phrase의 개수는 최대 100개, 서로 다른 verb_phrase의 개수는 최대 100개이다.

출력

각 대화마다 두 줄을 출력한다. 첫 줄은 Case #k:이며 k는 1부터 세는 대화 번호이다. 둘째 줄에는 그 대화의 질문마다 한 글자씩 질문 순서대로 출력한다. 해당 사실을 논리적으로 유도할 수 있으면 Y, 그렇지 않으면 M을 쓴다. 대화에 질문이 하나도 없으면 둘째 줄은 빈 줄이다.