#include<bits/stdc++.h>
#pragma GCC optimize ("Ofast","O2","O3")
#pragma GCC target ("sse4")
using namespace std;
const int MAXN=1e6+2;
set<int>big;
int a[MAXN];
int tl[MAXN],tr[MAXN];
set<int>values;
int n;
unordered_map<int,vector<int> >where;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>n;
    int ans=-2;
    stack<int>st;
    for(int i=1;i<=n;++i)
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        while(!st.empty()&&a[st.top()]<a[i])st.pop();
        if(!st.empty())
        {
            tl[i]=st.top();
        }
        else tl[i]=-(int)1e9;
        st.push(i);
    }
    while(!st.empty())st.pop();
    for(int i=1;i<=n;i++)
    {
        while(!st.empty()&&a[st.top()]<a[i])st.pop();
        if(!st.empty())
        {
            tr[i]=st.top();
        }
        else tr[i]=(int)1e9;
        st.push(i);
    }
    for(int i=1;i<=n;i++)
    {
        if(tl[i]!=(int)-1e9)
        {
            ans=max(ans,a[i]-(tr[i]-i+1));
        }
        if(tr[i]!=(int)1e9)
        {
            ans=max(ans,a[i]-(i-tl[i]+1));
        }
    }
    cout<<ans<<"\n";
return 0;
}
