#include <bits/stdc++.h>
using namespace std;
const int MAX = 55;
int n;
string s[MAX], wynik[2 * MAX], pom[MAX];
void wczytaj_dane() {
  cin >> n;
  for (int i = 0; i < (n); i++) cin >> s[i];
}
bool na(int a) { return 0 <= a && a < n; }
bool na_planszy(int a, int b) { return na(a) && na(b); }
char ruch(int a, int b) {
  if (a == 0 && b == 0) return 'o';
  for (int i = 0; i < (n); i++)
    for (int j = 0; j < (n); j++)
      if (s[i][j] == 'o' && na_planszy(i + a, j + b) && s[i + a][j + b] == '.')
        return '.';
  return 'x';
}
void wypelnij_wynik() {
  for (int i = (-(n - 1)); i <= (n - 1); i++)
    for (int j = (-(n - 1)); j <= (n - 1); j++)
      wynik[(n - 1) + i].push_back(ruch(i, j));
}
void wypelnij_pom() {
  for (int i = 0; i < (n); i++)
    for (int j = 0; j < (n); j++) pom[i].push_back(s[i][j] == 'o' ? 'o' : '.');
  for (int i = 0; i < (n); i++)
    for (int j = 0; j < (n); j++)
      if (s[i][j] == 'o') {
        for (int a = (-(n - 1)); a <= (n - 1); a++)
          for (int b = (-(n - 1)); b <= (n - 1); b++)
            if (wynik[(n - 1) + a][(n - 1) + b] == 'x' &&
                na_planszy(i + a, j + b) && pom[i + a][j + b] != 'o')
              pom[i + a][j + b] = 'x';
      }
}
bool poprawny_wynik() {
  for (int i = 0; i < (n); i++)
    if (s[i] != pom[i]) return false;
  return true;
}
void wypisz_wynik() {
  for (int i = 0; i < (2 * n - 1); i++) cout << wynik[i] << '\n';
}
void zrob_test() {
  wczytaj_dane();
  wypelnij_wynik();
  wypelnij_pom();
  if (poprawny_wynik()) {
    cout << "YES\n";
    wypisz_wynik();
  } else
    cout << "NO\n";
}
int main() {
  ios_base::sync_with_stdio(0);
  zrob_test();
  return 0;
}
