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: Accepted)

PROGRAM ATCODER

implicit none
integer :: n,i,r1,r2,b1,b2,c1,c2
integer,allocatable :: a(:),a_l(:),a_r(:),ans(:)

read*, n
allocate(a(n),a_l(n),a_r(n),ans(n))
read*, a(1:n)

a_l(1) = a(1)
a_r(1) = a(n)

do i = 2, n
  b1 = a(i)
  c1 = a_l(i-1)
  b2 = a(n+1-i)
  c2 = a_r(i-1)
  do
    r1 = mod(c1,b1)
    if ( r1 == 0 ) exit
    c1 = b1
    b1 = r1
  end do
  do
    r2 = mod(c2,b2)
    if ( r2 == 0 ) exit
    c2 = b2
    b2 = r2
  end do
  a_l(i) = b1
  a_r(i) = b2
end do

ans(1) = a_r(n-1)
ans(n) = a_l(n-1)

do i = 2, n-1
  c1 = a_l(i-1)
  b1 = a_r(n-i)
  do
    r1 = mod(c1,b1)
    if ( r1 == 0 ) exit
    c1 = b1
    b1 = r1
  end do
  ans(i) = b1
end do

print'(i0)', maxval(ans)

END PROGRAM ATCODER