#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> v) {
unordered_map<int, int> cnt;
multiset<int> pq;
const int n = v.size();
int l = 0, r = 0;
int ans = 0;
while (r < n) {
cnt[v[r]]++;
pq.insert(cnt[v[r]]);
while(*pq.rbegin() < r-l-2) {
auto iter = pq.find(cnt[v[l]]);
pq.erase(iter);
cnt[v[l]]--;
pq.insert(cnt[v[l]]);
l++;
}
ans = max(ans, r-l+1);
r++;
}
return ans;
}
int main() {
cout<<solve({-9, 8})<<endl;
cout<<solve({1, 1, -10, 3, -10, 3, -10})<<endl;
cout<<solve({2, 3, 3, 3, 3, 1})<<endl;
cout<<solve({3, 3, 2, 1, 2, 2, 9, 3, 3})<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgc29sdmUodmVjdG9yPGludD4gdikgewoJdW5vcmRlcmVkX21hcDxpbnQsIGludD4gY250OwoJbXVsdGlzZXQ8aW50PiBwcTsKCWNvbnN0IGludCBuID0gdi5zaXplKCk7CglpbnQgbCA9IDAsIHIgPSAwOwoJaW50IGFucyA9IDA7Cgl3aGlsZSAociA8IG4pIHsKCQljbnRbdltyXV0rKzsKCQlwcS5pbnNlcnQoY250W3Zbcl1dKTsKCQl3aGlsZSgqcHEucmJlZ2luKCkgPCByLWwtMikgewoJCQlhdXRvIGl0ZXIgPSBwcS5maW5kKGNudFt2W2xdXSk7CgkJCXBxLmVyYXNlKGl0ZXIpOwoJCQljbnRbdltsXV0tLTsKCQkJcHEuaW5zZXJ0KGNudFt2W2xdXSk7CgkJCWwrKzsKCQl9CgkJYW5zID0gbWF4KGFucywgci1sKzEpOwoJCXIrKzsKCX0KCXJldHVybiBhbnM7Cn0KCmludCBtYWluKCkgewoJY291dDw8c29sdmUoey05LCA4fSk8PGVuZGw7Cgljb3V0PDxzb2x2ZSh7MSwgMSwgLTEwLCAzLCAtMTAsIDMsIC0xMH0pPDxlbmRsOwoJY291dDw8c29sdmUoezIsIDMsIDMsIDMsIDMsIDF9KTw8ZW5kbDsKCWNvdXQ8PHNvbHZlKHszLCAzLCAyLCAxLCAyLCAyLCA5LCAzLCAzfSk8PGVuZGw7CglyZXR1cm4gMDsKfQ==