#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const int maxn=100050;
int n;
int a[maxn],pre[maxn];
ll tr[maxn*10];
inline int lowbit(int x){
	return x&(-x);
}
inline void add(int x){
	for(register int i=x;i<=2*maxn;i+=lowbit(i)){
		tr[i]++;
	}
}
inline ll query(int x){
	ll ans=0;
	for(register int i=x;i>0;i-=lowbit(i)){
		ans+=tr[i];
	}
	return ans;
}
inline bool judge(int x){
	for(register int i=0;i<=2*maxn;i++)tr[i]=0;
	pre[0]=0;
	for(register int i=1;i<=n;i++){
		pre[i]=pre[i-1];
		if(a[i]>=x)pre[i]++;
		else pre[i]--;
	}
	ll cnt=0;
	for(register int i=0;i<=n;i++){
		cnt+=query(pre[i]+maxn);
		add(pre[i]+maxn);
	}
	if(cnt>=(ll)n*(n+1)/4)return 1;
	return 0;
}
int main(){
	int l=0,r=0;
	scanf("%d",&n);
	for(register int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		r=max(a[i],r);
	}
	while(l<=r){
		int m=(l+r)>>1;
		if(judge(m))l=m+1;
		else r=m-1;
	}
	cout<<r<<endl;
}