func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 1005;   char st[maxn][maxn];   char tmp[maxn][maxn];   int row[maxn], rs;   int col[maxn], cs;   int n, m;   void init() {     scanf( %d%d , &n, &m);     for (int i = 1; i <= n; i++) scanf( %s , st[i] + 1);   }   void work() {     rs = 0;     for (int i = 1; i <= n; i++) {       bool flag = 0;       for (int j = 1; j <= m && !flag; j++)         if (st[i][j] ==  #  && st[i][j - 1] ==  #  && st[i][j + 1] ==  # )           flag = 1;       if (flag) row[rs++] = i;     }     cs = 0;     for (int j = 1; j <= m; j++) {       bool flag = 0;       for (int i = 1; i <= n && !flag; i++)         if (st[i][j] ==  #  && st[i - 1][j] ==  #  && st[i + 1][j] ==  # )           flag = 1;       if (flag) col[cs++] = j;     }     if (rs > 4) {       row[2] = row[rs - 2], row[3] = row[rs - 1];       rs = 4;     }     if (cs > 4) {       col[2] = col[cs - 2], col[3] = col[cs - 1];       cs = 4;     }   }   bool Same() {     for (int i = 1; i <= n; i++)       for (int j = 1; j <= m; j++)         if (st[i][j] != tmp[i][j]) return 0;     return 1;   }   bool Paint(int x1, int x2, int y1, int y2) {     for (int i = x1; i <= x2; i++) {       if (st[i][y1] !=  #  || st[i][y2] !=  # ) return 0;       tmp[i][y1] = tmp[i][y2] =  # ;     }     for (int i = y1; i <= y2; i++) {       if (st[x1][i] !=  #  || st[x2][i] !=  # ) return 0;       tmp[x1][i] = tmp[x2][i] =  # ;     }     return 1;   }   void print() {     for (int x1 = 0; x1 < rs; x1++)       for (int x2 = x1 + 1; x2 < rs; x2++)         if ((row[x2]) - (row[x1]) > 1)           for (int y1 = 0; y1 < cs; y1++)             for (int y2 = y1 + 1; y2 < cs; y2++)               if ((col[y2]) - (col[y1]) > 1)                 for (int x3 = 0; x3 < rs; x3++)                   for (int x4 = x1 + 1; x4 < rs; x4++)                     if ((row[x4]) - (row[x3]) > 1)                       for (int y3 = 0; y3 < cs; y3++)                         for (int y4 = y3 + 1; y4 < cs; y4++)                           if ((col[y4]) - (col[y3]) > 1) {                             memset(tmp,  . , sizeof(tmp));                             if (!Paint((row[x1]), (row[x2]), (col[y1]),                                        (col[y2])) ||                                 !Paint((row[x3]), (row[x4]), (col[y3]),                                        (col[y4])))                               continue;                             if (Same()) {                               printf( YES n%d %d %d %d n%d %d %d %d n , (row[x1]),                                      (col[y1]), (row[x2]), (col[y2]), (row[x3]),                                      (col[y3]), (row[x4]), (col[y4]));                               return;                             }                           }     puts( NO );   }   int main() {     init();     work();     print();     return 0;   }   