#include <bits/stdc++.h>
using namespace std;
const int MAXN = 111111;
const int oo = (int)(1e9);
const long double PI = 3.141592653589793;
template <class T>
inline bool chkmin(T &a, T b) {
  return a > b ? a = b, true : false;
}
template <class T>
inline bool chkmax(T &a, T b) {
  return a < b ? a = b, true : false;
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <typename T>
T gcd(T x, T y) {
  for (T t; x; t = x, x = y % x, y = t)
    ;
  return y;
}
template <typename TT>
void read(TT &x) {
  char ch;
  for (ch = getchar(); ch > '9' || ch < '0'; ch = getchar())
    ;
  for (x = 0; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - 48;
}
int n, m, a[555][555], b[555][555], d[555 * 555], Q[555 * 555], f[555 * 555],
    V[555 * 555];
vector<int> e[555 * 555], s[555 * 555];
vector<int> ans;
vector<pair<int, int> > aaa;
int get(int x) { return x == f[x] ? x : f[x] = get(f[x]); }
void Init() {
  scanf("%d%d", &n, &m);
  ;
  int ANS = 0;
  aaa.clear(), ans.clear();
  memset(a, 0, sizeof(a));
  ;
  memset(V, 0, sizeof(V));
  ;
  for (int i = 1; i <= n; i++) {
    scanf("\n");
    for (int j = 1; j <= m; j++) {
      char x;
      scanf("%c", &x);
      a[i][j] = (x == '.');
      if (x == '.') aaa.push_back(make_pair(i, j)), ans.push_back(0), ANS++;
    }
  }
  int tot = 0;
  int nn = n * m;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) b[i][j] = ++tot;
  for (int i = 1; i <= nn; i++) {
    f[i] = i;
    e[i].clear();
    s[i].clear();
  }
  memset(d, 0, sizeof(d));
  ;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      if (a[i][j] + a[i + 1][j] == 2) {
        int u = b[i][j], v = b[i + 1][j];
        int uu = get(u), vv = get(v);
        if (uu != vv) {
          e[u].push_back(v);
          e[v].push_back(u);
          d[u]++, d[v]++;
          f[uu] = vv;
        }
      }
      if (a[i][j] + a[i][j + 1] == 2) {
        int u = b[i][j], v = b[i][j + 1];
        int uu = get(u), vv = get(v);
        if (uu != vv) {
          e[u].push_back(v);
          e[v].push_back(u);
          d[u]++, d[v]++;
          f[uu] = vv;
        }
      }
    }
  int l = 0, r = 0;
  for (int i = 1; i <= nn; i++) s[get(i)].push_back(i);
  for (int F = 1; F <= nn; F++)
    if (s[F].size()) {
      for (__typeof(s[F].begin()) y = s[F].begin(); y != s[F].end(); y++) {
        int i = *y;
        if (d[i] == 1) Q[r++] = i, V[i] = 1;
      }
      while (l < r) {
        int u = Q[l++];
        int i = (u - 1) / m + 1, j = (u - 1) % m + 1;
        if (d[u] < 1 || a[i][j] == 2) continue;
        aaa.push_back(make_pair(i, j)), ans.push_back(1), ANS += 2;
        a[i][j] = 2;
        for (__typeof(e[u].begin()) y = e[u].begin(); y != e[u].end(); y++) {
          d[u]--;
          if (--d[*y] == 1 && !V[*y]) Q[r++] = *y, V[*y] = 1;
        }
      }
    }
  cout << ANS << endl;
  for (int i = 0; i < ans.size(); i++) {
    if (ans[i]) {
      cout << 'D' << ' ' << aaa[i].first << ' ' << aaa[i].second << endl;
      cout << 'R' << ' ' << aaa[i].first << ' ' << aaa[i].second << endl;
    } else {
      cout << 'B' << ' ' << aaa[i].first << ' ' << aaa[i].second << endl;
    }
  }
}
int main() {
  Init();
  return 0;
}
