#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;
}
