N = gets.to_i
a = []
a = gets.split.map(&:to_i)

# 左端からGCDを累積していく
l = []
l[0] = 0
1.upto(N) do |i|
  # i番目以下のgcd = i-1番目以下のgcdとa[i]のgcd(lは1からスタートなので注意)
  l[i] = l[i-1].gcd(a[i-1])
end

# 右端からGCDを累積していく
r = []
r[N] = 0
(N-1).downto(0) do |i|
  # i番目以上のgcd = i+1番目以上のgcdとa[i]のgcd
  r[i] = r[i+1].gcd(a[i])
end

"ここまでO(NlogA1+NlogAn)"

m = 0
# ここもO(N)なのでボトルネックがO(N^2)にならないので耐え
N.times do |i|
  # 自分より左の全gcdと右の全gcdのgcd
  # 上で累積のgcdを計算しているのでこれはO(1)で取り出せる
  g = l[i].gcd(r[i+1])
  m = [g, m].max
end

puts m