#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,a[15002],t[60100];
void actualizare(int i, int nod, int val, int st, int dr)
{
if(st==dr) t[i]=val;
else
{
int mij;
mij=(st+dr)/2;
if(nod<=mij) actualizare(2*i,nod,val,st,mij);
else actualizare(2*i+1,nod,val,mij+1,dr);
t[i]=t[2*i]+t[2*i+1];
}
}
int query(int i, int a, int b, int st, int dr)
{
if(a<=st && dr<=b) return t[i];
else if(st!=dr)
{
int mij=(st+dr)/2,s=0;
if(a<=mij) s+=query(2*i,a,b,st,mij);
if(b>mij) s+=query(2*i+1,a,b,mij+1,dr);
return s;
}
}
int main()
{
f>>n>>m;
int i,j,x,y;
for(i=1;i<=n;i++)
{
f>>a[i];
actualizare(1,i,a[i],1,n);
}
for(i=1;i<=n;i++)
{
f>>j>>x>>y;
if(j==1)
g<<query(1,x,y,1,n)<<'\n';
else
actualizare(1,x,a[x]-y,1,n);
}
}