/* 统计1-200的前缀和,然后枚举i为第一段的右端点,可以直接推出第三段的左端点,然后在中间那一块找最大值就行 */ #include<bits/stdc++.h> using namespace std; #define N 200005 int n,a[N],sum[205][N]; vector<int>p[205]; int main(){ int t;cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=200;i++){ for(int j=1;j<=n;j++) if(a[j]==i)sum[i][j]=sum[i][j-1]+1; else sum[i][j]=sum[i][j-1]; } for(int i=1;i<=n;i++) p[a[i]].push_back(i); int ans=0; for(int i=1;i<=n;i++){ int s=p[a[i]].size(); int p1=lower_bound(p[a[i]].begin(),p[a[i]].end(),i)-p[a[i]].begin(); int p2=s-1-p1; if(p2<p1)continue; if(p2==p1){ ans=max(ans,2*p1+1); continue; } int l=i,r=p[a[i]][p2]; int Max=0; for(int i=1;i<=200;i++) Max=max(Max,sum[i][r-1]-sum[i][l]); ans=max(ans,Max+2*(p1+1)); } cout<<ans<<' '; for(int i=1;i<=200;i++){ p[i].clear(); for(int j=1;j<=n;j++)sum[i][j]=0; } } }