import java.util.Scanner;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
int[] dr = {1, 1, 1}; // 델타
int[] dc = {1, 0, -1}; // 우하 하 좌하
int T = sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++) {
int N = sc.nextInt();
String ans = "NO";
char[][] arr = new char[N][N]; // 오목판
for(int i = 0; i < N; i++) {
String tempStr = sc.next(); // 오목돌 입력받기
arr[i] = tempStr.toCharArray();
if(tempStr.contains("ooooo")) { // 행 검색
ans = "YES";
}
}
if(ans.equals("NO")) {
all:for(int i = 0; i < N - 4; i++) { // 내 행의 위치
for(int j = 0; j < N; j++) { // 내 열의 위치
for(int d = 0; d < 3; d++) { // 탐색할 방향
boolean bingo = true;
for(int k = 0; k < 5; k++) { // 탐색
int nr = i + dr[d] * k;
int nc = j + dc[d] * k;
// 인덱스 범위
if(nr >= 0 && nr < N && nc >= 0 && nc < N) {
if(arr[nr][nc] == '.') {
bingo = false;
break;
}
} else { // 인덱스 범위를 벗어나면 false
bingo = false;
break;
}
} // end for k
if(bingo) { // 조건을 모두 충족하면 YES
ans = "YES";
break all;
}
} // end for d
} //end for j
} // end for i
} // end if
System.out.printf("#%s %s%n", test_case, ans);
}
}
}
import java.util.Scanner;
public class Solution {
// 델타 (좌하 하 우하 우)
static int[][] drc = { { 1, -1 }, { 1, 0 }, { 1, 1 }, { 0, 1 } };
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++) {
int N = sc.nextInt();
char[][] arr = new char[N][N]; // 오목판
for (int i = 0; i < N; i++) {
arr[i] = sc.next().toCharArray(); // 오목돌 입력받기
}
boolean flag = false;
all: for (int r = 0; r < N; r++) { // 내 행의 위치
for (int c = 0; c < N; c++) { // 내 열의 위치
// 탐색
if (arr[r][c] == 'o') { // 내 위치에 오목돌 있으면
flag = check(arr, r, c, N);
if (flag) {
break all;
}
} // end if 'o'
} // end for c
} // end for all
if (flag) {
System.out.println("#" + test_case + " " + "YES");
} else {
System.out.println("#" + test_case + " " + "NO");
}
} // end for : test_case
}
static boolean check(char[][] arr, int r, int c, int size) {
for (int d = 0; d < 4; d++) { // 탐색 방향
for (int k = 1; k <= 4; k++) { // 오목돌 4개 탐색
int nr = r + drc[d][0] * k;
int nc = c + drc[d][1] * k;
// 인덱스 범위 & 오목돌 존재
if (nr >= 0 && nr < size
&& nc >= 0 && nc < size
&& arr[nr][nc] == 'o') {
if (k == 4) {
return true;
}
} else {
break;
}
} // end for k
} // end for d
return false;
}
}