#include<bits/stdc++.h>
using namespace std;
int n,m,a[100005],N=500000,cnt;
int sum[2000005],num[2000005],R[2000005];
int ls(int p){
return p*2;
}
int rs(int p){
return p*2+1;
}
void pushup(int p){
R[p]=max(R[ls(p)],R[rs(p)]);
sum[p]=sum[ls(p)]+sum[rs(p)];
num[p]=num[ls(p)]+num[rs(p)];
}
void build(int p,int pl,int pr){
if(pl==pr){
num[p]+=(pl<=n);
sum[p]=(pl<=n?a[pl]:0);
R[p]=(pr<=n?pr:0);
return;
}
int mid=(pl+pr)>>1;
build(ls(p),pl,mid);
build(rs(p),mid+1,pr);
pushup(p);
}
void update1(int p,int x,int pl,int pr,int d){
if(pl==pr&&pr==x){
sum[p]-=d;
return;
}
int mid=(pl+pr)>>1;
if(x<=mid) update1(ls(p),x,pl,mid,d);
else update1(rs(p),x,mid+1,pr,d);
pushup(p);
}
void update2(int p,int pl,int pr,int x,int d){
if(pl==pr&&pr==x){
sum[p]=d;
num[p]=1;
return;
}
int mid=(pl+pr)>>1;
if(x<=mid) update2(ls(p),pl,mid,x,d);
else update2(rs(p),mid+1,pr,x,d);
pushup(p);
}
void update3(int p,int pl,int pr,int x,int res){
if(res==x){
cnt=R[p];
return;
}
int mid=(pl+pr)>>1;
if(num[ls(p)]==x-res){
cnt=R[ls(p)];
return;
}
if(num[ls(p)]<x-res) update3(rs(p),mid+1,pr,x,res+num[ls(p)]);
else update3(ls(p),pl,mid,x,res);
return;
}
void update4(int p,int pl,int pr,int x){
if(pl==pr&&pr==x){
num[p]=0;
sum[p]=0;
R[p]=0;
return;
}
int mid=(pl+pr)>>1;
if(x<=mid) update4(ls(p),pl,mid,x);
else update4(rs(p),mid+1,pr,x);
pushup(p);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
build(1,1,N);
for(int i=1;i<=m;i++){
char op;
int x,y;
cin>>op;
if(op=='C'){
cin>>x>>y;
update1(1,x,1,N,y);
}
else if(op=='I'){
cin>>x>>y;
update2(1,1,N,x,y);
}
else if(op=='D'){
cin>>x;
update3(1,1,N,x,0);
update4(1,1,N,cnt);
}
else{
cout<<sum[1]<<endl;
}
}
return 0;
}