#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 5e3 + 5;
int n;
int a[MAXN];
int dp[MAXN];
int cnt[MAXN];
void solve() {
cin >> n;
for(int i = 1; i <= n; ++i) {
cin >> a[i];
}
for(int i = 0; i <= n + 1; ++i) {
cnt[i] = dp[i] = 0;
}
for(int i = 0; i <= n; ++i) {
if(i > 0 && dp[i] == 0) {
continue;
}
int currmax = 0;
for(int j = 1; j <= n; ++j) {
cnt[a[j]] = 0;
}
for(int j = i + 1; j <= n + 1; ++j) {
if(currmax * 2 <= (j - i) && (i - j + 1) % 2 == 0) {
if(i == 0 || j == (n + 1) || a[i] == a[j]) {
dp[j] = max(dp[j], dp[i] + 1);
}
}
++cnt[a[j]];
currmax = max(currmax, cnt[a[j]]);
}
}
cout << dp[n + 1] - 1 << endl;
}
int main() {
int t;
cin >> t;
while(t--) solve();
return 0;
}
1480. Running Sum of 1d Array | 682. Baseball Game |
496. Next Greater Element I | 232. Implement Queue using Stacks |
844. Backspace String Compare | 20. Valid Parentheses |
746. Min Cost Climbing Stairs | 392. Is Subsequence |
70. Climbing Stairs | 53. Maximum Subarray |
1527A. And Then There Were K | 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers |
318. Maximum Product of Word Lengths | 448. Find All Numbers Disappeared in an Array |
1155. Number of Dice Rolls With Target Sum | 415. Add Strings |
22. Generate Parentheses | 13. Roman to Integer |
2. Add Two Numbers | 515. Find Largest Value in Each Tree Row |
345. Reverse Vowels of a String | 628. Maximum Product of Three Numbers |
1526A - Mean Inequality | 1526B - I Hate 1111 |
1881. Maximum Value after Insertion | 237. Delete Node in a Linked List |
27. Remove Element | 39. Combination Sum |
378. Kth Smallest Element in a Sorted Matrix | 162. Find Peak Element |