#include <iostream>
#include <fstream>
using namespace std;
int n,m,op,a,b;
int arbore[400001];
ifstream f("datorii.in");
ofstream g("datorii.out");
int suma_int(int nod, int st, int dr, int inceput, int sfarsit)
{
if(inceput > dr || sfarsit < st)
return 0;
if(inceput <= st && sfarsit >= dr)
return arbore[nod];
else
{
int mijloc_int = (st+dr) >> 1 ;
return suma_int(nod << 1, st,mijloc_int,inceput,sfarsit) + suma_int((nod << 1)+1, mijloc_int+1, dr, inceput, sfarsit);
}
}
void insert_val(int nod, int st, int dr, int poz, int val) {
if(poz > dr || poz < st) return;
if(st == poz && st == dr)
{
arbore[nod] += val;
return;
}
int mijloc_int = (st+dr) >> 1;
if (poz <= mijloc_int)
insert_val(nod << 1, st, mijloc_int,poz,val);
else
{
insert_val((nod << 1)+1, mijloc_int+1, dr, poz, val);
}
arbore[nod] = arbore[nod << 1] + arbore[(nod << 1) + 1];
}
int main()
{
f >> n >> m;
int x;
for(int i = 1; i <= n; ++i)
{
f >> x;
insert_val(1,1,n,i,x);
}
for( int i = 0; i < m; ++i) {
f >> op >> a >> b;
if(!op)
{
insert_val(1,1,n,a,-b);
}
else
{
g << suma_int(1,1,n,a,b) << '\n';
}
}
return 0;
}