#include <bits/stdc++.h>
using namespace std;
long long ans = LONG_LONG_MAX;
int n, tot, num, top;
int cnt[5005][700], l[5005], r[5005], sum[5005], presum[5005];
int vis[5005], pri[5005];
int st[5005];
void dfs(int nl, int nr, long long nowdis) {
  ans = min(ans, nowdis);
  for (int i = nl; i <= nr; i++)
    if (cnt[st[i]][r[st[i]]] == 0) r[st[i]]--;
  while (nl <= nr && r[st[nl]] <= 0) nl++;
  if (nl > nr) return;
  int pre = nl;
  for (int i = nl; i <= nr; i++) {
    if (r[st[i]] != r[st[pre]]) {
      long long nexdis = nowdis;
      int szson = presum[i - 1] - presum[pre - 1];
      nexdis -= szson;
      nexdis += n - szson;
      for (int j = pre; j <= i - 1; j++) cnt[st[j]][r[st[j]]]--;
      dfs(pre, i - 1, nexdis);
      pre = i;
    }
  }
  long long nexdis = nowdis;
  int szson = presum[nr] - presum[pre - 1];
  nexdis -= szson;
  nexdis += n - szson;
  for (int j = pre; j <= nr; j++) cnt[st[j]][r[st[j]]]--;
  dfs(pre, nr, nexdis);
}
int main() {
  for (int i = 2; i <= 5000; i++) {
    if (!vis[i]) pri[++tot] = i;
    for (int j = i + i; j <= 5000; j += i) vis[j] = 1;
  }
  int gg = 0;
  for (int i = 2; i <= 5000; i++) {
    for (int j = 1; j <= tot; j++) {
      if (pri[j] > i) break;
      r[i] = j;
      int temp = pri[j];
      while (i >= temp) {
        cnt[i][j] += i / temp;
        gg += i / temp;
        temp *= pri[j];
      }
    }
  }
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    sum[x]++;
  }
  long long nowdis = 0;
  for (int i = 1; i <= 5000; i++) {
    if (sum[i]) {
      st[++top] = i;
      for (int j = 1; j <= r[i]; j++) {
        nowdis += 1ll * sum[i] * cnt[i][j];
      }
    }
  }
  for (int i = 1; i <= top; i++) presum[i] = presum[i - 1] + sum[st[i]];
  dfs(1, top, nowdis);
  printf("%lld\n", ans);
}
