#include <fstream>
using namespace std;
int v[200001];
int arb[200001];
ifstream cin("arbint.in");
ofstream cout("arbint.out");
void act(int arb[],int st,int dr,int pos,int nod) {
if(dr-st==0) {
if(st==pos)arb[nod]=v[pos];
} else if(st<=pos&&pos<=dr) {
int m=(st+dr)/2;
act(arb,st,m,pos,2*nod);
act(arb,m+1,dr,pos,2*nod+1);
if(arb[2*nod]>arb[2*nod+1])
arb[nod]=arb[2*nod];
else
arb[nod]=arb[2*nod+1];
}
}
int inter(int arb[],int st,int dr,int nod,int a, int b)
{
if(b<st||dr<a)return -1;
if(a<=st&&dr<=b)
return arb[nod];
else
{int m=(st+dr)/2;
int m1 = inter(arb,st,m,2*nod,a,b);
int m2 = inter(arb,m+1,dr,2*nod+1,a,b);
if(m1>m2)return m1;
else
return m2;
}
}
int main() {
int n,m,x,y,z;
cin>>n>>m;
for(int i=1; i<=n; i++) {
cin>>v[i];
act(arb,1,n,i,1);
}
for(int i=1; i<=m; i++) {
cin>>x>>y>>z;
if(x==0) {
cout<<inter(arb,1,n,1,y,z)<<endl;
}
else {
v[y]=z;
act(arb,1,n,y,1);
}
}
return 0;
}