#include <bits/stdc++.h>
using namespace std;
#define fastIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pii pair<int, int>
#define ppiii pair<pair<int, int>, int>
#define pipii pair<int, pair<int, int>>

const int INF = 1e9;
const int MOD = 1e9+7;
const int N = 3e4+5;

struct query{
    int l, r, k, id;
} Q[200005];
pii a[N];
int seg[4*N];
int n, q;
int ans[200005];

void update(int id, int l, int r, int pos, int k){
    if (l>pos || r<pos) return;
    if (l==r){
        seg[id] = 1;
        return;
    }
    int m = (l+r)/2;
    update(2*id, l, m, pos, k);
    update(2*id+1, m+1, r, pos, k);
    seg[id] = seg[2*id]+seg[2*id+1];
}

int get(int id, int l, int r, int u, int v){
    if (l>v || r<u){
        return 0;
    }
    if (u<=l && r<=v){
        return seg[id];
    }
    int m = (l+r)/2;
    return get(2*id, l, m, u, v) + get(2*id+1, m+1, r, u, v);
}

bool cmp_a(pii x, pii y){
    return x.first > y.first;
}

bool cmp_Q(query x, query y){
    return x.k > y.k;
}

int main(){
    fastIO;

    cin >> n;
    for (int i=1; i<=n; i++){
        cin >> a[i].first;
        a[i].second = i;
    }
    sort(a+1, a+1+n, cmp_a);
    cin >> q;
    for (int i=1; i<=q; i++){
        cin >> Q[i].l >> Q[i].r >> Q[i].k;
        Q[i].id = i;
    }
    sort(Q+1, Q+1+q, cmp_Q);
    int j = 1;
    for (int i = 1; i<=q; i++){
        while (j<=n && a[j].first>Q[i].k){
            update(1, 1, n, a[j].second, 1);
            j++;
        }
        ans[Q[i].id] = get(1, 1, n, Q[i].l, Q[i].r);
    }
    for (int i=1; i<=q; i++){
        cout << ans[i] << '\n';
    }
    return 0;
}