#include<bits/stdc++.h>
using namespace std;
#define dbg(var) cout<<#var<<"="<<var<<" "
#define nl cout<<"\n"

const int N=1e6+10;
struct query{int l,r,k,id;};
struct data{int val,id;};
int n,q,bit[N],ans[N];
query qry[N];
data a[N];

bool cmpqry(const query  &a, const query &b){return a.k>b.k;}
bool cmpdata(const data  &a, const data &b){return a.val>b.val;}

void update(int idx,int val){for(;idx<N;idx+=idx&-idx)bit[idx]+=val;}
int sm(int idx){int res=0;for(;idx;idx-=idx&-idx)res+=bit[idx];return res;}

int main()
{
	ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i].val,a[i].id=i;
    cin>>q;
    for(int i=1;i<=q;i++)
        cin >> qry[i].l >> qry[i].r >> qry[i].k, qry[i].id=i;
   
    sort(qry+1,qry+q+1,cmpqry);
    sort(a+1,a+n+1,cmpdata);

    for(int i=1,j=1;i<=q;i++){
    	int val=qry[i].k,ll=qry[i].l,rr=qry[i].r;
    	while(j<=n and val<a[j].val){
    		update(a[j].id,1);j++;
    	}
    	ans[qry[i].id]=sm(rr)-sm(ll-1);
    }
    for(int i=1;i<=q;i++)cout<<ans[i]<<"\n";
}