#include<bits/stdc++.h>
using namespace std;
map<int,set<int> >mp;
int a[114514];
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
#define IT set<int>::iterator
void solve(){
int n=read();
for(int i=1;i<=n;i++){
a[i]=read();
mp[a[i]].insert(i);
}
int q=read();
int l,r,x;
for(int i=1;i<=q;i++){
l=read();
r=read();
x=read();
IT L,R;
L=mp[x].lower_bound(l);
R=mp[x].lower_bound(r);
printf("%d\n",R-L);
}
}
int main(){
int T=read();
for(int i=1;i<=T;i++)solve();
}
/*P_10288_GESP样题_八级_区间.cpp:27:25: note: 'std::set<int>::iterator {aka std::_Rb_tree_const_iterator<int>}' is not derived from 'const std::move_iterator<_IteratorL>'
printf("%d\n",R-L);
*/