#include<iostream>
using namespace std;
const int N=100010;
int n;
int a[N];
int max1; bool check(long long t)
{
for(int i=0;i<n;i++) if(a[i]>t)
{
t-=a[i]-t;
if(t<0) return false;
}
else
{
if(t>=max1) return true;
t+=t-a[i];
}
return true;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(max1<a[i]) max1=a[i];
}
long long l=0,r=max1; while(l<r)
{
long long mid=(l+r)>>1;
if(check(mid))
r=mid;
else
l=mid+1;
// printf("%d %d\n",l,r);
}
printf("%lld\n",l);
}