#include<bits/stdc++.h>
using namespace std;
const int N=100100;
int str[N*2],tmp[N*2];
int len[N*2],n;
//len[i]:扩展后字符串以i为中心最长回文串的半径。
void init()
{
int i;
tmp[0]=-2;
for(i=1;i<=2*n;i+=2)
{
tmp[i]=-1;
tmp[i+1]=str[i/2];
}
tmp[2*n+1]=-1;
}
void manacher()
{
int ans=0,po=0,i,mx;
//以po为中心的最长回文串,mx为当前计算回文串最右边字符的最大值
for(i=2;i<n*2+1;i++)
{
if(mx>i)
len[i]=min(len[2*po-i],mx-i);
else
len[i]=1;
while(tmp[i-len[i]]==tmp[i+len[i]])
len[i]++;
if(len[i]+i>mx)
{
mx=len[i]+i;
po=i;
}
if(ans<len[i])
ans=len[i];
}
}
int main()
{
int cas=1,T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&str[i]);
memset(len,0,sizeof(len));
init();
manacher();
int ans=-1,i;
for(i=3;i<n*2+1;i+=2)
{
if(len[i]-1>ans)
{
int c=len[i]-1;
while(len[i+c]<c&&c>ans)
c--;
if(ans<c)
ans=c;
}
}
printf("Case #%d: %d\n",cas++,(ans/2)*3);
}
return 0;
}