#include <stdio.h>
#define Dim 50000
int Tree[Dim],N,M,X,Y,Op,Sol;
void Update(int,int,int);
void Query(int,int,int);
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&N,&M);
for (int i = 1;i <= N; i++)
{
scanf("%d",&X);
Y = i;
Update(1,1,N);
}
for (int i = 1;i <= M;i++)
{
scanf("%d%d%d",&Op,&Y,&X);
if (Op == 0) Update(1,1,N);
else
{
Sol = 0;
Query(1,1,N);
printf("%d\n",Sol);
}
}
return 0;
}
void Update(int Node,int Left,int Right)
{
if (Left == Right)
{
if (Tree[Node] == 0) Tree[Node] = X;
else Tree[Node] -= X;
return;
}
int Med = (Left + Right) / 2;
if (Y <= Med) Update(2*Node,Left,Med);
else Update(2*Node+1,Med+1,Right);
Tree[Node] = Tree[2*Node] + Tree[2*Node+1];
}
void Query(int Node,int Left,int Right)
{
if (Y <= Left && Right <= X)
{
Sol += Tree[Node];
return;
}
int Med = (Left + Right) / 2;
if (Y <= Med) Query(2*Node,Left,Med);
if (Med < X) Query(2*Node+1,Med+1,Right);
}