#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[15001];
int A[80001];
void build(int i,int st,int dr)
{
if(st==dr)
{
A[i]=v[st];
}
else
{
int m = (st+dr)/2;
build(2*i,st,m);
build(2*i+1,m+1,dr);
A[i]=A[2*i]+A[2*i+1];
}
}
int query(int i,int st,int dr,int a,int b)
{
if(a<=st && dr<=b)
{
return A[i];
}
else
{
int m = (st+dr)/2;
int left=0,right=0;
if(a <= m)
{
left=query(2*i,st,m,a,b);
}
if(b>m)
{
right=query(2*i+1,m+1,dr,a,b);
}
return left+right;
}
}
void update(int i,int st,int dr,int a,int b)
{
if(st==dr)
{
A[i]+=b;
}
else
{
int m =(st+dr)/2;
if(a<=m)
{
update(2*i,st,m,a,b);
}
else
{
update(2*i+1,m+1,dr,a,b);
}
A[i]=A[2*i]+A[2*i+1];
}
}
int main()
{
int n,q;
fin >> n >> q;
for(int i=1;i<=n;i++)
{
fin >> v[i];
}
build(1,1,n);
while(q--)
{
int t,a,b;
fin >> t >> a >> b;
if(t==0)
{
update(1,1,n,a,-1*b);
}
else
{
fout << query(1,1,n,a,b) << "\n";
}
}
}