#include<iostream>
#include<fstream>
using namespace std;
long long int sizes,m,aint[400001],a[400001];
void init(long long int n,long long int l,long long int r)
{
if(l==r)
aint[n]=a[l];
else
{
int m=(l+r)/2;
init(n*2,l,m);
init(n*2+1,m+1,r);
aint[n]=aint[n*2]+aint[n*2+1];
}
}
void update(long long int n,long long int l,long long int r,long long int p,long long int v)
{
if(l==r)
aint[n]-=v;
else
{
int m=(l+r)/2;
if(p<=m)
{
update(n*2,l,m,p,v);
aint[n]=aint[n*2]+aint[n*2+1];
}
else
{
update(n*2+1,m+1,r,p,v);
aint[n]=aint[n*2+1]+aint[n*2];
}
}
}
int finde(int n,int l,int r,int pl,int pr)
{
if(l==r)
return aint[n];
int m=(l+r)/2;
if(pl<=l&&pr>=r)
{
return aint[n];
}
else
{
int ma=0;
if(pl<=m)
{
ma=finde(n*2,l,m,pl,pr);
}
if(pr>=m)
{
ma=ma+finde(n*2+1,m+1,r,pl,pr);
}
return ma;
}
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
f>>sizes>>m;
for(int i=1;i<=sizes;i++)
f>>a[i];
init(1,1,sizes);
for(int i=1;i<=m;i++)
{
long long int x,y,z;
f>>z>>x>>y;
if(z==0)
update(1,1,sizes,x,y);
else
g<<finde(1,1,sizes,x,y)<<endl;
}
}