Універсальна система відповідей на запитання#3090

Універсальна система відповідей на запитання

2 секунди
64 мегабайти
Складна

Кожен студент потребує допомоги у здобутті нових знань, ставлячи запитання. Опитування показують, що деякі схожі питання часто повторюються. Тому було б корисно розробити автоматичну систему відповіді на запитання для таких випадків. Ваш алгоритм не має мати попередніх знань, але він повинен уміти читати речення й запам'ятовувати вказані факти. Коли задають запитання про такий факт, система повинна відповісти на нього правильно.

Вхідні дані

Вхід містить кілька діалогів.

У першому рядку задано одне додатне ціле число (T \leq 500, але зверніть увагу, що із них є відносно невеликими). Воно позначає кількість діалогів. Кожен діалог складається з одного чи кількох рядків. Кожен рядок містить речення: або твердження, або запитання. Твердження закінчуються крапкою (), а запитання — знаком питання (). Після кожного діалогу є додатковий рядок, який закінчується знаком оклику (). Визначення тверджень і запитань будуть розглянуті нижче.

Речення можуть містити слова, пробіли та розділові знаки. Усі слова складаються лише з латинських літер і є чутливими до регістру. На відміну від звичайних правил англійського письма, перша літера речення повинна залишатися малою, якщо тільки саме перше слово не повинно починатися з великої літери. Між словами немає зайвих пробілів. Жодне слово не міститиме більше символів. У будь-якому діалозі буде не більше рядків.

Твердження

Кожне твердження має одну з наступних форм:

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_phrase та verb_phrase — це окремі слова. Значення чотирьох форм такі:

are : Якщо є , тоді є .

can : Якщо є , тоді може .

everything which can can : Якщо може , тоді може .

everything which can are : Якщо може , тоді є .

Запитання

Кожне запитання має одну з наступних форм:

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 не перевищує , а кількість різних verb_phrase — не більше .

Вихідні дані

Для кожного тестового випадку виведіть два рядки. Перший рядок описує номер тестового випадку, починаючи з , а у другому рядку стільки символів, скільки запитань у цьому випадку. Кожен символ — це або Y (означає, що можна логічно отримати цей факт), або M (інакше), без лапок.

Приклади

Приклад 1

Loading
Loading