#include<bits/stdc++.h>
const int N=200005;
using namespace std;
int n,a[N],sx[N],sy[N],t,mi,ans;
bool chk(){
	t=0;
	for(int i=1;i<n;i++)
	if(a[i]<=a[i-1]){
		for(;t&&sx[t]>a[i];t--);
		for(int j=a[i];j;j--,t--)
		if(sx[t]==j){
			if(++sy[t]<mi)break;
		}else{sx[++t]=j,sy[t]=1;break;}
		if(sy[t]>=mi||!t)return 0;
	}return 1;
}
int main(){
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	scanf("%d",a+i);
	for(int l=1,r=n;l<=r;){
		mi=l+r>>1;
		chk()?ans=mi,r=mi-1:l=mi+1;
	}printf("%d",ans);
}
