N = gets.to_i
A = gets.split.map &:to_i
L = Array.new(N)
R = Array.new(N)

N.times do |i|
  L[i] = if i.zero? then A[i] else A[i].gcd L[i-1] end
end

(N-1).downto(0) do |i|
  R[i] = if i == N - 1 then A[i] else A[i].gcd R[i+1] end
end

ans = 0
N.times do |i|
  l = if i.zero? then 0 else L[i-1] end
  r = if i == N - 1 then 0 else R[i+1] end
  x = l.gcd(r)
  ans = x if ans < x
end

puts ans