#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > good, bad;
vector<int> h;
int main() {
  bool flag;
  int p1, p2, n, i, c;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> c;
    h.push_back(c);
  }
  sort(h.begin(), h.end());
  for (i = 0; i < n; i++)
    if (h[i] % 2)
      if (good.size() != 0 && good.back().first == h[i])
        good.back().second += 2;
      else
        good.push_back(make_pair(h[i], 2));
    else if (bad.size() != 0 && bad.back().first == h[i])
      bad.back().second += 2;
    else
      bad.push_back(make_pair(h[i], 2));
  flag = true;
  p1 = 0;
  p2 = 0;
  while (p1 < good.size() && p2 < bad.size()) {
    if (good[p1].first < bad[p2].first) {
      if (good[p1].first + 1 != bad[p2].first) {
        flag = false;
        break;
      }
      bad[p2].second -= good[p1].second;
      if (bad[p2].second == 0 &&
          (p1 < good.size() - 1 || p2 < bad.size() - 1)) {
        flag = false;
        break;
      }
      if (bad[p2].second < 0) {
        flag = false;
        break;
      }
      p1++;
      if (bad[p2].second == 0) p2++;
    } else {
      if (bad[p2].first + 1 != good[p1].first) {
        flag = false;
        break;
      }
      good[p1].second -= bad[p2].second;
      if (good[p1].second == 0 &&
          (p1 < good.size() - 1 || p2 < bad.size() - 1)) {
        flag = false;
        break;
      }
      if (good[p1].second < 0) {
        flag = false;
        break;
      }
      p2++;
      if (good[p1].second == 0) p1++;
    }
  }
  if (p1 != good.size() || p2 != bad.size()) flag = false;
  if (flag)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
  return 0;
}
