#include<fstream>
using namespace std;
long i,j,s,s2,n,m,t,a,b,lastN;
long AIB[45000];
void fnd ( long st, long dr , long it , long &nod )
{
long m=(dr-st)/2+st;
if ( (st==it ) && (dr==it ))
return ;
nod*=2;
if ( m>=it )
fnd ( st, m , it , nod );
else
fnd ( m+1 , dr , it , ++nod );
}
void update ( long nod , long val )
{
if ( nod == 0 )
return ;
AIB[nod]+=val;
update ( nod/2 , val );
}
void quary ( long st, long dr , long cst, long cdr , long &suma , long nod )
{
long m = (dr-st)/2+st;
if ( st>=cst && dr <= cdr )
{
suma+=AIB[nod];
return ;
}
if ( st>cdr || dr<cst )
return ;
nod*=2;
quary ( st, m , cst , cdr , suma , nod);
quary ( m+1, dr , cst , cdr , suma , ++nod);
}
int main()
{
ifstream in("datorii.in");
ofstream out("datorii.out");
in>>n>>m;
for ( i=1; i<=n; ++i )
{
in>>t;
lastN=1;
fnd ( 1, n, i , lastN);
update ( lastN , t );
}
for ( i=1; i<=m; ++i )
{
in>>t>>a>>b;
if ( t==0 )
{
lastN=1;
fnd ( 1, n, a, lastN );
update ( lastN , (-1)*b );
}
else{
s=0;
quary( 1 , n , 1 , b , s , 1);
s2=0;
quary( 1 , n , 1 , a-1 , s2 , 1);
out<<s-s2<<"\n";
}
}
return 0;
}