#include <iostream>
#include <cstdio>
#define NMax 15005
using namespace std;
int N, ArbInt[4*NMax];
void Update (int K, int L, int R, int P, int V)
{
int Mid=(L+R)/2;
if (L==R)
{
ArbInt[K]+=V;
return;
}
if (P<=Mid)
{
Update (2*K, L, Mid, P, V);
}
else
{
Update (2*K+1, Mid+1, R, P, V);
}
ArbInt[K]=ArbInt[2*K]+ArbInt[2*K+1];
}
int Query (int K, int L, int R, int QL, int QR)
{
int Mid=(L+R)/2;
if (L==QL and R==QR)
{
return ArbInt[K];
}
if (QR<=Mid)
{
return Query (2*K, L, Mid, QL, QR);
}
if (QL>Mid)
{
return Query (2*K+1, Mid+1, R, QL, QR);
}
return Query (2*K, L, Mid, QL, Mid)+Query (2*K+1, Mid+1, R, Mid+1, QR);
}
int main()
{
freopen ("datorii.in", "r", stdin);
freopen ("datorii.out", "w", stdout);
int NQ;
scanf ("%d %d", &N, &NQ);
for (int i=1; i<=N; ++i)
{
int X;
scanf ("%d", &X);
Update (1, 1, N, i, X);
}
for (; NQ>0; --NQ)
{
int Type, X, Y;
scanf ("%d %d %d", &Type, &X, &Y);
if (Type==0)
{
Update (1, 1, N, X, -Y);
}
else
{
printf ("%d\n", Query (1, 1, N, X, Y));
}
}
return 0;
}