//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define file "o"
#define ff(i,a,b) for (int i=(a); i<=(b); ++i)
#define nl "\n"
#define pb emplace_back
using pii = pair<int,int>;
inline void rf() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
if (fopen(file".inp","r")) {
freopen(file".inp","r",stdin);
freopen(file".out","w",stdout);
}
}
int main() {
rf();
int n;
if(!(cin>>n)) return 0;
vector<pii> v; v.reserve(n);
ff(i,1,n){ int x; cin>>x; v.pb(x,i); }
sort(v.begin(), v.end()); // tăng dần theo giá trị
// danh sách liên kết các chỉ số còn sống: 1..n
vector<int> L(n+2), R(n+2);
L[0]=0; R[0]=1;
ff(i,1,n){ L[i]=i-1; R[i]=i+1; }
R[n]=n+1; L[n+1]=n;
// đếm khoảng cách giữa hai chỉ số còn sống kề nhau
vector<int> cnt(n+2,0);
if(n>=2) cnt[1]=n-1;
int mx = (n>=2?1:0);
auto add_cnt = [&](int d, int delta){
if (d<=0 || d>n) return;
cnt[d] += delta;
if (delta>0 && d>mx) mx=d;
};
auto shrink_mx = [&](){
while (mx>0 && cnt[mx]==0) --mx;
};
auto del = [&](int i){
int l=L[i], r=R[i];
if (l>=1) add_cnt(i-l, -1);
if (r<=n) add_cnt(r-i, -1);
if (l>=1 && r<=n) add_cnt(r-l, +1);
// unlink i
R[l]=r; L[r]=l;
};
int j=0;
ff(i,1,n){
while (j<n && v[j].first < i) {
del(v[j].second);
++j;
}
shrink_mx(); // đảm bảo mx là khoảng cách lớn nhất hiện tại
if (mx <= i) { // điều kiện tương đương với *s.rbegin() <= i trước đây
cout << i;
return 0;
}
}
return 0;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAibyIKI2RlZmluZSBmZihpLGEsYikgZm9yIChpbnQgaT0oYSk7IGk8PShiKTsgKytpKQojZGVmaW5lIG5sICJcbiIKI2RlZmluZSBwYiBlbXBsYWNlX2JhY2sKdXNpbmcgcGlpID0gcGFpcjxpbnQsaW50PjsKCmlubGluZSB2b2lkIHJmKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGlmIChmb3BlbihmaWxlIi5pbnAiLCJyIikpIHsKICAgICAgICBmcmVvcGVuKGZpbGUiLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKGZpbGUiLm91dCIsInciLHN0ZG91dCk7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgcmYoKTsKICAgIGludCBuOyAKICAgIGlmKCEoY2luPj5uKSkgcmV0dXJuIDA7CiAgICB2ZWN0b3I8cGlpPiB2OyB2LnJlc2VydmUobik7CiAgICBmZihpLDEsbil7IGludCB4OyBjaW4+Png7IHYucGIoeCxpKTsgfQogICAgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpOyAvLyB0xINuZyBk4bqnbiB0aGVvIGdpw6EgdHLhu4sKCiAgICAvLyBkYW5oIHPDoWNoIGxpw6puIGvhur90IGPDoWMgY2jhu4kgc+G7kSBjw7JuIHPhu5FuZzogMS4ubgogICAgdmVjdG9yPGludD4gTChuKzIpLCBSKG4rMik7CiAgICBMWzBdPTA7IFJbMF09MTsKICAgIGZmKGksMSxuKXsgTFtpXT1pLTE7IFJbaV09aSsxOyB9CiAgICBSW25dPW4rMTsgTFtuKzFdPW47CgogICAgLy8gxJHhur9tIGtob+G6o25nIGPDoWNoIGdp4buvYSBoYWkgY2jhu4kgc+G7kSBjw7JuIHPhu5FuZyBr4buBIG5oYXUKICAgIHZlY3RvcjxpbnQ+IGNudChuKzIsMCk7CiAgICBpZihuPj0yKSBjbnRbMV09bi0xOwogICAgaW50IG14ID0gKG4+PTI/MTowKTsKCiAgICBhdXRvIGFkZF9jbnQgPSBbJl0oaW50IGQsIGludCBkZWx0YSl7CiAgICAgICAgaWYgKGQ8PTAgfHwgZD5uKSByZXR1cm47CiAgICAgICAgY250W2RdICs9IGRlbHRhOwogICAgICAgIGlmIChkZWx0YT4wICYmIGQ+bXgpIG14PWQ7CiAgICB9OwogICAgYXV0byBzaHJpbmtfbXggPSBbJl0oKXsKICAgICAgICB3aGlsZSAobXg+MCAmJiBjbnRbbXhdPT0wKSAtLW14OwogICAgfTsKCiAgICBhdXRvIGRlbCA9IFsmXShpbnQgaSl7CiAgICAgICAgaW50IGw9TFtpXSwgcj1SW2ldOwogICAgICAgIGlmIChsPj0xKSBhZGRfY250KGktbCwgLTEpOwogICAgICAgIGlmIChyPD1uKSBhZGRfY250KHItaSwgLTEpOwogICAgICAgIGlmIChsPj0xICYmIHI8PW4pIGFkZF9jbnQoci1sLCArMSk7CiAgICAgICAgLy8gdW5saW5rIGkKICAgICAgICBSW2xdPXI7IExbcl09bDsKICAgIH07CgogICAgaW50IGo9MDsKICAgIGZmKGksMSxuKXsKICAgICAgICB3aGlsZSAoajxuICYmIHZbal0uZmlyc3QgPCBpKSB7IAogICAgICAgICAgICBkZWwodltqXS5zZWNvbmQpOyAKICAgICAgICAgICAgKytqOwogICAgICAgIH0KICAgICAgICBzaHJpbmtfbXgoKTsgICAgICAgICAgICAgICAgLy8gxJHhuqNtIGLhuqNvIG14IGzDoCBraG/huqNuZyBjw6FjaCBs4bubbiBuaOG6pXQgaGnhu4duIHThuqFpCiAgICAgICAgaWYgKG14IDw9IGkpIHsgICAgICAgICAgICAgIC8vIMSRaeG7gXUga2nhu4duIHTGsMahbmcgxJHGsMahbmcgduG7m2kgKnMucmJlZ2luKCkgPD0gaSB0csaw4bubYyDEkcOieQogICAgICAgICAgICBjb3V0IDw8IGk7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cg==