#include <bits/stdc++.h>
using namespace std;
const int MAXN=2e5+1;
int n, q, a[MAXN], type[MAXN], l[MAXN], r[MAXN], cnt=0;
char c;
set<int> s;
map<int, int> mp;
struct fenwick_tree{
int f[3*MAXN];
void update(int pos, int val)
{
for (int i=pos; i<=cnt; i+=i&-i){
f[i]+=val;
}
}
int getSum(int pos)
{
int res=0;
for (int i=pos; i>0; i-=i&-i){
res+=f[i];
}
return res;
}
int query(int l, int r)
{
return getSum(r)-getSum(l-1);
}
}BIT;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> q;
for (int i=1; i<=n; i++){
cin >> a[i];
s.insert(a[i]);
}
for (int i=1; i<=q; i++){
cin >> c >> l[i] >> r[i];
if(c=='?') type[i]=1;
s.insert(r[i]);
if(type[i]) s.insert(l[i]);
}
for (auto x:s){
mp[x]=++cnt;
}
for (int i=1; i<=n; i++){
a[i]=mp[a[i]];
BIT.update(a[i], 1);
}
for (int i=1; i<=q; i++){
if(type[i]){
cout << BIT.query(mp[l[i]], mp[r[i]]) << "\n";
continue;
}
BIT.update(a[l[i]], -1);
a[l[i]]=mp[r[i]];
BIT.update(a[l[i]], 1);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYTj0yZTUrMTsKaW50IG4sIHEsIGFbTUFYTl0sIHR5cGVbTUFYTl0sIGxbTUFYTl0sIHJbTUFYTl0sIGNudD0wOwpjaGFyIGM7CnNldDxpbnQ+IHM7Cm1hcDxpbnQsIGludD4gbXA7CgpzdHJ1Y3QgZmVud2lja190cmVlewogICAgaW50IGZbMypNQVhOXTsKCiAgICB2b2lkIHVwZGF0ZShpbnQgcG9zLCBpbnQgdmFsKQogICAgewogICAgICAgIGZvciAoaW50IGk9cG9zOyBpPD1jbnQ7IGkrPWkmLWkpewogICAgICAgICAgICBmW2ldKz12YWw7CiAgICAgICAgfQogICAgfQoKICAgIGludCBnZXRTdW0oaW50IHBvcykKICAgIHsKICAgICAgICBpbnQgcmVzPTA7CiAgICAgICAgZm9yIChpbnQgaT1wb3M7IGk+MDsgaS09aSYtaSl7CiAgICAgICAgICAgIHJlcys9ZltpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBpbnQgcXVlcnkoaW50IGwsIGludCByKQogICAgewogICAgICAgIHJldHVybiBnZXRTdW0ociktZ2V0U3VtKGwtMSk7CiAgICB9Cn1CSVQ7CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IHE7CiAgICBmb3IgKGludCBpPTE7IGk8PW47IGkrKyl7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgcy5pbnNlcnQoYVtpXSk7CiAgICB9CiAgICBmb3IgKGludCBpPTE7IGk8PXE7IGkrKyl7CiAgICAgICAgY2luID4+IGMgPj4gbFtpXSA+PiByW2ldOwogICAgICAgIGlmKGM9PSc/JykgdHlwZVtpXT0xOwogICAgICAgIHMuaW5zZXJ0KHJbaV0pOwogICAgICAgIGlmKHR5cGVbaV0pIHMuaW5zZXJ0KGxbaV0pOwogICAgfQogICAgZm9yIChhdXRvIHg6cyl7CiAgICAgICAgbXBbeF09KytjbnQ7CiAgICB9CiAgICBmb3IgKGludCBpPTE7IGk8PW47IGkrKyl7CiAgICAgICAgYVtpXT1tcFthW2ldXTsKICAgICAgICBCSVQudXBkYXRlKGFbaV0sIDEpOwogICAgfQogICAgZm9yIChpbnQgaT0xOyBpPD1xOyBpKyspewogICAgICAgIGlmKHR5cGVbaV0pewogICAgICAgICAgICBjb3V0IDw8IEJJVC5xdWVyeShtcFtsW2ldXSwgbXBbcltpXV0pIDw8ICJcbiI7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBCSVQudXBkYXRlKGFbbFtpXV0sIC0xKTsKICAgICAgICBhW2xbaV1dPW1wW3JbaV1dOwogICAgICAgIEJJVC51cGRhdGUoYVtsW2ldXSwgMSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=