#include <fstream>
#define LS(p) (p<<1)
#define RS(p) ((p<<1)+1)
#define NMAX (1<<15)
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int V[NMAX],N,T;
void Update(int current_position,int start,int final,int pos,int value)
{
if(start == final)
V[current_position] += value;
else
{
int med = (start + final) / 2;
if(pos <=med)
Update(LS(current_position),start,med,pos,value);
else
Update(RS(current_position),med+1,final,pos,value);
V[current_position] += value;
}
}
int Query(int current_position,int start,int final,int begin,int end)
{
if(start>=begin && final <= end)
return V[current_position];
int med = (start + final) / 2, value = 0;
if(begin <= med)
value+= Query(LS(current_position),start,med,begin,end);
if(med+1 <= end)
value+= Query(RS(current_position),med+1,final,begin,end);
return value;
}
int main()
{
int i,x,a,b;
bool op;
in>>N>>T;
for(i=1;i<=N;i++)
in>>x,Update(1,1,N,i,x);
while(T--)
{
in>>op>>a>>b;
if(op)
out<<Query(1,1,N,a,b)<<'\n';
else // achitare
Update(1,1,N,a,-b);
}
return 0;
}