#include <bits/stdc++.h>
using namespace std;
int a[30 + 5];
int N, ONE;
int son[30 + 5], s[30 + 5];
bool dfs(int dep) {
  if (dep > N) {
    int need = 0;
    for (int i = 1; i <= N; i++) {
      int c = 0;
      if (son[i] < 2) c += 2 - son[i];
      if (c + s[i] >= a[i]) return 0;
      need += a[i] - s[i] - 1;
    }
    return need == ONE;
  }
  for (int i = 1; i <= dep - 1; i++)
    if (s[i] + a[dep] < a[i]) {
      son[i]++;
      s[i] += a[dep];
      if (dfs(dep + 1)) return 1;
      son[i]--;
      s[i] -= a[dep];
    }
  return 0;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) N += (a[i] > 1);
  if (N > 11 || N == 0) {
    puts(n == 1 ? "YES" : "NO");
    return 0;
  }
  sort(a + 1, a + n + 1, greater<int>());
  ONE = n - N;
  puts(dfs(2) ? "YES" : "NO");
  return 0;
}
