#include <iostream>
#include <fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n,m,v[400005],c,a,b;
void add(int st, int dr, int i, int poz){
if(st >= dr){
v[poz] = a;
return;
}
int mij = (st + dr)/2;
if(i>mij)
{
add(mij+1, dr, i, poz*2+1);
}
else
{
add(st,mij,i,poz*2);
}
v[poz] = max(v[poz*2],v[poz*2+1]);
}
int maxim(int st, int dr, int sta, int dra, int poz){
if(dr<sta || (sta == dra && st!= dr)) {
//cout<<"max 0";
return 0;
}
if(st == sta && dr == dra)
return v[poz];
int mij = (sta+dra)/2;
int max1=0,max2=0;
if(st<=mij)
max1=maxim(st, min(dr,mij), sta, mij, poz*2);
if(dr>mij)
max2=maxim(max(st,mij+1), dr, mij+1, dra, poz*2+1);
return max(max1, max2);
}
int main() {
in>>n>>m;
for(int i=1;i<=n;++i)
{
in>>a;
add(1,n,i,1);
}
for(int i=1;i<=m;++i)
{
in>>c>>a>>b;
if(c==1)
add(1,n,a,1);
else
out<<maxim(a,b,1,n,1)<<'\n';
}
}