object Main extends App {
  val n = scala.io.StdIn.readInt()
  var aInput = scala.io.StdIn.readLine()
  val aArray =  aInput.split(" ").map(_.toInt).toVector
  var max = 0
  def getGcd(aInput: Int, bInput: Int): Int = {
    var tmp = 0
    var a = aInput
    var b = bInput
    while ( {
      tmp = a % b
      tmp != 0
    }) {
      a = b
      b = tmp
    }
    if(b == bInput) {
      0
    } else {
      b
    }
  }
  if(n == 2) {
    max = if (aArray(0) > aArray(1)) aArray(0) else aArray(1)
  } else {
    val lastIndex = aArray.length - 1
    // 最初を起点にした最大公約数リスト
    val list1 = aArray.tail.map(a => getGcd(aArray(0), a)).sorted
    // 最後を起点とした最大公約数リスト
    val list2 = aArray.init.map(a => getGcd(aArray(lastIndex), a)).sorted
    // 最小から二つ目の大きい方
    if (list1(1) > list2(1)) {
      max = list1(1)
    } else {
      max = list2(1)
    }
  }
  print(max)
}