#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int tree[50001];
void Update(int from,int to,int node,int pos,int val)
{
if(from==to)
{
tree[node]+=val;
return;
}
int mid=(from+to)/2;
if(mid>=pos)
{
Update(from,mid,node*2,pos,val);
}
else
{
Update(mid+1,to,node*2+1,pos,val);
}
tree[node]=tree[node*2]+tree[node*2+1];
}
int Query(int from,int to,int node,int a,int b)
{
if(from==to)
{
return tree[node];
}
if(from>=a && to<=b)
{
return tree[node];
}
int mid=(from+to)/2,res=0;
if(mid>=a)
res+=Query(from,mid,node*2,a,b);
if(mid+1<=b)
res+=Query(mid+1,to,node*2+1,a,b);
return res;
}
int main()
{
int n,k,q,a,b;
cin>>n>>k;
vector<int>v(n+1);
for(int i=1;i<=n;i++)
{
cin>>v[i];
Update(1,n,1,i,v[i]);
}
for(int i=0;i<k;i++)
{
cin>>q>>a>>b;
if(q==0)
{
Update(1,n,1,a,-b);
}
else
{
cout<<Query(1,n,1,a,b)<<"\n";
}
}
return 0;
}