#include <cstdio>
#include <vector>
#include <algorithm>

static const int N = 1e6 + 1;
static const long long INF = 1e16;

int n, a;
std::vector<int> d[N];
long long ans;

int main() {
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);

    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        scanf("%d", &a);

        d[1].push_back(a);

        if (a != 1)
            d[a].push_back(1);

        for (int j = 2; j * j <= a; j++) {
            int b = a / j;

            if (j * b != a)
                continue;

            d[j].push_back(b);

            if (b != j)
                d[b].push_back(j);
        }
    }

    ans = INF;

    for (int i = 1; i < N; i++) {
        if (d[i].size() < 2)
            continue;

        std::nth_element(d[i].begin(), d[i].begin() + 2, d[i].end());

        ans = std::min(ans, (long long)i * d[i][0] * d[i][1]);
    }

    printf("%I64d", ans);

    return 0;
}
