#include <bits/stdc++.h>
using namespace std;
char str[52][52], txt[102][102];
int dirx[] = {0, 0, 1, -1, 1, 1, -1, -1};
int diry[] = {1, -1, 0, 0, -1, 1, -1, 1};
bool vis[52][52];
vector<pair<int, int> > vec;
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%s", str[i]);
  for (int i = 1; i < n; i++)
    for (int j = 1; j < n; j++)
      for (int k = 0; k < 8; k++) {
        bool f = 0;
        for (int x = 0; x < n && !f; x++)
          for (int y = 0; y < n && !f; y++) {
            if (str[x][y] != 'o') continue;
            int a = x + (dirx[k] * i);
            int b = y + (diry[k] * j);
            f = (a >= 0 && a < n && b >= 0 && b < n && str[a][b] == '.');
          }
        if (!f) vec.push_back({(dirx[k] * i), (diry[k] * j)});
      }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      if (str[i][j] != 'o') continue;
      for (int k = 0; k < vec.size(); k++) {
        int a = i + vec[k].first;
        int b = j + vec[k].second;
        if (a >= 0 && a < n && b >= 0 && b < n) vis[a][b] = 1;
      }
    }
  bool f = 0;
  for (int i = 0; i < n && !f; i++)
    for (int j = 0; j < n && !f; j++)
      f = ((str[i][j] == '.' && vis[i][j]) || (str[i][j] == 'x' && !vis[i][j]));
  if (f)
    printf("NO\n");
  else {
    printf("YES\n");
    for (int i = 0; i < (2 * n - 1); i++)
      for (int j = 0; j < (2 * n - 1); j++) txt[i][j] = '.';
    txt[n - 1][n - 1] = 'o';
    for (int i = 0; i < vec.size(); i++)
      txt[n - 1 + vec[i].first][n - 1 + vec[i].second] = 'x';
    for (int i = 0; i < (2 * n - 1); i++) {
      for (int j = 0; j < (2 * n - 1); j++) printf("%c", txt[i][j]);
      puts("");
    }
  }
  return 0;
}
