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 PHP7 (7.0.15) (judge verdict: Wrong Answer)

<?php
$n = (int)trim(fgets(STDIN));

$input = explode(' ', trim(fgets(STDIN)));
$as = [];
foreach ($input as $v) {
	$as[] = (int)$v;
}
sort($as);

$base = gcd($as[1], $as[0]);
for ($i=2; $i < $n; $i++) { 
	$base = gcd($base, $as[$i]);
}

for ($i=0; $i < $n; $i++) { 
	$as[$i] = (int)($as[$i] / $base);
}
$check1 = $as;
$check2 = $as;
$check3 = $as;
$check4 = $as;

$min = $as[0];
for ($i=1; $i < $n; $i++) { 
	$check = gcd($as[$i], $min);
	if ($check === 1) {
		$check1[0] = $as[$i];
		$check2[$i] = $as[0];
		break;
	}
}
$max = $as[$n-1];
for ($i=0; $i < $n-1; $i++) { 
	$check = gcd($max, $as[$i]);
	if ($check === 1) {
		$check3[$n-1] = $as[$i];
		$check4[$i] = $as[$n-1];
		break;
	}
}
// var_dump($check1);
// var_dump($check2);
sort($check1);
sort($check2);
sort($check3);
sort($check4);
$p1 = gcd($check1[1], $check1[0]);
$p2 = gcd($check2[1], $check2[0]);
$p3 = gcd($check3[1], $check3[0]);
$p4 = gcd($check4[1], $check4[0]);
for ($i=2; $i < $n; $i++) { 
	$p1 = gcd($p1, $check1[$i]);
	$p2 = gcd($p2, $check2[$i]);
	$p3 = gcd($p3, $check3[$i]);
	$p4 = gcd($p4, $check4[$i]);
}

echo $base * max($p1, $p2, $p3, $p4);


function gcd($a, $b){
	$r = $a % $b;
	if ($r === 0) {
		return $b;
	}else{
		return gcd($b, $r);
	}
}