#include<bits/stdc++.h>
using namespace std;
const int N=2*1e5;
int lc(int x){return x<<1;}
int rc(int x){return x<<1|1;}
struct node{
int val,l,r;
} tr[N<<2];
void pushup(int x){
tr[x].val=max(tr[lc(x)].val,tr[rc(x)].val);
return ;
}
int n,m,a[N],x,y;
char op;
void build(int x,int l,int r){
tr[x].l=lc(x);tr[x].r=rc(x);
if(l==r){
tr[x].val=a[l];
return ;
}
int mid=(lc(x)+rc(x))>>1;
build(lc(x),l,mid);
build(rc(x),mid+1,r);
pushup(x);
}
int query(int x,int l,int r){
if(l<=tr[x].l and tr[x].r<=r){
return tr[x].val;
}
int mid=(l+r)>>1,sum=0;
if(tr[x].l<=mid) sum+=query(tr[x].l,l,r);
if(mid<=tr[x].r) sum+=query(tr[x].r,l,r);
return sum;
}
void update(int x,int f,int k){
if(tr[x].l==f and tr[x].r==f){
tr[x].val+=k;
return ;
}
int mid=(tr[x].l+tr[x].r)>>1;
if(f<=mid) update(tr[x].l,f,k);
if(mid<f) update(tr[x].r,f,k);
pushup(x);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
build(1,1,n);
for(int i=1;i<=m;i++){
cin>>op>>x>>y;
if(op=='Q'){
cout<<query(1,x,y)<<"\n";
}else{
if(a[x]<=y){
update(1,x,y-a[x]);
a[x]=y;
}
}
}
return 0;
}