#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const double eps = 1e-9;
const int INF = inf;
const double EPS = eps;
struct __timestamper {};
int main() {
  int n;
  while (scanf("%d", &n) == 1) {
    vector<string> f(n);
    for (int y = 0; y < (n); y++) {
      static char str[51];
      scanf("%s", str);
      f[y] = str;
    }
    vector<vector<bool> > vecs(2 * n - 1, vector<bool>(2 * n - 1, true));
    for (int y1 = 0; y1 < (n); y1++)
      for (int x1 = 0; x1 < (n); x1++)
        if (f[y1][x1] == 'o') {
          for (int y2 = 0; y2 < (n); y2++)
            for (int x2 = 0; x2 < (n); x2++)
              if (f[y2][x2] == '.') {
                vecs[y2 - y1 + n - 1][x2 - x1 + n - 1] = false;
              }
        }
    vector<string> f2(n, string(n, '.'));
    for (int y = 0; y < (n); y++)
      for (int x = 0; x < (n); x++)
        if (f[y][x] == 'o') {
          f2[y][x] = 'o';
          for (int dy = 0; dy < (2 * n - 1); dy++)
            for (int dx = 0; dx < (2 * n - 1); dx++)
              if (vecs[dy][dx]) {
                int nx = x + dx - (n - 1);
                int ny = y + dy - (n - 1);
                if (nx < 0 || n <= nx) continue;
                if (ny < 0 || n <= ny) continue;
                if (f2[ny][nx] == '.') {
                  f2[ny][nx] = 'x';
                }
              }
        }
    if (f != f2) {
      printf("NO\n");
      continue;
    }
    printf("YES\n");
    for (int dy = 0; dy < (2 * n - 1); dy++) {
      for (int dx = 0; dx < (2 * n - 1); dx++) {
        if (dx == n - 1 && dy == n - 1)
          printf("o");
        else
          printf("%c", ".x"[!!vecs[dy][dx]]);
      }
      printf("\n");
    }
  }
  return 0;
}
