#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=15e3+5;
int aint[4*MAXN];
bool over=0;
void update(int node, int l, int r, int poz, int val)
{
if(l==r)
{
if(!over) aint[node]=val;
else aint[node]-=val;
return;
}
int mid=(l+r)/2;
if(poz<=mid) update(node*2,l,mid,poz,val);
else update(node*2+1,mid+1,r,poz,val);
aint[node]=aint[node*2]+aint[node*2+1];
}
int query(int node, int l, int r, int ql, int qr)
{
int ss=0;
if(ql<=l&&r<=qr) return aint[node];
int mid=(l+r)/2;
if(ql<=mid)
{
int st=query(node*2,l,mid,ql,qr);
ss=st;
}
if(qr>=mid+1)
{
int dr=query(node*2+1,mid+1,r,ql,qr);
ss+=dr;
}
return ss;
}
signed main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int n,q;
cin>>n>>q;
for(int i=1;i<=n;++i)
{
int a;cin>>a;
update(1,1,n,i,a);
}
over=1;
while(q--)
{
int op;cin>>op;
if(!op)
{
int poz,val;cin>>poz>>val;
update(1,1,n,poz,val);
}
else
{
int l,r;cin>>l>>r;
cout<<query(1,1,n,l,r)<<'\n';
}
}
}