#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;   }   