import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] fruits = new int[N];
String[] s = br.readLine();
for(int i=0 ; i<N ;i++){
fruits[i] = Integer.parseInt(s[i]);
}
int leftPointer = 0;
int rightPointer = 0;
int ans = -1;
Map<Integer,Integer> map = new HashMap<>();
//우 포인트가 우측 방향으로 전진한다.
for(int rightPointer = 0 ; rightPointer<N ; rightPointer++){
//지금 위치 초기화 한다.
//getOrDefault로 초기화 하면 된다.
map.put(fruits[rightPointer],map.getOrDefault(fruits[rightPointer],0)+1);
//맵 사이즈가 2를 넘어서면 좌 포인터가 가리키는 곳의 개수를 1씩 줄이이낟. 2가 될때까지 계속하면되니 while 쓰자.
while(map.size()>2){
map.put(fruits[leftPointer],map.get(fruits[leftPointer])-1);
if(map.get(fruits[leftPointer]) == 0){
map.remove(fruits[leftPointer]);
++leftPointer;
}
}
//길이가 최대인지 무지성 갱신하자
ans = Math.max(ans,rightPointer-leftPointer+1);
}
System.out.print(ans);
}
}