#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int n,a[N],f[N],x,ans=1;
/*
对每一种值,我们只需要记录最左边的那个数字
对每一种可能性,我们只需要放进下一个需要的数字
每一个确切的数字,只会有一个数字去承接他的值
对于一个个建,有很多个值
*/
typedef pair<int,int>PII;
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
cin>>n;
map<int,map<int,int>>mp;
for(int i=1;i<=n;i++){
cin>>x;
if(mp.count(x)){
for(auto [B,len]:mp[x]){
int b=B;
if(b>=0)b=-(b+1);
else b=-(b-1);
mp[x+b][b]=max(mp[x+b][b],len+1);
ans=max(ans,len+1);
}
}
else if(!mp.count(x+1))mp[x+1][1]=1;
}
cout<<ans;
}