N = gets.to_i
A = gets.split.map(&:to_i)
L = Array.new(N + 1, 0)
R = Array.new(N + 1, 0)
N.times{|i| L[i + 1] = L[i].gcd(A[i]) }
N.times.reverse_each{|i| R[i] = R[i + 1].gcd(A[i]) }
puts N.times.map{|i| L[i].gcd(R[i + 1]) }.max

