#include<bits/stdc++.h>
using namespace std;
#define pl (p<<1)
#define pr (p<<1|1)
const int T=31,N=1e5+10;
struct Tree{int sum,cov;}tr[T][N<<2];
int n,t,q,a,b,c;char op;
void push_down(int x,int p){tr[x][pl].sum=tr[x][p].cov,tr[x][pr].sum=tr[x][p].cov,tr[x][pl].cov=tr[x][p].cov,tr[x][pr].cov=tr[x][p].cov,tr[x][p].cov=0;}
void push_up(int x,int p){tr[x][p].sum=tr[x][pl].sum+tr[x][pr].sum;}
void update(int x,int l,int r,int le,int ri,int v,int p){
if(l>=le&&r<=ri)return void(tr[x][p].cov=tr[x][p].sum=v);
int mid=l+r>>1;push_down(x,p);
if(le<=mid)update(x,l,mid,le,ri,v,pl);
if(ri>mid)update(x,mid+1,r,le,ri,v,pr);
push_up(x,p);
}int query(int x,int l,int r,int le,int ri,int p){
if(l>=le&&r<=ri)return tr[x][p].sum;
int mid=l+r>>1,ret=0;push_down(x,p);
if(le<=mid)ret+=query(x,l,mid,le,ri,pl);
if(ri>mid)ret+=query(x,mid+1,r,le,ri,pr);
return push_up(x,p),ret;
}int main(){
cin>>n>>t>>q,update(1,1,n,1,n,1,1);
while(q--){
cin>>op>>a>>b;if(a>b)swap(a,b);
if(op=='C'){
cin>>c;
for(int i=1;i<=t;i++)update(i,1,n,a,b,i==c,1);
}else{
int ans=0;
for(int i=1;i<=t;i++)if(query(i,1,n,a,b,1))ans++;
cout<<ans<<'\n';
}
}return 0;
}