#include<bits/stdc++.h>
using namespace std;
const int MAXN=100005;
int n;
int bit[MAXN];
int c[MAXN],b[MAXN];
int lowbit(int x) {
return x & (-x);
}
void updata(int k,int v){//更新区间
while(k>0){
bit[k]+=v;
k-=lowbit(k);
}
}
int query(int k){//求一个点的值
int sum=0;
while(k<=n){
sum+=bit[k];
k+=lowbit(k);
}
return sum;
}
char op[10];
int main() {
int t;
scanf("%d %d",&n,&t);
for(int i=1;i<=n;i++)
bit[i]=0,scanf("%d",&b[i]);
while (t--) {
int l, r;
getchar();
scanf("%s",op);
scanf("%d %d",&l,&r);
if(op[0]=='a') {
updata(r, 1);
updata(l - 1, -1);
}else{
long long aa=0;
for(int i=l;i<=r;i++)
aa+=query(i)/b[i];
printf("%lld\n",aa);
}
}
return 0;
}