#include <bits/stdc++.h>
using namespace std;
typedef struct Point {
  int i;
  int j;
} Point;
bool put(int i, int j, char **m, int n) {
  if (m[i][j] == 0 && (i > 0 && m[i - 1][j] == 0) &&
      (j > 0 && m[i][j - 1] == 0) && (i < n - 1 && m[i + 1][j] == 0) &&
      (j < n - 1 && m[i][j + 1] == 0)) {
    m[i][j] = 1;
    if (i > 0) {
      m[i - 1][j] = 1;
    }
    if (j > 0) {
      m[i][j - 1] = 1;
    }
    if (i < n - 1) {
      m[i + 1][j] = 1;
    }
    if (j < n - 1) {
      m[i][j + 1] = 1;
    }
    return true;
  }
  return false;
}
int main(int argc, const char *argv[]) {
  int n;
  cin >> n;
  char **m = new char *[n];
  for (int i = 0; i < n; i++) {
    m[i] = new char[n];
    for (int j = 0; j < n; j++) {
      char c;
      cin >> c;
      if (c == '.') {
        m[i][j] = 0;
      } else {
        m[i][j] = 1;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      put(i, j, m, n);
    }
  }
  bool answer = true;
  for (int i = 0; i < n && answer; i++) {
    for (int j = 0; j < n && answer; j++) {
      if (m[i][j] == 0) {
        answer = false;
      }
    }
  }
  cout << (answer ? "YES" : "NO");
  for (int i = 0; i < n; i++) {
    delete[](m[i]);
  }
  delete[](m);
  return 0;
}
