#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
using ll = long long;
using vint = vector<int>;
using vll = vector<ll>;
using pint = pair<int, int>;
using vpint = vector<pint>;
template<typename T>
using ordered_set = tree<T, null_type, less<>, rb_tree_tag, tree_order_statistics_node_update>;
#define sz(x) (int)(x).size()
#define all(x) begin(x), end(x)
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rrep(i, n) for (int i = (n)-1, i >= 0; i--)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define RFOR(i, a, b) for (int i = (a)-1, i >= (b); i--)
int sequence(int N, vint A) {
int max_count = 0;
ordered_set<pint> values;
map<int, int> count;
rep(i, N) {
FOR(j, i, N) {
count[A[j]]++; values.insert({A[j], j});
int size = j-i+1;
if (size & 1) {
auto [m, idx] = *values.find_by_order(size/2);
max_count = max(max_count, count[m]);
} else {
auto [m1, idx1] = *values.find_by_order(size/2-1);
max_count = max(max_count, count[m1]);
auto [m2, idx2] = *values.find_by_order(size/2);
max_count = max(max_count, count[m2]);
}
}
values.clear(); count.clear();
}
return max_count;
}