// Source: https://usaco.guide/general/io
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int aint[60005],n,a[15005],m,sol,op,x,y;
void build(int node,int st,int dr)
{
if(st==dr)
{
aint[node]=a[st];
}
else
{
int mij=(st+dr)/2;
build(2*node,st,mij);
build(2*node+1,mij+1,dr);
aint[node]=aint[2*node+1]+aint[2*node];
}
}
void update(int node,int st,int dr, int pos,int val)
{
if(st==dr)
{
aint[node]-=val;
}
else
{
int mij=(st+dr)/2;
if(pos<=mij)
{
update(2*node,st,mij,pos,val);
}
else {
update(2*node+1,mij+1,dr,pos,val);
}
aint[node]=aint[2*node]+aint[2*node+1];
}
}
void query(int node,int st,int dr,int l,int r)
{
if(l<=st&&r>=dr)
sol+=aint[node];
else
{
int mid=(st+dr)/2;
if(mid>=l)
query(2*node,st,mid,l,r);
if(mid+1<=r)
query(2*node+1,mid+1,dr,l,r);
}
}
int main() {
f>>n>>m;
for(int i=1;i<=n;i++)
f>>a[i];
build(1,1,n);
while(m--)
{
f>>op>>x>>y;
if(op==0)
{
update(1,1,n,x,y);
}
else {
sol=0;
query(1,1,n,x,y);
g<<sol<<'\n';
}
}
}