var n,i,j,k,l,r,q,x,y,m:longint;
c:char;
a:array[0..100005] of int64;
p,flag:array[0..1000005] of int64;
function min(a,b:int64):int64;
begin
if a<b then exit(A);
exit(B);
end;
procedure build(t,l,r:longint);
var mid:longint;
begin
if l=r then
begin
p[t]:=a[l];
exit;
end;
mid:=(l+r) div 2;
build(t*2,l,mid);
build(t*2+1,mid+1,r);
p[t]:=min(p[t*2],p[t*2+1]);
end;
procedure change(t,l,r,y,s:longint);
var mid:longint;
begin
if (l=y)and(r=y) then begin p[t]:=s;exit;end;
mid:=(l+r) div 2;
if y>mid then change(t*2+1,mid+1,r,y,s)else
if y<=mid then change(t*2,l,mid,y,s);
p[t]:=min(p[t*2],p[t*2+1]);
end;
function find(t,l,r,x,y:longint):int64;
var mid:longint;
begin
if (x=l)and(y=r) then exit(p[t]);
mid:=(l+r) div 2;
if x>mid then find:=find(t*2+1,mid+1,r,x,y) else
if y<=mid then find:=find(t*2,l,mid,x,y)else
find:=min(find(t*2,l,mid,x,mid),find(t*2+1,mid+1,r,mid+1,y));
p[t]:=min(p[2*t],p[2*t+1]);
end;
begin
readln(N,Q);
for i:=1 to n do read(a[i]);
build(1,1,n);
for i:=1 to q do
begin
read(x);
if x=1 then begin readln(l,r);
write(find(1,1,n,l,r),' ');
end else begin
readln(y,m);
change(1,1,n,y,m);
end;
end;
end.