package main

//输入描述:
//第一行一个整数N,表示数组长度
//第二行N个整数,分别表示数组内的元素
//输出描述:
//输出一个整数,表示最大可整合子数组的长度
import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	var (
		N        int
		inputArr []int
	)
	input := bufio.NewScanner(os.Stdin)
	input.Scan() //读取第一行
	N, _ = strconv.Atoi(input.Text())
	inputArr = make([]int, N)
	input.Scan()
	intBuffer := strings.Split(input.Text(), " ") //整体读取第二行
	for i := 0; i < N; i++ {
		inputArr[i], _ = strconv.Atoi(intBuffer[i])
	}
	fmt.Println(getLIL(inputArr))
}

func getLIL(arr []int) int {
	res := 0
	if len(arr) <= 1 {
		return len(arr)
	}
	for i := 0; i < len(arr); i++ {
		hm := map[int]int{}
		max, min := arr[i], arr[i]
		for j := i; j < len(arr); j++ {
			if _, ok := hm[arr[j]]; ok {
				break
			}
			hm[arr[i]]++
			max = Max(max, arr[j])
			min = Min(min, arr[j])
			if max-min == j-i {
				res = Max(res, j-i+1)
			}

		}
	}
	return res

}

//判断是否为最长可整合子数组

func Max(i, j int) int {
	if i < j {
		return j
	}
	return i
}
func Min(i, j int) int {
	if i < j {
		return i
	}
	return j
}