#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> PII;

int a[100010];

vector<int> manacher(const int s[], int n)
{
	vector<int> u(n + n - 1, 1);
	for (int i = 1, x = 0; i < n + n - 1; i++) {
		u[i] = max(x + u[x] - i, 1 - i % 2);
		if (x + x >= i) u[i] = min(u[i], u[x + x - i]);
		int a = (i - 1 - u[i]) >> 1, b = (i + 1 + u[i]) >> 1;
		while (a >= 0 && b < n && s[a] == s[b]) a--, b++, u[i] += 2;
		if (i + u[i] > x + u[x]) x = i;
	}
	return u;
}

int main() {
	int T, n;
	scanf("%d", &T);
	for (int cas = 1; cas <= T; cas++) {
		scanf("%d", &n);
		for (int i = 0; i < n; i++) scanf("%d", a + i);
		vector<int> Q = manacher(a, n), U;
		for (int i = 1; i < Q.size(); i += 2) U.push_back(i);
		sort(U.begin(), U.end(), [&](const int &a, const int &b){
			return Q[a] > Q[b];
		});
		set<int> S;
		int ans = 0;
		for (int &id : U) {
			S.insert(id);
			//printf("%d %d\n", id, Q[id]);
			auto L = S.lower_bound(id - Q[id]);
			ans = max(ans, (id - *L) / 2);
			auto R = S.upper_bound(id + Q[id]);
			R--;
			ans = max(ans, (*R - id) / 2);
			//printf("%d %d %d %d %d\n", *L, id, *R, Q[id], ans);
		}
		printf("Case #%d: %d\n", cas, ans * 3);
	}
	return 0;
}
