#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;
}