#include <bits/stdc++.h>
using namespace std;
void fastio();
#define ll long long
#define all(x) x.begin(), x.end()
const int MOD = 1e9 + 7;
// Custom I/O operators
template <typename A, typename B>
ostream& operator<<(ostream& out, const pair<A, B>& p) {
return out << p.first << ' ' << p.second;
}
template <typename A, size_t n>
ostream& operator<<(ostream& out, const array<A, n>& v) {
for (int i = 0; i < int(n) - 1; ++i) out << v[i] << ' ';
return (n ? out << v.back() : out << '\n');
}
template <typename A>
ostream& operator<<(ostream& out, const vector<A>& v) {
for (int i = 0; i < int(v.size()) - 1; ++i) out << v[i] << ' ';
return (v.size() ? out << v.back() : out << '\n');
}
template <typename A, typename B>
istream& operator>>(istream& in, pair<A, B>& p) {
in >> p.first;
return in >> p.second;
}
template <typename A, size_t n>
istream& operator>>(istream& in, array<A, n>& v) {
for (int i = 0; i < n; i++) in >> v[i];
return in;
}
template <typename A>
istream& operator>>(istream& in, vector<A>& v) {
for (int i = 0; i < v.size(); i++) in >> v[i];
return in;
}
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_multiset \
tree<long long, null_type, less_equal<long long>, rb_tree_tag, tree_order_statistics_node_update>
void solve() {
ll n;
cin >> n;
vector<ll> v(n);
cin >> v;
ll q;
cin >> q;
ordered_multiset ms;
map<pair<ll, ll>, ll> mpp;
vector<tuple<ll, ll, ll>> qry(q);
vector<pair<ll, ll>> vp;
for (int i = 0; i < q; ++i) {
ll a, b, c;
cin >> a >> b >> c;
qry[i] = {a, b, c};
vp.push_back({a - 1, c});
vp.push_back({b, c});
}
sort(all(vp));
reverse(all(vp));
ll j = 0;
while (!vp.empty()) {
auto [cnt, k] = vp.back();
vp.pop_back();
while (ms.size() < cnt) {
ms.insert(v[j]);
j++;
}
if (cnt == 0) {
mpp[{cnt, k}] = 0;
continue;
}
if(mpp.count({cnt,k})) continue;
ll x = cnt - ms.order_of_key(k + 1);
mpp[{cnt, k}] = x;
}
for (int i = 0; i < q; ++i) {
auto [a, b, c] = qry[i];
cout << mpp[{b, c}] - mpp[{a - 1, c}] << endl;
}
}
int main() {
fastio();
int t = 1;
while (t--) {
solve();
cout << '\n';
}
return 0;
}
void fastio() {
ios::sync_with_stdio(false);
cin.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgZmFzdGlvKCk7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKCi8vIEN1c3RvbSBJL08gb3BlcmF0b3JzCnRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG91dCwgY29uc3QgcGFpcjxBLCBCPiYgcCkgewogICAgICAgIHJldHVybiBvdXQgPDwgcC5maXJzdCA8PCAnICcgPDwgcC5zZWNvbmQ7Cn0KdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHNpemVfdCBuPgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG91dCwgY29uc3QgYXJyYXk8QSwgbj4mIHYpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGludChuKSAtIDE7ICsraSkgb3V0IDw8IHZbaV0gPDwgJyAnOwogICAgICAgIHJldHVybiAobiA/IG91dCA8PCB2LmJhY2soKSA6IG91dCA8PCAnXG4nKTsKfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgQT4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvdXQsIGNvbnN0IHZlY3RvcjxBPiYgdikgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW50KHYuc2l6ZSgpKSAtIDE7ICsraSkgb3V0IDw8IHZbaV0gPDwgJyAnOwogICAgICAgIHJldHVybiAodi5zaXplKCkgPyBvdXQgPDwgdi5iYWNrKCkgOiBvdXQgPDwgJ1xuJyk7Cn0KdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CmlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYgaW4sIHBhaXI8QSwgQj4mIHApIHsKICAgICAgICBpbiA+PiBwLmZpcnN0OwogICAgICAgIHJldHVybiBpbiA+PiBwLnNlY29uZDsKfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgc2l6ZV90IG4+CmlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYgaW4sIGFycmF5PEEsIG4+JiB2KSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGluID4+IHZbaV07CiAgICAgICAgcmV0dXJuIGluOwp9CnRlbXBsYXRlIDx0eXBlbmFtZSBBPgppc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mIGluLCB2ZWN0b3I8QT4mIHYpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIGluID4+IHZbaV07CiAgICAgICAgcmV0dXJuIGluOwp9CgojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgoKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CgojZGVmaW5lIG9yZGVyZWRfbXVsdGlzZXQgXAogICAgICAgIHRyZWU8bG9uZyBsb25nLCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8bG9uZyBsb25nPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4KCnZvaWQgc29sdmUoKSB7CiAgICAgICAgbGwgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICB2ZWN0b3I8bGw+IHYobik7CiAgICAgICAgY2luID4+IHY7CiAgICAgICAgbGwgcTsKICAgICAgICBjaW4gPj4gcTsKICAgICAgICBvcmRlcmVkX211bHRpc2V0IG1zOwogICAgICAgIG1hcDxwYWlyPGxsLCBsbD4sIGxsPiBtcHA7CiAgICAgICAgdmVjdG9yPHR1cGxlPGxsLCBsbCwgbGw+PiBxcnkocSk7CiAgICAgICAgdmVjdG9yPHBhaXI8bGwsIGxsPj4gdnA7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBxOyArK2kpIHsKICAgICAgICAgICAgICAgIGxsIGEsIGIsIGM7CiAgICAgICAgICAgICAgICBjaW4gPj4gYSA+PiBiID4+IGM7CiAgICAgICAgICAgICAgICBxcnlbaV0gPSB7YSwgYiwgY307CiAgICAgICAgICAgICAgICB2cC5wdXNoX2JhY2soe2EgLSAxLCBjfSk7CiAgICAgICAgICAgICAgICB2cC5wdXNoX2JhY2soe2IsIGN9KTsKICAgICAgICB9CgogICAgICAgIHNvcnQoYWxsKHZwKSk7CiAgICAgICAgcmV2ZXJzZShhbGwodnApKTsKICAgICAgICBsbCBqID0gMDsKICAgICAgICB3aGlsZSAoIXZwLmVtcHR5KCkpIHsKICAgICAgICAgICAgICAgIGF1dG8gW2NudCwga10gPSB2cC5iYWNrKCk7CiAgICAgICAgICAgICAgICB2cC5wb3BfYmFjaygpOwogICAgICAgICAgICAgICAgd2hpbGUgKG1zLnNpemUoKSA8IGNudCkgewogICAgICAgICAgICAgICAgICAgICAgICBtcy5pbnNlcnQodltqXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjbnQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBtcHBbe2NudCwga31dID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihtcHAuY291bnQoe2NudCxrfSkpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgbGwgeCA9IGNudCAtIG1zLm9yZGVyX29mX2tleShrICsgMSk7CiAgICAgICAgICAgICAgICBtcHBbe2NudCwga31dID0geDsKICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBxOyArK2kpIHsKICAgICAgICAgICAgICAgIGF1dG8gW2EsIGIsIGNdID0gcXJ5W2ldOwogICAgICAgICAgICAgICAgY291dCA8PCBtcHBbe2IsIGN9XSAtIG1wcFt7YSAtIDEsIGN9XSA8PCBlbmRsOwogICAgICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICAgICAgZmFzdGlvKCk7CgogICAgICAgIGludCB0ID0gMTsKICAgICAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgICAgICAgICBzb2x2ZSgpOwogICAgICAgICAgICAgICAgY291dCA8PCAnXG4nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKdm9pZCBmYXN0aW8oKSB7CiAgICAgICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgICAgIGNpbi50aWUoTlVMTCk7CgojaWZuZGVmIE9OTElORV9KVURHRQogICAgICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgp9