#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
long arb[400501],a,b,suma,val,v[100001],n,maxpoz=0;
long max(long a, long b)
{
if (a<b) return b;
else return a;
}
void update(int poz,int st,int dr, int a, int val)
{
if (st==dr) {arb[poz]=val; return; }
int mij=(st+dr)/2;
if (a<=mij) update(poz*2,st,mij,a,val);
else update(poz*2+1,mij+1,dr,a,val);
arb[poz]=arb[2*poz]+arb[2*poz+1];
}
void verif(int poz,int st, int dr)
{
if (a<=st && dr<=b) {suma=suma+arb[poz]; return;}
{
int mij=(st+dr)/2;
if (a<=mij) verif(2*poz,st,mij);
if (b>mij) verif(2*poz+1,mij+1,dr);
}
}
int main()
{
int i,o,x,m;
FILE *f,*g;
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
for (i=1; i<=n; i++)
{
fscanf(f,"%d",&v[i]);
update(1,1,n,i,v[i]);
}
for (i=1; i<=m; i++)
{
fscanf(f,"%d",&o);
fscanf(f,"%d",&a);
fscanf(f,"%d",&b);
if (o==1)
{
suma=0;
verif(1,1,n);
fprintf(g,"%d\n",suma);
}
else
{
v[a]=v[a]-b;
b=v[a];
update(1,1,n,a,b);
}
}
return 0;
}