//
期末将至, 赶紧来写个线段树, 停一段时间。
//
线段树, 实现挺简单的, 实现RMQ
//
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 1<<17;
#define INF 1<<30
int n, dat[maxn-1];
void init(int n_)
{
n = 1;
while(n<n_) n*=2;
for(int i = 0; i < 2*n - 1; ++i) dat[i] = INF;
return ;
}
void update(int k, int a)
{
k += n-1;
dat[k] = a;
while(k>0)
{
k = (k-1)/2;
dat[k] = min(dat[2*k+1], dat[2*k+2]);
}
return ;
}
int query(int a, int b, int k, int l, int r)
{
cout << k << " " << l << " " << r << endl;
if(r<=a || b <= l) return INF;
if(a<=l && r <=b) return dat[k];
else
{
int vl = query(a, b, 2*k+1, l, (l+r)/2);
int vr = query(a, b, 2*k+2, (l+r)/2, r);
return min(vl, vr);
}
}
int main()
{
int k;
cin >> k;
init(k);
for(int i = 0; i < k; ++i)
{
int v;
cin >> v;
update(i, v);
}
cout << query(0,k,0,0,n) << endl;
}