Problem:
Score : 300 points

Problem Statement

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.

Sample Input 1

3
7 6 8

Sample Output 1

2

If we replace 7 with 4, the greatest common divisor of the three integers on the blackboard will be 2, which is the maximum possible value.

Sample Input 2

3
12 15 18

Sample Output 2

6

Sample Input 3

2
1000000000 1000000000

Sample Output 3

1000000000

We can replace an integer with itself.

Solution in Fortran (gfortran v4.8.4) (judge verdict: Runtime Error)

program main
Implicit None
	integer(8)::n,p1,p2,p3,x,y
	integer(8),allocatable::a(:)
	
	read*,n
	allocate(a(n))
	
	read*,a
	
	if(n == 2)then
		print"(i0)",max(a(1),a(2))
		stop
	endif
	
	x = 1 ;y = 2
	call ec(a,n,x,y,p1)
	y = 3
	call ec(a,n,x,y,p2)
	x = 2
	call ec(a,n,x,y,p3)
	
	print"(i0)",max(p1,p2,p3)
end program main

recursive subroutine ec(a,n,p,q,c)
Implicit None
	integer(8)::a(n),n,p,q,c,i,k,t
	
	k = 0
	call euc(a(p),a(q),c)
	if(c ==1) return
	do i = 1,n
		if(mod(a(i),c) /= 0)then
			if(k == 0) t = i
			k = k+1
			if(k > 1)then
				call ec(a,n,p,t,c)
				return
			endif
		endif
	enddo
end subroutine ec

subroutine euc(a1,b1,c)
implicit None
integer(8)::a1,b1,c,a,b
	a = a1
	b = b1
	c = 1
	
	do while (a /=0 .and. b /= 0)
		if (a > b)then
			c = b
			a = mod(a,b)
			else
			c = a
			b = mod(b,a)
		endif
	enddo
end subroutine euc