#include <fstream>
#define NMAX 15005
#define MMAX 100005
#define FOR(a,b,i) for(int (i)=(a);(i)<(b);++(i))
using namespace std;
FILE* f=freopen("datorii.in","r",stdin);
FILE* o=freopen("datorii.out","w",stdout);
int n,m,pos,val,lf,rt,sum;
int dat[NMAX*2];
void Update(int l, int r, int nod)
{
if(l==r)
{
dat[nod]-=val;
return;
}
else
{
if(pos>(l+r)/2)
{
Update((l+r)/2+1,r,2*nod+1);
}
else
{
Update(l,(l+r)/2,2*nod);
}
dat[nod]=dat[nod*2]+dat[nod*2+1];
}
}
void Query(int l, int r, int nod)
{
if(l>=lf&&r<=rt)
sum+=dat[nod];
else
{
if((l+r)/2<rt)
Query((l+r)/2+1,r,2*nod+1);
if((l+r)/2>=lf)
Query(l,(l+r)/2,2*nod);
}
}
int main()
{
scanf("%d%d",&n,&m);
FOR(1,n+1,i)
{
int x;
scanf("%d",&x);
pos=i;
val=-x;
Update(1,n,1);
}
FOR(1,m+1,i)
{
int p;
int a,b;
scanf("%d",&p);
scanf("%d%d",&a,&b);
if(p==0)
{
pos=a;
val=b;
Update(1,n,1);
}
else
{
lf=a,rt=b;
sum=0;
Query(1,n,1);
printf("%d\n",sum);
}
}
return 0;
}