#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int T,n,siz,a[N],big[N],ctb,id[N],sml[N],cts,ans;
int g[N];
bool vis[N];
vector<int>vc,vt[N],vs;
inline void init(){
	vc.clear();
	vc.emplace_back(0);
	for(int i=1;i<=n;++i)vc.emplace_back(a[i]);
	sort(vc.begin(),vc.end());
	vc.erase(unique(vc.begin(),vc.end()),vc.end());
	for(int i=1;i<=n;++i){
		a[i]=lower_bound(vc.begin(),vc.end(),a[i])-vc.begin();
	}
	for(int i=1;i<=n;++i){
		g[i]=vt[a[i]].size();
		vt[a[i]].emplace_back(i);
	}
}
inline void update(int x,int t){
	if(ans==t){
		if(!vis[x])vis[x]=1,vs.emplace_back(x);
	}else if(ans<t){
		for(int t:vs)vis[t]=0;
		vs.clear();
		ans=t;
		vis[x]=1;
		vs.emplace_back(x);
	}
}
void workBig(){
	static int rec[N],ct[N],recc[N];
	for(int x=1;x<=ctb;++x){
		for(int i=1;i<=n;++i)rec[i]=recc[i]=ct[i]=0;
		int v=big[x];
		int tot=vt[v].size();
		for(int i=1;i<=n;++i){
			rec[a[i]]=max(rec[a[i]],ct[v]-ct[a[i]]);
			++ct[a[i]];
			recc[a[i]]=max(recc[a[i]],ct[a[i]]-ct[v]);
			if(a[i]!=v){
				int t=tot+ct[a[i]]-ct[v]+rec[a[i]];
				update(v,t);
				t=(int)vt[a[i]].size()+ct[v]-ct[a[i]]+1+recc[a[i]];
				update(a[i],t);
			}
		}
		for(int i=1;i<(int)vc.size();++i)if(i!=v){
			int t=vt[i].size()+ct[v]-ct[i]+recc[i];
			update(i,t);
		}
	}
}
void workSml(){
	static int rg[N],mx[N];
	for(int i=1;i<=siz+2;++i)rg[i]=n+1;
	for(int i=1;i<=n;++i)mx[i]=0;
	for(int i=n;i;--i){
		if((int)vt[a[i]].size()<=siz){
			int sz=vt[a[i]].size();
			for(int j=g[i]+1,it=0;j<=sz;++j){
				int pos=(j<sz)?vt[a[i]][j]-1:n,len=j-g[i]-1;
				while(rg[it+1]<=pos)++it;
				mx[a[i]]=max(mx[a[i]],sz-len+it);
			}
			for(int j=g[i];j<sz;++j){
				int pos=vt[a[i]][j],len=j-g[i]+1;
				rg[len]=min(rg[len],pos);
			}
		}
	}
	for(int i=1;i<=cts;++i){
		int x=sml[i],sz=vt[x].size();
		for(int j=0,it=0;j<sz;++j){
			int pos=vt[x][j]-1,len=j;
			while(rg[it+1]<=pos)++it;
			mx[x]=max(mx[x],sz-len+it);
		}
	}
	int mxx=*max_element(mx+1,mx+n+1);
	if(mxx==0)return;
	for(int i=1;i<=n;++i)if(mx[i]==mxx)update(i,mxx);
}
int main(){
	freopen("mode.in","r",stdin);
	freopen("mode.out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	for(cin>>T;T--;){
		cin>>n;
		for(int i=1;i<=n;++i)cin>>a[i],g[i]=0;
		init();
		siz=(sqrt(n)+1);
		ctb=cts=0;
		ans=0;
		vs.clear();
		for(int i=1;i<=n;++i)vis[i]=0;
		for(int i=1;i<=n;++i)if((int)vt[i].size()>siz){
			big[++ctb]=i;
			id[i]=ctb;
		}else if(vt[i].size()){
			sml[++cts]=i;
		}
		workBig();
		workSml();
		cout<<ans<<'\n';
		sort(vs.begin(),vs.end());
		for(int x:vs)cout<<vc[x]<<'\n';
		ans=0;
		for(int i=1;i<=n;++i)vt[i].clear();
	}
}
