#include
#include
using namespace std;
int sum[200000*3];
void build(int L,int R,int rt)
{
if(L==R)
{
scanf("%d",&sum[rt]);
return;
}
else
{
int mid=(L+R)>>1;
build(L,mid,rt<
build(mid+1,R,(rt
sum[rt]=sum[rtsum[(rt<<1)+1]?sum[rt<<1]:sum[(rt<<1)+1];
}
}
int qmax(int ql,int qr,int L,int R,int rt)
{
if(ql<=L&&R<=qr)
return sum[rt];
else
{
int mid=(L+R)>>1;
int ret=0;
if(ql<=mid)
ret=qmax(ql,qr,L,mid,rt<ret?qmax(ql,qr,L,mid,rt<
if(qr>mid)
ret=qmax(ql,qr,mid+1,R,(rt<ret?qmax(ql,qr,mid+1,R,(rt<
return ret;
}
}
void update(int p,int q,int l,int r,int rt)
{
if(l==r)
{
sum[rt]=q;
return;
}
int m=(l+r)>>1;
if(p<=m)
update(p,q,l,m,rt<
else
update(p,q,m+1,r,(rt
sum[rt]=sum[rtsum[(rt<<1)+1]?sum[rt<<1]:sum[(rt<<1)+1];
}
int main()
{
int N,M;
int a,b;
while(~scanf("%d%d",&N,&M))
{
for(int i=0;i<M;i++)
{
build(1,N,1);
char c;
scanf("%s",&c);
scanf("%d%d",&a,&b);
if(c=='Q')
{
printf("%d\n",qmax(a,b,1,N,1));
}
if(c=='U')
{
update(a,b,1,N,1);
}
}
}
return 0;
}