#include<stdio.h>
#include<math.h>
void ad(int *A, int *B)
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void sc(int *A, int *B)
{
int i, t = 0;
for (i = 1; i <= A[0]; i++)
A[i] += (t = (A[i] -= B[i] + t) < 0) * 10;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
void inm(int *A, int B)
{
int i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
int AA[1015],UNU[4]={1,1},res[1015],A[1015],ok2,l,p,P[1013],nrf,aux,ok,d,m,n,i,v[1003],max,j,a[1003];
char ap[1011],t[1016];
int main(){
FILE *f=fopen("indep.in","r");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
if(v[i]>max)
max=v[i];
ap[v[i]]=1;
}
fclose(f);
for(i=1;i<=1005;i++)
for(j=i;j<=1005;j+=i)
if(ap[j])
a[i]++;
for(i=2;i<=1005;i++){
if(!t[i])
for(j=i+i;j<=1005;j+=i)
t[j]=1;
}
p=0;
for(i=2;i<=1005;i++)
if(!t[i]){
p++;
P[p]=i;
}
for(i=1;i<=max;i++){
if(a[i]>1){
nrf=0;
aux=i;
ok=1;
d=1;
m=0;
while(aux!=1&&d<=p){
ok2=1;
m=0;
while(!(aux%P[d])){
if(ok2)
nrf++;
m++;
aux/=P[d];
}
if(m>1){
ok=0;
break;
}
d++;
}
if(ok){
if(aux>1)
nrf++;
if(nrf%2==1){
A[0]=1;
A[1]=1;
for(l=2;l<=100;l++){
A[l]=0;
AA[l]=0;
}
for(l=1;l<=a[i];l++)
inm(A,2);
sc(A,UNU);
aux=a[i];
AA[0]=0;
AA[1]=0;
while(aux!=0){
AA[0]++;
AA[AA[0]]=aux%10;
aux/=10;
}
sc(A,AA);
sc(res,A);
}
else{
A[0]=1;
A[1]=1;
for(l=2;l<=100;l++){
A[l]=0;
AA[l]=0;
}
a[i]=1000;
for(l=1;l<=a[i];l++)
inm(A,2);
sc(A,UNU);
aux=a[i];
AA[0]=0;
AA[1]=0;
while(aux!=0){
AA[0]++;
AA[AA[0]]=aux%10;
aux/=10;
}
sc(A,AA);
ad(res,A);
}
}
}
}
FILE *g=fopen("indep.out","w");
for(i=res[0];i>=1;i--)
fprintf(g,"%d",res[i]);
fclose(g);
return 0;
}