#include <bits/stdc++.h>
#define NMAX 15005
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int n , t , v , x;
int m;
bool operation;
int ab[NMAX * 2 + 5];
void Update(int nod , int st , int dr , int pos , int val)
{
if(st == dr)
{
if(ab[nod] - val < 0)
ab[nod] = val;
else ab[nod] -= val;
return;
}
int mij = (dr - st) / 2 + st;
if(mij >= pos)
Update(2 * nod , st , mij , pos , val);
else Update(2 * nod + 1 , mij + 1 , dr , pos , val);
ab[nod] = ab[2 * nod] + ab[2 * nod + 1];
}
void Query(int nod , int st , int dr , int start , int finish , int &sum)
{
if(start <= st && dr <= finish)
{
sum += ab[nod];
return;
}
int mij = (dr - st) / 2 + st;
if(finish > mij)
Query(2 * nod + 1 , mij + 1 , dr , start , finish , sum);
if(start <= mij)
Query(2 * nod , st , mij , start , finish , sum);
}
int main()
{
int i , ans = 0;
f >> n >> m;
for(i = 1 ; i <= n ; i++)
{
f >> x;
Update(1 , 1 , n , i , x);
}
for(i = 1 ; i <= m ; i++)
{
f >> operation >> t >> v;
if(operation == 0)
Update(1 , 1 , n , t , v);
else
{
ans = 0;
Query(1 , 1 , n , t , v , ans);
g << ans << '\n';
}
}
return 0;
}