#include<bits/stdc++.h>
using namespace std;
#define int long long
#define re read()
inline int read(){
int x=0,b=1;char c=getchar();
while(!isdigit(c)){if(c=='-') b=-1;c=getchar();}
while(isdigit(c)){x=x*10+c-'0';c=getchar();}
return x*b;
}
const int N=1000007;
int n,Q,a[N],l,r,w,cnt;
int L[N],R[N],pos[N],tag[N],d[N];
void change(int l,int r,int x){
if(pos[l]==pos[r]){
for(int i=l;i<=r;++i)
a[i]+=x,d[i]=a[i];
sort(d+L[pos[l]],d+R[pos[l]]+1);
return ;
}
for(int i=l;i<=R[pos[l]];++i)
a[i]+=x,d[i]=a[i];
sort(d+L[pos[l]],d+R[pos[l]]+1);
for(int i=L[pos[r]];i<=r;++i)
a[i]+=x,d[i]=a[i];
sort(d+L[pos[r]],d+R[pos[r]]+1);
for(int i=pos[l]+1;i<pos[r];++i)
tag[i]+=x;
return ;
}
int ques(int l,int r,int x){
int ans=0;
if(pos[l]==pos[r]){
for(int i=l;i<=r;++i) ans+=a[i]+tag[pos[l]]>=x?1:0;
return ans;
}
for(int i=l;i<=R[pos[l]];++i)
ans+=a[i]+tag[pos[l]]>=x?1:0;
for(int i=L[pos[r]];i<=r;++i)
ans+=a[i]+tag[pos[r]]>=x?1:0;
for(int i=pos[l]+1;i<pos[r];++i)
{
int xx=L[i],y=R[i],mid=xx+((y-xx)>>1);
while(xx<y){
mid=xx+((y-xx)>>1);
if(d[mid]+tag[i]>=x) xx=mid;
else y=mid+1;
}
ans+=R[i]-xx+1;
}
return ans;
}
int len;
signed main(){
n=re;Q=re;len=sqrt(n);
if(n%len==0) cnt=n/len;
else cnt=n/len+1;
for(int i=1;i<=cnt;++i) {
L[i]=(i-1)*len+1;
R[i]=i*len;
}
R[cnt]=n;
for(int i=1;i<=cnt;++i)
for(int j=L[i];j<=R[i];++j)
pos[j]=i;
for(int i=1;i<=n;++i) a[i]=re,d[i]=a[i];
for(int i=1;i<=cnt;++i)
sort(d+L[i],d+R[i]+1);
for(int i=1;i<=n;++i)
for(int i=1;i<=Q;++i){
char ch;cin>>ch;
if(ch=='M'){
l=re;r=re;w=re;
change(l,r,w);
}
if(ch=='A'){
l=re;r=re;w=re;
printf("%lld\n",ques(l,r,w));
}
}
return 0;
}