#include <bits/stdc++.h> 
using namespace std ; 
namespace hater_space { 

#define fp( i , x , y ) for( int i=(x); i<=(y); ++i ) 
#define fq( i , x , y ) for( int i=(y); i>=(x); --i ) 
#define i60 long long 
#define dou double 
const int N = 305 , M = 2e5+10 ;  
int cnt[N] , mx[N][N] , len , n ;  
bitset <N> ap[N] , all[N] ;  
int a[M] , b[M] , c[M] , Mx[M] ; 
void solve( ) { 
  len = 0 ; 
  fp( i , 0 , n ) all[i].reset() , ap[i].reset() ;  
  fp( i , 1 , n ) b[++len] = a[i] ;  
  sort( b+1 , b+1+len ) ; 
  len = unique( b+1 , b+1+len ) - (b+1) ; 
  fp( i , 1 , n ) a[i] = lower_bound( b+1 , b+1+len , a[i] ) - b ; 
  fp( i , 1 , n ) { 
    memset( cnt , 0 , sizeof(cnt) ) ; 
    int nw = 0 ; 
    fp( j , i , n ) { 
      cnt[a[j]] ++ ; 
      nw = max( nw , cnt[a[j]] ) ; 
      mx[i][j] = nw ; 
	} 
  }  
  
  fp( i , 1 , n ) { 
    memset( cnt , 0 , sizeof(cnt) ) ; 
    int nw = 0 ; 
    fp( j , 0 , n ) ap[j].reset() ; 
	fp( j , 1 , len ) ap[0][j] = 1 ;  
    fp( j , 1 , i-1 ) ap[++cnt[a[j]]][a[j]] = 1 , nw = max( nw , cnt[a[j]] ) ;  
    fq( j , i , n ) { 
      all[mx[i][j]+nw] = ( all[mx[i][j]+nw] | ap[nw] ) ; 
      cnt[a[j]] ++ ; nw = max( nw , cnt[a[j]] ) ; 
      ap[cnt[a[j]]][a[j]] = 1 ; 
	} 
  } 
  vector <int> ans ; ans.clear() ; 
  fq( i , 1 , n ) { 
    fp( j , 1 , len ) if( all[i][j] ) ans.push_back(b[j]) ;
	if( ans.size() ) { 
	  cout << i << '\n' ; 
	  for( auto j : ans ) cout << j << '\n' ; 
	  return ; 
	}   
  } 
} 
void sub( ) { 
  memset( cnt , 0 , sizeof(cnt) ) ; 
  memset( Mx , 0 , sizeof(Mx) ) ; 
  len = 0 ; 
  fp( i , 1 , n ) b[++len] = a[i] ; 
  sort( b+1 , b+1+len ) ; 
  len = unique( b+1 , b+1+len ) - (b+1) ; 
  fp( i , 1 , n ) a[i] = lower_bound( b+1 , b+1+len , a[i] ) - b , cnt[a[i]] ++ ; 
  int al_mx = 0 ; 
  fp( i , 1 , len ) { 
    fp( j , 1 , len ) { 
      int ans = 0 , nw = 0 ; 
      fp( k , 1 , n ) { 
        if( a[k] == i ) { 
          c[k] = -1 ; 
		} else if( a[k] == j ) { 
		  c[k] = 1 ; 
		} else c[k] = 0 ; 
	  } 
	  fp( k , 1 , n ) { 
	    nw += c[k] ; 
	    ans = max( ans , nw ) ; 
	    if( nw < 0 ) nw = 0 ; 
	  } 
	  Mx[i] = max( Mx[i] , cnt[i] + ans ) ; 
	} 
	al_mx = max( al_mx , Mx[i] ) ; 
  } 
  cout << al_mx << '\n' ; 
  fp( i , 1 , len ) if( al_mx == Mx[i] ) cout << b[i] << '\n' ; 
} 
int main( ) { 
  freopen( "mode.in" , "r" , stdin ) ; 
  freopen( "mode.out" , "w" , stdout ) ; 
  ios::sync_with_stdio(false) ; 
  cin.tie(0) ; 
  int T ; cin >> T ; 
  while( T -- ) { 
    cin >> n ; 
    fp( i , 1 , n ) cin >> a[i] ; 
    if( n <= 300 ) solve( ) ; 
     else sub() ; 
  } 
  return 0 ; 
} 

} 
int main( ) { 
  hater_space::main( ) ;   
  return 0 ; 
} 
/*
1
6
2 4 2 4 8 8

*/


