#include <bits/stdc++.h>
using namespace std;
const int dx[4] = {0, 0, -1, 1};
const int dy[4] = {-1, 1, 0, 0};
int n, m, tot, L;
char b[505][505];
int p[505][505];
void dfs(int x, int y, int d, int flag) {
  p[x][y] = 1;
  for (int i = 0; i < 4; i++) {
    int tx = dx[i] + x, ty = dy[i] + y;
    if (tx >= 0 && tx < n && ty >= 0 && ty < m)
      if (b[tx][ty] != '#' && p[tx][ty] == 0) dfs(tx, ty, d + 1, flag);
  }
  ++x;
  ++y;
  if (d) {
    tot += 2;
    if (flag) printf("D %d %d\nR %d %d\n", x, y, x, y);
  }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> b[i];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (b[i][j] == '.') tot++;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (b[i][j] == '.' && p[i][j] == 0) dfs(i, j, 0, 0);
  printf("%d\n", tot);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (b[i][j] == '.') printf("B %d %d\n", i + 1, j + 1);
  memset(p, 0, sizeof(p));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (b[i][j] == '.' && p[i][j] == 0) dfs(i, j, 0, 1);
  return 0;
}
