#include<cstdio>
const int N=280001,K=15001;
int n,a,b,m,arb[N],ini[K];
void build( int st,int dr,int poz )
{
int mij=(st+dr)/2;
if(st==dr)
{
ini[st]=poz;
return;
}
build(st,mij,2*poz);
build(mij+1,dr,2*poz+1);
}
void up( int i,int x )
{
int k=ini[i];
arb[k]=x;
for( k/=2 ; k ; k/=2 )
arb[k]=arb[2*k]+arb[2*k+1];
}
int caut( int st,int dr,int poz )
{
if( a<=st && dr<=b )
return arb[poz];
if( st>b || dr<a )
return 0;
int mij=(st+dr)/2;
return caut(st,mij,2*poz)+caut(mij+1,dr,2*poz+1);
}
int main()
{
int tip,x;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
build(1,n,1);
for( int i=1 ; i<=n ; ++i )
{
scanf("%d",&x);
up(i,x);
}
for( int i=1 ; i<=m ; ++i )
{
scanf("%d%d%d",&tip,&a,&b);
if(tip==0)
up(a,arb[ini[a]]-b);
else
printf("%d\n",caut(1,n,1));
}
return 0;
}