#include <bits/stdc++.h>
using namespace std;
const int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
const int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};
const int INF = 1000000000;
const long long LINF = 1000000000000000000;
const long long MOD = 1000000007;
const double PI = acos(-1.0);
const double EPS = 1e-10;
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline void add(T& a, T b) {
  a = ((a + b) % MOD + MOD) % MOD;
};
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int N;
  cin >> N;
  vector<int> a(N);
  stack<int> st;
  for (int i = 0; i < N; i++) {
    cin >> a[i];
  }
  int ma = *max_element(a.begin(), a.end());
  for (int i = 0; i < N; i++) {
    if (a[i] == ma) continue;
    int j = i;
    while (j < N && a[j] != ma) {
      if (st.empty() || st.top() > a[j])
        st.push(a[j]);
      else if (!st.empty() && a[j] == st.top())
        st.pop();
      else {
        cout << "NO" << endl;
        return 0;
      }
      j++;
    }
    if (!st.empty()) {
      cout << "NO" << endl;
      return 0;
    }
    i = j;
  }
  cout << "YES" << endl;
}
