#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
#define int long long
const int N = 1e6 + 5;
int n, a[N];
int lim;
namespace sub1 {
void solve() {
vector<int> p; p.reserve(10000000);
for (int i = 1; i <= n; i++) {
p.push_back(a[i]);
for (int j = 2; j * j <= a[i]; j++) {
if (a[i] % j == 0) {
p.push_back(j);
if (a[i] / j != j) p.push_back(a[i] / j);
}
}
}
sort(p.begin(), p.end());
int ans = 1, pre = 1, cnt = 1;
for (int c: p) {
if (c != pre) {
if (cnt >= lim) ans = pre;
cnt = 0, pre = c;
}
cnt++;
}
if (cnt >= lim) ans = pre;
cout << ans;
}
};
int isPrime[N], pr[N];
vector<int> primes;
void sieve(int n) {
isPrime[0] = isPrime[1] = 1;
for (int i = 2; i <= n; i++) if (!isPrime[i]) {
pr[i] = i;
primes.push_back(i);
for (int j = i * i; j <= n; j += i) if (!isPrime[j]) {
isPrime[j] = 1;
pr[j] = i;
}
}
}
namespace sub2 {
int cnt[N];
bool checksub() {
for (int i = 1; i <= n; i++) if (isPrime[a[i]]) return 0;
return 1;
}
void solve() {
for (int i = 1; i <= n; i++) cnt[a[i]]++;
int ans = 1;
for (int p: primes) {
if (cnt[p] >= lim) ans = p;
}
cout << ans;
}
};
namespace sub3 {
int freq[N], cnt[N];
bool checksub() {
for (int i = 1; i <= n; i++) if (a[i] > 1000000) return 0;
return 1;
}
void sieve2(int n) {
for (int i = 2; i <= n; i++) {
for (int j = i; j <= n; j += i) cnt[i] += freq[j];
}
}
void solve() {
for (int i = 1; i <= n; i++) freq[a[i]]++;
sieve2(1000000);
int ans = 1;
for (int i = 2; i <= 1000000; i++) if (cnt[i] >= lim) ans = i;
cout << ans;
}
};
namespace subfull {
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int randint(int l, int r) {
return uniform_int_distribution<int> (l, r) (rng);
}
bool check(int x) {
int cnt = 0;
for (int i = 1; i <= n; i++) if (__gcd(a[i], x) == x) cnt++;
return cnt >= lim;
}
void solve() {
int ans = 1;
while(clock() < 0.8 * CLOCKS_PER_SEC) {
int i = randint(1, n), j = randint(1, n);
int x = __gcd(a[i], a[j]);
if (check(x)) ans = max(ans, x);
}
cout << ans;
}
};
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("RESONANCE.inp")) {
freopen("RESONANCE.inp", "r", stdin);
freopen("RESONANCE.out", "w", stdout);
}
cin >> n;
lim = (n + 1)/ 2;
for (int i = 1; i <= n; i++) cin >> a[i];
sieve(1000000);
// cerr << primes.size();
// if (sub2::checksub()) return sub2::solve(), 0;
if (sub3::checksub()) return sub3::solve(), 0;
if (n <= 100) return sub1::solve(), 0;
return subfull::solve(), 0;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCmNvbnN0IGludCBOID0gMWU2ICsgNTsKaW50IG4sIGFbTl07CmludCBsaW07CgpuYW1lc3BhY2Ugc3ViMSB7CnZvaWQgc29sdmUoKSB7CiAgICB2ZWN0b3I8aW50PiBwOyBwLnJlc2VydmUoMTAwMDAwMDApOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHAucHVzaF9iYWNrKGFbaV0pOwogICAgICAgIGZvciAoaW50IGogPSAyOyBqICogaiA8PSBhW2ldOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFbaV0gJSBqID09IDApIHsKICAgICAgICAgICAgICAgIHAucHVzaF9iYWNrKGopOwogICAgICAgICAgICAgICAgaWYgKGFbaV0gLyBqICE9IGopIHAucHVzaF9iYWNrKGFbaV0gLyBqKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHNvcnQocC5iZWdpbigpLCBwLmVuZCgpKTsKICAgIGludCBhbnMgPSAxLCBwcmUgPSAxLCBjbnQgPSAxOwogICAgZm9yIChpbnQgYzogcCkgewogICAgICAgIGlmIChjICE9IHByZSkgewogICAgICAgICAgICBpZiAoY250ID49IGxpbSkgYW5zID0gcHJlOwogICAgICAgICAgICBjbnQgPSAwLCBwcmUgPSBjOwogICAgICAgIH0KICAgICAgICBjbnQrKzsKICAgIH0KICAgIGlmIChjbnQgPj0gbGltKSBhbnMgPSBwcmU7CiAgICBjb3V0IDw8IGFuczsKfQp9OwoKCmludCBpc1ByaW1lW05dLCBwcltOXTsKdmVjdG9yPGludD4gcHJpbWVzOwp2b2lkIHNpZXZlKGludCBuKSB7CiAgICBpc1ByaW1lWzBdID0gaXNQcmltZVsxXSA9IDE7CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspIGlmICghaXNQcmltZVtpXSkgewogICAgICAgIHByW2ldID0gaTsKICAgICAgICBwcmltZXMucHVzaF9iYWNrKGkpOwogICAgICAgIGZvciAoaW50IGogPSBpICogaTsgaiA8PSBuOyBqICs9IGkpIGlmICghaXNQcmltZVtqXSkgewogICAgICAgICAgICBpc1ByaW1lW2pdID0gMTsKICAgICAgICAgICAgcHJbal0gPSBpOwogICAgICAgIH0KICAgIH0KfQpuYW1lc3BhY2Ugc3ViMiB7CmludCBjbnRbTl07CmJvb2wgY2hlY2tzdWIoKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGlmIChpc1ByaW1lW2FbaV1dKSByZXR1cm4gMDsKICAgIHJldHVybiAxOwp9CnZvaWQgc29sdmUoKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNudFthW2ldXSsrOwogICAgaW50IGFucyA9IDE7CiAgICBmb3IgKGludCBwOiBwcmltZXMpIHsKICAgICAgICBpZiAoY250W3BdID49IGxpbSkgYW5zID0gcDsKICAgIH0KICAgIGNvdXQgPDwgYW5zOwp9Cn07Cm5hbWVzcGFjZSBzdWIzIHsKaW50IGZyZXFbTl0sIGNudFtOXTsKYm9vbCBjaGVja3N1YigpIHsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgaWYgKGFbaV0gPiAxMDAwMDAwKSByZXR1cm4gMDsKICAgIHJldHVybiAxOwp9CnZvaWQgc2lldmUyKGludCBuKSB7CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gaTsgaiA8PSBuOyBqICs9IGkpIGNudFtpXSArPSBmcmVxW2pdOwogICAgfQp9CnZvaWQgc29sdmUoKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGZyZXFbYVtpXV0rKzsKICAgIHNpZXZlMigxMDAwMDAwKTsKICAgIGludCBhbnMgPSAxOwogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gMTAwMDAwMDsgaSsrKSBpZiAoY250W2ldID49IGxpbSkgYW5zID0gaTsKICAgIGNvdXQgPDwgYW5zOwp9Cn07CgpuYW1lc3BhY2Ugc3ViZnVsbCB7Cm10MTk5MzdfNjQgcm5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CmludCByYW5kaW50KGludCBsLCBpbnQgcikgewogICAgcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ+IChsLCByKSAocm5nKTsKfQpib29sIGNoZWNrKGludCB4KSB7CiAgICBpbnQgY250ID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgaWYgKF9fZ2NkKGFbaV0sIHgpID09IHgpIGNudCsrOwogICAgcmV0dXJuIGNudCA+PSBsaW07Cn0Kdm9pZCBzb2x2ZSgpIHsKICAgIGludCBhbnMgPSAxOwogICAgd2hpbGUoY2xvY2soKSA8IDAuOCAqIENMT0NLU19QRVJfU0VDKSB7CiAgICAgICAgaW50IGkgPSByYW5kaW50KDEsIG4pLCBqID0gcmFuZGludCgxLCBuKTsKICAgICAgICBpbnQgeCA9IF9fZ2NkKGFbaV0sIGFbal0pOwogICAgICAgIGlmIChjaGVjayh4KSkgYW5zID0gbWF4KGFucywgeCk7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKfQp9OwpzaWduZWQgbWFpbigpIHsKICAgIGNpbi50aWUoTlVMTCktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpZihpZnN0cmVhbSgiUkVTT05BTkNFLmlucCIpKSB7CiAgICAgICAgZnJlb3BlbigiUkVTT05BTkNFLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIlJFU09OQU5DRS5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4gPj4gbjsKICAgIGxpbSA9IChuICsgMSkvIDI7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgc2lldmUoMTAwMDAwMCk7IAogICAgLy8gY2VyciA8PCBwcmltZXMuc2l6ZSgpOwogICAgLy8gaWYgKHN1YjI6OmNoZWNrc3ViKCkpIHJldHVybiBzdWIyOjpzb2x2ZSgpLCAwOwogICAgaWYgKHN1YjM6OmNoZWNrc3ViKCkpIHJldHVybiBzdWIzOjpzb2x2ZSgpLCAwOwogICAgaWYgKG4gPD0gMTAwKSByZXR1cm4gc3ViMTo6c29sdmUoKSwgMDsKICAgIHJldHVybiBzdWJmdWxsOjpzb2x2ZSgpLCAwOwogICAgcmV0dXJuIDA7Cn0=