#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
const int MAXN=110;
int a[MAXN][MAXN];
int aa[MAXN][MAXN];
struct node{
int op;
int x;
int cnt;
node(){}
node(int opp,int xx,int yy){
op=opp;
x=xx;
cnt=yy;
}
}p[20010],pp[20010];
const int INF=100000;
int main(){
scanf("%d%d",&n,&m);
int tot=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
aa[i][j]=a[i][j];
}
}
for(int i=1;i<=n;i++){
int MIN=INF;
for(int j=1;j<=m;j++){
MIN=min(MIN,a[i][j]);
}
if(MIN>0){
p[tot++]=node(0,i,MIN);
for(int j=1;j<=m;j++){
a[i][j]-=MIN;
}
}
}
for(int j=1;j<=m;j++){
int MIN=INF;
for(int i=1;i<=n;i++){
MIN=min(MIN,a[i][j]);
}
if(MIN>0){
p[tot++]=node(1,j,MIN);
for(int i=1;i<=n;i++){
a[i][j]-=MIN;
}
}
}
int to=0;
for(int j=1;j<=m;j++){
int MIN=INF;
for(int i=1;i<=n;i++){
MIN=min(MIN,aa[i][j]);
}
if(MIN>0){
pp[to++]=node(1,j,MIN);
for(int i=1;i<=n;i++){
aa[i][j]-=MIN;
}
}
}
for(int i=1;i<=n;i++){
int MIN=INF;
for(int j=1;j<=m;j++){
MIN=min(MIN,aa[i][j]);
}
if(MIN>0){
pp[to++]=node(0,i,MIN);
for(int j=1;j<=m;j++){
aa[i][j]-=MIN;
}
}
}
int ok=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]){
ok=-1;
break;
}
}
if(ok==-1)
break;
}
if(ok==-1){
puts("-1");
return 0;
}
int sum=0;
for(int i=0;i<tot;i++)
sum+=p[i].cnt;
int ssum=0;
for(int i=0;i<to;i++)
ssum+=pp[i].cnt;
if(sum<=ssum)
ok=0;
else
ok=1;
printf("%d\n",min(sum,ssum));
if(ok==0){
for(int i=0;i<tot;i++){
if(p[i].op==0){
for(int j=0;j<p[i].cnt;j++)
printf("row %d\n",p[i].x);
}else{
for(int j=0;j<p[i].cnt;j++)
printf("col %d\n",p[i].x);
}
}
}else{
for(int i=0;i<to;i++){
if(pp[i].op==0){
for(int j=0;j<pp[i].cnt;j++)
printf("row %d\n",pp[i].x);
}else{
for(int j=0;j<pp[i].cnt;j++)
printf("col %d\n",pp[i].x);
}
}
}
}