#include <cstdio>
using namespace std;
FILE *f, *g;
int n;
int v[1001], kCiur;
bool p[1001];
int ap[1001];
int apPr[1001];
int rez[100001];
int p2[510][10001];
int stk[200];
bool apProd[1001];
int scad[100001];
inline int mxa(int a, int b)
{
return (a > b ? a : b);
}
void ciur()
{
int i, j;
int n = 1000;
p[0] = p[1] = 1;
for(i = 4; i <= n; i += 2)
p[i] = 1;
for(i = 3; i * i <= n; i += 2)
{
if(p[i] == 0)
{
for(j = i * i; j <= n; j += i * 2)
p[j] = 1;
}
}
v[++ kCiur] = 2;
for(i = 3; i <= n; i += 2)
{
if(p[i] == 0)
v[++ kCiur] = i;
}
}
void readFile()
{
f = fopen("indep.in", "r");
fscanf(f, "%d", &n);
int i, nr;
for(i = 1; i <= n; i ++)
{
fscanf(f, "%d", &nr);
ap[nr] ++;
}
fclose(f);
}
void aduna(int a[], int b[])
{
int i;
int mx = mxa(a[0], b[0]), t = 0;
for(i = 1; i <= mx || (t > 0); i ++)
{
t = a[i] + b[i] + t;
a[i] = t % 10;
t /= 10;
}
a[0] = i - 1;
}
void scade(int a[], int b[])
{
int i;
int t = 0;
for(i = b[0] + 1; i <= a[0]; i ++)
b[i] = 0;
for(i = 1; i <= a[0]; i ++)
{
a[i] = a[i] - (b[i] + t);
if(a[i] < 0)
t = 1, a[i] += 10;
else
t = 0;
}
while(a[a[0]] == 0 && a[0] > 0)
a[0] --;
}
void adunaScalar(int a[], int nr)
{
int b[9999] = {1, nr};
aduna(a, b);
}
void scadeScalar(int a[], int nr)
{
int b[9999] = {1, nr};
scade(a, b);
}
void copyV(int a[], int b[])
{
int i;
for(i = 0; i <= b[0]; i ++)
a[i] = b[i];
}
void getP2()
{
p2[0][0] = 1;
p2[0][1] = 1;
p2[1][0] = 1;
p2[1][1] = 2;
int i;
for(i = 2; i <= 505; i ++)
{
copyV(p2[i], p2[i - 1]);
aduna(p2[i], p2[i]);
}
}
int prod = 1;
void bkt(int k)
{
if(prod <= 1000)
{
// printf("*%d %d\n", stk[k], k);
int i;
for(i = stk[k - 1] + 1; i <= kCiur; i ++)
{
stk[k] = i;
prod *= v[stk[k]];
// printf("%d %d %d\n", prod, stk[k], k);
if(prod <= 1000)
{
//apProd[prod] = 1;//, printf("%d %d\n", prod, apPr[prod]);
int sign;
if(k % 2 == 1)
sign = -1;
else
sign = 1;
if(sign == 1)
{
aduna(rez, p2[apPr[prod]]);
scadeScalar(rez, 1);
// scrie(rez);
}
else
{
aduna(scad, p2[apPr[prod]]);
// scrie(scad);
scadeScalar(scad, 1);
// scrie(scad);
}
bkt(k + 1);
}
prod /= v[stk[k]];
}
}
}
void descAp(int nr, int i)
{
int j;
}
void getAp()
{
int i, j;
for(i = 1; i <= 1000; i ++)
{
for(j = i; j <= 1000; j += i)
apPr[i] += ap[j];
}
}
void solve()
{
ciur();
getP2();
getAp();
bkt(1);
aduna(rez, p2[n]);
scadeScalar(rez, 1);
scade(rez, scad);
}
void printFile()
{
g = fopen("indep.out", "w");
if(rez[0] == 0)
rez[0] = 1, rez[1] = 0;
int i;
for(i = rez[0]; i >= 1; i --)
fprintf(g, "%d", rez[i]);
fclose(g);
}
int main()
{
readFile();
solve();
printFile();
return 0;
}