#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
inline void write(int x){
register char buffor[35];
register int i=0;
do{
buffor[i++]=(x%10)+'0';
x/=10;
} while(x);
i--;
while(i>=0) putchar_unlocked(buffor[i--]);
putchar_unlocked('\n');
}
inline void fastinput(int &x){
x=0;
register char c=getchar();
for(;c<'0' || c>'9';c=getchar());
for(;c>='0' && c<='9';c=getchar())
x=(x<<3)+(x<<1)+(c-'0');
}
const int N=30005;
int arr[N];
vector<int> seg[4*N];
void build(int low,int high,int node)
{
if(low>high)
return;
if(low == high)
{
seg[node].push_back(arr[low]);
return;
}
int mid=low+high>>1;
build(low,mid,2*node+1);
build(mid+1,high,2*node+2);
merge(seg[2*node+1].begin(),seg[2*node+1].end(),seg[2*node+2].begin(),seg[2*node+2].end(),back_inserter(seg[node]));
}
int query(int low,int high,int lq,int hq,int k,int node)
{
if(low>high || low>hq || high<lq)
return 0;
if(lq<=low && high<=hq)
{
// to count all the elements greater then k in the seg[node] vector.
return seg[node].size()-(upper_bound(seg[node].begin(),seg[node].end(),k)-seg[node].begin());
}
int left=0,right=0;
int mid=low+high>>1;
left = query(low,mid,lq,hq,k,2*node+1);
right = query(mid+1,high,lq,hq,k,2*node+2);
return left+right;
}
int main(){
int n;
fastinput(n);
register int i;
for(i = 0; i < n; i++)
{
fastinput(arr[i]);
}
int q;
fastinput(q);
int x,y,k;
build(0,n-1,0);
while(q--)
{
fastinput(x);
fastinput(y);
fastinput(k);
write(query(0,n-1,x-1,y-1,k,0));
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgogaW5saW5lIHZvaWQgd3JpdGUoaW50IHgpewoKICAgICAgICAgcmVnaXN0ZXIgY2hhciBidWZmb3JbMzVdOwogICAgICAgICByZWdpc3RlciBpbnQgaT0wOwogICAgICAgICBkb3sKICAgICAgICAgICAgICAgYnVmZm9yW2krK109KHglMTApKycwJzsKICAgICAgICAgICAgICAgeC89MTA7CiAgICAgICAgICAgIH0gd2hpbGUoeCk7CiAgICAgICAgICAgaS0tOwogICAgICAgICAgICB3aGlsZShpPj0wKSBwdXRjaGFyX3VubG9ja2VkKGJ1ZmZvcltpLS1dKTsKICAgICAgICAgICAgcHV0Y2hhcl91bmxvY2tlZCgnXG4nKTsKICAgICAgIH0KCmlubGluZSB2b2lkIGZhc3RpbnB1dChpbnQgJngpewoKICAgICAgICB4PTA7CiAgICAgICAgcmVnaXN0ZXIgY2hhciBjPWdldGNoYXIoKTsKICAgICAgICBmb3IoO2M8JzAnIHx8IGM+JzknO2M9Z2V0Y2hhcigpKTsKICAgICAgICAgZm9yKDtjPj0nMCcgJiYgYzw9JzknO2M9Z2V0Y2hhcigpKQogICAgICAgICAgeD0oeDw8MykrKHg8PDEpKyhjLScwJyk7CiAgICAgIH0KICAgICAgCmNvbnN0IGludCBOPTMwMDA1OwppbnQgYXJyW05dOwp2ZWN0b3I8aW50PiBzZWdbNCpOXTsKCnZvaWQgYnVpbGQoaW50IGxvdyxpbnQgaGlnaCxpbnQgbm9kZSkKewogICAgaWYobG93PmhpZ2gpCiAgICByZXR1cm47CiAgICBpZihsb3cgPT0gaGlnaCkKICAgIHsKICAgICAgICBzZWdbbm9kZV0ucHVzaF9iYWNrKGFycltsb3ddKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkPWxvdytoaWdoPj4xOwogICAgYnVpbGQobG93LG1pZCwyKm5vZGUrMSk7CiAgICBidWlsZChtaWQrMSxoaWdoLDIqbm9kZSsyKTsKICAgIG1lcmdlKHNlZ1syKm5vZGUrMV0uYmVnaW4oKSxzZWdbMipub2RlKzFdLmVuZCgpLHNlZ1syKm5vZGUrMl0uYmVnaW4oKSxzZWdbMipub2RlKzJdLmVuZCgpLGJhY2tfaW5zZXJ0ZXIoc2VnW25vZGVdKSk7Cn0KCmludCBxdWVyeShpbnQgbG93LGludCBoaWdoLGludCBscSxpbnQgaHEsaW50IGssaW50IG5vZGUpCnsKICAgIGlmKGxvdz5oaWdoIHx8IGxvdz5ocSB8fCBoaWdoPGxxKQogICAgcmV0dXJuIDA7CiAgICBpZihscTw9bG93ICYmIGhpZ2g8PWhxKQogICAgewogICAgICAgIC8vIHRvIGNvdW50IGFsbCB0aGUgZWxlbWVudHMgZ3JlYXRlciB0aGVuIGsgaW4gdGhlIHNlZ1tub2RlXSB2ZWN0b3IuCiAgICAgICAgcmV0dXJuIHNlZ1tub2RlXS5zaXplKCktKHVwcGVyX2JvdW5kKHNlZ1tub2RlXS5iZWdpbigpLHNlZ1tub2RlXS5lbmQoKSxrKS1zZWdbbm9kZV0uYmVnaW4oKSk7CiAgICB9CiAgICBpbnQgbGVmdD0wLHJpZ2h0PTA7CiAgICBpbnQgbWlkPWxvdytoaWdoPj4xOwogICAgbGVmdCA9IHF1ZXJ5KGxvdyxtaWQsbHEsaHEsaywyKm5vZGUrMSk7CiAgICByaWdodCA9IHF1ZXJ5KG1pZCsxLGhpZ2gsbHEsaHEsaywyKm5vZGUrMik7CiAgICByZXR1cm4gbGVmdCtyaWdodDsKfQppbnQgbWFpbigpewogICAgaW50IG47CiAgICBmYXN0aW5wdXQobik7CiAgICByZWdpc3RlciBpbnQgaTsKICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBmYXN0aW5wdXQoYXJyW2ldKTsKICAgIH0KICAgIGludCBxOwogICAgZmFzdGlucHV0KHEpOwogICAgaW50IHgseSxrOwogICAgYnVpbGQoMCxuLTEsMCk7CiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAgICAgZmFzdGlucHV0KHgpOwogICAgICAgIGZhc3RpbnB1dCh5KTsKICAgICAgICBmYXN0aW5wdXQoayk7CiAgICAgICAgd3JpdGUocXVlcnkoMCxuLTEseC0xLHktMSxrLDApKTsKICAgIH0KICAgIHJldHVybiAwOwp9