#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int n,m,v,a[100010][25],x,y,z;
int construire(int b,int e,int niv,int q)
{
if(b>e||q>n)
return 0;
if(b==e)
{
in>>v;
a[q][niv]=v;
return a[q][niv];
}
a[q][niv]=construire(b,e-(e-b+1)/2,niv+1,b)+construire(e-(e-b+1)/2+1,e,niv+1,e-(e-b+1)/2+1);
return a[q][niv];
}
int modificare(int poz,int b,int e,int niv,int q)
{
if(b==e)
{
a[q][niv]-=z;
return a[q][niv];
}
if(poz>=e-(e-b+1)/2+1)
a[q][niv]=modificare(poz,e-(e-b+1)/2+1,e,niv+1,e-(e-b+1)/2+1)+a[b][niv+1];
else
a[q][niv]=modificare(poz,b,e-(e-b+1)/2,niv+1,b)+a[e-(e-b+1)/2+1][niv+1];
return a[q][niv];
}
int suma(int bi,int ei,int b,int e,int niv,int q)
{
if(ei<b||bi>e||q>n)
return 0;
if(bi<=b&&ei>=e)
return a[q][niv];
return suma(bi,ei,b,e-(e-b+1)/2,niv+1,b)+suma(bi,ei,e-(e-b+1)/2+1,e,niv+1,e-(e-b+1)/2+1);
}
int main()
{
in>>n>>m;
construire(1,n,1,1);
for(int i=1;i<=m;++i)
{
in>>x>>y>>z;
if(x==0)
modificare(y,1,n,1,1);
else
out<<suma(y,z,1,n,1,1)<<'\n';
}
return 0;
}