#include <bits/stdc++.h>
using namespace std;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");
int aint[60001],v[15001];
void build (int node,int l,int r)
{
if (l>r)
return;
if (l==r)
{
aint[node]=v[l];
return;
}
int mid=(l+r)/2;
build(2*node,l,mid);
build(2*node+1,mid+1,r);
aint[node]=aint[2*node]+aint[2*node+1];
}
void update (int node,int l,int r,int poz,int val)
{
if (l>r || poz>r || poz<l)
return;
if (l==r)
{
aint[node]-=val;
return;
}
int mid=(l+r)/2;
update(2*node,l,mid,poz,val);
update(2*node+1,mid+1,r,poz,val);
aint[node]=aint[2*node]+aint[2*node+1];
}
int query (int node,int l,int r,int ql,int qr)
{
if (l>r || l>qr || r<ql)
return 0;
if (ql<=l && r<=qr)
return aint[node];
int mid=(l+r)/2;
int sum=query(2*node,l,mid,ql,qr);
sum=sum+query(2*node+1,mid+1,r,ql,qr);
return sum;
}
int main ()
{
int n,m,i,tip,a,b;
fin>>n>>m;
for (i=1; i<=n; i++)
fin>>v[i];
build(1,1,n);
for (i=1; i<=m; i++)
{
fin>>tip>>a>>b;
if (tip==0)
update(1,1,n,a,b);
else
fout<<query(1,1,n,a,b)<<'\n';
}
return 0;
}