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.*;
public class Main {
    public static long gcd(long x,long y){
        if(x < y) return gcd(y, x);
        if(y == 0) return x;
        return gcd(y, x % y);
    }
    public static long lcm(long x,long y){                                                              
        return x*y/gcd(x,y);                                                                                                                                                                                                                
    }
    public static long fac(long x){
        if(x==0) return 1;
        return x*fac(x-1);
    }
    public static long per(long x,long y){
        return fac(x)/fac(x-y);      
    }
    public static long com(long x,long y){
        return per(x,y)/fac(y);      
    }
    public static long com2(long x,long y){
        if(y==0 || y==x) return 1;
        if(x < y) return 0;
        return com2(x-1,y-1)+com2(x-1,y);
    }
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();       
		long [] in = new long [a]; 
        long [] l = new long [a+1];
        long [] r = new long [a+1];
        long [] ans = new long [a];
        for(int i=0;i<a;i++){
                             in[i] = sc.nextLong();
                            }
		l[0]= 0;
        r[a]= 0;
        for(int i=1;i<=a;i++){l[i]=gcd(l[i-1],in[i-1]);}
        for(int i=a-1;i>=0;i--){r[i]=gcd(r[i+1],in[i]);}
        for(int i=0;i<a;i++){ans[i]=gcd(l[i],r[i+1]);}
        long b = 0;
        for(int i=0;i<a;i++){b=Math.max(b,ans[i]);                                              
                            }       
		System.out.println(b);
	}
}
