#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll N = 1e7 + 9;
inline ll read()
{
ll x = 0, f = 1;
char c = getchar();
while(c > '9' || c < '0')
{
if(c == '-')
f = -1;
c = getchar();
}
while(c >= '0' && c <= '9')
{
x = x*10 + c - '0';
c = getchar();
}
return x*f;
}
ll l, t, o;
ll bod[N];
ll pig[N];
ll add[N];
ll sum[N];
char ch;
void pushdown(ll u)
{
if(add[u] == 0)
return ;
sum[u*2] = add[u];
sum[u*2 + 1] = add[u];
add[u*2] = add[u];
add[u*2 + 1] = add[u];
add[u] = 0;
}
void build(ll u, ll ul, ll ur)
{
if(ul == ur)
{
sum[u] = 2;
return ;
}
ll mid = ul + (ur - ul)/2;
build(u*2, ul, mid);
build(u*2 + 1, mid + 1, ur);
sum[u] = sum[u*2] + sum[u*2 + 1];
}
void fillin(ll u, ll ul, ll ur, ll l, ll r, ll w)
{
if(l <= ul && r >= ur)
{
sum[u] = (1 << w);
add[u] = (1 << w);
return ;
}
pushdown(u);
ll mid = ul + (ur - ul)/2;
if(l <= mid)
fillin(u*2, ul, mid, l, r, w);
if(r > mid)
fillin(u*2 + 1, mid + 1, ur, l, r, w);
sum[u] = sum[u*2] + sum[u*2 + 1];
}
ll ans(ll u, ll ul, ll ur, ll l, ll r)
{
if(l <= ul && r >= ur)
return sum[u];
pushdown(u);
ll mid = ul + (ur - ul)/2;
ll res = 0;
if(l <= mid)
res += ans(u*2, ul, mid, l, r);
if(r > mid)
res += ans(u*2 + 1, mid + 1, ur, l, r);
return res;
}
ll pro(ll x)
{
ll res = 0;
while(x)
{
if(x%2)
res++;
x >>= 1;
}
return res;
}
int main()
{
l = read();
t = read();
o = read();
build(1, 1, l);
for(ll i = 1; i <= o; i++)
{
ll a, b, c;
cin >> ch;
a = read();
b = read();
if(a > b)
swap(a, b);
if(ch == 'C')
{
c = read();
fillin(1 ,1, l, a, b, c);
}
if(ch == 'P')
printf("%lld\n", pro(ans(1, 1, l, a, b)));
}
}