#include <bits/stdc++.h>
using namespace std;
vector<int> v[3];
const int maxn = 505;
int n, m;
char s[maxn][maxn];
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
bool OK(int x, int y) {
  if (x < 1 || x > n || y < 1 || y > m) return false;
  if (s[x][y] == '#' || s[x][y] == 'B' || s[x][y] == 'R') return false;
  return true;
}
void Dfs(int x, int y) {
  v[0].push_back(0);
  v[1].push_back(x);
  v[2].push_back(y);
  s[x][y] = 'B';
  for (int i = 0; i < 4; i++) {
    int nx = x + dx[i], ny = y + dy[i];
    if (OK(nx, ny)) {
      Dfs(nx, ny);
      v[0].push_back(2);
      v[1].push_back(nx);
      v[2].push_back(ny);
      v[0].push_back(1);
      v[1].push_back(nx);
      v[2].push_back(ny);
      s[nx][ny] = 'R';
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%s", s[i] + 1);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      if (s[i][j] == '.') Dfs(i, j);
  printf("%d\n", v[0].size());
  for (int i = 0; i < v[0].size(); i++) {
    if (v[0][i] == 0)
      printf("B ");
    else if (v[0][i] == 1)
      printf("R ");
    else
      printf("D ");
    printf("%d %d\n", v[1][i], v[2][i]);
  }
  return 0;
}
