Coverity 낱말 퍼즐

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

문제

낱말 퍼즐은 대문자 8개로 이루어진 줄 8개, 즉 8×8 격자다. 이 격자에는 비밀 단어가 최대 열 개까지 숨어 있다.

단어가 숨어 있다는 것은 다음 세 방향 중 하나로 연속한 칸을 읽었을 때 그 단어가 그대로 나온다는 뜻이다.

  1. 가로, 왼쪽에서 오른쪽으로
  2. 세로, 위에서 아래로
  3. 대각선, 왼쪽 위에서 오른쪽 아래로

다른 방향은 인정하지 않는다. 격자의 끝에서 반대쪽 끝으로 이어 읽을 수 없고, 한 줄의 끝에서 다음 줄의 처음으로 이어 읽을 수도 없다.

찾아야 할 단어 목록과 격자가 주어진다. 단어가 모두 격자에 숨어 있는지 판정하라.

입력

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

각 테스트 케이스의 첫 줄에는 찾아야 할 단어의 개수 NN (1N101 \le N \le 10)이 주어진다. 이어지는 NN개의 줄에는 단어가 한 줄에 하나씩 주어지며, 각 단어는 길이가 1 이상 8 이하이고 대문자 A부터 Z까지로만 이루어진다.

그다음 8개의 줄에는 각각 대문자 8개로 이루어진 문자열이 주어진다. 이 중 ii번째 줄은 낱말 퍼즐의 위에서 ii번째 가로줄을 왼쪽부터 오른쪽으로 적은 것이다.

같은 단어가 두 번 이상 주어질 수 있다.

출력

각 테스트 케이스마다 한 줄에 답을 출력한다. NN개의 단어가 모두 격자에 숨어 있으면 Yes를, 하나라도 숨어 있지 않으면 No를 출력한다.