1 #include<cmath>
2 #include<cstdio>
3 #include<algorithm>
4 const int maxn=1e6+10;
5 const int maxm=1e3+10;
6 int n,m,p;
7 int s[maxn];
8 int t[maxn],f[maxm];
9 int search(int l,int r,int x){
10 int ret=0;
11 for(int i=l;i<=r;i++) if(s[i]>=x) ret++;
12 return ret;
13 }
14 int find(int l,int r,int x){
15 int mid,a=r;
16 while(l!=r){
17 mid=l+r>>1;
18 if(t[mid]<x) l=mid+1;
19 else r=mid;
20 }
21 if(t[l]<x) l++;
22 return a-l+1;
23 }
24 void map(int l,int r){
25 for(int i=l;i<=r;i++) t[i]=s[i];
26 std::sort(t+l,t+r+1);
27 }
28 void add(int l,int r,int x){
29 for(int i=l;i<=r;i++) s[i]+=x;
30 map((l-1)/p*p+1,(r+p-1)/p*p);
31 }
32 int main(){
33 scanf("%d%d",&n,&m),p=sqrt(n);
34 for(int i=1;i<=n;i++) scanf("%d",&s[i]);
35 for(int i=1;i<=n/p;i++) map((i-1)*p+1,i*p);
36 if(n%p) map(n/p*p+1,n);
37 int l,r,x,ans;char ch[3];
38 while(m--){
39 scanf("%s%d%d%d",ch,&l,&r,&x);
40 if(ch[0]=='M'){
41 if((l-1)/p==(r-1)/p){add(l,r,x);continue;}
42 if(l%p!=1) add(l,((l-1)/p+1)*p,x);
43 for(int i=(l+1)/p+1;i<=r/p;i++) f[i]+=x;
44 if(r%p) add(r/p*p+1,r,x);
45 }
46 if(ch[0]=='A'){
47 ans=0;
48 if((l-1)/p==(r-1)/p) ans+=search(l,r,x-f[(r-1)/p+1]);
49 else{
50 if(l%p!=1) ans+=search(l,((l-1)/p+1)*p,x-f[(l-1)/p+1]);
51 for(int i=(l+1)/p+1;i<=r/p;i++) ans+=find((i-1)*p+1,i*p,x-f[i]);
52 if(r%p!=0) ans+=search(r/p*p+1,r,x-f[r/p+1]);
53 }
54 printf("%d\n",ans);
55 }
56 }
57 return 0;
58 }