#include<fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int t,rez,y,z,i,n,x,AI[400001];
void insert(int nod,int st,int dr,int poz,int val)
{
int m=(st+dr)/2;
if (st==dr)
{
AI[nod]=val;
return;
}
if (poz<=m) insert(nod*2,st,m,poz,val);
else insert(nod*2+1,m+1,dr,poz,val);
AI[nod]=max(AI[nod*2],AI[nod*2+1]);
}
void query(int nod,int st,int dr,int a,int b)
{
int m=(st+dr)/2;
if (a<=st && dr<=b)
{
rez=max(rez,AI[nod]);
return;
}
if (a<=m) query(nod*2,st,m,a,b);
if (b>m) query(nod*2+1,m+1,dr,a,b);
}
int main()
{
in>>n>>t;
for (i=1;i<=n;i++)
{
in>>x;
insert(1,1,n,i,x);
}
for (i=1;i<=t;i++)
{
in>>x>>y>>z;
if (x==0)
{
rez=0;
query(1,1,n,y,z);
out<<rez<<'\n';
}
else insert(1,1,n,y,z);
}
}