Gena loves sequences of numbers. Recently, he has discovered a new type of sequences which he called an almost arithmetical progression. A sequence is an almost arithmetical progression, if its elements can be represented as:

  * a1 = p, where p is some integer; 
  * ai = ai - 1 + ( - 1)i + 1·q (i > 1), where q is some integer. 



Right now Gena has a piece of paper with sequence b, consisting of n integers. Help Gena, find there the longest subsequence of integers that is an almost arithmetical progression.

Sequence s1, s2, ..., sk is a subsequence of sequence b1, b2, ..., bn, if there is such increasing sequence of indexes i1, i2, ..., ik (1 ≤ i1 < i2 < ... < ik ≤ n), that bij = sj. In other words, sequence s can be obtained from b by crossing out some elements.

Input

The first line contains integer n (1 ≤ n ≤ 4000). The next line contains n integers b1, b2, ..., bn (1 ≤ bi ≤ 106).

Output

Print a single integer — the length of the required longest subsequence.

Examples

Input

2
3 5


Output

2


Input

4
10 20 10 30


Output

3

Note

In the first test the sequence actually is the suitable subsequence. 

In the second test the following subsequence fits: 10, 20, 10.
import java.util.*;
public class Abc {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int ar[] = new int[n];
		HashSet<Integer> set = new HashSet<>();
		for(int i = 0; i < n; i++) {
			ar[i] = in.nextInt();
			set.add(ar[i]);
		}

		ArrayList<Integer> ele = new ArrayList<>(set);
		HashMap<Integer, Integer> map = new HashMap<>();
		int n_u = ele.size();
		for(int i = 0; i < n_u; i++) {
			map.put(ele.get(i), i);
		}

		int maxVal = 1;

		int dp[][] = new int[n_u][n];
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < n_u; j ++) {
				dp[j][i] = 1;
			}
			int index_self = map.get(ar[i]);
			for(int j = i - 1; j >= 0; j --) {
				int index_val = map.get(ar[j]);
				dp[index_val][i] = Math.max(dp[index_val][i], dp[index_self][j] + 1);
				maxVal = Math.max(maxVal, dp[index_val][i]);
			}
		}

		/*for(int i = 0; i < n_u; i++) {
			System.out.print(ele.get(i) + ":");
			for(int j = 0; j < n; j++) {
				System.out.print(dp[i][j] + " ");
			}
			System.out.println();
		}*/

		System.out.println(maxVal);
		
	}
}