#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define inf 1<<30
using namespace std;
const int N=2*(int)1e5+1;
int tree[4*N];
int n,m,a[N];
int ls(int p) {return p<<1; }
int rs(int p) {return p<<1|1; }
void push_up(int p){
tree[p]=max(tree[ls(p)],tree[rs(p)]);
}
void build(int p,int pl,int pr){
if(pl==pr){
tree[p]=a[pl];
return;
}
int mid=(pl+pr)>>1;
build(ls(p),pl,mid);
build(rs(p),mid+1,pr);
push_up(p);
}
int query(int L,int R,int p,int pl,int pr){
if(L<=pl && R>=pr) return tree[p];
int mid=(pl+pr)>>1,res=(1<<30)*-1;
if(L<=mid) res=max(res,query(L,R,ls(p),pl,mid));
if(R>=mid) res=max(res,query(L,R,rs(p),mid+1,pr));
return res;
}
void add(int p,int pl,int pr,int v,int b){
if(pl==pr)
if(a[v]<b) a[v]=b;
int mid=(pl+pr)>>1;
if(v<=mid) add(ls(p),pl,mid,v,b);
else add(rs(p),mid+1,pr,v,b);
push_up(p);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
build(1,1,n);
for(int i=1;i<=m;i++){
char c[1100];int x,y;
cin>>c>>x>>y;
if(c[0]=='Q'){
printf("%d",query(x,y,1,1,n));
}else
add(1,1,n,x,y);
}
}