#include <bits/stdc++.h>
int main() {
  int n;
  scanf("%d", &n);
  std::vector<int> a(n);
  std::stack<int> st;
  for (int i = 0; i < int(n); i++) {
    scanf("%d", &a[i]);
  }
  int max = *std::max_element(a.begin(), a.end());
  for (int i = 0; i < int(n); i++) {
    if (a[i] == max) continue;
    int j = i - 1;
    while (j + 1 < n && a[j + 1] != max) {
      j++;
      if (!st.empty() && st.top() == a[j]) {
        st.pop();
      } else if (st.empty() || st.top() > a[j]) {
        st.push(a[j]);
      } else {
        printf("NO\n");
        return 0;
      }
    }
    if (!st.empty()) {
      printf("NO\n");
      return 0;
    }
    i = j;
  }
  printf("YES\n");
  return 0;
}
