#include<bits/stdc++.h>
using namespace std;
struct Node{
int data;
Node* left;
Node* right;
};
vector<int> pre;
Node* newNode(int x){
Node* node=new Node;
node->data=x;
node->left=node->right=NULL;
return node;
}
void L(Node* &root){
Node* temp=root->right;
root->right=temp->left;
temp->left=root;
root=temp;
}
void R(Node* &root){
Node* temp=root->left;
root->left=temp->right;
temp->right=root;
root=temp;
}
int getheight(Node* root){
if(root==NULL) return 0;
return max(getheight(root->left),getheight(root->right))+1;
}
void insert(Node* &root,int v){
if(root==NULL){
root=newNode(v);
return;
}else if(v<root->data){
insert(root->left,v);
int l=getheight(root->left);
int r=getheight(root->right);
if(l-r==2){
if(v<root->left->data)
R(root);
else{
L(root->left);
R(root);
}
}
}else{
insert(root->right,v);
int l=getheight(root->left);
int r=getheight(root->right);
if(r-l==2){
if(v>root->right->data)
L(root);
else{
R(root->right);
L(root);
}
}
}
}
Node* build(vector<int> data){
Node* root=NULL;
for(int i=0;i<data.size();i++){
insert(root,data[i]);
}
return root;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt","r",stdin);
#endif
int n;cin>>n;
vector<int> ppp;ppp.resize(n);
for(int i=0;i<n;i++){
cin>>ppp[i];
}
Node* root=build(ppp);
cout<<root->data<<endl;
return 0;
}