#include <bits/stdc++.h>
using namespace std;
template <typename _T>
inline void _DBG(const char *s, _T x) {
  cerr << s << " = " << x << "\n";
}
template <typename _T, typename... args>
void _DBG(const char *s, _T x, args... a) {
  while (*s != ',') cerr << *s++;
  cerr << " = " << x << ',';
  _DBG(s + 1, a...);
}
const int N = 450444 + 10;
const int K = 5000;
long long n;
int pri[K + 5];
vector<pair<int, int> > fac;
map<int, int> S;
int nodes = 1;
int where[K + 5], cnt[K + 5], dep[N], fat[N], siz[N];
map<pair<int, int>, int> trie[N];
long long start = 0;
long long ans = 0;
void add(int no) {
  int node = 0;
  for (int i = 0; i < (int)(fac).size(); i++) {
    int mydep = dep[node];
    int mynode = node;
    auto [e, c] = fac[i];
    auto it = trie[node].lower_bound({e, 0});
    if (it == trie[node].end() || it->first.first != e) {
      trie[node][{e, c}] = nodes++;
      fac[i].second = 0;
      node = nodes - 1;
      dep[node] = mydep + c;
      fat[node] = mynode;
    } else {
      fac[i].second -= it->first.second;
      node = it->second;
    }
    if (fac[i].second != 0) {
      i--;
    }
  }
  where[no] = node;
}
void dfs(int v, long long up, long long down) {
  ans = min(ans, up + down);
  for (auto p : trie[v]) {
    int e = p.first.first, c = p.first.second, u = p.second;
    long long cc = siz[u];
    dfs(u, up + (n - cc) * c, down - cc * c);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  for (int i = 2; i * i <= K; i++) {
    if (pri[i] != 0) continue;
    for (int j = i * i; j <= K; j += i) {
      if (pri[j] == 0) pri[j] = i;
    }
  }
  for (int i = 1; i <= K; i++)
    if (pri[i] == 0) pri[i] = i;
  for (int i = 0; i <= K; i++) {
    int x = i;
    while (x > 1) {
      S[pri[x]]++;
      x /= pri[x];
    }
    fac.resize((int)(S).size());
    int id = (int)(S).size() - 1;
    for (auto e : S) fac[id--] = e;
    add(i);
  }
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    cnt[x]++;
    start += dep[where[x]];
  }
  for (int i = 0; i <= K; i++) {
    int v = where[i];
    while (v != 0) {
      siz[v] += cnt[i];
      v = fat[v];
    }
    siz[0] += cnt[i];
  }
  ans = start;
  dfs(0, 0, start);
  cout << ans << "\n";
  return 0;
}
