program datorii;
var f,fout:text;
n,m,i,t,a,b:longint;
h:array[1..30000] of longint;
procedure berak(n,k,v,p,e:longint);
var m:longint;
begin
if (k=v) then
begin
h[n]:=h[n]+e;
end else
begin
m:=(k+v) div 2;
if(p <= m) then berak(n*2,k,m,p,e)
else berak(n*2+1,m+1,v,p,e);
h[n]:=h[n]+e;
end;
end;
procedure kivesz(n,k,v,p,e:longint);
var m:longint;
begin
if (k=v) then
begin
h[n]:=h[n]-e;
end else
begin
m:=(k+v) div 2;
if(p <= m) then kivesz(n*2,k,m,p,e)
else kivesz(n*2+1,m+1,v,p,e);
h[n]:=h[n]-e;
end;
end;
function lekerdez(n,k,v,a,b:longint):longint;
var e,m:longint;
begin
if (a<=k) and (v<=b) then
begin
e:=h[n];
lekerdez:=e;
end else
begin
e:=0;
m:=(k+v) div 2;
if(a <= m) then e:=e+lekerdez(2*n,k,m,a,b);
if(b > m) then e:=e+lekerdez(2*n+1,m+1,v,a,b);
lekerdez:=e;
end;
end;
begin
assign(f,'datorii.in');
assign(fout,'datorii.out');
reset(f);
rewrite(fout);
readln(f,n,m);
for i:=1 to n do
begin
read(f,t);
berak(1,1,n,i,t);
end;
readln(f);
for i:=1 to m do
begin
readln(f,t,a,b);
if(t=0) then
begin
kivesz(1,1,n,a,b);
end else
begin
{writeln(fout,lekerdez(1,1,n,a,b));}
end;
end;
close(f);
close(fout);
end.