#include <bits/stdc++.h>

using namespace std;

//begin of def
#define fastio ios_base::sync_with_stdio(false);cin.tie(0)
#define endl '\n'

using lli = long long int;
using ulli = unsigned long long int;
using Ld = long double;
using pii = pair<int, int>;
using pll = pair<lli, lli>;
using pld = pair<Ld, Ld>;
#define X first
#define Y second

#define rep(I, S, E) for(int I = (S); I < (E); I++)
#define repq(I, S, E) for(int I = (S); I <= (E); I++)

#define pb push_back
#define epb emplace_back

#define ALL(X) X.begin(), X.end()
//end of def

vector<lli> v;

int main(){
    fastio;
    vector<lli> p;
    lli test = 1;
    repq(i, 2, 50){
        bool f = true;
        rep(j, 2, i){
            if(i % j == 0){
                f = false;
                break;
            }
        }
        if(f){
            p.pb(i);
            test *= i;
        }
    }
    v.resize(p.size());

    int n;
    cin >> n;
    rep(i, 0, n){
        int k;
        cin >> k;
        rep(j, 0, p.size()){
            if(k % p[j] == 0)
                v[j] |= (1LL << i);
        }
    }
    lli mn = 4e18;
    rep(t, 1, 1LL << p.size()){
        lli x = 0, mul = 1;
        rep(j, 0, p.size()){
            if(t & (1LL << j)){
                x |= v[j];
                mul *= p[j];
            }
        }
        if(x == (1LL << n) - 1){
            mn = min(mn, mul);
        }
    }
    cout << mn;

    return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long lint;
#define rep(i,n) for(lint (i)=0;(i)<(n);(i)++)
#define repp(i,m,n) for(lint (i)=(m);(i)<(n);(i)++)
#define repm(i,n) for(lint (i)=(n-1);(i)>=0;(i)--)
#define INF (1ll<<60)
#define all(x) (x).begin(),(x).end()
const lint MOD =1000000007;
//const lint MOD=998244353;
const lint MAX = 4000000;
using Graph =vector<vector<lint>>;
typedef pair<lint,lint> P;
typedef map<lint,lint> M;
#pragma GCC optimize("Ofast")
#define chmax(x,y) x=max(x,y)
#define chmin(x,y) x=min(x,y)
 
 
lint fac[MAX], finv[MAX], inv[MAX];
 
void COMinit() 
{
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (lint i = 2; i < MAX; i++)
    {
        fac[i] = fac[i - 1] * i % MOD;
        inv[i] = MOD - inv[MOD % i] * (MOD / i) % MOD;
        finv[i] = finv[i - 1] * inv[i] % MOD;
    }
}
 
long long COM(lint n, lint k)
{
    if (n < k)
        return 0;
    if (n < 0 || k < 0)
        return 0;
    return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;
}
 
lint primary(lint num)
{
    if (num < 2) return 0;
    else if (num == 2) return 1;
    else if (num % 2 == 0) return 0;
 
    double sqrtNum = sqrt(num);
    for (int i = 3; i <= sqrtNum; i += 2)
    {
        if (num % i == 0)
        {
            return 0;
        }
    }
 
    return 1;
}
   long long modpow(long long a, long long n, long long mod) {
    long long res = 1;
    while (n > 0) {
        if (n & 1) res = res * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return res;
}
    lint lcm(lint a,lint b){
        return a/__gcd(a,b)*b;
    }
     lint gcd(lint a,lint b){
        return __gcd(a,b);
    }


    int main(){
        lint n,d,h;
        cin>>n>>d>>h;
        P p[n];
     double ans=0;
        rep(i,n){
            lint a,b;
            cin>>a>>b;
            long double kata=(double)(h-b)/(d-a);
            ans=max(ans, double(h-kata*d));

            
        }


    printf("%.12f\n",ans);



        }
        
       


    

      