#include <cstdio>
#define maxx 100004
#define valm 1000000005
#include<algorithm>
#include<math.h>
using namespace std;
long long int A[300001],maxim,valoare;
int m,n,op,a,b,poz;
void update(int i,int left,int right){
if(left==right){
A[i]=valoare;
}
else{
int mij=(left+right)/2;
if(poz<=mij){
update(2*i,left,mij);
}
else{
update(2*i+1,mij+1,right);
}
A[i]=max(A[2*i],A[2*i+1]);
}
}
void maxi(int i,int left,int right,long long int &maxim){
if(a<= left && b>=right){
maxim=max(maxim,A[i]);
return;
}
int mij=(left+right)/2;
if(b<=mij){
maxi(2*i,left,mij,maxim);
}
else{
if(a>mij){
maxi(2*i+1,mij+1,right,maxim);
}
else{
maxi(2*i,left,mij,maxim);
maxi(2*i+1,mij+1,right,maxim);
}
}
}
int main(){
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
scanf("%d",&a);
valoare=a;
poz=i;
update(1,1,n);
}
for(int i=1;i<=m;++i){
scanf("%d%d%d",&op,&a,&b);
if(op==0){
maxim=0;
maxi(1,1,n,maxim);
printf("%d\n",maxim);
}
else{
poz=a;
valoare=b;
update(1,1,n);
}
}
return 0;
}