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

<?php
//前提条件$size>=2
$size = fgets(STDIN);
//前提条件$v内の数>=1
$v = fgets(STDIN);
//全データを配列にする
$arrayAll = explode(" ", $v);
//求める最大公約数,1数無視できると考える
$lastMax = 0;

if($size <= 2){
  if($arrayAll[0]>=$arrayAll[1]){
    $lastMax = $arrayAll[0];
  }else{
    $lastMax = $arrayAll[1];
  }
}else{
  for($i=0;$i<$size;$i++){
    //初期化
    $arraySplice = $arrayAll;
    //i番目の要素を削除
    array_splice($arraySplice, $i, 1);
    //途中経過確認用,提出時削除
    //echo implode(",",$arraySplice)."\n";
    //$max初期化、配列内先頭2数の最大公約数を求め、配列内から削除
    $max = gcd($arraySplice[0],$arraySplice[1]);
    array_splice($arraySplice, 0, 2);
    //$maxと配列内の先頭の数との最大公約数を求める
    for($j=0;$j<$size-3;$j++){
      if($lastMax > $max){
        break;
      }
      //途中経過確認用,提出時削除
      //echo gcd($max,$arraySplice[0])."\n";
      if(gcd($max,$arraySplice[0]) > $max){
        $lastMax = gcd($max,$arraySplice[0]);
      }
      $max = gcd($max,$arraySplice[0]);
      array_splice($arraySplice, 0, 1);
    }
    //答え更新
    if($max > $lastMax){
      $lastMax = $max;
    }
  }
}
echo $lastMax;

//ユークリッド互除法
function gcd($a, $b) {
  if ($b === 0){
      return $a;
  }
  return gcd($b, $a % $b);
}