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


class SqrtDecomposition {

    int size, blockSize, blocksCount;
    vector<int> array;
    vector< vector<int> > blocks;

public:

    SqrtDecomposition(const vector<int> &a) {
        array = a;
        size = a.size();
        blockSize = sqrt(size);
        blocksCount = size / blockSize + (size % blockSize ? 1 : 0);
        blocks.resize(blocksCount);
        for (int i = 0; i < size; i++)
            blocks[i / blockSize].push_back(a[i]);
        for (int i = 0; i < blocksCount; i++)
            sort(blocks[i].begin(), blocks[i].end());
    }

    int query(int l, int r, int k) const {
        int res = 0;
        while (l <= r && l % blockSize != 0)
            res += array[l++] > k;
        while (l <= r && r % blockSize != blockSize - 1)
            res += array[r--] > k;
        if (l <= r)
            for (l /= blockSize, r /= blockSize; l <= r; l++)
                res += blocks[l].end() - upper_bound(blocks[l].begin(), blocks[l].end(), k);
        return res;
    }

};


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

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

    SqrtDecomposition sd(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", sd.query(l - 1, r - 1, k));
    }
}