#include <iostream>
#include <stdio.h>
using namespace std;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
int n,m,i,a,b,x,v[50000],maxim;
void update(int l, int r,int pos, int val, int nod)
{
int m=(l+r)/2;
if(l==pos&&r==pos){v[nod]+=val;return;}
else
{
if(pos<=m) update(l,m,pos,val,2*nod);
else update(m+1,r,pos,val,2*nod+1);
}
v[nod]=v[2*nod]+v[2*nod+1];
}
void query(int l, int r,int nod,int start, int finish)
{
int m=(l+r)/2,s1,s2;
if ( start <= l && r <= finish )
{
maxim+=v[nod];
return;
}
if ( start <= m ) query(l,m,2*nod,start,finish);
if ( m < finish ) query(m+1,r,2*nod+1,start,finish);
}
int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&a);
update(1,n,i,a,1);
}
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d%d",&x,&a,&b);
switch(x)
{
case 0:{b*=-1;update(1,n,a,b,1);break;}
case 1:{maxim=0;query(1,n,1,a,b);fprintf(g,"%d\n",maxim);break;}
}
}
fclose(g);
return 0;
}