#include <bits/stdc++.h>
#define nmax 100005
using namespace std;
FILE*f=fopen("arbint.in","r");
FILE*g=fopen("arbint.out","w");
int n,m,ai[5*nmax],v[nmax];
void adaug(int k,int a,int b,int poz,int w) {
if (a==b) ai[poz]=k;
else {
int m=(a+b)/2;
if (m>=w) adaug(k,a,m,poz*2,w);
else adaug(k,m+1,b,poz*2+1,w);
ai[poz]=max(ai[poz*2],ai[poz*2+1]);
}
}
int interog(int a,int b,int st,int dr,int poz) {
if (st<=a && b<=dr) return ai[poz];
else {
int m=(a+b)/2;
int k=0;
if (st<=m) k=interog(a,m,st,dr,poz*2);
if (dr>m) k=max(interog(m+1,b,st,dr,poz*2+1),k);
return k;
}
}
int main() {
int i,j,x,y,z;
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++) {
fscanf(f,"%d",&v[i]);
adaug(v[i],1,n,1,i);
}
for (i=1;i<=m;i++) {
fscanf(f,"%d%d%d",&x,&y,&z);
if (x==0) fprintf(g,"%d\n",interog(1,n,y,z,1));
else adaug(z,1,n,1,y);
/*for (j=1;j<=2*n;j++)
cout<<ai[j]<<' ';
cout<<'\n';*/
}
return 0;
}