#include <iostream>
#include <fstream>
#define NMAX 15000
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int buildArb(int *a,int s,int d,int k,int *v)
{
if(s==d)
{
a[k]=v[s];
return a[k];
}
int m=(s+d)/2;
a[k]=buildArb(a,s,m,2*k,v)+buildArb(a,m+1,2*k+1,d,v);
return a[k];
}
int getSum(int *a,int x,int y,int k,int s,int d)
{
if(s>y || d<x)
return 0;
if(s>=x && d<=y)
return a[k];
int m=(s+d)/2;
return getSum(a,x,y,2*k,s,m)+getSum(a,x,y,2*k+1,m+1,d);
}
int updateVal(int *a,int i,int x,int k,int s,int d)
{
if(s==d && s==i)
{
a[k]-=x;
return a[k];
}
if(s>i || d<i)
return a[k];
int m=(s+d)/2;
a[k]=updateVal(a,i,x,2*k,s,m)+updateVal(a,i,x,2*k+1,m+1,d);
return a[k];
}
int main()
{
int n,m,v[NMAX],q,x,y,a[14*NMAX];
fin>>n>>m;
for(int i=0;i<n;++i)
fin>>v[i];
buildArb(a,0,n-1,1,v);
while(m--)
{
fin>>q>>x>>y;
if(q==1)
{
fout<<getSum(a,x-1,y-1,1,0,n-1)<<'\n';
continue;
}
updateVal(a,x-1,y,1,0,n-1);
}
}