#include<bits/stdc++.h>usingnamespacestd;#define int long long
constintMAXN=2e5+5;intn;inta[MAXN];intd[MAXN];intf[MAXN][2];boolcheck(intmd){memset(f,-1,sizeof(f));f[1][1]=md;for(inti=2;i<=n;i++){if(f[i-1][1]!=-1){intk=f[i-1][1];if(k-d[i]/2>=0){f[i][0]=max(f[i][0],md-d[i]/2);f[i][1]=max(f[i][1],k-d[i]/2);}}if(f[i-1][0]!=-1){intk=f[i-1][0];if(k-d[i]/2>=0){f[i][0]=max(f[i][0],k-d[i]/2);f[i][1]=max(f[i][1],k-d[i]/2);}}}returnf[n][0]!=-1||f[n][1]!=-1;}signedmain(){scanf("%lld",&n);for(inti=1;i<=n;i++)scanf("%lld",&a[i]);for(inti=2;i<=n;i++)d[i]=a[i]-a[i-1];intl=1,r=1e9,mid,ans=-1;while(l<=r){mid=l+r>>1;if(check(mid))r=mid-1,ans=mid;elsel=mid+1;}printf("%lld\n",ans);return0;}