#include <bits/stdc++.h>
using namespace std;
long long d[9];
int i, n, ans = 1010101010, l[9], m[9];
vector<long long> primes[9];
vector<vector<int> > s;
void add(int a, long long x, int z, int v, vector<int> k) {
  if (v == 1 && !a) {
    k[0]++;
    k.push_back(z);
    s.push_back(k);
    return;
  }
  for (int t = 1; t < k.size(); t++)
    if (m[t] == 0 && x % d[k[t]] == 0) {
      long long b = d[k[t]];
      int num = k[t];
      x /= b;
      m[t] = 1;
      add(a + 1, x, z, v - primes[num].size(), k);
      x *= b;
      m[t] = 0;
    }
  k[0] = k[0] + 1 + v;
  for (int t = k.size() - 1; t > 0; t--)
    if (m[t]) k.erase(k.begin() + t);
  k.push_back(z);
  if (k[0] < ans) s.push_back(k);
}
void go(int x, vector<int> k) {
  if (x == n) {
    int z = k[0];
    if (k.size() > 2) z++;
    ans = min(ans, z);
    return;
  }
  for (int t = 0; t < n; t++)
    if (!l[t]) {
      l[t] = 1;
      s.clear();
      add(0, d[t], t, primes[t].size(), k);
      for (int j = 0; j < s.size(); j++)
        if (s[j][0] < ans) go(x + 1, s[j]);
      l[t] = 0;
    }
}
int main() {
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%I64d", d + i);
  for (i = 0; i < n; i++) {
    long long p = d[i];
    for (long long j = 2; j * j <= p; j != 2 ? j += 2 : j++)
      if (p % j == 0)
        while (p % j == 0) primes[i].push_back(j), p /= j;
    if (p > 1) primes[i].push_back(p);
  }
  vector<int> h;
  h.push_back(0);
  go(0, h);
  printf("%d\n", ans);
  return 0;
}
