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 JavaScript (node.js v5.12) (judge verdict: Time Limit Exceeded)

//パラメータ値の最大公約数を求める式
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;  
  var modsum3 = 0;
  var i2 = 0;
  //特定の1文字を加えないで最大公約数を求め、その最大を記録する
  for (i=0; i<N ; i++){
    //console.log('-');
	for ( i2 = 0; i2 <N ; i2++) {
      if ( i === i2 ) {
      } else {
        if (modsum2 === 0){
          modsum2 = Number.parseInt(A[i2]);
        }
		modsum2 = gcd(modsum2, Number.parseInt(A[i2]));
        //console.log(modsum2);
      }
    }
    modsum3 = Math.max(modsum2,modsum3);
    modsum2 = 0;
  }
  //console.log("------");
  console.log(Math.max(modsum1,modsum3));
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));