#include<bits/stdc++.h>
using namespace std;
int unit;
struct q{
int l, r, id, x;
bool operator<(const q &x){
if (l / unit != x.l / unit) return l < x.l;
if ((l / unit) & 1) return r < x.r;
return r > x.r;
}
}qs[100005];
int cnt[100005], a[100005], b[200005], n, nn, qn, ans[100005];
signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int t;
cin >> t;
while(t--) {
memset(cnt, 0, sizeof cnt);
cin >> n;
for(int i = 1;i <= n;i ++)
cin >> a[i], b[i] = a[i];
cin >> qn;
unit = sqrt(qn);
sort(b + 1, b + 1 + n);
for(int i = 1;i <= qn;i ++)
cin >> qs[i].l >> qs[i].r >> qs[i].x, qs[i].id = i, qs[i].x = (b[lower_bound(b + 1, b + 1 + n, qs[i].x) - b] != qs[i].x) ? n + 1 :( lower_bound(b + 1, b + 1 + n, qs[i].x) - b);
for(int i = 1;i <= n;i ++)
a[i] = lower_bound(b + 1, b + n + 1, a[i]) - b;
int l = 1, r = 1;
cnt[a[1]] ++;
for(int i = 1;i <= qn;i ++) {
while(l < qs[i].l)
cnt[a[l ++]] --;
while(r > qs[i].l)
cnt[a[r --]] --;
while(l > qs[i].l)
cnt[a[-- l]] ++;
while(r < qs[i].r)
cnt[a[++ r]] ++;
ans[qs[i].id] = cnt[qs[i].x];
}
for(int i = 1;i <= qn;i ++)
cout << ans[i] << "\n";
cnt[a[1]] = 0;
}
}