#include <fstream>
#define nmax 15001
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[nmax],n,m;
int tree[nmax*10];
void BuildTree(int pos,int val,int node,int left,int right)
{ if(left==right) {tree[node]=val; return;}
int mid=(left+right)/2;
if(pos<=mid) BuildTree(pos,val,node*2,left,mid);
else BuildTree(pos,val,node*2+1,mid+1,right);
tree[node]=tree[node*2]+tree[node*2+1];
}
void Achitare(int pos,int val,int node,int left,int right)
{ if(left==pos && right==pos) {tree[node]=val; return; }
int mid=(left+right)/2;
if(pos<=mid) Achitare(pos,val,node*2,left,mid);
else Achitare(pos,val,node*2+1,mid+1,right);
tree[node]=tree[node*2]+tree[node*2+1];
}
void Interogare(int left,int right,int in,int fin,int &sum,int node)
{ if(in<=left && right<=fin)
{sum+=tree[node]; return;}
int mid=(left+right)/2;
if(in<=mid) Interogare(left,mid,in,fin,sum,node*2);
if(mid<fin) Interogare(mid+1,right,in,fin,sum,node*2+1);
}
int main()
{ int i,q,a,b;
fin>>n>>m;
for(i=1; i<=n; i++)
{ fin>>v[i];
BuildTree(i,v[i],1,1,n);
}
for(i=1; i<=m; i++)
{ fin>>q>>a>>b;
if(q==0)
{ //v[a]-=b;
Achitare(a,v[a]-b,1,1,n);
}
else {int sum=0;
Interogare(1,n,a,b,sum,1);
fout<<sum<<"\n";
}
}
return 0;
}