#include <cstdio>
#include <iterator>
#include <utility>
#include <vector>
#include <algorithm>
#include <set>
#include <tuple>
#include <iostream>
using namespace std;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<pii> vii;
typedef long long ll;
#define FOR(i,S,E) for(int i=S; i<E; i++)
#define ri(x) scanf("%d", &x)
#define rii(x,y) scanf("%d%d", &x, &y)
#define fst first
#define snd second
#define mp make_pair
#define mt make_tuple
#define pb push_back
const int INF = 1e9, MAXN = 3e4 + 10;
int n, q;
vector<pii> v;
// BIT (tambien se llaman fenwick tree)
// Empieza con puros 0, suponiendo que tienen un arreglo A[] inicial, tienen
//que meterlo en el BIT a lo brutico, iterando sobre A y haciendo puros updates
ll BIT[MAXN];
//suma val a la posicion p, tengan en cuenta que esto no modifica A, a veces se quiere
//modificar, entonces lo tienen que hacer tambien a parte.
void BIT_upd(int p, int val){ //O(log(n))
p++;
for(; p <= n; p += p & -p)
BIT[p] += val;
}
//devuelve la suma de [1,p]
int BIT_sum(int p){ //O(log(n))
int ret = 0;
p++;
for(; p; p -= p & -p)
ret += BIT[p];
return ret;
}
struct t {
int s, k, id;
};
bool comp1 (t &a, t &b) {
return a.s < b.s;
}
int main () {
ri(n);
vector< t > sL, sR;
FOR(i,0,n) {
int inp; ri(inp);
v.pb(mp(inp,0));
}
ri(q);
vi Q;
Q.resize(q, 0);
FOR(i,0,q) {
int l,r,k;
rii(l,r); ri(k);
sL.pb({l-2, k, i});
sR.pb({--r,k, i});
}
sort(sL.begin(), sL.end(), comp1);
sort(sR.begin(), sR.end(), comp1);
vi aux;
FOR(i,0,n) aux.pb(v[i].fst);
sort(aux.begin(), aux.end());
aux.resize(distance(aux.begin(), unique(aux.begin(), aux.end())));
FOR(i,0,n) v[i].snd = distance(aux.begin(), lower_bound(aux.begin(), aux.end(), v[i].fst));
vii aux2 = v;
sort(aux2.begin(), aux2.end());
aux2.resize(distance(aux2.begin(), unique(aux2.begin(), aux2.end())));
/*
FOR(i,0,aux.size()) {
printf("(%d, %d) ", aux2[i].fst, aux2[i].snd);
}
printf("\n");
*/
int id=0, jd=0;
FOR(i,0,n) {
BIT_upd(v[i].snd, 1);
//printf("UPD: %d\n", v[i].snd);
while( id < q and sL[id].s == -1) id++;
while (id < q and i == sL[id].s) {
int k = sL[id].k;
auto it = lower_bound(aux2.begin(), aux2.end(), mp(k,-INF));
int x; //cantidad de elementos mayores a k
if ((*it).fst != k and it != aux2.begin()) {
it--;
x = BIT_sum((*it).snd);
}
else if ((*it).fst != k and it == aux2.begin())
x = 0;
else {
x = BIT_sum((*it).snd);
//printf("\tK: (%d, %d)\n", (*it).fst, (*it).snd);
}
//printf("\t%d -= %d - %d\n", Q[(sL[id].id)], BIT_sum(n-1), BIT_sum(x));
Q[(sL[id].id)] -= BIT_sum(n-1) - x;
id++;
}
while(jd < q and i == sR[jd].s) {
int k = sR[jd].k;
auto it = lower_bound(aux2.begin(), aux2.end(), mp(k, -INF));
int x; //cantidad de elementos mayores a k
if ((*it).fst != k and it != aux2.begin()) {
it--;
x = BIT_sum((*it).snd);
}
else if ((*it).fst != k and it == aux2.begin())
x = 0;
else
x = BIT_sum((*it).snd);
Q[sR[jd].id] += BIT_sum(n-1) - x;
jd++;
}
}
FOR(i,0,q) {
printf("%d\n", Q[i]);
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBpaTsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB2ZWN0b3I8cGlpPiB2aWk7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwogCiNkZWZpbmUgRk9SKGksUyxFKSBmb3IoaW50IGk9UzsgaTxFOyBpKyspCiNkZWZpbmUgcmkoeCkgc2NhbmYoIiVkIiwgJngpCiNkZWZpbmUgcmlpKHgseSkgc2NhbmYoIiVkJWQiLCAmeCwgJnkpCiNkZWZpbmUgZnN0IGZpcnN0CiNkZWZpbmUgc25kIHNlY29uZAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIG10IG1ha2VfdHVwbGUKI2RlZmluZSBwYiBwdXNoX2JhY2sKIApjb25zdCBpbnQgSU5GID0gMWU5LCBNQVhOID0gM2U0ICsgMTA7CgppbnQgbiwgcTsKdmVjdG9yPHBpaT4gdjsKIAovLyBCSVQgKHRhbWJpZW4gc2UgbGxhbWFuIGZlbndpY2sgdHJlZSkKIAogCi8vCUVtcGllemEgY29uIHB1cm9zIDAsIHN1cG9uaWVuZG8gcXVlIHRpZW5lbiB1biBhcnJlZ2xvIEFbXSBpbmljaWFsLCB0aWVuZW4KLy9xdWUgbWV0ZXJsbyBlbiBlbCBCSVQgYSBsbyBicnV0aWNvLCBpdGVyYW5kbyBzb2JyZSBBIHkgaGFjaWVuZG8gcHVyb3MgdXBkYXRlcwogCmxsIEJJVFtNQVhOXTsKIAovL3N1bWEgdmFsIGEgbGEgcG9zaWNpb24gcCwgdGVuZ2FuIGVuIGN1ZW50YSBxdWUgZXN0byBubyBtb2RpZmljYSBBLCBhIHZlY2VzIHNlIHF1aWVyZQovL21vZGlmaWNhciwgZW50b25jZXMgbG8gdGllbmVuIHF1ZSBoYWNlciB0YW1iaWVuIGEgcGFydGUuCnZvaWQgQklUX3VwZChpbnQgcCwgaW50IHZhbCl7IC8vTyhsb2cobikpCglwKys7Cglmb3IoOyBwIDw9IG47IHAgKz0gcCAmIC1wKQoJCUJJVFtwXSArPSB2YWw7Cn0KIAovL2RldnVlbHZlIGxhIHN1bWEgZGUgWzEscF0KaW50IEJJVF9zdW0oaW50IHApeyAvL08obG9nKG4pKQoJaW50IHJldCA9IDA7CglwKys7Cglmb3IoOyBwOyBwIC09IHAgJiAtcCkKCQlyZXQgKz0gQklUW3BdOwoJcmV0dXJuIHJldDsKfQoKc3RydWN0IHQgewogICAgaW50IHMsIGssIGlkOwp9OwoKYm9vbCBjb21wMSAodCAmYSwgdCAmYikgewogICAgcmV0dXJuIGEucyA8IGIuczsKfQoKaW50IG1haW4gKCkgewogICAgcmkobik7CiAgICB2ZWN0b3I8IHQgPiBzTCwgc1I7CiAgICBGT1IoaSwwLG4pIHsKCQlpbnQgaW5wOyByaShpbnApOwoJCXYucGIobXAoaW5wLDApKTsKICAgIH0KICAgIHJpKHEpOwogICAgdmkgUTsKICAgIFEucmVzaXplKHEsIDApOwogICAgRk9SKGksMCxxKSB7CgkJaW50IGwscixrOwoJCXJpaShsLHIpOyByaShrKTsKCQlzTC5wYih7bC0yLCBrLCBpfSk7CgkJc1IucGIoey0tcixrLCBpfSk7CiAgICB9CiAgICBzb3J0KHNMLmJlZ2luKCksIHNMLmVuZCgpLCBjb21wMSk7CiAgICBzb3J0KHNSLmJlZ2luKCksIHNSLmVuZCgpLCBjb21wMSk7CiAgICAKICAgIHZpIGF1eDsKICAgIEZPUihpLDAsbikgYXV4LnBiKHZbaV0uZnN0KTsKICAgIHNvcnQoYXV4LmJlZ2luKCksIGF1eC5lbmQoKSk7CiAgICBhdXgucmVzaXplKGRpc3RhbmNlKGF1eC5iZWdpbigpLCB1bmlxdWUoYXV4LmJlZ2luKCksIGF1eC5lbmQoKSkpKTsKICAgIEZPUihpLDAsbikgdltpXS5zbmQgPSBkaXN0YW5jZShhdXguYmVnaW4oKSwgbG93ZXJfYm91bmQoYXV4LmJlZ2luKCksIGF1eC5lbmQoKSwgdltpXS5mc3QpKTsKICAgIHZpaSBhdXgyID0gdjsKICAgIHNvcnQoYXV4Mi5iZWdpbigpLCBhdXgyLmVuZCgpKTsKCWF1eDIucmVzaXplKGRpc3RhbmNlKGF1eDIuYmVnaW4oKSwgdW5pcXVlKGF1eDIuYmVnaW4oKSwgYXV4Mi5lbmQoKSkpKTsKCS8qCglGT1IoaSwwLGF1eC5zaXplKCkpIHsKCQlwcmludGYoIiglZCwgJWQpICIsIGF1eDJbaV0uZnN0LCBhdXgyW2ldLnNuZCk7Cgl9CglwcmludGYoIlxuIik7CgkqLwoJCiAgICBpbnQgaWQ9MCwgamQ9MDsKICAgIEZPUihpLDAsbikgewoJCUJJVF91cGQodltpXS5zbmQsIDEpOwoJCS8vcHJpbnRmKCJVUEQ6ICVkXG4iLCB2W2ldLnNuZCk7CgkJd2hpbGUoIGlkIDwgcSBhbmQgc0xbaWRdLnMgPT0gLTEpIGlkKys7CgkJd2hpbGUgKGlkIDwgcSBhbmQgaSA9PSBzTFtpZF0ucykgewoJCQlpbnQgayA9IHNMW2lkXS5rOwoJCQlhdXRvIGl0ID0gbG93ZXJfYm91bmQoYXV4Mi5iZWdpbigpLCBhdXgyLmVuZCgpLCBtcChrLC1JTkYpKTsKCQkJaW50IHg7IC8vY2FudGlkYWQgZGUgZWxlbWVudG9zIG1heW9yZXMgYSBrCgkJCWlmICgoKml0KS5mc3QgIT0gayBhbmQgaXQgIT0gYXV4Mi5iZWdpbigpKSB7CgkJCQlpdC0tOwoJCQkJeCA9IEJJVF9zdW0oKCppdCkuc25kKTsKCQkJfQoJCQllbHNlIGlmICgoKml0KS5mc3QgIT0gayBhbmQgaXQgPT0gYXV4Mi5iZWdpbigpKQoJCQkJeCA9IDA7CgkJCWVsc2UgewoJCQkJeCA9IEJJVF9zdW0oKCppdCkuc25kKTsKCQkJCS8vcHJpbnRmKCJcdEs6ICglZCwgJWQpXG4iLCAoKml0KS5mc3QsICgqaXQpLnNuZCk7CgkJCX0KCQkJCgkJCS8vcHJpbnRmKCJcdCVkIC09ICVkIC0gJWRcbiIsIFFbKHNMW2lkXS5pZCldLCBCSVRfc3VtKG4tMSksIEJJVF9zdW0oeCkpOwoJCQlRWyhzTFtpZF0uaWQpXSAtPSBCSVRfc3VtKG4tMSkgLSB4OwoJCQlpZCsrOwoJCX0KCQl3aGlsZShqZCA8IHEgYW5kIGkgPT0gc1JbamRdLnMpIHsKCQkJaW50IGsgPSBzUltqZF0uazsKCQkJYXV0byBpdCA9IGxvd2VyX2JvdW5kKGF1eDIuYmVnaW4oKSwgYXV4Mi5lbmQoKSwgbXAoaywgLUlORikpOwoJICAgIAoJCQlpbnQgeDsgLy9jYW50aWRhZCBkZSBlbGVtZW50b3MgbWF5b3JlcyBhIGsKCQkJaWYgKCgqaXQpLmZzdCAhPSBrIGFuZCBpdCAhPSBhdXgyLmJlZ2luKCkpIHsKCQkJCWl0LS07CgkJCQl4ID0gQklUX3N1bSgoKml0KS5zbmQpOwoJCQl9CgkJCWVsc2UgaWYgKCgqaXQpLmZzdCAhPSBrIGFuZCBpdCA9PSBhdXgyLmJlZ2luKCkpCgkJCQl4ID0gMDsKCQkJZWxzZQoJCQkJeCA9IEJJVF9zdW0oKCppdCkuc25kKTsKCQkJUVtzUltqZF0uaWRdICs9IEJJVF9zdW0obi0xKSAtIHg7CgkgICAgCgkJCWpkKys7CgkJfQogICAgfQoKICAgIEZPUihpLDAscSkgewoJCXByaW50ZigiJWRcbiIsIFFbaV0pOwogICAgfQogICAgCn0K