#include <bits/stdc++.h>
using namespace std;
int arr[110][110];
int row1[10010];
int row2[10010];
int col[10010];
int col2[10010];
int n, m;
bool check(int i, int j) {
  if (arr[i][j] == (row1[i] + col2[j]))
    return 1;
  else
    return 0;
}
int main() {
  scanf("%d", &n);
  scanf("%d", &m);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) scanf("%d", &arr[i][j]);
  }
  int ans1 = 0;
  int ans2 = 0;
  int maxrow = -1000000;
  for (int i = 0; i < n; ++i) {
    int minn = 100000;
    for (int j = 0; j < m; ++j) minn = min(arr[i][j], minn);
    row1[i] = minn;
    ans1 += minn;
    maxrow = max(minn, maxrow);
  }
  for (int i = 0; i < m; ++i) {
    int maxx = -100000;
    for (int j = 0; j < n; ++j) maxx = max(arr[j][i], maxx);
    ans1 += max(maxx - maxrow, 0);
    col2[i] = max(maxx - maxrow, 0);
  }
  int maxcol = -1000000;
  for (int i = 0; i < m; ++i) {
    int minn = 100000;
    for (int j = 0; j < n; ++j) minn = min(arr[j][i], minn);
    col[i] = minn;
    ans2 += minn;
    maxcol = max(minn, maxcol);
  }
  for (int i = 0; i < n; ++i) {
    int maxx = -100000;
    for (int j = 0; j < m; ++j) maxx = max(arr[i][j], maxx);
    ans2 += max(maxx - maxcol, 0);
    row2[i] = max(maxx - maxcol, 0);
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j)
      if (!check(i, j)) return puts("-1");
  }
  if (ans1 <= ans2) {
    cout << ans1 << endl;
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < row1[i]; ++j) cout << "row " << i + 1 << endl;
    }
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < col2[i]; ++j) cout << "col " << i + 1 << endl;
    }
  } else {
    cout << ans2 << endl;
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < row2[i]; ++j) cout << "row " << i + 1 << endl;
    }
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < col[i]; ++j) cout << "col " << i + 1 << endl;
    }
  }
  return 0;
}
