#include <bits/stdc++.h>
using namespace std;
char a[99][99];
char b[99][99];
int main() {
  int n;
  scanf("%d", &n);
  vector<pair<int, int> > v;
  vector<pair<int, int> > ans;
  for (int i = 1; i <= n; i++) {
    scanf("\n");
    for (int j = 1; j <= n; j++) {
      scanf("%c", &a[i][j]);
      if (a[i][j] == 'o') v.push_back(make_pair(i, j));
    }
  }
  for (int dx = -n + 1; dx < n; dx++) {
    for (int dy = -n + 1; dy < n; dy++) {
      if (!dx && !dy) continue;
      bool f = 1;
      int cnt = 0;
      for (int i = 0; i < (int)v.size(); i++) {
        int x = v[i].first + dx;
        int y = v[i].second + dy;
        if (x > n || x < 1) {
          cnt++;
          continue;
        }
        if (y > n || y < 1) {
          cnt++;
          continue;
        }
        if (a[x][y] == '.') {
          f = 0;
          break;
        }
      }
      if (f && cnt != (int)v.size()) ans.push_back(make_pair(dx, dy));
    }
  }
  for (int i = 1; i < 2 * n; i++)
    for (int j = 1; j < 2 * n; j++) b[i][j] = '.';
  b[n][n] = 'o';
  for (int i = 0; i < (int)ans.size(); i++) {
    int dx = ans[i].first;
    int dy = ans[i].second;
    b[n + dx][n + dy] = 'x';
  }
  for (int i = 0; i < (int)v.size(); i++) {
    for (int j = 0; j < (int)ans.size(); j++) {
      int x = v[i].first + ans[j].first;
      int y = v[i].second + ans[j].second;
      if (x < 1 || x > n) continue;
      if (y < 1 || y > n) continue;
      a[x][y] = '.';
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (a[i][j] == 'o') a[i][j] = '.';
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (a[i][j] != '.') {
        puts("NO");
        return 0;
      }
    }
  }
  puts("YES");
  for (int i = 1; i < 2 * n; i++) {
    for (int j = 1; j < 2 * n; j++) {
      printf("%c", b[i][j]);
    }
    printf("\n");
  }
  return 0;
}
