#include <bits/stdc++.h>
using namespace std;
// #define int long long
const int maxn = 3e4 + 5;
#define fastIO \
ios_base::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
#define File(_x, _y) \
if (fopen(_x, "r")) \
freopen(_x, "r", stdin), freopen(_y, "w", stdout)
#define file "main"
int n, m, block, res, t;
int a[maxn], get_max[176];
const int maxqrt = 176;
const int N = 10001;
int T[maxqrt][N];
void update(int p, int v, int b)
{
while (p < N)
T[b][p] += v, p += p & (-p);
}
int get(int p, int b)
{
int res = 0;
while (p > 0)
res += T[b][p], p -= p & (-p);
return res;
}
int main()
{
fastIO;
File(file ".inp", file ".out");
int MX = 0;
cin >> n;
while (block * block < n)
block++;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
update(a[i], 1, i / block);
get_max[i / block]++;
}
cin >> t;
for (int i = 1; i <= t; i++)
{
int tp;
cin >> tp;
int l, r, k;
if (tp == 0)
{
cin >> l >> r;
update(a[l], -1, l / block);
update(r, 1, l / block);
a[l] = r;
}
else
{
cin >> l >> r >> k;
int sum = 0;
int l_block = l / block;
int r_block = r / block;
if (l_block == r_block)
{
for (int j = l; j <= r; ++j)
sum += (a[j] > k);
}
else
{
for (int j = l; j < (l_block + 1) * block; j++)
sum += (a[j] > k);
for (int j = r_block * block; j <= r; j++)
sum += (a[j] > k);
for (int j = l_block + 1; j < r_block; j++)
sum += get_max[j] - get(k, j);
}
cout << sum << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vICNkZWZpbmUgaW50IGxvbmcgbG9uZwpjb25zdCBpbnQgbWF4biA9IDNlNCArIDU7CiNkZWZpbmUgZmFzdElPICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IFwKICAgIGNpbi50aWUoMCk7ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBjb3V0LnRpZSgwKTsKI2RlZmluZSBGaWxlKF94LCBfeSkgICAgXAogICAgaWYgKGZvcGVuKF94LCAiciIpKSBcCiAgICBmcmVvcGVuKF94LCAiciIsIHN0ZGluKSwgZnJlb3BlbihfeSwgInciLCBzdGRvdXQpCiNkZWZpbmUgZmlsZSAibWFpbiIKCmludCBuLCBtLCBibG9jaywgcmVzLCB0OwppbnQgYVttYXhuXSwgZ2V0X21heFsxNzZdOwpjb25zdCBpbnQgbWF4cXJ0ID0gMTc2OwoKY29uc3QgaW50IE4gPSAxMDAwMTsKaW50IFRbbWF4cXJ0XVtOXTsKCnZvaWQgdXBkYXRlKGludCBwLCBpbnQgdiwgaW50IGIpCnsKICAgIHdoaWxlIChwIDwgTikKICAgICAgICBUW2JdW3BdICs9IHYsIHAgKz0gcCAmICgtcCk7Cn0KCmludCBnZXQoaW50IHAsIGludCBiKQp7CiAgICBpbnQgcmVzID0gMDsKICAgIHdoaWxlIChwID4gMCkKICAgICAgICByZXMgKz0gVFtiXVtwXSwgcCAtPSBwICYgKC1wKTsKICAgIHJldHVybiByZXM7Cn0KCmludCBtYWluKCkKewogICAgZmFzdElPOwogICAgRmlsZShmaWxlICIuaW5wIiwgZmlsZSAiLm91dCIpOwoKICAgIGludCBNWCA9IDA7CiAgICBjaW4gPj4gbjsKICAgIHdoaWxlIChibG9jayAqIGJsb2NrIDwgbikKICAgICAgICBibG9jaysrOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICB1cGRhdGUoYVtpXSwgMSwgaSAvIGJsb2NrKTsKICAgICAgICBnZXRfbWF4W2kgLyBibG9ja10rKzsKICAgIH0KCiAgICBjaW4gPj4gdDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHQ7IGkrKykKICAgIHsKICAgICAgICBpbnQgdHA7CiAgICAgICAgY2luID4+IHRwOwogICAgICAgIGludCBsLCByLCBrOwoKICAgICAgICBpZiAodHAgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGNpbiA+PiBsID4+IHI7CiAgICAgICAgICAgIHVwZGF0ZShhW2xdLCAtMSwgbCAvIGJsb2NrKTsKICAgICAgICAgICAgdXBkYXRlKHIsIDEsIGwgLyBibG9jayk7CiAgICAgICAgICAgIGFbbF0gPSByOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBjaW4gPj4gbCA+PiByID4+IGs7CiAgICAgICAgICAgIGludCBzdW0gPSAwOwogICAgICAgICAgICBpbnQgbF9ibG9jayA9IGwgLyBibG9jazsKICAgICAgICAgICAgaW50IHJfYmxvY2sgPSByIC8gYmxvY2s7CgogICAgICAgICAgICBpZiAobF9ibG9jayA9PSByX2Jsb2NrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gbDsgaiA8PSByOyArK2opCiAgICAgICAgICAgICAgICAgICAgc3VtICs9IChhW2pdID4gayk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gbDsgaiA8IChsX2Jsb2NrICsgMSkgKiBibG9jazsgaisrKQogICAgICAgICAgICAgICAgICAgIHN1bSArPSAoYVtqXSA+IGspOwoKICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSByX2Jsb2NrICogYmxvY2s7IGogPD0gcjsgaisrKQogICAgICAgICAgICAgICAgICAgIHN1bSArPSAoYVtqXSA+IGspOwoKICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBsX2Jsb2NrICsgMTsgaiA8IHJfYmxvY2s7IGorKykKICAgICAgICAgICAgICAgICAgICBzdW0gKz0gZ2V0X21heFtqXSAtIGdldChrLCBqKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY291dCA8PCBzdW0gPDwgJ1xuJzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=