#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
void atribuire(int i, int st, int dr, int poz, int val, int A[])
{
int mij;
if (st == dr)
{
A[i] = A[i]+val;
return;
}
mij = (st+dr)/2;
if (poz <= mij)
atribuire(2*i, st, mij, poz, val, A);
else
atribuire(2*i+1, mij+1, dr, poz, val, A);
A[i] = A[2*i]+A[2*i+1];
}
int sume(int i, int st, int dr, int x, int y, int A[])
{
int mij = (st+dr)/2, suma1 = 0, suma2=0;
if (x <= st && y >= dr)
return A[i];
if (x <= mij)
suma1 = sume(2*i, st, mij, x, y, A);
if (y > mij)
suma2 = sume(2*i+1, mij + 1, dr, x, y, A);
return suma1 + suma2;
}
int main()
{
int A[300001], N, M, valori, i, cod, T, V, P, Q;
f>>N>>M;
for(i=1; i<=N; i++)
{
f>>valori;
atribuire(1, 1, N, i, valori, A);
}
for(i=1; i<=M; i++)
{
f>>cod;
if (cod == 0)
{
f>>T>>V;
atribuire(1, 1, N, T, -V, A);
}
else
{
f>>P>>Q;
g<<sume(1, 1, N, P, Q, A)<<'\n';
}
}
return 0;
}