https://codeforces.com/problemset/problem/1672/Chttps://codeforces.com/problemset/problem/1672/C
// https://codeforces.com/problemset/problem/1672/C
// 可以看成第一个连续块到最后一个连续块的间隔问题
// 用f[i]来预处理ai=ai+1 的个数
// 通过f[i]我们可以知道第一个连续块的开始位置Begin和最后一个连续块的结束位置End
// 两个位置间夹的所有数都需要处理
// 注意特判只有一个有三个数的连续块的情况(样例2)
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int val[N], f[N];
int Begin, End, Max;
int main() {
int t;
cin >> t;
while(t--) {
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> val[i];
if(val[i] == val[i - 1]) f[i] = f[i - 1] + 1;
else f[i] = f[i - 1];
}
if(f[n] <= 1) cout << "0\n"; // 已经符合
else {
for(int i = 1; i <= n; i++) {
if(f[i] == 1 && !Begin) Begin = i;
if(f[i] > Max) {
End = i;
Max = f[i];
}
}
if(End - Begin - 1)
cout << End - Begin - 1 << '\n';
else// 只有一个有三个数的连续块的情况
cout << "1\n";
}
Begin = 0, End = 0, Max = 0;
memset(f, 0, sizeof(f));
}
return 0;
}