#include <iostream>
#include <fstream>
using namespace std;
int n,m,i,x,op,p,A[60010],s,K;
ifstream f("datorii.in");
ofstream g("datorii.out");
void upd(int nod,int a,int b,int st,int dr)
{
int m;
if(a<=st&&dr<=b)
{
A[nod]+=x;
return;
}
else
{
m=(st+dr)/2;
if(a<=m)
upd(2*nod,a,b,st,m);
if(m<b)
upd(2*nod+1,a,b,m+1,dr);
A[nod]=A[2*nod]+A[2*nod+1];
}
}
void finds(int nod,int a,int b,int st,int dr)
{
int m;
if(a<=st&&dr<=b)
{
s=s+A[nod];
return ;
}
else
{
m=(st+dr)/2;
if(a<=m)
finds(2*nod,a,b,st,m);
if(m<b)
finds(2*nod+1,a,b,m+1,dr);
}
}
void afis(int x,int k)
{
if(k<=K+1)
{
g<<A[x]<<" ";
afis(x*2,k+1);
afis(x*2+1,k+1);
}
}
void afis1(int x,int k)
{
if(k<=K+1)
{
g<<x<<" ";
afis1(x*2,k+1);
afis1(x*2+1,k+1);
}
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
upd(1,i,i,1,n);
}
while((1<<K)<n)
{
K++;
}
for(i=1;i<=m;i++)
{
f>>op>>p>>x;
if(op==0)
{
x*=-1;
upd(1,p,p,1,n);
}
else
{
s=0;
finds(1,p,x,1,n);
g<<s<<endl;
}
}
return 0;
}