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