#include <bits/stdc++.h>
using namespace std;
const int MAX = 25;
int c[MAX], n, vis[MAX];
int dfs(int pre, int tot, int child) {
  if (pre == n) return 1;
  if (tot + 1 == c[pre]) {
    if (child != 1 && dfs(pre + 1, 0, 0)) return 1;
    return 0;
  }
  int last_tot = 0;
  for (int i = 0; i < n; i++) {
    if (!vis[i] && tot + c[i] < c[pre] && last_tot != c[i]) {
      last_tot = c[i];
      vis[i] = 1;
      if (dfs(pre, tot + c[i], child + 1)) return 1;
      vis[i] = 0;
    }
  }
  return 0;
}
int main() {
  while (scanf("%d", &n) == 1) {
    for (int i = 0; i < n; i++) scanf("%d", &c[i]);
    sort(c, c + n);
    if (c[n - 1] != n)
      printf("NO\n");
    else {
      memset(vis, 0, sizeof(vis));
      if (dfs(0, 0, 0))
        printf("YES\n");
      else
        printf("NO\n");
    }
  }
  return 0;
}
