#include<fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int arb[300000],a[100001];
void arbore(int index,int stanga,int dreapta)
{
if(stanga==dreapta)
{
arb[index]=a[stanga];
return;
}
int mijloc=(stanga+dreapta)/2;
arbore(2*index,stanga,mijloc);
arbore(2*index+1,mijloc+1,dreapta);
arb[index]=arb[2*index]+arb[2*index+1];
}
void op0(int index,int stanga,int dreapta,int T,int V)
{
if(T<stanga||T>dreapta)
return;
if(stanga==dreapta)
{
if(stanga==T)
{arb[index]-=V;
return;}
else return;
}
int mijloc=(stanga+dreapta)>>1;
op0(2*index,stanga,mijloc,T,V);
op0(2*index+1,mijloc+1,dreapta,T,V);
arb[index]=arb[2*index]+arb[2*index+1];
}
int op1(int index,int stanga,int dreapta,int i,int j)
{
if(j<stanga||dreapta<i)
return 0;
if(i<=stanga && j>=dreapta)
return arb[index];
int mijloc=(stanga+dreapta)>>1;
return op1(2*index,stanga,mijloc,i,j)+op1(2*index+1,mijloc+1,dreapta,i,j);
}
int main() {
int N,Q;
cin>>N>>Q;
for(int i=1;i<=N;i++)
cin>>a[i];
arbore(1,1,N);
for(int i=1;i<=Q;i++)
{
int x,x1,x2;
cin>>x>>x1>>x2;
if(x==0)
op0(1,1,N,x1,x2);
else{
cout<<op1(1,1,N,x1,x2)<<"\n";
}
}
}