#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;


class SegmentTreeFC {

    int sz;
    vector< vector<int> > t, tl, tr;

    void build(int v, int vl, int vr, const vector<int> &a) {
        if (vl == vr) {
            t[v].push_back(a[vl]);
            return;
        }
        int vm = vl + (vr - vl) / 2;
        build(2 * v + 1, vl, vm, a);
        build(2 * v + 2, vm + 1, vr, a);

        int l = 2 * v + 1, r = 2 * v + 2;
        int ls = t[l].size(), rs = t[r].size(), ts = ls + rs;
        t[v].resize(ts);
        tl[v].resize(ts + 1);
        tr[v].resize(ts + 1);
        tl[v][ts] = ls;
        tr[v][ts] = rs;
        for (int i = ts - 1, li = ls - 1, ri = rs - 1; i >= 0; i--) {
            if (li < 0)
                t[v][i] = t[r][ri--];
            else if (ri < 0)
                t[v][i] = t[l][li--];
            else if (t[l][li] > t[r][ri])
                t[v][i] = t[l][li--];
            else
                t[v][i] = t[r][ri--];
            tl[v][i] = (li >= 0 && t[l][li] >= t[v][i] ? li : li + 1);
            tr[v][i] = (ri >= 0 && t[r][ri] >= t[v][i] ? ri : ri + 1);
        }
    }

    int query(int v, int vl, int vr, int l, int r, int k, int ub) const {
        if (ub == -1)
            ub = upper_bound(t[v].begin(), t[v].end(), k) - t[v].begin();
        if (r < vl || vr < l)
            return 0;
        if (l <= vl && vr <= r)
            return vr - vl + 1 - ub;
        int vm = vl + (vr - vl) / 2;
        int ql = query(2 * v + 1, vl, vm, l, r, k, tl[v][ub]);
        int qr = query(2 * v + 2, vm + 1, vr, l, r, k, tr[v][ub]);
        return ql + qr;
    }

public:

    SegmentTreeFC(const vector<int> &a) {
        sz = a.size();
        t.resize(4 * sz);
        tl.resize(4 * sz);
        tr.resize(4 * sz);
        build(0, 0, sz - 1, a);
    }

    int query(int l, int r, int k) const {
        return query(0, 0, sz - 1, l, r, k, -1);
    }

};


int main() {
    int aSize;
    scanf("%d", &aSize);

    vector<int> a(aSize);
    for (int i = 0; i < aSize; i++)
        scanf("%d", &a[i]);

    SegmentTreeFC st(a);

    int queriesCount;
    scanf("%d", &queriesCount);

    for (int i = 0; i < queriesCount; i++) {
        int l, r, k;
        scanf("%d%d%d", &l, &r, &k);
        printf("%d\n", st.query(l - 1, r - 1, k));
    }
}