

#include <bits/stdc++.h>
using
namespace
std;
bool
isPrime(
int
a)
{
if
(a == 1)
return
false
;
if
(a == 2)
return
true
;
for
(
int
i = 2; i <=
sqrt
(a); i++) {
if
(a % i == 0)
return
false
;
}
return
true
;
}
void
count_prime_and_NonPrime(
int
n,
vector<pair<
int
,
int
> >& v)
{
int
p = 0, np = 0;
v.push_back(make_pair(p, np));
for
(
int
i = 1; i <= n; i++) {
if
(isPrime(i))
p++;
else
np++;
v.push_back(make_pair(p, np));
}
}
int
NoOfWays(
int
n,
int
a[])
{
vector<pair<
int
,
int
> > v;
int
mx = 0;
for
(
int
i = 0; i < n; i++) {
mx = max(mx, a[i]);
}
count_prime_and_NonPrime(mx, v);
int
ans = 1;
for
(
int
j = 0; j < n; j++) {
int
prime = v[a[j]].first;
int
nonPrime = v[a[j]].second;
if
(isPrime(j + 1)) {
ans *= nonPrime;
}
else
{
ans *= prime;
}
}
return
ans;
}
int
main()
{
int
N = 5;
int
A[] = { 2, 3, 4, 8, 5 };
cout << NoOfWays(N, A) << endl;
return
0;
}