#include<bits/stdc++.h>
using namespace std;
int n,q;
int L[1000005],R[1000005];
int num[1000005];
pair<int,int> x[1000005];
int y[1000005];
int tag[1000005];
int gnum;
void up(int l,int r,int p){
if(num[l]==num[r]){
for(int i=l;i<=r;i++)x[y[i]].first+=p;
sort(x+L[num[l]],x+R[num[l]]+1);
for(int i=L[num[l]];i<=R[num[l]];i++)y[x[i].second]=i;
return;
}
for(int i=num[l]+1;i<=num[r]-1;i++)tag[i]+=p;
for(int i=l;i<=R[num[l]];i++)x[y[i]].first+=p;
sort(x+L[num[l]],x+R[num[l]]+1);
for(int i=L[num[l]];i<=R[num[l]];i++)y[x[i].second]=i;
for(int i=L[num[r]];i<=r;i++)x[y[i]].first+=p;
sort(x+L[num[r]],x+R[num[r]]+1);
for(int i=L[num[r]];i<=R[num[r]];i++)y[x[i].second]=i;
return;
}
int down(int l,int r,int p){
if(num[l]==num[r]){
int ans=0;
for(int i=l;i<=r;i++)if(x[y[i]].first+tag[num[l]]>=p)ans++;
return ans;
}
int ans=0;
for(int i=l;i<=R[num[l]];i++)if(x[y[i]].first+tag[num[l]]>=p)ans++;
for(int i=L[num[r]];i<=r;i++)if(x[y[i]].first+tag[num[r]]>=p)ans++;
for(int i=num[l]+1;i<=num[r]-1;i++){
int fl=L[i],fr=R[i];
while(fl<fr){
int mid=(fl+fr)/2;
if(x[y[mid]].first+tag[i]>=p)fr=mid;
else fl=mid+1;
}
ans+=R[i]-fl+1;
}
return ans;
}
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d",&x[i].first);
x[i].second=i;
}
gnum=sqrt(n);
for(int i=1;i<=gnum;i++){
L[i]=R[i-1]+1;
R[i-1]=L[i]+sqrt(n);
}
if(gnum*sqrt(n)!=n){
gnum++;
L[gnum]=R[gnum]+1;
R[gnum]=n;
}
for(int i=1;i<=gnum;i++){
for(int j=L[i];j<=R[i];j++)num[j]=i;
sort(x+L[i],x+R[i]+1);
for(int j=L[i];j<=R[i];j++)y[x[j].second]=j;
}
while(q--){
char in[2];
cin>>in[1];
int l,r,p;
scanf("%d%d%d",&l,&r,&p);
if(in[1]=='M')up(l,r,p);
else printf("%d\n",down(l,r,p));
}
return 0;
}