#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_set>
using namespace std;
//1,将数组用哈希表存储起来这样可以实现快速查询
//2,从数组的第一个元素开始,如果当前元素为x,那么如果在哈希表中存在x-1时直接跳过此元素
//因为当我们在遍历到x-1时肯定可以采用循环的方式来找到x
//3,如果不存在x-1但是存在x+1我们采用循环的方式来找到所有的连续序列
//4,虽然for循环中嵌套了while循环,但是while循环在整个的遍历中最多遍历n次,所以总体的时间
//复杂度为o(n + n) = o(n);
//5,这个过程大家模拟一下就能理解
int longestConsecutive(vector<int>& nums) {
if (nums.size() == 0) return 0;
unordered_set<int> m(nums.begin(), nums.end());
int maxlen = 1;
int tmp;
for (auto& e : nums) {
tmp = e;
if (m.count(e - 1) == 0) {
tmp = e + 1;
while (m.count(tmp)) {
tmp++;
}
}
maxlen = max(maxlen, tmp - e);
}
return maxlen;
}
int main() {
int N;
while(cin >> N){
vector<int> v(N);
for (int i = 0; i < N; ++i) {
cin >> v[i];
}
cout << longestConsecutive(v)<<endl;;
}
return 0;
}