#include <iostream>
#include <vector>
using namespace std;
#define min(x, y) ((x) < (y) ? (x) : (y))
#define max(x, y) ((x) > (y) ? (x) : (y))
pair<int, int> t[999999];
int N, a[40000], query;
void build(int v, int tl, int tr, int num) {
if (tl == tr){
t[v].first = a[tl] > num ? 1 : 0;
t[v].second = a[tl];
}
else {
int tm = (tl + tr) / 2;
build(v * 2, tl, tm, num);
build(v * 2 + 1, tm + 1, tr, num);
t[v].first = t[v * 2].first + t[v * 2 + 1].first;
t[v].second = max(t[v * 2].second, t[v * 2 + 1].second);
}
}
int sum(int v, int tl, int tr, int l, int r) {
if (l > r)
return 0;
if (l == tl && r == tr)
return t[v].first;
int tm = (tl + tr) / 2;
return sum(v * 2, tl, tm, l, min(r, tm)) + sum(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r);
}
void update (int v, int tl, int tr, int pos_1, int pos_2, int new_val) {
if (tl == tr){
if (t[v].second > new_val)
t[v].first = 1;
else
t[v].first = 0;
}
else {
int tm = (tl + tr) / 2;
if (pos_1 <= tm && pos_2 <= tm)
update (v * 2, tl, tm, pos_1, pos_2, new_val);
else if (pos_1 <= tm && pos_2 > tm){
update (v * 2, tl, tm, pos_1, tm, new_val);
}
else if (pos_1 > tm && pos_2 > tm)
update (v * 2 + 1, tm + 1, tr, pos_1, pos_2, new_val);
t[v].first = t[v * 2].first + t[v * 2 + 1].first;
t[v].second = max(t[v * 2].second, t[v * 2 + 1].second);
}
}
int main(){
cin >> N;
for (int i = 0; i < N; i++)
cin >> N;
build(1, 0, N - 1, 0);
cin >> query;
for (int i = 0; i < query; i++){
int x, y, z;
cin >> x >> y >> z;
update(1, 0, N - 1, x - 1, y- 1, z);
cout << sum(1, 0, N - 1, x - 1, y - 1) << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbWluKHgsIHkpICgoeCkgPCAoeSkgPyAoeCkgOiAoeSkpCiNkZWZpbmUgbWF4KHgsIHkpICgoeCkgPiAoeSkgPyAoeCkgOiAoeSkpCgpwYWlyPGludCwgaW50PiB0Wzk5OTk5OV07CmludCBOLCBhWzQwMDAwXSwgcXVlcnk7Cgp2b2lkIGJ1aWxkKGludCB2LCBpbnQgdGwsIGludCB0ciwgaW50IG51bSkgewoJaWYgKHRsID09IHRyKXsKCQl0W3ZdLmZpcnN0ID0gYVt0bF0gPiBudW0gPyAxIDogMDsKCQl0W3ZdLnNlY29uZCA9IGFbdGxdOwoJfQoJZWxzZSB7CgkJaW50IHRtID0gKHRsICsgdHIpIC8gMjsKCQlidWlsZCh2ICogMiwgdGwsIHRtLCBudW0pOwoJCWJ1aWxkKHYgKiAyICsgMSwgdG0gKyAxLCB0ciwgbnVtKTsKCQl0W3ZdLmZpcnN0ID0gdFt2ICogMl0uZmlyc3QgKyB0W3YgKiAyICsgMV0uZmlyc3Q7CgkJdFt2XS5zZWNvbmQgPSBtYXgodFt2ICogMl0uc2Vjb25kLCB0W3YgKiAyICsgMV0uc2Vjb25kKTsKCX0KfQoKCmludCBzdW0oaW50IHYsIGludCB0bCwgaW50IHRyLCBpbnQgbCwgaW50IHIpIHsKCWlmIChsID4gcikKCQlyZXR1cm4gMDsKCWlmIChsID09IHRsICYmIHIgPT0gdHIpCgkJcmV0dXJuIHRbdl0uZmlyc3Q7CglpbnQgdG0gPSAodGwgKyB0cikgLyAyOwoJcmV0dXJuIHN1bSh2ICogMiwgdGwsIHRtLCBsLCBtaW4ociwgdG0pKSArIHN1bSh2ICogMiArIDEsIHRtICsgMSwgdHIsIG1heChsLCB0bSArIDEpLCByKTsKfQoKdm9pZCB1cGRhdGUgKGludCB2LCBpbnQgdGwsIGludCB0ciwgaW50IHBvc18xLCBpbnQgcG9zXzIsIGludCBuZXdfdmFsKSB7CglpZiAodGwgPT0gdHIpewoJCWlmICh0W3ZdLnNlY29uZCA+IG5ld192YWwpCgkJCXRbdl0uZmlyc3QgPSAxOwoJCWVsc2UKCQkJdFt2XS5maXJzdCA9IDA7Cgl9CgllbHNlIHsKCQlpbnQgdG0gPSAodGwgKyB0cikgLyAyOwoJCWlmIChwb3NfMSA8PSB0bSAmJiBwb3NfMiA8PSB0bSkKCQkJdXBkYXRlICh2ICogMiwgdGwsIHRtLCBwb3NfMSwgcG9zXzIsIG5ld192YWwpOwoJCWVsc2UgaWYgKHBvc18xIDw9IHRtICYmIHBvc18yID4gdG0pewoJCQl1cGRhdGUgKHYgKiAyLCB0bCwgdG0sIHBvc18xLCB0bSwgbmV3X3ZhbCk7CgkJfQoJCWVsc2UgaWYgKHBvc18xID4gdG0gJiYgcG9zXzIgPiB0bSkKCQkJdXBkYXRlICh2ICogMiArIDEsIHRtICsgMSwgdHIsIHBvc18xLCBwb3NfMiwgbmV3X3ZhbCk7CgkJdFt2XS5maXJzdCA9IHRbdiAqIDJdLmZpcnN0ICsgdFt2ICogMiArIDFdLmZpcnN0OwoJCXRbdl0uc2Vjb25kID0gbWF4KHRbdiAqIDJdLnNlY29uZCwgdFt2ICogMiArIDFdLnNlY29uZCk7Cgl9Cn0KCmludCBtYWluKCl7CgljaW4gPj4gTjsKCWZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQoJCWNpbiA+PiBOOwoKCWJ1aWxkKDEsIDAsIE4gLSAxLCAwKTsKCgljaW4gPj4gcXVlcnk7CgoJZm9yIChpbnQgaSA9IDA7IGkgPCBxdWVyeTsgaSsrKXsKCQlpbnQgeCwgeSwgejsKCQljaW4gPj4geCA+PiB5ID4+IHo7CgkJdXBkYXRlKDEsIDAsIE4gLSAxLCB4IC0gMSwgeS0gMSwgeik7CgkJY291dCA8PCBzdW0oMSwgMCwgTiAtIDEsIHggLSAxLCB5IC0gMSkgPDwgZW5kbDsKCX0KCglyZXR1cm4gMDsKfQ==