#include<iostream>
using namespace std;
int find_max(int *s, int  A, int B){
    int temp = A-1;
    for(int i = A; i < B; i++){
        if(s[i] > s[temp])
            temp = i;
    }
    return s[temp];
}
int main(){
    int N,M;
    while(cin>>N>>M){
        int *score = new int[N];
        int *result = new int [M];
        int j = 0;
        for(int i = 0; i < N; i++)
            cin>>score[i];
        for(int i = 0; i < M; i++){
            char ch;
            int A,B;
            cin>>ch>>A>>B;
            if(ch == 'Q'){
                if(A > B){
                    int temp = A;
                    A = B;
                    B = temp;
                }
                result[j] = find_max(score, A, B);
                j++;
            }
            else{
                score[A-1] = B;
            }
        }
        for(int i = 0; i < j; i++)
            cout<<result[i]<<endl;
    }
    return 0;
}

这道题的坑在于查询时候的A和B的大小,还有就是题目的要求是多组输入数据,其他的就应该没什么问题了