애너그램 피라미드

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

문제

20세기 신문 뒷면에는 애너그램 퍼즐이 자주 실렸다. 그중 하나가 애너그램 피라미드로, 단어를 위로 쌓아 올린 것이다. 맨 아래 단어가 NN글자면 그 위 단어는 N1N-1글자, 그다음은 N2N-2글자로 한 글자씩 짧아진다. 맨 아래를 제외한 모든 단어는 바로 아래 단어에서 글자 하나를 빼고 남은 글자를 재배열해서 만든다.

애너그램 피라미드의 예는 다음과 같다.

  • PIN
  • SNIP
  • PAINS
  • PIANOS

단어 사전과 두 단어가 주어진다. 하나는 꼭대기에 놓을 단어이고, 하나는 맨 아래에 놓을 단어이다. 맨 아래 단어를 밑변으로, 꼭대기 단어를 꼭대기로 하는 애너그램 피라미드를 쌓을 수 있는지 판정하는 프로그램을 작성하라. 피라미드에 쌓는 단어는 모두 사전에 있어야 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 파일의 끝까지 처리한다.

각 테스트 케이스의 첫 줄에 사전에 담긴 단어의 개수 NN이 주어진다. (N<100000N < 100000) 다음 NN개의 줄에 단어가 하나씩 주어진다. 그다음 줄에 질의의 개수 MM이 주어진다. (M<10M < 10) 이어지는 MM개의 줄에는 꼭대기 단어와 맨 아래 단어가 공백 하나를 사이에 두고 주어진다. 두 단어는 모두 사전에 있고, 꼭대기 단어가 맨 아래 단어보다 짧다.

모든 단어는 알파벳 1글자 이상 30글자 이하이다. 같은 글자의 대문자와 소문자는 같은 글자로 본다.

출력

각 테스트 케이스마다 Case, 공백 하나, 테스트 케이스 번호, 콜론을 한 줄에 출력한다. 번호는 입력 전체에서 1부터 차례로 매긴다. 그 뒤에 질의마다 한 줄씩, 입력에 주어진 순서대로 피라미드를 쌓을 수 있으면 yes를, 쌓을 수 없으면 no를 출력한다.

줄 끝에 공백을 붙이지 않고, 테스트 케이스 사이에 빈 줄을 넣지 않는다.