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 Scala (2.11.7) (judge verdict: Time Limit Exceeded)

object Main extends App {

  import scala.math.max
  import scala.annotation.tailrec

  val n = scala.io.StdIn.readLine.toInt
  val a = scala.io.StdIn.readLine.split(" ").map(_.toInt)

  @tailrec
  def gcd(x: Int, y: Int): Int = {
    if (y == 0) {
      x
    } else
      gcd(y, x % y)
  }

  var rr = List(a(0))
  var ll = List(a.last)
  (1 until n).foreach { i =>
    rr = gcd(rr.head, a(i)) :: rr

    ll = gcd(ll.head, a(n - 1 - i)) :: ll

  }

  var ans = List(rr(1), ll(1)).max

  rr = rr.reverse

  (1 until n - 1).foreach { i =>
    ans = max(ans, gcd(rr(i - 1), ll(i + 1)))
  }

  println(ans)
}