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