func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, w1[555][555], w2[555][555], w3[555][555], gl, Pre[300011], anslen;   char ch;   struct AnsNode {     int x, y, z;     void init(int _x, int _y, int _z) { x = _x, y = _y, z = _z; }   } Ans[1000111];   struct Node {     int x, y;     void init(int _x, int _y) { x = _x, y = _y; }   } gg[300011];   void Read(int &res) {     for (ch = getchar(); ch !=  .  && ch !=  # ; ch = getchar())       ;     res = (ch ==  . );   }   void Work(int nowx, int nowy) {     int i, dx, dy;     gg[gl = 1].init(nowx, nowy);     w2[nowx][nowy] = 1;     for (i = 1; i <= gl; ++i) {       dx = gg[i].x, dy = gg[i].y;       if (dx > 1 && w1[dx - 1][dy] && w2[dx - 1][dy] == 0) {         w2[dx - 1][dy] = 1;         gg[++gl].init(dx - 1, dy);         Pre[gl] = i;       }       if (dx < n && w1[dx + 1][dy] && w2[dx + 1][dy] == 0) {         w2[dx + 1][dy] = 1;         gg[++gl].init(dx + 1, dy);         Pre[gl] = i;       }       if (dy > 1 && w1[dx][dy - 1] && w2[dx][dy - 1] == 0) {         w2[dx][dy - 1] = 1;         gg[++gl].init(dx, dy - 1);         Pre[gl] = i;       }       if (dy < m && w1[dx][dy + 1] && w2[dx][dy + 1] == 0) {         w2[dx][dy + 1] = 1;         gg[++gl].init(dx, dy + 1);         Pre[gl] = i;       }     }     for (i = gl; i > 1; --i) {       dx = gg[Pre[i]].x, dy = gg[Pre[i]].y;       if (w3[dx][dy] == 0) {         Ans[++anslen].init(1, dx, dy);         w3[dx][dy] = 1;       }       if (w3[gg[i].x][gg[i].y] == 1) Ans[++anslen].init(0, gg[i].x, gg[i].y);       if (w3[gg[i].x][gg[i].y] < 2) Ans[++anslen].init(2, gg[i].x, gg[i].y);       w3[gg[i].x][gg[i].y] = 2;     }     if (w3[dx][dy] == 0) {       Ans[++anslen].init(1, nowx, nowy);       w3[nowx][nowy] = 1;     }   }   int main() {     int i, j;     scanf( %d%d , &n, &m);     for (i = 1; i <= n; ++i)       for (j = 1; j <= m; ++j) Read(w1[i][j]);     memset(w2, 0, sizeof(w2));     memset(w3, 0, sizeof(w3));     anslen = 0;     for (i = 1; i <= n; ++i)       for (j = 1; j <= m; ++j)         if (w2[i][j] == 0 && w1[i][j] != 0) Work(i, j);     cout << anslen << endl;     for (i = 1; i <= anslen; ++i) {       if (Ans[i].x == 0)         printf( D %d %d n , Ans[i].y, Ans[i].z);       else if (Ans[i].x == 1)         printf( B %d %d n , Ans[i].y, Ans[i].z);       else         printf( R %d %d n , Ans[i].y, Ans[i].z);     }     return 0;   }   