#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <iostream>
#include <string>
#include <set>
#include <map>

using namespace std;

const int N=int(2e6)+2;
bool is[N];
int prv[N],d,n,a[200100];
int ans[N];
int s[1000],top,x,no,num[1000],so,mu,cur;
pair<int,int> v[1000];
long long kq=0LL;

int main(){
    for(int i=4;i<N;i+=2){
        is[i]=1;prv[i]=2;
    }
    for(int i=3;i<N;i+=2) if (!is[i]) for(d=i+i;d<N;d+=i){
        if (!prv[d]) prv[d]=i;
        is[d]=1;
    }
    scanf("%d",&n);
    int i,j,k;
    for(i=0;i<n;++i){
        scanf("%d",&x);
        if (x==1){continue;}
        top=0;
        while (x>1){
            if (!is[x]){s[top++]=x;break;}
            s[top++]=prv[x];
            x/=prv[x];
        }
        sort(s,s+top);
        no=0;
        v[no++]=make_pair(s[0],1);
        for(j=1;j<top;++j) if (s[j]!=s[j-1]) v[no++]=make_pair(s[j],1);
        else v[no-1].second++;
        so=cur=1;
        num[0]=1;
        for(j=0;j<no;++j){
            cur=so;mu=1;
            while (v[j].second--){
                mu*=v[j].first;
                for(k=0;k<cur;++k) num[k+so]=mu*num[k];
                so+=cur;
            }
            cur=so;
        }
        for(j=0;j<so;++j) ans[num[j]]++;
    }
    kq=1LL*n;
    for(int i=1;i<N;++i) if (ans[i]>1) kq=max(kq,1LL*i*ans[i]);
    cout<<kq;
    return 0;
}
