#include <bits/stdc++.h>
using namespace std;
bool isl(char c) { return (c >= 'a' && c <= 'z'); }
bool isu(char c) { return (c >= 'A' && c <= 'Z'); }
bool isa(char c) { return (isl(c) || isu(c)); }
bool isn(char c) { return (c >= '0' && c <= '9'); }
bool isan(char c) { return (isa(c) || isn(c)); }
bool isv(char c) {
  return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
}
string tolow(string s) {
  for (int i = 0; i < s.size(); i++)
    if (isu(s[i])) s[i] = s[i] - 'A' + 'a';
  return s;
}
string toup(string s) {
  for (int i = 0; i < s.size(); i++)
    if (isl(s[i])) s[i] = s[i] - 'a' + 'A';
  return s;
}
const int N = 1e5;
const long long mod = 1000003;
long long gcd(long long a, long long b) {
  if (a == 0) {
    return b;
  }
  return gcd(b % a, a);
}
long long mpow(long long a, long long b, long long mod) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) {
      res = (res * a) % mod;
    }
    b = b >> 1;
    a = (a * a) % mod;
  }
  return res;
}
bool co(pair<int, int> &a, pair<int, int> &b) {
  if (a.second == b.second) {
    return (a.first < b.first);
  }
  return (a.second > b.second);
}
int main() {
  int n;
  cin >> n;
  int arr[n];
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  int st = -1;
  int pele = -1;
  int back = -1;
  int cp = -1;
  for (int i = 0; i < n; i++) {
    if (cp == -1) {
      cp = 1;
      pele = arr[i];
    } else {
      if (arr[i] == pele) {
        cp++;
      } else {
        if (cp != back && back != -1) {
          cout << "NO";
          return 0;
        }
        back = cp;
        cp = -1;
        i--;
      }
    }
  }
  if (back != cp && back != -1) {
    cout << "NO";
    return 0;
  }
  cout << "YES";
}
