#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S min_L( S a,T b) {
return a<= b? a: b;
}
template < class S, class T> inline S divup_L( S a, T b) {
return ( a+ b- 1 ) / b;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int gcnt[ 20001 ] ;
class MajorityChecker{
int B, M, N, mval[ 100 ] ;
map< int ,int > mp[ 100 ] ;
vector< int > A;
public :
MajorityChecker( vector< int > & arr) {
int a, b, i, j, k, mxind, mxval;
A = arr;
N = A.size ( ) ;
M = 300 ;
B = divup_L( N,M) ;
for ( i= 0 ; i< ( 20001 ) ; i++ ) {
gcnt[ i] = 0 ;
}
for ( k= 0 ; k< ( B) ; k++ ) {
a = M* k;
b = min_L( M* ( k+ 1 ) , N) ;
mxval = 0 ;
for ( i= ( a) ; i< ( b) ; i++ ) {
gcnt[ A[ i] ] ++ ;
if ( mxval < gcnt[ A[ i] ] ) {
mxval = gcnt[ A[ i] ] ;
mxind = A[ i] ;
}
}
mval[ k] = mxind;
for ( i= ( a) ; i< ( b) ; i++ ) {
mp[ k] [ A[ i] ] = gcnt[ A[ i] ] ;
}
for ( i= ( a) ; i< ( b) ; i++ ) {
gcnt[ A[ i] ] -- ;
}
}
}
int query( int a, int b, int t) {
int aa, bb, cnt, i, ii, val, x;
vector< int > koho;
b++ ;
if ( b- a < 1000 ) {
cnt = 0 ;
for ( i= ( a) ; i< ( b) ; i++ ) {
if ( cnt== 0 ) {
val = A[ i] ;
cnt++ ;
}
else if ( val== A[ i] ) {
cnt++ ;
}
else {
cnt-- ;
}
}
if ( cnt== 0 ) {
return - 1 ;
}
cnt = 0 ;
for ( i= ( a) ; i< ( b) ; i++ ) {
if ( val== A[ i] ) {
cnt++ ;
}
}
if ( cnt >= t) {
return val;
}
return - 1 ;
}
aa = ( divup_L( a,M) ) * M;
bb = ( b / M) * M;
if ( a ! = aa) {
i = query( a,aa- 1 ,0 ) ;
if ( i>= 0 ) {
koho.push_back ( i) ;
}
}
if ( b ! = bb) {
i = query( bb,b- 1 ,0 ) ;
if ( i>= 0 ) {
koho.push_back ( i) ;
}
}
for ( i= ( aa/ M) ; i< ( bb/ M) ; i++ ) {
koho.push_back ( mval[ i] ) ;
}
sort( koho.begin ( ) , koho.end ( ) ) ;
for ( ii= 0 ; ii< ( koho.size ( ) ) ; ii++ ) {
if ( ii> 0 && koho[ ii] == koho[ ii- 1 ] ) {
continue ;
}
x = koho[ ii] ;
cnt = 0 ;
for ( i= ( a) ; i< ( aa) ; i++ ) {
if ( A[ i] == x) {
cnt++ ;
}
}
for ( i= ( aa/ M) ; i< ( bb/ M) ; i++ ) {
if ( mp[ i] .count ( x) ) {
cnt + = mp[ i] [ x] ;
}
}
for ( i= ( bb) ; i< ( b) ; i++ ) {
if ( A[ i] == x) {
cnt++ ;
}
}
if ( cnt >= t) {
return x;
}
}
return - 1 ;
}
}
;
// cLay varsion 20190818-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int gcnt[20001];
//
// class MajorityChecker {
// public:
// int N;
// vector<int> A;
//
// int M, B;
// int mval[100];
// map<int,int> mp[100];
//
// MajorityChecker(vector<int>& arr) {
// int i, j, k, a, b;
// int mxind, mxval;
//
// A = arr;
// N = A.size();
//
// M = 300;
// B = N /+ M;
//
// rep(i,20001) gcnt[i] = 0;
//
// rep(k,B){
// a = M*k;
// b = min(M*(k+1), N);
//
// mxval = 0;
// rep(i,a,b){
// gcnt[A[i]]++;
// if(mxval < gcnt[A[i]]){
// mxval = gcnt[A[i]];
// mxind = A[i];
// }
// }
// mval[k] = mxind;
// rep(i,a,b) mp[k][A[i]] = gcnt[A[i]];
// rep(i,a,b) gcnt[A[i]]--;
// }
// }
//
// int query(int a, int b, int t) {
// int i, ii, x, aa, bb;
// int val, cnt;
// vector<int> koho;
//
// b++;
//
// if(b-a < 1000){
//
// cnt = 0;
// rep(i,a,b){
// if(cnt==0){
// val = A[i];
// cnt++;
// } else if(val==A[i]){
// cnt++;
// } else {
// cnt--;
// }
// }
// if(cnt==0) return -1;
//
// cnt = 0;
// rep(i,a,b) if(val==A[i]) cnt++;
// if(cnt >= t) return val;
// return -1;
//
// }
//
// aa = (a /+ M) * M;
// bb = (b / M) * M;
//
// if(a != aa){
// i = query(a,aa-1,0);
// if(i>=0) koho.push_back(i);
// }
// if(b != bb){
// i = query(bb,b-1,0);
// if(i>=0) koho.push_back(i);
// }
// rep(i,aa/M,bb/M) koho.push_back(mval[i]);
// sort(koho.begin(), koho.end());
//
// rep(ii,koho.size()){
// if(ii>0 && koho[ii]==koho[ii-1]) continue;
// x = koho[ii];
//
// cnt = 0;
// rep(i,a,aa) if(A[i]==x) cnt++;
// rep(i,aa/M,bb/M) if(mp[i].count(x)) cnt += mp[i][x];
// rep(i,bb,b) if(A[i]==x) cnt++;
//
// if(cnt >= t) return x;
// }
//
// return -1;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIG1pbl9MKFMgYSxUIGIpewogIHJldHVybiBhPD1iP2E6YjsKfQp0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPiBpbmxpbmUgUyBkaXZ1cF9MKFMgYSwgVCBiKXsKICByZXR1cm4gKGErYi0xKS9iOwp9CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KaW50IGdjbnRbMjAwMDFdOwpjbGFzcyBNYWpvcml0eUNoZWNrZXJ7CiAgaW50IEIsIE0sIE4sIG12YWxbMTAwXTsKICBtYXA8aW50LGludD4gbXBbMTAwXTsKICB2ZWN0b3I8aW50PiBBOwogIHB1YmxpYzoKICBNYWpvcml0eUNoZWNrZXIodmVjdG9yPGludD4mIGFycil7CiAgICBpbnQgYSwgYiwgaSwgaiwgaywgbXhpbmQsIG14dmFsOwogICAgQSA9IGFycjsKICAgIE4gPSBBLnNpemUoKTsKICAgIE0gPSAzMDA7CiAgICBCID1kaXZ1cF9MKE4sTSk7CiAgICBmb3IoaT0wO2k8KDIwMDAxKTtpKyspewogICAgICBnY250W2ldID0gMDsKICAgIH0KICAgIGZvcihrPTA7azwoQik7aysrKXsKICAgICAgYSA9IE0qazsKICAgICAgYiA9bWluX0woTSooaysxKSwgTik7CiAgICAgIG14dmFsID0gMDsKICAgICAgZm9yKGk9KGEpO2k8KGIpO2krKyl7CiAgICAgICAgZ2NudFtBW2ldXSsrOwogICAgICAgIGlmKG14dmFsIDwgZ2NudFtBW2ldXSl7CiAgICAgICAgICBteHZhbCA9IGdjbnRbQVtpXV07CiAgICAgICAgICBteGluZCA9IEFbaV07CiAgICAgICAgfQogICAgICB9CiAgICAgIG12YWxba10gPSBteGluZDsKICAgICAgZm9yKGk9KGEpO2k8KGIpO2krKyl7CiAgICAgICAgbXBba11bQVtpXV0gPSBnY250W0FbaV1dOwogICAgICB9CiAgICAgIGZvcihpPShhKTtpPChiKTtpKyspewogICAgICAgIGdjbnRbQVtpXV0tLTsKICAgICAgfQogICAgfQogIH0KICBpbnQgcXVlcnkoaW50IGEsIGludCBiLCBpbnQgdCl7CiAgICBpbnQgYWEsIGJiLCBjbnQsIGksIGlpLCB2YWwsIHg7CiAgICB2ZWN0b3I8aW50PiBrb2hvOwogICAgYisrOwogICAgaWYoYi1hIDwgMTAwMCl7CiAgICAgIGNudCA9IDA7CiAgICAgIGZvcihpPShhKTtpPChiKTtpKyspewogICAgICAgIGlmKGNudD09MCl7CiAgICAgICAgICB2YWwgPSBBW2ldOwogICAgICAgICAgY250Kys7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYodmFsPT1BW2ldKXsKICAgICAgICAgIGNudCsrOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgY250LS07CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmKGNudD09MCl7CiAgICAgICAgcmV0dXJuIC0xOwogICAgICB9CiAgICAgIGNudCA9IDA7CiAgICAgIGZvcihpPShhKTtpPChiKTtpKyspewogICAgICAgIGlmKHZhbD09QVtpXSl7CiAgICAgICAgICBjbnQrKzsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYoY250ID49IHQpewogICAgICAgIHJldHVybiB2YWw7CiAgICAgIH0KICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgYWEgPSAoZGl2dXBfTChhLE0pKSAqIE07CiAgICBiYiA9IChiIC8gTSkgKiBNOwogICAgaWYoYSAhPSBhYSl7CiAgICAgIGkgPSBxdWVyeShhLGFhLTEsMCk7CiAgICAgIGlmKGk+PTApewogICAgICAgIGtvaG8ucHVzaF9iYWNrKGkpOwogICAgICB9CiAgICB9CiAgICBpZihiICE9IGJiKXsKICAgICAgaSA9IHF1ZXJ5KGJiLGItMSwwKTsKICAgICAgaWYoaT49MCl7CiAgICAgICAga29oby5wdXNoX2JhY2soaSk7CiAgICAgIH0KICAgIH0KICAgIGZvcihpPShhYS9NKTtpPChiYi9NKTtpKyspewogICAgICBrb2hvLnB1c2hfYmFjayhtdmFsW2ldKTsKICAgIH0KICAgIHNvcnQoa29oby5iZWdpbigpLCBrb2hvLmVuZCgpKTsKICAgIGZvcihpaT0wO2lpPChrb2hvLnNpemUoKSk7aWkrKyl7CiAgICAgIGlmKGlpPjAgJiYga29ob1tpaV09PWtvaG9baWktMV0pewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIHggPSBrb2hvW2lpXTsKICAgICAgY250ID0gMDsKICAgICAgZm9yKGk9KGEpO2k8KGFhKTtpKyspewogICAgICAgIGlmKEFbaV09PXgpewogICAgICAgICAgY250Kys7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZvcihpPShhYS9NKTtpPChiYi9NKTtpKyspewogICAgICAgIGlmKG1wW2ldLmNvdW50KHgpKXsKICAgICAgICAgIGNudCArPSBtcFtpXVt4XTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZm9yKGk9KGJiKTtpPChiKTtpKyspewogICAgICAgIGlmKEFbaV09PXgpewogICAgICAgICAgY250Kys7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmKGNudCA+PSB0KXsKICAgICAgICByZXR1cm4geDsKICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOwogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDE5MDgxOC0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGludCBnY250WzIwMDAxXTsKLy8gCi8vIGNsYXNzIE1ham9yaXR5Q2hlY2tlciB7Ci8vIHB1YmxpYzoKLy8gICBpbnQgTjsKLy8gICB2ZWN0b3I8aW50PiBBOwovLyAKLy8gICBpbnQgTSwgQjsKLy8gICBpbnQgbXZhbFsxMDBdOwovLyAgIG1hcDxpbnQsaW50PiBtcFsxMDBdOwovLyAgIAovLyAgIE1ham9yaXR5Q2hlY2tlcih2ZWN0b3I8aW50PiYgYXJyKSB7Ci8vICAgICBpbnQgaSwgaiwgaywgYSwgYjsKLy8gICAgIGludCBteGluZCwgbXh2YWw7Ci8vICAgICAKLy8gICAgIEEgPSBhcnI7Ci8vICAgICBOID0gQS5zaXplKCk7Ci8vIAovLyAgICAgTSA9IDMwMDsKLy8gICAgIEIgPSBOIC8rIE07Ci8vIAovLyAgICAgcmVwKGksMjAwMDEpIGdjbnRbaV0gPSAwOwovLyAKLy8gICAgIHJlcChrLEIpewovLyAgICAgICBhID0gTSprOwovLyAgICAgICBiID0gbWluKE0qKGsrMSksIE4pOwovLyAKLy8gICAgICAgbXh2YWwgPSAwOwovLyAgICAgICByZXAoaSxhLGIpewovLyAgICAgICAgIGdjbnRbQVtpXV0rKzsKLy8gICAgICAgICBpZihteHZhbCA8IGdjbnRbQVtpXV0pewovLyAgICAgICAgICAgbXh2YWwgPSBnY250W0FbaV1dOwovLyAgICAgICAgICAgbXhpbmQgPSBBW2ldOwovLyAgICAgICAgIH0KLy8gICAgICAgfQovLyAgICAgICBtdmFsW2tdID0gbXhpbmQ7Ci8vICAgICAgIHJlcChpLGEsYikgbXBba11bQVtpXV0gPSBnY250W0FbaV1dOwovLyAgICAgICByZXAoaSxhLGIpIGdjbnRbQVtpXV0tLTsKLy8gICAgIH0KLy8gICB9Ci8vICAgCi8vICAgaW50IHF1ZXJ5KGludCBhLCBpbnQgYiwgaW50IHQpIHsKLy8gICAgIGludCBpLCBpaSwgeCwgYWEsIGJiOwovLyAgICAgaW50IHZhbCwgY250OwovLyAgICAgdmVjdG9yPGludD4ga29obzsKLy8gCi8vICAgICBiKys7Ci8vIAovLyAgICAgaWYoYi1hIDwgMTAwMCl7Ci8vIAovLyAgICAgICBjbnQgPSAwOwovLyAgICAgICByZXAoaSxhLGIpewovLyAgICAgICAgIGlmKGNudD09MCl7Ci8vICAgICAgICAgICB2YWwgPSBBW2ldOwovLyAgICAgICAgICAgY250Kys7Ci8vICAgICAgICAgfSBlbHNlIGlmKHZhbD09QVtpXSl7Ci8vICAgICAgICAgICBjbnQrKzsKLy8gICAgICAgICB9IGVsc2UgewovLyAgICAgICAgICAgY250LS07Ci8vICAgICAgICAgfQovLyAgICAgICB9Ci8vICAgICAgIGlmKGNudD09MCkgcmV0dXJuIC0xOwovLyAgICAgICAKLy8gICAgICAgY250ID0gMDsKLy8gICAgICAgcmVwKGksYSxiKSBpZih2YWw9PUFbaV0pIGNudCsrOwovLyAgICAgICBpZihjbnQgPj0gdCkgcmV0dXJuIHZhbDsKLy8gICAgICAgcmV0dXJuIC0xOwovLyAgICAgICAKLy8gICAgIH0KLy8gCi8vICAgICBhYSA9IChhIC8rIE0pICogTTsKLy8gICAgIGJiID0gKGIgLyBNKSAqIE07Ci8vIAovLyAgICAgaWYoYSAhPSBhYSl7Ci8vICAgICAgIGkgPSBxdWVyeShhLGFhLTEsMCk7Ci8vICAgICAgIGlmKGk+PTApIGtvaG8ucHVzaF9iYWNrKGkpOwovLyAgICAgfQovLyAgICAgaWYoYiAhPSBiYil7Ci8vICAgICAgIGkgPSBxdWVyeShiYixiLTEsMCk7Ci8vICAgICAgIGlmKGk+PTApIGtvaG8ucHVzaF9iYWNrKGkpOwovLyAgICAgfQovLyAgICAgcmVwKGksYWEvTSxiYi9NKSBrb2hvLnB1c2hfYmFjayhtdmFsW2ldKTsKLy8gICAgIHNvcnQoa29oby5iZWdpbigpLCBrb2hvLmVuZCgpKTsKLy8gCi8vICAgICByZXAoaWksa29oby5zaXplKCkpewovLyAgICAgICBpZihpaT4wICYmIGtvaG9baWldPT1rb2hvW2lpLTFdKSBjb250aW51ZTsKLy8gICAgICAgeCA9IGtvaG9baWldOwovLyAKLy8gICAgICAgY250ID0gMDsKLy8gICAgICAgcmVwKGksYSxhYSkgaWYoQVtpXT09eCkgY250Kys7Ci8vICAgICAgIHJlcChpLGFhL00sYmIvTSkgaWYobXBbaV0uY291bnQoeCkpIGNudCArPSBtcFtpXVt4XTsKLy8gICAgICAgcmVwKGksYmIsYikgaWYoQVtpXT09eCkgY250Kys7Ci8vIAovLyAgICAgICBpZihjbnQgPj0gdCkgcmV0dXJuIHg7Ci8vICAgICB9Ci8vIAovLyAgICAgcmV0dXJuIC0xOwovLyAgIH0KLy8gfTsK