#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
typedef struct TreeNode
{
    int data;
    struct TreeNode*left;
    struct TreeNode*right;
}
TreeNode;
TreeNode*createNode(int v)
{
    TreeNode*n=(TreeNode*)malloc(sizeof(TreeNode));
    if(!n)exit(1);
    n->data=v;
    n->left=n->right=NULL;
    return n;
}
TreeNode*insert(TreeNode*r,int v)
{
    if(!r)
    return createNode(v);
    if(v<r->data)
    r->left=insert(r->left,v);
    else if(v>r->data)
    r->right=insert(r->right,v);
    return r;
}
int findMinimum(TreeNode*r)
{
    if(!r)
    return-1;
    while(r->left)
    r=r->left;
    return r->data;
}
void freeTree(TreeNode*r)
{
    if(!r)
    return;
    freeTree(r->left);
    freeTree(r->right);
    free(r);
}
int main()
{
    int N,h,s;
    TreeNode*root=NULL;
    if(s=scanf("%d",&N)!=1)
    {
        printf("Invalid input\n");
        return 0;
    }
    if(N<1||N>1000)
    {
        printf("Invalid input\n");
        return 0;
    }
    for(int i=0;i<N;i++)
    {
        if(s=scanf("%d",&h)!=1)
        {
            printf("Invalid input\n");
            freeTree(root);
            return 0;
        }
    }
    root=insert(root,h);
}
    if(root)
    {
        printf("%d\n",findMinimum(root));
    }
    freeTree(root);
    return 0;
}