#include<fstream>
using namespace std;
int tree[2 << 15], n, m, i, val, poz, cod, sum, l, r;
void update(int rad, int left, int right)
{
if(left==right)
tree[rad]-=val;
else
{
int med=(left+right) / 2;
if(poz<=med) update(2*rad,left,med);
else update(2*rad+1, med+1, right);
tree[rad] = tree[2*rad] + tree[2*rad+1];
}
}
void query(int rad, int left, int right)
{
if(l<=left && right<=r)
sum+=tree[rad];
else
{
int med=(left + right)/2;
if(l<=med)
query(2*rad,left,med);
if(r > med)
query(2*rad+1,med+1,right);
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1; i<=n; i++)
{
scanf("%d",&val);
val = 0 - val;
poz=i;
update(1,1,n);
}
for(i=1; i<=m; i++)
{
scanf("%d",&cod);
if(cod==0)
{
scanf("%d%d",&poz,&val);
update(1, 1, n);
}
else
{
scanf("%d%d",&l,&r);
sum=0;
query(1,1,n);
printf("%d\n",sum);
}
}
return 0;
}