#include <fstream>
using namespace std;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");
void initializare ( int, int , int ,int ,int ,int);
void actualizare ( int , int , int , int , int , int );
int interogare ( int , int ,int , int , int );
int v[30000];
int main()
{
int i,n,m,y,z,t;
fin>>n>>m;
for (i=1;i<=n;i++)
{
fin>>y;
initializare (1,i,i,1,n,y);
}
//for (i=0;i<=n*n;i++)
// fout<<v[i]<<" ";
for (i=1;i<=m;i++)
{
fin>>y>>z>>t;
if (!y)
{
actualizare (1,z,z,1,n,t);
}
else
{
fout<<interogare(1,z,t,1,n)<<"\n";
}
}
//fout<<"\n";
//for (i=0;i<=n*n;i++)
//fout<<v[i]<<" ";
return 0;
}
void initializare ( int ind , int a, int b, int stg , int dr , int x )
{
int mid;
if (a<=stg && b>=dr )
{
v[ind]=x;
}
else
{
mid=(stg+dr)/2;
if (a<=mid)
initializare ( ind*2,a,b,stg,mid,x);
if (b>mid)
initializare ( ind*2+1,a,b,mid+1,dr,x);
v[ind]=v[ind*2]+v[ind*2+1];
}
}
void actualizare ( int ind , int a , int b , int stg , int dr , int x)
{
int mid;
if (a<=stg && b>=dr )
{
v[ind]=v[ind]-x;
}
else
{
mid=(stg+dr)/2;
if (a<=mid)
actualizare ( ind*2,a,b,stg,mid,x);
if (b>mid)
actualizare ( ind*2+1,a,b,mid+1,dr,x);
v[ind]=v[ind]-x;
}
}
int interogare ( int ind , int a ,int b , int stg , int dr )
{
int s=0,d=0,mid;
if (a<=stg&&b>=dr)
{
return v[ind];
}
else
{
mid=(stg+dr)/2;
if (a<=mid)
s=interogare ( ind*2,a,b,stg,mid);
if (b>mid)
d=interogare (ind*2+1,a,b,mid+1,dr);
return s+d;
}
}