//dfs枚举因子+桶排序的思想
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e4+5;
const int pucketmaxn=1e6+5;
int fac[50],p[50],cnt,solve=-1;
bool done[pucketmaxn];
int pow(int a,int b)
{
int ans=1;
while(b)
{
if(b&1) ans=ans*a;
a=a*a;
b>>=1;
}
return ans;
}
void dfs(int pos,int son)
{
if(pos==cnt) {
if(done[son]) {
solve=max(solve,son);
}
else {
done[son]=true;
}
return;
}
for(int i=0;i<=p[pos];i++)
{
dfs(pos+1,son* pow( fac[ pos ] , i ) ) ;
}
return;
}
int main()
{
int n,a[maxn];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
memset(done,false,sizeof(done));
for(int i=0;i<n;i++)
{
cnt=0;
int k=a[i];
for(int j=2;j<=floor( sqrt( k)+0.5 );j++)
{
if(k%j==0) {
fac[cnt]=j;
p[cnt]=0;
while(k%j==0) {
p[cnt]++;
k/=j;
}
cnt++;
}
if(k==1) break;
}
if(k!=1) {
fac[cnt]=k;
p[cnt]=1;
cnt++;
}
//枚举因子
dfs(0,1);
}
printf("%d\n",solve);
return 0;
}