#include<bits/stdc++.h>
using namespace std;
typedef int u;
u getmp(u b[],u l,u r){
u mp=l,o=b[l];
for(u i=l;i<=r;i++) if(b[i]<o) mp=i,o=b[i];
return mp;
}
int main(){
u n;
scanf("%d",&n);
u a[n],p=0,q;
for(u i=0;i<n;i++) scanf("%d",a+i);
sort(a,a+n);
q=a[0],a[0]=0;
for(u i=1;i<n;i++){
if(a[i]==q+1) q=a[i],p++;
else if(a[i]>q+1) q=a[i],p+=2;
a[i]=p;
}
bool m[p+1][n];
u r[n];
memset(m,0,sizeof(m));
memset(r,0,sizeof(r));
u ar,al=0,mp;
m[0][0]=1,r[0]=1;
for(q=1;a[q]==a[q-1];q++)
m[0][q]=1,r[q]=1;
ar=q;
for(u i=q;i<n;i++){
bool h=0;
for(u j=0;j<q;j++)
if(m[a[i]-1][j]&&!m[a[i]][j]){
if(h) al++;
else h=1,ar=al=j;
}
if(h){
mp=getmp(r,al,ar);
r[mp]++,m[a[i]][mp]=1;
}
else m[a[i]][q]=1,r[q]++,q++;
}
cout<<r[getmp(r,0,q-1)];
return 0;
}