애매함

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

문제

단어에서 첫 글자와 마지막 글자를 제외한 나머지 글자들의 순서를 섞어도, 사람은 그 단어를 어렵지 않게 읽을 수 있다. 예를 들어 문장 "tihs snetncee mkaes prfecet sesne"는 대부분의 사람이 어렵지 않게 읽는다.

또한 문장에서 단어 사이의 공백을 모두 없애도 문장을 읽는 데 큰 어려움이 없다. 예를 들어 "thissentencemakesperfectsense"가 그렇다.

하지만 글자 순서를 섞는 것과 공백을 없애는 것을 함께 적용하면 문장을 읽기가 어려워진다. "tihssnetnceemkaesprfecetsesne" 같은 문장이 그 예이다.

각 단어의 첫 글자와 마지막 글자는 그대로 두고 가운데 글자들만 임의로 섞은 뒤, 단어 사이의 공백을 모두 제거한 문장이 주어진다. 여기에 사용할 수 있는 올바른 단어의 목록도 함께 주어진다. 이 정보를 이용하여 원래 문장을 복원하는 프로그램을 작성하시오.

어떤 조각(원래의 한 단어)이 올바른 단어와 일치한다는 것은, 길이가 같고 첫 글자와 마지막 글자가 같으며 사용된 글자의 구성(글자별 개수)이 같다는 뜻이다.

입력

첫째 줄에 테스트 케이스의 수 $T$가 주어진다. ($1 \le T \le 100$)

각 테스트 케이스는 두 부분으로 이루어진다.

  • 첫째 줄: 글자 순서를 섞고 공백을 없앤 문장. 알파벳 소문자로만 이루어지며 길이는 최대 $1000$이다.
  • 둘째 줄: 올바른 단어의 수 $n$. ($1 \le n \le 10,000$)
  • 이어지는 $n$개의 줄: 올바른 단어. 모두 서로 다르고 알파벳 소문자로만 이루어지며 길이는 최대 $100$이다.

출력

각 테스트 케이스마다 한 줄에 결과를 출력한다.

  • 원래 문장을 유일하게 복원할 수 있으면 그 문장을 단어 사이마다 한 칸 공백으로 구분하여 출력한다.
  • 복원 방법이 두 가지 이상이면 ambiguous를 출력한다.
  • 복원이 불가능하면 impossible을 출력한다.