func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 1000000000;   struct debugger {     template <typename T>     debugger& operator,(const T& v) {       cerr << v <<    ;       return *this;     }   } dbg;   char b[100][100];   int n;   bool in(int x) { return x >= 0 && x < n; }   bool in(int x, int y) { return in(x) && in(y); }   char a[200][200];   int main() {     scanf( %d , &n);     for (int i = 0; i < (n); i++) scanf( %s , b[i]);     vector<pair<int, int> > ans;     for (int dx = (-n + 1); dx <= (n - 1); dx++) {       for (int dy = (-n + 1); dy <= (n - 1); dy++) {         if (dx == 0 && dy == 0) {           continue;         }         bool fail = false;         for (int i = 0; i < (n); i++) {           for (int j = 0; j < (n); j++) {             if (b[i][j] ==  o  && in(i + dx, j + dy) &&                 b[i + dx][j + dy] ==  . ) {               fail = true;             }           }         }         if (!fail) {           ans.emplace_back(dx, dy);         }       }     }     for (int i = 0; i < (n); i++)       for (int j = 0; j < (n); j++) {         if (b[i][j] ==  x ) {           bool success = false;           for (auto& p : ans) {             if (in(i - p.first, j - p.second) &&                 b[i - p.first][j - p.second] ==  o ) {               success = true;             }           }           if (!success) {             puts( NO );             return 0;           }         }       }     puts( YES );     for (int i = 0; i < (2 * n - 1); i++) {       for (int j = 0; j < (2 * n - 1); j++) {         a[i][j] =  . ;       }     }     a[n - 1][n - 1] =  o ;     for (auto& p : ans) {       a[n - 1 + p.first][n - 1 + p.second] =  x ;     }     for (int i = 0; i < (2 * n - 1); i++) {       puts(a[i]);     }   }   