#include<bits/stdc++.h>
#define ll long long int
using namespace std;
int longestConsecutive(const vector<int> &A) {
unordered_map<int,int> mp;
int l1,l2;
for(int i=0;i<A.size();i++) {
if(mp.find(A[i]-1)!=mp.end() || mp.find(A[i]+1)!=mp.end()) {
l1=mp[A[i]-1];
if(mp.find(A[i]+1)!=mp.end())
l2=mp[A[i]+1];
int l=l1+l2+1;
int LB=A[i]-l1;
int RB=A[i]+l2;
mp[LB]=l;
if(mp.find(A[i]+1)!=mp.end())
mp[RB]=l;
mp.insert({A[i],l});
}
else mp[A[i]]=1;
}
int res=mp[A[0]];
for(int i=1;i<A.size();i++) {
res=max(res,mp[A[i]]);
}
return res;
}
int main() {
int n;
cin>>n;
vector<int> a(n);
for(int i=0;i<n;i++)
cin>>a[i];
cout<<"\n"<<longestConsecutive(a);
}