There are N integers, A_1, A_2, ..., A_N, written on the blackboard.

You will choose one of them and replace it with an integer of your choice between 1 and 10^9 (inclusive), possibly the same as the integer originally written.

Find the maximum possible greatest common divisor of the N integers on the blackboard after your move.

Constraints

* All values in input are integers.
* 2 \leq N \leq 10^5
* 1 \leq A_i \leq 10^9

Output

Input is given from Standard Input in the following format:


N
A_1 A_2 ... A_N

Output

Print the maximum possible greatest common divisor of the N integers on the blackboard after your move.

Examples

Input

3
7 6 8


Output

2


Input

3
12 15 18


Output

6


Input

2
1000000000 1000000000


Output

1000000000


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;


public class Main {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int[] A = new int[N];
		
		for(int i=0;i<N;i++){
			A[i] = Integer.parseInt(sc.next());
		}
		Arrays.sort(A);
		
		int min_A=A[0];	//Aの中で一番小さい値
		int min_A2=A[1];
		
		 List<Integer> list = new ArrayList<Integer>();

		    for (int i = 1; i * i <= min_A; i++) {  
		        if (min_A % i == 0) {
		            list.add(i);         
		            if (i != min_A / i) {
		                list.add(min_A / i);  
		            }
		        }
		    }
		    for (int i = 1; i * i <= min_A2; i++) {  
		        if (min_A2 % i == 0) {
		            list.add(i);         
		            if (i != min_A2 / i) {
		                list.add(min_A2 / i);  
		            }
		        }
		    }

		
		
		int ans = 1;
	
		for(Iterator<Integer> it = list.iterator(); it.hasNext();){
			int num = it.next();
			boolean flag=false;
			boolean flag_ans=true;
			for(int i=0; i<N;i++){
				if(A[i]%num != 0){
					if(flag){
						flag_ans = false;
						continue;
					}
					flag = true;
				}
			}
			if(flag_ans && ans<num)ans = num;
		
		}
		



		System.out.println(ans);
		
		
		sc.close();
	}
	
}
