#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int count(int k , vector<int>& arr){
int i=0;
int j=0;
unordered_map<int,int> mpp;
int ans=0;
int n = arr.size();
while(j<n){
mpp[arr[j]]++;
while(mpp.size()>k){
mpp[arr[i]]--;
if(mpp[arr[i]]==0){
mpp.erase(arr[i]);
}
i++;
}
ans+=(j-i+1);
j++;
}
return ans;
}
int main() {
// your code goes here
int n;
cin>>n;
vector<int> arr(n);
for(int i=0;i<n;i++){
cin>>arr[i];
}
int tot = n*(n+1)/2;
int v=0;
if(tot%2==0){
v=tot/2;
}
else{
v=(tot+1)/2;
}
int low=1;
int high = n;
int ans=0;
while(low<=high){
int mid = (low+high)/2;
if(count(mid,arr)>=v){
ans=mid;
high=mid-1;
}
else{
low = mid+1;
}
}
cout<<ans<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBjb3VudChpbnQgayAsIHZlY3RvcjxpbnQ+JiBhcnIpewoJaW50IGk9MDsKCWludCBqPTA7Cgl1bm9yZGVyZWRfbWFwPGludCxpbnQ+IG1wcDsKCWludCBhbnM9MDsKCWludCBuID0gYXJyLnNpemUoKTsKCQoJCgl3aGlsZShqPG4pewoJCW1wcFthcnJbal1dKys7CgkJd2hpbGUobXBwLnNpemUoKT5rKXsKCQkJbXBwW2FycltpXV0tLTsKCQkJaWYobXBwW2FycltpXV09PTApewoJCQkJbXBwLmVyYXNlKGFycltpXSk7CgkJCX0KCQkJaSsrOwoJCX0KCQlhbnMrPShqLWkrMSk7CgkgICAgaisrOwoJICAgIAoJfQoJcmV0dXJuIGFuczsKCQp9CgoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQgbjsKCWNpbj4+bjsKCXZlY3RvcjxpbnQ+IGFycihuKTsKCQoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJY2luPj5hcnJbaV07Cgl9CgkKCWludCB0b3QgPSBuKihuKzEpLzI7CglpbnQgdj0wOwoKCWlmKHRvdCUyPT0wKXsKCQl2PXRvdC8yOwoJfQoJZWxzZXsKCQl2PSh0b3QrMSkvMjsKCX0KCQoJaW50IGxvdz0xOwoJaW50IGhpZ2ggPSBuOwoJaW50IGFucz0wOwoJCgl3aGlsZShsb3c8PWhpZ2gpewoJCWludCBtaWQgPSAobG93K2hpZ2gpLzI7CgoJCWlmKGNvdW50KG1pZCxhcnIpPj12KXsKICAgICAgICAgICAgIGFucz1taWQ7CiAgICAgICAgICAgICBoaWdoPW1pZC0xOwogICAgICAgICAgICAgCgkJfQoJCWVsc2V7CgkJCWxvdyA9IG1pZCsxOwoJCX0KCX0KCQoJY291dDw8YW5zPDxlbmRsOwoJCgkKCQoJcmV0dXJuIDA7Cn0=