#include<stdio.h>
int arb[32768];
int s[16384];
void adauga(int unde, int val, int poz, int st, int dr)
{
if ((unde>=st) && (unde<=dr))
arb[poz]+=val;
if (st==dr) return;
adauga(unde, val, poz*2, st, (st+dr)/2);
adauga(unde, val, poz*2+1, (st+dr)/2+1, dr);
return;
}
int intreaba(int ST, int DR, int poz, int st, int dr)
{
if ((ST>dr) || (DR<st))
return 0;
if ((ST<=st) &&(dr<=DR))
return arb[poz];
return intreaba(ST, DR, poz*2, st, (st+dr)/2) + intreaba(ST, DR, poz*2+1, (st+dr)/2+1, dr);
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int n, m, val, unde, st, dr, tip, i, j, cost;
scanf("%d%d", &n, &m);
for (i=1; i<=n; i++)
{
// scanf("%d", &val);
scanf("%d", &s[i]);
// adauga(i, val, 1, 1, n);
}
for (i=1; i<=m; i++)
{
scanf("%d", &tip);
if (tip==0)
{
scanf("%d %d", &unde, &val);
s[unde]-=val;
// val*=-1;
// adauga(unde, val, 1, 1, n);
}
else
{
scanf("%d %d", &st, &dr);
cost=0;
for (j=st; j<=dr; j++)
cost+=s[j];
// for (int j=1; j<=n*2; j++){j++; j--;}
// printf("%d\n", intreaba(st, dr, 1, 1, n));
printf("%d\n", cost);
}
}
}