#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define deb(x) cout<<#x<<" "<<x<"\n"
vector<ll> seg[400005]; ///2D vector: to store elements at each node level
vector<ll> a(30002);
void builtTree(int low, int high, int node)
{
if(low==high)
{
seg[node].emplace_back(a[low]);
return;
}
int mid=(low+high)/2;
builtTree(low,mid,2*node+1);
builtTree(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]));
}
ll query(int qlow, int qhigh, int low, int high, ll node, ll k)
{
if(qlow>high || low>qhigh) /// no overlapping
return 0;
if(low>=qlow && high<=qhigh)
{
return seg[node].size()-(upper_bound(seg[node].begin(),seg[node].end(),k)-seg[node].begin());
}
int mid=(low+high)/2;
ll left=query(qlow, qhigh, low, mid, 2*node+1, k);
ll right=query(qlow, qhigh, mid+1, high, 2*node+2, k);
return left+right;
}
main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,q,i;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
builtTree(0,n-1,0);
cin>>q;
int l,r;
ll k;
while(q--)
{
cin>>l>>r>>k;
if(l>r || l>n || r>n)
cout<<"0\n";
else if(l==r)
{
a[l-1]>k?cout<<"1\n":cout<<"0\n";
}
else
cout<<query(l-1,r-1,0,n-1,0,k)<<"\n";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBkZWIoeCkgY291dDw8I3g8PCIgIjw8eDwiXG4iCgp2ZWN0b3I8bGw+IHNlZ1s0MDAwMDVdOyAgICAgLy8vMkQgdmVjdG9yOiB0byBzdG9yZSBlbGVtZW50cyBhdCBlYWNoIG5vZGUgbGV2ZWwKdmVjdG9yPGxsPiBhKDMwMDAyKTsKCnZvaWQgYnVpbHRUcmVlKGludCBsb3csIGludCBoaWdoLCBpbnQgbm9kZSkKewogICAgaWYobG93PT1oaWdoKQogICAgewogICAgICAgIHNlZ1tub2RlXS5lbXBsYWNlX2JhY2soYVtsb3ddKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkPShsb3craGlnaCkvMjsKICAgIGJ1aWx0VHJlZShsb3csbWlkLDIqbm9kZSsxKTsKICAgIGJ1aWx0VHJlZShtaWQrMSxoaWdoLDIqbm9kZSsyKTsKICAgIG1lcmdlKHNlZ1syKm5vZGUrMV0uYmVnaW4oKSxzZWdbMipub2RlKzFdLmVuZCgpLHNlZ1syKm5vZGUrMl0uYmVnaW4oKSxzZWdbMipub2RlKzJdLmVuZCgpLGJhY2tfaW5zZXJ0ZXIoc2VnW25vZGVdKSk7Cn0KCmxsIHF1ZXJ5KGludCBxbG93LCBpbnQgcWhpZ2gsIGludCBsb3csIGludCBoaWdoLCBsbCBub2RlLCBsbCBrKQp7CiAgICBpZihxbG93PmhpZ2ggfHwgbG93PnFoaWdoKSAgICAgIC8vLyBubyBvdmVybGFwcGluZwogICAgICAgIHJldHVybiAwOwoKICAgIGlmKGxvdz49cWxvdyAmJiBoaWdoPD1xaGlnaCkKICAgIHsKICAgICAgICByZXR1cm4gc2VnW25vZGVdLnNpemUoKS0odXBwZXJfYm91bmQoc2VnW25vZGVdLmJlZ2luKCksc2VnW25vZGVdLmVuZCgpLGspLXNlZ1tub2RlXS5iZWdpbigpKTsKICAgIH0KCiAgICBpbnQgbWlkPShsb3craGlnaCkvMjsKICAgIGxsIGxlZnQ9cXVlcnkocWxvdywgcWhpZ2gsIGxvdywgbWlkLCAyKm5vZGUrMSwgayk7CiAgICBsbCByaWdodD1xdWVyeShxbG93LCBxaGlnaCwgbWlkKzEsIGhpZ2gsIDIqbm9kZSsyLCBrKTsKICAgIHJldHVybiBsZWZ0K3JpZ2h0Owp9CgptYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CiAgICAKICAgIGludCBuLHEsaTsKICAgIGNpbj4+bjsKICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgICBjaW4+PmFbaV07CgogICAgYnVpbHRUcmVlKDAsbi0xLDApOwogICAgY2luPj5xOwogICAgaW50IGwscjsKICAgIGxsIGs7CiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAgICAgY2luPj5sPj5yPj5rOwogICAgICAgIGlmKGw+ciB8fCBsPm4gfHwgcj5uKQogICAgICAgICAgICBjb3V0PDwiMFxuIjsKICAgICAgICBlbHNlIGlmKGw9PXIpCiAgICAgICAgewogICAgICAgICAgICBhW2wtMV0+az9jb3V0PDwiMVxuIjpjb3V0PDwiMFxuIjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGNvdXQ8PHF1ZXJ5KGwtMSxyLTEsMCxuLTEsMCxrKTw8IlxuIjsKICAgIH0KCn0=