#include<iostream>
using namespace std;
struct node{
int val;
struct node *left,*right;
};
int getHeight(node* &root){
if(root==NULL) return 0;
else return max(getHeight(root->left),getHeight(root->right))+1;
}
void rotateRight(node* &root){
node* temp=root->left;
root->left=temp->right;
temp->right=root;
root=temp;
}
void rotateLeft(node* &root){
node* temp=root->right;
root->right=temp->left;
temp->left=root;
root=temp;
}
void rotateLeftRight(node* &root){
rotateLeft(root->left);
rotateRight(root);
}
void rotateRightLeft(node* root){
rotateRight(root->right);
rotateLeft(root);
}
void insert(node* &root,int val){
if(root==NULL){
root=new node();
root->val=val;
root->left=root->right=NULL;
}else if(root->val>val){
insert(root->left,val);
if(getHeight(root->left)-getHeight(root->right)==2){
if(root->left->val>val) rotateRight(root);
else rotateLeftRight(root);
}
}else{
insert(root->right,val);
if(getHeight(root->right)-getHeight(root->left)==2){
if(root->right->val<val) rotateLeft(root);
else rotateRightLeft(root);
}
}
}
int main(){
node* root=NULL;
int N,num;
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%d",&num);
insert(root,num);
}
printf("%d",root->val);
}