#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int arb[70005],n,q,v[15005];
void actualizare(int st, int dr, int val, int pos, int pos1)
{
int m=(st+dr)/2;
arb[pos]+=val;
if(st==dr)
{
return;
}
if(pos1<=m)
{
actualizare(st,m,val,pos*2,pos1);
}
else
actualizare(m+1,dr,val,2*pos+1,pos1);
}
int solve(int st, int dr, int a, int b, int pos)
{
if(a<=st && b>=dr)
{
return arb[pos];
}
int m=(st+dr)/2,v1=0,v2=0;
if(st>b || dr<a)
return 0;
if(a<=m)
{
v1=solve(st,m,a,b,pos*2);
}
if(b>=m)
{
v2=solve(m+1,dr,a,b,pos*2+1);
}
return v1+v2;
}
int main()
{
in >> n >> q;
for(int i=1; i<=n; i++)
{
in >> v[i];
actualizare(1,n,v[i],1,i);
}
for(int i=1; i<=q; i++)
{
int a,b,c;
in >> c >> a >> b;
if(!c)
{
actualizare(1,n,max(-b,-v[a]),1,a);
}
else
{
out << solve(1,n,a,b,1) << '\n';
}
}
return 0;
}