'use strict'

const INF = 900719925474099; // Number.MAX_SAFE_INTEGER / 10;

//ユークリッド互除法(a,bの大小は気にしなくてOK,最大公約数が返る。)
function gcd(a,b){return b?gcd(b,a%b):a;}


function Main(input){
	let temp = input.trim().split('\n');
	let n = parseInt(temp[0]);
	let a = temp[1].split(' ').map((v)=>parseInt(v));	

	let all = gcd(a[0],a[1]);

	let s = new Set([all,a[0],a[1]]);

	for(let i = 2;i<n;i++){
		console.log('----------------',s,' i:',i);
		let t = new Set();
		//スキップ済みのものと今回のをgcd
		for(let v of s){
			console.log(v);
			v = gcd(v,a[i]);
			if(v>1) t.add(v);
		}
		if(all>1){
			//今回スキップの場合
			t.add(all);
			//全部gcdとった場合
			all = gcd(all,a[i]);
			if(all>1) t.add(all);
		}
		s = t;
	}
	let max = 1;
	for(let v of s){
		if(v>max) max = v;
	}
	//回答出力
	console.log(max);
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));
