퍼즐

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

문제

지성이는 ACM 대학교 컴퓨터공학과의 학생회장이다. 곧 학과의 연례 축제가 열리고, 지성이는 축제에서 진행할 행사를 준비하고 있다. 퍼즐을 만들고 푸는 것을 좋아하는 지성이는 축제를 위해 재미있는 문자열 퍼즐을 하나 만들기로 한다.

퍼즐의 규칙은 다음과 같다.

  1. 각 참가자에게 정수 nn이 주어지며, 알파벳 대문자 중 처음 nn개만 사용할 수 있다. 예를 들어 n=4n = 4이면 사용할 수 있는 문자는 A, B, C, D이다.
  2. 각 참가자에게 ss개의 금지 문자열도 주어진다. 어떤 금지 문자열도 다른 금지 문자열의 부분 문자열이 되지 않는다. 어떤 금지 문자열도 부분 문자열로 포함하지 않는 가장 긴 문자열을 만든 참가자가 승리한다.
  3. 그러한 가장 긴 문자열이 존재하지 않는 경우, 즉 조건을 만족하는 문자열을 얼마든지 길게 만들 수 있거나, 조건을 만족하는 비어 있지 않은 문자열을 하나도 만들 수 없는 경우에는 No를 출력한다.

예를 들어 n=2n = 2이면 사용할 수 있는 문자는 A와 B이다. 금지 문자열이 {AAA, AB, BA, BB}이면, 이 네 문자열을 부분 문자열로 포함하지 않는 가장 긴 문자열은 AA이다. 하지만 금지 문자열이 {AAA, BBB, ABAB, BBAA}이면, ABAABAABA... 처럼 얼마든지 길게 이어 붙인 문자열이 어떤 금지 문자열도 포함하지 않으므로 가장 긴 문자열이 존재하지 않고, 답은 No이다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 첫째 줄에는 두 정수 nn (1n261 \le n \le 26)과 ss (1s10001 \le s \le 1000)가 주어지며, 각각 사용할 수 있는 문자의 개수와 금지 문자열의 개수를 나타낸다. 이어지는 ss개의 줄에는 금지 문자열이 한 줄에 하나씩 주어진다. 각 금지 문자열의 길이는 최대 5050이고, 처음 nn개의 대문자로만 이루어지며, 어떤 금지 문자열도 다른 금지 문자열의 부분 문자열이 아니다.

출력

각 테스트 케이스마다 정확히 한 줄을 출력한다. 조건을 만족하는 가장 긴 문자열이 존재하면 그 문자열을 출력하고, 존재하지 않으면 No를 출력한다. 조건을 만족하는 문자열이란 어떤 금지 문자열도 부분 문자열로 포함하지 않는 문자열이다. 조건을 만족하는 문자열을 얼마든지 길게 만들 수 있거나, 조건을 만족하는 문자열이 빈 문자열밖에 없는 경우에는 No를 출력한다. 최대 길이가 같은 문자열이 여러 개 있으면 그중 사전순으로 가장 큰 문자열을 출력한다.