//パラメータ値の最大公約数を求める式
function gcd(a, b) {
    if (b === 0){
        return a
    }
    return gcd(b, a % b)
}
//主処理
function Main(input){
  input = input.split("\n");
  inputStr = input[0].split(" ");
  var N = Number.parseInt(inputStr[0]);
  var A = input[1].split(" ");
　var i = 1;
  var min = Number.parseInt(A[0]);
  var modsum1 = Number.parseInt(A[0]);
  //最大公約数を求める
  for (i=1; i<N ; i++){
    modsum1 = gcd(modsum1, Number.parseInt(A[i]));
    if (min > Number.parseInt(A[i])) {
      min = Number.parseInt(A[i]);
    }
  }
  var modsum2 = 0;
  //一番小さな値を1回だけ捨てて、もう一度最大公約数を求める
  for (i=0; i<N ; i++){
    //捨てる処理
    if (Number.parseInt(A[i]) > min) {
      //ゼロ除算防止機能
      if (modsum2=0) {
        modsum2 = Number.parseInt(A[0]);
      }
      modsum2 = gcd(modsum2, Number.parseInt(A[i]));
    } else {
      min = Number.parseInt(A[i]) - 1;
    }
  }
  console.log(Math.max(modsum1,modsum2));
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
