#include <fstream>
#include <algorithm>
#define DIM 1002
#define infile "indep.in"
#define outfile "indep.out"
using namespace std;
ifstream f(infile);
ofstream g(outfile);
struct data {
int x;
int p;
} a[DIM];
int v[DIM];
bool cmp(const data &a, const data &b) {
return a.p < b.p;
}
int S[3][DIM], P2[DIM][DIM];
int n, k;
int main() {
f >> n;
for (int i = 1; i <= n; ++i)
f >> v[i];
for (int i = 2; i <= 1000; ++i) {
int nr = i, np = 0;
for (int j = 2; j*j <= nr; ++j)
if (nr%j == 0) {
++np;
nr /= j;
if (nr%j == 0) {
nr = -1;
break;
}
}
if (nr != -1) {
if (nr != 1)
++np;
a[++k].x = i;
a[k].p = np;
}
}
sort(a + 1, a + k + 1, cmp);
P2[0][0] = 1;
P2[0][1] = 0;
for (int i = 1; i <= n; ++i) {
int t = 0;
for (int j = 1; j <= P2[i - 1][0]; ++j) {
P2[i][++P2[i][0]] = 2 * P2[i - 1][j] + t;
t = P2[i][P2[i][0]] / 10;
P2[i][P2[i][0]] %= 10;
}
if (t != 0)
P2[i][++P2[i][0]] = 1;
t = 0;
P2[i][1] += 1;
t = P2[i][1] / 10;
P2[i][1] %= 10;
for (int j = 2; j <= P2[i][0] && t!=0; ++j) {
P2[i][j] += 1 + t;
t = P2[i][j] / 10;
P2[i][j] %= 10;
}
if (t != 0)
P2[i][++P2[i][0]] = t;
}
for (int i = 0; i <= P2[n][0]; ++i)
S[1][i] = P2[n][i];
for (int i = 1; i <= k; ++i) {
int nr = 0;
for (int j = 1; j <= n; ++j)
if (v[j] % a[i].x == 0)
++nr;
if (nr == 0)
continue;
if (a[i].p % 2 == 0) {
int t = 0;
int l;
if (P2[nr][0] > S[1][0]) {
for (l = S[1][0] + 1; l <= P2[nr][0];)
S[1][l++] = 0;
S[1][0] = P2[nr][0];
}
else
for (l = P2[nr][0] + 1; l <= S[1][0];)
P2[nr][l++] = 0;
for (l = 1; l <= S[1][0]; l++) {
S[1][l] += P2[nr][l] + t;
t = S[1][l] / 10;
S[1][l] %= 10;
}
if (t)
S[1][++S[1][0]] = t;
}
else {
int t = 0;
int l;
if (P2[nr][0] > S[2][0]) {
for (l = S[2][0] + 1; l <= P2[nr][0];)
S[2][l++] = 0;
S[2][0] = P2[nr][0];
}
else
for (l = P2[nr][0] + 1; l <= S[2][0];)
P2[nr][l++] = 0;
for (l = 1; l <= S[2][0]; l++) {
S[2][l] += P2[nr][l] + t;
t = S[2][l] / 10;
S[2][l] %= 10;
}
if (t)
S[2][++S[2][0]] = t;
}
}
int t = 0;
for (int i = S[2][0] + 1; i <= S[1][0]; ++i)
S[2][i] = 0;
for (int i = 1; i <= S[1][0]; ++i)
S[1][i] += (t = (S[1][i] -= S[2][i] + t)<0) ? 10 : 0;
while (!S[1][S[1][0]])
S[1][0]--;
for (int i = S[1][0]; i>0; --i)
g << S[1][i];
return 0;
}
//This room. This bullet. There's a bullet for everyone. And a time. And a place. Yes... maybe this is how it has to be. - 47