#include <bits/stdc++.h>
using namespace std;
int n, m, k;
char s[504][504];
int vis[504][504];
vector<pair<char, pair<int, int> > > v;
vector<pair<int, int> > ord;
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
void dfs(int x, int y) {
  ord.push_back(make_pair(x, y));
  for (int i = 0; i < 4; i++)
    if (x + dx[i] < n and y + dy[i] < m and x + dx[i] >= 0 and
        y + dy[i] >= 0 and s[x + dx[i]][y + dy[i]] != '#' and
        !vis[x + dx[i]][y + dy[i]]) {
      vis[x + dx[i]][y + dy[i]] = 1;
      dfs(x + dx[i], y + dy[i]);
    }
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < n; i++) scanf("%s", &s[i]);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (s[i][j] == '.') v.push_back(make_pair('B', make_pair(i, j)));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (!vis[i][j] and s[i][j] != '#') {
        ord.clear();
        vis[i][j] = 1;
        dfs(i, j);
        for (int k = ord.size() - 1; k >= 1; k--) {
          v.push_back(make_pair('D', ord[k]));
          v.push_back(make_pair('R', ord[k]));
        }
      }
  printf("%d\n", v.size());
  for (int i = 0; i < v.size(); i++)
    printf("%c %d %d\n", v[i].first, v[i].second.first + 1,
           v[i].second.second + 1);
  return 0;
}
