#include "sequence.h"
#include "bits/stdc++.h"
//#include <cassert>
using namespace std;
const int MXN = 2e5+5;
int tr[MXN],fr[MXN];
int n;
void upd(int in,int x){
for (;in <= n;in+=in&-in){
tr[in] += x;
}
}
int knj(int k){
int in = 0;
for (int mask = 20;mask >= 0;mask--){
int j = in+(1<<mask);
if (j <= n && tr[j] < k){
in = j;
k -= tr[in];
}
}
return ++in;
}
int sequence(int N,vector <int> a){
n = N;
int p = 0;
for (int l = 0;l < n;l++){
for (int i = 0;i <= n;i++){
tr[i] = 0;
fr[i] = 0;
}
for (int r = l;r < n;r++){
upd(a[r],1);
fr[a[r]]++;
int len = r-l+1;
int m1 = knj((len+1)/2);
int m2 = knj((len+2)/2);
p = max({p,fr[m1],fr[m2]});
}
}
return p;
}
//
//int main() {
// freopen("file.in","r",stdin);
// int N;
// assert(1 == scanf("%d", &N));
//
// std::vector<int> A(N);
// for (int i = 0; i < N; ++i) {
// assert(1 == scanf("%d", &A[i]));
// }
//
// int result = sequence(N, A);
// printf("%d\n", result);
// return 0;
//}