#include<fstream>
#include<cmath>
#define N 100002
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int v[N], b[400];
int main(){
int n, m, sq, k=-1;
cin >> n >> m;
sq = sqrt(n);
for(int i=0; i<n; i++){
cin >> v[i];
if(i%sq == 0){
k++;
}
b[k] =max(b[k], v[i]);
}
for(int i=1; i<=m; i++){
int c, x, y;
cin >> c >> x >> y;
if(c == 0){x--;y--;
int mx = -1;
while(x<y && x%sq && x){
mx = max(mx, v[x]);
x++;
}
while(x+sq <= y){
mx = max(mx, b[x/sq]);
x += sq;
}
while(x <= y){
mx = max(mx, v[x]);
x++;
}
cout << mx << "\n";
}
else{x--;
v[x] = y;
b[x/sq] = 0;
for(int i=(x/sq) *sq; i<(x/sq+1) *sq; i++){
b[x/sq] = max(b[x/sq], v[i]);
}
}
}
return 0;
}