#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[15001], arb[60005], n,m,a,b,c;
void update(int nod, int pos, int val,int l, int r)
{
arb[nod]+=val;
if (l==r)
return;
int mid = (l+r)/2;
if (pos<=mid)
update(2*nod, pos, val, l, mid);
else update (2*nod+1, pos, val, mid+1, r);
}
int query(int nod, int a, int b, int l, int r)
{
if (a<=l&&r<=b)
return arb[nod];
int mid = (l+r)/2;
int ans=0;
if (a<=mid)
ans+=query(2*nod, a, b, l, mid);
if (b>=mid+1)
ans+=query(2*nod+1, a, b , mid+1, r);
return ans;
}
int main()
{
fin>>n>>m;
for (int i=1;i<=n;i++)
{
fin>>v[i];
update(1, i, v[i], 1,n);
}
for (int i=1;i<=m;i++)
{
fin>>a>>b>>c;
if (a==0)
update(1,b,-c,1,n);
else fout<<query(1,b,c,1,n)<<'\n';
}
return 0;
}