#include<iostream>
using namespace std;
const int N=100086;
int f[4*N],add[4*N],n,m,t,u,v,w;
char c;
void build(int k,int l,int r){
if(l==r){
f[k]=1<<1;return;
}
int mid=(l+r)/2;
build(k*2,l,mid);
build(k*2+1,mid+1,r);
f[k]=f[k*2]|f[k*2+1];
}
void push(int k,int l,int r){
f[k*2]=add[k];
add[k*2]=add[k];
f[k*2+1]=add[k];
add[k*2+1]=add[k];
add[k]=0;
}
void tadd(int k,int l,int r,int x,int y,int v){
//if(y<l||x>r)return;
if(y>=r&&x<=l){
f[k]=v;cout<<l<<" "<<f[k]<<endl;
add[k]=v;
return;
}
push(k,l,r);
int mid=(l+r)/2;
if(x<=mid)tadd(k*2,l,mid,x,y,v);
if(y>mid)tadd(k*2+1,mid+1,r,x,y,v);
f[k]=f[k*2]|f[k*2+1];
}
int tout(int k,int l,int r,int x,int y){
//if(y<l||x>r)return 0;
if(y>=r&&x<=l)return f[k];
push(k,l,r);
int mid=(l+r)/2,sum=0;
if(x<=mid)sum|=tout(k*2,l,mid,x,y);
if(y>mid)sum|=tout(k*2+1,mid+1,r,x,y);
return sum;
}
int main()
{
cin>>n>>t>>m;
build(1,1,n);
for(int i=1;i<=m;i++){
cin>>c;
if(c=='C'){
cin>>u>>v>>w;
if(u>v)swap(u,v);
tadd(1,1,n,u,v,1<<w);
cout<<tout(1,1,n,2,2);
}
if(c=='P'){
cin>>u>>v;
if(u>v)swap(u,v);
int num=tout(1,1,n,u,v),ans=0;
for(int i=0;i<=t;i++){if(num&(1<<i))ans++;}
cout<<num<<" "<<ans<<endl;
}
}
return 0;
}
实在调不出来了555