#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";
}