1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;

const int SIZE=2005;
int tab[SIZE][SIZE];
bool V[SIZE][2];

int N,M;
int sum;
int suw;
int suk;
int d;
int Z;

pair<bool,int> CHECKw(int x){
    Z=0;
    for(int i=1;i<=M;++i){
        if(!V[i][0]){
            if(Z!=tab[x][i]){
                if(Z){return{0,0};}
                Z=tab[x][i];
            }
        }
    }
    return {1,Z};
}

pair<bool,int> CHECKk(int x){
    Z=0;
    for(int i=1;i<=N;++i){
        if(!V[i][1]){
            if(Z!=tab[i][x]){
                if(Z){return{0,0};}
                Z=tab[i][x];
            }
        }
    }
    return {1,Z};
}


int main(){

    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    string t;

    cin>>N>>M;
    sum=M*N;
    suw=0;
    suk=0;

    for(int i=1;i<=N;++i){
        cin>>t;
        for(int j=0;j<M;++j){
            tab[i][j+1]=int(t[j]);
        }
    }

    stack< pair<char,pair<int,int>> > Q;

    pair<char,pair<int,int>> res1;
    pair<bool,int> res;

    int mod=1;
    while(sum){

        if(mod%2){
            for(int i=1;i<=N;++i){
                if(V[i][1]){continue;}

                res=CHECKw(i);
                if(res.f&&res.s){
                    //CLEARw(i);
                    sum-=M-suk;
                    suw++;
                    V[i][1]=true;
                    Q.push({'R',{i,res.s}});
                }
            }
        }else{
            for(int i=1;i<=M;++i){

                if(V[i][0]){continue;}

                res=CHECKk(i);
                if(res.f&&res.s){
                    //CLEARk(i);
                    sum-=N-suw;
                    suk++;
                    V[i][0]=true;
                    Q.push({'K',{i,res.s}});
                }
            }
        }

        mod++;

    }

    d=Q.size();
    cout<<d<<endl;
    for(int i=0;i<d;++i){
        res1=Q.top();
        Q.pop();
        cout<<res1.f<<' '<<res1.s.f<<' '<<char(res1.s.s)<<"\n";
    }

return 0;}