var a,b,c,n,m,i:longint;
v:array[1..15000] of longint;
d:array[1..45000] of longint;
Bufin, Bufout:array[1..100000] of longint;
procedure creare(nod,st,dr:longint);
var m:longint;
begin
if st=dr then
d[nod]:=v[st]
else begin
m:=(st+dr) div 2;
creare(nod*2,st,m);
creare(nod*2+1,m+1,dr);
d[nod]:=d[nod*2]+d[nod*2+1];
end;
end;
function interogare(nod,st,dr,a,b:longint):longint;
var m,k,p:longint;
begin
if (a<=st) and (dr<=b) then
interogare:=d[nod]
else begin
m:=(st+dr) div 2;
k:=0; p:=0;
if a<=m then k:=interogare(nod*2,st,m,a,b);
if b>m then p:=interogare(nod*2+1,m+1,dr,a,b);
interogare:=k+p;
end;
end;
procedure actualizare(nod,st,dr,a,b:longint);
var m:longint;
begin
if (a=st) and (a=dr) then
d[nod]:=d[nod]-b
else begin
m:=(st+dr) div 2;
if a<=m then actualizare(nod*2,st,m,a,b)
else actualizare(nod*2+1,m+1,dr,a,b);
d[nod]:=d[nod*2]+d[nod*2+1];
end;
end;
begin
assign(input,'datorii.in');
assign(output,'datorii.out');
reset(input);
rewrite(output);
SetTextBuf(input,Bufin);
SetTextBuf(output,Bufout);
read(n,m);
for i:=1 to n do read(v[i]);
creare(1,1,n);
for i:=1 to m do begin
read(c,a,b);
if c=0 then actualizare(1,1,n,a,b)
else writeln(interogare(1,1,n,a,b));
// writeln(interogare(1,1,n,a,b));
end;
end.