#pragma GCC optimize ("Ofast")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/hash_policy.hpp>
#define int long long
#define str string
#define vec vector
#define vi vec<int>
#define vs vec<str>
#define vb vec<bool>
#define vc vec<char>
#define vii vec<pair<int, int>>
#define deck deque
#define multi multiset
#define dou double
#define ld long double
#define pb push_back
#define ppb pop_back
#define pf push_front
#define ppf pop_front
#define eb emplace_back
#define mm memset
#define OK cout << "OK" << '\n'
#define Ok cout << "Ok" << '\n'
#define YES cout << "YES" << '\n'
#define Yes cout << "Yes" << '\n'
#define yes cout << "yes" << '\n';
#define NO cout << "NO" << '\n'
#define No cout << "No" << '\n'
#define no cout << "no" << '\n';
#define NONE cout << "NONE" << '\n';
#define None cout << "None" << '\n';
#define Alice cout << "Alice" << '\n';
#define Bob cout << "Bob" << '\n';
#define gcd __gcd
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(), x.rend()
#define FOR(i, a, b) for (int i = a; i < b; i++)
#define FORR(i, a, b) for (int i = a; i <= b; i++)
#define FORR2(i, a, b) for (int i = 2; i <= b; i += 2)
#define FORR1(i, a, b) for (int i = 1; i <= b; i += 2)
#define RFO(i, a, b) for (int i = a; i >= b; i--)
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
using namespace __gnu_pbds;
template <typename T>
using __indexed_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T>
using __indexed_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
const int mod = 1e9 + 7;
const int INF = 1e18;
const int sz = 1e6 + 9;
const int lim = 2e18;
int midpow(int b, int ex) {
int nas = 1;
b %= mod;
while (ex > 0) {
if (ex % 2 != 0) {
nas = (nas * b) % mod;
}
b = (b * b) % mod;
ex /= 2;
}
return nas;
}
bool isprime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
void dsa()
{
int n;
int q;
cin >> n;
cin >> q;
vi v(n);
FOR(i,0,n) cin >> v[i];
while(q--) {
int nas = 0;
int l;
int r;
cin >> l;
cin >> r;
l--;
r--;
int cnt[11] = {0};
FORR(i, l, r) cnt[v[i]]++;
int len = r - l + 1;
FORR(i, 1, 100) {
if (cnt[i] >= (len + 1) / 2) {
nas++;
}
}
}
cout << nas << '\n';
}
signed main()
{
fastio;
//dsa();
int ttt;
cin >> ttt;
while(ttt--)
{
dsa();
}
}