#include <bits/stdc++.h>
bool answer = false;
void enumerate(int32_t step, int32_t n, int32_t* values, int32_t* remains,
               int32_t* num_sons) {
  if (values[step] == 1) {
    bool ok = true;
    for (int32_t i = 0; i < n; i++) {
      if (remains[i] == 0 && num_sons[i] == 1) {
        ok = false;
        break;
      }
      if (remains[i] == 1 && num_sons[i] == 0) {
        ok = false;
        break;
      }
    }
    if (ok) {
      int32_t sum = 0;
      for (int32_t i = 0; i < step; i++) sum += remains[i];
      ok = sum == n - step;
      answer = answer || ok;
    }
    return;
  }
  for (int32_t i = 0; i < std::min(step, n / 2 + 2); i++) {
    if (remains[i] >= values[step]) {
      remains[i] -= values[step];
      num_sons[i]++;
      enumerate(step + 1, n, values, remains, num_sons);
      num_sons[i]--;
      remains[i] += values[step];
    }
  }
}
int main() {
  int32_t n;
  std::cin >> n;
  int32_t* arr = new int32_t[n];
  int32_t* remains = new int32_t[n];
  for (int32_t i = 0; i < n; i++) {
    std::cin >> arr[i];
    remains[i] = arr[i] - 1;
  }
  std::sort(arr, arr + n, std::greater<int32_t>());
  std::sort(remains, remains + n, std::greater<int32_t>());
  if (n == 1) {
    std::cout << "YES";
    return 0;
  }
  int32_t* num_sons = new int32_t[n];
  for (int32_t i = 0; i < n; i++) num_sons[i] = 0;
  enumerate(1, n, arr, remains, num_sons);
  std::cout << (answer ? "YES" : "NO");
  return 0;
};
