#include<bits/stdc++.h>
using namespace std;
int len,n;
vector< vector <int> > b(1000);
void sqrt_decompose(int n){
for(int i=0;i*len<n;i++){
sort(b[i].begin(),b[i].end());
/* for(int j=0;j<b[i].size();j++){
printf("%d ",b[i][j]);
}
printf("\n");*/
}
return;
}
int query(int l,int r,int *a,int x){
int num=0;
int c_l=(l-1)/len,c_r=(r-1)/len;
// printf("%d %d\n",c_l,c_r);
if(c_l==c_r){
for(int i=l-1;i<r;i++){
if(a[i]<=x){
num++;
}
}
}
else{
for (int i=l-1, end=(c_l+1)*len; i<end; ++i){
if(x>=a[i]){
num++;
}
}
for (int i=c_l+1; i<c_r; i++){
num+=upper_bound(b[i].begin(),b[i].end(),x)-(b[i].begin());
/* for(int j=0;j<b[i].size();j++){
printf("%d ",b[i][j]);
}*/
//printf("\n%d %d\n",(len)*i+1,upper_bound(b[i].begin(),b[i].end(),x)-(b[i].begin()));
}
for (int i=(c_r*len); i<r; ++i)
if(x>=a[i]){
num++;
}
}
return num;
}
void update(int i,int m,int *a){
int temp=i/len,ini,ter;
a[i-1]=m;
// printf("%d %d %d\n",temp,len,a[i-1]);
for(int j=0;j<len&&(len*temp+j)<n;j++){
b[temp][j]=a[len*temp+j];
// printf("%d ",b[temp][j]);
}
// printf("\n");
sort(b[temp].begin(),b[temp].end());
return;
}
int main(){
int q;
scanf("%d%d",&n,&q);
int a[n+1];
double d=sqrt(double(n));
len=(int)d;
if((double)len!=d){
len++;
}
// printf("%d\n",len);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=0,j=0,k=0;i<n;i++,j++){
if(j==len){
j=0;
k++;
}
b[k].push_back(a[i]);
// printf("%d ",b[k][j]);
}
sqrt_decompose(n);
while(q--){
char c[5];
scanf("%s",c);
if(c[0]=='M'){
int k,l;
scanf("%d%d",&k,&l);
update(k,l,a);
}
else{
int l,r,x,count;
scanf("%d%d%d",&l,&r,&x);
count=query(l,r,a,x);
printf("%d\n",count);
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGxlbixuOwp2ZWN0b3I8IHZlY3RvciA8aW50PiA+IGIoMTAwMCk7CnZvaWQgc3FydF9kZWNvbXBvc2UoaW50IG4pewoJZm9yKGludCBpPTA7aSpsZW48bjtpKyspewoJCXNvcnQoYltpXS5iZWdpbigpLGJbaV0uZW5kKCkpOwovKgkJZm9yKGludCBqPTA7ajxiW2ldLnNpemUoKTtqKyspewoJCQlwcmludGYoIiVkICIsYltpXVtqXSk7CgkJfQoJCXByaW50ZigiXG4iKTsqLwoJfQoJcmV0dXJuOwp9CmludCBxdWVyeShpbnQgbCxpbnQgcixpbnQgKmEsaW50IHgpewoJaW50IG51bT0wOwoJaW50IGNfbD0obC0xKS9sZW4sY19yPShyLTEpL2xlbjsKLy8JcHJpbnRmKCIlZCAlZFxuIixjX2wsY19yKTsKCWlmKGNfbD09Y19yKXsKCQlmb3IoaW50IGk9bC0xO2k8cjtpKyspewoJCQlpZihhW2ldPD14KXsKCQkJCW51bSsrOwoJCQl9CgkJfQoJfQoJZWxzZXsKCQlmb3IgKGludCBpPWwtMSwgZW5kPShjX2wrMSkqbGVuOyBpPGVuZDsgKytpKXsKCQkJaWYoeD49YVtpXSl7CgkJCQludW0rKzsKCQkJfQoJCX0KCQlmb3IgKGludCBpPWNfbCsxOyBpPGNfcjsgaSsrKXsKCQkJbnVtKz11cHBlcl9ib3VuZChiW2ldLmJlZ2luKCksYltpXS5lbmQoKSx4KS0oYltpXS5iZWdpbigpKTsKCQkvKglmb3IoaW50IGo9MDtqPGJbaV0uc2l6ZSgpO2orKyl7CgkJCQlwcmludGYoIiVkICIsYltpXVtqXSk7CgkJCX0qLwoJCQkvL3ByaW50ZigiXG4lZCAlZFxuIiwobGVuKSppKzEsdXBwZXJfYm91bmQoYltpXS5iZWdpbigpLGJbaV0uZW5kKCkseCktKGJbaV0uYmVnaW4oKSkpOwoJCX0KCQlmb3IgKGludCBpPShjX3IqbGVuKTsgaTxyOyArK2kpCgkJCWlmKHg+PWFbaV0pewoJCQkJbnVtKys7CgkJCX0KCX0KCXJldHVybiBudW07Cn0Kdm9pZCB1cGRhdGUoaW50IGksaW50IG0saW50ICphKXsKCWludCB0ZW1wPWkvbGVuLGluaSx0ZXI7CglhW2ktMV09bTsKLy8JcHJpbnRmKCIlZCAlZCAlZFxuIix0ZW1wLGxlbixhW2ktMV0pOwoJZm9yKGludCBqPTA7ajxsZW4mJihsZW4qdGVtcCtqKTxuO2orKyl7CgkJYlt0ZW1wXVtqXT1hW2xlbip0ZW1wK2pdOwoJLy8JcHJpbnRmKCIlZCAiLGJbdGVtcF1bal0pOwoJfQovLwlwcmludGYoIlxuIik7Cglzb3J0KGJbdGVtcF0uYmVnaW4oKSxiW3RlbXBdLmVuZCgpKTsKCXJldHVybjsKfQppbnQgbWFpbigpewoJaW50IHE7CglzY2FuZigiJWQlZCIsJm4sJnEpOwoJaW50IGFbbisxXTsKCWRvdWJsZSBkPXNxcnQoZG91YmxlKG4pKTsKCWxlbj0oaW50KWQ7CglpZigoZG91YmxlKWxlbiE9ZCl7CgkJbGVuKys7Cgl9Ci8vCXByaW50ZigiJWRcbiIsbGVuKTsKCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCXNjYW5mKCIlZCIsJmFbaV0pOwoJfQoJZm9yKGludCBpPTAsaj0wLGs9MDtpPG47aSsrLGorKyl7CgkJaWYoaj09bGVuKXsKCQkJaj0wOwoJCQlrKys7CgkJfQoJCWJba10ucHVzaF9iYWNrKGFbaV0pOwoJLy8JcHJpbnRmKCIlZCAiLGJba11bal0pOwoJfQoJc3FydF9kZWNvbXBvc2Uobik7CgkKCXdoaWxlKHEtLSl7CgkJY2hhciBjWzVdOwoJCXNjYW5mKCIlcyIsYyk7CgkJaWYoY1swXT09J00nKXsKCQkJaW50IGssbDsKCQkJc2NhbmYoIiVkJWQiLCZrLCZsKTsKCQkJdXBkYXRlKGssbCxhKTsKCQl9CgkJZWxzZXsKCQkJaW50IGwscix4LGNvdW50OwoJCQlzY2FuZigiJWQlZCVkIiwmbCwmciwmeCk7CgkJCWNvdW50PXF1ZXJ5KGwscixhLHgpOwoJCQlwcmludGYoIiVkXG4iLGNvdW50KTsKCQl9Cgl9CglyZXR1cm4gMDsKfQ==