#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <exception>
using namespace std;
#define PB push_back
#define MP make_pair
#define REP(i,n) for(int i=0;i<(n);++i)
#define FOR(i,l,h) for(int i=(l);i<=(h);++i)
#define DWN(i,h,l) for(int i=(h);i>=(l);--i)
#define CLR(vis,pos) memset(vis,pos,sizeof(vis))
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LINF 1000000000000000000LL
#define eps 1e-8
typedef long long ll;
int a[1000005];
int fun(int *numbers,int index1,int index2){
int res=numbers[index1];
FOR(i,index1+1,index2)
res=min(res,numbers[i]);
return res;
}
int min_num(int *numbers,int len){
int index1=0;
int index2=len-1;
int index_mid=index1;
while(numbers[index1]>=numbers[index2]){
if(index2-index1==1){
index_mid=index2;
break;
}
index_mid=(index1+index2)>>1;
if(numbers[index1]==numbers[index_mid] && numbers[index_mid]==numbers[index2])
return fun(numbers,index1,index2);
if(numbers[index_mid]>=numbers[index2])
index1=index_mid;
else{
if(numbers[index_mid]<=numbers[index1])
index2=index_mid;
}
}
return numbers[index_mid];
}
int main()
{
int n;
while(cin>>n){
REP(i,n)
scanf("%d",&a[i]);
printf("%d\n",min_num(a,n));
}
return 0;
}
09-20
09-20
09-20