func_code_string: #include <bits/stdc++.h>   using namespace std;   class C_ {};   template <typename T>   C_& operator<<(C_& __m, const T& __s) {     if (!1) cerr <<   E[91m  << __s <<   E[0m ;     return __m;   }   C_ merr;   struct __s {     __s() {       if (1) {         ios_base::Init i;         cin.sync_with_stdio(0);         cin.tie(0);       }     }     ~__s() {       merr <<  Execution time:   << (double)clock() / CLOCKS_PER_SEC <<   s. n ;     }   } __S;   char A[2222][2222];   bool u[2222][2222];   int n, m;   bool check(int x, int y) {     int i = x, j = y;     int cnt = 0;     if (!(0 <= x && x < n) || !(0 <= y && y < m) || A[x][y] !=  . ) return false;     cnt += (i == 0 || A[i - 1][j] !=  . );     cnt += (j == 0 || A[i][j - 1] !=  . );     cnt += (i == n - 1 || A[i + 1][j] !=  . );     cnt += (j == m - 1 || A[i][j + 1] !=  . );     return !u[i][j] && cnt == 3;   }   void add(queue<pair<int, int> >& Q, int x, int y) {     if (check(x, y)) {       Q.push(make_pair(x, y));       u[x][y] = 1;     }   }   int main() {     int left = 0;     queue<pair<int, int> > Q;     cin >> n >> m;     for (int i = 0; i < n; i++) {       string s;       cin >> s;       for (int j = 0; j < m; j++) {         A[i][j] = s[j];         if (A[i][j] ==  . ) {           left++;         }       }     }     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         if (A[i][j] !=  . ) continue;         add(Q, i, j);       }     }     while (Q.size()) {       int x = Q.front().first, y = Q.front().second;       Q.pop();       if (A[x][y] !=  . ) continue;       if (x != n - 1 && A[x + 1][y] ==  . ) {         A[x][y] =  ^ ;         A[x + 1][y] =  v ;         left -= 2;         add(Q, x - 1, y);         add(Q, x, y - 1);         add(Q, x, y + 1);         add(Q, x + 1, y - 1);         add(Q, x + 1, y + 1);         add(Q, x + 2, y);       } else if (x != 0 && A[x - 1][y] ==  . ) {         A[x - 1][y] =  ^ ;         A[x][y] =  v ;         left -= 2;         add(Q, x - 2, y);         add(Q, x, y - 1);         add(Q, x, y + 1);         add(Q, x - 1, y - 1);         add(Q, x - 1, y + 1);         add(Q, x + 1, y);       } else if (y != m - 1 && A[x][y + 1] ==  . ) {         A[x][y] =  < ;         A[x][y + 1] =  > ;         left -= 2;         add(Q, x, y - 1);         add(Q, x - 1, y);         add(Q, x - 1, y + 1);         add(Q, x + 1, y);         add(Q, x + 1, y + 1);         add(Q, x + 2, y);       } else if (y != 0 && A[x][y - 1] ==  . ) {         A[x][y - 1] =  < ;         A[x][y] =  > ;         left -= 2;         add(Q, x, y - 2);         add(Q, x - 1, y);         add(Q, x - 1, y - 1);         add(Q, x + 1, y);         add(Q, x + 1, y - 1);         add(Q, x + 2, y);       }       for (int dx = -3; dx <= 3; dx++) {         for (int dy = -3; dy <= 3; dy++) {           add(Q, x + dx, y + dy);         }       }     }     if (left != 0) {       cout <<  Not unique  <<   n ;       return 0;     }     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         cout << A[i][j];       }       cout <<   n ;     }     return 0;   }   