#include <bits/stdc++.h>
#define rep(i, a, b) for(int (i) = (a); (i) < (b); (i)++)
#define MAXN 101010
using namespace std;
struct Node{
int qt, l, r;
Node():qt(0),l(0),r(0){}
}st[10101010];
int ptr = 1;
int upd(int node, int l, int r, int p, int v){
if(p < l || r < p) return node;
if(l == r){
st[ptr].qt = st[node].qt + v, st[ptr].l = st[node].l, st[ptr].r = st[node].r;
return ptr++;
}
int mid = (l+r)>>1, fe, fd;
fe = upd(st[node].l, l, mid, p, v);
fd = upd(st[node].r, mid+1,r,p, v);
st[ptr].qt = st[fe].qt + st[fd].qt, st[ptr].l = fe, st[ptr].r = fd;
return ptr++;
}
int query(int a, int b, int l, int r, int k){
if(l==r) return l;
int mid = (l+r)>>1;
int tesq = st[st[b].l].qt - st[st[a].l].qt;
if(tesq >= k) return query(st[a].l, st[b].l, l, mid, k);
return query(st[a].r, st[b].r, mid+1, r, k-tesq);
}
int n, m, vet[MAXN], aux[MAXN], tree[MAXN];
int main(){
scanf("%d%d", &n, &m);
rep(i,1,n+1) scanf("%d", vet+i), aux[i] = vet[i];
sort(aux+1,aux+n+1);
rep(i,1,n+1){
vet[i] = lower_bound(aux+1, aux+n+1, vet[i]) - aux;
tree[i] = upd(tree[i-1], 1, n, vet[i], 1);
}
while(m--){
char op;
scanf(" %c", &op);
if(op == 'Q'){
int a, b, k;
scanf("%d%d%d", &a, &b, &k);
printf("%d\n", aux[query(tree[a-1], tree[b], 1, n, k)]);
}else{
int p;
scanf("%d", &p);
tree[p] = upd(tree[p], 1, n, vet[p],-1);
swap(vet[p], vet[p+1]);
tree[p] = upd(tree[p], 1, n, vet[p], 1);
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcmVwKGksIGEsIGIpIGZvcihpbnQgKGkpID0gKGEpOyAoaSkgPCAoYik7IChpKSsrKQojZGVmaW5lIE1BWE4gMTAxMDEwCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZXsKCWludCBxdCwgbCwgcjsKCU5vZGUoKTpxdCgwKSxsKDApLHIoMCl7fQp9c3RbMTAxMDEwMTBdOwppbnQgcHRyID0gMTsKCmludCB1cGQoaW50IG5vZGUsIGludCBsLCBpbnQgciwgaW50IHAsIGludCB2KXsKCWlmKHAgPCBsIHx8IHIgPCBwKSByZXR1cm4gbm9kZTsgCglpZihsID09IHIpewoJCXN0W3B0cl0ucXQgPSBzdFtub2RlXS5xdCArIHYsIHN0W3B0cl0ubCA9IHN0W25vZGVdLmwsIHN0W3B0cl0uciA9IHN0W25vZGVdLnI7CgkJcmV0dXJuIHB0cisrOwoJfQoJaW50IG1pZCA9IChsK3IpPj4xLCBmZSwgZmQ7CglmZSA9IHVwZChzdFtub2RlXS5sLCBsLCBtaWQsIHAsIHYpOwoJZmQgPSB1cGQoc3Rbbm9kZV0uciwgbWlkKzEscixwLCB2KTsKCXN0W3B0cl0ucXQgPSBzdFtmZV0ucXQgKyBzdFtmZF0ucXQsIHN0W3B0cl0ubCA9IGZlLCBzdFtwdHJdLnIgPSBmZDsKCXJldHVybiBwdHIrKzsKfQoKaW50IHF1ZXJ5KGludCBhLCBpbnQgYiwgaW50IGwsIGludCByLCBpbnQgayl7CglpZihsPT1yKSByZXR1cm4gbDsKCWludCBtaWQgPSAobCtyKT4+MTsKCWludCB0ZXNxID0gc3Rbc3RbYl0ubF0ucXQgLSBzdFtzdFthXS5sXS5xdDsKCWlmKHRlc3EgPj0gaykgcmV0dXJuIHF1ZXJ5KHN0W2FdLmwsIHN0W2JdLmwsIGwsIG1pZCwgayk7CglyZXR1cm4gcXVlcnkoc3RbYV0uciwgc3RbYl0uciwgbWlkKzEsIHIsIGstdGVzcSk7Cn0KCmludCBuLCBtLCB2ZXRbTUFYTl0sIGF1eFtNQVhOXSwgdHJlZVtNQVhOXTsKCmludCBtYWluKCl7CglzY2FuZigiJWQlZCIsICZuLCAmbSk7CglyZXAoaSwxLG4rMSkgc2NhbmYoIiVkIiwgdmV0K2kpLCBhdXhbaV0gPSB2ZXRbaV07Cglzb3J0KGF1eCsxLGF1eCtuKzEpOwoJcmVwKGksMSxuKzEpewoJCXZldFtpXSA9IGxvd2VyX2JvdW5kKGF1eCsxLCBhdXgrbisxLCB2ZXRbaV0pIC0gYXV4OwoJCXRyZWVbaV0gPSB1cGQodHJlZVtpLTFdLCAxLCBuLCB2ZXRbaV0sIDEpOwoJfQoJd2hpbGUobS0tKXsKCQljaGFyIG9wOwoJCXNjYW5mKCIgJWMiLCAmb3ApOwoJCWlmKG9wID09ICdRJyl7CgkJCWludCBhLCBiLCBrOwoJCQlzY2FuZigiJWQlZCVkIiwgJmEsICZiLCAmayk7CgkJCXByaW50ZigiJWRcbiIsIGF1eFtxdWVyeSh0cmVlW2EtMV0sIHRyZWVbYl0sIDEsIG4sIGspXSk7CgkJfWVsc2V7CgkJCWludCBwOwoJCQlzY2FuZigiJWQiLCAmcCk7CgkJCXRyZWVbcF0gPSB1cGQodHJlZVtwXSwgMSwgbiwgdmV0W3BdLC0xKTsKCQkJc3dhcCh2ZXRbcF0sIHZldFtwKzFdKTsKCQkJdHJlZVtwXSA9IHVwZCh0cmVlW3BdLCAxLCBuLCB2ZXRbcF0sIDEpOwoJCX0KCX0KfQ==