#include <stdio.h>

int max(int a, int b) { if (a >= b) return a; else return b; }

int main() {

int n;
scanf("%d", &n);
int a[100000];
int len = 1;
int len_max = 1;
int flag = 0;
for (int i = 0; i < n - 1; i++) {
    scanf("%d", &a[i]);
}

getchar();//无用
for (int i = 0; i < n - 2; i++) {
    for (int j = i + 1; j <= n - 2; j++) {
        if ((a[i] + 1) == a[j]) {
            len++;
            len_max = max(len, len_max);
            break;
        } else {
            flag = 1;
            //len_max = max(len, len_max);//只能计算最后一个顺子前面的顺子最大的
            len = 1;//最后一个若是顺子就记不了
            break;
        }
    }
}
if (flag == 1) {
    printf("%d", len_max);
} else if (flag == 0) {
    printf("%d", n - 1);
}

return 0;

}

#include <stdio.h>

int main() {

int n;
scanf("%d", &n);
int a[100000];
for (int i = 0; i < n - 1; i++) {
    scanf("%d", &a[i]);
}

int max_len = 1; // 至少1个元素***
int current_len = 1;
//单次循环就能解决问题
for (int i = 1; i < n - 1; i++) { // 从第2个元素开始遍历***
    if (a[i] == a[i - 1] + 1) {
        current_len++;
        max_len = current_len > max_len ? current_len : max_len;
    } else {
        current_len = 1; // 不连续时重置当前长度***
    }
}
printf("%d\n", max_len);
return 0;

}