#include <bits/stdc++.h>
using namespace std;
int matrix[200][200];
int row[200], col[200];
int step;
int ans_step = INT_MAX, ans_row[200], ans_col[200];
int n, m;
bool check(int first_row) {
  step = first_row;
  memset(row, 0, sizeof(row));
  memset(col, 0, sizeof(col));
  row[1] = first_row;
  for (int i = 1; i <= m; ++i) {
    if (matrix[1][i] > first_row) {
      col[i] += matrix[1][i] - first_row;
      step += col[i];
    } else if (matrix[1][i] < first_row) {
      return false;
    }
  }
  for (int i = 2; i <= n; ++i) {
    row[i] = matrix[i][1] - col[1];
    if (row[i] < 0) {
      return false;
    }
    step += row[i];
    for (int j = 2; j <= m; ++j) {
      if (matrix[i][j] != row[i] + col[j]) {
        return false;
      }
    }
  }
  return true;
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      cin >> matrix[i][j];
    }
  }
  for (int i = 0; i <= 500; ++i) {
    row[1] = i;
    if (check(i)) {
      if (step < ans_step) {
        ans_step = step;
        for (int j = 1; j <= n; ++j) {
          ans_row[j] = row[j];
        }
        for (int j = 1; j <= m; ++j) {
          ans_col[j] = col[j];
        }
      }
    }
  }
  if (ans_step == INT_MAX) {
    printf("-1\n");
    return 0;
  }
  printf("%d\n", ans_step);
  for (int i = 1; i <= n; ++i) {
    while (ans_row[i]) {
      cout << "row " << i << endl;
      --ans_row[i];
    }
  }
  for (int i = 1; i <= m; ++i) {
    while (ans_col[i]) {
      cout << "col " << i << endl;
      --ans_col[i];
    }
  }
  return 0;
}
