#include <iostream>
using namespace std;
int maxn = 110;
int dx[] = {1, 1, 1, 0, 0, -1,-1,-1 }; //方向数组
int dy[] = {1, 0,-1, 1,-1, 0 , 1,-1 };
string cmp = "yizhong"; // 比较数组
char A[maxn][maxn], ans[maxn][maxn];
int mark[maxn][maxn], n;
void dfs(int x,int y) {
for(int i = 0;i < 8;i++) { //枚举8个方向
int flag = 1;
for(int j = 1;j <= 6;j++) { //以1个方向比较 “izhong”
int nx = x + j*dx[i];
int ny = y + j*dy[i];
if(nx < 1 || nx > n || ny < 1 || ny > n) { //判越界
flag = 0;
break;
}
if(cmp[j] != A[nx][ny]) { //判断第j位是否符合
flag = 0;
break;
}
}
if(flag == 0) continue;
for(int j = 0;j <= 6;j++) { //符合就记录在ans数组里
int nx = x + j*dx[i];
int ny = y + j*dy[i];
ans[nx][ny] = A[nx][ny];
}
}
return;
}
int main() {
cin >> n;
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= n;j++) {
cin >> A[i][j];
}
}
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= n;j++) {
if(A[i][j] == 'y') dfs(i,j);//如果发现有y就开始搜索
}
}
for(int i = 1;i <= n;i++) { //输出
for(int j = 1;j <= n;j++) {
if(ans[i][j] == 0) ans[i][j] = '*';//如果没有改动就输出*
cout << ans[i][j];
}
cout << endl;
}
return 0;
}
92