단어와 주기율표

시간 제한1초메모리 제한128 MB

문제

주기율표와 여러 단어가 주어질 때, 각 단어를 주기율표에 있는 원소 기호들의 나열로 나타내는 프로그램을 작성하시오.

나타내는 방법이 여러 가지라면 다음 기준을 순서대로 적용한다.

  1. 사용한 원소의 개수가 가장 적은 것을 고른다.
  2. 개수가 같다면, 원소량(사용한 원소들의 번호의 합)이 가장 작은 것을 고른다.

위 두 기준을 모두 적용한 뒤에도 나타내는 방법이 둘 이상 남거나, 애초에 단어를 원소 기호로 나타낼 수 없다면 Too Obvious를 출력한다.

원소 기호는 항상 대문자 한 글자로 시작하고, 그 뒤에 0개 이상의 소문자가 이어진다. 단어를 원소 기호와 맞출 때 글자의 대소문자는 구분하지 않는다.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다.

각 테스트 케이스는 다음과 같이 구성된다.

  • 첫째 줄에 원소의 개수 $O$가 주어진다.
  • 다음 $O$개 줄에 원소 기호가 한 줄에 하나씩 주어진다.
  • 그다음 줄에 단어의 개수 $P$가 주어진다.
  • 다음 $P$개 줄에 단어가 한 줄에 하나씩 주어진다.

$O$, $P$, 그리고 각 단어와 원소 기호의 길이는 모두 $5000$보다 작다. 원소는 원소 번호 순서대로 주어지며, 번호는 $1$부터 시작해 $1$씩 증가한다.

출력

각 단어에 대해, 그 단어를 나타내는 원소 기호들을 순서대로 출력한다. 원소를 구분하기 위해 각 원소 기호는 대괄호 []로 감싼다. 나타내는 방법을 하나로 정하는 규칙은 문제 설명을 따른다. 나타낼 수 없거나 방법이 유일하지 않으면 Too Obvious를 출력한다.