#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int n,m,arbore[35001],v[15001];
void build(int nod,int st,int dr)
{
if(st == dr)
arbore[nod] = v[st];
else
{
int mid = (st+dr)/2;
build(nod*2,st,mid);
build(nod*2+1,mid+1,dr);
arbore[nod] = arbore[nod*2]+arbore[nod*2+1];
}
}
void update(int nod,int st,int dr,int poz,int val)
{
if(st == dr)
arbore[nod] -= val;
else
{
int mid = (st+dr)/2;
if(poz <= mid)
update(nod*2,st,mid,poz,val);
else
update(nod*2+1,mid+1,dr,poz,val);
arbore[nod] = arbore[nod*2]+arbore[nod*2+1];
}
}
int solve(int nod,int st,int dr,int a,int b)
{
if(st >= a && dr <= b)
return arbore[nod];
int mid = (st+dr)/2;
if(mid < a)
return solve(nod*2+1,mid+1,dr,a,b);
if(mid >= b)
return solve(nod*2,st,mid,a,b);
int x = solve(nod*2+1,mid+1,dr,a,b);
int y = solve(nod*2,st,mid,a,b);
return x+y;
}
int main()
{
in>>n>>m;
for(int i = 1;i<=n;i++)
in>>v[i];
build(1,1,n);
for(int i = 1;i<=m;i++)
{
int t,a,b;
in>>t>>a>>b;
if(t == 0)
update(1,1,n,a,b);
else
out<<solve(1,1,n,a,b)<<"\n";
}
return 0;
}