#include using namespace std; const int MAXN = 1e5+10; int b[MAXN]; int BinarySearch(int l, int r, int ans) { int mid; while (l < r) { mid = (l+r)/2; if (b[mid] >= ans) r = mid; else l = mid; } return r; } int LongestIncreasingPath(int a[], int n) { if (n == 0)return 0; memset(b, -1, sizeof(b)); int b[MAXN], k = 1, i; b[0] = a[0]; for (i = 0; i < n; i++) { if (a[i] < b[0])b[0] = a[i]; else if (a[i] > b[k-1])b[k++] = a[i]; else b[BinarySearch(-1, k-1, a[i])] = a[i]; } return k; } int main() { ifstream cin ("stairway.in"); ofstream cout("stairway.out"); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while (t--) { int n, a[MAXN], i, x, k = 0, temp_br = 1, pr; cin >> n >> pr; for (i = 1; i < n; i++) { cin >> x; if (x == pr)temp_br++; else { if (temp_br > 1) { a[k++] = pr; temp_br = 1; } } pr = x; } if (temp_br > 1)a[k++] = pr; cout << LongestIncreasingPath(a, k)*2 << '\n'; } return 0; } /* 10 1 1 1 1 1 1 2 2 1 1 */