#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int N=300010;
int a[N],b[N];pair<int,int>c[N];
int ans[N],at,ares,n,m;
namespace brute{
	vector<int>g[N];
	void solve()
	{
		for(int i=1;i<=n;i++) g[a[i]].push_back(i);
		for(int i=1;i<=m;i++)
		{
			int al=g[i].size();
			if(al>ares) ares=al,at=0;
			if(al==ares) ans[++at]=i;
			for(int j=1;j<=m;j++) if(i!=j)
			{
				int ct=0;
				for(int v:g[i]) c[++ct]={v,-1};
				for(int v:g[j]) c[++ct]={v,1};
				sort(c+1,c+ct+1);
				int res=0,v=0;
				for(int k=1;k<=ct;k++) v+=c[k].second,v=max(v,0),res=max(res,v);
				if(res+al>ares) ares=res+al,at=0;
				if(res+al==ares) ans[++at]=i;
			}
		}
		sort(ans+1,ans+at+1);
		at=unique(ans+1,ans+at+1)-ans-1;
		printf("%d\n",ares);
		for(int i=1;i<=at;i++) printf("%d\n",b[ans[i]]);
		ares=at=0;
		for(int i=1;i<=m;i++) g[i].clear();
	}
}
int main()
{
	freopen("mode.in","r",stdin);
	freopen("mode.out","w",stdout);
	int T;scanf("%d",&T);
	while(T --> 0)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++) scanf("%d",&a[i]),b[i]=a[i];
		sort(b+1,b+n+1);
		m=unique(b+1,b+n+1)-b-1;
		for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+m+1,a[i])-b;
		brute::solve();
	}
	return 0;
}
