#include <bits/stdc++.h>
using namespace std;
using ll = long long;

ll solve() {
    ll N;
    cin >> N;
    vector<ll> X(N);
    for ( int i = 0; i < N; i++ ) cin >> X[i];
    // 素因数分解 O(x^(1/2))
    auto PrimeFactor = [](ll x) {
        map<ll, ll> pr;
        for ( ll k = 2; k * k <= x; k++ ) {
            while ( x % k == 0 ) {
                pr[k]++;
                x /= k;
            }
        }
        if ( x > 1 ) pr[x]++;
        return pr;
    };
    set<ll> s, sp;
    s.insert(1);
    for ( int i = 0; i < N; i++ ) {
        swap(s,sp);
        s.clear();
        auto ps = PrimeFactor(X[i]);
        for ( auto p : ps ) {
            for ( ll x : sp ) {
                if ( x % p.first != 0 ) {
                    s.insert(x*p.first);
                } else {
                    s.insert(x);
                }
            }
        }
    }
    return *s.begin();
}

int main() {
    auto ans = solve();
    cout << ans << "\n";
    return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
using Graph = vector<vector<long long>>;

template<class T> void chmin(T& a, T b) {
    if (a > b) {
        a = b;
    }
}

const long long INF = 1LL << 60;

int N;

double func (double x, const vector<double> &a) {
    double res = 0;
    for (int i = 0; i < N; ++i) {
        res += x + a[i] - min(2 * x, a[i]);
    }

    return res;
}

int main() {
    cin >> N;
    vector<double> a(N);
    for (int i = 0; i < N; ++i) {
        cin >> a[i];
    }
    sort(a.begin(), a.end());

    double left = 0, right = 1e12;
    while (right - left > 1e-6) {
        double h1 = left + (right - left) / 3;
        double h2 = right - (right - left) / 3;
        if (func(h1, a) < func(h2, a)) {
            right = h2;
        } else {
            left = h1;
        }
    }

    double ans = func(left, a) / N;

    cout << setprecision(12) << ans << endl;

    return 0;
}