#include <bits/stdc++.h>
#define lowbit(x) (x & (-x))
using namespace std;
long long n, m;
long long ba[100010];
struct BIT
{
vector<long long> val,a1,a2;
void init()
{
val.resize(n + 10);
a1.resize(n + 10);
a2.resize(n + 10);
}
void update(long long pos,long long k) {
for(long long i = pos;i <= n + 5;i += lowbit(i)) {
a1[i] += k;
a2[i] += k * pos;
}
}
long long query(long long pos) {
long long res = 0;
for(long long i = pos;i > 0;i -= lowbit(i)) res += (pos + 1) * a1[i] - a2[i];
return res;
}
void bulid(){for(long long i = 1;i <= n + 5;++i) update(i,val[i] - val[i - 1]);}
void reg_add(long long l,long long r,long long k){update(l,k);update(r + 1,-k);}
long long reg_sum(long long l,long long r){return query(r) - query(l - 1);}
} wlx;
struct operate
{
char opt;
int l, r, c;
int x, y, b;
};
operate a[200010];
long long ans[100010];
void work(long long ld, long long rd, vector <long long> &now)
{
if (now.empty()) return ;
if (ld == rd) {for (auto x : now) ans[x] = ld; return ;}
long long mid = (ld + rd) >> 1;
vector <long long> left, right;
for (auto x : now)
if (a[x].opt == 'C')
{
if (a[x].y > mid) {wlx.reg_add(a[x].x, a[x].x, 1); right.push_back(x);}
else left.push_back(x);
}
else if (a[x].opt == 'T')
{
if (a[x].y > mid) {wlx.reg_add(a[x].x, a[x].x, -1); right.push_back(x);}
else left.push_back(x);
}
else
{
long long num = wlx.reg_sum(a[x].l, a[x].r);
if (a[x].c > num) {a[x].c -= num; left.push_back(x);}
else right.push_back(x);
}
for (auto x : now)
if (a[x].opt == 'C')
{
if (a[x].y > mid) wlx.reg_add(a[x].x, a[x].x, -1);
}
else if (a[x].opt == 'T')
{
if (a[x].y > mid) wlx.reg_add(a[x].x, a[x].x, 1);
}
work(mid + 1, rd, right);
work(ld, mid, left);
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> ba[i];
a[i].opt = 'C';
a[i].x = i;
a[i].b = -1;
a[i].y = ba[i];
}
wlx.init();
int cnt = n;
for (long long i = 1; i <= m; i++)
{
cnt++;
cin >> a[cnt].opt;
if (a[cnt].opt == 'Q')
{
cin >> a[cnt].l >> a[cnt].r >> a[cnt].c;
a[cnt].c *= -1;
a[cnt].c += -a[cnt].l + a[cnt].r + 2;
}
else
{
cin >> a[cnt].x >> a[cnt].y;
a[cnt].b = ba[a[cnt].x];
ba[a[cnt].x] = a[cnt].y;
cnt++;
a[cnt].opt = 'T';
a[cnt].x = a[cnt - 1].x;
a[cnt].y = a[cnt - 1].b;
}
}
vector <long long> all;
for (long long i = 1; i <= cnt; i++) all.push_back(i);
work(0, 1000000000, all);
for (long long i = 1; i <= cnt; i++) if (a[i].opt == 'Q') cout << ans[i] << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbG93Yml0KHgpICh4ICYgKC14KSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbG9uZyBsb25nIG4sIG07CmxvbmcgbG9uZyBiYVsxMDAwMTBdOwpzdHJ1Y3QgQklUCnsKICAgIHZlY3Rvcjxsb25nIGxvbmc+IHZhbCxhMSxhMjsKICAgIHZvaWQgaW5pdCgpCiAgICB7CiAgICAJdmFsLnJlc2l6ZShuICsgMTApOwogICAgCWExLnJlc2l6ZShuICsgMTApOwogICAgCWEyLnJlc2l6ZShuICsgMTApOwogICAgfQogICAgdm9pZCB1cGRhdGUobG9uZyBsb25nIHBvcyxsb25nIGxvbmcgaykgewogICAgICAgIGZvcihsb25nIGxvbmcgaSA9IHBvcztpIDw9IG4gKyA1O2kgKz0gbG93Yml0KGkpKSB7CiAgICAgICAgICAgIGExW2ldICs9IGs7CiAgICAgICAgICAgIGEyW2ldICs9IGsgKiBwb3M7CiAgICAgICAgfQogICAgfQogICAgbG9uZyBsb25nIHF1ZXJ5KGxvbmcgbG9uZyBwb3MpIHsKICAgICAgICBsb25nIGxvbmcgcmVzID0gMDsKICAgICAgICBmb3IobG9uZyBsb25nIGkgPSBwb3M7aSA+IDA7aSAtPSBsb3diaXQoaSkpIHJlcyArPSAocG9zICsgMSkgKiBhMVtpXSAtIGEyW2ldOwogICAgICAgIHJldHVybiByZXM7CiAgICB9CiAgICB2b2lkIGJ1bGlkKCl7Zm9yKGxvbmcgbG9uZyBpID0gMTtpIDw9IG4gKyA1OysraSkgdXBkYXRlKGksdmFsW2ldIC0gdmFsW2kgLSAxXSk7fQogICAgdm9pZCByZWdfYWRkKGxvbmcgbG9uZyBsLGxvbmcgbG9uZyByLGxvbmcgbG9uZyBrKXt1cGRhdGUobCxrKTt1cGRhdGUociArIDEsLWspO30KICAgIGxvbmcgbG9uZyByZWdfc3VtKGxvbmcgbG9uZyBsLGxvbmcgbG9uZyByKXtyZXR1cm4gcXVlcnkocikgLSBxdWVyeShsIC0gMSk7fQp9IHdseDsKc3RydWN0IG9wZXJhdGUKewoJY2hhciBvcHQ7CglpbnQgbCwgciwgYzsKCWludCB4LCB5LCBiOwp9OwpvcGVyYXRlIGFbMjAwMDEwXTsKbG9uZyBsb25nIGFuc1sxMDAwMTBdOwp2b2lkIHdvcmsobG9uZyBsb25nIGxkLCBsb25nIGxvbmcgcmQsIHZlY3RvciA8bG9uZyBsb25nPiAmbm93KQp7CglpZiAobm93LmVtcHR5KCkpIHJldHVybiA7CglpZiAobGQgPT0gcmQpIHtmb3IgKGF1dG8geCA6IG5vdykgYW5zW3hdID0gbGQ7IHJldHVybiA7fQoJbG9uZyBsb25nIG1pZCA9IChsZCArIHJkKSA+PiAxOwoJdmVjdG9yIDxsb25nIGxvbmc+IGxlZnQsIHJpZ2h0OwoJZm9yIChhdXRvIHggOiBub3cpCgkJaWYgKGFbeF0ub3B0ID09ICdDJykKCQl7CgkJCWlmIChhW3hdLnkgPiBtaWQpIHt3bHgucmVnX2FkZChhW3hdLngsIGFbeF0ueCwgMSk7IHJpZ2h0LnB1c2hfYmFjayh4KTt9CgkJCWVsc2UgbGVmdC5wdXNoX2JhY2soeCk7CgkJfQoJCWVsc2UgaWYgKGFbeF0ub3B0ID09ICdUJykKCQl7CgkJCWlmIChhW3hdLnkgPiBtaWQpIHt3bHgucmVnX2FkZChhW3hdLngsIGFbeF0ueCwgLTEpOyByaWdodC5wdXNoX2JhY2soeCk7fQoJCQllbHNlIGxlZnQucHVzaF9iYWNrKHgpOwoJCX0KCQllbHNlCgkJewoJCQlsb25nIGxvbmcgbnVtID0gd2x4LnJlZ19zdW0oYVt4XS5sLCBhW3hdLnIpOwoJCQlpZiAoYVt4XS5jID4gbnVtKSB7YVt4XS5jIC09IG51bTsgbGVmdC5wdXNoX2JhY2soeCk7fQoJCQllbHNlIHJpZ2h0LnB1c2hfYmFjayh4KTsKCQl9Cglmb3IgKGF1dG8geCA6IG5vdykKCQlpZiAoYVt4XS5vcHQgPT0gJ0MnKQoJCXsKCQkJaWYgKGFbeF0ueSA+IG1pZCkgd2x4LnJlZ19hZGQoYVt4XS54LCBhW3hdLngsIC0xKTsgCgkJfQoJCWVsc2UgaWYgKGFbeF0ub3B0ID09ICdUJykKCQl7CgkJCWlmIChhW3hdLnkgPiBtaWQpIHdseC5yZWdfYWRkKGFbeF0ueCwgYVt4XS54LCAxKTsgCgkJfQoJd29yayhtaWQgKyAxLCByZCwgcmlnaHQpOwoJd29yayhsZCwgbWlkLCBsZWZ0KTsKfQppbnQgbWFpbigpCnsKCWNpbiA+PiBuID4+IG07Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCgl7CgkJY2luID4+IGJhW2ldOwoJCWFbaV0ub3B0ID0gJ0MnOwoJCWFbaV0ueCA9IGk7CgkJYVtpXS5iID0gLTE7CgkJYVtpXS55ID0gYmFbaV07Cgl9Cgl3bHguaW5pdCgpOwoJaW50IGNudCA9IG47Cglmb3IgKGxvbmcgbG9uZyBpID0gMTsgaSA8PSBtOyBpKyspCgl7CgkJY250Kys7CgkJY2luID4+IGFbY250XS5vcHQ7CgkJaWYgKGFbY250XS5vcHQgPT0gJ1EnKQoJCXsKCQkJY2luID4+IGFbY250XS5sID4+IGFbY250XS5yID4+IGFbY250XS5jOwoJCQlhW2NudF0uYyAqPSAtMTsKCQkJYVtjbnRdLmMgKz0gLWFbY250XS5sICsgYVtjbnRdLnIgKyAyOwoJCX0KCQllbHNlCgkJewoJCQljaW4gPj4gYVtjbnRdLnggPj4gYVtjbnRdLnk7CgkJCWFbY250XS5iID0gYmFbYVtjbnRdLnhdOwoJCQliYVthW2NudF0ueF0gPSBhW2NudF0ueTsKCQkJY250Kys7CgkJCWFbY250XS5vcHQgPSAnVCc7CgkJCWFbY250XS54ID0gYVtjbnQgLSAxXS54OwoJCQlhW2NudF0ueSA9IGFbY250IC0gMV0uYjsKCQl9Cgl9Cgl2ZWN0b3IgPGxvbmcgbG9uZz4gYWxsOwoJZm9yIChsb25nIGxvbmcgaSA9IDE7IGkgPD0gY250OyBpKyspIGFsbC5wdXNoX2JhY2soaSk7Cgl3b3JrKDAsIDEwMDAwMDAwMDAsIGFsbCk7Cglmb3IgKGxvbmcgbG9uZyBpID0gMTsgaSA8PSBjbnQ7IGkrKykgaWYgKGFbaV0ub3B0ID09ICdRJykgY291dCA8PCBhbnNbaV0gPDwgZW5kbDsKCXJldHVybiAwOwp9