#include <bits/stdc++.h>
using namespace std;
int n, x;
stack<pair<int, int> > q, q2;
bool cambio = true;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &x);
    q.push({x, 1});
  }
  pair<int, int> p, pp;
  while (cambio) {
    cambio = false;
    while (true) {
      if (q.empty()) {
        q2.push(p);
        break;
      }
      p = q.top();
      q.pop();
      while (true) {
        if (q.empty()) break;
        pp = q.top();
        if (pp.first % 2 == p.first % 2 || p.second % 2 == 0 ||
            pp.second % 2 == 0) {
          q.pop();
          cambio = true;
          if (pp.first % 2 == p.first % 2 ||
              (p.second % 2 == 0 && p.first < pp.first) ||
              (pp.second % 2 == 0 && pp.first < p.first) ||
              (pp.second % 2 == 0 && p.second % 2 == 0)) {
            p.first = max(p.first, pp.first);
          } else
            p.first = max(p.first, pp.first) + 1;
          p.second += pp.second;
        } else {
          while (true) {
            if (q2.empty()) break;
            pp = q2.top();
            if (pp.first % 2 == p.first % 2 || p.second % 2 == 0 ||
                pp.second % 2 == 0) {
              q2.pop();
              cambio = true;
              if (pp.first % 2 == p.first % 2 ||
                  (p.second % 2 == 0 && p.first < pp.first) ||
                  (pp.second % 2 == 0 && pp.first < p.first) |
                      (pp.second % 2 == 0 && p.second % 2 == 0)) {
                p.first = max(p.first, pp.first);
              } else
                p.first = max(p.first, pp.first) + 1;
              p.second += pp.second;
            } else
              break;
          }
          q2.push(p);
          break;
        }
      }
    }
    if (q2.size() == 1) {
      printf("YES");
      return 0;
    }
    while (!q2.empty()) q.push(q2.top()), q2.pop();
  }
  printf("NO");
  return 0;
}
