#include <bits/stdc++.h>
using namespace std;
const int maxn = 505;
const long long mod = 1e9 + 7;
const int INF = 0x3f3f3f;
const double eps = 1e-6;
int n, m, cnt;
const int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int step[maxn][maxn];
char mp[maxn][maxn];
struct node {
  int x, y;
} now, nex;
struct node2 {
  int op, x, y;
} ans[1000005];
struct node3 {
  int x, y, val;
  friend bool operator<(node3 a, node3 b) { return a.val < b.val; }
};
bool inbound(node a) { return a.x >= 1 && a.x <= n && a.y >= 1 && a.y <= m; }
void bfs(int x, int y) {
  queue<node> q;
  now.x = x;
  now.y = y;
  q.push(now);
  step[x][y] = 1;
  while (q.size()) {
    now = q.front();
    q.pop();
    for (int i = 0; i < 4; i++) {
      nex.x = now.x + dir[i][0];
      nex.y = now.y + dir[i][1];
      if (inbound(nex) && mp[nex.x][nex.y] == 'B' && step[nex.x][nex.y] == 0) {
        step[nex.x][nex.y] = step[now.x][now.y] + 1;
        q.push(nex);
      }
    }
  }
}
int main() {
  while (~scanf("%d%d", &n, &m)) {
    cnt = 0;
    memset((step), (0), sizeof(step));
    for (int i = 1; i <= n; i++) {
      scanf("%s", mp[i] + 1);
    }
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++) {
        if (mp[i][j] == '.') {
          ans[cnt].x = i;
          ans[cnt].y = j;
          ans[cnt++].op = 1;
          mp[i][j] = 'B';
        }
      }
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++) {
        if (mp[i][j] == 'B' && step[i][j] == 0) {
          bfs(i, j);
        }
      }
    node3 temp;
    priority_queue<node3> q;
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++) {
        if (mp[i][j] == 'B') {
          temp.x = i;
          temp.y = j;
          temp.val = step[i][j];
          q.push(temp);
        }
      }
    while (q.size()) {
      temp = q.top();
      q.pop();
      int xx = temp.x;
      int yy = temp.y;
      int val = temp.val;
      if (val != 1) {
        ans[cnt].x = xx;
        ans[cnt].y = yy;
        ans[cnt++].op = 3;
        ans[cnt].x = xx;
        ans[cnt].y = yy;
        ans[cnt++].op = 2;
      }
    }
    printf("%d\n", cnt);
    for (int i = 0; i < cnt; i++) {
      if (ans[i].op == 1) printf("B ");
      if (ans[i].op == 2) printf("R ");
      if (ans[i].op == 3) printf("D ");
      printf("%d %d\n", ans[i].x, ans[i].y);
    }
  }
  return 0;
}
