#include <stdio.h>
using namespace std;
FILE *f,*g;
int arbint[4*15001],N,M,X,P;
void CreateARB(int st,int dr,int NOD)
{
int Middle=(st+dr)/2;
if(st==dr)
{
arbint[NOD]+=X;
return;
}
if(P<=Middle)CreateARB(st,Middle,2*NOD);
else
CreateARB(Middle+1,dr,2*NOD+1);
arbint[NOD]=arbint[2*NOD]+arbint[2*NOD+1];
}
int SUM;
void Read()
{
int i;
fscanf(f,"%d %d",&N,&M);
for(i=1;i<=N;i++)
P=i,fscanf(f,"%d",&X),CreateARB(1,N,1);
}
int A,B;
void Search(int st,int dr,int NOD)
{
int Middle=(st+dr)/2;
if(A<=st&&dr<=B)
{
SUM+=arbint[NOD];
return;
}
if(Middle>=A)
Search(st,Middle,2*NOD);
if(Middle<B)Search(Middle+1,dr,2*NOD+1);
}
void SOLVE()
{
int option;
while(M)
{
M--;
fscanf(f,"%d %d %d",&option,&A,&B);
if(!option)
{
X=(-1)*B,P=A;
CreateARB(1,N,1);
continue;
}
SUM=0;
Search(1,N,1);
fprintf(g,"%d\n",SUM);
}
}
int main()
{
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
Read();SOLVE();
fclose(f);fclose(g);
return 0;
}