/*
http://w...content-available-to-author-only...j.com/status/KQUERY,prakhar10_10/
*/
#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define pb push_back
#define mod 1000000007
#define maxn 300005
struct node{
int count;
node* left,* right;
node(int cnt,node* lef ,node* righ)
{count=cnt;left=lef;right=righ;}
node* insert(int l,int r,int w);
};
node* null=new node(0,NULL,NULL);
node* node::insert(int l,int r,int w)
{
if(l<=w && w<r)
{
if(l+1==r)
{return new node(this->count+1,null,null);}
int mid=(l+r)>>1;
return new node(this->count+1,this->left->insert(l,mid,w),this->right->insert(mid,r,w));
}
return this;
}
int query(node* a,node* b,int l,int r,int k)
{
if(r-1<=k)
{return 0;}
else if(k<l)
{return a->count-b->count;}
else if(l+1==r)
{
// if(l<k)
// {return a->count-b->count;}
// else
return 0;
}
int mid=(l+r)>>1;
int count=a->right->count-b->right->count;
if(mid-1<=k)
{return query(a->right,b->right,mid,r,k);}
int temp=query(a->left,b->left,l,mid,k);
return count+temp;
}
#define maxq 200005
int a[maxn];
map<int,int>m;
int l[maxq],r[maxq],k[maxq];
node* root[maxn];
int main()
{
ios_base::sync_with_stdio(0);
cin.clear();cout.clear();
cin.tie(0);cout.tie(0);
int n,q,ans,l2,r2;
cin>>n;
for(int i=0;i<n;++i)
{cin>>a[i];
m[a[i]];}
cin>>q;
for(int z=0;z<q;++z)
{
cin>>l2>>r2>>k[z];
l[z]=l2-1;
r[z]=r2-1;
m[k[z]];
}
int maxi=0;
for(map<int,int>::iterator it = m.begin(); it != m.end(); ++it)
{
m[it->first] = maxi;
++maxi;
}
//all a[i]'s are mapped to 0,..,maxi-1
null->left = null->right = null;//infinte loop
root[0]=null->insert(0,maxi,m[a[0]]);
for(int i=1;i<n;++i)
{
root[i]=root[i-1]->insert(0,maxi,m[a[i]]);
}
// cout<<maxi<<'\n';
for(int z=0;z<q;++z)
{
l2=l[z];
ans=query(root[r[z]],(l2==0?null:root[l2-1]),0,maxi,m[k[z]]);
cout<<ans<<'\n';
}
}
LyoKaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmouY29tL3N0YXR1cy9LUVVFUlkscHJha2hhcjEwXzEwLwoqLwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgcGIgcHVzaF9iYWNrCgojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgbWF4biAzMDAwMDUKCnN0cnVjdCBub2RlewogIGludCBjb3VudDsKICBub2RlKiBsZWZ0LCogcmlnaHQ7CgoKICBub2RlKGludCBjbnQsbm9kZSogbGVmICxub2RlKiByaWdoKQogIHtjb3VudD1jbnQ7bGVmdD1sZWY7cmlnaHQ9cmlnaDt9CgogIG5vZGUqIGluc2VydChpbnQgbCxpbnQgcixpbnQgdyk7Cgp9OwoKbm9kZSogbnVsbD1uZXcgbm9kZSgwLE5VTEwsTlVMTCk7Cgpub2RlKiBub2RlOjppbnNlcnQoaW50IGwsaW50IHIsaW50IHcpCnsKICBpZihsPD13ICYmIHc8cikKICB7CiAgICBpZihsKzE9PXIpCiAgICB7cmV0dXJuIG5ldyBub2RlKHRoaXMtPmNvdW50KzEsbnVsbCxudWxsKTt9CgogICAgaW50IG1pZD0obCtyKT4+MTsKICAgIHJldHVybiBuZXcgbm9kZSh0aGlzLT5jb3VudCsxLHRoaXMtPmxlZnQtPmluc2VydChsLG1pZCx3KSx0aGlzLT5yaWdodC0+aW5zZXJ0KG1pZCxyLHcpKTsKICB9CgogIHJldHVybiB0aGlzOwp9CgppbnQgcXVlcnkobm9kZSogYSxub2RlKiBiLGludCBsLGludCByLGludCBrKQp7CiAgICBpZihyLTE8PWspCiAgICB7cmV0dXJuIDA7fQogICAgZWxzZSBpZihrPGwpCiAgICB7cmV0dXJuIGEtPmNvdW50LWItPmNvdW50O30KCiAgICBlbHNlIGlmKGwrMT09cikKICAgIHsKICAgICAgICAvLyBpZihsPGspCiAgICAgICAgLy8ge3JldHVybiBhLT5jb3VudC1iLT5jb3VudDt9CiAgICAgICAgLy8gZWxzZQogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGludCBtaWQ9KGwrcik+PjE7CiAgICBpbnQgY291bnQ9YS0+cmlnaHQtPmNvdW50LWItPnJpZ2h0LT5jb3VudDsKCiAgICBpZihtaWQtMTw9aykKICAgIHtyZXR1cm4gcXVlcnkoYS0+cmlnaHQsYi0+cmlnaHQsbWlkLHIsayk7fQoKICAgIGludCB0ZW1wPXF1ZXJ5KGEtPmxlZnQsYi0+bGVmdCxsLG1pZCxrKTsKICAgIHJldHVybiBjb3VudCt0ZW1wOwp9CgojZGVmaW5lIG1heHEgMjAwMDA1CmludCBhW21heG5dOwptYXA8aW50LGludD5tOwppbnQgbFttYXhxXSxyW21heHFdLGtbbWF4cV07Cm5vZGUqIHJvb3RbbWF4bl07CgppbnQgbWFpbigpCnsKaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKY2luLmNsZWFyKCk7Y291dC5jbGVhcigpOwpjaW4udGllKDApO2NvdXQudGllKDApOwoKaW50IG4scSxhbnMsbDIscjI7CgpjaW4+Pm47CmZvcihpbnQgaT0wO2k8bjsrK2kpCntjaW4+PmFbaV07Cm1bYVtpXV07fQoKY2luPj5xOwpmb3IoaW50IHo9MDt6PHE7Kyt6KQp7CgogICAgY2luPj5sMj4+cjI+Pmtbel07CiAgICBsW3pdPWwyLTE7CiAgICByW3pdPXIyLTE7CiAgICBtW2tbel1dOwp9CgoKaW50IG1heGk9MDsKICAJZm9yKG1hcDxpbnQsaW50Pjo6aXRlcmF0b3IgaXQgPSBtLmJlZ2luKCk7IGl0ICE9IG0uZW5kKCk7ICsraXQpCiAgCXsKICAgIAkJbVtpdC0+Zmlyc3RdID0gbWF4aTsKICAgIAkJKyttYXhpOwogIAl9Ci8vYWxsIGFbaV0ncyBhcmUgbWFwcGVkIHRvIDAsLi4sbWF4aS0xCgpudWxsLT5sZWZ0ID0gbnVsbC0+cmlnaHQgPSBudWxsOy8vaW5maW50ZSBsb29wCgpyb290WzBdPW51bGwtPmluc2VydCgwLG1heGksbVthWzBdXSk7CmZvcihpbnQgaT0xO2k8bjsrK2kpCnsKICAgIHJvb3RbaV09cm9vdFtpLTFdLT5pbnNlcnQoMCxtYXhpLG1bYVtpXV0pOwp9CgovLyBjb3V0PDxtYXhpPDwnXG4nOwoKZm9yKGludCB6PTA7ejxxOysreikKewogICAgbDI9bFt6XTsKICAgIGFucz1xdWVyeShyb290W3Jbel1dLChsMj09MD9udWxsOnJvb3RbbDItMV0pLDAsbWF4aSxtW2tbel1dKTsKICAgIGNvdXQ8PGFuczw8J1xuJzsKfQoKfQo=