#include<bits/stdc++.h>
using namespace std;
long long n,m,sq,a[200010],b[200010],l[200010],r[200010],maxn[200010],x,y;
char opt;
void add(long long x,long long y)
{
if(a[x]<y)
{
a[x]=y;
maxn[b[x]]=max(maxn[b[x]],a[x]);
}
}
void query(long long x,long long y)
{
long long ma=0;
for(int i=x;i<=r[b[x]];i++)
ma=max(ma,a[i]);
for(int i=l[b[y]];i<=y;i++)
ma=max(ma,a[i]);
for(int i=b[x]+1;i<=b[y]-1;i++)
ma=max(ma,maxn[i]);
cout<<ma<<endl;
}
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl '\n'
#define QwQ return 0;
int main()
{
IOS;
cin>>n>>m;
sq=sqrt(n);
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
l[i]=r[i-1]+1;
r[i]=min(n,sq*i);
for(int j=l[i];j<=r[i];j++)
b[j]=i,maxn[i]=max(maxn[i],a[j]);
}
while(m--)
{
cin>>opt;
if(opt=='U')
cin>>x>>y,add(x,y);
else
cin>>x>>y,query(x,y);
}
QwQ;
}