#include
#include <unordered_map>
#include
using namespace std;
bool is_prime(int num)
{
if (num < 2)
return false;
for (int i = 2; i * i <= num; i++)
{
if (num % i == 0)
return false;
}
return true;
}
vector get_prime_factors(int num)
{
vector res;
for (int i = 2; i <= num; i++)
{
if (is_prime(i) && num % i == 0)
{
res.push_back(i);
while (num % i == 0)
{
num /= i;
}
}
}
return res;
}
int main()
{
int n;
cin >> n;
unordered_map<int, int> count;
int max_count = 0;
int max_factor = 0;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
vector prime_factors = get_prime_factors(num);
for (int factor : prime_factors)
{
count[factor]++;
if (count[factor] > max_count || (count[factor] == max_count && factor < max_factor))
{
max_count = count[factor];
max_factor = factor;
}
}
}
cout << max_factor << endl;
return 0;
}